diff --git a/TODO.txt b/TODO.txt new file mode 100644 index 0000000..8e3a947 --- /dev/null +++ b/TODO.txt @@ -0,0 +1,27 @@ +William Malone's and I Simple Drawing app +- Make a drawing passable as a JSON object/ just pass it using canvas.toDataURL();. done +- Add more drawings for users to color +- make the canvas and drawing area bigger +- add more colors. done +- Add black as one of the colors so a player can be creative. done +- Make a page to display saved drawings. done +- Have folders on the saved drawing page. When a user is about to save an image, they should be able to selected an already created folder, or create a new one to save the image inside it. done +- Make saved images editable, and then re-savable +- Add a virtual currency, and call it Gee +- Make available a competition for users to be able to enter their saved drawing set in a special competition +- Add a feature for users to be able to vote for drawings other than theirs +- Add billing to enter the competition +- There will be 5, 10,15,20 minutes competitions, and with each increment of time the image will be larger and requires more attention to detail +- The images to color will be chose on the server and the connected users will have to finish coloring it in 5 minutes and afterward there will have to vote on other users' images, one vote each and the user who wins gets 10% of the virtual currency that was spent by all users who entered the competition. +- Add global chat where users can chat with other game users of this game and others we have created +- Add default chatrooms and give users the ability to create their chatrooms +- Add sound for every new chat message +more colors implementation +- Have some color brushes on the colorCanvas and some totally off. When a user clicks next we move the brushes 10px up, and the redraw. +- When a user clicks previous we move the brushes 10px down, and then redraw +- When a brush is clicked its color is assigned to the next color that will be used for drawing + +- A user should be able to add colors to their favorite, so to be displayed on the upper color selection canvas +- Level 1 the user will have unlimited selection of colors +- Level 2 colors will be limited +- Level 3 they will have choose and then use only their favorite colors. \ No newline at end of file diff --git a/deplist.txt b/deplist.txt new file mode 100644 index 0000000..b1a06a7 --- /dev/null +++ b/deplist.txt @@ -0,0 +1,22 @@ +# +# This file contains a list of Node modules and optionally version +# (one per line) of the form: @ +# to install alongside your app ("locally") on the OpenShift environment. +# + +# Any blank lines or lines starting with a hash (#) are ignored. +# E.g. uncomment the next line to install sqlite3 +#sqlite3 + +# +# For a list of globally installed modules - see file: npm_global_module_list. +# +# Note: You can override a globally available module by specifying it in this +# file or packaging it in the node_modules/ directory. Node will give +# preference to the "locally" installed version of that module. +# + +express +mysql +socket.io +websocket \ No newline at end of file diff --git a/game.html b/game.html new file mode 100644 index 0000000..89cbf38 --- /dev/null +++ b/game.html @@ -0,0 +1,291 @@ + + + + SimplyColor + + + + + + + + + + +
+

SimplyColor

+
+
    +
  • Home

  • +
+ +
+
+
+

+
+
+
+ Save +
+ +
+
+
Create Album
+
+
+
+
+ + Save +
+
+
+ +
+

Instructions

+

+
+
+

About

+

Name : SimplyColor
Version : 1.0
Developers : William Melon and Khulekani Ngongoma

+
+
+
+
+ +
+
+
+ +
+

SimplyColor

+
+
    +
  • Collection

  • +
+
+ +
+
+
+ +
+
+
+ +
+

SimplyColor

+
+
    +
  • Collection Drawings

  • +
+
+ +
+
+ Back +
+
+ + + +
+

SimplyColor

+
+
    +
  • Beginner Tournament

  • +
+ +
+
+
+ +
+
+
+ +
+

SimplyColor

+
+
    +
  • Intermediate Tournament

  • +
+ +
+
+
+ +
+
+
+ +
+

SimplyColor

+
+
    +
  • Pro Tournament

  • +
+ +
+
+
+ +
+
+
+ +
+

SimplyColor

+
+
    +
  • Chat

  • +
+
    +
  • +

    Online Users

    +

    Me

    +
  • + +
+ +
+
+ + +
+
+ +
+

SimplyColor

+
+
    +
  • SocialHub

  • +
+

Register once, and use your login details on all our games.

+
+ + + + + + + Login + Register + +
+
+
+ +
+
+
+ + + + + + + + + + + + \ No newline at end of file diff --git a/index.html b/index.html new file mode 100644 index 0000000..8997f3c --- /dev/null +++ b/index.html @@ -0,0 +1,287 @@ + + + + SimplyColor + + + + + + + + + + +
+

SimplyColor

+
+
    +
  • Home

  • +
+ +
+
+
+

+
+
+
+ Save +
+ +
+
+
Create Album
+
+
+
+
+ + Save +
+
+
+ +
+

Instructions

+

+
+
+

About

+

Name : SimplyColor
Version : 1.0
Developers : William Melon and Khulekani Ngongoma

+
+
+
+
+ +
+
+
+ +
+

SimplyColor

+
+
    +
  • Collection

  • +
+
+ +
+
+
+ +
+
+
+ +
+

SimplyColor

+
+
    +
  • Collection Drawings

  • +
+
+ +
+
+ Back +
+
+ + + +
+

SimplyColor

+
+
    +
  • Beginner Tournament

  • +
+ +
+
+
+ +
+
+
+ +
+

SimplyColor

+
+
    +
  • Intermediate Tournament

  • +
+ +
+
+
+ +
+
+
+ +
+

SimplyColor

+
+
    +
  • Pro Tournament

  • +
+ +
+
+
+ +
+
+
+ +
+

SimplyColor

+
+
    +
  • Chat

  • +
+ +
+
+
+ +
+
+
+ +
+

SimplyColor

+
+
    +
  • SocialHub

  • +
+

Register once, and use your login details on all our games.

+ + + + + + + Login + Register + +
+
+
+ +
+
+
+ + + + + + + + + \ No newline at end of file diff --git a/js/authenticator.js b/js/authenticator.js new file mode 100644 index 0000000..effcf33 --- /dev/null +++ b/js/authenticator.js @@ -0,0 +1,18 @@ +var authenticate_da = require(__dirname+"/data_access/authenticator_da"); + +var authenticate = function(client,mysql_con,fs){ + + + client.on("login",function(objAuth){ + + console.log("about to login"); + objAuth = JSON.parse(objAuth); + authenticate_da.Login(client,mysql_con,fs,objAuth); + + }); + + +}; + + +exports.authenticate = authenticate; \ No newline at end of file diff --git a/js/chat.js b/js/chat.js new file mode 100644 index 0000000..9acebf1 --- /dev/null +++ b/js/chat.js @@ -0,0 +1,49 @@ +var chat_da = require(__dirname+"/data_access/chat_da"); + +var chat = function(client,mysql_con,fs){ + + + client.on("chat_message",function(chat_message){ + + client.get("username",function(error,username){ + + if(error) + throw error; + + console.log("about to emit chat message from "+username); + var objChatMessage = { + "from": username, + "message" : chat_message + }; + + console.log(objChatMessage); + client.broadcast.emit("chat_message",JSON.stringify(objChatMessage)); + //chat_da.storeChatMessage(client,mysql_con,fs,objChatMessage); + }); + }); + + client.on("send_image",function(objImageData){ + + client.get("username",function(error,username){ + if(error) + throw error; + + console.log("about to emit chat image from "+username); + objImageData = JSON.parse(objImageData); + var objChatImage = { + "from": username, + "imageData" : objImageData + }; + + console.log(objChatImage); + client.broadcast.emit("chat_image",JSON.stringify(objChatImage)); + //chat_da.storeChatImage(client,mysql_con,fs,objChatMessage); + + + }); + }); + +}; + + +exports.chat = chat; \ No newline at end of file diff --git a/js/data_access/authenticator_da.js b/js/data_access/authenticator_da.js new file mode 100644 index 0000000..43a0ccb --- /dev/null +++ b/js/data_access/authenticator_da.js @@ -0,0 +1,46 @@ +var startup_da_parent = require(__dirname+"/startup_da_parent"); + + +var Login = function(client,mysql_con,fs,userDetails){ + + try{ + + var query = "SELECT username FROM Players WHERE username = '"+userDetails.username+"' AND password = '"+userDetails.password+"'"; + startup_da_parent.runSelectQuery(query,client,mysql_con,function(client,error){ + + console.trace(error); + client.emit("login_error"); + var file_name = "authenticator_da.js", + line_number = 10; + startup_da_parent.logDatabaseSystemError(client,error,file_name,line_number); + + },function(client,rows,fields){ + + if(rows.length){ + + client.set("username",rows[0].username); + client.set("presence","online"); + if(userDetails.status) + client.set("status",userDetails.status); + else + client.set("status","Online"); + + client.emit("login_success"); + }else{ + + client.emit("incorrect_login"); + } + + }); + + }catch(error){ + // System error logging + console.log(error); + var file_name = "authenticator_da.js", + line_number = 5; + startup_da_parent.logSystemError(client,error,file_name,line_number); + } + +}; + +exports.Login = Login; \ No newline at end of file diff --git a/js/data_access/chat_da.js b/js/data_access/chat_da.js new file mode 100644 index 0000000..3619f4a --- /dev/null +++ b/js/data_access/chat_da.js @@ -0,0 +1,33 @@ +var startup_da_parent = require(__dirname+"/startup_da_parent"); + + +var storeChatMessage = function(client,mysql_con,fs,objChatMessage){ + + try{ + + var query = "INSERT INTO ChatMessages(from,chat_message) VALUES('"+objChatMessage.from+"','"+objChatMessage.chat_message+"')"; + startup_da_parent.runQuery(query,client,mysql_con,function(client,error){ + + console.trace(error); + client.emit("store_chat_error"); + var file_name = "chat_da.js", + line_number = 10; + startup_da_parent.logDatabaseSystemError(client,error,file_name,line_number); + + },function(client){ + + + + }); + + }catch(error){ + // System error logging + console.log(error); + var file_name = "chat_da.js", + line_number = 5; + startup_da_parent.logSystemError(client,error,file_name,line_number); + } + +}; + +exports.storeChatMessage = storeChatMessage; \ No newline at end of file diff --git a/js/data_access/log_files/admin_actions_log.json b/js/data_access/log_files/admin_actions_log.json new file mode 100644 index 0000000..868fe13 --- /dev/null +++ b/js/data_access/log_files/admin_actions_log.json @@ -0,0 +1,6 @@ + +{ + "username" : "Admin", + "password" : "the_admin" + +} \ No newline at end of file diff --git a/js/data_access/log_files/admin_login.json b/js/data_access/log_files/admin_login.json new file mode 100644 index 0000000..c51474a --- /dev/null +++ b/js/data_access/log_files/admin_login.json @@ -0,0 +1,4 @@ +{"error":{},"file_name":"startup_samples.js","line_number":10} +{"error":{},"file_name":"startup_samples.js","line_number":10} +{"error":{},"file_name":"startup_samples.js","line_number":10} +{"error":{},"file_name":"startup_samples.js","line_number":10} diff --git a/js/data_access/log_files/created_tables.json b/js/data_access/log_files/created_tables.json new file mode 100644 index 0000000..e69de29 diff --git a/js/data_access/log_files/created_tables.txt b/js/data_access/log_files/created_tables.txt new file mode 100644 index 0000000..e69de29 diff --git a/js/data_access/log_files/database_system_errors.json b/js/data_access/log_files/database_system_errors.json new file mode 100644 index 0000000..d48b646 --- /dev/null +++ b/js/data_access/log_files/database_system_errors.json @@ -0,0 +1,5 @@ +{"error":{"code":"ER_NO_SUCH_TABLE","index":0},"file_name":"startup_da_samples.js","line_number":369} +{"error":{"code":"ER_PARSE_ERROR","index":0},"file_name":"startup_da_tables.js","line_number":370} +{"error":{"code":"ER_PARSE_ERROR","index":0},"file_name":"startup_da_tables.js","line_number":370} +{"error":{"code":"ER_PARSE_ERROR","index":0},"file_name":"startup_da_tables.js","line_number":1529} +{"error":{"code":"ER_PARSE_ERROR","index":0},"file_name":"startup_da_tables.js","line_number":1859} diff --git a/js/data_access/log_files/database_system_errors.txt b/js/data_access/log_files/database_system_errors.txt new file mode 100644 index 0000000..5fd67b9 --- /dev/null +++ b/js/data_access/log_files/database_system_errors.txt @@ -0,0 +1,2 @@ +{"error":{"code":"ER_BAD_TABLE_ERROR","index":0},"file_name":"startup_da_tables.js","line_number":472} +{"error":{"code":"ER_BAD_FIELD_ERROR","index":0},"file_name":"startup_da_samples.js","line_number":294} diff --git a/js/data_access/log_files/file_system_errors.json b/js/data_access/log_files/file_system_errors.json new file mode 100644 index 0000000..e69de29 diff --git a/js/data_access/log_files/file_system_errors.txt b/js/data_access/log_files/file_system_errors.txt new file mode 100644 index 0000000..ba82b99 --- /dev/null +++ b/js/data_access/log_files/file_system_errors.txt @@ -0,0 +1,4 @@ +{"error":{"errno":34,"code":"ENOENT","path":"C:\\node\\PrintP_\\js\\data_access\\log_files\\database_system_errors1.txt"},"file_name":"system_errors_da.js","line_number":157} +{"error":{"errno":34,"code":"ENOENT","path":"C:\\node\\PrintP_\\js\\data_access\\log_files\\database_system_errors1.txt"},"file_name":"system_errors_da.js","line_number":157} +{"error":{"errno":34,"code":"ENOENT","path":"C:\\node\\PrintP_\\js\\data_access\\log_files\\database_system_errors1.txt"},"file_name":"system_errors_da.js","line_number":157} +{"error":{"errno":34,"code":"ENOENT","path":"C:\\node\\PrintP_\\js\\data_access\\log_files\\database_system_errors1.txt"},"file_name":"system_errors_da.js","line_number":157} diff --git a/js/data_access/log_files/system_errors.json b/js/data_access/log_files/system_errors.json new file mode 100644 index 0000000..cf8ea6b --- /dev/null +++ b/js/data_access/log_files/system_errors.json @@ -0,0 +1,24 @@ +{"error":{},"file_name":"catcha_server.js","line_number":8} +{"error":{},"file_name":"catcha_server.js","line_number":8} +{"error":{},"file_name":"catcha_server.js","line_number":8} +{"error":{},"file_name":"catcha_server.js","line_number":27} +{"error":"system_alerts_da.js","file_name":37} +{"error":"system_alerts_da.js","file_name":37} +{"error":{},"file_name":"catcha_server.js","line_number":8} +{"error":{},"file_name":"catcha_server.js","line_number":8} +{"error":{},"file_name":"catcha_server.js","line_number":8} +{"error":{},"file_name":"catcha_server.js","line_number":8} +{"error":{},"file_name":"catcha_server.js","line_number":8} +{"error":{},"file_name":"catcha_server.js","line_number":8} +{"error":{},"file_name":"messages.js","line_number":8} +{"error":{},"file_name":"messages.js","line_number":8} +{"error":{},"file_name":"messages.js","line_number":8} +{"error":{},"file_name":"messages.js","line_number":8} +{"error":{},"file_name":"messages.js","line_number":8} +{"error":{},"file_name":"messages.js","line_number":8} +{"error":{},"file_name":"messages.js","line_number":26} +{"error":{},"file_name":"messages_da.js","line_number":28} +{"error":{},"file_name":"messages_da.js","line_number":28} +{"error":{},"file_name":"messages.js","line_number":42} +{"error":{"code":"JQuery is not defined"},"file_name":"client_create_database_logic.js","line_number":1} +{"error":{},"file_name":"startup_tables.js","line_number":770} diff --git a/js/data_access/log_files/system_errors.txt b/js/data_access/log_files/system_errors.txt new file mode 100644 index 0000000..c51474a --- /dev/null +++ b/js/data_access/log_files/system_errors.txt @@ -0,0 +1,4 @@ +{"error":{},"file_name":"startup_samples.js","line_number":10} +{"error":{},"file_name":"startup_samples.js","line_number":10} +{"error":{},"file_name":"startup_samples.js","line_number":10} +{"error":{},"file_name":"startup_samples.js","line_number":10} diff --git a/js/data_access/startup_da_parent.js b/js/data_access/startup_da_parent.js new file mode 100644 index 0000000..b1b2bf9 --- /dev/null +++ b/js/data_access/startup_da_parent.js @@ -0,0 +1,126 @@ +var fs = require("fs"); +var i = 0; +var connection = function(){ + + try{ + var mysql_con = mysql.createConnection({ + host : "localhost", + user : "root", + password : "", + database : "printp" + + }); + console.log("connection: "+(i++)); + return mysql_con; + + }catch(err){ + logDatabaseSystemError(err); + } +}; + +var runQuery = function(queryText,mysql_con,client,error_callback,success_callback){ + + mysql_con.query(queryText,function(error){ + if(error){ + error_callback(client,error); + }else{ + + success_callback(client); + } + + }); + + + +}; + +var runSelectQuery = function(query,client,mysql_con,error_callback,success_callback){ + + mysql_con.query(query,function(error,rows,fields){ + if(error){ + error_callback(client,error); + + }else{ + + success_callback(client,rows,fields); + + } + }); + + +}; + +var logDatabaseSystemError = function(client,error,file_name,line_number){ + + var system_error = { + "error" : error, + "file_name" : file_name, + "line_number" : line_number + }; + + fs.appendFile(__dirname+"/log_files/database_system_errors.json",JSON.stringify(system_error).concat('\n'),'utf8',function(err){ + if(err){ + console.trace(err); + // if we can't read both files email the error to Admin for immediate attention. + + }else{ + + require(__dirname+"/system_errors_da").getDatabaseSystemErrors(client,true); + } + }); + + + +}; + +var logFileSystemError = function(client,error,file_name,line_number){ + + var system_error = { + "error" : error, + "file_name" : file_name, + "line_number" : line_number + }; + + fs.appendFile('./js/data_access/log_files/file_system_errors.json',JSON.stringify(system_error).concat('\n'),'utf8',function(err){ + if(err){ + console.trace(err); + // if we can't read both files email the error to Admin for immediate attention. + + }else{ + + require(__dirname+"/system_errors_da").getFileSystemErrors(client,true); + } + }); + + +}; + +var logSystemError = function(client,error,file_name,line_number){ + + var system_error = { + "error" : error, + "file_name" : file_name, + "line_number" : line_number + }; + + fs.appendFile('./js/data_access/log_files/system_errors.json',JSON.stringify(system_error).concat('\n'),'utf8',function(err){ + if(err){ + console.trace(err); + // if we can't read both files email the error to Admin for immediate attention. + + }else{ + + require(__dirname+"/system_errors_da").getSystemErrors(client,true); + } + }); + + +}; + + //exports.connection = connection; + exports.runQuery = runQuery; + exports.runSelectQuery = runSelectQuery; + exports.logDatabaseSystemError = logDatabaseSystemError; + exports.logFileSystemError = logFileSystemError; + exports.logSystemError = logSystemError; + diff --git a/node_modules/.bin/express b/node_modules/.bin/express new file mode 100644 index 0000000..cad5a1e --- /dev/null +++ b/node_modules/.bin/express @@ -0,0 +1,15 @@ +#!/bin/sh +basedir=`dirname "$0"` + +case `uname` in + *CYGWIN*) basedir=`cygpath -w "$basedir"`;; +esac + +if [ -x "$basedir/node" ]; then + "$basedir/node" "$basedir/../express/bin/express" "$@" + ret=$? +else + node "$basedir/../express/bin/express" "$@" + ret=$? +fi +exit $ret diff --git a/node_modules/.bin/express.cmd b/node_modules/.bin/express.cmd new file mode 100644 index 0000000..54cebb3 --- /dev/null +++ b/node_modules/.bin/express.cmd @@ -0,0 +1,6 @@ +:: Created by npm, please don't edit manually. +@IF EXIST "%~dp0\node.exe" ( + "%~dp0\node.exe" "%~dp0\..\express\bin\express" %* +) ELSE ( + node "%~dp0\..\express\bin\express" %* +) \ No newline at end of file diff --git a/node_modules/express/.npmignore b/node_modules/express/.npmignore new file mode 100644 index 0000000..caf574d --- /dev/null +++ b/node_modules/express/.npmignore @@ -0,0 +1,9 @@ +.git* +docs/ +examples/ +support/ +test/ +testing.js +.DS_Store +coverage.html +lib-cov diff --git a/node_modules/express/.travis.yml b/node_modules/express/.travis.yml new file mode 100644 index 0000000..895dbd3 --- /dev/null +++ b/node_modules/express/.travis.yml @@ -0,0 +1,4 @@ +language: node_js +node_js: + - 0.6 + - 0.8 diff --git a/node_modules/express/History.md b/node_modules/express/History.md new file mode 100644 index 0000000..1a2b171 --- /dev/null +++ b/node_modules/express/History.md @@ -0,0 +1,1091 @@ + +3.1.0 / 2013-01-25 +================== + + * add support for leading "." in "view engine" setting + * add array support to `res.set()` + * add node 0.8.x to travis.yml + * add "subdomain offset" setting for tweaking `req.subdomains` + * add `res.location(url)` implementing `res.redirect()`-like setting of Location + * use app.get() for x-powered-by setting for inheritance + * fix colons in passwords for `req.auth` + +3.0.6 / 2013-01-04 +================== + + * add http verb methods to Router + * update connect + * fix mangling of the `res.cookie()` options object + * fix jsonp whitespace escape. Closes #1132 + +3.0.5 / 2012-12-19 +================== + + * add throwing when a non-function is passed to a route + * fix: explicitly remove Transfer-Encoding header from 204 and 304 responses + * revert "add 'etag' option" + +3.0.4 / 2012-12-05 +================== + + * add 'etag' option to disable `res.send()` Etags + * add escaping of urls in text/plain in `res.redirect()` + for old browsers interpreting as html + * change crc32 module for a more liberal license + * update connect + +3.0.3 / 2012-11-13 +================== + + * update connect + * update cookie module + * fix cookie max-age + +3.0.2 / 2012-11-08 +================== + + * add OPTIONS to cors example. Closes #1398 + * fix route chaining regression. Closes #1397 + +3.0.1 / 2012-11-01 +================== + + * update connect + +3.0.0 / 2012-10-23 +================== + + * add `make clean` + * add "Basic" check to req.auth + * add `req.auth` test coverage + * add cb && cb(payload) to `res.jsonp()`. Closes #1374 + * add backwards compat for `res.redirect()` status. Closes #1336 + * add support for `res.json()` to retain previously defined Content-Types. Closes #1349 + * update connect + * change `res.redirect()` to utilize a pathname-relative Location again. Closes #1382 + * remove non-primitive string support for `res.send()` + * fix view-locals example. Closes #1370 + * fix route-separation example + +3.0.0rc5 / 2012-09-18 +================== + + * update connect + * add redis search example + * add static-files example + * add "x-powered-by" setting (`app.disable('x-powered-by')`) + * add "application/octet-stream" redirect Accept test case. Closes #1317 + +3.0.0rc4 / 2012-08-30 +================== + + * add `res.jsonp()`. Closes #1307 + * add "verbose errors" option to error-pages example + * add another route example to express(1) so people are not so confused + * add redis online user activity tracking example + * update connect dep + * fix etag quoting. Closes #1310 + * fix error-pages 404 status + * fix jsonp callback char restrictions + * remove old OPTIONS default response + +3.0.0rc3 / 2012-08-13 +================== + + * update connect dep + * fix signed cookies to work with `connect.cookieParser()` ("s:" prefix was missing) [tnydwrds] + * fix `res.render()` clobbering of "locals" + +3.0.0rc2 / 2012-08-03 +================== + + * add CORS example + * update connect dep + * deprecate `.createServer()` & remove old stale examples + * fix: escape `res.redirect()` link + * fix vhost example + +3.0.0rc1 / 2012-07-24 +================== + + * add more examples to view-locals + * add scheme-relative redirects (`res.redirect("//foo.com")`) support + * update cookie dep + * update connect dep + * update send dep + * fix `express(1)` -h flag, use -H for hogan. Closes #1245 + * fix `res.sendfile()` socket error handling regression + +3.0.0beta7 / 2012-07-16 +================== + + * update connect dep for `send()` root normalization regression + +3.0.0beta6 / 2012-07-13 +================== + + * add `err.view` property for view errors. Closes #1226 + * add "jsonp callback name" setting + * add support for "/foo/:bar*" non-greedy matches + * change `res.sendfile()` to use `send()` module + * change `res.send` to use "response-send" module + * remove `app.locals.use` and `res.locals.use`, use regular middleware + +3.0.0beta5 / 2012-07-03 +================== + + * add "make check" support + * add route-map example + * add `res.json(obj, status)` support back for BC + * add "methods" dep, remove internal methods module + * update connect dep + * update auth example to utilize cores pbkdf2 + * updated tests to use "supertest" + +3.0.0beta4 / 2012-06-25 +================== + + * Added `req.auth` + * Added `req.range(size)` + * Added `res.links(obj)` + * Added `res.send(body, status)` support back for backwards compat + * Added `.default()` support to `res.format()` + * Added 2xx / 304 check to `req.fresh` + * Revert "Added + support to the router" + * Fixed `res.send()` freshness check, respect res.statusCode + +3.0.0beta3 / 2012-06-15 +================== + + * Added hogan `--hjs` to express(1) [nullfirm] + * Added another example to content-negotiation + * Added `fresh` dep + * Changed: `res.send()` always checks freshness + * Fixed: expose connects mime module. Cloases #1165 + +3.0.0beta2 / 2012-06-06 +================== + + * Added `+` support to the router + * Added `req.host` + * Changed `req.param()` to check route first + * Update connect dep + +3.0.0beta1 / 2012-06-01 +================== + + * Added `res.format()` callback to override default 406 behaviour + * Fixed `res.redirect()` 406. Closes #1154 + +3.0.0alpha5 / 2012-05-30 +================== + + * Added `req.ip` + * Added `{ signed: true }` option to `res.cookie()` + * Removed `res.signedCookie()` + * Changed: dont reverse `req.ips` + * Fixed "trust proxy" setting check for `req.ips` + +3.0.0alpha4 / 2012-05-09 +================== + + * Added: allow `[]` in jsonp callback. Closes #1128 + * Added `PORT` env var support in generated template. Closes #1118 [benatkin] + * Updated: connect 2.2.2 + +3.0.0alpha3 / 2012-05-04 +================== + + * Added public `app.routes`. Closes #887 + * Added _view-locals_ example + * Added _mvc_ example + * Added `res.locals.use()`. Closes #1120 + * Added conditional-GET support to `res.send()` + * Added: coerce `res.set()` values to strings + * Changed: moved `static()` in generated apps below router + * Changed: `res.send()` only set ETag when not previously set + * Changed connect 2.2.1 dep + * Changed: `make test` now runs unit / acceptance tests + * Fixed req/res proto inheritance + +3.0.0alpha2 / 2012-04-26 +================== + + * Added `make benchmark` back + * Added `res.send()` support for `String` objects + * Added client-side data exposing example + * Added `res.header()` and `req.header()` aliases for BC + * Added `express.createServer()` for BC + * Perf: memoize parsed urls + * Perf: connect 2.2.0 dep + * Changed: make `expressInit()` middleware self-aware + * Fixed: use app.get() for all core settings + * Fixed redis session example + * Fixed session example. Closes #1105 + * Fixed generated express dep. Closes #1078 + +3.0.0alpha1 / 2012-04-15 +================== + + * Added `app.locals.use(callback)` + * Added `app.locals` object + * Added `app.locals(obj)` + * Added `res.locals` object + * Added `res.locals(obj)` + * Added `res.format()` for content-negotiation + * Added `app.engine()` + * Added `res.cookie()` JSON cookie support + * Added "trust proxy" setting + * Added `req.subdomains` + * Added `req.protocol` + * Added `req.secure` + * Added `req.path` + * Added `req.ips` + * Added `req.fresh` + * Added `req.stale` + * Added comma-delmited / array support for `req.accepts()` + * Added debug instrumentation + * Added `res.set(obj)` + * Added `res.set(field, value)` + * Added `res.get(field)` + * Added `app.get(setting)`. Closes #842 + * Added `req.acceptsLanguage()` + * Added `req.acceptsCharset()` + * Added `req.accepted` + * Added `req.acceptedLanguages` + * Added `req.acceptedCharsets` + * Added "json replacer" setting + * Added "json spaces" setting + * Added X-Forwarded-Proto support to `res.redirect()`. Closes #92 + * Added `--less` support to express(1) + * Added `express.response` prototype + * Added `express.request` prototype + * Added `express.application` prototype + * Added `app.path()` + * Added `app.render()` + * Added `res.type()` to replace `res.contentType()` + * Changed: `res.redirect()` to add relative support + * Changed: enable "jsonp callback" by default + * Changed: renamed "case sensitive routes" to "case sensitive routing" + * Rewrite of all tests with mocha + * Removed "root" setting + * Removed `res.redirect('home')` support + * Removed `req.notify()` + * Removed `app.register()` + * Removed `app.redirect()` + * Removed `app.is()` + * Removed `app.helpers()` + * Removed `app.dynamicHelpers()` + * Fixed `res.sendfile()` with non-GET. Closes #723 + * Fixed express(1) public dir for windows. Closes #866 + +2.5.9/ 2012-04-02 +================== + + * Added support for PURGE request method [pbuyle] + * Fixed `express(1)` generated app `app.address()` before `listening` [mmalecki] + +2.5.8 / 2012-02-08 +================== + + * Update mkdirp dep. Closes #991 + +2.5.7 / 2012-02-06 +================== + + * Fixed `app.all` duplicate DELETE requests [mscdex] + +2.5.6 / 2012-01-13 +================== + + * Updated hamljs dev dep. Closes #953 + +2.5.5 / 2012-01-08 +================== + + * Fixed: set `filename` on cached templates [matthewleon] + +2.5.4 / 2012-01-02 +================== + + * Fixed `express(1)` eol on 0.4.x. Closes #947 + +2.5.3 / 2011-12-30 +================== + + * Fixed `req.is()` when a charset is present + +2.5.2 / 2011-12-10 +================== + + * Fixed: express(1) LF -> CRLF for windows + +2.5.1 / 2011-11-17 +================== + + * Changed: updated connect to 1.8.x + * Removed sass.js support from express(1) + +2.5.0 / 2011-10-24 +================== + + * Added ./routes dir for generated app by default + * Added npm install reminder to express(1) app gen + * Added 0.5.x support + * Removed `make test-cov` since it wont work with node 0.5.x + * Fixed express(1) public dir for windows. Closes #866 + +2.4.7 / 2011-10-05 +================== + + * Added mkdirp to express(1). Closes #795 + * Added simple _json-config_ example + * Added shorthand for the parsed request's pathname via `req.path` + * Changed connect dep to 1.7.x to fix npm issue... + * Fixed `res.redirect()` __HEAD__ support. [reported by xerox] + * Fixed `req.flash()`, only escape args + * Fixed absolute path checking on windows. Closes #829 [reported by andrewpmckenzie] + +2.4.6 / 2011-08-22 +================== + + * Fixed multiple param callback regression. Closes #824 [reported by TroyGoode] + +2.4.5 / 2011-08-19 +================== + + * Added support for routes to handle errors. Closes #809 + * Added `app.routes.all()`. Closes #803 + * Added "basepath" setting to work in conjunction with reverse proxies etc. + * Refactored `Route` to use a single array of callbacks + * Added support for multiple callbacks for `app.param()`. Closes #801 +Closes #805 + * Changed: removed .call(self) for route callbacks + * Dependency: `qs >= 0.3.1` + * Fixed `res.redirect()` on windows due to `join()` usage. Closes #808 + +2.4.4 / 2011-08-05 +================== + + * Fixed `res.header()` intention of a set, even when `undefined` + * Fixed `*`, value no longer required + * Fixed `res.send(204)` support. Closes #771 + +2.4.3 / 2011-07-14 +================== + + * Added docs for `status` option special-case. Closes #739 + * Fixed `options.filename`, exposing the view path to template engines + +2.4.2. / 2011-07-06 +================== + + * Revert "removed jsonp stripping" for XSS + +2.4.1 / 2011-07-06 +================== + + * Added `res.json()` JSONP support. Closes #737 + * Added _extending-templates_ example. Closes #730 + * Added "strict routing" setting for trailing slashes + * Added support for multiple envs in `app.configure()` calls. Closes #735 + * Changed: `res.send()` using `res.json()` + * Changed: when cookie `path === null` don't default it + * Changed; default cookie path to "home" setting. Closes #731 + * Removed _pids/logs_ creation from express(1) + +2.4.0 / 2011-06-28 +================== + + * Added chainable `res.status(code)` + * Added `res.json()`, an explicit version of `res.send(obj)` + * Added simple web-service example + +2.3.12 / 2011-06-22 +================== + + * \#express is now on freenode! come join! + * Added `req.get(field, param)` + * Added links to Japanese documentation, thanks @hideyukisaito! + * Added; the `express(1)` generated app outputs the env + * Added `content-negotiation` example + * Dependency: connect >= 1.5.1 < 2.0.0 + * Fixed view layout bug. Closes #720 + * Fixed; ignore body on 304. Closes #701 + +2.3.11 / 2011-06-04 +================== + + * Added `npm test` + * Removed generation of dummy test file from `express(1)` + * Fixed; `express(1)` adds express as a dep + * Fixed; prune on `prepublish` + +2.3.10 / 2011-05-27 +================== + + * Added `req.route`, exposing the current route + * Added _package.json_ generation support to `express(1)` + * Fixed call to `app.param()` function for optional params. Closes #682 + +2.3.9 / 2011-05-25 +================== + + * Fixed bug-ish with `../' in `res.partial()` calls + +2.3.8 / 2011-05-24 +================== + + * Fixed `app.options()` + +2.3.7 / 2011-05-23 +================== + + * Added route `Collection`, ex: `app.get('/user/:id').remove();` + * Added support for `app.param(fn)` to define param logic + * Removed `app.param()` support for callback with return value + * Removed module.parent check from express(1) generated app. Closes #670 + * Refactored router. Closes #639 + +2.3.6 / 2011-05-20 +================== + + * Changed; using devDependencies instead of git submodules + * Fixed redis session example + * Fixed markdown example + * Fixed view caching, should not be enabled in development + +2.3.5 / 2011-05-20 +================== + + * Added export `.view` as alias for `.View` + +2.3.4 / 2011-05-08 +================== + + * Added `./examples/say` + * Fixed `res.sendfile()` bug preventing the transfer of files with spaces + +2.3.3 / 2011-05-03 +================== + + * Added "case sensitive routes" option. + * Changed; split methods supported per rfc [slaskis] + * Fixed route-specific middleware when using the same callback function several times + +2.3.2 / 2011-04-27 +================== + + * Fixed view hints + +2.3.1 / 2011-04-26 +================== + + * Added `app.match()` as `app.match.all()` + * Added `app.lookup()` as `app.lookup.all()` + * Added `app.remove()` for `app.remove.all()` + * Added `app.remove.VERB()` + * Fixed template caching collision issue. Closes #644 + * Moved router over from connect and started refactor + +2.3.0 / 2011-04-25 +================== + + * Added options support to `res.clearCookie()` + * Added `res.helpers()` as alias of `res.locals()` + * Added; json defaults to UTF-8 with `res.send()`. Closes #632. [Daniel * Dependency `connect >= 1.4.0` + * Changed; auto set Content-Type in res.attachement [Aaron Heckmann] + * Renamed "cache views" to "view cache". Closes #628 + * Fixed caching of views when using several apps. Closes #637 + * Fixed gotcha invoking `app.param()` callbacks once per route middleware. +Closes #638 + * Fixed partial lookup precedence. Closes #631 +Shaw] + +2.2.2 / 2011-04-12 +================== + + * Added second callback support for `res.download()` connection errors + * Fixed `filename` option passing to template engine + +2.2.1 / 2011-04-04 +================== + + * Added `layout(path)` helper to change the layout within a view. Closes #610 + * Fixed `partial()` collection object support. + Previously only anything with `.length` would work. + When `.length` is present one must still be aware of holes, + however now `{ collection: {foo: 'bar'}}` is valid, exposes + `keyInCollection` and `keysInCollection`. + + * Performance improved with better view caching + * Removed `request` and `response` locals + * Changed; errorHandler page title is now `Express` instead of `Connect` + +2.2.0 / 2011-03-30 +================== + + * Added `app.lookup.VERB()`, ex `app.lookup.put('/user/:id')`. Closes #606 + * Added `app.match.VERB()`, ex `app.match.put('/user/12')`. Closes #606 + * Added `app.VERB(path)` as alias of `app.lookup.VERB()`. + * Dependency `connect >= 1.2.0` + +2.1.1 / 2011-03-29 +================== + + * Added; expose `err.view` object when failing to locate a view + * Fixed `res.partial()` call `next(err)` when no callback is given [reported by aheckmann] + * Fixed; `res.send(undefined)` responds with 204 [aheckmann] + +2.1.0 / 2011-03-24 +================== + + * Added `/_?` partial lookup support. Closes #447 + * Added `request`, `response`, and `app` local variables + * Added `settings` local variable, containing the app's settings + * Added `req.flash()` exception if `req.session` is not available + * Added `res.send(bool)` support (json response) + * Fixed stylus example for latest version + * Fixed; wrap try/catch around `res.render()` + +2.0.0 / 2011-03-17 +================== + + * Fixed up index view path alternative. + * Changed; `res.locals()` without object returns the locals + +2.0.0rc3 / 2011-03-17 +================== + + * Added `res.locals(obj)` to compliment `res.local(key, val)` + * Added `res.partial()` callback support + * Fixed recursive error reporting issue in `res.render()` + +2.0.0rc2 / 2011-03-17 +================== + + * Changed; `partial()` "locals" are now optional + * Fixed `SlowBuffer` support. Closes #584 [reported by tyrda01] + * Fixed .filename view engine option [reported by drudge] + * Fixed blog example + * Fixed `{req,res}.app` reference when mounting [Ben Weaver] + +2.0.0rc / 2011-03-14 +================== + + * Fixed; expose `HTTPSServer` constructor + * Fixed express(1) default test charset. Closes #579 [reported by secoif] + * Fixed; default charset to utf-8 instead of utf8 for lame IE [reported by NickP] + +2.0.0beta3 / 2011-03-09 +================== + + * Added support for `res.contentType()` literal + The original `res.contentType('.json')`, + `res.contentType('application/json')`, and `res.contentType('json')` + will work now. + * Added `res.render()` status option support back + * Added charset option for `res.render()` + * Added `.charset` support (via connect 1.0.4) + * Added view resolution hints when in development and a lookup fails + * Added layout lookup support relative to the page view. + For example while rendering `./views/user/index.jade` if you create + `./views/user/layout.jade` it will be used in favour of the root layout. + * Fixed `res.redirect()`. RFC states absolute url [reported by unlink] + * Fixed; default `res.send()` string charset to utf8 + * Removed `Partial` constructor (not currently used) + +2.0.0beta2 / 2011-03-07 +================== + + * Added res.render() `.locals` support back to aid in migration process + * Fixed flash example + +2.0.0beta / 2011-03-03 +================== + + * Added HTTPS support + * Added `res.cookie()` maxAge support + * Added `req.header()` _Referrer_ / _Referer_ special-case, either works + * Added mount support for `res.redirect()`, now respects the mount-point + * Added `union()` util, taking place of `merge(clone())` combo + * Added stylus support to express(1) generated app + * Added secret to session middleware used in examples and generated app + * Added `res.local(name, val)` for progressive view locals + * Added default param support to `req.param(name, default)` + * Added `app.disabled()` and `app.enabled()` + * Added `app.register()` support for omitting leading ".", either works + * Added `res.partial()`, using the same interface as `partial()` within a view. Closes #539 + * Added `app.param()` to map route params to async/sync logic + * Added; aliased `app.helpers()` as `app.locals()`. Closes #481 + * Added extname with no leading "." support to `res.contentType()` + * Added `cache views` setting, defaulting to enabled in "production" env + * Added index file partial resolution, eg: partial('user') may try _views/user/index.jade_. + * Added `req.accepts()` support for extensions + * Changed; `res.download()` and `res.sendfile()` now utilize Connect's + static file server `connect.static.send()`. + * Changed; replaced `connect.utils.mime()` with npm _mime_ module + * Changed; allow `req.query` to be pre-defined (via middleware or other parent + * Changed view partial resolution, now relative to parent view + * Changed view engine signature. no longer `engine.render(str, options, callback)`, now `engine.compile(str, options) -> Function`, the returned function accepts `fn(locals)`. + * Fixed `req.param()` bug returning Array.prototype methods. Closes #552 + * Fixed; using `Stream#pipe()` instead of `sys.pump()` in `res.sendfile()` + * Fixed; using _qs_ module instead of _querystring_ + * Fixed; strip unsafe chars from jsonp callbacks + * Removed "stream threshold" setting + +1.0.8 / 2011-03-01 +================== + + * Allow `req.query` to be pre-defined (via middleware or other parent app) + * "connect": ">= 0.5.0 < 1.0.0". Closes #547 + * Removed the long deprecated __EXPRESS_ENV__ support + +1.0.7 / 2011-02-07 +================== + + * Fixed `render()` setting inheritance. + Mounted apps would not inherit "view engine" + +1.0.6 / 2011-02-07 +================== + + * Fixed `view engine` setting bug when period is in dirname + +1.0.5 / 2011-02-05 +================== + + * Added secret to generated app `session()` call + +1.0.4 / 2011-02-05 +================== + + * Added `qs` dependency to _package.json_ + * Fixed namespaced `require()`s for latest connect support + +1.0.3 / 2011-01-13 +================== + + * Remove unsafe characters from JSONP callback names [Ryan Grove] + +1.0.2 / 2011-01-10 +================== + + * Removed nested require, using `connect.router` + +1.0.1 / 2010-12-29 +================== + + * Fixed for middleware stacked via `createServer()` + previously the `foo` middleware passed to `createServer(foo)` + would not have access to Express methods such as `res.send()` + or props like `req.query` etc. + +1.0.0 / 2010-11-16 +================== + + * Added; deduce partial object names from the last segment. + For example by default `partial('forum/post', postObject)` will + give you the _post_ object, providing a meaningful default. + * Added http status code string representation to `res.redirect()` body + * Added; `res.redirect()` supporting _text/plain_ and _text/html_ via __Accept__. + * Added `req.is()` to aid in content negotiation + * Added partial local inheritance [suggested by masylum]. Closes #102 + providing access to parent template locals. + * Added _-s, --session[s]_ flag to express(1) to add session related middleware + * Added _--template_ flag to express(1) to specify the + template engine to use. + * Added _--css_ flag to express(1) to specify the + stylesheet engine to use (or just plain css by default). + * Added `app.all()` support [thanks aheckmann] + * Added partial direct object support. + You may now `partial('user', user)` providing the "user" local, + vs previously `partial('user', { object: user })`. + * Added _route-separation_ example since many people question ways + to do this with CommonJS modules. Also view the _blog_ example for + an alternative. + * Performance; caching view path derived partial object names + * Fixed partial local inheritance precedence. [reported by Nick Poulden] Closes #454 + * Fixed jsonp support; _text/javascript_ as per mailinglist discussion + +1.0.0rc4 / 2010-10-14 +================== + + * Added _NODE_ENV_ support, _EXPRESS_ENV_ is deprecated and will be removed in 1.0.0 + * Added route-middleware support (very helpful, see the [docs](http://expressjs.com/guide.html#Route-Middleware)) + * Added _jsonp callback_ setting to enable/disable jsonp autowrapping [Dav Glass] + * Added callback query check on response.send to autowrap JSON objects for simple webservice implementations [Dav Glass] + * Added `partial()` support for array-like collections. Closes #434 + * Added support for swappable querystring parsers + * Added session usage docs. Closes #443 + * Added dynamic helper caching. Closes #439 [suggested by maritz] + * Added authentication example + * Added basic Range support to `res.sendfile()` (and `res.download()` etc) + * Changed; `express(1)` generated app using 2 spaces instead of 4 + * Default env to "development" again [aheckmann] + * Removed _context_ option is no more, use "scope" + * Fixed; exposing _./support_ libs to examples so they can run without installs + * Fixed mvc example + +1.0.0rc3 / 2010-09-20 +================== + + * Added confirmation for `express(1)` app generation. Closes #391 + * Added extending of flash formatters via `app.flashFormatters` + * Added flash formatter support. Closes #411 + * Added streaming support to `res.sendfile()` using `sys.pump()` when >= "stream threshold" + * Added _stream threshold_ setting for `res.sendfile()` + * Added `res.send()` __HEAD__ support + * Added `res.clearCookie()` + * Added `res.cookie()` + * Added `res.render()` headers option + * Added `res.redirect()` response bodies + * Added `res.render()` status option support. Closes #425 [thanks aheckmann] + * Fixed `res.sendfile()` responding with 403 on malicious path + * Fixed `res.download()` bug; when an error occurs remove _Content-Disposition_ + * Fixed; mounted apps settings now inherit from parent app [aheckmann] + * Fixed; stripping Content-Length / Content-Type when 204 + * Fixed `res.send()` 204. Closes #419 + * Fixed multiple _Set-Cookie_ headers via `res.header()`. Closes #402 + * Fixed bug messing with error handlers when `listenFD()` is called instead of `listen()`. [thanks guillermo] + + +1.0.0rc2 / 2010-08-17 +================== + + * Added `app.register()` for template engine mapping. Closes #390 + * Added `res.render()` callback support as second argument (no options) + * Added callback support to `res.download()` + * Added callback support for `res.sendfile()` + * Added support for middleware access via `express.middlewareName()` vs `connect.middlewareName()` + * Added "partials" setting to docs + * Added default expresso tests to `express(1)` generated app. Closes #384 + * Fixed `res.sendfile()` error handling, defer via `next()` + * Fixed `res.render()` callback when a layout is used [thanks guillermo] + * Fixed; `make install` creating ~/.node_libraries when not present + * Fixed issue preventing error handlers from being defined anywhere. Closes #387 + +1.0.0rc / 2010-07-28 +================== + + * Added mounted hook. Closes #369 + * Added connect dependency to _package.json_ + + * Removed "reload views" setting and support code + development env never caches, production always caches. + + * Removed _param_ in route callbacks, signature is now + simply (req, res, next), previously (req, res, params, next). + Use _req.params_ for path captures, _req.query_ for GET params. + + * Fixed "home" setting + * Fixed middleware/router precedence issue. Closes #366 + * Fixed; _configure()_ callbacks called immediately. Closes #368 + +1.0.0beta2 / 2010-07-23 +================== + + * Added more examples + * Added; exporting `Server` constructor + * Added `Server#helpers()` for view locals + * Added `Server#dynamicHelpers()` for dynamic view locals. Closes #349 + * Added support for absolute view paths + * Added; _home_ setting defaults to `Server#route` for mounted apps. Closes #363 + * Added Guillermo Rauch to the contributor list + * Added support for "as" for non-collection partials. Closes #341 + * Fixed _install.sh_, ensuring _~/.node_libraries_ exists. Closes #362 [thanks jf] + * Fixed `res.render()` exceptions, now passed to `next()` when no callback is given [thanks guillermo] + * Fixed instanceof `Array` checks, now `Array.isArray()` + * Fixed express(1) expansion of public dirs. Closes #348 + * Fixed middleware precedence. Closes #345 + * Fixed view watcher, now async [thanks aheckmann] + +1.0.0beta / 2010-07-15 +================== + + * Re-write + - much faster + - much lighter + - Check [ExpressJS.com](http://expressjs.com) for migration guide and updated docs + +0.14.0 / 2010-06-15 +================== + + * Utilize relative requires + * Added Static bufferSize option [aheckmann] + * Fixed caching of view and partial subdirectories [aheckmann] + * Fixed mime.type() comments now that ".ext" is not supported + * Updated haml submodule + * Updated class submodule + * Removed bin/express + +0.13.0 / 2010-06-01 +================== + + * Added node v0.1.97 compatibility + * Added support for deleting cookies via Request#cookie('key', null) + * Updated haml submodule + * Fixed not-found page, now using using charset utf-8 + * Fixed show-exceptions page, now using using charset utf-8 + * Fixed view support due to fs.readFile Buffers + * Changed; mime.type() no longer accepts ".type" due to node extname() changes + +0.12.0 / 2010-05-22 +================== + + * Added node v0.1.96 compatibility + * Added view `helpers` export which act as additional local variables + * Updated haml submodule + * Changed ETag; removed inode, modified time only + * Fixed LF to CRLF for setting multiple cookies + * Fixed cookie complation; values are now urlencoded + * Fixed cookies parsing; accepts quoted values and url escaped cookies + +0.11.0 / 2010-05-06 +================== + + * Added support for layouts using different engines + - this.render('page.html.haml', { layout: 'super-cool-layout.html.ejs' }) + - this.render('page.html.haml', { layout: 'foo' }) // assumes 'foo.html.haml' + - this.render('page.html.haml', { layout: false }) // no layout + * Updated ext submodule + * Updated haml submodule + * Fixed EJS partial support by passing along the context. Issue #307 + +0.10.1 / 2010-05-03 +================== + + * Fixed binary uploads. + +0.10.0 / 2010-04-30 +================== + + * Added charset support via Request#charset (automatically assigned to 'UTF-8' when respond()'s + encoding is set to 'utf8' or 'utf-8'. + * Added "encoding" option to Request#render(). Closes #299 + * Added "dump exceptions" setting, which is enabled by default. + * Added simple ejs template engine support + * Added error reponse support for text/plain, application/json. Closes #297 + * Added callback function param to Request#error() + * Added Request#sendHead() + * Added Request#stream() + * Added support for Request#respond(304, null) for empty response bodies + * Added ETag support to Request#sendfile() + * Added options to Request#sendfile(), passed to fs.createReadStream() + * Added filename arg to Request#download() + * Performance enhanced due to pre-reversing plugins so that plugins.reverse() is not called on each request + * Performance enhanced by preventing several calls to toLowerCase() in Router#match() + * Changed; Request#sendfile() now streams + * Changed; Renamed Request#halt() to Request#respond(). Closes #289 + * Changed; Using sys.inspect() instead of JSON.encode() for error output + * Changed; run() returns the http.Server instance. Closes #298 + * Changed; Defaulting Server#host to null (INADDR_ANY) + * Changed; Logger "common" format scale of 0.4f + * Removed Logger "request" format + * Fixed; Catching ENOENT in view caching, preventing error when "views/partials" is not found + * Fixed several issues with http client + * Fixed Logger Content-Length output + * Fixed bug preventing Opera from retaining the generated session id. Closes #292 + +0.9.0 / 2010-04-14 +================== + + * Added DSL level error() route support + * Added DSL level notFound() route support + * Added Request#error() + * Added Request#notFound() + * Added Request#render() callback function. Closes #258 + * Added "max upload size" setting + * Added "magic" variables to collection partials (\_\_index\_\_, \_\_length\_\_, \_\_isFirst\_\_, \_\_isLast\_\_). Closes #254 + * Added [haml.js](http://github.com/visionmedia/haml.js) submodule; removed haml-js + * Added callback function support to Request#halt() as 3rd/4th arg + * Added preprocessing of route param wildcards using param(). Closes #251 + * Added view partial support (with collections etc) + * Fixed bug preventing falsey params (such as ?page=0). Closes #286 + * Fixed setting of multiple cookies. Closes #199 + * Changed; view naming convention is now NAME.TYPE.ENGINE (for example page.html.haml) + * Changed; session cookie is now httpOnly + * Changed; Request is no longer global + * Changed; Event is no longer global + * Changed; "sys" module is no longer global + * Changed; moved Request#download to Static plugin where it belongs + * Changed; Request instance created before body parsing. Closes #262 + * Changed; Pre-caching views in memory when "cache view contents" is enabled. Closes #253 + * Changed; Pre-caching view partials in memory when "cache view partials" is enabled + * Updated support to node --version 0.1.90 + * Updated dependencies + * Removed set("session cookie") in favour of use(Session, { cookie: { ... }}) + * Removed utils.mixin(); use Object#mergeDeep() + +0.8.0 / 2010-03-19 +================== + + * Added coffeescript example app. Closes #242 + * Changed; cache api now async friendly. Closes #240 + * Removed deprecated 'express/static' support. Use 'express/plugins/static' + +0.7.6 / 2010-03-19 +================== + + * Added Request#isXHR. Closes #229 + * Added `make install` (for the executable) + * Added `express` executable for setting up simple app templates + * Added "GET /public/*" to Static plugin, defaulting to /public + * Added Static plugin + * Fixed; Request#render() only calls cache.get() once + * Fixed; Namespacing View caches with "view:" + * Fixed; Namespacing Static caches with "static:" + * Fixed; Both example apps now use the Static plugin + * Fixed set("views"). Closes #239 + * Fixed missing space for combined log format + * Deprecated Request#sendfile() and 'express/static' + * Removed Server#running + +0.7.5 / 2010-03-16 +================== + + * Added Request#flash() support without args, now returns all flashes + * Updated ext submodule + +0.7.4 / 2010-03-16 +================== + + * Fixed session reaper + * Changed; class.js replacing js-oo Class implementation (quite a bit faster, no browser cruft) + +0.7.3 / 2010-03-16 +================== + + * Added package.json + * Fixed requiring of haml / sass due to kiwi removal + +0.7.2 / 2010-03-16 +================== + + * Fixed GIT submodules (HAH!) + +0.7.1 / 2010-03-16 +================== + + * Changed; Express now using submodules again until a PM is adopted + * Changed; chat example using millisecond conversions from ext + +0.7.0 / 2010-03-15 +================== + + * Added Request#pass() support (finds the next matching route, or the given path) + * Added Logger plugin (default "common" format replaces CommonLogger) + * Removed Profiler plugin + * Removed CommonLogger plugin + +0.6.0 / 2010-03-11 +================== + + * Added seed.yml for kiwi package management support + * Added HTTP client query string support when method is GET. Closes #205 + + * Added support for arbitrary view engines. + For example "foo.engine.html" will now require('engine'), + the exports from this module are cached after the first require(). + + * Added async plugin support + + * Removed usage of RESTful route funcs as http client + get() etc, use http.get() and friends + + * Removed custom exceptions + +0.5.0 / 2010-03-10 +================== + + * Added ext dependency (library of js extensions) + * Removed extname() / basename() utils. Use path module + * Removed toArray() util. Use arguments.values + * Removed escapeRegexp() util. Use RegExp.escape() + * Removed process.mixin() dependency. Use utils.mixin() + * Removed Collection + * Removed ElementCollection + * Shameless self promotion of ebook "Advanced JavaScript" (http://dev-mag.com) ;) + +0.4.0 / 2010-02-11 +================== + + * Added flash() example to sample upload app + * Added high level restful http client module (express/http) + * Changed; RESTful route functions double as HTTP clients. Closes #69 + * Changed; throwing error when routes are added at runtime + * Changed; defaulting render() context to the current Request. Closes #197 + * Updated haml submodule + +0.3.0 / 2010-02-11 +================== + + * Updated haml / sass submodules. Closes #200 + * Added flash message support. Closes #64 + * Added accepts() now allows multiple args. fixes #117 + * Added support for plugins to halt. Closes #189 + * Added alternate layout support. Closes #119 + * Removed Route#run(). Closes #188 + * Fixed broken specs due to use(Cookie) missing + +0.2.1 / 2010-02-05 +================== + + * Added "plot" format option for Profiler (for gnuplot processing) + * Added request number to Profiler plugin + * Fixed binary encoding for multi-part file uploads, was previously defaulting to UTF8 + * Fixed issue with routes not firing when not files are present. Closes #184 + * Fixed process.Promise -> events.Promise + +0.2.0 / 2010-02-03 +================== + + * Added parseParam() support for name[] etc. (allows for file inputs with "multiple" attr) Closes #180 + * Added Both Cache and Session option "reapInterval" may be "reapEvery". Closes #174 + * Added expiration support to cache api with reaper. Closes #133 + * Added cache Store.Memory#reap() + * Added Cache; cache api now uses first class Cache instances + * Added abstract session Store. Closes #172 + * Changed; cache Memory.Store#get() utilizing Collection + * Renamed MemoryStore -> Store.Memory + * Fixed use() of the same plugin several time will always use latest options. Closes #176 + +0.1.0 / 2010-02-03 +================== + + * Changed; Hooks (before / after) pass request as arg as well as evaluated in their context + * Updated node support to 0.1.27 Closes #169 + * Updated dirname(__filename) -> __dirname + * Updated libxmljs support to v0.2.0 + * Added session support with memory store / reaping + * Added quick uid() helper + * Added multi-part upload support + * Added Sass.js support / submodule + * Added production env caching view contents and static files + * Added static file caching. Closes #136 + * Added cache plugin with memory stores + * Added support to StaticFile so that it works with non-textual files. + * Removed dirname() helper + * Removed several globals (now their modules must be required) + +0.0.2 / 2010-01-10 +================== + + * Added view benchmarks; currently haml vs ejs + * Added Request#attachment() specs. Closes #116 + * Added use of node's parseQuery() util. Closes #123 + * Added `make init` for submodules + * Updated Haml + * Updated sample chat app to show messages on load + * Updated libxmljs parseString -> parseHtmlString + * Fixed `make init` to work with older versions of git + * Fixed specs can now run independant specs for those who cant build deps. Closes #127 + * Fixed issues introduced by the node url module changes. Closes 126. + * Fixed two assertions failing due to Collection#keys() returning strings + * Fixed faulty Collection#toArray() spec due to keys() returning strings + * Fixed `make test` now builds libxmljs.node before testing + +0.0.1 / 2010-01-03 +================== + + * Initial release diff --git a/node_modules/express/LICENSE b/node_modules/express/LICENSE new file mode 100644 index 0000000..36075a3 --- /dev/null +++ b/node_modules/express/LICENSE @@ -0,0 +1,22 @@ +(The MIT License) + +Copyright (c) 2009-2011 TJ Holowaychuk + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +'Software'), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. \ No newline at end of file diff --git a/node_modules/express/Makefile b/node_modules/express/Makefile new file mode 100644 index 0000000..e820e31 --- /dev/null +++ b/node_modules/express/Makefile @@ -0,0 +1,33 @@ + +MOCHA_OPTS= +REPORTER = dot + +check: test + +test: test-unit test-acceptance + +test-unit: + @NODE_ENV=test ./node_modules/.bin/mocha \ + --reporter $(REPORTER) \ + $(MOCHA_OPTS) + +test-acceptance: + @NODE_ENV=test ./node_modules/.bin/mocha \ + --reporter $(REPORTER) \ + --bail \ + test/acceptance/*.js + +test-cov: lib-cov + @EXPRESS_COV=1 $(MAKE) test REPORTER=html-cov > coverage.html + +lib-cov: + @jscoverage lib lib-cov + +benchmark: + @./support/bench + +clean: + rm -f coverage.html + rm -fr lib-cov + +.PHONY: test test-unit test-acceptance benchmark clean diff --git a/node_modules/express/Readme.md b/node_modules/express/Readme.md new file mode 100644 index 0000000..6bb8b95 --- /dev/null +++ b/node_modules/express/Readme.md @@ -0,0 +1,179 @@ +![express logo](http://f.cl.ly/items/0V2S1n0K1i3y1c122g04/Screen%20Shot%202012-04-11%20at%209.59.42%20AM.png) + + Fast, unopinionated, minimalist web framework for [node](http://nodejs.org). [![Build Status](https://secure.travis-ci.org/visionmedia/express.png)](http://travis-ci.org/visionmedia/express) + +```js +var express = require('express'); +var app = express(); + +app.get('/', function(req, res){ + res.send('Hello World'); +}); + +app.listen(3000); +``` + +## Installation + + $ npm install -g express + +## Quick Start + + The quickest way to get started with express is to utilize the executable `express(1)` to generate an application as shown below: + + Create the app: + + $ npm install -g express + $ express /tmp/foo && cd /tmp/foo + + Install dependencies: + + $ npm install + + Start the server: + + $ node app + +## Features + + * Built on [Connect](http://github.com/senchalabs/connect) + * Robust routing + * HTTP helpers (redirection, caching, etc) + * View system supporting 14+ template engines + * Content negotiation + * Focus on high performance + * Environment based configuration + * Executable for generating applications quickly + * High test coverage + +## Philosophy + + The Express philosophy is to provide small, robust tooling for HTTP servers. Making + it a great solution for single page applications, web sites, hybrids, or public + HTTP APIs. + + Built on Connect you can use _only_ what you need, and nothing more, applications + can be as big or as small as you like, even a single file. Express does + not force you to use any specific ORM or template engine. With support for over + 14 template engines via [Consolidate.js](http://github.com/visionmedia/consolidate.js) + you can quickly craft your perfect framework. + +## More Information + + * Join #express on freenode + * [Google Group](http://groups.google.com/group/express-js) for discussion + * Follow [tjholowaychuk](http://twitter.com/tjholowaychuk) on twitter for updates + * Visit the [Wiki](http://github.com/visionmedia/express/wiki) + * [日本語ドキュメンテーション](http://hideyukisaito.com/doc/expressjs/) by [hideyukisaito](https://github.com/hideyukisaito) + * [Русскоязычная документация](http://express-js.ru/) + +## Viewing Examples + +Clone the Express repo, then install the dev dependencies to install all the example / test suite deps: + + $ git clone git://github.com/visionmedia/express.git --depth 1 + $ cd express + $ npm install + +then run whichever tests you want: + + $ node examples/content-negotiation + +## Running Tests + +To run the test suite first invoke the following command within the repo, installing the development dependencies: + + $ npm install + +then run the tests: + + $ make test + +## Contributors + +``` +project: express +commits: 3559 +active : 468 days +files : 237 +authors: + 1891 Tj Holowaychuk 53.1% + 1285 visionmedia 36.1% + 182 TJ Holowaychuk 5.1% + 54 Aaron Heckmann 1.5% + 34 csausdev 1.0% + 26 ciaranj 0.7% + 21 Robert Sköld 0.6% + 6 Guillermo Rauch 0.2% + 3 Dav Glass 0.1% + 3 Nick Poulden 0.1% + 2 Randy Merrill 0.1% + 2 Benny Wong 0.1% + 2 Hunter Loftis 0.1% + 2 Jake Gordon 0.1% + 2 Brian McKinney 0.1% + 2 Roman Shtylman 0.1% + 2 Ben Weaver 0.1% + 2 Dave Hoover 0.1% + 2 Eivind Fjeldstad 0.1% + 2 Daniel Shaw 0.1% + 1 Matt Colyer 0.0% + 1 Pau Ramon 0.0% + 1 Pero Pejovic 0.0% + 1 Peter Rekdal Sunde 0.0% + 1 Raynos 0.0% + 1 Teng Siong Ong 0.0% + 1 Viktor Kelemen 0.0% + 1 ctide 0.0% + 1 8bitDesigner 0.0% + 1 isaacs 0.0% + 1 mgutz 0.0% + 1 pikeas 0.0% + 1 shuwatto 0.0% + 1 tstrimple 0.0% + 1 ewoudj 0.0% + 1 Adam Sanderson 0.0% + 1 Andrii Kostenko 0.0% + 1 Andy Hiew 0.0% + 1 Arpad Borsos 0.0% + 1 Ashwin Purohit 0.0% + 1 Benjen 0.0% + 1 Darren Torpey 0.0% + 1 Greg Ritter 0.0% + 1 Gregory Ritter 0.0% + 1 James Herdman 0.0% + 1 Jim Snodgrass 0.0% + 1 Joe McCann 0.0% + 1 Jonathan Dumaine 0.0% + 1 Jonathan Palardy 0.0% + 1 Jonathan Zacsh 0.0% + 1 Justin Lilly 0.0% + 1 Ken Sato 0.0% + 1 Maciej Małecki 0.0% + 1 Masahiro Hayashi 0.0% +``` + +## License + +(The MIT License) + +Copyright (c) 2009-2012 TJ Holowaychuk <tj@vision-media.ca> + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +'Software'), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/node_modules/express/bin/express b/node_modules/express/bin/express new file mode 100644 index 0000000..3c0090c --- /dev/null +++ b/node_modules/express/bin/express @@ -0,0 +1,422 @@ +#!/usr/bin/env node + +/** + * Module dependencies. + */ + +var exec = require('child_process').exec + , program = require('commander') + , mkdirp = require('mkdirp') + , pkg = require('../package.json') + , version = pkg.version + , os = require('os') + , fs = require('fs'); + +// CLI + +program + .version(version) + .option('-s, --sessions', 'add session support') + .option('-e, --ejs', 'add ejs engine support (defaults to jade)') + .option('-J, --jshtml', 'add jshtml engine support (defaults to jade)') + .option('-H, --hogan', 'add hogan.js engine support') + .option('-c, --css ', 'add stylesheet support (less|stylus) (defaults to plain css)') + .option('-f, --force', 'force on non-empty directory') + .parse(process.argv); + +// Path + +var path = program.args.shift() || '.'; + +// end-of-line code + +var eol = 'win32' == os.platform() ? '\r\n' : '\n' + +// Template engine + +program.template = 'jade'; +if (program.ejs) program.template = 'ejs'; +if (program.jshtml) program.template = 'jshtml'; +if (program.hogan) program.template = 'hjs'; + +/** + * Routes index template. + */ + +var index = [ + '' + , '/*' + , ' * GET home page.' + , ' */' + , '' + , 'exports.index = function(req, res){' + , ' res.render(\'index\', { title: \'Express\' });' + , '};' +].join(eol); + +/** + * Routes users template. + */ + +var users = [ + '' + , '/*' + , ' * GET users listing.' + , ' */' + , '' + , 'exports.list = function(req, res){' + , ' res.send("respond with a resource");' + , '};' +].join(eol); + +/** + * Jade layout template. + */ + +var jadeLayout = [ + 'doctype 5' + , 'html' + , ' head' + , ' title= title' + , ' link(rel=\'stylesheet\', href=\'/stylesheets/style.css\')' + , ' body' + , ' block content' +].join(eol); + +/** + * Jade index template. + */ + +var jadeIndex = [ + 'extends layout' + , '' + , 'block content' + , ' h1= title' + , ' p Welcome to #{title}' +].join(eol); + +/** + * EJS index template. + */ + +var ejsIndex = [ + '' + , '' + , ' ' + , ' <%= title %>' + , ' ' + , ' ' + , ' ' + , '

<%= title %>

' + , '

Welcome to <%= title %>

' + , ' ' + , '' +].join(eol); + +/** + * JSHTML layout template. + */ + +var jshtmlLayout = [ + '' + , '' + , ' ' + , ' @write(title) ' + , ' ' + , ' ' + , ' ' + , ' @write(body)' + , ' ' + , '' +].join(eol); + +/** + * JSHTML index template. + */ + +var jshtmlIndex = [ + '

@write(title)

' + , '

Welcome to @write(title)

' +].join(eol); + +/** + * Hogan.js index template. + */ +var hoganIndex = [ + '' + , '' + , ' ' + , ' {{ title }}' + , ' ' + , ' ' + , ' ' + , '

{{ title }}

' + , '

Welcome to {{ title }}

' + , ' ' + , '' +].join(eol); + +/** + * Default css template. + */ + +var css = [ + 'body {' + , ' padding: 50px;' + , ' font: 14px "Lucida Grande", Helvetica, Arial, sans-serif;' + , '}' + , '' + , 'a {' + , ' color: #00B7FF;' + , '}' +].join(eol); + +/** + * Default less template. + */ + +var less = [ + 'body {' + , ' padding: 50px;' + , ' font: 14px "Lucida Grande", Helvetica, Arial, sans-serif;' + , '}' + , '' + , 'a {' + , ' color: #00B7FF;' + , '}' +].join(eol); + +/** + * Default stylus template. + */ + +var stylus = [ + 'body' + , ' padding: 50px' + , ' font: 14px "Lucida Grande", Helvetica, Arial, sans-serif' + , 'a' + , ' color: #00B7FF' +].join(eol); + +/** + * App template. + */ + +var app = [ + '' + , '/**' + , ' * Module dependencies.' + , ' */' + , '' + , 'var express = require(\'express\')' + , ' , routes = require(\'./routes\')' + , ' , user = require(\'./routes/user\')' + , ' , http = require(\'http\')' + , ' , path = require(\'path\');' + , '' + , 'var app = express();' + , '' + , 'app.configure(function(){' + , ' app.set(\'port\', process.env.PORT || 3000);' + , ' app.set(\'views\', __dirname + \'/views\');' + , ' app.set(\'view engine\', \':TEMPLATE\');' + , ' app.use(express.favicon());' + , ' app.use(express.logger(\'dev\'));' + , ' app.use(express.bodyParser());' + , ' app.use(express.methodOverride());{sess}' + , ' app.use(app.router);{css}' + , ' app.use(express.static(path.join(__dirname, \'public\')));' + , '});' + , '' + , 'app.configure(\'development\', function(){' + , ' app.use(express.errorHandler());' + , '});' + , '' + , 'app.get(\'/\', routes.index);' + , 'app.get(\'/users\', user.list);' + , '' + , 'http.createServer(app).listen(app.get(\'port\'), function(){' + , ' console.log("Express server listening on port " + app.get(\'port\'));' + , '});' + , '' +].join(eol); + +// Generate application + +(function createApplication(path) { + emptyDirectory(path, function(empty){ + if (empty || program.force) { + createApplicationAt(path); + } else { + program.confirm('destination is not empty, continue? ', function(ok){ + if (ok) { + process.stdin.destroy(); + createApplicationAt(path); + } else { + abort('aborting'); + } + }); + } + }); +})(path); + +/** + * Create application at the given directory `path`. + * + * @param {String} path + */ + +function createApplicationAt(path) { + console.log(); + process.on('exit', function(){ + console.log(); + console.log(' install dependencies:'); + console.log(' $ cd %s && npm install', path); + console.log(); + console.log(' run the app:'); + console.log(' $ node app'); + console.log(); + }); + + mkdir(path, function(){ + mkdir(path + '/public'); + mkdir(path + '/public/javascripts'); + mkdir(path + '/public/images'); + mkdir(path + '/public/stylesheets', function(){ + switch (program.css) { + case 'less': + write(path + '/public/stylesheets/style.less', less); + break; + case 'stylus': + write(path + '/public/stylesheets/style.styl', stylus); + break; + default: + write(path + '/public/stylesheets/style.css', css); + } + }); + + mkdir(path + '/routes', function(){ + write(path + '/routes/index.js', index); + write(path + '/routes/user.js', users); + }); + + mkdir(path + '/views', function(){ + switch (program.template) { + case 'ejs': + write(path + '/views/index.ejs', ejsIndex); + break; + case 'jade': + write(path + '/views/layout.jade', jadeLayout); + write(path + '/views/index.jade', jadeIndex); + break; + case 'jshtml': + write(path + '/views/layout.jshtml', jshtmlLayout); + write(path + '/views/index.jshtml', jshtmlIndex); + break; + case 'hjs': + write(path + '/views/index.hjs', hoganIndex); + break; + + } + }); + + // CSS Engine support + switch (program.css) { + case 'less': + app = app.replace('{css}', eol + ' app.use(require(\'less-middleware\')({ src: __dirname + \'/public\' }));'); + break; + case 'stylus': + app = app.replace('{css}', eol + ' app.use(require(\'stylus\').middleware(__dirname + \'/public\'));'); + break; + default: + app = app.replace('{css}', ''); + } + + // Session support + app = app.replace('{sess}', program.sessions + ? eol + ' app.use(express.cookieParser(\'your secret here\'));' + eol + ' app.use(express.session());' + : ''); + + // Template support + app = app.replace(':TEMPLATE', program.template); + + // package.json + var pkg = { + name: 'application-name' + , version: '0.0.1' + , private: true + , scripts: { start: 'node app' } + , dependencies: { + express: version + } + } + + if (program.template) pkg.dependencies[program.template] = '*'; + + // CSS Engine support + switch (program.css) { + case 'less': + pkg.dependencies['less-middleware'] = '*'; + break; + default: + if (program.css) { + pkg.dependencies[program.css] = '*'; + } + } + + write(path + '/package.json', JSON.stringify(pkg, null, 2)); + write(path + '/app.js', app); + }); +} + +/** + * Check if the given directory `path` is empty. + * + * @param {String} path + * @param {Function} fn + */ + +function emptyDirectory(path, fn) { + fs.readdir(path, function(err, files){ + if (err && 'ENOENT' != err.code) throw err; + fn(!files || !files.length); + }); +} + +/** + * echo str > path. + * + * @param {String} path + * @param {String} str + */ + +function write(path, str) { + fs.writeFile(path, str); + console.log(' \x1b[36mcreate\x1b[0m : ' + path); +} + +/** + * Mkdir -p. + * + * @param {String} path + * @param {Function} fn + */ + +function mkdir(path, fn) { + mkdirp(path, 0755, function(err){ + if (err) throw err; + console.log(' \033[36mcreate\033[0m : ' + path); + fn && fn(); + }); +} + +/** + * Exit with the given `str`. + * + * @param {String} str + */ + +function abort(str) { + console.error(str); + process.exit(1); +} diff --git a/node_modules/express/client.js b/node_modules/express/client.js new file mode 100644 index 0000000..8984c44 --- /dev/null +++ b/node_modules/express/client.js @@ -0,0 +1,25 @@ + +var http = require('http'); + +var times = 50; + +while (times--) { + var req = http.request({ + port: 3000 + , method: 'POST' + , headers: { 'Content-Type': 'application/x-www-form-urlencoded' } + }); + + req.on('response', function(res){ + console.log(res.statusCode); + }); + + var n = 500000; + while (n--) { + req.write('foo=bar&bar=baz&'); + } + + req.write('foo=bar&bar=baz'); + + req.end(); +} \ No newline at end of file diff --git a/node_modules/express/index.js b/node_modules/express/index.js new file mode 100644 index 0000000..bfe9934 --- /dev/null +++ b/node_modules/express/index.js @@ -0,0 +1,4 @@ + +module.exports = process.env.EXPRESS_COV + ? require('./lib-cov/express') + : require('./lib/express'); \ No newline at end of file diff --git a/node_modules/express/lib/application.js b/node_modules/express/lib/application.js new file mode 100644 index 0000000..7ebc6f6 --- /dev/null +++ b/node_modules/express/lib/application.js @@ -0,0 +1,534 @@ +/** + * Module dependencies. + */ + +var connect = require('connect') + , Router = require('./router') + , methods = require('methods') + , middleware = require('./middleware') + , debug = require('debug')('express:application') + , locals = require('./utils').locals + , View = require('./view') + , utils = connect.utils + , path = require('path') + , http = require('http') + , join = path.join; + +/** + * Application prototype. + */ + +var app = exports = module.exports = {}; + +/** + * Initialize the server. + * + * - setup default configuration + * - setup default middleware + * - setup route reflection methods + * + * @api private + */ + +app.init = function(){ + this.cache = {}; + this.settings = {}; + this.engines = {}; + this.viewCallbacks = []; + this.defaultConfiguration(); +}; + +/** + * Initialize application configuration. + * + * @api private + */ + +app.defaultConfiguration = function(){ + // default settings + this.enable('x-powered-by'); + this.set('env', process.env.NODE_ENV || 'development'); + this.set('subdomain offset', 2); + debug('booting in %s mode', this.get('env')); + + // implicit middleware + this.use(connect.query()); + this.use(middleware.init(this)); + + // inherit protos + this.on('mount', function(parent){ + this.request.__proto__ = parent.request; + this.response.__proto__ = parent.response; + this.engines.__proto__ = parent.engines; + }); + + // router + this._router = new Router(this); + this.routes = this._router.map; + this.__defineGetter__('router', function(){ + this._usedRouter = true; + this._router.caseSensitive = this.enabled('case sensitive routing'); + this._router.strict = this.enabled('strict routing'); + return this._router.middleware; + }); + + // setup locals + this.locals = locals(this); + + // default locals + this.locals.settings = this.settings; + + // default configuration + this.set('views', process.cwd() + '/views'); + this.set('jsonp callback name', 'callback'); + + this.configure('development', function(){ + this.set('json spaces', 2); + }); + + this.configure('production', function(){ + this.enable('view cache'); + }); +}; + +/** + * Proxy `connect#use()` to apply settings to + * mounted applications. + * + * @param {String|Function|Server} route + * @param {Function|Server} fn + * @return {app} for chaining + * @api public + */ + +app.use = function(route, fn){ + var app; + + // default route to '/' + if ('string' != typeof route) fn = route, route = '/'; + + // express app + if (fn.handle && fn.set) app = fn; + + // restore .app property on req and res + if (app) { + app.route = route; + fn = function(req, res, next) { + var orig = req.app; + app.handle(req, res, function(err){ + req.app = res.app = orig; + req.__proto__ = orig.request; + res.__proto__ = orig.response; + next(err); + }); + }; + } + + connect.proto.use.call(this, route, fn); + + // mounted an app + if (app) { + app.parent = this; + app.emit('mount', this); + } + + return this; +}; + +/** + * Register the given template engine callback `fn` + * as `ext`. + * + * By default will `require()` the engine based on the + * file extension. For example if you try to render + * a "foo.jade" file Express will invoke the following internally: + * + * app.engine('jade', require('jade').__express); + * + * For engines that do not provide `.__express` out of the box, + * or if you wish to "map" a different extension to the template engine + * you may use this method. For example mapping the EJS template engine to + * ".html" files: + * + * app.engine('html', require('ejs').renderFile); + * + * In this case EJS provides a `.renderFile()` method with + * the same signature that Express expects: `(path, options, callback)`, + * though note that it aliases this method as `ejs.__express` internally + * so if you're using ".ejs" extensions you dont need to do anything. + * + * Some template engines do not follow this convention, the + * [Consolidate.js](https://github.com/visionmedia/consolidate.js) + * library was created to map all of node's popular template + * engines to follow this convention, thus allowing them to + * work seeessly within Express. + * + * @param {String} ext + * @param {Function} fn + * @return {app} for chaining + * @api public + */ + +app.engine = function(ext, fn){ + if ('function' != typeof fn) throw new Error('callback function required'); + if ('.' != ext[0]) ext = '.' + ext; + this.engines[ext] = fn; + return this; +}; + +/** + * Map the given param placeholder `name`(s) to the given callback(s). + * + * Parameter mapping is used to provide pre-conditions to routes + * which use normalized placeholders. For example a _:user_id_ parameter + * could automatically load a user's information from the database without + * any additional code, + * + * The callback uses the samesignature as middleware, the only differencing + * being that the value of the placeholder is passed, in this case the _id_ + * of the user. Once the `next()` function is invoked, just like middleware + * it will continue on to execute the route, or subsequent parameter functions. + * + * app.param('user_id', function(req, res, next, id){ + * User.find(id, function(err, user){ + * if (err) { + * next(err); + * } else if (user) { + * req.user = user; + * next(); + * } else { + * next(new Error('failed to load user')); + * } + * }); + * }); + * + * @param {String|Array} name + * @param {Function} fn + * @return {app} for chaining + * @api public + */ + +app.param = function(name, fn){ + var self = this + , fns = [].slice.call(arguments, 1); + + // array + if (Array.isArray(name)) { + name.forEach(function(name){ + fns.forEach(function(fn){ + self.param(name, fn); + }); + }); + // param logic + } else if ('function' == typeof name) { + this._router.param(name); + // single + } else { + if (':' == name[0]) name = name.substr(1); + fns.forEach(function(fn){ + self._router.param(name, fn); + }); + } + + return this; +}; + +/** + * Assign `setting` to `val`, or return `setting`'s value. + * + * app.set('foo', 'bar'); + * app.get('foo'); + * // => "bar" + * + * Mounted servers inherit their parent server's settings. + * + * @param {String} setting + * @param {String} val + * @return {Server} for chaining + * @api public + */ + +app.set = function(setting, val){ + if (1 == arguments.length) { + if (this.settings.hasOwnProperty(setting)) { + return this.settings[setting]; + } else if (this.parent) { + return this.parent.set(setting); + } + } else { + this.settings[setting] = val; + return this; + } +}; + +/** + * Return the app's absolute pathname + * based on the parent(s) that have + * mounted it. + * + * For example if the application was + * mounted as "/admin", which itself + * was mounted as "/blog" then the + * return value would be "/blog/admin". + * + * @return {String} + * @api private + */ + +app.path = function(){ + return this.parent + ? this.parent.path() + this.route + : ''; +}; + +/** + * Check if `setting` is enabled (truthy). + * + * app.enabled('foo') + * // => false + * + * app.enable('foo') + * app.enabled('foo') + * // => true + * + * @param {String} setting + * @return {Boolean} + * @api public + */ + +app.enabled = function(setting){ + return !!this.set(setting); +}; + +/** + * Check if `setting` is disabled. + * + * app.disabled('foo') + * // => true + * + * app.enable('foo') + * app.disabled('foo') + * // => false + * + * @param {String} setting + * @return {Boolean} + * @api public + */ + +app.disabled = function(setting){ + return !this.set(setting); +}; + +/** + * Enable `setting`. + * + * @param {String} setting + * @return {app} for chaining + * @api public + */ + +app.enable = function(setting){ + return this.set(setting, true); +}; + +/** + * Disable `setting`. + * + * @param {String} setting + * @return {app} for chaining + * @api public + */ + +app.disable = function(setting){ + return this.set(setting, false); +}; + +/** + * Configure callback for zero or more envs, + * when no `env` is specified that callback will + * be invoked for all environments. Any combination + * can be used multiple times, in any order desired. + * + * Examples: + * + * app.configure(function(){ + * // executed for all envs + * }); + * + * app.configure('stage', function(){ + * // executed staging env + * }); + * + * app.configure('stage', 'production', function(){ + * // executed for stage and production + * }); + * + * Note: + * + * These callbacks are invoked immediately, and + * are effectively sugar for the following: + * + * var env = process.env.NODE_ENV || 'development'; + * + * switch (env) { + * case 'development': + * ... + * break; + * case 'stage': + * ... + * break; + * case 'production': + * ... + * break; + * } + * + * @param {String} env... + * @param {Function} fn + * @return {app} for chaining + * @api public + */ + +app.configure = function(env, fn){ + var envs = 'all' + , args = [].slice.call(arguments); + fn = args.pop(); + if (args.length) envs = args; + if ('all' == envs || ~envs.indexOf(this.settings.env)) fn.call(this); + return this; +}; + +/** + * Delegate `.VERB(...)` calls to `router.VERB(...)`. + */ + +methods.forEach(function(method){ + app[method] = function(path){ + if ('get' == method && 1 == arguments.length) return this.set(path); + + // if no router attacked yet, attach the router + if (!this._usedRouter) this.use(this.router); + + // setup route + this._router[method].apply(this._router, arguments); + return this; + }; +}); + +/** + * Special-cased "all" method, applying the given route `path`, + * middleware, and callback to _every_ HTTP method. + * + * @param {String} path + * @param {Function} ... + * @return {app} for chaining + * @api public + */ + +app.all = function(path){ + var args = arguments; + methods.forEach(function(method){ + app[method].apply(this, args); + }, this); + return this; +}; + +// del -> delete alias + +app.del = app.delete; + +/** + * Render the given view `name` name with `options` + * and a callback accepting an error and the + * rendered template string. + * + * Example: + * + * app.render('email', { name: 'Tobi' }, function(err, html){ + * // ... + * }) + * + * @param {String} name + * @param {String|Function} options or fn + * @param {Function} fn + * @api public + */ + +app.render = function(name, options, fn){ + var opts = {} + , cache = this.cache + , engines = this.engines + , view; + + // support callback function as second arg + if ('function' == typeof options) { + fn = options, options = {}; + } + + // merge app.locals + utils.merge(opts, this.locals); + + // merge options._locals + if (options._locals) utils.merge(opts, options._locals); + + // merge options + utils.merge(opts, options); + + // set .cache unless explicitly provided + opts.cache = null == opts.cache + ? this.enabled('view cache') + : opts.cache; + + // primed cache + if (opts.cache) view = cache[name]; + + // view + if (!view) { + view = new View(name, { + defaultEngine: this.get('view engine'), + root: this.get('views'), + engines: engines + }); + + if (!view.path) { + var err = new Error('Failed to lookup view "' + name + '"'); + err.view = view; + return fn(err); + } + + // prime the cache + if (opts.cache) cache[name] = view; + } + + // render + try { + view.render(opts, fn); + } catch (err) { + fn(err); + } +}; + +/** + * Listen for connections. + * + * A node `http.Server` is returned, with this + * application (which is a `Function`) as its + * callback. If you wish to create both an HTTP + * and HTTPS server you may do so with the "http" + * and "https" modules as shown here: + * + * var http = require('http') + * , https = require('https') + * , express = require('express') + * , app = express(); + * + * http.createServer(app).listen(80); + * https.createServer({ ... }, app).listen(443); + * + * @return {http.Server} + * @api public + */ + +app.listen = function(){ + var server = http.createServer(this); + return server.listen.apply(server, arguments); +}; diff --git a/node_modules/express/lib/express.js b/node_modules/express/lib/express.js new file mode 100644 index 0000000..2a704b2 --- /dev/null +++ b/node_modules/express/lib/express.js @@ -0,0 +1,92 @@ +/** + * Module dependencies. + */ + +var connect = require('connect') + , proto = require('./application') + , Route = require('./router/route') + , Router = require('./router') + , req = require('./request') + , res = require('./response') + , utils = connect.utils; + +/** + * Expose `createApplication()`. + */ + +exports = module.exports = createApplication; + +/** + * Framework version. + */ + +exports.version = '3.1.0'; + +/** + * Expose mime. + */ + +exports.mime = connect.mime; + +/** + * Create an express application. + * + * @return {Function} + * @api public + */ + +function createApplication() { + var app = connect(); + utils.merge(app, proto); + app.request = { __proto__: req }; + app.response = { __proto__: res }; + app.init(); + return app; +} + +/** + * Expose connect.middleware as express.* + * for example `express.logger` etc. + */ + +for (var key in connect.middleware) { + Object.defineProperty( + exports + , key + , Object.getOwnPropertyDescriptor(connect.middleware, key)); +} + +/** + * Error on createServer(). + */ + +exports.createServer = function(){ + console.warn('Warning: express.createServer() is deprecated, express'); + console.warn('applications no longer inherit from http.Server,'); + console.warn('please use:'); + console.warn(''); + console.warn(' var express = require("express");'); + console.warn(' var app = express();'); + console.warn(''); + return createApplication(); +}; + +/** + * Expose the prototypes. + */ + +exports.application = proto; +exports.request = req; +exports.response = res; + +/** + * Expose constructors. + */ + +exports.Route = Route; +exports.Router = Router; + +// Error handler title + +exports.errorHandler.title = 'Express'; + diff --git a/node_modules/express/lib/middleware.js b/node_modules/express/lib/middleware.js new file mode 100644 index 0000000..308c5bb --- /dev/null +++ b/node_modules/express/lib/middleware.js @@ -0,0 +1,33 @@ + +/** + * Module dependencies. + */ + +var utils = require('./utils'); + +/** + * Initialization middleware, exposing the + * request and response to eachother, as well + * as defaulting the X-Powered-By header field. + * + * @param {Function} app + * @return {Function} + * @api private + */ + +exports.init = function(app){ + return function expressInit(req, res, next){ + req.app = res.app = app; + if (app.enabled('x-powered-by')) res.setHeader('X-Powered-By', 'Express'); + req.res = res; + res.req = req; + req.next = next; + + req.__proto__ = app.request; + res.__proto__ = app.response; + + res.locals = res.locals || utils.locals(res); + + next(); + } +}; diff --git a/node_modules/express/lib/request.js b/node_modules/express/lib/request.js new file mode 100644 index 0000000..1c6048d --- /dev/null +++ b/node_modules/express/lib/request.js @@ -0,0 +1,493 @@ + +/** + * Module dependencies. + */ + +var http = require('http') + , utils = require('./utils') + , connect = require('connect') + , fresh = require('fresh') + , parseRange = require('range-parser') + , parse = connect.utils.parseUrl + , mime = connect.mime; + +/** + * Request prototype. + */ + +var req = exports = module.exports = { + __proto__: http.IncomingMessage.prototype +}; + +/** + * Return request header. + * + * The `Referrer` header field is special-cased, + * both `Referrer` and `Referer` are interchangeable. + * + * Examples: + * + * req.get('Content-Type'); + * // => "text/plain" + * + * req.get('content-type'); + * // => "text/plain" + * + * req.get('Something'); + * // => undefined + * + * Aliased as `req.header()`. + * + * @param {String} name + * @return {String} + * @api public + */ + +req.get = +req.header = function(name){ + switch (name = name.toLowerCase()) { + case 'referer': + case 'referrer': + return this.headers.referrer + || this.headers.referer; + default: + return this.headers[name]; + } +}; + +/** + * Check if the given `type(s)` is acceptable, returning + * the best match when true, otherwise `undefined`, in which + * case you should respond with 406 "Not Acceptable". + * + * The `type` value may be a single mime type string + * such as "application/json", the extension name + * such as "json", a comma-delimted list such as "json, html, text/plain", + * or an array `["json", "html", "text/plain"]`. When a list + * or array is given the _best_ match, if any is returned. + * + * Examples: + * + * // Accept: text/html + * req.accepts('html'); + * // => "html" + * + * // Accept: text/*, application/json + * req.accepts('html'); + * // => "html" + * req.accepts('text/html'); + * // => "text/html" + * req.accepts('json, text'); + * // => "json" + * req.accepts('application/json'); + * // => "application/json" + * + * // Accept: text/*, application/json + * req.accepts('image/png'); + * req.accepts('png'); + * // => undefined + * + * // Accept: text/*;q=.5, application/json + * req.accepts(['html', 'json']); + * req.accepts('html, json'); + * // => "json" + * + * @param {String|Array} type(s) + * @return {String} + * @api public + */ + +req.accepts = function(type){ + return utils.accepts(type, this.get('Accept')); +}; + +/** + * Check if the given `charset` is acceptable, + * otherwise you should respond with 406 "Not Acceptable". + * + * @param {String} charset + * @return {Boolean} + * @api public + */ + +req.acceptsCharset = function(charset){ + var accepted = this.acceptedCharsets; + return accepted.length + ? ~accepted.indexOf(charset) + : true; +}; + +/** + * Check if the given `lang` is acceptable, + * otherwise you should respond with 406 "Not Acceptable". + * + * @param {String} lang + * @return {Boolean} + * @api public + */ + +req.acceptsLanguage = function(lang){ + var accepted = this.acceptedLanguages; + return accepted.length + ? ~accepted.indexOf(lang) + : true; +}; + +/** + * Parse Range header field, + * capping to the given `size`. + * + * Unspecified ranges such as "0-" require + * knowledge of your resource length. In + * the case of a byte range this is of course + * the total number of bytes. If the Range + * header field is not given `null` is returned, + * `-1` when unsatisfiable, `-2` when syntactically invalid. + * + * NOTE: remember that ranges are inclusive, so + * for example "Range: users=0-3" should respond + * with 4 users when available, not 3. + * + * @param {Number} size + * @return {Array} + * @api public + */ + +req.range = function(size){ + var range = this.get('Range'); + if (!range) return; + return parseRange(size, range); +}; + +/** + * Return an array of Accepted media types + * ordered from highest quality to lowest. + * + * Examples: + * + * [ { value: 'application/json', + * quality: 1, + * type: 'application', + * subtype: 'json' }, + * { value: 'text/html', + * quality: 0.5, + * type: 'text', + * subtype: 'html' } ] + * + * @return {Array} + * @api public + */ + +req.__defineGetter__('accepted', function(){ + var accept = this.get('Accept'); + return accept + ? utils.parseAccept(accept) + : []; +}); + +/** + * Return an array of Accepted languages + * ordered from highest quality to lowest. + * + * Examples: + * + * Accept-Language: en;q=.5, en-us + * ['en-us', 'en'] + * + * @return {Array} + * @api public + */ + +req.__defineGetter__('acceptedLanguages', function(){ + var accept = this.get('Accept-Language'); + return accept + ? utils + .parseQuality(accept) + .map(function(obj){ + return obj.value; + }) + : []; +}); + +/** + * Return an array of Accepted charsets + * ordered from highest quality to lowest. + * + * Examples: + * + * Accept-Charset: iso-8859-5;q=.2, unicode-1-1;q=0.8 + * ['unicode-1-1', 'iso-8859-5'] + * + * @return {Array} + * @api public + */ + +req.__defineGetter__('acceptedCharsets', function(){ + var accept = this.get('Accept-Charset'); + return accept + ? utils + .parseQuality(accept) + .map(function(obj){ + return obj.value; + }) + : []; +}); + +/** + * Return the value of param `name` when present or `defaultValue`. + * + * - Checks route placeholders, ex: _/user/:id_ + * - Checks body params, ex: id=12, {"id":12} + * - Checks query string params, ex: ?id=12 + * + * To utilize request bodies, `req.body` + * should be an object. This can be done by using + * the `connect.bodyParser()` middleware. + * + * @param {String} name + * @param {Mixed} defaultValue + * @return {String} + * @api public + */ + +req.param = function(name, defaultValue){ + var params = this.params || {}; + var body = this.body || {}; + var query = this.query || {}; + if (null != params[name] && params.hasOwnProperty(name)) return params[name]; + if (null != body[name]) return body[name]; + if (null != query[name]) return query[name]; + return defaultValue; +}; + +/** + * Check if the incoming request contains the "Content-Type" + * header field, and it contains the give mime `type`. + * + * Examples: + * + * // With Content-Type: text/html; charset=utf-8 + * req.is('html'); + * req.is('text/html'); + * req.is('text/*'); + * // => true + * + * // When Content-Type is application/json + * req.is('json'); + * req.is('application/json'); + * req.is('application/*'); + * // => true + * + * req.is('html'); + * // => false + * + * @param {String} type + * @return {Boolean} + * @api public + */ + +req.is = function(type){ + var ct = this.get('Content-Type'); + if (!ct) return false; + ct = ct.split(';')[0]; + if (!~type.indexOf('/')) type = mime.lookup(type); + if (~type.indexOf('*')) { + type = type.split('/'); + ct = ct.split('/'); + if ('*' == type[0] && type[1] == ct[1]) return true; + if ('*' == type[1] && type[0] == ct[0]) return true; + return false; + } + return !! ~ct.indexOf(type); +}; + +/** + * Return the protocol string "http" or "https" + * when requested with TLS. When the "trust proxy" + * setting is enabled the "X-Forwarded-Proto" header + * field will be trusted. If you're running behind + * a reverse proxy that supplies https for you this + * may be enabled. + * + * @return {String} + * @api public + */ + +req.__defineGetter__('protocol', function(){ + var trustProxy = this.app.get('trust proxy'); + return this.connection.encrypted + ? 'https' + : trustProxy + ? (this.get('X-Forwarded-Proto') || 'http') + : 'http'; +}); + +/** + * Short-hand for: + * + * req.protocol == 'https' + * + * @return {Boolean} + * @api public + */ + +req.__defineGetter__('secure', function(){ + return 'https' == this.protocol; +}); + +/** + * Return the remote address, or when + * "trust proxy" is `true` return + * the upstream addr. + * + * @return {String} + * @api public + */ + +req.__defineGetter__('ip', function(){ + return this.ips[0] || this.connection.remoteAddress; +}); + +/** + * When "trust proxy" is `true`, parse + * the "X-Forwarded-For" ip address list. + * + * For example if the value were "client, proxy1, proxy2" + * you would receive the array `["client", "proxy1", "proxy2"]` + * where "proxy2" is the furthest down-stream. + * + * @return {Array} + * @api public + */ + +req.__defineGetter__('ips', function(){ + var trustProxy = this.app.get('trust proxy'); + var val = this.get('X-Forwarded-For'); + return trustProxy && val + ? val.split(/ *, */) + : []; +}); + +/** + * Return basic auth credentials. + * + * Examples: + * + * // http://tobi:hello@example.com + * req.auth + * // => { username: 'tobi', password: 'hello' } + * + * @return {Object} or undefined + * @api public + */ + +req.__defineGetter__('auth', function(){ + // missing + var auth = this.get('Authorization'); + if (!auth) return; + + // malformed + var parts = auth.split(' '); + if ('basic' != parts[0].toLowerCase()) return; + if (!parts[1]) return; + auth = parts[1]; + + // credentials + auth = new Buffer(auth, 'base64').toString().match(/^([^:]*):(.*)$/); + if (!auth) return; + return { username: auth[1], password: auth[2] }; +}); + +/** + * Return subdomains as an array. + * + * Subdomains are the dot-separated parts of the host before the main domain of + * the app. By default, the domain of the app is assumed to be the last two + * parts of the host. This can be changed by setting "subdomain offset". + * + * For example, if the domain is "tobi.ferrets.example.com": + * If "subdomain offset" is not set, req.subdomains is `["ferrets", "tobi"]`. + * If "subdomain offset" is 3, req.subdomains is `["tobi"]`. + * + * @return {Array} + * @api public + */ + +req.__defineGetter__('subdomains', function(){ + var offset = this.app.get('subdomain offset'); + return this.get('Host') + .split('.') + .reverse() + .slice(offset); +}); + +/** + * Short-hand for `url.parse(req.url).pathname`. + * + * @return {String} + * @api public + */ + +req.__defineGetter__('path', function(){ + return parse(this).pathname; +}); + +/** + * Parse the "Host" header field hostname. + * + * @return {String} + * @api public + */ + +req.__defineGetter__('host', function(){ + return this.get('Host').split(':')[0]; +}); + +/** + * Check if the request is fresh, aka + * Last-Modified and/or the ETag + * still match. + * + * @return {Boolean} + * @api public + */ + +req.__defineGetter__('fresh', function(){ + var method = this.method; + var s = this.res.statusCode; + + // GET or HEAD for weak freshness validation only + if ('GET' != method && 'HEAD' != method) return false; + + // 2xx or 304 as per rfc2616 14.26 + if ((s >= 200 && s < 300) || 304 == s) { + return fresh(this.headers, this.res._headers); + } + + return false; +}); + +/** + * Check if the request is stale, aka + * "Last-Modified" and / or the "ETag" for the + * resource has changed. + * + * @return {Boolean} + * @api public + */ + +req.__defineGetter__('stale', function(){ + return !this.fresh; +}); + +/** + * Check if the request was an _XMLHttpRequest_. + * + * @return {Boolean} + * @api public + */ + +req.__defineGetter__('xhr', function(){ + var val = this.get('X-Requested-With') || ''; + return 'xmlhttprequest' == val.toLowerCase(); +}); diff --git a/node_modules/express/lib/response.js b/node_modules/express/lib/response.js new file mode 100644 index 0000000..2b66c88 --- /dev/null +++ b/node_modules/express/lib/response.js @@ -0,0 +1,754 @@ +/** + * Module dependencies. + */ + +var http = require('http') + , path = require('path') + , connect = require('connect') + , utils = connect.utils + , sign = require('cookie-signature').sign + , normalizeType = require('./utils').normalizeType + , normalizeTypes = require('./utils').normalizeTypes + , etag = require('./utils').etag + , statusCodes = http.STATUS_CODES + , cookie = require('cookie') + , send = require('send') + , mime = connect.mime + , basename = path.basename + , extname = path.extname + , join = path.join; + +/** + * Response prototype. + */ + +var res = module.exports = { + __proto__: http.ServerResponse.prototype +}; + +/** + * Set status `code`. + * + * @param {Number} code + * @return {ServerResponse} + * @api public + */ + +res.status = function(code){ + this.statusCode = code; + return this; +}; + +/** + * Set Link header field with the given `links`. + * + * Examples: + * + * res.links({ + * next: 'http://api.example.com/users?page=2', + * last: 'http://api.example.com/users?page=5' + * }); + * + * @param {Object} links + * @return {ServerResponse} + * @api public + */ + +res.links = function(links){ + return this.set('Link', Object.keys(links).map(function(rel){ + return '<' + links[rel] + '>; rel="' + rel + '"'; + }).join(', ')); +}; + +/** + * Send a response. + * + * Examples: + * + * res.send(new Buffer('wahoo')); + * res.send({ some: 'json' }); + * res.send('

some html

'); + * res.send(404, 'Sorry, cant find that'); + * res.send(404); + * + * @param {Mixed} body or status + * @param {Mixed} body + * @return {ServerResponse} + * @api public + */ + +res.send = function(body){ + var req = this.req + , head = 'HEAD' == req.method + , len; + + // allow status / body + if (2 == arguments.length) { + // res.send(body, status) backwards compat + if ('number' != typeof body && 'number' == typeof arguments[1]) { + this.statusCode = arguments[1]; + } else { + this.statusCode = body; + body = arguments[1]; + } + } + + switch (typeof body) { + // response status + case 'number': + this.get('Content-Type') || this.type('txt'); + this.statusCode = body; + body = http.STATUS_CODES[body]; + break; + // string defaulting to html + case 'string': + if (!this.get('Content-Type')) { + this.charset = this.charset || 'utf-8'; + this.type('html'); + } + break; + case 'boolean': + case 'object': + if (null == body) { + body = ''; + } else if (Buffer.isBuffer(body)) { + this.get('Content-Type') || this.type('bin'); + } else { + return this.json(body); + } + break; + } + + // populate Content-Length + if (undefined !== body && !this.get('Content-Length')) { + this.set('Content-Length', len = Buffer.isBuffer(body) + ? body.length + : Buffer.byteLength(body)); + } + + // ETag support + // TODO: W/ support + if (len > 1024) { + if (!this.get('ETag')) { + this.set('ETag', etag(body)); + } + } + + // freshness + if (req.fresh) this.statusCode = 304; + + // strip irrelevant headers + if (204 == this.statusCode || 304 == this.statusCode) { + this.removeHeader('Content-Type'); + this.removeHeader('Content-Length'); + this.removeHeader('Transfer-Encoding'); + body = ''; + } + + // respond + this.end(head ? null : body); + return this; +}; + +/** + * Send JSON response. + * + * Examples: + * + * res.json(null); + * res.json({ user: 'tj' }); + * res.json(500, 'oh noes!'); + * res.json(404, 'I dont have that'); + * + * @param {Mixed} obj or status + * @param {Mixed} obj + * @return {ServerResponse} + * @api public + */ + +res.json = function(obj){ + // allow status / body + if (2 == arguments.length) { + // res.json(body, status) backwards compat + if ('number' == typeof arguments[1]) { + this.statusCode = arguments[1]; + } else { + this.statusCode = obj; + obj = arguments[1]; + } + } + + // settings + var app = this.app; + var replacer = app.get('json replacer'); + var spaces = app.get('json spaces'); + var body = JSON.stringify(obj, replacer, spaces); + + // content-type + this.charset = this.charset || 'utf-8'; + this.get('Content-Type') || this.set('Content-Type', 'application/json'); + + return this.send(body); +}; + +/** + * Send JSON response with JSONP callback support. + * + * Examples: + * + * res.jsonp(null); + * res.jsonp({ user: 'tj' }); + * res.jsonp(500, 'oh noes!'); + * res.jsonp(404, 'I dont have that'); + * + * @param {Mixed} obj or status + * @param {Mixed} obj + * @return {ServerResponse} + * @api public + */ + +res.jsonp = function(obj){ + // allow status / body + if (2 == arguments.length) { + // res.json(body, status) backwards compat + if ('number' == typeof arguments[1]) { + this.statusCode = arguments[1]; + } else { + this.statusCode = obj; + obj = arguments[1]; + } + } + + // settings + var app = this.app; + var replacer = app.get('json replacer'); + var spaces = app.get('json spaces'); + var body = JSON.stringify(obj, replacer, spaces) + .replace(/\u2028/g, '\\u2028') + .replace(/\u2029/g, '\\u2029'); + var callback = this.req.query[app.get('jsonp callback name')]; + + // content-type + this.charset = this.charset || 'utf-8'; + this.set('Content-Type', 'application/json'); + + // jsonp + if (callback) { + this.set('Content-Type', 'text/javascript'); + var cb = callback.replace(/[^\[\]\w$.]/g, ''); + body = cb + ' && ' + cb + '(' + body + ');'; + } + + return this.send(body); +}; + +/** + * Transfer the file at the given `path`. + * + * Automatically sets the _Content-Type_ response header field. + * The callback `fn(err)` is invoked when the transfer is complete + * or when an error occurs. Be sure to check `res.sentHeader` + * if you wish to attempt responding, as the header and some data + * may have already been transferred. + * + * Options: + * + * - `maxAge` defaulting to 0 + * - `root` root directory for relative filenames + * + * Examples: + * + * The following example illustrates how `res.sendfile()` may + * be used as an alternative for the `static()` middleware for + * dynamic situations. The code backing `res.sendfile()` is actually + * the same code, so HTTP cache support etc is identical. + * + * app.get('/user/:uid/photos/:file', function(req, res){ + * var uid = req.params.uid + * , file = req.params.file; + * + * req.user.mayViewFilesFrom(uid, function(yes){ + * if (yes) { + * res.sendfile('/uploads/' + uid + '/' + file); + * } else { + * res.send(403, 'Sorry! you cant see that.'); + * } + * }); + * }); + * + * @param {String} path + * @param {Object|Function} options or fn + * @param {Function} fn + * @api public + */ + +res.sendfile = function(path, options, fn){ + var self = this + , req = self.req + , next = this.req.next + , options = options || {} + , done; + + // support function as second arg + if ('function' == typeof options) { + fn = options; + options = {}; + } + + // socket errors + req.socket.on('error', error); + + // errors + function error(err) { + if (done) return; + done = true; + + // clean up + cleanup(); + if (!self.headerSent) self.removeHeader('Content-Disposition'); + + // callback available + if (fn) return fn(err); + + // list in limbo if there's no callback + if (self.headerSent) return; + + // delegate + next(err); + } + + // streaming + function stream() { + if (done) return; + cleanup(); + if (fn) self.on('finish', fn); + } + + // cleanup + function cleanup() { + req.socket.removeListener('error', error); + } + + // transfer + var file = send(req, path); + if (options.root) file.root(options.root); + file.maxage(options.maxAge || 0); + file.on('error', error); + file.on('directory', next); + file.on('stream', stream); + file.pipe(this); + this.on('finish', cleanup); +}; + +/** + * Transfer the file at the given `path` as an attachment. + * + * Optionally providing an alternate attachment `filename`, + * and optional callback `fn(err)`. The callback is invoked + * when the data transfer is complete, or when an error has + * ocurred. Be sure to check `res.headerSent` if you plan to respond. + * + * This method uses `res.sendfile()`. + * + * @param {String} path + * @param {String|Function} filename or fn + * @param {Function} fn + * @api public + */ + +res.download = function(path, filename, fn){ + // support function as second arg + if ('function' == typeof filename) { + fn = filename; + filename = null; + } + + filename = filename || path; + this.set('Content-Disposition', 'attachment; filename="' + basename(filename) + '"'); + return this.sendfile(path, fn); +}; + +/** + * Set _Content-Type_ response header with `type` through `mime.lookup()` + * when it does not contain "/", or set the Content-Type to `type` otherwise. + * + * Examples: + * + * res.type('.html'); + * res.type('html'); + * res.type('json'); + * res.type('application/json'); + * res.type('png'); + * + * @param {String} type + * @return {ServerResponse} for chaining + * @api public + */ + +res.contentType = +res.type = function(type){ + return this.set('Content-Type', ~type.indexOf('/') + ? type + : mime.lookup(type)); +}; + +/** + * Respond to the Acceptable formats using an `obj` + * of mime-type callbacks. + * + * This method uses `req.accepted`, an array of + * acceptable types ordered by their quality values. + * When "Accept" is not present the _first_ callback + * is invoked, otherwise the first match is used. When + * no match is performed the server responds with + * 406 "Not Acceptable". + * + * Content-Type is set for you, however if you choose + * you may alter this within the callback using `res.type()` + * or `res.set('Content-Type', ...)`. + * + * res.format({ + * 'text/plain': function(){ + * res.send('hey'); + * }, + * + * 'text/html': function(){ + * res.send('

hey

'); + * }, + * + * 'appliation/json': function(){ + * res.send({ message: 'hey' }); + * } + * }); + * + * In addition to canonicalized MIME types you may + * also use extnames mapped to these types: + * + * res.format({ + * text: function(){ + * res.send('hey'); + * }, + * + * html: function(){ + * res.send('

hey

'); + * }, + * + * json: function(){ + * res.send({ message: 'hey' }); + * } + * }); + * + * By default Express passes an `Error` + * with a `.status` of 406 to `next(err)` + * if a match is not made. If you provide + * a `.default` callback it will be invoked + * instead. + * + * @param {Object} obj + * @return {ServerResponse} for chaining + * @api public + */ + +res.format = function(obj){ + var req = this.req + , next = req.next; + + var fn = obj.default; + if (fn) delete obj.default; + var keys = Object.keys(obj); + + var key = req.accepts(keys); + + this.set('Vary', 'Accept'); + + if (key) { + this.set('Content-Type', normalizeType(key)); + obj[key](req, this, next); + } else if (fn) { + fn(); + } else { + var err = new Error('Not Acceptable'); + err.status = 406; + err.types = normalizeTypes(keys); + next(err); + } + + return this; +}; + +/** + * Set _Content-Disposition_ header to _attachment_ with optional `filename`. + * + * @param {String} filename + * @return {ServerResponse} + * @api public + */ + +res.attachment = function(filename){ + if (filename) this.type(extname(filename)); + this.set('Content-Disposition', filename + ? 'attachment; filename="' + basename(filename) + '"' + : 'attachment'); + return this; +}; + +/** + * Set header `field` to `val`, or pass + * an object of header fields. + * + * Examples: + * + * res.set('Foo', ['bar', 'baz']); + * res.set('Accept', 'application/json'); + * res.set({ Accept: 'text/plain', 'X-API-Key': 'tobi' }); + * + * Aliased as `res.header()`. + * + * @param {String|Object|Array} field + * @param {String} val + * @return {ServerResponse} for chaining + * @api public + */ + +res.set = +res.header = function(field, val){ + if (2 == arguments.length) { + if (Array.isArray(val)) val = val.map(String); + else val = String(val); + this.setHeader(field, val); + } else { + for (var key in field) { + this.set(key, field[key]); + } + } + return this; +}; + +/** + * Get value for header `field`. + * + * @param {String} field + * @return {String} + * @api public + */ + +res.get = function(field){ + return this.getHeader(field); +}; + +/** + * Clear cookie `name`. + * + * @param {String} name + * @param {Object} options + * @param {ServerResponse} for chaining + * @api public + */ + +res.clearCookie = function(name, options){ + var opts = { expires: new Date(1), path: '/' }; + return this.cookie(name, '', options + ? utils.merge(opts, options) + : opts); +}; + +/** + * Set cookie `name` to `val`, with the given `options`. + * + * Options: + * + * - `maxAge` max-age in milliseconds, converted to `expires` + * - `signed` sign the cookie + * - `path` defaults to "/" + * + * Examples: + * + * // "Remember Me" for 15 minutes + * res.cookie('rememberme', '1', { expires: new Date(Date.now() + 900000), httpOnly: true }); + * + * // save as above + * res.cookie('rememberme', '1', { maxAge: 900000, httpOnly: true }) + * + * @param {String} name + * @param {String|Object} val + * @param {Options} options + * @api public + */ + +res.cookie = function(name, val, options){ + options = utils.merge({}, options); + var secret = this.req.secret; + var signed = options.signed; + if (signed && !secret) throw new Error('connect.cookieParser("secret") required for signed cookies'); + if ('object' == typeof val) val = 'j:' + JSON.stringify(val); + if (signed) val = 's:' + sign(val, secret); + if ('maxAge' in options) { + options.expires = new Date(Date.now() + options.maxAge); + options.maxAge /= 1000; + } + if (null == options.path) options.path = '/'; + this.set('Set-Cookie', cookie.serialize(name, String(val), options)); + return this; +}; + + +/** + * Set the location header to `url`. + * + * The given `url` can also be the name of a mapped url, for + * example by default express supports "back" which redirects + * to the _Referrer_ or _Referer_ headers or "/". + * + * Examples: + * + * res.location('/foo/bar').; + * res.location('http://example.com'); + * res.location('../login'); // /blog/post/1 -> /blog/login + * + * Mounting: + * + * When an application is mounted and `res.location()` + * is given a path that does _not_ lead with "/" it becomes + * relative to the mount-point. For example if the application + * is mounted at "/blog", the following would become "/blog/login". + * + * res.location('login'); + * + * While the leading slash would result in a location of "/login": + * + * res.location('/login'); + * + * @param {String} url + * @api public + */ + +res.location = function(url){ + var app = this.app + , req = this.req; + + // setup redirect map + var map = { back: req.get('Referrer') || '/' }; + + // perform redirect + url = map[url] || url; + + // relative + if (!~url.indexOf('://') && 0 != url.indexOf('//')) { + var path = app.path(); + + // relative to path + if ('.' == url[0]) { + url = req.path + '/' + url; + // relative to mount-point + } else if ('/' != url[0]) { + url = path + '/' + url; + } + } + + // Respond + this.set('Location', url); + return this; +}; + +/** + * Redirect to the given `url` with optional response `status` + * defaulting to 302. + * + * The resulting `url` is determined by `res.location()`, so + * it will play nicely with mounted apps, relative paths, + * `"back"` etc. + * + * Examples: + * + * res.redirect('/foo/bar'); + * res.redirect('http://example.com'); + * res.redirect(301, 'http://example.com'); + * res.redirect('http://example.com', 301); + * res.redirect('../login'); // /blog/post/1 -> /blog/login + * + * @param {String} url + * @param {Number} code + * @api public + */ + +res.redirect = function(url){ + var app = this.app + , head = 'HEAD' == this.req.method + , status = 302 + , body; + + // allow status / url + if (2 == arguments.length) { + if ('number' == typeof url) { + status = url; + url = arguments[1]; + } else { + status = arguments[1]; + } + } + + // Set location header + this.location(url); + url = this.get('Location'); + + // Support text/{plain,html} by default + this.format({ + text: function(){ + body = statusCodes[status] + '. Redirecting to ' + encodeURI(url); + }, + + html: function(){ + var u = utils.escape(url); + body = '

' + statusCodes[status] + '. Redirecting to ' + u + '

'; + }, + + default: function(){ + body = ''; + } + }); + + // Respond + this.statusCode = status; + this.set('Content-Length', Buffer.byteLength(body)); + this.end(head ? null : body); +}; + +/** + * Render `view` with the given `options` and optional callback `fn`. + * When a callback function is given a response will _not_ be made + * automatically, otherwise a response of _200_ and _text/html_ is given. + * + * Options: + * + * - `cache` boolean hinting to the engine it should cache + * - `filename` filename of the view being rendered + * + * @param {String} view + * @param {Object|Function} options or callback function + * @param {Function} fn + * @api public + */ + +res.render = function(view, options, fn){ + var self = this + , options = options || {} + , req = this.req + , app = req.app; + + // support callback function as second arg + if ('function' == typeof options) { + fn = options, options = {}; + } + + // merge res.locals + options._locals = self.locals; + + // default callback to respond + fn = fn || function(err, str){ + if (err) return req.next(err); + self.send(str); + }; + + // render + app.render(view, options, fn); +}; diff --git a/node_modules/express/lib/router/index.js b/node_modules/express/lib/router/index.js new file mode 100644 index 0000000..662dc29 --- /dev/null +++ b/node_modules/express/lib/router/index.js @@ -0,0 +1,273 @@ +/** + * Module dependencies. + */ + +var Route = require('./route') + , utils = require('../utils') + , methods = require('methods') + , debug = require('debug')('express:router') + , parse = require('connect').utils.parseUrl; + +/** + * Expose `Router` constructor. + */ + +exports = module.exports = Router; + +/** + * Initialize a new `Router` with the given `options`. + * + * @param {Object} options + * @api private + */ + +function Router(options) { + options = options || {}; + var self = this; + this.map = {}; + this.params = {}; + this._params = []; + this.caseSensitive = options.caseSensitive; + this.strict = options.strict; + this.middleware = function router(req, res, next){ + self._dispatch(req, res, next); + }; +} + +/** + * Register a param callback `fn` for the given `name`. + * + * @param {String|Function} name + * @param {Function} fn + * @return {Router} for chaining + * @api public + */ + +Router.prototype.param = function(name, fn){ + // param logic + if ('function' == typeof name) { + this._params.push(name); + return; + } + + // apply param functions + var params = this._params + , len = params.length + , ret; + + for (var i = 0; i < len; ++i) { + if (ret = params[i](name, fn)) { + fn = ret; + } + } + + // ensure we end up with a + // middleware function + if ('function' != typeof fn) { + throw new Error('invalid param() call for ' + name + ', got ' + fn); + } + + (this.params[name] = this.params[name] || []).push(fn); + return this; +}; + +/** + * Route dispatcher aka the route "middleware". + * + * @param {IncomingMessage} req + * @param {ServerResponse} res + * @param {Function} next + * @api private + */ + +Router.prototype._dispatch = function(req, res, next){ + var params = this.params + , self = this; + + debug('dispatching %s %s (%s)', req.method, req.url, req.originalUrl); + + // route dispatch + (function pass(i, err){ + var paramCallbacks + , paramIndex = 0 + , paramVal + , route + , keys + , key; + + // match next route + function nextRoute(err) { + pass(req._route_index + 1, err); + } + + // match route + req.route = route = self.matchRequest(req, i); + + // no route + if (!route) return next(err); + debug('matched %s %s', route.method, route.path); + + // we have a route + // start at param 0 + req.params = route.params; + keys = route.keys; + i = 0; + + // param callbacks + function param(err) { + paramIndex = 0; + key = keys[i++]; + paramVal = key && req.params[key.name]; + paramCallbacks = key && params[key.name]; + + try { + if ('route' == err) { + nextRoute(); + } else if (err) { + i = 0; + callbacks(err); + } else if (paramCallbacks && undefined !== paramVal) { + paramCallback(); + } else if (key) { + param(); + } else { + i = 0; + callbacks(); + } + } catch (err) { + param(err); + } + }; + + param(err); + + // single param callbacks + function paramCallback(err) { + var fn = paramCallbacks[paramIndex++]; + if (err || !fn) return param(err); + fn(req, res, paramCallback, paramVal, key.name); + } + + // invoke route callbacks + function callbacks(err) { + var fn = route.callbacks[i++]; + try { + if ('route' == err) { + nextRoute(); + } else if (err && fn) { + if (fn.length < 4) return callbacks(err); + fn(err, req, res, callbacks); + } else if (fn) { + if (fn.length < 4) return fn(req, res, callbacks); + callbacks(); + } else { + nextRoute(err); + } + } catch (err) { + callbacks(err); + } + } + })(0); +}; + +/** + * Attempt to match a route for `req` + * with optional starting index of `i` + * defaulting to 0. + * + * @param {IncomingMessage} req + * @param {Number} i + * @return {Route} + * @api private + */ + +Router.prototype.matchRequest = function(req, i, head){ + var method = req.method.toLowerCase() + , url = parse(req) + , path = url.pathname + , routes = this.map + , i = i || 0 + , route; + + // HEAD support + if (!head && 'head' == method) { + route = this.matchRequest(req, i, true); + if (route) return route; + method = 'get'; + } + + // routes for this method + if (routes = routes[method]) { + + // matching routes + for (var len = routes.length; i < len; ++i) { + route = routes[i]; + if (route.match(path)) { + req._route_index = i; + return route; + } + } + } +}; + +/** + * Attempt to match a route for `method` + * and `url` with optional starting + * index of `i` defaulting to 0. + * + * @param {String} method + * @param {String} url + * @param {Number} i + * @return {Route} + * @api private + */ + +Router.prototype.match = function(method, url, i, head){ + var req = { method: method, url: url }; + return this.matchRequest(req, i, head); +}; + +/** + * Route `method`, `path`, and one or more callbacks. + * + * @param {String} method + * @param {String} path + * @param {Function} callback... + * @return {Router} for chaining + * @api private + */ + +Router.prototype.route = function(method, path, callbacks){ + var method = method.toLowerCase() + , callbacks = utils.flatten([].slice.call(arguments, 2)); + + // ensure path was given + if (!path) throw new Error('Router#' + method + '() requires a path'); + + // ensure all callbacks are functions + callbacks.forEach(function(fn, i){ + if ('function' == typeof fn) return; + var type = {}.toString.call(fn); + var msg = '.' + method + '() requires callback functions but got a ' + type; + throw new Error(msg); + }); + + // create the route + debug('defined %s %s', method, path); + var route = new Route(method, path, callbacks, { + sensitive: this.caseSensitive, + strict: this.strict + }); + + // add it + (this.map[method] = this.map[method] || []).push(route); + return this; +}; + +methods.forEach(function(method){ + Router.prototype[method] = function(path){ + var args = [method].concat([].slice.call(arguments)); + this.route.apply(this, args); + return this; + }; +}); diff --git a/node_modules/express/lib/router/route.js b/node_modules/express/lib/router/route.js new file mode 100644 index 0000000..c1a0b5e --- /dev/null +++ b/node_modules/express/lib/router/route.js @@ -0,0 +1,72 @@ + +/** + * Module dependencies. + */ + +var utils = require('../utils'); + +/** + * Expose `Route`. + */ + +module.exports = Route; + +/** + * Initialize `Route` with the given HTTP `method`, `path`, + * and an array of `callbacks` and `options`. + * + * Options: + * + * - `sensitive` enable case-sensitive routes + * - `strict` enable strict matching for trailing slashes + * + * @param {String} method + * @param {String} path + * @param {Array} callbacks + * @param {Object} options. + * @api private + */ + +function Route(method, path, callbacks, options) { + options = options || {}; + this.path = path; + this.method = method; + this.callbacks = callbacks; + this.regexp = utils.pathRegexp(path + , this.keys = [] + , options.sensitive + , options.strict); +} + +/** + * Check if this route matches `path`, if so + * populate `.params`. + * + * @param {String} path + * @return {Boolean} + * @api private + */ + +Route.prototype.match = function(path){ + var keys = this.keys + , params = this.params = [] + , m = this.regexp.exec(path); + + if (!m) return false; + + for (var i = 1, len = m.length; i < len; ++i) { + var key = keys[i - 1]; + + var val = 'string' == typeof m[i] + ? decodeURIComponent(m[i]) + : m[i]; + + if (key) { + params[key.name] = val; + } else { + params.push(val); + } + } + + return true; +}; diff --git a/node_modules/express/lib/utils.js b/node_modules/express/lib/utils.js new file mode 100644 index 0000000..8b1da1a --- /dev/null +++ b/node_modules/express/lib/utils.js @@ -0,0 +1,282 @@ + +/** + * Module dependencies. + */ + +var mime = require('connect').mime + , crc32 = require('buffer-crc32'); + +/** + * Return ETag for `body`. + * + * @param {String|Buffer} body + * @return {String} + * @api private + */ + +exports.etag = function(body){ + return '"' + crc32.signed(body) + '"'; +}; + +/** + * Make `locals()` bound to the given `obj`. + * + * This is used for `app.locals` and `res.locals`. + * + * @param {Object} obj + * @return {Function} + * @api private + */ + +exports.locals = function(obj){ + obj.viewCallbacks = obj.viewCallbacks || []; + + function locals(obj){ + for (var key in obj) locals[key] = obj[key]; + return obj; + }; + + return locals; +}; + +/** + * Check if `path` looks absolute. + * + * @param {String} path + * @return {Boolean} + * @api private + */ + +exports.isAbsolute = function(path){ + if ('/' == path[0]) return true; + if (':' == path[1] && '\\' == path[2]) return true; +}; + +/** + * Flatten the given `arr`. + * + * @param {Array} arr + * @return {Array} + * @api private + */ + +exports.flatten = function(arr, ret){ + var ret = ret || [] + , len = arr.length; + for (var i = 0; i < len; ++i) { + if (Array.isArray(arr[i])) { + exports.flatten(arr[i], ret); + } else { + ret.push(arr[i]); + } + } + return ret; +}; + +/** + * Normalize the given `type`, for example "html" becomes "text/html". + * + * @param {String} type + * @return {String} + * @api private + */ + +exports.normalizeType = function(type){ + return ~type.indexOf('/') ? type : mime.lookup(type); +}; + +/** + * Normalize `types`, for example "html" becomes "text/html". + * + * @param {Array} types + * @return {Array} + * @api private + */ + +exports.normalizeTypes = function(types){ + var ret = []; + + for (var i = 0; i < types.length; ++i) { + ret.push(~types[i].indexOf('/') + ? types[i] + : mime.lookup(types[i])); + } + + return ret; +}; + +/** + * Return the acceptable type in `types`, if any. + * + * @param {Array} types + * @param {String} str + * @return {String} + * @api private + */ + +exports.acceptsArray = function(types, str){ + // accept anything when Accept is not present + if (!str) return types[0]; + + // parse + var accepted = exports.parseAccept(str) + , normalized = exports.normalizeTypes(types) + , len = accepted.length; + + for (var i = 0; i < len; ++i) { + for (var j = 0, jlen = types.length; j < jlen; ++j) { + if (exports.accept(normalized[j].split('/'), accepted[i])) { + return types[j]; + } + } + } +}; + +/** + * Check if `type(s)` are acceptable based on + * the given `str`. + * + * @param {String|Array} type(s) + * @param {String} str + * @return {Boolean|String} + * @api private + */ + +exports.accepts = function(type, str){ + if ('string' == typeof type) type = type.split(/ *, */); + return exports.acceptsArray(type, str); +}; + +/** + * Check if `type` array is acceptable for `other`. + * + * @param {Array} type + * @param {Object} other + * @return {Boolean} + * @api private + */ + +exports.accept = function(type, other){ + return (type[0] == other.type || '*' == other.type) + && (type[1] == other.subtype || '*' == other.subtype); +}; + +/** + * Parse accept `str`, returning + * an array objects containing + * `.type` and `.subtype` along + * with the values provided by + * `parseQuality()`. + * + * @param {Type} name + * @return {Type} + * @api private + */ + +exports.parseAccept = function(str){ + return exports + .parseQuality(str) + .map(function(obj){ + var parts = obj.value.split('/'); + obj.type = parts[0]; + obj.subtype = parts[1]; + return obj; + }); +}; + +/** + * Parse quality `str`, returning an + * array of objects with `.value` and + * `.quality`. + * + * @param {Type} name + * @return {Type} + * @api private + */ + +exports.parseQuality = function(str){ + return str + .split(/ *, */) + .map(quality) + .filter(function(obj){ + return obj.quality; + }) + .sort(function(a, b){ + return b.quality - a.quality; + }); +}; + +/** + * Parse quality `str` returning an + * object with `.value` and `.quality`. + * + * @param {String} str + * @return {Object} + * @api private + */ + +function quality(str) { + var parts = str.split(/ *; */) + , val = parts[0]; + + var q = parts[1] + ? parseFloat(parts[1].split(/ *= */)[1]) + : 1; + + return { value: val, quality: q }; +} + +/** + * Escape special characters in the given string of html. + * + * @param {String} html + * @return {String} + * @api private + */ + +exports.escape = function(html) { + return String(html) + .replace(/&/g, '&') + .replace(/"/g, '"') + .replace(//g, '>'); +}; + +/** + * Normalize the given path string, + * returning a regular expression. + * + * An empty array should be passed, + * which will contain the placeholder + * key names. For example "/user/:id" will + * then contain ["id"]. + * + * @param {String|RegExp|Array} path + * @param {Array} keys + * @param {Boolean} sensitive + * @param {Boolean} strict + * @return {RegExp} + * @api private + */ + +exports.pathRegexp = function(path, keys, sensitive, strict) { + if (path instanceof RegExp) return path; + if (Array.isArray(path)) path = '(' + path.join('|') + ')'; + path = path + .concat(strict ? '' : '/?') + .replace(/\/\(/g, '(?:/') + .replace(/(\/)?(\.)?:(\w+)(?:(\(.*?\)))?(\?)?(\*)?/g, function(_, slash, format, key, capture, optional, star){ + keys.push({ name: key, optional: !! optional }); + slash = slash || ''; + return '' + + (optional ? '' : slash) + + '(?:' + + (optional ? slash : '') + + (format || '') + (capture || (format && '([^/.]+?)' || '([^/]+?)')) + ')' + + (optional || '') + + (star ? '(/*)?' : ''); + }) + .replace(/([\/.])/g, '\\$1') + .replace(/\*/g, '(.*)'); + return new RegExp('^' + path + '$', sensitive ? '' : 'i'); +} \ No newline at end of file diff --git a/node_modules/express/lib/view.js b/node_modules/express/lib/view.js new file mode 100644 index 0000000..c7399a4 --- /dev/null +++ b/node_modules/express/lib/view.js @@ -0,0 +1,76 @@ +/** + * Module dependencies. + */ + +var path = require('path') + , fs = require('fs') + , utils = require('./utils') + , dirname = path.dirname + , basename = path.basename + , extname = path.extname + , exists = fs.existsSync || path.existsSync + , join = path.join; + +/** + * Expose `View`. + */ + +module.exports = View; + +/** + * Initialize a new `View` with the given `name`. + * + * Options: + * + * - `defaultEngine` the default template engine name + * - `engines` template engine require() cache + * - `root` root path for view lookup + * + * @param {String} name + * @param {Object} options + * @api private + */ + +function View(name, options) { + options = options || {}; + this.name = name; + this.root = options.root; + var engines = options.engines; + this.defaultEngine = options.defaultEngine; + var ext = this.ext = extname(name); + if (!ext) name += (ext = this.ext = ('.' != this.defaultEngine[0] ? '.' : '') + this.defaultEngine); + this.engine = engines[ext] || (engines[ext] = require(ext.slice(1)).__express); + this.path = this.lookup(name); +} + +/** + * Lookup view by the given `path` + * + * @param {String} path + * @return {String} + * @api private + */ + +View.prototype.lookup = function(path){ + var ext = this.ext; + + // . + if (!utils.isAbsolute(path)) path = join(this.root, path); + if (exists(path)) return path; + + // /index. + path = join(dirname(path), basename(path, ext), 'index' + ext); + if (exists(path)) return path; +}; + +/** + * Render with the given `options` and callback `fn(err, str)`. + * + * @param {Object} options + * @param {Function} fn + * @api private + */ + +View.prototype.render = function(options, fn){ + this.engine(this.path, options, fn); +}; diff --git a/node_modules/express/node_modules/buffer-crc32/.npmignore b/node_modules/express/node_modules/buffer-crc32/.npmignore new file mode 100644 index 0000000..b512c09 --- /dev/null +++ b/node_modules/express/node_modules/buffer-crc32/.npmignore @@ -0,0 +1 @@ +node_modules \ No newline at end of file diff --git a/node_modules/express/node_modules/buffer-crc32/.travis.yml b/node_modules/express/node_modules/buffer-crc32/.travis.yml new file mode 100644 index 0000000..7a902e8 --- /dev/null +++ b/node_modules/express/node_modules/buffer-crc32/.travis.yml @@ -0,0 +1,8 @@ +language: node_js +node_js: + - 0.6 + - 0.8 +notifications: + email: + recipients: + - brianloveswords@gmail.com \ No newline at end of file diff --git a/node_modules/express/node_modules/buffer-crc32/README.md b/node_modules/express/node_modules/buffer-crc32/README.md new file mode 100644 index 0000000..4ad5d64 --- /dev/null +++ b/node_modules/express/node_modules/buffer-crc32/README.md @@ -0,0 +1,33 @@ +# buffer-crc32 + +[![Build Status](https://secure.travis-ci.org/brianloveswords/buffer-crc32.png?branch=master)](http://travis-ci.org/brianloveswords/buffer-crc32) + +crc32 that works with binary data and fancy character sets, outputs +buffer, signed or unsigned data and has tests. + +Derived from the sample CRC implementation in the PNG specification: http://www.w3.org/TR/PNG/#D-CRCAppendix + +# install +``` +npm install buffer-crc32 +``` + +# example +```js +var crc32 = require('buffer-crc32'); +// works with buffers +var buf = Buffer([[0x00, 0x73, 0x75, 0x70, 0x20, 0x62, 0x72, 0x6f, 0x00]) +crc32(buf) // -> + +// has convenience methods for getting signed or unsigned ints +crc32.signed(buf) // -> -1805997238 +crc32.unsigned(buf) // -> 2488970058 + +// will cast to buffer if given a string, so you can +// directly use foreign characters safely +crc32('自動販売機') // -> +``` + +# tests +This was tested against the output of zlib's crc32 method. You can run +the tests with`npm test` (requires tap) diff --git a/node_modules/express/node_modules/buffer-crc32/index.js b/node_modules/express/node_modules/buffer-crc32/index.js new file mode 100644 index 0000000..ab0e19e --- /dev/null +++ b/node_modules/express/node_modules/buffer-crc32/index.js @@ -0,0 +1,84 @@ +var Buffer = require('buffer').Buffer; + +var CRC_TABLE = [ + 0x00000000, 0x77073096, 0xee0e612c, 0x990951ba, 0x076dc419, + 0x706af48f, 0xe963a535, 0x9e6495a3, 0x0edb8832, 0x79dcb8a4, + 0xe0d5e91e, 0x97d2d988, 0x09b64c2b, 0x7eb17cbd, 0xe7b82d07, + 0x90bf1d91, 0x1db71064, 0x6ab020f2, 0xf3b97148, 0x84be41de, + 0x1adad47d, 0x6ddde4eb, 0xf4d4b551, 0x83d385c7, 0x136c9856, + 0x646ba8c0, 0xfd62f97a, 0x8a65c9ec, 0x14015c4f, 0x63066cd9, + 0xfa0f3d63, 0x8d080df5, 0x3b6e20c8, 0x4c69105e, 0xd56041e4, + 0xa2677172, 0x3c03e4d1, 0x4b04d447, 0xd20d85fd, 0xa50ab56b, + 0x35b5a8fa, 0x42b2986c, 0xdbbbc9d6, 0xacbcf940, 0x32d86ce3, + 0x45df5c75, 0xdcd60dcf, 0xabd13d59, 0x26d930ac, 0x51de003a, + 0xc8d75180, 0xbfd06116, 0x21b4f4b5, 0x56b3c423, 0xcfba9599, + 0xb8bda50f, 0x2802b89e, 0x5f058808, 0xc60cd9b2, 0xb10be924, + 0x2f6f7c87, 0x58684c11, 0xc1611dab, 0xb6662d3d, 0x76dc4190, + 0x01db7106, 0x98d220bc, 0xefd5102a, 0x71b18589, 0x06b6b51f, + 0x9fbfe4a5, 0xe8b8d433, 0x7807c9a2, 0x0f00f934, 0x9609a88e, + 0xe10e9818, 0x7f6a0dbb, 0x086d3d2d, 0x91646c97, 0xe6635c01, + 0x6b6b51f4, 0x1c6c6162, 0x856530d8, 0xf262004e, 0x6c0695ed, + 0x1b01a57b, 0x8208f4c1, 0xf50fc457, 0x65b0d9c6, 0x12b7e950, + 0x8bbeb8ea, 0xfcb9887c, 0x62dd1ddf, 0x15da2d49, 0x8cd37cf3, + 0xfbd44c65, 0x4db26158, 0x3ab551ce, 0xa3bc0074, 0xd4bb30e2, + 0x4adfa541, 0x3dd895d7, 0xa4d1c46d, 0xd3d6f4fb, 0x4369e96a, + 0x346ed9fc, 0xad678846, 0xda60b8d0, 0x44042d73, 0x33031de5, + 0xaa0a4c5f, 0xdd0d7cc9, 0x5005713c, 0x270241aa, 0xbe0b1010, + 0xc90c2086, 0x5768b525, 0x206f85b3, 0xb966d409, 0xce61e49f, + 0x5edef90e, 0x29d9c998, 0xb0d09822, 0xc7d7a8b4, 0x59b33d17, + 0x2eb40d81, 0xb7bd5c3b, 0xc0ba6cad, 0xedb88320, 0x9abfb3b6, + 0x03b6e20c, 0x74b1d29a, 0xead54739, 0x9dd277af, 0x04db2615, + 0x73dc1683, 0xe3630b12, 0x94643b84, 0x0d6d6a3e, 0x7a6a5aa8, + 0xe40ecf0b, 0x9309ff9d, 0x0a00ae27, 0x7d079eb1, 0xf00f9344, + 0x8708a3d2, 0x1e01f268, 0x6906c2fe, 0xf762575d, 0x806567cb, + 0x196c3671, 0x6e6b06e7, 0xfed41b76, 0x89d32be0, 0x10da7a5a, + 0x67dd4acc, 0xf9b9df6f, 0x8ebeeff9, 0x17b7be43, 0x60b08ed5, + 0xd6d6a3e8, 0xa1d1937e, 0x38d8c2c4, 0x4fdff252, 0xd1bb67f1, + 0xa6bc5767, 0x3fb506dd, 0x48b2364b, 0xd80d2bda, 0xaf0a1b4c, + 0x36034af6, 0x41047a60, 0xdf60efc3, 0xa867df55, 0x316e8eef, + 0x4669be79, 0xcb61b38c, 0xbc66831a, 0x256fd2a0, 0x5268e236, + 0xcc0c7795, 0xbb0b4703, 0x220216b9, 0x5505262f, 0xc5ba3bbe, + 0xb2bd0b28, 0x2bb45a92, 0x5cb36a04, 0xc2d7ffa7, 0xb5d0cf31, + 0x2cd99e8b, 0x5bdeae1d, 0x9b64c2b0, 0xec63f226, 0x756aa39c, + 0x026d930a, 0x9c0906a9, 0xeb0e363f, 0x72076785, 0x05005713, + 0x95bf4a82, 0xe2b87a14, 0x7bb12bae, 0x0cb61b38, 0x92d28e9b, + 0xe5d5be0d, 0x7cdcefb7, 0x0bdbdf21, 0x86d3d2d4, 0xf1d4e242, + 0x68ddb3f8, 0x1fda836e, 0x81be16cd, 0xf6b9265b, 0x6fb077e1, + 0x18b74777, 0x88085ae6, 0xff0f6a70, 0x66063bca, 0x11010b5c, + 0x8f659eff, 0xf862ae69, 0x616bffd3, 0x166ccf45, 0xa00ae278, + 0xd70dd2ee, 0x4e048354, 0x3903b3c2, 0xa7672661, 0xd06016f7, + 0x4969474d, 0x3e6e77db, 0xaed16a4a, 0xd9d65adc, 0x40df0b66, + 0x37d83bf0, 0xa9bcae53, 0xdebb9ec5, 0x47b2cf7f, 0x30b5ffe9, + 0xbdbdf21c, 0xcabac28a, 0x53b39330, 0x24b4a3a6, 0xbad03605, + 0xcdd70693, 0x54de5729, 0x23d967bf, 0xb3667a2e, 0xc4614ab8, + 0x5d681b02, 0x2a6f2b94, 0xb40bbe37, 0xc30c8ea1, 0x5a05df1b, + 0x2d02ef8d +]; + +function bufferizeInt(num) { + var tmp = Buffer(4); + tmp.writeInt32BE(num, 0); + return tmp; +} + +function _crc32(buf) { + if (!Buffer.isBuffer(buf)) + buf = Buffer(buf); + var crc = 0xffffffff; + for (var n = 0; n < buf.length; n++) { + crc = CRC_TABLE[(crc ^ buf[n]) & 0xff] ^ (crc >>> 8); + } + return (crc ^ 0xffffffff); +} + +function crc32() { + return bufferizeInt(_crc32.apply(null, arguments)); +} +crc32.signed = function () { + return _crc32.apply(null, arguments); +}; +crc32.unsigned = function () { + return crc32.apply(null, arguments).readUInt32BE(0); +}; + +module.exports = crc32; diff --git a/node_modules/express/node_modules/buffer-crc32/package.json b/node_modules/express/node_modules/buffer-crc32/package.json new file mode 100644 index 0000000..272f8ea --- /dev/null +++ b/node_modules/express/node_modules/buffer-crc32/package.json @@ -0,0 +1,35 @@ +{ + "author": { + "name": "Brian J. Brennan", + "email": "brianloveswords@gmail.com", + "url": "http://bjb.io" + }, + "name": "buffer-crc32", + "description": "A pure javascript CRC32 algorithm that plays nice with binary data", + "version": "0.1.1", + "homepage": "https://github.com/brianloveswords/buffer-crc32", + "repository": { + "type": "git", + "url": "git://github.com/brianloveswords/buffer-crc32.git" + }, + "main": "index.js", + "scripts": { + "test": "./node_modules/.bin/tap tests/*.test.js" + }, + "dependencies": {}, + "devDependencies": { + "tap": "~0.2.5" + }, + "optionalDependencies": {}, + "engines": { + "node": "*" + }, + "readme": "# buffer-crc32\n\n[![Build Status](https://secure.travis-ci.org/brianloveswords/buffer-crc32.png?branch=master)](http://travis-ci.org/brianloveswords/buffer-crc32)\n\ncrc32 that works with binary data and fancy character sets, outputs\nbuffer, signed or unsigned data and has tests.\n\nDerived from the sample CRC implementation in the PNG specification: http://www.w3.org/TR/PNG/#D-CRCAppendix\n\n# install\n```\nnpm install buffer-crc32\n```\n\n# example\n```js\nvar crc32 = require('buffer-crc32');\n// works with buffers\nvar buf = Buffer([[0x00, 0x73, 0x75, 0x70, 0x20, 0x62, 0x72, 0x6f, 0x00])\ncrc32(buf) // -> \n\n// has convenience methods for getting signed or unsigned ints\ncrc32.signed(buf) // -> -1805997238\ncrc32.unsigned(buf) // -> 2488970058\n\n// will cast to buffer if given a string, so you can\n// directly use foreign characters safely\ncrc32('自動販売機') // -> \n```\n\n# tests\nThis was tested against the output of zlib's crc32 method. You can run\nthe tests with`npm test` (requires tap)\n", + "readmeFilename": "README.md", + "_id": "buffer-crc32@0.1.1", + "dist": { + "shasum": "323f6299403bfd34a4c472c5948b89467ed5e980" + }, + "_from": "buffer-crc32@0.1.1", + "_resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.1.1.tgz" +} diff --git a/node_modules/express/node_modules/buffer-crc32/tests/crc.test.js b/node_modules/express/node_modules/buffer-crc32/tests/crc.test.js new file mode 100644 index 0000000..d4767e3 --- /dev/null +++ b/node_modules/express/node_modules/buffer-crc32/tests/crc.test.js @@ -0,0 +1,52 @@ +var crc32 = require('..'); +var test = require('tap').test; + +test('simple crc32 is no problem', function (t) { + var input = Buffer('hey sup bros'); + var expected = Buffer([0x47, 0xfa, 0x55, 0x70]); + t.same(crc32(input), expected); + t.end(); +}); + +test('another simple one', function (t) { + var input = Buffer('IEND'); + var expected = Buffer([0xae, 0x42, 0x60, 0x82]); + t.same(crc32(input), expected); + t.end(); +}); + +test('slightly more complex', function (t) { + var input = Buffer([0x00, 0x00, 0x00]); + var expected = Buffer([0xff, 0x41, 0xd9, 0x12]); + t.same(crc32(input), expected); + t.end(); +}); + +test('complex crc32 gets calculated like a champ', function (t) { + var input = Buffer('शीर्षक'); + var expected = Buffer([0x17, 0xb8, 0xaf, 0xf1]); + t.same(crc32(input), expected); + t.end(); +}); + +test('casts to buffer if necessary', function (t) { + var input = 'शीर्षक'; + var expected = Buffer([0x17, 0xb8, 0xaf, 0xf1]); + t.same(crc32(input), expected); + t.end(); +}); + +test('can do unsigned', function (t) { + var input = 'ham sandwich'; + var expected = -1891873021; + t.same(crc32.signed(input), expected); + t.end(); +}); + +test('can do signed', function (t) { + var input = 'bear sandwich'; + var expected = 3711466352; + t.same(crc32.unsigned(input), expected); + t.end(); +}); + diff --git a/node_modules/express/node_modules/commander/.npmignore b/node_modules/express/node_modules/commander/.npmignore new file mode 100644 index 0000000..f1250e5 --- /dev/null +++ b/node_modules/express/node_modules/commander/.npmignore @@ -0,0 +1,4 @@ +support +test +examples +*.sock diff --git a/node_modules/express/node_modules/commander/.travis.yml b/node_modules/express/node_modules/commander/.travis.yml new file mode 100644 index 0000000..f1d0f13 --- /dev/null +++ b/node_modules/express/node_modules/commander/.travis.yml @@ -0,0 +1,4 @@ +language: node_js +node_js: + - 0.4 + - 0.6 diff --git a/node_modules/express/node_modules/commander/History.md b/node_modules/express/node_modules/commander/History.md new file mode 100644 index 0000000..4961d2e --- /dev/null +++ b/node_modules/express/node_modules/commander/History.md @@ -0,0 +1,107 @@ + +0.6.1 / 2012-06-01 +================== + + * Added: append (yes or no) on confirmation + * Added: allow node.js v0.7.x + +0.6.0 / 2012-04-10 +================== + + * Added `.prompt(obj, callback)` support. Closes #49 + * Added default support to .choose(). Closes #41 + * Fixed the choice example + +0.5.1 / 2011-12-20 +================== + + * Fixed `password()` for recent nodes. Closes #36 + +0.5.0 / 2011-12-04 +================== + + * Added sub-command option support [itay] + +0.4.3 / 2011-12-04 +================== + + * Fixed custom help ordering. Closes #32 + +0.4.2 / 2011-11-24 +================== + + * Added travis support + * Fixed: line-buffered input automatically trimmed. Closes #31 + +0.4.1 / 2011-11-18 +================== + + * Removed listening for "close" on --help + +0.4.0 / 2011-11-15 +================== + + * Added support for `--`. Closes #24 + +0.3.3 / 2011-11-14 +================== + + * Fixed: wait for close event when writing help info [Jerry Hamlet] + +0.3.2 / 2011-11-01 +================== + + * Fixed long flag definitions with values [felixge] + +0.3.1 / 2011-10-31 +================== + + * Changed `--version` short flag to `-V` from `-v` + * Changed `.version()` so it's configurable [felixge] + +0.3.0 / 2011-10-31 +================== + + * Added support for long flags only. Closes #18 + +0.2.1 / 2011-10-24 +================== + + * "node": ">= 0.4.x < 0.7.0". Closes #20 + +0.2.0 / 2011-09-26 +================== + + * Allow for defaults that are not just boolean. Default peassignment only occurs for --no-*, optional, and required arguments. [Jim Isaacs] + +0.1.0 / 2011-08-24 +================== + + * Added support for custom `--help` output + +0.0.5 / 2011-08-18 +================== + + * Changed: when the user enters nothing prompt for password again + * Fixed issue with passwords beginning with numbers [NuckChorris] + +0.0.4 / 2011-08-15 +================== + + * Fixed `Commander#args` + +0.0.3 / 2011-08-15 +================== + + * Added default option value support + +0.0.2 / 2011-08-15 +================== + + * Added mask support to `Command#password(str[, mask], fn)` + * Added `Command#password(str, fn)` + +0.0.1 / 2010-01-03 +================== + + * Initial release diff --git a/node_modules/express/node_modules/commander/Makefile b/node_modules/express/node_modules/commander/Makefile new file mode 100644 index 0000000..0074625 --- /dev/null +++ b/node_modules/express/node_modules/commander/Makefile @@ -0,0 +1,7 @@ + +TESTS = $(shell find test/test.*.js) + +test: + @./test/run $(TESTS) + +.PHONY: test \ No newline at end of file diff --git a/node_modules/express/node_modules/commander/Readme.md b/node_modules/express/node_modules/commander/Readme.md new file mode 100644 index 0000000..b8328c3 --- /dev/null +++ b/node_modules/express/node_modules/commander/Readme.md @@ -0,0 +1,262 @@ +# Commander.js + + The complete solution for [node.js](http://nodejs.org) command-line interfaces, inspired by Ruby's [commander](https://github.com/visionmedia/commander). + + [![Build Status](https://secure.travis-ci.org/visionmedia/commander.js.png)](http://travis-ci.org/visionmedia/commander.js) + +## Installation + + $ npm install commander + +## Option parsing + + Options with commander are defined with the `.option()` method, also serving as documentation for the options. The example below parses args and options from `process.argv`, leaving remaining args as the `program.args` array which were not consumed by options. + +```js +#!/usr/bin/env node + +/** + * Module dependencies. + */ + +var program = require('commander'); + +program + .version('0.0.1') + .option('-p, --peppers', 'Add peppers') + .option('-P, --pineapple', 'Add pineapple') + .option('-b, --bbq', 'Add bbq sauce') + .option('-c, --cheese [type]', 'Add the specified type of cheese [marble]', 'marble') + .parse(process.argv); + +console.log('you ordered a pizza with:'); +if (program.peppers) console.log(' - peppers'); +if (program.pineapple) console.log(' - pineappe'); +if (program.bbq) console.log(' - bbq'); +console.log(' - %s cheese', program.cheese); +``` + + Short flags may be passed as a single arg, for example `-abc` is equivalent to `-a -b -c`. Multi-word options such as "--template-engine" are camel-cased, becoming `program.templateEngine` etc. + +## Automated --help + + The help information is auto-generated based on the information commander already knows about your program, so the following `--help` info is for free: + +``` + $ ./examples/pizza --help + + Usage: pizza [options] + + Options: + + -V, --version output the version number + -p, --peppers Add peppers + -P, --pineapple Add pineappe + -b, --bbq Add bbq sauce + -c, --cheese Add the specified type of cheese [marble] + -h, --help output usage information + +``` + +## Coercion + +```js +function range(val) { + return val.split('..').map(Number); +} + +function list(val) { + return val.split(','); +} + +program + .version('0.0.1') + .usage('[options] ') + .option('-i, --integer ', 'An integer argument', parseInt) + .option('-f, --float ', 'A float argument', parseFloat) + .option('-r, --range ..', 'A range', range) + .option('-l, --list ', 'A list', list) + .option('-o, --optional [value]', 'An optional value') + .parse(process.argv); + +console.log(' int: %j', program.integer); +console.log(' float: %j', program.float); +console.log(' optional: %j', program.optional); +program.range = program.range || []; +console.log(' range: %j..%j', program.range[0], program.range[1]); +console.log(' list: %j', program.list); +console.log(' args: %j', program.args); +``` + +## Custom help + + You can display arbitrary `-h, --help` information + by listening for "--help". Commander will automatically + exit once you are done so that the remainder of your program + does not execute causing undesired behaviours, for example + in the following executable "stuff" will not output when + `--help` is used. + +```js +#!/usr/bin/env node + +/** + * Module dependencies. + */ + +var program = require('../'); + +function list(val) { + return val.split(',').map(Number); +} + +program + .version('0.0.1') + .option('-f, --foo', 'enable some foo') + .option('-b, --bar', 'enable some bar') + .option('-B, --baz', 'enable some baz'); + +// must be before .parse() since +// node's emit() is immediate + +program.on('--help', function(){ + console.log(' Examples:'); + console.log(''); + console.log(' $ custom-help --help'); + console.log(' $ custom-help -h'); + console.log(''); +}); + +program.parse(process.argv); + +console.log('stuff'); +``` + +yielding the following help output: + +``` + +Usage: custom-help [options] + +Options: + + -h, --help output usage information + -V, --version output the version number + -f, --foo enable some foo + -b, --bar enable some bar + -B, --baz enable some baz + +Examples: + + $ custom-help --help + $ custom-help -h + +``` + +## .prompt(msg, fn) + + Single-line prompt: + +```js +program.prompt('name: ', function(name){ + console.log('hi %s', name); +}); +``` + + Multi-line prompt: + +```js +program.prompt('description:', function(name){ + console.log('hi %s', name); +}); +``` + + Coercion: + +```js +program.prompt('Age: ', Number, function(age){ + console.log('age: %j', age); +}); +``` + +```js +program.prompt('Birthdate: ', Date, function(date){ + console.log('date: %s', date); +}); +``` + +## .password(msg[, mask], fn) + +Prompt for password without echoing: + +```js +program.password('Password: ', function(pass){ + console.log('got "%s"', pass); + process.stdin.destroy(); +}); +``` + +Prompt for password with mask char "*": + +```js +program.password('Password: ', '*', function(pass){ + console.log('got "%s"', pass); + process.stdin.destroy(); +}); +``` + +## .confirm(msg, fn) + + Confirm with the given `msg`: + +```js +program.confirm('continue? ', function(ok){ + console.log(' got %j', ok); +}); +``` + +## .choose(list, fn) + + Let the user choose from a `list`: + +```js +var list = ['tobi', 'loki', 'jane', 'manny', 'luna']; + +console.log('Choose the coolest pet:'); +program.choose(list, function(i){ + console.log('you chose %d "%s"', i, list[i]); +}); +``` + +## Links + + - [API documentation](http://visionmedia.github.com/commander.js/) + - [ascii tables](https://github.com/LearnBoost/cli-table) + - [progress bars](https://github.com/visionmedia/node-progress) + - [more progress bars](https://github.com/substack/node-multimeter) + - [examples](https://github.com/visionmedia/commander.js/tree/master/examples) + +## License + +(The MIT License) + +Copyright (c) 2011 TJ Holowaychuk <tj@vision-media.ca> + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +'Software'), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. \ No newline at end of file diff --git a/node_modules/express/node_modules/commander/index.js b/node_modules/express/node_modules/commander/index.js new file mode 100644 index 0000000..06ec1e4 --- /dev/null +++ b/node_modules/express/node_modules/commander/index.js @@ -0,0 +1,2 @@ + +module.exports = require('./lib/commander'); \ No newline at end of file diff --git a/node_modules/express/node_modules/commander/lib/commander.js b/node_modules/express/node_modules/commander/lib/commander.js new file mode 100644 index 0000000..5ba87eb --- /dev/null +++ b/node_modules/express/node_modules/commander/lib/commander.js @@ -0,0 +1,1026 @@ + +/*! + * commander + * Copyright(c) 2011 TJ Holowaychuk + * MIT Licensed + */ + +/** + * Module dependencies. + */ + +var EventEmitter = require('events').EventEmitter + , path = require('path') + , tty = require('tty') + , basename = path.basename; + +/** + * Expose the root command. + */ + +exports = module.exports = new Command; + +/** + * Expose `Command`. + */ + +exports.Command = Command; + +/** + * Expose `Option`. + */ + +exports.Option = Option; + +/** + * Initialize a new `Option` with the given `flags` and `description`. + * + * @param {String} flags + * @param {String} description + * @api public + */ + +function Option(flags, description) { + this.flags = flags; + this.required = ~flags.indexOf('<'); + this.optional = ~flags.indexOf('['); + this.bool = !~flags.indexOf('-no-'); + flags = flags.split(/[ ,|]+/); + if (flags.length > 1 && !/^[[<]/.test(flags[1])) this.short = flags.shift(); + this.long = flags.shift(); + this.description = description; +} + +/** + * Return option name. + * + * @return {String} + * @api private + */ + +Option.prototype.name = function(){ + return this.long + .replace('--', '') + .replace('no-', ''); +}; + +/** + * Check if `arg` matches the short or long flag. + * + * @param {String} arg + * @return {Boolean} + * @api private + */ + +Option.prototype.is = function(arg){ + return arg == this.short + || arg == this.long; +}; + +/** + * Initialize a new `Command`. + * + * @param {String} name + * @api public + */ + +function Command(name) { + this.commands = []; + this.options = []; + this.args = []; + this.name = name; +} + +/** + * Inherit from `EventEmitter.prototype`. + */ + +Command.prototype.__proto__ = EventEmitter.prototype; + +/** + * Add command `name`. + * + * The `.action()` callback is invoked when the + * command `name` is specified via __ARGV__, + * and the remaining arguments are applied to the + * function for access. + * + * When the `name` is "*" an un-matched command + * will be passed as the first arg, followed by + * the rest of __ARGV__ remaining. + * + * Examples: + * + * program + * .version('0.0.1') + * .option('-C, --chdir ', 'change the working directory') + * .option('-c, --config ', 'set config path. defaults to ./deploy.conf') + * .option('-T, --no-tests', 'ignore test hook') + * + * program + * .command('setup') + * .description('run remote setup commands') + * .action(function(){ + * console.log('setup'); + * }); + * + * program + * .command('exec ') + * .description('run the given remote command') + * .action(function(cmd){ + * console.log('exec "%s"', cmd); + * }); + * + * program + * .command('*') + * .description('deploy the given env') + * .action(function(env){ + * console.log('deploying "%s"', env); + * }); + * + * program.parse(process.argv); + * + * @param {String} name + * @return {Command} the new command + * @api public + */ + +Command.prototype.command = function(name){ + var args = name.split(/ +/); + var cmd = new Command(args.shift()); + this.commands.push(cmd); + cmd.parseExpectedArgs(args); + cmd.parent = this; + return cmd; +}; + +/** + * Parse expected `args`. + * + * For example `["[type]"]` becomes `[{ required: false, name: 'type' }]`. + * + * @param {Array} args + * @return {Command} for chaining + * @api public + */ + +Command.prototype.parseExpectedArgs = function(args){ + if (!args.length) return; + var self = this; + args.forEach(function(arg){ + switch (arg[0]) { + case '<': + self.args.push({ required: true, name: arg.slice(1, -1) }); + break; + case '[': + self.args.push({ required: false, name: arg.slice(1, -1) }); + break; + } + }); + return this; +}; + +/** + * Register callback `fn` for the command. + * + * Examples: + * + * program + * .command('help') + * .description('display verbose help') + * .action(function(){ + * // output help here + * }); + * + * @param {Function} fn + * @return {Command} for chaining + * @api public + */ + +Command.prototype.action = function(fn){ + var self = this; + this.parent.on(this.name, function(args, unknown){ + // Parse any so-far unknown options + unknown = unknown || []; + var parsed = self.parseOptions(unknown); + + // Output help if necessary + outputHelpIfNecessary(self, parsed.unknown); + + // If there are still any unknown options, then we simply + // die, unless someone asked for help, in which case we give it + // to them, and then we die. + if (parsed.unknown.length > 0) { + self.unknownOption(parsed.unknown[0]); + } + + self.args.forEach(function(arg, i){ + if (arg.required && null == args[i]) { + self.missingArgument(arg.name); + } + }); + + // Always append ourselves to the end of the arguments, + // to make sure we match the number of arguments the user + // expects + if (self.args.length) { + args[self.args.length] = self; + } else { + args.push(self); + } + + fn.apply(this, args); + }); + return this; +}; + +/** + * Define option with `flags`, `description` and optional + * coercion `fn`. + * + * The `flags` string should contain both the short and long flags, + * separated by comma, a pipe or space. The following are all valid + * all will output this way when `--help` is used. + * + * "-p, --pepper" + * "-p|--pepper" + * "-p --pepper" + * + * Examples: + * + * // simple boolean defaulting to false + * program.option('-p, --pepper', 'add pepper'); + * + * --pepper + * program.pepper + * // => Boolean + * + * // simple boolean defaulting to false + * program.option('-C, --no-cheese', 'remove cheese'); + * + * program.cheese + * // => true + * + * --no-cheese + * program.cheese + * // => true + * + * // required argument + * program.option('-C, --chdir ', 'change the working directory'); + * + * --chdir /tmp + * program.chdir + * // => "/tmp" + * + * // optional argument + * program.option('-c, --cheese [type]', 'add cheese [marble]'); + * + * @param {String} flags + * @param {String} description + * @param {Function|Mixed} fn or default + * @param {Mixed} defaultValue + * @return {Command} for chaining + * @api public + */ + +Command.prototype.option = function(flags, description, fn, defaultValue){ + var self = this + , option = new Option(flags, description) + , oname = option.name() + , name = camelcase(oname); + + // default as 3rd arg + if ('function' != typeof fn) defaultValue = fn, fn = null; + + // preassign default value only for --no-*, [optional], or + if (false == option.bool || option.optional || option.required) { + // when --no-* we make sure default is true + if (false == option.bool) defaultValue = true; + // preassign only if we have a default + if (undefined !== defaultValue) self[name] = defaultValue; + } + + // register the option + this.options.push(option); + + // when it's passed assign the value + // and conditionally invoke the callback + this.on(oname, function(val){ + // coercion + if (null != val && fn) val = fn(val); + + // unassigned or bool + if ('boolean' == typeof self[name] || 'undefined' == typeof self[name]) { + // if no value, bool true, and we have a default, then use it! + if (null == val) { + self[name] = option.bool + ? defaultValue || true + : false; + } else { + self[name] = val; + } + } else if (null !== val) { + // reassign + self[name] = val; + } + }); + + return this; +}; + +/** + * Parse `argv`, settings options and invoking commands when defined. + * + * @param {Array} argv + * @return {Command} for chaining + * @api public + */ + +Command.prototype.parse = function(argv){ + // store raw args + this.rawArgs = argv; + + // guess name + if (!this.name) this.name = basename(argv[1]); + + // process argv + var parsed = this.parseOptions(this.normalize(argv.slice(2))); + this.args = parsed.args; + return this.parseArgs(this.args, parsed.unknown); +}; + +/** + * Normalize `args`, splitting joined short flags. For example + * the arg "-abc" is equivalent to "-a -b -c". + * + * @param {Array} args + * @return {Array} + * @api private + */ + +Command.prototype.normalize = function(args){ + var ret = [] + , arg; + + for (var i = 0, len = args.length; i < len; ++i) { + arg = args[i]; + if (arg.length > 1 && '-' == arg[0] && '-' != arg[1]) { + arg.slice(1).split('').forEach(function(c){ + ret.push('-' + c); + }); + } else { + ret.push(arg); + } + } + + return ret; +}; + +/** + * Parse command `args`. + * + * When listener(s) are available those + * callbacks are invoked, otherwise the "*" + * event is emitted and those actions are invoked. + * + * @param {Array} args + * @return {Command} for chaining + * @api private + */ + +Command.prototype.parseArgs = function(args, unknown){ + var cmds = this.commands + , len = cmds.length + , name; + + if (args.length) { + name = args[0]; + if (this.listeners(name).length) { + this.emit(args.shift(), args, unknown); + } else { + this.emit('*', args); + } + } else { + outputHelpIfNecessary(this, unknown); + + // If there were no args and we have unknown options, + // then they are extraneous and we need to error. + if (unknown.length > 0) { + this.unknownOption(unknown[0]); + } + } + + return this; +}; + +/** + * Return an option matching `arg` if any. + * + * @param {String} arg + * @return {Option} + * @api private + */ + +Command.prototype.optionFor = function(arg){ + for (var i = 0, len = this.options.length; i < len; ++i) { + if (this.options[i].is(arg)) { + return this.options[i]; + } + } +}; + +/** + * Parse options from `argv` returning `argv` + * void of these options. + * + * @param {Array} argv + * @return {Array} + * @api public + */ + +Command.prototype.parseOptions = function(argv){ + var args = [] + , len = argv.length + , literal + , option + , arg; + + var unknownOptions = []; + + // parse options + for (var i = 0; i < len; ++i) { + arg = argv[i]; + + // literal args after -- + if ('--' == arg) { + literal = true; + continue; + } + + if (literal) { + args.push(arg); + continue; + } + + // find matching Option + option = this.optionFor(arg); + + // option is defined + if (option) { + // requires arg + if (option.required) { + arg = argv[++i]; + if (null == arg) return this.optionMissingArgument(option); + if ('-' == arg[0]) return this.optionMissingArgument(option, arg); + this.emit(option.name(), arg); + // optional arg + } else if (option.optional) { + arg = argv[i+1]; + if (null == arg || '-' == arg[0]) { + arg = null; + } else { + ++i; + } + this.emit(option.name(), arg); + // bool + } else { + this.emit(option.name()); + } + continue; + } + + // looks like an option + if (arg.length > 1 && '-' == arg[0]) { + unknownOptions.push(arg); + + // If the next argument looks like it might be + // an argument for this option, we pass it on. + // If it isn't, then it'll simply be ignored + if (argv[i+1] && '-' != argv[i+1][0]) { + unknownOptions.push(argv[++i]); + } + continue; + } + + // arg + args.push(arg); + } + + return { args: args, unknown: unknownOptions }; +}; + +/** + * Argument `name` is missing. + * + * @param {String} name + * @api private + */ + +Command.prototype.missingArgument = function(name){ + console.error(); + console.error(" error: missing required argument `%s'", name); + console.error(); + process.exit(1); +}; + +/** + * `Option` is missing an argument, but received `flag` or nothing. + * + * @param {String} option + * @param {String} flag + * @api private + */ + +Command.prototype.optionMissingArgument = function(option, flag){ + console.error(); + if (flag) { + console.error(" error: option `%s' argument missing, got `%s'", option.flags, flag); + } else { + console.error(" error: option `%s' argument missing", option.flags); + } + console.error(); + process.exit(1); +}; + +/** + * Unknown option `flag`. + * + * @param {String} flag + * @api private + */ + +Command.prototype.unknownOption = function(flag){ + console.error(); + console.error(" error: unknown option `%s'", flag); + console.error(); + process.exit(1); +}; + +/** + * Set the program version to `str`. + * + * This method auto-registers the "-V, --version" flag + * which will print the version number when passed. + * + * @param {String} str + * @param {String} flags + * @return {Command} for chaining + * @api public + */ + +Command.prototype.version = function(str, flags){ + if (0 == arguments.length) return this._version; + this._version = str; + flags = flags || '-V, --version'; + this.option(flags, 'output the version number'); + this.on('version', function(){ + console.log(str); + process.exit(0); + }); + return this; +}; + +/** + * Set the description `str`. + * + * @param {String} str + * @return {String|Command} + * @api public + */ + +Command.prototype.description = function(str){ + if (0 == arguments.length) return this._description; + this._description = str; + return this; +}; + +/** + * Set / get the command usage `str`. + * + * @param {String} str + * @return {String|Command} + * @api public + */ + +Command.prototype.usage = function(str){ + var args = this.args.map(function(arg){ + return arg.required + ? '<' + arg.name + '>' + : '[' + arg.name + ']'; + }); + + var usage = '[options' + + (this.commands.length ? '] [command' : '') + + ']' + + (this.args.length ? ' ' + args : ''); + if (0 == arguments.length) return this._usage || usage; + this._usage = str; + + return this; +}; + +/** + * Return the largest option length. + * + * @return {Number} + * @api private + */ + +Command.prototype.largestOptionLength = function(){ + return this.options.reduce(function(max, option){ + return Math.max(max, option.flags.length); + }, 0); +}; + +/** + * Return help for options. + * + * @return {String} + * @api private + */ + +Command.prototype.optionHelp = function(){ + var width = this.largestOptionLength(); + + // Prepend the help information + return [pad('-h, --help', width) + ' ' + 'output usage information'] + .concat(this.options.map(function(option){ + return pad(option.flags, width) + + ' ' + option.description; + })) + .join('\n'); +}; + +/** + * Return command help documentation. + * + * @return {String} + * @api private + */ + +Command.prototype.commandHelp = function(){ + if (!this.commands.length) return ''; + return [ + '' + , ' Commands:' + , '' + , this.commands.map(function(cmd){ + var args = cmd.args.map(function(arg){ + return arg.required + ? '<' + arg.name + '>' + : '[' + arg.name + ']'; + }).join(' '); + + return cmd.name + + (cmd.options.length + ? ' [options]' + : '') + ' ' + args + + (cmd.description() + ? '\n' + cmd.description() + : ''); + }).join('\n\n').replace(/^/gm, ' ') + , '' + ].join('\n'); +}; + +/** + * Return program help documentation. + * + * @return {String} + * @api private + */ + +Command.prototype.helpInformation = function(){ + return [ + '' + , ' Usage: ' + this.name + ' ' + this.usage() + , '' + this.commandHelp() + , ' Options:' + , '' + , '' + this.optionHelp().replace(/^/gm, ' ') + , '' + , '' + ].join('\n'); +}; + +/** + * Prompt for a `Number`. + * + * @param {String} str + * @param {Function} fn + * @api private + */ + +Command.prototype.promptForNumber = function(str, fn){ + var self = this; + this.promptSingleLine(str, function parseNumber(val){ + val = Number(val); + if (isNaN(val)) return self.promptSingleLine(str + '(must be a number) ', parseNumber); + fn(val); + }); +}; + +/** + * Prompt for a `Date`. + * + * @param {String} str + * @param {Function} fn + * @api private + */ + +Command.prototype.promptForDate = function(str, fn){ + var self = this; + this.promptSingleLine(str, function parseDate(val){ + val = new Date(val); + if (isNaN(val.getTime())) return self.promptSingleLine(str + '(must be a date) ', parseDate); + fn(val); + }); +}; + +/** + * Single-line prompt. + * + * @param {String} str + * @param {Function} fn + * @api private + */ + +Command.prototype.promptSingleLine = function(str, fn){ + if ('function' == typeof arguments[2]) { + return this['promptFor' + (fn.name || fn)](str, arguments[2]); + } + + process.stdout.write(str); + process.stdin.setEncoding('utf8'); + process.stdin.once('data', function(val){ + fn(val.trim()); + }).resume(); +}; + +/** + * Multi-line prompt. + * + * @param {String} str + * @param {Function} fn + * @api private + */ + +Command.prototype.promptMultiLine = function(str, fn){ + var buf = []; + console.log(str); + process.stdin.setEncoding('utf8'); + process.stdin.on('data', function(val){ + if ('\n' == val || '\r\n' == val) { + process.stdin.removeAllListeners('data'); + fn(buf.join('\n')); + } else { + buf.push(val.trimRight()); + } + }).resume(); +}; + +/** + * Prompt `str` and callback `fn(val)` + * + * Commander supports single-line and multi-line prompts. + * To issue a single-line prompt simply add white-space + * to the end of `str`, something like "name: ", whereas + * for a multi-line prompt omit this "description:". + * + * + * Examples: + * + * program.prompt('Username: ', function(name){ + * console.log('hi %s', name); + * }); + * + * program.prompt('Description:', function(desc){ + * console.log('description was "%s"', desc.trim()); + * }); + * + * @param {String|Object} str + * @param {Function} fn + * @api public + */ + +Command.prototype.prompt = function(str, fn){ + var self = this; + + if ('string' == typeof str) { + if (/ $/.test(str)) return this.promptSingleLine.apply(this, arguments); + this.promptMultiLine(str, fn); + } else { + var keys = Object.keys(str) + , obj = {}; + + function next() { + var key = keys.shift() + , label = str[key]; + + if (!key) return fn(obj); + self.prompt(label, function(val){ + obj[key] = val; + next(); + }); + } + + next(); + } +}; + +/** + * Prompt for password with `str`, `mask` char and callback `fn(val)`. + * + * The mask string defaults to '', aka no output is + * written while typing, you may want to use "*" etc. + * + * Examples: + * + * program.password('Password: ', function(pass){ + * console.log('got "%s"', pass); + * process.stdin.destroy(); + * }); + * + * program.password('Password: ', '*', function(pass){ + * console.log('got "%s"', pass); + * process.stdin.destroy(); + * }); + * + * @param {String} str + * @param {String} mask + * @param {Function} fn + * @api public + */ + +Command.prototype.password = function(str, mask, fn){ + var self = this + , buf = ''; + + // default mask + if ('function' == typeof mask) { + fn = mask; + mask = ''; + } + + process.stdin.resume(); + tty.setRawMode(true); + process.stdout.write(str); + + // keypress + process.stdin.on('keypress', function(c, key){ + if (key && 'enter' == key.name) { + console.log(); + process.stdin.removeAllListeners('keypress'); + tty.setRawMode(false); + if (!buf.trim().length) return self.password(str, mask, fn); + fn(buf); + return; + } + + if (key && key.ctrl && 'c' == key.name) { + console.log('%s', buf); + process.exit(); + } + + process.stdout.write(mask); + buf += c; + }).resume(); +}; + +/** + * Confirmation prompt with `str` and callback `fn(bool)` + * + * Examples: + * + * program.confirm('continue? ', function(ok){ + * console.log(' got %j', ok); + * process.stdin.destroy(); + * }); + * + * @param {String} str + * @param {Function} fn + * @api public + */ + + +Command.prototype.confirm = function(str, fn, verbose){ + var self = this; + this.prompt(str, function(ok){ + if (!ok.trim()) { + if (!verbose) str += '(yes or no) '; + return self.confirm(str, fn, true); + } + fn(parseBool(ok)); + }); +}; + +/** + * Choice prompt with `list` of items and callback `fn(index, item)` + * + * Examples: + * + * var list = ['tobi', 'loki', 'jane', 'manny', 'luna']; + * + * console.log('Choose the coolest pet:'); + * program.choose(list, function(i){ + * console.log('you chose %d "%s"', i, list[i]); + * process.stdin.destroy(); + * }); + * + * @param {Array} list + * @param {Number|Function} index or fn + * @param {Function} fn + * @api public + */ + +Command.prototype.choose = function(list, index, fn){ + var self = this + , hasDefault = 'number' == typeof index; + + if (!hasDefault) { + fn = index; + index = null; + } + + list.forEach(function(item, i){ + if (hasDefault && i == index) { + console.log('* %d) %s', i + 1, item); + } else { + console.log(' %d) %s', i + 1, item); + } + }); + + function again() { + self.prompt(' : ', function(val){ + val = parseInt(val, 10) - 1; + if (hasDefault && isNaN(val)) val = index; + + if (null == list[val]) { + again(); + } else { + fn(val, list[val]); + } + }); + } + + again(); +}; + +/** + * Camel-case the given `flag` + * + * @param {String} flag + * @return {String} + * @api private + */ + +function camelcase(flag) { + return flag.split('-').reduce(function(str, word){ + return str + word[0].toUpperCase() + word.slice(1); + }); +} + +/** + * Parse a boolean `str`. + * + * @param {String} str + * @return {Boolean} + * @api private + */ + +function parseBool(str) { + return /^y|yes|ok|true$/i.test(str); +} + +/** + * Pad `str` to `width`. + * + * @param {String} str + * @param {Number} width + * @return {String} + * @api private + */ + +function pad(str, width) { + var len = Math.max(0, width - str.length); + return str + Array(len + 1).join(' '); +} + +/** + * Output help information if necessary + * + * @param {Command} command to output help for + * @param {Array} array of options to search for -h or --help + * @api private + */ + +function outputHelpIfNecessary(cmd, options) { + options = options || []; + for (var i = 0; i < options.length; i++) { + if (options[i] == '--help' || options[i] == '-h') { + process.stdout.write(cmd.helpInformation()); + cmd.emit('--help'); + process.exit(0); + } + } +} diff --git a/node_modules/express/node_modules/commander/package.json b/node_modules/express/node_modules/commander/package.json new file mode 100644 index 0000000..fe33f1c --- /dev/null +++ b/node_modules/express/node_modules/commander/package.json @@ -0,0 +1,39 @@ +{ + "name": "commander", + "version": "0.6.1", + "description": "the complete solution for node.js command-line programs", + "keywords": [ + "command", + "option", + "parser", + "prompt", + "stdin" + ], + "author": { + "name": "TJ Holowaychuk", + "email": "tj@vision-media.ca" + }, + "repository": { + "type": "git", + "url": "https://github.com/visionmedia/commander.js.git" + }, + "dependencies": {}, + "devDependencies": { + "should": ">= 0.0.1" + }, + "scripts": { + "test": "make test" + }, + "main": "index", + "engines": { + "node": ">= 0.4.x" + }, + "readme": "# Commander.js\n\n The complete solution for [node.js](http://nodejs.org) command-line interfaces, inspired by Ruby's [commander](https://github.com/visionmedia/commander).\n\n [![Build Status](https://secure.travis-ci.org/visionmedia/commander.js.png)](http://travis-ci.org/visionmedia/commander.js)\n\n## Installation\n\n $ npm install commander\n\n## Option parsing\n\n Options with commander are defined with the `.option()` method, also serving as documentation for the options. The example below parses args and options from `process.argv`, leaving remaining args as the `program.args` array which were not consumed by options.\n\n```js\n#!/usr/bin/env node\n\n/**\n * Module dependencies.\n */\n\nvar program = require('commander');\n\nprogram\n .version('0.0.1')\n .option('-p, --peppers', 'Add peppers')\n .option('-P, --pineapple', 'Add pineapple')\n .option('-b, --bbq', 'Add bbq sauce')\n .option('-c, --cheese [type]', 'Add the specified type of cheese [marble]', 'marble')\n .parse(process.argv);\n\nconsole.log('you ordered a pizza with:');\nif (program.peppers) console.log(' - peppers');\nif (program.pineapple) console.log(' - pineappe');\nif (program.bbq) console.log(' - bbq');\nconsole.log(' - %s cheese', program.cheese);\n```\n\n Short flags may be passed as a single arg, for example `-abc` is equivalent to `-a -b -c`. Multi-word options such as \"--template-engine\" are camel-cased, becoming `program.templateEngine` etc.\n\n## Automated --help\n\n The help information is auto-generated based on the information commander already knows about your program, so the following `--help` info is for free:\n\n``` \n $ ./examples/pizza --help\n\n Usage: pizza [options]\n\n Options:\n\n -V, --version output the version number\n -p, --peppers Add peppers\n -P, --pineapple Add pineappe\n -b, --bbq Add bbq sauce\n -c, --cheese Add the specified type of cheese [marble]\n -h, --help output usage information\n\n```\n\n## Coercion\n\n```js\nfunction range(val) {\n return val.split('..').map(Number);\n}\n\nfunction list(val) {\n return val.split(',');\n}\n\nprogram\n .version('0.0.1')\n .usage('[options] ')\n .option('-i, --integer ', 'An integer argument', parseInt)\n .option('-f, --float ', 'A float argument', parseFloat)\n .option('-r, --range ..', 'A range', range)\n .option('-l, --list ', 'A list', list)\n .option('-o, --optional [value]', 'An optional value')\n .parse(process.argv);\n\nconsole.log(' int: %j', program.integer);\nconsole.log(' float: %j', program.float);\nconsole.log(' optional: %j', program.optional);\nprogram.range = program.range || [];\nconsole.log(' range: %j..%j', program.range[0], program.range[1]);\nconsole.log(' list: %j', program.list);\nconsole.log(' args: %j', program.args);\n```\n\n## Custom help\n\n You can display arbitrary `-h, --help` information\n by listening for \"--help\". Commander will automatically\n exit once you are done so that the remainder of your program\n does not execute causing undesired behaviours, for example\n in the following executable \"stuff\" will not output when\n `--help` is used.\n\n```js\n#!/usr/bin/env node\n\n/**\n * Module dependencies.\n */\n\nvar program = require('../');\n\nfunction list(val) {\n return val.split(',').map(Number);\n}\n\nprogram\n .version('0.0.1')\n .option('-f, --foo', 'enable some foo')\n .option('-b, --bar', 'enable some bar')\n .option('-B, --baz', 'enable some baz');\n\n// must be before .parse() since\n// node's emit() is immediate\n\nprogram.on('--help', function(){\n console.log(' Examples:');\n console.log('');\n console.log(' $ custom-help --help');\n console.log(' $ custom-help -h');\n console.log('');\n});\n\nprogram.parse(process.argv);\n\nconsole.log('stuff');\n```\n\nyielding the following help output:\n\n```\n\nUsage: custom-help [options]\n\nOptions:\n\n -h, --help output usage information\n -V, --version output the version number\n -f, --foo enable some foo\n -b, --bar enable some bar\n -B, --baz enable some baz\n\nExamples:\n\n $ custom-help --help\n $ custom-help -h\n\n```\n\n## .prompt(msg, fn)\n\n Single-line prompt:\n\n```js\nprogram.prompt('name: ', function(name){\n console.log('hi %s', name);\n});\n```\n\n Multi-line prompt:\n\n```js\nprogram.prompt('description:', function(name){\n console.log('hi %s', name);\n});\n```\n\n Coercion:\n\n```js\nprogram.prompt('Age: ', Number, function(age){\n console.log('age: %j', age);\n});\n```\n\n```js\nprogram.prompt('Birthdate: ', Date, function(date){\n console.log('date: %s', date);\n});\n```\n\n## .password(msg[, mask], fn)\n\nPrompt for password without echoing:\n\n```js\nprogram.password('Password: ', function(pass){\n console.log('got \"%s\"', pass);\n process.stdin.destroy();\n});\n```\n\nPrompt for password with mask char \"*\":\n\n```js\nprogram.password('Password: ', '*', function(pass){\n console.log('got \"%s\"', pass);\n process.stdin.destroy();\n});\n```\n\n## .confirm(msg, fn)\n\n Confirm with the given `msg`:\n\n```js\nprogram.confirm('continue? ', function(ok){\n console.log(' got %j', ok);\n});\n```\n\n## .choose(list, fn)\n\n Let the user choose from a `list`:\n\n```js\nvar list = ['tobi', 'loki', 'jane', 'manny', 'luna'];\n\nconsole.log('Choose the coolest pet:');\nprogram.choose(list, function(i){\n console.log('you chose %d \"%s\"', i, list[i]);\n});\n```\n\n## Links\n\n - [API documentation](http://visionmedia.github.com/commander.js/)\n - [ascii tables](https://github.com/LearnBoost/cli-table)\n - [progress bars](https://github.com/visionmedia/node-progress)\n - [more progress bars](https://github.com/substack/node-multimeter)\n - [examples](https://github.com/visionmedia/commander.js/tree/master/examples)\n\n## License \n\n(The MIT License)\n\nCopyright (c) 2011 TJ Holowaychuk <tj@vision-media.ca>\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n'Software'), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.", + "readmeFilename": "Readme.md", + "_id": "commander@0.6.1", + "dist": { + "shasum": "abbd9170e66413382e1bb6c7cc102760a55734b9" + }, + "_from": "commander@0.6.1", + "_resolved": "https://registry.npmjs.org/commander/-/commander-0.6.1.tgz" +} diff --git a/node_modules/express/node_modules/connect/.npmignore b/node_modules/express/node_modules/connect/.npmignore new file mode 100644 index 0000000..9046dde --- /dev/null +++ b/node_modules/express/node_modules/connect/.npmignore @@ -0,0 +1,12 @@ +*.markdown +*.md +.git* +Makefile +benchmarks/ +docs/ +examples/ +install.sh +support/ +test/ +.DS_Store +coverage.html diff --git a/node_modules/express/node_modules/connect/.travis.yml b/node_modules/express/node_modules/connect/.travis.yml new file mode 100644 index 0000000..3aeb3c5 --- /dev/null +++ b/node_modules/express/node_modules/connect/.travis.yml @@ -0,0 +1,5 @@ +language: node_js +node_js: + - 0.6 + - 0.8 + - 0.9 \ No newline at end of file diff --git a/node_modules/express/node_modules/connect/LICENSE b/node_modules/express/node_modules/connect/LICENSE new file mode 100644 index 0000000..0c5d22d --- /dev/null +++ b/node_modules/express/node_modules/connect/LICENSE @@ -0,0 +1,24 @@ +(The MIT License) + +Copyright (c) 2010 Sencha Inc. +Copyright (c) 2011 LearnBoost +Copyright (c) 2011 TJ Holowaychuk + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +'Software'), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. \ No newline at end of file diff --git a/node_modules/express/node_modules/connect/Readme.md b/node_modules/express/node_modules/connect/Readme.md new file mode 100644 index 0000000..7d65f9c --- /dev/null +++ b/node_modules/express/node_modules/connect/Readme.md @@ -0,0 +1,133 @@ +[![build status](https://secure.travis-ci.org/senchalabs/connect.png)](http://travis-ci.org/senchalabs/connect) +# Connect + + Connect is an extensible HTTP server framework for [node](http://nodejs.org), providing high performance "plugins" known as _middleware_. + + Connect is bundled with over _20_ commonly used middleware, including + a logger, session support, cookie parser, and [more](http://senchalabs.github.com/connect). Be sure to view the 2.x [documentation](http://senchalabs.github.com/connect/). + +```js +var connect = require('connect') + , http = require('http'); + +var app = connect() + .use(connect.favicon()) + .use(connect.logger('dev')) + .use(connect.static('public')) + .use(connect.directory('public')) + .use(connect.cookieParser()) + .use(connect.session({ secret: 'my secret here' })) + .use(function(req, res){ + res.end('Hello from Connect!\n'); + }); + +http.createServer(app).listen(3000); +``` + +## Middleware + + - [csrf](http://www.senchalabs.org/connect/csrf.html) + - [basicAuth](http://www.senchalabs.org/connect/basicAuth.html) + - [bodyParser](http://www.senchalabs.org/connect/bodyParser.html) + - [json](http://www.senchalabs.org/connect/json.html) + - [multipart](http://www.senchalabs.org/connect/multipart.html) + - [urlencoded](http://www.senchalabs.org/connect/urlencoded.html) + - [cookieParser](http://www.senchalabs.org/connect/cookieParser.html) + - [directory](http://www.senchalabs.org/connect/directory.html) + - [compress](http://www.senchalabs.org/connect/compress.html) + - [errorHandler](http://www.senchalabs.org/connect/errorHandler.html) + - [favicon](http://www.senchalabs.org/connect/favicon.html) + - [limit](http://www.senchalabs.org/connect/limit.html) + - [logger](http://www.senchalabs.org/connect/logger.html) + - [methodOverride](http://www.senchalabs.org/connect/methodOverride.html) + - [query](http://www.senchalabs.org/connect/query.html) + - [responseTime](http://www.senchalabs.org/connect/responseTime.html) + - [session](http://www.senchalabs.org/connect/session.html) + - [static](http://www.senchalabs.org/connect/static.html) + - [staticCache](http://www.senchalabs.org/connect/staticCache.html) + - [vhost](http://www.senchalabs.org/connect/vhost.html) + - [subdomains](http://www.senchalabs.org/connect/subdomains.html) + - [cookieSession](http://www.senchalabs.org/connect/cookieSession.html) + +## Running Tests + +first: + + $ npm install -d + +then: + + $ make test + +## Authors + + Below is the output from [git-summary](http://github.com/visionmedia/git-extras). + + + project: connect + commits: 2033 + active : 301 days + files : 171 + authors: + 1414 Tj Holowaychuk 69.6% + 298 visionmedia 14.7% + 191 Tim Caswell 9.4% + 51 TJ Holowaychuk 2.5% + 10 Ryan Olds 0.5% + 8 Astro 0.4% + 5 Nathan Rajlich 0.2% + 5 Jakub Nešetřil 0.2% + 3 Daniel Dickison 0.1% + 3 David Rio Deiros 0.1% + 3 Alexander Simmerl 0.1% + 3 Andreas Lind Petersen 0.1% + 2 Aaron Heckmann 0.1% + 2 Jacques Crocker 0.1% + 2 Fabian Jakobs 0.1% + 2 Brian J Brennan 0.1% + 2 Adam Malcontenti-Wilson 0.1% + 2 Glen Mailer 0.1% + 2 James Campos 0.1% + 1 Trent Mick 0.0% + 1 Troy Kruthoff 0.0% + 1 Wei Zhu 0.0% + 1 comerc 0.0% + 1 darobin 0.0% + 1 nateps 0.0% + 1 Marco Sanson 0.0% + 1 Arthur Taylor 0.0% + 1 Aseem Kishore 0.0% + 1 Bart Teeuwisse 0.0% + 1 Cameron Howey 0.0% + 1 Chad Weider 0.0% + 1 Craig Barnes 0.0% + 1 Eran Hammer-Lahav 0.0% + 1 Gregory McWhirter 0.0% + 1 Guillermo Rauch 0.0% + 1 Jae Kwon 0.0% + 1 Jakub Nesetril 0.0% + 1 Joshua Peek 0.0% + 1 Jxck 0.0% + 1 AJ ONeal 0.0% + 1 Michael Hemesath 0.0% + 1 Morten Siebuhr 0.0% + 1 Samori Gorse 0.0% + 1 Tom Jensen 0.0% + +## Node Compatibility + + Connect `< 1.x` is compatible with node 0.2.x + + + Connect `1.x` is compatible with node 0.4.x + + + Connect (_master_) `2.x` is compatible with node 0.6.x + +## CLA + + [http://sencha.com/cla](http://sencha.com/cla) + +## License + +View the [LICENSE](https://github.com/senchalabs/connect/blob/master/LICENSE) file. The [Silk](http://www.famfamfam.com/lab/icons/silk/) icons used by the `directory` middleware created by/copyright of [FAMFAMFAM](http://www.famfamfam.com/). diff --git a/node_modules/express/node_modules/connect/index.js b/node_modules/express/node_modules/connect/index.js new file mode 100644 index 0000000..23240ee --- /dev/null +++ b/node_modules/express/node_modules/connect/index.js @@ -0,0 +1,4 @@ + +module.exports = process.env.CONNECT_COV + ? require('./lib-cov/connect') + : require('./lib/connect'); \ No newline at end of file diff --git a/node_modules/express/node_modules/connect/lib-cov/cache.js b/node_modules/express/node_modules/connect/lib-cov/cache.js new file mode 100644 index 0000000..af6cd2f --- /dev/null +++ b/node_modules/express/node_modules/connect/lib-cov/cache.js @@ -0,0 +1,68 @@ +/* automatically generated by JSCoverage - do not edit */ +if (typeof _$jscoverage === 'undefined') _$jscoverage = {}; +if (! _$jscoverage['cache.js']) { + _$jscoverage['cache.js'] = []; + _$jscoverage['cache.js'][12] = 0; + _$jscoverage['cache.js'][21] = 0; + _$jscoverage['cache.js'][22] = 0; + _$jscoverage['cache.js'][23] = 0; + _$jscoverage['cache.js'][24] = 0; + _$jscoverage['cache.js'][35] = 0; + _$jscoverage['cache.js'][36] = 0; + _$jscoverage['cache.js'][37] = 0; + _$jscoverage['cache.js'][47] = 0; + _$jscoverage['cache.js'][48] = 0; + _$jscoverage['cache.js'][59] = 0; + _$jscoverage['cache.js'][60] = 0; + _$jscoverage['cache.js'][71] = 0; + _$jscoverage['cache.js'][73] = 0; + _$jscoverage['cache.js'][76] = 0; + _$jscoverage['cache.js'][78] = 0; + _$jscoverage['cache.js'][79] = 0; + _$jscoverage['cache.js'][80] = 0; +} +_$jscoverage['cache.js'][12]++; +module.exports = Cache; +_$jscoverage['cache.js'][21]++; +function Cache(limit) { + _$jscoverage['cache.js'][22]++; + this.store = {}; + _$jscoverage['cache.js'][23]++; + this.keys = []; + _$jscoverage['cache.js'][24]++; + this.limit = limit; +} +_$jscoverage['cache.js'][35]++; +Cache.prototype.touch = (function (key, i) { + _$jscoverage['cache.js'][36]++; + this.keys.splice(i, 1); + _$jscoverage['cache.js'][37]++; + this.keys.push(key); +}); +_$jscoverage['cache.js'][47]++; +Cache.prototype.remove = (function (key) { + _$jscoverage['cache.js'][48]++; + delete this.store[key]; +}); +_$jscoverage['cache.js'][59]++; +Cache.prototype.get = (function (key) { + _$jscoverage['cache.js'][60]++; + return this.store[key]; +}); +_$jscoverage['cache.js'][71]++; +Cache.prototype.add = (function (key) { + _$jscoverage['cache.js'][73]++; + var len = this.keys.push(key); + _$jscoverage['cache.js'][76]++; + if (len > this.limit) { + _$jscoverage['cache.js'][76]++; + this.remove(this.keys.shift()); + } + _$jscoverage['cache.js'][78]++; + var arr = this.store[key] = []; + _$jscoverage['cache.js'][79]++; + arr.createdAt = new Date(); + _$jscoverage['cache.js'][80]++; + return arr; +}); +_$jscoverage['cache.js'].source = ["","/*!"," * Connect - Cache"," * Copyright(c) 2011 Sencha Inc."," * MIT Licensed"," */","","/**"," * Expose `Cache`."," */","","module.exports = Cache;","","/**"," * LRU cache store."," *"," * @param {Number} limit"," * @api private"," */","","function Cache(limit) {"," this.store = {};"," this.keys = [];"," this.limit = limit;","}","","/**"," * Touch `key`, promoting the object."," *"," * @param {String} key"," * @param {Number} i"," * @api private"," */","","Cache.prototype.touch = function(key, i){"," this.keys.splice(i,1);"," this.keys.push(key);","};","","/**"," * Remove `key`."," *"," * @param {String} key"," * @api private"," */","","Cache.prototype.remove = function(key){"," delete this.store[key];","};","","/**"," * Get the object stored for `key`."," *"," * @param {String} key"," * @return {Array}"," * @api private"," */","","Cache.prototype.get = function(key){"," return this.store[key];","};","","/**"," * Add a cache `key`."," *"," * @param {String} key"," * @return {Array}"," * @api private"," */","","Cache.prototype.add = function(key){"," // initialize store"," var len = this.keys.push(key);",""," // limit reached, invalidate LRU"," if (len > this.limit) this.remove(this.keys.shift());",""," var arr = this.store[key] = [];"," arr.createdAt = new Date;"," return arr;","};"]; diff --git a/node_modules/express/node_modules/connect/lib-cov/connect.js b/node_modules/express/node_modules/connect/lib-cov/connect.js new file mode 100644 index 0000000..f811bb8 --- /dev/null +++ b/node_modules/express/node_modules/connect/lib-cov/connect.js @@ -0,0 +1,93 @@ +/* automatically generated by JSCoverage - do not edit */ +if (typeof _$jscoverage === 'undefined') _$jscoverage = {}; +if (! _$jscoverage['connect.js']) { + _$jscoverage['connect.js'] = []; + _$jscoverage['connect.js'][13] = 0; + _$jscoverage['connect.js'][22] = 0; + _$jscoverage['connect.js'][26] = 0; + _$jscoverage['connect.js'][32] = 0; + _$jscoverage['connect.js'][38] = 0; + _$jscoverage['connect.js'][44] = 0; + _$jscoverage['connect.js'][50] = 0; + _$jscoverage['connect.js'][56] = 0; + _$jscoverage['connect.js'][65] = 0; + _$jscoverage['connect.js'][66] = 0; + _$jscoverage['connect.js'][67] = 0; + _$jscoverage['connect.js'][68] = 0; + _$jscoverage['connect.js'][69] = 0; + _$jscoverage['connect.js'][70] = 0; + _$jscoverage['connect.js'][71] = 0; + _$jscoverage['connect.js'][72] = 0; + _$jscoverage['connect.js'][74] = 0; + _$jscoverage['connect.js'][75] = 0; + _$jscoverage['connect.js'][81] = 0; + _$jscoverage['connect.js'][87] = 0; + _$jscoverage['connect.js'][88] = 0; + _$jscoverage['connect.js'][89] = 0; + _$jscoverage['connect.js'][90] = 0; + _$jscoverage['connect.js'][91] = 0; + _$jscoverage['connect.js'][92] = 0; +} +_$jscoverage['connect.js'][13]++; +var EventEmitter = require("events").EventEmitter, proto = require("./proto"), utils = require("./utils"), path = require("path"), basename = path.basename, fs = require("fs"); +_$jscoverage['connect.js'][22]++; +require("./patch"); +_$jscoverage['connect.js'][26]++; +exports = module.exports = createServer; +_$jscoverage['connect.js'][32]++; +exports.version = "2.6.1"; +_$jscoverage['connect.js'][38]++; +exports.mime = require("./middleware/static").mime; +_$jscoverage['connect.js'][44]++; +exports.proto = proto; +_$jscoverage['connect.js'][50]++; +exports.middleware = {}; +_$jscoverage['connect.js'][56]++; +exports.utils = utils; +_$jscoverage['connect.js'][65]++; +function createServer() { + _$jscoverage['connect.js'][66]++; + function app(req, res) { + _$jscoverage['connect.js'][66]++; + app.handle(req, res); +} + _$jscoverage['connect.js'][67]++; + utils.merge(app, proto); + _$jscoverage['connect.js'][68]++; + utils.merge(app, EventEmitter.prototype); + _$jscoverage['connect.js'][69]++; + app.route = "/"; + _$jscoverage['connect.js'][70]++; + app.stack = []; + _$jscoverage['connect.js'][71]++; + for (var i = 0; i < arguments.length; ++i) { + _$jscoverage['connect.js'][72]++; + app.use(arguments[i]); +} + _$jscoverage['connect.js'][74]++; + return app; +} +_$jscoverage['connect.js'][75]++; +; +_$jscoverage['connect.js'][81]++; +createServer.createServer = createServer; +_$jscoverage['connect.js'][87]++; +fs.readdirSync(__dirname + "/middleware").forEach((function (filename) { + _$jscoverage['connect.js'][88]++; + if (! /\.js$/.test(filename)) { + _$jscoverage['connect.js'][88]++; + return; + } + _$jscoverage['connect.js'][89]++; + var name = basename(filename, ".js"); + _$jscoverage['connect.js'][90]++; + function load() { + _$jscoverage['connect.js'][90]++; + return require("./middleware/" + name); +} + _$jscoverage['connect.js'][91]++; + exports.middleware.__defineGetter__(name, load); + _$jscoverage['connect.js'][92]++; + exports.__defineGetter__(name, load); +})); +_$jscoverage['connect.js'].source = ["","/*!"," * Connect"," * Copyright(c) 2010 Sencha Inc."," * Copyright(c) 2011 TJ Holowaychuk"," * MIT Licensed"," */","","/**"," * Module dependencies."," */","","var EventEmitter = require('events').EventEmitter"," , proto = require('./proto')"," , utils = require('./utils')"," , path = require('path')"," , basename = path.basename"," , fs = require('fs');","","// node patches","","require('./patch');","","// expose createServer() as the module","","exports = module.exports = createServer;","","/**"," * Framework version."," */","","exports.version = '2.6.1';","","/**"," * Expose mime module."," */","","exports.mime = require('./middleware/static').mime;","","/**"," * Expose the prototype."," */","","exports.proto = proto;","","/**"," * Auto-load middleware getters."," */","","exports.middleware = {};","","/**"," * Expose utilities."," */","","exports.utils = utils;","","/**"," * Create a new connect server."," *"," * @return {Function}"," * @api public"," */","","function createServer() {"," function app(req, res){ app.handle(req, res); }"," utils.merge(app, proto);"," utils.merge(app, EventEmitter.prototype);"," app.route = '/';"," app.stack = [];"," for (var i = 0; i < arguments.length; ++i) {"," app.use(arguments[i]);"," }"," return app;","};","","/**"," * Support old `.createServer()` method."," */","","createServer.createServer = createServer;","","/**"," * Auto-load bundled middleware with getters."," */","","fs.readdirSync(__dirname + '/middleware').forEach(function(filename){"," if (!/\\.js$/.test(filename)) return;"," var name = basename(filename, '.js');"," function load(){ return require('./middleware/' + name); }"," exports.middleware.__defineGetter__(name, load);"," exports.__defineGetter__(name, load);","});"]; diff --git a/node_modules/express/node_modules/connect/lib-cov/index.js b/node_modules/express/node_modules/connect/lib-cov/index.js new file mode 100644 index 0000000..e6bb1c7 --- /dev/null +++ b/node_modules/express/node_modules/connect/lib-cov/index.js @@ -0,0 +1,6 @@ +/* automatically generated by JSCoverage - do not edit */ +if (typeof _$jscoverage === 'undefined') _$jscoverage = {}; +if (! _$jscoverage['index.js']) { + _$jscoverage['index.js'] = []; +} +_$jscoverage['index.js'].source = ["","/**"," * Connect is a middleware framework for node,"," * shipping with over 18 bundled middleware and a rich selection of"," * 3rd-party middleware."," *"," * var app = connect()"," * .use(connect.logger('dev'))"," * .use(connect.static('public'))"," * .use(function(req, res){"," * res.end('hello world\\n');"," * })"," * .listen(3000);"," * "," * Installation:"," * "," * $ npm install connect"," *"," * Middleware:"," *"," * - [logger](logger.html) request logger with custom format support"," * - [csrf](csrf.html) Cross-site request forgery protection"," * - [compress](compress.html) Gzip compression middleware"," * - [basicAuth](basicAuth.html) basic http authentication"," * - [bodyParser](bodyParser.html) extensible request body parser"," * - [json](json.html) application/json parser"," * - [urlencoded](urlencoded.html) application/x-www-form-urlencoded parser"," * - [multipart](multipart.html) multipart/form-data parser"," * - [timeout](timeout.html) request timeouts"," * - [cookieParser](cookieParser.html) cookie parser"," * - [session](session.html) session management support with bundled MemoryStore"," * - [cookieSession](cookieSession.html) cookie-based session support"," * - [methodOverride](methodOverride.html) faux HTTP method support"," * - [responseTime](responseTime.html) calculates response-time and exposes via X-Response-Time"," * - [staticCache](staticCache.html) memory cache layer for the static() middleware"," * - [static](static.html) streaming static file server supporting `Range` and more"," * - [directory](directory.html) directory listing middleware"," * - [vhost](vhost.html) virtual host sub-domain mapping middleware"," * - [favicon](favicon.html) efficient favicon server (with default icon)"," * - [limit](limit.html) limit the bytesize of request bodies"," * - [query](query.html) automatic querystring parser, populating `req.query`"," * - [errorHandler](errorHandler.html) flexible error handler"," *"," * Links:"," * "," * - list of [3rd-party](https://github.com/senchalabs/connect/wiki) middleware"," * - GitHub [repository](http://github.com/senchalabs/connect)"," * - [test documentation](https://github.com/senchalabs/connect/blob/gh-pages/tests.md)"," * "," */"]; diff --git a/node_modules/express/node_modules/connect/lib-cov/middleware/basicAuth.js b/node_modules/express/node_modules/connect/lib-cov/middleware/basicAuth.js new file mode 100644 index 0000000..c9e7d63 --- /dev/null +++ b/node_modules/express/node_modules/connect/lib-cov/middleware/basicAuth.js @@ -0,0 +1,128 @@ +/* automatically generated by JSCoverage - do not edit */ +if (typeof _$jscoverage === 'undefined') _$jscoverage = {}; +if (! _$jscoverage['middleware/basicAuth.js']) { + _$jscoverage['middleware/basicAuth.js'] = []; + _$jscoverage['middleware/basicAuth.js'][13] = 0; + _$jscoverage['middleware/basicAuth.js'][48] = 0; + _$jscoverage['middleware/basicAuth.js'][49] = 0; + _$jscoverage['middleware/basicAuth.js'][52] = 0; + _$jscoverage['middleware/basicAuth.js'][53] = 0; + _$jscoverage['middleware/basicAuth.js'][54] = 0; + _$jscoverage['middleware/basicAuth.js'][55] = 0; + _$jscoverage['middleware/basicAuth.js'][56] = 0; + _$jscoverage['middleware/basicAuth.js'][57] = 0; + _$jscoverage['middleware/basicAuth.js'][58] = 0; + _$jscoverage['middleware/basicAuth.js'][62] = 0; + _$jscoverage['middleware/basicAuth.js'][64] = 0; + _$jscoverage['middleware/basicAuth.js'][65] = 0; + _$jscoverage['middleware/basicAuth.js'][67] = 0; + _$jscoverage['middleware/basicAuth.js'][68] = 0; + _$jscoverage['middleware/basicAuth.js'][70] = 0; + _$jscoverage['middleware/basicAuth.js'][72] = 0; + _$jscoverage['middleware/basicAuth.js'][74] = 0; + _$jscoverage['middleware/basicAuth.js'][78] = 0; + _$jscoverage['middleware/basicAuth.js'][80] = 0; + _$jscoverage['middleware/basicAuth.js'][84] = 0; + _$jscoverage['middleware/basicAuth.js'][85] = 0; + _$jscoverage['middleware/basicAuth.js'][86] = 0; + _$jscoverage['middleware/basicAuth.js'][87] = 0; + _$jscoverage['middleware/basicAuth.js'][88] = 0; + _$jscoverage['middleware/basicAuth.js'][89] = 0; + _$jscoverage['middleware/basicAuth.js'][90] = 0; + _$jscoverage['middleware/basicAuth.js'][94] = 0; + _$jscoverage['middleware/basicAuth.js'][95] = 0; + _$jscoverage['middleware/basicAuth.js'][96] = 0; + _$jscoverage['middleware/basicAuth.js'][98] = 0; +} +_$jscoverage['middleware/basicAuth.js'][13]++; +var utils = require("../utils"), unauthorized = utils.unauthorized; +_$jscoverage['middleware/basicAuth.js'][48]++; +module.exports = (function basicAuth(callback, realm) { + _$jscoverage['middleware/basicAuth.js'][49]++; + var username, password; + _$jscoverage['middleware/basicAuth.js'][52]++; + if ("string" == typeof callback) { + _$jscoverage['middleware/basicAuth.js'][53]++; + username = callback; + _$jscoverage['middleware/basicAuth.js'][54]++; + password = realm; + _$jscoverage['middleware/basicAuth.js'][55]++; + if ("string" != typeof password) { + _$jscoverage['middleware/basicAuth.js'][55]++; + throw new Error("password argument required"); + } + _$jscoverage['middleware/basicAuth.js'][56]++; + realm = arguments[2]; + _$jscoverage['middleware/basicAuth.js'][57]++; + callback = (function (user, pass) { + _$jscoverage['middleware/basicAuth.js'][58]++; + return user == username && pass == password; +}); + } + _$jscoverage['middleware/basicAuth.js'][62]++; + realm = realm || "Authorization Required"; + _$jscoverage['middleware/basicAuth.js'][64]++; + return (function (req, res, next) { + _$jscoverage['middleware/basicAuth.js'][65]++; + var authorization = req.headers.authorization; + _$jscoverage['middleware/basicAuth.js'][67]++; + if (req.user) { + _$jscoverage['middleware/basicAuth.js'][67]++; + return next(); + } + _$jscoverage['middleware/basicAuth.js'][68]++; + if (! authorization) { + _$jscoverage['middleware/basicAuth.js'][68]++; + return unauthorized(res, realm); + } + _$jscoverage['middleware/basicAuth.js'][70]++; + var parts = authorization.split(" "); + _$jscoverage['middleware/basicAuth.js'][72]++; + if (parts.length !== 2) { + _$jscoverage['middleware/basicAuth.js'][72]++; + return next(utils.error(400)); + } + _$jscoverage['middleware/basicAuth.js'][74]++; + var scheme = parts[0], credentials = new Buffer(parts[1], "base64").toString(), index = credentials.indexOf(":"); + _$jscoverage['middleware/basicAuth.js'][78]++; + if ("Basic" != scheme || index < 0) { + _$jscoverage['middleware/basicAuth.js'][78]++; + return next(utils.error(400)); + } + _$jscoverage['middleware/basicAuth.js'][80]++; + var user = credentials.slice(0, index), pass = credentials.slice(index + 1); + _$jscoverage['middleware/basicAuth.js'][84]++; + if (callback.length >= 3) { + _$jscoverage['middleware/basicAuth.js'][85]++; + var pause = utils.pause(req); + _$jscoverage['middleware/basicAuth.js'][86]++; + callback(user, pass, (function (err, user) { + _$jscoverage['middleware/basicAuth.js'][87]++; + if (err || ! user) { + _$jscoverage['middleware/basicAuth.js'][87]++; + return unauthorized(res, realm); + } + _$jscoverage['middleware/basicAuth.js'][88]++; + req.user = req.remoteUser = user; + _$jscoverage['middleware/basicAuth.js'][89]++; + next(); + _$jscoverage['middleware/basicAuth.js'][90]++; + pause.resume(); +})); + } + else { + _$jscoverage['middleware/basicAuth.js'][94]++; + if (callback(user, pass)) { + _$jscoverage['middleware/basicAuth.js'][95]++; + req.user = req.remoteUser = user; + _$jscoverage['middleware/basicAuth.js'][96]++; + next(); + } + else { + _$jscoverage['middleware/basicAuth.js'][98]++; + unauthorized(res, realm); + } + } +}); +}); +_$jscoverage['middleware/basicAuth.js'].source = ["","/*!"," * Connect - basicAuth"," * Copyright(c) 2010 Sencha Inc."," * Copyright(c) 2011 TJ Holowaychuk"," * MIT Licensed"," */","","/**"," * Module dependencies."," */","","var utils = require('../utils')"," , unauthorized = utils.unauthorized;","","/**"," * Basic Auth:"," *"," * Enfore basic authentication by providing a `callback(user, pass)`,"," * which must return `true` in order to gain access. Alternatively an async"," * method is provided as well, invoking `callback(user, pass, callback)`. Populates"," * `req.user`. The final alternative is simply passing username / password"," * strings."," *"," * Simple username and password"," *"," * connect(connect.basicAuth('username', 'password'));"," *"," * Callback verification"," *"," * connect()"," * .use(connect.basicAuth(function(user, pass){"," * return 'tj' == user & 'wahoo' == pass;"," * }))"," *"," * Async callback verification, accepting `fn(err, user)`."," *"," * connect()"," * .use(connect.basicAuth(function(user, pass, fn){"," * User.authenticate({ user: user, pass: pass }, fn);"," * }))"," *"," * @param {Function|String} callback or username"," * @param {String} realm"," * @api public"," */","","module.exports = function basicAuth(callback, realm) {"," var username, password;",""," // user / pass strings"," if ('string' == typeof callback) {"," username = callback;"," password = realm;"," if ('string' != typeof password) throw new Error('password argument required');"," realm = arguments[2];"," callback = function(user, pass){"," return user == username && pass == password;"," }"," }",""," realm = realm || 'Authorization Required';",""," return function(req, res, next) {"," var authorization = req.headers.authorization;",""," if (req.user) return next();"," if (!authorization) return unauthorized(res, realm);",""," var parts = authorization.split(' ');",""," if (parts.length !== 2) return next(utils.error(400));",""," var scheme = parts[0]"," , credentials = new Buffer(parts[1], 'base64').toString()"," , index = credentials.indexOf(':');",""," if ('Basic' != scheme || index < 0) return next(utils.error(400));"," "," var user = credentials.slice(0, index)"," , pass = credentials.slice(index + 1);",""," // async"," if (callback.length >= 3) {"," var pause = utils.pause(req);"," callback(user, pass, function(err, user){"," if (err || !user) return unauthorized(res, realm);"," req.user = req.remoteUser = user;"," next();"," pause.resume();"," });"," // sync"," } else {"," if (callback(user, pass)) {"," req.user = req.remoteUser = user;"," next();"," } else {"," unauthorized(res, realm);"," }"," }"," }","};",""]; diff --git a/node_modules/express/node_modules/connect/lib-cov/middleware/bodyParser.js b/node_modules/express/node_modules/connect/lib-cov/middleware/bodyParser.js new file mode 100644 index 0000000..a108b97 --- /dev/null +++ b/node_modules/express/node_modules/connect/lib-cov/middleware/bodyParser.js @@ -0,0 +1,43 @@ +/* automatically generated by JSCoverage - do not edit */ +if (typeof _$jscoverage === 'undefined') _$jscoverage = {}; +if (! _$jscoverage['middleware/bodyParser.js']) { + _$jscoverage['middleware/bodyParser.js'] = []; + _$jscoverage['middleware/bodyParser.js'][13] = 0; + _$jscoverage['middleware/bodyParser.js'][47] = 0; + _$jscoverage['middleware/bodyParser.js'][48] = 0; + _$jscoverage['middleware/bodyParser.js'][52] = 0; + _$jscoverage['middleware/bodyParser.js'][53] = 0; + _$jscoverage['middleware/bodyParser.js'][54] = 0; + _$jscoverage['middleware/bodyParser.js'][55] = 0; + _$jscoverage['middleware/bodyParser.js'][56] = 0; + _$jscoverage['middleware/bodyParser.js'][57] = 0; +} +_$jscoverage['middleware/bodyParser.js'][13]++; +var multipart = require("./multipart"), urlencoded = require("./urlencoded"), json = require("./json"); +_$jscoverage['middleware/bodyParser.js'][47]++; +exports = module.exports = (function bodyParser(options) { + _$jscoverage['middleware/bodyParser.js'][48]++; + var _urlencoded = urlencoded(options), _multipart = multipart(options), _json = json(options); + _$jscoverage['middleware/bodyParser.js'][52]++; + return (function bodyParser(req, res, next) { + _$jscoverage['middleware/bodyParser.js'][53]++; + _json(req, res, (function (err) { + _$jscoverage['middleware/bodyParser.js'][54]++; + if (err) { + _$jscoverage['middleware/bodyParser.js'][54]++; + return next(err); + } + _$jscoverage['middleware/bodyParser.js'][55]++; + _urlencoded(req, res, (function (err) { + _$jscoverage['middleware/bodyParser.js'][56]++; + if (err) { + _$jscoverage['middleware/bodyParser.js'][56]++; + return next(err); + } + _$jscoverage['middleware/bodyParser.js'][57]++; + _multipart(req, res, next); +})); +})); +}); +}); +_$jscoverage['middleware/bodyParser.js'].source = ["","/*!"," * Connect - bodyParser"," * Copyright(c) 2010 Sencha Inc."," * Copyright(c) 2011 TJ Holowaychuk"," * MIT Licensed"," */","","/**"," * Module dependencies."," */","","var multipart = require('./multipart')"," , urlencoded = require('./urlencoded')"," , json = require('./json');","","/**"," * Body parser:"," * "," * Parse request bodies, supports _application/json_,"," * _application/x-www-form-urlencoded_, and _multipart/form-data_."," *"," * This is equivalent to: "," *"," * app.use(connect.json());"," * app.use(connect.urlencoded());"," * app.use(connect.multipart());"," *"," * Examples:"," *"," * connect()"," * .use(connect.bodyParser())"," * .use(function(req, res) {"," * res.end('viewing user ' + req.body.user.name);"," * });"," *"," * $ curl -d 'user[name]=tj' http://local/"," * $ curl -d '{\"user\":{\"name\":\"tj\"}}' -H \"Content-Type: application/json\" http://local/"," *"," * View [json](json.html), [urlencoded](urlencoded.html), and [multipart](multipart.html) for more info."," *"," * @param {Object} options"," * @return {Function}"," * @api public"," */","","exports = module.exports = function bodyParser(options){"," var _urlencoded = urlencoded(options)"," , _multipart = multipart(options)"," , _json = json(options);",""," return function bodyParser(req, res, next) {"," _json(req, res, function(err){"," if (err) return next(err);"," _urlencoded(req, res, function(err){"," if (err) return next(err);"," _multipart(req, res, next);"," });"," });"," }","};"]; diff --git a/node_modules/express/node_modules/connect/lib-cov/middleware/compress.js b/node_modules/express/node_modules/connect/lib-cov/middleware/compress.js new file mode 100644 index 0000000..aebd5f1 --- /dev/null +++ b/node_modules/express/node_modules/connect/lib-cov/middleware/compress.js @@ -0,0 +1,159 @@ +/* automatically generated by JSCoverage - do not edit */ +if (typeof _$jscoverage === 'undefined') _$jscoverage = {}; +if (! _$jscoverage['middleware/compress.js']) { + _$jscoverage['middleware/compress.js'] = []; + _$jscoverage['middleware/compress.js'][12] = 0; + _$jscoverage['middleware/compress.js'][18] = 0; + _$jscoverage['middleware/compress.js'][27] = 0; + _$jscoverage['middleware/compress.js'][28] = 0; + _$jscoverage['middleware/compress.js'][61] = 0; + _$jscoverage['middleware/compress.js'][62] = 0; + _$jscoverage['middleware/compress.js'][63] = 0; + _$jscoverage['middleware/compress.js'][66] = 0; + _$jscoverage['middleware/compress.js'][67] = 0; + _$jscoverage['middleware/compress.js'][74] = 0; + _$jscoverage['middleware/compress.js'][78] = 0; + _$jscoverage['middleware/compress.js'][79] = 0; + _$jscoverage['middleware/compress.js'][80] = 0; + _$jscoverage['middleware/compress.js'][85] = 0; + _$jscoverage['middleware/compress.js'][86] = 0; + _$jscoverage['middleware/compress.js'][87] = 0; + _$jscoverage['middleware/compress.js'][92] = 0; + _$jscoverage['middleware/compress.js'][93] = 0; + _$jscoverage['middleware/compress.js'][96] = 0; + _$jscoverage['middleware/compress.js'][99] = 0; + _$jscoverage['middleware/compress.js'][102] = 0; + _$jscoverage['middleware/compress.js'][105] = 0; + _$jscoverage['middleware/compress.js'][108] = 0; + _$jscoverage['middleware/compress.js'][111] = 0; + _$jscoverage['middleware/compress.js'][112] = 0; + _$jscoverage['middleware/compress.js'][113] = 0; + _$jscoverage['middleware/compress.js'][114] = 0; + _$jscoverage['middleware/compress.js'][115] = 0; + _$jscoverage['middleware/compress.js'][121] = 0; + _$jscoverage['middleware/compress.js'][124] = 0; + _$jscoverage['middleware/compress.js'][127] = 0; + _$jscoverage['middleware/compress.js'][128] = 0; + _$jscoverage['middleware/compress.js'][132] = 0; + _$jscoverage['middleware/compress.js'][133] = 0; + _$jscoverage['middleware/compress.js'][136] = 0; + _$jscoverage['middleware/compress.js'][137] = 0; + _$jscoverage['middleware/compress.js'][140] = 0; + _$jscoverage['middleware/compress.js'][141] = 0; + _$jscoverage['middleware/compress.js'][145] = 0; +} +_$jscoverage['middleware/compress.js'][12]++; +var zlib = require("zlib"); +_$jscoverage['middleware/compress.js'][18]++; +exports.methods = {gzip: zlib.createGzip, deflate: zlib.createDeflate}; +_$jscoverage['middleware/compress.js'][27]++; +exports.filter = (function (req, res) { + _$jscoverage['middleware/compress.js'][28]++; + return /json|text|javascript/.test(res.getHeader("Content-Type")); +}); +_$jscoverage['middleware/compress.js'][61]++; +module.exports = (function compress(options) { + _$jscoverage['middleware/compress.js'][62]++; + options = options || {}; + _$jscoverage['middleware/compress.js'][63]++; + var names = Object.keys(exports.methods), filter = options.filter || exports.filter; + _$jscoverage['middleware/compress.js'][66]++; + return (function (req, res, next) { + _$jscoverage['middleware/compress.js'][67]++; + var accept = req.headers["accept-encoding"], write = res.write, end = res.end, stream, method; + _$jscoverage['middleware/compress.js'][74]++; + res.setHeader("Vary", "Accept-Encoding"); + _$jscoverage['middleware/compress.js'][78]++; + res.write = (function (chunk, encoding) { + _$jscoverage['middleware/compress.js'][79]++; + if (! this.headerSent) { + _$jscoverage['middleware/compress.js'][79]++; + this._implicitHeader(); + } + _$jscoverage['middleware/compress.js'][80]++; + return stream? stream.write(new Buffer(chunk, encoding)): write.call(res, chunk, encoding); +}); + _$jscoverage['middleware/compress.js'][85]++; + res.end = (function (chunk, encoding) { + _$jscoverage['middleware/compress.js'][86]++; + if (chunk) { + _$jscoverage['middleware/compress.js'][86]++; + this.write(chunk, encoding); + } + _$jscoverage['middleware/compress.js'][87]++; + return stream? stream.end(): end.call(res); +}); + _$jscoverage['middleware/compress.js'][92]++; + res.on("header", (function () { + _$jscoverage['middleware/compress.js'][93]++; + var encoding = res.getHeader("Content-Encoding") || "identity"; + _$jscoverage['middleware/compress.js'][96]++; + if ("identity" != encoding) { + _$jscoverage['middleware/compress.js'][96]++; + return; + } + _$jscoverage['middleware/compress.js'][99]++; + if (! filter(req, res)) { + _$jscoverage['middleware/compress.js'][99]++; + return; + } + _$jscoverage['middleware/compress.js'][102]++; + if (! accept) { + _$jscoverage['middleware/compress.js'][102]++; + return; + } + _$jscoverage['middleware/compress.js'][105]++; + if ("HEAD" == req.method) { + _$jscoverage['middleware/compress.js'][105]++; + return; + } + _$jscoverage['middleware/compress.js'][108]++; + if ("*" == accept.trim()) { + _$jscoverage['middleware/compress.js'][108]++; + method = "gzip"; + } + _$jscoverage['middleware/compress.js'][111]++; + if (! method) { + _$jscoverage['middleware/compress.js'][112]++; + for (var i = 0, len = names.length; i < len; ++i) { + _$jscoverage['middleware/compress.js'][113]++; + if (~ accept.indexOf(names[i])) { + _$jscoverage['middleware/compress.js'][114]++; + method = names[i]; + _$jscoverage['middleware/compress.js'][115]++; + break; + } +} + } + _$jscoverage['middleware/compress.js'][121]++; + if (! method) { + _$jscoverage['middleware/compress.js'][121]++; + return; + } + _$jscoverage['middleware/compress.js'][124]++; + stream = exports.methods[method](options); + _$jscoverage['middleware/compress.js'][127]++; + res.setHeader("Content-Encoding", method); + _$jscoverage['middleware/compress.js'][128]++; + res.removeHeader("Content-Length"); + _$jscoverage['middleware/compress.js'][132]++; + stream.on("data", (function (chunk) { + _$jscoverage['middleware/compress.js'][133]++; + write.call(res, chunk); +})); + _$jscoverage['middleware/compress.js'][136]++; + stream.on("end", (function () { + _$jscoverage['middleware/compress.js'][137]++; + end.call(res); +})); + _$jscoverage['middleware/compress.js'][140]++; + stream.on("drain", (function () { + _$jscoverage['middleware/compress.js'][141]++; + res.emit("drain"); +})); +})); + _$jscoverage['middleware/compress.js'][145]++; + next(); +}); +}); +_$jscoverage['middleware/compress.js'].source = ["/*!"," * Connect - compress"," * Copyright(c) 2010 Sencha Inc."," * Copyright(c) 2011 TJ Holowaychuk"," * MIT Licensed"," */","","/**"," * Module dependencies."," */","","var zlib = require('zlib');","","/**"," * Supported content-encoding methods."," */","","exports.methods = {"," gzip: zlib.createGzip"," , deflate: zlib.createDeflate","};","","/**"," * Default filter function."," */","","exports.filter = function(req, res){"," return /json|text|javascript/.test(res.getHeader('Content-Type'));","};","","/**"," * Compress:"," *"," * Compress response data with gzip/deflate."," *"," * Filter:"," *"," * A `filter` callback function may be passed to"," * replace the default logic of:"," *"," * exports.filter = function(req, res){"," * return /json|text|javascript/.test(res.getHeader('Content-Type'));"," * };"," *"," * Options:"," *"," * All remaining options are passed to the gzip/deflate"," * creation functions. Consult node's docs for additional details."," *"," * - `chunkSize` (default: 16*1024)"," * - `windowBits`"," * - `level`: 0-9 where 0 is no compression, and 9 is slow but best compression"," * - `memLevel`: 1-9 low is slower but uses less memory, high is fast but uses more"," * - `strategy`: compression strategy"," *"," * @param {Object} options"," * @return {Function}"," * @api public"," */","","module.exports = function compress(options) {"," options = options || {};"," var names = Object.keys(exports.methods)"," , filter = options.filter || exports.filter;",""," return function(req, res, next){"," var accept = req.headers['accept-encoding']"," , write = res.write"," , end = res.end"," , stream"," , method;",""," // vary"," res.setHeader('Vary', 'Accept-Encoding');",""," // proxy",""," res.write = function(chunk, encoding){"," if (!this.headerSent) this._implicitHeader();"," return stream"," ? stream.write(new Buffer(chunk, encoding))"," : write.call(res, chunk, encoding);"," };",""," res.end = function(chunk, encoding){"," if (chunk) this.write(chunk, encoding);"," return stream"," ? stream.end()"," : end.call(res);"," };",""," res.on('header', function(){"," var encoding = res.getHeader('Content-Encoding') || 'identity';",""," // already encoded"," if ('identity' != encoding) return; ",""," // default request filter"," if (!filter(req, res)) return;",""," // SHOULD use identity"," if (!accept) return;",""," // head"," if ('HEAD' == req.method) return;",""," // default to gzip"," if ('*' == accept.trim()) method = 'gzip';",""," // compression method"," if (!method) {"," for (var i = 0, len = names.length; i < len; ++i) {"," if (~accept.indexOf(names[i])) {"," method = names[i];"," break;"," }"," }"," }",""," // compression method"," if (!method) return;",""," // compression stream"," stream = exports.methods[method](options);",""," // header fields"," res.setHeader('Content-Encoding', method);"," res.removeHeader('Content-Length');",""," // compression",""," stream.on('data', function(chunk){"," write.call(res, chunk);"," });",""," stream.on('end', function(){"," end.call(res);"," });",""," stream.on('drain', function() {"," res.emit('drain');"," });"," });",""," next();"," };","};"]; diff --git a/node_modules/express/node_modules/connect/lib-cov/middleware/cookieParser.js b/node_modules/express/node_modules/connect/lib-cov/middleware/cookieParser.js new file mode 100644 index 0000000..7f462d1 --- /dev/null +++ b/node_modules/express/node_modules/connect/lib-cov/middleware/cookieParser.js @@ -0,0 +1,70 @@ +/* automatically generated by JSCoverage - do not edit */ +if (typeof _$jscoverage === 'undefined') _$jscoverage = {}; +if (! _$jscoverage['middleware/cookieParser.js']) { + _$jscoverage['middleware/cookieParser.js'] = []; + _$jscoverage['middleware/cookieParser.js'][13] = 0; + _$jscoverage['middleware/cookieParser.js'][38] = 0; + _$jscoverage['middleware/cookieParser.js'][39] = 0; + _$jscoverage['middleware/cookieParser.js'][40] = 0; + _$jscoverage['middleware/cookieParser.js'][41] = 0; + _$jscoverage['middleware/cookieParser.js'][43] = 0; + _$jscoverage['middleware/cookieParser.js'][44] = 0; + _$jscoverage['middleware/cookieParser.js'][45] = 0; + _$jscoverage['middleware/cookieParser.js'][47] = 0; + _$jscoverage['middleware/cookieParser.js'][48] = 0; + _$jscoverage['middleware/cookieParser.js'][49] = 0; + _$jscoverage['middleware/cookieParser.js'][50] = 0; + _$jscoverage['middleware/cookieParser.js'][51] = 0; + _$jscoverage['middleware/cookieParser.js'][52] = 0; + _$jscoverage['middleware/cookieParser.js'][54] = 0; + _$jscoverage['middleware/cookieParser.js'][56] = 0; + _$jscoverage['middleware/cookieParser.js'][57] = 0; + _$jscoverage['middleware/cookieParser.js'][60] = 0; +} +_$jscoverage['middleware/cookieParser.js'][13]++; +var utils = require("./../utils"), cookie = require("cookie"); +_$jscoverage['middleware/cookieParser.js'][38]++; +module.exports = (function cookieParser(secret) { + _$jscoverage['middleware/cookieParser.js'][39]++; + return (function cookieParser(req, res, next) { + _$jscoverage['middleware/cookieParser.js'][40]++; + if (req.cookies) { + _$jscoverage['middleware/cookieParser.js'][40]++; + return next(); + } + _$jscoverage['middleware/cookieParser.js'][41]++; + var cookies = req.headers.cookie; + _$jscoverage['middleware/cookieParser.js'][43]++; + req.secret = secret; + _$jscoverage['middleware/cookieParser.js'][44]++; + req.cookies = {}; + _$jscoverage['middleware/cookieParser.js'][45]++; + req.signedCookies = {}; + _$jscoverage['middleware/cookieParser.js'][47]++; + if (cookies) { + _$jscoverage['middleware/cookieParser.js'][48]++; + try { + _$jscoverage['middleware/cookieParser.js'][49]++; + req.cookies = cookie.parse(cookies); + _$jscoverage['middleware/cookieParser.js'][50]++; + if (secret) { + _$jscoverage['middleware/cookieParser.js'][51]++; + req.signedCookies = utils.parseSignedCookies(req.cookies, secret); + _$jscoverage['middleware/cookieParser.js'][52]++; + req.signedCookies = utils.parseJSONCookies(req.signedCookies); + } + _$jscoverage['middleware/cookieParser.js'][54]++; + req.cookies = utils.parseJSONCookies(req.cookies); + } + catch (err) { + _$jscoverage['middleware/cookieParser.js'][56]++; + err.status = 400; + _$jscoverage['middleware/cookieParser.js'][57]++; + return next(err); + } + } + _$jscoverage['middleware/cookieParser.js'][60]++; + next(); +}); +}); +_$jscoverage['middleware/cookieParser.js'].source = ["","/*!"," * Connect - cookieParser"," * Copyright(c) 2010 Sencha Inc."," * Copyright(c) 2011 TJ Holowaychuk"," * MIT Licensed"," */","","/**"," * Module dependencies."," */","","var utils = require('./../utils')"," , cookie = require('cookie');","","/**"," * Cookie parser:"," *"," * Parse _Cookie_ header and populate `req.cookies`"," * with an object keyed by the cookie names. Optionally"," * you may enabled signed cookie support by passing"," * a `secret` string, which assigns `req.secret` so"," * it may be used by other middleware."," *"," * Examples:"," *"," * connect()"," * .use(connect.cookieParser('optional secret string'))"," * .use(function(req, res, next){"," * res.end(JSON.stringify(req.cookies));"," * })"," *"," * @param {String} secret"," * @return {Function}"," * @api public"," */","","module.exports = function cookieParser(secret){"," return function cookieParser(req, res, next) {"," if (req.cookies) return next();"," var cookies = req.headers.cookie;",""," req.secret = secret;"," req.cookies = {};"," req.signedCookies = {};",""," if (cookies) {"," try {"," req.cookies = cookie.parse(cookies);"," if (secret) {"," req.signedCookies = utils.parseSignedCookies(req.cookies, secret);"," req.signedCookies = utils.parseJSONCookies(req.signedCookies);"," }"," req.cookies = utils.parseJSONCookies(req.cookies);"," } catch (err) {"," err.status = 400;"," return next(err);"," }"," }"," next();"," };","};"]; diff --git a/node_modules/express/node_modules/connect/lib-cov/middleware/cookieSession.js b/node_modules/express/node_modules/connect/lib-cov/middleware/cookieSession.js new file mode 100644 index 0000000..e54fa47 --- /dev/null +++ b/node_modules/express/node_modules/connect/lib-cov/middleware/cookieSession.js @@ -0,0 +1,132 @@ +/* automatically generated by JSCoverage - do not edit */ +if (typeof _$jscoverage === 'undefined') _$jscoverage = {}; +if (! _$jscoverage['middleware/cookieSession.js']) { + _$jscoverage['middleware/cookieSession.js'] = []; + _$jscoverage['middleware/cookieSession.js'][12] = 0; + _$jscoverage['middleware/cookieSession.js'][46] = 0; + _$jscoverage['middleware/cookieSession.js'][48] = 0; + _$jscoverage['middleware/cookieSession.js'][49] = 0; + _$jscoverage['middleware/cookieSession.js'][52] = 0; + _$jscoverage['middleware/cookieSession.js'][55] = 0; + _$jscoverage['middleware/cookieSession.js'][56] = 0; + _$jscoverage['middleware/cookieSession.js'][59] = 0; + _$jscoverage['middleware/cookieSession.js'][60] = 0; + _$jscoverage['middleware/cookieSession.js'][63] = 0; + _$jscoverage['middleware/cookieSession.js'][66] = 0; + _$jscoverage['middleware/cookieSession.js'][67] = 0; + _$jscoverage['middleware/cookieSession.js'][70] = 0; + _$jscoverage['middleware/cookieSession.js'][71] = 0; + _$jscoverage['middleware/cookieSession.js'][72] = 0; + _$jscoverage['middleware/cookieSession.js'][73] = 0; + _$jscoverage['middleware/cookieSession.js'][74] = 0; + _$jscoverage['middleware/cookieSession.js'][75] = 0; + _$jscoverage['middleware/cookieSession.js'][80] = 0; + _$jscoverage['middleware/cookieSession.js'][82] = 0; + _$jscoverage['middleware/cookieSession.js'][83] = 0; + _$jscoverage['middleware/cookieSession.js'][84] = 0; + _$jscoverage['middleware/cookieSession.js'][85] = 0; + _$jscoverage['middleware/cookieSession.js'][86] = 0; + _$jscoverage['middleware/cookieSession.js'][89] = 0; + _$jscoverage['middleware/cookieSession.js'][92] = 0; + _$jscoverage['middleware/cookieSession.js'][97] = 0; + _$jscoverage['middleware/cookieSession.js'][100] = 0; + _$jscoverage['middleware/cookieSession.js'][101] = 0; + _$jscoverage['middleware/cookieSession.js'][104] = 0; + _$jscoverage['middleware/cookieSession.js'][107] = 0; + _$jscoverage['middleware/cookieSession.js'][108] = 0; + _$jscoverage['middleware/cookieSession.js'][109] = 0; + _$jscoverage['middleware/cookieSession.js'][110] = 0; + _$jscoverage['middleware/cookieSession.js'][113] = 0; +} +_$jscoverage['middleware/cookieSession.js'][12]++; +var utils = require("./../utils"), Cookie = require("./session/cookie"), debug = require("debug")("connect:cookieSession"), signature = require("cookie-signature"), crc16 = require("crc").crc16; +_$jscoverage['middleware/cookieSession.js'][46]++; +module.exports = (function cookieSession(options) { + _$jscoverage['middleware/cookieSession.js'][48]++; + options = options || {}; + _$jscoverage['middleware/cookieSession.js'][49]++; + var key = options.key || "connect.sess", trustProxy = options.proxy; + _$jscoverage['middleware/cookieSession.js'][52]++; + return (function cookieSession(req, res, next) { + _$jscoverage['middleware/cookieSession.js'][55]++; + var secret = options.secret || req.secret; + _$jscoverage['middleware/cookieSession.js'][56]++; + if (! secret) { + _$jscoverage['middleware/cookieSession.js'][56]++; + throw new Error("`secret` option required for cookie sessions"); + } + _$jscoverage['middleware/cookieSession.js'][59]++; + req.session = {}; + _$jscoverage['middleware/cookieSession.js'][60]++; + var cookie = req.session.cookie = new Cookie(options.cookie); + _$jscoverage['middleware/cookieSession.js'][63]++; + if (0 != req.originalUrl.indexOf(cookie.path)) { + _$jscoverage['middleware/cookieSession.js'][63]++; + return next(); + } + _$jscoverage['middleware/cookieSession.js'][66]++; + if (! options.secret && req.secret) { + _$jscoverage['middleware/cookieSession.js'][67]++; + req.session = req.signedCookies[key] || {}; + } + else { + _$jscoverage['middleware/cookieSession.js'][70]++; + var rawCookie = req.cookies[key]; + _$jscoverage['middleware/cookieSession.js'][71]++; + if (rawCookie) { + _$jscoverage['middleware/cookieSession.js'][72]++; + var unsigned = utils.parseSignedCookie(rawCookie, secret); + _$jscoverage['middleware/cookieSession.js'][73]++; + if (unsigned) { + _$jscoverage['middleware/cookieSession.js'][74]++; + var originalHash = crc16(unsigned); + _$jscoverage['middleware/cookieSession.js'][75]++; + req.session = utils.parseJSONCookie(unsigned) || {}; + } + } + } + _$jscoverage['middleware/cookieSession.js'][80]++; + res.on("header", (function () { + _$jscoverage['middleware/cookieSession.js'][82]++; + if (! req.session) { + _$jscoverage['middleware/cookieSession.js'][83]++; + debug("clear session"); + _$jscoverage['middleware/cookieSession.js'][84]++; + cookie.expires = new Date(0); + _$jscoverage['middleware/cookieSession.js'][85]++; + res.setHeader("Set-Cookie", cookie.serialize(key, "")); + _$jscoverage['middleware/cookieSession.js'][86]++; + return; + } + _$jscoverage['middleware/cookieSession.js'][89]++; + delete req.session.cookie; + _$jscoverage['middleware/cookieSession.js'][92]++; + var proto = (req.headers["x-forwarded-proto"] || "").toLowerCase(), tls = req.connection.encrypted || (trustProxy && "https" == proto), secured = cookie.secure && tls; + _$jscoverage['middleware/cookieSession.js'][97]++; + if (cookie.secure && ! secured) { + _$jscoverage['middleware/cookieSession.js'][97]++; + return debug("not secured"); + } + _$jscoverage['middleware/cookieSession.js'][100]++; + debug("serializing %j", req.session); + _$jscoverage['middleware/cookieSession.js'][101]++; + var val = "j:" + JSON.stringify(req.session); + _$jscoverage['middleware/cookieSession.js'][104]++; + if (originalHash == crc16(val)) { + _$jscoverage['middleware/cookieSession.js'][104]++; + return debug("unmodified session"); + } + _$jscoverage['middleware/cookieSession.js'][107]++; + val = "s:" + signature.sign(val, secret); + _$jscoverage['middleware/cookieSession.js'][108]++; + val = cookie.serialize(key, val); + _$jscoverage['middleware/cookieSession.js'][109]++; + debug("set-cookie %j", cookie); + _$jscoverage['middleware/cookieSession.js'][110]++; + res.setHeader("Set-Cookie", val); +})); + _$jscoverage['middleware/cookieSession.js'][113]++; + next(); +}); +}); +_$jscoverage['middleware/cookieSession.js'].source = ["","/*!"," * Connect - cookieSession"," * Copyright(c) 2011 Sencha Inc."," * MIT Licensed"," */","","/**"," * Module dependencies."," */","","var utils = require('./../utils')"," , Cookie = require('./session/cookie')"," , debug = require('debug')('connect:cookieSession')"," , signature = require('cookie-signature')"," , crc16 = require('crc').crc16;","","/**"," * Cookie Session:"," *"," * Cookie session middleware."," *"," * var app = connect();"," * app.use(connect.cookieParser());"," * app.use(connect.cookieSession({ secret: 'tobo!', cookie: { maxAge: 60 * 60 * 1000 }}));"," *"," * Options:"," *"," * - `key` cookie name defaulting to `connect.sess`"," * - `secret` prevents cookie tampering"," * - `cookie` session cookie settings, defaulting to `{ path: '/', httpOnly: true, maxAge: null }`"," * - `proxy` trust the reverse proxy when setting secure cookies (via \"x-forwarded-proto\")"," *"," * Clearing sessions:"," *"," * To clear the session simply set its value to `null`,"," * `cookieSession()` will then respond with a 1970 Set-Cookie."," *"," * req.session = null;"," *"," * @param {Object} options"," * @return {Function}"," * @api public"," */","","module.exports = function cookieSession(options){"," // TODO: utilize Session/Cookie to unify API"," options = options || {};"," var key = options.key || 'connect.sess'"," , trustProxy = options.proxy;",""," return function cookieSession(req, res, next) {",""," // req.secret is for backwards compatibility"," var secret = options.secret || req.secret;"," if (!secret) throw new Error('`secret` option required for cookie sessions');",""," // default session"," req.session = {};"," var cookie = req.session.cookie = new Cookie(options.cookie);",""," // pathname mismatch"," if (0 != req.originalUrl.indexOf(cookie.path)) return next();",""," // cookieParser secret"," if (!options.secret && req.secret) {"," req.session = req.signedCookies[key] || {};"," } else {"," // TODO: refactor"," var rawCookie = req.cookies[key];"," if (rawCookie) {"," var unsigned = utils.parseSignedCookie(rawCookie, secret);"," if (unsigned) {"," var originalHash = crc16(unsigned);"," req.session = utils.parseJSONCookie(unsigned) || {};"," }"," }"," }",""," res.on('header', function(){"," // removed"," if (!req.session) {"," debug('clear session');"," cookie.expires = new Date(0);"," res.setHeader('Set-Cookie', cookie.serialize(key, ''));"," return;"," }",""," delete req.session.cookie;",""," // check security"," var proto = (req.headers['x-forwarded-proto'] || '').toLowerCase()"," , tls = req.connection.encrypted || (trustProxy && 'https' == proto)"," , secured = cookie.secure && tls;",""," // only send secure cookies via https"," if (cookie.secure && !secured) return debug('not secured');",""," // serialize"," debug('serializing %j', req.session);"," var val = 'j:' + JSON.stringify(req.session);",""," // compare hashes, no need to set-cookie if unchanged"," if (originalHash == crc16(val)) return debug('unmodified session');",""," // set-cookie"," val = 's:' + signature.sign(val, secret);"," val = cookie.serialize(key, val);"," debug('set-cookie %j', cookie);"," res.setHeader('Set-Cookie', val);"," });",""," next();"," };","};"]; diff --git a/node_modules/express/node_modules/connect/lib-cov/middleware/csrf.js b/node_modules/express/node_modules/connect/lib-cov/middleware/csrf.js new file mode 100644 index 0000000..f3919ed --- /dev/null +++ b/node_modules/express/node_modules/connect/lib-cov/middleware/csrf.js @@ -0,0 +1,51 @@ +/* automatically generated by JSCoverage - do not edit */ +if (typeof _$jscoverage === 'undefined') _$jscoverage = {}; +if (! _$jscoverage['middleware/csrf.js']) { + _$jscoverage['middleware/csrf.js'] = []; + _$jscoverage['middleware/csrf.js'][11] = 0; + _$jscoverage['middleware/csrf.js'][39] = 0; + _$jscoverage['middleware/csrf.js'][40] = 0; + _$jscoverage['middleware/csrf.js'][41] = 0; + _$jscoverage['middleware/csrf.js'][43] = 0; + _$jscoverage['middleware/csrf.js'][45] = 0; + _$jscoverage['middleware/csrf.js'][48] = 0; + _$jscoverage['middleware/csrf.js'][51] = 0; + _$jscoverage['middleware/csrf.js'][54] = 0; + _$jscoverage['middleware/csrf.js'][56] = 0; + _$jscoverage['middleware/csrf.js'][69] = 0; + _$jscoverage['middleware/csrf.js'][70] = 0; +} +_$jscoverage['middleware/csrf.js'][11]++; +var utils = require("../utils"); +_$jscoverage['middleware/csrf.js'][39]++; +module.exports = (function csrf(options) { + _$jscoverage['middleware/csrf.js'][40]++; + options = options || {}; + _$jscoverage['middleware/csrf.js'][41]++; + var value = options.value || defaultValue; + _$jscoverage['middleware/csrf.js'][43]++; + return (function (req, res, next) { + _$jscoverage['middleware/csrf.js'][45]++; + var token = req.session._csrf || (req.session._csrf = utils.uid(24)); + _$jscoverage['middleware/csrf.js'][48]++; + if ("GET" == req.method || "HEAD" == req.method || "OPTIONS" == req.method) { + _$jscoverage['middleware/csrf.js'][48]++; + return next(); + } + _$jscoverage['middleware/csrf.js'][51]++; + var val = value(req); + _$jscoverage['middleware/csrf.js'][54]++; + if (val != token) { + _$jscoverage['middleware/csrf.js'][54]++; + return next(utils.error(403)); + } + _$jscoverage['middleware/csrf.js'][56]++; + next(); +}); +}); +_$jscoverage['middleware/csrf.js'][69]++; +function defaultValue(req) { + _$jscoverage['middleware/csrf.js'][70]++; + return (req.body && req.body._csrf) || (req.query && req.query._csrf) || req.headers["x-csrf-token"]; +} +_$jscoverage['middleware/csrf.js'].source = ["/*!"," * Connect - csrf"," * Copyright(c) 2011 Sencha Inc."," * MIT Licensed"," */","","/**"," * Module dependencies."," */","","var utils = require('../utils');","","/**"," * Anti CSRF:"," *"," * CRSF protection middleware."," *"," * By default this middleware generates a token named \"_csrf\""," * which should be added to requests which mutate"," * state, within a hidden form field, query-string etc. This"," * token is validated against the visitor's `req.session._csrf`"," * property."," *"," * The default `value` function checks `req.body` generated"," * by the `bodyParser()` middleware, `req.query` generated"," * by `query()`, and the \"X-CSRF-Token\" header field."," *"," * This middleware requires session support, thus should be added"," * somewhere _below_ `session()` and `cookieParser()`."," *"," * Options:"," *"," * - `value` a function accepting the request, returning the token "," *"," * @param {Object} options"," * @api public"," */","","module.exports = function csrf(options) {"," options = options || {};"," var value = options.value || defaultValue;",""," return function(req, res, next){"," // generate CSRF token"," var token = req.session._csrf || (req.session._csrf = utils.uid(24));",""," // ignore these methods"," if ('GET' == req.method || 'HEAD' == req.method || 'OPTIONS' == req.method) return next();",""," // determine value"," var val = value(req);",""," // check"," if (val != token) return next(utils.error(403));"," "," next();"," }","};","","/**"," * Default value function, checking the `req.body`"," * and `req.query` for the CSRF token."," *"," * @param {IncomingMessage} req"," * @return {String}"," * @api private"," */","","function defaultValue(req) {"," return (req.body && req.body._csrf)"," || (req.query && req.query._csrf)"," || (req.headers['x-csrf-token']);","}"]; diff --git a/node_modules/express/node_modules/connect/lib-cov/middleware/directory.js b/node_modules/express/node_modules/connect/lib-cov/middleware/directory.js new file mode 100644 index 0000000..bc86b60 --- /dev/null +++ b/node_modules/express/node_modules/connect/lib-cov/middleware/directory.js @@ -0,0 +1,256 @@ +/* automatically generated by JSCoverage - do not edit */ +if (typeof _$jscoverage === 'undefined') _$jscoverage = {}; +if (! _$jscoverage['middleware/directory.js']) { + _$jscoverage['middleware/directory.js'] = []; + _$jscoverage['middleware/directory.js'][17] = 0; + _$jscoverage['middleware/directory.js'][29] = 0; + _$jscoverage['middleware/directory.js'][48] = 0; + _$jscoverage['middleware/directory.js'][49] = 0; + _$jscoverage['middleware/directory.js'][52] = 0; + _$jscoverage['middleware/directory.js'][53] = 0; + _$jscoverage['middleware/directory.js'][58] = 0; + _$jscoverage['middleware/directory.js'][59] = 0; + _$jscoverage['middleware/directory.js'][61] = 0; + _$jscoverage['middleware/directory.js'][70] = 0; + _$jscoverage['middleware/directory.js'][73] = 0; + _$jscoverage['middleware/directory.js'][76] = 0; + _$jscoverage['middleware/directory.js'][77] = 0; + _$jscoverage['middleware/directory.js'][81] = 0; + _$jscoverage['middleware/directory.js'][84] = 0; + _$jscoverage['middleware/directory.js'][85] = 0; + _$jscoverage['middleware/directory.js'][86] = 0; + _$jscoverage['middleware/directory.js'][87] = 0; + _$jscoverage['middleware/directory.js'][88] = 0; + _$jscoverage['middleware/directory.js'][91] = 0; + _$jscoverage['middleware/directory.js'][92] = 0; + _$jscoverage['middleware/directory.js'][93] = 0; + _$jscoverage['middleware/directory.js'][94] = 0; + _$jscoverage['middleware/directory.js'][99] = 0; + _$jscoverage['middleware/directory.js'][109] = 0; + _$jscoverage['middleware/directory.js'][110] = 0; + _$jscoverage['middleware/directory.js'][111] = 0; + _$jscoverage['middleware/directory.js'][112] = 0; + _$jscoverage['middleware/directory.js'][113] = 0; + _$jscoverage['middleware/directory.js'][114] = 0; + _$jscoverage['middleware/directory.js'][115] = 0; + _$jscoverage['middleware/directory.js'][120] = 0; + _$jscoverage['middleware/directory.js'][121] = 0; + _$jscoverage['middleware/directory.js'][122] = 0; + _$jscoverage['middleware/directory.js'][131] = 0; + _$jscoverage['middleware/directory.js'][132] = 0; + _$jscoverage['middleware/directory.js'][133] = 0; + _$jscoverage['middleware/directory.js'][134] = 0; + _$jscoverage['middleware/directory.js'][135] = 0; + _$jscoverage['middleware/directory.js'][142] = 0; + _$jscoverage['middleware/directory.js'][143] = 0; + _$jscoverage['middleware/directory.js'][144] = 0; + _$jscoverage['middleware/directory.js'][145] = 0; + _$jscoverage['middleware/directory.js'][146] = 0; + _$jscoverage['middleware/directory.js'][153] = 0; + _$jscoverage['middleware/directory.js'][154] = 0; + _$jscoverage['middleware/directory.js'][155] = 0; + _$jscoverage['middleware/directory.js'][156] = 0; + _$jscoverage['middleware/directory.js'][157] = 0; + _$jscoverage['middleware/directory.js'][165] = 0; + _$jscoverage['middleware/directory.js'][166] = 0; + _$jscoverage['middleware/directory.js'][167] = 0; + _$jscoverage['middleware/directory.js'][170] = 0; + _$jscoverage['middleware/directory.js'][171] = 0; + _$jscoverage['middleware/directory.js'][172] = 0; + _$jscoverage['middleware/directory.js'][173] = 0; + _$jscoverage['middleware/directory.js'][176] = 0; + _$jscoverage['middleware/directory.js'][194] = 0; + _$jscoverage['middleware/directory.js'][195] = 0; + _$jscoverage['middleware/directory.js'][196] = 0; + _$jscoverage['middleware/directory.js'][208] = 0; + _$jscoverage['middleware/directory.js'][209] = 0; + _$jscoverage['middleware/directory.js'][210] = 0; + _$jscoverage['middleware/directory.js'][218] = 0; +} +_$jscoverage['middleware/directory.js'][17]++; +var fs = require("fs"), parse = require("url").parse, utils = require("../utils"), path = require("path"), normalize = path.normalize, extname = path.extname, join = path.join; +_$jscoverage['middleware/directory.js'][29]++; +var cache = {}; +_$jscoverage['middleware/directory.js'][48]++; +exports = module.exports = (function directory(root, options) { + _$jscoverage['middleware/directory.js'][49]++; + options = options || {}; + _$jscoverage['middleware/directory.js'][52]++; + if (! root) { + _$jscoverage['middleware/directory.js'][52]++; + throw new Error("directory() root path required"); + } + _$jscoverage['middleware/directory.js'][53]++; + var hidden = options.hidden, icons = options.icons, filter = options.filter, root = normalize(root); + _$jscoverage['middleware/directory.js'][58]++; + return (function directory(req, res, next) { + _$jscoverage['middleware/directory.js'][59]++; + if ("GET" != req.method && "HEAD" != req.method) { + _$jscoverage['middleware/directory.js'][59]++; + return next(); + } + _$jscoverage['middleware/directory.js'][61]++; + var accept = req.headers.accept || "text/plain", url = parse(req.url), dir = decodeURIComponent(url.pathname), path = normalize(join(root, dir)), originalUrl = parse(req.originalUrl), originalDir = decodeURIComponent(originalUrl.pathname), showUp = path != root && path != root + "/"; + _$jscoverage['middleware/directory.js'][70]++; + if (~ path.indexOf("\u0000")) { + _$jscoverage['middleware/directory.js'][70]++; + return next(utils.error(400)); + } + _$jscoverage['middleware/directory.js'][73]++; + if (0 != path.indexOf(root)) { + _$jscoverage['middleware/directory.js'][73]++; + return next(utils.error(403)); + } + _$jscoverage['middleware/directory.js'][76]++; + fs.stat(path, (function (err, stat) { + _$jscoverage['middleware/directory.js'][77]++; + if (err) { + _$jscoverage['middleware/directory.js'][77]++; + return "ENOENT" == err.code? next(): next(err); + } + _$jscoverage['middleware/directory.js'][81]++; + if (! stat.isDirectory()) { + _$jscoverage['middleware/directory.js'][81]++; + return next(); + } + _$jscoverage['middleware/directory.js'][84]++; + fs.readdir(path, (function (err, files) { + _$jscoverage['middleware/directory.js'][85]++; + if (err) { + _$jscoverage['middleware/directory.js'][85]++; + return next(err); + } + _$jscoverage['middleware/directory.js'][86]++; + if (! hidden) { + _$jscoverage['middleware/directory.js'][86]++; + files = removeHidden(files); + } + _$jscoverage['middleware/directory.js'][87]++; + if (filter) { + _$jscoverage['middleware/directory.js'][87]++; + files = files.filter(filter); + } + _$jscoverage['middleware/directory.js'][88]++; + files.sort(); + _$jscoverage['middleware/directory.js'][91]++; + for (var key in exports) { + _$jscoverage['middleware/directory.js'][92]++; + if (~ accept.indexOf(key) || ~ accept.indexOf("*/*")) { + _$jscoverage['middleware/directory.js'][93]++; + exports[key](req, res, files, next, originalDir, showUp, icons); + _$jscoverage['middleware/directory.js'][94]++; + return; + } +} + _$jscoverage['middleware/directory.js'][99]++; + next(utils.error(406)); +})); +})); +}); +}); +_$jscoverage['middleware/directory.js'][109]++; +exports.html = (function (req, res, files, next, dir, showUp, icons) { + _$jscoverage['middleware/directory.js'][110]++; + fs.readFile(__dirname + "/../public/directory.html", "utf8", (function (err, str) { + _$jscoverage['middleware/directory.js'][111]++; + if (err) { + _$jscoverage['middleware/directory.js'][111]++; + return next(err); + } + _$jscoverage['middleware/directory.js'][112]++; + fs.readFile(__dirname + "/../public/style.css", "utf8", (function (err, style) { + _$jscoverage['middleware/directory.js'][113]++; + if (err) { + _$jscoverage['middleware/directory.js'][113]++; + return next(err); + } + _$jscoverage['middleware/directory.js'][114]++; + if (showUp) { + _$jscoverage['middleware/directory.js'][114]++; + files.unshift(".."); + } + _$jscoverage['middleware/directory.js'][115]++; + str = str.replace("{style}", style).replace("{files}", html(files, dir, icons)).replace("{directory}", dir).replace("{linked-path}", htmlPath(dir)); + _$jscoverage['middleware/directory.js'][120]++; + res.setHeader("Content-Type", "text/html"); + _$jscoverage['middleware/directory.js'][121]++; + res.setHeader("Content-Length", str.length); + _$jscoverage['middleware/directory.js'][122]++; + res.end(str); +})); +})); +}); +_$jscoverage['middleware/directory.js'][131]++; +exports.json = (function (req, res, files) { + _$jscoverage['middleware/directory.js'][132]++; + files = JSON.stringify(files); + _$jscoverage['middleware/directory.js'][133]++; + res.setHeader("Content-Type", "application/json"); + _$jscoverage['middleware/directory.js'][134]++; + res.setHeader("Content-Length", files.length); + _$jscoverage['middleware/directory.js'][135]++; + res.end(files); +}); +_$jscoverage['middleware/directory.js'][142]++; +exports.plain = (function (req, res, files) { + _$jscoverage['middleware/directory.js'][143]++; + files = files.join("\n") + "\n"; + _$jscoverage['middleware/directory.js'][144]++; + res.setHeader("Content-Type", "text/plain"); + _$jscoverage['middleware/directory.js'][145]++; + res.setHeader("Content-Length", files.length); + _$jscoverage['middleware/directory.js'][146]++; + res.end(files); +}); +_$jscoverage['middleware/directory.js'][153]++; +function htmlPath(dir) { + _$jscoverage['middleware/directory.js'][154]++; + var curr = []; + _$jscoverage['middleware/directory.js'][155]++; + return dir.split("/").map((function (part) { + _$jscoverage['middleware/directory.js'][156]++; + curr.push(part); + _$jscoverage['middleware/directory.js'][157]++; + return "" + part + ""; +})).join(" / "); +} +_$jscoverage['middleware/directory.js'][165]++; +function html(files, dir, useIcons) { + _$jscoverage['middleware/directory.js'][166]++; + return "
    " + files.map((function (file) { + _$jscoverage['middleware/directory.js'][167]++; + var icon = "", classes = []; + _$jscoverage['middleware/directory.js'][170]++; + if (useIcons && ".." != file) { + _$jscoverage['middleware/directory.js'][171]++; + icon = icons[extname(file)] || icons["default"]; + _$jscoverage['middleware/directory.js'][172]++; + icon = ""; + _$jscoverage['middleware/directory.js'][173]++; + classes.push("icon"); + } + _$jscoverage['middleware/directory.js'][176]++; + return "
  • " + icon + file + "
  • "; +})).join("\n") + "
"; +} +_$jscoverage['middleware/directory.js'][194]++; +function load(icon) { + _$jscoverage['middleware/directory.js'][195]++; + if (cache[icon]) { + _$jscoverage['middleware/directory.js'][195]++; + return cache[icon]; + } + _$jscoverage['middleware/directory.js'][196]++; + return cache[icon] = fs.readFileSync(__dirname + "/../public/icons/" + icon, "base64"); +} +_$jscoverage['middleware/directory.js'][208]++; +function removeHidden(files) { + _$jscoverage['middleware/directory.js'][209]++; + return files.filter((function (file) { + _$jscoverage['middleware/directory.js'][210]++; + return "." != file[0]; +})); +} +_$jscoverage['middleware/directory.js'][218]++; +var icons = {".js": "page_white_code_red.png", ".c": "page_white_c.png", ".h": "page_white_h.png", ".cc": "page_white_cplusplus.png", ".php": "page_white_php.png", ".rb": "page_white_ruby.png", ".cpp": "page_white_cplusplus.png", ".swf": "page_white_flash.png", ".pdf": "page_white_acrobat.png", "default": "page_white.png"}; +_$jscoverage['middleware/directory.js'].source = ["","/*!"," * Connect - directory"," * Copyright(c) 2011 Sencha Inc."," * Copyright(c) 2011 TJ Holowaychuk"," * MIT Licensed"," */","","// TODO: icon / style for directories","// TODO: arrow key navigation","// TODO: make icons extensible","","/**"," * Module dependencies."," */","","var fs = require('fs')"," , parse = require('url').parse"," , utils = require('../utils')"," , path = require('path')"," , normalize = path.normalize"," , extname = path.extname"," , join = path.join;","","/*!"," * Icon cache."," */","","var cache = {};","","/**"," * Directory:"," *"," * Serve directory listings with the given `root` path."," *"," * Options:"," *"," * - `hidden` display hidden (dot) files. Defaults to false."," * - `icons` display icons. Defaults to false."," * - `filter` Apply this filter function to files. Defaults to false."," *"," * @param {String} root"," * @param {Object} options"," * @return {Function}"," * @api public"," */","","exports = module.exports = function directory(root, options){"," options = options || {};",""," // root required"," if (!root) throw new Error('directory() root path required');"," var hidden = options.hidden"," , icons = options.icons"," , filter = options.filter"," , root = normalize(root);",""," return function directory(req, res, next) {"," if ('GET' != req.method && 'HEAD' != req.method) return next();",""," var accept = req.headers.accept || 'text/plain'"," , url = parse(req.url)"," , dir = decodeURIComponent(url.pathname)"," , path = normalize(join(root, dir))"," , originalUrl = parse(req.originalUrl)"," , originalDir = decodeURIComponent(originalUrl.pathname)"," , showUp = path != root && path != root + '/';",""," // null byte(s), bad request"," if (~path.indexOf('\\0')) return next(utils.error(400));",""," // malicious path, forbidden"," if (0 != path.indexOf(root)) return next(utils.error(403));",""," // check if we have a directory"," fs.stat(path, function(err, stat){"," if (err) return 'ENOENT' == err.code"," ? next()"," : next(err);",""," if (!stat.isDirectory()) return next();",""," // fetch files"," fs.readdir(path, function(err, files){"," if (err) return next(err);"," if (!hidden) files = removeHidden(files);"," if (filter) files = files.filter(filter);"," files.sort();",""," // content-negotiation"," for (var key in exports) {"," if (~accept.indexOf(key) || ~accept.indexOf('*/*')) {"," exports[key](req, res, files, next, originalDir, showUp, icons);"," return;"," }"," }",""," // not acceptable"," next(utils.error(406));"," });"," });"," };","};","","/**"," * Respond with text/html."," */","","exports.html = function(req, res, files, next, dir, showUp, icons){"," fs.readFile(__dirname + '/../public/directory.html', 'utf8', function(err, str){"," if (err) return next(err);"," fs.readFile(__dirname + '/../public/style.css', 'utf8', function(err, style){"," if (err) return next(err);"," if (showUp) files.unshift('..');"," str = str"," .replace('{style}', style)"," .replace('{files}', html(files, dir, icons))"," .replace('{directory}', dir)"," .replace('{linked-path}', htmlPath(dir));"," res.setHeader('Content-Type', 'text/html');"," res.setHeader('Content-Length', str.length);"," res.end(str);"," });"," });","};","","/**"," * Respond with application/json."," */","","exports.json = function(req, res, files){"," files = JSON.stringify(files);"," res.setHeader('Content-Type', 'application/json');"," res.setHeader('Content-Length', files.length);"," res.end(files);","};","","/**"," * Respond with text/plain."," */","","exports.plain = function(req, res, files){"," files = files.join('\\n') + '\\n';"," res.setHeader('Content-Type', 'text/plain');"," res.setHeader('Content-Length', files.length);"," res.end(files);","};","","/**"," * Map html `dir`, returning a linked path."," */","","function htmlPath(dir) {"," var curr = [];"," return dir.split('/').map(function(part){"," curr.push(part);"," return '<a href=\"' + curr.join('/') + '\">' + part + '</a>';"," }).join(' / ');","}","","/**"," * Map html `files`, returning an html unordered list."," */","","function html(files, dir, useIcons) {"," return '<ul id=\"files\">' + files.map(function(file){"," var icon = ''"," , classes = [];",""," if (useIcons && '..' != file) {"," icon = icons[extname(file)] || icons.default;"," icon = '<img src=\"data:image/png;base64,' + load(icon) + '\" />';"," classes.push('icon');"," }",""," return '<li><a href=\"'"," + join(dir, file)"," + '\" class=\"'"," + classes.join(' ') + '\"'"," + ' title=\"' + file + '\">'"," + icon + file + '</a></li>';",""," }).join('\\n') + '</ul>';","}","","/**"," * Load and cache the given `icon`."," *"," * @param {String} icon"," * @return {String}"," * @api private"," */","","function load(icon) {"," if (cache[icon]) return cache[icon];"," return cache[icon] = fs.readFileSync(__dirname + '/../public/icons/' + icon, 'base64');","}","","/**"," * Filter \"hidden\" `files`, aka files"," * beginning with a `.`."," *"," * @param {Array} files"," * @return {Array}"," * @api private"," */","","function removeHidden(files) {"," return files.filter(function(file){"," return '.' != file[0];"," });","}","","/**"," * Icon map."," */","","var icons = {"," '.js': 'page_white_code_red.png'"," , '.c': 'page_white_c.png'"," , '.h': 'page_white_h.png'"," , '.cc': 'page_white_cplusplus.png'"," , '.php': 'page_white_php.png'"," , '.rb': 'page_white_ruby.png'"," , '.cpp': 'page_white_cplusplus.png'"," , '.swf': 'page_white_flash.png'"," , '.pdf': 'page_white_acrobat.png'"," , 'default': 'page_white.png'","};"]; diff --git a/node_modules/express/node_modules/connect/lib-cov/middleware/errorHandler.js b/node_modules/express/node_modules/connect/lib-cov/middleware/errorHandler.js new file mode 100644 index 0000000..9a87bfa --- /dev/null +++ b/node_modules/express/node_modules/connect/lib-cov/middleware/errorHandler.js @@ -0,0 +1,104 @@ +/* automatically generated by JSCoverage - do not edit */ +if (typeof _$jscoverage === 'undefined') _$jscoverage = {}; +if (! _$jscoverage['middleware/errorHandler.js']) { + _$jscoverage['middleware/errorHandler.js'] = []; + _$jscoverage['middleware/errorHandler.js'][12] = 0; + _$jscoverage['middleware/errorHandler.js'][17] = 0; + _$jscoverage['middleware/errorHandler.js'][44] = 0; + _$jscoverage['middleware/errorHandler.js'][45] = 0; + _$jscoverage['middleware/errorHandler.js'][46] = 0; + _$jscoverage['middleware/errorHandler.js'][47] = 0; + _$jscoverage['middleware/errorHandler.js'][48] = 0; + _$jscoverage['middleware/errorHandler.js'][49] = 0; + _$jscoverage['middleware/errorHandler.js'][51] = 0; + _$jscoverage['middleware/errorHandler.js'][52] = 0; + _$jscoverage['middleware/errorHandler.js'][53] = 0; + _$jscoverage['middleware/errorHandler.js'][54] = 0; + _$jscoverage['middleware/errorHandler.js'][56] = 0; + _$jscoverage['middleware/errorHandler.js'][57] = 0; + _$jscoverage['middleware/errorHandler.js'][63] = 0; + _$jscoverage['middleware/errorHandler.js'][64] = 0; + _$jscoverage['middleware/errorHandler.js'][68] = 0; + _$jscoverage['middleware/errorHandler.js'][69] = 0; + _$jscoverage['middleware/errorHandler.js'][70] = 0; + _$jscoverage['middleware/errorHandler.js'][71] = 0; + _$jscoverage['middleware/errorHandler.js'][72] = 0; + _$jscoverage['middleware/errorHandler.js'][73] = 0; + _$jscoverage['middleware/errorHandler.js'][76] = 0; + _$jscoverage['middleware/errorHandler.js'][77] = 0; + _$jscoverage['middleware/errorHandler.js'][86] = 0; +} +_$jscoverage['middleware/errorHandler.js'][12]++; +var utils = require("../utils"), fs = require("fs"); +_$jscoverage['middleware/errorHandler.js'][17]++; +var env = process.env.NODE_ENV || "development"; +_$jscoverage['middleware/errorHandler.js'][44]++; +exports = module.exports = (function errorHandler() { + _$jscoverage['middleware/errorHandler.js'][45]++; + return (function errorHandler(err, req, res, next) { + _$jscoverage['middleware/errorHandler.js'][46]++; + if (err.status) { + _$jscoverage['middleware/errorHandler.js'][46]++; + res.statusCode = err.status; + } + _$jscoverage['middleware/errorHandler.js'][47]++; + if (res.statusCode < 400) { + _$jscoverage['middleware/errorHandler.js'][47]++; + res.statusCode = 500; + } + _$jscoverage['middleware/errorHandler.js'][48]++; + if ("test" != env) { + _$jscoverage['middleware/errorHandler.js'][48]++; + console.error(err.stack); + } + _$jscoverage['middleware/errorHandler.js'][49]++; + var accept = req.headers.accept || ""; + _$jscoverage['middleware/errorHandler.js'][51]++; + if (~ accept.indexOf("html")) { + _$jscoverage['middleware/errorHandler.js'][52]++; + fs.readFile(__dirname + "/../public/style.css", "utf8", (function (e, style) { + _$jscoverage['middleware/errorHandler.js'][53]++; + fs.readFile(__dirname + "/../public/error.html", "utf8", (function (e, html) { + _$jscoverage['middleware/errorHandler.js'][54]++; + var stack = (err.stack || "").split("\n").slice(1).map((function (v) { + _$jscoverage['middleware/errorHandler.js'][56]++; + return "
  • " + v + "
  • "; +})).join(""); + _$jscoverage['middleware/errorHandler.js'][57]++; + html = html.replace("{style}", style).replace("{stack}", stack).replace("{title}", exports.title).replace("{statusCode}", res.statusCode).replace(/\{error\}/g, utils.escape(err.toString())); + _$jscoverage['middleware/errorHandler.js'][63]++; + res.setHeader("Content-Type", "text/html; charset=utf-8"); + _$jscoverage['middleware/errorHandler.js'][64]++; + res.end(html); +})); +})); + } + else { + _$jscoverage['middleware/errorHandler.js'][68]++; + if (~ accept.indexOf("json")) { + _$jscoverage['middleware/errorHandler.js'][69]++; + var error = {message: err.message, stack: err.stack}; + _$jscoverage['middleware/errorHandler.js'][70]++; + for (var prop in err) { + _$jscoverage['middleware/errorHandler.js'][70]++; + error[prop] = err[prop]; +} + _$jscoverage['middleware/errorHandler.js'][71]++; + var json = JSON.stringify({error: error}); + _$jscoverage['middleware/errorHandler.js'][72]++; + res.setHeader("Content-Type", "application/json"); + _$jscoverage['middleware/errorHandler.js'][73]++; + res.end(json); + } + else { + _$jscoverage['middleware/errorHandler.js'][76]++; + res.writeHead(res.statusCode, {"Content-Type": "text/plain"}); + _$jscoverage['middleware/errorHandler.js'][77]++; + res.end(err.stack); + } + } +}); +}); +_$jscoverage['middleware/errorHandler.js'][86]++; +exports.title = "Connect"; +_$jscoverage['middleware/errorHandler.js'].source = ["/*!"," * Connect - errorHandler"," * Copyright(c) 2010 Sencha Inc."," * Copyright(c) 2011 TJ Holowaychuk"," * MIT Licensed"," */","","/**"," * Module dependencies."," */","","var utils = require('../utils')"," , fs = require('fs');","","// environment","","var env = process.env.NODE_ENV || 'development';","","/**"," * Error handler:"," *"," * Development error handler, providing stack traces"," * and error message responses for requests accepting text, html,"," * or json."," *"," * Text:"," *"," * By default, and when _text/plain_ is accepted a simple stack trace"," * or error message will be returned."," *"," * JSON:"," *"," * When _application/json_ is accepted, connect will respond with"," * an object in the form of `{ \"error\": error }`."," *"," * HTML:"," *"," * When accepted connect will output a nice html stack trace."," *"," * @return {Function}"," * @api public"," */","","exports = module.exports = function errorHandler(){"," return function errorHandler(err, req, res, next){"," if (err.status) res.statusCode = err.status;"," if (res.statusCode < 400) res.statusCode = 500;"," if ('test' != env) console.error(err.stack);"," var accept = req.headers.accept || '';"," // html"," if (~accept.indexOf('html')) {"," fs.readFile(__dirname + '/../public/style.css', 'utf8', function(e, style){"," fs.readFile(__dirname + '/../public/error.html', 'utf8', function(e, html){"," var stack = (err.stack || '')"," .split('\\n').slice(1)"," .map(function(v){ return '<li>' + v + '</li>'; }).join('');"," html = html"," .replace('{style}', style)"," .replace('{stack}', stack)"," .replace('{title}', exports.title)"," .replace('{statusCode}', res.statusCode)"," .replace(/\\{error\\}/g, utils.escape(err.toString()));"," res.setHeader('Content-Type', 'text/html; charset=utf-8');"," res.end(html);"," });"," });"," // json"," } else if (~accept.indexOf('json')) {"," var error = { message: err.message, stack: err.stack };"," for (var prop in err) error[prop] = err[prop];"," var json = JSON.stringify({ error: error });"," res.setHeader('Content-Type', 'application/json');"," res.end(json);"," // plain text"," } else {"," res.writeHead(res.statusCode, { 'Content-Type': 'text/plain' });"," res.end(err.stack);"," }"," };","};","","/**"," * Template title, framework authors may override this value."," */","","exports.title = 'Connect';"]; diff --git a/node_modules/express/node_modules/connect/lib-cov/middleware/favicon.js b/node_modules/express/node_modules/connect/lib-cov/middleware/favicon.js new file mode 100644 index 0000000..6228079 --- /dev/null +++ b/node_modules/express/node_modules/connect/lib-cov/middleware/favicon.js @@ -0,0 +1,60 @@ +/* automatically generated by JSCoverage - do not edit */ +if (typeof _$jscoverage === 'undefined') _$jscoverage = {}; +if (! _$jscoverage['middleware/favicon.js']) { + _$jscoverage['middleware/favicon.js'] = []; + _$jscoverage['middleware/favicon.js'][13] = 0; + _$jscoverage['middleware/favicon.js'][50] = 0; + _$jscoverage['middleware/favicon.js'][51] = 0; + _$jscoverage['middleware/favicon.js'][56] = 0; + _$jscoverage['middleware/favicon.js'][57] = 0; + _$jscoverage['middleware/favicon.js'][58] = 0; + _$jscoverage['middleware/favicon.js'][59] = 0; + _$jscoverage['middleware/favicon.js'][60] = 0; + _$jscoverage['middleware/favicon.js'][62] = 0; + _$jscoverage['middleware/favicon.js'][63] = 0; + _$jscoverage['middleware/favicon.js'][64] = 0; + _$jscoverage['middleware/favicon.js'][73] = 0; + _$jscoverage['middleware/favicon.js'][74] = 0; + _$jscoverage['middleware/favicon.js'][78] = 0; +} +_$jscoverage['middleware/favicon.js'][13]++; +var fs = require("fs"), utils = require("../utils"); +_$jscoverage['middleware/favicon.js'][50]++; +module.exports = (function favicon(path, options) { + _$jscoverage['middleware/favicon.js'][51]++; + var options = options || {}, path = path || __dirname + "/../public/favicon.ico", maxAge = options.maxAge || 86400000, icon; + _$jscoverage['middleware/favicon.js'][56]++; + return (function favicon(req, res, next) { + _$jscoverage['middleware/favicon.js'][57]++; + if ("/favicon.ico" == req.url) { + _$jscoverage['middleware/favicon.js'][58]++; + if (icon) { + _$jscoverage['middleware/favicon.js'][59]++; + res.writeHead(200, icon.headers); + _$jscoverage['middleware/favicon.js'][60]++; + res.end(icon.body); + } + else { + _$jscoverage['middleware/favicon.js'][62]++; + fs.readFile(path, (function (err, buf) { + _$jscoverage['middleware/favicon.js'][63]++; + if (err) { + _$jscoverage['middleware/favicon.js'][63]++; + return next(err); + } + _$jscoverage['middleware/favicon.js'][64]++; + icon = {headers: {"Content-Type": "image/x-icon", "Content-Length": buf.length, "ETag": "\"" + utils.md5(buf) + "\"", "Cache-Control": "public, max-age=" + (maxAge / 1000)}, body: buf}; + _$jscoverage['middleware/favicon.js'][73]++; + res.writeHead(200, icon.headers); + _$jscoverage['middleware/favicon.js'][74]++; + res.end(icon.body); +})); + } + } + else { + _$jscoverage['middleware/favicon.js'][78]++; + next(); + } +}); +}); +_$jscoverage['middleware/favicon.js'].source = ["","/*!"," * Connect - favicon"," * Copyright(c) 2010 Sencha Inc."," * Copyright(c) 2011 TJ Holowaychuk"," * MIT Licensed"," */","","/**"," * Module dependencies."," */","","var fs = require('fs')"," , utils = require('../utils');","","/**"," * Favicon:"," *"," * By default serves the connect favicon, or the favicon"," * located by the given `path`."," *"," * Options:"," *"," * - `maxAge` cache-control max-age directive, defaulting to 1 day"," *"," * Examples:"," *"," * Serve default favicon:"," *"," * connect()"," * .use(connect.favicon())"," *"," * Serve favicon before logging for brevity:"," *"," * connect()"," * .use(connect.favicon())"," * .use(connect.logger('dev'))"," *"," * Serve custom favicon:"," *"," * connect()"," * .use(connect.favicon('public/favicon.ico))"," *"," * @param {String} path"," * @param {Object} options"," * @return {Function}"," * @api public"," */","","module.exports = function favicon(path, options){"," var options = options || {}"," , path = path || __dirname + '/../public/favicon.ico'"," , maxAge = options.maxAge || 86400000"," , icon; // favicon cache",""," return function favicon(req, res, next){"," if ('/favicon.ico' == req.url) {"," if (icon) {"," res.writeHead(200, icon.headers);"," res.end(icon.body);"," } else {"," fs.readFile(path, function(err, buf){"," if (err) return next(err);"," icon = {"," headers: {"," 'Content-Type': 'image/x-icon'"," , 'Content-Length': buf.length"," , 'ETag': '\"' + utils.md5(buf) + '\"'"," , 'Cache-Control': 'public, max-age=' + (maxAge / 1000)"," },"," body: buf"," };"," res.writeHead(200, icon.headers);"," res.end(icon.body);"," });"," }"," } else {"," next();"," }"," };","};"]; diff --git a/node_modules/express/node_modules/connect/lib-cov/middleware/json.js b/node_modules/express/node_modules/connect/lib-cov/middleware/json.js new file mode 100644 index 0000000..87236cf --- /dev/null +++ b/node_modules/express/node_modules/connect/lib-cov/middleware/json.js @@ -0,0 +1,117 @@ +/* automatically generated by JSCoverage - do not edit */ +if (typeof _$jscoverage === 'undefined') _$jscoverage = {}; +if (! _$jscoverage['middleware/json.js']) { + _$jscoverage['middleware/json.js'] = []; + _$jscoverage['middleware/json.js'][13] = 0; + _$jscoverage['middleware/json.js'][20] = 0; + _$jscoverage['middleware/json.js'][21] = 0; + _$jscoverage['middleware/json.js'][41] = 0; + _$jscoverage['middleware/json.js'][42] = 0; + _$jscoverage['middleware/json.js'][45] = 0; + _$jscoverage['middleware/json.js'][49] = 0; + _$jscoverage['middleware/json.js'][50] = 0; + _$jscoverage['middleware/json.js'][51] = 0; + _$jscoverage['middleware/json.js'][53] = 0; + _$jscoverage['middleware/json.js'][56] = 0; + _$jscoverage['middleware/json.js'][59] = 0; + _$jscoverage['middleware/json.js'][62] = 0; + _$jscoverage['middleware/json.js'][63] = 0; + _$jscoverage['middleware/json.js'][64] = 0; + _$jscoverage['middleware/json.js'][65] = 0; + _$jscoverage['middleware/json.js'][66] = 0; + _$jscoverage['middleware/json.js'][67] = 0; + _$jscoverage['middleware/json.js'][68] = 0; + _$jscoverage['middleware/json.js'][70] = 0; + _$jscoverage['middleware/json.js'][71] = 0; + _$jscoverage['middleware/json.js'][74] = 0; + _$jscoverage['middleware/json.js'][75] = 0; + _$jscoverage['middleware/json.js'][76] = 0; + _$jscoverage['middleware/json.js'][77] = 0; + _$jscoverage['middleware/json.js'][79] = 0; + _$jscoverage['middleware/json.js'][80] = 0; + _$jscoverage['middleware/json.js'][81] = 0; +} +_$jscoverage['middleware/json.js'][13]++; +var utils = require("../utils"), _limit = require("./limit"); +_$jscoverage['middleware/json.js'][20]++; +function noop(req, res, next) { + _$jscoverage['middleware/json.js'][21]++; + next(); +} +_$jscoverage['middleware/json.js'][41]++; +exports = module.exports = (function (options) { + _$jscoverage['middleware/json.js'][42]++; + var options = options || {}, strict = options.strict !== false; + _$jscoverage['middleware/json.js'][45]++; + var limit = options.limit? _limit(options.limit): noop; + _$jscoverage['middleware/json.js'][49]++; + return (function json(req, res, next) { + _$jscoverage['middleware/json.js'][50]++; + if (req._body) { + _$jscoverage['middleware/json.js'][50]++; + return next(); + } + _$jscoverage['middleware/json.js'][51]++; + req.body = req.body || {}; + _$jscoverage['middleware/json.js'][53]++; + if (! utils.hasBody(req)) { + _$jscoverage['middleware/json.js'][53]++; + return next(); + } + _$jscoverage['middleware/json.js'][56]++; + if ("application/json" != utils.mime(req)) { + _$jscoverage['middleware/json.js'][56]++; + return next(); + } + _$jscoverage['middleware/json.js'][59]++; + req._body = true; + _$jscoverage['middleware/json.js'][62]++; + limit(req, res, (function (err) { + _$jscoverage['middleware/json.js'][63]++; + if (err) { + _$jscoverage['middleware/json.js'][63]++; + return next(err); + } + _$jscoverage['middleware/json.js'][64]++; + var buf = ""; + _$jscoverage['middleware/json.js'][65]++; + req.setEncoding("utf8"); + _$jscoverage['middleware/json.js'][66]++; + req.on("data", (function (chunk) { + _$jscoverage['middleware/json.js'][66]++; + buf += chunk; +})); + _$jscoverage['middleware/json.js'][67]++; + req.on("end", (function () { + _$jscoverage['middleware/json.js'][68]++; + var first = buf.trim()[0]; + _$jscoverage['middleware/json.js'][70]++; + if (0 == buf.length) { + _$jscoverage['middleware/json.js'][71]++; + return next(utils.error(400, "invalid json, empty body")); + } + _$jscoverage['middleware/json.js'][74]++; + if (strict && "{" != first && "[" != first) { + _$jscoverage['middleware/json.js'][74]++; + return next(utils.error(400, "invalid json")); + } + _$jscoverage['middleware/json.js'][75]++; + try { + _$jscoverage['middleware/json.js'][76]++; + req.body = JSON.parse(buf, options.reviver); + _$jscoverage['middleware/json.js'][77]++; + next(); + } + catch (err) { + _$jscoverage['middleware/json.js'][79]++; + err.body = buf; + _$jscoverage['middleware/json.js'][80]++; + err.status = 400; + _$jscoverage['middleware/json.js'][81]++; + next(err); + } +})); +})); +}); +}); +_$jscoverage['middleware/json.js'].source = ["","/*!"," * Connect - json"," * Copyright(c) 2010 Sencha Inc."," * Copyright(c) 2011 TJ Holowaychuk"," * MIT Licensed"," */","","/**"," * Module dependencies."," */","","var utils = require('../utils')"," , _limit = require('./limit');","","/**"," * noop middleware."," */","","function noop(req, res, next) {"," next();","}","","/**"," * JSON:"," *"," * Parse JSON request bodies, providing the"," * parsed object as `req.body`."," *"," * Options:"," *"," * - `strict` when `false` anything `JSON.parse()` accepts will be parsed"," * - `reviver` used as the second \"reviver\" argument for JSON.parse"," * - `limit` byte limit disabled by default"," *"," * @param {Object} options"," * @return {Function}"," * @api public"," */","","exports = module.exports = function(options){"," var options = options || {}"," , strict = options.strict !== false;",""," var limit = options.limit"," ? _limit(options.limit)"," : noop;",""," return function json(req, res, next) {"," if (req._body) return next();"," req.body = req.body || {};",""," if (!utils.hasBody(req)) return next();",""," // check Content-Type"," if ('application/json' != utils.mime(req)) return next();",""," // flag as parsed"," req._body = true;",""," // parse"," limit(req, res, function(err){"," if (err) return next(err);"," var buf = '';"," req.setEncoding('utf8');"," req.on('data', function(chunk){ buf += chunk });"," req.on('end', function(){"," var first = buf.trim()[0];",""," if (0 == buf.length) {"," return next(utils.error(400, 'invalid json, empty body'));"," }"," "," if (strict && '{' != first && '[' != first) return next(utils.error(400, 'invalid json'));"," try {"," req.body = JSON.parse(buf, options.reviver);"," next();"," } catch (err){"," err.body = buf;"," err.status = 400;"," next(err);"," }"," });"," });"," }","};"]; diff --git a/node_modules/express/node_modules/connect/lib-cov/middleware/limit.js b/node_modules/express/node_modules/connect/lib-cov/middleware/limit.js new file mode 100644 index 0000000..fa8ea34 --- /dev/null +++ b/node_modules/express/node_modules/connect/lib-cov/middleware/limit.js @@ -0,0 +1,63 @@ +/* automatically generated by JSCoverage - do not edit */ +if (typeof _$jscoverage === 'undefined') _$jscoverage = {}; +if (! _$jscoverage['middleware/limit.js']) { + _$jscoverage['middleware/limit.js'] = []; + _$jscoverage['middleware/limit.js'][12] = 0; + _$jscoverage['middleware/limit.js'][31] = 0; + _$jscoverage['middleware/limit.js'][32] = 0; + _$jscoverage['middleware/limit.js'][33] = 0; + _$jscoverage['middleware/limit.js'][34] = 0; + _$jscoverage['middleware/limit.js'][35] = 0; + _$jscoverage['middleware/limit.js'][41] = 0; + _$jscoverage['middleware/limit.js'][42] = 0; + _$jscoverage['middleware/limit.js'][45] = 0; + _$jscoverage['middleware/limit.js'][48] = 0; + _$jscoverage['middleware/limit.js'][49] = 0; + _$jscoverage['middleware/limit.js'][50] = 0; + _$jscoverage['middleware/limit.js'][53] = 0; +} +_$jscoverage['middleware/limit.js'][12]++; +var utils = require("../utils"); +_$jscoverage['middleware/limit.js'][31]++; +module.exports = (function limit(bytes) { + _$jscoverage['middleware/limit.js'][32]++; + if ("string" == typeof bytes) { + _$jscoverage['middleware/limit.js'][32]++; + bytes = utils.parseBytes(bytes); + } + _$jscoverage['middleware/limit.js'][33]++; + if ("number" != typeof bytes) { + _$jscoverage['middleware/limit.js'][33]++; + throw new Error("limit() bytes required"); + } + _$jscoverage['middleware/limit.js'][34]++; + return (function limit(req, res, next) { + _$jscoverage['middleware/limit.js'][35]++; + var received = 0, len = req.headers["content-length"]? parseInt(req.headers["content-length"], 10): null; + _$jscoverage['middleware/limit.js'][41]++; + if (req._limit) { + _$jscoverage['middleware/limit.js'][41]++; + return next(); + } + _$jscoverage['middleware/limit.js'][42]++; + req._limit = true; + _$jscoverage['middleware/limit.js'][45]++; + if (len && len > bytes) { + _$jscoverage['middleware/limit.js'][45]++; + return next(utils.error(413)); + } + _$jscoverage['middleware/limit.js'][48]++; + req.on("data", (function (chunk) { + _$jscoverage['middleware/limit.js'][49]++; + received += chunk.length; + _$jscoverage['middleware/limit.js'][50]++; + if (received > bytes) { + _$jscoverage['middleware/limit.js'][50]++; + req.destroy(); + } +})); + _$jscoverage['middleware/limit.js'][53]++; + next(); +}); +}); +_$jscoverage['middleware/limit.js'].source = ["","/*!"," * Connect - limit"," * Copyright(c) 2011 TJ Holowaychuk"," * MIT Licensed"," */","","/**"," * Module dependencies."," */","","var utils = require('../utils');","","/**"," * Limit:"," *"," * Limit request bodies to the given size in `bytes`."," *"," * A string representation of the bytesize may also be passed,"," * for example \"5mb\", \"200kb\", \"1gb\", etc."," *"," * connect()"," * .use(connect.limit('5.5mb'))"," * .use(handleImageUpload)"," *"," * @param {Number|String} bytes"," * @return {Function}"," * @api public"," */","","module.exports = function limit(bytes){"," if ('string' == typeof bytes) bytes = utils.parseBytes(bytes);"," if ('number' != typeof bytes) throw new Error('limit() bytes required');"," return function limit(req, res, next){"," var received = 0"," , len = req.headers['content-length']"," ? parseInt(req.headers['content-length'], 10)"," : null;",""," // self-awareness"," if (req._limit) return next();"," req._limit = true;",""," // limit by content-length"," if (len && len > bytes) return next(utils.error(413));",""," // limit"," req.on('data', function(chunk){"," received += chunk.length;"," if (received > bytes) req.destroy();"," });",""," next();"," };","};"]; diff --git a/node_modules/express/node_modules/connect/lib-cov/middleware/logger.js b/node_modules/express/node_modules/connect/lib-cov/middleware/logger.js new file mode 100644 index 0000000..75c7a00 --- /dev/null +++ b/node_modules/express/node_modules/connect/lib-cov/middleware/logger.js @@ -0,0 +1,312 @@ +/* automatically generated by JSCoverage - do not edit */ +if (typeof _$jscoverage === 'undefined') _$jscoverage = {}; +if (! _$jscoverage['middleware/logger.js']) { + _$jscoverage['middleware/logger.js'] = []; + _$jscoverage['middleware/logger.js'][12] = 0; + _$jscoverage['middleware/logger.js'][18] = 0; + _$jscoverage['middleware/logger.js'][24] = 0; + _$jscoverage['middleware/logger.js'][90] = 0; + _$jscoverage['middleware/logger.js'][91] = 0; + _$jscoverage['middleware/logger.js'][92] = 0; + _$jscoverage['middleware/logger.js'][93] = 0; + _$jscoverage['middleware/logger.js'][94] = 0; + _$jscoverage['middleware/logger.js'][96] = 0; + _$jscoverage['middleware/logger.js'][100] = 0; + _$jscoverage['middleware/logger.js'][103] = 0; + _$jscoverage['middleware/logger.js'][106] = 0; + _$jscoverage['middleware/logger.js'][109] = 0; + _$jscoverage['middleware/logger.js'][113] = 0; + _$jscoverage['middleware/logger.js'][114] = 0; + _$jscoverage['middleware/logger.js'][120] = 0; + _$jscoverage['middleware/logger.js'][121] = 0; + _$jscoverage['middleware/logger.js'][122] = 0; + _$jscoverage['middleware/logger.js'][123] = 0; + _$jscoverage['middleware/logger.js'][128] = 0; + _$jscoverage['middleware/logger.js'][130] = 0; + _$jscoverage['middleware/logger.js'][135] = 0; + _$jscoverage['middleware/logger.js'][136] = 0; + _$jscoverage['middleware/logger.js'][139] = 0; + _$jscoverage['middleware/logger.js'][140] = 0; + _$jscoverage['middleware/logger.js'][141] = 0; + _$jscoverage['middleware/logger.js'][142] = 0; + _$jscoverage['middleware/logger.js'][145] = 0; + _$jscoverage['middleware/logger.js'][146] = 0; + _$jscoverage['middleware/logger.js'][147] = 0; + _$jscoverage['middleware/logger.js'][148] = 0; + _$jscoverage['middleware/logger.js'][149] = 0; + _$jscoverage['middleware/logger.js'][150] = 0; + _$jscoverage['middleware/logger.js'][151] = 0; + _$jscoverage['middleware/logger.js'][156] = 0; + _$jscoverage['middleware/logger.js'][168] = 0; + _$jscoverage['middleware/logger.js'][169] = 0; + _$jscoverage['middleware/logger.js'][170] = 0; + _$jscoverage['middleware/logger.js'][171] = 0; + _$jscoverage['middleware/logger.js'][173] = 0; + _$jscoverage['middleware/logger.js'][174] = 0; + _$jscoverage['middleware/logger.js'][186] = 0; + _$jscoverage['middleware/logger.js'][187] = 0; + _$jscoverage['middleware/logger.js'][188] = 0; + _$jscoverage['middleware/logger.js'][200] = 0; + _$jscoverage['middleware/logger.js'][201] = 0; + _$jscoverage['middleware/logger.js'][202] = 0; + _$jscoverage['middleware/logger.js'][209] = 0; + _$jscoverage['middleware/logger.js'][215] = 0; + _$jscoverage['middleware/logger.js'][221] = 0; + _$jscoverage['middleware/logger.js'][227] = 0; + _$jscoverage['middleware/logger.js'][228] = 0; + _$jscoverage['middleware/logger.js'][232] = 0; + _$jscoverage['middleware/logger.js'][233] = 0; + _$jscoverage['middleware/logger.js'][234] = 0; + _$jscoverage['middleware/logger.js'][236] = 0; + _$jscoverage['middleware/logger.js'][240] = 0; + _$jscoverage['middleware/logger.js'][253] = 0; + _$jscoverage['middleware/logger.js'][254] = 0; + _$jscoverage['middleware/logger.js'][261] = 0; + _$jscoverage['middleware/logger.js'][262] = 0; + _$jscoverage['middleware/logger.js'][269] = 0; + _$jscoverage['middleware/logger.js'][270] = 0; + _$jscoverage['middleware/logger.js'][277] = 0; + _$jscoverage['middleware/logger.js'][278] = 0; + _$jscoverage['middleware/logger.js'][285] = 0; + _$jscoverage['middleware/logger.js'][286] = 0; + _$jscoverage['middleware/logger.js'][293] = 0; + _$jscoverage['middleware/logger.js'][294] = 0; + _$jscoverage['middleware/logger.js'][301] = 0; + _$jscoverage['middleware/logger.js'][302] = 0; + _$jscoverage['middleware/logger.js'][303] = 0; + _$jscoverage['middleware/logger.js'][304] = 0; + _$jscoverage['middleware/logger.js'][305] = 0; + _$jscoverage['middleware/logger.js'][312] = 0; + _$jscoverage['middleware/logger.js'][313] = 0; + _$jscoverage['middleware/logger.js'][320] = 0; + _$jscoverage['middleware/logger.js'][321] = 0; + _$jscoverage['middleware/logger.js'][328] = 0; + _$jscoverage['middleware/logger.js'][329] = 0; + _$jscoverage['middleware/logger.js'][336] = 0; + _$jscoverage['middleware/logger.js'][337] = 0; +} +_$jscoverage['middleware/logger.js'][12]++; +var bytes = require("bytes"); +_$jscoverage['middleware/logger.js'][18]++; +var buf = []; +_$jscoverage['middleware/logger.js'][24]++; +var defaultBufferDuration = 1000; +_$jscoverage['middleware/logger.js'][90]++; +exports = module.exports = (function logger(options) { + _$jscoverage['middleware/logger.js'][91]++; + if ("object" == typeof options) { + _$jscoverage['middleware/logger.js'][92]++; + options = options || {}; + } + else { + _$jscoverage['middleware/logger.js'][93]++; + if (options) { + _$jscoverage['middleware/logger.js'][94]++; + options = {format: options}; + } + else { + _$jscoverage['middleware/logger.js'][96]++; + options = {}; + } + } + _$jscoverage['middleware/logger.js'][100]++; + var immediate = options.immediate; + _$jscoverage['middleware/logger.js'][103]++; + var fmt = exports[options.format] || options.format || exports["default"]; + _$jscoverage['middleware/logger.js'][106]++; + if ("function" != typeof fmt) { + _$jscoverage['middleware/logger.js'][106]++; + fmt = compile(fmt); + } + _$jscoverage['middleware/logger.js'][109]++; + var stream = options.stream || process.stdout, buffer = options.buffer; + _$jscoverage['middleware/logger.js'][113]++; + if (buffer) { + _$jscoverage['middleware/logger.js'][114]++; + var realStream = stream, interval = "number" == typeof buffer? buffer: defaultBufferDuration; + _$jscoverage['middleware/logger.js'][120]++; + setInterval((function () { + _$jscoverage['middleware/logger.js'][121]++; + if (buf.length) { + _$jscoverage['middleware/logger.js'][122]++; + realStream.write(buf.join("")); + _$jscoverage['middleware/logger.js'][123]++; + buf.length = 0; + } +}), interval); + _$jscoverage['middleware/logger.js'][128]++; + stream = {write: (function (str) { + _$jscoverage['middleware/logger.js'][130]++; + buf.push(str); +})}; + } + _$jscoverage['middleware/logger.js'][135]++; + return (function logger(req, res, next) { + _$jscoverage['middleware/logger.js'][136]++; + req._startTime = new Date(); + _$jscoverage['middleware/logger.js'][139]++; + if (immediate) { + _$jscoverage['middleware/logger.js'][140]++; + var line = fmt(exports, req, res); + _$jscoverage['middleware/logger.js'][141]++; + if (null == line) { + _$jscoverage['middleware/logger.js'][141]++; + return; + } + _$jscoverage['middleware/logger.js'][142]++; + stream.write(line + "\n"); + } + else { + _$jscoverage['middleware/logger.js'][145]++; + var end = res.end; + _$jscoverage['middleware/logger.js'][146]++; + res.end = (function (chunk, encoding) { + _$jscoverage['middleware/logger.js'][147]++; + res.end = end; + _$jscoverage['middleware/logger.js'][148]++; + res.end(chunk, encoding); + _$jscoverage['middleware/logger.js'][149]++; + var line = fmt(exports, req, res); + _$jscoverage['middleware/logger.js'][150]++; + if (null == line) { + _$jscoverage['middleware/logger.js'][150]++; + return; + } + _$jscoverage['middleware/logger.js'][151]++; + stream.write(line + "\n"); +}); + } + _$jscoverage['middleware/logger.js'][156]++; + next(); +}); +}); +_$jscoverage['middleware/logger.js'][168]++; +function compile(fmt) { + _$jscoverage['middleware/logger.js'][169]++; + fmt = fmt.replace(/"/g, "\\\""); + _$jscoverage['middleware/logger.js'][170]++; + var js = " return \"" + fmt.replace(/:([-\w]{2,})(?:\[([^\]]+)\])?/g, (function (_, name, arg) { + _$jscoverage['middleware/logger.js'][171]++; + return "\"\n + (tokens[\"" + name + "\"](req, res, \"" + arg + "\") || \"-\") + \""; +})) + "\";"; + _$jscoverage['middleware/logger.js'][173]++; + return new Function("tokens, req, res", js); +} +_$jscoverage['middleware/logger.js'][174]++; +; +_$jscoverage['middleware/logger.js'][186]++; +exports.token = (function (name, fn) { + _$jscoverage['middleware/logger.js'][187]++; + exports[name] = fn; + _$jscoverage['middleware/logger.js'][188]++; + return this; +}); +_$jscoverage['middleware/logger.js'][200]++; +exports.format = (function (name, str) { + _$jscoverage['middleware/logger.js'][201]++; + exports[name] = str; + _$jscoverage['middleware/logger.js'][202]++; + return this; +}); +_$jscoverage['middleware/logger.js'][209]++; +exports.format("default", ":remote-addr - - [:date] \":method :url HTTP/:http-version\" :status :res[content-length] \":referrer\" \":user-agent\""); +_$jscoverage['middleware/logger.js'][215]++; +exports.format("short", ":remote-addr - :method :url HTTP/:http-version :status :res[content-length] - :response-time ms"); +_$jscoverage['middleware/logger.js'][221]++; +exports.format("tiny", ":method :url :status :res[content-length] - :response-time ms"); +_$jscoverage['middleware/logger.js'][227]++; +exports.format("dev", (function (tokens, req, res) { + _$jscoverage['middleware/logger.js'][228]++; + var status = res.statusCode, len = parseInt(res.getHeader("Content-Length"), 10), color = 32; + _$jscoverage['middleware/logger.js'][232]++; + if (status >= 500) { + _$jscoverage['middleware/logger.js'][232]++; + color = 31; + } + else { + _$jscoverage['middleware/logger.js'][233]++; + if (status >= 400) { + _$jscoverage['middleware/logger.js'][233]++; + color = 33; + } + else { + _$jscoverage['middleware/logger.js'][234]++; + if (status >= 300) { + _$jscoverage['middleware/logger.js'][234]++; + color = 36; + } + } + } + _$jscoverage['middleware/logger.js'][236]++; + len = isNaN(len)? "": len = " - " + bytes(len); + _$jscoverage['middleware/logger.js'][240]++; + return "\u001b[90m" + req.method + " " + req.originalUrl + " " + "\u001b[" + color + "m" + res.statusCode + " \u001b[90m" + (new Date() - req._startTime) + "ms" + len + "\u001b[0m"; +})); +_$jscoverage['middleware/logger.js'][253]++; +exports.token("url", (function (req) { + _$jscoverage['middleware/logger.js'][254]++; + return req.originalUrl || req.url; +})); +_$jscoverage['middleware/logger.js'][261]++; +exports.token("method", (function (req) { + _$jscoverage['middleware/logger.js'][262]++; + return req.method; +})); +_$jscoverage['middleware/logger.js'][269]++; +exports.token("response-time", (function (req) { + _$jscoverage['middleware/logger.js'][270]++; + return new Date() - req._startTime; +})); +_$jscoverage['middleware/logger.js'][277]++; +exports.token("date", (function () { + _$jscoverage['middleware/logger.js'][278]++; + return new Date().toUTCString(); +})); +_$jscoverage['middleware/logger.js'][285]++; +exports.token("status", (function (req, res) { + _$jscoverage['middleware/logger.js'][286]++; + return res.statusCode; +})); +_$jscoverage['middleware/logger.js'][293]++; +exports.token("referrer", (function (req) { + _$jscoverage['middleware/logger.js'][294]++; + return req.headers.referer || req.headers.referrer; +})); +_$jscoverage['middleware/logger.js'][301]++; +exports.token("remote-addr", (function (req) { + _$jscoverage['middleware/logger.js'][302]++; + if (req.ip) { + _$jscoverage['middleware/logger.js'][302]++; + return req.ip; + } + _$jscoverage['middleware/logger.js'][303]++; + var sock = req.socket; + _$jscoverage['middleware/logger.js'][304]++; + if (sock.socket) { + _$jscoverage['middleware/logger.js'][304]++; + return sock.socket.remoteAddress; + } + _$jscoverage['middleware/logger.js'][305]++; + return sock.remoteAddress; +})); +_$jscoverage['middleware/logger.js'][312]++; +exports.token("http-version", (function (req) { + _$jscoverage['middleware/logger.js'][313]++; + return req.httpVersionMajor + "." + req.httpVersionMinor; +})); +_$jscoverage['middleware/logger.js'][320]++; +exports.token("user-agent", (function (req) { + _$jscoverage['middleware/logger.js'][321]++; + return req.headers["user-agent"]; +})); +_$jscoverage['middleware/logger.js'][328]++; +exports.token("req", (function (req, res, field) { + _$jscoverage['middleware/logger.js'][329]++; + return req.headers[field.toLowerCase()]; +})); +_$jscoverage['middleware/logger.js'][336]++; +exports.token("res", (function (req, res, field) { + _$jscoverage['middleware/logger.js'][337]++; + return (res._headers || {})[field.toLowerCase()]; +})); +_$jscoverage['middleware/logger.js'].source = ["/*!"," * Connect - logger"," * Copyright(c) 2010 Sencha Inc."," * Copyright(c) 2011 TJ Holowaychuk"," * MIT Licensed"," */","","/**"," * Module dependencies."," */","","var bytes = require('bytes');","","/*!"," * Log buffer."," */","","var buf = [];","","/*!"," * Default log buffer duration."," */","","var defaultBufferDuration = 1000;","","/**"," * Logger:"," *"," * Log requests with the given `options` or a `format` string."," *"," * Options:"," *"," * - `format` Format string, see below for tokens"," * - `stream` Output stream, defaults to _stdout_"," * - `buffer` Buffer duration, defaults to 1000ms when _true_"," * - `immediate` Write log line on request instead of response (for response times)"," *"," * Tokens:"," *"," * - `:req[header]` ex: `:req[Accept]`"," * - `:res[header]` ex: `:res[Content-Length]`"," * - `:http-version`"," * - `:response-time`"," * - `:remote-addr`"," * - `:date`"," * - `:method`"," * - `:url`"," * - `:referrer`"," * - `:user-agent`"," * - `:status`"," *"," * Formats:"," *"," * Pre-defined formats that ship with connect:"," *"," * - `default` ':remote-addr - - [:date] \":method :url HTTP/:http-version\" :status :res[content-length] \":referrer\" \":user-agent\"'"," * - `short` ':remote-addr - :method :url HTTP/:http-version :status :res[content-length] - :response-time ms'"," * - `tiny` ':method :url :status :res[content-length] - :response-time ms'"," * - `dev` concise output colored by response status for development use"," *"," * Examples:"," *"," * connect.logger() // default"," * connect.logger('short')"," * connect.logger('tiny')"," * connect.logger({ immediate: true, format: 'dev' })"," * connect.logger(':method :url - :referrer')"," * connect.logger(':req[content-type] -> :res[content-type]')"," * connect.logger(function(tokens, req, res){ return 'some format string' })"," *"," * Defining Tokens:"," *"," * To define a token, simply invoke `connect.logger.token()` with the"," * name and a callback function. The value returned is then available"," * as \":type\" in this case."," *"," * connect.logger.token('type', function(req, res){ return req.headers['content-type']; })"," *"," * Defining Formats:"," *"," * All default formats are defined this way, however it's public API as well:"," *"," * connect.logger.format('name', 'string or function')"," *"," * @param {String|Function|Object} format or options"," * @return {Function}"," * @api public"," */","","exports = module.exports = function logger(options) {"," if ('object' == typeof options) {"," options = options || {};"," } else if (options) {"," options = { format: options };"," } else {"," options = {};"," }",""," // output on request instead of response"," var immediate = options.immediate;",""," // format name"," var fmt = exports[options.format] || options.format || exports.default;",""," // compile format"," if ('function' != typeof fmt) fmt = compile(fmt);",""," // options"," var stream = options.stream || process.stdout"," , buffer = options.buffer;",""," // buffering support"," if (buffer) {"," var realStream = stream"," , interval = 'number' == typeof buffer"," ? buffer"," : defaultBufferDuration;",""," // flush interval"," setInterval(function(){"," if (buf.length) {"," realStream.write(buf.join(''));"," buf.length = 0;"," }"," }, interval); ",""," // swap the stream"," stream = {"," write: function(str){"," buf.push(str);"," }"," };"," }",""," return function logger(req, res, next) {"," req._startTime = new Date;",""," // immediate"," if (immediate) {"," var line = fmt(exports, req, res);"," if (null == line) return;"," stream.write(line + '\\n');"," // proxy end to output logging"," } else {"," var end = res.end;"," res.end = function(chunk, encoding){"," res.end = end;"," res.end(chunk, encoding);"," var line = fmt(exports, req, res);"," if (null == line) return;"," stream.write(line + '\\n');"," };"," }","",""," next();"," };","};","","/**"," * Compile `fmt` into a function."," *"," * @param {String} fmt"," * @return {Function}"," * @api private"," */","","function compile(fmt) {"," fmt = fmt.replace(/\"/g, '\\\\\"');"," var js = ' return \"' + fmt.replace(/:([-\\w]{2,})(?:\\[([^\\]]+)\\])?/g, function(_, name, arg){"," return '\"\\n + (tokens[\"' + name + '\"](req, res, \"' + arg + '\") || \"-\") + \"';"," }) + '\";'"," return new Function('tokens, req, res', js);","};","","/**"," * Define a token function with the given `name`,"," * and callback `fn(req, res)`."," *"," * @param {String} name"," * @param {Function} fn"," * @return {Object} exports for chaining"," * @api public"," */","","exports.token = function(name, fn) {"," exports[name] = fn;"," return this;","};","","/**"," * Define a `fmt` with the given `name`."," *"," * @param {String} name"," * @param {String|Function} fmt"," * @return {Object} exports for chaining"," * @api public"," */","","exports.format = function(name, str){"," exports[name] = str;"," return this;","};","","/**"," * Default format."," */","","exports.format('default', ':remote-addr - - [:date] \":method :url HTTP/:http-version\" :status :res[content-length] \":referrer\" \":user-agent\"');","","/**"," * Short format."," */","","exports.format('short', ':remote-addr - :method :url HTTP/:http-version :status :res[content-length] - :response-time ms');","","/**"," * Tiny format."," */","","exports.format('tiny', ':method :url :status :res[content-length] - :response-time ms');","","/**"," * dev (colored)"," */","","exports.format('dev', function(tokens, req, res){"," var status = res.statusCode"," , len = parseInt(res.getHeader('Content-Length'), 10)"," , color = 32;",""," if (status >= 500) color = 31"," else if (status >= 400) color = 33"," else if (status >= 300) color = 36;",""," len = isNaN(len)"," ? ''"," : len = ' - ' + bytes(len);",""," return '\\033[90m' + req.method"," + ' ' + req.originalUrl + ' '"," + '\\033[' + color + 'm' + res.statusCode"," + ' \\033[90m'"," + (new Date - req._startTime)"," + 'ms' + len"," + '\\033[0m';","});","","/**"," * request url"," */","","exports.token('url', function(req){"," return req.originalUrl || req.url;","});","","/**"," * request method"," */","","exports.token('method', function(req){"," return req.method;","});","","/**"," * response time in milliseconds"," */","","exports.token('response-time', function(req){"," return new Date - req._startTime;","});","","/**"," * UTC date"," */","","exports.token('date', function(){"," return new Date().toUTCString();","});","","/**"," * response status code"," */","","exports.token('status', function(req, res){"," return res.statusCode;","});","","/**"," * normalized referrer"," */","","exports.token('referrer', function(req){"," return req.headers['referer'] || req.headers['referrer'];","});","","/**"," * remote address"," */","","exports.token('remote-addr', function(req){"," if (req.ip) return req.ip;"," var sock = req.socket;"," if (sock.socket) return sock.socket.remoteAddress;"," return sock.remoteAddress;","});","","/**"," * HTTP version"," */","","exports.token('http-version', function(req){"," return req.httpVersionMajor + '.' + req.httpVersionMinor;","});","","/**"," * UA string"," */","","exports.token('user-agent', function(req){"," return req.headers['user-agent'];","});","","/**"," * request header"," */","","exports.token('req', function(req, res, field){"," return req.headers[field.toLowerCase()];","});","","/**"," * response header"," */","","exports.token('res', function(req, res, field){"," return (res._headers || {})[field.toLowerCase()];","});",""]; diff --git a/node_modules/express/node_modules/connect/lib-cov/middleware/methodOverride.js b/node_modules/express/node_modules/connect/lib-cov/middleware/methodOverride.js new file mode 100644 index 0000000..0a9118c --- /dev/null +++ b/node_modules/express/node_modules/connect/lib-cov/middleware/methodOverride.js @@ -0,0 +1,42 @@ +/* automatically generated by JSCoverage - do not edit */ +if (typeof _$jscoverage === 'undefined') _$jscoverage = {}; +if (! _$jscoverage['middleware/methodOverride.js']) { + _$jscoverage['middleware/methodOverride.js'] = []; + _$jscoverage['middleware/methodOverride.js'][23] = 0; + _$jscoverage['middleware/methodOverride.js'][24] = 0; + _$jscoverage['middleware/methodOverride.js'][25] = 0; + _$jscoverage['middleware/methodOverride.js'][26] = 0; + _$jscoverage['middleware/methodOverride.js'][29] = 0; + _$jscoverage['middleware/methodOverride.js'][30] = 0; + _$jscoverage['middleware/methodOverride.js'][31] = 0; + _$jscoverage['middleware/methodOverride.js'][33] = 0; + _$jscoverage['middleware/methodOverride.js'][34] = 0; + _$jscoverage['middleware/methodOverride.js'][37] = 0; +} +_$jscoverage['middleware/methodOverride.js'][23]++; +module.exports = (function methodOverride(key) { + _$jscoverage['middleware/methodOverride.js'][24]++; + key = key || "_method"; + _$jscoverage['middleware/methodOverride.js'][25]++; + return (function methodOverride(req, res, next) { + _$jscoverage['middleware/methodOverride.js'][26]++; + req.originalMethod = req.originalMethod || req.method; + _$jscoverage['middleware/methodOverride.js'][29]++; + if (req.body && key in req.body) { + _$jscoverage['middleware/methodOverride.js'][30]++; + req.method = req.body[key].toUpperCase(); + _$jscoverage['middleware/methodOverride.js'][31]++; + delete req.body[key]; + } + else { + _$jscoverage['middleware/methodOverride.js'][33]++; + if (req.headers["x-http-method-override"]) { + _$jscoverage['middleware/methodOverride.js'][34]++; + req.method = req.headers["x-http-method-override"].toUpperCase(); + } + } + _$jscoverage['middleware/methodOverride.js'][37]++; + next(); +}); +}); +_$jscoverage['middleware/methodOverride.js'].source = ["","/*!"," * Connect - methodOverride"," * Copyright(c) 2010 Sencha Inc."," * Copyright(c) 2011 TJ Holowaychuk"," * MIT Licensed"," */","","/**"," * Method Override:"," * "," * Provides faux HTTP method support."," * "," * Pass an optional `key` to use when checking for"," * a method override, othewise defaults to _\\_method_."," * The original method is available via `req.originalMethod`."," *"," * @param {String} key"," * @return {Function}"," * @api public"," */","","module.exports = function methodOverride(key){"," key = key || \"_method\";"," return function methodOverride(req, res, next) {"," req.originalMethod = req.originalMethod || req.method;",""," // req.body"," if (req.body && key in req.body) {"," req.method = req.body[key].toUpperCase();"," delete req.body[key];"," // check X-HTTP-Method-Override"," } else if (req.headers['x-http-method-override']) {"," req.method = req.headers['x-http-method-override'].toUpperCase();"," }"," "," next();"," };","};",""]; diff --git a/node_modules/express/node_modules/connect/lib-cov/middleware/multipart.js b/node_modules/express/node_modules/connect/lib-cov/middleware/multipart.js new file mode 100644 index 0000000..dfcde09 --- /dev/null +++ b/node_modules/express/node_modules/connect/lib-cov/middleware/multipart.js @@ -0,0 +1,183 @@ +/* automatically generated by JSCoverage - do not edit */ +if (typeof _$jscoverage === 'undefined') _$jscoverage = {}; +if (! _$jscoverage['middleware/multipart.js']) { + _$jscoverage['middleware/multipart.js'] = []; + _$jscoverage['middleware/multipart.js'][12] = 0; + _$jscoverage['middleware/multipart.js'][21] = 0; + _$jscoverage['middleware/multipart.js'][22] = 0; + _$jscoverage['middleware/multipart.js'][52] = 0; + _$jscoverage['middleware/multipart.js'][53] = 0; + _$jscoverage['middleware/multipart.js'][55] = 0; + _$jscoverage['middleware/multipart.js'][59] = 0; + _$jscoverage['middleware/multipart.js'][60] = 0; + _$jscoverage['middleware/multipart.js'][61] = 0; + _$jscoverage['middleware/multipart.js'][62] = 0; + _$jscoverage['middleware/multipart.js'][64] = 0; + _$jscoverage['middleware/multipart.js'][67] = 0; + _$jscoverage['middleware/multipart.js'][70] = 0; + _$jscoverage['middleware/multipart.js'][73] = 0; + _$jscoverage['middleware/multipart.js'][76] = 0; + _$jscoverage['middleware/multipart.js'][77] = 0; + _$jscoverage['middleware/multipart.js'][79] = 0; + _$jscoverage['middleware/multipart.js'][84] = 0; + _$jscoverage['middleware/multipart.js'][85] = 0; + _$jscoverage['middleware/multipart.js'][88] = 0; + _$jscoverage['middleware/multipart.js'][89] = 0; + _$jscoverage['middleware/multipart.js'][90] = 0; + _$jscoverage['middleware/multipart.js'][91] = 0; + _$jscoverage['middleware/multipart.js'][92] = 0; + _$jscoverage['middleware/multipart.js'][94] = 0; + _$jscoverage['middleware/multipart.js'][98] = 0; + _$jscoverage['middleware/multipart.js'][99] = 0; + _$jscoverage['middleware/multipart.js'][102] = 0; + _$jscoverage['middleware/multipart.js'][103] = 0; + _$jscoverage['middleware/multipart.js'][106] = 0; + _$jscoverage['middleware/multipart.js'][107] = 0; + _$jscoverage['middleware/multipart.js'][108] = 0; + _$jscoverage['middleware/multipart.js'][109] = 0; + _$jscoverage['middleware/multipart.js'][111] = 0; + _$jscoverage['middleware/multipart.js'][114] = 0; + _$jscoverage['middleware/multipart.js'][115] = 0; + _$jscoverage['middleware/multipart.js'][116] = 0; + _$jscoverage['middleware/multipart.js'][117] = 0; + _$jscoverage['middleware/multipart.js'][118] = 0; + _$jscoverage['middleware/multipart.js'][119] = 0; + _$jscoverage['middleware/multipart.js'][121] = 0; + _$jscoverage['middleware/multipart.js'][125] = 0; + _$jscoverage['middleware/multipart.js'][127] = 0; + _$jscoverage['middleware/multipart.js'][128] = 0; + _$jscoverage['middleware/multipart.js'][129] = 0; +} +_$jscoverage['middleware/multipart.js'][12]++; +var formidable = require("formidable"), _limit = require("./limit"), utils = require("../utils"), qs = require("qs"); +_$jscoverage['middleware/multipart.js'][21]++; +function noop(req, res, next) { + _$jscoverage['middleware/multipart.js'][22]++; + next(); +} +_$jscoverage['middleware/multipart.js'][52]++; +exports = module.exports = (function (options) { + _$jscoverage['middleware/multipart.js'][53]++; + options = options || {}; + _$jscoverage['middleware/multipart.js'][55]++; + var limit = options.limit? _limit(options.limit): noop; + _$jscoverage['middleware/multipart.js'][59]++; + return (function multipart(req, res, next) { + _$jscoverage['middleware/multipart.js'][60]++; + if (req._body) { + _$jscoverage['middleware/multipart.js'][60]++; + return next(); + } + _$jscoverage['middleware/multipart.js'][61]++; + req.body = req.body || {}; + _$jscoverage['middleware/multipart.js'][62]++; + req.files = req.files || {}; + _$jscoverage['middleware/multipart.js'][64]++; + if (! utils.hasBody(req)) { + _$jscoverage['middleware/multipart.js'][64]++; + return next(); + } + _$jscoverage['middleware/multipart.js'][67]++; + if ("GET" == req.method || "HEAD" == req.method) { + _$jscoverage['middleware/multipart.js'][67]++; + return next(); + } + _$jscoverage['middleware/multipart.js'][70]++; + if ("multipart/form-data" != utils.mime(req)) { + _$jscoverage['middleware/multipart.js'][70]++; + return next(); + } + _$jscoverage['middleware/multipart.js'][73]++; + req._body = true; + _$jscoverage['middleware/multipart.js'][76]++; + limit(req, res, (function (err) { + _$jscoverage['middleware/multipart.js'][77]++; + if (err) { + _$jscoverage['middleware/multipart.js'][77]++; + return next(err); + } + _$jscoverage['middleware/multipart.js'][79]++; + var form = new formidable.IncomingForm(), data = {}, files = {}, done; + _$jscoverage['middleware/multipart.js'][84]++; + Object.keys(options).forEach((function (key) { + _$jscoverage['middleware/multipart.js'][85]++; + form[key] = options[key]; +})); + _$jscoverage['middleware/multipart.js'][88]++; + function ondata(name, val, data) { + _$jscoverage['middleware/multipart.js'][89]++; + if (Array.isArray(data[name])) { + _$jscoverage['middleware/multipart.js'][90]++; + data[name].push(val); + } + else { + _$jscoverage['middleware/multipart.js'][91]++; + if (data[name]) { + _$jscoverage['middleware/multipart.js'][92]++; + data[name] = [data[name], val]; + } + else { + _$jscoverage['middleware/multipart.js'][94]++; + data[name] = val; + } + } +} + _$jscoverage['middleware/multipart.js'][98]++; + form.on("field", (function (name, val) { + _$jscoverage['middleware/multipart.js'][99]++; + ondata(name, val, data); +})); + _$jscoverage['middleware/multipart.js'][102]++; + form.on("file", (function (name, val) { + _$jscoverage['middleware/multipart.js'][103]++; + ondata(name, val, files); +})); + _$jscoverage['middleware/multipart.js'][106]++; + form.on("error", (function (err) { + _$jscoverage['middleware/multipart.js'][107]++; + if (! options.defer) { + _$jscoverage['middleware/multipart.js'][108]++; + err.status = 400; + _$jscoverage['middleware/multipart.js'][109]++; + next(err); + } + _$jscoverage['middleware/multipart.js'][111]++; + done = true; +})); + _$jscoverage['middleware/multipart.js'][114]++; + form.on("end", (function () { + _$jscoverage['middleware/multipart.js'][115]++; + if (done) { + _$jscoverage['middleware/multipart.js'][115]++; + return; + } + _$jscoverage['middleware/multipart.js'][116]++; + try { + _$jscoverage['middleware/multipart.js'][117]++; + req.body = qs.parse(data); + _$jscoverage['middleware/multipart.js'][118]++; + req.files = qs.parse(files); + _$jscoverage['middleware/multipart.js'][119]++; + if (! options.defer) { + _$jscoverage['middleware/multipart.js'][119]++; + next(); + } + } + catch (err) { + _$jscoverage['middleware/multipart.js'][121]++; + form.emit("error", err); + } +})); + _$jscoverage['middleware/multipart.js'][125]++; + form.parse(req); + _$jscoverage['middleware/multipart.js'][127]++; + if (options.defer) { + _$jscoverage['middleware/multipart.js'][128]++; + req.form = form; + _$jscoverage['middleware/multipart.js'][129]++; + next(); + } +})); +}); +}); +_$jscoverage['middleware/multipart.js'].source = ["/*!"," * Connect - multipart"," * Copyright(c) 2010 Sencha Inc."," * Copyright(c) 2011 TJ Holowaychuk"," * MIT Licensed"," */","","/**"," * Module dependencies."," */","","var formidable = require('formidable')"," , _limit = require('./limit')"," , utils = require('../utils')"," , qs = require('qs');","","/**"," * noop middleware."," */","","function noop(req, res, next) {"," next();","}","","/**"," * Multipart:"," * "," * Parse multipart/form-data request bodies,"," * providing the parsed object as `req.body`"," * and `req.files`."," *"," * Configuration:"," *"," * The options passed are merged with [formidable](https://github.com/felixge/node-formidable)'s"," * `IncomingForm` object, allowing you to configure the upload directory,"," * size limits, etc. For example if you wish to change the upload dir do the following."," *"," * app.use(connect.multipart({ uploadDir: path }));"," *"," * Options:"," *"," * - `limit` byte limit defaulting to none"," * - `defer` defers processing and exposes the Formidable form object as `req.form`."," * `next()` is called without waiting for the form's \"end\" event."," * This option is useful if you need to bind to the \"progress\" event, for example."," *"," * @param {Object} options"," * @return {Function}"," * @api public"," */","","exports = module.exports = function(options){"," options = options || {};",""," var limit = options.limit"," ? _limit(options.limit)"," : noop;",""," return function multipart(req, res, next) {"," if (req._body) return next();"," req.body = req.body || {};"," req.files = req.files || {};",""," if (!utils.hasBody(req)) return next();",""," // ignore GET"," if ('GET' == req.method || 'HEAD' == req.method) return next();",""," // check Content-Type"," if ('multipart/form-data' != utils.mime(req)) return next();",""," // flag as parsed"," req._body = true;",""," // parse"," limit(req, res, function(err){"," if (err) return next(err);",""," var form = new formidable.IncomingForm"," , data = {}"," , files = {}"," , done;",""," Object.keys(options).forEach(function(key){"," form[key] = options[key];"," });",""," function ondata(name, val, data){"," if (Array.isArray(data[name])) {"," data[name].push(val);"," } else if (data[name]) {"," data[name] = [data[name], val];"," } else {"," data[name] = val;"," }"," }",""," form.on('field', function(name, val){"," ondata(name, val, data);"," });",""," form.on('file', function(name, val){"," ondata(name, val, files);"," });",""," form.on('error', function(err){"," if (!options.defer) {"," err.status = 400;"," next(err);"," }"," done = true;"," });",""," form.on('end', function(){"," if (done) return;"," try {"," req.body = qs.parse(data);"," req.files = qs.parse(files);"," if (!options.defer) next();"," } catch (err) {"," form.emit('error', err);"," }"," });",""," form.parse(req);",""," if (options.defer) {"," req.form = form;"," next();"," }"," });"," }","};"]; diff --git a/node_modules/express/node_modules/connect/lib-cov/middleware/query.js b/node_modules/express/node_modules/connect/lib-cov/middleware/query.js new file mode 100644 index 0000000..bd27ff6 --- /dev/null +++ b/node_modules/express/node_modules/connect/lib-cov/middleware/query.js @@ -0,0 +1,27 @@ +/* automatically generated by JSCoverage - do not edit */ +if (typeof _$jscoverage === 'undefined') _$jscoverage = {}; +if (! _$jscoverage['middleware/query.js']) { + _$jscoverage['middleware/query.js'] = []; + _$jscoverage['middleware/query.js'][12] = 0; + _$jscoverage['middleware/query.js'][36] = 0; + _$jscoverage['middleware/query.js'][37] = 0; + _$jscoverage['middleware/query.js'][38] = 0; + _$jscoverage['middleware/query.js'][39] = 0; + _$jscoverage['middleware/query.js'][44] = 0; +} +_$jscoverage['middleware/query.js'][12]++; +var qs = require("qs"), parse = require("../utils").parseUrl; +_$jscoverage['middleware/query.js'][36]++; +module.exports = (function query(options) { + _$jscoverage['middleware/query.js'][37]++; + return (function query(req, res, next) { + _$jscoverage['middleware/query.js'][38]++; + if (! req.query) { + _$jscoverage['middleware/query.js'][39]++; + req.query = ~ req.url.indexOf("?")? qs.parse(parse(req).query, options): {}; + } + _$jscoverage['middleware/query.js'][44]++; + next(); +}); +}); +_$jscoverage['middleware/query.js'].source = ["/*!"," * Connect - query"," * Copyright(c) 2011 TJ Holowaychuk"," * Copyright(c) 2011 Sencha Inc."," * MIT Licensed"," */","","/**"," * Module dependencies."," */","","var qs = require('qs')"," , parse = require('../utils').parseUrl;","","/**"," * Query:"," *"," * Automatically parse the query-string when available,"," * populating the `req.query` object."," *"," * Examples:"," *"," * connect()"," * .use(connect.query())"," * .use(function(req, res){"," * res.end(JSON.stringify(req.query));"," * });"," *"," * The `options` passed are provided to qs.parse function."," *"," * @param {Object} options"," * @return {Function}"," * @api public"," */","","module.exports = function query(options){"," return function query(req, res, next){"," if (!req.query) {"," req.query = ~req.url.indexOf('?')"," ? qs.parse(parse(req).query, options)"," : {};"," }",""," next();"," };","};"]; diff --git a/node_modules/express/node_modules/connect/lib-cov/middleware/responseTime.js b/node_modules/express/node_modules/connect/lib-cov/middleware/responseTime.js new file mode 100644 index 0000000..954e040 --- /dev/null +++ b/node_modules/express/node_modules/connect/lib-cov/middleware/responseTime.js @@ -0,0 +1,39 @@ +/* automatically generated by JSCoverage - do not edit */ +if (typeof _$jscoverage === 'undefined') _$jscoverage = {}; +if (! _$jscoverage['middleware/responseTime.js']) { + _$jscoverage['middleware/responseTime.js'] = []; + _$jscoverage['middleware/responseTime.js'][18] = 0; + _$jscoverage['middleware/responseTime.js'][19] = 0; + _$jscoverage['middleware/responseTime.js'][20] = 0; + _$jscoverage['middleware/responseTime.js'][22] = 0; + _$jscoverage['middleware/responseTime.js'][23] = 0; + _$jscoverage['middleware/responseTime.js'][25] = 0; + _$jscoverage['middleware/responseTime.js'][26] = 0; + _$jscoverage['middleware/responseTime.js'][27] = 0; + _$jscoverage['middleware/responseTime.js'][30] = 0; +} +_$jscoverage['middleware/responseTime.js'][18]++; +module.exports = (function responseTime() { + _$jscoverage['middleware/responseTime.js'][19]++; + return (function (req, res, next) { + _$jscoverage['middleware/responseTime.js'][20]++; + var start = new Date(); + _$jscoverage['middleware/responseTime.js'][22]++; + if (res._responseTime) { + _$jscoverage['middleware/responseTime.js'][22]++; + return next(); + } + _$jscoverage['middleware/responseTime.js'][23]++; + res._responseTime = true; + _$jscoverage['middleware/responseTime.js'][25]++; + res.on("header", (function () { + _$jscoverage['middleware/responseTime.js'][26]++; + var duration = new Date() - start; + _$jscoverage['middleware/responseTime.js'][27]++; + res.setHeader("X-Response-Time", duration + "ms"); +})); + _$jscoverage['middleware/responseTime.js'][30]++; + next(); +}); +}); +_$jscoverage['middleware/responseTime.js'].source = ["","/*!"," * Connect - responseTime"," * Copyright(c) 2011 TJ Holowaychuk"," * MIT Licensed"," */","","/**"," * Reponse time:"," *"," * Adds the `X-Response-Time` header displaying the response"," * duration in milliseconds."," *"," * @return {Function}"," * @api public"," */","","module.exports = function responseTime(){"," return function(req, res, next){"," var start = new Date;",""," if (res._responseTime) return next();"," res._responseTime = true;",""," res.on('header', function(){"," var duration = new Date - start;"," res.setHeader('X-Response-Time', duration + 'ms');"," });",""," next();"," };","};"]; diff --git a/node_modules/express/node_modules/connect/lib-cov/middleware/session.js b/node_modules/express/node_modules/connect/lib-cov/middleware/session.js new file mode 100644 index 0000000..5ff99f8 --- /dev/null +++ b/node_modules/express/node_modules/connect/lib-cov/middleware/session.js @@ -0,0 +1,321 @@ +/* automatically generated by JSCoverage - do not edit */ +if (typeof _$jscoverage === 'undefined') _$jscoverage = {}; +if (! _$jscoverage['middleware/session.js']) { + _$jscoverage['middleware/session.js'] = []; + _$jscoverage['middleware/session.js'][13] = 0; + _$jscoverage['middleware/session.js'][25] = 0; + _$jscoverage['middleware/session.js'][31] = 0; + _$jscoverage['middleware/session.js'][37] = 0; + _$jscoverage['middleware/session.js'][38] = 0; + _$jscoverage['middleware/session.js'][39] = 0; + _$jscoverage['middleware/session.js'][40] = 0; + _$jscoverage['middleware/session.js'][46] = 0; + _$jscoverage['middleware/session.js'][188] = 0; + _$jscoverage['middleware/session.js'][189] = 0; + _$jscoverage['middleware/session.js'][198] = 0; + _$jscoverage['middleware/session.js'][199] = 0; + _$jscoverage['middleware/session.js'][203] = 0; + _$jscoverage['middleware/session.js'][204] = 0; + _$jscoverage['middleware/session.js'][205] = 0; + _$jscoverage['middleware/session.js'][206] = 0; + _$jscoverage['middleware/session.js'][209] = 0; + _$jscoverage['middleware/session.js'][210] = 0; + _$jscoverage['middleware/session.js'][212] = 0; + _$jscoverage['middleware/session.js'][214] = 0; + _$jscoverage['middleware/session.js'][218] = 0; + _$jscoverage['middleware/session.js'][221] = 0; + _$jscoverage['middleware/session.js'][225] = 0; + _$jscoverage['middleware/session.js'][228] = 0; + _$jscoverage['middleware/session.js'][231] = 0; + _$jscoverage['middleware/session.js'][235] = 0; + _$jscoverage['middleware/session.js'][238] = 0; + _$jscoverage['middleware/session.js'][241] = 0; + _$jscoverage['middleware/session.js'][243] = 0; + _$jscoverage['middleware/session.js'][244] = 0; + _$jscoverage['middleware/session.js'][248] = 0; + _$jscoverage['middleware/session.js'][249] = 0; + _$jscoverage['middleware/session.js'][250] = 0; + _$jscoverage['middleware/session.js'][257] = 0; + _$jscoverage['middleware/session.js'][260] = 0; + _$jscoverage['middleware/session.js'][261] = 0; + _$jscoverage['middleware/session.js'][263] = 0; + _$jscoverage['middleware/session.js'][264] = 0; + _$jscoverage['middleware/session.js'][267] = 0; + _$jscoverage['middleware/session.js'][268] = 0; + _$jscoverage['middleware/session.js'][269] = 0; + _$jscoverage['middleware/session.js'][270] = 0; + _$jscoverage['middleware/session.js'][274] = 0; + _$jscoverage['middleware/session.js'][275] = 0; + _$jscoverage['middleware/session.js'][276] = 0; + _$jscoverage['middleware/session.js'][277] = 0; + _$jscoverage['middleware/session.js'][278] = 0; + _$jscoverage['middleware/session.js'][279] = 0; + _$jscoverage['middleware/session.js'][280] = 0; + _$jscoverage['middleware/session.js'][281] = 0; + _$jscoverage['middleware/session.js'][282] = 0; + _$jscoverage['middleware/session.js'][287] = 0; + _$jscoverage['middleware/session.js'][288] = 0; + _$jscoverage['middleware/session.js'][292] = 0; + _$jscoverage['middleware/session.js'][295] = 0; + _$jscoverage['middleware/session.js'][296] = 0; + _$jscoverage['middleware/session.js'][297] = 0; + _$jscoverage['middleware/session.js'][298] = 0; + _$jscoverage['middleware/session.js'][299] = 0; + _$jscoverage['middleware/session.js'][303] = 0; + _$jscoverage['middleware/session.js'][304] = 0; + _$jscoverage['middleware/session.js'][305] = 0; + _$jscoverage['middleware/session.js'][307] = 0; + _$jscoverage['middleware/session.js'][308] = 0; + _$jscoverage['middleware/session.js'][309] = 0; + _$jscoverage['middleware/session.js'][310] = 0; + _$jscoverage['middleware/session.js'][314] = 0; + _$jscoverage['middleware/session.js'][315] = 0; + _$jscoverage['middleware/session.js'][316] = 0; + _$jscoverage['middleware/session.js'][317] = 0; + _$jscoverage['middleware/session.js'][318] = 0; + _$jscoverage['middleware/session.js'][320] = 0; + _$jscoverage['middleware/session.js'][323] = 0; + _$jscoverage['middleware/session.js'][324] = 0; + _$jscoverage['middleware/session.js'][325] = 0; + _$jscoverage['middleware/session.js'][326] = 0; + _$jscoverage['middleware/session.js'][329] = 0; + _$jscoverage['middleware/session.js'][330] = 0; + _$jscoverage['middleware/session.js'][331] = 0; + _$jscoverage['middleware/session.js'][332] = 0; + _$jscoverage['middleware/session.js'][333] = 0; + _$jscoverage['middleware/session.js'][337] = 0; + _$jscoverage['middleware/session.js'][348] = 0; + _$jscoverage['middleware/session.js'][349] = 0; + _$jscoverage['middleware/session.js'][350] = 0; +} +_$jscoverage['middleware/session.js'][13]++; +var Session = require("./session/session"), debug = require("debug")("connect:session"), MemoryStore = require("./session/memory"), signature = require("cookie-signature"), Cookie = require("./session/cookie"), Store = require("./session/store"), utils = require("./../utils"), parse = utils.parseUrl, crc16 = require("crc").crc16; +_$jscoverage['middleware/session.js'][25]++; +var env = process.env.NODE_ENV; +_$jscoverage['middleware/session.js'][31]++; +exports = module.exports = session; +_$jscoverage['middleware/session.js'][37]++; +exports.Store = Store; +_$jscoverage['middleware/session.js'][38]++; +exports.Cookie = Cookie; +_$jscoverage['middleware/session.js'][39]++; +exports.Session = Session; +_$jscoverage['middleware/session.js'][40]++; +exports.MemoryStore = MemoryStore; +_$jscoverage['middleware/session.js'][46]++; +var warning = "Warning: connection.session() MemoryStore is not\ndesigned for a production environment, as it will leak\nmemory, and will not scale past a single process."; +_$jscoverage['middleware/session.js'][188]++; +function session(options) { + _$jscoverage['middleware/session.js'][189]++; + var options = options || {}, key = options.key || "connect.sid", store = options.store || new MemoryStore(), cookie = options.cookie || {}, trustProxy = options.proxy, storeReady = true; + _$jscoverage['middleware/session.js'][198]++; + if ("production" == env && store instanceof MemoryStore) { + _$jscoverage['middleware/session.js'][199]++; + console.warn(warning); + } + _$jscoverage['middleware/session.js'][203]++; + store.generate = (function (req) { + _$jscoverage['middleware/session.js'][204]++; + req.sessionID = utils.uid(24); + _$jscoverage['middleware/session.js'][205]++; + req.session = new Session(req); + _$jscoverage['middleware/session.js'][206]++; + req.session.cookie = new Cookie(cookie); +}); + _$jscoverage['middleware/session.js'][209]++; + store.on("disconnect", (function () { + _$jscoverage['middleware/session.js'][209]++; + storeReady = false; +})); + _$jscoverage['middleware/session.js'][210]++; + store.on("connect", (function () { + _$jscoverage['middleware/session.js'][210]++; + storeReady = true; +})); + _$jscoverage['middleware/session.js'][212]++; + return (function session(req, res, next) { + _$jscoverage['middleware/session.js'][214]++; + if (req.session) { + _$jscoverage['middleware/session.js'][214]++; + return next(); + } + _$jscoverage['middleware/session.js'][218]++; + if (! storeReady) { + _$jscoverage['middleware/session.js'][218]++; + return debug("store is disconnected"), next(); + } + _$jscoverage['middleware/session.js'][221]++; + if (0 != req.originalUrl.indexOf(cookie.path || "/")) { + _$jscoverage['middleware/session.js'][221]++; + return next(); + } + _$jscoverage['middleware/session.js'][225]++; + var secret = options.secret || req.secret; + _$jscoverage['middleware/session.js'][228]++; + if (! secret) { + _$jscoverage['middleware/session.js'][228]++; + throw new Error("`secret` option required for sessions"); + } + _$jscoverage['middleware/session.js'][231]++; + var originalHash, originalId; + _$jscoverage['middleware/session.js'][235]++; + req.sessionStore = store; + _$jscoverage['middleware/session.js'][238]++; + var rawCookie = req.cookies[key]; + _$jscoverage['middleware/session.js'][241]++; + var unsignedCookie = req.signedCookies[key]; + _$jscoverage['middleware/session.js'][243]++; + if (! unsignedCookie && rawCookie) { + _$jscoverage['middleware/session.js'][244]++; + unsignedCookie = utils.parseSignedCookie(rawCookie, secret); + } + _$jscoverage['middleware/session.js'][248]++; + res.on("header", (function () { + _$jscoverage['middleware/session.js'][249]++; + if (! req.session) { + _$jscoverage['middleware/session.js'][249]++; + return; + } + _$jscoverage['middleware/session.js'][250]++; + var cookie = req.session.cookie, proto = (req.headers["x-forwarded-proto"] || "").toLowerCase(), tls = req.connection.encrypted || (trustProxy && "https" == proto), secured = cookie.secure && tls, isNew = unsignedCookie != req.sessionID; + _$jscoverage['middleware/session.js'][257]++; + if (cookie.secure && ! secured) { + _$jscoverage['middleware/session.js'][257]++; + return debug("not secured"); + } + _$jscoverage['middleware/session.js'][260]++; + if (null == cookie.expires) { + _$jscoverage['middleware/session.js'][261]++; + if (! isNew) { + _$jscoverage['middleware/session.js'][261]++; + return debug("already set browser-session cookie"); + } + } + else { + _$jscoverage['middleware/session.js'][263]++; + if (originalHash == hash(req.session) && originalId == req.session.id) { + _$jscoverage['middleware/session.js'][264]++; + return debug("unmodified session"); + } + } + _$jscoverage['middleware/session.js'][267]++; + var val = "s:" + signature.sign(req.sessionID, secret); + _$jscoverage['middleware/session.js'][268]++; + val = cookie.serialize(key, val); + _$jscoverage['middleware/session.js'][269]++; + debug("set-cookie %s", val); + _$jscoverage['middleware/session.js'][270]++; + res.setHeader("Set-Cookie", val); +})); + _$jscoverage['middleware/session.js'][274]++; + var end = res.end; + _$jscoverage['middleware/session.js'][275]++; + res.end = (function (data, encoding) { + _$jscoverage['middleware/session.js'][276]++; + res.end = end; + _$jscoverage['middleware/session.js'][277]++; + if (! req.session) { + _$jscoverage['middleware/session.js'][277]++; + return res.end(data, encoding); + } + _$jscoverage['middleware/session.js'][278]++; + debug("saving"); + _$jscoverage['middleware/session.js'][279]++; + req.session.resetMaxAge(); + _$jscoverage['middleware/session.js'][280]++; + req.session.save((function () { + _$jscoverage['middleware/session.js'][281]++; + debug("saved"); + _$jscoverage['middleware/session.js'][282]++; + res.end(data, encoding); +})); +}); + _$jscoverage['middleware/session.js'][287]++; + function generate() { + _$jscoverage['middleware/session.js'][288]++; + store.generate(req); +} + _$jscoverage['middleware/session.js'][292]++; + req.sessionID = unsignedCookie; + _$jscoverage['middleware/session.js'][295]++; + if (! req.sessionID) { + _$jscoverage['middleware/session.js'][296]++; + debug("no SID sent, generating session"); + _$jscoverage['middleware/session.js'][297]++; + generate(); + _$jscoverage['middleware/session.js'][298]++; + next(); + _$jscoverage['middleware/session.js'][299]++; + return; + } + _$jscoverage['middleware/session.js'][303]++; + var pause = utils.pause(req); + _$jscoverage['middleware/session.js'][304]++; + debug("fetching %s", req.sessionID); + _$jscoverage['middleware/session.js'][305]++; + store.get(req.sessionID, (function (err, sess) { + _$jscoverage['middleware/session.js'][307]++; + var _next = next; + _$jscoverage['middleware/session.js'][308]++; + next = (function (err) { + _$jscoverage['middleware/session.js'][309]++; + _next(err); + _$jscoverage['middleware/session.js'][310]++; + pause.resume(); +}); + _$jscoverage['middleware/session.js'][314]++; + if (err) { + _$jscoverage['middleware/session.js'][315]++; + debug("error"); + _$jscoverage['middleware/session.js'][316]++; + if ("ENOENT" == err.code) { + _$jscoverage['middleware/session.js'][317]++; + generate(); + _$jscoverage['middleware/session.js'][318]++; + next(); + } + else { + _$jscoverage['middleware/session.js'][320]++; + next(err); + } + } + else { + _$jscoverage['middleware/session.js'][323]++; + if (! sess) { + _$jscoverage['middleware/session.js'][324]++; + debug("no session found"); + _$jscoverage['middleware/session.js'][325]++; + generate(); + _$jscoverage['middleware/session.js'][326]++; + next(); + } + else { + _$jscoverage['middleware/session.js'][329]++; + debug("session found"); + _$jscoverage['middleware/session.js'][330]++; + store.createSession(req, sess); + _$jscoverage['middleware/session.js'][331]++; + originalId = req.sessionID; + _$jscoverage['middleware/session.js'][332]++; + originalHash = hash(sess); + _$jscoverage['middleware/session.js'][333]++; + next(); + } + } +})); +}); +} +_$jscoverage['middleware/session.js'][337]++; +; +_$jscoverage['middleware/session.js'][348]++; +function hash(sess) { + _$jscoverage['middleware/session.js'][349]++; + return crc16(JSON.stringify(sess, (function (key, val) { + _$jscoverage['middleware/session.js'][350]++; + if ("cookie" != key) { + _$jscoverage['middleware/session.js'][350]++; + return val; + } +}))); +} +_$jscoverage['middleware/session.js'].source = ["","/*!"," * Connect - session"," * Copyright(c) 2010 Sencha Inc."," * Copyright(c) 2011 TJ Holowaychuk"," * MIT Licensed"," */","","/**"," * Module dependencies."," */","","var Session = require('./session/session')"," , debug = require('debug')('connect:session')"," , MemoryStore = require('./session/memory')"," , signature = require('cookie-signature')"," , Cookie = require('./session/cookie')"," , Store = require('./session/store')"," , utils = require('./../utils')"," , parse = utils.parseUrl"," , crc16 = require('crc').crc16;","","// environment","","var env = process.env.NODE_ENV;","","/**"," * Expose the middleware."," */","","exports = module.exports = session;","","/**"," * Expose constructors."," */","","exports.Store = Store;","exports.Cookie = Cookie;","exports.Session = Session;","exports.MemoryStore = MemoryStore;","","/**"," * Warning message for `MemoryStore` usage in production."," */","","var warning = 'Warning: connection.session() MemoryStore is not\\n'"," + 'designed for a production environment, as it will leak\\n'"," + 'memory, and will not scale past a single process.';","","/**"," * Session:"," * "," * Setup session store with the given `options`."," *"," * Session data is _not_ saved in the cookie itself, however"," * cookies are used, so we must use the [cookieParser()](cookieParser.html)"," * middleware _before_ `session()`."," *"," * Examples:"," *"," * connect()"," * .use(connect.cookieParser())"," * .use(connect.session({ secret: 'keyboard cat', key: 'sid', cookie: { secure: true }}))"," *"," * Options:"," *"," * - `key` cookie name defaulting to `connect.sid`"," * - `store` session store instance"," * - `secret` session cookie is signed with this secret to prevent tampering"," * - `cookie` session cookie settings, defaulting to `{ path: '/', httpOnly: true, maxAge: null }`"," * - `proxy` trust the reverse proxy when setting secure cookies (via \"x-forwarded-proto\")"," *"," * Cookie option:"," *"," * By default `cookie.maxAge` is `null`, meaning no \"expires\" parameter is set"," * so the cookie becomes a browser-session cookie. When the user closes the "," * browser the cookie (and session) will be removed."," *"," * ## req.session"," *"," * To store or access session data, simply use the request property `req.session`,"," * which is (generally) serialized as JSON by the store, so nested objects "," * are typically fine. For example below is a user-specific view counter:"," *"," * connect()"," * .use(connect.favicon())"," * .use(connect.cookieParser())"," * .use(connect.session({ secret: 'keyboard cat', cookie: { maxAge: 60000 }}))"," * .use(function(req, res, next){"," * var sess = req.session;"," * if (sess.views) {"," * res.setHeader('Content-Type', 'text/html');"," * res.write('<p>views: ' + sess.views + '</p>');"," * res.write('<p>expires in: ' + (sess.cookie.maxAge / 1000) + 's</p>');"," * res.end();"," * sess.views++;"," * } else {"," * sess.views = 1;"," * res.end('welcome to the session demo. refresh!');"," * }"," * }"," * )).listen(3000);"," *"," * ## Session#regenerate()"," *"," * To regenerate the session simply invoke the method, once complete"," * a new SID and `Session` instance will be initialized at `req.session`."," *"," * req.session.regenerate(function(err){"," * // will have a new session here"," * });"," *"," * ## Session#destroy()"," *"," * Destroys the session, removing `req.session`, will be re-generated next request."," *"," * req.session.destroy(function(err){"," * // cannot access session here"," * });"," * "," * ## Session#reload()"," *"," * Reloads the session data."," *"," * req.session.reload(function(err){"," * // session updated"," * });"," *"," * ## Session#save()"," *"," * Save the session."," *"," * req.session.save(function(err){"," * // session saved"," * });"," *"," * ## Session#touch()"," *"," * Updates the `.maxAge` property. Typically this is"," * not necessary to call, as the session middleware does this for you."," *"," * ## Session#cookie"," *"," * Each session has a unique cookie object accompany it. This allows"," * you to alter the session cookie per visitor. For example we can"," * set `req.session.cookie.expires` to `false` to enable the cookie"," * to remain for only the duration of the user-agent."," *"," * ## Session#maxAge"," *"," * Alternatively `req.session.cookie.maxAge` will return the time"," * remaining in milliseconds, which we may also re-assign a new value"," * to adjust the `.expires` property appropriately. The following"," * are essentially equivalent"," *"," * var hour = 3600000;"," * req.session.cookie.expires = new Date(Date.now() + hour);"," * req.session.cookie.maxAge = hour;"," *"," * For example when `maxAge` is set to `60000` (one minute), and 30 seconds"," * has elapsed it will return `30000` until the current request has completed,"," * at which time `req.session.touch()` is called to reset `req.session.maxAge`"," * to its original value."," *"," * req.session.cookie.maxAge;"," * // => 30000"," *"," * Session Store Implementation:"," *"," * Every session store _must_ implement the following methods"," *"," * - `.get(sid, callback)`"," * - `.set(sid, session, callback)`"," * - `.destroy(sid, callback)`"," *"," * Recommended methods include, but are not limited to:"," *"," * - `.length(callback)`"," * - `.clear(callback)`"," *"," * For an example implementation view the [connect-redis](http://github.com/visionmedia/connect-redis) repo."," *"," * @param {Object} options"," * @return {Function}"," * @api public"," */","","function session(options){"," var options = options || {}"," , key = options.key || 'connect.sid'"," , store = options.store || new MemoryStore"," , cookie = options.cookie || {}"," , trustProxy = options.proxy"," , storeReady = true;",""," // notify user that this store is not"," // meant for a production environment"," if ('production' == env && store instanceof MemoryStore) {"," console.warn(warning);"," }",""," // generates the new session"," store.generate = function(req){"," req.sessionID = utils.uid(24);"," req.session = new Session(req);"," req.session.cookie = new Cookie(cookie);"," };",""," store.on('disconnect', function(){ storeReady = false; });"," store.on('connect', function(){ storeReady = true; });",""," return function session(req, res, next) {"," // self-awareness"," if (req.session) return next();",""," // Handle connection as if there is no session if"," // the store has temporarily disconnected etc"," if (!storeReady) return debug('store is disconnected'), next();",""," // pathname mismatch"," if (0 != req.originalUrl.indexOf(cookie.path || '/')) return next();",""," // backwards compatibility for signed cookies"," // req.secret is passed from the cookie parser middleware"," var secret = options.secret || req.secret;",""," // ensure secret is available or bail"," if (!secret) throw new Error('`secret` option required for sessions');",""," // parse url"," var originalHash"," , originalId;",""," // expose store"," req.sessionStore = store;",""," // grab the session cookie value and check the signature"," var rawCookie = req.cookies[key];",""," // get signedCookies for backwards compat with signed cookies"," var unsignedCookie = req.signedCookies[key];",""," if (!unsignedCookie && rawCookie) {"," unsignedCookie = utils.parseSignedCookie(rawCookie, secret);"," }",""," // set-cookie"," res.on('header', function(){"," if (!req.session) return;"," var cookie = req.session.cookie"," , proto = (req.headers['x-forwarded-proto'] || '').toLowerCase()"," , tls = req.connection.encrypted || (trustProxy && 'https' == proto)"," , secured = cookie.secure && tls"," , isNew = unsignedCookie != req.sessionID;",""," // only send secure cookies via https"," if (cookie.secure && !secured) return debug('not secured');",""," // browser-session length cookie"," if (null == cookie.expires) {"," if (!isNew) return debug('already set browser-session cookie');"," // compare hashes and ids"," } else if (originalHash == hash(req.session) && originalId == req.session.id) {"," return debug('unmodified session');"," }",""," var val = 's:' + signature.sign(req.sessionID, secret);"," val = cookie.serialize(key, val);"," debug('set-cookie %s', val);"," res.setHeader('Set-Cookie', val);"," });",""," // proxy end() to commit the session"," var end = res.end;"," res.end = function(data, encoding){"," res.end = end;"," if (!req.session) return res.end(data, encoding);"," debug('saving');"," req.session.resetMaxAge();"," req.session.save(function(){"," debug('saved');"," res.end(data, encoding);"," });"," };",""," // generate the session"," function generate() {"," store.generate(req);"," }",""," // get the sessionID from the cookie"," req.sessionID = unsignedCookie;",""," // generate a session if the browser doesn't send a sessionID"," if (!req.sessionID) {"," debug('no SID sent, generating session');"," generate();"," next();"," return;"," }",""," // generate the session object"," var pause = utils.pause(req);"," debug('fetching %s', req.sessionID);"," store.get(req.sessionID, function(err, sess){"," // proxy to resume() events"," var _next = next;"," next = function(err){"," _next(err);"," pause.resume();"," };",""," // error handling"," if (err) {"," debug('error');"," if ('ENOENT' == err.code) {"," generate();"," next();"," } else {"," next(err);"," }"," // no session"," } else if (!sess) {"," debug('no session found');"," generate();"," next();"," // populate req.session"," } else {"," debug('session found');"," store.createSession(req, sess);"," originalId = req.sessionID;"," originalHash = hash(sess);"," next();"," }"," });"," };","};","","/**"," * Hash the given `sess` object omitting changes"," * to `.cookie`."," *"," * @param {Object} sess"," * @return {String}"," * @api private"," */","","function hash(sess) {"," return crc16(JSON.stringify(sess, function(key, val){"," if ('cookie' != key) return val;"," }));","}"]; diff --git a/node_modules/express/node_modules/connect/lib-cov/middleware/session/cookie.js b/node_modules/express/node_modules/connect/lib-cov/middleware/session/cookie.js new file mode 100644 index 0000000..279afe5 --- /dev/null +++ b/node_modules/express/node_modules/connect/lib-cov/middleware/session/cookie.js @@ -0,0 +1,65 @@ +/* automatically generated by JSCoverage - do not edit */ +if (typeof _$jscoverage === 'undefined') _$jscoverage = {}; +if (! _$jscoverage['middleware/session/cookie.js']) { + _$jscoverage['middleware/session/cookie.js'] = []; + _$jscoverage['middleware/session/cookie.js'][13] = 0; + _$jscoverage['middleware/session/cookie.js'][24] = 0; + _$jscoverage['middleware/session/cookie.js'][25] = 0; + _$jscoverage['middleware/session/cookie.js'][26] = 0; + _$jscoverage['middleware/session/cookie.js'][27] = 0; + _$jscoverage['middleware/session/cookie.js'][28] = 0; + _$jscoverage['middleware/session/cookie.js'][29] = 0; + _$jscoverage['middleware/session/cookie.js'][38] = 0; + _$jscoverage['middleware/session/cookie.js'][48] = 0; + _$jscoverage['middleware/session/cookie.js'][49] = 0; + _$jscoverage['middleware/session/cookie.js'][60] = 0; + _$jscoverage['middleware/session/cookie.js'][71] = 0; + _$jscoverage['middleware/session/cookie.js'][84] = 0; + _$jscoverage['middleware/session/cookie.js'][97] = 0; + _$jscoverage['middleware/session/cookie.js'][115] = 0; + _$jscoverage['middleware/session/cookie.js'][126] = 0; +} +_$jscoverage['middleware/session/cookie.js'][13]++; +var utils = require("../../utils"), cookie = require("cookie"); +_$jscoverage['middleware/session/cookie.js'][24]++; +var Cookie = module.exports = (function Cookie(options) { + _$jscoverage['middleware/session/cookie.js'][25]++; + this.path = "/"; + _$jscoverage['middleware/session/cookie.js'][26]++; + this.maxAge = null; + _$jscoverage['middleware/session/cookie.js'][27]++; + this.httpOnly = true; + _$jscoverage['middleware/session/cookie.js'][28]++; + if (options) { + _$jscoverage['middleware/session/cookie.js'][28]++; + utils.merge(this, options); + } + _$jscoverage['middleware/session/cookie.js'][29]++; + this.originalMaxAge = undefined == this.originalMaxAge? this.maxAge: this.originalMaxAge; +}); +_$jscoverage['middleware/session/cookie.js'][38]++; +Cookie.prototype = {set expires (date) { + _$jscoverage['middleware/session/cookie.js'][48]++; + this._expires = date; + _$jscoverage['middleware/session/cookie.js'][49]++; + this.originalMaxAge = this.maxAge; +}, get expires () { + _$jscoverage['middleware/session/cookie.js'][60]++; + return this._expires; +}, set maxAge (ms) { + _$jscoverage['middleware/session/cookie.js'][71]++; + this.expires = "number" == typeof ms? new Date(Date.now() + ms): ms; +}, get maxAge () { + _$jscoverage['middleware/session/cookie.js'][84]++; + return this.expires instanceof Date? this.expires.valueOf() - Date.now(): this.expires; +}, get data () { + _$jscoverage['middleware/session/cookie.js'][97]++; + return ({originalMaxAge: this.originalMaxAge, expires: this._expires, secure: this.secure, httpOnly: this.httpOnly, domain: this.domain, path: this.path}); +}, serialize: (function (name, val) { + _$jscoverage['middleware/session/cookie.js'][115]++; + return cookie.serialize(name, val, this.data); +}), toJSON: (function () { + _$jscoverage['middleware/session/cookie.js'][126]++; + return this.data; +})}; +_$jscoverage['middleware/session/cookie.js'].source = ["","/*!"," * Connect - session - Cookie"," * Copyright(c) 2010 Sencha Inc."," * Copyright(c) 2011 TJ Holowaychuk"," * MIT Licensed"," */","","/**"," * Module dependencies."," */","","var utils = require('../../utils')"," , cookie = require('cookie');","","/**"," * Initialize a new `Cookie` with the given `options`."," *"," * @param {IncomingMessage} req"," * @param {Object} options"," * @api private"," */","","var Cookie = module.exports = function Cookie(options) {"," this.path = '/';"," this.maxAge = null;"," this.httpOnly = true;"," if (options) utils.merge(this, options);"," this.originalMaxAge = undefined == this.originalMaxAge"," ? this.maxAge"," : this.originalMaxAge;","};","","/*!"," * Prototype."," */","","Cookie.prototype = {",""," /**"," * Set expires `date`."," *"," * @param {Date} date"," * @api public"," */"," "," set expires(date) {"," this._expires = date;"," this.originalMaxAge = this.maxAge;"," },",""," /**"," * Get expires `date`."," *"," * @return {Date}"," * @api public"," */",""," get expires() {"," return this._expires;"," },"," "," /**"," * Set expires via max-age in `ms`."," *"," * @param {Number} ms"," * @api public"," */"," "," set maxAge(ms) {"," this.expires = 'number' == typeof ms"," ? new Date(Date.now() + ms)"," : ms;"," },",""," /**"," * Get expires max-age in `ms`."," *"," * @return {Number}"," * @api public"," */",""," get maxAge() {"," return this.expires instanceof Date"," ? this.expires.valueOf() - Date.now()"," : this.expires;"," },",""," /**"," * Return cookie data object."," *"," * @return {Object}"," * @api private"," */",""," get data() {"," return {"," originalMaxAge: this.originalMaxAge"," , expires: this._expires"," , secure: this.secure"," , httpOnly: this.httpOnly"," , domain: this.domain"," , path: this.path"," }"," },",""," /**"," * Return a serialized cookie string."," *"," * @return {String}"," * @api public"," */",""," serialize: function(name, val){"," return cookie.serialize(name, val, this.data);"," },",""," /**"," * Return JSON representation of this cookie."," *"," * @return {Object}"," * @api private"," */"," "," toJSON: function(){"," return this.data;"," }","};"]; diff --git a/node_modules/express/node_modules/connect/lib-cov/middleware/session/memory.js b/node_modules/express/node_modules/connect/lib-cov/middleware/session/memory.js new file mode 100644 index 0000000..f140187 --- /dev/null +++ b/node_modules/express/node_modules/connect/lib-cov/middleware/session/memory.js @@ -0,0 +1,128 @@ +/* automatically generated by JSCoverage - do not edit */ +if (typeof _$jscoverage === 'undefined') _$jscoverage = {}; +if (! _$jscoverage['middleware/session/memory.js']) { + _$jscoverage['middleware/session/memory.js'] = []; + _$jscoverage['middleware/session/memory.js'][13] = 0; + _$jscoverage['middleware/session/memory.js'][21] = 0; + _$jscoverage['middleware/session/memory.js'][22] = 0; + _$jscoverage['middleware/session/memory.js'][29] = 0; + _$jscoverage['middleware/session/memory.js'][39] = 0; + _$jscoverage['middleware/session/memory.js'][40] = 0; + _$jscoverage['middleware/session/memory.js'][41] = 0; + _$jscoverage['middleware/session/memory.js'][42] = 0; + _$jscoverage['middleware/session/memory.js'][44] = 0; + _$jscoverage['middleware/session/memory.js'][45] = 0; + _$jscoverage['middleware/session/memory.js'][46] = 0; + _$jscoverage['middleware/session/memory.js'][49] = 0; + _$jscoverage['middleware/session/memory.js'][50] = 0; + _$jscoverage['middleware/session/memory.js'][52] = 0; + _$jscoverage['middleware/session/memory.js'][55] = 0; + _$jscoverage['middleware/session/memory.js'][69] = 0; + _$jscoverage['middleware/session/memory.js'][70] = 0; + _$jscoverage['middleware/session/memory.js'][71] = 0; + _$jscoverage['middleware/session/memory.js'][72] = 0; + _$jscoverage['middleware/session/memory.js'][73] = 0; + _$jscoverage['middleware/session/memory.js'][84] = 0; + _$jscoverage['middleware/session/memory.js'][85] = 0; + _$jscoverage['middleware/session/memory.js'][86] = 0; + _$jscoverage['middleware/session/memory.js'][87] = 0; + _$jscoverage['middleware/session/memory.js'][88] = 0; + _$jscoverage['middleware/session/memory.js'][99] = 0; + _$jscoverage['middleware/session/memory.js'][100] = 0; + _$jscoverage['middleware/session/memory.js'][102] = 0; + _$jscoverage['middleware/session/memory.js'][103] = 0; + _$jscoverage['middleware/session/memory.js'][105] = 0; + _$jscoverage['middleware/session/memory.js'][115] = 0; + _$jscoverage['middleware/session/memory.js'][116] = 0; + _$jscoverage['middleware/session/memory.js'][117] = 0; + _$jscoverage['middleware/session/memory.js'][127] = 0; + _$jscoverage['middleware/session/memory.js'][128] = 0; +} +_$jscoverage['middleware/session/memory.js'][13]++; +var Store = require("./store"); +_$jscoverage['middleware/session/memory.js'][21]++; +var MemoryStore = module.exports = (function MemoryStore() { + _$jscoverage['middleware/session/memory.js'][22]++; + this.sessions = {}; +}); +_$jscoverage['middleware/session/memory.js'][29]++; +MemoryStore.prototype.__proto__ = Store.prototype; +_$jscoverage['middleware/session/memory.js'][39]++; +MemoryStore.prototype.get = (function (sid, fn) { + _$jscoverage['middleware/session/memory.js'][40]++; + var self = this; + _$jscoverage['middleware/session/memory.js'][41]++; + process.nextTick((function () { + _$jscoverage['middleware/session/memory.js'][42]++; + var expires, sess = self.sessions[sid]; + _$jscoverage['middleware/session/memory.js'][44]++; + if (sess) { + _$jscoverage['middleware/session/memory.js'][45]++; + sess = JSON.parse(sess); + _$jscoverage['middleware/session/memory.js'][46]++; + expires = "string" == typeof sess.cookie.expires? new Date(sess.cookie.expires): sess.cookie.expires; + _$jscoverage['middleware/session/memory.js'][49]++; + if (! expires || new Date() < expires) { + _$jscoverage['middleware/session/memory.js'][50]++; + fn(null, sess); + } + else { + _$jscoverage['middleware/session/memory.js'][52]++; + self.destroy(sid, fn); + } + } + else { + _$jscoverage['middleware/session/memory.js'][55]++; + fn(); + } +})); +}); +_$jscoverage['middleware/session/memory.js'][69]++; +MemoryStore.prototype.set = (function (sid, sess, fn) { + _$jscoverage['middleware/session/memory.js'][70]++; + var self = this; + _$jscoverage['middleware/session/memory.js'][71]++; + process.nextTick((function () { + _$jscoverage['middleware/session/memory.js'][72]++; + self.sessions[sid] = JSON.stringify(sess); + _$jscoverage['middleware/session/memory.js'][73]++; + fn && fn(); +})); +}); +_$jscoverage['middleware/session/memory.js'][84]++; +MemoryStore.prototype.destroy = (function (sid, fn) { + _$jscoverage['middleware/session/memory.js'][85]++; + var self = this; + _$jscoverage['middleware/session/memory.js'][86]++; + process.nextTick((function () { + _$jscoverage['middleware/session/memory.js'][87]++; + delete self.sessions[sid]; + _$jscoverage['middleware/session/memory.js'][88]++; + fn && fn(); +})); +}); +_$jscoverage['middleware/session/memory.js'][99]++; +MemoryStore.prototype.all = (function (fn) { + _$jscoverage['middleware/session/memory.js'][100]++; + var arr = [], keys = Object.keys(this.sessions); + _$jscoverage['middleware/session/memory.js'][102]++; + for (var i = 0, len = keys.length; i < len; ++i) { + _$jscoverage['middleware/session/memory.js'][103]++; + arr.push(this.sessions[keys[i]]); +} + _$jscoverage['middleware/session/memory.js'][105]++; + fn(null, arr); +}); +_$jscoverage['middleware/session/memory.js'][115]++; +MemoryStore.prototype.clear = (function (fn) { + _$jscoverage['middleware/session/memory.js'][116]++; + this.sessions = {}; + _$jscoverage['middleware/session/memory.js'][117]++; + fn && fn(); +}); +_$jscoverage['middleware/session/memory.js'][127]++; +MemoryStore.prototype.length = (function (fn) { + _$jscoverage['middleware/session/memory.js'][128]++; + fn(null, Object.keys(this.sessions).length); +}); +_$jscoverage['middleware/session/memory.js'].source = ["","/*!"," * Connect - session - MemoryStore"," * Copyright(c) 2010 Sencha Inc."," * Copyright(c) 2011 TJ Holowaychuk"," * MIT Licensed"," */","","/**"," * Module dependencies."," */","","var Store = require('./store');","","/**"," * Initialize a new `MemoryStore`."," *"," * @api public"," */","","var MemoryStore = module.exports = function MemoryStore() {"," this.sessions = {};","};","","/**"," * Inherit from `Store.prototype`."," */","","MemoryStore.prototype.__proto__ = Store.prototype;","","/**"," * Attempt to fetch session by the given `sid`."," *"," * @param {String} sid"," * @param {Function} fn"," * @api public"," */","","MemoryStore.prototype.get = function(sid, fn){"," var self = this;"," process.nextTick(function(){"," var expires"," , sess = self.sessions[sid];"," if (sess) {"," sess = JSON.parse(sess);"," expires = 'string' == typeof sess.cookie.expires"," ? new Date(sess.cookie.expires)"," : sess.cookie.expires;"," if (!expires || new Date < expires) {"," fn(null, sess);"," } else {"," self.destroy(sid, fn);"," }"," } else {"," fn();"," }"," });","};","","/**"," * Commit the given `sess` object associated with the given `sid`."," *"," * @param {String} sid"," * @param {Session} sess"," * @param {Function} fn"," * @api public"," */","","MemoryStore.prototype.set = function(sid, sess, fn){"," var self = this;"," process.nextTick(function(){"," self.sessions[sid] = JSON.stringify(sess);"," fn && fn();"," });","};","","/**"," * Destroy the session associated with the given `sid`."," *"," * @param {String} sid"," * @api public"," */","","MemoryStore.prototype.destroy = function(sid, fn){"," var self = this;"," process.nextTick(function(){"," delete self.sessions[sid];"," fn && fn();"," });","};","","/**"," * Invoke the given callback `fn` with all active sessions."," *"," * @param {Function} fn"," * @api public"," */","","MemoryStore.prototype.all = function(fn){"," var arr = []"," , keys = Object.keys(this.sessions);"," for (var i = 0, len = keys.length; i < len; ++i) {"," arr.push(this.sessions[keys[i]]);"," }"," fn(null, arr);","};","","/**"," * Clear all sessions."," *"," * @param {Function} fn"," * @api public"," */","","MemoryStore.prototype.clear = function(fn){"," this.sessions = {};"," fn && fn();","};","","/**"," * Fetch number of sessions."," *"," * @param {Function} fn"," * @api public"," */","","MemoryStore.prototype.length = function(fn){"," fn(null, Object.keys(this.sessions).length);","};"]; diff --git a/node_modules/express/node_modules/connect/lib-cov/middleware/session/session.js b/node_modules/express/node_modules/connect/lib-cov/middleware/session/session.js new file mode 100644 index 0000000..73e85e0 --- /dev/null +++ b/node_modules/express/node_modules/connect/lib-cov/middleware/session/session.js @@ -0,0 +1,108 @@ +/* automatically generated by JSCoverage - do not edit */ +if (typeof _$jscoverage === 'undefined') _$jscoverage = {}; +if (! _$jscoverage['middleware/session/session.js']) { + _$jscoverage['middleware/session/session.js'] = []; + _$jscoverage['middleware/session/session.js'][13] = 0; + _$jscoverage['middleware/session/session.js'][23] = 0; + _$jscoverage['middleware/session/session.js'][24] = 0; + _$jscoverage['middleware/session/session.js'][25] = 0; + _$jscoverage['middleware/session/session.js'][26] = 0; + _$jscoverage['middleware/session/session.js'][38] = 0; + _$jscoverage['middleware/session/session.js'][39] = 0; + _$jscoverage['middleware/session/session.js'][49] = 0; + _$jscoverage['middleware/session/session.js'][50] = 0; + _$jscoverage['middleware/session/session.js'][51] = 0; + _$jscoverage['middleware/session/session.js'][62] = 0; + _$jscoverage['middleware/session/session.js'][63] = 0; + _$jscoverage['middleware/session/session.js'][64] = 0; + _$jscoverage['middleware/session/session.js'][79] = 0; + _$jscoverage['middleware/session/session.js'][80] = 0; + _$jscoverage['middleware/session/session.js'][82] = 0; + _$jscoverage['middleware/session/session.js'][83] = 0; + _$jscoverage['middleware/session/session.js'][84] = 0; + _$jscoverage['middleware/session/session.js'][85] = 0; + _$jscoverage['middleware/session/session.js'][86] = 0; + _$jscoverage['middleware/session/session.js'][88] = 0; + _$jscoverage['middleware/session/session.js'][99] = 0; + _$jscoverage['middleware/session/session.js'][100] = 0; + _$jscoverage['middleware/session/session.js'][101] = 0; + _$jscoverage['middleware/session/session.js'][102] = 0; + _$jscoverage['middleware/session/session.js'][113] = 0; + _$jscoverage['middleware/session/session.js'][114] = 0; + _$jscoverage['middleware/session/session.js'][115] = 0; +} +_$jscoverage['middleware/session/session.js'][13]++; +var utils = require("../../utils"); +_$jscoverage['middleware/session/session.js'][23]++; +var Session = module.exports = (function Session(req, data) { + _$jscoverage['middleware/session/session.js'][24]++; + Object.defineProperty(this, "req", {value: req}); + _$jscoverage['middleware/session/session.js'][25]++; + Object.defineProperty(this, "id", {value: req.sessionID}); + _$jscoverage['middleware/session/session.js'][26]++; + if ("object" == typeof data) { + _$jscoverage['middleware/session/session.js'][26]++; + utils.merge(this, data); + } +}); +_$jscoverage['middleware/session/session.js'][38]++; +Session.prototype.touch = (function () { + _$jscoverage['middleware/session/session.js'][39]++; + return this.resetMaxAge(); +}); +_$jscoverage['middleware/session/session.js'][49]++; +Session.prototype.resetMaxAge = (function () { + _$jscoverage['middleware/session/session.js'][50]++; + this.cookie.maxAge = this.cookie.originalMaxAge; + _$jscoverage['middleware/session/session.js'][51]++; + return this; +}); +_$jscoverage['middleware/session/session.js'][62]++; +Session.prototype.save = (function (fn) { + _$jscoverage['middleware/session/session.js'][63]++; + this.req.sessionStore.set(this.id, this, fn || (function () { +})); + _$jscoverage['middleware/session/session.js'][64]++; + return this; +}); +_$jscoverage['middleware/session/session.js'][79]++; +Session.prototype.reload = (function (fn) { + _$jscoverage['middleware/session/session.js'][80]++; + var req = this.req, store = this.req.sessionStore; + _$jscoverage['middleware/session/session.js'][82]++; + store.get(this.id, (function (err, sess) { + _$jscoverage['middleware/session/session.js'][83]++; + if (err) { + _$jscoverage['middleware/session/session.js'][83]++; + return fn(err); + } + _$jscoverage['middleware/session/session.js'][84]++; + if (! sess) { + _$jscoverage['middleware/session/session.js'][84]++; + return fn(new Error("failed to load session")); + } + _$jscoverage['middleware/session/session.js'][85]++; + store.createSession(req, sess); + _$jscoverage['middleware/session/session.js'][86]++; + fn(); +})); + _$jscoverage['middleware/session/session.js'][88]++; + return this; +}); +_$jscoverage['middleware/session/session.js'][99]++; +Session.prototype.destroy = (function (fn) { + _$jscoverage['middleware/session/session.js'][100]++; + delete this.req.session; + _$jscoverage['middleware/session/session.js'][101]++; + this.req.sessionStore.destroy(this.id, fn); + _$jscoverage['middleware/session/session.js'][102]++; + return this; +}); +_$jscoverage['middleware/session/session.js'][113]++; +Session.prototype.regenerate = (function (fn) { + _$jscoverage['middleware/session/session.js'][114]++; + this.req.sessionStore.regenerate(this.req, fn); + _$jscoverage['middleware/session/session.js'][115]++; + return this; +}); +_$jscoverage['middleware/session/session.js'].source = ["","/*!"," * Connect - session - Session"," * Copyright(c) 2010 Sencha Inc."," * Copyright(c) 2011 TJ Holowaychuk"," * MIT Licensed"," */","","/**"," * Module dependencies."," */","","var utils = require('../../utils');","","/**"," * Create a new `Session` with the given request and `data`."," *"," * @param {IncomingRequest} req"," * @param {Object} data"," * @api private"," */","","var Session = module.exports = function Session(req, data) {"," Object.defineProperty(this, 'req', { value: req });"," Object.defineProperty(this, 'id', { value: req.sessionID });"," if ('object' == typeof data) utils.merge(this, data);","};","","/**"," * Update reset `.cookie.maxAge` to prevent"," * the cookie from expiring when the"," * session is still active."," *"," * @return {Session} for chaining"," * @api public"," */","","Session.prototype.touch = function(){"," return this.resetMaxAge();","};","","/**"," * Reset `.maxAge` to `.originalMaxAge`."," *"," * @return {Session} for chaining"," * @api public"," */","","Session.prototype.resetMaxAge = function(){"," this.cookie.maxAge = this.cookie.originalMaxAge;"," return this;","};","","/**"," * Save the session data with optional callback `fn(err)`."," *"," * @param {Function} fn"," * @return {Session} for chaining"," * @api public"," */","","Session.prototype.save = function(fn){"," this.req.sessionStore.set(this.id, this, fn || function(){});"," return this;","};","","/**"," * Re-loads the session data _without_ altering"," * the maxAge properties. Invokes the callback `fn(err)`,"," * after which time if no exception has occurred the"," * `req.session` property will be a new `Session` object,"," * although representing the same session."," *"," * @param {Function} fn"," * @return {Session} for chaining"," * @api public"," */","","Session.prototype.reload = function(fn){"," var req = this.req"," , store = this.req.sessionStore;"," store.get(this.id, function(err, sess){"," if (err) return fn(err);"," if (!sess) return fn(new Error('failed to load session'));"," store.createSession(req, sess);"," fn();"," });"," return this;","};","","/**"," * Destroy `this` session."," *"," * @param {Function} fn"," * @return {Session} for chaining"," * @api public"," */","","Session.prototype.destroy = function(fn){"," delete this.req.session;"," this.req.sessionStore.destroy(this.id, fn);"," return this;","};","","/**"," * Regenerate this request's session."," *"," * @param {Function} fn"," * @return {Session} for chaining"," * @api public"," */","","Session.prototype.regenerate = function(fn){"," this.req.sessionStore.regenerate(this.req, fn);"," return this;","};"]; diff --git a/node_modules/express/node_modules/connect/lib-cov/middleware/session/store.js b/node_modules/express/node_modules/connect/lib-cov/middleware/session/store.js new file mode 100644 index 0000000..2d79aa2 --- /dev/null +++ b/node_modules/express/node_modules/connect/lib-cov/middleware/session/store.js @@ -0,0 +1,90 @@ +/* automatically generated by JSCoverage - do not edit */ +if (typeof _$jscoverage === 'undefined') _$jscoverage = {}; +if (! _$jscoverage['middleware/session/store.js']) { + _$jscoverage['middleware/session/store.js'] = []; + _$jscoverage['middleware/session/store.js'][13] = 0; + _$jscoverage['middleware/session/store.js'][23] = 0; + _$jscoverage['middleware/session/store.js'][29] = 0; + _$jscoverage['middleware/session/store.js'][39] = 0; + _$jscoverage['middleware/session/store.js'][40] = 0; + _$jscoverage['middleware/session/store.js'][41] = 0; + _$jscoverage['middleware/session/store.js'][42] = 0; + _$jscoverage['middleware/session/store.js'][43] = 0; + _$jscoverage['middleware/session/store.js'][56] = 0; + _$jscoverage['middleware/session/store.js'][57] = 0; + _$jscoverage['middleware/session/store.js'][58] = 0; + _$jscoverage['middleware/session/store.js'][59] = 0; + _$jscoverage['middleware/session/store.js'][60] = 0; + _$jscoverage['middleware/session/store.js'][61] = 0; + _$jscoverage['middleware/session/store.js'][62] = 0; + _$jscoverage['middleware/session/store.js'][63] = 0; + _$jscoverage['middleware/session/store.js'][76] = 0; + _$jscoverage['middleware/session/store.js'][77] = 0; + _$jscoverage['middleware/session/store.js'][79] = 0; + _$jscoverage['middleware/session/store.js'][80] = 0; + _$jscoverage['middleware/session/store.js'][81] = 0; + _$jscoverage['middleware/session/store.js'][82] = 0; + _$jscoverage['middleware/session/store.js'][83] = 0; +} +_$jscoverage['middleware/session/store.js'][13]++; +var EventEmitter = require("events").EventEmitter, Session = require("./session"), Cookie = require("./cookie"); +_$jscoverage['middleware/session/store.js'][23]++; +var Store = module.exports = (function Store(options) { +}); +_$jscoverage['middleware/session/store.js'][29]++; +Store.prototype.__proto__ = EventEmitter.prototype; +_$jscoverage['middleware/session/store.js'][39]++; +Store.prototype.regenerate = (function (req, fn) { + _$jscoverage['middleware/session/store.js'][40]++; + var self = this; + _$jscoverage['middleware/session/store.js'][41]++; + this.destroy(req.sessionID, (function (err) { + _$jscoverage['middleware/session/store.js'][42]++; + self.generate(req); + _$jscoverage['middleware/session/store.js'][43]++; + fn(err); +})); +}); +_$jscoverage['middleware/session/store.js'][56]++; +Store.prototype.load = (function (sid, fn) { + _$jscoverage['middleware/session/store.js'][57]++; + var self = this; + _$jscoverage['middleware/session/store.js'][58]++; + this.get(sid, (function (err, sess) { + _$jscoverage['middleware/session/store.js'][59]++; + if (err) { + _$jscoverage['middleware/session/store.js'][59]++; + return fn(err); + } + _$jscoverage['middleware/session/store.js'][60]++; + if (! sess) { + _$jscoverage['middleware/session/store.js'][60]++; + return fn(); + } + _$jscoverage['middleware/session/store.js'][61]++; + var req = {sessionID: sid, sessionStore: self}; + _$jscoverage['middleware/session/store.js'][62]++; + sess = self.createSession(req, sess); + _$jscoverage['middleware/session/store.js'][63]++; + fn(null, sess); +})); +}); +_$jscoverage['middleware/session/store.js'][76]++; +Store.prototype.createSession = (function (req, sess) { + _$jscoverage['middleware/session/store.js'][77]++; + var expires = sess.cookie.expires, orig = sess.cookie.originalMaxAge; + _$jscoverage['middleware/session/store.js'][79]++; + sess.cookie = new Cookie(sess.cookie); + _$jscoverage['middleware/session/store.js'][80]++; + if ("string" == typeof expires) { + _$jscoverage['middleware/session/store.js'][80]++; + sess.cookie.expires = new Date(expires); + } + _$jscoverage['middleware/session/store.js'][81]++; + sess.cookie.originalMaxAge = orig; + _$jscoverage['middleware/session/store.js'][82]++; + req.session = new Session(req, sess); + _$jscoverage['middleware/session/store.js'][83]++; + return req.session; +}); +_$jscoverage['middleware/session/store.js'].source = ["","/*!"," * Connect - session - Store"," * Copyright(c) 2010 Sencha Inc."," * Copyright(c) 2011 TJ Holowaychuk"," * MIT Licensed"," */","","/**"," * Module dependencies."," */","","var EventEmitter = require('events').EventEmitter"," , Session = require('./session')"," , Cookie = require('./cookie');","","/**"," * Initialize abstract `Store`."," *"," * @api private"," */","","var Store = module.exports = function Store(options){};","","/**"," * Inherit from `EventEmitter.prototype`."," */","","Store.prototype.__proto__ = EventEmitter.prototype;","","/**"," * Re-generate the given requests's session."," *"," * @param {IncomingRequest} req"," * @return {Function} fn"," * @api public"," */","","Store.prototype.regenerate = function(req, fn){"," var self = this;"," this.destroy(req.sessionID, function(err){"," self.generate(req);"," fn(err);"," });","};","","/**"," * Load a `Session` instance via the given `sid`"," * and invoke the callback `fn(err, sess)`."," *"," * @param {String} sid"," * @param {Function} fn"," * @api public"," */","","Store.prototype.load = function(sid, fn){"," var self = this;"," this.get(sid, function(err, sess){"," if (err) return fn(err);"," if (!sess) return fn();"," var req = { sessionID: sid, sessionStore: self };"," sess = self.createSession(req, sess);"," fn(null, sess);"," });","};","","/**"," * Create session from JSON `sess` data."," *"," * @param {IncomingRequest} req"," * @param {Object} sess"," * @return {Session}"," * @api private"," */","","Store.prototype.createSession = function(req, sess){"," var expires = sess.cookie.expires"," , orig = sess.cookie.originalMaxAge;"," sess.cookie = new Cookie(sess.cookie);"," if ('string' == typeof expires) sess.cookie.expires = new Date(expires);"," sess.cookie.originalMaxAge = orig;"," req.session = new Session(req, sess);"," return req.session;","};"]; diff --git a/node_modules/express/node_modules/connect/lib-cov/middleware/static.js b/node_modules/express/node_modules/connect/lib-cov/middleware/static.js new file mode 100644 index 0000000..c52b1c0 --- /dev/null +++ b/node_modules/express/node_modules/connect/lib-cov/middleware/static.js @@ -0,0 +1,92 @@ +/* automatically generated by JSCoverage - do not edit */ +if (typeof _$jscoverage === 'undefined') _$jscoverage = {}; +if (! _$jscoverage['middleware/static.js']) { + _$jscoverage['middleware/static.js'] = []; + _$jscoverage['middleware/static.js'][13] = 0; + _$jscoverage['middleware/static.js'][45] = 0; + _$jscoverage['middleware/static.js'][46] = 0; + _$jscoverage['middleware/static.js'][49] = 0; + _$jscoverage['middleware/static.js'][52] = 0; + _$jscoverage['middleware/static.js'][54] = 0; + _$jscoverage['middleware/static.js'][55] = 0; + _$jscoverage['middleware/static.js'][56] = 0; + _$jscoverage['middleware/static.js'][57] = 0; + _$jscoverage['middleware/static.js'][59] = 0; + _$jscoverage['middleware/static.js'][60] = 0; + _$jscoverage['middleware/static.js'][61] = 0; + _$jscoverage['middleware/static.js'][64] = 0; + _$jscoverage['middleware/static.js'][65] = 0; + _$jscoverage['middleware/static.js'][66] = 0; + _$jscoverage['middleware/static.js'][67] = 0; + _$jscoverage['middleware/static.js'][68] = 0; + _$jscoverage['middleware/static.js'][69] = 0; + _$jscoverage['middleware/static.js'][72] = 0; + _$jscoverage['middleware/static.js'][73] = 0; + _$jscoverage['middleware/static.js'][74] = 0; + _$jscoverage['middleware/static.js'][77] = 0; + _$jscoverage['middleware/static.js'][94] = 0; +} +_$jscoverage['middleware/static.js'][13]++; +var send = require("send"), utils = require("../utils"), parse = utils.parseUrl, url = require("url"); +_$jscoverage['middleware/static.js'][45]++; +exports = module.exports = (function static(root, options) { + _$jscoverage['middleware/static.js'][46]++; + options = options || {}; + _$jscoverage['middleware/static.js'][49]++; + if (! root) { + _$jscoverage['middleware/static.js'][49]++; + throw new Error("static() root path required"); + } + _$jscoverage['middleware/static.js'][52]++; + var redirect = false !== options.redirect; + _$jscoverage['middleware/static.js'][54]++; + return (function static(req, res, next) { + _$jscoverage['middleware/static.js'][55]++; + if ("GET" != req.method && "HEAD" != req.method) { + _$jscoverage['middleware/static.js'][55]++; + return next(); + } + _$jscoverage['middleware/static.js'][56]++; + var path = parse(req).pathname; + _$jscoverage['middleware/static.js'][57]++; + var pause = utils.pause(req); + _$jscoverage['middleware/static.js'][59]++; + function resume() { + _$jscoverage['middleware/static.js'][60]++; + next(); + _$jscoverage['middleware/static.js'][61]++; + pause.resume(); +} + _$jscoverage['middleware/static.js'][64]++; + function directory() { + _$jscoverage['middleware/static.js'][65]++; + if (! redirect) { + _$jscoverage['middleware/static.js'][65]++; + return resume(); + } + _$jscoverage['middleware/static.js'][66]++; + var pathname = url.parse(req.originalUrl).pathname; + _$jscoverage['middleware/static.js'][67]++; + res.statusCode = 301; + _$jscoverage['middleware/static.js'][68]++; + res.setHeader("Location", pathname + "/"); + _$jscoverage['middleware/static.js'][69]++; + res.end("Redirecting to " + utils.escape(pathname) + "/"); +} + _$jscoverage['middleware/static.js'][72]++; + function error(err) { + _$jscoverage['middleware/static.js'][73]++; + if (404 == err.status) { + _$jscoverage['middleware/static.js'][73]++; + return resume(); + } + _$jscoverage['middleware/static.js'][74]++; + next(err); +} + _$jscoverage['middleware/static.js'][77]++; + send(req, path).maxage(options.maxAge || 0).root(root).hidden(options.hidden).on("error", error).on("directory", directory).pipe(res); +}); +}); +_$jscoverage['middleware/static.js'][94]++; +exports.mime = send.mime; +_$jscoverage['middleware/static.js'].source = ["","/*!"," * Connect - static"," * Copyright(c) 2010 Sencha Inc."," * Copyright(c) 2011 TJ Holowaychuk"," * MIT Licensed"," */","","/**"," * Module dependencies."," */","","var send = require('send')"," , utils = require('../utils')"," , parse = utils.parseUrl"," , url = require('url');","","/**"," * Static:"," *"," * Static file server with the given `root` path."," *"," * Examples:"," *"," * var oneDay = 86400000;"," *"," * connect()"," * .use(connect.static(__dirname + '/public'))"," *"," * connect()"," * .use(connect.static(__dirname + '/public', { maxAge: oneDay }))"," *"," * Options:"," *"," * - `maxAge` Browser cache maxAge in milliseconds. defaults to 0"," * - `hidden` Allow transfer of hidden files. defaults to false"," * - `redirect` Redirect to trailing \"/\" when the pathname is a dir. defaults to true"," *"," * @param {String} root"," * @param {Object} options"," * @return {Function}"," * @api public"," */","","exports = module.exports = function static(root, options){"," options = options || {};",""," // root required"," if (!root) throw new Error('static() root path required');",""," // default redirect"," var redirect = false !== options.redirect;",""," return function static(req, res, next) {"," if ('GET' != req.method && 'HEAD' != req.method) return next();"," var path = parse(req).pathname;"," var pause = utils.pause(req);",""," function resume() {"," next();"," pause.resume();"," }",""," function directory() {"," if (!redirect) return resume();"," var pathname = url.parse(req.originalUrl).pathname;"," res.statusCode = 301;"," res.setHeader('Location', pathname + '/');"," res.end('Redirecting to ' + utils.escape(pathname) + '/');"," }",""," function error(err) {"," if (404 == err.status) return resume();"," next(err);"," }",""," send(req, path)"," .maxage(options.maxAge || 0)"," .root(root)"," .hidden(options.hidden)"," .on('error', error)"," .on('directory', directory)"," .pipe(res);"," };","};","","/**"," * Expose mime module."," * "," * If you wish to extend the mime table use this"," * reference to the \"mime\" module in the npm registry."," */","","exports.mime = send.mime;"]; diff --git a/node_modules/express/node_modules/connect/lib-cov/middleware/staticCache.js b/node_modules/express/node_modules/connect/lib-cov/middleware/staticCache.js new file mode 100644 index 0000000..e8c2940 --- /dev/null +++ b/node_modules/express/node_modules/connect/lib-cov/middleware/staticCache.js @@ -0,0 +1,276 @@ +/* automatically generated by JSCoverage - do not edit */ +if (typeof _$jscoverage === 'undefined') _$jscoverage = {}; +if (! _$jscoverage['middleware/staticCache.js']) { + _$jscoverage['middleware/staticCache.js'] = []; + _$jscoverage['middleware/staticCache.js'][12] = 0; + _$jscoverage['middleware/staticCache.js'][51] = 0; + _$jscoverage['middleware/staticCache.js'][52] = 0; + _$jscoverage['middleware/staticCache.js'][56] = 0; + _$jscoverage['middleware/staticCache.js'][57] = 0; + _$jscoverage['middleware/staticCache.js'][59] = 0; + _$jscoverage['middleware/staticCache.js'][60] = 0; + _$jscoverage['middleware/staticCache.js'][68] = 0; + _$jscoverage['middleware/staticCache.js'][69] = 0; + _$jscoverage['middleware/staticCache.js'][75] = 0; + _$jscoverage['middleware/staticCache.js'][78] = 0; + _$jscoverage['middleware/staticCache.js'][81] = 0; + _$jscoverage['middleware/staticCache.js'][84] = 0; + _$jscoverage['middleware/staticCache.js'][88] = 0; + _$jscoverage['middleware/staticCache.js'][91] = 0; + _$jscoverage['middleware/staticCache.js'][94] = 0; + _$jscoverage['middleware/staticCache.js'][95] = 0; + _$jscoverage['middleware/staticCache.js'][96] = 0; + _$jscoverage['middleware/staticCache.js'][97] = 0; + _$jscoverage['middleware/staticCache.js'][99] = 0; + _$jscoverage['middleware/staticCache.js'][104] = 0; + _$jscoverage['middleware/staticCache.js'][107] = 0; + _$jscoverage['middleware/staticCache.js'][110] = 0; + _$jscoverage['middleware/staticCache.js'][111] = 0; + _$jscoverage['middleware/staticCache.js'][115] = 0; + _$jscoverage['middleware/staticCache.js'][116] = 0; + _$jscoverage['middleware/staticCache.js'][117] = 0; + _$jscoverage['middleware/staticCache.js'][118] = 0; + _$jscoverage['middleware/staticCache.js'][119] = 0; + _$jscoverage['middleware/staticCache.js'][120] = 0; + _$jscoverage['middleware/staticCache.js'][124] = 0; + _$jscoverage['middleware/staticCache.js'][125] = 0; + _$jscoverage['middleware/staticCache.js'][126] = 0; + _$jscoverage['middleware/staticCache.js'][127] = 0; + _$jscoverage['middleware/staticCache.js'][128] = 0; + _$jscoverage['middleware/staticCache.js'][129] = 0; + _$jscoverage['middleware/staticCache.js'][131] = 0; + _$jscoverage['middleware/staticCache.js'][132] = 0; + _$jscoverage['middleware/staticCache.js'][135] = 0; + _$jscoverage['middleware/staticCache.js'][151] = 0; + _$jscoverage['middleware/staticCache.js'][152] = 0; + _$jscoverage['middleware/staticCache.js'][156] = 0; + _$jscoverage['middleware/staticCache.js'][158] = 0; + _$jscoverage['middleware/staticCache.js'][160] = 0; + _$jscoverage['middleware/staticCache.js'][161] = 0; + _$jscoverage['middleware/staticCache.js'][162] = 0; + _$jscoverage['middleware/staticCache.js'][164] = 0; + _$jscoverage['middleware/staticCache.js'][165] = 0; + _$jscoverage['middleware/staticCache.js'][166] = 0; + _$jscoverage['middleware/staticCache.js'][167] = 0; + _$jscoverage['middleware/staticCache.js'][169] = 0; + _$jscoverage['middleware/staticCache.js'][171] = 0; + _$jscoverage['middleware/staticCache.js'][172] = 0; + _$jscoverage['middleware/staticCache.js'][173] = 0; + _$jscoverage['middleware/staticCache.js'][174] = 0; + _$jscoverage['middleware/staticCache.js'][175] = 0; + _$jscoverage['middleware/staticCache.js'][178] = 0; + _$jscoverage['middleware/staticCache.js'][181] = 0; + _$jscoverage['middleware/staticCache.js'][183] = 0; + _$jscoverage['middleware/staticCache.js'][186] = 0; + _$jscoverage['middleware/staticCache.js'][187] = 0; + _$jscoverage['middleware/staticCache.js'][200] = 0; + _$jscoverage['middleware/staticCache.js'][201] = 0; + _$jscoverage['middleware/staticCache.js'][206] = 0; + _$jscoverage['middleware/staticCache.js'][208] = 0; + _$jscoverage['middleware/staticCache.js'][210] = 0; + _$jscoverage['middleware/staticCache.js'][212] = 0; + _$jscoverage['middleware/staticCache.js'][214] = 0; + _$jscoverage['middleware/staticCache.js'][216] = 0; + _$jscoverage['middleware/staticCache.js'][229] = 0; + _$jscoverage['middleware/staticCache.js'][230] = 0; +} +_$jscoverage['middleware/staticCache.js'][12]++; +var utils = require("../utils"), Cache = require("../cache"), fresh = require("fresh"); +_$jscoverage['middleware/staticCache.js'][51]++; +module.exports = (function staticCache(options) { + _$jscoverage['middleware/staticCache.js'][52]++; + var options = options || {}, cache = new Cache(options.maxObjects || 128), maxlen = options.maxLength || 262144; + _$jscoverage['middleware/staticCache.js'][56]++; + console.warn("connect.staticCache() is deprecated and will be removed in 3.0"); + _$jscoverage['middleware/staticCache.js'][57]++; + console.warn("use varnish or similar reverse proxy caches."); + _$jscoverage['middleware/staticCache.js'][59]++; + return (function staticCache(req, res, next) { + _$jscoverage['middleware/staticCache.js'][60]++; + var key = cacheKey(req), ranges = req.headers.range, hasCookies = req.headers.cookie, hit = cache.get(key); + _$jscoverage['middleware/staticCache.js'][68]++; + req.on("static", (function (stream) { + _$jscoverage['middleware/staticCache.js'][69]++; + var headers = res._headers, cc = utils.parseCacheControl(headers["cache-control"] || ""), contentLength = headers["content-length"], hit; + _$jscoverage['middleware/staticCache.js'][75]++; + if (headers["set-cookie"]) { + _$jscoverage['middleware/staticCache.js'][75]++; + return hasCookies = true; + } + _$jscoverage['middleware/staticCache.js'][78]++; + if (hasCookies) { + _$jscoverage['middleware/staticCache.js'][78]++; + return; + } + _$jscoverage['middleware/staticCache.js'][81]++; + if (! contentLength || contentLength > maxlen) { + _$jscoverage['middleware/staticCache.js'][81]++; + return; + } + _$jscoverage['middleware/staticCache.js'][84]++; + if (headers["content-range"]) { + _$jscoverage['middleware/staticCache.js'][84]++; + return; + } + _$jscoverage['middleware/staticCache.js'][88]++; + if (cc["no-cache"] || cc["no-store"] || cc["private"] || cc["must-revalidate"]) { + _$jscoverage['middleware/staticCache.js'][91]++; + return; + } + _$jscoverage['middleware/staticCache.js'][94]++; + if (hit = cache.get(key)) { + _$jscoverage['middleware/staticCache.js'][95]++; + if (headers.etag == hit[0].etag) { + _$jscoverage['middleware/staticCache.js'][96]++; + hit[0].date = new Date(); + _$jscoverage['middleware/staticCache.js'][97]++; + return; + } + else { + _$jscoverage['middleware/staticCache.js'][99]++; + cache.remove(key); + } + } + _$jscoverage['middleware/staticCache.js'][104]++; + if (null == stream) { + _$jscoverage['middleware/staticCache.js'][104]++; + return; + } + _$jscoverage['middleware/staticCache.js'][107]++; + var arr = []; + _$jscoverage['middleware/staticCache.js'][110]++; + stream.on("data", (function (chunk) { + _$jscoverage['middleware/staticCache.js'][111]++; + arr.push(chunk); +})); + _$jscoverage['middleware/staticCache.js'][115]++; + stream.on("end", (function () { + _$jscoverage['middleware/staticCache.js'][116]++; + var cacheEntry = cache.add(key); + _$jscoverage['middleware/staticCache.js'][117]++; + delete headers["x-cache"]; + _$jscoverage['middleware/staticCache.js'][118]++; + cacheEntry.push(200); + _$jscoverage['middleware/staticCache.js'][119]++; + cacheEntry.push(headers); + _$jscoverage['middleware/staticCache.js'][120]++; + cacheEntry.push.apply(cacheEntry, arr); +})); +})); + _$jscoverage['middleware/staticCache.js'][124]++; + if (req.method == "GET" || req.method == "HEAD") { + _$jscoverage['middleware/staticCache.js'][125]++; + if (ranges) { + _$jscoverage['middleware/staticCache.js'][126]++; + next(); + } + else { + _$jscoverage['middleware/staticCache.js'][127]++; + if (! hasCookies && hit && ! mustRevalidate(req, hit)) { + _$jscoverage['middleware/staticCache.js'][128]++; + res.setHeader("X-Cache", "HIT"); + _$jscoverage['middleware/staticCache.js'][129]++; + respondFromCache(req, res, hit); + } + else { + _$jscoverage['middleware/staticCache.js'][131]++; + res.setHeader("X-Cache", "MISS"); + _$jscoverage['middleware/staticCache.js'][132]++; + next(); + } + } + } + else { + _$jscoverage['middleware/staticCache.js'][135]++; + next(); + } +}); +}); +_$jscoverage['middleware/staticCache.js'][151]++; +function respondFromCache(req, res, cacheEntry) { + _$jscoverage['middleware/staticCache.js'][152]++; + var status = cacheEntry[0], headers = utils.merge({}, cacheEntry[1]), content = cacheEntry.slice(2); + _$jscoverage['middleware/staticCache.js'][156]++; + headers.age = (new Date() - new Date(headers.date)) / 1000 || 0; + _$jscoverage['middleware/staticCache.js'][158]++; + switch (req.method) { + case "HEAD": + _$jscoverage['middleware/staticCache.js'][160]++; + res.writeHead(status, headers); + _$jscoverage['middleware/staticCache.js'][161]++; + res.end(); + _$jscoverage['middleware/staticCache.js'][162]++; + break; + case "GET": + _$jscoverage['middleware/staticCache.js'][164]++; + if (utils.conditionalGET(req) && fresh(req.headers, headers)) { + _$jscoverage['middleware/staticCache.js'][165]++; + headers["content-length"] = 0; + _$jscoverage['middleware/staticCache.js'][166]++; + res.writeHead(304, headers); + _$jscoverage['middleware/staticCache.js'][167]++; + res.end(); + } + else { + _$jscoverage['middleware/staticCache.js'][169]++; + res.writeHead(status, headers); + _$jscoverage['middleware/staticCache.js'][171]++; + function write() { + _$jscoverage['middleware/staticCache.js'][172]++; + while (content.length) { + _$jscoverage['middleware/staticCache.js'][173]++; + if (false === res.write(content.shift())) { + _$jscoverage['middleware/staticCache.js'][174]++; + res.once("drain", write); + _$jscoverage['middleware/staticCache.js'][175]++; + return; + } +} + _$jscoverage['middleware/staticCache.js'][178]++; + res.end(); +} + _$jscoverage['middleware/staticCache.js'][181]++; + write(); + } + _$jscoverage['middleware/staticCache.js'][183]++; + break; + default: + _$jscoverage['middleware/staticCache.js'][186]++; + res.writeHead(500, ""); + _$jscoverage['middleware/staticCache.js'][187]++; + res.end(); + } +} +_$jscoverage['middleware/staticCache.js'][200]++; +function mustRevalidate(req, cacheEntry) { + _$jscoverage['middleware/staticCache.js'][201]++; + var cacheHeaders = cacheEntry[1], reqCC = utils.parseCacheControl(req.headers["cache-control"] || ""), cacheCC = utils.parseCacheControl(cacheHeaders["cache-control"] || ""), cacheAge = (new Date() - new Date(cacheHeaders.date)) / 1000 || 0; + _$jscoverage['middleware/staticCache.js'][206]++; + if (cacheCC["no-cache"] || cacheCC["must-revalidate"] || cacheCC["proxy-revalidate"]) { + _$jscoverage['middleware/staticCache.js'][208]++; + return true; + } + _$jscoverage['middleware/staticCache.js'][210]++; + if (reqCC["no-cache"]) { + _$jscoverage['middleware/staticCache.js'][210]++; + return true; + } + _$jscoverage['middleware/staticCache.js'][212]++; + if (null != reqCC["max-age"]) { + _$jscoverage['middleware/staticCache.js'][212]++; + return reqCC["max-age"] < cacheAge; + } + _$jscoverage['middleware/staticCache.js'][214]++; + if (null != cacheCC["max-age"]) { + _$jscoverage['middleware/staticCache.js'][214]++; + return cacheCC["max-age"] < cacheAge; + } + _$jscoverage['middleware/staticCache.js'][216]++; + return false; +} +_$jscoverage['middleware/staticCache.js'][229]++; +function cacheKey(req) { + _$jscoverage['middleware/staticCache.js'][230]++; + return utils.parseUrl(req).path; +} +_$jscoverage['middleware/staticCache.js'].source = ["","/*!"," * Connect - staticCache"," * Copyright(c) 2011 Sencha Inc."," * MIT Licensed"," */","","/**"," * Module dependencies."," */","","var utils = require('../utils')"," , Cache = require('../cache')"," , fresh = require('fresh');","","/**"," * Static cache:"," *"," * Enables a memory cache layer on top of"," * the `static()` middleware, serving popular"," * static files."," *"," * By default a maximum of 128 objects are"," * held in cache, with a max of 256k each,"," * totalling ~32mb."," *"," * A Least-Recently-Used (LRU) cache algo"," * is implemented through the `Cache` object,"," * simply rotating cache objects as they are"," * hit. This means that increasingly popular"," * objects maintain their positions while"," * others get shoved out of the stack and"," * garbage collected."," *"," * Benchmarks:"," *"," * static(): 2700 rps"," * node-static: 5300 rps"," * static() + staticCache(): 7500 rps"," *"," * Options:"," *"," * - `maxObjects` max cache objects [128]"," * - `maxLength` max cache object length 256kb"," *"," * @param {Object} options"," * @return {Function}"," * @api public"," */","","module.exports = function staticCache(options){"," var options = options || {}"," , cache = new Cache(options.maxObjects || 128)"," , maxlen = options.maxLength || 1024 * 256;",""," console.warn('connect.staticCache() is deprecated and will be removed in 3.0');"," console.warn('use varnish or similar reverse proxy caches.');",""," return function staticCache(req, res, next){"," var key = cacheKey(req)"," , ranges = req.headers.range"," , hasCookies = req.headers.cookie"," , hit = cache.get(key);",""," // cache static"," // TODO: change from staticCache() -> cache()"," // and make this work for any request"," req.on('static', function(stream){"," var headers = res._headers"," , cc = utils.parseCacheControl(headers['cache-control'] || '')"," , contentLength = headers['content-length']"," , hit;",""," // dont cache set-cookie responses"," if (headers['set-cookie']) return hasCookies = true;",""," // dont cache when cookies are present"," if (hasCookies) return;",""," // ignore larger files"," if (!contentLength || contentLength > maxlen) return;",""," // don't cache partial files"," if (headers['content-range']) return;",""," // dont cache items we shouldn't be"," // TODO: real support for must-revalidate / no-cache"," if ( cc['no-cache']"," || cc['no-store']"," || cc['private']"," || cc['must-revalidate']) return;",""," // if already in cache then validate"," if (hit = cache.get(key)){"," if (headers.etag == hit[0].etag) {"," hit[0].date = new Date;"," return;"," } else {"," cache.remove(key);"," }"," }",""," // validation notifiactions don't contain a steam"," if (null == stream) return;",""," // add the cache object"," var arr = [];",""," // store the chunks"," stream.on('data', function(chunk){"," arr.push(chunk);"," });",""," // flag it as complete"," stream.on('end', function(){"," var cacheEntry = cache.add(key);"," delete headers['x-cache']; // Clean up (TODO: others)"," cacheEntry.push(200);"," cacheEntry.push(headers);"," cacheEntry.push.apply(cacheEntry, arr);"," });"," });",""," if (req.method == 'GET' || req.method == 'HEAD') {"," if (ranges) {"," next();"," } else if (!hasCookies && hit && !mustRevalidate(req, hit)) {"," res.setHeader('X-Cache', 'HIT');"," respondFromCache(req, res, hit);"," } else {"," res.setHeader('X-Cache', 'MISS');"," next();"," }"," } else {"," next();"," }"," }","};","","/**"," * Respond with the provided cached value."," * TODO: Assume 200 code, that's iffy."," *"," * @param {Object} req"," * @param {Object} res"," * @param {Object} cacheEntry"," * @return {String}"," * @api private"," */","","function respondFromCache(req, res, cacheEntry) {"," var status = cacheEntry[0]"," , headers = utils.merge({}, cacheEntry[1])"," , content = cacheEntry.slice(2);",""," headers.age = (new Date - new Date(headers.date)) / 1000 || 0;",""," switch (req.method) {"," case 'HEAD':"," res.writeHead(status, headers);"," res.end();"," break;"," case 'GET':"," if (utils.conditionalGET(req) && fresh(req.headers, headers)) {"," headers['content-length'] = 0;"," res.writeHead(304, headers);"," res.end();"," } else {"," res.writeHead(status, headers);",""," function write() {"," while (content.length) {"," if (false === res.write(content.shift())) {"," res.once('drain', write);"," return;"," }"," }"," res.end();"," }",""," write();"," }"," break;"," default:"," // This should never happen."," res.writeHead(500, '');"," res.end();"," }","}","","/**"," * Determine whether or not a cached value must be revalidated."," *"," * @param {Object} req"," * @param {Object} cacheEntry"," * @return {String}"," * @api private"," */","","function mustRevalidate(req, cacheEntry) {"," var cacheHeaders = cacheEntry[1]"," , reqCC = utils.parseCacheControl(req.headers['cache-control'] || '')"," , cacheCC = utils.parseCacheControl(cacheHeaders['cache-control'] || '')"," , cacheAge = (new Date - new Date(cacheHeaders.date)) / 1000 || 0;",""," if ( cacheCC['no-cache']"," || cacheCC['must-revalidate']"," || cacheCC['proxy-revalidate']) return true;",""," if (reqCC['no-cache']) return true;",""," if (null != reqCC['max-age']) return reqCC['max-age'] < cacheAge;",""," if (null != cacheCC['max-age']) return cacheCC['max-age'] < cacheAge;",""," return false;","}","","/**"," * The key to use in the cache. For now, this is the URL path and query."," *"," * 'http://example.com?key=value' -> '/?key=value'"," *"," * @param {Object} req"," * @return {String}"," * @api private"," */","","function cacheKey(req) {"," return utils.parseUrl(req).path;","}"]; diff --git a/node_modules/express/node_modules/connect/lib-cov/middleware/timeout.js b/node_modules/express/node_modules/connect/lib-cov/middleware/timeout.js new file mode 100644 index 0000000..de0e573 --- /dev/null +++ b/node_modules/express/node_modules/connect/lib-cov/middleware/timeout.js @@ -0,0 +1,66 @@ +/* automatically generated by JSCoverage - do not edit */ +if (typeof _$jscoverage === 'undefined') _$jscoverage = {}; +if (! _$jscoverage['middleware/timeout.js']) { + _$jscoverage['middleware/timeout.js'] = []; + _$jscoverage['middleware/timeout.js'][12] = 0; + _$jscoverage['middleware/timeout.js'][30] = 0; + _$jscoverage['middleware/timeout.js'][31] = 0; + _$jscoverage['middleware/timeout.js'][33] = 0; + _$jscoverage['middleware/timeout.js'][34] = 0; + _$jscoverage['middleware/timeout.js'][35] = 0; + _$jscoverage['middleware/timeout.js'][38] = 0; + _$jscoverage['middleware/timeout.js'][39] = 0; + _$jscoverage['middleware/timeout.js'][40] = 0; + _$jscoverage['middleware/timeout.js'][41] = 0; + _$jscoverage['middleware/timeout.js'][42] = 0; + _$jscoverage['middleware/timeout.js'][43] = 0; + _$jscoverage['middleware/timeout.js'][46] = 0; + _$jscoverage['middleware/timeout.js'][47] = 0; + _$jscoverage['middleware/timeout.js'][50] = 0; + _$jscoverage['middleware/timeout.js'][51] = 0; + _$jscoverage['middleware/timeout.js'][54] = 0; +} +_$jscoverage['middleware/timeout.js'][12]++; +var debug = require("debug")("connect:timeout"); +_$jscoverage['middleware/timeout.js'][30]++; +module.exports = (function timeout(ms) { + _$jscoverage['middleware/timeout.js'][31]++; + ms = ms || 5000; + _$jscoverage['middleware/timeout.js'][33]++; + return (function (req, res, next) { + _$jscoverage['middleware/timeout.js'][34]++; + var id = setTimeout((function () { + _$jscoverage['middleware/timeout.js'][35]++; + req.emit("timeout", ms); +}), ms); + _$jscoverage['middleware/timeout.js'][38]++; + req.on("timeout", (function () { + _$jscoverage['middleware/timeout.js'][39]++; + if (req.headerSent) { + _$jscoverage['middleware/timeout.js'][39]++; + return debug("response started, cannot timeout"); + } + _$jscoverage['middleware/timeout.js'][40]++; + var err = new Error("Request timeout"); + _$jscoverage['middleware/timeout.js'][41]++; + err.timeout = ms; + _$jscoverage['middleware/timeout.js'][42]++; + err.status = 408; + _$jscoverage['middleware/timeout.js'][43]++; + next(err); +})); + _$jscoverage['middleware/timeout.js'][46]++; + req.clearTimeout = (function () { + _$jscoverage['middleware/timeout.js'][47]++; + clearTimeout(id); +}); + _$jscoverage['middleware/timeout.js'][50]++; + res.on("header", (function () { + _$jscoverage['middleware/timeout.js'][51]++; + clearTimeout(id); +})); + _$jscoverage['middleware/timeout.js'][54]++; + next(); +}); +}); +_$jscoverage['middleware/timeout.js'].source = ["","/*!"," * Connect - timeout"," * Ported from https://github.com/LearnBoost/connect-timeout"," * MIT Licensed"," */","","/**"," * Module dependencies."," */","","var debug = require('debug')('connect:timeout');","","/**"," * Timeout:"," *"," * Times out the request in `ms`, defaulting to `5000`. The"," * method `req.clearTimeout()` is added to revert this behaviour"," * programmatically within your application's middleware, routes, etc."," *"," * The timeout error is passed to `next()` so that you may customize"," * the response behaviour. This error has the `.timeout` property as"," * well as `.status == 408`."," *"," * @param {Number} ms"," * @return {Function}"," * @api public"," */","","module.exports = function timeout(ms) {"," ms = ms || 5000;",""," return function(req, res, next) {"," var id = setTimeout(function(){"," req.emit('timeout', ms);"," }, ms);",""," req.on('timeout', function(){"," if (req.headerSent) return debug('response started, cannot timeout');"," var err = new Error('Request timeout');"," err.timeout = ms;"," err.status = 408;"," next(err);"," });",""," req.clearTimeout = function(){"," clearTimeout(id);"," };",""," res.on('header', function(){"," clearTimeout(id);"," });",""," next();"," };","};"]; diff --git a/node_modules/express/node_modules/connect/lib-cov/middleware/urlencoded.js b/node_modules/express/node_modules/connect/lib-cov/middleware/urlencoded.js new file mode 100644 index 0000000..c8dbcef --- /dev/null +++ b/node_modules/express/node_modules/connect/lib-cov/middleware/urlencoded.js @@ -0,0 +1,98 @@ +/* automatically generated by JSCoverage - do not edit */ +if (typeof _$jscoverage === 'undefined') _$jscoverage = {}; +if (! _$jscoverage['middleware/urlencoded.js']) { + _$jscoverage['middleware/urlencoded.js'] = []; + _$jscoverage['middleware/urlencoded.js'][13] = 0; + _$jscoverage['middleware/urlencoded.js'][21] = 0; + _$jscoverage['middleware/urlencoded.js'][22] = 0; + _$jscoverage['middleware/urlencoded.js'][40] = 0; + _$jscoverage['middleware/urlencoded.js'][41] = 0; + _$jscoverage['middleware/urlencoded.js'][43] = 0; + _$jscoverage['middleware/urlencoded.js'][47] = 0; + _$jscoverage['middleware/urlencoded.js'][48] = 0; + _$jscoverage['middleware/urlencoded.js'][49] = 0; + _$jscoverage['middleware/urlencoded.js'][51] = 0; + _$jscoverage['middleware/urlencoded.js'][54] = 0; + _$jscoverage['middleware/urlencoded.js'][57] = 0; + _$jscoverage['middleware/urlencoded.js'][60] = 0; + _$jscoverage['middleware/urlencoded.js'][61] = 0; + _$jscoverage['middleware/urlencoded.js'][62] = 0; + _$jscoverage['middleware/urlencoded.js'][63] = 0; + _$jscoverage['middleware/urlencoded.js'][64] = 0; + _$jscoverage['middleware/urlencoded.js'][65] = 0; + _$jscoverage['middleware/urlencoded.js'][66] = 0; + _$jscoverage['middleware/urlencoded.js'][67] = 0; + _$jscoverage['middleware/urlencoded.js'][70] = 0; + _$jscoverage['middleware/urlencoded.js'][72] = 0; + _$jscoverage['middleware/urlencoded.js'][73] = 0; +} +_$jscoverage['middleware/urlencoded.js'][13]++; +var utils = require("../utils"), _limit = require("./limit"), qs = require("qs"); +_$jscoverage['middleware/urlencoded.js'][21]++; +function noop(req, res, next) { + _$jscoverage['middleware/urlencoded.js'][22]++; + next(); +} +_$jscoverage['middleware/urlencoded.js'][40]++; +exports = module.exports = (function (options) { + _$jscoverage['middleware/urlencoded.js'][41]++; + options = options || {}; + _$jscoverage['middleware/urlencoded.js'][43]++; + var limit = options.limit? _limit(options.limit): noop; + _$jscoverage['middleware/urlencoded.js'][47]++; + return (function urlencoded(req, res, next) { + _$jscoverage['middleware/urlencoded.js'][48]++; + if (req._body) { + _$jscoverage['middleware/urlencoded.js'][48]++; + return next(); + } + _$jscoverage['middleware/urlencoded.js'][49]++; + req.body = req.body || {}; + _$jscoverage['middleware/urlencoded.js'][51]++; + if (! utils.hasBody(req)) { + _$jscoverage['middleware/urlencoded.js'][51]++; + return next(); + } + _$jscoverage['middleware/urlencoded.js'][54]++; + if ("application/x-www-form-urlencoded" != utils.mime(req)) { + _$jscoverage['middleware/urlencoded.js'][54]++; + return next(); + } + _$jscoverage['middleware/urlencoded.js'][57]++; + req._body = true; + _$jscoverage['middleware/urlencoded.js'][60]++; + limit(req, res, (function (err) { + _$jscoverage['middleware/urlencoded.js'][61]++; + if (err) { + _$jscoverage['middleware/urlencoded.js'][61]++; + return next(err); + } + _$jscoverage['middleware/urlencoded.js'][62]++; + var buf = ""; + _$jscoverage['middleware/urlencoded.js'][63]++; + req.setEncoding("utf8"); + _$jscoverage['middleware/urlencoded.js'][64]++; + req.on("data", (function (chunk) { + _$jscoverage['middleware/urlencoded.js'][64]++; + buf += chunk; +})); + _$jscoverage['middleware/urlencoded.js'][65]++; + req.on("end", (function () { + _$jscoverage['middleware/urlencoded.js'][66]++; + try { + _$jscoverage['middleware/urlencoded.js'][67]++; + req.body = buf.length? qs.parse(buf, options): {}; + _$jscoverage['middleware/urlencoded.js'][70]++; + next(); + } + catch (err) { + _$jscoverage['middleware/urlencoded.js'][72]++; + err.body = buf; + _$jscoverage['middleware/urlencoded.js'][73]++; + next(err); + } +})); +})); +}); +}); +_$jscoverage['middleware/urlencoded.js'].source = ["","/*!"," * Connect - urlencoded"," * Copyright(c) 2010 Sencha Inc."," * Copyright(c) 2011 TJ Holowaychuk"," * MIT Licensed"," */","","/**"," * Module dependencies."," */","","var utils = require('../utils')"," , _limit = require('./limit')"," , qs = require('qs');","","/**"," * noop middleware."," */","","function noop(req, res, next) {"," next();","}","","/**"," * Urlencoded:"," * "," * Parse x-ww-form-urlencoded request bodies,"," * providing the parsed object as `req.body`."," *"," * Options:"," *"," * - `limit` byte limit disabled by default"," *"," * @param {Object} options"," * @return {Function}"," * @api public"," */","","exports = module.exports = function(options){"," options = options || {};",""," var limit = options.limit"," ? _limit(options.limit)"," : noop;",""," return function urlencoded(req, res, next) {"," if (req._body) return next();"," req.body = req.body || {};",""," if (!utils.hasBody(req)) return next();",""," // check Content-Type"," if ('application/x-www-form-urlencoded' != utils.mime(req)) return next();",""," // flag as parsed"," req._body = true;",""," // parse"," limit(req, res, function(err){"," if (err) return next(err);"," var buf = '';"," req.setEncoding('utf8');"," req.on('data', function(chunk){ buf += chunk });"," req.on('end', function(){"," try {"," req.body = buf.length"," ? qs.parse(buf, options)"," : {};"," next();"," } catch (err){"," err.body = buf;"," next(err);"," }"," });"," });"," }","};"]; diff --git a/node_modules/express/node_modules/connect/lib-cov/middleware/vhost.js b/node_modules/express/node_modules/connect/lib-cov/middleware/vhost.js new file mode 100644 index 0000000..b069e5c --- /dev/null +++ b/node_modules/express/node_modules/connect/lib-cov/middleware/vhost.js @@ -0,0 +1,59 @@ +/* automatically generated by JSCoverage - do not edit */ +if (typeof _$jscoverage === 'undefined') _$jscoverage = {}; +if (! _$jscoverage['middleware/vhost.js']) { + _$jscoverage['middleware/vhost.js'] = []; + _$jscoverage['middleware/vhost.js'][28] = 0; + _$jscoverage['middleware/vhost.js'][29] = 0; + _$jscoverage['middleware/vhost.js'][30] = 0; + _$jscoverage['middleware/vhost.js'][31] = 0; + _$jscoverage['middleware/vhost.js'][32] = 0; + _$jscoverage['middleware/vhost.js'][33] = 0; + _$jscoverage['middleware/vhost.js'][34] = 0; + _$jscoverage['middleware/vhost.js'][35] = 0; + _$jscoverage['middleware/vhost.js'][36] = 0; + _$jscoverage['middleware/vhost.js'][37] = 0; + _$jscoverage['middleware/vhost.js'][38] = 0; +} +_$jscoverage['middleware/vhost.js'][28]++; +module.exports = (function vhost(hostname, server) { + _$jscoverage['middleware/vhost.js'][29]++; + if (! hostname) { + _$jscoverage['middleware/vhost.js'][29]++; + throw new Error("vhost hostname required"); + } + _$jscoverage['middleware/vhost.js'][30]++; + if (! server) { + _$jscoverage['middleware/vhost.js'][30]++; + throw new Error("vhost server required"); + } + _$jscoverage['middleware/vhost.js'][31]++; + var regexp = new RegExp("^" + hostname.replace(/[*]/g, "(.*?)") + "$", "i"); + _$jscoverage['middleware/vhost.js'][32]++; + if (server.onvhost) { + _$jscoverage['middleware/vhost.js'][32]++; + server.onvhost(hostname); + } + _$jscoverage['middleware/vhost.js'][33]++; + return (function vhost(req, res, next) { + _$jscoverage['middleware/vhost.js'][34]++; + if (! req.headers.host) { + _$jscoverage['middleware/vhost.js'][34]++; + return next(); + } + _$jscoverage['middleware/vhost.js'][35]++; + var host = req.headers.host.split(":")[0]; + _$jscoverage['middleware/vhost.js'][36]++; + if (! regexp.test(host)) { + _$jscoverage['middleware/vhost.js'][36]++; + return next(); + } + _$jscoverage['middleware/vhost.js'][37]++; + if ("function" == typeof server) { + _$jscoverage['middleware/vhost.js'][37]++; + return server(req, res, next); + } + _$jscoverage['middleware/vhost.js'][38]++; + server.emit("request", req, res); +}); +}); +_$jscoverage['middleware/vhost.js'].source = ["","/*!"," * Connect - vhost"," * Copyright(c) 2010 Sencha Inc."," * Copyright(c) 2011 TJ Holowaychuk"," * MIT Licensed"," */","","/**"," * Vhost:"," * "," * Setup vhost for the given `hostname` and `server`."," *"," * connect()"," * .use(connect.vhost('foo.com', fooApp))"," * .use(connect.vhost('bar.com', barApp))"," * .use(connect.vhost('*.com', mainApp))"," *"," * The `server` may be a Connect server or"," * a regular Node `http.Server`. "," *"," * @param {String} hostname"," * @param {Server} server"," * @return {Function}"," * @api public"," */","","module.exports = function vhost(hostname, server){"," if (!hostname) throw new Error('vhost hostname required');"," if (!server) throw new Error('vhost server required');"," var regexp = new RegExp('^' + hostname.replace(/[*]/g, '(.*?)') + '$', 'i');"," if (server.onvhost) server.onvhost(hostname);"," return function vhost(req, res, next){"," if (!req.headers.host) return next();"," var host = req.headers.host.split(':')[0];"," if (!regexp.test(host)) return next();"," if ('function' == typeof server) return server(req, res, next);"," server.emit('request', req, res);"," };","};"]; diff --git a/node_modules/express/node_modules/connect/lib-cov/patch.js b/node_modules/express/node_modules/connect/lib-cov/patch.js new file mode 100644 index 0000000..7d59643 --- /dev/null +++ b/node_modules/express/node_modules/connect/lib-cov/patch.js @@ -0,0 +1,85 @@ +/* automatically generated by JSCoverage - do not edit */ +if (typeof _$jscoverage === 'undefined') _$jscoverage = {}; +if (! _$jscoverage['patch.js']) { + _$jscoverage['patch.js'] = []; + _$jscoverage['patch.js'][12] = 0; + _$jscoverage['patch.js'][20] = 0; + _$jscoverage['patch.js'][30] = 0; + _$jscoverage['patch.js'][31] = 0; + _$jscoverage['patch.js'][43] = 0; + _$jscoverage['patch.js'][44] = 0; + _$jscoverage['patch.js'][48] = 0; + _$jscoverage['patch.js'][49] = 0; + _$jscoverage['patch.js'][50] = 0; + _$jscoverage['patch.js'][55] = 0; + _$jscoverage['patch.js'][56] = 0; + _$jscoverage['patch.js'][59] = 0; + _$jscoverage['patch.js'][66] = 0; + _$jscoverage['patch.js'][67] = 0; + _$jscoverage['patch.js'][68] = 0; + _$jscoverage['patch.js'][69] = 0; + _$jscoverage['patch.js'][72] = 0; + _$jscoverage['patch.js'][73] = 0; + _$jscoverage['patch.js'][74] = 0; + _$jscoverage['patch.js'][75] = 0; + _$jscoverage['patch.js'][78] = 0; +} +_$jscoverage['patch.js'][12]++; +var http = require("http"), res = http.ServerResponse.prototype, setHeader = res.setHeader, _renderHeaders = res._renderHeaders, writeHead = res.writeHead; +_$jscoverage['patch.js'][20]++; +if (! res._hasConnectPatch) { + _$jscoverage['patch.js'][30]++; + res.__defineGetter__("headerSent", (function () { + _$jscoverage['patch.js'][31]++; + return this._header; +})); + _$jscoverage['patch.js'][43]++; + res.setHeader = (function (field, val) { + _$jscoverage['patch.js'][44]++; + var key = field.toLowerCase(), prev; + _$jscoverage['patch.js'][48]++; + if (this._headers && "set-cookie" == key) { + _$jscoverage['patch.js'][49]++; + if (prev = this.getHeader(field)) { + _$jscoverage['patch.js'][50]++; + val = Array.isArray(prev)? prev.concat(val): [prev, val]; + } + } + else { + _$jscoverage['patch.js'][55]++; + if ("content-type" == key && this.charset) { + _$jscoverage['patch.js'][56]++; + val += "; charset=" + this.charset; + } + } + _$jscoverage['patch.js'][59]++; + return setHeader.call(this, field, val); +}); + _$jscoverage['patch.js'][66]++; + res._renderHeaders = (function () { + _$jscoverage['patch.js'][67]++; + if (! this._emittedHeader) { + _$jscoverage['patch.js'][67]++; + this.emit("header"); + } + _$jscoverage['patch.js'][68]++; + this._emittedHeader = true; + _$jscoverage['patch.js'][69]++; + return _renderHeaders.call(this); +}); + _$jscoverage['patch.js'][72]++; + res.writeHead = (function () { + _$jscoverage['patch.js'][73]++; + if (! this._emittedHeader) { + _$jscoverage['patch.js'][73]++; + this.emit("header"); + } + _$jscoverage['patch.js'][74]++; + this._emittedHeader = true; + _$jscoverage['patch.js'][75]++; + return writeHead.apply(this, arguments); +}); + _$jscoverage['patch.js'][78]++; + res._hasConnectPatch = true; +} +_$jscoverage['patch.js'].source = ["","/*!"," * Connect"," * Copyright(c) 2011 TJ Holowaychuk"," * MIT Licensed"," */","","/**"," * Module dependencies."," */","","var http = require('http')"," , res = http.ServerResponse.prototype"," , setHeader = res.setHeader"," , _renderHeaders = res._renderHeaders"," , writeHead = res.writeHead;","","// apply only once","","if (!res._hasConnectPatch) {",""," /**"," * Provide a public \"header sent\" flag"," * until node does."," *"," * @return {Boolean}"," * @api public"," */",""," res.__defineGetter__('headerSent', function(){"," return this._header;"," });",""," /**"," * Set header `field` to `val`, special-casing"," * the `Set-Cookie` field for multiple support."," *"," * @param {String} field"," * @param {String} val"," * @api public"," */",""," res.setHeader = function(field, val){"," var key = field.toLowerCase()"," , prev;",""," // special-case Set-Cookie"," if (this._headers && 'set-cookie' == key) {"," if (prev = this.getHeader(field)) {"," val = Array.isArray(prev)"," ? prev.concat(val)"," : [prev, val];"," }"," // charset"," } else if ('content-type' == key && this.charset) {"," val += '; charset=' + this.charset;"," }",""," return setHeader.call(this, field, val);"," };",""," /**"," * Proxy to emit \"header\" event."," */",""," res._renderHeaders = function(){"," if (!this._emittedHeader) this.emit('header');"," this._emittedHeader = true;"," return _renderHeaders.call(this);"," };",""," res.writeHead = function(){"," if (!this._emittedHeader) this.emit('header');"," this._emittedHeader = true;"," return writeHead.apply(this, arguments);"," };",""," res._hasConnectPatch = true;","}"]; diff --git a/node_modules/express/node_modules/connect/lib-cov/proto.js b/node_modules/express/node_modules/connect/lib-cov/proto.js new file mode 100644 index 0000000..e8ecb99 --- /dev/null +++ b/node_modules/express/node_modules/connect/lib-cov/proto.js @@ -0,0 +1,285 @@ +/* automatically generated by JSCoverage - do not edit */ +if (typeof _$jscoverage === 'undefined') _$jscoverage = {}; +if (! _$jscoverage['proto.js']) { + _$jscoverage['proto.js'] = []; + _$jscoverage['proto.js'][13] = 0; + _$jscoverage['proto.js'][19] = 0; + _$jscoverage['proto.js'][23] = 0; + _$jscoverage['proto.js'][62] = 0; + _$jscoverage['proto.js'][64] = 0; + _$jscoverage['proto.js'][65] = 0; + _$jscoverage['proto.js'][66] = 0; + _$jscoverage['proto.js'][70] = 0; + _$jscoverage['proto.js'][71] = 0; + _$jscoverage['proto.js'][72] = 0; + _$jscoverage['proto.js'][73] = 0; + _$jscoverage['proto.js'][74] = 0; + _$jscoverage['proto.js'][79] = 0; + _$jscoverage['proto.js'][80] = 0; + _$jscoverage['proto.js'][84] = 0; + _$jscoverage['proto.js'][85] = 0; + _$jscoverage['proto.js'][89] = 0; + _$jscoverage['proto.js'][90] = 0; + _$jscoverage['proto.js'][92] = 0; + _$jscoverage['proto.js'][102] = 0; + _$jscoverage['proto.js'][103] = 0; + _$jscoverage['proto.js'][109] = 0; + _$jscoverage['proto.js'][110] = 0; + _$jscoverage['proto.js'][112] = 0; + _$jscoverage['proto.js'][113] = 0; + _$jscoverage['proto.js'][114] = 0; + _$jscoverage['proto.js'][117] = 0; + _$jscoverage['proto.js'][118] = 0; + _$jscoverage['proto.js'][119] = 0; + _$jscoverage['proto.js'][122] = 0; + _$jscoverage['proto.js'][125] = 0; + _$jscoverage['proto.js'][127] = 0; + _$jscoverage['proto.js'][130] = 0; + _$jscoverage['proto.js'][132] = 0; + _$jscoverage['proto.js'][133] = 0; + _$jscoverage['proto.js'][136] = 0; + _$jscoverage['proto.js'][139] = 0; + _$jscoverage['proto.js'][144] = 0; + _$jscoverage['proto.js'][145] = 0; + _$jscoverage['proto.js'][146] = 0; + _$jscoverage['proto.js'][147] = 0; + _$jscoverage['proto.js'][148] = 0; + _$jscoverage['proto.js'][149] = 0; + _$jscoverage['proto.js'][151] = 0; + _$jscoverage['proto.js'][152] = 0; + _$jscoverage['proto.js'][153] = 0; + _$jscoverage['proto.js'][154] = 0; + _$jscoverage['proto.js'][155] = 0; + _$jscoverage['proto.js'][157] = 0; + _$jscoverage['proto.js'][160] = 0; + _$jscoverage['proto.js'][161] = 0; + _$jscoverage['proto.js'][162] = 0; + _$jscoverage['proto.js'][165] = 0; + _$jscoverage['proto.js'][167] = 0; + _$jscoverage['proto.js'][168] = 0; + _$jscoverage['proto.js'][172] = 0; + _$jscoverage['proto.js'][173] = 0; + _$jscoverage['proto.js'][176] = 0; + _$jscoverage['proto.js'][177] = 0; + _$jscoverage['proto.js'][178] = 0; + _$jscoverage['proto.js'][181] = 0; + _$jscoverage['proto.js'][182] = 0; + _$jscoverage['proto.js'][183] = 0; + _$jscoverage['proto.js'][184] = 0; + _$jscoverage['proto.js'][185] = 0; + _$jscoverage['proto.js'][187] = 0; + _$jscoverage['proto.js'][189] = 0; + _$jscoverage['proto.js'][190] = 0; + _$jscoverage['proto.js'][192] = 0; + _$jscoverage['proto.js'][195] = 0; + _$jscoverage['proto.js'][198] = 0; + _$jscoverage['proto.js'][227] = 0; + _$jscoverage['proto.js'][228] = 0; + _$jscoverage['proto.js'][229] = 0; +} +_$jscoverage['proto.js'][13]++; +var http = require("http"), utils = require("./utils"), debug = require("debug")("connect:dispatcher"); +_$jscoverage['proto.js'][19]++; +var app = module.exports = {}; +_$jscoverage['proto.js'][23]++; +var env = process.env.NODE_ENV || "development"; +_$jscoverage['proto.js'][62]++; +app.use = (function (route, fn) { + _$jscoverage['proto.js'][64]++; + if ("string" != typeof route) { + _$jscoverage['proto.js'][65]++; + fn = route; + _$jscoverage['proto.js'][66]++; + route = "/"; + } + _$jscoverage['proto.js'][70]++; + if ("function" == typeof fn.handle) { + _$jscoverage['proto.js'][71]++; + var server = fn; + _$jscoverage['proto.js'][72]++; + fn.route = route; + _$jscoverage['proto.js'][73]++; + fn = (function (req, res, next) { + _$jscoverage['proto.js'][74]++; + server.handle(req, res, next); +}); + } + _$jscoverage['proto.js'][79]++; + if (fn instanceof http.Server) { + _$jscoverage['proto.js'][80]++; + fn = fn.listeners("request")[0]; + } + _$jscoverage['proto.js'][84]++; + if ("/" == route[route.length - 1]) { + _$jscoverage['proto.js'][85]++; + route = route.slice(0, -1); + } + _$jscoverage['proto.js'][89]++; + debug("use %s %s", route || "/", fn.name || "anonymous"); + _$jscoverage['proto.js'][90]++; + this.stack.push({route: route, handle: fn}); + _$jscoverage['proto.js'][92]++; + return this; +}); +_$jscoverage['proto.js'][102]++; +app.handle = (function (req, res, out) { + _$jscoverage['proto.js'][103]++; + var stack = this.stack, fqdn = ~ req.url.indexOf("://"), removed = "", slashAdded = false, index = 0; + _$jscoverage['proto.js'][109]++; + function next(err) { + _$jscoverage['proto.js'][110]++; + var layer, path, status, c; + _$jscoverage['proto.js'][112]++; + if (slashAdded) { + _$jscoverage['proto.js'][113]++; + req.url = req.url.substr(1); + _$jscoverage['proto.js'][114]++; + slashAdded = false; + } + _$jscoverage['proto.js'][117]++; + req.url = removed + req.url; + _$jscoverage['proto.js'][118]++; + req.originalUrl = req.originalUrl || req.url; + _$jscoverage['proto.js'][119]++; + removed = ""; + _$jscoverage['proto.js'][122]++; + layer = stack[index++]; + _$jscoverage['proto.js'][125]++; + if (! layer || res.headerSent) { + _$jscoverage['proto.js'][127]++; + if (out) { + _$jscoverage['proto.js'][127]++; + return out(err); + } + _$jscoverage['proto.js'][130]++; + if (err) { + _$jscoverage['proto.js'][132]++; + if (res.statusCode < 400) { + _$jscoverage['proto.js'][132]++; + res.statusCode = 500; + } + _$jscoverage['proto.js'][133]++; + debug("default %s", res.statusCode); + _$jscoverage['proto.js'][136]++; + if (err.status) { + _$jscoverage['proto.js'][136]++; + res.statusCode = err.status; + } + _$jscoverage['proto.js'][139]++; + var msg = "production" == env? http.STATUS_CODES[res.statusCode]: err.stack || err.toString(); + _$jscoverage['proto.js'][144]++; + if ("test" != env) { + _$jscoverage['proto.js'][144]++; + console.error(err.stack || err.toString()); + } + _$jscoverage['proto.js'][145]++; + if (res.headerSent) { + _$jscoverage['proto.js'][145]++; + return req.socket.destroy(); + } + _$jscoverage['proto.js'][146]++; + res.setHeader("Content-Type", "text/plain"); + _$jscoverage['proto.js'][147]++; + res.setHeader("Content-Length", Buffer.byteLength(msg)); + _$jscoverage['proto.js'][148]++; + if ("HEAD" == req.method) { + _$jscoverage['proto.js'][148]++; + return res.end(); + } + _$jscoverage['proto.js'][149]++; + res.end(msg); + } + else { + _$jscoverage['proto.js'][151]++; + debug("default 404"); + _$jscoverage['proto.js'][152]++; + res.statusCode = 404; + _$jscoverage['proto.js'][153]++; + res.setHeader("Content-Type", "text/plain"); + _$jscoverage['proto.js'][154]++; + if ("HEAD" == req.method) { + _$jscoverage['proto.js'][154]++; + return res.end(); + } + _$jscoverage['proto.js'][155]++; + res.end("Cannot " + req.method + " " + utils.escape(req.originalUrl)); + } + _$jscoverage['proto.js'][157]++; + return; + } + _$jscoverage['proto.js'][160]++; + try { + _$jscoverage['proto.js'][161]++; + path = utils.parseUrl(req).pathname; + _$jscoverage['proto.js'][162]++; + if (undefined == path) { + _$jscoverage['proto.js'][162]++; + path = "/"; + } + _$jscoverage['proto.js'][165]++; + if (0 != path.toLowerCase().indexOf(layer.route.toLowerCase())) { + _$jscoverage['proto.js'][165]++; + return next(err); + } + _$jscoverage['proto.js'][167]++; + c = path[layer.route.length]; + _$jscoverage['proto.js'][168]++; + if (c && "/" != c && "." != c) { + _$jscoverage['proto.js'][168]++; + return next(err); + } + _$jscoverage['proto.js'][172]++; + removed = layer.route; + _$jscoverage['proto.js'][173]++; + req.url = req.url.substr(removed.length); + _$jscoverage['proto.js'][176]++; + if (! fqdn && "/" != req.url[0]) { + _$jscoverage['proto.js'][177]++; + req.url = "/" + req.url; + _$jscoverage['proto.js'][178]++; + slashAdded = true; + } + _$jscoverage['proto.js'][181]++; + debug("%s", layer.handle.name || "anonymous"); + _$jscoverage['proto.js'][182]++; + var arity = layer.handle.length; + _$jscoverage['proto.js'][183]++; + if (err) { + _$jscoverage['proto.js'][184]++; + if (arity === 4) { + _$jscoverage['proto.js'][185]++; + layer.handle(err, req, res, next); + } + else { + _$jscoverage['proto.js'][187]++; + next(err); + } + } + else { + _$jscoverage['proto.js'][189]++; + if (arity < 4) { + _$jscoverage['proto.js'][190]++; + layer.handle(req, res, next); + } + else { + _$jscoverage['proto.js'][192]++; + next(); + } + } + } + catch (e) { + _$jscoverage['proto.js'][195]++; + next(e); + } +} + _$jscoverage['proto.js'][198]++; + next(); +}); +_$jscoverage['proto.js'][227]++; +app.listen = (function () { + _$jscoverage['proto.js'][228]++; + var server = http.createServer(this); + _$jscoverage['proto.js'][229]++; + return server.listen.apply(server, arguments); +}); +_$jscoverage['proto.js'].source = ["","/*!"," * Connect - HTTPServer"," * Copyright(c) 2010 Sencha Inc."," * Copyright(c) 2011 TJ Holowaychuk"," * MIT Licensed"," */","","/**"," * Module dependencies."," */","","var http = require('http')"," , utils = require('./utils')"," , debug = require('debug')('connect:dispatcher');","","// prototype","","var app = module.exports = {};","","// environment","","var env = process.env.NODE_ENV || 'development';","","/**"," * Utilize the given middleware `handle` to the given `route`,"," * defaulting to _/_. This \"route\" is the mount-point for the"," * middleware, when given a value other than _/_ the middleware"," * is only effective when that segment is present in the request's"," * pathname."," *"," * For example if we were to mount a function at _/admin_, it would"," * be invoked on _/admin_, and _/admin/settings_, however it would"," * not be invoked for _/_, or _/posts_."," *"," * Examples:"," *"," * var app = connect();"," * app.use(connect.favicon());"," * app.use(connect.logger());"," * app.use(connect.static(__dirname + '/public'));"," *"," * If we wanted to prefix static files with _/public_, we could"," * \"mount\" the `static()` middleware:"," *"," * app.use('/public', connect.static(__dirname + '/public'));"," *"," * This api is chainable, so the following is valid:"," *"," * connect()"," * .use(connect.favicon())"," * .use(connect.logger())"," * .use(connect.static(__dirname + '/public'))"," * .listen(3000);"," *"," * @param {String|Function|Server} route, callback or server"," * @param {Function|Server} callback or server"," * @return {Server} for chaining"," * @api public"," */","","app.use = function(route, fn){"," // default route to '/'"," if ('string' != typeof route) {"," fn = route;"," route = '/';"," }",""," // wrap sub-apps"," if ('function' == typeof fn.handle) {"," var server = fn;"," fn.route = route;"," fn = function(req, res, next){"," server.handle(req, res, next);"," };"," }",""," // wrap vanilla http.Servers"," if (fn instanceof http.Server) {"," fn = fn.listeners('request')[0];"," }",""," // strip trailing slash"," if ('/' == route[route.length - 1]) {"," route = route.slice(0, -1);"," }",""," // add the middleware"," debug('use %s %s', route || '/', fn.name || 'anonymous');"," this.stack.push({ route: route, handle: fn });",""," return this;","};","","/**"," * Handle server requests, punting them down"," * the middleware stack."," *"," * @api private"," */","","app.handle = function(req, res, out) {"," var stack = this.stack"," , fqdn = ~req.url.indexOf('://')"," , removed = ''"," , slashAdded = false"," , index = 0;",""," function next(err) {"," var layer, path, status, c;",""," if (slashAdded) {"," req.url = req.url.substr(1);"," slashAdded = false;"," }",""," req.url = removed + req.url;"," req.originalUrl = req.originalUrl || req.url;"," removed = '';",""," // next callback"," layer = stack[index++];",""," // all done"," if (!layer || res.headerSent) {"," // delegate to parent"," if (out) return out(err);",""," // unhandled error"," if (err) {"," // default to 500"," if (res.statusCode < 400) res.statusCode = 500;"," debug('default %s', res.statusCode);",""," // respect err.status"," if (err.status) res.statusCode = err.status;",""," // production gets a basic error message"," var msg = 'production' == env"," ? http.STATUS_CODES[res.statusCode]"," : err.stack || err.toString();",""," // log to stderr in a non-test env"," if ('test' != env) console.error(err.stack || err.toString());"," if (res.headerSent) return req.socket.destroy();"," res.setHeader('Content-Type', 'text/plain');"," res.setHeader('Content-Length', Buffer.byteLength(msg));"," if ('HEAD' == req.method) return res.end();"," res.end(msg);"," } else {"," debug('default 404');"," res.statusCode = 404;"," res.setHeader('Content-Type', 'text/plain');"," if ('HEAD' == req.method) return res.end();"," res.end('Cannot ' + req.method + ' ' + utils.escape(req.originalUrl));"," }"," return;"," }",""," try {"," path = utils.parseUrl(req).pathname;"," if (undefined == path) path = '/';",""," // skip this layer if the route doesn't match."," if (0 != path.toLowerCase().indexOf(layer.route.toLowerCase())) return next(err);",""," c = path[layer.route.length];"," if (c && '/' != c && '.' != c) return next(err);",""," // Call the layer handler"," // Trim off the part of the url that matches the route"," removed = layer.route;"," req.url = req.url.substr(removed.length);",""," // Ensure leading slash"," if (!fqdn && '/' != req.url[0]) {"," req.url = '/' + req.url;"," slashAdded = true;"," }",""," debug('%s', layer.handle.name || 'anonymous');"," var arity = layer.handle.length;"," if (err) {"," if (arity === 4) {"," layer.handle(err, req, res, next);"," } else {"," next(err);"," }"," } else if (arity < 4) {"," layer.handle(req, res, next);"," } else {"," next();"," }"," } catch (e) {"," next(e);"," }"," }"," next();","};","","/**"," * Listen for connections."," *"," * This method takes the same arguments"," * as node's `http.Server#listen()`. "," *"," * HTTP and HTTPS:"," *"," * If you run your application both as HTTP"," * and HTTPS you may wrap them individually,"," * since your Connect \"server\" is really just"," * a JavaScript `Function`."," *"," * var connect = require('connect')"," * , http = require('http')"," * , https = require('https');"," * "," * var app = connect();"," * "," * http.createServer(app).listen(80);"," * https.createServer(options, app).listen(443);"," *"," * @return {http.Server}"," * @api public"," */","","app.listen = function(){"," var server = http.createServer(this);"," return server.listen.apply(server, arguments);","};"]; diff --git a/node_modules/express/node_modules/connect/lib-cov/public/directory.html b/node_modules/express/node_modules/connect/lib-cov/public/directory.html new file mode 100644 index 0000000..15164bb --- /dev/null +++ b/node_modules/express/node_modules/connect/lib-cov/public/directory.html @@ -0,0 +1,75 @@ + + + listing directory {directory} + + + + + +
    +

    {linked-path}

    + {files} +
    + + \ No newline at end of file diff --git a/node_modules/express/node_modules/connect/lib-cov/public/error.html b/node_modules/express/node_modules/connect/lib-cov/public/error.html new file mode 100644 index 0000000..c5ae73a --- /dev/null +++ b/node_modules/express/node_modules/connect/lib-cov/public/error.html @@ -0,0 +1,13 @@ + + + {error} + + + +
    +

    {title}

    +

    {statusCode} {error}

    +
      {stack}
    +
    + + diff --git a/node_modules/express/node_modules/connect/lib-cov/public/favicon.ico b/node_modules/express/node_modules/connect/lib-cov/public/favicon.ico new file mode 100644 index 0000000..895fc96 Binary files /dev/null and b/node_modules/express/node_modules/connect/lib-cov/public/favicon.ico differ diff --git a/node_modules/express/node_modules/connect/lib-cov/public/icons/page.png b/node_modules/express/node_modules/connect/lib-cov/public/icons/page.png new file mode 100644 index 0000000..03ddd79 Binary files /dev/null and b/node_modules/express/node_modules/connect/lib-cov/public/icons/page.png differ diff --git a/node_modules/express/node_modules/connect/lib-cov/public/icons/page_add.png b/node_modules/express/node_modules/connect/lib-cov/public/icons/page_add.png new file mode 100644 index 0000000..d5bfa07 Binary files /dev/null and b/node_modules/express/node_modules/connect/lib-cov/public/icons/page_add.png differ diff --git a/node_modules/express/node_modules/connect/lib-cov/public/icons/page_attach.png b/node_modules/express/node_modules/connect/lib-cov/public/icons/page_attach.png new file mode 100644 index 0000000..89ee2da Binary files /dev/null and b/node_modules/express/node_modules/connect/lib-cov/public/icons/page_attach.png differ diff --git a/node_modules/express/node_modules/connect/lib-cov/public/icons/page_code.png b/node_modules/express/node_modules/connect/lib-cov/public/icons/page_code.png new file mode 100644 index 0000000..f7ea904 Binary files /dev/null and b/node_modules/express/node_modules/connect/lib-cov/public/icons/page_code.png differ diff --git a/node_modules/express/node_modules/connect/lib-cov/public/icons/page_copy.png b/node_modules/express/node_modules/connect/lib-cov/public/icons/page_copy.png new file mode 100644 index 0000000..195dc6d Binary files /dev/null and b/node_modules/express/node_modules/connect/lib-cov/public/icons/page_copy.png differ diff --git a/node_modules/express/node_modules/connect/lib-cov/public/icons/page_delete.png b/node_modules/express/node_modules/connect/lib-cov/public/icons/page_delete.png new file mode 100644 index 0000000..3141467 Binary files /dev/null and b/node_modules/express/node_modules/connect/lib-cov/public/icons/page_delete.png differ diff --git a/node_modules/express/node_modules/connect/lib-cov/public/icons/page_edit.png b/node_modules/express/node_modules/connect/lib-cov/public/icons/page_edit.png new file mode 100644 index 0000000..046811e Binary files /dev/null and b/node_modules/express/node_modules/connect/lib-cov/public/icons/page_edit.png differ diff --git a/node_modules/express/node_modules/connect/lib-cov/public/icons/page_error.png b/node_modules/express/node_modules/connect/lib-cov/public/icons/page_error.png new file mode 100644 index 0000000..f07f449 Binary files /dev/null and b/node_modules/express/node_modules/connect/lib-cov/public/icons/page_error.png differ diff --git a/node_modules/express/node_modules/connect/lib-cov/public/icons/page_excel.png b/node_modules/express/node_modules/connect/lib-cov/public/icons/page_excel.png new file mode 100644 index 0000000..eb6158e Binary files /dev/null and b/node_modules/express/node_modules/connect/lib-cov/public/icons/page_excel.png differ diff --git a/node_modules/express/node_modules/connect/lib-cov/public/icons/page_find.png b/node_modules/express/node_modules/connect/lib-cov/public/icons/page_find.png new file mode 100644 index 0000000..2f19388 Binary files /dev/null and b/node_modules/express/node_modules/connect/lib-cov/public/icons/page_find.png differ diff --git a/node_modules/express/node_modules/connect/lib-cov/public/icons/page_gear.png b/node_modules/express/node_modules/connect/lib-cov/public/icons/page_gear.png new file mode 100644 index 0000000..8e83281 Binary files /dev/null and b/node_modules/express/node_modules/connect/lib-cov/public/icons/page_gear.png differ diff --git a/node_modules/express/node_modules/connect/lib-cov/public/icons/page_go.png b/node_modules/express/node_modules/connect/lib-cov/public/icons/page_go.png new file mode 100644 index 0000000..80fe1ed Binary files /dev/null and b/node_modules/express/node_modules/connect/lib-cov/public/icons/page_go.png differ diff --git a/node_modules/express/node_modules/connect/lib-cov/public/icons/page_green.png b/node_modules/express/node_modules/connect/lib-cov/public/icons/page_green.png new file mode 100644 index 0000000..de8e003 Binary files /dev/null and b/node_modules/express/node_modules/connect/lib-cov/public/icons/page_green.png differ diff --git a/node_modules/express/node_modules/connect/lib-cov/public/icons/page_key.png b/node_modules/express/node_modules/connect/lib-cov/public/icons/page_key.png new file mode 100644 index 0000000..d6626cb Binary files /dev/null and b/node_modules/express/node_modules/connect/lib-cov/public/icons/page_key.png differ diff --git a/node_modules/express/node_modules/connect/lib-cov/public/icons/page_lightning.png b/node_modules/express/node_modules/connect/lib-cov/public/icons/page_lightning.png new file mode 100644 index 0000000..7e56870 Binary files /dev/null and b/node_modules/express/node_modules/connect/lib-cov/public/icons/page_lightning.png differ diff --git a/node_modules/express/node_modules/connect/lib-cov/public/icons/page_link.png b/node_modules/express/node_modules/connect/lib-cov/public/icons/page_link.png new file mode 100644 index 0000000..312eab0 Binary files /dev/null and b/node_modules/express/node_modules/connect/lib-cov/public/icons/page_link.png differ diff --git a/node_modules/express/node_modules/connect/lib-cov/public/icons/page_paintbrush.png b/node_modules/express/node_modules/connect/lib-cov/public/icons/page_paintbrush.png new file mode 100644 index 0000000..246a2f0 Binary files /dev/null and b/node_modules/express/node_modules/connect/lib-cov/public/icons/page_paintbrush.png differ diff --git a/node_modules/express/node_modules/connect/lib-cov/public/icons/page_paste.png b/node_modules/express/node_modules/connect/lib-cov/public/icons/page_paste.png new file mode 100644 index 0000000..968f073 Binary files /dev/null and b/node_modules/express/node_modules/connect/lib-cov/public/icons/page_paste.png differ diff --git a/node_modules/express/node_modules/connect/lib-cov/public/icons/page_red.png b/node_modules/express/node_modules/connect/lib-cov/public/icons/page_red.png new file mode 100644 index 0000000..0b18247 Binary files /dev/null and b/node_modules/express/node_modules/connect/lib-cov/public/icons/page_red.png differ diff --git a/node_modules/express/node_modules/connect/lib-cov/public/icons/page_refresh.png b/node_modules/express/node_modules/connect/lib-cov/public/icons/page_refresh.png new file mode 100644 index 0000000..cf347c7 Binary files /dev/null and b/node_modules/express/node_modules/connect/lib-cov/public/icons/page_refresh.png differ diff --git a/node_modules/express/node_modules/connect/lib-cov/public/icons/page_save.png b/node_modules/express/node_modules/connect/lib-cov/public/icons/page_save.png new file mode 100644 index 0000000..caea546 Binary files /dev/null and b/node_modules/express/node_modules/connect/lib-cov/public/icons/page_save.png differ diff --git a/node_modules/express/node_modules/connect/lib-cov/public/icons/page_white.png b/node_modules/express/node_modules/connect/lib-cov/public/icons/page_white.png new file mode 100644 index 0000000..8b8b1ca Binary files /dev/null and b/node_modules/express/node_modules/connect/lib-cov/public/icons/page_white.png differ diff --git a/node_modules/express/node_modules/connect/lib-cov/public/icons/page_white_acrobat.png b/node_modules/express/node_modules/connect/lib-cov/public/icons/page_white_acrobat.png new file mode 100644 index 0000000..8f8095e Binary files /dev/null and b/node_modules/express/node_modules/connect/lib-cov/public/icons/page_white_acrobat.png differ diff --git a/node_modules/express/node_modules/connect/lib-cov/public/icons/page_white_actionscript.png b/node_modules/express/node_modules/connect/lib-cov/public/icons/page_white_actionscript.png new file mode 100644 index 0000000..159b240 Binary files /dev/null and b/node_modules/express/node_modules/connect/lib-cov/public/icons/page_white_actionscript.png differ diff --git a/node_modules/express/node_modules/connect/lib-cov/public/icons/page_white_add.png b/node_modules/express/node_modules/connect/lib-cov/public/icons/page_white_add.png new file mode 100644 index 0000000..aa23dde Binary files /dev/null and b/node_modules/express/node_modules/connect/lib-cov/public/icons/page_white_add.png differ diff --git a/node_modules/express/node_modules/connect/lib-cov/public/icons/page_white_c.png b/node_modules/express/node_modules/connect/lib-cov/public/icons/page_white_c.png new file mode 100644 index 0000000..34a05cc Binary files /dev/null and b/node_modules/express/node_modules/connect/lib-cov/public/icons/page_white_c.png differ diff --git a/node_modules/express/node_modules/connect/lib-cov/public/icons/page_white_camera.png b/node_modules/express/node_modules/connect/lib-cov/public/icons/page_white_camera.png new file mode 100644 index 0000000..f501a59 Binary files /dev/null and b/node_modules/express/node_modules/connect/lib-cov/public/icons/page_white_camera.png differ diff --git a/node_modules/express/node_modules/connect/lib-cov/public/icons/page_white_cd.png b/node_modules/express/node_modules/connect/lib-cov/public/icons/page_white_cd.png new file mode 100644 index 0000000..848bdaf Binary files /dev/null and b/node_modules/express/node_modules/connect/lib-cov/public/icons/page_white_cd.png differ diff --git a/node_modules/express/node_modules/connect/lib-cov/public/icons/page_white_code.png b/node_modules/express/node_modules/connect/lib-cov/public/icons/page_white_code.png new file mode 100644 index 0000000..0c76bd1 Binary files /dev/null and b/node_modules/express/node_modules/connect/lib-cov/public/icons/page_white_code.png differ diff --git a/node_modules/express/node_modules/connect/lib-cov/public/icons/page_white_code_red.png b/node_modules/express/node_modules/connect/lib-cov/public/icons/page_white_code_red.png new file mode 100644 index 0000000..87a6914 Binary files /dev/null and b/node_modules/express/node_modules/connect/lib-cov/public/icons/page_white_code_red.png differ diff --git a/node_modules/express/node_modules/connect/lib-cov/public/icons/page_white_coldfusion.png b/node_modules/express/node_modules/connect/lib-cov/public/icons/page_white_coldfusion.png new file mode 100644 index 0000000..c66011f Binary files /dev/null and b/node_modules/express/node_modules/connect/lib-cov/public/icons/page_white_coldfusion.png differ diff --git a/node_modules/express/node_modules/connect/lib-cov/public/icons/page_white_compressed.png b/node_modules/express/node_modules/connect/lib-cov/public/icons/page_white_compressed.png new file mode 100644 index 0000000..2b6b100 Binary files /dev/null and b/node_modules/express/node_modules/connect/lib-cov/public/icons/page_white_compressed.png differ diff --git a/node_modules/express/node_modules/connect/lib-cov/public/icons/page_white_copy.png b/node_modules/express/node_modules/connect/lib-cov/public/icons/page_white_copy.png new file mode 100644 index 0000000..a9f31a2 Binary files /dev/null and b/node_modules/express/node_modules/connect/lib-cov/public/icons/page_white_copy.png differ diff --git a/node_modules/express/node_modules/connect/lib-cov/public/icons/page_white_cplusplus.png b/node_modules/express/node_modules/connect/lib-cov/public/icons/page_white_cplusplus.png new file mode 100644 index 0000000..a87cf84 Binary files /dev/null and b/node_modules/express/node_modules/connect/lib-cov/public/icons/page_white_cplusplus.png differ diff --git a/node_modules/express/node_modules/connect/lib-cov/public/icons/page_white_csharp.png b/node_modules/express/node_modules/connect/lib-cov/public/icons/page_white_csharp.png new file mode 100644 index 0000000..ffb8fc9 Binary files /dev/null and b/node_modules/express/node_modules/connect/lib-cov/public/icons/page_white_csharp.png differ diff --git a/node_modules/express/node_modules/connect/lib-cov/public/icons/page_white_cup.png b/node_modules/express/node_modules/connect/lib-cov/public/icons/page_white_cup.png new file mode 100644 index 0000000..0a7d6f4 Binary files /dev/null and b/node_modules/express/node_modules/connect/lib-cov/public/icons/page_white_cup.png differ diff --git a/node_modules/express/node_modules/connect/lib-cov/public/icons/page_white_database.png b/node_modules/express/node_modules/connect/lib-cov/public/icons/page_white_database.png new file mode 100644 index 0000000..bddba1f Binary files /dev/null and b/node_modules/express/node_modules/connect/lib-cov/public/icons/page_white_database.png differ diff --git a/node_modules/express/node_modules/connect/lib-cov/public/icons/page_white_delete.png b/node_modules/express/node_modules/connect/lib-cov/public/icons/page_white_delete.png new file mode 100644 index 0000000..af1ecaf Binary files /dev/null and b/node_modules/express/node_modules/connect/lib-cov/public/icons/page_white_delete.png differ diff --git a/node_modules/express/node_modules/connect/lib-cov/public/icons/page_white_dvd.png b/node_modules/express/node_modules/connect/lib-cov/public/icons/page_white_dvd.png new file mode 100644 index 0000000..4cc537a Binary files /dev/null and b/node_modules/express/node_modules/connect/lib-cov/public/icons/page_white_dvd.png differ diff --git a/node_modules/express/node_modules/connect/lib-cov/public/icons/page_white_edit.png b/node_modules/express/node_modules/connect/lib-cov/public/icons/page_white_edit.png new file mode 100644 index 0000000..b93e776 Binary files /dev/null and b/node_modules/express/node_modules/connect/lib-cov/public/icons/page_white_edit.png differ diff --git a/node_modules/express/node_modules/connect/lib-cov/public/icons/page_white_error.png b/node_modules/express/node_modules/connect/lib-cov/public/icons/page_white_error.png new file mode 100644 index 0000000..9fc5a0a Binary files /dev/null and b/node_modules/express/node_modules/connect/lib-cov/public/icons/page_white_error.png differ diff --git a/node_modules/express/node_modules/connect/lib-cov/public/icons/page_white_excel.png b/node_modules/express/node_modules/connect/lib-cov/public/icons/page_white_excel.png new file mode 100644 index 0000000..b977d7e Binary files /dev/null and b/node_modules/express/node_modules/connect/lib-cov/public/icons/page_white_excel.png differ diff --git a/node_modules/express/node_modules/connect/lib-cov/public/icons/page_white_find.png b/node_modules/express/node_modules/connect/lib-cov/public/icons/page_white_find.png new file mode 100644 index 0000000..5818436 Binary files /dev/null and b/node_modules/express/node_modules/connect/lib-cov/public/icons/page_white_find.png differ diff --git a/node_modules/express/node_modules/connect/lib-cov/public/icons/page_white_flash.png b/node_modules/express/node_modules/connect/lib-cov/public/icons/page_white_flash.png new file mode 100644 index 0000000..5769120 Binary files /dev/null and b/node_modules/express/node_modules/connect/lib-cov/public/icons/page_white_flash.png differ diff --git a/node_modules/express/node_modules/connect/lib-cov/public/icons/page_white_freehand.png b/node_modules/express/node_modules/connect/lib-cov/public/icons/page_white_freehand.png new file mode 100644 index 0000000..8d719df Binary files /dev/null and b/node_modules/express/node_modules/connect/lib-cov/public/icons/page_white_freehand.png differ diff --git a/node_modules/express/node_modules/connect/lib-cov/public/icons/page_white_gear.png b/node_modules/express/node_modules/connect/lib-cov/public/icons/page_white_gear.png new file mode 100644 index 0000000..106f5aa Binary files /dev/null and b/node_modules/express/node_modules/connect/lib-cov/public/icons/page_white_gear.png differ diff --git a/node_modules/express/node_modules/connect/lib-cov/public/icons/page_white_get.png b/node_modules/express/node_modules/connect/lib-cov/public/icons/page_white_get.png new file mode 100644 index 0000000..e4a1ecb Binary files /dev/null and b/node_modules/express/node_modules/connect/lib-cov/public/icons/page_white_get.png differ diff --git a/node_modules/express/node_modules/connect/lib-cov/public/icons/page_white_go.png b/node_modules/express/node_modules/connect/lib-cov/public/icons/page_white_go.png new file mode 100644 index 0000000..7e62a92 Binary files /dev/null and b/node_modules/express/node_modules/connect/lib-cov/public/icons/page_white_go.png differ diff --git a/node_modules/express/node_modules/connect/lib-cov/public/icons/page_white_h.png b/node_modules/express/node_modules/connect/lib-cov/public/icons/page_white_h.png new file mode 100644 index 0000000..e902abb Binary files /dev/null and b/node_modules/express/node_modules/connect/lib-cov/public/icons/page_white_h.png differ diff --git a/node_modules/express/node_modules/connect/lib-cov/public/icons/page_white_horizontal.png b/node_modules/express/node_modules/connect/lib-cov/public/icons/page_white_horizontal.png new file mode 100644 index 0000000..1d2d0a4 Binary files /dev/null and b/node_modules/express/node_modules/connect/lib-cov/public/icons/page_white_horizontal.png differ diff --git a/node_modules/express/node_modules/connect/lib-cov/public/icons/page_white_key.png b/node_modules/express/node_modules/connect/lib-cov/public/icons/page_white_key.png new file mode 100644 index 0000000..d616484 Binary files /dev/null and b/node_modules/express/node_modules/connect/lib-cov/public/icons/page_white_key.png differ diff --git a/node_modules/express/node_modules/connect/lib-cov/public/icons/page_white_lightning.png b/node_modules/express/node_modules/connect/lib-cov/public/icons/page_white_lightning.png new file mode 100644 index 0000000..7215d1e Binary files /dev/null and b/node_modules/express/node_modules/connect/lib-cov/public/icons/page_white_lightning.png differ diff --git a/node_modules/express/node_modules/connect/lib-cov/public/icons/page_white_link.png b/node_modules/express/node_modules/connect/lib-cov/public/icons/page_white_link.png new file mode 100644 index 0000000..bf7bd1c Binary files /dev/null and b/node_modules/express/node_modules/connect/lib-cov/public/icons/page_white_link.png differ diff --git a/node_modules/express/node_modules/connect/lib-cov/public/icons/page_white_magnify.png b/node_modules/express/node_modules/connect/lib-cov/public/icons/page_white_magnify.png new file mode 100644 index 0000000..f6b74cc Binary files /dev/null and b/node_modules/express/node_modules/connect/lib-cov/public/icons/page_white_magnify.png differ diff --git a/node_modules/express/node_modules/connect/lib-cov/public/icons/page_white_medal.png b/node_modules/express/node_modules/connect/lib-cov/public/icons/page_white_medal.png new file mode 100644 index 0000000..d3fffb6 Binary files /dev/null and b/node_modules/express/node_modules/connect/lib-cov/public/icons/page_white_medal.png differ diff --git a/node_modules/express/node_modules/connect/lib-cov/public/icons/page_white_office.png b/node_modules/express/node_modules/connect/lib-cov/public/icons/page_white_office.png new file mode 100644 index 0000000..a65bcb3 Binary files /dev/null and b/node_modules/express/node_modules/connect/lib-cov/public/icons/page_white_office.png differ diff --git a/node_modules/express/node_modules/connect/lib-cov/public/icons/page_white_paint.png b/node_modules/express/node_modules/connect/lib-cov/public/icons/page_white_paint.png new file mode 100644 index 0000000..23a37b8 Binary files /dev/null and b/node_modules/express/node_modules/connect/lib-cov/public/icons/page_white_paint.png differ diff --git a/node_modules/express/node_modules/connect/lib-cov/public/icons/page_white_paintbrush.png b/node_modules/express/node_modules/connect/lib-cov/public/icons/page_white_paintbrush.png new file mode 100644 index 0000000..f907e44 Binary files /dev/null and b/node_modules/express/node_modules/connect/lib-cov/public/icons/page_white_paintbrush.png differ diff --git a/node_modules/express/node_modules/connect/lib-cov/public/icons/page_white_paste.png b/node_modules/express/node_modules/connect/lib-cov/public/icons/page_white_paste.png new file mode 100644 index 0000000..5b2cbb3 Binary files /dev/null and b/node_modules/express/node_modules/connect/lib-cov/public/icons/page_white_paste.png differ diff --git a/node_modules/express/node_modules/connect/lib-cov/public/icons/page_white_php.png b/node_modules/express/node_modules/connect/lib-cov/public/icons/page_white_php.png new file mode 100644 index 0000000..7868a25 Binary files /dev/null and b/node_modules/express/node_modules/connect/lib-cov/public/icons/page_white_php.png differ diff --git a/node_modules/express/node_modules/connect/lib-cov/public/icons/page_white_picture.png b/node_modules/express/node_modules/connect/lib-cov/public/icons/page_white_picture.png new file mode 100644 index 0000000..134b669 Binary files /dev/null and b/node_modules/express/node_modules/connect/lib-cov/public/icons/page_white_picture.png differ diff --git a/node_modules/express/node_modules/connect/lib-cov/public/icons/page_white_powerpoint.png b/node_modules/express/node_modules/connect/lib-cov/public/icons/page_white_powerpoint.png new file mode 100644 index 0000000..c4eff03 Binary files /dev/null and b/node_modules/express/node_modules/connect/lib-cov/public/icons/page_white_powerpoint.png differ diff --git a/node_modules/express/node_modules/connect/lib-cov/public/icons/page_white_put.png b/node_modules/express/node_modules/connect/lib-cov/public/icons/page_white_put.png new file mode 100644 index 0000000..884ffd6 Binary files /dev/null and b/node_modules/express/node_modules/connect/lib-cov/public/icons/page_white_put.png differ diff --git a/node_modules/express/node_modules/connect/lib-cov/public/icons/page_white_ruby.png b/node_modules/express/node_modules/connect/lib-cov/public/icons/page_white_ruby.png new file mode 100644 index 0000000..f59b7c4 Binary files /dev/null and b/node_modules/express/node_modules/connect/lib-cov/public/icons/page_white_ruby.png differ diff --git a/node_modules/express/node_modules/connect/lib-cov/public/icons/page_white_stack.png b/node_modules/express/node_modules/connect/lib-cov/public/icons/page_white_stack.png new file mode 100644 index 0000000..44084ad Binary files /dev/null and b/node_modules/express/node_modules/connect/lib-cov/public/icons/page_white_stack.png differ diff --git a/node_modules/express/node_modules/connect/lib-cov/public/icons/page_white_star.png b/node_modules/express/node_modules/connect/lib-cov/public/icons/page_white_star.png new file mode 100644 index 0000000..3a1441c Binary files /dev/null and b/node_modules/express/node_modules/connect/lib-cov/public/icons/page_white_star.png differ diff --git a/node_modules/express/node_modules/connect/lib-cov/public/icons/page_white_swoosh.png b/node_modules/express/node_modules/connect/lib-cov/public/icons/page_white_swoosh.png new file mode 100644 index 0000000..e770829 Binary files /dev/null and b/node_modules/express/node_modules/connect/lib-cov/public/icons/page_white_swoosh.png differ diff --git a/node_modules/express/node_modules/connect/lib-cov/public/icons/page_white_text.png b/node_modules/express/node_modules/connect/lib-cov/public/icons/page_white_text.png new file mode 100644 index 0000000..813f712 Binary files /dev/null and b/node_modules/express/node_modules/connect/lib-cov/public/icons/page_white_text.png differ diff --git a/node_modules/express/node_modules/connect/lib-cov/public/icons/page_white_text_width.png b/node_modules/express/node_modules/connect/lib-cov/public/icons/page_white_text_width.png new file mode 100644 index 0000000..d9cf132 Binary files /dev/null and b/node_modules/express/node_modules/connect/lib-cov/public/icons/page_white_text_width.png differ diff --git a/node_modules/express/node_modules/connect/lib-cov/public/icons/page_white_tux.png b/node_modules/express/node_modules/connect/lib-cov/public/icons/page_white_tux.png new file mode 100644 index 0000000..52699bf Binary files /dev/null and b/node_modules/express/node_modules/connect/lib-cov/public/icons/page_white_tux.png differ diff --git a/node_modules/express/node_modules/connect/lib-cov/public/icons/page_white_vector.png b/node_modules/express/node_modules/connect/lib-cov/public/icons/page_white_vector.png new file mode 100644 index 0000000..4a05955 Binary files /dev/null and b/node_modules/express/node_modules/connect/lib-cov/public/icons/page_white_vector.png differ diff --git a/node_modules/express/node_modules/connect/lib-cov/public/icons/page_white_visualstudio.png b/node_modules/express/node_modules/connect/lib-cov/public/icons/page_white_visualstudio.png new file mode 100644 index 0000000..a0a433d Binary files /dev/null and b/node_modules/express/node_modules/connect/lib-cov/public/icons/page_white_visualstudio.png differ diff --git a/node_modules/express/node_modules/connect/lib-cov/public/icons/page_white_width.png b/node_modules/express/node_modules/connect/lib-cov/public/icons/page_white_width.png new file mode 100644 index 0000000..1eb8809 Binary files /dev/null and b/node_modules/express/node_modules/connect/lib-cov/public/icons/page_white_width.png differ diff --git a/node_modules/express/node_modules/connect/lib-cov/public/icons/page_white_word.png b/node_modules/express/node_modules/connect/lib-cov/public/icons/page_white_word.png new file mode 100644 index 0000000..ae8ecbf Binary files /dev/null and b/node_modules/express/node_modules/connect/lib-cov/public/icons/page_white_word.png differ diff --git a/node_modules/express/node_modules/connect/lib-cov/public/icons/page_white_world.png b/node_modules/express/node_modules/connect/lib-cov/public/icons/page_white_world.png new file mode 100644 index 0000000..6ed2490 Binary files /dev/null and b/node_modules/express/node_modules/connect/lib-cov/public/icons/page_white_world.png differ diff --git a/node_modules/express/node_modules/connect/lib-cov/public/icons/page_white_wrench.png b/node_modules/express/node_modules/connect/lib-cov/public/icons/page_white_wrench.png new file mode 100644 index 0000000..fecadd0 Binary files /dev/null and b/node_modules/express/node_modules/connect/lib-cov/public/icons/page_white_wrench.png differ diff --git a/node_modules/express/node_modules/connect/lib-cov/public/icons/page_white_zip.png b/node_modules/express/node_modules/connect/lib-cov/public/icons/page_white_zip.png new file mode 100644 index 0000000..fd4bbcc Binary files /dev/null and b/node_modules/express/node_modules/connect/lib-cov/public/icons/page_white_zip.png differ diff --git a/node_modules/express/node_modules/connect/lib-cov/public/icons/page_word.png b/node_modules/express/node_modules/connect/lib-cov/public/icons/page_word.png new file mode 100644 index 0000000..834cdfa Binary files /dev/null and b/node_modules/express/node_modules/connect/lib-cov/public/icons/page_word.png differ diff --git a/node_modules/express/node_modules/connect/lib-cov/public/icons/page_world.png b/node_modules/express/node_modules/connect/lib-cov/public/icons/page_world.png new file mode 100644 index 0000000..b8895dd Binary files /dev/null and b/node_modules/express/node_modules/connect/lib-cov/public/icons/page_world.png differ diff --git a/node_modules/express/node_modules/connect/lib-cov/public/style.css b/node_modules/express/node_modules/connect/lib-cov/public/style.css new file mode 100644 index 0000000..32b6507 --- /dev/null +++ b/node_modules/express/node_modules/connect/lib-cov/public/style.css @@ -0,0 +1,141 @@ +body { + margin: 0; + padding: 80px 100px; + font: 13px "Helvetica Neue", "Lucida Grande", "Arial"; + background: #ECE9E9 -webkit-gradient(linear, 0% 0%, 0% 100%, from(#fff), to(#ECE9E9)); + background: #ECE9E9 -moz-linear-gradient(top, #fff, #ECE9E9); + background-repeat: no-repeat; + color: #555; + -webkit-font-smoothing: antialiased; +} +h1, h2, h3 { + margin: 0; + font-size: 22px; + color: #343434; +} +h1 em, h2 em { + padding: 0 5px; + font-weight: normal; +} +h1 { + font-size: 60px; +} +h2 { + margin-top: 10px; +} +h3 { + margin: 5px 0 10px 0; + padding-bottom: 5px; + border-bottom: 1px solid #eee; + font-size: 18px; +} +ul { + margin: 0; + padding: 0; +} +ul li { + margin: 5px 0; + padding: 3px 8px; + list-style: none; +} +ul li:hover { + cursor: pointer; + color: #2e2e2e; +} +ul li .path { + padding-left: 5px; + font-weight: bold; +} +ul li .line { + padding-right: 5px; + font-style: italic; +} +ul li:first-child .path { + padding-left: 0; +} +p { + line-height: 1.5; +} +a { + color: #555; + text-decoration: none; +} +a:hover { + color: #303030; +} +#stacktrace { + margin-top: 15px; +} +.directory h1 { + margin-bottom: 15px; + font-size: 18px; +} +ul#files { + width: 100%; + height: 500px; +} +ul#files li { + padding: 0; +} +ul#files li img { + position: absolute; + top: 5px; + left: 5px; +} +ul#files li a { + position: relative; + display: block; + margin: 1px; + width: 30%; + height: 25px; + line-height: 25px; + text-indent: 8px; + float: left; + border: 1px solid transparent; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + border-radius: 5px; + overflow: hidden; + text-overflow: ellipsis; +} +ul#files li a.icon { + text-indent: 25px; +} +ul#files li a:focus, +ul#files li a:hover { + outline: none; + background: rgba(255,255,255,0.65); + border: 1px solid #ececec; +} +ul#files li a.highlight { + -webkit-transition: background .4s ease-in-out; + background: #ffff4f; + border-color: #E9DC51; +} +#search { + display: block; + position: fixed; + top: 20px; + right: 20px; + width: 90px; + -webkit-transition: width ease 0.2s, opacity ease 0.4s; + -moz-transition: width ease 0.2s, opacity ease 0.4s; + -webkit-border-radius: 32px; + -moz-border-radius: 32px; + -webkit-box-shadow: inset 0px 0px 3px rgba(0, 0, 0, 0.25), inset 0px 1px 3px rgba(0, 0, 0, 0.7), 0px 1px 0px rgba(255, 255, 255, 0.03); + -moz-box-shadow: inset 0px 0px 3px rgba(0, 0, 0, 0.25), inset 0px 1px 3px rgba(0, 0, 0, 0.7), 0px 1px 0px rgba(255, 255, 255, 0.03); + -webkit-font-smoothing: antialiased; + text-align: left; + font: 13px "Helvetica Neue", Arial, sans-serif; + padding: 4px 10px; + border: none; + background: transparent; + margin-bottom: 0; + outline: none; + opacity: 0.7; + color: #888; +} +#search:focus { + width: 120px; + opacity: 1.0; +} diff --git a/node_modules/express/node_modules/connect/lib-cov/utils.js b/node_modules/express/node_modules/connect/lib-cov/utils.js new file mode 100644 index 0000000..2200dce --- /dev/null +++ b/node_modules/express/node_modules/connect/lib-cov/utils.js @@ -0,0 +1,282 @@ +/* automatically generated by JSCoverage - do not edit */ +if (typeof _$jscoverage === 'undefined') _$jscoverage = {}; +if (! _$jscoverage['utils.js']) { + _$jscoverage['utils.js'] = []; + _$jscoverage['utils.js'][13] = 0; + _$jscoverage['utils.js'][26] = 0; + _$jscoverage['utils.js'][27] = 0; + _$jscoverage['utils.js'][39] = 0; + _$jscoverage['utils.js'][40] = 0; + _$jscoverage['utils.js'][41] = 0; + _$jscoverage['utils.js'][54] = 0; + _$jscoverage['utils.js'][55] = 0; + _$jscoverage['utils.js'][56] = 0; + _$jscoverage['utils.js'][57] = 0; + _$jscoverage['utils.js'][73] = 0; + _$jscoverage['utils.js'][74] = 0; + _$jscoverage['utils.js'][95] = 0; + _$jscoverage['utils.js'][96] = 0; + _$jscoverage['utils.js'][97] = 0; + _$jscoverage['utils.js'][98] = 0; + _$jscoverage['utils.js'][101] = 0; + _$jscoverage['utils.js'][112] = 0; + _$jscoverage['utils.js'][113] = 0; + _$jscoverage['utils.js'][132] = 0; + _$jscoverage['utils.js'][133] = 0; + _$jscoverage['utils.js'][147] = 0; + _$jscoverage['utils.js'][148] = 0; + _$jscoverage['utils.js'][149] = 0; + _$jscoverage['utils.js'][166] = 0; + _$jscoverage['utils.js'][167] = 0; + _$jscoverage['utils.js'][168] = 0; + _$jscoverage['utils.js'][169] = 0; + _$jscoverage['utils.js'][184] = 0; + _$jscoverage['utils.js'][185] = 0; + _$jscoverage['utils.js'][186] = 0; + _$jscoverage['utils.js'][187] = 0; + _$jscoverage['utils.js'][188] = 0; + _$jscoverage['utils.js'][189] = 0; + _$jscoverage['utils.js'][190] = 0; + _$jscoverage['utils.js'][191] = 0; + _$jscoverage['utils.js'][192] = 0; + _$jscoverage['utils.js'][196] = 0; + _$jscoverage['utils.js'][208] = 0; + _$jscoverage['utils.js'][209] = 0; + _$jscoverage['utils.js'][222] = 0; + _$jscoverage['utils.js'][223] = 0; + _$jscoverage['utils.js'][224] = 0; + _$jscoverage['utils.js'][225] = 0; + _$jscoverage['utils.js'][226] = 0; + _$jscoverage['utils.js'][228] = 0; + _$jscoverage['utils.js'][239] = 0; + _$jscoverage['utils.js'][240] = 0; + _$jscoverage['utils.js'][241] = 0; + _$jscoverage['utils.js'][242] = 0; + _$jscoverage['utils.js'][267] = 0; + _$jscoverage['utils.js'][276] = 0; + _$jscoverage['utils.js'][277] = 0; + _$jscoverage['utils.js'][278] = 0; + _$jscoverage['utils.js'][279] = 0; + _$jscoverage['utils.js'][292] = 0; + _$jscoverage['utils.js'][293] = 0; + _$jscoverage['utils.js'][305] = 0; + _$jscoverage['utils.js'][306] = 0; + _$jscoverage['utils.js'][307] = 0; + _$jscoverage['utils.js'][308] = 0; + _$jscoverage['utils.js'][319] = 0; + _$jscoverage['utils.js'][320] = 0; + _$jscoverage['utils.js'][321] = 0; + _$jscoverage['utils.js'][322] = 0; + _$jscoverage['utils.js'][334] = 0; + _$jscoverage['utils.js'][335] = 0; + _$jscoverage['utils.js'][346] = 0; + _$jscoverage['utils.js'][347] = 0; + _$jscoverage['utils.js'][350] = 0; + _$jscoverage['utils.js'][351] = 0; + _$jscoverage['utils.js'][355] = 0; + _$jscoverage['utils.js'][358] = 0; + _$jscoverage['utils.js'][369] = 0; + _$jscoverage['utils.js'][370] = 0; + _$jscoverage['utils.js'][371] = 0; + _$jscoverage['utils.js'][372] = 0; + _$jscoverage['utils.js'][374] = 0; + _$jscoverage['utils.js'][386] = 0; +} +_$jscoverage['utils.js'][13]++; +var http = require("http"), crypto = require("crypto"), parse = require("url").parse, signature = require("cookie-signature"); +_$jscoverage['utils.js'][26]++; +exports.hasBody = (function (req) { + _$jscoverage['utils.js'][27]++; + return "transfer-encoding" in req.headers || "content-length" in req.headers; +}); +_$jscoverage['utils.js'][39]++; +exports.mime = (function (req) { + _$jscoverage['utils.js'][40]++; + var str = req.headers["content-type"] || ""; + _$jscoverage['utils.js'][41]++; + return str.split(";")[0]; +}); +_$jscoverage['utils.js'][54]++; +exports.error = (function (code, msg) { + _$jscoverage['utils.js'][55]++; + var err = new Error(msg || http.STATUS_CODES[code]); + _$jscoverage['utils.js'][56]++; + err.status = code; + _$jscoverage['utils.js'][57]++; + return err; +}); +_$jscoverage['utils.js'][73]++; +exports.md5 = (function (str, encoding) { + _$jscoverage['utils.js'][74]++; + return crypto.createHash("md5").update(str).digest(encoding || "hex"); +}); +_$jscoverage['utils.js'][95]++; +exports.merge = (function (a, b) { + _$jscoverage['utils.js'][96]++; + if (a && b) { + _$jscoverage['utils.js'][97]++; + for (var key in b) { + _$jscoverage['utils.js'][98]++; + a[key] = b[key]; +} + } + _$jscoverage['utils.js'][101]++; + return a; +}); +_$jscoverage['utils.js'][112]++; +exports.escape = (function (html) { + _$jscoverage['utils.js'][113]++; + return String(html).replace(/&(?!\w+;)/g, "&").replace(//g, ">").replace(/"/g, """); +}); +_$jscoverage['utils.js'][132]++; +exports.uid = (function (len) { + _$jscoverage['utils.js'][133]++; + return crypto.randomBytes(Math.ceil(len * 3 / 4)).toString("base64").slice(0, len); +}); +_$jscoverage['utils.js'][147]++; +exports.sign = (function (val, secret) { + _$jscoverage['utils.js'][148]++; + console.warn("do not use utils.sign(), use https://github.com/visionmedia/node-cookie-signature"); + _$jscoverage['utils.js'][149]++; + return val + "." + crypto.createHmac("sha256", secret).update(val).digest("base64").replace(/=+$/, ""); +}); +_$jscoverage['utils.js'][166]++; +exports.unsign = (function (val, secret) { + _$jscoverage['utils.js'][167]++; + console.warn("do not use utils.unsign(), use https://github.com/visionmedia/node-cookie-signature"); + _$jscoverage['utils.js'][168]++; + var str = val.slice(0, val.lastIndexOf(".")); + _$jscoverage['utils.js'][169]++; + return exports.sign(str, secret) == val? str: false; +}); +_$jscoverage['utils.js'][184]++; +exports.parseSignedCookies = (function (obj, secret) { + _$jscoverage['utils.js'][185]++; + var ret = {}; + _$jscoverage['utils.js'][186]++; + Object.keys(obj).forEach((function (key) { + _$jscoverage['utils.js'][187]++; + var val = obj[key]; + _$jscoverage['utils.js'][188]++; + if (0 == val.indexOf("s:")) { + _$jscoverage['utils.js'][189]++; + val = signature.unsign(val.slice(2), secret); + _$jscoverage['utils.js'][190]++; + if (val) { + _$jscoverage['utils.js'][191]++; + ret[key] = val; + _$jscoverage['utils.js'][192]++; + delete obj[key]; + } + } +})); + _$jscoverage['utils.js'][196]++; + return ret; +}); +_$jscoverage['utils.js'][208]++; +exports.parseSignedCookie = (function (str, secret) { + _$jscoverage['utils.js'][209]++; + return 0 == str.indexOf("s:")? signature.unsign(str.slice(2), secret): str; +}); +_$jscoverage['utils.js'][222]++; +exports.parseJSONCookies = (function (obj) { + _$jscoverage['utils.js'][223]++; + Object.keys(obj).forEach((function (key) { + _$jscoverage['utils.js'][224]++; + var val = obj[key]; + _$jscoverage['utils.js'][225]++; + var res = exports.parseJSONCookie(val); + _$jscoverage['utils.js'][226]++; + if (res) { + _$jscoverage['utils.js'][226]++; + obj[key] = res; + } +})); + _$jscoverage['utils.js'][228]++; + return obj; +}); +_$jscoverage['utils.js'][239]++; +exports.parseJSONCookie = (function (str) { + _$jscoverage['utils.js'][240]++; + if (0 == str.indexOf("j:")) { + _$jscoverage['utils.js'][241]++; + try { + _$jscoverage['utils.js'][242]++; + return JSON.parse(str.slice(2)); + } + catch (err) { + } + } +}); +_$jscoverage['utils.js'][267]++; +exports.pause = require("pause"); +_$jscoverage['utils.js'][276]++; +exports.removeContentHeaders = (function (res) { + _$jscoverage['utils.js'][277]++; + Object.keys(res._headers).forEach((function (field) { + _$jscoverage['utils.js'][278]++; + if (0 == field.indexOf("content")) { + _$jscoverage['utils.js'][279]++; + res.removeHeader(field); + } +})); +}); +_$jscoverage['utils.js'][292]++; +exports.conditionalGET = (function (req) { + _$jscoverage['utils.js'][293]++; + return req.headers["if-modified-since"] || req.headers["if-none-match"]; +}); +_$jscoverage['utils.js'][305]++; +exports.unauthorized = (function (res, realm) { + _$jscoverage['utils.js'][306]++; + res.statusCode = 401; + _$jscoverage['utils.js'][307]++; + res.setHeader("WWW-Authenticate", "Basic realm=\"" + realm + "\""); + _$jscoverage['utils.js'][308]++; + res.end("Unauthorized"); +}); +_$jscoverage['utils.js'][319]++; +exports.notModified = (function (res) { + _$jscoverage['utils.js'][320]++; + exports.removeContentHeaders(res); + _$jscoverage['utils.js'][321]++; + res.statusCode = 304; + _$jscoverage['utils.js'][322]++; + res.end(); +}); +_$jscoverage['utils.js'][334]++; +exports.etag = (function (stat) { + _$jscoverage['utils.js'][335]++; + return "\"" + stat.size + "-" + Number(stat.mtime) + "\""; +}); +_$jscoverage['utils.js'][346]++; +exports.parseCacheControl = (function (str) { + _$jscoverage['utils.js'][347]++; + var directives = str.split(","), obj = {}; + _$jscoverage['utils.js'][350]++; + for (var i = 0, len = directives.length; i < len; i++) { + _$jscoverage['utils.js'][351]++; + var parts = directives[i].split("="), key = parts.shift().trim(), val = parseInt(parts.shift(), 10); + _$jscoverage['utils.js'][355]++; + obj[key] = isNaN(val)? true: val; +} + _$jscoverage['utils.js'][358]++; + return obj; +}); +_$jscoverage['utils.js'][369]++; +exports.parseUrl = (function (req) { + _$jscoverage['utils.js'][370]++; + var parsed = req._parsedUrl; + _$jscoverage['utils.js'][371]++; + if (parsed && parsed.href == req.url) { + _$jscoverage['utils.js'][372]++; + return parsed; + } + else { + _$jscoverage['utils.js'][374]++; + return req._parsedUrl = parse(req.url); + } +}); +_$jscoverage['utils.js'][386]++; +exports.parseBytes = require("bytes"); +_$jscoverage['utils.js'].source = ["","/*!"," * Connect - utils"," * Copyright(c) 2010 Sencha Inc."," * Copyright(c) 2011 TJ Holowaychuk"," * MIT Licensed"," */","","/**"," * Module dependencies."," */","","var http = require('http')"," , crypto = require('crypto')"," , parse = require('url').parse"," , signature = require('cookie-signature');","","/**"," * Return `true` if the request has a body, otherwise return `false`."," *"," * @param {IncomingMessage} req"," * @return {Boolean}"," * @api private"," */","","exports.hasBody = function(req) {"," return 'transfer-encoding' in req.headers || 'content-length' in req.headers;","};","","/**"," * Extract the mime type from the given request's"," * _Content-Type_ header."," *"," * @param {IncomingMessage} req"," * @return {String}"," * @api private"," */","","exports.mime = function(req) {"," var str = req.headers['content-type'] || '';"," return str.split(';')[0];","};","","/**"," * Generate an `Error` from the given status `code`"," * and optional `msg`."," *"," * @param {Number} code"," * @param {String} msg"," * @return {Error}"," * @api private"," */","","exports.error = function(code, msg){"," var err = new Error(msg || http.STATUS_CODES[code]);"," err.status = code;"," return err;","};","","/**"," * Return md5 hash of the given string and optional encoding,"," * defaulting to hex."," *"," * utils.md5('wahoo');"," * // => \"e493298061761236c96b02ea6aa8a2ad\""," *"," * @param {String} str"," * @param {String} encoding"," * @return {String}"," * @api private"," */","","exports.md5 = function(str, encoding){"," return crypto"," .createHash('md5')"," .update(str)"," .digest(encoding || 'hex');","};","","/**"," * Merge object b with object a."," *"," * var a = { foo: 'bar' }"," * , b = { bar: 'baz' };"," * "," * utils.merge(a, b);"," * // => { foo: 'bar', bar: 'baz' }"," *"," * @param {Object} a"," * @param {Object} b"," * @return {Object}"," * @api private"," */","","exports.merge = function(a, b){"," if (a && b) {"," for (var key in b) {"," a[key] = b[key];"," }"," }"," return a;","};","","/**"," * Escape the given string of `html`."," *"," * @param {String} html"," * @return {String}"," * @api private"," */","","exports.escape = function(html){"," return String(html)"," .replace(/&(?!\\w+;)/g, '&amp;')"," .replace(/</g, '&lt;')"," .replace(/>/g, '&gt;')"," .replace(/\"/g, '&quot;');","};","","","/**"," * Return a unique identifier with the given `len`."," *"," * utils.uid(10);"," * // => \"FDaS435D2z\""," *"," * @param {Number} len"," * @return {String}"," * @api private"," */","","exports.uid = function(len) {"," return crypto.randomBytes(Math.ceil(len * 3 / 4))"," .toString('base64')"," .slice(0, len);","};","","/**"," * Sign the given `val` with `secret`."," *"," * @param {String} val"," * @param {String} secret"," * @return {String}"," * @api private"," */","","exports.sign = function(val, secret){"," console.warn('do not use utils.sign(), use https://github.com/visionmedia/node-cookie-signature')"," return val + '.' + crypto"," .createHmac('sha256', secret)"," .update(val)"," .digest('base64')"," .replace(/=+$/, '');","};","","/**"," * Unsign and decode the given `val` with `secret`,"," * returning `false` if the signature is invalid."," *"," * @param {String} val"," * @param {String} secret"," * @return {String|Boolean}"," * @api private"," */","","exports.unsign = function(val, secret){"," console.warn('do not use utils.unsign(), use https://github.com/visionmedia/node-cookie-signature')"," var str = val.slice(0, val.lastIndexOf('.'));"," return exports.sign(str, secret) == val"," ? str"," : false;","};","","/**"," * Parse signed cookies, returning an object"," * containing the decoded key/value pairs,"," * while removing the signed key from `obj`."," *"," * @param {Object} obj"," * @return {Object}"," * @api private"," */","","exports.parseSignedCookies = function(obj, secret){"," var ret = {};"," Object.keys(obj).forEach(function(key){"," var val = obj[key];"," if (0 == val.indexOf('s:')) {"," val = signature.unsign(val.slice(2), secret);"," if (val) {"," ret[key] = val;"," delete obj[key];"," }"," }"," });"," return ret;","};","","/**"," * Parse a signed cookie string, return the decoded value"," *"," * @param {String} str signed cookie string"," * @param {String} secret"," * @return {String} decoded value"," * @api private"," */","","exports.parseSignedCookie = function(str, secret){"," return 0 == str.indexOf('s:')"," ? signature.unsign(str.slice(2), secret)"," : str;","};","","/**"," * Parse JSON cookies."," *"," * @param {Object} obj"," * @return {Object}"," * @api private"," */","","exports.parseJSONCookies = function(obj){"," Object.keys(obj).forEach(function(key){"," var val = obj[key];"," var res = exports.parseJSONCookie(val);"," if (res) obj[key] = res;"," });"," return obj;","};","","/**"," * Parse JSON cookie string"," *"," * @param {String} str"," * @return {Object} Parsed object or null if not json cookie"," * @api private"," */","","exports.parseJSONCookie = function(str) {"," if (0 == str.indexOf('j:')) {"," try {"," return JSON.parse(str.slice(2));"," } catch (err) {"," // no op"," }"," }","};","","/**"," * Pause `data` and `end` events on the given `obj`."," * Middleware performing async tasks _should_ utilize"," * this utility (or similar), to re-emit data once"," * the async operation has completed, otherwise these"," * events may be lost."," *"," * var pause = utils.pause(req);"," * fs.readFile(path, function(){"," * next();"," * pause.resume();"," * });"," *"," * @param {Object} obj"," * @return {Object}"," * @api private"," */","","exports.pause = require('pause');","","/**"," * Strip `Content-*` headers from `res`."," *"," * @param {ServerResponse} res"," * @api private"," */","","exports.removeContentHeaders = function(res){"," Object.keys(res._headers).forEach(function(field){"," if (0 == field.indexOf('content')) {"," res.removeHeader(field);"," }"," });","};","","/**"," * Check if `req` is a conditional GET request."," *"," * @param {IncomingMessage} req"," * @return {Boolean}"," * @api private"," */","","exports.conditionalGET = function(req) {"," return req.headers['if-modified-since']"," || req.headers['if-none-match'];","};","","/**"," * Respond with 401 \"Unauthorized\"."," *"," * @param {ServerResponse} res"," * @param {String} realm"," * @api private"," */","","exports.unauthorized = function(res, realm) {"," res.statusCode = 401;"," res.setHeader('WWW-Authenticate', 'Basic realm=\"' + realm + '\"');"," res.end('Unauthorized');","};","","/**"," * Respond with 304 \"Not Modified\"."," *"," * @param {ServerResponse} res"," * @param {Object} headers"," * @api private"," */","","exports.notModified = function(res) {"," exports.removeContentHeaders(res);"," res.statusCode = 304;"," res.end();","};","","/**"," * Return an ETag in the form of `\"<size>-<mtime>\"`"," * from the given `stat`."," *"," * @param {Object} stat"," * @return {String}"," * @api private"," */","","exports.etag = function(stat) {"," return '\"' + stat.size + '-' + Number(stat.mtime) + '\"';","};","","/**"," * Parse the given Cache-Control `str`."," *"," * @param {String} str"," * @return {Object}"," * @api private"," */","","exports.parseCacheControl = function(str){"," var directives = str.split(',')"," , obj = {};",""," for(var i = 0, len = directives.length; i < len; i++) {"," var parts = directives[i].split('=')"," , key = parts.shift().trim()"," , val = parseInt(parts.shift(), 10);",""," obj[key] = isNaN(val) ? true : val;"," }",""," return obj;","};","","/**"," * Parse the `req` url with memoization."," *"," * @param {ServerRequest} req"," * @return {Object}"," * @api private"," */","","exports.parseUrl = function(req){"," var parsed = req._parsedUrl;"," if (parsed && parsed.href == req.url) {"," return parsed;"," } else {"," return req._parsedUrl = parse(req.url);"," }","};","","/**"," * Parse byte `size` string."," *"," * @param {String} size"," * @return {Number}"," * @api private"," */","","exports.parseBytes = require('bytes');"]; diff --git a/node_modules/express/node_modules/connect/lib/cache.js b/node_modules/express/node_modules/connect/lib/cache.js new file mode 100644 index 0000000..052fcdb --- /dev/null +++ b/node_modules/express/node_modules/connect/lib/cache.js @@ -0,0 +1,81 @@ + +/*! + * Connect - Cache + * Copyright(c) 2011 Sencha Inc. + * MIT Licensed + */ + +/** + * Expose `Cache`. + */ + +module.exports = Cache; + +/** + * LRU cache store. + * + * @param {Number} limit + * @api private + */ + +function Cache(limit) { + this.store = {}; + this.keys = []; + this.limit = limit; +} + +/** + * Touch `key`, promoting the object. + * + * @param {String} key + * @param {Number} i + * @api private + */ + +Cache.prototype.touch = function(key, i){ + this.keys.splice(i,1); + this.keys.push(key); +}; + +/** + * Remove `key`. + * + * @param {String} key + * @api private + */ + +Cache.prototype.remove = function(key){ + delete this.store[key]; +}; + +/** + * Get the object stored for `key`. + * + * @param {String} key + * @return {Array} + * @api private + */ + +Cache.prototype.get = function(key){ + return this.store[key]; +}; + +/** + * Add a cache `key`. + * + * @param {String} key + * @return {Array} + * @api private + */ + +Cache.prototype.add = function(key){ + // initialize store + var len = this.keys.push(key); + + // limit reached, invalidate LRU + if (len > this.limit) this.remove(this.keys.shift()); + + var arr = this.store[key] = []; + arr.createdAt = new Date; + return arr; +}; diff --git a/node_modules/express/node_modules/connect/lib/connect.js b/node_modules/express/node_modules/connect/lib/connect.js new file mode 100644 index 0000000..a067e24 --- /dev/null +++ b/node_modules/express/node_modules/connect/lib/connect.js @@ -0,0 +1,93 @@ + +/*! + * Connect + * Copyright(c) 2010 Sencha Inc. + * Copyright(c) 2011 TJ Holowaychuk + * MIT Licensed + */ + +/** + * Module dependencies. + */ + +var EventEmitter = require('events').EventEmitter + , proto = require('./proto') + , utils = require('./utils') + , path = require('path') + , basename = path.basename + , fs = require('fs'); + +// node patches + +require('./patch'); + +// expose createServer() as the module + +exports = module.exports = createServer; + +/** + * Framework version. + */ + +exports.version = '2.7.2'; + +/** + * Expose mime module. + */ + +exports.mime = require('./middleware/static').mime; + +/** + * Expose the prototype. + */ + +exports.proto = proto; + +/** + * Auto-load middleware getters. + */ + +exports.middleware = {}; + +/** + * Expose utilities. + */ + +exports.utils = utils; + +/** + * Create a new connect server. + * + * @return {Function} + * @api public + */ + +function createServer() { + function app(req, res){ app.handle(req, res); } + utils.merge(app, proto); + utils.merge(app, EventEmitter.prototype); + app.route = '/'; + app.stack = []; + for (var i = 0; i < arguments.length; ++i) { + app.use(arguments[i]); + } + return app; +}; + +/** + * Support old `.createServer()` method. + */ + +createServer.createServer = createServer; + +/** + * Auto-load bundled middleware with getters. + */ + +fs.readdirSync(__dirname + '/middleware').forEach(function(filename){ + if (!/\.js$/.test(filename)) return; + var name = basename(filename, '.js'); + function load(){ return require('./middleware/' + name); } + exports.middleware.__defineGetter__(name, load); + exports.__defineGetter__(name, load); +}); diff --git a/node_modules/express/node_modules/connect/lib/index.js b/node_modules/express/node_modules/connect/lib/index.js new file mode 100644 index 0000000..2618ddc --- /dev/null +++ b/node_modules/express/node_modules/connect/lib/index.js @@ -0,0 +1,50 @@ + +/** + * Connect is a middleware framework for node, + * shipping with over 18 bundled middleware and a rich selection of + * 3rd-party middleware. + * + * var app = connect() + * .use(connect.logger('dev')) + * .use(connect.static('public')) + * .use(function(req, res){ + * res.end('hello world\n'); + * }) + * .listen(3000); + * + * Installation: + * + * $ npm install connect + * + * Middleware: + * + * - [logger](logger.html) request logger with custom format support + * - [csrf](csrf.html) Cross-site request forgery protection + * - [compress](compress.html) Gzip compression middleware + * - [basicAuth](basicAuth.html) basic http authentication + * - [bodyParser](bodyParser.html) extensible request body parser + * - [json](json.html) application/json parser + * - [urlencoded](urlencoded.html) application/x-www-form-urlencoded parser + * - [multipart](multipart.html) multipart/form-data parser + * - [timeout](timeout.html) request timeouts + * - [cookieParser](cookieParser.html) cookie parser + * - [session](session.html) session management support with bundled MemoryStore + * - [cookieSession](cookieSession.html) cookie-based session support + * - [methodOverride](methodOverride.html) faux HTTP method support + * - [responseTime](responseTime.html) calculates response-time and exposes via X-Response-Time + * - [staticCache](staticCache.html) memory cache layer for the static() middleware + * - [static](static.html) streaming static file server supporting `Range` and more + * - [directory](directory.html) directory listing middleware + * - [vhost](vhost.html) virtual host sub-domain mapping middleware + * - [favicon](favicon.html) efficient favicon server (with default icon) + * - [limit](limit.html) limit the bytesize of request bodies + * - [query](query.html) automatic querystring parser, populating `req.query` + * - [errorHandler](errorHandler.html) flexible error handler + * + * Links: + * + * - list of [3rd-party](https://github.com/senchalabs/connect/wiki) middleware + * - GitHub [repository](http://github.com/senchalabs/connect) + * - [test documentation](https://github.com/senchalabs/connect/blob/gh-pages/tests.md) + * + */ \ No newline at end of file diff --git a/node_modules/express/node_modules/connect/lib/middleware/basicAuth.js b/node_modules/express/node_modules/connect/lib/middleware/basicAuth.js new file mode 100644 index 0000000..0205812 --- /dev/null +++ b/node_modules/express/node_modules/connect/lib/middleware/basicAuth.js @@ -0,0 +1,103 @@ + +/*! + * Connect - basicAuth + * Copyright(c) 2010 Sencha Inc. + * Copyright(c) 2011 TJ Holowaychuk + * MIT Licensed + */ + +/** + * Module dependencies. + */ + +var utils = require('../utils') + , unauthorized = utils.unauthorized; + +/** + * Basic Auth: + * + * Enfore basic authentication by providing a `callback(user, pass)`, + * which must return `true` in order to gain access. Alternatively an async + * method is provided as well, invoking `callback(user, pass, callback)`. Populates + * `req.user`. The final alternative is simply passing username / password + * strings. + * + * Simple username and password + * + * connect(connect.basicAuth('username', 'password')); + * + * Callback verification + * + * connect() + * .use(connect.basicAuth(function(user, pass){ + * return 'tj' == user & 'wahoo' == pass; + * })) + * + * Async callback verification, accepting `fn(err, user)`. + * + * connect() + * .use(connect.basicAuth(function(user, pass, fn){ + * User.authenticate({ user: user, pass: pass }, fn); + * })) + * + * @param {Function|String} callback or username + * @param {String} realm + * @api public + */ + +module.exports = function basicAuth(callback, realm) { + var username, password; + + // user / pass strings + if ('string' == typeof callback) { + username = callback; + password = realm; + if ('string' != typeof password) throw new Error('password argument required'); + realm = arguments[2]; + callback = function(user, pass){ + return user == username && pass == password; + } + } + + realm = realm || 'Authorization Required'; + + return function(req, res, next) { + var authorization = req.headers.authorization; + + if (req.user) return next(); + if (!authorization) return unauthorized(res, realm); + + var parts = authorization.split(' '); + + if (parts.length !== 2) return next(400); + + var scheme = parts[0] + , credentials = new Buffer(parts[1], 'base64').toString() + , index = credentials.indexOf(':'); + + if ('Basic' != scheme || index < 0) return next(400); + + var user = credentials.slice(0, index) + , pass = credentials.slice(index + 1); + + // async + if (callback.length >= 3) { + var pause = utils.pause(req); + callback(user, pass, function(err, user){ + if (err || !user) return unauthorized(res, realm); + req.user = req.remoteUser = user; + next(); + pause.resume(); + }); + // sync + } else { + if (callback(user, pass)) { + req.user = req.remoteUser = user; + next(); + } else { + unauthorized(res, realm); + } + } + } +}; + diff --git a/node_modules/express/node_modules/connect/lib/middleware/bodyParser.js b/node_modules/express/node_modules/connect/lib/middleware/bodyParser.js new file mode 100644 index 0000000..9f692cd --- /dev/null +++ b/node_modules/express/node_modules/connect/lib/middleware/bodyParser.js @@ -0,0 +1,61 @@ + +/*! + * Connect - bodyParser + * Copyright(c) 2010 Sencha Inc. + * Copyright(c) 2011 TJ Holowaychuk + * MIT Licensed + */ + +/** + * Module dependencies. + */ + +var multipart = require('./multipart') + , urlencoded = require('./urlencoded') + , json = require('./json'); + +/** + * Body parser: + * + * Parse request bodies, supports _application/json_, + * _application/x-www-form-urlencoded_, and _multipart/form-data_. + * + * This is equivalent to: + * + * app.use(connect.json()); + * app.use(connect.urlencoded()); + * app.use(connect.multipart()); + * + * Examples: + * + * connect() + * .use(connect.bodyParser()) + * .use(function(req, res) { + * res.end('viewing user ' + req.body.user.name); + * }); + * + * $ curl -d 'user[name]=tj' http://local/ + * $ curl -d '{"user":{"name":"tj"}}' -H "Content-Type: application/json" http://local/ + * + * View [json](json.html), [urlencoded](urlencoded.html), and [multipart](multipart.html) for more info. + * + * @param {Object} options + * @return {Function} + * @api public + */ + +exports = module.exports = function bodyParser(options){ + var _urlencoded = urlencoded(options) + , _multipart = multipart(options) + , _json = json(options); + + return function bodyParser(req, res, next) { + _json(req, res, function(err){ + if (err) return next(err); + _urlencoded(req, res, function(err){ + if (err) return next(err); + _multipart(req, res, next); + }); + }); + } +}; \ No newline at end of file diff --git a/node_modules/express/node_modules/connect/lib/middleware/compress.js b/node_modules/express/node_modules/connect/lib/middleware/compress.js new file mode 100644 index 0000000..2dc6437 --- /dev/null +++ b/node_modules/express/node_modules/connect/lib/middleware/compress.js @@ -0,0 +1,147 @@ +/*! + * Connect - compress + * Copyright(c) 2010 Sencha Inc. + * Copyright(c) 2011 TJ Holowaychuk + * MIT Licensed + */ + +/** + * Module dependencies. + */ + +var zlib = require('zlib'); + +/** + * Supported content-encoding methods. + */ + +exports.methods = { + gzip: zlib.createGzip + , deflate: zlib.createDeflate +}; + +/** + * Default filter function. + */ + +exports.filter = function(req, res){ + return /json|text|javascript/.test(res.getHeader('Content-Type')); +}; + +/** + * Compress: + * + * Compress response data with gzip/deflate. + * + * Filter: + * + * A `filter` callback function may be passed to + * replace the default logic of: + * + * exports.filter = function(req, res){ + * return /json|text|javascript/.test(res.getHeader('Content-Type')); + * }; + * + * Options: + * + * All remaining options are passed to the gzip/deflate + * creation functions. Consult node's docs for additional details. + * + * - `chunkSize` (default: 16*1024) + * - `windowBits` + * - `level`: 0-9 where 0 is no compression, and 9 is slow but best compression + * - `memLevel`: 1-9 low is slower but uses less memory, high is fast but uses more + * - `strategy`: compression strategy + * + * @param {Object} options + * @return {Function} + * @api public + */ + +module.exports = function compress(options) { + options = options || {}; + var names = Object.keys(exports.methods) + , filter = options.filter || exports.filter; + + return function(req, res, next){ + var accept = req.headers['accept-encoding'] + , write = res.write + , end = res.end + , stream + , method; + + // vary + res.setHeader('Vary', 'Accept-Encoding'); + + // proxy + + res.write = function(chunk, encoding){ + if (!this.headerSent) this._implicitHeader(); + return stream + ? stream.write(new Buffer(chunk, encoding)) + : write.call(res, chunk, encoding); + }; + + res.end = function(chunk, encoding){ + if (chunk) this.write(chunk, encoding); + return stream + ? stream.end() + : end.call(res); + }; + + res.on('header', function(){ + var encoding = res.getHeader('Content-Encoding') || 'identity'; + + // already encoded + if ('identity' != encoding) return; + + // default request filter + if (!filter(req, res)) return; + + // SHOULD use identity + if (!accept) return; + + // head + if ('HEAD' == req.method) return; + + // default to gzip + if ('*' == accept.trim()) method = 'gzip'; + + // compression method + if (!method) { + for (var i = 0, len = names.length; i < len; ++i) { + if (~accept.indexOf(names[i])) { + method = names[i]; + break; + } + } + } + + // compression method + if (!method) return; + + // compression stream + stream = exports.methods[method](options); + + // header fields + res.setHeader('Content-Encoding', method); + res.removeHeader('Content-Length'); + + // compression + + stream.on('data', function(chunk){ + write.call(res, chunk); + }); + + stream.on('end', function(){ + end.call(res); + }); + + stream.on('drain', function() { + res.emit('drain'); + }); + }); + + next(); + }; +}; diff --git a/node_modules/express/node_modules/connect/lib/middleware/cookieParser.js b/node_modules/express/node_modules/connect/lib/middleware/cookieParser.js new file mode 100644 index 0000000..5da23f2 --- /dev/null +++ b/node_modules/express/node_modules/connect/lib/middleware/cookieParser.js @@ -0,0 +1,62 @@ + +/*! + * Connect - cookieParser + * Copyright(c) 2010 Sencha Inc. + * Copyright(c) 2011 TJ Holowaychuk + * MIT Licensed + */ + +/** + * Module dependencies. + */ + +var utils = require('./../utils') + , cookie = require('cookie'); + +/** + * Cookie parser: + * + * Parse _Cookie_ header and populate `req.cookies` + * with an object keyed by the cookie names. Optionally + * you may enabled signed cookie support by passing + * a `secret` string, which assigns `req.secret` so + * it may be used by other middleware. + * + * Examples: + * + * connect() + * .use(connect.cookieParser('optional secret string')) + * .use(function(req, res, next){ + * res.end(JSON.stringify(req.cookies)); + * }) + * + * @param {String} secret + * @return {Function} + * @api public + */ + +module.exports = function cookieParser(secret){ + return function cookieParser(req, res, next) { + if (req.cookies) return next(); + var cookies = req.headers.cookie; + + req.secret = secret; + req.cookies = {}; + req.signedCookies = {}; + + if (cookies) { + try { + req.cookies = cookie.parse(cookies); + if (secret) { + req.signedCookies = utils.parseSignedCookies(req.cookies, secret); + req.signedCookies = utils.parseJSONCookies(req.signedCookies); + } + req.cookies = utils.parseJSONCookies(req.cookies); + } catch (err) { + err.status = 400; + return next(err); + } + } + next(); + }; +}; diff --git a/node_modules/express/node_modules/connect/lib/middleware/cookieSession.js b/node_modules/express/node_modules/connect/lib/middleware/cookieSession.js new file mode 100644 index 0000000..1a23d57 --- /dev/null +++ b/node_modules/express/node_modules/connect/lib/middleware/cookieSession.js @@ -0,0 +1,115 @@ + +/*! + * Connect - cookieSession + * Copyright(c) 2011 Sencha Inc. + * MIT Licensed + */ + +/** + * Module dependencies. + */ + +var utils = require('./../utils') + , Cookie = require('./session/cookie') + , debug = require('debug')('connect:cookieSession') + , signature = require('cookie-signature') + , crc32 = require('buffer-crc32'); + +/** + * Cookie Session: + * + * Cookie session middleware. + * + * var app = connect(); + * app.use(connect.cookieParser()); + * app.use(connect.cookieSession({ secret: 'tobo!', cookie: { maxAge: 60 * 60 * 1000 }})); + * + * Options: + * + * - `key` cookie name defaulting to `connect.sess` + * - `secret` prevents cookie tampering + * - `cookie` session cookie settings, defaulting to `{ path: '/', httpOnly: true, maxAge: null }` + * - `proxy` trust the reverse proxy when setting secure cookies (via "x-forwarded-proto") + * + * Clearing sessions: + * + * To clear the session simply set its value to `null`, + * `cookieSession()` will then respond with a 1970 Set-Cookie. + * + * req.session = null; + * + * @param {Object} options + * @return {Function} + * @api public + */ + +module.exports = function cookieSession(options){ + // TODO: utilize Session/Cookie to unify API + options = options || {}; + var key = options.key || 'connect.sess' + , trustProxy = options.proxy; + + return function cookieSession(req, res, next) { + + // req.secret is for backwards compatibility + var secret = options.secret || req.secret; + if (!secret) throw new Error('`secret` option required for cookie sessions'); + + // default session + req.session = {}; + var cookie = req.session.cookie = new Cookie(options.cookie); + + // pathname mismatch + if (0 != req.originalUrl.indexOf(cookie.path)) return next(); + + // cookieParser secret + if (!options.secret && req.secret) { + req.session = req.signedCookies[key] || {}; + } else { + // TODO: refactor + var rawCookie = req.cookies[key]; + if (rawCookie) { + var unsigned = utils.parseSignedCookie(rawCookie, secret); + if (unsigned) { + var originalHash = crc32.signed(unsigned); + req.session = utils.parseJSONCookie(unsigned) || {}; + } + } + } + + res.on('header', function(){ + // removed + if (!req.session) { + debug('clear session'); + cookie.expires = new Date(0); + res.setHeader('Set-Cookie', cookie.serialize(key, '')); + return; + } + + delete req.session.cookie; + + // check security + var proto = (req.headers['x-forwarded-proto'] || '').toLowerCase() + , tls = req.connection.encrypted || (trustProxy && 'https' == proto) + , secured = cookie.secure && tls; + + // only send secure cookies via https + if (cookie.secure && !secured) return debug('not secured'); + + // serialize + debug('serializing %j', req.session); + var val = 'j:' + JSON.stringify(req.session); + + // compare hashes, no need to set-cookie if unchanged + if (originalHash == crc32.signed(val)) return debug('unmodified session'); + + // set-cookie + val = 's:' + signature.sign(val, secret); + val = cookie.serialize(key, val); + debug('set-cookie %j', cookie); + res.setHeader('Set-Cookie', val); + }); + + next(); + }; +}; diff --git a/node_modules/express/node_modules/connect/lib/middleware/csrf.js b/node_modules/express/node_modules/connect/lib/middleware/csrf.js new file mode 100644 index 0000000..5d5e7c6 --- /dev/null +++ b/node_modules/express/node_modules/connect/lib/middleware/csrf.js @@ -0,0 +1,73 @@ +/*! + * Connect - csrf + * Copyright(c) 2011 Sencha Inc. + * MIT Licensed + */ + +/** + * Module dependencies. + */ + +var utils = require('../utils'); + +/** + * Anti CSRF: + * + * CRSF protection middleware. + * + * By default this middleware generates a token named "_csrf" + * which should be added to requests which mutate + * state, within a hidden form field, query-string etc. This + * token is validated against the visitor's `req.session._csrf` + * property. + * + * The default `value` function checks `req.body` generated + * by the `bodyParser()` middleware, `req.query` generated + * by `query()`, and the "X-CSRF-Token" header field. + * + * This middleware requires session support, thus should be added + * somewhere _below_ `session()` and `cookieParser()`. + * + * Options: + * + * - `value` a function accepting the request, returning the token + * + * @param {Object} options + * @api public + */ + +module.exports = function csrf(options) { + options = options || {}; + var value = options.value || defaultValue; + + return function(req, res, next){ + // generate CSRF token + var token = req.session._csrf || (req.session._csrf = utils.uid(24)); + + // ignore these methods + if ('GET' == req.method || 'HEAD' == req.method || 'OPTIONS' == req.method) return next(); + + // determine value + var val = value(req); + + // check + if (val != token) return next(403); + + next(); + } +}; + +/** + * Default value function, checking the `req.body` + * and `req.query` for the CSRF token. + * + * @param {IncomingMessage} req + * @return {String} + * @api private + */ + +function defaultValue(req) { + return (req.body && req.body._csrf) + || (req.query && req.query._csrf) + || (req.headers['x-csrf-token']); +} diff --git a/node_modules/express/node_modules/connect/lib/middleware/directory.js b/node_modules/express/node_modules/connect/lib/middleware/directory.js new file mode 100644 index 0000000..8fa008c --- /dev/null +++ b/node_modules/express/node_modules/connect/lib/middleware/directory.js @@ -0,0 +1,228 @@ + +/*! + * Connect - directory + * Copyright(c) 2011 Sencha Inc. + * Copyright(c) 2011 TJ Holowaychuk + * MIT Licensed + */ + +// TODO: icon / style for directories +// TODO: arrow key navigation +// TODO: make icons extensible + +/** + * Module dependencies. + */ + +var fs = require('fs') + , parse = require('url').parse + , path = require('path') + , normalize = path.normalize + , extname = path.extname + , join = path.join; + +/*! + * Icon cache. + */ + +var cache = {}; + +/** + * Directory: + * + * Serve directory listings with the given `root` path. + * + * Options: + * + * - `hidden` display hidden (dot) files. Defaults to false. + * - `icons` display icons. Defaults to false. + * - `filter` Apply this filter function to files. Defaults to false. + * + * @param {String} root + * @param {Object} options + * @return {Function} + * @api public + */ + +exports = module.exports = function directory(root, options){ + options = options || {}; + + // root required + if (!root) throw new Error('directory() root path required'); + var hidden = options.hidden + , icons = options.icons + , filter = options.filter + , root = normalize(root); + + return function directory(req, res, next) { + if ('GET' != req.method && 'HEAD' != req.method) return next(); + + var accept = req.headers.accept || 'text/plain' + , url = parse(req.url) + , dir = decodeURIComponent(url.pathname) + , path = normalize(join(root, dir)) + , originalUrl = parse(req.originalUrl) + , originalDir = decodeURIComponent(originalUrl.pathname) + , showUp = path != root && path != root + '/'; + + // null byte(s), bad request + if (~path.indexOf('\0')) return next(400); + + // malicious path, forbidden + if (0 != path.indexOf(root)) return next(403); + + // check if we have a directory + fs.stat(path, function(err, stat){ + if (err) return 'ENOENT' == err.code + ? next() + : next(err); + + if (!stat.isDirectory()) return next(); + + // fetch files + fs.readdir(path, function(err, files){ + if (err) return next(err); + if (!hidden) files = removeHidden(files); + if (filter) files = files.filter(filter); + files.sort(); + + // content-negotiation + for (var key in exports) { + if (~accept.indexOf(key) || ~accept.indexOf('*/*')) { + exports[key](req, res, files, next, originalDir, showUp, icons); + return; + } + } + + // not acceptable + next(406); + }); + }); + }; +}; + +/** + * Respond with text/html. + */ + +exports.html = function(req, res, files, next, dir, showUp, icons){ + fs.readFile(__dirname + '/../public/directory.html', 'utf8', function(err, str){ + if (err) return next(err); + fs.readFile(__dirname + '/../public/style.css', 'utf8', function(err, style){ + if (err) return next(err); + if (showUp) files.unshift('..'); + str = str + .replace('{style}', style) + .replace('{files}', html(files, dir, icons)) + .replace('{directory}', dir) + .replace('{linked-path}', htmlPath(dir)); + res.setHeader('Content-Type', 'text/html'); + res.setHeader('Content-Length', str.length); + res.end(str); + }); + }); +}; + +/** + * Respond with application/json. + */ + +exports.json = function(req, res, files){ + files = JSON.stringify(files); + res.setHeader('Content-Type', 'application/json'); + res.setHeader('Content-Length', files.length); + res.end(files); +}; + +/** + * Respond with text/plain. + */ + +exports.plain = function(req, res, files){ + files = files.join('\n') + '\n'; + res.setHeader('Content-Type', 'text/plain'); + res.setHeader('Content-Length', files.length); + res.end(files); +}; + +/** + * Map html `dir`, returning a linked path. + */ + +function htmlPath(dir) { + var curr = []; + return dir.split('/').map(function(part){ + curr.push(part); + return '' + part + ''; + }).join(' / '); +} + +/** + * Map html `files`, returning an html unordered list. + */ + +function html(files, dir, useIcons) { + return '
      ' + files.map(function(file){ + var icon = '' + , classes = []; + + if (useIcons && '..' != file) { + icon = icons[extname(file)] || icons.default; + icon = ''; + classes.push('icon'); + } + + return '
    • ' + + icon + file + '
    • '; + + }).join('\n') + '
    '; +} + +/** + * Load and cache the given `icon`. + * + * @param {String} icon + * @return {String} + * @api private + */ + +function load(icon) { + if (cache[icon]) return cache[icon]; + return cache[icon] = fs.readFileSync(__dirname + '/../public/icons/' + icon, 'base64'); +} + +/** + * Filter "hidden" `files`, aka files + * beginning with a `.`. + * + * @param {Array} files + * @return {Array} + * @api private + */ + +function removeHidden(files) { + return files.filter(function(file){ + return '.' != file[0]; + }); +} + +/** + * Icon map. + */ + +var icons = { + '.js': 'page_white_code_red.png' + , '.c': 'page_white_c.png' + , '.h': 'page_white_h.png' + , '.cc': 'page_white_cplusplus.png' + , '.php': 'page_white_php.png' + , '.rb': 'page_white_ruby.png' + , '.cpp': 'page_white_cplusplus.png' + , '.swf': 'page_white_flash.png' + , '.pdf': 'page_white_acrobat.png' + , 'default': 'page_white.png' +}; diff --git a/node_modules/express/node_modules/connect/lib/middleware/errorHandler.js b/node_modules/express/node_modules/connect/lib/middleware/errorHandler.js new file mode 100644 index 0000000..4a84edc --- /dev/null +++ b/node_modules/express/node_modules/connect/lib/middleware/errorHandler.js @@ -0,0 +1,86 @@ +/*! + * Connect - errorHandler + * Copyright(c) 2010 Sencha Inc. + * Copyright(c) 2011 TJ Holowaychuk + * MIT Licensed + */ + +/** + * Module dependencies. + */ + +var utils = require('../utils') + , fs = require('fs'); + +// environment + +var env = process.env.NODE_ENV || 'development'; + +/** + * Error handler: + * + * Development error handler, providing stack traces + * and error message responses for requests accepting text, html, + * or json. + * + * Text: + * + * By default, and when _text/plain_ is accepted a simple stack trace + * or error message will be returned. + * + * JSON: + * + * When _application/json_ is accepted, connect will respond with + * an object in the form of `{ "error": error }`. + * + * HTML: + * + * When accepted connect will output a nice html stack trace. + * + * @return {Function} + * @api public + */ + +exports = module.exports = function errorHandler(){ + return function errorHandler(err, req, res, next){ + if (err.status) res.statusCode = err.status; + if (res.statusCode < 400) res.statusCode = 500; + if ('test' != env) console.error(err.stack); + var accept = req.headers.accept || ''; + // html + if (~accept.indexOf('html')) { + fs.readFile(__dirname + '/../public/style.css', 'utf8', function(e, style){ + fs.readFile(__dirname + '/../public/error.html', 'utf8', function(e, html){ + var stack = (err.stack || '') + .split('\n').slice(1) + .map(function(v){ return '
  • ' + v + '
  • '; }).join(''); + html = html + .replace('{style}', style) + .replace('{stack}', stack) + .replace('{title}', exports.title) + .replace('{statusCode}', res.statusCode) + .replace(/\{error\}/g, utils.escape(err.toString())); + res.setHeader('Content-Type', 'text/html; charset=utf-8'); + res.end(html); + }); + }); + // json + } else if (~accept.indexOf('json')) { + var error = { message: err.message, stack: err.stack }; + for (var prop in err) error[prop] = err[prop]; + var json = JSON.stringify({ error: error }); + res.setHeader('Content-Type', 'application/json'); + res.end(json); + // plain text + } else { + res.writeHead(res.statusCode, { 'Content-Type': 'text/plain' }); + res.end(err.stack); + } + }; +}; + +/** + * Template title, framework authors may override this value. + */ + +exports.title = 'Connect'; diff --git a/node_modules/express/node_modules/connect/lib/middleware/favicon.js b/node_modules/express/node_modules/connect/lib/middleware/favicon.js new file mode 100644 index 0000000..c57bf34 --- /dev/null +++ b/node_modules/express/node_modules/connect/lib/middleware/favicon.js @@ -0,0 +1,81 @@ + +/*! + * Connect - favicon + * Copyright(c) 2010 Sencha Inc. + * Copyright(c) 2011 TJ Holowaychuk + * MIT Licensed + */ + +/** + * Module dependencies. + */ + +var fs = require('fs') + , utils = require('../utils'); + +/** + * Favicon: + * + * By default serves the connect favicon, or the favicon + * located by the given `path`. + * + * Options: + * + * - `maxAge` cache-control max-age directive, defaulting to 1 day + * + * Examples: + * + * Serve default favicon: + * + * connect() + * .use(connect.favicon()) + * + * Serve favicon before logging for brevity: + * + * connect() + * .use(connect.favicon()) + * .use(connect.logger('dev')) + * + * Serve custom favicon: + * + * connect() + * .use(connect.favicon('public/favicon.ico)) + * + * @param {String} path + * @param {Object} options + * @return {Function} + * @api public + */ + +module.exports = function favicon(path, options){ + var options = options || {} + , path = path || __dirname + '/../public/favicon.ico' + , maxAge = options.maxAge || 86400000 + , icon; // favicon cache + + return function favicon(req, res, next){ + if ('/favicon.ico' == req.url) { + if (icon) { + res.writeHead(200, icon.headers); + res.end(icon.body); + } else { + fs.readFile(path, function(err, buf){ + if (err) return next(err); + icon = { + headers: { + 'Content-Type': 'image/x-icon' + , 'Content-Length': buf.length + , 'ETag': '"' + utils.md5(buf) + '"' + , 'Cache-Control': 'public, max-age=' + (maxAge / 1000) + }, + body: buf + }; + res.writeHead(200, icon.headers); + res.end(icon.body); + }); + } + } else { + next(); + } + }; +}; diff --git a/node_modules/express/node_modules/connect/lib/middleware/json.js b/node_modules/express/node_modules/connect/lib/middleware/json.js new file mode 100644 index 0000000..200006b --- /dev/null +++ b/node_modules/express/node_modules/connect/lib/middleware/json.js @@ -0,0 +1,86 @@ + +/*! + * Connect - json + * Copyright(c) 2010 Sencha Inc. + * Copyright(c) 2011 TJ Holowaychuk + * MIT Licensed + */ + +/** + * Module dependencies. + */ + +var utils = require('../utils') + , _limit = require('./limit'); + +/** + * noop middleware. + */ + +function noop(req, res, next) { + next(); +} + +/** + * JSON: + * + * Parse JSON request bodies, providing the + * parsed object as `req.body`. + * + * Options: + * + * - `strict` when `false` anything `JSON.parse()` accepts will be parsed + * - `reviver` used as the second "reviver" argument for JSON.parse + * - `limit` byte limit disabled by default + * + * @param {Object} options + * @return {Function} + * @api public + */ + +exports = module.exports = function(options){ + var options = options || {} + , strict = options.strict !== false; + + var limit = options.limit + ? _limit(options.limit) + : noop; + + return function json(req, res, next) { + if (req._body) return next(); + req.body = req.body || {}; + + if (!utils.hasBody(req)) return next(); + + // check Content-Type + if ('application/json' != utils.mime(req)) return next(); + + // flag as parsed + req._body = true; + + // parse + limit(req, res, function(err){ + if (err) return next(err); + var buf = ''; + req.setEncoding('utf8'); + req.on('data', function(chunk){ buf += chunk }); + req.on('end', function(){ + var first = buf.trim()[0]; + + if (0 == buf.length) { + return next(400, 'invalid json, empty body'); + } + + if (strict && '{' != first && '[' != first) return next(400, 'invalid json'); + try { + req.body = JSON.parse(buf, options.reviver); + next(); + } catch (err){ + err.body = buf; + err.status = 400; + next(err); + } + }); + }); + } +}; diff --git a/node_modules/express/node_modules/connect/lib/middleware/limit.js b/node_modules/express/node_modules/connect/lib/middleware/limit.js new file mode 100644 index 0000000..614787d --- /dev/null +++ b/node_modules/express/node_modules/connect/lib/middleware/limit.js @@ -0,0 +1,55 @@ + +/*! + * Connect - limit + * Copyright(c) 2011 TJ Holowaychuk + * MIT Licensed + */ + +/** + * Module dependencies. + */ + +var utils = require('../utils'); + +/** + * Limit: + * + * Limit request bodies to the given size in `bytes`. + * + * A string representation of the bytesize may also be passed, + * for example "5mb", "200kb", "1gb", etc. + * + * connect() + * .use(connect.limit('5.5mb')) + * .use(handleImageUpload) + * + * @param {Number|String} bytes + * @return {Function} + * @api public + */ + +module.exports = function limit(bytes){ + if ('string' == typeof bytes) bytes = utils.parseBytes(bytes); + if ('number' != typeof bytes) throw new Error('limit() bytes required'); + return function limit(req, res, next){ + var received = 0 + , len = req.headers['content-length'] + ? parseInt(req.headers['content-length'], 10) + : null; + + // self-awareness + if (req._limit) return next(); + req._limit = true; + + // limit by content-length + if (len && len > bytes) return next(413); + + // limit + req.on('data', function(chunk){ + received += chunk.length; + if (received > bytes) req.destroy(); + }); + + next(); + }; +}; diff --git a/node_modules/express/node_modules/connect/lib/middleware/logger.js b/node_modules/express/node_modules/connect/lib/middleware/logger.js new file mode 100644 index 0000000..de72244 --- /dev/null +++ b/node_modules/express/node_modules/connect/lib/middleware/logger.js @@ -0,0 +1,339 @@ +/*! + * Connect - logger + * Copyright(c) 2010 Sencha Inc. + * Copyright(c) 2011 TJ Holowaychuk + * MIT Licensed + */ + +/** + * Module dependencies. + */ + +var bytes = require('bytes'); + +/*! + * Log buffer. + */ + +var buf = []; + +/*! + * Default log buffer duration. + */ + +var defaultBufferDuration = 1000; + +/** + * Logger: + * + * Log requests with the given `options` or a `format` string. + * + * Options: + * + * - `format` Format string, see below for tokens + * - `stream` Output stream, defaults to _stdout_ + * - `buffer` Buffer duration, defaults to 1000ms when _true_ + * - `immediate` Write log line on request instead of response (for response times) + * + * Tokens: + * + * - `:req[header]` ex: `:req[Accept]` + * - `:res[header]` ex: `:res[Content-Length]` + * - `:http-version` + * - `:response-time` + * - `:remote-addr` + * - `:date` + * - `:method` + * - `:url` + * - `:referrer` + * - `:user-agent` + * - `:status` + * + * Formats: + * + * Pre-defined formats that ship with connect: + * + * - `default` ':remote-addr - - [:date] ":method :url HTTP/:http-version" :status :res[content-length] ":referrer" ":user-agent"' + * - `short` ':remote-addr - :method :url HTTP/:http-version :status :res[content-length] - :response-time ms' + * - `tiny` ':method :url :status :res[content-length] - :response-time ms' + * - `dev` concise output colored by response status for development use + * + * Examples: + * + * connect.logger() // default + * connect.logger('short') + * connect.logger('tiny') + * connect.logger({ immediate: true, format: 'dev' }) + * connect.logger(':method :url - :referrer') + * connect.logger(':req[content-type] -> :res[content-type]') + * connect.logger(function(tokens, req, res){ return 'some format string' }) + * + * Defining Tokens: + * + * To define a token, simply invoke `connect.logger.token()` with the + * name and a callback function. The value returned is then available + * as ":type" in this case. + * + * connect.logger.token('type', function(req, res){ return req.headers['content-type']; }) + * + * Defining Formats: + * + * All default formats are defined this way, however it's public API as well: + * + * connect.logger.format('name', 'string or function') + * + * @param {String|Function|Object} format or options + * @return {Function} + * @api public + */ + +exports = module.exports = function logger(options) { + if ('object' == typeof options) { + options = options || {}; + } else if (options) { + options = { format: options }; + } else { + options = {}; + } + + // output on request instead of response + var immediate = options.immediate; + + // format name + var fmt = exports[options.format] || options.format || exports.default; + + // compile format + if ('function' != typeof fmt) fmt = compile(fmt); + + // options + var stream = options.stream || process.stdout + , buffer = options.buffer; + + // buffering support + if (buffer) { + var realStream = stream + , interval = 'number' == typeof buffer + ? buffer + : defaultBufferDuration; + + // flush interval + setInterval(function(){ + if (buf.length) { + realStream.write(buf.join('')); + buf.length = 0; + } + }, interval); + + // swap the stream + stream = { + write: function(str){ + buf.push(str); + } + }; + } + + return function logger(req, res, next) { + req._startTime = new Date; + + // immediate + if (immediate) { + var line = fmt(exports, req, res); + if (null == line) return; + stream.write(line + '\n'); + // proxy end to output logging + } else { + var end = res.end; + res.end = function(chunk, encoding){ + res.end = end; + res.end(chunk, encoding); + var line = fmt(exports, req, res); + if (null == line) return; + stream.write(line + '\n'); + }; + } + + + next(); + }; +}; + +/** + * Compile `fmt` into a function. + * + * @param {String} fmt + * @return {Function} + * @api private + */ + +function compile(fmt) { + fmt = fmt.replace(/"/g, '\\"'); + var js = ' return "' + fmt.replace(/:([-\w]{2,})(?:\[([^\]]+)\])?/g, function(_, name, arg){ + return '"\n + (tokens["' + name + '"](req, res, "' + arg + '") || "-") + "'; + }) + '";' + return new Function('tokens, req, res', js); +}; + +/** + * Define a token function with the given `name`, + * and callback `fn(req, res)`. + * + * @param {String} name + * @param {Function} fn + * @return {Object} exports for chaining + * @api public + */ + +exports.token = function(name, fn) { + exports[name] = fn; + return this; +}; + +/** + * Define a `fmt` with the given `name`. + * + * @param {String} name + * @param {String|Function} fmt + * @return {Object} exports for chaining + * @api public + */ + +exports.format = function(name, str){ + exports[name] = str; + return this; +}; + +/** + * Default format. + */ + +exports.format('default', ':remote-addr - - [:date] ":method :url HTTP/:http-version" :status :res[content-length] ":referrer" ":user-agent"'); + +/** + * Short format. + */ + +exports.format('short', ':remote-addr - :method :url HTTP/:http-version :status :res[content-length] - :response-time ms'); + +/** + * Tiny format. + */ + +exports.format('tiny', ':method :url :status :res[content-length] - :response-time ms'); + +/** + * dev (colored) + */ + +exports.format('dev', function(tokens, req, res){ + var status = res.statusCode + , len = parseInt(res.getHeader('Content-Length'), 10) + , color = 32; + + if (status >= 500) color = 31 + else if (status >= 400) color = 33 + else if (status >= 300) color = 36; + + len = isNaN(len) + ? '' + : len = ' - ' + bytes(len); + + return '\033[90m' + req.method + + ' ' + req.originalUrl + ' ' + + '\033[' + color + 'm' + res.statusCode + + ' \033[90m' + + (new Date - req._startTime) + + 'ms' + len + + '\033[0m'; +}); + +/** + * request url + */ + +exports.token('url', function(req){ + return req.originalUrl || req.url; +}); + +/** + * request method + */ + +exports.token('method', function(req){ + return req.method; +}); + +/** + * response time in milliseconds + */ + +exports.token('response-time', function(req){ + return new Date - req._startTime; +}); + +/** + * UTC date + */ + +exports.token('date', function(){ + return new Date().toUTCString(); +}); + +/** + * response status code + */ + +exports.token('status', function(req, res){ + return res.statusCode; +}); + +/** + * normalized referrer + */ + +exports.token('referrer', function(req){ + return req.headers['referer'] || req.headers['referrer']; +}); + +/** + * remote address + */ + +exports.token('remote-addr', function(req){ + if (req.ip) return req.ip; + var sock = req.socket; + if (sock.socket) return sock.socket.remoteAddress; + return sock.remoteAddress; +}); + +/** + * HTTP version + */ + +exports.token('http-version', function(req){ + return req.httpVersionMajor + '.' + req.httpVersionMinor; +}); + +/** + * UA string + */ + +exports.token('user-agent', function(req){ + return req.headers['user-agent']; +}); + +/** + * request header + */ + +exports.token('req', function(req, res, field){ + return req.headers[field.toLowerCase()]; +}); + +/** + * response header + */ + +exports.token('res', function(req, res, field){ + return (res._headers || {})[field.toLowerCase()]; +}); + diff --git a/node_modules/express/node_modules/connect/lib/middleware/methodOverride.js b/node_modules/express/node_modules/connect/lib/middleware/methodOverride.js new file mode 100644 index 0000000..aaf4014 --- /dev/null +++ b/node_modules/express/node_modules/connect/lib/middleware/methodOverride.js @@ -0,0 +1,40 @@ + +/*! + * Connect - methodOverride + * Copyright(c) 2010 Sencha Inc. + * Copyright(c) 2011 TJ Holowaychuk + * MIT Licensed + */ + +/** + * Method Override: + * + * Provides faux HTTP method support. + * + * Pass an optional `key` to use when checking for + * a method override, othewise defaults to _\_method_. + * The original method is available via `req.originalMethod`. + * + * @param {String} key + * @return {Function} + * @api public + */ + +module.exports = function methodOverride(key){ + key = key || "_method"; + return function methodOverride(req, res, next) { + req.originalMethod = req.originalMethod || req.method; + + // req.body + if (req.body && key in req.body) { + req.method = req.body[key].toUpperCase(); + delete req.body[key]; + // check X-HTTP-Method-Override + } else if (req.headers['x-http-method-override']) { + req.method = req.headers['x-http-method-override'].toUpperCase(); + } + + next(); + }; +}; + diff --git a/node_modules/express/node_modules/connect/lib/middleware/multipart.js b/node_modules/express/node_modules/connect/lib/middleware/multipart.js new file mode 100644 index 0000000..7b26fae --- /dev/null +++ b/node_modules/express/node_modules/connect/lib/middleware/multipart.js @@ -0,0 +1,133 @@ +/*! + * Connect - multipart + * Copyright(c) 2010 Sencha Inc. + * Copyright(c) 2011 TJ Holowaychuk + * MIT Licensed + */ + +/** + * Module dependencies. + */ + +var formidable = require('formidable') + , _limit = require('./limit') + , utils = require('../utils') + , qs = require('qs'); + +/** + * noop middleware. + */ + +function noop(req, res, next) { + next(); +} + +/** + * Multipart: + * + * Parse multipart/form-data request bodies, + * providing the parsed object as `req.body` + * and `req.files`. + * + * Configuration: + * + * The options passed are merged with [formidable](https://github.com/felixge/node-formidable)'s + * `IncomingForm` object, allowing you to configure the upload directory, + * size limits, etc. For example if you wish to change the upload dir do the following. + * + * app.use(connect.multipart({ uploadDir: path })); + * + * Options: + * + * - `limit` byte limit defaulting to none + * - `defer` defers processing and exposes the Formidable form object as `req.form`. + * `next()` is called without waiting for the form's "end" event. + * This option is useful if you need to bind to the "progress" event, for example. + * + * @param {Object} options + * @return {Function} + * @api public + */ + +exports = module.exports = function(options){ + options = options || {}; + + var limit = options.limit + ? _limit(options.limit) + : noop; + + return function multipart(req, res, next) { + if (req._body) return next(); + req.body = req.body || {}; + req.files = req.files || {}; + + if (!utils.hasBody(req)) return next(); + + // ignore GET + if ('GET' == req.method || 'HEAD' == req.method) return next(); + + // check Content-Type + if ('multipart/form-data' != utils.mime(req)) return next(); + + // flag as parsed + req._body = true; + + // parse + limit(req, res, function(err){ + if (err) return next(err); + + var form = new formidable.IncomingForm + , data = {} + , files = {} + , done; + + Object.keys(options).forEach(function(key){ + form[key] = options[key]; + }); + + function ondata(name, val, data){ + if (Array.isArray(data[name])) { + data[name].push(val); + } else if (data[name]) { + data[name] = [data[name], val]; + } else { + data[name] = val; + } + } + + form.on('field', function(name, val){ + ondata(name, val, data); + }); + + form.on('file', function(name, val){ + ondata(name, val, files); + }); + + form.on('error', function(err){ + if (!options.defer) { + err.status = 400; + next(err); + } + done = true; + }); + + form.on('end', function(){ + if (done) return; + try { + req.body = qs.parse(data); + req.files = qs.parse(files); + if (!options.defer) next(); + } catch (err) { + form.emit('error', err); + } + }); + + form.parse(req); + + if (options.defer) { + req.form = form; + next(); + } + }); + } +}; diff --git a/node_modules/express/node_modules/connect/lib/middleware/query.js b/node_modules/express/node_modules/connect/lib/middleware/query.js new file mode 100644 index 0000000..93fc5d3 --- /dev/null +++ b/node_modules/express/node_modules/connect/lib/middleware/query.js @@ -0,0 +1,46 @@ +/*! + * Connect - query + * Copyright(c) 2011 TJ Holowaychuk + * Copyright(c) 2011 Sencha Inc. + * MIT Licensed + */ + +/** + * Module dependencies. + */ + +var qs = require('qs') + , parse = require('../utils').parseUrl; + +/** + * Query: + * + * Automatically parse the query-string when available, + * populating the `req.query` object. + * + * Examples: + * + * connect() + * .use(connect.query()) + * .use(function(req, res){ + * res.end(JSON.stringify(req.query)); + * }); + * + * The `options` passed are provided to qs.parse function. + * + * @param {Object} options + * @return {Function} + * @api public + */ + +module.exports = function query(options){ + return function query(req, res, next){ + if (!req.query) { + req.query = ~req.url.indexOf('?') + ? qs.parse(parse(req).query, options) + : {}; + } + + next(); + }; +}; diff --git a/node_modules/express/node_modules/connect/lib/middleware/responseTime.js b/node_modules/express/node_modules/connect/lib/middleware/responseTime.js new file mode 100644 index 0000000..62abc04 --- /dev/null +++ b/node_modules/express/node_modules/connect/lib/middleware/responseTime.js @@ -0,0 +1,32 @@ + +/*! + * Connect - responseTime + * Copyright(c) 2011 TJ Holowaychuk + * MIT Licensed + */ + +/** + * Reponse time: + * + * Adds the `X-Response-Time` header displaying the response + * duration in milliseconds. + * + * @return {Function} + * @api public + */ + +module.exports = function responseTime(){ + return function(req, res, next){ + var start = new Date; + + if (res._responseTime) return next(); + res._responseTime = true; + + res.on('header', function(){ + var duration = new Date - start; + res.setHeader('X-Response-Time', duration + 'ms'); + }); + + next(); + }; +}; diff --git a/node_modules/express/node_modules/connect/lib/middleware/session.js b/node_modules/express/node_modules/connect/lib/middleware/session.js new file mode 100644 index 0000000..f97b8d6 --- /dev/null +++ b/node_modules/express/node_modules/connect/lib/middleware/session.js @@ -0,0 +1,352 @@ + +/*! + * Connect - session + * Copyright(c) 2010 Sencha Inc. + * Copyright(c) 2011 TJ Holowaychuk + * MIT Licensed + */ + +/** + * Module dependencies. + */ + +var Session = require('./session/session') + , debug = require('debug')('connect:session') + , MemoryStore = require('./session/memory') + , signature = require('cookie-signature') + , Cookie = require('./session/cookie') + , Store = require('./session/store') + , utils = require('./../utils') + , parse = utils.parseUrl + , crc32 = require('buffer-crc32'); + +// environment + +var env = process.env.NODE_ENV; + +/** + * Expose the middleware. + */ + +exports = module.exports = session; + +/** + * Expose constructors. + */ + +exports.Store = Store; +exports.Cookie = Cookie; +exports.Session = Session; +exports.MemoryStore = MemoryStore; + +/** + * Warning message for `MemoryStore` usage in production. + */ + +var warning = 'Warning: connection.session() MemoryStore is not\n' + + 'designed for a production environment, as it will leak\n' + + 'memory, and will not scale past a single process.'; + +/** + * Session: + * + * Setup session store with the given `options`. + * + * Session data is _not_ saved in the cookie itself, however + * cookies are used, so we must use the [cookieParser()](cookieParser.html) + * middleware _before_ `session()`. + * + * Examples: + * + * connect() + * .use(connect.cookieParser()) + * .use(connect.session({ secret: 'keyboard cat', key: 'sid', cookie: { secure: true }})) + * + * Options: + * + * - `key` cookie name defaulting to `connect.sid` + * - `store` session store instance + * - `secret` session cookie is signed with this secret to prevent tampering + * - `cookie` session cookie settings, defaulting to `{ path: '/', httpOnly: true, maxAge: null }` + * - `proxy` trust the reverse proxy when setting secure cookies (via "x-forwarded-proto") + * + * Cookie option: + * + * By default `cookie.maxAge` is `null`, meaning no "expires" parameter is set + * so the cookie becomes a browser-session cookie. When the user closes the + * browser the cookie (and session) will be removed. + * + * ## req.session + * + * To store or access session data, simply use the request property `req.session`, + * which is (generally) serialized as JSON by the store, so nested objects + * are typically fine. For example below is a user-specific view counter: + * + * connect() + * .use(connect.favicon()) + * .use(connect.cookieParser()) + * .use(connect.session({ secret: 'keyboard cat', cookie: { maxAge: 60000 }})) + * .use(function(req, res, next){ + * var sess = req.session; + * if (sess.views) { + * res.setHeader('Content-Type', 'text/html'); + * res.write('

    views: ' + sess.views + '

    '); + * res.write('

    expires in: ' + (sess.cookie.maxAge / 1000) + 's

    '); + * res.end(); + * sess.views++; + * } else { + * sess.views = 1; + * res.end('welcome to the session demo. refresh!'); + * } + * } + * )).listen(3000); + * + * ## Session#regenerate() + * + * To regenerate the session simply invoke the method, once complete + * a new SID and `Session` instance will be initialized at `req.session`. + * + * req.session.regenerate(function(err){ + * // will have a new session here + * }); + * + * ## Session#destroy() + * + * Destroys the session, removing `req.session`, will be re-generated next request. + * + * req.session.destroy(function(err){ + * // cannot access session here + * }); + * + * ## Session#reload() + * + * Reloads the session data. + * + * req.session.reload(function(err){ + * // session updated + * }); + * + * ## Session#save() + * + * Save the session. + * + * req.session.save(function(err){ + * // session saved + * }); + * + * ## Session#touch() + * + * Updates the `.maxAge` property. Typically this is + * not necessary to call, as the session middleware does this for you. + * + * ## Session#cookie + * + * Each session has a unique cookie object accompany it. This allows + * you to alter the session cookie per visitor. For example we can + * set `req.session.cookie.expires` to `false` to enable the cookie + * to remain for only the duration of the user-agent. + * + * ## Session#maxAge + * + * Alternatively `req.session.cookie.maxAge` will return the time + * remaining in milliseconds, which we may also re-assign a new value + * to adjust the `.expires` property appropriately. The following + * are essentially equivalent + * + * var hour = 3600000; + * req.session.cookie.expires = new Date(Date.now() + hour); + * req.session.cookie.maxAge = hour; + * + * For example when `maxAge` is set to `60000` (one minute), and 30 seconds + * has elapsed it will return `30000` until the current request has completed, + * at which time `req.session.touch()` is called to reset `req.session.maxAge` + * to its original value. + * + * req.session.cookie.maxAge; + * // => 30000 + * + * Session Store Implementation: + * + * Every session store _must_ implement the following methods + * + * - `.get(sid, callback)` + * - `.set(sid, session, callback)` + * - `.destroy(sid, callback)` + * + * Recommended methods include, but are not limited to: + * + * - `.length(callback)` + * - `.clear(callback)` + * + * For an example implementation view the [connect-redis](http://github.com/visionmedia/connect-redis) repo. + * + * @param {Object} options + * @return {Function} + * @api public + */ + +function session(options){ + var options = options || {} + , key = options.key || 'connect.sid' + , store = options.store || new MemoryStore + , cookie = options.cookie || {} + , trustProxy = options.proxy + , storeReady = true; + + // notify user that this store is not + // meant for a production environment + if ('production' == env && store instanceof MemoryStore) { + console.warn(warning); + } + + // generates the new session + store.generate = function(req){ + req.sessionID = utils.uid(24); + req.session = new Session(req); + req.session.cookie = new Cookie(cookie); + }; + + store.on('disconnect', function(){ storeReady = false; }); + store.on('connect', function(){ storeReady = true; }); + + return function session(req, res, next) { + // self-awareness + if (req.session) return next(); + + // Handle connection as if there is no session if + // the store has temporarily disconnected etc + if (!storeReady) return debug('store is disconnected'), next(); + + // pathname mismatch + if (0 != req.originalUrl.indexOf(cookie.path || '/')) return next(); + + // backwards compatibility for signed cookies + // req.secret is passed from the cookie parser middleware + var secret = options.secret || req.secret; + + // ensure secret is available or bail + if (!secret) throw new Error('`secret` option required for sessions'); + + // parse url + var originalHash + , originalId; + + // expose store + req.sessionStore = store; + + // grab the session cookie value and check the signature + var rawCookie = req.cookies[key]; + + // get signedCookies for backwards compat with signed cookies + var unsignedCookie = req.signedCookies[key]; + + if (!unsignedCookie && rawCookie) { + unsignedCookie = utils.parseSignedCookie(rawCookie, secret); + } + + // set-cookie + res.on('header', function(){ + if (!req.session) return; + var cookie = req.session.cookie + , proto = (req.headers['x-forwarded-proto'] || '').toLowerCase() + , tls = req.connection.encrypted || (trustProxy && 'https' == proto) + , secured = cookie.secure && tls + , isNew = unsignedCookie != req.sessionID; + + // only send secure cookies via https + if (cookie.secure && !secured) return debug('not secured'); + + // browser-session length cookie + if (null == cookie.expires) { + if (!isNew) return debug('already set browser-session cookie'); + // compare hashes and ids + } else if (originalHash == hash(req.session) && originalId == req.session.id) { + return debug('unmodified session'); + } + + var val = 's:' + signature.sign(req.sessionID, secret); + val = cookie.serialize(key, val); + debug('set-cookie %s', val); + res.setHeader('Set-Cookie', val); + }); + + // proxy end() to commit the session + var end = res.end; + res.end = function(data, encoding){ + res.end = end; + if (!req.session) return res.end(data, encoding); + debug('saving'); + req.session.resetMaxAge(); + req.session.save(function(){ + debug('saved'); + res.end(data, encoding); + }); + }; + + // generate the session + function generate() { + store.generate(req); + } + + // get the sessionID from the cookie + req.sessionID = unsignedCookie; + + // generate a session if the browser doesn't send a sessionID + if (!req.sessionID) { + debug('no SID sent, generating session'); + generate(); + next(); + return; + } + + // generate the session object + var pause = utils.pause(req); + debug('fetching %s', req.sessionID); + store.get(req.sessionID, function(err, sess){ + // proxy to resume() events + var _next = next; + next = function(err){ + _next(err); + pause.resume(); + }; + + // error handling + if (err) { + debug('error'); + if ('ENOENT' == err.code) { + generate(); + next(); + } else { + next(err); + } + // no session + } else if (!sess) { + debug('no session found'); + generate(); + next(); + // populate req.session + } else { + debug('session found'); + store.createSession(req, sess); + originalId = req.sessionID; + originalHash = hash(sess); + next(); + } + }); + }; +}; + +/** + * Hash the given `sess` object omitting changes + * to `.cookie`. + * + * @param {Object} sess + * @return {String} + * @api private + */ + +function hash(sess) { + return crc32.signed(JSON.stringify(sess, function(key, val){ + if ('cookie' != key) return val; + })); +} diff --git a/node_modules/express/node_modules/connect/lib/middleware/session/cookie.js b/node_modules/express/node_modules/connect/lib/middleware/session/cookie.js new file mode 100644 index 0000000..e8ff862 --- /dev/null +++ b/node_modules/express/node_modules/connect/lib/middleware/session/cookie.js @@ -0,0 +1,128 @@ + +/*! + * Connect - session - Cookie + * Copyright(c) 2010 Sencha Inc. + * Copyright(c) 2011 TJ Holowaychuk + * MIT Licensed + */ + +/** + * Module dependencies. + */ + +var utils = require('../../utils') + , cookie = require('cookie'); + +/** + * Initialize a new `Cookie` with the given `options`. + * + * @param {IncomingMessage} req + * @param {Object} options + * @api private + */ + +var Cookie = module.exports = function Cookie(options) { + this.path = '/'; + this.maxAge = null; + this.httpOnly = true; + if (options) utils.merge(this, options); + this.originalMaxAge = undefined == this.originalMaxAge + ? this.maxAge + : this.originalMaxAge; +}; + +/*! + * Prototype. + */ + +Cookie.prototype = { + + /** + * Set expires `date`. + * + * @param {Date} date + * @api public + */ + + set expires(date) { + this._expires = date; + this.originalMaxAge = this.maxAge; + }, + + /** + * Get expires `date`. + * + * @return {Date} + * @api public + */ + + get expires() { + return this._expires; + }, + + /** + * Set expires via max-age in `ms`. + * + * @param {Number} ms + * @api public + */ + + set maxAge(ms) { + this.expires = 'number' == typeof ms + ? new Date(Date.now() + ms) + : ms; + }, + + /** + * Get expires max-age in `ms`. + * + * @return {Number} + * @api public + */ + + get maxAge() { + return this.expires instanceof Date + ? this.expires.valueOf() - Date.now() + : this.expires; + }, + + /** + * Return cookie data object. + * + * @return {Object} + * @api private + */ + + get data() { + return { + originalMaxAge: this.originalMaxAge + , expires: this._expires + , secure: this.secure + , httpOnly: this.httpOnly + , domain: this.domain + , path: this.path + } + }, + + /** + * Return a serialized cookie string. + * + * @return {String} + * @api public + */ + + serialize: function(name, val){ + return cookie.serialize(name, val, this.data); + }, + + /** + * Return JSON representation of this cookie. + * + * @return {Object} + * @api private + */ + + toJSON: function(){ + return this.data; + } +}; diff --git a/node_modules/express/node_modules/connect/lib/middleware/session/memory.js b/node_modules/express/node_modules/connect/lib/middleware/session/memory.js new file mode 100644 index 0000000..fb93939 --- /dev/null +++ b/node_modules/express/node_modules/connect/lib/middleware/session/memory.js @@ -0,0 +1,129 @@ + +/*! + * Connect - session - MemoryStore + * Copyright(c) 2010 Sencha Inc. + * Copyright(c) 2011 TJ Holowaychuk + * MIT Licensed + */ + +/** + * Module dependencies. + */ + +var Store = require('./store'); + +/** + * Initialize a new `MemoryStore`. + * + * @api public + */ + +var MemoryStore = module.exports = function MemoryStore() { + this.sessions = {}; +}; + +/** + * Inherit from `Store.prototype`. + */ + +MemoryStore.prototype.__proto__ = Store.prototype; + +/** + * Attempt to fetch session by the given `sid`. + * + * @param {String} sid + * @param {Function} fn + * @api public + */ + +MemoryStore.prototype.get = function(sid, fn){ + var self = this; + process.nextTick(function(){ + var expires + , sess = self.sessions[sid]; + if (sess) { + sess = JSON.parse(sess); + expires = 'string' == typeof sess.cookie.expires + ? new Date(sess.cookie.expires) + : sess.cookie.expires; + if (!expires || new Date < expires) { + fn(null, sess); + } else { + self.destroy(sid, fn); + } + } else { + fn(); + } + }); +}; + +/** + * Commit the given `sess` object associated with the given `sid`. + * + * @param {String} sid + * @param {Session} sess + * @param {Function} fn + * @api public + */ + +MemoryStore.prototype.set = function(sid, sess, fn){ + var self = this; + process.nextTick(function(){ + self.sessions[sid] = JSON.stringify(sess); + fn && fn(); + }); +}; + +/** + * Destroy the session associated with the given `sid`. + * + * @param {String} sid + * @api public + */ + +MemoryStore.prototype.destroy = function(sid, fn){ + var self = this; + process.nextTick(function(){ + delete self.sessions[sid]; + fn && fn(); + }); +}; + +/** + * Invoke the given callback `fn` with all active sessions. + * + * @param {Function} fn + * @api public + */ + +MemoryStore.prototype.all = function(fn){ + var arr = [] + , keys = Object.keys(this.sessions); + for (var i = 0, len = keys.length; i < len; ++i) { + arr.push(this.sessions[keys[i]]); + } + fn(null, arr); +}; + +/** + * Clear all sessions. + * + * @param {Function} fn + * @api public + */ + +MemoryStore.prototype.clear = function(fn){ + this.sessions = {}; + fn && fn(); +}; + +/** + * Fetch number of sessions. + * + * @param {Function} fn + * @api public + */ + +MemoryStore.prototype.length = function(fn){ + fn(null, Object.keys(this.sessions).length); +}; diff --git a/node_modules/express/node_modules/connect/lib/middleware/session/session.js b/node_modules/express/node_modules/connect/lib/middleware/session/session.js new file mode 100644 index 0000000..0dd4b40 --- /dev/null +++ b/node_modules/express/node_modules/connect/lib/middleware/session/session.js @@ -0,0 +1,116 @@ + +/*! + * Connect - session - Session + * Copyright(c) 2010 Sencha Inc. + * Copyright(c) 2011 TJ Holowaychuk + * MIT Licensed + */ + +/** + * Module dependencies. + */ + +var utils = require('../../utils'); + +/** + * Create a new `Session` with the given request and `data`. + * + * @param {IncomingRequest} req + * @param {Object} data + * @api private + */ + +var Session = module.exports = function Session(req, data) { + Object.defineProperty(this, 'req', { value: req }); + Object.defineProperty(this, 'id', { value: req.sessionID }); + if ('object' == typeof data) utils.merge(this, data); +}; + +/** + * Update reset `.cookie.maxAge` to prevent + * the cookie from expiring when the + * session is still active. + * + * @return {Session} for chaining + * @api public + */ + +Session.prototype.touch = function(){ + return this.resetMaxAge(); +}; + +/** + * Reset `.maxAge` to `.originalMaxAge`. + * + * @return {Session} for chaining + * @api public + */ + +Session.prototype.resetMaxAge = function(){ + this.cookie.maxAge = this.cookie.originalMaxAge; + return this; +}; + +/** + * Save the session data with optional callback `fn(err)`. + * + * @param {Function} fn + * @return {Session} for chaining + * @api public + */ + +Session.prototype.save = function(fn){ + this.req.sessionStore.set(this.id, this, fn || function(){}); + return this; +}; + +/** + * Re-loads the session data _without_ altering + * the maxAge properties. Invokes the callback `fn(err)`, + * after which time if no exception has occurred the + * `req.session` property will be a new `Session` object, + * although representing the same session. + * + * @param {Function} fn + * @return {Session} for chaining + * @api public + */ + +Session.prototype.reload = function(fn){ + var req = this.req + , store = this.req.sessionStore; + store.get(this.id, function(err, sess){ + if (err) return fn(err); + if (!sess) return fn(new Error('failed to load session')); + store.createSession(req, sess); + fn(); + }); + return this; +}; + +/** + * Destroy `this` session. + * + * @param {Function} fn + * @return {Session} for chaining + * @api public + */ + +Session.prototype.destroy = function(fn){ + delete this.req.session; + this.req.sessionStore.destroy(this.id, fn); + return this; +}; + +/** + * Regenerate this request's session. + * + * @param {Function} fn + * @return {Session} for chaining + * @api public + */ + +Session.prototype.regenerate = function(fn){ + this.req.sessionStore.regenerate(this.req, fn); + return this; +}; diff --git a/node_modules/express/node_modules/connect/lib/middleware/session/store.js b/node_modules/express/node_modules/connect/lib/middleware/session/store.js new file mode 100644 index 0000000..54294cb --- /dev/null +++ b/node_modules/express/node_modules/connect/lib/middleware/session/store.js @@ -0,0 +1,84 @@ + +/*! + * Connect - session - Store + * Copyright(c) 2010 Sencha Inc. + * Copyright(c) 2011 TJ Holowaychuk + * MIT Licensed + */ + +/** + * Module dependencies. + */ + +var EventEmitter = require('events').EventEmitter + , Session = require('./session') + , Cookie = require('./cookie'); + +/** + * Initialize abstract `Store`. + * + * @api private + */ + +var Store = module.exports = function Store(options){}; + +/** + * Inherit from `EventEmitter.prototype`. + */ + +Store.prototype.__proto__ = EventEmitter.prototype; + +/** + * Re-generate the given requests's session. + * + * @param {IncomingRequest} req + * @return {Function} fn + * @api public + */ + +Store.prototype.regenerate = function(req, fn){ + var self = this; + this.destroy(req.sessionID, function(err){ + self.generate(req); + fn(err); + }); +}; + +/** + * Load a `Session` instance via the given `sid` + * and invoke the callback `fn(err, sess)`. + * + * @param {String} sid + * @param {Function} fn + * @api public + */ + +Store.prototype.load = function(sid, fn){ + var self = this; + this.get(sid, function(err, sess){ + if (err) return fn(err); + if (!sess) return fn(); + var req = { sessionID: sid, sessionStore: self }; + sess = self.createSession(req, sess); + fn(null, sess); + }); +}; + +/** + * Create session from JSON `sess` data. + * + * @param {IncomingRequest} req + * @param {Object} sess + * @return {Session} + * @api private + */ + +Store.prototype.createSession = function(req, sess){ + var expires = sess.cookie.expires + , orig = sess.cookie.originalMaxAge; + sess.cookie = new Cookie(sess.cookie); + if ('string' == typeof expires) sess.cookie.expires = new Date(expires); + sess.cookie.originalMaxAge = orig; + req.session = new Session(req, sess); + return req.session; +}; diff --git a/node_modules/express/node_modules/connect/lib/middleware/static.js b/node_modules/express/node_modules/connect/lib/middleware/static.js new file mode 100644 index 0000000..bb29d07 --- /dev/null +++ b/node_modules/express/node_modules/connect/lib/middleware/static.js @@ -0,0 +1,94 @@ + +/*! + * Connect - static + * Copyright(c) 2010 Sencha Inc. + * Copyright(c) 2011 TJ Holowaychuk + * MIT Licensed + */ + +/** + * Module dependencies. + */ + +var send = require('send') + , utils = require('../utils') + , parse = utils.parseUrl + , url = require('url'); + +/** + * Static: + * + * Static file server with the given `root` path. + * + * Examples: + * + * var oneDay = 86400000; + * + * connect() + * .use(connect.static(__dirname + '/public')) + * + * connect() + * .use(connect.static(__dirname + '/public', { maxAge: oneDay })) + * + * Options: + * + * - `maxAge` Browser cache maxAge in milliseconds. defaults to 0 + * - `hidden` Allow transfer of hidden files. defaults to false + * - `redirect` Redirect to trailing "/" when the pathname is a dir. defaults to true + * + * @param {String} root + * @param {Object} options + * @return {Function} + * @api public + */ + +exports = module.exports = function static(root, options){ + options = options || {}; + + // root required + if (!root) throw new Error('static() root path required'); + + // default redirect + var redirect = false !== options.redirect; + + return function static(req, res, next) { + if ('GET' != req.method && 'HEAD' != req.method) return next(); + var path = parse(req).pathname; + var pause = utils.pause(req); + + function resume() { + next(); + pause.resume(); + } + + function directory() { + if (!redirect) return resume(); + var pathname = url.parse(req.originalUrl).pathname; + res.statusCode = 301; + res.setHeader('Location', pathname + '/'); + res.end('Redirecting to ' + utils.escape(pathname) + '/'); + } + + function error(err) { + if (404 == err.status) return resume(); + next(err); + } + + send(req, path) + .maxage(options.maxAge || 0) + .root(root) + .hidden(options.hidden) + .on('error', error) + .on('directory', directory) + .pipe(res); + }; +}; + +/** + * Expose mime module. + * + * If you wish to extend the mime table use this + * reference to the "mime" module in the npm registry. + */ + +exports.mime = send.mime; diff --git a/node_modules/express/node_modules/connect/lib/middleware/staticCache.js b/node_modules/express/node_modules/connect/lib/middleware/staticCache.js new file mode 100644 index 0000000..7354a8f --- /dev/null +++ b/node_modules/express/node_modules/connect/lib/middleware/staticCache.js @@ -0,0 +1,231 @@ + +/*! + * Connect - staticCache + * Copyright(c) 2011 Sencha Inc. + * MIT Licensed + */ + +/** + * Module dependencies. + */ + +var utils = require('../utils') + , Cache = require('../cache') + , fresh = require('fresh'); + +/** + * Static cache: + * + * Enables a memory cache layer on top of + * the `static()` middleware, serving popular + * static files. + * + * By default a maximum of 128 objects are + * held in cache, with a max of 256k each, + * totalling ~32mb. + * + * A Least-Recently-Used (LRU) cache algo + * is implemented through the `Cache` object, + * simply rotating cache objects as they are + * hit. This means that increasingly popular + * objects maintain their positions while + * others get shoved out of the stack and + * garbage collected. + * + * Benchmarks: + * + * static(): 2700 rps + * node-static: 5300 rps + * static() + staticCache(): 7500 rps + * + * Options: + * + * - `maxObjects` max cache objects [128] + * - `maxLength` max cache object length 256kb + * + * @param {Object} options + * @return {Function} + * @api public + */ + +module.exports = function staticCache(options){ + var options = options || {} + , cache = new Cache(options.maxObjects || 128) + , maxlen = options.maxLength || 1024 * 256; + + console.warn('connect.staticCache() is deprecated and will be removed in 3.0'); + console.warn('use varnish or similar reverse proxy caches.'); + + return function staticCache(req, res, next){ + var key = cacheKey(req) + , ranges = req.headers.range + , hasCookies = req.headers.cookie + , hit = cache.get(key); + + // cache static + // TODO: change from staticCache() -> cache() + // and make this work for any request + req.on('static', function(stream){ + var headers = res._headers + , cc = utils.parseCacheControl(headers['cache-control'] || '') + , contentLength = headers['content-length'] + , hit; + + // dont cache set-cookie responses + if (headers['set-cookie']) return hasCookies = true; + + // dont cache when cookies are present + if (hasCookies) return; + + // ignore larger files + if (!contentLength || contentLength > maxlen) return; + + // don't cache partial files + if (headers['content-range']) return; + + // dont cache items we shouldn't be + // TODO: real support for must-revalidate / no-cache + if ( cc['no-cache'] + || cc['no-store'] + || cc['private'] + || cc['must-revalidate']) return; + + // if already in cache then validate + if (hit = cache.get(key)){ + if (headers.etag == hit[0].etag) { + hit[0].date = new Date; + return; + } else { + cache.remove(key); + } + } + + // validation notifiactions don't contain a steam + if (null == stream) return; + + // add the cache object + var arr = []; + + // store the chunks + stream.on('data', function(chunk){ + arr.push(chunk); + }); + + // flag it as complete + stream.on('end', function(){ + var cacheEntry = cache.add(key); + delete headers['x-cache']; // Clean up (TODO: others) + cacheEntry.push(200); + cacheEntry.push(headers); + cacheEntry.push.apply(cacheEntry, arr); + }); + }); + + if (req.method == 'GET' || req.method == 'HEAD') { + if (ranges) { + next(); + } else if (!hasCookies && hit && !mustRevalidate(req, hit)) { + res.setHeader('X-Cache', 'HIT'); + respondFromCache(req, res, hit); + } else { + res.setHeader('X-Cache', 'MISS'); + next(); + } + } else { + next(); + } + } +}; + +/** + * Respond with the provided cached value. + * TODO: Assume 200 code, that's iffy. + * + * @param {Object} req + * @param {Object} res + * @param {Object} cacheEntry + * @return {String} + * @api private + */ + +function respondFromCache(req, res, cacheEntry) { + var status = cacheEntry[0] + , headers = utils.merge({}, cacheEntry[1]) + , content = cacheEntry.slice(2); + + headers.age = (new Date - new Date(headers.date)) / 1000 || 0; + + switch (req.method) { + case 'HEAD': + res.writeHead(status, headers); + res.end(); + break; + case 'GET': + if (utils.conditionalGET(req) && fresh(req.headers, headers)) { + headers['content-length'] = 0; + res.writeHead(304, headers); + res.end(); + } else { + res.writeHead(status, headers); + + function write() { + while (content.length) { + if (false === res.write(content.shift())) { + res.once('drain', write); + return; + } + } + res.end(); + } + + write(); + } + break; + default: + // This should never happen. + res.writeHead(500, ''); + res.end(); + } +} + +/** + * Determine whether or not a cached value must be revalidated. + * + * @param {Object} req + * @param {Object} cacheEntry + * @return {String} + * @api private + */ + +function mustRevalidate(req, cacheEntry) { + var cacheHeaders = cacheEntry[1] + , reqCC = utils.parseCacheControl(req.headers['cache-control'] || '') + , cacheCC = utils.parseCacheControl(cacheHeaders['cache-control'] || '') + , cacheAge = (new Date - new Date(cacheHeaders.date)) / 1000 || 0; + + if ( cacheCC['no-cache'] + || cacheCC['must-revalidate'] + || cacheCC['proxy-revalidate']) return true; + + if (reqCC['no-cache']) return true; + + if (null != reqCC['max-age']) return reqCC['max-age'] < cacheAge; + + if (null != cacheCC['max-age']) return cacheCC['max-age'] < cacheAge; + + return false; +} + +/** + * The key to use in the cache. For now, this is the URL path and query. + * + * 'http://example.com?key=value' -> '/?key=value' + * + * @param {Object} req + * @return {String} + * @api private + */ + +function cacheKey(req) { + return utils.parseUrl(req).path; +} diff --git a/node_modules/express/node_modules/connect/lib/middleware/timeout.js b/node_modules/express/node_modules/connect/lib/middleware/timeout.js new file mode 100644 index 0000000..a6dc087 --- /dev/null +++ b/node_modules/express/node_modules/connect/lib/middleware/timeout.js @@ -0,0 +1,56 @@ + +/*! + * Connect - timeout + * Ported from https://github.com/LearnBoost/connect-timeout + * MIT Licensed + */ + +/** + * Module dependencies. + */ + +var debug = require('debug')('connect:timeout'); + +/** + * Timeout: + * + * Times out the request in `ms`, defaulting to `5000`. The + * method `req.clearTimeout()` is added to revert this behaviour + * programmatically within your application's middleware, routes, etc. + * + * The timeout error is passed to `next()` so that you may customize + * the response behaviour. This error has the `.timeout` property as + * well as `.status == 408`. + * + * @param {Number} ms + * @return {Function} + * @api public + */ + +module.exports = function timeout(ms) { + ms = ms || 5000; + + return function(req, res, next) { + var id = setTimeout(function(){ + req.emit('timeout', ms); + }, ms); + + req.on('timeout', function(){ + if (req.headerSent) return debug('response started, cannot timeout'); + var err = new Error('Response timeout'); + err.timeout = ms; + err.status = 503; + next(err); + }); + + req.clearTimeout = function(){ + clearTimeout(id); + }; + + res.on('header', function(){ + clearTimeout(id); + }); + + next(); + }; +}; diff --git a/node_modules/express/node_modules/connect/lib/middleware/urlencoded.js b/node_modules/express/node_modules/connect/lib/middleware/urlencoded.js new file mode 100644 index 0000000..cceafc0 --- /dev/null +++ b/node_modules/express/node_modules/connect/lib/middleware/urlencoded.js @@ -0,0 +1,78 @@ + +/*! + * Connect - urlencoded + * Copyright(c) 2010 Sencha Inc. + * Copyright(c) 2011 TJ Holowaychuk + * MIT Licensed + */ + +/** + * Module dependencies. + */ + +var utils = require('../utils') + , _limit = require('./limit') + , qs = require('qs'); + +/** + * noop middleware. + */ + +function noop(req, res, next) { + next(); +} + +/** + * Urlencoded: + * + * Parse x-ww-form-urlencoded request bodies, + * providing the parsed object as `req.body`. + * + * Options: + * + * - `limit` byte limit disabled by default + * + * @param {Object} options + * @return {Function} + * @api public + */ + +exports = module.exports = function(options){ + options = options || {}; + + var limit = options.limit + ? _limit(options.limit) + : noop; + + return function urlencoded(req, res, next) { + if (req._body) return next(); + req.body = req.body || {}; + + if (!utils.hasBody(req)) return next(); + + // check Content-Type + if ('application/x-www-form-urlencoded' != utils.mime(req)) return next(); + + // flag as parsed + req._body = true; + + // parse + limit(req, res, function(err){ + if (err) return next(err); + var buf = ''; + req.setEncoding('utf8'); + req.on('data', function(chunk){ buf += chunk }); + req.on('end', function(){ + try { + req.body = buf.length + ? qs.parse(buf, options) + : {}; + next(); + } catch (err){ + err.body = buf; + next(err); + } + }); + }); + } +}; diff --git a/node_modules/express/node_modules/connect/lib/middleware/vhost.js b/node_modules/express/node_modules/connect/lib/middleware/vhost.js new file mode 100644 index 0000000..897a9d8 --- /dev/null +++ b/node_modules/express/node_modules/connect/lib/middleware/vhost.js @@ -0,0 +1,40 @@ + +/*! + * Connect - vhost + * Copyright(c) 2010 Sencha Inc. + * Copyright(c) 2011 TJ Holowaychuk + * MIT Licensed + */ + +/** + * Vhost: + * + * Setup vhost for the given `hostname` and `server`. + * + * connect() + * .use(connect.vhost('foo.com', fooApp)) + * .use(connect.vhost('bar.com', barApp)) + * .use(connect.vhost('*.com', mainApp)) + * + * The `server` may be a Connect server or + * a regular Node `http.Server`. + * + * @param {String} hostname + * @param {Server} server + * @return {Function} + * @api public + */ + +module.exports = function vhost(hostname, server){ + if (!hostname) throw new Error('vhost hostname required'); + if (!server) throw new Error('vhost server required'); + var regexp = new RegExp('^' + hostname.replace(/[*]/g, '(.*?)') + '$', 'i'); + if (server.onvhost) server.onvhost(hostname); + return function vhost(req, res, next){ + if (!req.headers.host) return next(); + var host = req.headers.host.split(':')[0]; + if (!regexp.test(host)) return next(); + if ('function' == typeof server) return server(req, res, next); + server.emit('request', req, res); + }; +}; diff --git a/node_modules/express/node_modules/connect/lib/patch.js b/node_modules/express/node_modules/connect/lib/patch.js new file mode 100644 index 0000000..7cf0012 --- /dev/null +++ b/node_modules/express/node_modules/connect/lib/patch.js @@ -0,0 +1,79 @@ + +/*! + * Connect + * Copyright(c) 2011 TJ Holowaychuk + * MIT Licensed + */ + +/** + * Module dependencies. + */ + +var http = require('http') + , res = http.ServerResponse.prototype + , setHeader = res.setHeader + , _renderHeaders = res._renderHeaders + , writeHead = res.writeHead; + +// apply only once + +if (!res._hasConnectPatch) { + + /** + * Provide a public "header sent" flag + * until node does. + * + * @return {Boolean} + * @api public + */ + + res.__defineGetter__('headerSent', function(){ + return this._header; + }); + + /** + * Set header `field` to `val`, special-casing + * the `Set-Cookie` field for multiple support. + * + * @param {String} field + * @param {String} val + * @api public + */ + + res.setHeader = function(field, val){ + var key = field.toLowerCase() + , prev; + + // special-case Set-Cookie + if (this._headers && 'set-cookie' == key) { + if (prev = this.getHeader(field)) { + val = Array.isArray(prev) + ? prev.concat(val) + : [prev, val]; + } + // charset + } else if ('content-type' == key && this.charset) { + val += '; charset=' + this.charset; + } + + return setHeader.call(this, field, val); + }; + + /** + * Proxy to emit "header" event. + */ + + res._renderHeaders = function(){ + if (!this._emittedHeader) this.emit('header'); + this._emittedHeader = true; + return _renderHeaders.call(this); + }; + + res.writeHead = function(){ + if (!this._emittedHeader) this.emit('header'); + this._emittedHeader = true; + return writeHead.apply(this, arguments); + }; + + res._hasConnectPatch = true; +} diff --git a/node_modules/express/node_modules/connect/lib/proto.js b/node_modules/express/node_modules/connect/lib/proto.js new file mode 100644 index 0000000..889c237 --- /dev/null +++ b/node_modules/express/node_modules/connect/lib/proto.js @@ -0,0 +1,239 @@ + +/*! + * Connect - HTTPServer + * Copyright(c) 2010 Sencha Inc. + * Copyright(c) 2011 TJ Holowaychuk + * MIT Licensed + */ + +/** + * Module dependencies. + */ + +var http = require('http') + , utils = require('./utils') + , debug = require('debug')('connect:dispatcher'); + +// prototype + +var app = module.exports = {}; + +// environment + +var env = process.env.NODE_ENV || 'development'; + +/** + * Utilize the given middleware `handle` to the given `route`, + * defaulting to _/_. This "route" is the mount-point for the + * middleware, when given a value other than _/_ the middleware + * is only effective when that segment is present in the request's + * pathname. + * + * For example if we were to mount a function at _/admin_, it would + * be invoked on _/admin_, and _/admin/settings_, however it would + * not be invoked for _/_, or _/posts_. + * + * Examples: + * + * var app = connect(); + * app.use(connect.favicon()); + * app.use(connect.logger()); + * app.use(connect.static(__dirname + '/public')); + * + * If we wanted to prefix static files with _/public_, we could + * "mount" the `static()` middleware: + * + * app.use('/public', connect.static(__dirname + '/public')); + * + * This api is chainable, so the following is valid: + * + * connect() + * .use(connect.favicon()) + * .use(connect.logger()) + * .use(connect.static(__dirname + '/public')) + * .listen(3000); + * + * @param {String|Function|Server} route, callback or server + * @param {Function|Server} callback or server + * @return {Server} for chaining + * @api public + */ + +app.use = function(route, fn){ + // default route to '/' + if ('string' != typeof route) { + fn = route; + route = '/'; + } + + // wrap sub-apps + if ('function' == typeof fn.handle) { + var server = fn; + fn.route = route; + fn = function(req, res, next){ + server.handle(req, res, next); + }; + } + + // wrap vanilla http.Servers + if (fn instanceof http.Server) { + fn = fn.listeners('request')[0]; + } + + // strip trailing slash + if ('/' == route[route.length - 1]) { + route = route.slice(0, -1); + } + + // add the middleware + debug('use %s %s', route || '/', fn.name || 'anonymous'); + this.stack.push({ route: route, handle: fn }); + + return this; +}; + +/** + * Handle server requests, punting them down + * the middleware stack. + * + * @api private + */ + +app.handle = function(req, res, out) { + var stack = this.stack + , fqdn = ~req.url.indexOf('://') + , removed = '' + , slashAdded = false + , index = 0; + + function next(err, msg) { + var layer, path, status, c; + + if (slashAdded) { + req.url = req.url.substr(1); + slashAdded = false; + } + + req.url = removed + req.url; + req.originalUrl = req.originalUrl || req.url; + removed = ''; + + // next(status, msg) support + if (typeof err === 'number') { + var status = err; + var name = http.STATUS_CODES[status]; + err = new Error(msg || name); + err.name = name; + err.status = status; + } + + // next callback + layer = stack[index++]; + + // all done + if (!layer || res.headerSent) { + // delegate to parent + if (out) return out(err); + + // unhandled error + if (err) { + // default to 500 + if (res.statusCode < 400) res.statusCode = 500; + debug('default %s', res.statusCode); + + // respect err.status + if (err.status) res.statusCode = err.status; + + // production gets a basic error message + var msg = 'production' == env + ? http.STATUS_CODES[res.statusCode] + : err.stack || err.toString(); + + // log to stderr in a non-test env + if ('test' != env) console.error(err.stack || err.toString()); + if (res.headerSent) return req.socket.destroy(); + res.setHeader('Content-Type', 'text/plain'); + res.setHeader('Content-Length', Buffer.byteLength(msg)); + if ('HEAD' == req.method) return res.end(); + res.end(msg); + } else { + debug('default 404'); + res.statusCode = 404; + res.setHeader('Content-Type', 'text/plain'); + if ('HEAD' == req.method) return res.end(); + res.end('Cannot ' + req.method + ' ' + utils.escape(req.originalUrl)); + } + return; + } + + try { + path = utils.parseUrl(req).pathname; + if (undefined == path) path = '/'; + + // skip this layer if the route doesn't match. + if (0 != path.toLowerCase().indexOf(layer.route.toLowerCase())) return next(err); + + c = path[layer.route.length]; + if (c && '/' != c && '.' != c) return next(err); + + // Call the layer handler + // Trim off the part of the url that matches the route + removed = layer.route; + req.url = req.url.substr(removed.length); + + // Ensure leading slash + if (!fqdn && '/' != req.url[0]) { + req.url = '/' + req.url; + slashAdded = true; + } + + debug('%s', layer.handle.name || 'anonymous'); + var arity = layer.handle.length; + if (err) { + if (arity === 4) { + layer.handle(err, req, res, next); + } else { + next(err); + } + } else if (arity < 4) { + layer.handle(req, res, next); + } else { + next(); + } + } catch (e) { + next(e); + } + } + next(); +}; + +/** + * Listen for connections. + * + * This method takes the same arguments + * as node's `http.Server#listen()`. + * + * HTTP and HTTPS: + * + * If you run your application both as HTTP + * and HTTPS you may wrap them individually, + * since your Connect "server" is really just + * a JavaScript `Function`. + * + * var connect = require('connect') + * , http = require('http') + * , https = require('https'); + * + * var app = connect(); + * + * http.createServer(app).listen(80); + * https.createServer(options, app).listen(443); + * + * @return {http.Server} + * @api public + */ + +app.listen = function(){ + var server = http.createServer(this); + return server.listen.apply(server, arguments); +}; diff --git a/node_modules/express/node_modules/connect/lib/public/directory.html b/node_modules/express/node_modules/connect/lib/public/directory.html new file mode 100644 index 0000000..2d63704 --- /dev/null +++ b/node_modules/express/node_modules/connect/lib/public/directory.html @@ -0,0 +1,81 @@ + + + + + listing directory {directory} + + + + + +
    +

    {linked-path}

    + {files} +
    + + \ No newline at end of file diff --git a/node_modules/express/node_modules/connect/lib/public/error.html b/node_modules/express/node_modules/connect/lib/public/error.html new file mode 100644 index 0000000..a6d3faf --- /dev/null +++ b/node_modules/express/node_modules/connect/lib/public/error.html @@ -0,0 +1,14 @@ + + + + {error} + + + +
    +

    {title}

    +

    {statusCode} {error}

    +
      {stack}
    +
    + + diff --git a/node_modules/express/node_modules/connect/lib/public/favicon.ico b/node_modules/express/node_modules/connect/lib/public/favicon.ico new file mode 100644 index 0000000..895fc96 Binary files /dev/null and b/node_modules/express/node_modules/connect/lib/public/favicon.ico differ diff --git a/node_modules/express/node_modules/connect/lib/public/icons/page.png b/node_modules/express/node_modules/connect/lib/public/icons/page.png new file mode 100644 index 0000000..03ddd79 Binary files /dev/null and b/node_modules/express/node_modules/connect/lib/public/icons/page.png differ diff --git a/node_modules/express/node_modules/connect/lib/public/icons/page_add.png b/node_modules/express/node_modules/connect/lib/public/icons/page_add.png new file mode 100644 index 0000000..d5bfa07 Binary files /dev/null and b/node_modules/express/node_modules/connect/lib/public/icons/page_add.png differ diff --git a/node_modules/express/node_modules/connect/lib/public/icons/page_attach.png b/node_modules/express/node_modules/connect/lib/public/icons/page_attach.png new file mode 100644 index 0000000..89ee2da Binary files /dev/null and b/node_modules/express/node_modules/connect/lib/public/icons/page_attach.png differ diff --git a/node_modules/express/node_modules/connect/lib/public/icons/page_code.png b/node_modules/express/node_modules/connect/lib/public/icons/page_code.png new file mode 100644 index 0000000..f7ea904 Binary files /dev/null and b/node_modules/express/node_modules/connect/lib/public/icons/page_code.png differ diff --git a/node_modules/express/node_modules/connect/lib/public/icons/page_copy.png b/node_modules/express/node_modules/connect/lib/public/icons/page_copy.png new file mode 100644 index 0000000..195dc6d Binary files /dev/null and b/node_modules/express/node_modules/connect/lib/public/icons/page_copy.png differ diff --git a/node_modules/express/node_modules/connect/lib/public/icons/page_delete.png b/node_modules/express/node_modules/connect/lib/public/icons/page_delete.png new file mode 100644 index 0000000..3141467 Binary files /dev/null and b/node_modules/express/node_modules/connect/lib/public/icons/page_delete.png differ diff --git a/node_modules/express/node_modules/connect/lib/public/icons/page_edit.png b/node_modules/express/node_modules/connect/lib/public/icons/page_edit.png new file mode 100644 index 0000000..046811e Binary files /dev/null and b/node_modules/express/node_modules/connect/lib/public/icons/page_edit.png differ diff --git a/node_modules/express/node_modules/connect/lib/public/icons/page_error.png b/node_modules/express/node_modules/connect/lib/public/icons/page_error.png new file mode 100644 index 0000000..f07f449 Binary files /dev/null and b/node_modules/express/node_modules/connect/lib/public/icons/page_error.png differ diff --git a/node_modules/express/node_modules/connect/lib/public/icons/page_excel.png b/node_modules/express/node_modules/connect/lib/public/icons/page_excel.png new file mode 100644 index 0000000..eb6158e Binary files /dev/null and b/node_modules/express/node_modules/connect/lib/public/icons/page_excel.png differ diff --git a/node_modules/express/node_modules/connect/lib/public/icons/page_find.png b/node_modules/express/node_modules/connect/lib/public/icons/page_find.png new file mode 100644 index 0000000..2f19388 Binary files /dev/null and b/node_modules/express/node_modules/connect/lib/public/icons/page_find.png differ diff --git a/node_modules/express/node_modules/connect/lib/public/icons/page_gear.png b/node_modules/express/node_modules/connect/lib/public/icons/page_gear.png new file mode 100644 index 0000000..8e83281 Binary files /dev/null and b/node_modules/express/node_modules/connect/lib/public/icons/page_gear.png differ diff --git a/node_modules/express/node_modules/connect/lib/public/icons/page_go.png b/node_modules/express/node_modules/connect/lib/public/icons/page_go.png new file mode 100644 index 0000000..80fe1ed Binary files /dev/null and b/node_modules/express/node_modules/connect/lib/public/icons/page_go.png differ diff --git a/node_modules/express/node_modules/connect/lib/public/icons/page_green.png b/node_modules/express/node_modules/connect/lib/public/icons/page_green.png new file mode 100644 index 0000000..de8e003 Binary files /dev/null and b/node_modules/express/node_modules/connect/lib/public/icons/page_green.png differ diff --git a/node_modules/express/node_modules/connect/lib/public/icons/page_key.png b/node_modules/express/node_modules/connect/lib/public/icons/page_key.png new file mode 100644 index 0000000..d6626cb Binary files /dev/null and b/node_modules/express/node_modules/connect/lib/public/icons/page_key.png differ diff --git a/node_modules/express/node_modules/connect/lib/public/icons/page_lightning.png b/node_modules/express/node_modules/connect/lib/public/icons/page_lightning.png new file mode 100644 index 0000000..7e56870 Binary files /dev/null and b/node_modules/express/node_modules/connect/lib/public/icons/page_lightning.png differ diff --git a/node_modules/express/node_modules/connect/lib/public/icons/page_link.png b/node_modules/express/node_modules/connect/lib/public/icons/page_link.png new file mode 100644 index 0000000..312eab0 Binary files /dev/null and b/node_modules/express/node_modules/connect/lib/public/icons/page_link.png differ diff --git a/node_modules/express/node_modules/connect/lib/public/icons/page_paintbrush.png b/node_modules/express/node_modules/connect/lib/public/icons/page_paintbrush.png new file mode 100644 index 0000000..246a2f0 Binary files /dev/null and b/node_modules/express/node_modules/connect/lib/public/icons/page_paintbrush.png differ diff --git a/node_modules/express/node_modules/connect/lib/public/icons/page_paste.png b/node_modules/express/node_modules/connect/lib/public/icons/page_paste.png new file mode 100644 index 0000000..968f073 Binary files /dev/null and b/node_modules/express/node_modules/connect/lib/public/icons/page_paste.png differ diff --git a/node_modules/express/node_modules/connect/lib/public/icons/page_red.png b/node_modules/express/node_modules/connect/lib/public/icons/page_red.png new file mode 100644 index 0000000..0b18247 Binary files /dev/null and b/node_modules/express/node_modules/connect/lib/public/icons/page_red.png differ diff --git a/node_modules/express/node_modules/connect/lib/public/icons/page_refresh.png b/node_modules/express/node_modules/connect/lib/public/icons/page_refresh.png new file mode 100644 index 0000000..cf347c7 Binary files /dev/null and b/node_modules/express/node_modules/connect/lib/public/icons/page_refresh.png differ diff --git a/node_modules/express/node_modules/connect/lib/public/icons/page_save.png b/node_modules/express/node_modules/connect/lib/public/icons/page_save.png new file mode 100644 index 0000000..caea546 Binary files /dev/null and b/node_modules/express/node_modules/connect/lib/public/icons/page_save.png differ diff --git a/node_modules/express/node_modules/connect/lib/public/icons/page_white.png b/node_modules/express/node_modules/connect/lib/public/icons/page_white.png new file mode 100644 index 0000000..8b8b1ca Binary files /dev/null and b/node_modules/express/node_modules/connect/lib/public/icons/page_white.png differ diff --git a/node_modules/express/node_modules/connect/lib/public/icons/page_white_acrobat.png b/node_modules/express/node_modules/connect/lib/public/icons/page_white_acrobat.png new file mode 100644 index 0000000..8f8095e Binary files /dev/null and b/node_modules/express/node_modules/connect/lib/public/icons/page_white_acrobat.png differ diff --git a/node_modules/express/node_modules/connect/lib/public/icons/page_white_actionscript.png b/node_modules/express/node_modules/connect/lib/public/icons/page_white_actionscript.png new file mode 100644 index 0000000..159b240 Binary files /dev/null and b/node_modules/express/node_modules/connect/lib/public/icons/page_white_actionscript.png differ diff --git a/node_modules/express/node_modules/connect/lib/public/icons/page_white_add.png b/node_modules/express/node_modules/connect/lib/public/icons/page_white_add.png new file mode 100644 index 0000000..aa23dde Binary files /dev/null and b/node_modules/express/node_modules/connect/lib/public/icons/page_white_add.png differ diff --git a/node_modules/express/node_modules/connect/lib/public/icons/page_white_c.png b/node_modules/express/node_modules/connect/lib/public/icons/page_white_c.png new file mode 100644 index 0000000..34a05cc Binary files /dev/null and b/node_modules/express/node_modules/connect/lib/public/icons/page_white_c.png differ diff --git a/node_modules/express/node_modules/connect/lib/public/icons/page_white_camera.png b/node_modules/express/node_modules/connect/lib/public/icons/page_white_camera.png new file mode 100644 index 0000000..f501a59 Binary files /dev/null and b/node_modules/express/node_modules/connect/lib/public/icons/page_white_camera.png differ diff --git a/node_modules/express/node_modules/connect/lib/public/icons/page_white_cd.png b/node_modules/express/node_modules/connect/lib/public/icons/page_white_cd.png new file mode 100644 index 0000000..848bdaf Binary files /dev/null and b/node_modules/express/node_modules/connect/lib/public/icons/page_white_cd.png differ diff --git a/node_modules/express/node_modules/connect/lib/public/icons/page_white_code.png b/node_modules/express/node_modules/connect/lib/public/icons/page_white_code.png new file mode 100644 index 0000000..0c76bd1 Binary files /dev/null and b/node_modules/express/node_modules/connect/lib/public/icons/page_white_code.png differ diff --git a/node_modules/express/node_modules/connect/lib/public/icons/page_white_code_red.png b/node_modules/express/node_modules/connect/lib/public/icons/page_white_code_red.png new file mode 100644 index 0000000..87a6914 Binary files /dev/null and b/node_modules/express/node_modules/connect/lib/public/icons/page_white_code_red.png differ diff --git a/node_modules/express/node_modules/connect/lib/public/icons/page_white_coldfusion.png b/node_modules/express/node_modules/connect/lib/public/icons/page_white_coldfusion.png new file mode 100644 index 0000000..c66011f Binary files /dev/null and b/node_modules/express/node_modules/connect/lib/public/icons/page_white_coldfusion.png differ diff --git a/node_modules/express/node_modules/connect/lib/public/icons/page_white_compressed.png b/node_modules/express/node_modules/connect/lib/public/icons/page_white_compressed.png new file mode 100644 index 0000000..2b6b100 Binary files /dev/null and b/node_modules/express/node_modules/connect/lib/public/icons/page_white_compressed.png differ diff --git a/node_modules/express/node_modules/connect/lib/public/icons/page_white_copy.png b/node_modules/express/node_modules/connect/lib/public/icons/page_white_copy.png new file mode 100644 index 0000000..a9f31a2 Binary files /dev/null and b/node_modules/express/node_modules/connect/lib/public/icons/page_white_copy.png differ diff --git a/node_modules/express/node_modules/connect/lib/public/icons/page_white_cplusplus.png b/node_modules/express/node_modules/connect/lib/public/icons/page_white_cplusplus.png new file mode 100644 index 0000000..a87cf84 Binary files /dev/null and b/node_modules/express/node_modules/connect/lib/public/icons/page_white_cplusplus.png differ diff --git a/node_modules/express/node_modules/connect/lib/public/icons/page_white_csharp.png b/node_modules/express/node_modules/connect/lib/public/icons/page_white_csharp.png new file mode 100644 index 0000000..ffb8fc9 Binary files /dev/null and b/node_modules/express/node_modules/connect/lib/public/icons/page_white_csharp.png differ diff --git a/node_modules/express/node_modules/connect/lib/public/icons/page_white_cup.png b/node_modules/express/node_modules/connect/lib/public/icons/page_white_cup.png new file mode 100644 index 0000000..0a7d6f4 Binary files /dev/null and b/node_modules/express/node_modules/connect/lib/public/icons/page_white_cup.png differ diff --git a/node_modules/express/node_modules/connect/lib/public/icons/page_white_database.png b/node_modules/express/node_modules/connect/lib/public/icons/page_white_database.png new file mode 100644 index 0000000..bddba1f Binary files /dev/null and b/node_modules/express/node_modules/connect/lib/public/icons/page_white_database.png differ diff --git a/node_modules/express/node_modules/connect/lib/public/icons/page_white_delete.png b/node_modules/express/node_modules/connect/lib/public/icons/page_white_delete.png new file mode 100644 index 0000000..af1ecaf Binary files /dev/null and b/node_modules/express/node_modules/connect/lib/public/icons/page_white_delete.png differ diff --git a/node_modules/express/node_modules/connect/lib/public/icons/page_white_dvd.png b/node_modules/express/node_modules/connect/lib/public/icons/page_white_dvd.png new file mode 100644 index 0000000..4cc537a Binary files /dev/null and b/node_modules/express/node_modules/connect/lib/public/icons/page_white_dvd.png differ diff --git a/node_modules/express/node_modules/connect/lib/public/icons/page_white_edit.png b/node_modules/express/node_modules/connect/lib/public/icons/page_white_edit.png new file mode 100644 index 0000000..b93e776 Binary files /dev/null and b/node_modules/express/node_modules/connect/lib/public/icons/page_white_edit.png differ diff --git a/node_modules/express/node_modules/connect/lib/public/icons/page_white_error.png b/node_modules/express/node_modules/connect/lib/public/icons/page_white_error.png new file mode 100644 index 0000000..9fc5a0a Binary files /dev/null and b/node_modules/express/node_modules/connect/lib/public/icons/page_white_error.png differ diff --git a/node_modules/express/node_modules/connect/lib/public/icons/page_white_excel.png b/node_modules/express/node_modules/connect/lib/public/icons/page_white_excel.png new file mode 100644 index 0000000..b977d7e Binary files /dev/null and b/node_modules/express/node_modules/connect/lib/public/icons/page_white_excel.png differ diff --git a/node_modules/express/node_modules/connect/lib/public/icons/page_white_find.png b/node_modules/express/node_modules/connect/lib/public/icons/page_white_find.png new file mode 100644 index 0000000..5818436 Binary files /dev/null and b/node_modules/express/node_modules/connect/lib/public/icons/page_white_find.png differ diff --git a/node_modules/express/node_modules/connect/lib/public/icons/page_white_flash.png b/node_modules/express/node_modules/connect/lib/public/icons/page_white_flash.png new file mode 100644 index 0000000..5769120 Binary files /dev/null and b/node_modules/express/node_modules/connect/lib/public/icons/page_white_flash.png differ diff --git a/node_modules/express/node_modules/connect/lib/public/icons/page_white_freehand.png b/node_modules/express/node_modules/connect/lib/public/icons/page_white_freehand.png new file mode 100644 index 0000000..8d719df Binary files /dev/null and b/node_modules/express/node_modules/connect/lib/public/icons/page_white_freehand.png differ diff --git a/node_modules/express/node_modules/connect/lib/public/icons/page_white_gear.png b/node_modules/express/node_modules/connect/lib/public/icons/page_white_gear.png new file mode 100644 index 0000000..106f5aa Binary files /dev/null and b/node_modules/express/node_modules/connect/lib/public/icons/page_white_gear.png differ diff --git a/node_modules/express/node_modules/connect/lib/public/icons/page_white_get.png b/node_modules/express/node_modules/connect/lib/public/icons/page_white_get.png new file mode 100644 index 0000000..e4a1ecb Binary files /dev/null and b/node_modules/express/node_modules/connect/lib/public/icons/page_white_get.png differ diff --git a/node_modules/express/node_modules/connect/lib/public/icons/page_white_go.png b/node_modules/express/node_modules/connect/lib/public/icons/page_white_go.png new file mode 100644 index 0000000..7e62a92 Binary files /dev/null and b/node_modules/express/node_modules/connect/lib/public/icons/page_white_go.png differ diff --git a/node_modules/express/node_modules/connect/lib/public/icons/page_white_h.png b/node_modules/express/node_modules/connect/lib/public/icons/page_white_h.png new file mode 100644 index 0000000..e902abb Binary files /dev/null and b/node_modules/express/node_modules/connect/lib/public/icons/page_white_h.png differ diff --git a/node_modules/express/node_modules/connect/lib/public/icons/page_white_horizontal.png b/node_modules/express/node_modules/connect/lib/public/icons/page_white_horizontal.png new file mode 100644 index 0000000..1d2d0a4 Binary files /dev/null and b/node_modules/express/node_modules/connect/lib/public/icons/page_white_horizontal.png differ diff --git a/node_modules/express/node_modules/connect/lib/public/icons/page_white_key.png b/node_modules/express/node_modules/connect/lib/public/icons/page_white_key.png new file mode 100644 index 0000000..d616484 Binary files /dev/null and b/node_modules/express/node_modules/connect/lib/public/icons/page_white_key.png differ diff --git a/node_modules/express/node_modules/connect/lib/public/icons/page_white_lightning.png b/node_modules/express/node_modules/connect/lib/public/icons/page_white_lightning.png new file mode 100644 index 0000000..7215d1e Binary files /dev/null and b/node_modules/express/node_modules/connect/lib/public/icons/page_white_lightning.png differ diff --git a/node_modules/express/node_modules/connect/lib/public/icons/page_white_link.png b/node_modules/express/node_modules/connect/lib/public/icons/page_white_link.png new file mode 100644 index 0000000..bf7bd1c Binary files /dev/null and b/node_modules/express/node_modules/connect/lib/public/icons/page_white_link.png differ diff --git a/node_modules/express/node_modules/connect/lib/public/icons/page_white_magnify.png b/node_modules/express/node_modules/connect/lib/public/icons/page_white_magnify.png new file mode 100644 index 0000000..f6b74cc Binary files /dev/null and b/node_modules/express/node_modules/connect/lib/public/icons/page_white_magnify.png differ diff --git a/node_modules/express/node_modules/connect/lib/public/icons/page_white_medal.png b/node_modules/express/node_modules/connect/lib/public/icons/page_white_medal.png new file mode 100644 index 0000000..d3fffb6 Binary files /dev/null and b/node_modules/express/node_modules/connect/lib/public/icons/page_white_medal.png differ diff --git a/node_modules/express/node_modules/connect/lib/public/icons/page_white_office.png b/node_modules/express/node_modules/connect/lib/public/icons/page_white_office.png new file mode 100644 index 0000000..a65bcb3 Binary files /dev/null and b/node_modules/express/node_modules/connect/lib/public/icons/page_white_office.png differ diff --git a/node_modules/express/node_modules/connect/lib/public/icons/page_white_paint.png b/node_modules/express/node_modules/connect/lib/public/icons/page_white_paint.png new file mode 100644 index 0000000..23a37b8 Binary files /dev/null and b/node_modules/express/node_modules/connect/lib/public/icons/page_white_paint.png differ diff --git a/node_modules/express/node_modules/connect/lib/public/icons/page_white_paintbrush.png b/node_modules/express/node_modules/connect/lib/public/icons/page_white_paintbrush.png new file mode 100644 index 0000000..f907e44 Binary files /dev/null and b/node_modules/express/node_modules/connect/lib/public/icons/page_white_paintbrush.png differ diff --git a/node_modules/express/node_modules/connect/lib/public/icons/page_white_paste.png b/node_modules/express/node_modules/connect/lib/public/icons/page_white_paste.png new file mode 100644 index 0000000..5b2cbb3 Binary files /dev/null and b/node_modules/express/node_modules/connect/lib/public/icons/page_white_paste.png differ diff --git a/node_modules/express/node_modules/connect/lib/public/icons/page_white_php.png b/node_modules/express/node_modules/connect/lib/public/icons/page_white_php.png new file mode 100644 index 0000000..7868a25 Binary files /dev/null and b/node_modules/express/node_modules/connect/lib/public/icons/page_white_php.png differ diff --git a/node_modules/express/node_modules/connect/lib/public/icons/page_white_picture.png b/node_modules/express/node_modules/connect/lib/public/icons/page_white_picture.png new file mode 100644 index 0000000..134b669 Binary files /dev/null and b/node_modules/express/node_modules/connect/lib/public/icons/page_white_picture.png differ diff --git a/node_modules/express/node_modules/connect/lib/public/icons/page_white_powerpoint.png b/node_modules/express/node_modules/connect/lib/public/icons/page_white_powerpoint.png new file mode 100644 index 0000000..c4eff03 Binary files /dev/null and b/node_modules/express/node_modules/connect/lib/public/icons/page_white_powerpoint.png differ diff --git a/node_modules/express/node_modules/connect/lib/public/icons/page_white_put.png b/node_modules/express/node_modules/connect/lib/public/icons/page_white_put.png new file mode 100644 index 0000000..884ffd6 Binary files /dev/null and b/node_modules/express/node_modules/connect/lib/public/icons/page_white_put.png differ diff --git a/node_modules/express/node_modules/connect/lib/public/icons/page_white_ruby.png b/node_modules/express/node_modules/connect/lib/public/icons/page_white_ruby.png new file mode 100644 index 0000000..f59b7c4 Binary files /dev/null and b/node_modules/express/node_modules/connect/lib/public/icons/page_white_ruby.png differ diff --git a/node_modules/express/node_modules/connect/lib/public/icons/page_white_stack.png b/node_modules/express/node_modules/connect/lib/public/icons/page_white_stack.png new file mode 100644 index 0000000..44084ad Binary files /dev/null and b/node_modules/express/node_modules/connect/lib/public/icons/page_white_stack.png differ diff --git a/node_modules/express/node_modules/connect/lib/public/icons/page_white_star.png b/node_modules/express/node_modules/connect/lib/public/icons/page_white_star.png new file mode 100644 index 0000000..3a1441c Binary files /dev/null and b/node_modules/express/node_modules/connect/lib/public/icons/page_white_star.png differ diff --git a/node_modules/express/node_modules/connect/lib/public/icons/page_white_swoosh.png b/node_modules/express/node_modules/connect/lib/public/icons/page_white_swoosh.png new file mode 100644 index 0000000..e770829 Binary files /dev/null and b/node_modules/express/node_modules/connect/lib/public/icons/page_white_swoosh.png differ diff --git a/node_modules/express/node_modules/connect/lib/public/icons/page_white_text.png b/node_modules/express/node_modules/connect/lib/public/icons/page_white_text.png new file mode 100644 index 0000000..813f712 Binary files /dev/null and b/node_modules/express/node_modules/connect/lib/public/icons/page_white_text.png differ diff --git a/node_modules/express/node_modules/connect/lib/public/icons/page_white_text_width.png b/node_modules/express/node_modules/connect/lib/public/icons/page_white_text_width.png new file mode 100644 index 0000000..d9cf132 Binary files /dev/null and b/node_modules/express/node_modules/connect/lib/public/icons/page_white_text_width.png differ diff --git a/node_modules/express/node_modules/connect/lib/public/icons/page_white_tux.png b/node_modules/express/node_modules/connect/lib/public/icons/page_white_tux.png new file mode 100644 index 0000000..52699bf Binary files /dev/null and b/node_modules/express/node_modules/connect/lib/public/icons/page_white_tux.png differ diff --git a/node_modules/express/node_modules/connect/lib/public/icons/page_white_vector.png b/node_modules/express/node_modules/connect/lib/public/icons/page_white_vector.png new file mode 100644 index 0000000..4a05955 Binary files /dev/null and b/node_modules/express/node_modules/connect/lib/public/icons/page_white_vector.png differ diff --git a/node_modules/express/node_modules/connect/lib/public/icons/page_white_visualstudio.png b/node_modules/express/node_modules/connect/lib/public/icons/page_white_visualstudio.png new file mode 100644 index 0000000..a0a433d Binary files /dev/null and b/node_modules/express/node_modules/connect/lib/public/icons/page_white_visualstudio.png differ diff --git a/node_modules/express/node_modules/connect/lib/public/icons/page_white_width.png b/node_modules/express/node_modules/connect/lib/public/icons/page_white_width.png new file mode 100644 index 0000000..1eb8809 Binary files /dev/null and b/node_modules/express/node_modules/connect/lib/public/icons/page_white_width.png differ diff --git a/node_modules/express/node_modules/connect/lib/public/icons/page_white_word.png b/node_modules/express/node_modules/connect/lib/public/icons/page_white_word.png new file mode 100644 index 0000000..ae8ecbf Binary files /dev/null and b/node_modules/express/node_modules/connect/lib/public/icons/page_white_word.png differ diff --git a/node_modules/express/node_modules/connect/lib/public/icons/page_white_world.png b/node_modules/express/node_modules/connect/lib/public/icons/page_white_world.png new file mode 100644 index 0000000..6ed2490 Binary files /dev/null and b/node_modules/express/node_modules/connect/lib/public/icons/page_white_world.png differ diff --git a/node_modules/express/node_modules/connect/lib/public/icons/page_white_wrench.png b/node_modules/express/node_modules/connect/lib/public/icons/page_white_wrench.png new file mode 100644 index 0000000..fecadd0 Binary files /dev/null and b/node_modules/express/node_modules/connect/lib/public/icons/page_white_wrench.png differ diff --git a/node_modules/express/node_modules/connect/lib/public/icons/page_white_zip.png b/node_modules/express/node_modules/connect/lib/public/icons/page_white_zip.png new file mode 100644 index 0000000..fd4bbcc Binary files /dev/null and b/node_modules/express/node_modules/connect/lib/public/icons/page_white_zip.png differ diff --git a/node_modules/express/node_modules/connect/lib/public/icons/page_word.png b/node_modules/express/node_modules/connect/lib/public/icons/page_word.png new file mode 100644 index 0000000..834cdfa Binary files /dev/null and b/node_modules/express/node_modules/connect/lib/public/icons/page_word.png differ diff --git a/node_modules/express/node_modules/connect/lib/public/icons/page_world.png b/node_modules/express/node_modules/connect/lib/public/icons/page_world.png new file mode 100644 index 0000000..b8895dd Binary files /dev/null and b/node_modules/express/node_modules/connect/lib/public/icons/page_world.png differ diff --git a/node_modules/express/node_modules/connect/lib/public/style.css b/node_modules/express/node_modules/connect/lib/public/style.css new file mode 100644 index 0000000..32b6507 --- /dev/null +++ b/node_modules/express/node_modules/connect/lib/public/style.css @@ -0,0 +1,141 @@ +body { + margin: 0; + padding: 80px 100px; + font: 13px "Helvetica Neue", "Lucida Grande", "Arial"; + background: #ECE9E9 -webkit-gradient(linear, 0% 0%, 0% 100%, from(#fff), to(#ECE9E9)); + background: #ECE9E9 -moz-linear-gradient(top, #fff, #ECE9E9); + background-repeat: no-repeat; + color: #555; + -webkit-font-smoothing: antialiased; +} +h1, h2, h3 { + margin: 0; + font-size: 22px; + color: #343434; +} +h1 em, h2 em { + padding: 0 5px; + font-weight: normal; +} +h1 { + font-size: 60px; +} +h2 { + margin-top: 10px; +} +h3 { + margin: 5px 0 10px 0; + padding-bottom: 5px; + border-bottom: 1px solid #eee; + font-size: 18px; +} +ul { + margin: 0; + padding: 0; +} +ul li { + margin: 5px 0; + padding: 3px 8px; + list-style: none; +} +ul li:hover { + cursor: pointer; + color: #2e2e2e; +} +ul li .path { + padding-left: 5px; + font-weight: bold; +} +ul li .line { + padding-right: 5px; + font-style: italic; +} +ul li:first-child .path { + padding-left: 0; +} +p { + line-height: 1.5; +} +a { + color: #555; + text-decoration: none; +} +a:hover { + color: #303030; +} +#stacktrace { + margin-top: 15px; +} +.directory h1 { + margin-bottom: 15px; + font-size: 18px; +} +ul#files { + width: 100%; + height: 500px; +} +ul#files li { + padding: 0; +} +ul#files li img { + position: absolute; + top: 5px; + left: 5px; +} +ul#files li a { + position: relative; + display: block; + margin: 1px; + width: 30%; + height: 25px; + line-height: 25px; + text-indent: 8px; + float: left; + border: 1px solid transparent; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + border-radius: 5px; + overflow: hidden; + text-overflow: ellipsis; +} +ul#files li a.icon { + text-indent: 25px; +} +ul#files li a:focus, +ul#files li a:hover { + outline: none; + background: rgba(255,255,255,0.65); + border: 1px solid #ececec; +} +ul#files li a.highlight { + -webkit-transition: background .4s ease-in-out; + background: #ffff4f; + border-color: #E9DC51; +} +#search { + display: block; + position: fixed; + top: 20px; + right: 20px; + width: 90px; + -webkit-transition: width ease 0.2s, opacity ease 0.4s; + -moz-transition: width ease 0.2s, opacity ease 0.4s; + -webkit-border-radius: 32px; + -moz-border-radius: 32px; + -webkit-box-shadow: inset 0px 0px 3px rgba(0, 0, 0, 0.25), inset 0px 1px 3px rgba(0, 0, 0, 0.7), 0px 1px 0px rgba(255, 255, 255, 0.03); + -moz-box-shadow: inset 0px 0px 3px rgba(0, 0, 0, 0.25), inset 0px 1px 3px rgba(0, 0, 0, 0.7), 0px 1px 0px rgba(255, 255, 255, 0.03); + -webkit-font-smoothing: antialiased; + text-align: left; + font: 13px "Helvetica Neue", Arial, sans-serif; + padding: 4px 10px; + border: none; + background: transparent; + margin-bottom: 0; + outline: none; + opacity: 0.7; + color: #888; +} +#search:focus { + width: 120px; + opacity: 1.0; +} diff --git a/node_modules/express/node_modules/connect/lib/utils.js b/node_modules/express/node_modules/connect/lib/utils.js new file mode 100644 index 0000000..47b30e0 --- /dev/null +++ b/node_modules/express/node_modules/connect/lib/utils.js @@ -0,0 +1,370 @@ + +/*! + * Connect - utils + * Copyright(c) 2010 Sencha Inc. + * Copyright(c) 2011 TJ Holowaychuk + * MIT Licensed + */ + +/** + * Module dependencies. + */ + +var http = require('http') + , crypto = require('crypto') + , parse = require('url').parse + , signature = require('cookie-signature'); + +/** + * Return `true` if the request has a body, otherwise return `false`. + * + * @param {IncomingMessage} req + * @return {Boolean} + * @api private + */ + +exports.hasBody = function(req) { + return 'transfer-encoding' in req.headers || 'content-length' in req.headers; +}; + +/** + * Extract the mime type from the given request's + * _Content-Type_ header. + * + * @param {IncomingMessage} req + * @return {String} + * @api private + */ + +exports.mime = function(req) { + var str = req.headers['content-type'] || ''; + return str.split(';')[0]; +}; + +/** + * Return md5 hash of the given string and optional encoding, + * defaulting to hex. + * + * utils.md5('wahoo'); + * // => "e493298061761236c96b02ea6aa8a2ad" + * + * @param {String} str + * @param {String} encoding + * @return {String} + * @api private + */ + +exports.md5 = function(str, encoding){ + return crypto + .createHash('md5') + .update(str) + .digest(encoding || 'hex'); +}; + +/** + * Merge object b with object a. + * + * var a = { foo: 'bar' } + * , b = { bar: 'baz' }; + * + * utils.merge(a, b); + * // => { foo: 'bar', bar: 'baz' } + * + * @param {Object} a + * @param {Object} b + * @return {Object} + * @api private + */ + +exports.merge = function(a, b){ + if (a && b) { + for (var key in b) { + a[key] = b[key]; + } + } + return a; +}; + +/** + * Escape the given string of `html`. + * + * @param {String} html + * @return {String} + * @api private + */ + +exports.escape = function(html){ + return String(html) + .replace(/&(?!\w+;)/g, '&') + .replace(//g, '>') + .replace(/"/g, '"'); +}; + + +/** + * Return a unique identifier with the given `len`. + * + * utils.uid(10); + * // => "FDaS435D2z" + * + * @param {Number} len + * @return {String} + * @api private + */ + +exports.uid = function(len) { + return crypto.randomBytes(Math.ceil(len * 3 / 4)) + .toString('base64') + .slice(0, len); +}; + +/** + * Sign the given `val` with `secret`. + * + * @param {String} val + * @param {String} secret + * @return {String} + * @api private + */ + +exports.sign = function(val, secret){ + console.warn('do not use utils.sign(), use https://github.com/visionmedia/node-cookie-signature') + return val + '.' + crypto + .createHmac('sha256', secret) + .update(val) + .digest('base64') + .replace(/=+$/, ''); +}; + +/** + * Unsign and decode the given `val` with `secret`, + * returning `false` if the signature is invalid. + * + * @param {String} val + * @param {String} secret + * @return {String|Boolean} + * @api private + */ + +exports.unsign = function(val, secret){ + console.warn('do not use utils.unsign(), use https://github.com/visionmedia/node-cookie-signature') + var str = val.slice(0, val.lastIndexOf('.')); + return exports.sign(str, secret) == val + ? str + : false; +}; + +/** + * Parse signed cookies, returning an object + * containing the decoded key/value pairs, + * while removing the signed key from `obj`. + * + * @param {Object} obj + * @return {Object} + * @api private + */ + +exports.parseSignedCookies = function(obj, secret){ + var ret = {}; + Object.keys(obj).forEach(function(key){ + var val = obj[key]; + if (0 == val.indexOf('s:')) { + val = signature.unsign(val.slice(2), secret); + if (val) { + ret[key] = val; + delete obj[key]; + } + } + }); + return ret; +}; + +/** + * Parse a signed cookie string, return the decoded value + * + * @param {String} str signed cookie string + * @param {String} secret + * @return {String} decoded value + * @api private + */ + +exports.parseSignedCookie = function(str, secret){ + return 0 == str.indexOf('s:') + ? signature.unsign(str.slice(2), secret) + : str; +}; + +/** + * Parse JSON cookies. + * + * @param {Object} obj + * @return {Object} + * @api private + */ + +exports.parseJSONCookies = function(obj){ + Object.keys(obj).forEach(function(key){ + var val = obj[key]; + var res = exports.parseJSONCookie(val); + if (res) obj[key] = res; + }); + return obj; +}; + +/** + * Parse JSON cookie string + * + * @param {String} str + * @return {Object} Parsed object or null if not json cookie + * @api private + */ + +exports.parseJSONCookie = function(str) { + if (0 == str.indexOf('j:')) { + try { + return JSON.parse(str.slice(2)); + } catch (err) { + // no op + } + } +}; + +/** + * Pause `data` and `end` events on the given `obj`. + * Middleware performing async tasks _should_ utilize + * this utility (or similar), to re-emit data once + * the async operation has completed, otherwise these + * events may be lost. + * + * var pause = utils.pause(req); + * fs.readFile(path, function(){ + * next(); + * pause.resume(); + * }); + * + * @param {Object} obj + * @return {Object} + * @api private + */ + +exports.pause = require('pause'); + +/** + * Strip `Content-*` headers from `res`. + * + * @param {ServerResponse} res + * @api private + */ + +exports.removeContentHeaders = function(res){ + Object.keys(res._headers).forEach(function(field){ + if (0 == field.indexOf('content')) { + res.removeHeader(field); + } + }); +}; + +/** + * Check if `req` is a conditional GET request. + * + * @param {IncomingMessage} req + * @return {Boolean} + * @api private + */ + +exports.conditionalGET = function(req) { + return req.headers['if-modified-since'] + || req.headers['if-none-match']; +}; + +/** + * Respond with 401 "Unauthorized". + * + * @param {ServerResponse} res + * @param {String} realm + * @api private + */ + +exports.unauthorized = function(res, realm) { + res.statusCode = 401; + res.setHeader('WWW-Authenticate', 'Basic realm="' + realm + '"'); + res.end('Unauthorized'); +}; + +/** + * Respond with 304 "Not Modified". + * + * @param {ServerResponse} res + * @param {Object} headers + * @api private + */ + +exports.notModified = function(res) { + exports.removeContentHeaders(res); + res.statusCode = 304; + res.end(); +}; + +/** + * Return an ETag in the form of `"-"` + * from the given `stat`. + * + * @param {Object} stat + * @return {String} + * @api private + */ + +exports.etag = function(stat) { + return '"' + stat.size + '-' + Number(stat.mtime) + '"'; +}; + +/** + * Parse the given Cache-Control `str`. + * + * @param {String} str + * @return {Object} + * @api private + */ + +exports.parseCacheControl = function(str){ + var directives = str.split(',') + , obj = {}; + + for(var i = 0, len = directives.length; i < len; i++) { + var parts = directives[i].split('=') + , key = parts.shift().trim() + , val = parseInt(parts.shift(), 10); + + obj[key] = isNaN(val) ? true : val; + } + + return obj; +}; + +/** + * Parse the `req` url with memoization. + * + * @param {ServerRequest} req + * @return {Object} + * @api private + */ + +exports.parseUrl = function(req){ + var parsed = req._parsedUrl; + if (parsed && parsed.href == req.url) { + return parsed; + } else { + return req._parsedUrl = parse(req.url); + } +}; + +/** + * Parse byte `size` string. + * + * @param {String} size + * @return {Number} + * @api private + */ + +exports.parseBytes = require('bytes'); diff --git a/node_modules/express/node_modules/connect/node_modules/bytes/.npmignore b/node_modules/express/node_modules/connect/node_modules/bytes/.npmignore new file mode 100644 index 0000000..9daeafb --- /dev/null +++ b/node_modules/express/node_modules/connect/node_modules/bytes/.npmignore @@ -0,0 +1 @@ +test diff --git a/node_modules/express/node_modules/connect/node_modules/bytes/History.md b/node_modules/express/node_modules/connect/node_modules/bytes/History.md new file mode 100644 index 0000000..db1f759 --- /dev/null +++ b/node_modules/express/node_modules/connect/node_modules/bytes/History.md @@ -0,0 +1,5 @@ + +0.1.0 / 2012-07-04 +================== + + * add bytes to string conversion [yields] diff --git a/node_modules/express/node_modules/connect/node_modules/bytes/Makefile b/node_modules/express/node_modules/connect/node_modules/bytes/Makefile new file mode 100644 index 0000000..8e8640f --- /dev/null +++ b/node_modules/express/node_modules/connect/node_modules/bytes/Makefile @@ -0,0 +1,7 @@ + +test: + @./node_modules/.bin/mocha \ + --reporter spec \ + --require should + +.PHONY: test \ No newline at end of file diff --git a/node_modules/express/node_modules/connect/node_modules/bytes/Readme.md b/node_modules/express/node_modules/connect/node_modules/bytes/Readme.md new file mode 100644 index 0000000..9325d5b --- /dev/null +++ b/node_modules/express/node_modules/connect/node_modules/bytes/Readme.md @@ -0,0 +1,51 @@ +# node-bytes + + Byte string parser / formatter. + +## Example: + +```js +bytes('1kb') +// => 1024 + +bytes('2mb') +// => 2097152 + +bytes('1gb') +// => 1073741824 + +bytes(1073741824) +// => 1gb +``` + +## Installation + +``` +$ npm install bytes +$ component install visionmedia/bytes.js +``` + +## License + +(The MIT License) + +Copyright (c) 2012 TJ Holowaychuk <tj@vision-media.ca> + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +'Software'), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/node_modules/express/node_modules/connect/node_modules/bytes/component.json b/node_modules/express/node_modules/connect/node_modules/bytes/component.json new file mode 100644 index 0000000..76a6057 --- /dev/null +++ b/node_modules/express/node_modules/connect/node_modules/bytes/component.json @@ -0,0 +1,7 @@ +{ + "name": "bytes", + "description": "byte size string parser / serializer", + "keywords": ["bytes", "utility"], + "version": "0.1.0", + "scripts": ["index.js"] +} diff --git a/node_modules/express/node_modules/connect/node_modules/bytes/index.js b/node_modules/express/node_modules/connect/node_modules/bytes/index.js new file mode 100644 index 0000000..3eaafc7 --- /dev/null +++ b/node_modules/express/node_modules/connect/node_modules/bytes/index.js @@ -0,0 +1,39 @@ + +/** + * Parse byte `size` string. + * + * @param {String} size + * @return {Number} + * @api public + */ + +module.exports = function(size) { + if ('number' == typeof size) return convert(size); + var parts = size.match(/^(\d+(?:\.\d+)?) *(kb|mb|gb)$/) + , n = parseFloat(parts[1]) + , type = parts[2]; + + var map = { + kb: 1 << 10 + , mb: 1 << 20 + , gb: 1 << 30 + }; + + return map[type] * n; +}; + +/** + * convert bytes into string. + * + * @param {Number} b - bytes to convert + * @return {String}i + * @api public + */ + +function convert (b) { + var gb = 1 << 30, mb = 1 << 20, kb = 1 << 10; + if (b >= gb) return (Math.round(b / gb * 100) / 100) + 'gb'; + if (b >= mb) return (Math.round(b / mb * 100) / 100) + 'mb'; + if (b >= kb) return (Math.round(b / kb * 100) / 100) + 'kb'; + return b; +} \ No newline at end of file diff --git a/node_modules/express/node_modules/connect/node_modules/bytes/package.json b/node_modules/express/node_modules/connect/node_modules/bytes/package.json new file mode 100644 index 0000000..581d4f3 --- /dev/null +++ b/node_modules/express/node_modules/connect/node_modules/bytes/package.json @@ -0,0 +1,29 @@ +{ + "name": "bytes", + "author": { + "name": "TJ Holowaychuk", + "email": "tj@vision-media.ca", + "url": "http://tjholowaychuk.com" + }, + "description": "byte size string parser / serializer", + "version": "0.1.0", + "main": "index.js", + "dependencies": {}, + "devDependencies": { + "mocha": "*", + "should": "*" + }, + "component": { + "scripts": { + "bytes": "index.js" + } + }, + "readme": "# node-bytes\n\n Byte string parser / formatter.\n\n## Example:\n\n```js\nbytes('1kb')\n// => 1024\n\nbytes('2mb')\n// => 2097152\n\nbytes('1gb')\n// => 1073741824\n\nbytes(1073741824)\n// => 1gb\n```\n\n## Installation\n\n```\n$ npm install bytes\n$ component install visionmedia/bytes.js\n```\n\n## License \n\n(The MIT License)\n\nCopyright (c) 2012 TJ Holowaychuk <tj@vision-media.ca>\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n'Software'), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n", + "readmeFilename": "Readme.md", + "_id": "bytes@0.1.0", + "dist": { + "shasum": "7e5749b542acf56667cca2ef452a79a9d630284d" + }, + "_from": "bytes@0.1.0", + "_resolved": "https://registry.npmjs.org/bytes/-/bytes-0.1.0.tgz" +} diff --git a/node_modules/express/node_modules/connect/node_modules/formidable/.npmignore b/node_modules/express/node_modules/connect/node_modules/formidable/.npmignore new file mode 100644 index 0000000..4fbabb3 --- /dev/null +++ b/node_modules/express/node_modules/connect/node_modules/formidable/.npmignore @@ -0,0 +1,4 @@ +/test/tmp/ +*.upload +*.un~ +*.http diff --git a/node_modules/express/node_modules/connect/node_modules/formidable/.travis.yml b/node_modules/express/node_modules/connect/node_modules/formidable/.travis.yml new file mode 100644 index 0000000..f1d0f13 --- /dev/null +++ b/node_modules/express/node_modules/connect/node_modules/formidable/.travis.yml @@ -0,0 +1,4 @@ +language: node_js +node_js: + - 0.4 + - 0.6 diff --git a/node_modules/express/node_modules/connect/node_modules/formidable/Makefile b/node_modules/express/node_modules/connect/node_modules/formidable/Makefile new file mode 100644 index 0000000..8945872 --- /dev/null +++ b/node_modules/express/node_modules/connect/node_modules/formidable/Makefile @@ -0,0 +1,14 @@ +SHELL := /bin/bash + +test: + @./test/run.js + +build: npm test + +npm: + npm install . + +clean: + rm test/tmp/* + +.PHONY: test clean build diff --git a/node_modules/express/node_modules/connect/node_modules/formidable/Readme.md b/node_modules/express/node_modules/connect/node_modules/formidable/Readme.md new file mode 100644 index 0000000..a5ca104 --- /dev/null +++ b/node_modules/express/node_modules/connect/node_modules/formidable/Readme.md @@ -0,0 +1,311 @@ +# Formidable + +[![Build Status](https://secure.travis-ci.org/felixge/node-formidable.png?branch=master)](http://travis-ci.org/felixge/node-formidable) + +## Purpose + +A node.js module for parsing form data, especially file uploads. + +## Current status + +This module was developed for [Transloadit](http://transloadit.com/), a service focused on uploading +and encoding images and videos. It has been battle-tested against hundreds of GB of file uploads from +a large variety of clients and is considered production-ready. + +## Features + +* Fast (~500mb/sec), non-buffering multipart parser +* Automatically writing file uploads to disk +* Low memory footprint +* Graceful error handling +* Very high test coverage + +## Changelog + +### v1.0.9 + +* Emit progress when content length header parsed (Tim Koschützki) +* Fix Readme syntax due to GitHub changes (goob) +* Replace references to old 'sys' module in Readme with 'util' (Peter Sugihara) + +### v1.0.8 + +* Strip potentially unsafe characters when using `keepExtensions: true`. +* Switch to utest / urun for testing +* Add travis build + +### v1.0.7 + +* Remove file from package that was causing problems when installing on windows. (#102) +* Fix typos in Readme (Jason Davies). + +### v1.0.6 + +* Do not default to the default to the field name for file uploads where + filename="". + +### v1.0.5 + +* Support filename="" in multipart parts +* Explain unexpected end() errors in parser better + +**Note:** Starting with this version, formidable emits 'file' events for empty +file input fields. Previously those were incorrectly emitted as regular file +input fields with value = "". + +### v1.0.4 + +* Detect a good default tmp directory regardless of platform. (#88) + +### v1.0.3 + +* Fix problems with utf8 characters (#84) / semicolons in filenames (#58) +* Small performance improvements +* New test suite and fixture system + +### v1.0.2 + +* Exclude node\_modules folder from git +* Implement new `'aborted'` event +* Fix files in example folder to work with recent node versions +* Make gently a devDependency + +[See Commits](https://github.com/felixge/node-formidable/compare/v1.0.1...v1.0.2) + +### v1.0.1 + +* Fix package.json to refer to proper main directory. (#68, Dean Landolt) + +[See Commits](https://github.com/felixge/node-formidable/compare/v1.0.0...v1.0.1) + +### v1.0.0 + +* Add support for multipart boundaries that are quoted strings. (Jeff Craig) + +This marks the beginning of development on version 2.0 which will include +several architectural improvements. + +[See Commits](https://github.com/felixge/node-formidable/compare/v0.9.11...v1.0.0) + +### v0.9.11 + +* Emit `'progress'` event when receiving data, regardless of parsing it. (Tim Koschützki) +* Use [W3C FileAPI Draft](http://dev.w3.org/2006/webapi/FileAPI/) properties for File class + +**Important:** The old property names of the File class will be removed in a +future release. + +[See Commits](https://github.com/felixge/node-formidable/compare/v0.9.10...v0.9.11) + +### Older releases + +These releases were done before starting to maintain the above Changelog: + +* [v0.9.10](https://github.com/felixge/node-formidable/compare/v0.9.9...v0.9.10) +* [v0.9.9](https://github.com/felixge/node-formidable/compare/v0.9.8...v0.9.9) +* [v0.9.8](https://github.com/felixge/node-formidable/compare/v0.9.7...v0.9.8) +* [v0.9.7](https://github.com/felixge/node-formidable/compare/v0.9.6...v0.9.7) +* [v0.9.6](https://github.com/felixge/node-formidable/compare/v0.9.5...v0.9.6) +* [v0.9.5](https://github.com/felixge/node-formidable/compare/v0.9.4...v0.9.5) +* [v0.9.4](https://github.com/felixge/node-formidable/compare/v0.9.3...v0.9.4) +* [v0.9.3](https://github.com/felixge/node-formidable/compare/v0.9.2...v0.9.3) +* [v0.9.2](https://github.com/felixge/node-formidable/compare/v0.9.1...v0.9.2) +* [v0.9.1](https://github.com/felixge/node-formidable/compare/v0.9.0...v0.9.1) +* [v0.9.0](https://github.com/felixge/node-formidable/compare/v0.8.0...v0.9.0) +* [v0.9.0](https://github.com/felixge/node-formidable/compare/v0.8.0...v0.9.0) +* [v0.9.0](https://github.com/felixge/node-formidable/compare/v0.8.0...v0.9.0) +* [v0.9.0](https://github.com/felixge/node-formidable/compare/v0.8.0...v0.9.0) +* [v0.9.0](https://github.com/felixge/node-formidable/compare/v0.8.0...v0.9.0) +* [v0.9.0](https://github.com/felixge/node-formidable/compare/v0.8.0...v0.9.0) +* [v0.9.0](https://github.com/felixge/node-formidable/compare/v0.8.0...v0.9.0) +* [v0.9.0](https://github.com/felixge/node-formidable/compare/v0.8.0...v0.9.0) +* [v0.1.0](https://github.com/felixge/node-formidable/commits/v0.1.0) + +## Installation + +Via [npm](http://github.com/isaacs/npm): + + npm install formidable@latest + +Manually: + + git clone git://github.com/felixge/node-formidable.git formidable + vim my.js + # var formidable = require('./formidable'); + +Note: Formidable requires [gently](http://github.com/felixge/node-gently) to run the unit tests, but you won't need it for just using the library. + +## Example + +Parse an incoming file upload. + + var formidable = require('formidable'), + http = require('http'), + + util = require('util'); + + http.createServer(function(req, res) { + if (req.url == '/upload' && req.method.toLowerCase() == 'post') { + // parse a file upload + var form = new formidable.IncomingForm(); + form.parse(req, function(err, fields, files) { + res.writeHead(200, {'content-type': 'text/plain'}); + res.write('received upload:\n\n'); + res.end(util.inspect({fields: fields, files: files})); + }); + return; + } + + // show a file upload form + res.writeHead(200, {'content-type': 'text/html'}); + res.end( + '
    '+ + '
    '+ + '
    '+ + ''+ + '
    ' + ); + }).listen(80); + +## API + +### formidable.IncomingForm + +__new formidable.IncomingForm()__ + +Creates a new incoming form. + +__incomingForm.encoding = 'utf-8'__ + +The encoding to use for incoming form fields. + +__incomingForm.uploadDir = process.env.TMP || '/tmp' || process.cwd()__ + +The directory for placing file uploads in. You can move them later on using +`fs.rename()`. The default directory is picked at module load time depending on +the first existing directory from those listed above. + +__incomingForm.keepExtensions = false__ + +If you want the files written to `incomingForm.uploadDir` to include the extensions of the original files, set this property to `true`. + +__incomingForm.type__ + +Either 'multipart' or 'urlencoded' depending on the incoming request. + +__incomingForm.maxFieldsSize = 2 * 1024 * 1024__ + +Limits the amount of memory a field (not file) can allocate in bytes. +If this value is exceeded, an `'error'` event is emitted. The default +size is 2MB. + +__incomingForm.hash = false__ + +If you want checksums calculated for incoming files, set this to either `'sha1'` or `'md5'`. + +__incomingForm.bytesReceived__ + +The amount of bytes received for this form so far. + +__incomingForm.bytesExpected__ + +The expected number of bytes in this form. + +__incomingForm.parse(request, [cb])__ + +Parses an incoming node.js `request` containing form data. If `cb` is provided, all fields an files are collected and passed to the callback: + + incomingForm.parse(req, function(err, fields, files) { + // ... + }); + +__incomingForm.onPart(part)__ + +You may overwrite this method if you are interested in directly accessing the multipart stream. Doing so will disable any `'field'` / `'file'` events processing which would occur otherwise, making you fully responsible for handling the processing. + + incomingForm.onPart = function(part) { + part.addListener('data', function() { + // ... + }); + } + +If you want to use formidable to only handle certain parts for you, you can do so: + + incomingForm.onPart = function(part) { + if (!part.filename) { + // let formidable handle all non-file parts + incomingForm.handlePart(part); + } + } + +Check the code in this method for further inspiration. + +__Event: 'progress' (bytesReceived, bytesExpected)__ + +Emitted after each incoming chunk of data that has been parsed. Can be used to roll your own progress bar. + +__Event: 'field' (name, value)__ + +Emitted whenever a field / value pair has been received. + +__Event: 'fileBegin' (name, file)__ + +Emitted whenever a new file is detected in the upload stream. Use this even if +you want to stream the file to somewhere else while buffering the upload on +the file system. + +__Event: 'file' (name, file)__ + +Emitted whenever a field / file pair has been received. `file` is an instance of `File`. + +__Event: 'error' (err)__ + +Emitted when there is an error processing the incoming form. A request that experiences an error is automatically paused, you will have to manually call `request.resume()` if you want the request to continue firing `'data'` events. + +__Event: 'aborted'__ + +Emitted when the request was aborted by the user. Right now this can be due to a 'timeout' or 'close' event on the socket. In the future there will be a separate 'timeout' event (needs a change in the node core). + +__Event: 'end' ()__ + +Emitted when the entire request has been received, and all contained files have finished flushing to disk. This is a great place for you to send your response. + +### formidable.File + +__file.size = 0__ + +The size of the uploaded file in bytes. If the file is still being uploaded (see `'fileBegin'` event), this property says how many bytes of the file have been written to disk yet. + +__file.path = null__ + +The path this file is being written to. You can modify this in the `'fileBegin'` event in +case you are unhappy with the way formidable generates a temporary path for your files. + +__file.name = null__ + +The name this file had according to the uploading client. + +__file.type = null__ + +The mime type of this file, according to the uploading client. + +__file.lastModifiedDate = null__ + +A date object (or `null`) containing the time this file was last written to. Mostly +here for compatibility with the [W3C File API Draft](http://dev.w3.org/2006/webapi/FileAPI/). + +__file.hash = null__ + +If hash calculation was set, you can read the hex digest out of this var. + +## License + +Formidable is licensed under the MIT license. + +## Ports + +* [multipart-parser](http://github.com/FooBarWidget/multipart-parser): a C++ parser based on formidable + +## Credits + +* [Ryan Dahl](http://twitter.com/ryah) for his work on [http-parser](http://github.com/ry/http-parser) which heavily inspired multipart_parser.js diff --git a/node_modules/express/node_modules/connect/node_modules/formidable/TODO b/node_modules/express/node_modules/connect/node_modules/formidable/TODO new file mode 100644 index 0000000..e1107f2 --- /dev/null +++ b/node_modules/express/node_modules/connect/node_modules/formidable/TODO @@ -0,0 +1,3 @@ +- Better bufferMaxSize handling approach +- Add tests for JSON parser pull request and merge it +- Implement QuerystringParser the same way as MultipartParser diff --git a/node_modules/express/node_modules/connect/node_modules/formidable/benchmark/bench-multipart-parser.js b/node_modules/express/node_modules/connect/node_modules/formidable/benchmark/bench-multipart-parser.js new file mode 100644 index 0000000..bff41f1 --- /dev/null +++ b/node_modules/express/node_modules/connect/node_modules/formidable/benchmark/bench-multipart-parser.js @@ -0,0 +1,70 @@ +require('../test/common'); +var multipartParser = require('../lib/multipart_parser'), + MultipartParser = multipartParser.MultipartParser, + parser = new MultipartParser(), + Buffer = require('buffer').Buffer, + boundary = '-----------------------------168072824752491622650073', + mb = 100, + buffer = createMultipartBuffer(boundary, mb * 1024 * 1024), + callbacks = + { partBegin: -1, + partEnd: -1, + headerField: -1, + headerValue: -1, + partData: -1, + end: -1, + }; + + +parser.initWithBoundary(boundary); +parser.onHeaderField = function() { + callbacks.headerField++; +}; + +parser.onHeaderValue = function() { + callbacks.headerValue++; +}; + +parser.onPartBegin = function() { + callbacks.partBegin++; +}; + +parser.onPartData = function() { + callbacks.partData++; +}; + +parser.onPartEnd = function() { + callbacks.partEnd++; +}; + +parser.onEnd = function() { + callbacks.end++; +}; + +var start = +new Date(), + nparsed = parser.write(buffer), + duration = +new Date - start, + mbPerSec = (mb / (duration / 1000)).toFixed(2); + +console.log(mbPerSec+' mb/sec'); + +assert.equal(nparsed, buffer.length); + +function createMultipartBuffer(boundary, size) { + var head = + '--'+boundary+'\r\n' + + 'content-disposition: form-data; name="field1"\r\n' + + '\r\n' + , tail = '\r\n--'+boundary+'--\r\n' + , buffer = new Buffer(size); + + buffer.write(head, 'ascii', 0); + buffer.write(tail, 'ascii', buffer.length - tail.length); + return buffer; +} + +process.on('exit', function() { + for (var k in callbacks) { + assert.equal(0, callbacks[k], k+' count off by '+callbacks[k]); + } +}); diff --git a/node_modules/express/node_modules/connect/node_modules/formidable/example/post.js b/node_modules/express/node_modules/connect/node_modules/formidable/example/post.js new file mode 100644 index 0000000..f6c15a6 --- /dev/null +++ b/node_modules/express/node_modules/connect/node_modules/formidable/example/post.js @@ -0,0 +1,43 @@ +require('../test/common'); +var http = require('http'), + util = require('util'), + formidable = require('formidable'), + server; + +server = http.createServer(function(req, res) { + if (req.url == '/') { + res.writeHead(200, {'content-type': 'text/html'}); + res.end( + '
    '+ + '
    '+ + '
    '+ + ''+ + '
    ' + ); + } else if (req.url == '/post') { + var form = new formidable.IncomingForm(), + fields = []; + + form + .on('error', function(err) { + res.writeHead(200, {'content-type': 'text/plain'}); + res.end('error:\n\n'+util.inspect(err)); + }) + .on('field', function(field, value) { + console.log(field, value); + fields.push([field, value]); + }) + .on('end', function() { + console.log('-> post done'); + res.writeHead(200, {'content-type': 'text/plain'}); + res.end('received fields:\n\n '+util.inspect(fields)); + }); + form.parse(req); + } else { + res.writeHead(404, {'content-type': 'text/plain'}); + res.end('404'); + } +}); +server.listen(TEST_PORT); + +console.log('listening on http://localhost:'+TEST_PORT+'/'); diff --git a/node_modules/express/node_modules/connect/node_modules/formidable/example/upload.js b/node_modules/express/node_modules/connect/node_modules/formidable/example/upload.js new file mode 100644 index 0000000..050cdd9 --- /dev/null +++ b/node_modules/express/node_modules/connect/node_modules/formidable/example/upload.js @@ -0,0 +1,48 @@ +require('../test/common'); +var http = require('http'), + util = require('util'), + formidable = require('formidable'), + server; + +server = http.createServer(function(req, res) { + if (req.url == '/') { + res.writeHead(200, {'content-type': 'text/html'}); + res.end( + '
    '+ + '
    '+ + '
    '+ + ''+ + '
    ' + ); + } else if (req.url == '/upload') { + var form = new formidable.IncomingForm(), + files = [], + fields = []; + + form.uploadDir = TEST_TMP; + + form + .on('field', function(field, value) { + console.log(field, value); + fields.push([field, value]); + }) + .on('file', function(field, file) { + console.log(field, file); + files.push([field, file]); + }) + .on('end', function() { + console.log('-> upload done'); + res.writeHead(200, {'content-type': 'text/plain'}); + res.write('received fields:\n\n '+util.inspect(fields)); + res.write('\n\n'); + res.end('received files:\n\n '+util.inspect(files)); + }); + form.parse(req); + } else { + res.writeHead(404, {'content-type': 'text/plain'}); + res.end('404'); + } +}); +server.listen(TEST_PORT); + +console.log('listening on http://localhost:'+TEST_PORT+'/'); diff --git a/node_modules/express/node_modules/connect/node_modules/formidable/index.js b/node_modules/express/node_modules/connect/node_modules/formidable/index.js new file mode 100644 index 0000000..be41032 --- /dev/null +++ b/node_modules/express/node_modules/connect/node_modules/formidable/index.js @@ -0,0 +1 @@ +module.exports = require('./lib/formidable'); \ No newline at end of file diff --git a/node_modules/express/node_modules/connect/node_modules/formidable/lib/file.js b/node_modules/express/node_modules/connect/node_modules/formidable/lib/file.js new file mode 100644 index 0000000..dad8d5f --- /dev/null +++ b/node_modules/express/node_modules/connect/node_modules/formidable/lib/file.js @@ -0,0 +1,73 @@ +if (global.GENTLY) require = GENTLY.hijack(require); + +var util = require('./util'), + WriteStream = require('fs').WriteStream, + EventEmitter = require('events').EventEmitter, + crypto = require('crypto'); + +function File(properties) { + EventEmitter.call(this); + + this.size = 0; + this.path = null; + this.name = null; + this.type = null; + this.hash = null; + this.lastModifiedDate = null; + + this._writeStream = null; + + for (var key in properties) { + this[key] = properties[key]; + } + + if(typeof this.hash === 'string') { + this.hash = crypto.createHash(properties.hash); + } + + this._backwardsCompatibility(); +} +module.exports = File; +util.inherits(File, EventEmitter); + +// @todo Next release: Show error messages when accessing these +File.prototype._backwardsCompatibility = function() { + var self = this; + this.__defineGetter__('length', function() { + return self.size; + }); + this.__defineGetter__('filename', function() { + return self.name; + }); + this.__defineGetter__('mime', function() { + return self.type; + }); +}; + +File.prototype.open = function() { + this._writeStream = new WriteStream(this.path); +}; + +File.prototype.write = function(buffer, cb) { + var self = this; + this._writeStream.write(buffer, function() { + if(self.hash) { + self.hash.update(buffer); + } + self.lastModifiedDate = new Date(); + self.size += buffer.length; + self.emit('progress', self.size); + cb(); + }); +}; + +File.prototype.end = function(cb) { + var self = this; + this._writeStream.end(function() { + if(self.hash) { + self.hash = self.hash.digest('hex'); + } + self.emit('end'); + cb(); + }); +}; diff --git a/node_modules/express/node_modules/connect/node_modules/formidable/lib/incoming_form.js b/node_modules/express/node_modules/connect/node_modules/formidable/lib/incoming_form.js new file mode 100644 index 0000000..060eac2 --- /dev/null +++ b/node_modules/express/node_modules/connect/node_modules/formidable/lib/incoming_form.js @@ -0,0 +1,384 @@ +if (global.GENTLY) require = GENTLY.hijack(require); + +var fs = require('fs'); +var util = require('./util'), + path = require('path'), + File = require('./file'), + MultipartParser = require('./multipart_parser').MultipartParser, + QuerystringParser = require('./querystring_parser').QuerystringParser, + StringDecoder = require('string_decoder').StringDecoder, + EventEmitter = require('events').EventEmitter, + Stream = require('stream').Stream; + +function IncomingForm(opts) { + if (!(this instanceof IncomingForm)) return new IncomingForm; + EventEmitter.call(this); + + opts=opts||{}; + + this.error = null; + this.ended = false; + + this.maxFieldsSize = opts.maxFieldsSize || 2 * 1024 * 1024; + this.keepExtensions = opts.keepExtensions || false; + this.uploadDir = opts.uploadDir || IncomingForm.UPLOAD_DIR; + this.encoding = opts.encoding || 'utf-8'; + this.headers = null; + this.type = null; + this.hash = false; + + this.bytesReceived = null; + this.bytesExpected = null; + + this._parser = null; + this._flushing = 0; + this._fieldsSize = 0; +}; +util.inherits(IncomingForm, EventEmitter); +exports.IncomingForm = IncomingForm; + +IncomingForm.UPLOAD_DIR = (function() { + var dirs = [process.env.TMP, '/tmp', process.cwd()]; + for (var i = 0; i < dirs.length; i++) { + var dir = dirs[i]; + var isDirectory = false; + + try { + isDirectory = fs.statSync(dir).isDirectory(); + } catch (e) {} + + if (isDirectory) return dir; + } +})(); + +IncomingForm.prototype.parse = function(req, cb) { + this.pause = function() { + try { + req.pause(); + } catch (err) { + // the stream was destroyed + if (!this.ended) { + // before it was completed, crash & burn + this._error(err); + } + return false; + } + return true; + }; + + this.resume = function() { + try { + req.resume(); + } catch (err) { + // the stream was destroyed + if (!this.ended) { + // before it was completed, crash & burn + this._error(err); + } + return false; + } + + return true; + }; + + this.writeHeaders(req.headers); + + var self = this; + req + .on('error', function(err) { + self._error(err); + }) + .on('aborted', function() { + self.emit('aborted'); + }) + .on('data', function(buffer) { + self.write(buffer); + }) + .on('end', function() { + if (self.error) { + return; + } + + var err = self._parser.end(); + if (err) { + self._error(err); + } + }); + + if (cb) { + var fields = {}, files = {}; + this + .on('field', function(name, value) { + fields[name] = value; + }) + .on('file', function(name, file) { + files[name] = file; + }) + .on('error', function(err) { + cb(err, fields, files); + }) + .on('end', function() { + cb(null, fields, files); + }); + } + + return this; +}; + +IncomingForm.prototype.writeHeaders = function(headers) { + this.headers = headers; + this._parseContentLength(); + this._parseContentType(); +}; + +IncomingForm.prototype.write = function(buffer) { + if (!this._parser) { + this._error(new Error('unintialized parser')); + return; + } + + this.bytesReceived += buffer.length; + this.emit('progress', this.bytesReceived, this.bytesExpected); + + var bytesParsed = this._parser.write(buffer); + if (bytesParsed !== buffer.length) { + this._error(new Error('parser error, '+bytesParsed+' of '+buffer.length+' bytes parsed')); + } + + return bytesParsed; +}; + +IncomingForm.prototype.pause = function() { + // this does nothing, unless overwritten in IncomingForm.parse + return false; +}; + +IncomingForm.prototype.resume = function() { + // this does nothing, unless overwritten in IncomingForm.parse + return false; +}; + +IncomingForm.prototype.onPart = function(part) { + // this method can be overwritten by the user + this.handlePart(part); +}; + +IncomingForm.prototype.handlePart = function(part) { + var self = this; + + if (part.filename === undefined) { + var value = '' + , decoder = new StringDecoder(this.encoding); + + part.on('data', function(buffer) { + self._fieldsSize += buffer.length; + if (self._fieldsSize > self.maxFieldsSize) { + self._error(new Error('maxFieldsSize exceeded, received '+self._fieldsSize+' bytes of field data')); + return; + } + value += decoder.write(buffer); + }); + + part.on('end', function() { + self.emit('field', part.name, value); + }); + return; + } + + this._flushing++; + + var file = new File({ + path: this._uploadPath(part.filename), + name: part.filename, + type: part.mime, + hash: self.hash + }); + + this.emit('fileBegin', part.name, file); + + file.open(); + + part.on('data', function(buffer) { + self.pause(); + file.write(buffer, function() { + self.resume(); + }); + }); + + part.on('end', function() { + file.end(function() { + self._flushing--; + self.emit('file', part.name, file); + self._maybeEnd(); + }); + }); +}; + +IncomingForm.prototype._parseContentType = function() { + if (!this.headers['content-type']) { + this._error(new Error('bad content-type header, no content-type')); + return; + } + + if (this.headers['content-type'].match(/urlencoded/i)) { + this._initUrlencoded(); + return; + } + + if (this.headers['content-type'].match(/multipart/i)) { + var m; + if (m = this.headers['content-type'].match(/boundary=(?:"([^"]+)"|([^;]+))/i)) { + this._initMultipart(m[1] || m[2]); + } else { + this._error(new Error('bad content-type header, no multipart boundary')); + } + return; + } + + this._error(new Error('bad content-type header, unknown content-type: '+this.headers['content-type'])); +}; + +IncomingForm.prototype._error = function(err) { + if (this.error) { + return; + } + + this.error = err; + this.pause(); + this.emit('error', err); +}; + +IncomingForm.prototype._parseContentLength = function() { + if (this.headers['content-length']) { + this.bytesReceived = 0; + this.bytesExpected = parseInt(this.headers['content-length'], 10); + this.emit('progress', this.bytesReceived, this.bytesExpected); + } +}; + +IncomingForm.prototype._newParser = function() { + return new MultipartParser(); +}; + +IncomingForm.prototype._initMultipart = function(boundary) { + this.type = 'multipart'; + + var parser = new MultipartParser(), + self = this, + headerField, + headerValue, + part; + + parser.initWithBoundary(boundary); + + parser.onPartBegin = function() { + part = new Stream(); + part.readable = true; + part.headers = {}; + part.name = null; + part.filename = null; + part.mime = null; + headerField = ''; + headerValue = ''; + }; + + parser.onHeaderField = function(b, start, end) { + headerField += b.toString(self.encoding, start, end); + }; + + parser.onHeaderValue = function(b, start, end) { + headerValue += b.toString(self.encoding, start, end); + }; + + parser.onHeaderEnd = function() { + headerField = headerField.toLowerCase(); + part.headers[headerField] = headerValue; + + var m; + if (headerField == 'content-disposition') { + if (m = headerValue.match(/name="([^"]+)"/i)) { + part.name = m[1]; + } + + part.filename = self._fileName(headerValue); + } else if (headerField == 'content-type') { + part.mime = headerValue; + } + + headerField = ''; + headerValue = ''; + }; + + parser.onHeadersEnd = function() { + self.onPart(part); + }; + + parser.onPartData = function(b, start, end) { + part.emit('data', b.slice(start, end)); + }; + + parser.onPartEnd = function() { + part.emit('end'); + }; + + parser.onEnd = function() { + self.ended = true; + self._maybeEnd(); + }; + + this._parser = parser; +}; + +IncomingForm.prototype._fileName = function(headerValue) { + var m = headerValue.match(/filename="(.*?)"($|; )/i) + if (!m) return; + + var filename = m[1].substr(m[1].lastIndexOf('\\') + 1); + filename = filename.replace(/%22/g, '"'); + filename = filename.replace(/&#([\d]{4});/g, function(m, code) { + return String.fromCharCode(code); + }); + return filename; +}; + +IncomingForm.prototype._initUrlencoded = function() { + this.type = 'urlencoded'; + + var parser = new QuerystringParser() + , self = this; + + parser.onField = function(key, val) { + self.emit('field', key, val); + }; + + parser.onEnd = function() { + self.ended = true; + self._maybeEnd(); + }; + + this._parser = parser; +}; + +IncomingForm.prototype._uploadPath = function(filename) { + var name = ''; + for (var i = 0; i < 32; i++) { + name += Math.floor(Math.random() * 16).toString(16); + } + + if (this.keepExtensions) { + var ext = path.extname(filename); + ext = ext.replace(/(\.[a-z0-9]+).*/, '$1') + + name += ext; + } + + return path.join(this.uploadDir, name); +}; + +IncomingForm.prototype._maybeEnd = function() { + if (!this.ended || this._flushing) { + return; + } + + this.emit('end'); +}; diff --git a/node_modules/express/node_modules/connect/node_modules/formidable/lib/index.js b/node_modules/express/node_modules/connect/node_modules/formidable/lib/index.js new file mode 100644 index 0000000..7a6e3e1 --- /dev/null +++ b/node_modules/express/node_modules/connect/node_modules/formidable/lib/index.js @@ -0,0 +1,3 @@ +var IncomingForm = require('./incoming_form').IncomingForm; +IncomingForm.IncomingForm = IncomingForm; +module.exports = IncomingForm; diff --git a/node_modules/express/node_modules/connect/node_modules/formidable/lib/multipart_parser.js b/node_modules/express/node_modules/connect/node_modules/formidable/lib/multipart_parser.js new file mode 100644 index 0000000..9ca567c --- /dev/null +++ b/node_modules/express/node_modules/connect/node_modules/formidable/lib/multipart_parser.js @@ -0,0 +1,312 @@ +var Buffer = require('buffer').Buffer, + s = 0, + S = + { PARSER_UNINITIALIZED: s++, + START: s++, + START_BOUNDARY: s++, + HEADER_FIELD_START: s++, + HEADER_FIELD: s++, + HEADER_VALUE_START: s++, + HEADER_VALUE: s++, + HEADER_VALUE_ALMOST_DONE: s++, + HEADERS_ALMOST_DONE: s++, + PART_DATA_START: s++, + PART_DATA: s++, + PART_END: s++, + END: s++, + }, + + f = 1, + F = + { PART_BOUNDARY: f, + LAST_BOUNDARY: f *= 2, + }, + + LF = 10, + CR = 13, + SPACE = 32, + HYPHEN = 45, + COLON = 58, + A = 97, + Z = 122, + + lower = function(c) { + return c | 0x20; + }; + +for (var s in S) { + exports[s] = S[s]; +} + +function MultipartParser() { + this.boundary = null; + this.boundaryChars = null; + this.lookbehind = null; + this.state = S.PARSER_UNINITIALIZED; + + this.index = null; + this.flags = 0; +}; +exports.MultipartParser = MultipartParser; + +MultipartParser.stateToString = function(stateNumber) { + for (var state in S) { + var number = S[state]; + if (number === stateNumber) return state; + } +}; + +MultipartParser.prototype.initWithBoundary = function(str) { + this.boundary = new Buffer(str.length+4); + this.boundary.write('\r\n--', 'ascii', 0); + this.boundary.write(str, 'ascii', 4); + this.lookbehind = new Buffer(this.boundary.length+8); + this.state = S.START; + + this.boundaryChars = {}; + for (var i = 0; i < this.boundary.length; i++) { + this.boundaryChars[this.boundary[i]] = true; + } +}; + +MultipartParser.prototype.write = function(buffer) { + var self = this, + i = 0, + len = buffer.length, + prevIndex = this.index, + index = this.index, + state = this.state, + flags = this.flags, + lookbehind = this.lookbehind, + boundary = this.boundary, + boundaryChars = this.boundaryChars, + boundaryLength = this.boundary.length, + boundaryEnd = boundaryLength - 1, + bufferLength = buffer.length, + c, + cl, + + mark = function(name) { + self[name+'Mark'] = i; + }, + clear = function(name) { + delete self[name+'Mark']; + }, + callback = function(name, buffer, start, end) { + if (start !== undefined && start === end) { + return; + } + + var callbackSymbol = 'on'+name.substr(0, 1).toUpperCase()+name.substr(1); + if (callbackSymbol in self) { + self[callbackSymbol](buffer, start, end); + } + }, + dataCallback = function(name, clear) { + var markSymbol = name+'Mark'; + if (!(markSymbol in self)) { + return; + } + + if (!clear) { + callback(name, buffer, self[markSymbol], buffer.length); + self[markSymbol] = 0; + } else { + callback(name, buffer, self[markSymbol], i); + delete self[markSymbol]; + } + }; + + for (i = 0; i < len; i++) { + c = buffer[i]; + switch (state) { + case S.PARSER_UNINITIALIZED: + return i; + case S.START: + index = 0; + state = S.START_BOUNDARY; + case S.START_BOUNDARY: + if (index == boundary.length - 2) { + if (c != CR) { + return i; + } + index++; + break; + } else if (index - 1 == boundary.length - 2) { + if (c != LF) { + return i; + } + index = 0; + callback('partBegin'); + state = S.HEADER_FIELD_START; + break; + } + + if (c != boundary[index+2]) { + return i; + } + index++; + break; + case S.HEADER_FIELD_START: + state = S.HEADER_FIELD; + mark('headerField'); + index = 0; + case S.HEADER_FIELD: + if (c == CR) { + clear('headerField'); + state = S.HEADERS_ALMOST_DONE; + break; + } + + index++; + if (c == HYPHEN) { + break; + } + + if (c == COLON) { + if (index == 1) { + // empty header field + return i; + } + dataCallback('headerField', true); + state = S.HEADER_VALUE_START; + break; + } + + cl = lower(c); + if (cl < A || cl > Z) { + return i; + } + break; + case S.HEADER_VALUE_START: + if (c == SPACE) { + break; + } + + mark('headerValue'); + state = S.HEADER_VALUE; + case S.HEADER_VALUE: + if (c == CR) { + dataCallback('headerValue', true); + callback('headerEnd'); + state = S.HEADER_VALUE_ALMOST_DONE; + } + break; + case S.HEADER_VALUE_ALMOST_DONE: + if (c != LF) { + return i; + } + state = S.HEADER_FIELD_START; + break; + case S.HEADERS_ALMOST_DONE: + if (c != LF) { + return i; + } + + callback('headersEnd'); + state = S.PART_DATA_START; + break; + case S.PART_DATA_START: + state = S.PART_DATA + mark('partData'); + case S.PART_DATA: + prevIndex = index; + + if (index == 0) { + // boyer-moore derrived algorithm to safely skip non-boundary data + i += boundaryEnd; + while (i < bufferLength && !(buffer[i] in boundaryChars)) { + i += boundaryLength; + } + i -= boundaryEnd; + c = buffer[i]; + } + + if (index < boundary.length) { + if (boundary[index] == c) { + if (index == 0) { + dataCallback('partData', true); + } + index++; + } else { + index = 0; + } + } else if (index == boundary.length) { + index++; + if (c == CR) { + // CR = part boundary + flags |= F.PART_BOUNDARY; + } else if (c == HYPHEN) { + // HYPHEN = end boundary + flags |= F.LAST_BOUNDARY; + } else { + index = 0; + } + } else if (index - 1 == boundary.length) { + if (flags & F.PART_BOUNDARY) { + index = 0; + if (c == LF) { + // unset the PART_BOUNDARY flag + flags &= ~F.PART_BOUNDARY; + callback('partEnd'); + callback('partBegin'); + state = S.HEADER_FIELD_START; + break; + } + } else if (flags & F.LAST_BOUNDARY) { + if (c == HYPHEN) { + callback('partEnd'); + callback('end'); + state = S.END; + } else { + index = 0; + } + } else { + index = 0; + } + } + + if (index > 0) { + // when matching a possible boundary, keep a lookbehind reference + // in case it turns out to be a false lead + lookbehind[index-1] = c; + } else if (prevIndex > 0) { + // if our boundary turned out to be rubbish, the captured lookbehind + // belongs to partData + callback('partData', lookbehind, 0, prevIndex); + prevIndex = 0; + mark('partData'); + + // reconsider the current character even so it interrupted the sequence + // it could be the beginning of a new sequence + i--; + } + + break; + case S.END: + break; + default: + return i; + } + } + + dataCallback('headerField'); + dataCallback('headerValue'); + dataCallback('partData'); + + this.index = index; + this.state = state; + this.flags = flags; + + return len; +}; + +MultipartParser.prototype.end = function() { + if (this.state != S.END) { + return new Error('MultipartParser.end(): stream ended unexpectedly: ' + this.explain()); + } +}; + +MultipartParser.prototype.explain = function() { + return 'state = ' + MultipartParser.stateToString(this.state); +}; diff --git a/node_modules/express/node_modules/connect/node_modules/formidable/lib/querystring_parser.js b/node_modules/express/node_modules/connect/node_modules/formidable/lib/querystring_parser.js new file mode 100644 index 0000000..63f109e --- /dev/null +++ b/node_modules/express/node_modules/connect/node_modules/formidable/lib/querystring_parser.js @@ -0,0 +1,25 @@ +if (global.GENTLY) require = GENTLY.hijack(require); + +// This is a buffering parser, not quite as nice as the multipart one. +// If I find time I'll rewrite this to be fully streaming as well +var querystring = require('querystring'); + +function QuerystringParser() { + this.buffer = ''; +}; +exports.QuerystringParser = QuerystringParser; + +QuerystringParser.prototype.write = function(buffer) { + this.buffer += buffer.toString('ascii'); + return buffer.length; +}; + +QuerystringParser.prototype.end = function() { + var fields = querystring.parse(this.buffer); + for (var field in fields) { + this.onField(field, fields[field]); + } + this.buffer = ''; + + this.onEnd(); +}; \ No newline at end of file diff --git a/node_modules/express/node_modules/connect/node_modules/formidable/lib/util.js b/node_modules/express/node_modules/connect/node_modules/formidable/lib/util.js new file mode 100644 index 0000000..e9493e9 --- /dev/null +++ b/node_modules/express/node_modules/connect/node_modules/formidable/lib/util.js @@ -0,0 +1,6 @@ +// Backwards compatibility ... +try { + module.exports = require('util'); +} catch (e) { + module.exports = require('sys'); +} diff --git a/node_modules/express/node_modules/connect/node_modules/formidable/node-gently/Makefile b/node_modules/express/node_modules/connect/node_modules/formidable/node-gently/Makefile new file mode 100644 index 0000000..01f7140 --- /dev/null +++ b/node_modules/express/node_modules/connect/node_modules/formidable/node-gently/Makefile @@ -0,0 +1,4 @@ +test: + @find test/simple/test-*.js | xargs -n 1 -t node + +.PHONY: test \ No newline at end of file diff --git a/node_modules/express/node_modules/connect/node_modules/formidable/node-gently/Readme.md b/node_modules/express/node_modules/connect/node_modules/formidable/node-gently/Readme.md new file mode 100644 index 0000000..f8f0c66 --- /dev/null +++ b/node_modules/express/node_modules/connect/node_modules/formidable/node-gently/Readme.md @@ -0,0 +1,167 @@ +# Gently + +## Purpose + +A node.js module that helps with stubbing and behavior verification. It allows you to test the most remote and nested corners of your code while keeping being fully unobtrusive. + +## Features + +* Overwrite and stub individual object functions +* Verify that all expected calls have been made in the expected order +* Restore stubbed functions to their original behavior +* Detect object / class names from obj.constructor.name and obj.toString() +* Hijack any required module function or class constructor + +## Installation + +Via [npm](http://github.com/isaacs/npm): + + npm install gently@latest + +## Example + +Make sure your dog is working properly: + + function Dog() {} + + Dog.prototype.seeCat = function() { + this.bark('whuf, whuf'); + this.run(); + } + + Dog.prototype.bark = function(bark) { + require('sys').puts(bark); + } + + var gently = new (require('gently')) + , assert = require('assert') + , dog = new Dog(); + + gently.expect(dog, 'bark', function(bark) { + assert.equal(bark, 'whuf, whuf'); + }); + gently.expect(dog, 'run'); + + dog.seeCat(); + +You can also easily test event emitters with this, for example a simple sequence of 2 events emitted by `fs.WriteStream`: + + var gently = new (require('gently')) + , stream = new (require('fs').WriteStream)('my_file.txt'); + + gently.expect(stream, 'emit', function(event) { + assert.equal(event, 'open'); + }); + + gently.expect(stream, 'emit', function(event) { + assert.equal(event, 'drain'); + }); + +For a full read world example, check out this test case: [test-incoming-form.js](http://github.com/felixge/node-formidable/blob/master/test/simple/test-incoming-form.js) (in [node-formdiable](http://github.com/felixge/node-formidable)). + +## API + +### Gently + +#### new Gently() + +Creates a new gently instance. It listens to the process `'exit'` event to make sure all expectations have been verified. + +#### gently.expect(obj, method, [[count], stubFn]) + +Creates an expectation for an objects method to be called. You can optionally specify the call `count` you are expecting, as well as `stubFn` function that will run instead of the original function. + +Returns a reference to the function that is getting overwritten. + +#### gently.expect([count], stubFn) + +Returns a function that is supposed to be executed `count` times, delegating any calls to the provided `stubFn` function. Naming your stubFn closure will help to properly diagnose errors that are being thrown: + + childProcess.exec('ls', gently.expect(function lsCallback(code) { + assert.equal(0, code); + })); + +#### gently.restore(obj, method) + +Restores an object method that has been previously overwritten using `gently.expect()`. + +#### gently.hijack(realRequire) + +Returns a new require functions that catches a reference to all required modules into `gently.hijacked`. + +To use this function, include a line like this in your `'my-module.js'`. + + if (global.GENTLY) require = GENTLY.hijack(require); + + var sys = require('sys'); + exports.hello = function() { + sys.log('world'); + }; + +Now you can write a test for the module above: + + var gently = global.GENTLY = new (require('gently')) + , myModule = require('./my-module'); + + gently.expect(gently.hijacked.sys, 'log', function(str) { + assert.equal(str, 'world'); + }); + + myModule.hello(); + +#### gently.stub(location, [exportsName]) + +Returns a stub class that will be used instead of the real class from the module at `location` with the given `exportsName`. + +This allows to test an OOP version of the previous example, where `'my-module.js'`. + + if (global.GENTLY) require = GENTLY.hijack(require); + + var World = require('./world'); + + exports.hello = function() { + var world = new World(); + world.hello(); + } + +And `world.js` looks like this: + + var sys = require('sys'); + + function World() { + + } + module.exports = World; + + World.prototype.hello = function() { + sys.log('world'); + }; + +Testing `'my-module.js'` can now easily be accomplished: + + var gently = global.GENTLY = new (require('gently')) + , WorldStub = gently.stub('./world') + , myModule = require('./my-module') + , WORLD; + + gently.expect(WorldStub, 'new', function() { + WORLD = this; + }); + + gently.expect(WORLD, 'hello'); + + myModule.hello(); + +#### gently.hijacked + +An object that holds the references to all hijacked modules. + +#### gently.verify([msg]) + +Verifies that all expectations of this gently instance have been satisfied. If not called manually, this method is called when the process `'exit'` event is fired. + +If `msg` is given, it will appear in any error that might be thrown. + +## License + +Gently is licensed under the MIT license. \ No newline at end of file diff --git a/node_modules/express/node_modules/connect/node_modules/formidable/node-gently/example/dog.js b/node_modules/express/node_modules/connect/node_modules/formidable/node-gently/example/dog.js new file mode 100644 index 0000000..022fae0 --- /dev/null +++ b/node_modules/express/node_modules/connect/node_modules/formidable/node-gently/example/dog.js @@ -0,0 +1,22 @@ +require('../test/common'); +function Dog() {} + +Dog.prototype.seeCat = function() { + this.bark('whuf, whuf'); + this.run(); +} + +Dog.prototype.bark = function(bark) { + require('sys').puts(bark); +} + +var gently = new (require('gently')) + , assert = require('assert') + , dog = new Dog(); + +gently.expect(dog, 'bark', function(bark) { + assert.equal(bark, 'whuf, whuf'); +}); +gently.expect(dog, 'run'); + +dog.seeCat(); \ No newline at end of file diff --git a/node_modules/express/node_modules/connect/node_modules/formidable/node-gently/example/event_emitter.js b/node_modules/express/node_modules/connect/node_modules/formidable/node-gently/example/event_emitter.js new file mode 100644 index 0000000..7def134 --- /dev/null +++ b/node_modules/express/node_modules/connect/node_modules/formidable/node-gently/example/event_emitter.js @@ -0,0 +1,11 @@ +require('../test/common'); +var gently = new (require('gently')) + , stream = new (require('fs').WriteStream)('my_file.txt'); + +gently.expect(stream, 'emit', function(event) { + assert.equal(event, 'open'); +}); + +gently.expect(stream, 'emit', function(event) { + assert.equal(event, 'drain'); +}); \ No newline at end of file diff --git a/node_modules/express/node_modules/connect/node_modules/formidable/node-gently/index.js b/node_modules/express/node_modules/connect/node_modules/formidable/node-gently/index.js new file mode 100644 index 0000000..69122bd --- /dev/null +++ b/node_modules/express/node_modules/connect/node_modules/formidable/node-gently/index.js @@ -0,0 +1 @@ +module.exports = require('./lib/gently'); \ No newline at end of file diff --git a/node_modules/express/node_modules/connect/node_modules/formidable/node-gently/lib/gently/gently.js b/node_modules/express/node_modules/connect/node_modules/formidable/node-gently/lib/gently/gently.js new file mode 100644 index 0000000..8af0e1e --- /dev/null +++ b/node_modules/express/node_modules/connect/node_modules/formidable/node-gently/lib/gently/gently.js @@ -0,0 +1,184 @@ +var path = require('path'); + +function Gently() { + this.expectations = []; + this.hijacked = {}; + + var self = this; + process.addListener('exit', function() { + self.verify('process exit'); + }); +}; +module.exports = Gently; + +Gently.prototype.stub = function(location, exportsName) { + function Stub() { + return Stub['new'].apply(this, arguments); + }; + + Stub['new'] = function () {}; + + var stubName = 'require('+JSON.stringify(location)+')'; + if (exportsName) { + stubName += '.'+exportsName; + } + + Stub.prototype.toString = Stub.toString = function() { + return stubName; + }; + + var exports = this.hijacked[location] || {}; + if (exportsName) { + exports[exportsName] = Stub; + } else { + exports = Stub; + } + + this.hijacked[location] = exports; + return Stub; +}; + +Gently.prototype.hijack = function(realRequire) { + var self = this; + return function(location) { + return self.hijacked[location] = (self.hijacked[location]) + ? self.hijacked[location] + : realRequire(location); + }; +}; + +Gently.prototype.expect = function(obj, method, count, stubFn) { + if (typeof obj != 'function' && typeof obj != 'object' && typeof obj != 'number') { + throw new Error + ( 'Bad 1st argument for gently.expect(), ' + + 'object, function, or number expected, got: '+(typeof obj) + ); + } else if (typeof obj == 'function' && (typeof method != 'string')) { + // expect(stubFn) interface + stubFn = obj; + obj = null; + method = null; + count = 1; + } else if (typeof method == 'function') { + // expect(count, stubFn) interface + count = obj; + stubFn = method; + obj = null; + method = null; + } else if (typeof count == 'function') { + // expect(obj, method, stubFn) interface + stubFn = count; + count = 1; + } else if (count === undefined) { + // expect(obj, method) interface + count = 1; + } + + var name = this._name(obj, method, stubFn); + this.expectations.push({obj: obj, method: method, stubFn: stubFn, name: name, count: count}); + + var self = this; + function delegate() { + return self._stubFn(this, obj, method, name, Array.prototype.slice.call(arguments)); + } + + if (!obj) { + return delegate; + } + + var original = (obj[method]) + ? obj[method]._original || obj[method] + : undefined; + + obj[method] = delegate; + return obj[method]._original = original; +}; + +Gently.prototype.restore = function(obj, method) { + if (!obj[method] || !obj[method]._original) { + throw new Error(this._name(obj, method)+' is not gently stubbed'); + } + obj[method] = obj[method]._original; +}; + +Gently.prototype.verify = function(msg) { + if (!this.expectations.length) { + return; + } + + var validExpectations = []; + for (var i = 0, l = this.expectations.length; i < l; i++) { + var expectation = this.expectations[i]; + + if (expectation.count > 0) { + validExpectations.push(expectation); + } + } + + this.expectations = []; // reset so that no duplicate verification attempts are made + + if (!validExpectations.length) { + return; + } + + var expectation = validExpectations[0]; + + throw new Error + ( 'Expected call to '+expectation.name+' did not happen' + + ( (msg) + ? ' ('+msg+')' + : '' + ) + ); +}; + +Gently.prototype._stubFn = function(self, obj, method, name, args) { + var expectation = this.expectations[0], obj, method; + + if (!expectation) { + throw new Error('Unexpected call to '+name+', no call was expected'); + } + + if (expectation.obj !== obj || expectation.method !== method) { + throw new Error('Unexpected call to '+name+', expected call to '+ expectation.name); + } + + expectation.count -= 1; + if (expectation.count === 0) { + this.expectations.shift(); + + // autorestore original if its not a closure + // and no more expectations on that object + var has_more_expectations = this.expectations.reduce(function (memo, expectation) { + return memo || (expectation.obj === obj && expectation.method === method); + }, false); + if (obj !== null && method !== null && !has_more_expectations) { + if (typeof obj[method]._original !== 'undefined') { + obj[method] = obj[method]._original; + delete obj[method]._original; + } else { + delete obj[method]; + } + } + } + + if (expectation.stubFn) { + return expectation.stubFn.apply(self, args); + } +}; + +Gently.prototype._name = function(obj, method, stubFn) { + if (obj) { + var objectName = obj.toString(); + if (objectName == '[object Object]' && obj.constructor.name) { + objectName = '['+obj.constructor.name+']'; + } + return (objectName)+'.'+method+'()'; + } + + if (stubFn.name) { + return stubFn.name+'()'; + } + + return '>> '+stubFn.toString()+' <<'; +}; diff --git a/node_modules/express/node_modules/connect/node_modules/formidable/node-gently/lib/gently/index.js b/node_modules/express/node_modules/connect/node_modules/formidable/node-gently/lib/gently/index.js new file mode 100644 index 0000000..64c1977 --- /dev/null +++ b/node_modules/express/node_modules/connect/node_modules/formidable/node-gently/lib/gently/index.js @@ -0,0 +1 @@ +module.exports = require('./gently'); \ No newline at end of file diff --git a/node_modules/express/node_modules/connect/node_modules/formidable/node-gently/package.json b/node_modules/express/node_modules/connect/node_modules/formidable/node-gently/package.json new file mode 100644 index 0000000..9c1b7a0 --- /dev/null +++ b/node_modules/express/node_modules/connect/node_modules/formidable/node-gently/package.json @@ -0,0 +1,14 @@ +{ + "name": "gently", + "version": "0.9.2", + "directories": { + "lib": "./lib/gently" + }, + "main": "./lib/gently/index", + "dependencies": {}, + "devDependencies": {}, + "engines": { + "node": "*" + }, + "optionalDependencies": {} +} diff --git a/node_modules/express/node_modules/connect/node_modules/formidable/node-gently/test/common.js b/node_modules/express/node_modules/connect/node_modules/formidable/node-gently/test/common.js new file mode 100644 index 0000000..978b5c5 --- /dev/null +++ b/node_modules/express/node_modules/connect/node_modules/formidable/node-gently/test/common.js @@ -0,0 +1,8 @@ +var path = require('path') + , sys = require('sys'); + +require.paths.unshift(path.dirname(__dirname)+'/lib'); + +global.puts = sys.puts; +global.p = function() {sys.error(sys.inspect.apply(null, arguments))};; +global.assert = require('assert'); \ No newline at end of file diff --git a/node_modules/express/node_modules/connect/node_modules/formidable/node-gently/test/simple/test-gently.js b/node_modules/express/node_modules/connect/node_modules/formidable/node-gently/test/simple/test-gently.js new file mode 100644 index 0000000..4f8fe2d --- /dev/null +++ b/node_modules/express/node_modules/connect/node_modules/formidable/node-gently/test/simple/test-gently.js @@ -0,0 +1,348 @@ +require('../common'); +var Gently = require('gently') + , gently; + +function test(test) { + process.removeAllListeners('exit'); + gently = new Gently(); + test(); +} + +test(function constructor() { + assert.deepEqual(gently.expectations, []); + assert.deepEqual(gently.hijacked, {}); + assert.equal(gently.constructor.name, 'Gently'); +}); + +test(function expectBadArgs() { + var BAD_ARG = 'oh no'; + try { + gently.expect(BAD_ARG); + assert.ok(false, 'throw needs to happen'); + } catch (e) { + assert.equal(e.message, 'Bad 1st argument for gently.expect(), object, function, or number expected, got: '+(typeof BAD_ARG)); + } +}); + +test(function expectObjMethod() { + var OBJ = {}, NAME = 'foobar'; + OBJ.foo = function(x) { + return x; + }; + + gently._name = function() { + return NAME; + }; + + var original = OBJ.foo + , stubFn = function() {}; + + (function testAddOne() { + assert.strictEqual(gently.expect(OBJ, 'foo', stubFn), original); + + assert.equal(gently.expectations.length, 1); + var expectation = gently.expectations[0]; + assert.strictEqual(expectation.obj, OBJ); + assert.strictEqual(expectation.method, 'foo'); + assert.strictEqual(expectation.stubFn, stubFn); + assert.strictEqual(expectation.name, NAME); + assert.strictEqual(OBJ.foo._original, original); + })(); + + (function testAddTwo() { + gently.expect(OBJ, 'foo', 2, stubFn); + assert.equal(gently.expectations.length, 2); + assert.strictEqual(OBJ.foo._original, original); + })(); + + (function testAddOneWithoutMock() { + gently.expect(OBJ, 'foo'); + assert.equal(gently.expectations.length, 3); + })(); + + var stubFnCalled = 0, SELF = {}; + gently._stubFn = function(self, obj, method, name, args) { + stubFnCalled++; + assert.strictEqual(self, SELF); + assert.strictEqual(obj, OBJ); + assert.strictEqual(method, 'foo'); + assert.strictEqual(name, NAME); + assert.deepEqual(args, [1, 2]); + return 23; + }; + assert.equal(OBJ.foo.apply(SELF, [1, 2]), 23); + assert.equal(stubFnCalled, 1); +}); + +test(function expectClosure() { + var NAME = 'MY CLOSURE'; + function closureFn() {}; + + gently._name = function() { + return NAME; + }; + + var fn = gently.expect(closureFn); + assert.equal(gently.expectations.length, 1); + var expectation = gently.expectations[0]; + assert.strictEqual(expectation.obj, null); + assert.strictEqual(expectation.method, null); + assert.strictEqual(expectation.stubFn, closureFn); + assert.strictEqual(expectation.name, NAME); + + var stubFnCalled = 0, SELF = {}; + gently._stubFn = function(self, obj, method, name, args) { + stubFnCalled++; + assert.strictEqual(self, SELF); + assert.strictEqual(obj, null); + assert.strictEqual(method, null); + assert.strictEqual(name, NAME); + assert.deepEqual(args, [1, 2]); + return 23; + }; + assert.equal(fn.apply(SELF, [1, 2]), 23); + assert.equal(stubFnCalled, 1); +}); + +test(function expectClosureCount() { + var stubFnCalled = 0; + function closureFn() {stubFnCalled++}; + + var fn = gently.expect(2, closureFn); + assert.equal(gently.expectations.length, 1); + fn(); + assert.equal(gently.expectations.length, 1); + fn(); + assert.equal(stubFnCalled, 2); +}); + +test(function restore() { + var OBJ = {}, NAME = '[my object].myFn()'; + OBJ.foo = function(x) { + return x; + }; + + gently._name = function() { + return NAME; + }; + + var original = OBJ.foo; + gently.expect(OBJ, 'foo'); + gently.restore(OBJ, 'foo'); + assert.strictEqual(OBJ.foo, original); + + (function testError() { + try { + gently.restore(OBJ, 'foo'); + assert.ok(false, 'throw needs to happen'); + } catch (e) { + assert.equal(e.message, NAME+' is not gently stubbed'); + } + })(); +}); + +test(function _stubFn() { + var OBJ1 = {toString: function() {return '[OBJ 1]'}} + , OBJ2 = {toString: function() {return '[OBJ 2]'}, foo: function () {return 'bar';}} + , SELF = {}; + + gently.expect(OBJ1, 'foo', function(x) { + assert.strictEqual(this, SELF); + return x * 2; + }); + + assert.equal(gently._stubFn(SELF, OBJ1, 'foo', 'dummy_name', [5]), 10); + + (function testAutorestore() { + assert.equal(OBJ2.foo(), 'bar'); + + gently.expect(OBJ2, 'foo', function() { + return 'stubbed foo'; + }); + + gently.expect(OBJ2, 'foo', function() { + return "didn't restore yet"; + }); + + assert.equal(gently._stubFn(SELF, OBJ2, 'foo', 'dummy_name', []), 'stubbed foo'); + assert.equal(gently._stubFn(SELF, OBJ2, 'foo', 'dummy_name', []), "didn't restore yet"); + assert.equal(OBJ2.foo(), 'bar'); + assert.deepEqual(gently.expectations, []); + })(); + + (function testNoMoreCallExpected() { + try { + gently._stubFn(SELF, OBJ1, 'foo', 'dummy_name', [5]); + assert.ok(false, 'throw needs to happen'); + } catch (e) { + assert.equal(e.message, 'Unexpected call to dummy_name, no call was expected'); + } + })(); + + (function testDifferentCallExpected() { + gently.expect(OBJ2, 'bar'); + try { + gently._stubFn(SELF, OBJ1, 'foo', 'dummy_name', [5]); + assert.ok(false, 'throw needs to happen'); + } catch (e) { + assert.equal(e.message, 'Unexpected call to dummy_name, expected call to '+gently._name(OBJ2, 'bar')); + } + + assert.equal(gently.expectations.length, 1); + })(); + + (function testNoMockCallback() { + OBJ2.bar(); + assert.equal(gently.expectations.length, 0); + })(); +}); + +test(function stub() { + var LOCATION = './my_class'; + + (function testRegular() { + var Stub = gently.stub(LOCATION); + assert.ok(Stub instanceof Function); + assert.strictEqual(gently.hijacked[LOCATION], Stub); + assert.ok(Stub['new'] instanceof Function); + assert.equal(Stub.toString(), 'require('+JSON.stringify(LOCATION)+')'); + + (function testConstructor() { + var newCalled = 0 + , STUB + , ARGS = ['foo', 'bar']; + + Stub['new'] = function(a, b) { + assert.equal(a, ARGS[0]); + assert.equal(b, ARGS[1]); + newCalled++; + STUB = this; + }; + + var stub = new Stub(ARGS[0], ARGS[1]); + assert.strictEqual(stub, STUB); + assert.equal(newCalled, 1); + assert.equal(stub.toString(), 'require('+JSON.stringify(LOCATION)+')'); + })(); + + (function testUseReturnValueAsInstance() { + var R = {}; + + Stub['new'] = function() { + return R; + }; + + var stub = new Stub(); + assert.strictEqual(stub, R); + + })(); + })(); + + var EXPORTS_NAME = 'MyClass'; + test(function testExportsName() { + var Stub = gently.stub(LOCATION, EXPORTS_NAME); + assert.strictEqual(gently.hijacked[LOCATION][EXPORTS_NAME], Stub); + assert.equal(Stub.toString(), 'require('+JSON.stringify(LOCATION)+').'+EXPORTS_NAME); + + (function testConstructor() { + var stub = new Stub(); + assert.equal(Stub.toString(), 'require('+JSON.stringify(LOCATION)+').'+EXPORTS_NAME); + })(); + }); +}); + +test(function hijack() { + var LOCATION = './foo' + , REQUIRE_CALLS = 0 + , EXPORTS = {} + , REQUIRE = function() { + REQUIRE_CALLS++; + return EXPORTS; + }; + + var hijackedRequire = gently.hijack(REQUIRE); + hijackedRequire(LOCATION); + assert.strictEqual(gently.hijacked[LOCATION], EXPORTS); + + assert.equal(REQUIRE_CALLS, 1); + + // make sure we are caching the hijacked module + hijackedRequire(LOCATION); + assert.equal(REQUIRE_CALLS, 1); +}); + +test(function verify() { + var OBJ = {toString: function() {return '[OBJ]'}}; + gently.verify(); + + gently.expect(OBJ, 'foo'); + try { + gently.verify(); + assert.ok(false, 'throw needs to happen'); + } catch (e) { + assert.equal(e.message, 'Expected call to [OBJ].foo() did not happen'); + } + + try { + gently.verify('foo'); + assert.ok(false, 'throw needs to happen'); + } catch (e) { + assert.equal(e.message, 'Expected call to [OBJ].foo() did not happen (foo)'); + } +}); + +test(function processExit() { + var verifyCalled = 0; + gently.verify = function(msg) { + verifyCalled++; + assert.equal(msg, 'process exit'); + }; + + process.emit('exit'); + assert.equal(verifyCalled, 1); +}); + +test(function _name() { + (function testNamedClass() { + function Foo() {}; + var foo = new Foo(); + assert.equal(gently._name(foo, 'bar'), '[Foo].bar()'); + })(); + + (function testToStringPreference() { + function Foo() {}; + Foo.prototype.toString = function() { + return '[Superman 123]'; + }; + var foo = new Foo(); + assert.equal(gently._name(foo, 'bar'), '[Superman 123].bar()'); + })(); + + (function testUnamedClass() { + var Foo = function() {}; + var foo = new Foo(); + assert.equal(gently._name(foo, 'bar'), foo.toString()+'.bar()'); + })(); + + (function testNamedClosure() { + function myClosure() {}; + assert.equal(gently._name(null, null, myClosure), myClosure.name+'()'); + })(); + + (function testUnamedClosure() { + var myClosure = function() {2+2 == 5}; + assert.equal(gently._name(null, null, myClosure), '>> '+myClosure.toString()+' <<'); + })(); +}); + +test(function verifyExpectNone() { + var OBJ = {toString: function() {return '[OBJ]'}}; + gently.verify(); + + gently.expect(OBJ, 'foo', 0); + try { + gently.verify(); + } catch (e) { + assert.fail('Exception should not have been thrown'); + } +}); \ No newline at end of file diff --git a/node_modules/express/node_modules/connect/node_modules/formidable/package.json b/node_modules/express/node_modules/connect/node_modules/formidable/package.json new file mode 100644 index 0000000..4bc9057 --- /dev/null +++ b/node_modules/express/node_modules/connect/node_modules/formidable/package.json @@ -0,0 +1,32 @@ +{ + "name": "formidable", + "version": "1.0.11", + "dependencies": {}, + "devDependencies": { + "gently": "0.8.0", + "findit": "0.1.1", + "hashish": "0.0.4", + "urun": "0.0.4", + "utest": "0.0.3" + }, + "directories": { + "lib": "./lib" + }, + "main": "./lib/index", + "scripts": { + "test": "make test" + }, + "engines": { + "node": "*" + }, + "optionalDependencies": {}, + "readme": "# Formidable\n\n[![Build Status](https://secure.travis-ci.org/felixge/node-formidable.png?branch=master)](http://travis-ci.org/felixge/node-formidable)\n\n## Purpose\n\nA node.js module for parsing form data, especially file uploads.\n\n## Current status\n\nThis module was developed for [Transloadit](http://transloadit.com/), a service focused on uploading\nand encoding images and videos. It has been battle-tested against hundreds of GB of file uploads from\na large variety of clients and is considered production-ready.\n\n## Features\n\n* Fast (~500mb/sec), non-buffering multipart parser\n* Automatically writing file uploads to disk\n* Low memory footprint\n* Graceful error handling\n* Very high test coverage\n\n## Changelog\n\n### v1.0.9\n\n* Emit progress when content length header parsed (Tim Koschützki)\n* Fix Readme syntax due to GitHub changes (goob)\n* Replace references to old 'sys' module in Readme with 'util' (Peter Sugihara)\n\n### v1.0.8\n\n* Strip potentially unsafe characters when using `keepExtensions: true`.\n* Switch to utest / urun for testing\n* Add travis build\n\n### v1.0.7\n\n* Remove file from package that was causing problems when installing on windows. (#102)\n* Fix typos in Readme (Jason Davies).\n\n### v1.0.6\n\n* Do not default to the default to the field name for file uploads where\n filename=\"\".\n\n### v1.0.5\n\n* Support filename=\"\" in multipart parts\n* Explain unexpected end() errors in parser better\n\n**Note:** Starting with this version, formidable emits 'file' events for empty\nfile input fields. Previously those were incorrectly emitted as regular file\ninput fields with value = \"\".\n\n### v1.0.4\n\n* Detect a good default tmp directory regardless of platform. (#88)\n\n### v1.0.3\n\n* Fix problems with utf8 characters (#84) / semicolons in filenames (#58)\n* Small performance improvements\n* New test suite and fixture system\n\n### v1.0.2\n\n* Exclude node\\_modules folder from git\n* Implement new `'aborted'` event\n* Fix files in example folder to work with recent node versions\n* Make gently a devDependency\n\n[See Commits](https://github.com/felixge/node-formidable/compare/v1.0.1...v1.0.2)\n\n### v1.0.1\n\n* Fix package.json to refer to proper main directory. (#68, Dean Landolt)\n\n[See Commits](https://github.com/felixge/node-formidable/compare/v1.0.0...v1.0.1)\n\n### v1.0.0\n\n* Add support for multipart boundaries that are quoted strings. (Jeff Craig)\n\nThis marks the beginning of development on version 2.0 which will include\nseveral architectural improvements.\n\n[See Commits](https://github.com/felixge/node-formidable/compare/v0.9.11...v1.0.0)\n\n### v0.9.11\n\n* Emit `'progress'` event when receiving data, regardless of parsing it. (Tim Koschützki)\n* Use [W3C FileAPI Draft](http://dev.w3.org/2006/webapi/FileAPI/) properties for File class\n\n**Important:** The old property names of the File class will be removed in a\nfuture release.\n\n[See Commits](https://github.com/felixge/node-formidable/compare/v0.9.10...v0.9.11)\n\n### Older releases\n\nThese releases were done before starting to maintain the above Changelog:\n\n* [v0.9.10](https://github.com/felixge/node-formidable/compare/v0.9.9...v0.9.10)\n* [v0.9.9](https://github.com/felixge/node-formidable/compare/v0.9.8...v0.9.9)\n* [v0.9.8](https://github.com/felixge/node-formidable/compare/v0.9.7...v0.9.8)\n* [v0.9.7](https://github.com/felixge/node-formidable/compare/v0.9.6...v0.9.7)\n* [v0.9.6](https://github.com/felixge/node-formidable/compare/v0.9.5...v0.9.6)\n* [v0.9.5](https://github.com/felixge/node-formidable/compare/v0.9.4...v0.9.5)\n* [v0.9.4](https://github.com/felixge/node-formidable/compare/v0.9.3...v0.9.4)\n* [v0.9.3](https://github.com/felixge/node-formidable/compare/v0.9.2...v0.9.3)\n* [v0.9.2](https://github.com/felixge/node-formidable/compare/v0.9.1...v0.9.2)\n* [v0.9.1](https://github.com/felixge/node-formidable/compare/v0.9.0...v0.9.1)\n* [v0.9.0](https://github.com/felixge/node-formidable/compare/v0.8.0...v0.9.0)\n* [v0.9.0](https://github.com/felixge/node-formidable/compare/v0.8.0...v0.9.0)\n* [v0.9.0](https://github.com/felixge/node-formidable/compare/v0.8.0...v0.9.0)\n* [v0.9.0](https://github.com/felixge/node-formidable/compare/v0.8.0...v0.9.0)\n* [v0.9.0](https://github.com/felixge/node-formidable/compare/v0.8.0...v0.9.0)\n* [v0.9.0](https://github.com/felixge/node-formidable/compare/v0.8.0...v0.9.0)\n* [v0.9.0](https://github.com/felixge/node-formidable/compare/v0.8.0...v0.9.0)\n* [v0.9.0](https://github.com/felixge/node-formidable/compare/v0.8.0...v0.9.0)\n* [v0.1.0](https://github.com/felixge/node-formidable/commits/v0.1.0)\n\n## Installation\n\nVia [npm](http://github.com/isaacs/npm):\n\n npm install formidable@latest\n\nManually:\n\n git clone git://github.com/felixge/node-formidable.git formidable\n vim my.js\n # var formidable = require('./formidable');\n\nNote: Formidable requires [gently](http://github.com/felixge/node-gently) to run the unit tests, but you won't need it for just using the library.\n\n## Example\n\nParse an incoming file upload.\n\n var formidable = require('formidable'),\n http = require('http'),\n\n util = require('util');\n\n http.createServer(function(req, res) {\n if (req.url == '/upload' && req.method.toLowerCase() == 'post') {\n // parse a file upload\n var form = new formidable.IncomingForm();\n form.parse(req, function(err, fields, files) {\n res.writeHead(200, {'content-type': 'text/plain'});\n res.write('received upload:\\n\\n');\n res.end(util.inspect({fields: fields, files: files}));\n });\n return;\n }\n\n // show a file upload form\n res.writeHead(200, {'content-type': 'text/html'});\n res.end(\n '
    '+\n '
    '+\n '
    '+\n ''+\n '
    '\n );\n }).listen(80);\n\n## API\n\n### formidable.IncomingForm\n\n__new formidable.IncomingForm()__\n\nCreates a new incoming form.\n\n__incomingForm.encoding = 'utf-8'__\n\nThe encoding to use for incoming form fields.\n\n__incomingForm.uploadDir = process.env.TMP || '/tmp' || process.cwd()__\n\nThe directory for placing file uploads in. You can move them later on using\n`fs.rename()`. The default directory is picked at module load time depending on\nthe first existing directory from those listed above.\n\n__incomingForm.keepExtensions = false__\n\nIf you want the files written to `incomingForm.uploadDir` to include the extensions of the original files, set this property to `true`.\n\n__incomingForm.type__\n\nEither 'multipart' or 'urlencoded' depending on the incoming request.\n\n__incomingForm.maxFieldsSize = 2 * 1024 * 1024__\n\nLimits the amount of memory a field (not file) can allocate in bytes.\nIf this value is exceeded, an `'error'` event is emitted. The default\nsize is 2MB.\n\n__incomingForm.hash = false__\n\nIf you want checksums calculated for incoming files, set this to either `'sha1'` or `'md5'`.\n\n__incomingForm.bytesReceived__\n\nThe amount of bytes received for this form so far.\n\n__incomingForm.bytesExpected__\n\nThe expected number of bytes in this form.\n\n__incomingForm.parse(request, [cb])__\n\nParses an incoming node.js `request` containing form data. If `cb` is provided, all fields an files are collected and passed to the callback:\n\n incomingForm.parse(req, function(err, fields, files) {\n // ...\n });\n\n__incomingForm.onPart(part)__\n\nYou may overwrite this method if you are interested in directly accessing the multipart stream. Doing so will disable any `'field'` / `'file'` events processing which would occur otherwise, making you fully responsible for handling the processing.\n\n incomingForm.onPart = function(part) {\n part.addListener('data', function() {\n // ...\n });\n }\n\nIf you want to use formidable to only handle certain parts for you, you can do so:\n\n incomingForm.onPart = function(part) {\n if (!part.filename) {\n // let formidable handle all non-file parts\n incomingForm.handlePart(part);\n }\n }\n\nCheck the code in this method for further inspiration.\n\n__Event: 'progress' (bytesReceived, bytesExpected)__\n\nEmitted after each incoming chunk of data that has been parsed. Can be used to roll your own progress bar.\n\n__Event: 'field' (name, value)__\n\nEmitted whenever a field / value pair has been received.\n\n__Event: 'fileBegin' (name, file)__\n\nEmitted whenever a new file is detected in the upload stream. Use this even if\nyou want to stream the file to somewhere else while buffering the upload on\nthe file system.\n\n__Event: 'file' (name, file)__\n\nEmitted whenever a field / file pair has been received. `file` is an instance of `File`.\n\n__Event: 'error' (err)__\n\nEmitted when there is an error processing the incoming form. A request that experiences an error is automatically paused, you will have to manually call `request.resume()` if you want the request to continue firing `'data'` events.\n\n__Event: 'aborted'__\n\nEmitted when the request was aborted by the user. Right now this can be due to a 'timeout' or 'close' event on the socket. In the future there will be a separate 'timeout' event (needs a change in the node core).\n\n__Event: 'end' ()__\n\nEmitted when the entire request has been received, and all contained files have finished flushing to disk. This is a great place for you to send your response.\n\n### formidable.File\n\n__file.size = 0__\n\nThe size of the uploaded file in bytes. If the file is still being uploaded (see `'fileBegin'` event), this property says how many bytes of the file have been written to disk yet.\n\n__file.path = null__\n\nThe path this file is being written to. You can modify this in the `'fileBegin'` event in\ncase you are unhappy with the way formidable generates a temporary path for your files.\n\n__file.name = null__\n\nThe name this file had according to the uploading client.\n\n__file.type = null__\n\nThe mime type of this file, according to the uploading client.\n\n__file.lastModifiedDate = null__\n\nA date object (or `null`) containing the time this file was last written to. Mostly\nhere for compatibility with the [W3C File API Draft](http://dev.w3.org/2006/webapi/FileAPI/).\n\n__file.hash = null__\n\nIf hash calculation was set, you can read the hex digest out of this var.\n\n## License\n\nFormidable is licensed under the MIT license.\n\n## Ports\n\n* [multipart-parser](http://github.com/FooBarWidget/multipart-parser): a C++ parser based on formidable\n\n## Credits\n\n* [Ryan Dahl](http://twitter.com/ryah) for his work on [http-parser](http://github.com/ry/http-parser) which heavily inspired multipart_parser.js\n", + "readmeFilename": "Readme.md", + "_id": "formidable@1.0.11", + "description": "[![Build Status](https://secure.travis-ci.org/felixge/node-formidable.png?branch=master)](http://travis-ci.org/felixge/node-formidable)", + "dist": { + "shasum": "460c37fa141d48701858c7fcd1218edfa691c57d" + }, + "_from": "formidable@1.0.11", + "_resolved": "https://registry.npmjs.org/formidable/-/formidable-1.0.11.tgz" +} diff --git a/node_modules/express/node_modules/connect/node_modules/formidable/test/common.js b/node_modules/express/node_modules/connect/node_modules/formidable/test/common.js new file mode 100644 index 0000000..eb432ad --- /dev/null +++ b/node_modules/express/node_modules/connect/node_modules/formidable/test/common.js @@ -0,0 +1,19 @@ +var mysql = require('..'); +var path = require('path'); + +var root = path.join(__dirname, '../'); +exports.dir = { + root : root, + lib : root + '/lib', + fixture : root + '/test/fixture', + tmp : root + '/test/tmp', +}; + +exports.port = 13532; + +exports.formidable = require('..'); +exports.assert = require('assert'); + +exports.require = function(lib) { + return require(exports.dir.lib + '/' + lib); +}; diff --git a/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/file/funkyfilename.txt b/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/file/funkyfilename.txt new file mode 100644 index 0000000..e7a4785 --- /dev/null +++ b/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/file/funkyfilename.txt @@ -0,0 +1 @@ +I am a text file with a funky name! diff --git a/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/file/plain.txt b/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/file/plain.txt new file mode 100644 index 0000000..9b6903e --- /dev/null +++ b/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/file/plain.txt @@ -0,0 +1 @@ +I am a plain text file diff --git a/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/http/special-chars-in-filename/info.md b/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/http/special-chars-in-filename/info.md new file mode 100644 index 0000000..3c9dbe3 --- /dev/null +++ b/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/http/special-chars-in-filename/info.md @@ -0,0 +1,3 @@ +* Opera does not allow submitting this file, it shows a warning to the + user that the file could not be found instead. Tested in 9.8, 11.51 on OSX. + Reported to Opera on 08.09.2011 (tracking email DSK-346009@bugs.opera.com). diff --git a/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/js/no-filename.js b/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/js/no-filename.js new file mode 100644 index 0000000..0bae449 --- /dev/null +++ b/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/js/no-filename.js @@ -0,0 +1,3 @@ +module.exports['generic.http'] = [ + {type: 'file', name: 'upload', filename: '', fixture: 'plain.txt'}, +]; diff --git a/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/js/special-chars-in-filename.js b/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/js/special-chars-in-filename.js new file mode 100644 index 0000000..eb76fdc --- /dev/null +++ b/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/js/special-chars-in-filename.js @@ -0,0 +1,21 @@ +var properFilename = 'funkyfilename.txt'; + +function expect(filename) { + return [ + {type: 'field', name: 'title', value: 'Weird filename'}, + {type: 'file', name: 'upload', filename: filename, fixture: properFilename}, + ]; +}; + +var webkit = " ? % * | \" < > . ? ; ' @ # $ ^ & ( ) - _ = + { } [ ] ` ~.txt"; +var ffOrIe = " ? % * | \" < > . ☃ ; ' @ # $ ^ & ( ) - _ = + { } [ ] ` ~.txt"; + +module.exports = { + 'osx-chrome-13.http' : expect(webkit), + 'osx-firefox-3.6.http' : expect(ffOrIe), + 'osx-safari-5.http' : expect(webkit), + 'xp-chrome-12.http' : expect(webkit), + 'xp-ie-7.http' : expect(ffOrIe), + 'xp-ie-8.http' : expect(ffOrIe), + 'xp-safari-5.http' : expect(webkit), +}; diff --git a/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/multipart.js b/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/multipart.js new file mode 100644 index 0000000..a476169 --- /dev/null +++ b/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/multipart.js @@ -0,0 +1,72 @@ +exports['rfc1867'] = + { boundary: 'AaB03x', + raw: + '--AaB03x\r\n'+ + 'content-disposition: form-data; name="field1"\r\n'+ + '\r\n'+ + 'Joe Blow\r\nalmost tricked you!\r\n'+ + '--AaB03x\r\n'+ + 'content-disposition: form-data; name="pics"; filename="file1.txt"\r\n'+ + 'Content-Type: text/plain\r\n'+ + '\r\n'+ + '... contents of file1.txt ...\r\r\n'+ + '--AaB03x--\r\n', + parts: + [ { headers: { + 'content-disposition': 'form-data; name="field1"', + }, + data: 'Joe Blow\r\nalmost tricked you!', + }, + { headers: { + 'content-disposition': 'form-data; name="pics"; filename="file1.txt"', + 'Content-Type': 'text/plain', + }, + data: '... contents of file1.txt ...\r', + } + ] + }; + +exports['noTrailing\r\n'] = + { boundary: 'AaB03x', + raw: + '--AaB03x\r\n'+ + 'content-disposition: form-data; name="field1"\r\n'+ + '\r\n'+ + 'Joe Blow\r\nalmost tricked you!\r\n'+ + '--AaB03x\r\n'+ + 'content-disposition: form-data; name="pics"; filename="file1.txt"\r\n'+ + 'Content-Type: text/plain\r\n'+ + '\r\n'+ + '... contents of file1.txt ...\r\r\n'+ + '--AaB03x--', + parts: + [ { headers: { + 'content-disposition': 'form-data; name="field1"', + }, + data: 'Joe Blow\r\nalmost tricked you!', + }, + { headers: { + 'content-disposition': 'form-data; name="pics"; filename="file1.txt"', + 'Content-Type': 'text/plain', + }, + data: '... contents of file1.txt ...\r', + } + ] + }; + +exports['emptyHeader'] = + { boundary: 'AaB03x', + raw: + '--AaB03x\r\n'+ + 'content-disposition: form-data; name="field1"\r\n'+ + ': foo\r\n'+ + '\r\n'+ + 'Joe Blow\r\nalmost tricked you!\r\n'+ + '--AaB03x\r\n'+ + 'content-disposition: form-data; name="pics"; filename="file1.txt"\r\n'+ + 'Content-Type: text/plain\r\n'+ + '\r\n'+ + '... contents of file1.txt ...\r\r\n'+ + '--AaB03x--\r\n', + expectError: true, + }; diff --git a/node_modules/express/node_modules/connect/node_modules/formidable/test/integration/test-fixtures.js b/node_modules/express/node_modules/connect/node_modules/formidable/test/integration/test-fixtures.js new file mode 100644 index 0000000..66ad259 --- /dev/null +++ b/node_modules/express/node_modules/connect/node_modules/formidable/test/integration/test-fixtures.js @@ -0,0 +1,89 @@ +var hashish = require('hashish'); +var fs = require('fs'); +var findit = require('findit'); +var path = require('path'); +var http = require('http'); +var net = require('net'); +var assert = require('assert'); + +var common = require('../common'); +var formidable = common.formidable; + +var server = http.createServer(); +server.listen(common.port, findFixtures); + +function findFixtures() { + var fixtures = []; + findit + .sync(common.dir.fixture + '/js') + .forEach(function(jsPath) { + if (!/\.js$/.test(jsPath)) return; + + var group = path.basename(jsPath, '.js'); + hashish.forEach(require(jsPath), function(fixture, name) { + fixtures.push({ + name : group + '/' + name, + fixture : fixture, + }); + }); + }); + + testNext(fixtures); +} + +function testNext(fixtures) { + var fixture = fixtures.shift(); + if (!fixture) return server.close(); + + var name = fixture.name; + var fixture = fixture.fixture; + + uploadFixture(name, function(err, parts) { + if (err) throw err; + + fixture.forEach(function(expectedPart, i) { + var parsedPart = parts[i]; + assert.equal(parsedPart.type, expectedPart.type); + assert.equal(parsedPart.name, expectedPart.name); + + if (parsedPart.type === 'file') { + var filename = parsedPart.value.name; + assert.equal(filename, expectedPart.filename); + } + }); + + testNext(fixtures); + }); +}; + +function uploadFixture(name, cb) { + server.once('request', function(req, res) { + var form = new formidable.IncomingForm(); + form.uploadDir = common.dir.tmp; + form.parse(req); + + function callback() { + var realCallback = cb; + cb = function() {}; + realCallback.apply(null, arguments); + } + + var parts = []; + form + .on('error', callback) + .on('fileBegin', function(name, value) { + parts.push({type: 'file', name: name, value: value}); + }) + .on('field', function(name, value) { + parts.push({type: 'field', name: name, value: value}); + }) + .on('end', function() { + callback(null, parts); + }); + }); + + var socket = net.createConnection(common.port); + var file = fs.createReadStream(common.dir.fixture + '/http/' + name); + + file.pipe(socket); +} diff --git a/node_modules/express/node_modules/connect/node_modules/formidable/test/legacy/common.js b/node_modules/express/node_modules/connect/node_modules/formidable/test/legacy/common.js new file mode 100644 index 0000000..2b98598 --- /dev/null +++ b/node_modules/express/node_modules/connect/node_modules/formidable/test/legacy/common.js @@ -0,0 +1,24 @@ +var path = require('path'), + fs = require('fs'); + +try { + global.Gently = require('gently'); +} catch (e) { + throw new Error('this test suite requires node-gently'); +} + +exports.lib = path.join(__dirname, '../../lib'); + +global.GENTLY = new Gently(); + +global.assert = require('assert'); +global.TEST_PORT = 13532; +global.TEST_FIXTURES = path.join(__dirname, '../fixture'); +global.TEST_TMP = path.join(__dirname, '../tmp'); + +// Stupid new feature in node that complains about gently attaching too many +// listeners to process 'exit'. This is a workaround until I can think of a +// better way to deal with this. +if (process.setMaxListeners) { + process.setMaxListeners(10000); +} diff --git a/node_modules/express/node_modules/connect/node_modules/formidable/test/legacy/integration/test-multipart-parser.js b/node_modules/express/node_modules/connect/node_modules/formidable/test/legacy/integration/test-multipart-parser.js new file mode 100644 index 0000000..75232aa --- /dev/null +++ b/node_modules/express/node_modules/connect/node_modules/formidable/test/legacy/integration/test-multipart-parser.js @@ -0,0 +1,80 @@ +var common = require('../common'); +var CHUNK_LENGTH = 10, + multipartParser = require(common.lib + '/multipart_parser'), + MultipartParser = multipartParser.MultipartParser, + parser = new MultipartParser(), + fixtures = require(TEST_FIXTURES + '/multipart'), + Buffer = require('buffer').Buffer; + +Object.keys(fixtures).forEach(function(name) { + var fixture = fixtures[name], + buffer = new Buffer(Buffer.byteLength(fixture.raw, 'binary')), + offset = 0, + chunk, + nparsed, + + parts = [], + part = null, + headerField, + headerValue, + endCalled = ''; + + parser.initWithBoundary(fixture.boundary); + parser.onPartBegin = function() { + part = {headers: {}, data: ''}; + parts.push(part); + headerField = ''; + headerValue = ''; + }; + + parser.onHeaderField = function(b, start, end) { + headerField += b.toString('ascii', start, end); + }; + + parser.onHeaderValue = function(b, start, end) { + headerValue += b.toString('ascii', start, end); + } + + parser.onHeaderEnd = function() { + part.headers[headerField] = headerValue; + headerField = ''; + headerValue = ''; + }; + + parser.onPartData = function(b, start, end) { + var str = b.toString('ascii', start, end); + part.data += b.slice(start, end); + } + + parser.onEnd = function() { + endCalled = true; + } + + buffer.write(fixture.raw, 'binary', 0); + + while (offset < buffer.length) { + if (offset + CHUNK_LENGTH < buffer.length) { + chunk = buffer.slice(offset, offset+CHUNK_LENGTH); + } else { + chunk = buffer.slice(offset, buffer.length); + } + offset = offset + CHUNK_LENGTH; + + nparsed = parser.write(chunk); + if (nparsed != chunk.length) { + if (fixture.expectError) { + return; + } + puts('-- ERROR --'); + p(chunk.toString('ascii')); + throw new Error(chunk.length+' bytes written, but only '+nparsed+' bytes parsed!'); + } + } + + if (fixture.expectError) { + throw new Error('expected parse error did not happen'); + } + + assert.ok(endCalled); + assert.deepEqual(parts, fixture.parts); +}); diff --git a/node_modules/express/node_modules/connect/node_modules/formidable/test/legacy/simple/test-file.js b/node_modules/express/node_modules/connect/node_modules/formidable/test/legacy/simple/test-file.js new file mode 100644 index 0000000..52ceedb --- /dev/null +++ b/node_modules/express/node_modules/connect/node_modules/formidable/test/legacy/simple/test-file.js @@ -0,0 +1,104 @@ +var common = require('../common'); +var WriteStreamStub = GENTLY.stub('fs', 'WriteStream'); + +var File = require(common.lib + '/file'), + EventEmitter = require('events').EventEmitter, + file, + gently; + +function test(test) { + gently = new Gently(); + file = new File(); + test(); + gently.verify(test.name); +} + +test(function constructor() { + assert.ok(file instanceof EventEmitter); + assert.strictEqual(file.size, 0); + assert.strictEqual(file.path, null); + assert.strictEqual(file.name, null); + assert.strictEqual(file.type, null); + assert.strictEqual(file.lastModifiedDate, null); + + assert.strictEqual(file._writeStream, null); + + (function testSetProperties() { + var file2 = new File({foo: 'bar'}); + assert.equal(file2.foo, 'bar'); + })(); +}); + +test(function open() { + var WRITE_STREAM; + file.path = '/foo'; + + gently.expect(WriteStreamStub, 'new', function (path) { + WRITE_STREAM = this; + assert.strictEqual(path, file.path); + }); + + file.open(); + assert.strictEqual(file._writeStream, WRITE_STREAM); +}); + +test(function write() { + var BUFFER = {length: 10}, + CB_STUB, + CB = function() { + CB_STUB.apply(this, arguments); + }; + + file._writeStream = {}; + + gently.expect(file._writeStream, 'write', function (buffer, cb) { + assert.strictEqual(buffer, BUFFER); + + gently.expect(file, 'emit', function (event, bytesWritten) { + assert.ok(file.lastModifiedDate instanceof Date); + assert.equal(event, 'progress'); + assert.equal(bytesWritten, file.size); + }); + + CB_STUB = gently.expect(function writeCb() { + assert.equal(file.size, 10); + }); + + cb(); + + gently.expect(file, 'emit', function (event, bytesWritten) { + assert.equal(event, 'progress'); + assert.equal(bytesWritten, file.size); + }); + + CB_STUB = gently.expect(function writeCb() { + assert.equal(file.size, 20); + }); + + cb(); + }); + + file.write(BUFFER, CB); +}); + +test(function end() { + var CB_STUB, + CB = function() { + CB_STUB.apply(this, arguments); + }; + + file._writeStream = {}; + + gently.expect(file._writeStream, 'end', function (cb) { + gently.expect(file, 'emit', function (event) { + assert.equal(event, 'end'); + }); + + CB_STUB = gently.expect(function endCb() { + }); + + cb(); + }); + + file.end(CB); +}); diff --git a/node_modules/express/node_modules/connect/node_modules/formidable/test/legacy/simple/test-incoming-form.js b/node_modules/express/node_modules/connect/node_modules/formidable/test/legacy/simple/test-incoming-form.js new file mode 100644 index 0000000..84de439 --- /dev/null +++ b/node_modules/express/node_modules/connect/node_modules/formidable/test/legacy/simple/test-incoming-form.js @@ -0,0 +1,727 @@ +var common = require('../common'); +var MultipartParserStub = GENTLY.stub('./multipart_parser', 'MultipartParser'), + QuerystringParserStub = GENTLY.stub('./querystring_parser', 'QuerystringParser'), + EventEmitterStub = GENTLY.stub('events', 'EventEmitter'), + StreamStub = GENTLY.stub('stream', 'Stream'), + FileStub = GENTLY.stub('./file'); + +var formidable = require(common.lib + '/index'), + IncomingForm = formidable.IncomingForm, + events = require('events'), + fs = require('fs'), + path = require('path'), + Buffer = require('buffer').Buffer, + fixtures = require(TEST_FIXTURES + '/multipart'), + form, + gently; + +function test(test) { + gently = new Gently(); + gently.expect(EventEmitterStub, 'call'); + form = new IncomingForm(); + test(); + gently.verify(test.name); +} + +test(function constructor() { + assert.strictEqual(form.error, null); + assert.strictEqual(form.ended, false); + assert.strictEqual(form.type, null); + assert.strictEqual(form.headers, null); + assert.strictEqual(form.keepExtensions, false); + assert.strictEqual(form.uploadDir, '/tmp'); + assert.strictEqual(form.encoding, 'utf-8'); + assert.strictEqual(form.bytesReceived, null); + assert.strictEqual(form.bytesExpected, null); + assert.strictEqual(form.maxFieldsSize, 2 * 1024 * 1024); + assert.strictEqual(form._parser, null); + assert.strictEqual(form._flushing, 0); + assert.strictEqual(form._fieldsSize, 0); + assert.ok(form instanceof EventEmitterStub); + assert.equal(form.constructor.name, 'IncomingForm'); + + (function testSimpleConstructor() { + gently.expect(EventEmitterStub, 'call'); + var form = IncomingForm(); + assert.ok(form instanceof IncomingForm); + })(); + + (function testSimpleConstructorShortcut() { + gently.expect(EventEmitterStub, 'call'); + var form = formidable(); + assert.ok(form instanceof IncomingForm); + })(); +}); + +test(function parse() { + var REQ = {headers: {}} + , emit = {}; + + gently.expect(form, 'writeHeaders', function(headers) { + assert.strictEqual(headers, REQ.headers); + }); + + var events = ['error', 'aborted', 'data', 'end']; + gently.expect(REQ, 'on', events.length, function(event, fn) { + assert.equal(event, events.shift()); + emit[event] = fn; + return this; + }); + + form.parse(REQ); + + (function testPause() { + gently.expect(REQ, 'pause'); + assert.strictEqual(form.pause(), true); + })(); + + (function testPauseCriticalException() { + form.ended = false; + + var ERR = new Error('dasdsa'); + gently.expect(REQ, 'pause', function() { + throw ERR; + }); + + gently.expect(form, '_error', function(err) { + assert.strictEqual(err, ERR); + }); + + assert.strictEqual(form.pause(), false); + })(); + + (function testPauseHarmlessException() { + form.ended = true; + + var ERR = new Error('dasdsa'); + gently.expect(REQ, 'pause', function() { + throw ERR; + }); + + assert.strictEqual(form.pause(), false); + })(); + + (function testResume() { + gently.expect(REQ, 'resume'); + assert.strictEqual(form.resume(), true); + })(); + + (function testResumeCriticalException() { + form.ended = false; + + var ERR = new Error('dasdsa'); + gently.expect(REQ, 'resume', function() { + throw ERR; + }); + + gently.expect(form, '_error', function(err) { + assert.strictEqual(err, ERR); + }); + + assert.strictEqual(form.resume(), false); + })(); + + (function testResumeHarmlessException() { + form.ended = true; + + var ERR = new Error('dasdsa'); + gently.expect(REQ, 'resume', function() { + throw ERR; + }); + + assert.strictEqual(form.resume(), false); + })(); + + (function testEmitError() { + var ERR = new Error('something bad happened'); + gently.expect(form, '_error',function(err) { + assert.strictEqual(err, ERR); + }); + emit.error(ERR); + })(); + + (function testEmitAborted() { + gently.expect(form, 'emit',function(event) { + assert.equal(event, 'aborted'); + }); + + emit.aborted(); + })(); + + + (function testEmitData() { + var BUFFER = [1, 2, 3]; + gently.expect(form, 'write', function(buffer) { + assert.strictEqual(buffer, BUFFER); + }); + emit.data(BUFFER); + })(); + + (function testEmitEnd() { + form._parser = {}; + + (function testWithError() { + var ERR = new Error('haha'); + gently.expect(form._parser, 'end', function() { + return ERR; + }); + + gently.expect(form, '_error', function(err) { + assert.strictEqual(err, ERR); + }); + + emit.end(); + })(); + + (function testWithoutError() { + gently.expect(form._parser, 'end'); + emit.end(); + })(); + + (function testAfterError() { + form.error = true; + emit.end(); + })(); + })(); + + (function testWithCallback() { + gently.expect(EventEmitterStub, 'call'); + var form = new IncomingForm(), + REQ = {headers: {}}, + parseCalled = 0; + + gently.expect(form, 'writeHeaders'); + gently.expect(REQ, 'on', 4, function() { + return this; + }); + + gently.expect(form, 'on', 4, function(event, fn) { + if (event == 'field') { + fn('field1', 'foo'); + fn('field1', 'bar'); + fn('field2', 'nice'); + } + + if (event == 'file') { + fn('file1', '1'); + fn('file1', '2'); + fn('file2', '3'); + } + + if (event == 'end') { + fn(); + } + return this; + }); + + form.parse(REQ, gently.expect(function parseCbOk(err, fields, files) { + assert.deepEqual(fields, {field1: 'bar', field2: 'nice'}); + assert.deepEqual(files, {file1: '2', file2: '3'}); + })); + + gently.expect(form, 'writeHeaders'); + gently.expect(REQ, 'on', 4, function() { + return this; + }); + + var ERR = new Error('test'); + gently.expect(form, 'on', 3, function(event, fn) { + if (event == 'field') { + fn('foo', 'bar'); + } + + if (event == 'error') { + fn(ERR); + gently.expect(form, 'on'); + } + return this; + }); + + form.parse(REQ, gently.expect(function parseCbErr(err, fields, files) { + assert.strictEqual(err, ERR); + assert.deepEqual(fields, {foo: 'bar'}); + })); + })(); +}); + +test(function pause() { + assert.strictEqual(form.pause(), false); +}); + +test(function resume() { + assert.strictEqual(form.resume(), false); +}); + + +test(function writeHeaders() { + var HEADERS = {}; + gently.expect(form, '_parseContentLength'); + gently.expect(form, '_parseContentType'); + + form.writeHeaders(HEADERS); + assert.strictEqual(form.headers, HEADERS); +}); + +test(function write() { + var parser = {}, + BUFFER = [1, 2, 3]; + + form._parser = parser; + form.bytesExpected = 523423; + + (function testBasic() { + gently.expect(form, 'emit', function(event, bytesReceived, bytesExpected) { + assert.equal(event, 'progress'); + assert.equal(bytesReceived, BUFFER.length); + assert.equal(bytesExpected, form.bytesExpected); + }); + + gently.expect(parser, 'write', function(buffer) { + assert.strictEqual(buffer, BUFFER); + return buffer.length; + }); + + assert.equal(form.write(BUFFER), BUFFER.length); + assert.equal(form.bytesReceived, BUFFER.length); + })(); + + (function testParserError() { + gently.expect(form, 'emit'); + + gently.expect(parser, 'write', function(buffer) { + assert.strictEqual(buffer, BUFFER); + return buffer.length - 1; + }); + + gently.expect(form, '_error', function(err) { + assert.ok(err.message.match(/parser error/i)); + }); + + assert.equal(form.write(BUFFER), BUFFER.length - 1); + assert.equal(form.bytesReceived, BUFFER.length + BUFFER.length); + })(); + + (function testUninitialized() { + delete form._parser; + + gently.expect(form, '_error', function(err) { + assert.ok(err.message.match(/unintialized parser/i)); + }); + form.write(BUFFER); + })(); +}); + +test(function parseContentType() { + var HEADERS = {}; + + form.headers = {'content-type': 'application/x-www-form-urlencoded'}; + gently.expect(form, '_initUrlencoded'); + form._parseContentType(); + + // accept anything that has 'urlencoded' in it + form.headers = {'content-type': 'broken-client/urlencoded-stupid'}; + gently.expect(form, '_initUrlencoded'); + form._parseContentType(); + + var BOUNDARY = '---------------------------57814261102167618332366269'; + form.headers = {'content-type': 'multipart/form-data; boundary='+BOUNDARY}; + + gently.expect(form, '_initMultipart', function(boundary) { + assert.equal(boundary, BOUNDARY); + }); + form._parseContentType(); + + (function testQuotedBoundary() { + form.headers = {'content-type': 'multipart/form-data; boundary="' + BOUNDARY + '"'}; + + gently.expect(form, '_initMultipart', function(boundary) { + assert.equal(boundary, BOUNDARY); + }); + form._parseContentType(); + })(); + + (function testNoBoundary() { + form.headers = {'content-type': 'multipart/form-data'}; + + gently.expect(form, '_error', function(err) { + assert.ok(err.message.match(/no multipart boundary/i)); + }); + form._parseContentType(); + })(); + + (function testNoContentType() { + form.headers = {}; + + gently.expect(form, '_error', function(err) { + assert.ok(err.message.match(/no content-type/i)); + }); + form._parseContentType(); + })(); + + (function testUnknownContentType() { + form.headers = {'content-type': 'invalid'}; + + gently.expect(form, '_error', function(err) { + assert.ok(err.message.match(/unknown content-type/i)); + }); + form._parseContentType(); + })(); +}); + +test(function parseContentLength() { + var HEADERS = {}; + + form.headers = {}; + form._parseContentLength(); + assert.strictEqual(form.bytesReceived, null); + assert.strictEqual(form.bytesExpected, null); + + form.headers['content-length'] = '8'; + gently.expect(form, 'emit', function(event, bytesReceived, bytesExpected) { + assert.equal(event, 'progress'); + assert.equal(bytesReceived, 0); + assert.equal(bytesExpected, 8); + }); + form._parseContentLength(); + assert.strictEqual(form.bytesReceived, 0); + assert.strictEqual(form.bytesExpected, 8); + + // JS can be evil, lets make sure we are not + form.headers['content-length'] = '08'; + gently.expect(form, 'emit', function(event, bytesReceived, bytesExpected) { + assert.equal(event, 'progress'); + assert.equal(bytesReceived, 0); + assert.equal(bytesExpected, 8); + }); + form._parseContentLength(); + assert.strictEqual(form.bytesExpected, 8); +}); + +test(function _initMultipart() { + var BOUNDARY = '123', + PARSER; + + gently.expect(MultipartParserStub, 'new', function() { + PARSER = this; + }); + + gently.expect(MultipartParserStub.prototype, 'initWithBoundary', function(boundary) { + assert.equal(boundary, BOUNDARY); + }); + + form._initMultipart(BOUNDARY); + assert.equal(form.type, 'multipart'); + assert.strictEqual(form._parser, PARSER); + + (function testRegularField() { + var PART; + gently.expect(StreamStub, 'new', function() { + PART = this; + }); + + gently.expect(form, 'onPart', function(part) { + assert.strictEqual(part, PART); + assert.deepEqual + ( part.headers + , { 'content-disposition': 'form-data; name="field1"' + , 'foo': 'bar' + } + ); + assert.equal(part.name, 'field1'); + + var strings = ['hello', ' world']; + gently.expect(part, 'emit', 2, function(event, b) { + assert.equal(event, 'data'); + assert.equal(b.toString(), strings.shift()); + }); + + gently.expect(part, 'emit', function(event, b) { + assert.equal(event, 'end'); + }); + }); + + PARSER.onPartBegin(); + PARSER.onHeaderField(new Buffer('content-disposition'), 0, 10); + PARSER.onHeaderField(new Buffer('content-disposition'), 10, 19); + PARSER.onHeaderValue(new Buffer('form-data; name="field1"'), 0, 14); + PARSER.onHeaderValue(new Buffer('form-data; name="field1"'), 14, 24); + PARSER.onHeaderEnd(); + PARSER.onHeaderField(new Buffer('foo'), 0, 3); + PARSER.onHeaderValue(new Buffer('bar'), 0, 3); + PARSER.onHeaderEnd(); + PARSER.onHeadersEnd(); + PARSER.onPartData(new Buffer('hello world'), 0, 5); + PARSER.onPartData(new Buffer('hello world'), 5, 11); + PARSER.onPartEnd(); + })(); + + (function testFileField() { + var PART; + gently.expect(StreamStub, 'new', function() { + PART = this; + }); + + gently.expect(form, 'onPart', function(part) { + assert.deepEqual + ( part.headers + , { 'content-disposition': 'form-data; name="field2"; filename="C:\\Documents and Settings\\IE\\Must\\Die\\Sun"et.jpg"' + , 'content-type': 'text/plain' + } + ); + assert.equal(part.name, 'field2'); + assert.equal(part.filename, 'Sun"et.jpg'); + assert.equal(part.mime, 'text/plain'); + + gently.expect(part, 'emit', function(event, b) { + assert.equal(event, 'data'); + assert.equal(b.toString(), '... contents of file1.txt ...'); + }); + + gently.expect(part, 'emit', function(event, b) { + assert.equal(event, 'end'); + }); + }); + + PARSER.onPartBegin(); + PARSER.onHeaderField(new Buffer('content-disposition'), 0, 19); + PARSER.onHeaderValue(new Buffer('form-data; name="field2"; filename="C:\\Documents and Settings\\IE\\Must\\Die\\Sun"et.jpg"'), 0, 85); + PARSER.onHeaderEnd(); + PARSER.onHeaderField(new Buffer('Content-Type'), 0, 12); + PARSER.onHeaderValue(new Buffer('text/plain'), 0, 10); + PARSER.onHeaderEnd(); + PARSER.onHeadersEnd(); + PARSER.onPartData(new Buffer('... contents of file1.txt ...'), 0, 29); + PARSER.onPartEnd(); + })(); + + (function testEnd() { + gently.expect(form, '_maybeEnd'); + PARSER.onEnd(); + assert.ok(form.ended); + })(); +}); + +test(function _fileName() { + // TODO + return; +}); + +test(function _initUrlencoded() { + var PARSER; + + gently.expect(QuerystringParserStub, 'new', function() { + PARSER = this; + }); + + form._initUrlencoded(); + assert.equal(form.type, 'urlencoded'); + assert.strictEqual(form._parser, PARSER); + + (function testOnField() { + var KEY = 'KEY', VAL = 'VAL'; + gently.expect(form, 'emit', function(field, key, val) { + assert.equal(field, 'field'); + assert.equal(key, KEY); + assert.equal(val, VAL); + }); + + PARSER.onField(KEY, VAL); + })(); + + (function testOnEnd() { + gently.expect(form, '_maybeEnd'); + + PARSER.onEnd(); + assert.equal(form.ended, true); + })(); +}); + +test(function _error() { + var ERR = new Error('bla'); + + gently.expect(form, 'pause'); + gently.expect(form, 'emit', function(event, err) { + assert.equal(event, 'error'); + assert.strictEqual(err, ERR); + }); + + form._error(ERR); + assert.strictEqual(form.error, ERR); + + // make sure _error only does its thing once + form._error(ERR); +}); + +test(function onPart() { + var PART = {}; + gently.expect(form, 'handlePart', function(part) { + assert.strictEqual(part, PART); + }); + + form.onPart(PART); +}); + +test(function handlePart() { + (function testUtf8Field() { + var PART = new events.EventEmitter(); + PART.name = 'my_field'; + + gently.expect(form, 'emit', function(event, field, value) { + assert.equal(event, 'field'); + assert.equal(field, 'my_field'); + assert.equal(value, 'hello world: €'); + }); + + form.handlePart(PART); + PART.emit('data', new Buffer('hello')); + PART.emit('data', new Buffer(' world: ')); + PART.emit('data', new Buffer([0xE2])); + PART.emit('data', new Buffer([0x82, 0xAC])); + PART.emit('end'); + })(); + + (function testBinaryField() { + var PART = new events.EventEmitter(); + PART.name = 'my_field2'; + + gently.expect(form, 'emit', function(event, field, value) { + assert.equal(event, 'field'); + assert.equal(field, 'my_field2'); + assert.equal(value, 'hello world: '+new Buffer([0xE2, 0x82, 0xAC]).toString('binary')); + }); + + form.encoding = 'binary'; + form.handlePart(PART); + PART.emit('data', new Buffer('hello')); + PART.emit('data', new Buffer(' world: ')); + PART.emit('data', new Buffer([0xE2])); + PART.emit('data', new Buffer([0x82, 0xAC])); + PART.emit('end'); + })(); + + (function testFieldSize() { + form.maxFieldsSize = 8; + var PART = new events.EventEmitter(); + PART.name = 'my_field'; + + gently.expect(form, '_error', function(err) { + assert.equal(err.message, 'maxFieldsSize exceeded, received 9 bytes of field data'); + }); + + form.handlePart(PART); + form._fieldsSize = 1; + PART.emit('data', new Buffer(7)); + PART.emit('data', new Buffer(1)); + })(); + + (function testFilePart() { + var PART = new events.EventEmitter(), + FILE = new events.EventEmitter(), + PATH = '/foo/bar'; + + PART.name = 'my_file'; + PART.filename = 'sweet.txt'; + PART.mime = 'sweet.txt'; + + gently.expect(form, '_uploadPath', function(filename) { + assert.equal(filename, PART.filename); + return PATH; + }); + + gently.expect(FileStub, 'new', function(properties) { + assert.equal(properties.path, PATH); + assert.equal(properties.name, PART.filename); + assert.equal(properties.type, PART.mime); + FILE = this; + + gently.expect(form, 'emit', function (event, field, file) { + assert.equal(event, 'fileBegin'); + assert.strictEqual(field, PART.name); + assert.strictEqual(file, FILE); + }); + + gently.expect(FILE, 'open'); + }); + + form.handlePart(PART); + assert.equal(form._flushing, 1); + + var BUFFER; + gently.expect(form, 'pause'); + gently.expect(FILE, 'write', function(buffer, cb) { + assert.strictEqual(buffer, BUFFER); + gently.expect(form, 'resume'); + // @todo handle cb(new Err) + cb(); + }); + + PART.emit('data', BUFFER = new Buffer('test')); + + gently.expect(FILE, 'end', function(cb) { + gently.expect(form, 'emit', function(event, field, file) { + assert.equal(event, 'file'); + assert.strictEqual(file, FILE); + }); + + gently.expect(form, '_maybeEnd'); + + cb(); + assert.equal(form._flushing, 0); + }); + + PART.emit('end'); + })(); +}); + +test(function _uploadPath() { + (function testUniqueId() { + var UUID_A, UUID_B; + gently.expect(GENTLY.hijacked.path, 'join', function(uploadDir, uuid) { + assert.equal(uploadDir, form.uploadDir); + UUID_A = uuid; + }); + form._uploadPath(); + + gently.expect(GENTLY.hijacked.path, 'join', function(uploadDir, uuid) { + UUID_B = uuid; + }); + form._uploadPath(); + + assert.notEqual(UUID_A, UUID_B); + })(); + + (function testFileExtension() { + form.keepExtensions = true; + var FILENAME = 'foo.jpg', + EXT = '.bar'; + + gently.expect(GENTLY.hijacked.path, 'extname', function(filename) { + assert.equal(filename, FILENAME); + gently.restore(path, 'extname'); + + return EXT; + }); + + gently.expect(GENTLY.hijacked.path, 'join', function(uploadDir, name) { + assert.equal(path.extname(name), EXT); + }); + form._uploadPath(FILENAME); + })(); +}); + +test(function _maybeEnd() { + gently.expect(form, 'emit', 0); + form._maybeEnd(); + + form.ended = true; + form._flushing = 1; + form._maybeEnd(); + + gently.expect(form, 'emit', function(event) { + assert.equal(event, 'end'); + }); + + form.ended = true; + form._flushing = 0; + form._maybeEnd(); +}); diff --git a/node_modules/express/node_modules/connect/node_modules/formidable/test/legacy/simple/test-multipart-parser.js b/node_modules/express/node_modules/connect/node_modules/formidable/test/legacy/simple/test-multipart-parser.js new file mode 100644 index 0000000..d8dc968 --- /dev/null +++ b/node_modules/express/node_modules/connect/node_modules/formidable/test/legacy/simple/test-multipart-parser.js @@ -0,0 +1,50 @@ +var common = require('../common'); +var multipartParser = require(common.lib + '/multipart_parser'), + MultipartParser = multipartParser.MultipartParser, + events = require('events'), + Buffer = require('buffer').Buffer, + parser; + +function test(test) { + parser = new MultipartParser(); + test(); +} + +test(function constructor() { + assert.equal(parser.boundary, null); + assert.equal(parser.state, 0); + assert.equal(parser.flags, 0); + assert.equal(parser.boundaryChars, null); + assert.equal(parser.index, null); + assert.equal(parser.lookbehind, null); + assert.equal(parser.constructor.name, 'MultipartParser'); +}); + +test(function initWithBoundary() { + var boundary = 'abc'; + parser.initWithBoundary(boundary); + assert.deepEqual(Array.prototype.slice.call(parser.boundary), [13, 10, 45, 45, 97, 98, 99]); + assert.equal(parser.state, multipartParser.START); + + assert.deepEqual(parser.boundaryChars, {10: true, 13: true, 45: true, 97: true, 98: true, 99: true}); +}); + +test(function parserError() { + var boundary = 'abc', + buffer = new Buffer(5); + + parser.initWithBoundary(boundary); + buffer.write('--ad', 'ascii', 0); + assert.equal(parser.write(buffer), 3); +}); + +test(function end() { + (function testError() { + assert.equal(parser.end().message, 'MultipartParser.end(): stream ended unexpectedly: ' + parser.explain()); + })(); + + (function testRegular() { + parser.state = multipartParser.END; + assert.strictEqual(parser.end(), undefined); + })(); +}); diff --git a/node_modules/express/node_modules/connect/node_modules/formidable/test/legacy/simple/test-querystring-parser.js b/node_modules/express/node_modules/connect/node_modules/formidable/test/legacy/simple/test-querystring-parser.js new file mode 100644 index 0000000..54d3e2d --- /dev/null +++ b/node_modules/express/node_modules/connect/node_modules/formidable/test/legacy/simple/test-querystring-parser.js @@ -0,0 +1,45 @@ +var common = require('../common'); +var QuerystringParser = require(common.lib + '/querystring_parser').QuerystringParser, + Buffer = require('buffer').Buffer, + gently, + parser; + +function test(test) { + gently = new Gently(); + parser = new QuerystringParser(); + test(); + gently.verify(test.name); +} + +test(function constructor() { + assert.equal(parser.buffer, ''); + assert.equal(parser.constructor.name, 'QuerystringParser'); +}); + +test(function write() { + var a = new Buffer('a=1'); + assert.equal(parser.write(a), a.length); + + var b = new Buffer('&b=2'); + parser.write(b); + assert.equal(parser.buffer, a + b); +}); + +test(function end() { + var FIELDS = {a: ['b', {c: 'd'}], e: 'f'}; + + gently.expect(GENTLY.hijacked.querystring, 'parse', function(str) { + assert.equal(str, parser.buffer); + return FIELDS; + }); + + gently.expect(parser, 'onField', Object.keys(FIELDS).length, function(key, val) { + assert.deepEqual(FIELDS[key], val); + }); + + gently.expect(parser, 'onEnd'); + + parser.buffer = 'my buffer'; + parser.end(); + assert.equal(parser.buffer, ''); +}); diff --git a/node_modules/express/node_modules/connect/node_modules/formidable/test/legacy/system/test-multi-video-upload.js b/node_modules/express/node_modules/connect/node_modules/formidable/test/legacy/system/test-multi-video-upload.js new file mode 100644 index 0000000..479e46d --- /dev/null +++ b/node_modules/express/node_modules/connect/node_modules/formidable/test/legacy/system/test-multi-video-upload.js @@ -0,0 +1,75 @@ +var common = require('../common'); +var BOUNDARY = '---------------------------10102754414578508781458777923', + FIXTURE = TEST_FIXTURES+'/multi_video.upload', + fs = require('fs'), + util = require(common.lib + '/util'), + http = require('http'), + formidable = require(common.lib + '/index'), + server = http.createServer(); + +server.on('request', function(req, res) { + var form = new formidable.IncomingForm(), + uploads = {}; + + form.uploadDir = TEST_TMP; + form.hash = 'sha1'; + form.parse(req); + + form + .on('fileBegin', function(field, file) { + assert.equal(field, 'upload'); + + var tracker = {file: file, progress: [], ended: false}; + uploads[file.filename] = tracker; + file + .on('progress', function(bytesReceived) { + tracker.progress.push(bytesReceived); + assert.equal(bytesReceived, file.length); + }) + .on('end', function() { + tracker.ended = true; + }); + }) + .on('field', function(field, value) { + assert.equal(field, 'title'); + assert.equal(value, ''); + }) + .on('file', function(field, file) { + assert.equal(field, 'upload'); + assert.strictEqual(uploads[file.filename].file, file); + }) + .on('end', function() { + assert.ok(uploads['shortest_video.flv']); + assert.ok(uploads['shortest_video.flv'].ended); + assert.ok(uploads['shortest_video.flv'].progress.length > 3); + assert.equal(uploads['shortest_video.flv'].file.hash, 'd6a17616c7143d1b1438ceeef6836d1a09186b3a'); + assert.equal(uploads['shortest_video.flv'].progress.slice(-1), uploads['shortest_video.flv'].file.length); + assert.ok(uploads['shortest_video.mp4']); + assert.ok(uploads['shortest_video.mp4'].ended); + assert.ok(uploads['shortest_video.mp4'].progress.length > 3); + assert.equal(uploads['shortest_video.mp4'].file.hash, '937dfd4db263f4887ceae19341dcc8d63bcd557f'); + + server.close(); + res.writeHead(200); + res.end('good'); + }); +}); + +server.listen(TEST_PORT, function() { + var client = http.createClient(TEST_PORT), + stat = fs.statSync(FIXTURE), + headers = { + 'content-type': 'multipart/form-data; boundary='+BOUNDARY, + 'content-length': stat.size, + } + request = client.request('POST', '/', headers), + fixture = new fs.ReadStream(FIXTURE); + + fixture + .on('data', function(b) { + request.write(b); + }) + .on('end', function() { + request.end(); + }); +}); diff --git a/node_modules/express/node_modules/connect/node_modules/formidable/test/run.js b/node_modules/express/node_modules/connect/node_modules/formidable/test/run.js new file mode 100644 index 0000000..50b2361 --- /dev/null +++ b/node_modules/express/node_modules/connect/node_modules/formidable/test/run.js @@ -0,0 +1,2 @@ +#!/usr/bin/env node +require('urun')(__dirname) diff --git a/node_modules/express/node_modules/connect/node_modules/formidable/test/unit/test-incoming-form.js b/node_modules/express/node_modules/connect/node_modules/formidable/test/unit/test-incoming-form.js new file mode 100644 index 0000000..fe2ac1c --- /dev/null +++ b/node_modules/express/node_modules/connect/node_modules/formidable/test/unit/test-incoming-form.js @@ -0,0 +1,63 @@ +var common = require('../common'); +var test = require('utest'); +var assert = common.assert; +var IncomingForm = common.require('incoming_form').IncomingForm; +var path = require('path'); + +var form; +test('IncomingForm', { + before: function() { + form = new IncomingForm(); + }, + + '#_fileName with regular characters': function() { + var filename = 'foo.txt'; + assert.equal(form._fileName(makeHeader(filename)), 'foo.txt'); + }, + + '#_fileName with unescaped quote': function() { + var filename = 'my".txt'; + assert.equal(form._fileName(makeHeader(filename)), 'my".txt'); + }, + + '#_fileName with escaped quote': function() { + var filename = 'my%22.txt'; + assert.equal(form._fileName(makeHeader(filename)), 'my".txt'); + }, + + '#_fileName with bad quote and additional sub-header': function() { + var filename = 'my".txt'; + var header = makeHeader(filename) + '; foo="bar"'; + assert.equal(form._fileName(header), filename); + }, + + '#_fileName with semicolon': function() { + var filename = 'my;.txt'; + assert.equal(form._fileName(makeHeader(filename)), 'my;.txt'); + }, + + '#_fileName with utf8 character': function() { + var filename = 'my☃.txt'; + assert.equal(form._fileName(makeHeader(filename)), 'my☃.txt'); + }, + + '#_uploadPath strips harmful characters from extension when keepExtensions': function() { + form.keepExtensions = true; + + var ext = path.extname(form._uploadPath('fine.jpg?foo=bar')); + assert.equal(ext, '.jpg'); + + var ext = path.extname(form._uploadPath('fine?foo=bar')); + assert.equal(ext, ''); + + var ext = path.extname(form._uploadPath('super.cr2+dsad')); + assert.equal(ext, '.cr2'); + + var ext = path.extname(form._uploadPath('super.bar')); + assert.equal(ext, '.bar'); + }, +}); + +function makeHeader(filename) { + return 'Content-Disposition: form-data; name="upload"; filename="' + filename + '"'; +} diff --git a/node_modules/express/node_modules/connect/node_modules/formidable/tool/record.js b/node_modules/express/node_modules/connect/node_modules/formidable/tool/record.js new file mode 100644 index 0000000..9f1cef8 --- /dev/null +++ b/node_modules/express/node_modules/connect/node_modules/formidable/tool/record.js @@ -0,0 +1,47 @@ +var http = require('http'); +var fs = require('fs'); +var connections = 0; + +var server = http.createServer(function(req, res) { + var socket = req.socket; + console.log('Request: %s %s -> %s', req.method, req.url, socket.filename); + + req.on('end', function() { + if (req.url !== '/') { + res.end(JSON.stringify({ + method: req.method, + url: req.url, + filename: socket.filename, + })); + return; + } + + res.writeHead(200, {'content-type': 'text/html'}); + res.end( + '
    '+ + '
    '+ + '
    '+ + ''+ + '
    ' + ); + }); +}); + +server.on('connection', function(socket) { + connections++; + + socket.id = connections; + socket.filename = 'connection-' + socket.id + '.http'; + socket.file = fs.createWriteStream(socket.filename); + socket.pipe(socket.file); + + console.log('--> %s', socket.filename); + socket.on('close', function() { + console.log('<-- %s', socket.filename); + }); +}); + +var port = process.env.PORT || 8080; +server.listen(port, function() { + console.log('Recording connections on port %s', port); +}); diff --git a/node_modules/express/node_modules/connect/node_modules/pause/.npmignore b/node_modules/express/node_modules/connect/node_modules/pause/.npmignore new file mode 100644 index 0000000..f1250e5 --- /dev/null +++ b/node_modules/express/node_modules/connect/node_modules/pause/.npmignore @@ -0,0 +1,4 @@ +support +test +examples +*.sock diff --git a/node_modules/express/node_modules/connect/node_modules/pause/History.md b/node_modules/express/node_modules/connect/node_modules/pause/History.md new file mode 100644 index 0000000..c8aa68f --- /dev/null +++ b/node_modules/express/node_modules/connect/node_modules/pause/History.md @@ -0,0 +1,5 @@ + +0.0.1 / 2010-01-03 +================== + + * Initial release diff --git a/node_modules/express/node_modules/connect/node_modules/pause/Makefile b/node_modules/express/node_modules/connect/node_modules/pause/Makefile new file mode 100644 index 0000000..4e9c8d3 --- /dev/null +++ b/node_modules/express/node_modules/connect/node_modules/pause/Makefile @@ -0,0 +1,7 @@ + +test: + @./node_modules/.bin/mocha \ + --require should \ + --reporter spec + +.PHONY: test \ No newline at end of file diff --git a/node_modules/express/node_modules/connect/node_modules/pause/Readme.md b/node_modules/express/node_modules/connect/node_modules/pause/Readme.md new file mode 100644 index 0000000..1cdd68a --- /dev/null +++ b/node_modules/express/node_modules/connect/node_modules/pause/Readme.md @@ -0,0 +1,29 @@ + +# pause + + Pause streams... + +## License + +(The MIT License) + +Copyright (c) 2012 TJ Holowaychuk <tj@vision-media.ca> + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +'Software'), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. \ No newline at end of file diff --git a/node_modules/express/node_modules/connect/node_modules/pause/index.js b/node_modules/express/node_modules/connect/node_modules/pause/index.js new file mode 100644 index 0000000..1b7b379 --- /dev/null +++ b/node_modules/express/node_modules/connect/node_modules/pause/index.js @@ -0,0 +1,29 @@ + +module.exports = function(obj){ + var onData + , onEnd + , events = []; + + // buffer data + obj.on('data', onData = function(data, encoding){ + events.push(['data', data, encoding]); + }); + + // buffer end + obj.on('end', onEnd = function(data, encoding){ + events.push(['end', data, encoding]); + }); + + return { + end: function(){ + obj.removeListener('data', onData); + obj.removeListener('end', onEnd); + }, + resume: function(){ + this.end(); + for (var i = 0, len = events.length; i < len; ++i) { + obj.emit.apply(obj, events[i]); + } + } + }; +}; \ No newline at end of file diff --git a/node_modules/express/node_modules/connect/node_modules/pause/package.json b/node_modules/express/node_modules/connect/node_modules/pause/package.json new file mode 100644 index 0000000..727d3a8 --- /dev/null +++ b/node_modules/express/node_modules/connect/node_modules/pause/package.json @@ -0,0 +1,24 @@ +{ + "name": "pause", + "version": "0.0.1", + "description": "Pause streams...", + "keywords": [], + "author": { + "name": "TJ Holowaychuk", + "email": "tj@vision-media.ca" + }, + "dependencies": {}, + "devDependencies": { + "mocha": "*", + "should": "*" + }, + "main": "index", + "readme": "\n# pause\n\n Pause streams...\n\n## License \n\n(The MIT License)\n\nCopyright (c) 2012 TJ Holowaychuk <tj@vision-media.ca>\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n'Software'), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.", + "readmeFilename": "Readme.md", + "_id": "pause@0.0.1", + "dist": { + "shasum": "95daae91f7c34f9c6f88fa22407747ca1bceb2e1" + }, + "_from": "pause@0.0.1", + "_resolved": "https://registry.npmjs.org/pause/-/pause-0.0.1.tgz" +} diff --git a/node_modules/express/node_modules/connect/node_modules/qs/.gitmodules b/node_modules/express/node_modules/connect/node_modules/qs/.gitmodules new file mode 100644 index 0000000..49e31da --- /dev/null +++ b/node_modules/express/node_modules/connect/node_modules/qs/.gitmodules @@ -0,0 +1,6 @@ +[submodule "support/expresso"] + path = support/expresso + url = git://github.com/visionmedia/expresso.git +[submodule "support/should"] + path = support/should + url = git://github.com/visionmedia/should.js.git diff --git a/node_modules/express/node_modules/connect/node_modules/qs/.npmignore b/node_modules/express/node_modules/connect/node_modules/qs/.npmignore new file mode 100644 index 0000000..3c3629e --- /dev/null +++ b/node_modules/express/node_modules/connect/node_modules/qs/.npmignore @@ -0,0 +1 @@ +node_modules diff --git a/node_modules/express/node_modules/connect/node_modules/qs/.travis.yml b/node_modules/express/node_modules/connect/node_modules/qs/.travis.yml new file mode 100644 index 0000000..2c0a8f6 --- /dev/null +++ b/node_modules/express/node_modules/connect/node_modules/qs/.travis.yml @@ -0,0 +1,4 @@ +language: node_js +node_js: + - 0.6 + - 0.4 \ No newline at end of file diff --git a/node_modules/express/node_modules/connect/node_modules/qs/History.md b/node_modules/express/node_modules/connect/node_modules/qs/History.md new file mode 100644 index 0000000..1feef45 --- /dev/null +++ b/node_modules/express/node_modules/connect/node_modules/qs/History.md @@ -0,0 +1,83 @@ + +0.5.1 / 2012-09-18 +================== + + * fix encoded `=`. Closes #43 + +0.5.0 / 2012-05-04 +================== + + * Added component support + +0.4.2 / 2012-02-08 +================== + + * Fixed: ensure objects are created when appropriate not arrays [aheckmann] + +0.4.1 / 2012-01-26 +================== + + * Fixed stringify()ing numbers. Closes #23 + +0.4.0 / 2011-11-21 +================== + + * Allow parsing of an existing object (for `bodyParser()`) [jackyz] + * Replaced expresso with mocha + +0.3.2 / 2011-11-08 +================== + + * Fixed global variable leak + +0.3.1 / 2011-08-17 +================== + + * Added `try/catch` around malformed uri components + * Add test coverage for Array native method bleed-though + +0.3.0 / 2011-07-19 +================== + + * Allow `array[index]` and `object[property]` syntaxes [Aria Stewart] + +0.2.0 / 2011-06-29 +================== + + * Added `qs.stringify()` [Cory Forsyth] + +0.1.0 / 2011-04-13 +================== + + * Added jQuery-ish array support + +0.0.7 / 2011-03-13 +================== + + * Fixed; handle empty string and `== null` in `qs.parse()` [dmit] + allows for convenient `qs.parse(url.parse(str).query)` + +0.0.6 / 2011-02-14 +================== + + * Fixed; support for implicit arrays + +0.0.4 / 2011-02-09 +================== + + * Fixed `+` as a space + +0.0.3 / 2011-02-08 +================== + + * Fixed case when right-hand value contains "]" + +0.0.2 / 2011-02-07 +================== + + * Fixed "=" presence in key + +0.0.1 / 2011-02-07 +================== + + * Initial release \ No newline at end of file diff --git a/node_modules/express/node_modules/connect/node_modules/qs/Makefile b/node_modules/express/node_modules/connect/node_modules/qs/Makefile new file mode 100644 index 0000000..0a21cf7 --- /dev/null +++ b/node_modules/express/node_modules/connect/node_modules/qs/Makefile @@ -0,0 +1,12 @@ + +test/browser/qs.js: querystring.js + component build package.json test/browser/qs + +querystring.js: lib/head.js lib/querystring.js lib/tail.js + cat $^ > $@ + +test: + @./node_modules/.bin/mocha \ + --ui bdd + +.PHONY: test \ No newline at end of file diff --git a/node_modules/express/node_modules/connect/node_modules/qs/Readme.md b/node_modules/express/node_modules/connect/node_modules/qs/Readme.md new file mode 100644 index 0000000..27e54a4 --- /dev/null +++ b/node_modules/express/node_modules/connect/node_modules/qs/Readme.md @@ -0,0 +1,58 @@ +# node-querystring + + query string parser for node and the browser supporting nesting, as it was removed from `0.3.x`, so this library provides the previous and commonly desired behaviour (and twice as fast). Used by [express](http://expressjs.com), [connect](http://senchalabs.github.com/connect) and others. + +## Installation + + $ npm install qs + +## Examples + +```js +var qs = require('qs'); + +qs.parse('user[name][first]=Tobi&user[email]=tobi@learnboost.com'); +// => { user: { name: { first: 'Tobi' }, email: 'tobi@learnboost.com' } } + +qs.stringify({ user: { name: 'Tobi', email: 'tobi@learnboost.com' }}) +// => user[name]=Tobi&user[email]=tobi%40learnboost.com +``` + +## Testing + +Install dev dependencies: + + $ npm install -d + +and execute: + + $ make test + +browser: + + $ open test/browser/index.html + +## License + +(The MIT License) + +Copyright (c) 2010 TJ Holowaychuk <tj@vision-media.ca> + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +'Software'), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. \ No newline at end of file diff --git a/node_modules/express/node_modules/connect/node_modules/qs/benchmark.js b/node_modules/express/node_modules/connect/node_modules/qs/benchmark.js new file mode 100644 index 0000000..97e2c93 --- /dev/null +++ b/node_modules/express/node_modules/connect/node_modules/qs/benchmark.js @@ -0,0 +1,17 @@ + +var qs = require('./'); + +var times = 100000 + , start = new Date + , n = times; + +console.log('times: %d', times); + +while (n--) qs.parse('foo=bar'); +console.log('simple: %dms', new Date - start); + +var start = new Date + , n = times; + +while (n--) qs.parse('user[name][first]=tj&user[name][last]=holowaychuk'); +console.log('nested: %dms', new Date - start); \ No newline at end of file diff --git a/node_modules/express/node_modules/connect/node_modules/qs/component.json b/node_modules/express/node_modules/connect/node_modules/qs/component.json new file mode 100644 index 0000000..ba34ead --- /dev/null +++ b/node_modules/express/node_modules/connect/node_modules/qs/component.json @@ -0,0 +1,6 @@ +{ + "name": "querystring", + "description": "Querystring parser / stringifier with nesting support", + "keywords": ["querystring", "query", "parser"], + "main": "lib/querystring.js" +} \ No newline at end of file diff --git a/node_modules/express/node_modules/connect/node_modules/qs/examples.js b/node_modules/express/node_modules/connect/node_modules/qs/examples.js new file mode 100644 index 0000000..27617b7 --- /dev/null +++ b/node_modules/express/node_modules/connect/node_modules/qs/examples.js @@ -0,0 +1,51 @@ + +/** + * Module dependencies. + */ + +var qs = require('./'); + +var obj = qs.parse('foo'); +console.log(obj) + +var obj = qs.parse('foo=bar=baz'); +console.log(obj) + +var obj = qs.parse('users[]'); +console.log(obj) + +var obj = qs.parse('name=tj&email=tj@vision-media.ca'); +console.log(obj) + +var obj = qs.parse('users[]=tj&users[]=tobi&users[]=jane'); +console.log(obj) + +var obj = qs.parse('user[name][first]=tj&user[name][last]=holowaychuk'); +console.log(obj) + +var obj = qs.parse('users[][name][first]=tj&users[][name][last]=holowaychuk'); +console.log(obj) + +var obj = qs.parse('a=a&a=b&a=c'); +console.log(obj) + +var obj = qs.parse('user[tj]=tj&user[tj]=TJ'); +console.log(obj) + +var obj = qs.parse('user[names]=tj&user[names]=TJ&user[names]=Tyler'); +console.log(obj) + +var obj = qs.parse('user[name][first]=tj&user[name][first]=TJ'); +console.log(obj) + +var obj = qs.parse('user[0]=tj&user[1]=TJ'); +console.log(obj) + +var obj = qs.parse('user[0]=tj&user[]=TJ'); +console.log(obj) + +var obj = qs.parse('user[0]=tj&user[foo]=TJ'); +console.log(obj) + +var str = qs.stringify({ user: { name: 'Tobi', email: 'tobi@learnboost.com' }}); +console.log(str); \ No newline at end of file diff --git a/node_modules/express/node_modules/connect/node_modules/qs/index.js b/node_modules/express/node_modules/connect/node_modules/qs/index.js new file mode 100644 index 0000000..d177d20 --- /dev/null +++ b/node_modules/express/node_modules/connect/node_modules/qs/index.js @@ -0,0 +1,2 @@ + +module.exports = require('./lib/querystring'); \ No newline at end of file diff --git a/node_modules/express/node_modules/connect/node_modules/qs/lib/head.js b/node_modules/express/node_modules/connect/node_modules/qs/lib/head.js new file mode 100644 index 0000000..55d3817 --- /dev/null +++ b/node_modules/express/node_modules/connect/node_modules/qs/lib/head.js @@ -0,0 +1 @@ +;(function(){ diff --git a/node_modules/express/node_modules/connect/node_modules/qs/lib/querystring.js b/node_modules/express/node_modules/connect/node_modules/qs/lib/querystring.js new file mode 100644 index 0000000..d3689bb --- /dev/null +++ b/node_modules/express/node_modules/connect/node_modules/qs/lib/querystring.js @@ -0,0 +1,262 @@ + +/** + * Object#toString() ref for stringify(). + */ + +var toString = Object.prototype.toString; + +/** + * Cache non-integer test regexp. + */ + +var isint = /^[0-9]+$/; + +function promote(parent, key) { + if (parent[key].length == 0) return parent[key] = {}; + var t = {}; + for (var i in parent[key]) t[i] = parent[key][i]; + parent[key] = t; + return t; +} + +function parse(parts, parent, key, val) { + var part = parts.shift(); + // end + if (!part) { + if (Array.isArray(parent[key])) { + parent[key].push(val); + } else if ('object' == typeof parent[key]) { + parent[key] = val; + } else if ('undefined' == typeof parent[key]) { + parent[key] = val; + } else { + parent[key] = [parent[key], val]; + } + // array + } else { + var obj = parent[key] = parent[key] || []; + if (']' == part) { + if (Array.isArray(obj)) { + if ('' != val) obj.push(val); + } else if ('object' == typeof obj) { + obj[Object.keys(obj).length] = val; + } else { + obj = parent[key] = [parent[key], val]; + } + // prop + } else if (~part.indexOf(']')) { + part = part.substr(0, part.length - 1); + if (!isint.test(part) && Array.isArray(obj)) obj = promote(parent, key); + parse(parts, obj, part, val); + // key + } else { + if (!isint.test(part) && Array.isArray(obj)) obj = promote(parent, key); + parse(parts, obj, part, val); + } + } +} + +/** + * Merge parent key/val pair. + */ + +function merge(parent, key, val){ + if (~key.indexOf(']')) { + var parts = key.split('[') + , len = parts.length + , last = len - 1; + parse(parts, parent, 'base', val); + // optimize + } else { + if (!isint.test(key) && Array.isArray(parent.base)) { + var t = {}; + for (var k in parent.base) t[k] = parent.base[k]; + parent.base = t; + } + set(parent.base, key, val); + } + + return parent; +} + +/** + * Parse the given obj. + */ + +function parseObject(obj){ + var ret = { base: {} }; + Object.keys(obj).forEach(function(name){ + merge(ret, name, obj[name]); + }); + return ret.base; +} + +/** + * Parse the given str. + */ + +function parseString(str){ + return String(str) + .split('&') + .reduce(function(ret, pair){ + var eql = pair.indexOf('=') + , brace = lastBraceInKey(pair) + , key = pair.substr(0, brace || eql) + , val = pair.substr(brace || eql, pair.length) + , val = val.substr(val.indexOf('=') + 1, val.length); + + // ?foo + if ('' == key) key = pair, val = ''; + + return merge(ret, decode(key), decode(val)); + }, { base: {} }).base; +} + +/** + * Parse the given query `str` or `obj`, returning an object. + * + * @param {String} str | {Object} obj + * @return {Object} + * @api public + */ + +exports.parse = function(str){ + if (null == str || '' == str) return {}; + return 'object' == typeof str + ? parseObject(str) + : parseString(str); +}; + +/** + * Turn the given `obj` into a query string + * + * @param {Object} obj + * @return {String} + * @api public + */ + +var stringify = exports.stringify = function(obj, prefix) { + if (Array.isArray(obj)) { + return stringifyArray(obj, prefix); + } else if ('[object Object]' == toString.call(obj)) { + return stringifyObject(obj, prefix); + } else if ('string' == typeof obj) { + return stringifyString(obj, prefix); + } else { + return prefix + '=' + obj; + } +}; + +/** + * Stringify the given `str`. + * + * @param {String} str + * @param {String} prefix + * @return {String} + * @api private + */ + +function stringifyString(str, prefix) { + if (!prefix) throw new TypeError('stringify expects an object'); + return prefix + '=' + encodeURIComponent(str); +} + +/** + * Stringify the given `arr`. + * + * @param {Array} arr + * @param {String} prefix + * @return {String} + * @api private + */ + +function stringifyArray(arr, prefix) { + var ret = []; + if (!prefix) throw new TypeError('stringify expects an object'); + for (var i = 0; i < arr.length; i++) { + ret.push(stringify(arr[i], prefix + '['+i+']')); + } + return ret.join('&'); +} + +/** + * Stringify the given `obj`. + * + * @param {Object} obj + * @param {String} prefix + * @return {String} + * @api private + */ + +function stringifyObject(obj, prefix) { + var ret = [] + , keys = Object.keys(obj) + , key; + + for (var i = 0, len = keys.length; i < len; ++i) { + key = keys[i]; + ret.push(stringify(obj[key], prefix + ? prefix + '[' + encodeURIComponent(key) + ']' + : encodeURIComponent(key))); + } + + return ret.join('&'); +} + +/** + * Set `obj`'s `key` to `val` respecting + * the weird and wonderful syntax of a qs, + * where "foo=bar&foo=baz" becomes an array. + * + * @param {Object} obj + * @param {String} key + * @param {String} val + * @api private + */ + +function set(obj, key, val) { + var v = obj[key]; + if (undefined === v) { + obj[key] = val; + } else if (Array.isArray(v)) { + v.push(val); + } else { + obj[key] = [v, val]; + } +} + +/** + * Locate last brace in `str` within the key. + * + * @param {String} str + * @return {Number} + * @api private + */ + +function lastBraceInKey(str) { + var len = str.length + , brace + , c; + for (var i = 0; i < len; ++i) { + c = str[i]; + if (']' == c) brace = false; + if ('[' == c) brace = true; + if ('=' == c && !brace) return i; + } +} + +/** + * Decode `str`. + * + * @param {String} str + * @return {String} + * @api private + */ + +function decode(str) { + try { + return decodeURIComponent(str.replace(/\+/g, ' ')); + } catch (err) { + return str; + } +} diff --git a/node_modules/express/node_modules/connect/node_modules/qs/lib/tail.js b/node_modules/express/node_modules/connect/node_modules/qs/lib/tail.js new file mode 100644 index 0000000..158693a --- /dev/null +++ b/node_modules/express/node_modules/connect/node_modules/qs/lib/tail.js @@ -0,0 +1 @@ +})(); \ No newline at end of file diff --git a/node_modules/express/node_modules/connect/node_modules/qs/package.json b/node_modules/express/node_modules/connect/node_modules/qs/package.json new file mode 100644 index 0000000..83a105f --- /dev/null +++ b/node_modules/express/node_modules/connect/node_modules/qs/package.json @@ -0,0 +1,40 @@ +{ + "name": "qs", + "description": "querystring parser", + "version": "0.5.1", + "keywords": [ + "query string", + "parser", + "component" + ], + "repository": { + "type": "git", + "url": "git://github.com/visionmedia/node-querystring.git" + }, + "devDependencies": { + "mocha": "*", + "expect.js": "*" + }, + "component": { + "scripts": { + "querystring": "querystring.js" + } + }, + "author": { + "name": "TJ Holowaychuk", + "email": "tj@vision-media.ca", + "url": "http://tjholowaychuk.com" + }, + "main": "index", + "engines": { + "node": "*" + }, + "readme": "# node-querystring\n\n query string parser for node and the browser supporting nesting, as it was removed from `0.3.x`, so this library provides the previous and commonly desired behaviour (and twice as fast). Used by [express](http://expressjs.com), [connect](http://senchalabs.github.com/connect) and others.\n\n## Installation\n\n $ npm install qs\n\n## Examples\n\n```js\nvar qs = require('qs');\n\nqs.parse('user[name][first]=Tobi&user[email]=tobi@learnboost.com');\n// => { user: { name: { first: 'Tobi' }, email: 'tobi@learnboost.com' } }\n\nqs.stringify({ user: { name: 'Tobi', email: 'tobi@learnboost.com' }})\n// => user[name]=Tobi&user[email]=tobi%40learnboost.com\n```\n\n## Testing\n\nInstall dev dependencies:\n\n $ npm install -d\n\nand execute:\n\n $ make test\n\nbrowser:\n\n $ open test/browser/index.html\n\n## License \n\n(The MIT License)\n\nCopyright (c) 2010 TJ Holowaychuk <tj@vision-media.ca>\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n'Software'), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.", + "readmeFilename": "Readme.md", + "_id": "qs@0.5.1", + "dist": { + "shasum": "24f6b80aa24c3b63a726bc5550b5905a5d0ef81c" + }, + "_from": "qs@0.5.1", + "_resolved": "https://registry.npmjs.org/qs/-/qs-0.5.1.tgz" +} diff --git a/node_modules/express/node_modules/connect/node_modules/qs/querystring.js b/node_modules/express/node_modules/connect/node_modules/qs/querystring.js new file mode 100644 index 0000000..7466b06 --- /dev/null +++ b/node_modules/express/node_modules/connect/node_modules/qs/querystring.js @@ -0,0 +1,254 @@ +;(function(){ + +/** + * Object#toString() ref for stringify(). + */ + +var toString = Object.prototype.toString; + +/** + * Cache non-integer test regexp. + */ + +var isint = /^[0-9]+$/; + +function promote(parent, key) { + if (parent[key].length == 0) return parent[key] = {}; + var t = {}; + for (var i in parent[key]) t[i] = parent[key][i]; + parent[key] = t; + return t; +} + +function parse(parts, parent, key, val) { + var part = parts.shift(); + // end + if (!part) { + if (Array.isArray(parent[key])) { + parent[key].push(val); + } else if ('object' == typeof parent[key]) { + parent[key] = val; + } else if ('undefined' == typeof parent[key]) { + parent[key] = val; + } else { + parent[key] = [parent[key], val]; + } + // array + } else { + var obj = parent[key] = parent[key] || []; + if (']' == part) { + if (Array.isArray(obj)) { + if ('' != val) obj.push(val); + } else if ('object' == typeof obj) { + obj[Object.keys(obj).length] = val; + } else { + obj = parent[key] = [parent[key], val]; + } + // prop + } else if (~part.indexOf(']')) { + part = part.substr(0, part.length - 1); + if (!isint.test(part) && Array.isArray(obj)) obj = promote(parent, key); + parse(parts, obj, part, val); + // key + } else { + if (!isint.test(part) && Array.isArray(obj)) obj = promote(parent, key); + parse(parts, obj, part, val); + } + } +} + +/** + * Merge parent key/val pair. + */ + +function merge(parent, key, val){ + if (~key.indexOf(']')) { + var parts = key.split('[') + , len = parts.length + , last = len - 1; + parse(parts, parent, 'base', val); + // optimize + } else { + if (!isint.test(key) && Array.isArray(parent.base)) { + var t = {}; + for (var k in parent.base) t[k] = parent.base[k]; + parent.base = t; + } + set(parent.base, key, val); + } + + return parent; +} + +/** + * Parse the given obj. + */ + +function parseObject(obj){ + var ret = { base: {} }; + Object.keys(obj).forEach(function(name){ + merge(ret, name, obj[name]); + }); + return ret.base; +} + +/** + * Parse the given str. + */ + +function parseString(str){ + return String(str) + .split('&') + .reduce(function(ret, pair){ + try{ + pair = decodeURIComponent(pair.replace(/\+/g, ' ')); + } catch(e) { + // ignore + } + + var eql = pair.indexOf('=') + , brace = lastBraceInKey(pair) + , key = pair.substr(0, brace || eql) + , val = pair.substr(brace || eql, pair.length) + , val = val.substr(val.indexOf('=') + 1, val.length); + + // ?foo + if ('' == key) key = pair, val = ''; + + return merge(ret, key, val); + }, { base: {} }).base; +} + +/** + * Parse the given query `str` or `obj`, returning an object. + * + * @param {String} str | {Object} obj + * @return {Object} + * @api public + */ + +exports.parse = function(str){ + if (null == str || '' == str) return {}; + return 'object' == typeof str + ? parseObject(str) + : parseString(str); +}; + +/** + * Turn the given `obj` into a query string + * + * @param {Object} obj + * @return {String} + * @api public + */ + +var stringify = exports.stringify = function(obj, prefix) { + if (Array.isArray(obj)) { + return stringifyArray(obj, prefix); + } else if ('[object Object]' == toString.call(obj)) { + return stringifyObject(obj, prefix); + } else if ('string' == typeof obj) { + return stringifyString(obj, prefix); + } else { + return prefix + '=' + obj; + } +}; + +/** + * Stringify the given `str`. + * + * @param {String} str + * @param {String} prefix + * @return {String} + * @api private + */ + +function stringifyString(str, prefix) { + if (!prefix) throw new TypeError('stringify expects an object'); + return prefix + '=' + encodeURIComponent(str); +} + +/** + * Stringify the given `arr`. + * + * @param {Array} arr + * @param {String} prefix + * @return {String} + * @api private + */ + +function stringifyArray(arr, prefix) { + var ret = []; + if (!prefix) throw new TypeError('stringify expects an object'); + for (var i = 0; i < arr.length; i++) { + ret.push(stringify(arr[i], prefix + '['+i+']')); + } + return ret.join('&'); +} + +/** + * Stringify the given `obj`. + * + * @param {Object} obj + * @param {String} prefix + * @return {String} + * @api private + */ + +function stringifyObject(obj, prefix) { + var ret = [] + , keys = Object.keys(obj) + , key; + + for (var i = 0, len = keys.length; i < len; ++i) { + key = keys[i]; + ret.push(stringify(obj[key], prefix + ? prefix + '[' + encodeURIComponent(key) + ']' + : encodeURIComponent(key))); + } + + return ret.join('&'); +} + +/** + * Set `obj`'s `key` to `val` respecting + * the weird and wonderful syntax of a qs, + * where "foo=bar&foo=baz" becomes an array. + * + * @param {Object} obj + * @param {String} key + * @param {String} val + * @api private + */ + +function set(obj, key, val) { + var v = obj[key]; + if (undefined === v) { + obj[key] = val; + } else if (Array.isArray(v)) { + v.push(val); + } else { + obj[key] = [v, val]; + } +} + +/** + * Locate last brace in `str` within the key. + * + * @param {String} str + * @return {Number} + * @api private + */ + +function lastBraceInKey(str) { + var len = str.length + , brace + , c; + for (var i = 0; i < len; ++i) { + c = str[i]; + if (']' == c) brace = false; + if ('[' == c) brace = true; + if ('=' == c && !brace) return i; + } +} +})(); \ No newline at end of file diff --git a/node_modules/express/node_modules/connect/node_modules/qs/test/browser/expect.js b/node_modules/express/node_modules/connect/node_modules/qs/test/browser/expect.js new file mode 100644 index 0000000..76aa4e8 --- /dev/null +++ b/node_modules/express/node_modules/connect/node_modules/qs/test/browser/expect.js @@ -0,0 +1,1202 @@ + +(function (global, module) { + + if ('undefined' == typeof module) { + var module = { exports: {} } + , exports = module.exports + } + + /** + * Exports. + */ + + module.exports = expect; + expect.Assertion = Assertion; + + /** + * Exports version. + */ + + expect.version = '0.1.2'; + + /** + * Possible assertion flags. + */ + + var flags = { + not: ['to', 'be', 'have', 'include', 'only'] + , to: ['be', 'have', 'include', 'only', 'not'] + , only: ['have'] + , have: ['own'] + , be: ['an'] + }; + + function expect (obj) { + return new Assertion(obj); + } + + /** + * Constructor + * + * @api private + */ + + function Assertion (obj, flag, parent) { + this.obj = obj; + this.flags = {}; + + if (undefined != parent) { + this.flags[flag] = true; + + for (var i in parent.flags) { + if (parent.flags.hasOwnProperty(i)) { + this.flags[i] = true; + } + } + } + + var $flags = flag ? flags[flag] : keys(flags) + , self = this + + if ($flags) { + for (var i = 0, l = $flags.length; i < l; i++) { + // avoid recursion + if (this.flags[$flags[i]]) continue; + + var name = $flags[i] + , assertion = new Assertion(this.obj, name, this) + + if ('function' == typeof Assertion.prototype[name]) { + // clone the function, make sure we dont touch the prot reference + var old = this[name]; + this[name] = function () { + return old.apply(self, arguments); + } + + for (var fn in Assertion.prototype) { + if (Assertion.prototype.hasOwnProperty(fn) && fn != name) { + this[name][fn] = bind(assertion[fn], assertion); + } + } + } else { + this[name] = assertion; + } + } + } + }; + + /** + * Performs an assertion + * + * @api private + */ + + Assertion.prototype.assert = function (truth, msg, error) { + var msg = this.flags.not ? error : msg + , ok = this.flags.not ? !truth : truth; + + if (!ok) { + throw new Error(msg); + } + + this.and = new Assertion(this.obj); + }; + + /** + * Check if the value is truthy + * + * @api public + */ + + Assertion.prototype.ok = function () { + this.assert( + !!this.obj + , 'expected ' + i(this.obj) + ' to be truthy' + , 'expected ' + i(this.obj) + ' to be falsy'); + }; + + /** + * Assert that the function throws. + * + * @param {Function|RegExp} callback, or regexp to match error string against + * @api public + */ + + Assertion.prototype.throwError = + Assertion.prototype.throwException = function (fn) { + expect(this.obj).to.be.a('function'); + + var thrown = false + , not = this.flags.not + + try { + this.obj(); + } catch (e) { + if ('function' == typeof fn) { + fn(e); + } else if ('object' == typeof fn) { + var subject = 'string' == typeof e ? e : e.message; + if (not) { + expect(subject).to.not.match(fn); + } else { + expect(subject).to.match(fn); + } + } + thrown = true; + } + + if ('object' == typeof fn && not) { + // in the presence of a matcher, ensure the `not` only applies to + // the matching. + this.flags.not = false; + } + + var name = this.obj.name || 'fn'; + this.assert( + thrown + , 'expected ' + name + ' to throw an exception' + , 'expected ' + name + ' not to throw an exception'); + }; + + /** + * Checks if the array is empty. + * + * @api public + */ + + Assertion.prototype.empty = function () { + var expectation; + + if ('object' == typeof this.obj && null !== this.obj && !isArray(this.obj)) { + if ('number' == typeof this.obj.length) { + expectation = !this.obj.length; + } else { + expectation = !keys(this.obj).length; + } + } else { + if ('string' != typeof this.obj) { + expect(this.obj).to.be.an('object'); + } + + expect(this.obj).to.have.property('length'); + expectation = !this.obj.length; + } + + this.assert( + expectation + , 'expected ' + i(this.obj) + ' to be empty' + , 'expected ' + i(this.obj) + ' to not be empty'); + return this; + }; + + /** + * Checks if the obj exactly equals another. + * + * @api public + */ + + Assertion.prototype.be = + Assertion.prototype.equal = function (obj) { + this.assert( + obj === this.obj + , 'expected ' + i(this.obj) + ' to equal ' + i(obj) + , 'expected ' + i(this.obj) + ' to not equal ' + i(obj)); + return this; + }; + + /** + * Checks if the obj sortof equals another. + * + * @api public + */ + + Assertion.prototype.eql = function (obj) { + this.assert( + expect.eql(obj, this.obj) + , 'expected ' + i(this.obj) + ' to sort of equal ' + i(obj) + , 'expected ' + i(this.obj) + ' to sort of not equal ' + i(obj)); + return this; + }; + + /** + * Assert within start to finish (inclusive). + * + * @param {Number} start + * @param {Number} finish + * @api public + */ + + Assertion.prototype.within = function (start, finish) { + var range = start + '..' + finish; + this.assert( + this.obj >= start && this.obj <= finish + , 'expected ' + i(this.obj) + ' to be within ' + range + , 'expected ' + i(this.obj) + ' to not be within ' + range); + return this; + }; + + /** + * Assert typeof / instance of + * + * @api public + */ + + Assertion.prototype.a = + Assertion.prototype.an = function (type) { + if ('string' == typeof type) { + // proper english in error msg + var n = /^[aeiou]/.test(type) ? 'n' : ''; + + // typeof with support for 'array' + this.assert( + 'array' == type ? isArray(this.obj) : + 'object' == type + ? 'object' == typeof this.obj && null !== this.obj + : type == typeof this.obj + , 'expected ' + i(this.obj) + ' to be a' + n + ' ' + type + , 'expected ' + i(this.obj) + ' not to be a' + n + ' ' + type); + } else { + // instanceof + var name = type.name || 'supplied constructor'; + this.assert( + this.obj instanceof type + , 'expected ' + i(this.obj) + ' to be an instance of ' + name + , 'expected ' + i(this.obj) + ' not to be an instance of ' + name); + } + + return this; + }; + + /** + * Assert numeric value above _n_. + * + * @param {Number} n + * @api public + */ + + Assertion.prototype.greaterThan = + Assertion.prototype.above = function (n) { + this.assert( + this.obj > n + , 'expected ' + i(this.obj) + ' to be above ' + n + , 'expected ' + i(this.obj) + ' to be below ' + n); + return this; + }; + + /** + * Assert numeric value below _n_. + * + * @param {Number} n + * @api public + */ + + Assertion.prototype.lessThan = + Assertion.prototype.below = function (n) { + this.assert( + this.obj < n + , 'expected ' + i(this.obj) + ' to be below ' + n + , 'expected ' + i(this.obj) + ' to be above ' + n); + return this; + }; + + /** + * Assert string value matches _regexp_. + * + * @param {RegExp} regexp + * @api public + */ + + Assertion.prototype.match = function (regexp) { + this.assert( + regexp.exec(this.obj) + , 'expected ' + i(this.obj) + ' to match ' + regexp + , 'expected ' + i(this.obj) + ' not to match ' + regexp); + return this; + }; + + /** + * Assert property "length" exists and has value of _n_. + * + * @param {Number} n + * @api public + */ + + Assertion.prototype.length = function (n) { + expect(this.obj).to.have.property('length'); + var len = this.obj.length; + this.assert( + n == len + , 'expected ' + i(this.obj) + ' to have a length of ' + n + ' but got ' + len + , 'expected ' + i(this.obj) + ' to not have a length of ' + len); + return this; + }; + + /** + * Assert property _name_ exists, with optional _val_. + * + * @param {String} name + * @param {Mixed} val + * @api public + */ + + Assertion.prototype.property = function (name, val) { + if (this.flags.own) { + this.assert( + Object.prototype.hasOwnProperty.call(this.obj, name) + , 'expected ' + i(this.obj) + ' to have own property ' + i(name) + , 'expected ' + i(this.obj) + ' to not have own property ' + i(name)); + return this; + } + + if (this.flags.not && undefined !== val) { + if (undefined === this.obj[name]) { + throw new Error(i(this.obj) + ' has no property ' + i(name)); + } + } else { + var hasProp; + try { + hasProp = name in this.obj + } catch (e) { + hasProp = undefined !== this.obj[name] + } + + this.assert( + hasProp + , 'expected ' + i(this.obj) + ' to have a property ' + i(name) + , 'expected ' + i(this.obj) + ' to not have a property ' + i(name)); + } + + if (undefined !== val) { + this.assert( + val === this.obj[name] + , 'expected ' + i(this.obj) + ' to have a property ' + i(name) + + ' of ' + i(val) + ', but got ' + i(this.obj[name]) + , 'expected ' + i(this.obj) + ' to not have a property ' + i(name) + + ' of ' + i(val)); + } + + this.obj = this.obj[name]; + return this; + }; + + /** + * Assert that the array contains _obj_ or string contains _obj_. + * + * @param {Mixed} obj|string + * @api public + */ + + Assertion.prototype.string = + Assertion.prototype.contain = function (obj) { + if ('string' == typeof this.obj) { + this.assert( + ~this.obj.indexOf(obj) + , 'expected ' + i(this.obj) + ' to contain ' + i(obj) + , 'expected ' + i(this.obj) + ' to not contain ' + i(obj)); + } else { + this.assert( + ~indexOf(this.obj, obj) + , 'expected ' + i(this.obj) + ' to contain ' + i(obj) + , 'expected ' + i(this.obj) + ' to not contain ' + i(obj)); + } + return this; + }; + + /** + * Assert exact keys or inclusion of keys by using + * the `.own` modifier. + * + * @param {Array|String ...} keys + * @api public + */ + + Assertion.prototype.key = + Assertion.prototype.keys = function ($keys) { + var str + , ok = true; + + $keys = isArray($keys) + ? $keys + : Array.prototype.slice.call(arguments); + + if (!$keys.length) throw new Error('keys required'); + + var actual = keys(this.obj) + , len = $keys.length; + + // Inclusion + ok = every($keys, function (key) { + return ~indexOf(actual, key); + }); + + // Strict + if (!this.flags.not && this.flags.only) { + ok = ok && $keys.length == actual.length; + } + + // Key string + if (len > 1) { + $keys = map($keys, function (key) { + return i(key); + }); + var last = $keys.pop(); + str = $keys.join(', ') + ', and ' + last; + } else { + str = i($keys[0]); + } + + // Form + str = (len > 1 ? 'keys ' : 'key ') + str; + + // Have / include + str = (!this.flags.only ? 'include ' : 'only have ') + str; + + // Assertion + this.assert( + ok + , 'expected ' + i(this.obj) + ' to ' + str + , 'expected ' + i(this.obj) + ' to not ' + str); + + return this; + }; + + /** + * Function bind implementation. + */ + + function bind (fn, scope) { + return function () { + return fn.apply(scope, arguments); + } + } + + /** + * Array every compatibility + * + * @see bit.ly/5Fq1N2 + * @api public + */ + + function every (arr, fn, thisObj) { + var scope = thisObj || global; + for (var i = 0, j = arr.length; i < j; ++i) { + if (!fn.call(scope, arr[i], i, arr)) { + return false; + } + } + return true; + }; + + /** + * Array indexOf compatibility. + * + * @see bit.ly/a5Dxa2 + * @api public + */ + + function indexOf (arr, o, i) { + if (Array.prototype.indexOf) { + return Array.prototype.indexOf.call(arr, o, i); + } + + if (arr.length === undefined) { + return -1; + } + + for (var j = arr.length, i = i < 0 ? i + j < 0 ? 0 : i + j : i || 0 + ; i < j && arr[i] !== o; i++); + + return j <= i ? -1 : i; + }; + + /** + * Inspects an object. + * + * @see taken from node.js `util` module (copyright Joyent, MIT license) + * @api private + */ + + function i (obj, showHidden, depth) { + var seen = []; + + function stylize (str) { + return str; + }; + + function format (value, recurseTimes) { + // Provide a hook for user-specified inspect functions. + // Check that value is an object with an inspect function on it + if (value && typeof value.inspect === 'function' && + // Filter out the util module, it's inspect function is special + value !== exports && + // Also filter out any prototype objects using the circular check. + !(value.constructor && value.constructor.prototype === value)) { + return value.inspect(recurseTimes); + } + + // Primitive types cannot have properties + switch (typeof value) { + case 'undefined': + return stylize('undefined', 'undefined'); + + case 'string': + var simple = '\'' + json.stringify(value).replace(/^"|"$/g, '') + .replace(/'/g, "\\'") + .replace(/\\"/g, '"') + '\''; + return stylize(simple, 'string'); + + case 'number': + return stylize('' + value, 'number'); + + case 'boolean': + return stylize('' + value, 'boolean'); + } + // For some reason typeof null is "object", so special case here. + if (value === null) { + return stylize('null', 'null'); + } + + // Look up the keys of the object. + var visible_keys = keys(value); + var $keys = showHidden ? Object.getOwnPropertyNames(value) : visible_keys; + + // Functions without properties can be shortcutted. + if (typeof value === 'function' && $keys.length === 0) { + if (isRegExp(value)) { + return stylize('' + value, 'regexp'); + } else { + var name = value.name ? ': ' + value.name : ''; + return stylize('[Function' + name + ']', 'special'); + } + } + + // Dates without properties can be shortcutted + if (isDate(value) && $keys.length === 0) { + return stylize(value.toUTCString(), 'date'); + } + + var base, type, braces; + // Determine the object type + if (isArray(value)) { + type = 'Array'; + braces = ['[', ']']; + } else { + type = 'Object'; + braces = ['{', '}']; + } + + // Make functions say that they are functions + if (typeof value === 'function') { + var n = value.name ? ': ' + value.name : ''; + base = (isRegExp(value)) ? ' ' + value : ' [Function' + n + ']'; + } else { + base = ''; + } + + // Make dates with properties first say the date + if (isDate(value)) { + base = ' ' + value.toUTCString(); + } + + if ($keys.length === 0) { + return braces[0] + base + braces[1]; + } + + if (recurseTimes < 0) { + if (isRegExp(value)) { + return stylize('' + value, 'regexp'); + } else { + return stylize('[Object]', 'special'); + } + } + + seen.push(value); + + var output = map($keys, function (key) { + var name, str; + if (value.__lookupGetter__) { + if (value.__lookupGetter__(key)) { + if (value.__lookupSetter__(key)) { + str = stylize('[Getter/Setter]', 'special'); + } else { + str = stylize('[Getter]', 'special'); + } + } else { + if (value.__lookupSetter__(key)) { + str = stylize('[Setter]', 'special'); + } + } + } + if (indexOf(visible_keys, key) < 0) { + name = '[' + key + ']'; + } + if (!str) { + if (indexOf(seen, value[key]) < 0) { + if (recurseTimes === null) { + str = format(value[key]); + } else { + str = format(value[key], recurseTimes - 1); + } + if (str.indexOf('\n') > -1) { + if (isArray(value)) { + str = map(str.split('\n'), function (line) { + return ' ' + line; + }).join('\n').substr(2); + } else { + str = '\n' + map(str.split('\n'), function (line) { + return ' ' + line; + }).join('\n'); + } + } + } else { + str = stylize('[Circular]', 'special'); + } + } + if (typeof name === 'undefined') { + if (type === 'Array' && key.match(/^\d+$/)) { + return str; + } + name = json.stringify('' + key); + if (name.match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)) { + name = name.substr(1, name.length - 2); + name = stylize(name, 'name'); + } else { + name = name.replace(/'/g, "\\'") + .replace(/\\"/g, '"') + .replace(/(^"|"$)/g, "'"); + name = stylize(name, 'string'); + } + } + + return name + ': ' + str; + }); + + seen.pop(); + + var numLinesEst = 0; + var length = reduce(output, function (prev, cur) { + numLinesEst++; + if (indexOf(cur, '\n') >= 0) numLinesEst++; + return prev + cur.length + 1; + }, 0); + + if (length > 50) { + output = braces[0] + + (base === '' ? '' : base + '\n ') + + ' ' + + output.join(',\n ') + + ' ' + + braces[1]; + + } else { + output = braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1]; + } + + return output; + } + return format(obj, (typeof depth === 'undefined' ? 2 : depth)); + }; + + function isArray (ar) { + return Object.prototype.toString.call(ar) == '[object Array]'; + }; + + function isRegExp(re) { + var s = '' + re; + return re instanceof RegExp || // easy case + // duck-type for context-switching evalcx case + typeof(re) === 'function' && + re.constructor.name === 'RegExp' && + re.compile && + re.test && + re.exec && + s.match(/^\/.*\/[gim]{0,3}$/); + }; + + function isDate(d) { + if (d instanceof Date) return true; + return false; + }; + + function keys (obj) { + if (Object.keys) { + return Object.keys(obj); + } + + var keys = []; + + for (var i in obj) { + if (Object.prototype.hasOwnProperty.call(obj, i)) { + keys.push(i); + } + } + + return keys; + } + + function map (arr, mapper, that) { + if (Array.prototype.map) { + return Array.prototype.map.call(arr, mapper, that); + } + + var other= new Array(arr.length); + + for (var i= 0, n = arr.length; i= 2) { + var rv = arguments[1]; + } else { + do { + if (i in this) { + rv = this[i++]; + break; + } + + // if array contains no values, no initial value to return + if (++i >= len) + throw new TypeError(); + } while (true); + } + + for (; i < len; i++) { + if (i in this) + rv = fun.call(null, rv, this[i], i, this); + } + + return rv; + }; + + /** + * Asserts deep equality + * + * @see taken from node.js `assert` module (copyright Joyent, MIT license) + * @api private + */ + + expect.eql = function eql (actual, expected) { + // 7.1. All identical values are equivalent, as determined by ===. + if (actual === expected) { + return true; + } else if ('undefined' != typeof Buffer + && Buffer.isBuffer(actual) && Buffer.isBuffer(expected)) { + if (actual.length != expected.length) return false; + + for (var i = 0; i < actual.length; i++) { + if (actual[i] !== expected[i]) return false; + } + + return true; + + // 7.2. If the expected value is a Date object, the actual value is + // equivalent if it is also a Date object that refers to the same time. + } else if (actual instanceof Date && expected instanceof Date) { + return actual.getTime() === expected.getTime(); + + // 7.3. Other pairs that do not both pass typeof value == "object", + // equivalence is determined by ==. + } else if (typeof actual != 'object' && typeof expected != 'object') { + return actual == expected; + + // 7.4. For all other Object pairs, including Array objects, equivalence is + // determined by having the same number of owned properties (as verified + // with Object.prototype.hasOwnProperty.call), the same set of keys + // (although not necessarily the same order), equivalent values for every + // corresponding key, and an identical "prototype" property. Note: this + // accounts for both named and indexed properties on Arrays. + } else { + return objEquiv(actual, expected); + } + } + + function isUndefinedOrNull (value) { + return value === null || value === undefined; + } + + function isArguments (object) { + return Object.prototype.toString.call(object) == '[object Arguments]'; + } + + function objEquiv (a, b) { + if (isUndefinedOrNull(a) || isUndefinedOrNull(b)) + return false; + // an identical "prototype" property. + if (a.prototype !== b.prototype) return false; + //~~~I've managed to break Object.keys through screwy arguments passing. + // Converting to array solves the problem. + if (isArguments(a)) { + if (!isArguments(b)) { + return false; + } + a = pSlice.call(a); + b = pSlice.call(b); + return expect.eql(a, b); + } + try{ + var ka = keys(a), + kb = keys(b), + key, i; + } catch (e) {//happens when one is a string literal and the other isn't + return false; + } + // having the same number of owned properties (keys incorporates hasOwnProperty) + if (ka.length != kb.length) + return false; + //the same set of keys (although not necessarily the same order), + ka.sort(); + kb.sort(); + //~~~cheap key test + for (i = ka.length - 1; i >= 0; i--) { + if (ka[i] != kb[i]) + return false; + } + //equivalent values for every corresponding key, and + //~~~possibly expensive deep test + for (i = ka.length - 1; i >= 0; i--) { + key = ka[i]; + if (!expect.eql(a[key], b[key])) + return false; + } + return true; + } + + var json = (function () { + "use strict"; + + if ('object' == typeof JSON && JSON.parse && JSON.stringify) { + return { + parse: nativeJSON.parse + , stringify: nativeJSON.stringify + } + } + + var JSON = {}; + + function f(n) { + // Format integers to have at least two digits. + return n < 10 ? '0' + n : n; + } + + function date(d, key) { + return isFinite(d.valueOf()) ? + d.getUTCFullYear() + '-' + + f(d.getUTCMonth() + 1) + '-' + + f(d.getUTCDate()) + 'T' + + f(d.getUTCHours()) + ':' + + f(d.getUTCMinutes()) + ':' + + f(d.getUTCSeconds()) + 'Z' : null; + }; + + var cx = /[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g, + escapable = /[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g, + gap, + indent, + meta = { // table of character substitutions + '\b': '\\b', + '\t': '\\t', + '\n': '\\n', + '\f': '\\f', + '\r': '\\r', + '"' : '\\"', + '\\': '\\\\' + }, + rep; + + + function quote(string) { + + // If the string contains no control characters, no quote characters, and no + // backslash characters, then we can safely slap some quotes around it. + // Otherwise we must also replace the offending characters with safe escape + // sequences. + + escapable.lastIndex = 0; + return escapable.test(string) ? '"' + string.replace(escapable, function (a) { + var c = meta[a]; + return typeof c === 'string' ? c : + '\\u' + ('0000' + a.charCodeAt(0).toString(16)).slice(-4); + }) + '"' : '"' + string + '"'; + } + + + function str(key, holder) { + + // Produce a string from holder[key]. + + var i, // The loop counter. + k, // The member key. + v, // The member value. + length, + mind = gap, + partial, + value = holder[key]; + + // If the value has a toJSON method, call it to obtain a replacement value. + + if (value instanceof Date) { + value = date(key); + } + + // If we were called with a replacer function, then call the replacer to + // obtain a replacement value. + + if (typeof rep === 'function') { + value = rep.call(holder, key, value); + } + + // What happens next depends on the value's type. + + switch (typeof value) { + case 'string': + return quote(value); + + case 'number': + + // JSON numbers must be finite. Encode non-finite numbers as null. + + return isFinite(value) ? String(value) : 'null'; + + case 'boolean': + case 'null': + + // If the value is a boolean or null, convert it to a string. Note: + // typeof null does not produce 'null'. The case is included here in + // the remote chance that this gets fixed someday. + + return String(value); + + // If the type is 'object', we might be dealing with an object or an array or + // null. + + case 'object': + + // Due to a specification blunder in ECMAScript, typeof null is 'object', + // so watch out for that case. + + if (!value) { + return 'null'; + } + + // Make an array to hold the partial results of stringifying this object value. + + gap += indent; + partial = []; + + // Is the value an array? + + if (Object.prototype.toString.apply(value) === '[object Array]') { + + // The value is an array. Stringify every element. Use null as a placeholder + // for non-JSON values. + + length = value.length; + for (i = 0; i < length; i += 1) { + partial[i] = str(i, value) || 'null'; + } + + // Join all of the elements together, separated with commas, and wrap them in + // brackets. + + v = partial.length === 0 ? '[]' : gap ? + '[\n' + gap + partial.join(',\n' + gap) + '\n' + mind + ']' : + '[' + partial.join(',') + ']'; + gap = mind; + return v; + } + + // If the replacer is an array, use it to select the members to be stringified. + + if (rep && typeof rep === 'object') { + length = rep.length; + for (i = 0; i < length; i += 1) { + if (typeof rep[i] === 'string') { + k = rep[i]; + v = str(k, value); + if (v) { + partial.push(quote(k) + (gap ? ': ' : ':') + v); + } + } + } + } else { + + // Otherwise, iterate through all of the keys in the object. + + for (k in value) { + if (Object.prototype.hasOwnProperty.call(value, k)) { + v = str(k, value); + if (v) { + partial.push(quote(k) + (gap ? ': ' : ':') + v); + } + } + } + } + + // Join all of the member texts together, separated with commas, + // and wrap them in braces. + + v = partial.length === 0 ? '{}' : gap ? + '{\n' + gap + partial.join(',\n' + gap) + '\n' + mind + '}' : + '{' + partial.join(',') + '}'; + gap = mind; + return v; + } + } + + // If the JSON object does not yet have a stringify method, give it one. + + JSON.stringify = function (value, replacer, space) { + + // The stringify method takes a value and an optional replacer, and an optional + // space parameter, and returns a JSON text. The replacer can be a function + // that can replace values, or an array of strings that will select the keys. + // A default replacer method can be provided. Use of the space parameter can + // produce text that is more easily readable. + + var i; + gap = ''; + indent = ''; + + // If the space parameter is a number, make an indent string containing that + // many spaces. + + if (typeof space === 'number') { + for (i = 0; i < space; i += 1) { + indent += ' '; + } + + // If the space parameter is a string, it will be used as the indent string. + + } else if (typeof space === 'string') { + indent = space; + } + + // If there is a replacer, it must be a function or an array. + // Otherwise, throw an error. + + rep = replacer; + if (replacer && typeof replacer !== 'function' && + (typeof replacer !== 'object' || + typeof replacer.length !== 'number')) { + throw new Error('JSON.stringify'); + } + + // Make a fake root object containing our value under the key of ''. + // Return the result of stringifying the value. + + return str('', {'': value}); + }; + + // If the JSON object does not yet have a parse method, give it one. + + JSON.parse = function (text, reviver) { + // The parse method takes a text and an optional reviver function, and returns + // a JavaScript value if the text is a valid JSON text. + + var j; + + function walk(holder, key) { + + // The walk method is used to recursively walk the resulting structure so + // that modifications can be made. + + var k, v, value = holder[key]; + if (value && typeof value === 'object') { + for (k in value) { + if (Object.prototype.hasOwnProperty.call(value, k)) { + v = walk(value, k); + if (v !== undefined) { + value[k] = v; + } else { + delete value[k]; + } + } + } + } + return reviver.call(holder, key, value); + } + + + // Parsing happens in four stages. In the first stage, we replace certain + // Unicode characters with escape sequences. JavaScript handles many characters + // incorrectly, either silently deleting them, or treating them as line endings. + + text = String(text); + cx.lastIndex = 0; + if (cx.test(text)) { + text = text.replace(cx, function (a) { + return '\\u' + + ('0000' + a.charCodeAt(0).toString(16)).slice(-4); + }); + } + + // In the second stage, we run the text against regular expressions that look + // for non-JSON patterns. We are especially concerned with '()' and 'new' + // because they can cause invocation, and '=' because it can cause mutation. + // But just to be safe, we want to reject all unexpected forms. + + // We split the second stage into 4 regexp operations in order to work around + // crippling inefficiencies in IE's and Safari's regexp engines. First we + // replace the JSON backslash pairs with '@' (a non-JSON character). Second, we + // replace all simple value tokens with ']' characters. Third, we delete all + // open brackets that follow a colon or comma or that begin the text. Finally, + // we look to see that the remaining characters are only whitespace or ']' or + // ',' or ':' or '{' or '}'. If that is so, then the text is safe for eval. + + if (/^[\],:{}\s]*$/ + .test(text.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g, '@') + .replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, ']') + .replace(/(?:^|:|,)(?:\s*\[)+/g, ''))) { + + // In the third stage we use the eval function to compile the text into a + // JavaScript structure. The '{' operator is subject to a syntactic ambiguity + // in JavaScript: it can begin a block or an object literal. We wrap the text + // in parens to eliminate the ambiguity. + + j = eval('(' + text + ')'); + + // In the optional fourth stage, we recursively walk the new structure, passing + // each name/value pair to a reviver function for possible transformation. + + return typeof reviver === 'function' ? + walk({'': j}, '') : j; + } + + // If the text is not JSON parseable, then a SyntaxError is thrown. + + throw new SyntaxError('JSON.parse'); + }; + + return JSON; + })(); + + if ('undefined' != typeof window) { + window.expect = module.exports; + } + +})( + this + , 'undefined' != typeof module ? module : {} + , 'undefined' != typeof exports ? exports : {} +); \ No newline at end of file diff --git a/node_modules/express/node_modules/connect/node_modules/qs/test/browser/index.html b/node_modules/express/node_modules/connect/node_modules/qs/test/browser/index.html new file mode 100644 index 0000000..c73147a --- /dev/null +++ b/node_modules/express/node_modules/connect/node_modules/qs/test/browser/index.html @@ -0,0 +1,18 @@ + + + Mocha + + + + + + + + + + + + +
    + + diff --git a/node_modules/express/node_modules/connect/node_modules/qs/test/browser/jquery.js b/node_modules/express/node_modules/connect/node_modules/qs/test/browser/jquery.js new file mode 100644 index 0000000..f3201aa --- /dev/null +++ b/node_modules/express/node_modules/connect/node_modules/qs/test/browser/jquery.js @@ -0,0 +1,8981 @@ +/*! + * jQuery JavaScript Library v1.6.2 + * http://jquery.com/ + * + * Copyright 2011, John Resig + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * Includes Sizzle.js + * http://sizzlejs.com/ + * Copyright 2011, The Dojo Foundation + * Released under the MIT, BSD, and GPL Licenses. + * + * Date: Thu Jun 30 14:16:56 2011 -0400 + */ +(function( window, undefined ) { + +// Use the correct document accordingly with window argument (sandbox) +var document = window.document, + navigator = window.navigator, + location = window.location; +var jQuery = (function() { + +// Define a local copy of jQuery +var jQuery = function( selector, context ) { + // The jQuery object is actually just the init constructor 'enhanced' + return new jQuery.fn.init( selector, context, rootjQuery ); + }, + + // Map over jQuery in case of overwrite + _jQuery = window.jQuery, + + // Map over the $ in case of overwrite + _$ = window.$, + + // A central reference to the root jQuery(document) + rootjQuery, + + // A simple way to check for HTML strings or ID strings + // (both of which we optimize for) + quickExpr = /^(?:[^<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/, + + // Check if a string has a non-whitespace character in it + rnotwhite = /\S/, + + // Used for trimming whitespace + trimLeft = /^\s+/, + trimRight = /\s+$/, + + // Check for digits + rdigit = /\d/, + + // Match a standalone tag + rsingleTag = /^<(\w+)\s*\/?>(?:<\/\1>)?$/, + + // JSON RegExp + rvalidchars = /^[\],:{}\s]*$/, + rvalidescape = /\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g, + rvalidtokens = /"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, + rvalidbraces = /(?:^|:|,)(?:\s*\[)+/g, + + // Useragent RegExp + rwebkit = /(webkit)[ \/]([\w.]+)/, + ropera = /(opera)(?:.*version)?[ \/]([\w.]+)/, + rmsie = /(msie) ([\w.]+)/, + rmozilla = /(mozilla)(?:.*? rv:([\w.]+))?/, + + // Matches dashed string for camelizing + rdashAlpha = /-([a-z])/ig, + + // Used by jQuery.camelCase as callback to replace() + fcamelCase = function( all, letter ) { + return letter.toUpperCase(); + }, + + // Keep a UserAgent string for use with jQuery.browser + userAgent = navigator.userAgent, + + // For matching the engine and version of the browser + browserMatch, + + // The deferred used on DOM ready + readyList, + + // The ready event handler + DOMContentLoaded, + + // Save a reference to some core methods + toString = Object.prototype.toString, + hasOwn = Object.prototype.hasOwnProperty, + push = Array.prototype.push, + slice = Array.prototype.slice, + trim = String.prototype.trim, + indexOf = Array.prototype.indexOf, + + // [[Class]] -> type pairs + class2type = {}; + +jQuery.fn = jQuery.prototype = { + constructor: jQuery, + init: function( selector, context, rootjQuery ) { + var match, elem, ret, doc; + + // Handle $(""), $(null), or $(undefined) + if ( !selector ) { + return this; + } + + // Handle $(DOMElement) + if ( selector.nodeType ) { + this.context = this[0] = selector; + this.length = 1; + return this; + } + + // The body element only exists once, optimize finding it + if ( selector === "body" && !context && document.body ) { + this.context = document; + this[0] = document.body; + this.selector = selector; + this.length = 1; + return this; + } + + // Handle HTML strings + if ( typeof selector === "string" ) { + // Are we dealing with HTML string or an ID? + if ( selector.charAt(0) === "<" && selector.charAt( selector.length - 1 ) === ">" && selector.length >= 3 ) { + // Assume that strings that start and end with <> are HTML and skip the regex check + match = [ null, selector, null ]; + + } else { + match = quickExpr.exec( selector ); + } + + // Verify a match, and that no context was specified for #id + if ( match && (match[1] || !context) ) { + + // HANDLE: $(html) -> $(array) + if ( match[1] ) { + context = context instanceof jQuery ? context[0] : context; + doc = (context ? context.ownerDocument || context : document); + + // If a single string is passed in and it's a single tag + // just do a createElement and skip the rest + ret = rsingleTag.exec( selector ); + + if ( ret ) { + if ( jQuery.isPlainObject( context ) ) { + selector = [ document.createElement( ret[1] ) ]; + jQuery.fn.attr.call( selector, context, true ); + + } else { + selector = [ doc.createElement( ret[1] ) ]; + } + + } else { + ret = jQuery.buildFragment( [ match[1] ], [ doc ] ); + selector = (ret.cacheable ? jQuery.clone(ret.fragment) : ret.fragment).childNodes; + } + + return jQuery.merge( this, selector ); + + // HANDLE: $("#id") + } else { + elem = document.getElementById( match[2] ); + + // Check parentNode to catch when Blackberry 4.6 returns + // nodes that are no longer in the document #6963 + if ( elem && elem.parentNode ) { + // Handle the case where IE and Opera return items + // by name instead of ID + if ( elem.id !== match[2] ) { + return rootjQuery.find( selector ); + } + + // Otherwise, we inject the element directly into the jQuery object + this.length = 1; + this[0] = elem; + } + + this.context = document; + this.selector = selector; + return this; + } + + // HANDLE: $(expr, $(...)) + } else if ( !context || context.jquery ) { + return (context || rootjQuery).find( selector ); + + // HANDLE: $(expr, context) + // (which is just equivalent to: $(context).find(expr) + } else { + return this.constructor( context ).find( selector ); + } + + // HANDLE: $(function) + // Shortcut for document ready + } else if ( jQuery.isFunction( selector ) ) { + return rootjQuery.ready( selector ); + } + + if (selector.selector !== undefined) { + this.selector = selector.selector; + this.context = selector.context; + } + + return jQuery.makeArray( selector, this ); + }, + + // Start with an empty selector + selector: "", + + // The current version of jQuery being used + jquery: "1.6.2", + + // The default length of a jQuery object is 0 + length: 0, + + // The number of elements contained in the matched element set + size: function() { + return this.length; + }, + + toArray: function() { + return slice.call( this, 0 ); + }, + + // Get the Nth element in the matched element set OR + // Get the whole matched element set as a clean array + get: function( num ) { + return num == null ? + + // Return a 'clean' array + this.toArray() : + + // Return just the object + ( num < 0 ? this[ this.length + num ] : this[ num ] ); + }, + + // Take an array of elements and push it onto the stack + // (returning the new matched element set) + pushStack: function( elems, name, selector ) { + // Build a new jQuery matched element set + var ret = this.constructor(); + + if ( jQuery.isArray( elems ) ) { + push.apply( ret, elems ); + + } else { + jQuery.merge( ret, elems ); + } + + // Add the old object onto the stack (as a reference) + ret.prevObject = this; + + ret.context = this.context; + + if ( name === "find" ) { + ret.selector = this.selector + (this.selector ? " " : "") + selector; + } else if ( name ) { + ret.selector = this.selector + "." + name + "(" + selector + ")"; + } + + // Return the newly-formed element set + return ret; + }, + + // Execute a callback for every element in the matched set. + // (You can seed the arguments with an array of args, but this is + // only used internally.) + each: function( callback, args ) { + return jQuery.each( this, callback, args ); + }, + + ready: function( fn ) { + // Attach the listeners + jQuery.bindReady(); + + // Add the callback + readyList.done( fn ); + + return this; + }, + + eq: function( i ) { + return i === -1 ? + this.slice( i ) : + this.slice( i, +i + 1 ); + }, + + first: function() { + return this.eq( 0 ); + }, + + last: function() { + return this.eq( -1 ); + }, + + slice: function() { + return this.pushStack( slice.apply( this, arguments ), + "slice", slice.call(arguments).join(",") ); + }, + + map: function( callback ) { + return this.pushStack( jQuery.map(this, function( elem, i ) { + return callback.call( elem, i, elem ); + })); + }, + + end: function() { + return this.prevObject || this.constructor(null); + }, + + // For internal use only. + // Behaves like an Array's method, not like a jQuery method. + push: push, + sort: [].sort, + splice: [].splice +}; + +// Give the init function the jQuery prototype for later instantiation +jQuery.fn.init.prototype = jQuery.fn; + +jQuery.extend = jQuery.fn.extend = function() { + var options, name, src, copy, copyIsArray, clone, + target = arguments[0] || {}, + i = 1, + length = arguments.length, + deep = false; + + // Handle a deep copy situation + if ( typeof target === "boolean" ) { + deep = target; + target = arguments[1] || {}; + // skip the boolean and the target + i = 2; + } + + // Handle case when target is a string or something (possible in deep copy) + if ( typeof target !== "object" && !jQuery.isFunction(target) ) { + target = {}; + } + + // extend jQuery itself if only one argument is passed + if ( length === i ) { + target = this; + --i; + } + + for ( ; i < length; i++ ) { + // Only deal with non-null/undefined values + if ( (options = arguments[ i ]) != null ) { + // Extend the base object + for ( name in options ) { + src = target[ name ]; + copy = options[ name ]; + + // Prevent never-ending loop + if ( target === copy ) { + continue; + } + + // Recurse if we're merging plain objects or arrays + if ( deep && copy && ( jQuery.isPlainObject(copy) || (copyIsArray = jQuery.isArray(copy)) ) ) { + if ( copyIsArray ) { + copyIsArray = false; + clone = src && jQuery.isArray(src) ? src : []; + + } else { + clone = src && jQuery.isPlainObject(src) ? src : {}; + } + + // Never move original objects, clone them + target[ name ] = jQuery.extend( deep, clone, copy ); + + // Don't bring in undefined values + } else if ( copy !== undefined ) { + target[ name ] = copy; + } + } + } + } + + // Return the modified object + return target; +}; + +jQuery.extend({ + noConflict: function( deep ) { + if ( window.$ === jQuery ) { + window.$ = _$; + } + + if ( deep && window.jQuery === jQuery ) { + window.jQuery = _jQuery; + } + + return jQuery; + }, + + // Is the DOM ready to be used? Set to true once it occurs. + isReady: false, + + // A counter to track how many items to wait for before + // the ready event fires. See #6781 + readyWait: 1, + + // Hold (or release) the ready event + holdReady: function( hold ) { + if ( hold ) { + jQuery.readyWait++; + } else { + jQuery.ready( true ); + } + }, + + // Handle when the DOM is ready + ready: function( wait ) { + // Either a released hold or an DOMready/load event and not yet ready + if ( (wait === true && !--jQuery.readyWait) || (wait !== true && !jQuery.isReady) ) { + // Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443). + if ( !document.body ) { + return setTimeout( jQuery.ready, 1 ); + } + + // Remember that the DOM is ready + jQuery.isReady = true; + + // If a normal DOM Ready event fired, decrement, and wait if need be + if ( wait !== true && --jQuery.readyWait > 0 ) { + return; + } + + // If there are functions bound, to execute + readyList.resolveWith( document, [ jQuery ] ); + + // Trigger any bound ready events + if ( jQuery.fn.trigger ) { + jQuery( document ).trigger( "ready" ).unbind( "ready" ); + } + } + }, + + bindReady: function() { + if ( readyList ) { + return; + } + + readyList = jQuery._Deferred(); + + // Catch cases where $(document).ready() is called after the + // browser event has already occurred. + if ( document.readyState === "complete" ) { + // Handle it asynchronously to allow scripts the opportunity to delay ready + return setTimeout( jQuery.ready, 1 ); + } + + // Mozilla, Opera and webkit nightlies currently support this event + if ( document.addEventListener ) { + // Use the handy event callback + document.addEventListener( "DOMContentLoaded", DOMContentLoaded, false ); + + // A fallback to window.onload, that will always work + window.addEventListener( "load", jQuery.ready, false ); + + // If IE event model is used + } else if ( document.attachEvent ) { + // ensure firing before onload, + // maybe late but safe also for iframes + document.attachEvent( "onreadystatechange", DOMContentLoaded ); + + // A fallback to window.onload, that will always work + window.attachEvent( "onload", jQuery.ready ); + + // If IE and not a frame + // continually check to see if the document is ready + var toplevel = false; + + try { + toplevel = window.frameElement == null; + } catch(e) {} + + if ( document.documentElement.doScroll && toplevel ) { + doScrollCheck(); + } + } + }, + + // See test/unit/core.js for details concerning isFunction. + // Since version 1.3, DOM methods and functions like alert + // aren't supported. They return false on IE (#2968). + isFunction: function( obj ) { + return jQuery.type(obj) === "function"; + }, + + isArray: Array.isArray || function( obj ) { + return jQuery.type(obj) === "array"; + }, + + // A crude way of determining if an object is a window + isWindow: function( obj ) { + return obj && typeof obj === "object" && "setInterval" in obj; + }, + + isNaN: function( obj ) { + return obj == null || !rdigit.test( obj ) || isNaN( obj ); + }, + + type: function( obj ) { + return obj == null ? + String( obj ) : + class2type[ toString.call(obj) ] || "object"; + }, + + isPlainObject: function( obj ) { + // Must be an Object. + // Because of IE, we also have to check the presence of the constructor property. + // Make sure that DOM nodes and window objects don't pass through, as well + if ( !obj || jQuery.type(obj) !== "object" || obj.nodeType || jQuery.isWindow( obj ) ) { + return false; + } + + // Not own constructor property must be Object + if ( obj.constructor && + !hasOwn.call(obj, "constructor") && + !hasOwn.call(obj.constructor.prototype, "isPrototypeOf") ) { + return false; + } + + // Own properties are enumerated firstly, so to speed up, + // if last one is own, then all properties are own. + + var key; + for ( key in obj ) {} + + return key === undefined || hasOwn.call( obj, key ); + }, + + isEmptyObject: function( obj ) { + for ( var name in obj ) { + return false; + } + return true; + }, + + error: function( msg ) { + throw msg; + }, + + parseJSON: function( data ) { + if ( typeof data !== "string" || !data ) { + return null; + } + + // Make sure leading/trailing whitespace is removed (IE can't handle it) + data = jQuery.trim( data ); + + // Attempt to parse using the native JSON parser first + if ( window.JSON && window.JSON.parse ) { + return window.JSON.parse( data ); + } + + // Make sure the incoming data is actual JSON + // Logic borrowed from http://json.org/json2.js + if ( rvalidchars.test( data.replace( rvalidescape, "@" ) + .replace( rvalidtokens, "]" ) + .replace( rvalidbraces, "")) ) { + + return (new Function( "return " + data ))(); + + } + jQuery.error( "Invalid JSON: " + data ); + }, + + // Cross-browser xml parsing + // (xml & tmp used internally) + parseXML: function( data , xml , tmp ) { + + if ( window.DOMParser ) { // Standard + tmp = new DOMParser(); + xml = tmp.parseFromString( data , "text/xml" ); + } else { // IE + xml = new ActiveXObject( "Microsoft.XMLDOM" ); + xml.async = "false"; + xml.loadXML( data ); + } + + tmp = xml.documentElement; + + if ( ! tmp || ! tmp.nodeName || tmp.nodeName === "parsererror" ) { + jQuery.error( "Invalid XML: " + data ); + } + + return xml; + }, + + noop: function() {}, + + // Evaluates a script in a global context + // Workarounds based on findings by Jim Driscoll + // http://weblogs.java.net/blog/driscoll/archive/2009/09/08/eval-javascript-global-context + globalEval: function( data ) { + if ( data && rnotwhite.test( data ) ) { + // We use execScript on Internet Explorer + // We use an anonymous function so that context is window + // rather than jQuery in Firefox + ( window.execScript || function( data ) { + window[ "eval" ].call( window, data ); + } )( data ); + } + }, + + // Converts a dashed string to camelCased string; + // Used by both the css and data modules + camelCase: function( string ) { + return string.replace( rdashAlpha, fcamelCase ); + }, + + nodeName: function( elem, name ) { + return elem.nodeName && elem.nodeName.toUpperCase() === name.toUpperCase(); + }, + + // args is for internal usage only + each: function( object, callback, args ) { + var name, i = 0, + length = object.length, + isObj = length === undefined || jQuery.isFunction( object ); + + if ( args ) { + if ( isObj ) { + for ( name in object ) { + if ( callback.apply( object[ name ], args ) === false ) { + break; + } + } + } else { + for ( ; i < length; ) { + if ( callback.apply( object[ i++ ], args ) === false ) { + break; + } + } + } + + // A special, fast, case for the most common use of each + } else { + if ( isObj ) { + for ( name in object ) { + if ( callback.call( object[ name ], name, object[ name ] ) === false ) { + break; + } + } + } else { + for ( ; i < length; ) { + if ( callback.call( object[ i ], i, object[ i++ ] ) === false ) { + break; + } + } + } + } + + return object; + }, + + // Use native String.trim function wherever possible + trim: trim ? + function( text ) { + return text == null ? + "" : + trim.call( text ); + } : + + // Otherwise use our own trimming functionality + function( text ) { + return text == null ? + "" : + text.toString().replace( trimLeft, "" ).replace( trimRight, "" ); + }, + + // results is for internal usage only + makeArray: function( array, results ) { + var ret = results || []; + + if ( array != null ) { + // The window, strings (and functions) also have 'length' + // The extra typeof function check is to prevent crashes + // in Safari 2 (See: #3039) + // Tweaked logic slightly to handle Blackberry 4.7 RegExp issues #6930 + var type = jQuery.type( array ); + + if ( array.length == null || type === "string" || type === "function" || type === "regexp" || jQuery.isWindow( array ) ) { + push.call( ret, array ); + } else { + jQuery.merge( ret, array ); + } + } + + return ret; + }, + + inArray: function( elem, array ) { + + if ( indexOf ) { + return indexOf.call( array, elem ); + } + + for ( var i = 0, length = array.length; i < length; i++ ) { + if ( array[ i ] === elem ) { + return i; + } + } + + return -1; + }, + + merge: function( first, second ) { + var i = first.length, + j = 0; + + if ( typeof second.length === "number" ) { + for ( var l = second.length; j < l; j++ ) { + first[ i++ ] = second[ j ]; + } + + } else { + while ( second[j] !== undefined ) { + first[ i++ ] = second[ j++ ]; + } + } + + first.length = i; + + return first; + }, + + grep: function( elems, callback, inv ) { + var ret = [], retVal; + inv = !!inv; + + // Go through the array, only saving the items + // that pass the validator function + for ( var i = 0, length = elems.length; i < length; i++ ) { + retVal = !!callback( elems[ i ], i ); + if ( inv !== retVal ) { + ret.push( elems[ i ] ); + } + } + + return ret; + }, + + // arg is for internal usage only + map: function( elems, callback, arg ) { + var value, key, ret = [], + i = 0, + length = elems.length, + // jquery objects are treated as arrays + isArray = elems instanceof jQuery || length !== undefined && typeof length === "number" && ( ( length > 0 && elems[ 0 ] && elems[ length -1 ] ) || length === 0 || jQuery.isArray( elems ) ) ; + + // Go through the array, translating each of the items to their + if ( isArray ) { + for ( ; i < length; i++ ) { + value = callback( elems[ i ], i, arg ); + + if ( value != null ) { + ret[ ret.length ] = value; + } + } + + // Go through every key on the object, + } else { + for ( key in elems ) { + value = callback( elems[ key ], key, arg ); + + if ( value != null ) { + ret[ ret.length ] = value; + } + } + } + + // Flatten any nested arrays + return ret.concat.apply( [], ret ); + }, + + // A global GUID counter for objects + guid: 1, + + // Bind a function to a context, optionally partially applying any + // arguments. + proxy: function( fn, context ) { + if ( typeof context === "string" ) { + var tmp = fn[ context ]; + context = fn; + fn = tmp; + } + + // Quick check to determine if target is callable, in the spec + // this throws a TypeError, but we will just return undefined. + if ( !jQuery.isFunction( fn ) ) { + return undefined; + } + + // Simulated bind + var args = slice.call( arguments, 2 ), + proxy = function() { + return fn.apply( context, args.concat( slice.call( arguments ) ) ); + }; + + // Set the guid of unique handler to the same of original handler, so it can be removed + proxy.guid = fn.guid = fn.guid || proxy.guid || jQuery.guid++; + + return proxy; + }, + + // Mutifunctional method to get and set values to a collection + // The value/s can optionally be executed if it's a function + access: function( elems, key, value, exec, fn, pass ) { + var length = elems.length; + + // Setting many attributes + if ( typeof key === "object" ) { + for ( var k in key ) { + jQuery.access( elems, k, key[k], exec, fn, value ); + } + return elems; + } + + // Setting one attribute + if ( value !== undefined ) { + // Optionally, function values get executed if exec is true + exec = !pass && exec && jQuery.isFunction(value); + + for ( var i = 0; i < length; i++ ) { + fn( elems[i], key, exec ? value.call( elems[i], i, fn( elems[i], key ) ) : value, pass ); + } + + return elems; + } + + // Getting an attribute + return length ? fn( elems[0], key ) : undefined; + }, + + now: function() { + return (new Date()).getTime(); + }, + + // Use of jQuery.browser is frowned upon. + // More details: http://docs.jquery.com/Utilities/jQuery.browser + uaMatch: function( ua ) { + ua = ua.toLowerCase(); + + var match = rwebkit.exec( ua ) || + ropera.exec( ua ) || + rmsie.exec( ua ) || + ua.indexOf("compatible") < 0 && rmozilla.exec( ua ) || + []; + + return { browser: match[1] || "", version: match[2] || "0" }; + }, + + sub: function() { + function jQuerySub( selector, context ) { + return new jQuerySub.fn.init( selector, context ); + } + jQuery.extend( true, jQuerySub, this ); + jQuerySub.superclass = this; + jQuerySub.fn = jQuerySub.prototype = this(); + jQuerySub.fn.constructor = jQuerySub; + jQuerySub.sub = this.sub; + jQuerySub.fn.init = function init( selector, context ) { + if ( context && context instanceof jQuery && !(context instanceof jQuerySub) ) { + context = jQuerySub( context ); + } + + return jQuery.fn.init.call( this, selector, context, rootjQuerySub ); + }; + jQuerySub.fn.init.prototype = jQuerySub.fn; + var rootjQuerySub = jQuerySub(document); + return jQuerySub; + }, + + browser: {} +}); + +// Populate the class2type map +jQuery.each("Boolean Number String Function Array Date RegExp Object".split(" "), function(i, name) { + class2type[ "[object " + name + "]" ] = name.toLowerCase(); +}); + +browserMatch = jQuery.uaMatch( userAgent ); +if ( browserMatch.browser ) { + jQuery.browser[ browserMatch.browser ] = true; + jQuery.browser.version = browserMatch.version; +} + +// Deprecated, use jQuery.browser.webkit instead +if ( jQuery.browser.webkit ) { + jQuery.browser.safari = true; +} + +// IE doesn't match non-breaking spaces with \s +if ( rnotwhite.test( "\xA0" ) ) { + trimLeft = /^[\s\xA0]+/; + trimRight = /[\s\xA0]+$/; +} + +// All jQuery objects should point back to these +rootjQuery = jQuery(document); + +// Cleanup functions for the document ready method +if ( document.addEventListener ) { + DOMContentLoaded = function() { + document.removeEventListener( "DOMContentLoaded", DOMContentLoaded, false ); + jQuery.ready(); + }; + +} else if ( document.attachEvent ) { + DOMContentLoaded = function() { + // Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443). + if ( document.readyState === "complete" ) { + document.detachEvent( "onreadystatechange", DOMContentLoaded ); + jQuery.ready(); + } + }; +} + +// The DOM ready check for Internet Explorer +function doScrollCheck() { + if ( jQuery.isReady ) { + return; + } + + try { + // If IE is used, use the trick by Diego Perini + // http://javascript.nwbox.com/IEContentLoaded/ + document.documentElement.doScroll("left"); + } catch(e) { + setTimeout( doScrollCheck, 1 ); + return; + } + + // and execute any waiting functions + jQuery.ready(); +} + +return jQuery; + +})(); + + +var // Promise methods + promiseMethods = "done fail isResolved isRejected promise then always pipe".split( " " ), + // Static reference to slice + sliceDeferred = [].slice; + +jQuery.extend({ + // Create a simple deferred (one callbacks list) + _Deferred: function() { + var // callbacks list + callbacks = [], + // stored [ context , args ] + fired, + // to avoid firing when already doing so + firing, + // flag to know if the deferred has been cancelled + cancelled, + // the deferred itself + deferred = { + + // done( f1, f2, ...) + done: function() { + if ( !cancelled ) { + var args = arguments, + i, + length, + elem, + type, + _fired; + if ( fired ) { + _fired = fired; + fired = 0; + } + for ( i = 0, length = args.length; i < length; i++ ) { + elem = args[ i ]; + type = jQuery.type( elem ); + if ( type === "array" ) { + deferred.done.apply( deferred, elem ); + } else if ( type === "function" ) { + callbacks.push( elem ); + } + } + if ( _fired ) { + deferred.resolveWith( _fired[ 0 ], _fired[ 1 ] ); + } + } + return this; + }, + + // resolve with given context and args + resolveWith: function( context, args ) { + if ( !cancelled && !fired && !firing ) { + // make sure args are available (#8421) + args = args || []; + firing = 1; + try { + while( callbacks[ 0 ] ) { + callbacks.shift().apply( context, args ); + } + } + finally { + fired = [ context, args ]; + firing = 0; + } + } + return this; + }, + + // resolve with this as context and given arguments + resolve: function() { + deferred.resolveWith( this, arguments ); + return this; + }, + + // Has this deferred been resolved? + isResolved: function() { + return !!( firing || fired ); + }, + + // Cancel + cancel: function() { + cancelled = 1; + callbacks = []; + return this; + } + }; + + return deferred; + }, + + // Full fledged deferred (two callbacks list) + Deferred: function( func ) { + var deferred = jQuery._Deferred(), + failDeferred = jQuery._Deferred(), + promise; + // Add errorDeferred methods, then and promise + jQuery.extend( deferred, { + then: function( doneCallbacks, failCallbacks ) { + deferred.done( doneCallbacks ).fail( failCallbacks ); + return this; + }, + always: function() { + return deferred.done.apply( deferred, arguments ).fail.apply( this, arguments ); + }, + fail: failDeferred.done, + rejectWith: failDeferred.resolveWith, + reject: failDeferred.resolve, + isRejected: failDeferred.isResolved, + pipe: function( fnDone, fnFail ) { + return jQuery.Deferred(function( newDefer ) { + jQuery.each( { + done: [ fnDone, "resolve" ], + fail: [ fnFail, "reject" ] + }, function( handler, data ) { + var fn = data[ 0 ], + action = data[ 1 ], + returned; + if ( jQuery.isFunction( fn ) ) { + deferred[ handler ](function() { + returned = fn.apply( this, arguments ); + if ( returned && jQuery.isFunction( returned.promise ) ) { + returned.promise().then( newDefer.resolve, newDefer.reject ); + } else { + newDefer[ action ]( returned ); + } + }); + } else { + deferred[ handler ]( newDefer[ action ] ); + } + }); + }).promise(); + }, + // Get a promise for this deferred + // If obj is provided, the promise aspect is added to the object + promise: function( obj ) { + if ( obj == null ) { + if ( promise ) { + return promise; + } + promise = obj = {}; + } + var i = promiseMethods.length; + while( i-- ) { + obj[ promiseMethods[i] ] = deferred[ promiseMethods[i] ]; + } + return obj; + } + }); + // Make sure only one callback list will be used + deferred.done( failDeferred.cancel ).fail( deferred.cancel ); + // Unexpose cancel + delete deferred.cancel; + // Call given func if any + if ( func ) { + func.call( deferred, deferred ); + } + return deferred; + }, + + // Deferred helper + when: function( firstParam ) { + var args = arguments, + i = 0, + length = args.length, + count = length, + deferred = length <= 1 && firstParam && jQuery.isFunction( firstParam.promise ) ? + firstParam : + jQuery.Deferred(); + function resolveFunc( i ) { + return function( value ) { + args[ i ] = arguments.length > 1 ? sliceDeferred.call( arguments, 0 ) : value; + if ( !( --count ) ) { + // Strange bug in FF4: + // Values changed onto the arguments object sometimes end up as undefined values + // outside the $.when method. Cloning the object into a fresh array solves the issue + deferred.resolveWith( deferred, sliceDeferred.call( args, 0 ) ); + } + }; + } + if ( length > 1 ) { + for( ; i < length; i++ ) { + if ( args[ i ] && jQuery.isFunction( args[ i ].promise ) ) { + args[ i ].promise().then( resolveFunc(i), deferred.reject ); + } else { + --count; + } + } + if ( !count ) { + deferred.resolveWith( deferred, args ); + } + } else if ( deferred !== firstParam ) { + deferred.resolveWith( deferred, length ? [ firstParam ] : [] ); + } + return deferred.promise(); + } +}); + + + +jQuery.support = (function() { + + var div = document.createElement( "div" ), + documentElement = document.documentElement, + all, + a, + select, + opt, + input, + marginDiv, + support, + fragment, + body, + testElementParent, + testElement, + testElementStyle, + tds, + events, + eventName, + i, + isSupported; + + // Preliminary tests + div.setAttribute("className", "t"); + div.innerHTML = "
    a"; + + all = div.getElementsByTagName( "*" ); + a = div.getElementsByTagName( "a" )[ 0 ]; + + // Can't get basic test support + if ( !all || !all.length || !a ) { + return {}; + } + + // First batch of supports tests + select = document.createElement( "select" ); + opt = select.appendChild( document.createElement("option") ); + input = div.getElementsByTagName( "input" )[ 0 ]; + + support = { + // IE strips leading whitespace when .innerHTML is used + leadingWhitespace: ( div.firstChild.nodeType === 3 ), + + // Make sure that tbody elements aren't automatically inserted + // IE will insert them into empty tables + tbody: !div.getElementsByTagName( "tbody" ).length, + + // Make sure that link elements get serialized correctly by innerHTML + // This requires a wrapper element in IE + htmlSerialize: !!div.getElementsByTagName( "link" ).length, + + // Get the style information from getAttribute + // (IE uses .cssText instead) + style: /top/.test( a.getAttribute("style") ), + + // Make sure that URLs aren't manipulated + // (IE normalizes it by default) + hrefNormalized: ( a.getAttribute( "href" ) === "/a" ), + + // Make sure that element opacity exists + // (IE uses filter instead) + // Use a regex to work around a WebKit issue. See #5145 + opacity: /^0.55$/.test( a.style.opacity ), + + // Verify style float existence + // (IE uses styleFloat instead of cssFloat) + cssFloat: !!a.style.cssFloat, + + // Make sure that if no value is specified for a checkbox + // that it defaults to "on". + // (WebKit defaults to "" instead) + checkOn: ( input.value === "on" ), + + // Make sure that a selected-by-default option has a working selected property. + // (WebKit defaults to false instead of true, IE too, if it's in an optgroup) + optSelected: opt.selected, + + // Test setAttribute on camelCase class. If it works, we need attrFixes when doing get/setAttribute (ie6/7) + getSetAttribute: div.className !== "t", + + // Will be defined later + submitBubbles: true, + changeBubbles: true, + focusinBubbles: false, + deleteExpando: true, + noCloneEvent: true, + inlineBlockNeedsLayout: false, + shrinkWrapBlocks: false, + reliableMarginRight: true + }; + + // Make sure checked status is properly cloned + input.checked = true; + support.noCloneChecked = input.cloneNode( true ).checked; + + // Make sure that the options inside disabled selects aren't marked as disabled + // (WebKit marks them as disabled) + select.disabled = true; + support.optDisabled = !opt.disabled; + + // Test to see if it's possible to delete an expando from an element + // Fails in Internet Explorer + try { + delete div.test; + } catch( e ) { + support.deleteExpando = false; + } + + if ( !div.addEventListener && div.attachEvent && div.fireEvent ) { + div.attachEvent( "onclick", function() { + // Cloning a node shouldn't copy over any + // bound event handlers (IE does this) + support.noCloneEvent = false; + }); + div.cloneNode( true ).fireEvent( "onclick" ); + } + + // Check if a radio maintains it's value + // after being appended to the DOM + input = document.createElement("input"); + input.value = "t"; + input.setAttribute("type", "radio"); + support.radioValue = input.value === "t"; + + input.setAttribute("checked", "checked"); + div.appendChild( input ); + fragment = document.createDocumentFragment(); + fragment.appendChild( div.firstChild ); + + // WebKit doesn't clone checked state correctly in fragments + support.checkClone = fragment.cloneNode( true ).cloneNode( true ).lastChild.checked; + + div.innerHTML = ""; + + // Figure out if the W3C box model works as expected + div.style.width = div.style.paddingLeft = "1px"; + + body = document.getElementsByTagName( "body" )[ 0 ]; + // We use our own, invisible, body unless the body is already present + // in which case we use a div (#9239) + testElement = document.createElement( body ? "div" : "body" ); + testElementStyle = { + visibility: "hidden", + width: 0, + height: 0, + border: 0, + margin: 0 + }; + if ( body ) { + jQuery.extend( testElementStyle, { + position: "absolute", + left: -1000, + top: -1000 + }); + } + for ( i in testElementStyle ) { + testElement.style[ i ] = testElementStyle[ i ]; + } + testElement.appendChild( div ); + testElementParent = body || documentElement; + testElementParent.insertBefore( testElement, testElementParent.firstChild ); + + // Check if a disconnected checkbox will retain its checked + // value of true after appended to the DOM (IE6/7) + support.appendChecked = input.checked; + + support.boxModel = div.offsetWidth === 2; + + if ( "zoom" in div.style ) { + // Check if natively block-level elements act like inline-block + // elements when setting their display to 'inline' and giving + // them layout + // (IE < 8 does this) + div.style.display = "inline"; + div.style.zoom = 1; + support.inlineBlockNeedsLayout = ( div.offsetWidth === 2 ); + + // Check if elements with layout shrink-wrap their children + // (IE 6 does this) + div.style.display = ""; + div.innerHTML = "
    "; + support.shrinkWrapBlocks = ( div.offsetWidth !== 2 ); + } + + div.innerHTML = "
    t
    "; + tds = div.getElementsByTagName( "td" ); + + // Check if table cells still have offsetWidth/Height when they are set + // to display:none and there are still other visible table cells in a + // table row; if so, offsetWidth/Height are not reliable for use when + // determining if an element has been hidden directly using + // display:none (it is still safe to use offsets if a parent element is + // hidden; don safety goggles and see bug #4512 for more information). + // (only IE 8 fails this test) + isSupported = ( tds[ 0 ].offsetHeight === 0 ); + + tds[ 0 ].style.display = ""; + tds[ 1 ].style.display = "none"; + + // Check if empty table cells still have offsetWidth/Height + // (IE < 8 fail this test) + support.reliableHiddenOffsets = isSupported && ( tds[ 0 ].offsetHeight === 0 ); + div.innerHTML = ""; + + // Check if div with explicit width and no margin-right incorrectly + // gets computed margin-right based on width of container. For more + // info see bug #3333 + // Fails in WebKit before Feb 2011 nightlies + // WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right + if ( document.defaultView && document.defaultView.getComputedStyle ) { + marginDiv = document.createElement( "div" ); + marginDiv.style.width = "0"; + marginDiv.style.marginRight = "0"; + div.appendChild( marginDiv ); + support.reliableMarginRight = + ( parseInt( ( document.defaultView.getComputedStyle( marginDiv, null ) || { marginRight: 0 } ).marginRight, 10 ) || 0 ) === 0; + } + + // Remove the body element we added + testElement.innerHTML = ""; + testElementParent.removeChild( testElement ); + + // Technique from Juriy Zaytsev + // http://thinkweb2.com/projects/prototype/detecting-event-support-without-browser-sniffing/ + // We only care about the case where non-standard event systems + // are used, namely in IE. Short-circuiting here helps us to + // avoid an eval call (in setAttribute) which can cause CSP + // to go haywire. See: https://developer.mozilla.org/en/Security/CSP + if ( div.attachEvent ) { + for( i in { + submit: 1, + change: 1, + focusin: 1 + } ) { + eventName = "on" + i; + isSupported = ( eventName in div ); + if ( !isSupported ) { + div.setAttribute( eventName, "return;" ); + isSupported = ( typeof div[ eventName ] === "function" ); + } + support[ i + "Bubbles" ] = isSupported; + } + } + + // Null connected elements to avoid leaks in IE + testElement = fragment = select = opt = body = marginDiv = div = input = null; + + return support; +})(); + +// Keep track of boxModel +jQuery.boxModel = jQuery.support.boxModel; + + + + +var rbrace = /^(?:\{.*\}|\[.*\])$/, + rmultiDash = /([a-z])([A-Z])/g; + +jQuery.extend({ + cache: {}, + + // Please use with caution + uuid: 0, + + // Unique for each copy of jQuery on the page + // Non-digits removed to match rinlinejQuery + expando: "jQuery" + ( jQuery.fn.jquery + Math.random() ).replace( /\D/g, "" ), + + // The following elements throw uncatchable exceptions if you + // attempt to add expando properties to them. + noData: { + "embed": true, + // Ban all objects except for Flash (which handle expandos) + "object": "clsid:D27CDB6E-AE6D-11cf-96B8-444553540000", + "applet": true + }, + + hasData: function( elem ) { + elem = elem.nodeType ? jQuery.cache[ elem[jQuery.expando] ] : elem[ jQuery.expando ]; + + return !!elem && !isEmptyDataObject( elem ); + }, + + data: function( elem, name, data, pvt /* Internal Use Only */ ) { + if ( !jQuery.acceptData( elem ) ) { + return; + } + + var internalKey = jQuery.expando, getByName = typeof name === "string", thisCache, + + // We have to handle DOM nodes and JS objects differently because IE6-7 + // can't GC object references properly across the DOM-JS boundary + isNode = elem.nodeType, + + // Only DOM nodes need the global jQuery cache; JS object data is + // attached directly to the object so GC can occur automatically + cache = isNode ? jQuery.cache : elem, + + // Only defining an ID for JS objects if its cache already exists allows + // the code to shortcut on the same path as a DOM node with no cache + id = isNode ? elem[ jQuery.expando ] : elem[ jQuery.expando ] && jQuery.expando; + + // Avoid doing any more work than we need to when trying to get data on an + // object that has no data at all + if ( (!id || (pvt && id && !cache[ id ][ internalKey ])) && getByName && data === undefined ) { + return; + } + + if ( !id ) { + // Only DOM nodes need a new unique ID for each element since their data + // ends up in the global cache + if ( isNode ) { + elem[ jQuery.expando ] = id = ++jQuery.uuid; + } else { + id = jQuery.expando; + } + } + + if ( !cache[ id ] ) { + cache[ id ] = {}; + + // TODO: This is a hack for 1.5 ONLY. Avoids exposing jQuery + // metadata on plain JS objects when the object is serialized using + // JSON.stringify + if ( !isNode ) { + cache[ id ].toJSON = jQuery.noop; + } + } + + // An object can be passed to jQuery.data instead of a key/value pair; this gets + // shallow copied over onto the existing cache + if ( typeof name === "object" || typeof name === "function" ) { + if ( pvt ) { + cache[ id ][ internalKey ] = jQuery.extend(cache[ id ][ internalKey ], name); + } else { + cache[ id ] = jQuery.extend(cache[ id ], name); + } + } + + thisCache = cache[ id ]; + + // Internal jQuery data is stored in a separate object inside the object's data + // cache in order to avoid key collisions between internal data and user-defined + // data + if ( pvt ) { + if ( !thisCache[ internalKey ] ) { + thisCache[ internalKey ] = {}; + } + + thisCache = thisCache[ internalKey ]; + } + + if ( data !== undefined ) { + thisCache[ jQuery.camelCase( name ) ] = data; + } + + // TODO: This is a hack for 1.5 ONLY. It will be removed in 1.6. Users should + // not attempt to inspect the internal events object using jQuery.data, as this + // internal data object is undocumented and subject to change. + if ( name === "events" && !thisCache[name] ) { + return thisCache[ internalKey ] && thisCache[ internalKey ].events; + } + + return getByName ? + // Check for both converted-to-camel and non-converted data property names + thisCache[ jQuery.camelCase( name ) ] || thisCache[ name ] : + thisCache; + }, + + removeData: function( elem, name, pvt /* Internal Use Only */ ) { + if ( !jQuery.acceptData( elem ) ) { + return; + } + + var internalKey = jQuery.expando, isNode = elem.nodeType, + + // See jQuery.data for more information + cache = isNode ? jQuery.cache : elem, + + // See jQuery.data for more information + id = isNode ? elem[ jQuery.expando ] : jQuery.expando; + + // If there is already no cache entry for this object, there is no + // purpose in continuing + if ( !cache[ id ] ) { + return; + } + + if ( name ) { + var thisCache = pvt ? cache[ id ][ internalKey ] : cache[ id ]; + + if ( thisCache ) { + delete thisCache[ name ]; + + // If there is no data left in the cache, we want to continue + // and let the cache object itself get destroyed + if ( !isEmptyDataObject(thisCache) ) { + return; + } + } + } + + // See jQuery.data for more information + if ( pvt ) { + delete cache[ id ][ internalKey ]; + + // Don't destroy the parent cache unless the internal data object + // had been the only thing left in it + if ( !isEmptyDataObject(cache[ id ]) ) { + return; + } + } + + var internalCache = cache[ id ][ internalKey ]; + + // Browsers that fail expando deletion also refuse to delete expandos on + // the window, but it will allow it on all other JS objects; other browsers + // don't care + if ( jQuery.support.deleteExpando || cache != window ) { + delete cache[ id ]; + } else { + cache[ id ] = null; + } + + // We destroyed the entire user cache at once because it's faster than + // iterating through each key, but we need to continue to persist internal + // data if it existed + if ( internalCache ) { + cache[ id ] = {}; + // TODO: This is a hack for 1.5 ONLY. Avoids exposing jQuery + // metadata on plain JS objects when the object is serialized using + // JSON.stringify + if ( !isNode ) { + cache[ id ].toJSON = jQuery.noop; + } + + cache[ id ][ internalKey ] = internalCache; + + // Otherwise, we need to eliminate the expando on the node to avoid + // false lookups in the cache for entries that no longer exist + } else if ( isNode ) { + // IE does not allow us to delete expando properties from nodes, + // nor does it have a removeAttribute function on Document nodes; + // we must handle all of these cases + if ( jQuery.support.deleteExpando ) { + delete elem[ jQuery.expando ]; + } else if ( elem.removeAttribute ) { + elem.removeAttribute( jQuery.expando ); + } else { + elem[ jQuery.expando ] = null; + } + } + }, + + // For internal use only. + _data: function( elem, name, data ) { + return jQuery.data( elem, name, data, true ); + }, + + // A method for determining if a DOM node can handle the data expando + acceptData: function( elem ) { + if ( elem.nodeName ) { + var match = jQuery.noData[ elem.nodeName.toLowerCase() ]; + + if ( match ) { + return !(match === true || elem.getAttribute("classid") !== match); + } + } + + return true; + } +}); + +jQuery.fn.extend({ + data: function( key, value ) { + var data = null; + + if ( typeof key === "undefined" ) { + if ( this.length ) { + data = jQuery.data( this[0] ); + + if ( this[0].nodeType === 1 ) { + var attr = this[0].attributes, name; + for ( var i = 0, l = attr.length; i < l; i++ ) { + name = attr[i].name; + + if ( name.indexOf( "data-" ) === 0 ) { + name = jQuery.camelCase( name.substring(5) ); + + dataAttr( this[0], name, data[ name ] ); + } + } + } + } + + return data; + + } else if ( typeof key === "object" ) { + return this.each(function() { + jQuery.data( this, key ); + }); + } + + var parts = key.split("."); + parts[1] = parts[1] ? "." + parts[1] : ""; + + if ( value === undefined ) { + data = this.triggerHandler("getData" + parts[1] + "!", [parts[0]]); + + // Try to fetch any internally stored data first + if ( data === undefined && this.length ) { + data = jQuery.data( this[0], key ); + data = dataAttr( this[0], key, data ); + } + + return data === undefined && parts[1] ? + this.data( parts[0] ) : + data; + + } else { + return this.each(function() { + var $this = jQuery( this ), + args = [ parts[0], value ]; + + $this.triggerHandler( "setData" + parts[1] + "!", args ); + jQuery.data( this, key, value ); + $this.triggerHandler( "changeData" + parts[1] + "!", args ); + }); + } + }, + + removeData: function( key ) { + return this.each(function() { + jQuery.removeData( this, key ); + }); + } +}); + +function dataAttr( elem, key, data ) { + // If nothing was found internally, try to fetch any + // data from the HTML5 data-* attribute + if ( data === undefined && elem.nodeType === 1 ) { + var name = "data-" + key.replace( rmultiDash, "$1-$2" ).toLowerCase(); + + data = elem.getAttribute( name ); + + if ( typeof data === "string" ) { + try { + data = data === "true" ? true : + data === "false" ? false : + data === "null" ? null : + !jQuery.isNaN( data ) ? parseFloat( data ) : + rbrace.test( data ) ? jQuery.parseJSON( data ) : + data; + } catch( e ) {} + + // Make sure we set the data so it isn't changed later + jQuery.data( elem, key, data ); + + } else { + data = undefined; + } + } + + return data; +} + +// TODO: This is a hack for 1.5 ONLY to allow objects with a single toJSON +// property to be considered empty objects; this property always exists in +// order to make sure JSON.stringify does not expose internal metadata +function isEmptyDataObject( obj ) { + for ( var name in obj ) { + if ( name !== "toJSON" ) { + return false; + } + } + + return true; +} + + + + +function handleQueueMarkDefer( elem, type, src ) { + var deferDataKey = type + "defer", + queueDataKey = type + "queue", + markDataKey = type + "mark", + defer = jQuery.data( elem, deferDataKey, undefined, true ); + if ( defer && + ( src === "queue" || !jQuery.data( elem, queueDataKey, undefined, true ) ) && + ( src === "mark" || !jQuery.data( elem, markDataKey, undefined, true ) ) ) { + // Give room for hard-coded callbacks to fire first + // and eventually mark/queue something else on the element + setTimeout( function() { + if ( !jQuery.data( elem, queueDataKey, undefined, true ) && + !jQuery.data( elem, markDataKey, undefined, true ) ) { + jQuery.removeData( elem, deferDataKey, true ); + defer.resolve(); + } + }, 0 ); + } +} + +jQuery.extend({ + + _mark: function( elem, type ) { + if ( elem ) { + type = (type || "fx") + "mark"; + jQuery.data( elem, type, (jQuery.data(elem,type,undefined,true) || 0) + 1, true ); + } + }, + + _unmark: function( force, elem, type ) { + if ( force !== true ) { + type = elem; + elem = force; + force = false; + } + if ( elem ) { + type = type || "fx"; + var key = type + "mark", + count = force ? 0 : ( (jQuery.data( elem, key, undefined, true) || 1 ) - 1 ); + if ( count ) { + jQuery.data( elem, key, count, true ); + } else { + jQuery.removeData( elem, key, true ); + handleQueueMarkDefer( elem, type, "mark" ); + } + } + }, + + queue: function( elem, type, data ) { + if ( elem ) { + type = (type || "fx") + "queue"; + var q = jQuery.data( elem, type, undefined, true ); + // Speed up dequeue by getting out quickly if this is just a lookup + if ( data ) { + if ( !q || jQuery.isArray(data) ) { + q = jQuery.data( elem, type, jQuery.makeArray(data), true ); + } else { + q.push( data ); + } + } + return q || []; + } + }, + + dequeue: function( elem, type ) { + type = type || "fx"; + + var queue = jQuery.queue( elem, type ), + fn = queue.shift(), + defer; + + // If the fx queue is dequeued, always remove the progress sentinel + if ( fn === "inprogress" ) { + fn = queue.shift(); + } + + if ( fn ) { + // Add a progress sentinel to prevent the fx queue from being + // automatically dequeued + if ( type === "fx" ) { + queue.unshift("inprogress"); + } + + fn.call(elem, function() { + jQuery.dequeue(elem, type); + }); + } + + if ( !queue.length ) { + jQuery.removeData( elem, type + "queue", true ); + handleQueueMarkDefer( elem, type, "queue" ); + } + } +}); + +jQuery.fn.extend({ + queue: function( type, data ) { + if ( typeof type !== "string" ) { + data = type; + type = "fx"; + } + + if ( data === undefined ) { + return jQuery.queue( this[0], type ); + } + return this.each(function() { + var queue = jQuery.queue( this, type, data ); + + if ( type === "fx" && queue[0] !== "inprogress" ) { + jQuery.dequeue( this, type ); + } + }); + }, + dequeue: function( type ) { + return this.each(function() { + jQuery.dequeue( this, type ); + }); + }, + // Based off of the plugin by Clint Helfers, with permission. + // http://blindsignals.com/index.php/2009/07/jquery-delay/ + delay: function( time, type ) { + time = jQuery.fx ? jQuery.fx.speeds[time] || time : time; + type = type || "fx"; + + return this.queue( type, function() { + var elem = this; + setTimeout(function() { + jQuery.dequeue( elem, type ); + }, time ); + }); + }, + clearQueue: function( type ) { + return this.queue( type || "fx", [] ); + }, + // Get a promise resolved when queues of a certain type + // are emptied (fx is the type by default) + promise: function( type, object ) { + if ( typeof type !== "string" ) { + object = type; + type = undefined; + } + type = type || "fx"; + var defer = jQuery.Deferred(), + elements = this, + i = elements.length, + count = 1, + deferDataKey = type + "defer", + queueDataKey = type + "queue", + markDataKey = type + "mark", + tmp; + function resolve() { + if ( !( --count ) ) { + defer.resolveWith( elements, [ elements ] ); + } + } + while( i-- ) { + if (( tmp = jQuery.data( elements[ i ], deferDataKey, undefined, true ) || + ( jQuery.data( elements[ i ], queueDataKey, undefined, true ) || + jQuery.data( elements[ i ], markDataKey, undefined, true ) ) && + jQuery.data( elements[ i ], deferDataKey, jQuery._Deferred(), true ) )) { + count++; + tmp.done( resolve ); + } + } + resolve(); + return defer.promise(); + } +}); + + + + +var rclass = /[\n\t\r]/g, + rspace = /\s+/, + rreturn = /\r/g, + rtype = /^(?:button|input)$/i, + rfocusable = /^(?:button|input|object|select|textarea)$/i, + rclickable = /^a(?:rea)?$/i, + rboolean = /^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i, + rinvalidChar = /\:|^on/, + formHook, boolHook; + +jQuery.fn.extend({ + attr: function( name, value ) { + return jQuery.access( this, name, value, true, jQuery.attr ); + }, + + removeAttr: function( name ) { + return this.each(function() { + jQuery.removeAttr( this, name ); + }); + }, + + prop: function( name, value ) { + return jQuery.access( this, name, value, true, jQuery.prop ); + }, + + removeProp: function( name ) { + name = jQuery.propFix[ name ] || name; + return this.each(function() { + // try/catch handles cases where IE balks (such as removing a property on window) + try { + this[ name ] = undefined; + delete this[ name ]; + } catch( e ) {} + }); + }, + + addClass: function( value ) { + var classNames, i, l, elem, + setClass, c, cl; + + if ( jQuery.isFunction( value ) ) { + return this.each(function( j ) { + jQuery( this ).addClass( value.call(this, j, this.className) ); + }); + } + + if ( value && typeof value === "string" ) { + classNames = value.split( rspace ); + + for ( i = 0, l = this.length; i < l; i++ ) { + elem = this[ i ]; + + if ( elem.nodeType === 1 ) { + if ( !elem.className && classNames.length === 1 ) { + elem.className = value; + + } else { + setClass = " " + elem.className + " "; + + for ( c = 0, cl = classNames.length; c < cl; c++ ) { + if ( !~setClass.indexOf( " " + classNames[ c ] + " " ) ) { + setClass += classNames[ c ] + " "; + } + } + elem.className = jQuery.trim( setClass ); + } + } + } + } + + return this; + }, + + removeClass: function( value ) { + var classNames, i, l, elem, className, c, cl; + + if ( jQuery.isFunction( value ) ) { + return this.each(function( j ) { + jQuery( this ).removeClass( value.call(this, j, this.className) ); + }); + } + + if ( (value && typeof value === "string") || value === undefined ) { + classNames = (value || "").split( rspace ); + + for ( i = 0, l = this.length; i < l; i++ ) { + elem = this[ i ]; + + if ( elem.nodeType === 1 && elem.className ) { + if ( value ) { + className = (" " + elem.className + " ").replace( rclass, " " ); + for ( c = 0, cl = classNames.length; c < cl; c++ ) { + className = className.replace(" " + classNames[ c ] + " ", " "); + } + elem.className = jQuery.trim( className ); + + } else { + elem.className = ""; + } + } + } + } + + return this; + }, + + toggleClass: function( value, stateVal ) { + var type = typeof value, + isBool = typeof stateVal === "boolean"; + + if ( jQuery.isFunction( value ) ) { + return this.each(function( i ) { + jQuery( this ).toggleClass( value.call(this, i, this.className, stateVal), stateVal ); + }); + } + + return this.each(function() { + if ( type === "string" ) { + // toggle individual class names + var className, + i = 0, + self = jQuery( this ), + state = stateVal, + classNames = value.split( rspace ); + + while ( (className = classNames[ i++ ]) ) { + // check each className given, space seperated list + state = isBool ? state : !self.hasClass( className ); + self[ state ? "addClass" : "removeClass" ]( className ); + } + + } else if ( type === "undefined" || type === "boolean" ) { + if ( this.className ) { + // store className if set + jQuery._data( this, "__className__", this.className ); + } + + // toggle whole className + this.className = this.className || value === false ? "" : jQuery._data( this, "__className__" ) || ""; + } + }); + }, + + hasClass: function( selector ) { + var className = " " + selector + " "; + for ( var i = 0, l = this.length; i < l; i++ ) { + if ( (" " + this[i].className + " ").replace(rclass, " ").indexOf( className ) > -1 ) { + return true; + } + } + + return false; + }, + + val: function( value ) { + var hooks, ret, + elem = this[0]; + + if ( !arguments.length ) { + if ( elem ) { + hooks = jQuery.valHooks[ elem.nodeName.toLowerCase() ] || jQuery.valHooks[ elem.type ]; + + if ( hooks && "get" in hooks && (ret = hooks.get( elem, "value" )) !== undefined ) { + return ret; + } + + ret = elem.value; + + return typeof ret === "string" ? + // handle most common string cases + ret.replace(rreturn, "") : + // handle cases where value is null/undef or number + ret == null ? "" : ret; + } + + return undefined; + } + + var isFunction = jQuery.isFunction( value ); + + return this.each(function( i ) { + var self = jQuery(this), val; + + if ( this.nodeType !== 1 ) { + return; + } + + if ( isFunction ) { + val = value.call( this, i, self.val() ); + } else { + val = value; + } + + // Treat null/undefined as ""; convert numbers to string + if ( val == null ) { + val = ""; + } else if ( typeof val === "number" ) { + val += ""; + } else if ( jQuery.isArray( val ) ) { + val = jQuery.map(val, function ( value ) { + return value == null ? "" : value + ""; + }); + } + + hooks = jQuery.valHooks[ this.nodeName.toLowerCase() ] || jQuery.valHooks[ this.type ]; + + // If set returns undefined, fall back to normal setting + if ( !hooks || !("set" in hooks) || hooks.set( this, val, "value" ) === undefined ) { + this.value = val; + } + }); + } +}); + +jQuery.extend({ + valHooks: { + option: { + get: function( elem ) { + // attributes.value is undefined in Blackberry 4.7 but + // uses .value. See #6932 + var val = elem.attributes.value; + return !val || val.specified ? elem.value : elem.text; + } + }, + select: { + get: function( elem ) { + var value, + index = elem.selectedIndex, + values = [], + options = elem.options, + one = elem.type === "select-one"; + + // Nothing was selected + if ( index < 0 ) { + return null; + } + + // Loop through all the selected options + for ( var i = one ? index : 0, max = one ? index + 1 : options.length; i < max; i++ ) { + var option = options[ i ]; + + // Don't return options that are disabled or in a disabled optgroup + if ( option.selected && (jQuery.support.optDisabled ? !option.disabled : option.getAttribute("disabled") === null) && + (!option.parentNode.disabled || !jQuery.nodeName( option.parentNode, "optgroup" )) ) { + + // Get the specific value for the option + value = jQuery( option ).val(); + + // We don't need an array for one selects + if ( one ) { + return value; + } + + // Multi-Selects return an array + values.push( value ); + } + } + + // Fixes Bug #2551 -- select.val() broken in IE after form.reset() + if ( one && !values.length && options.length ) { + return jQuery( options[ index ] ).val(); + } + + return values; + }, + + set: function( elem, value ) { + var values = jQuery.makeArray( value ); + + jQuery(elem).find("option").each(function() { + this.selected = jQuery.inArray( jQuery(this).val(), values ) >= 0; + }); + + if ( !values.length ) { + elem.selectedIndex = -1; + } + return values; + } + } + }, + + attrFn: { + val: true, + css: true, + html: true, + text: true, + data: true, + width: true, + height: true, + offset: true + }, + + attrFix: { + // Always normalize to ensure hook usage + tabindex: "tabIndex" + }, + + attr: function( elem, name, value, pass ) { + var nType = elem.nodeType; + + // don't get/set attributes on text, comment and attribute nodes + if ( !elem || nType === 3 || nType === 8 || nType === 2 ) { + return undefined; + } + + if ( pass && name in jQuery.attrFn ) { + return jQuery( elem )[ name ]( value ); + } + + // Fallback to prop when attributes are not supported + if ( !("getAttribute" in elem) ) { + return jQuery.prop( elem, name, value ); + } + + var ret, hooks, + notxml = nType !== 1 || !jQuery.isXMLDoc( elem ); + + // Normalize the name if needed + if ( notxml ) { + name = jQuery.attrFix[ name ] || name; + + hooks = jQuery.attrHooks[ name ]; + + if ( !hooks ) { + // Use boolHook for boolean attributes + if ( rboolean.test( name ) ) { + + hooks = boolHook; + + // Use formHook for forms and if the name contains certain characters + } else if ( formHook && name !== "className" && + (jQuery.nodeName( elem, "form" ) || rinvalidChar.test( name )) ) { + + hooks = formHook; + } + } + } + + if ( value !== undefined ) { + + if ( value === null ) { + jQuery.removeAttr( elem, name ); + return undefined; + + } else if ( hooks && "set" in hooks && notxml && (ret = hooks.set( elem, value, name )) !== undefined ) { + return ret; + + } else { + elem.setAttribute( name, "" + value ); + return value; + } + + } else if ( hooks && "get" in hooks && notxml && (ret = hooks.get( elem, name )) !== null ) { + return ret; + + } else { + + ret = elem.getAttribute( name ); + + // Non-existent attributes return null, we normalize to undefined + return ret === null ? + undefined : + ret; + } + }, + + removeAttr: function( elem, name ) { + var propName; + if ( elem.nodeType === 1 ) { + name = jQuery.attrFix[ name ] || name; + + if ( jQuery.support.getSetAttribute ) { + // Use removeAttribute in browsers that support it + elem.removeAttribute( name ); + } else { + jQuery.attr( elem, name, "" ); + elem.removeAttributeNode( elem.getAttributeNode( name ) ); + } + + // Set corresponding property to false for boolean attributes + if ( rboolean.test( name ) && (propName = jQuery.propFix[ name ] || name) in elem ) { + elem[ propName ] = false; + } + } + }, + + attrHooks: { + type: { + set: function( elem, value ) { + // We can't allow the type property to be changed (since it causes problems in IE) + if ( rtype.test( elem.nodeName ) && elem.parentNode ) { + jQuery.error( "type property can't be changed" ); + } else if ( !jQuery.support.radioValue && value === "radio" && jQuery.nodeName(elem, "input") ) { + // Setting the type on a radio button after the value resets the value in IE6-9 + // Reset value to it's default in case type is set after value + // This is for element creation + var val = elem.value; + elem.setAttribute( "type", value ); + if ( val ) { + elem.value = val; + } + return value; + } + } + }, + tabIndex: { + get: function( elem ) { + // elem.tabIndex doesn't always return the correct value when it hasn't been explicitly set + // http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/ + var attributeNode = elem.getAttributeNode("tabIndex"); + + return attributeNode && attributeNode.specified ? + parseInt( attributeNode.value, 10 ) : + rfocusable.test( elem.nodeName ) || rclickable.test( elem.nodeName ) && elem.href ? + 0 : + undefined; + } + }, + // Use the value property for back compat + // Use the formHook for button elements in IE6/7 (#1954) + value: { + get: function( elem, name ) { + if ( formHook && jQuery.nodeName( elem, "button" ) ) { + return formHook.get( elem, name ); + } + return name in elem ? + elem.value : + null; + }, + set: function( elem, value, name ) { + if ( formHook && jQuery.nodeName( elem, "button" ) ) { + return formHook.set( elem, value, name ); + } + // Does not return so that setAttribute is also used + elem.value = value; + } + } + }, + + propFix: { + tabindex: "tabIndex", + readonly: "readOnly", + "for": "htmlFor", + "class": "className", + maxlength: "maxLength", + cellspacing: "cellSpacing", + cellpadding: "cellPadding", + rowspan: "rowSpan", + colspan: "colSpan", + usemap: "useMap", + frameborder: "frameBorder", + contenteditable: "contentEditable" + }, + + prop: function( elem, name, value ) { + var nType = elem.nodeType; + + // don't get/set properties on text, comment and attribute nodes + if ( !elem || nType === 3 || nType === 8 || nType === 2 ) { + return undefined; + } + + var ret, hooks, + notxml = nType !== 1 || !jQuery.isXMLDoc( elem ); + + if ( notxml ) { + // Fix name and attach hooks + name = jQuery.propFix[ name ] || name; + hooks = jQuery.propHooks[ name ]; + } + + if ( value !== undefined ) { + if ( hooks && "set" in hooks && (ret = hooks.set( elem, value, name )) !== undefined ) { + return ret; + + } else { + return (elem[ name ] = value); + } + + } else { + if ( hooks && "get" in hooks && (ret = hooks.get( elem, name )) !== undefined ) { + return ret; + + } else { + return elem[ name ]; + } + } + }, + + propHooks: {} +}); + +// Hook for boolean attributes +boolHook = { + get: function( elem, name ) { + // Align boolean attributes with corresponding properties + return jQuery.prop( elem, name ) ? + name.toLowerCase() : + undefined; + }, + set: function( elem, value, name ) { + var propName; + if ( value === false ) { + // Remove boolean attributes when set to false + jQuery.removeAttr( elem, name ); + } else { + // value is true since we know at this point it's type boolean and not false + // Set boolean attributes to the same name and set the DOM property + propName = jQuery.propFix[ name ] || name; + if ( propName in elem ) { + // Only set the IDL specifically if it already exists on the element + elem[ propName ] = true; + } + + elem.setAttribute( name, name.toLowerCase() ); + } + return name; + } +}; + +// IE6/7 do not support getting/setting some attributes with get/setAttribute +if ( !jQuery.support.getSetAttribute ) { + + // propFix is more comprehensive and contains all fixes + jQuery.attrFix = jQuery.propFix; + + // Use this for any attribute on a form in IE6/7 + formHook = jQuery.attrHooks.name = jQuery.attrHooks.title = jQuery.valHooks.button = { + get: function( elem, name ) { + var ret; + ret = elem.getAttributeNode( name ); + // Return undefined if nodeValue is empty string + return ret && ret.nodeValue !== "" ? + ret.nodeValue : + undefined; + }, + set: function( elem, value, name ) { + // Check form objects in IE (multiple bugs related) + // Only use nodeValue if the attribute node exists on the form + var ret = elem.getAttributeNode( name ); + if ( ret ) { + ret.nodeValue = value; + return value; + } + } + }; + + // Set width and height to auto instead of 0 on empty string( Bug #8150 ) + // This is for removals + jQuery.each([ "width", "height" ], function( i, name ) { + jQuery.attrHooks[ name ] = jQuery.extend( jQuery.attrHooks[ name ], { + set: function( elem, value ) { + if ( value === "" ) { + elem.setAttribute( name, "auto" ); + return value; + } + } + }); + }); +} + + +// Some attributes require a special call on IE +if ( !jQuery.support.hrefNormalized ) { + jQuery.each([ "href", "src", "width", "height" ], function( i, name ) { + jQuery.attrHooks[ name ] = jQuery.extend( jQuery.attrHooks[ name ], { + get: function( elem ) { + var ret = elem.getAttribute( name, 2 ); + return ret === null ? undefined : ret; + } + }); + }); +} + +if ( !jQuery.support.style ) { + jQuery.attrHooks.style = { + get: function( elem ) { + // Return undefined in the case of empty string + // Normalize to lowercase since IE uppercases css property names + return elem.style.cssText.toLowerCase() || undefined; + }, + set: function( elem, value ) { + return (elem.style.cssText = "" + value); + } + }; +} + +// Safari mis-reports the default selected property of an option +// Accessing the parent's selectedIndex property fixes it +if ( !jQuery.support.optSelected ) { + jQuery.propHooks.selected = jQuery.extend( jQuery.propHooks.selected, { + get: function( elem ) { + var parent = elem.parentNode; + + if ( parent ) { + parent.selectedIndex; + + // Make sure that it also works with optgroups, see #5701 + if ( parent.parentNode ) { + parent.parentNode.selectedIndex; + } + } + } + }); +} + +// Radios and checkboxes getter/setter +if ( !jQuery.support.checkOn ) { + jQuery.each([ "radio", "checkbox" ], function() { + jQuery.valHooks[ this ] = { + get: function( elem ) { + // Handle the case where in Webkit "" is returned instead of "on" if a value isn't specified + return elem.getAttribute("value") === null ? "on" : elem.value; + } + }; + }); +} +jQuery.each([ "radio", "checkbox" ], function() { + jQuery.valHooks[ this ] = jQuery.extend( jQuery.valHooks[ this ], { + set: function( elem, value ) { + if ( jQuery.isArray( value ) ) { + return (elem.checked = jQuery.inArray( jQuery(elem).val(), value ) >= 0); + } + } + }); +}); + + + + +var rnamespaces = /\.(.*)$/, + rformElems = /^(?:textarea|input|select)$/i, + rperiod = /\./g, + rspaces = / /g, + rescape = /[^\w\s.|`]/g, + fcleanup = function( nm ) { + return nm.replace(rescape, "\\$&"); + }; + +/* + * A number of helper functions used for managing events. + * Many of the ideas behind this code originated from + * Dean Edwards' addEvent library. + */ +jQuery.event = { + + // Bind an event to an element + // Original by Dean Edwards + add: function( elem, types, handler, data ) { + if ( elem.nodeType === 3 || elem.nodeType === 8 ) { + return; + } + + if ( handler === false ) { + handler = returnFalse; + } else if ( !handler ) { + // Fixes bug #7229. Fix recommended by jdalton + return; + } + + var handleObjIn, handleObj; + + if ( handler.handler ) { + handleObjIn = handler; + handler = handleObjIn.handler; + } + + // Make sure that the function being executed has a unique ID + if ( !handler.guid ) { + handler.guid = jQuery.guid++; + } + + // Init the element's event structure + var elemData = jQuery._data( elem ); + + // If no elemData is found then we must be trying to bind to one of the + // banned noData elements + if ( !elemData ) { + return; + } + + var events = elemData.events, + eventHandle = elemData.handle; + + if ( !events ) { + elemData.events = events = {}; + } + + if ( !eventHandle ) { + elemData.handle = eventHandle = function( e ) { + // Discard the second event of a jQuery.event.trigger() and + // when an event is called after a page has unloaded + return typeof jQuery !== "undefined" && (!e || jQuery.event.triggered !== e.type) ? + jQuery.event.handle.apply( eventHandle.elem, arguments ) : + undefined; + }; + } + + // Add elem as a property of the handle function + // This is to prevent a memory leak with non-native events in IE. + eventHandle.elem = elem; + + // Handle multiple events separated by a space + // jQuery(...).bind("mouseover mouseout", fn); + types = types.split(" "); + + var type, i = 0, namespaces; + + while ( (type = types[ i++ ]) ) { + handleObj = handleObjIn ? + jQuery.extend({}, handleObjIn) : + { handler: handler, data: data }; + + // Namespaced event handlers + if ( type.indexOf(".") > -1 ) { + namespaces = type.split("."); + type = namespaces.shift(); + handleObj.namespace = namespaces.slice(0).sort().join("."); + + } else { + namespaces = []; + handleObj.namespace = ""; + } + + handleObj.type = type; + if ( !handleObj.guid ) { + handleObj.guid = handler.guid; + } + + // Get the current list of functions bound to this event + var handlers = events[ type ], + special = jQuery.event.special[ type ] || {}; + + // Init the event handler queue + if ( !handlers ) { + handlers = events[ type ] = []; + + // Check for a special event handler + // Only use addEventListener/attachEvent if the special + // events handler returns false + if ( !special.setup || special.setup.call( elem, data, namespaces, eventHandle ) === false ) { + // Bind the global event handler to the element + if ( elem.addEventListener ) { + elem.addEventListener( type, eventHandle, false ); + + } else if ( elem.attachEvent ) { + elem.attachEvent( "on" + type, eventHandle ); + } + } + } + + if ( special.add ) { + special.add.call( elem, handleObj ); + + if ( !handleObj.handler.guid ) { + handleObj.handler.guid = handler.guid; + } + } + + // Add the function to the element's handler list + handlers.push( handleObj ); + + // Keep track of which events have been used, for event optimization + jQuery.event.global[ type ] = true; + } + + // Nullify elem to prevent memory leaks in IE + elem = null; + }, + + global: {}, + + // Detach an event or set of events from an element + remove: function( elem, types, handler, pos ) { + // don't do events on text and comment nodes + if ( elem.nodeType === 3 || elem.nodeType === 8 ) { + return; + } + + if ( handler === false ) { + handler = returnFalse; + } + + var ret, type, fn, j, i = 0, all, namespaces, namespace, special, eventType, handleObj, origType, + elemData = jQuery.hasData( elem ) && jQuery._data( elem ), + events = elemData && elemData.events; + + if ( !elemData || !events ) { + return; + } + + // types is actually an event object here + if ( types && types.type ) { + handler = types.handler; + types = types.type; + } + + // Unbind all events for the element + if ( !types || typeof types === "string" && types.charAt(0) === "." ) { + types = types || ""; + + for ( type in events ) { + jQuery.event.remove( elem, type + types ); + } + + return; + } + + // Handle multiple events separated by a space + // jQuery(...).unbind("mouseover mouseout", fn); + types = types.split(" "); + + while ( (type = types[ i++ ]) ) { + origType = type; + handleObj = null; + all = type.indexOf(".") < 0; + namespaces = []; + + if ( !all ) { + // Namespaced event handlers + namespaces = type.split("."); + type = namespaces.shift(); + + namespace = new RegExp("(^|\\.)" + + jQuery.map( namespaces.slice(0).sort(), fcleanup ).join("\\.(?:.*\\.)?") + "(\\.|$)"); + } + + eventType = events[ type ]; + + if ( !eventType ) { + continue; + } + + if ( !handler ) { + for ( j = 0; j < eventType.length; j++ ) { + handleObj = eventType[ j ]; + + if ( all || namespace.test( handleObj.namespace ) ) { + jQuery.event.remove( elem, origType, handleObj.handler, j ); + eventType.splice( j--, 1 ); + } + } + + continue; + } + + special = jQuery.event.special[ type ] || {}; + + for ( j = pos || 0; j < eventType.length; j++ ) { + handleObj = eventType[ j ]; + + if ( handler.guid === handleObj.guid ) { + // remove the given handler for the given type + if ( all || namespace.test( handleObj.namespace ) ) { + if ( pos == null ) { + eventType.splice( j--, 1 ); + } + + if ( special.remove ) { + special.remove.call( elem, handleObj ); + } + } + + if ( pos != null ) { + break; + } + } + } + + // remove generic event handler if no more handlers exist + if ( eventType.length === 0 || pos != null && eventType.length === 1 ) { + if ( !special.teardown || special.teardown.call( elem, namespaces ) === false ) { + jQuery.removeEvent( elem, type, elemData.handle ); + } + + ret = null; + delete events[ type ]; + } + } + + // Remove the expando if it's no longer used + if ( jQuery.isEmptyObject( events ) ) { + var handle = elemData.handle; + if ( handle ) { + handle.elem = null; + } + + delete elemData.events; + delete elemData.handle; + + if ( jQuery.isEmptyObject( elemData ) ) { + jQuery.removeData( elem, undefined, true ); + } + } + }, + + // Events that are safe to short-circuit if no handlers are attached. + // Native DOM events should not be added, they may have inline handlers. + customEvent: { + "getData": true, + "setData": true, + "changeData": true + }, + + trigger: function( event, data, elem, onlyHandlers ) { + // Event object or event type + var type = event.type || event, + namespaces = [], + exclusive; + + if ( type.indexOf("!") >= 0 ) { + // Exclusive events trigger only for the exact event (no namespaces) + type = type.slice(0, -1); + exclusive = true; + } + + if ( type.indexOf(".") >= 0 ) { + // Namespaced trigger; create a regexp to match event type in handle() + namespaces = type.split("."); + type = namespaces.shift(); + namespaces.sort(); + } + + if ( (!elem || jQuery.event.customEvent[ type ]) && !jQuery.event.global[ type ] ) { + // No jQuery handlers for this event type, and it can't have inline handlers + return; + } + + // Caller can pass in an Event, Object, or just an event type string + event = typeof event === "object" ? + // jQuery.Event object + event[ jQuery.expando ] ? event : + // Object literal + new jQuery.Event( type, event ) : + // Just the event type (string) + new jQuery.Event( type ); + + event.type = type; + event.exclusive = exclusive; + event.namespace = namespaces.join("."); + event.namespace_re = new RegExp("(^|\\.)" + namespaces.join("\\.(?:.*\\.)?") + "(\\.|$)"); + + // triggerHandler() and global events don't bubble or run the default action + if ( onlyHandlers || !elem ) { + event.preventDefault(); + event.stopPropagation(); + } + + // Handle a global trigger + if ( !elem ) { + // TODO: Stop taunting the data cache; remove global events and always attach to document + jQuery.each( jQuery.cache, function() { + // internalKey variable is just used to make it easier to find + // and potentially change this stuff later; currently it just + // points to jQuery.expando + var internalKey = jQuery.expando, + internalCache = this[ internalKey ]; + if ( internalCache && internalCache.events && internalCache.events[ type ] ) { + jQuery.event.trigger( event, data, internalCache.handle.elem ); + } + }); + return; + } + + // Don't do events on text and comment nodes + if ( elem.nodeType === 3 || elem.nodeType === 8 ) { + return; + } + + // Clean up the event in case it is being reused + event.result = undefined; + event.target = elem; + + // Clone any incoming data and prepend the event, creating the handler arg list + data = data != null ? jQuery.makeArray( data ) : []; + data.unshift( event ); + + var cur = elem, + // IE doesn't like method names with a colon (#3533, #8272) + ontype = type.indexOf(":") < 0 ? "on" + type : ""; + + // Fire event on the current element, then bubble up the DOM tree + do { + var handle = jQuery._data( cur, "handle" ); + + event.currentTarget = cur; + if ( handle ) { + handle.apply( cur, data ); + } + + // Trigger an inline bound script + if ( ontype && jQuery.acceptData( cur ) && cur[ ontype ] && cur[ ontype ].apply( cur, data ) === false ) { + event.result = false; + event.preventDefault(); + } + + // Bubble up to document, then to window + cur = cur.parentNode || cur.ownerDocument || cur === event.target.ownerDocument && window; + } while ( cur && !event.isPropagationStopped() ); + + // If nobody prevented the default action, do it now + if ( !event.isDefaultPrevented() ) { + var old, + special = jQuery.event.special[ type ] || {}; + + if ( (!special._default || special._default.call( elem.ownerDocument, event ) === false) && + !(type === "click" && jQuery.nodeName( elem, "a" )) && jQuery.acceptData( elem ) ) { + + // Call a native DOM method on the target with the same name name as the event. + // Can't use an .isFunction)() check here because IE6/7 fails that test. + // IE<9 dies on focus to hidden element (#1486), may want to revisit a try/catch. + try { + if ( ontype && elem[ type ] ) { + // Don't re-trigger an onFOO event when we call its FOO() method + old = elem[ ontype ]; + + if ( old ) { + elem[ ontype ] = null; + } + + jQuery.event.triggered = type; + elem[ type ](); + } + } catch ( ieError ) {} + + if ( old ) { + elem[ ontype ] = old; + } + + jQuery.event.triggered = undefined; + } + } + + return event.result; + }, + + handle: function( event ) { + event = jQuery.event.fix( event || window.event ); + // Snapshot the handlers list since a called handler may add/remove events. + var handlers = ((jQuery._data( this, "events" ) || {})[ event.type ] || []).slice(0), + run_all = !event.exclusive && !event.namespace, + args = Array.prototype.slice.call( arguments, 0 ); + + // Use the fix-ed Event rather than the (read-only) native event + args[0] = event; + event.currentTarget = this; + + for ( var j = 0, l = handlers.length; j < l; j++ ) { + var handleObj = handlers[ j ]; + + // Triggered event must 1) be non-exclusive and have no namespace, or + // 2) have namespace(s) a subset or equal to those in the bound event. + if ( run_all || event.namespace_re.test( handleObj.namespace ) ) { + // Pass in a reference to the handler function itself + // So that we can later remove it + event.handler = handleObj.handler; + event.data = handleObj.data; + event.handleObj = handleObj; + + var ret = handleObj.handler.apply( this, args ); + + if ( ret !== undefined ) { + event.result = ret; + if ( ret === false ) { + event.preventDefault(); + event.stopPropagation(); + } + } + + if ( event.isImmediatePropagationStopped() ) { + break; + } + } + } + return event.result; + }, + + props: "altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode layerX layerY metaKey newValue offsetX offsetY pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which".split(" "), + + fix: function( event ) { + if ( event[ jQuery.expando ] ) { + return event; + } + + // store a copy of the original event object + // and "clone" to set read-only properties + var originalEvent = event; + event = jQuery.Event( originalEvent ); + + for ( var i = this.props.length, prop; i; ) { + prop = this.props[ --i ]; + event[ prop ] = originalEvent[ prop ]; + } + + // Fix target property, if necessary + if ( !event.target ) { + // Fixes #1925 where srcElement might not be defined either + event.target = event.srcElement || document; + } + + // check if target is a textnode (safari) + if ( event.target.nodeType === 3 ) { + event.target = event.target.parentNode; + } + + // Add relatedTarget, if necessary + if ( !event.relatedTarget && event.fromElement ) { + event.relatedTarget = event.fromElement === event.target ? event.toElement : event.fromElement; + } + + // Calculate pageX/Y if missing and clientX/Y available + if ( event.pageX == null && event.clientX != null ) { + var eventDocument = event.target.ownerDocument || document, + doc = eventDocument.documentElement, + body = eventDocument.body; + + event.pageX = event.clientX + (doc && doc.scrollLeft || body && body.scrollLeft || 0) - (doc && doc.clientLeft || body && body.clientLeft || 0); + event.pageY = event.clientY + (doc && doc.scrollTop || body && body.scrollTop || 0) - (doc && doc.clientTop || body && body.clientTop || 0); + } + + // Add which for key events + if ( event.which == null && (event.charCode != null || event.keyCode != null) ) { + event.which = event.charCode != null ? event.charCode : event.keyCode; + } + + // Add metaKey to non-Mac browsers (use ctrl for PC's and Meta for Macs) + if ( !event.metaKey && event.ctrlKey ) { + event.metaKey = event.ctrlKey; + } + + // Add which for click: 1 === left; 2 === middle; 3 === right + // Note: button is not normalized, so don't use it + if ( !event.which && event.button !== undefined ) { + event.which = (event.button & 1 ? 1 : ( event.button & 2 ? 3 : ( event.button & 4 ? 2 : 0 ) )); + } + + return event; + }, + + // Deprecated, use jQuery.guid instead + guid: 1E8, + + // Deprecated, use jQuery.proxy instead + proxy: jQuery.proxy, + + special: { + ready: { + // Make sure the ready event is setup + setup: jQuery.bindReady, + teardown: jQuery.noop + }, + + live: { + add: function( handleObj ) { + jQuery.event.add( this, + liveConvert( handleObj.origType, handleObj.selector ), + jQuery.extend({}, handleObj, {handler: liveHandler, guid: handleObj.handler.guid}) ); + }, + + remove: function( handleObj ) { + jQuery.event.remove( this, liveConvert( handleObj.origType, handleObj.selector ), handleObj ); + } + }, + + beforeunload: { + setup: function( data, namespaces, eventHandle ) { + // We only want to do this special case on windows + if ( jQuery.isWindow( this ) ) { + this.onbeforeunload = eventHandle; + } + }, + + teardown: function( namespaces, eventHandle ) { + if ( this.onbeforeunload === eventHandle ) { + this.onbeforeunload = null; + } + } + } + } +}; + +jQuery.removeEvent = document.removeEventListener ? + function( elem, type, handle ) { + if ( elem.removeEventListener ) { + elem.removeEventListener( type, handle, false ); + } + } : + function( elem, type, handle ) { + if ( elem.detachEvent ) { + elem.detachEvent( "on" + type, handle ); + } + }; + +jQuery.Event = function( src, props ) { + // Allow instantiation without the 'new' keyword + if ( !this.preventDefault ) { + return new jQuery.Event( src, props ); + } + + // Event object + if ( src && src.type ) { + this.originalEvent = src; + this.type = src.type; + + // Events bubbling up the document may have been marked as prevented + // by a handler lower down the tree; reflect the correct value. + this.isDefaultPrevented = (src.defaultPrevented || src.returnValue === false || + src.getPreventDefault && src.getPreventDefault()) ? returnTrue : returnFalse; + + // Event type + } else { + this.type = src; + } + + // Put explicitly provided properties onto the event object + if ( props ) { + jQuery.extend( this, props ); + } + + // timeStamp is buggy for some events on Firefox(#3843) + // So we won't rely on the native value + this.timeStamp = jQuery.now(); + + // Mark it as fixed + this[ jQuery.expando ] = true; +}; + +function returnFalse() { + return false; +} +function returnTrue() { + return true; +} + +// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding +// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html +jQuery.Event.prototype = { + preventDefault: function() { + this.isDefaultPrevented = returnTrue; + + var e = this.originalEvent; + if ( !e ) { + return; + } + + // if preventDefault exists run it on the original event + if ( e.preventDefault ) { + e.preventDefault(); + + // otherwise set the returnValue property of the original event to false (IE) + } else { + e.returnValue = false; + } + }, + stopPropagation: function() { + this.isPropagationStopped = returnTrue; + + var e = this.originalEvent; + if ( !e ) { + return; + } + // if stopPropagation exists run it on the original event + if ( e.stopPropagation ) { + e.stopPropagation(); + } + // otherwise set the cancelBubble property of the original event to true (IE) + e.cancelBubble = true; + }, + stopImmediatePropagation: function() { + this.isImmediatePropagationStopped = returnTrue; + this.stopPropagation(); + }, + isDefaultPrevented: returnFalse, + isPropagationStopped: returnFalse, + isImmediatePropagationStopped: returnFalse +}; + +// Checks if an event happened on an element within another element +// Used in jQuery.event.special.mouseenter and mouseleave handlers +var withinElement = function( event ) { + + // Check if mouse(over|out) are still within the same parent element + var related = event.relatedTarget, + inside = false, + eventType = event.type; + + event.type = event.data; + + if ( related !== this ) { + + if ( related ) { + inside = jQuery.contains( this, related ); + } + + if ( !inside ) { + + jQuery.event.handle.apply( this, arguments ); + + event.type = eventType; + } + } +}, + +// In case of event delegation, we only need to rename the event.type, +// liveHandler will take care of the rest. +delegate = function( event ) { + event.type = event.data; + jQuery.event.handle.apply( this, arguments ); +}; + +// Create mouseenter and mouseleave events +jQuery.each({ + mouseenter: "mouseover", + mouseleave: "mouseout" +}, function( orig, fix ) { + jQuery.event.special[ orig ] = { + setup: function( data ) { + jQuery.event.add( this, fix, data && data.selector ? delegate : withinElement, orig ); + }, + teardown: function( data ) { + jQuery.event.remove( this, fix, data && data.selector ? delegate : withinElement ); + } + }; +}); + +// submit delegation +if ( !jQuery.support.submitBubbles ) { + + jQuery.event.special.submit = { + setup: function( data, namespaces ) { + if ( !jQuery.nodeName( this, "form" ) ) { + jQuery.event.add(this, "click.specialSubmit", function( e ) { + var elem = e.target, + type = elem.type; + + if ( (type === "submit" || type === "image") && jQuery( elem ).closest("form").length ) { + trigger( "submit", this, arguments ); + } + }); + + jQuery.event.add(this, "keypress.specialSubmit", function( e ) { + var elem = e.target, + type = elem.type; + + if ( (type === "text" || type === "password") && jQuery( elem ).closest("form").length && e.keyCode === 13 ) { + trigger( "submit", this, arguments ); + } + }); + + } else { + return false; + } + }, + + teardown: function( namespaces ) { + jQuery.event.remove( this, ".specialSubmit" ); + } + }; + +} + +// change delegation, happens here so we have bind. +if ( !jQuery.support.changeBubbles ) { + + var changeFilters, + + getVal = function( elem ) { + var type = elem.type, val = elem.value; + + if ( type === "radio" || type === "checkbox" ) { + val = elem.checked; + + } else if ( type === "select-multiple" ) { + val = elem.selectedIndex > -1 ? + jQuery.map( elem.options, function( elem ) { + return elem.selected; + }).join("-") : + ""; + + } else if ( jQuery.nodeName( elem, "select" ) ) { + val = elem.selectedIndex; + } + + return val; + }, + + testChange = function testChange( e ) { + var elem = e.target, data, val; + + if ( !rformElems.test( elem.nodeName ) || elem.readOnly ) { + return; + } + + data = jQuery._data( elem, "_change_data" ); + val = getVal(elem); + + // the current data will be also retrieved by beforeactivate + if ( e.type !== "focusout" || elem.type !== "radio" ) { + jQuery._data( elem, "_change_data", val ); + } + + if ( data === undefined || val === data ) { + return; + } + + if ( data != null || val ) { + e.type = "change"; + e.liveFired = undefined; + jQuery.event.trigger( e, arguments[1], elem ); + } + }; + + jQuery.event.special.change = { + filters: { + focusout: testChange, + + beforedeactivate: testChange, + + click: function( e ) { + var elem = e.target, type = jQuery.nodeName( elem, "input" ) ? elem.type : ""; + + if ( type === "radio" || type === "checkbox" || jQuery.nodeName( elem, "select" ) ) { + testChange.call( this, e ); + } + }, + + // Change has to be called before submit + // Keydown will be called before keypress, which is used in submit-event delegation + keydown: function( e ) { + var elem = e.target, type = jQuery.nodeName( elem, "input" ) ? elem.type : ""; + + if ( (e.keyCode === 13 && !jQuery.nodeName( elem, "textarea" ) ) || + (e.keyCode === 32 && (type === "checkbox" || type === "radio")) || + type === "select-multiple" ) { + testChange.call( this, e ); + } + }, + + // Beforeactivate happens also before the previous element is blurred + // with this event you can't trigger a change event, but you can store + // information + beforeactivate: function( e ) { + var elem = e.target; + jQuery._data( elem, "_change_data", getVal(elem) ); + } + }, + + setup: function( data, namespaces ) { + if ( this.type === "file" ) { + return false; + } + + for ( var type in changeFilters ) { + jQuery.event.add( this, type + ".specialChange", changeFilters[type] ); + } + + return rformElems.test( this.nodeName ); + }, + + teardown: function( namespaces ) { + jQuery.event.remove( this, ".specialChange" ); + + return rformElems.test( this.nodeName ); + } + }; + + changeFilters = jQuery.event.special.change.filters; + + // Handle when the input is .focus()'d + changeFilters.focus = changeFilters.beforeactivate; +} + +function trigger( type, elem, args ) { + // Piggyback on a donor event to simulate a different one. + // Fake originalEvent to avoid donor's stopPropagation, but if the + // simulated event prevents default then we do the same on the donor. + // Don't pass args or remember liveFired; they apply to the donor event. + var event = jQuery.extend( {}, args[ 0 ] ); + event.type = type; + event.originalEvent = {}; + event.liveFired = undefined; + jQuery.event.handle.call( elem, event ); + if ( event.isDefaultPrevented() ) { + args[ 0 ].preventDefault(); + } +} + +// Create "bubbling" focus and blur events +if ( !jQuery.support.focusinBubbles ) { + jQuery.each({ focus: "focusin", blur: "focusout" }, function( orig, fix ) { + + // Attach a single capturing handler while someone wants focusin/focusout + var attaches = 0; + + jQuery.event.special[ fix ] = { + setup: function() { + if ( attaches++ === 0 ) { + document.addEventListener( orig, handler, true ); + } + }, + teardown: function() { + if ( --attaches === 0 ) { + document.removeEventListener( orig, handler, true ); + } + } + }; + + function handler( donor ) { + // Donor event is always a native one; fix it and switch its type. + // Let focusin/out handler cancel the donor focus/blur event. + var e = jQuery.event.fix( donor ); + e.type = fix; + e.originalEvent = {}; + jQuery.event.trigger( e, null, e.target ); + if ( e.isDefaultPrevented() ) { + donor.preventDefault(); + } + } + }); +} + +jQuery.each(["bind", "one"], function( i, name ) { + jQuery.fn[ name ] = function( type, data, fn ) { + var handler; + + // Handle object literals + if ( typeof type === "object" ) { + for ( var key in type ) { + this[ name ](key, data, type[key], fn); + } + return this; + } + + if ( arguments.length === 2 || data === false ) { + fn = data; + data = undefined; + } + + if ( name === "one" ) { + handler = function( event ) { + jQuery( this ).unbind( event, handler ); + return fn.apply( this, arguments ); + }; + handler.guid = fn.guid || jQuery.guid++; + } else { + handler = fn; + } + + if ( type === "unload" && name !== "one" ) { + this.one( type, data, fn ); + + } else { + for ( var i = 0, l = this.length; i < l; i++ ) { + jQuery.event.add( this[i], type, handler, data ); + } + } + + return this; + }; +}); + +jQuery.fn.extend({ + unbind: function( type, fn ) { + // Handle object literals + if ( typeof type === "object" && !type.preventDefault ) { + for ( var key in type ) { + this.unbind(key, type[key]); + } + + } else { + for ( var i = 0, l = this.length; i < l; i++ ) { + jQuery.event.remove( this[i], type, fn ); + } + } + + return this; + }, + + delegate: function( selector, types, data, fn ) { + return this.live( types, data, fn, selector ); + }, + + undelegate: function( selector, types, fn ) { + if ( arguments.length === 0 ) { + return this.unbind( "live" ); + + } else { + return this.die( types, null, fn, selector ); + } + }, + + trigger: function( type, data ) { + return this.each(function() { + jQuery.event.trigger( type, data, this ); + }); + }, + + triggerHandler: function( type, data ) { + if ( this[0] ) { + return jQuery.event.trigger( type, data, this[0], true ); + } + }, + + toggle: function( fn ) { + // Save reference to arguments for access in closure + var args = arguments, + guid = fn.guid || jQuery.guid++, + i = 0, + toggler = function( event ) { + // Figure out which function to execute + var lastToggle = ( jQuery.data( this, "lastToggle" + fn.guid ) || 0 ) % i; + jQuery.data( this, "lastToggle" + fn.guid, lastToggle + 1 ); + + // Make sure that clicks stop + event.preventDefault(); + + // and execute the function + return args[ lastToggle ].apply( this, arguments ) || false; + }; + + // link all the functions, so any of them can unbind this click handler + toggler.guid = guid; + while ( i < args.length ) { + args[ i++ ].guid = guid; + } + + return this.click( toggler ); + }, + + hover: function( fnOver, fnOut ) { + return this.mouseenter( fnOver ).mouseleave( fnOut || fnOver ); + } +}); + +var liveMap = { + focus: "focusin", + blur: "focusout", + mouseenter: "mouseover", + mouseleave: "mouseout" +}; + +jQuery.each(["live", "die"], function( i, name ) { + jQuery.fn[ name ] = function( types, data, fn, origSelector /* Internal Use Only */ ) { + var type, i = 0, match, namespaces, preType, + selector = origSelector || this.selector, + context = origSelector ? this : jQuery( this.context ); + + if ( typeof types === "object" && !types.preventDefault ) { + for ( var key in types ) { + context[ name ]( key, data, types[key], selector ); + } + + return this; + } + + if ( name === "die" && !types && + origSelector && origSelector.charAt(0) === "." ) { + + context.unbind( origSelector ); + + return this; + } + + if ( data === false || jQuery.isFunction( data ) ) { + fn = data || returnFalse; + data = undefined; + } + + types = (types || "").split(" "); + + while ( (type = types[ i++ ]) != null ) { + match = rnamespaces.exec( type ); + namespaces = ""; + + if ( match ) { + namespaces = match[0]; + type = type.replace( rnamespaces, "" ); + } + + if ( type === "hover" ) { + types.push( "mouseenter" + namespaces, "mouseleave" + namespaces ); + continue; + } + + preType = type; + + if ( liveMap[ type ] ) { + types.push( liveMap[ type ] + namespaces ); + type = type + namespaces; + + } else { + type = (liveMap[ type ] || type) + namespaces; + } + + if ( name === "live" ) { + // bind live handler + for ( var j = 0, l = context.length; j < l; j++ ) { + jQuery.event.add( context[j], "live." + liveConvert( type, selector ), + { data: data, selector: selector, handler: fn, origType: type, origHandler: fn, preType: preType } ); + } + + } else { + // unbind live handler + context.unbind( "live." + liveConvert( type, selector ), fn ); + } + } + + return this; + }; +}); + +function liveHandler( event ) { + var stop, maxLevel, related, match, handleObj, elem, j, i, l, data, close, namespace, ret, + elems = [], + selectors = [], + events = jQuery._data( this, "events" ); + + // Make sure we avoid non-left-click bubbling in Firefox (#3861) and disabled elements in IE (#6911) + if ( event.liveFired === this || !events || !events.live || event.target.disabled || event.button && event.type === "click" ) { + return; + } + + if ( event.namespace ) { + namespace = new RegExp("(^|\\.)" + event.namespace.split(".").join("\\.(?:.*\\.)?") + "(\\.|$)"); + } + + event.liveFired = this; + + var live = events.live.slice(0); + + for ( j = 0; j < live.length; j++ ) { + handleObj = live[j]; + + if ( handleObj.origType.replace( rnamespaces, "" ) === event.type ) { + selectors.push( handleObj.selector ); + + } else { + live.splice( j--, 1 ); + } + } + + match = jQuery( event.target ).closest( selectors, event.currentTarget ); + + for ( i = 0, l = match.length; i < l; i++ ) { + close = match[i]; + + for ( j = 0; j < live.length; j++ ) { + handleObj = live[j]; + + if ( close.selector === handleObj.selector && (!namespace || namespace.test( handleObj.namespace )) && !close.elem.disabled ) { + elem = close.elem; + related = null; + + // Those two events require additional checking + if ( handleObj.preType === "mouseenter" || handleObj.preType === "mouseleave" ) { + event.type = handleObj.preType; + related = jQuery( event.relatedTarget ).closest( handleObj.selector )[0]; + + // Make sure not to accidentally match a child element with the same selector + if ( related && jQuery.contains( elem, related ) ) { + related = elem; + } + } + + if ( !related || related !== elem ) { + elems.push({ elem: elem, handleObj: handleObj, level: close.level }); + } + } + } + } + + for ( i = 0, l = elems.length; i < l; i++ ) { + match = elems[i]; + + if ( maxLevel && match.level > maxLevel ) { + break; + } + + event.currentTarget = match.elem; + event.data = match.handleObj.data; + event.handleObj = match.handleObj; + + ret = match.handleObj.origHandler.apply( match.elem, arguments ); + + if ( ret === false || event.isPropagationStopped() ) { + maxLevel = match.level; + + if ( ret === false ) { + stop = false; + } + if ( event.isImmediatePropagationStopped() ) { + break; + } + } + } + + return stop; +} + +function liveConvert( type, selector ) { + return (type && type !== "*" ? type + "." : "") + selector.replace(rperiod, "`").replace(rspaces, "&"); +} + +jQuery.each( ("blur focus focusin focusout load resize scroll unload click dblclick " + + "mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave " + + "change select submit keydown keypress keyup error").split(" "), function( i, name ) { + + // Handle event binding + jQuery.fn[ name ] = function( data, fn ) { + if ( fn == null ) { + fn = data; + data = null; + } + + return arguments.length > 0 ? + this.bind( name, data, fn ) : + this.trigger( name ); + }; + + if ( jQuery.attrFn ) { + jQuery.attrFn[ name ] = true; + } +}); + + + +/*! + * Sizzle CSS Selector Engine + * Copyright 2011, The Dojo Foundation + * Released under the MIT, BSD, and GPL Licenses. + * More information: http://sizzlejs.com/ + */ +(function(){ + +var chunker = /((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g, + done = 0, + toString = Object.prototype.toString, + hasDuplicate = false, + baseHasDuplicate = true, + rBackslash = /\\/g, + rNonWord = /\W/; + +// Here we check if the JavaScript engine is using some sort of +// optimization where it does not always call our comparision +// function. If that is the case, discard the hasDuplicate value. +// Thus far that includes Google Chrome. +[0, 0].sort(function() { + baseHasDuplicate = false; + return 0; +}); + +var Sizzle = function( selector, context, results, seed ) { + results = results || []; + context = context || document; + + var origContext = context; + + if ( context.nodeType !== 1 && context.nodeType !== 9 ) { + return []; + } + + if ( !selector || typeof selector !== "string" ) { + return results; + } + + var m, set, checkSet, extra, ret, cur, pop, i, + prune = true, + contextXML = Sizzle.isXML( context ), + parts = [], + soFar = selector; + + // Reset the position of the chunker regexp (start from head) + do { + chunker.exec( "" ); + m = chunker.exec( soFar ); + + if ( m ) { + soFar = m[3]; + + parts.push( m[1] ); + + if ( m[2] ) { + extra = m[3]; + break; + } + } + } while ( m ); + + if ( parts.length > 1 && origPOS.exec( selector ) ) { + + if ( parts.length === 2 && Expr.relative[ parts[0] ] ) { + set = posProcess( parts[0] + parts[1], context ); + + } else { + set = Expr.relative[ parts[0] ] ? + [ context ] : + Sizzle( parts.shift(), context ); + + while ( parts.length ) { + selector = parts.shift(); + + if ( Expr.relative[ selector ] ) { + selector += parts.shift(); + } + + set = posProcess( selector, set ); + } + } + + } else { + // Take a shortcut and set the context if the root selector is an ID + // (but not if it'll be faster if the inner selector is an ID) + if ( !seed && parts.length > 1 && context.nodeType === 9 && !contextXML && + Expr.match.ID.test(parts[0]) && !Expr.match.ID.test(parts[parts.length - 1]) ) { + + ret = Sizzle.find( parts.shift(), context, contextXML ); + context = ret.expr ? + Sizzle.filter( ret.expr, ret.set )[0] : + ret.set[0]; + } + + if ( context ) { + ret = seed ? + { expr: parts.pop(), set: makeArray(seed) } : + Sizzle.find( parts.pop(), parts.length === 1 && (parts[0] === "~" || parts[0] === "+") && context.parentNode ? context.parentNode : context, contextXML ); + + set = ret.expr ? + Sizzle.filter( ret.expr, ret.set ) : + ret.set; + + if ( parts.length > 0 ) { + checkSet = makeArray( set ); + + } else { + prune = false; + } + + while ( parts.length ) { + cur = parts.pop(); + pop = cur; + + if ( !Expr.relative[ cur ] ) { + cur = ""; + } else { + pop = parts.pop(); + } + + if ( pop == null ) { + pop = context; + } + + Expr.relative[ cur ]( checkSet, pop, contextXML ); + } + + } else { + checkSet = parts = []; + } + } + + if ( !checkSet ) { + checkSet = set; + } + + if ( !checkSet ) { + Sizzle.error( cur || selector ); + } + + if ( toString.call(checkSet) === "[object Array]" ) { + if ( !prune ) { + results.push.apply( results, checkSet ); + + } else if ( context && context.nodeType === 1 ) { + for ( i = 0; checkSet[i] != null; i++ ) { + if ( checkSet[i] && (checkSet[i] === true || checkSet[i].nodeType === 1 && Sizzle.contains(context, checkSet[i])) ) { + results.push( set[i] ); + } + } + + } else { + for ( i = 0; checkSet[i] != null; i++ ) { + if ( checkSet[i] && checkSet[i].nodeType === 1 ) { + results.push( set[i] ); + } + } + } + + } else { + makeArray( checkSet, results ); + } + + if ( extra ) { + Sizzle( extra, origContext, results, seed ); + Sizzle.uniqueSort( results ); + } + + return results; +}; + +Sizzle.uniqueSort = function( results ) { + if ( sortOrder ) { + hasDuplicate = baseHasDuplicate; + results.sort( sortOrder ); + + if ( hasDuplicate ) { + for ( var i = 1; i < results.length; i++ ) { + if ( results[i] === results[ i - 1 ] ) { + results.splice( i--, 1 ); + } + } + } + } + + return results; +}; + +Sizzle.matches = function( expr, set ) { + return Sizzle( expr, null, null, set ); +}; + +Sizzle.matchesSelector = function( node, expr ) { + return Sizzle( expr, null, null, [node] ).length > 0; +}; + +Sizzle.find = function( expr, context, isXML ) { + var set; + + if ( !expr ) { + return []; + } + + for ( var i = 0, l = Expr.order.length; i < l; i++ ) { + var match, + type = Expr.order[i]; + + if ( (match = Expr.leftMatch[ type ].exec( expr )) ) { + var left = match[1]; + match.splice( 1, 1 ); + + if ( left.substr( left.length - 1 ) !== "\\" ) { + match[1] = (match[1] || "").replace( rBackslash, "" ); + set = Expr.find[ type ]( match, context, isXML ); + + if ( set != null ) { + expr = expr.replace( Expr.match[ type ], "" ); + break; + } + } + } + } + + if ( !set ) { + set = typeof context.getElementsByTagName !== "undefined" ? + context.getElementsByTagName( "*" ) : + []; + } + + return { set: set, expr: expr }; +}; + +Sizzle.filter = function( expr, set, inplace, not ) { + var match, anyFound, + old = expr, + result = [], + curLoop = set, + isXMLFilter = set && set[0] && Sizzle.isXML( set[0] ); + + while ( expr && set.length ) { + for ( var type in Expr.filter ) { + if ( (match = Expr.leftMatch[ type ].exec( expr )) != null && match[2] ) { + var found, item, + filter = Expr.filter[ type ], + left = match[1]; + + anyFound = false; + + match.splice(1,1); + + if ( left.substr( left.length - 1 ) === "\\" ) { + continue; + } + + if ( curLoop === result ) { + result = []; + } + + if ( Expr.preFilter[ type ] ) { + match = Expr.preFilter[ type ]( match, curLoop, inplace, result, not, isXMLFilter ); + + if ( !match ) { + anyFound = found = true; + + } else if ( match === true ) { + continue; + } + } + + if ( match ) { + for ( var i = 0; (item = curLoop[i]) != null; i++ ) { + if ( item ) { + found = filter( item, match, i, curLoop ); + var pass = not ^ !!found; + + if ( inplace && found != null ) { + if ( pass ) { + anyFound = true; + + } else { + curLoop[i] = false; + } + + } else if ( pass ) { + result.push( item ); + anyFound = true; + } + } + } + } + + if ( found !== undefined ) { + if ( !inplace ) { + curLoop = result; + } + + expr = expr.replace( Expr.match[ type ], "" ); + + if ( !anyFound ) { + return []; + } + + break; + } + } + } + + // Improper expression + if ( expr === old ) { + if ( anyFound == null ) { + Sizzle.error( expr ); + + } else { + break; + } + } + + old = expr; + } + + return curLoop; +}; + +Sizzle.error = function( msg ) { + throw "Syntax error, unrecognized expression: " + msg; +}; + +var Expr = Sizzle.selectors = { + order: [ "ID", "NAME", "TAG" ], + + match: { + ID: /#((?:[\w\u00c0-\uFFFF\-]|\\.)+)/, + CLASS: /\.((?:[\w\u00c0-\uFFFF\-]|\\.)+)/, + NAME: /\[name=['"]*((?:[\w\u00c0-\uFFFF\-]|\\.)+)['"]*\]/, + ATTR: /\[\s*((?:[\w\u00c0-\uFFFF\-]|\\.)+)\s*(?:(\S?=)\s*(?:(['"])(.*?)\3|(#?(?:[\w\u00c0-\uFFFF\-]|\\.)*)|)|)\s*\]/, + TAG: /^((?:[\w\u00c0-\uFFFF\*\-]|\\.)+)/, + CHILD: /:(only|nth|last|first)-child(?:\(\s*(even|odd|(?:[+\-]?\d+|(?:[+\-]?\d*)?n\s*(?:[+\-]\s*\d+)?))\s*\))?/, + POS: /:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^\-]|$)/, + PSEUDO: /:((?:[\w\u00c0-\uFFFF\-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/ + }, + + leftMatch: {}, + + attrMap: { + "class": "className", + "for": "htmlFor" + }, + + attrHandle: { + href: function( elem ) { + return elem.getAttribute( "href" ); + }, + type: function( elem ) { + return elem.getAttribute( "type" ); + } + }, + + relative: { + "+": function(checkSet, part){ + var isPartStr = typeof part === "string", + isTag = isPartStr && !rNonWord.test( part ), + isPartStrNotTag = isPartStr && !isTag; + + if ( isTag ) { + part = part.toLowerCase(); + } + + for ( var i = 0, l = checkSet.length, elem; i < l; i++ ) { + if ( (elem = checkSet[i]) ) { + while ( (elem = elem.previousSibling) && elem.nodeType !== 1 ) {} + + checkSet[i] = isPartStrNotTag || elem && elem.nodeName.toLowerCase() === part ? + elem || false : + elem === part; + } + } + + if ( isPartStrNotTag ) { + Sizzle.filter( part, checkSet, true ); + } + }, + + ">": function( checkSet, part ) { + var elem, + isPartStr = typeof part === "string", + i = 0, + l = checkSet.length; + + if ( isPartStr && !rNonWord.test( part ) ) { + part = part.toLowerCase(); + + for ( ; i < l; i++ ) { + elem = checkSet[i]; + + if ( elem ) { + var parent = elem.parentNode; + checkSet[i] = parent.nodeName.toLowerCase() === part ? parent : false; + } + } + + } else { + for ( ; i < l; i++ ) { + elem = checkSet[i]; + + if ( elem ) { + checkSet[i] = isPartStr ? + elem.parentNode : + elem.parentNode === part; + } + } + + if ( isPartStr ) { + Sizzle.filter( part, checkSet, true ); + } + } + }, + + "": function(checkSet, part, isXML){ + var nodeCheck, + doneName = done++, + checkFn = dirCheck; + + if ( typeof part === "string" && !rNonWord.test( part ) ) { + part = part.toLowerCase(); + nodeCheck = part; + checkFn = dirNodeCheck; + } + + checkFn( "parentNode", part, doneName, checkSet, nodeCheck, isXML ); + }, + + "~": function( checkSet, part, isXML ) { + var nodeCheck, + doneName = done++, + checkFn = dirCheck; + + if ( typeof part === "string" && !rNonWord.test( part ) ) { + part = part.toLowerCase(); + nodeCheck = part; + checkFn = dirNodeCheck; + } + + checkFn( "previousSibling", part, doneName, checkSet, nodeCheck, isXML ); + } + }, + + find: { + ID: function( match, context, isXML ) { + if ( typeof context.getElementById !== "undefined" && !isXML ) { + var m = context.getElementById(match[1]); + // Check parentNode to catch when Blackberry 4.6 returns + // nodes that are no longer in the document #6963 + return m && m.parentNode ? [m] : []; + } + }, + + NAME: function( match, context ) { + if ( typeof context.getElementsByName !== "undefined" ) { + var ret = [], + results = context.getElementsByName( match[1] ); + + for ( var i = 0, l = results.length; i < l; i++ ) { + if ( results[i].getAttribute("name") === match[1] ) { + ret.push( results[i] ); + } + } + + return ret.length === 0 ? null : ret; + } + }, + + TAG: function( match, context ) { + if ( typeof context.getElementsByTagName !== "undefined" ) { + return context.getElementsByTagName( match[1] ); + } + } + }, + preFilter: { + CLASS: function( match, curLoop, inplace, result, not, isXML ) { + match = " " + match[1].replace( rBackslash, "" ) + " "; + + if ( isXML ) { + return match; + } + + for ( var i = 0, elem; (elem = curLoop[i]) != null; i++ ) { + if ( elem ) { + if ( not ^ (elem.className && (" " + elem.className + " ").replace(/[\t\n\r]/g, " ").indexOf(match) >= 0) ) { + if ( !inplace ) { + result.push( elem ); + } + + } else if ( inplace ) { + curLoop[i] = false; + } + } + } + + return false; + }, + + ID: function( match ) { + return match[1].replace( rBackslash, "" ); + }, + + TAG: function( match, curLoop ) { + return match[1].replace( rBackslash, "" ).toLowerCase(); + }, + + CHILD: function( match ) { + if ( match[1] === "nth" ) { + if ( !match[2] ) { + Sizzle.error( match[0] ); + } + + match[2] = match[2].replace(/^\+|\s*/g, ''); + + // parse equations like 'even', 'odd', '5', '2n', '3n+2', '4n-1', '-n+6' + var test = /(-?)(\d*)(?:n([+\-]?\d*))?/.exec( + match[2] === "even" && "2n" || match[2] === "odd" && "2n+1" || + !/\D/.test( match[2] ) && "0n+" + match[2] || match[2]); + + // calculate the numbers (first)n+(last) including if they are negative + match[2] = (test[1] + (test[2] || 1)) - 0; + match[3] = test[3] - 0; + } + else if ( match[2] ) { + Sizzle.error( match[0] ); + } + + // TODO: Move to normal caching system + match[0] = done++; + + return match; + }, + + ATTR: function( match, curLoop, inplace, result, not, isXML ) { + var name = match[1] = match[1].replace( rBackslash, "" ); + + if ( !isXML && Expr.attrMap[name] ) { + match[1] = Expr.attrMap[name]; + } + + // Handle if an un-quoted value was used + match[4] = ( match[4] || match[5] || "" ).replace( rBackslash, "" ); + + if ( match[2] === "~=" ) { + match[4] = " " + match[4] + " "; + } + + return match; + }, + + PSEUDO: function( match, curLoop, inplace, result, not ) { + if ( match[1] === "not" ) { + // If we're dealing with a complex expression, or a simple one + if ( ( chunker.exec(match[3]) || "" ).length > 1 || /^\w/.test(match[3]) ) { + match[3] = Sizzle(match[3], null, null, curLoop); + + } else { + var ret = Sizzle.filter(match[3], curLoop, inplace, true ^ not); + + if ( !inplace ) { + result.push.apply( result, ret ); + } + + return false; + } + + } else if ( Expr.match.POS.test( match[0] ) || Expr.match.CHILD.test( match[0] ) ) { + return true; + } + + return match; + }, + + POS: function( match ) { + match.unshift( true ); + + return match; + } + }, + + filters: { + enabled: function( elem ) { + return elem.disabled === false && elem.type !== "hidden"; + }, + + disabled: function( elem ) { + return elem.disabled === true; + }, + + checked: function( elem ) { + return elem.checked === true; + }, + + selected: function( elem ) { + // Accessing this property makes selected-by-default + // options in Safari work properly + if ( elem.parentNode ) { + elem.parentNode.selectedIndex; + } + + return elem.selected === true; + }, + + parent: function( elem ) { + return !!elem.firstChild; + }, + + empty: function( elem ) { + return !elem.firstChild; + }, + + has: function( elem, i, match ) { + return !!Sizzle( match[3], elem ).length; + }, + + header: function( elem ) { + return (/h\d/i).test( elem.nodeName ); + }, + + text: function( elem ) { + var attr = elem.getAttribute( "type" ), type = elem.type; + // IE6 and 7 will map elem.type to 'text' for new HTML5 types (search, etc) + // use getAttribute instead to test this case + return elem.nodeName.toLowerCase() === "input" && "text" === type && ( attr === type || attr === null ); + }, + + radio: function( elem ) { + return elem.nodeName.toLowerCase() === "input" && "radio" === elem.type; + }, + + checkbox: function( elem ) { + return elem.nodeName.toLowerCase() === "input" && "checkbox" === elem.type; + }, + + file: function( elem ) { + return elem.nodeName.toLowerCase() === "input" && "file" === elem.type; + }, + + password: function( elem ) { + return elem.nodeName.toLowerCase() === "input" && "password" === elem.type; + }, + + submit: function( elem ) { + var name = elem.nodeName.toLowerCase(); + return (name === "input" || name === "button") && "submit" === elem.type; + }, + + image: function( elem ) { + return elem.nodeName.toLowerCase() === "input" && "image" === elem.type; + }, + + reset: function( elem ) { + var name = elem.nodeName.toLowerCase(); + return (name === "input" || name === "button") && "reset" === elem.type; + }, + + button: function( elem ) { + var name = elem.nodeName.toLowerCase(); + return name === "input" && "button" === elem.type || name === "button"; + }, + + input: function( elem ) { + return (/input|select|textarea|button/i).test( elem.nodeName ); + }, + + focus: function( elem ) { + return elem === elem.ownerDocument.activeElement; + } + }, + setFilters: { + first: function( elem, i ) { + return i === 0; + }, + + last: function( elem, i, match, array ) { + return i === array.length - 1; + }, + + even: function( elem, i ) { + return i % 2 === 0; + }, + + odd: function( elem, i ) { + return i % 2 === 1; + }, + + lt: function( elem, i, match ) { + return i < match[3] - 0; + }, + + gt: function( elem, i, match ) { + return i > match[3] - 0; + }, + + nth: function( elem, i, match ) { + return match[3] - 0 === i; + }, + + eq: function( elem, i, match ) { + return match[3] - 0 === i; + } + }, + filter: { + PSEUDO: function( elem, match, i, array ) { + var name = match[1], + filter = Expr.filters[ name ]; + + if ( filter ) { + return filter( elem, i, match, array ); + + } else if ( name === "contains" ) { + return (elem.textContent || elem.innerText || Sizzle.getText([ elem ]) || "").indexOf(match[3]) >= 0; + + } else if ( name === "not" ) { + var not = match[3]; + + for ( var j = 0, l = not.length; j < l; j++ ) { + if ( not[j] === elem ) { + return false; + } + } + + return true; + + } else { + Sizzle.error( name ); + } + }, + + CHILD: function( elem, match ) { + var type = match[1], + node = elem; + + switch ( type ) { + case "only": + case "first": + while ( (node = node.previousSibling) ) { + if ( node.nodeType === 1 ) { + return false; + } + } + + if ( type === "first" ) { + return true; + } + + node = elem; + + case "last": + while ( (node = node.nextSibling) ) { + if ( node.nodeType === 1 ) { + return false; + } + } + + return true; + + case "nth": + var first = match[2], + last = match[3]; + + if ( first === 1 && last === 0 ) { + return true; + } + + var doneName = match[0], + parent = elem.parentNode; + + if ( parent && (parent.sizcache !== doneName || !elem.nodeIndex) ) { + var count = 0; + + for ( node = parent.firstChild; node; node = node.nextSibling ) { + if ( node.nodeType === 1 ) { + node.nodeIndex = ++count; + } + } + + parent.sizcache = doneName; + } + + var diff = elem.nodeIndex - last; + + if ( first === 0 ) { + return diff === 0; + + } else { + return ( diff % first === 0 && diff / first >= 0 ); + } + } + }, + + ID: function( elem, match ) { + return elem.nodeType === 1 && elem.getAttribute("id") === match; + }, + + TAG: function( elem, match ) { + return (match === "*" && elem.nodeType === 1) || elem.nodeName.toLowerCase() === match; + }, + + CLASS: function( elem, match ) { + return (" " + (elem.className || elem.getAttribute("class")) + " ") + .indexOf( match ) > -1; + }, + + ATTR: function( elem, match ) { + var name = match[1], + result = Expr.attrHandle[ name ] ? + Expr.attrHandle[ name ]( elem ) : + elem[ name ] != null ? + elem[ name ] : + elem.getAttribute( name ), + value = result + "", + type = match[2], + check = match[4]; + + return result == null ? + type === "!=" : + type === "=" ? + value === check : + type === "*=" ? + value.indexOf(check) >= 0 : + type === "~=" ? + (" " + value + " ").indexOf(check) >= 0 : + !check ? + value && result !== false : + type === "!=" ? + value !== check : + type === "^=" ? + value.indexOf(check) === 0 : + type === "$=" ? + value.substr(value.length - check.length) === check : + type === "|=" ? + value === check || value.substr(0, check.length + 1) === check + "-" : + false; + }, + + POS: function( elem, match, i, array ) { + var name = match[2], + filter = Expr.setFilters[ name ]; + + if ( filter ) { + return filter( elem, i, match, array ); + } + } + } +}; + +var origPOS = Expr.match.POS, + fescape = function(all, num){ + return "\\" + (num - 0 + 1); + }; + +for ( var type in Expr.match ) { + Expr.match[ type ] = new RegExp( Expr.match[ type ].source + (/(?![^\[]*\])(?![^\(]*\))/.source) ); + Expr.leftMatch[ type ] = new RegExp( /(^(?:.|\r|\n)*?)/.source + Expr.match[ type ].source.replace(/\\(\d+)/g, fescape) ); +} + +var makeArray = function( array, results ) { + array = Array.prototype.slice.call( array, 0 ); + + if ( results ) { + results.push.apply( results, array ); + return results; + } + + return array; +}; + +// Perform a simple check to determine if the browser is capable of +// converting a NodeList to an array using builtin methods. +// Also verifies that the returned array holds DOM nodes +// (which is not the case in the Blackberry browser) +try { + Array.prototype.slice.call( document.documentElement.childNodes, 0 )[0].nodeType; + +// Provide a fallback method if it does not work +} catch( e ) { + makeArray = function( array, results ) { + var i = 0, + ret = results || []; + + if ( toString.call(array) === "[object Array]" ) { + Array.prototype.push.apply( ret, array ); + + } else { + if ( typeof array.length === "number" ) { + for ( var l = array.length; i < l; i++ ) { + ret.push( array[i] ); + } + + } else { + for ( ; array[i]; i++ ) { + ret.push( array[i] ); + } + } + } + + return ret; + }; +} + +var sortOrder, siblingCheck; + +if ( document.documentElement.compareDocumentPosition ) { + sortOrder = function( a, b ) { + if ( a === b ) { + hasDuplicate = true; + return 0; + } + + if ( !a.compareDocumentPosition || !b.compareDocumentPosition ) { + return a.compareDocumentPosition ? -1 : 1; + } + + return a.compareDocumentPosition(b) & 4 ? -1 : 1; + }; + +} else { + sortOrder = function( a, b ) { + // The nodes are identical, we can exit early + if ( a === b ) { + hasDuplicate = true; + return 0; + + // Fallback to using sourceIndex (in IE) if it's available on both nodes + } else if ( a.sourceIndex && b.sourceIndex ) { + return a.sourceIndex - b.sourceIndex; + } + + var al, bl, + ap = [], + bp = [], + aup = a.parentNode, + bup = b.parentNode, + cur = aup; + + // If the nodes are siblings (or identical) we can do a quick check + if ( aup === bup ) { + return siblingCheck( a, b ); + + // If no parents were found then the nodes are disconnected + } else if ( !aup ) { + return -1; + + } else if ( !bup ) { + return 1; + } + + // Otherwise they're somewhere else in the tree so we need + // to build up a full list of the parentNodes for comparison + while ( cur ) { + ap.unshift( cur ); + cur = cur.parentNode; + } + + cur = bup; + + while ( cur ) { + bp.unshift( cur ); + cur = cur.parentNode; + } + + al = ap.length; + bl = bp.length; + + // Start walking down the tree looking for a discrepancy + for ( var i = 0; i < al && i < bl; i++ ) { + if ( ap[i] !== bp[i] ) { + return siblingCheck( ap[i], bp[i] ); + } + } + + // We ended someplace up the tree so do a sibling check + return i === al ? + siblingCheck( a, bp[i], -1 ) : + siblingCheck( ap[i], b, 1 ); + }; + + siblingCheck = function( a, b, ret ) { + if ( a === b ) { + return ret; + } + + var cur = a.nextSibling; + + while ( cur ) { + if ( cur === b ) { + return -1; + } + + cur = cur.nextSibling; + } + + return 1; + }; +} + +// Utility function for retreiving the text value of an array of DOM nodes +Sizzle.getText = function( elems ) { + var ret = "", elem; + + for ( var i = 0; elems[i]; i++ ) { + elem = elems[i]; + + // Get the text from text nodes and CDATA nodes + if ( elem.nodeType === 3 || elem.nodeType === 4 ) { + ret += elem.nodeValue; + + // Traverse everything else, except comment nodes + } else if ( elem.nodeType !== 8 ) { + ret += Sizzle.getText( elem.childNodes ); + } + } + + return ret; +}; + +// Check to see if the browser returns elements by name when +// querying by getElementById (and provide a workaround) +(function(){ + // We're going to inject a fake input element with a specified name + var form = document.createElement("div"), + id = "script" + (new Date()).getTime(), + root = document.documentElement; + + form.innerHTML = ""; + + // Inject it into the root element, check its status, and remove it quickly + root.insertBefore( form, root.firstChild ); + + // The workaround has to do additional checks after a getElementById + // Which slows things down for other browsers (hence the branching) + if ( document.getElementById( id ) ) { + Expr.find.ID = function( match, context, isXML ) { + if ( typeof context.getElementById !== "undefined" && !isXML ) { + var m = context.getElementById(match[1]); + + return m ? + m.id === match[1] || typeof m.getAttributeNode !== "undefined" && m.getAttributeNode("id").nodeValue === match[1] ? + [m] : + undefined : + []; + } + }; + + Expr.filter.ID = function( elem, match ) { + var node = typeof elem.getAttributeNode !== "undefined" && elem.getAttributeNode("id"); + + return elem.nodeType === 1 && node && node.nodeValue === match; + }; + } + + root.removeChild( form ); + + // release memory in IE + root = form = null; +})(); + +(function(){ + // Check to see if the browser returns only elements + // when doing getElementsByTagName("*") + + // Create a fake element + var div = document.createElement("div"); + div.appendChild( document.createComment("") ); + + // Make sure no comments are found + if ( div.getElementsByTagName("*").length > 0 ) { + Expr.find.TAG = function( match, context ) { + var results = context.getElementsByTagName( match[1] ); + + // Filter out possible comments + if ( match[1] === "*" ) { + var tmp = []; + + for ( var i = 0; results[i]; i++ ) { + if ( results[i].nodeType === 1 ) { + tmp.push( results[i] ); + } + } + + results = tmp; + } + + return results; + }; + } + + // Check to see if an attribute returns normalized href attributes + div.innerHTML = ""; + + if ( div.firstChild && typeof div.firstChild.getAttribute !== "undefined" && + div.firstChild.getAttribute("href") !== "#" ) { + + Expr.attrHandle.href = function( elem ) { + return elem.getAttribute( "href", 2 ); + }; + } + + // release memory in IE + div = null; +})(); + +if ( document.querySelectorAll ) { + (function(){ + var oldSizzle = Sizzle, + div = document.createElement("div"), + id = "__sizzle__"; + + div.innerHTML = "

    "; + + // Safari can't handle uppercase or unicode characters when + // in quirks mode. + if ( div.querySelectorAll && div.querySelectorAll(".TEST").length === 0 ) { + return; + } + + Sizzle = function( query, context, extra, seed ) { + context = context || document; + + // Only use querySelectorAll on non-XML documents + // (ID selectors don't work in non-HTML documents) + if ( !seed && !Sizzle.isXML(context) ) { + // See if we find a selector to speed up + var match = /^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec( query ); + + if ( match && (context.nodeType === 1 || context.nodeType === 9) ) { + // Speed-up: Sizzle("TAG") + if ( match[1] ) { + return makeArray( context.getElementsByTagName( query ), extra ); + + // Speed-up: Sizzle(".CLASS") + } else if ( match[2] && Expr.find.CLASS && context.getElementsByClassName ) { + return makeArray( context.getElementsByClassName( match[2] ), extra ); + } + } + + if ( context.nodeType === 9 ) { + // Speed-up: Sizzle("body") + // The body element only exists once, optimize finding it + if ( query === "body" && context.body ) { + return makeArray( [ context.body ], extra ); + + // Speed-up: Sizzle("#ID") + } else if ( match && match[3] ) { + var elem = context.getElementById( match[3] ); + + // Check parentNode to catch when Blackberry 4.6 returns + // nodes that are no longer in the document #6963 + if ( elem && elem.parentNode ) { + // Handle the case where IE and Opera return items + // by name instead of ID + if ( elem.id === match[3] ) { + return makeArray( [ elem ], extra ); + } + + } else { + return makeArray( [], extra ); + } + } + + try { + return makeArray( context.querySelectorAll(query), extra ); + } catch(qsaError) {} + + // qSA works strangely on Element-rooted queries + // We can work around this by specifying an extra ID on the root + // and working up from there (Thanks to Andrew Dupont for the technique) + // IE 8 doesn't work on object elements + } else if ( context.nodeType === 1 && context.nodeName.toLowerCase() !== "object" ) { + var oldContext = context, + old = context.getAttribute( "id" ), + nid = old || id, + hasParent = context.parentNode, + relativeHierarchySelector = /^\s*[+~]/.test( query ); + + if ( !old ) { + context.setAttribute( "id", nid ); + } else { + nid = nid.replace( /'/g, "\\$&" ); + } + if ( relativeHierarchySelector && hasParent ) { + context = context.parentNode; + } + + try { + if ( !relativeHierarchySelector || hasParent ) { + return makeArray( context.querySelectorAll( "[id='" + nid + "'] " + query ), extra ); + } + + } catch(pseudoError) { + } finally { + if ( !old ) { + oldContext.removeAttribute( "id" ); + } + } + } + } + + return oldSizzle(query, context, extra, seed); + }; + + for ( var prop in oldSizzle ) { + Sizzle[ prop ] = oldSizzle[ prop ]; + } + + // release memory in IE + div = null; + })(); +} + +(function(){ + var html = document.documentElement, + matches = html.matchesSelector || html.mozMatchesSelector || html.webkitMatchesSelector || html.msMatchesSelector; + + if ( matches ) { + // Check to see if it's possible to do matchesSelector + // on a disconnected node (IE 9 fails this) + var disconnectedMatch = !matches.call( document.createElement( "div" ), "div" ), + pseudoWorks = false; + + try { + // This should fail with an exception + // Gecko does not error, returns false instead + matches.call( document.documentElement, "[test!='']:sizzle" ); + + } catch( pseudoError ) { + pseudoWorks = true; + } + + Sizzle.matchesSelector = function( node, expr ) { + // Make sure that attribute selectors are quoted + expr = expr.replace(/\=\s*([^'"\]]*)\s*\]/g, "='$1']"); + + if ( !Sizzle.isXML( node ) ) { + try { + if ( pseudoWorks || !Expr.match.PSEUDO.test( expr ) && !/!=/.test( expr ) ) { + var ret = matches.call( node, expr ); + + // IE 9's matchesSelector returns false on disconnected nodes + if ( ret || !disconnectedMatch || + // As well, disconnected nodes are said to be in a document + // fragment in IE 9, so check for that + node.document && node.document.nodeType !== 11 ) { + return ret; + } + } + } catch(e) {} + } + + return Sizzle(expr, null, null, [node]).length > 0; + }; + } +})(); + +(function(){ + var div = document.createElement("div"); + + div.innerHTML = "
    "; + + // Opera can't find a second classname (in 9.6) + // Also, make sure that getElementsByClassName actually exists + if ( !div.getElementsByClassName || div.getElementsByClassName("e").length === 0 ) { + return; + } + + // Safari caches class attributes, doesn't catch changes (in 3.2) + div.lastChild.className = "e"; + + if ( div.getElementsByClassName("e").length === 1 ) { + return; + } + + Expr.order.splice(1, 0, "CLASS"); + Expr.find.CLASS = function( match, context, isXML ) { + if ( typeof context.getElementsByClassName !== "undefined" && !isXML ) { + return context.getElementsByClassName(match[1]); + } + }; + + // release memory in IE + div = null; +})(); + +function dirNodeCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) { + for ( var i = 0, l = checkSet.length; i < l; i++ ) { + var elem = checkSet[i]; + + if ( elem ) { + var match = false; + + elem = elem[dir]; + + while ( elem ) { + if ( elem.sizcache === doneName ) { + match = checkSet[elem.sizset]; + break; + } + + if ( elem.nodeType === 1 && !isXML ){ + elem.sizcache = doneName; + elem.sizset = i; + } + + if ( elem.nodeName.toLowerCase() === cur ) { + match = elem; + break; + } + + elem = elem[dir]; + } + + checkSet[i] = match; + } + } +} + +function dirCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) { + for ( var i = 0, l = checkSet.length; i < l; i++ ) { + var elem = checkSet[i]; + + if ( elem ) { + var match = false; + + elem = elem[dir]; + + while ( elem ) { + if ( elem.sizcache === doneName ) { + match = checkSet[elem.sizset]; + break; + } + + if ( elem.nodeType === 1 ) { + if ( !isXML ) { + elem.sizcache = doneName; + elem.sizset = i; + } + + if ( typeof cur !== "string" ) { + if ( elem === cur ) { + match = true; + break; + } + + } else if ( Sizzle.filter( cur, [elem] ).length > 0 ) { + match = elem; + break; + } + } + + elem = elem[dir]; + } + + checkSet[i] = match; + } + } +} + +if ( document.documentElement.contains ) { + Sizzle.contains = function( a, b ) { + return a !== b && (a.contains ? a.contains(b) : true); + }; + +} else if ( document.documentElement.compareDocumentPosition ) { + Sizzle.contains = function( a, b ) { + return !!(a.compareDocumentPosition(b) & 16); + }; + +} else { + Sizzle.contains = function() { + return false; + }; +} + +Sizzle.isXML = function( elem ) { + // documentElement is verified for cases where it doesn't yet exist + // (such as loading iframes in IE - #4833) + var documentElement = (elem ? elem.ownerDocument || elem : 0).documentElement; + + return documentElement ? documentElement.nodeName !== "HTML" : false; +}; + +var posProcess = function( selector, context ) { + var match, + tmpSet = [], + later = "", + root = context.nodeType ? [context] : context; + + // Position selectors must be done after the filter + // And so must :not(positional) so we move all PSEUDOs to the end + while ( (match = Expr.match.PSEUDO.exec( selector )) ) { + later += match[0]; + selector = selector.replace( Expr.match.PSEUDO, "" ); + } + + selector = Expr.relative[selector] ? selector + "*" : selector; + + for ( var i = 0, l = root.length; i < l; i++ ) { + Sizzle( selector, root[i], tmpSet ); + } + + return Sizzle.filter( later, tmpSet ); +}; + +// EXPOSE +jQuery.find = Sizzle; +jQuery.expr = Sizzle.selectors; +jQuery.expr[":"] = jQuery.expr.filters; +jQuery.unique = Sizzle.uniqueSort; +jQuery.text = Sizzle.getText; +jQuery.isXMLDoc = Sizzle.isXML; +jQuery.contains = Sizzle.contains; + + +})(); + + +var runtil = /Until$/, + rparentsprev = /^(?:parents|prevUntil|prevAll)/, + // Note: This RegExp should be improved, or likely pulled from Sizzle + rmultiselector = /,/, + isSimple = /^.[^:#\[\.,]*$/, + slice = Array.prototype.slice, + POS = jQuery.expr.match.POS, + // methods guaranteed to produce a unique set when starting from a unique set + guaranteedUnique = { + children: true, + contents: true, + next: true, + prev: true + }; + +jQuery.fn.extend({ + find: function( selector ) { + var self = this, + i, l; + + if ( typeof selector !== "string" ) { + return jQuery( selector ).filter(function() { + for ( i = 0, l = self.length; i < l; i++ ) { + if ( jQuery.contains( self[ i ], this ) ) { + return true; + } + } + }); + } + + var ret = this.pushStack( "", "find", selector ), + length, n, r; + + for ( i = 0, l = this.length; i < l; i++ ) { + length = ret.length; + jQuery.find( selector, this[i], ret ); + + if ( i > 0 ) { + // Make sure that the results are unique + for ( n = length; n < ret.length; n++ ) { + for ( r = 0; r < length; r++ ) { + if ( ret[r] === ret[n] ) { + ret.splice(n--, 1); + break; + } + } + } + } + } + + return ret; + }, + + has: function( target ) { + var targets = jQuery( target ); + return this.filter(function() { + for ( var i = 0, l = targets.length; i < l; i++ ) { + if ( jQuery.contains( this, targets[i] ) ) { + return true; + } + } + }); + }, + + not: function( selector ) { + return this.pushStack( winnow(this, selector, false), "not", selector); + }, + + filter: function( selector ) { + return this.pushStack( winnow(this, selector, true), "filter", selector ); + }, + + is: function( selector ) { + return !!selector && ( typeof selector === "string" ? + jQuery.filter( selector, this ).length > 0 : + this.filter( selector ).length > 0 ); + }, + + closest: function( selectors, context ) { + var ret = [], i, l, cur = this[0]; + + // Array + if ( jQuery.isArray( selectors ) ) { + var match, selector, + matches = {}, + level = 1; + + if ( cur && selectors.length ) { + for ( i = 0, l = selectors.length; i < l; i++ ) { + selector = selectors[i]; + + if ( !matches[ selector ] ) { + matches[ selector ] = POS.test( selector ) ? + jQuery( selector, context || this.context ) : + selector; + } + } + + while ( cur && cur.ownerDocument && cur !== context ) { + for ( selector in matches ) { + match = matches[ selector ]; + + if ( match.jquery ? match.index( cur ) > -1 : jQuery( cur ).is( match ) ) { + ret.push({ selector: selector, elem: cur, level: level }); + } + } + + cur = cur.parentNode; + level++; + } + } + + return ret; + } + + // String + var pos = POS.test( selectors ) || typeof selectors !== "string" ? + jQuery( selectors, context || this.context ) : + 0; + + for ( i = 0, l = this.length; i < l; i++ ) { + cur = this[i]; + + while ( cur ) { + if ( pos ? pos.index(cur) > -1 : jQuery.find.matchesSelector(cur, selectors) ) { + ret.push( cur ); + break; + + } else { + cur = cur.parentNode; + if ( !cur || !cur.ownerDocument || cur === context || cur.nodeType === 11 ) { + break; + } + } + } + } + + ret = ret.length > 1 ? jQuery.unique( ret ) : ret; + + return this.pushStack( ret, "closest", selectors ); + }, + + // Determine the position of an element within + // the matched set of elements + index: function( elem ) { + if ( !elem || typeof elem === "string" ) { + return jQuery.inArray( this[0], + // If it receives a string, the selector is used + // If it receives nothing, the siblings are used + elem ? jQuery( elem ) : this.parent().children() ); + } + // Locate the position of the desired element + return jQuery.inArray( + // If it receives a jQuery object, the first element is used + elem.jquery ? elem[0] : elem, this ); + }, + + add: function( selector, context ) { + var set = typeof selector === "string" ? + jQuery( selector, context ) : + jQuery.makeArray( selector && selector.nodeType ? [ selector ] : selector ), + all = jQuery.merge( this.get(), set ); + + return this.pushStack( isDisconnected( set[0] ) || isDisconnected( all[0] ) ? + all : + jQuery.unique( all ) ); + }, + + andSelf: function() { + return this.add( this.prevObject ); + } +}); + +// A painfully simple check to see if an element is disconnected +// from a document (should be improved, where feasible). +function isDisconnected( node ) { + return !node || !node.parentNode || node.parentNode.nodeType === 11; +} + +jQuery.each({ + parent: function( elem ) { + var parent = elem.parentNode; + return parent && parent.nodeType !== 11 ? parent : null; + }, + parents: function( elem ) { + return jQuery.dir( elem, "parentNode" ); + }, + parentsUntil: function( elem, i, until ) { + return jQuery.dir( elem, "parentNode", until ); + }, + next: function( elem ) { + return jQuery.nth( elem, 2, "nextSibling" ); + }, + prev: function( elem ) { + return jQuery.nth( elem, 2, "previousSibling" ); + }, + nextAll: function( elem ) { + return jQuery.dir( elem, "nextSibling" ); + }, + prevAll: function( elem ) { + return jQuery.dir( elem, "previousSibling" ); + }, + nextUntil: function( elem, i, until ) { + return jQuery.dir( elem, "nextSibling", until ); + }, + prevUntil: function( elem, i, until ) { + return jQuery.dir( elem, "previousSibling", until ); + }, + siblings: function( elem ) { + return jQuery.sibling( elem.parentNode.firstChild, elem ); + }, + children: function( elem ) { + return jQuery.sibling( elem.firstChild ); + }, + contents: function( elem ) { + return jQuery.nodeName( elem, "iframe" ) ? + elem.contentDocument || elem.contentWindow.document : + jQuery.makeArray( elem.childNodes ); + } +}, function( name, fn ) { + jQuery.fn[ name ] = function( until, selector ) { + var ret = jQuery.map( this, fn, until ), + // The variable 'args' was introduced in + // https://github.com/jquery/jquery/commit/52a0238 + // to work around a bug in Chrome 10 (Dev) and should be removed when the bug is fixed. + // http://code.google.com/p/v8/issues/detail?id=1050 + args = slice.call(arguments); + + if ( !runtil.test( name ) ) { + selector = until; + } + + if ( selector && typeof selector === "string" ) { + ret = jQuery.filter( selector, ret ); + } + + ret = this.length > 1 && !guaranteedUnique[ name ] ? jQuery.unique( ret ) : ret; + + if ( (this.length > 1 || rmultiselector.test( selector )) && rparentsprev.test( name ) ) { + ret = ret.reverse(); + } + + return this.pushStack( ret, name, args.join(",") ); + }; +}); + +jQuery.extend({ + filter: function( expr, elems, not ) { + if ( not ) { + expr = ":not(" + expr + ")"; + } + + return elems.length === 1 ? + jQuery.find.matchesSelector(elems[0], expr) ? [ elems[0] ] : [] : + jQuery.find.matches(expr, elems); + }, + + dir: function( elem, dir, until ) { + var matched = [], + cur = elem[ dir ]; + + while ( cur && cur.nodeType !== 9 && (until === undefined || cur.nodeType !== 1 || !jQuery( cur ).is( until )) ) { + if ( cur.nodeType === 1 ) { + matched.push( cur ); + } + cur = cur[dir]; + } + return matched; + }, + + nth: function( cur, result, dir, elem ) { + result = result || 1; + var num = 0; + + for ( ; cur; cur = cur[dir] ) { + if ( cur.nodeType === 1 && ++num === result ) { + break; + } + } + + return cur; + }, + + sibling: function( n, elem ) { + var r = []; + + for ( ; n; n = n.nextSibling ) { + if ( n.nodeType === 1 && n !== elem ) { + r.push( n ); + } + } + + return r; + } +}); + +// Implement the identical functionality for filter and not +function winnow( elements, qualifier, keep ) { + + // Can't pass null or undefined to indexOf in Firefox 4 + // Set to 0 to skip string check + qualifier = qualifier || 0; + + if ( jQuery.isFunction( qualifier ) ) { + return jQuery.grep(elements, function( elem, i ) { + var retVal = !!qualifier.call( elem, i, elem ); + return retVal === keep; + }); + + } else if ( qualifier.nodeType ) { + return jQuery.grep(elements, function( elem, i ) { + return (elem === qualifier) === keep; + }); + + } else if ( typeof qualifier === "string" ) { + var filtered = jQuery.grep(elements, function( elem ) { + return elem.nodeType === 1; + }); + + if ( isSimple.test( qualifier ) ) { + return jQuery.filter(qualifier, filtered, !keep); + } else { + qualifier = jQuery.filter( qualifier, filtered ); + } + } + + return jQuery.grep(elements, function( elem, i ) { + return (jQuery.inArray( elem, qualifier ) >= 0) === keep; + }); +} + + + + +var rinlinejQuery = / jQuery\d+="(?:\d+|null)"/g, + rleadingWhitespace = /^\s+/, + rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig, + rtagName = /<([\w:]+)/, + rtbody = /", "" ], + legend: [ 1, "
    ", "
    " ], + thead: [ 1, "", "
    " ], + tr: [ 2, "", "
    " ], + td: [ 3, "", "
    " ], + col: [ 2, "", "
    " ], + area: [ 1, "", "" ], + _default: [ 0, "", "" ] + }; + +wrapMap.optgroup = wrapMap.option; +wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead; +wrapMap.th = wrapMap.td; + +// IE can't serialize and + + + + + + diff --git a/node_modules/express/node_modules/debug/example/wildcards.js b/node_modules/express/node_modules/debug/example/wildcards.js new file mode 100644 index 0000000..1fdac20 --- /dev/null +++ b/node_modules/express/node_modules/debug/example/wildcards.js @@ -0,0 +1,10 @@ + +var debug = { + foo: require('../')('test:foo'), + bar: require('../')('test:bar'), + baz: require('../')('test:baz') +}; + +debug.foo('foo') +debug.bar('bar') +debug.baz('baz') \ No newline at end of file diff --git a/node_modules/express/node_modules/debug/example/worker.js b/node_modules/express/node_modules/debug/example/worker.js new file mode 100644 index 0000000..7f6d288 --- /dev/null +++ b/node_modules/express/node_modules/debug/example/worker.js @@ -0,0 +1,22 @@ + +// DEBUG=* node example/worker +// DEBUG=worker:* node example/worker +// DEBUG=worker:a node example/worker +// DEBUG=worker:b node example/worker + +var a = require('../')('worker:a') + , b = require('../')('worker:b'); + +function work() { + a('doing lots of uninteresting work'); + setTimeout(work, Math.random() * 1000); +} + +work(); + +function workb() { + b('doing some work'); + setTimeout(workb, Math.random() * 2000); +} + +workb(); \ No newline at end of file diff --git a/node_modules/express/node_modules/debug/index.js b/node_modules/express/node_modules/debug/index.js new file mode 100644 index 0000000..e02c13b --- /dev/null +++ b/node_modules/express/node_modules/debug/index.js @@ -0,0 +1,5 @@ +if ('undefined' == typeof window) { + module.exports = require('./lib/debug'); +} else { + module.exports = require('./debug'); +} diff --git a/node_modules/express/node_modules/debug/lib/debug.js b/node_modules/express/node_modules/debug/lib/debug.js new file mode 100644 index 0000000..0b07aa1 --- /dev/null +++ b/node_modules/express/node_modules/debug/lib/debug.js @@ -0,0 +1,134 @@ +/** + * Module dependencies. + */ + +var tty = require('tty'); + +/** + * Expose `debug()` as the module. + */ + +module.exports = debug; + +/** + * Enabled debuggers. + */ + +var names = [] + , skips = []; + +(process.env.DEBUG || '') + .split(/[\s,]+/) + .forEach(function(name){ + name = name.replace('*', '.*?'); + if (name[0] === '-') { + skips.push(new RegExp('^' + name.substr(1) + '$')); + } else { + names.push(new RegExp('^' + name + '$')); + } + }); + +/** + * Colors. + */ + +var colors = [6, 2, 3, 4, 5, 1]; + +/** + * Previous debug() call. + */ + +var prev = {}; + +/** + * Previously assigned color. + */ + +var prevColor = 0; + +/** + * Is stdout a TTY? Colored output is disabled when `true`. + */ + +var isatty = tty.isatty(2); + +/** + * Select a color. + * + * @return {Number} + * @api private + */ + +function color() { + return colors[prevColor++ % colors.length]; +} + +/** + * Humanize the given `ms`. + * + * @param {Number} m + * @return {String} + * @api private + */ + +function humanize(ms) { + var sec = 1000 + , min = 60 * 1000 + , hour = 60 * min; + + if (ms >= hour) return (ms / hour).toFixed(1) + 'h'; + if (ms >= min) return (ms / min).toFixed(1) + 'm'; + if (ms >= sec) return (ms / sec | 0) + 's'; + return ms + 'ms'; +} + +/** + * Create a debugger with the given `name`. + * + * @param {String} name + * @return {Type} + * @api public + */ + +function debug(name) { + function disabled(){} + disabled.enabled = false; + + var match = skips.some(function(re){ + return re.test(name); + }); + + if (match) return disabled; + + match = names.some(function(re){ + return re.test(name); + }); + + if (!match) return disabled; + var c = color(); + + function colored(fmt) { + var curr = new Date; + var ms = curr - (prev[name] || curr); + prev[name] = curr; + + fmt = ' \u001b[9' + c + 'm' + name + ' ' + + '\u001b[3' + c + 'm\u001b[90m' + + fmt + '\u001b[3' + c + 'm' + + ' +' + humanize(ms) + '\u001b[0m'; + + console.error.apply(this, arguments); + } + + function plain(fmt) { + fmt = new Date().toUTCString() + + ' ' + name + ' ' + fmt; + console.error.apply(this, arguments); + } + + colored.enabled = plain.enabled = true; + + return isatty || process.env.DEBUG_COLORS + ? colored + : plain; +} diff --git a/node_modules/express/node_modules/debug/package.json b/node_modules/express/node_modules/debug/package.json new file mode 100644 index 0000000..9ef862c --- /dev/null +++ b/node_modules/express/node_modules/debug/package.json @@ -0,0 +1,41 @@ +{ + "name": "debug", + "version": "0.7.2", + "repository": { + "type": "git", + "url": "git://github.com/visionmedia/debug.git" + }, + "description": "small debugging utility", + "keywords": [ + "debug", + "log", + "debugger" + ], + "author": { + "name": "TJ Holowaychuk", + "email": "tj@vision-media.ca" + }, + "dependencies": {}, + "devDependencies": { + "mocha": "*" + }, + "main": "lib/debug.js", + "browserify": "debug.js", + "engines": { + "node": "*" + }, + "component": { + "scripts": { + "debug/index.js": "index.js", + "debug/debug.js": "debug.js" + } + }, + "readme": "\n# debug\n\n tiny node.js debugging utility modelled after node core's debugging technique.\n\n## Installation\n\n```\n$ npm install debug\n```\n\n## Usage\n\n With `debug` you simply invoke the exported function to generate your debug function, passing it a name which will determine if a noop function is returned, or a decorated `console.error`, so all of the `console` format string goodies you're used to work fine. A unique color is selected per-function for visibility.\n \nExample _app.js_:\n\n```js\nvar debug = require('debug')('http')\n , http = require('http')\n , name = 'My App';\n\n// fake app\n\ndebug('booting %s', name);\n\nhttp.createServer(function(req, res){\n debug(req.method + ' ' + req.url);\n res.end('hello\\n');\n}).listen(3000, function(){\n debug('listening');\n});\n\n// fake worker of some kind\n\nrequire('./worker');\n```\n\nExample _worker.js_:\n\n```js\nvar debug = require('debug')('worker');\n\nsetInterval(function(){\n debug('doing some work');\n}, 1000);\n```\n\n The __DEBUG__ environment variable is then used to enable these based on space or comma-delimited names. Here are some examples:\n\n ![debug http and worker](http://f.cl.ly/items/18471z1H402O24072r1J/Screenshot.png)\n\n ![debug worker](http://f.cl.ly/items/1X413v1a3M0d3C2c1E0i/Screenshot.png)\n\n## Millisecond diff\n\n When actively developing an application it can be useful to see when the time spent between one `debug()` call and the next. Suppose for example you invoke `debug()` before requesting a resource, and after as well, the \"+NNNms\" will show you how much time was spent between calls.\n\n ![](http://f.cl.ly/items/2i3h1d3t121M2Z1A3Q0N/Screenshot.png)\n\n When stdout is not a TTY, `Date#toUTCString()` is used, making it more useful for logging the debug information as shown below:\n \n ![](http://f.cl.ly/items/112H3i0e0o0P0a2Q2r11/Screenshot.png)\n\n## Conventions\n\n If you're using this in one or more of your libraries, you _should_ use the name of your library so that developers may toggle debugging as desired without guessing names. If you have more than one debuggers you _should_ prefix them with your library name and use \":\" to separate features. For example \"bodyParser\" from Connect would then be \"connect:bodyParser\". \n\n## Wildcards\n\n The \"*\" character may be used as a wildcard. Suppose for example your library has debuggers named \"connect:bodyParser\", \"connect:compress\", \"connect:session\", instead of listing all three with `DEBUG=connect:bodyParser,connect.compress,connect:session`, you may simply do `DEBUG=connect:*`, or to run everything using this module simply use `DEBUG=*`.\n\n You can also exclude specific debuggers by prefixing them with a \"-\" character. For example, `DEBUG=* -connect:*` would include all debuggers except those starting with \"connect:\".\n\n## Browser support\n\n Debug works in the browser as well, currently persisted by `localStorage`. For example if you have `worker:a` and `worker:b` as shown below, and wish to debug both type `debug.enable('worker:*')` in the console and refresh the page, this will remain until you disable with `debug.disable()`. \n\n```js\na = debug('worker:a');\nb = debug('worker:b');\n\nsetInterval(function(){\n a('doing some work');\n}, 1000);\n\nsetInterval(function(){\n a('doing some work');\n}, 1200);\n```\n\n## License \n\n(The MIT License)\n\nCopyright (c) 2011 TJ Holowaychuk <tj@vision-media.ca>\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n'Software'), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.", + "readmeFilename": "Readme.md", + "_id": "debug@0.7.2", + "dist": { + "shasum": "4081de446f4810503a6d516404ddeec76a3b512b" + }, + "_from": "debug@*", + "_resolved": "https://registry.npmjs.org/debug/-/debug-0.7.2.tgz" +} diff --git a/node_modules/express/node_modules/fresh/.npmignore b/node_modules/express/node_modules/fresh/.npmignore new file mode 100644 index 0000000..9daeafb --- /dev/null +++ b/node_modules/express/node_modules/fresh/.npmignore @@ -0,0 +1 @@ +test diff --git a/node_modules/express/node_modules/fresh/Makefile b/node_modules/express/node_modules/fresh/Makefile new file mode 100644 index 0000000..8e8640f --- /dev/null +++ b/node_modules/express/node_modules/fresh/Makefile @@ -0,0 +1,7 @@ + +test: + @./node_modules/.bin/mocha \ + --reporter spec \ + --require should + +.PHONY: test \ No newline at end of file diff --git a/node_modules/express/node_modules/fresh/Readme.md b/node_modules/express/node_modules/fresh/Readme.md new file mode 100644 index 0000000..273130d --- /dev/null +++ b/node_modules/express/node_modules/fresh/Readme.md @@ -0,0 +1,32 @@ + +# node-fresh + + HTTP response freshness testing + +## fresh(req, res) + + Check freshness of `req` and `res` headers. + + When the cache is "fresh" __true__ is returned, + otherwise __false__ is returned to indicate that + the cache is now stale. + +## Example: + +```js +var req = { 'if-none-match': 'tobi' }; +var res = { 'etag': 'luna' }; +fresh(req, res); +// => false + +var req = { 'if-none-match': 'tobi' }; +var res = { 'etag': 'tobi' }; +fresh(req, res); +// => true +``` + +## Installation + +``` +$ npm install fresh +``` \ No newline at end of file diff --git a/node_modules/express/node_modules/fresh/index.js b/node_modules/express/node_modules/fresh/index.js new file mode 100644 index 0000000..b2f4d41 --- /dev/null +++ b/node_modules/express/node_modules/fresh/index.js @@ -0,0 +1,49 @@ + +/** + * Expose `fresh()`. + */ + +module.exports = fresh; + +/** + * Check freshness of `req` and `res` headers. + * + * When the cache is "fresh" __true__ is returned, + * otherwise __false__ is returned to indicate that + * the cache is now stale. + * + * @param {Object} req + * @param {Object} res + * @return {Boolean} + * @api public + */ + +function fresh(req, res) { + // defaults + var etagMatches = true; + var notModified = true; + + // fields + var modifiedSince = req['if-modified-since']; + var noneMatch = req['if-none-match']; + var lastModified = res['last-modified']; + var etag = res['etag']; + + // unconditional request + if (!modifiedSince && !noneMatch) return false; + + // parse if-none-match + if (noneMatch) noneMatch = noneMatch.split(/ *, */); + + // if-none-match + if (noneMatch) etagMatches = ~noneMatch.indexOf(etag) || '*' == noneMatch[0]; + + // if-modified-since + if (modifiedSince) { + modifiedSince = new Date(modifiedSince); + lastModified = new Date(lastModified); + notModified = lastModified <= modifiedSince; + } + + return !! (etagMatches && notModified); +} \ No newline at end of file diff --git a/node_modules/express/node_modules/fresh/package.json b/node_modules/express/node_modules/fresh/package.json new file mode 100644 index 0000000..a016989 --- /dev/null +++ b/node_modules/express/node_modules/fresh/package.json @@ -0,0 +1,24 @@ +{ + "name": "fresh", + "author": { + "name": "TJ Holowaychuk", + "email": "tj@vision-media.ca", + "url": "http://tjholowaychuk.com" + }, + "description": "HTTP response freshness testing", + "version": "0.1.0", + "main": "index.js", + "dependencies": {}, + "devDependencies": { + "mocha": "*", + "should": "*" + }, + "readme": "\n# node-fresh\n\n HTTP response freshness testing\n\n## fresh(req, res)\n\n Check freshness of `req` and `res` headers.\n\n When the cache is \"fresh\" __true__ is returned,\n otherwise __false__ is returned to indicate that\n the cache is now stale.\n\n## Example:\n\n```js\nvar req = { 'if-none-match': 'tobi' };\nvar res = { 'etag': 'luna' };\nfresh(req, res);\n// => false\n\nvar req = { 'if-none-match': 'tobi' };\nvar res = { 'etag': 'tobi' };\nfresh(req, res);\n// => true\n```\n\n## Installation\n\n```\n$ npm install fresh\n```", + "readmeFilename": "Readme.md", + "_id": "fresh@0.1.0", + "dist": { + "shasum": "937b93919dcc410458065a453efa499f326a960b" + }, + "_from": "fresh@0.1.0", + "_resolved": "https://registry.npmjs.org/fresh/-/fresh-0.1.0.tgz" +} diff --git a/node_modules/express/node_modules/methods/index.js b/node_modules/express/node_modules/methods/index.js new file mode 100644 index 0000000..297d022 --- /dev/null +++ b/node_modules/express/node_modules/methods/index.js @@ -0,0 +1,26 @@ + +module.exports = [ + 'get' + , 'post' + , 'put' + , 'head' + , 'delete' + , 'options' + , 'trace' + , 'copy' + , 'lock' + , 'mkcol' + , 'move' + , 'propfind' + , 'proppatch' + , 'unlock' + , 'report' + , 'mkactivity' + , 'checkout' + , 'merge' + , 'm-search' + , 'notify' + , 'subscribe' + , 'unsubscribe' + , 'patch' +]; \ No newline at end of file diff --git a/node_modules/express/node_modules/methods/package.json b/node_modules/express/node_modules/methods/package.json new file mode 100644 index 0000000..ad2fea0 --- /dev/null +++ b/node_modules/express/node_modules/methods/package.json @@ -0,0 +1,24 @@ +{ + "name": "methods", + "version": "0.0.1", + "description": "HTTP methods that node supports", + "main": "index.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "keywords": [ + "http", + "methods" + ], + "author": { + "name": "TJ Holowaychuk" + }, + "license": "MIT", + "_id": "methods@0.0.1", + "readme": "ERROR: No README.md file found!", + "dist": { + "shasum": "4b1a57bc0cf675cfd22e17528ae3917736f0d6b2" + }, + "_from": "methods@0.0.1", + "_resolved": "https://registry.npmjs.org/methods/-/methods-0.0.1.tgz" +} diff --git a/node_modules/express/node_modules/mkdirp/.gitignore.orig b/node_modules/express/node_modules/mkdirp/.gitignore.orig new file mode 100644 index 0000000..9303c34 --- /dev/null +++ b/node_modules/express/node_modules/mkdirp/.gitignore.orig @@ -0,0 +1,2 @@ +node_modules/ +npm-debug.log \ No newline at end of file diff --git a/node_modules/express/node_modules/mkdirp/.gitignore.rej b/node_modules/express/node_modules/mkdirp/.gitignore.rej new file mode 100644 index 0000000..69244ff --- /dev/null +++ b/node_modules/express/node_modules/mkdirp/.gitignore.rej @@ -0,0 +1,5 @@ +--- /dev/null ++++ .gitignore +@@ -0,0 +1,2 @@ ++node_modules/ ++npm-debug.log \ No newline at end of file diff --git a/node_modules/express/node_modules/mkdirp/.npmignore b/node_modules/express/node_modules/mkdirp/.npmignore new file mode 100644 index 0000000..9303c34 --- /dev/null +++ b/node_modules/express/node_modules/mkdirp/.npmignore @@ -0,0 +1,2 @@ +node_modules/ +npm-debug.log \ No newline at end of file diff --git a/node_modules/express/node_modules/mkdirp/.travis.yml b/node_modules/express/node_modules/mkdirp/.travis.yml new file mode 100644 index 0000000..f1d0f13 --- /dev/null +++ b/node_modules/express/node_modules/mkdirp/.travis.yml @@ -0,0 +1,4 @@ +language: node_js +node_js: + - 0.4 + - 0.6 diff --git a/node_modules/express/node_modules/mkdirp/LICENSE b/node_modules/express/node_modules/mkdirp/LICENSE new file mode 100644 index 0000000..432d1ae --- /dev/null +++ b/node_modules/express/node_modules/mkdirp/LICENSE @@ -0,0 +1,21 @@ +Copyright 2010 James Halliday (mail@substack.net) + +This project is free software released under the MIT/X11 license: + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/node_modules/express/node_modules/mkdirp/README.markdown b/node_modules/express/node_modules/mkdirp/README.markdown new file mode 100644 index 0000000..40de04f --- /dev/null +++ b/node_modules/express/node_modules/mkdirp/README.markdown @@ -0,0 +1,61 @@ +mkdirp +====== + +Like `mkdir -p`, but in node.js! + +[![build status](https://secure.travis-ci.org/substack/node-mkdirp.png)](http://travis-ci.org/substack/node-mkdirp) + +example +======= + +pow.js +------ + var mkdirp = require('mkdirp'); + + mkdirp('/tmp/foo/bar/baz', function (err) { + if (err) console.error(err) + else console.log('pow!') + }); + +Output + pow! + +And now /tmp/foo/bar/baz exists, huzzah! + +methods +======= + +var mkdirp = require('mkdirp'); + +mkdirp(dir, mode, cb) +--------------------- + +Create a new directory and any necessary subdirectories at `dir` with octal +permission string `mode`. + +If `mode` isn't specified, it defaults to `0777 & (~process.umask())`. + +`cb(err, made)` fires with the error or the first directory `made` +that had to be created, if any. + +mkdirp.sync(dir, mode) +---------------------- + +Synchronously create a new directory and any necessary subdirectories at `dir` +with octal permission string `mode`. + +If `mode` isn't specified, it defaults to `0777 & (~process.umask())`. + +Returns the first directory that had to be created, if any. + +install +======= + +With [npm](http://npmjs.org) do: + + npm install mkdirp + +license +======= + +MIT/X11 diff --git a/node_modules/express/node_modules/mkdirp/examples/pow.js b/node_modules/express/node_modules/mkdirp/examples/pow.js new file mode 100644 index 0000000..e692421 --- /dev/null +++ b/node_modules/express/node_modules/mkdirp/examples/pow.js @@ -0,0 +1,6 @@ +var mkdirp = require('mkdirp'); + +mkdirp('/tmp/foo/bar/baz', function (err) { + if (err) console.error(err) + else console.log('pow!') +}); diff --git a/node_modules/express/node_modules/mkdirp/examples/pow.js.orig b/node_modules/express/node_modules/mkdirp/examples/pow.js.orig new file mode 100644 index 0000000..7741462 --- /dev/null +++ b/node_modules/express/node_modules/mkdirp/examples/pow.js.orig @@ -0,0 +1,6 @@ +var mkdirp = require('mkdirp'); + +mkdirp('/tmp/foo/bar/baz', 0755, function (err) { + if (err) console.error(err) + else console.log('pow!') +}); diff --git a/node_modules/express/node_modules/mkdirp/examples/pow.js.rej b/node_modules/express/node_modules/mkdirp/examples/pow.js.rej new file mode 100644 index 0000000..81e7f43 --- /dev/null +++ b/node_modules/express/node_modules/mkdirp/examples/pow.js.rej @@ -0,0 +1,19 @@ +--- examples/pow.js ++++ examples/pow.js +@@ -1,6 +1,15 @@ +-var mkdirp = require('mkdirp').mkdirp; ++var mkdirp = require('../').mkdirp, ++ mkdirpSync = require('../').mkdirpSync; + + mkdirp('/tmp/foo/bar/baz', 0755, function (err) { + if (err) console.error(err) + else console.log('pow!') + }); ++ ++try { ++ mkdirpSync('/tmp/bar/foo/baz', 0755); ++ console.log('double pow!'); ++} ++catch (ex) { ++ console.log(ex); ++} \ No newline at end of file diff --git a/node_modules/express/node_modules/mkdirp/index.js b/node_modules/express/node_modules/mkdirp/index.js new file mode 100644 index 0000000..874b310 --- /dev/null +++ b/node_modules/express/node_modules/mkdirp/index.js @@ -0,0 +1,94 @@ +var path = require('path'); +var fs = require('fs'); + +module.exports = mkdirP.mkdirp = mkdirP.mkdirP = mkdirP; + +function mkdirP (p, mode, f, made) { + if (typeof mode === 'function' || mode === undefined) { + f = mode; + mode = 0777 & (~process.umask()); + } + if (!made) made = null; + + var cb = f || function () {}; + if (typeof mode === 'string') mode = parseInt(mode, 8); + p = path.resolve(p); + + fs.mkdir(p, mode, function (er) { + if (!er) { + made = made || p; + return cb(null, made); + } + switch (er.code) { + case 'ENOENT': + mkdirP(path.dirname(p), mode, function (er, made) { + if (er) cb(er, made); + else mkdirP(p, mode, cb, made); + }); + break; + + case 'EISDIR': + case 'EPERM': + // Operation not permitted or already is a dir. + // This is the error you get when trying to mkdir('c:/') + // on windows, or mkdir('/') on unix. Make sure it's a + // dir by falling through to the EEXIST case. + case 'EROFS': + // a read-only file system. + // However, the dir could already exist, in which case + // the EROFS error will be obscuring a EEXIST! + // Fallthrough to that case. + case 'EEXIST': + fs.stat(p, function (er2, stat) { + // if the stat fails, then that's super weird. + // let the original error be the failure reason. + if (er2 || !stat.isDirectory()) cb(er, made) + else cb(null, made); + }); + break; + + default: + cb(er, made); + break; + } + }); +} + +mkdirP.sync = function sync (p, mode, made) { + if (mode === undefined) { + mode = 0777 & (~process.umask()); + } + if (!made) made = null; + + if (typeof mode === 'string') mode = parseInt(mode, 8); + p = path.resolve(p); + + try { + fs.mkdirSync(p, mode); + made = made || p; + } + catch (err0) { + switch (err0.code) { + case 'ENOENT' : + made = sync(path.dirname(p), mode, made); + sync(p, mode, made); + break; + + case 'EEXIST' : + var stat; + try { + stat = fs.statSync(p); + } + catch (err1) { + throw err0; + } + if (!stat.isDirectory()) throw err0; + break; + default : + throw err0 + break; + } + } + + return made; +}; diff --git a/node_modules/express/node_modules/mkdirp/package.json b/node_modules/express/node_modules/mkdirp/package.json new file mode 100644 index 0000000..ccbb853 --- /dev/null +++ b/node_modules/express/node_modules/mkdirp/package.json @@ -0,0 +1,37 @@ +{ + "name": "mkdirp", + "description": "Recursively mkdir, like `mkdir -p`", + "version": "0.3.3", + "author": { + "name": "James Halliday", + "email": "mail@substack.net", + "url": "http://substack.net" + }, + "main": "./index", + "keywords": [ + "mkdir", + "directory" + ], + "repository": { + "type": "git", + "url": "http://github.com/substack/node-mkdirp.git" + }, + "scripts": { + "test": "tap test/*.js" + }, + "devDependencies": { + "tap": "~0.2.4" + }, + "license": "MIT/X11", + "engines": { + "node": "*" + }, + "readme": "mkdirp\n======\n\nLike `mkdir -p`, but in node.js!\n\n[![build status](https://secure.travis-ci.org/substack/node-mkdirp.png)](http://travis-ci.org/substack/node-mkdirp)\n\nexample\n=======\n\npow.js\n------\n var mkdirp = require('mkdirp');\n \n mkdirp('/tmp/foo/bar/baz', function (err) {\n if (err) console.error(err)\n else console.log('pow!')\n });\n\nOutput\n pow!\n\nAnd now /tmp/foo/bar/baz exists, huzzah!\n\nmethods\n=======\n\nvar mkdirp = require('mkdirp');\n\nmkdirp(dir, mode, cb)\n---------------------\n\nCreate a new directory and any necessary subdirectories at `dir` with octal\npermission string `mode`.\n\nIf `mode` isn't specified, it defaults to `0777 & (~process.umask())`.\n\n`cb(err, made)` fires with the error or the first directory `made`\nthat had to be created, if any.\n\nmkdirp.sync(dir, mode)\n----------------------\n\nSynchronously create a new directory and any necessary subdirectories at `dir`\nwith octal permission string `mode`.\n\nIf `mode` isn't specified, it defaults to `0777 & (~process.umask())`.\n\nReturns the first directory that had to be created, if any.\n\ninstall\n=======\n\nWith [npm](http://npmjs.org) do:\n\n npm install mkdirp\n\nlicense\n=======\n\nMIT/X11\n", + "readmeFilename": "README.markdown", + "_id": "mkdirp@0.3.3", + "dist": { + "shasum": "a5958958aeabce7ed2092b46a789b16600d40930" + }, + "_from": "mkdirp@0.3.3", + "_resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.3.tgz" +} diff --git a/node_modules/express/node_modules/mkdirp/test/chmod.js b/node_modules/express/node_modules/mkdirp/test/chmod.js new file mode 100644 index 0000000..520dcb8 --- /dev/null +++ b/node_modules/express/node_modules/mkdirp/test/chmod.js @@ -0,0 +1,38 @@ +var mkdirp = require('../').mkdirp; +var path = require('path'); +var fs = require('fs'); +var test = require('tap').test; + +var ps = [ '', 'tmp' ]; + +for (var i = 0; i < 25; i++) { + var dir = Math.floor(Math.random() * Math.pow(16,4)).toString(16); + ps.push(dir); +} + +var file = ps.join('/'); + +test('chmod-pre', function (t) { + var mode = 0744 + mkdirp(file, mode, function (er) { + t.ifError(er, 'should not error'); + fs.stat(file, function (er, stat) { + t.ifError(er, 'should exist'); + t.ok(stat && stat.isDirectory(), 'should be directory'); + t.equal(stat && stat.mode & 0777, mode, 'should be 0744'); + t.end(); + }); + }); +}); + +test('chmod', function (t) { + var mode = 0755 + mkdirp(file, mode, function (er) { + t.ifError(er, 'should not error'); + fs.stat(file, function (er, stat) { + t.ifError(er, 'should exist'); + t.ok(stat && stat.isDirectory(), 'should be directory'); + t.end(); + }); + }); +}); diff --git a/node_modules/express/node_modules/mkdirp/test/clobber.js b/node_modules/express/node_modules/mkdirp/test/clobber.js new file mode 100644 index 0000000..0eb7099 --- /dev/null +++ b/node_modules/express/node_modules/mkdirp/test/clobber.js @@ -0,0 +1,37 @@ +var mkdirp = require('../').mkdirp; +var path = require('path'); +var fs = require('fs'); +var test = require('tap').test; + +var ps = [ '', 'tmp' ]; + +for (var i = 0; i < 25; i++) { + var dir = Math.floor(Math.random() * Math.pow(16,4)).toString(16); + ps.push(dir); +} + +var file = ps.join('/'); + +// a file in the way +var itw = ps.slice(0, 3).join('/'); + + +test('clobber-pre', function (t) { + console.error("about to write to "+itw) + fs.writeFileSync(itw, 'I AM IN THE WAY, THE TRUTH, AND THE LIGHT.'); + + fs.stat(itw, function (er, stat) { + t.ifError(er) + t.ok(stat && stat.isFile(), 'should be file') + t.end() + }) +}) + +test('clobber', function (t) { + t.plan(2); + mkdirp(file, 0755, function (err) { + t.ok(err); + t.equal(err.code, 'ENOTDIR'); + t.end(); + }); +}); diff --git a/node_modules/express/node_modules/mkdirp/test/mkdirp.js b/node_modules/express/node_modules/mkdirp/test/mkdirp.js new file mode 100644 index 0000000..b07cd70 --- /dev/null +++ b/node_modules/express/node_modules/mkdirp/test/mkdirp.js @@ -0,0 +1,28 @@ +var mkdirp = require('../'); +var path = require('path'); +var fs = require('fs'); +var test = require('tap').test; + +test('woo', function (t) { + t.plan(2); + var x = Math.floor(Math.random() * Math.pow(16,4)).toString(16); + var y = Math.floor(Math.random() * Math.pow(16,4)).toString(16); + var z = Math.floor(Math.random() * Math.pow(16,4)).toString(16); + + var file = '/tmp/' + [x,y,z].join('/'); + + mkdirp(file, 0755, function (err) { + if (err) t.fail(err); + else path.exists(file, function (ex) { + if (!ex) t.fail('file not created') + else fs.stat(file, function (err, stat) { + if (err) t.fail(err) + else { + t.equal(stat.mode & 0777, 0755); + t.ok(stat.isDirectory(), 'target not a directory'); + t.end(); + } + }) + }) + }); +}); diff --git a/node_modules/express/node_modules/mkdirp/test/perm.js b/node_modules/express/node_modules/mkdirp/test/perm.js new file mode 100644 index 0000000..23a7abb --- /dev/null +++ b/node_modules/express/node_modules/mkdirp/test/perm.js @@ -0,0 +1,32 @@ +var mkdirp = require('../'); +var path = require('path'); +var fs = require('fs'); +var test = require('tap').test; + +test('async perm', function (t) { + t.plan(2); + var file = '/tmp/' + (Math.random() * (1<<30)).toString(16); + + mkdirp(file, 0755, function (err) { + if (err) t.fail(err); + else path.exists(file, function (ex) { + if (!ex) t.fail('file not created') + else fs.stat(file, function (err, stat) { + if (err) t.fail(err) + else { + t.equal(stat.mode & 0777, 0755); + t.ok(stat.isDirectory(), 'target not a directory'); + t.end(); + } + }) + }) + }); +}); + +test('async root perm', function (t) { + mkdirp('/tmp', 0755, function (err) { + if (err) t.fail(err); + t.end(); + }); + t.end(); +}); diff --git a/node_modules/express/node_modules/mkdirp/test/perm_sync.js b/node_modules/express/node_modules/mkdirp/test/perm_sync.js new file mode 100644 index 0000000..f685f60 --- /dev/null +++ b/node_modules/express/node_modules/mkdirp/test/perm_sync.js @@ -0,0 +1,39 @@ +var mkdirp = require('../'); +var path = require('path'); +var fs = require('fs'); +var test = require('tap').test; + +test('sync perm', function (t) { + t.plan(2); + var file = '/tmp/' + (Math.random() * (1<<30)).toString(16) + '.json'; + + mkdirp.sync(file, 0755); + path.exists(file, function (ex) { + if (!ex) t.fail('file not created') + else fs.stat(file, function (err, stat) { + if (err) t.fail(err) + else { + t.equal(stat.mode & 0777, 0755); + t.ok(stat.isDirectory(), 'target not a directory'); + t.end(); + } + }) + }); +}); + +test('sync root perm', function (t) { + t.plan(1); + + var file = '/tmp'; + mkdirp.sync(file, 0755); + path.exists(file, function (ex) { + if (!ex) t.fail('file not created') + else fs.stat(file, function (err, stat) { + if (err) t.fail(err) + else { + t.ok(stat.isDirectory(), 'target not a directory'); + t.end(); + } + }) + }); +}); diff --git a/node_modules/express/node_modules/mkdirp/test/race.js b/node_modules/express/node_modules/mkdirp/test/race.js new file mode 100644 index 0000000..96a0447 --- /dev/null +++ b/node_modules/express/node_modules/mkdirp/test/race.js @@ -0,0 +1,41 @@ +var mkdirp = require('../').mkdirp; +var path = require('path'); +var fs = require('fs'); +var test = require('tap').test; + +test('race', function (t) { + t.plan(4); + var ps = [ '', 'tmp' ]; + + for (var i = 0; i < 25; i++) { + var dir = Math.floor(Math.random() * Math.pow(16,4)).toString(16); + ps.push(dir); + } + var file = ps.join('/'); + + var res = 2; + mk(file, function () { + if (--res === 0) t.end(); + }); + + mk(file, function () { + if (--res === 0) t.end(); + }); + + function mk (file, cb) { + mkdirp(file, 0755, function (err) { + if (err) t.fail(err); + else path.exists(file, function (ex) { + if (!ex) t.fail('file not created') + else fs.stat(file, function (err, stat) { + if (err) t.fail(err) + else { + t.equal(stat.mode & 0777, 0755); + t.ok(stat.isDirectory(), 'target not a directory'); + if (cb) cb(); + } + }) + }) + }); + } +}); diff --git a/node_modules/express/node_modules/mkdirp/test/rel.js b/node_modules/express/node_modules/mkdirp/test/rel.js new file mode 100644 index 0000000..7985824 --- /dev/null +++ b/node_modules/express/node_modules/mkdirp/test/rel.js @@ -0,0 +1,32 @@ +var mkdirp = require('../'); +var path = require('path'); +var fs = require('fs'); +var test = require('tap').test; + +test('rel', function (t) { + t.plan(2); + var x = Math.floor(Math.random() * Math.pow(16,4)).toString(16); + var y = Math.floor(Math.random() * Math.pow(16,4)).toString(16); + var z = Math.floor(Math.random() * Math.pow(16,4)).toString(16); + + var cwd = process.cwd(); + process.chdir('/tmp'); + + var file = [x,y,z].join('/'); + + mkdirp(file, 0755, function (err) { + if (err) t.fail(err); + else path.exists(file, function (ex) { + if (!ex) t.fail('file not created') + else fs.stat(file, function (err, stat) { + if (err) t.fail(err) + else { + process.chdir(cwd); + t.equal(stat.mode & 0777, 0755); + t.ok(stat.isDirectory(), 'target not a directory'); + t.end(); + } + }) + }) + }); +}); diff --git a/node_modules/express/node_modules/mkdirp/test/return.js b/node_modules/express/node_modules/mkdirp/test/return.js new file mode 100644 index 0000000..bce68e5 --- /dev/null +++ b/node_modules/express/node_modules/mkdirp/test/return.js @@ -0,0 +1,25 @@ +var mkdirp = require('../'); +var path = require('path'); +var fs = require('fs'); +var test = require('tap').test; + +test('return value', function (t) { + t.plan(4); + var x = Math.floor(Math.random() * Math.pow(16,4)).toString(16); + var y = Math.floor(Math.random() * Math.pow(16,4)).toString(16); + var z = Math.floor(Math.random() * Math.pow(16,4)).toString(16); + + var file = '/tmp/' + [x,y,z].join('/'); + + // should return the first dir created. + // By this point, it would be profoundly surprising if /tmp didn't + // already exist, since every other test makes things in there. + mkdirp(file, function (err, made) { + t.ifError(err); + t.equal(made, '/tmp/' + x); + mkdirp(file, function (err, made) { + t.ifError(err); + t.equal(made, null); + }); + }); +}); diff --git a/node_modules/express/node_modules/mkdirp/test/return_sync.js b/node_modules/express/node_modules/mkdirp/test/return_sync.js new file mode 100644 index 0000000..7c222d3 --- /dev/null +++ b/node_modules/express/node_modules/mkdirp/test/return_sync.js @@ -0,0 +1,24 @@ +var mkdirp = require('../'); +var path = require('path'); +var fs = require('fs'); +var test = require('tap').test; + +test('return value', function (t) { + t.plan(2); + var x = Math.floor(Math.random() * Math.pow(16,4)).toString(16); + var y = Math.floor(Math.random() * Math.pow(16,4)).toString(16); + var z = Math.floor(Math.random() * Math.pow(16,4)).toString(16); + + var file = '/tmp/' + [x,y,z].join('/'); + + // should return the first dir created. + // By this point, it would be profoundly surprising if /tmp didn't + // already exist, since every other test makes things in there. + // Note that this will throw on failure, which will fail the test. + var made = mkdirp.sync(file); + t.equal(made, '/tmp/' + x); + + // making the same file again should have no effect. + made = mkdirp.sync(file); + t.equal(made, null); +}); diff --git a/node_modules/express/node_modules/mkdirp/test/root.js b/node_modules/express/node_modules/mkdirp/test/root.js new file mode 100644 index 0000000..97ad7a2 --- /dev/null +++ b/node_modules/express/node_modules/mkdirp/test/root.js @@ -0,0 +1,18 @@ +var mkdirp = require('../'); +var path = require('path'); +var fs = require('fs'); +var test = require('tap').test; + +test('root', function (t) { + // '/' on unix, 'c:/' on windows. + var file = path.resolve('/'); + + mkdirp(file, 0755, function (err) { + if (err) throw err + fs.stat(file, function (er, stat) { + if (er) throw er + t.ok(stat.isDirectory(), 'target is a directory'); + t.end(); + }) + }); +}); diff --git a/node_modules/express/node_modules/mkdirp/test/sync.js b/node_modules/express/node_modules/mkdirp/test/sync.js new file mode 100644 index 0000000..7530cad --- /dev/null +++ b/node_modules/express/node_modules/mkdirp/test/sync.js @@ -0,0 +1,32 @@ +var mkdirp = require('../'); +var path = require('path'); +var fs = require('fs'); +var test = require('tap').test; + +test('sync', function (t) { + t.plan(2); + var x = Math.floor(Math.random() * Math.pow(16,4)).toString(16); + var y = Math.floor(Math.random() * Math.pow(16,4)).toString(16); + var z = Math.floor(Math.random() * Math.pow(16,4)).toString(16); + + var file = '/tmp/' + [x,y,z].join('/'); + + try { + mkdirp.sync(file, 0755); + } catch (err) { + t.fail(err); + return t.end(); + } + + path.exists(file, function (ex) { + if (!ex) t.fail('file not created') + else fs.stat(file, function (err, stat) { + if (err) t.fail(err) + else { + t.equal(stat.mode & 0777, 0755); + t.ok(stat.isDirectory(), 'target not a directory'); + t.end(); + } + }); + }); +}); diff --git a/node_modules/express/node_modules/mkdirp/test/umask.js b/node_modules/express/node_modules/mkdirp/test/umask.js new file mode 100644 index 0000000..64ccafe --- /dev/null +++ b/node_modules/express/node_modules/mkdirp/test/umask.js @@ -0,0 +1,28 @@ +var mkdirp = require('../'); +var path = require('path'); +var fs = require('fs'); +var test = require('tap').test; + +test('implicit mode from umask', function (t) { + t.plan(2); + var x = Math.floor(Math.random() * Math.pow(16,4)).toString(16); + var y = Math.floor(Math.random() * Math.pow(16,4)).toString(16); + var z = Math.floor(Math.random() * Math.pow(16,4)).toString(16); + + var file = '/tmp/' + [x,y,z].join('/'); + + mkdirp(file, function (err) { + if (err) t.fail(err); + else path.exists(file, function (ex) { + if (!ex) t.fail('file not created') + else fs.stat(file, function (err, stat) { + if (err) t.fail(err) + else { + t.equal(stat.mode & 0777, 0777 & (~process.umask())); + t.ok(stat.isDirectory(), 'target not a directory'); + t.end(); + } + }) + }) + }); +}); diff --git a/node_modules/express/node_modules/mkdirp/test/umask_sync.js b/node_modules/express/node_modules/mkdirp/test/umask_sync.js new file mode 100644 index 0000000..35bd5cb --- /dev/null +++ b/node_modules/express/node_modules/mkdirp/test/umask_sync.js @@ -0,0 +1,32 @@ +var mkdirp = require('../'); +var path = require('path'); +var fs = require('fs'); +var test = require('tap').test; + +test('umask sync modes', function (t) { + t.plan(2); + var x = Math.floor(Math.random() * Math.pow(16,4)).toString(16); + var y = Math.floor(Math.random() * Math.pow(16,4)).toString(16); + var z = Math.floor(Math.random() * Math.pow(16,4)).toString(16); + + var file = '/tmp/' + [x,y,z].join('/'); + + try { + mkdirp.sync(file); + } catch (err) { + t.fail(err); + return t.end(); + } + + path.exists(file, function (ex) { + if (!ex) t.fail('file not created') + else fs.stat(file, function (err, stat) { + if (err) t.fail(err) + else { + t.equal(stat.mode & 0777, (0777 & (~process.umask()))); + t.ok(stat.isDirectory(), 'target not a directory'); + t.end(); + } + }); + }); +}); diff --git a/node_modules/express/node_modules/range-parser/.npmignore b/node_modules/express/node_modules/range-parser/.npmignore new file mode 100644 index 0000000..9daeafb --- /dev/null +++ b/node_modules/express/node_modules/range-parser/.npmignore @@ -0,0 +1 @@ +test diff --git a/node_modules/express/node_modules/range-parser/History.md b/node_modules/express/node_modules/range-parser/History.md new file mode 100644 index 0000000..82df7b1 --- /dev/null +++ b/node_modules/express/node_modules/range-parser/History.md @@ -0,0 +1,15 @@ + +0.0.4 / 2012-06-17 +================== + + * changed: ret -1 for unsatisfiable and -2 when invalid + +0.0.3 / 2012-06-17 +================== + + * fix last-byte-pos default to len - 1 + +0.0.2 / 2012-06-14 +================== + + * add `.type` diff --git a/node_modules/express/node_modules/range-parser/Makefile b/node_modules/express/node_modules/range-parser/Makefile new file mode 100644 index 0000000..8e8640f --- /dev/null +++ b/node_modules/express/node_modules/range-parser/Makefile @@ -0,0 +1,7 @@ + +test: + @./node_modules/.bin/mocha \ + --reporter spec \ + --require should + +.PHONY: test \ No newline at end of file diff --git a/node_modules/express/node_modules/range-parser/Readme.md b/node_modules/express/node_modules/range-parser/Readme.md new file mode 100644 index 0000000..b2a67fe --- /dev/null +++ b/node_modules/express/node_modules/range-parser/Readme.md @@ -0,0 +1,28 @@ + +# node-range-parser + + Range header field parser. + +## Example: + +```js +assert(-1 == parse(200, 'bytes=500-20')); +assert(-2 == parse(200, 'bytes=malformed')); +parse(200, 'bytes=0-499').should.eql(arr('bytes', [{ start: 0, end: 199 }])); +parse(1000, 'bytes=0-499').should.eql(arr('bytes', [{ start: 0, end: 499 }])); +parse(1000, 'bytes=40-80').should.eql(arr('bytes', [{ start: 40, end: 80 }])); +parse(1000, 'bytes=-500').should.eql(arr('bytes', [{ start: 500, end: 999 }])); +parse(1000, 'bytes=-400').should.eql(arr('bytes', [{ start: 600, end: 999 }])); +parse(1000, 'bytes=500-').should.eql(arr('bytes', [{ start: 500, end: 999 }])); +parse(1000, 'bytes=400-').should.eql(arr('bytes', [{ start: 400, end: 999 }])); +parse(1000, 'bytes=0-0').should.eql(arr('bytes', [{ start: 0, end: 0 }])); +parse(1000, 'bytes=-1').should.eql(arr('bytes', [{ start: 999, end: 999 }])); +parse(1000, 'items=0-5').should.eql(arr('items', [{ start: 0, end: 5 }])); +parse(1000, 'bytes=40-80,-1').should.eql(arr('bytes', [{ start: 40, end: 80 }, { start: 999, end: 999 }])); +``` + +## Installation + +``` +$ npm install range-parser +``` \ No newline at end of file diff --git a/node_modules/express/node_modules/range-parser/index.js b/node_modules/express/node_modules/range-parser/index.js new file mode 100644 index 0000000..9b0f7a8 --- /dev/null +++ b/node_modules/express/node_modules/range-parser/index.js @@ -0,0 +1,49 @@ + +/** + * Parse "Range" header `str` relative to the given file `size`. + * + * @param {Number} size + * @param {String} str + * @return {Array} + * @api public + */ + +module.exports = function(size, str){ + var valid = true; + var i = str.indexOf('='); + + if (-1 == i) return -2; + + var arr = str.slice(i + 1).split(',').map(function(range){ + var range = range.split('-') + , start = parseInt(range[0], 10) + , end = parseInt(range[1], 10); + + // -nnn + if (isNaN(start)) { + start = size - end; + end = size - 1; + // nnn- + } else if (isNaN(end)) { + end = size - 1; + } + + // limit last-byte-pos to current length + if (end > size - 1) end = size - 1; + + // invalid + if (isNaN(start) + || isNaN(end) + || start > end + || start < 0) valid = false; + + return { + start: start, + end: end + }; + }); + + arr.type = str.slice(0, i); + + return valid ? arr : -1; +}; \ No newline at end of file diff --git a/node_modules/express/node_modules/range-parser/package.json b/node_modules/express/node_modules/range-parser/package.json new file mode 100644 index 0000000..4fe8f4a --- /dev/null +++ b/node_modules/express/node_modules/range-parser/package.json @@ -0,0 +1,24 @@ +{ + "name": "range-parser", + "author": { + "name": "TJ Holowaychuk", + "email": "tj@vision-media.ca", + "url": "http://tjholowaychuk.com" + }, + "description": "Range header field string parser", + "version": "0.0.4", + "main": "index.js", + "dependencies": {}, + "devDependencies": { + "mocha": "*", + "should": "*" + }, + "readme": "\n# node-range-parser\n\n Range header field parser.\n\n## Example:\n\n```js\nassert(-1 == parse(200, 'bytes=500-20'));\nassert(-2 == parse(200, 'bytes=malformed'));\nparse(200, 'bytes=0-499').should.eql(arr('bytes', [{ start: 0, end: 199 }]));\nparse(1000, 'bytes=0-499').should.eql(arr('bytes', [{ start: 0, end: 499 }]));\nparse(1000, 'bytes=40-80').should.eql(arr('bytes', [{ start: 40, end: 80 }]));\nparse(1000, 'bytes=-500').should.eql(arr('bytes', [{ start: 500, end: 999 }]));\nparse(1000, 'bytes=-400').should.eql(arr('bytes', [{ start: 600, end: 999 }]));\nparse(1000, 'bytes=500-').should.eql(arr('bytes', [{ start: 500, end: 999 }]));\nparse(1000, 'bytes=400-').should.eql(arr('bytes', [{ start: 400, end: 999 }]));\nparse(1000, 'bytes=0-0').should.eql(arr('bytes', [{ start: 0, end: 0 }]));\nparse(1000, 'bytes=-1').should.eql(arr('bytes', [{ start: 999, end: 999 }]));\nparse(1000, 'items=0-5').should.eql(arr('items', [{ start: 0, end: 5 }]));\nparse(1000, 'bytes=40-80,-1').should.eql(arr('bytes', [{ start: 40, end: 80 }, { start: 999, end: 999 }]));\n```\n\n## Installation\n\n```\n$ npm install range-parser\n```", + "readmeFilename": "Readme.md", + "_id": "range-parser@0.0.4", + "dist": { + "shasum": "81114f088e1eef88f12bdb1ab9aab2c12f7df0fe" + }, + "_from": "range-parser@0.0.4", + "_resolved": "https://registry.npmjs.org/range-parser/-/range-parser-0.0.4.tgz" +} diff --git a/node_modules/express/node_modules/send/.npmignore b/node_modules/express/node_modules/send/.npmignore new file mode 100644 index 0000000..f1250e5 --- /dev/null +++ b/node_modules/express/node_modules/send/.npmignore @@ -0,0 +1,4 @@ +support +test +examples +*.sock diff --git a/node_modules/express/node_modules/send/History.md b/node_modules/express/node_modules/send/History.md new file mode 100644 index 0000000..20c5319 --- /dev/null +++ b/node_modules/express/node_modules/send/History.md @@ -0,0 +1,25 @@ + +0.1.0 / 2012-08-25 +================== + + * add options parameter to send() that is passed to fs.createReadStream() [kanongil] + +0.0.4 / 2012-08-16 +================== + + * allow custom "Accept-Ranges" definition + +0.0.3 / 2012-07-16 +================== + + * fix normalization of the root directory. Closes #3 + +0.0.2 / 2012-07-09 +================== + + * add passing of req explicitly for now (YUCK) + +0.0.1 / 2010-01-03 +================== + + * Initial release diff --git a/node_modules/express/node_modules/send/Makefile b/node_modules/express/node_modules/send/Makefile new file mode 100644 index 0000000..a9dcfd5 --- /dev/null +++ b/node_modules/express/node_modules/send/Makefile @@ -0,0 +1,8 @@ + +test: + @./node_modules/.bin/mocha \ + --require should \ + --reporter spec \ + --bail + +.PHONY: test \ No newline at end of file diff --git a/node_modules/express/node_modules/send/Readme.md b/node_modules/express/node_modules/send/Readme.md new file mode 100644 index 0000000..85171a9 --- /dev/null +++ b/node_modules/express/node_modules/send/Readme.md @@ -0,0 +1,123 @@ + +# send + + Send is Connect's `static()` extracted for generalized use, a streaming static file + server supporting partial responses (Ranges), conditional-GET negotiation, high test coverage, and granular events which may be leveraged to take appropriate actions in your application or framework. + +## Installation + + $ npm install send + +## Examples + + Small: + +```js +var http = require('http'); +var send = require('send'); + +var app = http.createServer(function(req, res){ + send(req, req.url).pipe(res); +}); +``` + + Serving from a root directory with custom error-handling: + +```js +var http = require('http'); +var send = require('send'); + +var app = http.createServer(function(req, res){ + // your custom error-handling logic: + function error(err) { + res.statusCode = err.status || 500; + res.end(err.message); + } + + // your custom directory handling logic: + function redirect() { + res.statusCode = 301; + res.setHeader('Location', req.url + '/'); + res.end('Redirecting to ' + req.url + '/'); + } + + // transfer arbitrary files from within + // /www/example.com/public/* + send(req, url.parse(req.url).pathname) + .root('/www/example.com/public') + .on('error', error) + .on('directory', redirect) + .pipe(res); +}); +``` + +## API + +### Events + + - `error` an error occurred `(err)` + - `directory` a directory was requested + - `stream` file streaming has started `(stream)` + - `end` streaming has completed + +### .root(dir) + + Serve files relative to `path`. Aliased as `.from(dir)`. + +### .index(path) + + By default send supports "index.html" files, to disable this + invoke `.index(false)` or to supply a new index pass a string. + +### .maxage(ms) + + Provide a max-age in milliseconds for http caching, defaults to 0. + +## Error-handling + + By default when no `error` listeners are present an automatic response will be made, otherwise you have full control over the response, aka you may show a 5xx page etc. + +## Caching + + It does _not_ perform internal caching, you should use a reverse proxy cache such + as Varnish for this, or those fancy things called CDNs. If your application is small enough that it would benefit from single-node memory caching, it's small enough that it does not need caching at all ;). + +## Debugging + + To enable `debug()` instrumentation output export __DEBUG__: + +``` +$ DEBUG=send node app +``` + +## Running tests + +``` +$ npm install +$ make test +``` + +## License + +(The MIT License) + +Copyright (c) 2012 TJ Holowaychuk <tj@vision-media.ca> + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +'Software'), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. \ No newline at end of file diff --git a/node_modules/express/node_modules/send/index.js b/node_modules/express/node_modules/send/index.js new file mode 100644 index 0000000..f17158d --- /dev/null +++ b/node_modules/express/node_modules/send/index.js @@ -0,0 +1,2 @@ + +module.exports = require('./lib/send'); \ No newline at end of file diff --git a/node_modules/express/node_modules/send/lib/send.js b/node_modules/express/node_modules/send/lib/send.js new file mode 100644 index 0000000..de72146 --- /dev/null +++ b/node_modules/express/node_modules/send/lib/send.js @@ -0,0 +1,473 @@ + +/** + * Module dependencies. + */ + +var debug = require('debug')('send') + , parseRange = require('range-parser') + , Stream = require('stream') + , mime = require('mime') + , fresh = require('fresh') + , path = require('path') + , http = require('http') + , fs = require('fs') + , basename = path.basename + , normalize = path.normalize + , join = path.join + , utils = require('./utils'); + +/** + * Expose `send`. + */ + +exports = module.exports = send; + +/** + * Expose mime module. + */ + +exports.mime = mime; + +/** + * Return a `SendStream` for `req` and `path`. + * + * @param {Request} req + * @param {String} path + * @param {Object} options + * @return {SendStream} + * @api public + */ + +function send(req, path, options) { + return new SendStream(req, path, options); +} + +/** + * Initialize a `SendStream` with the given `path`. + * + * Events: + * + * - `error` an error occurred + * - `stream` file streaming has started + * - `end` streaming has completed + * - `directory` a directory was requested + * + * @param {Request} req + * @param {String} path + * @param {Object} options + * @api private + */ + +function SendStream(req, path, options) { + var self = this; + this.req = req; + this.path = path; + this.options = options || {}; + this.maxage(0); + this.hidden(false); + this.index('index.html'); +} + +/** + * Inherits from `Stream.prototype`. + */ + +SendStream.prototype.__proto__ = Stream.prototype; + +/** + * Enable or disable "hidden" (dot) files. + * + * @param {Boolean} path + * @return {SendStream} + * @api public + */ + +SendStream.prototype.hidden = function(val){ + debug('hidden %s', val); + this._hidden = val; + return this; +}; + +/** + * Set index `path`, set to a falsy + * value to disable index support. + * + * @param {String|Boolean} path + * @return {SendStream} + * @api public + */ + +SendStream.prototype.index = function(path){ + debug('index %s', path); + this._index = path; + return this; +}; + +/** + * Set root `path`. + * + * @param {String} path + * @return {SendStream} + * @api public + */ + +SendStream.prototype.root = +SendStream.prototype.from = function(path){ + this._root = normalize(path); + return this; +}; + +/** + * Set max-age to `ms`. + * + * @param {Number} ms + * @return {SendStream} + * @api public + */ + +SendStream.prototype.maxage = function(ms){ + if (Infinity == ms) ms = 60 * 60 * 24 * 365 * 1000; + debug('max-age %d', ms); + this._maxage = ms; + return this; +}; + +/** + * Emit error with `status`. + * + * @param {Number} status + * @api private + */ + +SendStream.prototype.error = function(status, err){ + var res = this.res; + var msg = http.STATUS_CODES[status]; + err = err || new Error(msg); + err.status = status; + if (this.listeners('error').length) return this.emit('error', err); + res.statusCode = err.status; + res.end(msg); +}; + +/** + * Check if the pathname is potentially malicious. + * + * @return {Boolean} + * @api private + */ + +SendStream.prototype.isMalicious = function(){ + return !this._root && ~this.path.indexOf('..'); +}; + +/** + * Check if the pathname ends with "/". + * + * @return {Boolean} + * @api private + */ + +SendStream.prototype.hasTrailingSlash = function(){ + return '/' == this.path[this.path.length - 1]; +}; + +/** + * Check if the basename leads with ".". + * + * @return {Boolean} + * @api private + */ + +SendStream.prototype.hasLeadingDot = function(){ + return '.' == basename(this.path)[0]; +}; + +/** + * Check if this is a conditional GET request. + * + * @return {Boolean} + * @api private + */ + +SendStream.prototype.isConditionalGET = function(){ + return this.req.headers['if-none-match'] + || this.req.headers['if-modified-since']; +}; + +/** + * Strip content-* header fields. + * + * @api private + */ + +SendStream.prototype.removeContentHeaderFields = function(){ + var res = this.res; + Object.keys(res._headers).forEach(function(field){ + if (0 == field.indexOf('content')) { + res.removeHeader(field); + } + }); +}; + +/** + * Respond with 304 not modified. + * + * @api private + */ + +SendStream.prototype.notModified = function(){ + var res = this.res; + debug('not modified'); + this.removeContentHeaderFields(); + res.statusCode = 304; + res.end(); +}; + +/** + * Check if the request is cacheable, aka + * responded with 2xx or 304 (see RFC 2616 section 14.2{5,6}). + * + * @return {Boolean} + * @api private + */ + +SendStream.prototype.isCachable = function(){ + var res = this.res; + return (res.statusCode >= 200 && res.statusCode < 300) || 304 == res.statusCode; +}; + +/** + * Handle stat() error. + * + * @param {Error} err + * @api private + */ + +SendStream.prototype.onStatError = function(err){ + var notfound = ['ENOENT', 'ENAMETOOLONG', 'ENOTDIR']; + if (~notfound.indexOf(err.code)) return this.error(404, err); + this.error(500, err); +}; + +/** + * Check if the cache is fresh. + * + * @return {Boolean} + * @api private + */ + +SendStream.prototype.isFresh = function(){ + return fresh(this.req.headers, this.res._headers); +}; + +/** + * Redirect to `path`. + * + * @param {String} path + * @api private + */ + +SendStream.prototype.redirect = function(path){ + if (this.listeners('directory').length) return this.emit('directory'); + var res = this.res; + path += '/'; + res.statusCode = 301; + res.setHeader('Location', path); + res.end('Redirecting to ' + utils.escape(path)); +}; + +/** + * Pipe to `res. + * + * @param {Stream} res + * @return {Stream} res + * @api public + */ + +SendStream.prototype.pipe = function(res){ + var self = this + , args = arguments + , path = this.path + , root = this._root; + + // references + this.res = res; + + // invalid request uri + path = utils.decode(path); + if (-1 == path) return this.error(400); + + // null byte(s) + if (~path.indexOf('\0')) return this.error(400); + + // join / normalize from optional root dir + if (root) path = normalize(join(this._root, path)); + + // ".." is malicious without "root" + if (this.isMalicious()) return this.error(403); + + // malicious path + if (root && 0 != path.indexOf(root)) return this.error(403); + + // hidden file support + if (!this._hidden && this.hasLeadingDot()) return this.error(404); + + // index file support + if (this._index && this.hasTrailingSlash()) path += this._index; + + debug('stat "%s"', path); + fs.stat(path, function(err, stat){ + if (err) return self.onStatError(err); + if (stat.isDirectory()) return self.redirect(self.path); + self.send(path, stat); + }); + + return res; +}; + +/** + * Transfer `path`. + * + * @param {String} path + * @api public + */ + +SendStream.prototype.send = function(path, stat){ + var options = this.options; + var len = stat.size; + var res = this.res; + var req = this.req; + var ranges = req.headers.range; + var offset = options.start || 0; + + // set header fields + this.setHeader(stat); + + // set content-type + this.type(path); + + // conditional GET support + if (this.isConditionalGET() + && this.isCachable() + && this.isFresh()) { + return this.notModified(); + } + + // adjust len to start/end options + len = Math.max(0, len - offset); + if (options.end !== undefined) { + var bytes = options.end - offset + 1; + if (len > bytes) len = bytes; + } + + // Range support + if (ranges) { + ranges = parseRange(len, ranges); + + // unsatisfiable + if (-1 == ranges) { + res.setHeader('Content-Range', 'bytes */' + stat.size); + return this.error(416); + } + + // valid (syntactically invalid ranges are treated as a regular response) + if (-2 != ranges) { + options.start = offset + ranges[0].start; + options.end = offset + ranges[0].end; + + // Content-Range + res.statusCode = 206; + res.setHeader('Content-Range', 'bytes ' + + ranges[0].start + + '-' + + ranges[0].end + + '/' + + len); + len = options.end - options.start + 1; + } + } + + // content-length + res.setHeader('Content-Length', len); + + // HEAD support + if ('HEAD' == req.method) return res.end(); + + this.stream(path, options); +}; + +/** + * Stream `path` to the response. + * + * @param {String} path + * @param {Object} options + * @api private + */ + +SendStream.prototype.stream = function(path, options){ + // TODO: this is all lame, refactor meeee + var self = this; + var res = this.res; + var req = this.req; + + // pipe + var stream = fs.createReadStream(path, options); + this.emit('stream', stream); + stream.pipe(res); + + // socket closed, done with the fd + req.on('close', stream.destroy.bind(stream)); + + // error handling code-smell + stream.on('error', function(err){ + // no hope in responding + if (res._header) { + console.error(err.stack); + req.destroy(); + return; + } + + // 500 + err.status = 500; + self.emit('error', err); + }); + + // end + stream.on('end', function(){ + self.emit('end'); + }); +}; + +/** + * Set content-type based on `path` + * if it hasn't been explicitly set. + * + * @param {String} path + * @api private + */ + +SendStream.prototype.type = function(path){ + var res = this.res; + if (res.getHeader('Content-Type')) return; + var type = mime.lookup(path); + var charset = mime.charsets.lookup(type); + debug('content-type %s', type); + res.setHeader('Content-Type', type + (charset ? '; charset=' + charset : '')); +}; + +/** + * Set reaponse header fields, most + * fields may be pre-defined. + * + * @param {Object} stat + * @api private + */ + +SendStream.prototype.setHeader = function(stat){ + var res = this.res; + if (!res.getHeader('Accept-Ranges')) res.setHeader('Accept-Ranges', 'bytes'); + if (!res.getHeader('ETag')) res.setHeader('ETag', utils.etag(stat)); + if (!res.getHeader('Date')) res.setHeader('Date', new Date().toUTCString()); + if (!res.getHeader('Cache-Control')) res.setHeader('Cache-Control', 'public, max-age=' + (this._maxage / 1000)); + if (!res.getHeader('Last-Modified')) res.setHeader('Last-Modified', stat.mtime.toUTCString()); +}; diff --git a/node_modules/express/node_modules/send/lib/utils.js b/node_modules/express/node_modules/send/lib/utils.js new file mode 100644 index 0000000..950e5a2 --- /dev/null +++ b/node_modules/express/node_modules/send/lib/utils.js @@ -0,0 +1,47 @@ + +/** + * Return an ETag in the form of `"-"` + * from the given `stat`. + * + * @param {Object} stat + * @return {String} + * @api private + */ + +exports.etag = function(stat) { + return '"' + stat.size + '-' + Number(stat.mtime) + '"'; +}; + +/** + * decodeURIComponent. + * + * Allows V8 to only deoptimize this fn instead of all + * of send(). + * + * @param {String} path + * @api private + */ + +exports.decode = function(path){ + try { + return decodeURIComponent(path); + } catch (err) { + return -1; + } +}; + +/** + * Escape the given string of `html`. + * + * @param {String} html + * @return {String} + * @api private + */ + +exports.escape = function(html){ + return String(html) + .replace(/&(?!\w+;)/g, '&') + .replace(//g, '>') + .replace(/"/g, '"'); +}; \ No newline at end of file diff --git a/node_modules/express/node_modules/send/node_modules/mime/LICENSE b/node_modules/express/node_modules/send/node_modules/mime/LICENSE new file mode 100644 index 0000000..451fc45 --- /dev/null +++ b/node_modules/express/node_modules/send/node_modules/mime/LICENSE @@ -0,0 +1,19 @@ +Copyright (c) 2010 Benjamin Thomas, Robert Kieffer + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/node_modules/express/node_modules/send/node_modules/mime/README.md b/node_modules/express/node_modules/send/node_modules/mime/README.md new file mode 100644 index 0000000..d8b66a8 --- /dev/null +++ b/node_modules/express/node_modules/send/node_modules/mime/README.md @@ -0,0 +1,63 @@ +# mime + +Comprehensive MIME type mapping API. Includes all 600+ types and 800+ extensions defined by the Apache project, plus additional types submitted by the node.js community. + +## Install + +Install with [npm](http://github.com/isaacs/npm): + + npm install mime + +## API - Queries + +### mime.lookup(path) +Get the mime type associated with a file. Performs a case-insensitive lookup using the extension in `path` (the substring after the last '/' or '.'). E.g. + + var mime = require('mime'); + + mime.lookup('/path/to/file.txt'); // => 'text/plain' + mime.lookup('file.txt'); // => 'text/plain' + mime.lookup('.TXT'); // => 'text/plain' + mime.lookup('htm'); // => 'text/html' + +### mime.extension(type) +Get the default extension for `type` + + mime.extension('text/html'); // => 'html' + mime.extension('application/octet-stream'); // => 'bin' + +### mime.charsets.lookup() + +Map mime-type to charset + + mime.charsets.lookup('text/plain'); // => 'UTF-8' + +(The logic for charset lookups is pretty rudimentary. Feel free to suggest improvements.) + +## API - Defining Custom Types + +The following APIs allow you to add your own type mappings within your project. If you feel a type should be included as part of node-mime, see [requesting new types](https://github.com/bentomas/node-mime/wiki/Requesting-New-Types). + +### mime.define() + +Add custom mime/extension mappings + + mime.define({ + 'text/x-some-format': ['x-sf', 'x-sft', 'x-sfml'], + 'application/x-my-type': ['x-mt', 'x-mtt'], + // etc ... + }); + + mime.lookup('x-sft'); // => 'text/x-some-format' + +The first entry in the extensions array is returned by `mime.extension()`. E.g. + + mime.extension('text/x-some-format'); // => 'x-sf' + +### mime.load(filepath) + +Load mappings from an Apache ".types" format file + + mime.load('./my_project.types'); + +The .types file format is simple - See the `types` dir for examples. diff --git a/node_modules/express/node_modules/send/node_modules/mime/mime.js b/node_modules/express/node_modules/send/node_modules/mime/mime.js new file mode 100644 index 0000000..1e00585 --- /dev/null +++ b/node_modules/express/node_modules/send/node_modules/mime/mime.js @@ -0,0 +1,104 @@ +var path = require('path'); +var fs = require('fs'); + +function Mime() { + // Map of extension -> mime type + this.types = Object.create(null); + + // Map of mime type -> extension + this.extensions = Object.create(null); +} + +/** + * Define mimetype -> extension mappings. Each key is a mime-type that maps + * to an array of extensions associated with the type. The first extension is + * used as the default extension for the type. + * + * e.g. mime.define({'audio/ogg', ['oga', 'ogg', 'spx']}); + * + * @param map (Object) type definitions + */ +Mime.prototype.define = function (map) { + for (var type in map) { + var exts = map[type]; + + for (var i = 0; i < exts.length; i++) { + this.types[exts[i]] = type; + } + + // Default extension is the first one we encounter + if (!this.extensions[type]) { + this.extensions[type] = exts[0]; + } + } +}; + +/** + * Load an Apache2-style ".types" file + * + * This may be called multiple times (it's expected). Where files declare + * overlapping types/extensions, the last file wins. + * + * @param file (String) path of file to load. + */ +Mime.prototype.load = function(file) { + // Read file and split into lines + var map = {}, + content = fs.readFileSync(file, 'ascii'), + lines = content.split(/[\r\n]+/); + + lines.forEach(function(line) { + // Clean up whitespace/comments, and split into fields + var fields = line.replace(/\s*#.*|^\s*|\s*$/g, '').split(/\s+/); + map[fields.shift()] = fields; + }); + + this.define(map); +}; + +/** + * Lookup a mime type based on extension + */ +Mime.prototype.lookup = function(path, fallback) { + var ext = path.replace(/.*[\.\/]/, '').toLowerCase(); + + return this.types[ext] || fallback || this.default_type; +}; + +/** + * Return file extension associated with a mime type + */ +Mime.prototype.extension = function(mimeType) { + return this.extensions[mimeType]; +}; + +// Default instance +var mime = new Mime(); + +// Load local copy of +// http://svn.apache.org/repos/asf/httpd/httpd/trunk/docs/conf/mime.types +mime.load(path.join(__dirname, 'types/mime.types')); + +// Load additional types from node.js community +mime.load(path.join(__dirname, 'types/node.types')); + +// Default type +mime.default_type = mime.lookup('bin'); + +// +// Additional API specific to the default instance +// + +mime.Mime = Mime; + +/** + * Lookup a charset based on mime type. + */ +mime.charsets = { + lookup: function(mimeType, fallback) { + // Assume text types are utf8 + return (/^text\//).test(mimeType) ? 'UTF-8' : fallback; + } +} + +module.exports = mime; diff --git a/node_modules/express/node_modules/send/node_modules/mime/package.json b/node_modules/express/node_modules/send/node_modules/mime/package.json new file mode 100644 index 0000000..a4093ac --- /dev/null +++ b/node_modules/express/node_modules/send/node_modules/mime/package.json @@ -0,0 +1,36 @@ +{ + "author": { + "name": "Robert Kieffer", + "email": "robert@broofa.com", + "url": "http://github.com/broofa" + }, + "contributors": [ + { + "name": "Benjamin Thomas", + "email": "benjamin@benjaminthomas.org", + "url": "http://github.com/bentomas" + } + ], + "dependencies": {}, + "description": "A comprehensive library for mime-type mapping", + "devDependencies": {}, + "keywords": [ + "util", + "mime" + ], + "main": "mime.js", + "name": "mime", + "repository": { + "url": "https://github.com/broofa/node-mime", + "type": "git" + }, + "version": "1.2.6", + "readme": "# mime\n\nComprehensive MIME type mapping API. Includes all 600+ types and 800+ extensions defined by the Apache project, plus additional types submitted by the node.js community.\n\n## Install\n\nInstall with [npm](http://github.com/isaacs/npm):\n\n npm install mime\n\n## API - Queries\n\n### mime.lookup(path)\nGet the mime type associated with a file. Performs a case-insensitive lookup using the extension in `path` (the substring after the last '/' or '.'). E.g.\n\n var mime = require('mime');\n\n mime.lookup('/path/to/file.txt'); // => 'text/plain'\n mime.lookup('file.txt'); // => 'text/plain'\n mime.lookup('.TXT'); // => 'text/plain'\n mime.lookup('htm'); // => 'text/html'\n\n### mime.extension(type)\nGet the default extension for `type`\n\n mime.extension('text/html'); // => 'html'\n mime.extension('application/octet-stream'); // => 'bin'\n\n### mime.charsets.lookup()\n\nMap mime-type to charset\n\n mime.charsets.lookup('text/plain'); // => 'UTF-8'\n\n(The logic for charset lookups is pretty rudimentary. Feel free to suggest improvements.)\n\n## API - Defining Custom Types\n\nThe following APIs allow you to add your own type mappings within your project. If you feel a type should be included as part of node-mime, see [requesting new types](https://github.com/bentomas/node-mime/wiki/Requesting-New-Types).\n\n### mime.define()\n\nAdd custom mime/extension mappings\n\n mime.define({\n 'text/x-some-format': ['x-sf', 'x-sft', 'x-sfml'],\n 'application/x-my-type': ['x-mt', 'x-mtt'],\n // etc ...\n });\n\n mime.lookup('x-sft'); // => 'text/x-some-format'\n\nThe first entry in the extensions array is returned by `mime.extension()`. E.g.\n\n mime.extension('text/x-some-format'); // => 'x-sf'\n\n### mime.load(filepath)\n\nLoad mappings from an Apache \".types\" format file\n\n mime.load('./my_project.types');\n\nThe .types file format is simple - See the `types` dir for examples.\n", + "readmeFilename": "README.md", + "_id": "mime@1.2.6", + "dist": { + "shasum": "2d862cdc4e5a3ac05b7cc77e7dfd5524345f1a9a" + }, + "_from": "mime@1.2.6", + "_resolved": "https://registry.npmjs.org/mime/-/mime-1.2.6.tgz" +} diff --git a/node_modules/express/node_modules/send/node_modules/mime/test.js b/node_modules/express/node_modules/send/node_modules/mime/test.js new file mode 100644 index 0000000..cbad034 --- /dev/null +++ b/node_modules/express/node_modules/send/node_modules/mime/test.js @@ -0,0 +1,55 @@ +/** + * Usage: node test.js + */ + +var mime = require('./mime'); +var assert = require('assert'); + +function eq(a, b) { + console.log('Test: ' + a + ' === ' + b); + assert.strictEqual.apply(null, arguments); +} + +console.log(Object.keys(mime.extensions).length + ' types'); +console.log(Object.keys(mime.types).length + ' extensions\n'); + +// +// Test mime lookups +// + +eq('text/plain', mime.lookup('text.txt')); +eq('text/plain', mime.lookup('.text.txt')); +eq('text/plain', mime.lookup('.txt')); +eq('text/plain', mime.lookup('txt')); +eq('application/octet-stream', mime.lookup('text.nope')); +eq('fallback', mime.lookup('text.fallback', 'fallback')); +eq('application/octet-stream', mime.lookup('constructor')); +eq('text/plain', mime.lookup('TEXT.TXT')); +eq('text/event-stream', mime.lookup('text/event-stream')); +eq('application/x-web-app-manifest+json', mime.lookup('text.webapp')); + +// +// Test extensions +// + +eq('txt', mime.extension(mime.types.text)); +eq('html', mime.extension(mime.types.htm)); +eq('bin', mime.extension('application/octet-stream')); +eq(undefined, mime.extension('constructor')); + +// +// Test node types +// + +eq('application/octet-stream', mime.lookup('file.buffer')); +eq('audio/mp4', mime.lookup('file.m4a')); + +// +// Test charsets +// + +eq('UTF-8', mime.charsets.lookup('text/plain')); +eq(undefined, mime.charsets.lookup(mime.types.js)); +eq('fallback', mime.charsets.lookup('application/octet-stream', 'fallback')); + +console.log('\nOK'); diff --git a/node_modules/express/node_modules/send/node_modules/mime/types/mime.types b/node_modules/express/node_modules/send/node_modules/mime/types/mime.types new file mode 100644 index 0000000..b3cae2e --- /dev/null +++ b/node_modules/express/node_modules/send/node_modules/mime/types/mime.types @@ -0,0 +1,1510 @@ +# This file maps Internet media types to unique file extension(s). +# Although created for httpd, this file is used by many software systems +# and has been placed in the public domain for unlimited redisribution. +# +# The table below contains both registered and (common) unregistered types. +# A type that has no unique extension can be ignored -- they are listed +# here to guide configurations toward known types and to make it easier to +# identify "new" types. File extensions are also commonly used to indicate +# content languages and encodings, so choose them carefully. +# +# Internet media types should be registered as described in RFC 4288. +# The registry is at . +# +# MIME type (lowercased) Extensions +# ============================================ ========== +# application/1d-interleaved-parityfec +# application/3gpp-ims+xml +# application/activemessage +application/andrew-inset ez +# application/applefile +application/applixware aw +application/atom+xml atom +application/atomcat+xml atomcat +# application/atomicmail +application/atomsvc+xml atomsvc +# application/auth-policy+xml +# application/batch-smtp +# application/beep+xml +# application/calendar+xml +# application/cals-1840 +# application/ccmp+xml +application/ccxml+xml ccxml +application/cdmi-capability cdmia +application/cdmi-container cdmic +application/cdmi-domain cdmid +application/cdmi-object cdmio +application/cdmi-queue cdmiq +# application/cea-2018+xml +# application/cellml+xml +# application/cfw +# application/cnrp+xml +# application/commonground +# application/conference-info+xml +# application/cpl+xml +# application/csta+xml +# application/cstadata+xml +application/cu-seeme cu +# application/cybercash +application/davmount+xml davmount +# application/dca-rft +# application/dec-dx +# application/dialog-info+xml +# application/dicom +# application/dns +# application/dskpp+xml +application/dssc+der dssc +application/dssc+xml xdssc +# application/dvcs +application/ecmascript ecma +# application/edi-consent +# application/edi-x12 +# application/edifact +application/emma+xml emma +# application/epp+xml +application/epub+zip epub +# application/eshop +# application/example +application/exi exi +# application/fastinfoset +# application/fastsoap +# application/fits +application/font-tdpfr pfr +# application/framework-attributes+xml +# application/h224 +# application/held+xml +# application/http +application/hyperstudio stk +# application/ibe-key-request+xml +# application/ibe-pkg-reply+xml +# application/ibe-pp-data +# application/iges +# application/im-iscomposing+xml +# application/index +# application/index.cmd +# application/index.obj +# application/index.response +# application/index.vnd +application/inkml+xml ink inkml +# application/iotp +application/ipfix ipfix +# application/ipp +# application/isup +application/java-archive jar +application/java-serialized-object ser +application/java-vm class +application/javascript js +application/json json +# application/kpml-request+xml +# application/kpml-response+xml +application/lost+xml lostxml +application/mac-binhex40 hqx +application/mac-compactpro cpt +# application/macwriteii +application/mads+xml mads +application/marc mrc +application/marcxml+xml mrcx +application/mathematica ma nb mb +# application/mathml-content+xml +# application/mathml-presentation+xml +application/mathml+xml mathml +# application/mbms-associated-procedure-description+xml +# application/mbms-deregister+xml +# application/mbms-envelope+xml +# application/mbms-msk+xml +# application/mbms-msk-response+xml +# application/mbms-protection-description+xml +# application/mbms-reception-report+xml +# application/mbms-register+xml +# application/mbms-register-response+xml +# application/mbms-user-service-description+xml +application/mbox mbox +# application/media_control+xml +application/mediaservercontrol+xml mscml +application/metalink4+xml meta4 +application/mets+xml mets +# application/mikey +application/mods+xml mods +# application/moss-keys +# application/moss-signature +# application/mosskey-data +# application/mosskey-request +application/mp21 m21 mp21 +application/mp4 mp4s +# application/mpeg4-generic +# application/mpeg4-iod +# application/mpeg4-iod-xmt +# application/msc-ivr+xml +# application/msc-mixer+xml +application/msword doc dot +application/mxf mxf +# application/nasdata +# application/news-checkgroups +# application/news-groupinfo +# application/news-transmission +# application/nss +# application/ocsp-request +# application/ocsp-response +application/octet-stream bin dms lha lrf lzh so iso dmg dist distz pkg bpk dump elc deploy +application/oda oda +application/oebps-package+xml opf +application/ogg ogx +application/onenote onetoc onetoc2 onetmp onepkg +application/oxps oxps +# application/parityfec +application/patch-ops-error+xml xer +application/pdf pdf +application/pgp-encrypted pgp +# application/pgp-keys +application/pgp-signature asc sig +application/pics-rules prf +# application/pidf+xml +# application/pidf-diff+xml +application/pkcs10 p10 +application/pkcs7-mime p7m p7c +application/pkcs7-signature p7s +application/pkcs8 p8 +application/pkix-attr-cert ac +application/pkix-cert cer +application/pkix-crl crl +application/pkix-pkipath pkipath +application/pkixcmp pki +application/pls+xml pls +# application/poc-settings+xml +application/postscript ai eps ps +# application/prs.alvestrand.titrax-sheet +application/prs.cww cww +# application/prs.nprend +# application/prs.plucker +# application/prs.rdf-xml-crypt +# application/prs.xsf+xml +application/pskc+xml pskcxml +# application/qsig +application/rdf+xml rdf +application/reginfo+xml rif +application/relax-ng-compact-syntax rnc +# application/remote-printing +application/resource-lists+xml rl +application/resource-lists-diff+xml rld +# application/riscos +# application/rlmi+xml +application/rls-services+xml rs +application/rpki-ghostbusters gbr +application/rpki-manifest mft +application/rpki-roa roa +# application/rpki-updown +application/rsd+xml rsd +application/rss+xml rss +application/rtf rtf +# application/rtx +# application/samlassertion+xml +# application/samlmetadata+xml +application/sbml+xml sbml +application/scvp-cv-request scq +application/scvp-cv-response scs +application/scvp-vp-request spq +application/scvp-vp-response spp +application/sdp sdp +# application/set-payment +application/set-payment-initiation setpay +# application/set-registration +application/set-registration-initiation setreg +# application/sgml +# application/sgml-open-catalog +application/shf+xml shf +# application/sieve +# application/simple-filter+xml +# application/simple-message-summary +# application/simplesymbolcontainer +# application/slate +# application/smil +application/smil+xml smi smil +# application/soap+fastinfoset +# application/soap+xml +application/sparql-query rq +application/sparql-results+xml srx +# application/spirits-event+xml +application/srgs gram +application/srgs+xml grxml +application/sru+xml sru +application/ssml+xml ssml +# application/tamp-apex-update +# application/tamp-apex-update-confirm +# application/tamp-community-update +# application/tamp-community-update-confirm +# application/tamp-error +# application/tamp-sequence-adjust +# application/tamp-sequence-adjust-confirm +# application/tamp-status-query +# application/tamp-status-response +# application/tamp-update +# application/tamp-update-confirm +application/tei+xml tei teicorpus +application/thraud+xml tfi +# application/timestamp-query +# application/timestamp-reply +application/timestamped-data tsd +# application/tve-trigger +# application/ulpfec +# application/vcard+xml +# application/vemmi +# application/vividence.scriptfile +# application/vnd.3gpp.bsf+xml +application/vnd.3gpp.pic-bw-large plb +application/vnd.3gpp.pic-bw-small psb +application/vnd.3gpp.pic-bw-var pvb +# application/vnd.3gpp.sms +# application/vnd.3gpp2.bcmcsinfo+xml +# application/vnd.3gpp2.sms +application/vnd.3gpp2.tcap tcap +application/vnd.3m.post-it-notes pwn +application/vnd.accpac.simply.aso aso +application/vnd.accpac.simply.imp imp +application/vnd.acucobol acu +application/vnd.acucorp atc acutc +application/vnd.adobe.air-application-installer-package+zip air +application/vnd.adobe.fxp fxp fxpl +# application/vnd.adobe.partial-upload +application/vnd.adobe.xdp+xml xdp +application/vnd.adobe.xfdf xfdf +# application/vnd.aether.imp +# application/vnd.ah-barcode +application/vnd.ahead.space ahead +application/vnd.airzip.filesecure.azf azf +application/vnd.airzip.filesecure.azs azs +application/vnd.amazon.ebook azw +application/vnd.americandynamics.acc acc +application/vnd.amiga.ami ami +# application/vnd.amundsen.maze+xml +application/vnd.android.package-archive apk +application/vnd.anser-web-certificate-issue-initiation cii +application/vnd.anser-web-funds-transfer-initiation fti +application/vnd.antix.game-component atx +application/vnd.apple.installer+xml mpkg +application/vnd.apple.mpegurl m3u8 +# application/vnd.arastra.swi +application/vnd.aristanetworks.swi swi +application/vnd.astraea-software.iota iota +application/vnd.audiograph aep +# application/vnd.autopackage +# application/vnd.avistar+xml +application/vnd.blueice.multipass mpm +# application/vnd.bluetooth.ep.oob +application/vnd.bmi bmi +application/vnd.businessobjects rep +# application/vnd.cab-jscript +# application/vnd.canon-cpdl +# application/vnd.canon-lips +# application/vnd.cendio.thinlinc.clientconf +application/vnd.chemdraw+xml cdxml +application/vnd.chipnuts.karaoke-mmd mmd +application/vnd.cinderella cdy +# application/vnd.cirpack.isdn-ext +application/vnd.claymore cla +application/vnd.cloanto.rp9 rp9 +application/vnd.clonk.c4group c4g c4d c4f c4p c4u +application/vnd.cluetrust.cartomobile-config c11amc +application/vnd.cluetrust.cartomobile-config-pkg c11amz +# application/vnd.collection+json +# application/vnd.commerce-battelle +application/vnd.commonspace csp +application/vnd.contact.cmsg cdbcmsg +application/vnd.cosmocaller cmc +application/vnd.crick.clicker clkx +application/vnd.crick.clicker.keyboard clkk +application/vnd.crick.clicker.palette clkp +application/vnd.crick.clicker.template clkt +application/vnd.crick.clicker.wordbank clkw +application/vnd.criticaltools.wbs+xml wbs +application/vnd.ctc-posml pml +# application/vnd.ctct.ws+xml +# application/vnd.cups-pdf +# application/vnd.cups-postscript +application/vnd.cups-ppd ppd +# application/vnd.cups-raster +# application/vnd.cups-raw +# application/vnd.curl +application/vnd.curl.car car +application/vnd.curl.pcurl pcurl +# application/vnd.cybank +application/vnd.data-vision.rdz rdz +application/vnd.dece.data uvf uvvf uvd uvvd +application/vnd.dece.ttml+xml uvt uvvt +application/vnd.dece.unspecified uvx uvvx +application/vnd.dece.zip uvz uvvz +application/vnd.denovo.fcselayout-link fe_launch +# application/vnd.dir-bi.plate-dl-nosuffix +application/vnd.dna dna +application/vnd.dolby.mlp mlp +# application/vnd.dolby.mobile.1 +# application/vnd.dolby.mobile.2 +application/vnd.dpgraph dpg +application/vnd.dreamfactory dfac +application/vnd.dvb.ait ait +# application/vnd.dvb.dvbj +# application/vnd.dvb.esgcontainer +# application/vnd.dvb.ipdcdftnotifaccess +# application/vnd.dvb.ipdcesgaccess +# application/vnd.dvb.ipdcesgaccess2 +# application/vnd.dvb.ipdcesgpdd +# application/vnd.dvb.ipdcroaming +# application/vnd.dvb.iptv.alfec-base +# application/vnd.dvb.iptv.alfec-enhancement +# application/vnd.dvb.notif-aggregate-root+xml +# application/vnd.dvb.notif-container+xml +# application/vnd.dvb.notif-generic+xml +# application/vnd.dvb.notif-ia-msglist+xml +# application/vnd.dvb.notif-ia-registration-request+xml +# application/vnd.dvb.notif-ia-registration-response+xml +# application/vnd.dvb.notif-init+xml +# application/vnd.dvb.pfr +application/vnd.dvb.service svc +# application/vnd.dxr +application/vnd.dynageo geo +# application/vnd.easykaraoke.cdgdownload +# application/vnd.ecdis-update +application/vnd.ecowin.chart mag +# application/vnd.ecowin.filerequest +# application/vnd.ecowin.fileupdate +# application/vnd.ecowin.series +# application/vnd.ecowin.seriesrequest +# application/vnd.ecowin.seriesupdate +# application/vnd.emclient.accessrequest+xml +application/vnd.enliven nml +# application/vnd.eprints.data+xml +application/vnd.epson.esf esf +application/vnd.epson.msf msf +application/vnd.epson.quickanime qam +application/vnd.epson.salt slt +application/vnd.epson.ssf ssf +# application/vnd.ericsson.quickcall +application/vnd.eszigno3+xml es3 et3 +# application/vnd.etsi.aoc+xml +# application/vnd.etsi.cug+xml +# application/vnd.etsi.iptvcommand+xml +# application/vnd.etsi.iptvdiscovery+xml +# application/vnd.etsi.iptvprofile+xml +# application/vnd.etsi.iptvsad-bc+xml +# application/vnd.etsi.iptvsad-cod+xml +# application/vnd.etsi.iptvsad-npvr+xml +# application/vnd.etsi.iptvservice+xml +# application/vnd.etsi.iptvsync+xml +# application/vnd.etsi.iptvueprofile+xml +# application/vnd.etsi.mcid+xml +# application/vnd.etsi.overload-control-policy-dataset+xml +# application/vnd.etsi.sci+xml +# application/vnd.etsi.simservs+xml +# application/vnd.etsi.tsl+xml +# application/vnd.etsi.tsl.der +# application/vnd.eudora.data +application/vnd.ezpix-album ez2 +application/vnd.ezpix-package ez3 +# application/vnd.f-secure.mobile +application/vnd.fdf fdf +application/vnd.fdsn.mseed mseed +application/vnd.fdsn.seed seed dataless +# application/vnd.ffsns +# application/vnd.fints +application/vnd.flographit gph +application/vnd.fluxtime.clip ftc +# application/vnd.font-fontforge-sfd +application/vnd.framemaker fm frame maker book +application/vnd.frogans.fnc fnc +application/vnd.frogans.ltf ltf +application/vnd.fsc.weblaunch fsc +application/vnd.fujitsu.oasys oas +application/vnd.fujitsu.oasys2 oa2 +application/vnd.fujitsu.oasys3 oa3 +application/vnd.fujitsu.oasysgp fg5 +application/vnd.fujitsu.oasysprs bh2 +# application/vnd.fujixerox.art-ex +# application/vnd.fujixerox.art4 +# application/vnd.fujixerox.hbpl +application/vnd.fujixerox.ddd ddd +application/vnd.fujixerox.docuworks xdw +application/vnd.fujixerox.docuworks.binder xbd +# application/vnd.fut-misnet +application/vnd.fuzzysheet fzs +application/vnd.genomatix.tuxedo txd +# application/vnd.geocube+xml +application/vnd.geogebra.file ggb +application/vnd.geogebra.tool ggt +application/vnd.geometry-explorer gex gre +application/vnd.geonext gxt +application/vnd.geoplan g2w +application/vnd.geospace g3w +# application/vnd.globalplatform.card-content-mgt +# application/vnd.globalplatform.card-content-mgt-response +application/vnd.gmx gmx +application/vnd.google-earth.kml+xml kml +application/vnd.google-earth.kmz kmz +application/vnd.grafeq gqf gqs +# application/vnd.gridmp +application/vnd.groove-account gac +application/vnd.groove-help ghf +application/vnd.groove-identity-message gim +application/vnd.groove-injector grv +application/vnd.groove-tool-message gtm +application/vnd.groove-tool-template tpl +application/vnd.groove-vcard vcg +# application/vnd.hal+json +application/vnd.hal+xml hal +application/vnd.handheld-entertainment+xml zmm +application/vnd.hbci hbci +# application/vnd.hcl-bireports +application/vnd.hhe.lesson-player les +application/vnd.hp-hpgl hpgl +application/vnd.hp-hpid hpid +application/vnd.hp-hps hps +application/vnd.hp-jlyt jlt +application/vnd.hp-pcl pcl +application/vnd.hp-pclxl pclxl +# application/vnd.httphone +application/vnd.hydrostatix.sof-data sfd-hdstx +application/vnd.hzn-3d-crossword x3d +# application/vnd.ibm.afplinedata +# application/vnd.ibm.electronic-media +application/vnd.ibm.minipay mpy +application/vnd.ibm.modcap afp listafp list3820 +application/vnd.ibm.rights-management irm +application/vnd.ibm.secure-container sc +application/vnd.iccprofile icc icm +application/vnd.igloader igl +application/vnd.immervision-ivp ivp +application/vnd.immervision-ivu ivu +# application/vnd.informedcontrol.rms+xml +# application/vnd.informix-visionary +# application/vnd.infotech.project +# application/vnd.infotech.project+xml +application/vnd.insors.igm igm +application/vnd.intercon.formnet xpw xpx +application/vnd.intergeo i2g +# application/vnd.intertrust.digibox +# application/vnd.intertrust.nncp +application/vnd.intu.qbo qbo +application/vnd.intu.qfx qfx +# application/vnd.iptc.g2.conceptitem+xml +# application/vnd.iptc.g2.knowledgeitem+xml +# application/vnd.iptc.g2.newsitem+xml +# application/vnd.iptc.g2.packageitem+xml +application/vnd.ipunplugged.rcprofile rcprofile +application/vnd.irepository.package+xml irp +application/vnd.is-xpr xpr +application/vnd.isac.fcs fcs +application/vnd.jam jam +# application/vnd.japannet-directory-service +# application/vnd.japannet-jpnstore-wakeup +# application/vnd.japannet-payment-wakeup +# application/vnd.japannet-registration +# application/vnd.japannet-registration-wakeup +# application/vnd.japannet-setstore-wakeup +# application/vnd.japannet-verification +# application/vnd.japannet-verification-wakeup +application/vnd.jcp.javame.midlet-rms rms +application/vnd.jisp jisp +application/vnd.joost.joda-archive joda +application/vnd.kahootz ktz ktr +application/vnd.kde.karbon karbon +application/vnd.kde.kchart chrt +application/vnd.kde.kformula kfo +application/vnd.kde.kivio flw +application/vnd.kde.kontour kon +application/vnd.kde.kpresenter kpr kpt +application/vnd.kde.kspread ksp +application/vnd.kde.kword kwd kwt +application/vnd.kenameaapp htke +application/vnd.kidspiration kia +application/vnd.kinar kne knp +application/vnd.koan skp skd skt skm +application/vnd.kodak-descriptor sse +application/vnd.las.las+xml lasxml +# application/vnd.liberty-request+xml +application/vnd.llamagraphics.life-balance.desktop lbd +application/vnd.llamagraphics.life-balance.exchange+xml lbe +application/vnd.lotus-1-2-3 123 +application/vnd.lotus-approach apr +application/vnd.lotus-freelance pre +application/vnd.lotus-notes nsf +application/vnd.lotus-organizer org +application/vnd.lotus-screencam scm +application/vnd.lotus-wordpro lwp +application/vnd.macports.portpkg portpkg +# application/vnd.marlin.drm.actiontoken+xml +# application/vnd.marlin.drm.conftoken+xml +# application/vnd.marlin.drm.license+xml +# application/vnd.marlin.drm.mdcf +application/vnd.mcd mcd +application/vnd.medcalcdata mc1 +application/vnd.mediastation.cdkey cdkey +# application/vnd.meridian-slingshot +application/vnd.mfer mwf +application/vnd.mfmp mfm +application/vnd.micrografx.flo flo +application/vnd.micrografx.igx igx +application/vnd.mif mif +# application/vnd.minisoft-hp3000-save +# application/vnd.mitsubishi.misty-guard.trustweb +application/vnd.mobius.daf daf +application/vnd.mobius.dis dis +application/vnd.mobius.mbk mbk +application/vnd.mobius.mqy mqy +application/vnd.mobius.msl msl +application/vnd.mobius.plc plc +application/vnd.mobius.txf txf +application/vnd.mophun.application mpn +application/vnd.mophun.certificate mpc +# application/vnd.motorola.flexsuite +# application/vnd.motorola.flexsuite.adsi +# application/vnd.motorola.flexsuite.fis +# application/vnd.motorola.flexsuite.gotap +# application/vnd.motorola.flexsuite.kmr +# application/vnd.motorola.flexsuite.ttc +# application/vnd.motorola.flexsuite.wem +# application/vnd.motorola.iprm +application/vnd.mozilla.xul+xml xul +application/vnd.ms-artgalry cil +# application/vnd.ms-asf +application/vnd.ms-cab-compressed cab +application/vnd.ms-excel xls xlm xla xlc xlt xlw +application/vnd.ms-excel.addin.macroenabled.12 xlam +application/vnd.ms-excel.sheet.binary.macroenabled.12 xlsb +application/vnd.ms-excel.sheet.macroenabled.12 xlsm +application/vnd.ms-excel.template.macroenabled.12 xltm +application/vnd.ms-fontobject eot +application/vnd.ms-htmlhelp chm +application/vnd.ms-ims ims +application/vnd.ms-lrm lrm +# application/vnd.ms-office.activex+xml +application/vnd.ms-officetheme thmx +application/vnd.ms-pki.seccat cat +application/vnd.ms-pki.stl stl +# application/vnd.ms-playready.initiator+xml +application/vnd.ms-powerpoint ppt pps pot +application/vnd.ms-powerpoint.addin.macroenabled.12 ppam +application/vnd.ms-powerpoint.presentation.macroenabled.12 pptm +application/vnd.ms-powerpoint.slide.macroenabled.12 sldm +application/vnd.ms-powerpoint.slideshow.macroenabled.12 ppsm +application/vnd.ms-powerpoint.template.macroenabled.12 potm +application/vnd.ms-project mpp mpt +# application/vnd.ms-tnef +# application/vnd.ms-wmdrm.lic-chlg-req +# application/vnd.ms-wmdrm.lic-resp +# application/vnd.ms-wmdrm.meter-chlg-req +# application/vnd.ms-wmdrm.meter-resp +application/vnd.ms-word.document.macroenabled.12 docm +application/vnd.ms-word.template.macroenabled.12 dotm +application/vnd.ms-works wps wks wcm wdb +application/vnd.ms-wpl wpl +application/vnd.ms-xpsdocument xps +application/vnd.mseq mseq +# application/vnd.msign +# application/vnd.multiad.creator +# application/vnd.multiad.creator.cif +# application/vnd.music-niff +application/vnd.musician mus +application/vnd.muvee.style msty +application/vnd.mynfc taglet +# application/vnd.ncd.control +# application/vnd.ncd.reference +# application/vnd.nervana +# application/vnd.netfpx +application/vnd.neurolanguage.nlu nlu +application/vnd.noblenet-directory nnd +application/vnd.noblenet-sealer nns +application/vnd.noblenet-web nnw +# application/vnd.nokia.catalogs +# application/vnd.nokia.conml+wbxml +# application/vnd.nokia.conml+xml +# application/vnd.nokia.isds-radio-presets +# application/vnd.nokia.iptv.config+xml +# application/vnd.nokia.landmark+wbxml +# application/vnd.nokia.landmark+xml +# application/vnd.nokia.landmarkcollection+xml +# application/vnd.nokia.n-gage.ac+xml +application/vnd.nokia.n-gage.data ngdat +application/vnd.nokia.n-gage.symbian.install n-gage +# application/vnd.nokia.ncd +# application/vnd.nokia.pcd+wbxml +# application/vnd.nokia.pcd+xml +application/vnd.nokia.radio-preset rpst +application/vnd.nokia.radio-presets rpss +application/vnd.novadigm.edm edm +application/vnd.novadigm.edx edx +application/vnd.novadigm.ext ext +# application/vnd.ntt-local.file-transfer +# application/vnd.ntt-local.sip-ta_remote +# application/vnd.ntt-local.sip-ta_tcp_stream +application/vnd.oasis.opendocument.chart odc +application/vnd.oasis.opendocument.chart-template otc +application/vnd.oasis.opendocument.database odb +application/vnd.oasis.opendocument.formula odf +application/vnd.oasis.opendocument.formula-template odft +application/vnd.oasis.opendocument.graphics odg +application/vnd.oasis.opendocument.graphics-template otg +application/vnd.oasis.opendocument.image odi +application/vnd.oasis.opendocument.image-template oti +application/vnd.oasis.opendocument.presentation odp +application/vnd.oasis.opendocument.presentation-template otp +application/vnd.oasis.opendocument.spreadsheet ods +application/vnd.oasis.opendocument.spreadsheet-template ots +application/vnd.oasis.opendocument.text odt +application/vnd.oasis.opendocument.text-master odm +application/vnd.oasis.opendocument.text-template ott +application/vnd.oasis.opendocument.text-web oth +# application/vnd.obn +# application/vnd.oftn.l10n+json +# application/vnd.oipf.contentaccessdownload+xml +# application/vnd.oipf.contentaccessstreaming+xml +# application/vnd.oipf.cspg-hexbinary +# application/vnd.oipf.dae.svg+xml +# application/vnd.oipf.dae.xhtml+xml +# application/vnd.oipf.mippvcontrolmessage+xml +# application/vnd.oipf.pae.gem +# application/vnd.oipf.spdiscovery+xml +# application/vnd.oipf.spdlist+xml +# application/vnd.oipf.ueprofile+xml +# application/vnd.oipf.userprofile+xml +application/vnd.olpc-sugar xo +# application/vnd.oma-scws-config +# application/vnd.oma-scws-http-request +# application/vnd.oma-scws-http-response +# application/vnd.oma.bcast.associated-procedure-parameter+xml +# application/vnd.oma.bcast.drm-trigger+xml +# application/vnd.oma.bcast.imd+xml +# application/vnd.oma.bcast.ltkm +# application/vnd.oma.bcast.notification+xml +# application/vnd.oma.bcast.provisioningtrigger +# application/vnd.oma.bcast.sgboot +# application/vnd.oma.bcast.sgdd+xml +# application/vnd.oma.bcast.sgdu +# application/vnd.oma.bcast.simple-symbol-container +# application/vnd.oma.bcast.smartcard-trigger+xml +# application/vnd.oma.bcast.sprov+xml +# application/vnd.oma.bcast.stkm +# application/vnd.oma.cab-address-book+xml +# application/vnd.oma.cab-feature-handler+xml +# application/vnd.oma.cab-pcc+xml +# application/vnd.oma.cab-user-prefs+xml +# application/vnd.oma.dcd +# application/vnd.oma.dcdc +application/vnd.oma.dd2+xml dd2 +# application/vnd.oma.drm.risd+xml +# application/vnd.oma.group-usage-list+xml +# application/vnd.oma.pal+xml +# application/vnd.oma.poc.detailed-progress-report+xml +# application/vnd.oma.poc.final-report+xml +# application/vnd.oma.poc.groups+xml +# application/vnd.oma.poc.invocation-descriptor+xml +# application/vnd.oma.poc.optimized-progress-report+xml +# application/vnd.oma.push +# application/vnd.oma.scidm.messages+xml +# application/vnd.oma.xcap-directory+xml +# application/vnd.omads-email+xml +# application/vnd.omads-file+xml +# application/vnd.omads-folder+xml +# application/vnd.omaloc-supl-init +application/vnd.openofficeorg.extension oxt +# application/vnd.openxmlformats-officedocument.custom-properties+xml +# application/vnd.openxmlformats-officedocument.customxmlproperties+xml +# application/vnd.openxmlformats-officedocument.drawing+xml +# application/vnd.openxmlformats-officedocument.drawingml.chart+xml +# application/vnd.openxmlformats-officedocument.drawingml.chartshapes+xml +# application/vnd.openxmlformats-officedocument.drawingml.diagramcolors+xml +# application/vnd.openxmlformats-officedocument.drawingml.diagramdata+xml +# application/vnd.openxmlformats-officedocument.drawingml.diagramlayout+xml +# application/vnd.openxmlformats-officedocument.drawingml.diagramstyle+xml +# application/vnd.openxmlformats-officedocument.extended-properties+xml +# application/vnd.openxmlformats-officedocument.presentationml.commentauthors+xml +# application/vnd.openxmlformats-officedocument.presentationml.comments+xml +# application/vnd.openxmlformats-officedocument.presentationml.handoutmaster+xml +# application/vnd.openxmlformats-officedocument.presentationml.notesmaster+xml +# application/vnd.openxmlformats-officedocument.presentationml.notesslide+xml +application/vnd.openxmlformats-officedocument.presentationml.presentation pptx +# application/vnd.openxmlformats-officedocument.presentationml.presentation.main+xml +# application/vnd.openxmlformats-officedocument.presentationml.presprops+xml +application/vnd.openxmlformats-officedocument.presentationml.slide sldx +# application/vnd.openxmlformats-officedocument.presentationml.slide+xml +# application/vnd.openxmlformats-officedocument.presentationml.slidelayout+xml +# application/vnd.openxmlformats-officedocument.presentationml.slidemaster+xml +application/vnd.openxmlformats-officedocument.presentationml.slideshow ppsx +# application/vnd.openxmlformats-officedocument.presentationml.slideshow.main+xml +# application/vnd.openxmlformats-officedocument.presentationml.slideupdateinfo+xml +# application/vnd.openxmlformats-officedocument.presentationml.tablestyles+xml +# application/vnd.openxmlformats-officedocument.presentationml.tags+xml +application/vnd.openxmlformats-officedocument.presentationml.template potx +# application/vnd.openxmlformats-officedocument.presentationml.template.main+xml +# application/vnd.openxmlformats-officedocument.presentationml.viewprops+xml +# application/vnd.openxmlformats-officedocument.spreadsheetml.calcchain+xml +# application/vnd.openxmlformats-officedocument.spreadsheetml.chartsheet+xml +# application/vnd.openxmlformats-officedocument.spreadsheetml.comments+xml +# application/vnd.openxmlformats-officedocument.spreadsheetml.connections+xml +# application/vnd.openxmlformats-officedocument.spreadsheetml.dialogsheet+xml +# application/vnd.openxmlformats-officedocument.spreadsheetml.externallink+xml +# application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcachedefinition+xml +# application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcacherecords+xml +# application/vnd.openxmlformats-officedocument.spreadsheetml.pivottable+xml +# application/vnd.openxmlformats-officedocument.spreadsheetml.querytable+xml +# application/vnd.openxmlformats-officedocument.spreadsheetml.revisionheaders+xml +# application/vnd.openxmlformats-officedocument.spreadsheetml.revisionlog+xml +# application/vnd.openxmlformats-officedocument.spreadsheetml.sharedstrings+xml +application/vnd.openxmlformats-officedocument.spreadsheetml.sheet xlsx +# application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml +# application/vnd.openxmlformats-officedocument.spreadsheetml.sheetmetadata+xml +# application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml +# application/vnd.openxmlformats-officedocument.spreadsheetml.table+xml +# application/vnd.openxmlformats-officedocument.spreadsheetml.tablesinglecells+xml +application/vnd.openxmlformats-officedocument.spreadsheetml.template xltx +# application/vnd.openxmlformats-officedocument.spreadsheetml.template.main+xml +# application/vnd.openxmlformats-officedocument.spreadsheetml.usernames+xml +# application/vnd.openxmlformats-officedocument.spreadsheetml.volatiledependencies+xml +# application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml +# application/vnd.openxmlformats-officedocument.theme+xml +# application/vnd.openxmlformats-officedocument.themeoverride+xml +# application/vnd.openxmlformats-officedocument.vmldrawing +# application/vnd.openxmlformats-officedocument.wordprocessingml.comments+xml +application/vnd.openxmlformats-officedocument.wordprocessingml.document docx +# application/vnd.openxmlformats-officedocument.wordprocessingml.document.glossary+xml +# application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml +# application/vnd.openxmlformats-officedocument.wordprocessingml.endnotes+xml +# application/vnd.openxmlformats-officedocument.wordprocessingml.fonttable+xml +# application/vnd.openxmlformats-officedocument.wordprocessingml.footer+xml +# application/vnd.openxmlformats-officedocument.wordprocessingml.footnotes+xml +# application/vnd.openxmlformats-officedocument.wordprocessingml.numbering+xml +# application/vnd.openxmlformats-officedocument.wordprocessingml.settings+xml +# application/vnd.openxmlformats-officedocument.wordprocessingml.styles+xml +application/vnd.openxmlformats-officedocument.wordprocessingml.template dotx +# application/vnd.openxmlformats-officedocument.wordprocessingml.template.main+xml +# application/vnd.openxmlformats-officedocument.wordprocessingml.websettings+xml +# application/vnd.openxmlformats-package.core-properties+xml +# application/vnd.openxmlformats-package.digital-signature-xmlsignature+xml +# application/vnd.openxmlformats-package.relationships+xml +# application/vnd.quobject-quoxdocument +# application/vnd.osa.netdeploy +application/vnd.osgeo.mapguide.package mgp +# application/vnd.osgi.bundle +application/vnd.osgi.dp dp +# application/vnd.otps.ct-kip+xml +application/vnd.palm pdb pqa oprc +# application/vnd.paos.xml +application/vnd.pawaafile paw +application/vnd.pg.format str +application/vnd.pg.osasli ei6 +# application/vnd.piaccess.application-licence +application/vnd.picsel efif +application/vnd.pmi.widget wg +# application/vnd.poc.group-advertisement+xml +application/vnd.pocketlearn plf +application/vnd.powerbuilder6 pbd +# application/vnd.powerbuilder6-s +# application/vnd.powerbuilder7 +# application/vnd.powerbuilder7-s +# application/vnd.powerbuilder75 +# application/vnd.powerbuilder75-s +# application/vnd.preminet +application/vnd.previewsystems.box box +application/vnd.proteus.magazine mgz +application/vnd.publishare-delta-tree qps +application/vnd.pvi.ptid1 ptid +# application/vnd.pwg-multiplexed +# application/vnd.pwg-xhtml-print+xml +# application/vnd.qualcomm.brew-app-res +application/vnd.quark.quarkxpress qxd qxt qwd qwt qxl qxb +# application/vnd.radisys.moml+xml +# application/vnd.radisys.msml+xml +# application/vnd.radisys.msml-audit+xml +# application/vnd.radisys.msml-audit-conf+xml +# application/vnd.radisys.msml-audit-conn+xml +# application/vnd.radisys.msml-audit-dialog+xml +# application/vnd.radisys.msml-audit-stream+xml +# application/vnd.radisys.msml-conf+xml +# application/vnd.radisys.msml-dialog+xml +# application/vnd.radisys.msml-dialog-base+xml +# application/vnd.radisys.msml-dialog-fax-detect+xml +# application/vnd.radisys.msml-dialog-fax-sendrecv+xml +# application/vnd.radisys.msml-dialog-group+xml +# application/vnd.radisys.msml-dialog-speech+xml +# application/vnd.radisys.msml-dialog-transform+xml +# application/vnd.rainstor.data +# application/vnd.rapid +application/vnd.realvnc.bed bed +application/vnd.recordare.musicxml mxl +application/vnd.recordare.musicxml+xml musicxml +# application/vnd.renlearn.rlprint +application/vnd.rig.cryptonote cryptonote +application/vnd.rim.cod cod +application/vnd.rn-realmedia rm +application/vnd.route66.link66+xml link66 +# application/vnd.ruckus.download +# application/vnd.s3sms +application/vnd.sailingtracker.track st +# application/vnd.sbm.cid +# application/vnd.sbm.mid2 +# application/vnd.scribus +# application/vnd.sealed.3df +# application/vnd.sealed.csf +# application/vnd.sealed.doc +# application/vnd.sealed.eml +# application/vnd.sealed.mht +# application/vnd.sealed.net +# application/vnd.sealed.ppt +# application/vnd.sealed.tiff +# application/vnd.sealed.xls +# application/vnd.sealedmedia.softseal.html +# application/vnd.sealedmedia.softseal.pdf +application/vnd.seemail see +application/vnd.sema sema +application/vnd.semd semd +application/vnd.semf semf +application/vnd.shana.informed.formdata ifm +application/vnd.shana.informed.formtemplate itp +application/vnd.shana.informed.interchange iif +application/vnd.shana.informed.package ipk +application/vnd.simtech-mindmapper twd twds +application/vnd.smaf mmf +# application/vnd.smart.notebook +application/vnd.smart.teacher teacher +# application/vnd.software602.filler.form+xml +# application/vnd.software602.filler.form-xml-zip +application/vnd.solent.sdkm+xml sdkm sdkd +application/vnd.spotfire.dxp dxp +application/vnd.spotfire.sfs sfs +# application/vnd.sss-cod +# application/vnd.sss-dtf +# application/vnd.sss-ntf +application/vnd.stardivision.calc sdc +application/vnd.stardivision.draw sda +application/vnd.stardivision.impress sdd +application/vnd.stardivision.math smf +application/vnd.stardivision.writer sdw vor +application/vnd.stardivision.writer-global sgl +application/vnd.stepmania.package smzip +application/vnd.stepmania.stepchart sm +# application/vnd.street-stream +application/vnd.sun.xml.calc sxc +application/vnd.sun.xml.calc.template stc +application/vnd.sun.xml.draw sxd +application/vnd.sun.xml.draw.template std +application/vnd.sun.xml.impress sxi +application/vnd.sun.xml.impress.template sti +application/vnd.sun.xml.math sxm +application/vnd.sun.xml.writer sxw +application/vnd.sun.xml.writer.global sxg +application/vnd.sun.xml.writer.template stw +# application/vnd.sun.wadl+xml +application/vnd.sus-calendar sus susp +application/vnd.svd svd +# application/vnd.swiftview-ics +application/vnd.symbian.install sis sisx +application/vnd.syncml+xml xsm +application/vnd.syncml.dm+wbxml bdm +application/vnd.syncml.dm+xml xdm +# application/vnd.syncml.dm.notification +# application/vnd.syncml.ds.notification +application/vnd.tao.intent-module-archive tao +application/vnd.tcpdump.pcap pcap cap dmp +application/vnd.tmobile-livetv tmo +application/vnd.trid.tpt tpt +application/vnd.triscape.mxs mxs +application/vnd.trueapp tra +# application/vnd.truedoc +# application/vnd.ubisoft.webplayer +application/vnd.ufdl ufd ufdl +application/vnd.uiq.theme utz +application/vnd.umajin umj +application/vnd.unity unityweb +application/vnd.uoml+xml uoml +# application/vnd.uplanet.alert +# application/vnd.uplanet.alert-wbxml +# application/vnd.uplanet.bearer-choice +# application/vnd.uplanet.bearer-choice-wbxml +# application/vnd.uplanet.cacheop +# application/vnd.uplanet.cacheop-wbxml +# application/vnd.uplanet.channel +# application/vnd.uplanet.channel-wbxml +# application/vnd.uplanet.list +# application/vnd.uplanet.list-wbxml +# application/vnd.uplanet.listcmd +# application/vnd.uplanet.listcmd-wbxml +# application/vnd.uplanet.signal +application/vnd.vcx vcx +# application/vnd.vd-study +# application/vnd.vectorworks +# application/vnd.verimatrix.vcas +# application/vnd.vidsoft.vidconference +application/vnd.visio vsd vst vss vsw +application/vnd.visionary vis +# application/vnd.vividence.scriptfile +application/vnd.vsf vsf +# application/vnd.wap.sic +# application/vnd.wap.slc +application/vnd.wap.wbxml wbxml +application/vnd.wap.wmlc wmlc +application/vnd.wap.wmlscriptc wmlsc +application/vnd.webturbo wtb +# application/vnd.wfa.wsc +# application/vnd.wmc +# application/vnd.wmf.bootstrap +# application/vnd.wolfram.mathematica +# application/vnd.wolfram.mathematica.package +application/vnd.wolfram.player nbp +application/vnd.wordperfect wpd +application/vnd.wqd wqd +# application/vnd.wrq-hp3000-labelled +application/vnd.wt.stf stf +# application/vnd.wv.csp+wbxml +# application/vnd.wv.csp+xml +# application/vnd.wv.ssp+xml +application/vnd.xara xar +application/vnd.xfdl xfdl +# application/vnd.xfdl.webform +# application/vnd.xmi+xml +# application/vnd.xmpie.cpkg +# application/vnd.xmpie.dpkg +# application/vnd.xmpie.plan +# application/vnd.xmpie.ppkg +# application/vnd.xmpie.xlim +application/vnd.yamaha.hv-dic hvd +application/vnd.yamaha.hv-script hvs +application/vnd.yamaha.hv-voice hvp +application/vnd.yamaha.openscoreformat osf +application/vnd.yamaha.openscoreformat.osfpvg+xml osfpvg +# application/vnd.yamaha.remote-setup +application/vnd.yamaha.smaf-audio saf +application/vnd.yamaha.smaf-phrase spf +# application/vnd.yamaha.through-ngn +# application/vnd.yamaha.tunnel-udpencap +application/vnd.yellowriver-custom-menu cmp +application/vnd.zul zir zirz +application/vnd.zzazz.deck+xml zaz +application/voicexml+xml vxml +# application/vq-rtcpxr +# application/watcherinfo+xml +# application/whoispp-query +# application/whoispp-response +application/widget wgt +application/winhlp hlp +# application/wita +# application/wordperfect5.1 +application/wsdl+xml wsdl +application/wspolicy+xml wspolicy +application/x-7z-compressed 7z +application/x-abiword abw +application/x-ace-compressed ace +application/x-authorware-bin aab x32 u32 vox +application/x-authorware-map aam +application/x-authorware-seg aas +application/x-bcpio bcpio +application/x-bittorrent torrent +application/x-bzip bz +application/x-bzip2 bz2 boz +application/x-cdlink vcd +application/x-chat chat +application/x-chess-pgn pgn +# application/x-compress +application/x-cpio cpio +application/x-csh csh +application/x-debian-package deb udeb +application/x-director dir dcr dxr cst cct cxt w3d fgd swa +application/x-doom wad +application/x-dtbncx+xml ncx +application/x-dtbook+xml dtb +application/x-dtbresource+xml res +application/x-dvi dvi +application/x-font-bdf bdf +# application/x-font-dos +# application/x-font-framemaker +application/x-font-ghostscript gsf +# application/x-font-libgrx +application/x-font-linux-psf psf +application/x-font-otf otf +application/x-font-pcf pcf +application/x-font-snf snf +# application/x-font-speedo +# application/x-font-sunos-news +application/x-font-ttf ttf ttc +application/x-font-type1 pfa pfb pfm afm +application/x-font-woff woff +# application/x-font-vfont +application/x-futuresplash spl +application/x-gnumeric gnumeric +application/x-gtar gtar +# application/x-gzip +application/x-hdf hdf +application/x-java-jnlp-file jnlp +application/x-latex latex +application/x-mobipocket-ebook prc mobi +application/x-ms-application application +application/x-ms-wmd wmd +application/x-ms-wmz wmz +application/x-ms-xbap xbap +application/x-msaccess mdb +application/x-msbinder obd +application/x-mscardfile crd +application/x-msclip clp +application/x-msdownload exe dll com bat msi +application/x-msmediaview mvb m13 m14 +application/x-msmetafile wmf +application/x-msmoney mny +application/x-mspublisher pub +application/x-msschedule scd +application/x-msterminal trm +application/x-mswrite wri +application/x-netcdf nc cdf +application/x-pkcs12 p12 pfx +application/x-pkcs7-certificates p7b spc +application/x-pkcs7-certreqresp p7r +application/x-rar-compressed rar +application/x-sh sh +application/x-shar shar +application/x-shockwave-flash swf +application/x-silverlight-app xap +application/x-stuffit sit +application/x-stuffitx sitx +application/x-sv4cpio sv4cpio +application/x-sv4crc sv4crc +application/x-tar tar +application/x-tcl tcl +application/x-tex tex +application/x-tex-tfm tfm +application/x-texinfo texinfo texi +application/x-ustar ustar +application/x-wais-source src +application/x-x509-ca-cert der crt +application/x-xfig fig +application/x-xpinstall xpi +# application/x400-bp +# application/xcap-att+xml +# application/xcap-caps+xml +application/xcap-diff+xml xdf +# application/xcap-el+xml +# application/xcap-error+xml +# application/xcap-ns+xml +# application/xcon-conference-info-diff+xml +# application/xcon-conference-info+xml +application/xenc+xml xenc +application/xhtml+xml xhtml xht +# application/xhtml-voice+xml +application/xml xml xsl +application/xml-dtd dtd +# application/xml-external-parsed-entity +# application/xmpp+xml +application/xop+xml xop +application/xslt+xml xslt +application/xspf+xml xspf +application/xv+xml mxml xhvml xvml xvm +application/yang yang +application/yin+xml yin +application/zip zip +# audio/1d-interleaved-parityfec +# audio/32kadpcm +# audio/3gpp +# audio/3gpp2 +# audio/ac3 +audio/adpcm adp +# audio/amr +# audio/amr-wb +# audio/amr-wb+ +# audio/asc +# audio/atrac-advanced-lossless +# audio/atrac-x +# audio/atrac3 +audio/basic au snd +# audio/bv16 +# audio/bv32 +# audio/clearmode +# audio/cn +# audio/dat12 +# audio/dls +# audio/dsr-es201108 +# audio/dsr-es202050 +# audio/dsr-es202211 +# audio/dsr-es202212 +# audio/dv +# audio/dvi4 +# audio/eac3 +# audio/evrc +# audio/evrc-qcp +# audio/evrc0 +# audio/evrc1 +# audio/evrcb +# audio/evrcb0 +# audio/evrcb1 +# audio/evrcwb +# audio/evrcwb0 +# audio/evrcwb1 +# audio/example +# audio/fwdred +# audio/g719 +# audio/g722 +# audio/g7221 +# audio/g723 +# audio/g726-16 +# audio/g726-24 +# audio/g726-32 +# audio/g726-40 +# audio/g728 +# audio/g729 +# audio/g7291 +# audio/g729d +# audio/g729e +# audio/gsm +# audio/gsm-efr +# audio/gsm-hr-08 +# audio/ilbc +# audio/ip-mr_v2.5 +# audio/l16 +# audio/l20 +# audio/l24 +# audio/l8 +# audio/lpc +audio/midi mid midi kar rmi +# audio/mobile-xmf +audio/mp4 mp4a +# audio/mp4a-latm +# audio/mpa +# audio/mpa-robust +audio/mpeg mpga mp2 mp2a mp3 m2a m3a +# audio/mpeg4-generic +audio/ogg oga ogg spx +# audio/parityfec +# audio/pcma +# audio/pcma-wb +# audio/pcmu-wb +# audio/pcmu +# audio/prs.sid +# audio/qcelp +# audio/red +# audio/rtp-enc-aescm128 +# audio/rtp-midi +# audio/rtx +# audio/smv +# audio/smv0 +# audio/smv-qcp +# audio/sp-midi +# audio/speex +# audio/t140c +# audio/t38 +# audio/telephone-event +# audio/tone +# audio/uemclip +# audio/ulpfec +# audio/vdvi +# audio/vmr-wb +# audio/vnd.3gpp.iufp +# audio/vnd.4sb +# audio/vnd.audiokoz +# audio/vnd.celp +# audio/vnd.cisco.nse +# audio/vnd.cmles.radio-events +# audio/vnd.cns.anp1 +# audio/vnd.cns.inf1 +audio/vnd.dece.audio uva uvva +audio/vnd.digital-winds eol +# audio/vnd.dlna.adts +# audio/vnd.dolby.heaac.1 +# audio/vnd.dolby.heaac.2 +# audio/vnd.dolby.mlp +# audio/vnd.dolby.mps +# audio/vnd.dolby.pl2 +# audio/vnd.dolby.pl2x +# audio/vnd.dolby.pl2z +# audio/vnd.dolby.pulse.1 +audio/vnd.dra dra +audio/vnd.dts dts +audio/vnd.dts.hd dtshd +# audio/vnd.dvb.file dvb +# audio/vnd.everad.plj +# audio/vnd.hns.audio +audio/vnd.lucent.voice lvp +audio/vnd.ms-playready.media.pya pya +# audio/vnd.nokia.mobile-xmf +# audio/vnd.nortel.vbk +audio/vnd.nuera.ecelp4800 ecelp4800 +audio/vnd.nuera.ecelp7470 ecelp7470 +audio/vnd.nuera.ecelp9600 ecelp9600 +# audio/vnd.octel.sbc +# audio/vnd.qcelp +# audio/vnd.rhetorex.32kadpcm +audio/vnd.rip rip +# audio/vnd.sealedmedia.softseal.mpeg +# audio/vnd.vmx.cvsd +# audio/vorbis +# audio/vorbis-config +audio/webm weba +audio/x-aac aac +audio/x-aiff aif aiff aifc +audio/x-mpegurl m3u +audio/x-ms-wax wax +audio/x-ms-wma wma +audio/x-pn-realaudio ram ra +audio/x-pn-realaudio-plugin rmp +audio/x-wav wav +chemical/x-cdx cdx +chemical/x-cif cif +chemical/x-cmdf cmdf +chemical/x-cml cml +chemical/x-csml csml +# chemical/x-pdb +chemical/x-xyz xyz +image/bmp bmp +image/cgm cgm +# image/example +# image/fits +image/g3fax g3 +image/gif gif +image/ief ief +# image/jp2 +image/jpeg jpeg jpg jpe +# image/jpm +# image/jpx +image/ktx ktx +# image/naplps +image/png png +image/prs.btif btif +# image/prs.pti +image/svg+xml svg svgz +# image/t38 +image/tiff tiff tif +# image/tiff-fx +image/vnd.adobe.photoshop psd +# image/vnd.cns.inf2 +image/vnd.dece.graphic uvi uvvi uvg uvvg +image/vnd.dvb.subtitle sub +image/vnd.djvu djvu djv +image/vnd.dwg dwg +image/vnd.dxf dxf +image/vnd.fastbidsheet fbs +image/vnd.fpx fpx +image/vnd.fst fst +image/vnd.fujixerox.edmics-mmr mmr +image/vnd.fujixerox.edmics-rlc rlc +# image/vnd.globalgraphics.pgb +# image/vnd.microsoft.icon +# image/vnd.mix +image/vnd.ms-modi mdi +image/vnd.net-fpx npx +# image/vnd.radiance +# image/vnd.sealed.png +# image/vnd.sealedmedia.softseal.gif +# image/vnd.sealedmedia.softseal.jpg +# image/vnd.svf +image/vnd.wap.wbmp wbmp +image/vnd.xiff xif +image/webp webp +image/x-cmu-raster ras +image/x-cmx cmx +image/x-freehand fh fhc fh4 fh5 fh7 +image/x-icon ico +image/x-pcx pcx +image/x-pict pic pct +image/x-portable-anymap pnm +image/x-portable-bitmap pbm +image/x-portable-graymap pgm +image/x-portable-pixmap ppm +image/x-rgb rgb +image/x-xbitmap xbm +image/x-xpixmap xpm +image/x-xwindowdump xwd +# message/cpim +# message/delivery-status +# message/disposition-notification +# message/example +# message/external-body +# message/feedback-report +# message/global +# message/global-delivery-status +# message/global-disposition-notification +# message/global-headers +# message/http +# message/imdn+xml +# message/news +# message/partial +message/rfc822 eml mime +# message/s-http +# message/sip +# message/sipfrag +# message/tracking-status +# message/vnd.si.simp +# model/example +model/iges igs iges +model/mesh msh mesh silo +model/vnd.collada+xml dae +model/vnd.dwf dwf +# model/vnd.flatland.3dml +model/vnd.gdl gdl +# model/vnd.gs-gdl +# model/vnd.gs.gdl +model/vnd.gtw gtw +# model/vnd.moml+xml +model/vnd.mts mts +# model/vnd.parasolid.transmit.binary +# model/vnd.parasolid.transmit.text +model/vnd.vtu vtu +model/vrml wrl vrml +# multipart/alternative +# multipart/appledouble +# multipart/byteranges +# multipart/digest +# multipart/encrypted +# multipart/example +# multipart/form-data +# multipart/header-set +# multipart/mixed +# multipart/parallel +# multipart/related +# multipart/report +# multipart/signed +# multipart/voice-message +# text/1d-interleaved-parityfec +text/calendar ics ifb +text/css css +text/csv csv +# text/directory +# text/dns +# text/ecmascript +# text/enriched +# text/example +# text/fwdred +text/html html htm +# text/javascript +text/n3 n3 +# text/parityfec +text/plain txt text conf def list log in +# text/prs.fallenstein.rst +text/prs.lines.tag dsc +# text/vnd.radisys.msml-basic-layout +# text/red +# text/rfc822-headers +text/richtext rtx +# text/rtf +# text/rtp-enc-aescm128 +# text/rtx +text/sgml sgml sgm +# text/t140 +text/tab-separated-values tsv +text/troff t tr roff man me ms +text/turtle ttl +# text/ulpfec +text/uri-list uri uris urls +text/vcard vcard +# text/vnd.abc +text/vnd.curl curl +text/vnd.curl.dcurl dcurl +text/vnd.curl.scurl scurl +text/vnd.curl.mcurl mcurl +# text/vnd.dmclientscript +text/vnd.dvb.subtitle sub +# text/vnd.esmertec.theme-descriptor +text/vnd.fly fly +text/vnd.fmi.flexstor flx +text/vnd.graphviz gv +text/vnd.in3d.3dml 3dml +text/vnd.in3d.spot spot +# text/vnd.iptc.newsml +# text/vnd.iptc.nitf +# text/vnd.latex-z +# text/vnd.motorola.reflex +# text/vnd.ms-mediapackage +# text/vnd.net2phone.commcenter.command +# text/vnd.si.uricatalogue +text/vnd.sun.j2me.app-descriptor jad +# text/vnd.trolltech.linguist +# text/vnd.wap.si +# text/vnd.wap.sl +text/vnd.wap.wml wml +text/vnd.wap.wmlscript wmls +text/x-asm s asm +text/x-c c cc cxx cpp h hh dic +text/x-fortran f for f77 f90 +text/x-pascal p pas +text/x-java-source java +text/x-setext etx +text/x-uuencode uu +text/x-vcalendar vcs +text/x-vcard vcf +# text/xml +# text/xml-external-parsed-entity +# video/1d-interleaved-parityfec +video/3gpp 3gp +# video/3gpp-tt +video/3gpp2 3g2 +# video/bmpeg +# video/bt656 +# video/celb +# video/dv +# video/example +video/h261 h261 +video/h263 h263 +# video/h263-1998 +# video/h263-2000 +video/h264 h264 +# video/h264-rcdo +# video/h264-svc +video/jpeg jpgv +# video/jpeg2000 +video/jpm jpm jpgm +video/mj2 mj2 mjp2 +# video/mp1s +# video/mp2p +# video/mp2t +video/mp4 mp4 mp4v mpg4 +# video/mp4v-es +video/mpeg mpeg mpg mpe m1v m2v +# video/mpeg4-generic +# video/mpv +# video/nv +video/ogg ogv +# video/parityfec +# video/pointer +video/quicktime qt mov +# video/raw +# video/rtp-enc-aescm128 +# video/rtx +# video/smpte292m +# video/ulpfec +# video/vc1 +# video/vnd.cctv +video/vnd.dece.hd uvh uvvh +video/vnd.dece.mobile uvm uvvm +# video/vnd.dece.mp4 +video/vnd.dece.pd uvp uvvp +video/vnd.dece.sd uvs uvvs +video/vnd.dece.video uvv uvvv +# video/vnd.directv.mpeg +# video/vnd.directv.mpeg-tts +# video/vnd.dlna.mpeg-tts +video/vnd.dvb.file dvb +video/vnd.fvt fvt +# video/vnd.hns.video +# video/vnd.iptvforum.1dparityfec-1010 +# video/vnd.iptvforum.1dparityfec-2005 +# video/vnd.iptvforum.2dparityfec-1010 +# video/vnd.iptvforum.2dparityfec-2005 +# video/vnd.iptvforum.ttsavc +# video/vnd.iptvforum.ttsmpeg2 +# video/vnd.motorola.video +# video/vnd.motorola.videop +video/vnd.mpegurl mxu m4u +video/vnd.ms-playready.media.pyv pyv +# video/vnd.nokia.interleaved-multimedia +# video/vnd.nokia.videovoip +# video/vnd.objectvideo +# video/vnd.sealed.mpeg1 +# video/vnd.sealed.mpeg4 +# video/vnd.sealed.swf +# video/vnd.sealedmedia.softseal.mov +video/vnd.uvvu.mp4 uvu uvvu +video/vnd.vivo viv +video/webm webm +video/x-f4v f4v +video/x-fli fli +video/x-flv flv +video/x-m4v m4v +video/x-ms-asf asf asx +video/x-ms-wm wm +video/x-ms-wmv wmv +video/x-ms-wmx wmx +video/x-ms-wvx wvx +video/x-msvideo avi +video/x-sgi-movie movie +x-conference/x-cooltalk ice diff --git a/node_modules/express/node_modules/send/node_modules/mime/types/node.types b/node_modules/express/node_modules/send/node_modules/mime/types/node.types new file mode 100644 index 0000000..b7fe8c0 --- /dev/null +++ b/node_modules/express/node_modules/send/node_modules/mime/types/node.types @@ -0,0 +1,65 @@ +# What: Google Chrome Extension +# Why: To allow apps to (work) be served with the right content type header. +# http://codereview.chromium.org/2830017 +# Added by: niftylettuce +application/x-chrome-extension crx + +# What: OTF Message Silencer +# Why: To silence the "Resource interpreted as font but transferred with MIME +# type font/otf" message that occurs in Google Chrome +# Added by: niftylettuce +font/opentype otf + +# What: HTC support +# Why: To properly render .htc files such as CSS3PIE +# Added by: niftylettuce +text/x-component htc + +# What: HTML5 application cache manifest +# Why: De-facto standard. Required by Mozilla browser when serving HTML5 apps +# per https://developer.mozilla.org/en/offline_resources_in_firefox +# Added by: louisremi +text/cache-manifest appcache manifest + +# What: node binary buffer format +# Why: semi-standard extension w/in the node community +# Added by: tootallnate +application/octet-stream buffer + +# What: The "protected" MP-4 formats used by iTunes. +# Why: Required for streaming music to browsers (?) +# Added by: broofa +application/mp4 m4p +audio/mp4 m4a + +# What: Music playlist format (http://en.wikipedia.org/wiki/M3U) +# Why: See https://github.com/bentomas/node-mime/pull/6 +# Added by: mjrusso +application/x-mpegURL m3u8 + +# What: Video format, Part of RFC1890 +# Why: See https://github.com/bentomas/node-mime/pull/6 +# Added by: mjrusso +video/MP2T ts + +# What: The FLAC lossless codec format +# Why: Streaming and serving FLAC audio +# Added by: jacobrask +audio/flac flac + +# What: EventSource mime type +# Why: mime type of Server-Sent Events stream +# http://www.w3.org/TR/eventsource/#text-event-stream +# Added by: francois2metz +text/event-stream event-stream + +# What: Mozilla App manifest mime type +# Why: https://developer.mozilla.org/en/Apps/Manifest#Serving_manifests +# Added by: ednapiranha +application/x-web-app-manifest+json webapp + +# What: Matroska Mime Types +# Why: http://en.wikipedia.org/wiki/Matroska +# Added by: aduncan88 +video/x-matroska mkv +audio/x-matroska mka diff --git a/node_modules/express/node_modules/send/package.json b/node_modules/express/node_modules/send/package.json new file mode 100644 index 0000000..ca87cad --- /dev/null +++ b/node_modules/express/node_modules/send/package.json @@ -0,0 +1,38 @@ +{ + "name": "send", + "version": "0.1.0", + "description": "Better streaming static file server with Range and conditional-GET support", + "keywords": [ + "static", + "file", + "server" + ], + "author": { + "name": "TJ Holowaychuk", + "email": "tj@vision-media.ca" + }, + "dependencies": { + "debug": "*", + "mime": "1.2.6", + "fresh": "0.1.0", + "range-parser": "0.0.4" + }, + "devDependencies": { + "mocha": "*", + "should": "*", + "supertest": "0.0.1", + "connect": "2.x" + }, + "scripts": { + "test": "make test" + }, + "main": "index", + "readme": "\n# send\n\n Send is Connect's `static()` extracted for generalized use, a streaming static file\n server supporting partial responses (Ranges), conditional-GET negotiation, high test coverage, and granular events which may be leveraged to take appropriate actions in your application or framework.\n\n## Installation\n\n $ npm install send\n\n## Examples\n\n Small:\n\n```js\nvar http = require('http');\nvar send = require('send');\n\nvar app = http.createServer(function(req, res){\n send(req, req.url).pipe(res);\n});\n```\n\n Serving from a root directory with custom error-handling:\n\n```js\nvar http = require('http');\nvar send = require('send');\n\nvar app = http.createServer(function(req, res){\n // your custom error-handling logic:\n function error(err) {\n res.statusCode = err.status || 500;\n res.end(err.message);\n }\n\n // your custom directory handling logic:\n function redirect() {\n res.statusCode = 301;\n res.setHeader('Location', req.url + '/');\n res.end('Redirecting to ' + req.url + '/');\n }\n\n // transfer arbitrary files from within\n // /www/example.com/public/*\n send(req, url.parse(req.url).pathname)\n .root('/www/example.com/public')\n .on('error', error)\n .on('directory', redirect)\n .pipe(res);\n});\n```\n\n## API\n\n### Events\n\n - `error` an error occurred `(err)`\n - `directory` a directory was requested\n - `stream` file streaming has started `(stream)`\n - `end` streaming has completed\n\n### .root(dir)\n\n Serve files relative to `path`. Aliased as `.from(dir)`.\n\n### .index(path)\n\n By default send supports \"index.html\" files, to disable this\n invoke `.index(false)` or to supply a new index pass a string.\n\n### .maxage(ms)\n\n Provide a max-age in milliseconds for http caching, defaults to 0.\n\n## Error-handling\n\n By default when no `error` listeners are present an automatic response will be made, otherwise you have full control over the response, aka you may show a 5xx page etc.\n\n## Caching\n\n It does _not_ perform internal caching, you should use a reverse proxy cache such\n as Varnish for this, or those fancy things called CDNs. If your application is small enough that it would benefit from single-node memory caching, it's small enough that it does not need caching at all ;).\n\n## Debugging\n\n To enable `debug()` instrumentation output export __DEBUG__:\n\n```\n$ DEBUG=send node app\n```\n\n## Running tests\n\n```\n$ npm install\n$ make test\n```\n\n## License \n\n(The MIT License)\n\nCopyright (c) 2012 TJ Holowaychuk <tj@vision-media.ca>\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n'Software'), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.", + "readmeFilename": "Readme.md", + "_id": "send@0.1.0", + "dist": { + "shasum": "373fed3d0f53ff91a76de8dc2edbf6aa7f311877" + }, + "_from": "send@0.1.0", + "_resolved": "https://registry.npmjs.org/send/-/send-0.1.0.tgz" +} diff --git a/node_modules/express/package.json b/node_modules/express/package.json new file mode 100644 index 0000000..6586770 --- /dev/null +++ b/node_modules/express/package.json @@ -0,0 +1,85 @@ +{ + "name": "express", + "description": "Sinatra inspired web development framework", + "version": "3.1.0", + "author": { + "name": "TJ Holowaychuk", + "email": "tj@vision-media.ca" + }, + "contributors": [ + { + "name": "TJ Holowaychuk", + "email": "tj@vision-media.ca" + }, + { + "name": "Aaron Heckmann", + "email": "aaron.heckmann+github@gmail.com" + }, + { + "name": "Ciaran Jessup", + "email": "ciaranj@gmail.com" + }, + { + "name": "Guillermo Rauch", + "email": "rauchg@gmail.com" + } + ], + "dependencies": { + "connect": "2.7.2", + "commander": "0.6.1", + "range-parser": "0.0.4", + "mkdirp": "0.3.3", + "cookie": "0.0.5", + "buffer-crc32": "0.1.1", + "fresh": "0.1.0", + "methods": "0.0.1", + "send": "0.1.0", + "cookie-signature": "0.0.1", + "debug": "*" + }, + "devDependencies": { + "ejs": "*", + "mocha": "*", + "jade": "*", + "hjs": "*", + "stylus": "*", + "should": "*", + "connect-redis": "*", + "github-flavored-markdown": "*", + "supertest": "0.0.1" + }, + "keywords": [ + "express", + "framework", + "sinatra", + "web", + "rest", + "restful", + "router", + "app", + "api" + ], + "repository": { + "type": "git", + "url": "git://github.com/visionmedia/express" + }, + "main": "index", + "bin": { + "express": "./bin/express" + }, + "scripts": { + "prepublish": "npm prune", + "test": "make test" + }, + "engines": { + "node": "*" + }, + "readme": "![express logo](http://f.cl.ly/items/0V2S1n0K1i3y1c122g04/Screen%20Shot%202012-04-11%20at%209.59.42%20AM.png)\n\n Fast, unopinionated, minimalist web framework for [node](http://nodejs.org). [![Build Status](https://secure.travis-ci.org/visionmedia/express.png)](http://travis-ci.org/visionmedia/express)\n\n```js\nvar express = require('express');\nvar app = express();\n\napp.get('/', function(req, res){\n res.send('Hello World');\n});\n\napp.listen(3000);\n```\n\n## Installation\n\n $ npm install -g express\n\n## Quick Start\n\n The quickest way to get started with express is to utilize the executable `express(1)` to generate an application as shown below:\n\n Create the app:\n\n $ npm install -g express\n $ express /tmp/foo && cd /tmp/foo\n\n Install dependencies:\n\n $ npm install\n\n Start the server:\n\n $ node app\n\n## Features\n\n * Built on [Connect](http://github.com/senchalabs/connect)\n * Robust routing\n * HTTP helpers (redirection, caching, etc)\n * View system supporting 14+ template engines\n * Content negotiation\n * Focus on high performance\n * Environment based configuration\n * Executable for generating applications quickly\n * High test coverage\n\n## Philosophy\n\n The Express philosophy is to provide small, robust tooling for HTTP servers. Making\n it a great solution for single page applications, web sites, hybrids, or public\n HTTP APIs.\n \n Built on Connect you can use _only_ what you need, and nothing more, applications\n can be as big or as small as you like, even a single file. Express does\n not force you to use any specific ORM or template engine. With support for over\n 14 template engines via [Consolidate.js](http://github.com/visionmedia/consolidate.js)\n you can quickly craft your perfect framework.\n\n## More Information\n\n * Join #express on freenode\n * [Google Group](http://groups.google.com/group/express-js) for discussion\n * Follow [tjholowaychuk](http://twitter.com/tjholowaychuk) on twitter for updates\n * Visit the [Wiki](http://github.com/visionmedia/express/wiki)\n * [日本語ドキュメンテーション](http://hideyukisaito.com/doc/expressjs/) by [hideyukisaito](https://github.com/hideyukisaito)\n * [Русскоязычная документация](http://express-js.ru/)\n\n## Viewing Examples\n\nClone the Express repo, then install the dev dependencies to install all the example / test suite deps:\n\n $ git clone git://github.com/visionmedia/express.git --depth 1\n $ cd express\n $ npm install\n\nthen run whichever tests you want:\n\n $ node examples/content-negotiation\n\n## Running Tests\n\nTo run the test suite first invoke the following command within the repo, installing the development dependencies:\n\n $ npm install\n\nthen run the tests:\n\n $ make test\n\n## Contributors\n\n```\nproject: express\ncommits: 3559\nactive : 468 days\nfiles : 237\nauthors: \n 1891\tTj Holowaychuk 53.1%\n 1285\tvisionmedia 36.1%\n 182\tTJ Holowaychuk 5.1%\n 54\tAaron Heckmann 1.5%\n 34\tcsausdev 1.0%\n 26\tciaranj 0.7%\n 21\tRobert Sköld 0.6%\n 6\tGuillermo Rauch 0.2%\n 3\tDav Glass 0.1%\n 3\tNick Poulden 0.1%\n 2\tRandy Merrill 0.1%\n 2\tBenny Wong 0.1%\n 2\tHunter Loftis 0.1%\n 2\tJake Gordon 0.1%\n 2\tBrian McKinney 0.1%\n 2\tRoman Shtylman 0.1%\n 2\tBen Weaver 0.1%\n 2\tDave Hoover 0.1%\n 2\tEivind Fjeldstad 0.1%\n 2\tDaniel Shaw 0.1%\n 1\tMatt Colyer 0.0%\n 1\tPau Ramon 0.0%\n 1\tPero Pejovic 0.0%\n 1\tPeter Rekdal Sunde 0.0%\n 1\tRaynos 0.0%\n 1\tTeng Siong Ong 0.0%\n 1\tViktor Kelemen 0.0%\n 1\tctide 0.0%\n 1\t8bitDesigner 0.0%\n 1\tisaacs 0.0%\n 1\tmgutz 0.0%\n 1\tpikeas 0.0%\n 1\tshuwatto 0.0%\n 1\ttstrimple 0.0%\n 1\tewoudj 0.0%\n 1\tAdam Sanderson 0.0%\n 1\tAndrii Kostenko 0.0%\n 1\tAndy Hiew 0.0%\n 1\tArpad Borsos 0.0%\n 1\tAshwin Purohit 0.0%\n 1\tBenjen 0.0%\n 1\tDarren Torpey 0.0%\n 1\tGreg Ritter 0.0%\n 1\tGregory Ritter 0.0%\n 1\tJames Herdman 0.0%\n 1\tJim Snodgrass 0.0%\n 1\tJoe McCann 0.0%\n 1\tJonathan Dumaine 0.0%\n 1\tJonathan Palardy 0.0%\n 1\tJonathan Zacsh 0.0%\n 1\tJustin Lilly 0.0%\n 1\tKen Sato 0.0%\n 1\tMaciej Małecki 0.0%\n 1\tMasahiro Hayashi 0.0%\n```\n\n## License \n\n(The MIT License)\n\nCopyright (c) 2009-2012 TJ Holowaychuk <tj@vision-media.ca>\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n'Software'), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n", + "readmeFilename": "Readme.md", + "_id": "express@3.1.0", + "dist": { + "shasum": "22cd94183f770bce8068fe678833097dd096708e" + }, + "_from": "express@", + "_resolved": "https://registry.npmjs.org/express/-/express-3.1.0.tgz" +} diff --git a/node_modules/express/test.js b/node_modules/express/test.js new file mode 100644 index 0000000..112ee0a --- /dev/null +++ b/node_modules/express/test.js @@ -0,0 +1,14 @@ + +/** + * Module dependencies. + */ + +var express = require('./') + , app = express() + +app.get('/', function(req, res){ + console.log(req.query); +}); + +app.listen(3000); +console.log('listening on 3000'); diff --git a/node_modules/mysql/.npmignore b/node_modules/mysql/.npmignore new file mode 100644 index 0000000..b68bceb --- /dev/null +++ b/node_modules/mysql/.npmignore @@ -0,0 +1,5 @@ +*.un~ + +/node_modules + +*.sublime-* diff --git a/node_modules/mysql/.travis.yml b/node_modules/mysql/.travis.yml new file mode 100644 index 0000000..2a9b9e6 --- /dev/null +++ b/node_modules/mysql/.travis.yml @@ -0,0 +1,5 @@ +language: node_js +node_js: + - 0.4 + - 0.6 + - 0.8 diff --git a/node_modules/mysql/Changes.md b/node_modules/mysql/Changes.md new file mode 100644 index 0000000..db650b0 --- /dev/null +++ b/node_modules/mysql/Changes.md @@ -0,0 +1,199 @@ +# Changes + +This file is a manually maintained list of changes for each release. Feel free +to add your changes here when sending pull requests. Also send corrections if +you spot any mistakes. + +## v2.0.0-alpha6 (2013-01-31) + +* Add supportBigNumbers option (#381, #382) +* Accept prebuilt Query object in connection.query +* Bug fixes + +## v2.0.0-alpha5 (2012-12-03) + +* Add mysql.escapeId to escape identifiers (closes #342) +* Allow custom escaping mode (config.queryFormat) +* Convert DATE columns to configured timezone instead of UTC (#332) +* Convert LONGLONG and NEWDECIMAL to numbers (#333) +* Fix Connection.escape() (fixes #330) +* Changed Readme ambiguity about custom type cast fallback +* Change typeCast to receive Connection instead of Connection.config.timezone +* Fix drain event having useless err parameter +* Add Connection.statistics() back from v0.9 +* Add Connection.ping() back from v0.9 + +## v2.0.0-alpha4 (2012-10-03) + +* Fix some OOB errors on resume() +* Fix quick pause() / resume() usage +* Properly parse host denied / similar errors +* Add Connection.ChangeUser functionality +* Make sure changeUser errors are fatal +* Enable formatting nested arrays for bulk inserts +* Add Connection.escape functionality +* Renamed 'close' to 'end' event +* Return parsed object instead of Buffer for GEOMETRY types +* Allow nestTables inline (using a string instead of a boolean) +* Check for ZEROFILL_FLAG and format number accordingly +* Add timezone support (default: local) +* Add custom typeCast functionality +* Export mysql column types +* Add connection flags functionality (#237) +* Exports drain event when queue finishes processing (#272, #271, #306) + +## v2.0.0-alpha3 (2012-06-12) + +* Implement support for `LOAD DATA LOCAL INFILE` queries (#182). +* Support OLD\_PASSWORD() accounts like 0.9.x did. You should still upgrade any + user accounts in your your MySQL user table that has short (16 byte) Password + values. Connecting to those accounts is not secure. (#204) +* Ignore function values when escaping objects, allows to use RowDataPacket + objects as query arguments. (Alex Gorbatchev, #213) +* Handle initial error packets from server such as `ER_HOST_NOT_PRIVILEGED`. +* Treat `utf8\_bin` as a String, not Buffer. (#214) +* Handle empty strings in first row column value. (#222) +* Honor Connection#nestTables setting for queries. (#221) +* Remove `CLIENT_INTERACTIVE` flag from config. Improves #225. +* Improve docs for connections settings. +* Implement url string support for Connection configs. + +## v2.0.0-alpha2 (2012-05-31) + +* Specify escaping before for NaN / Infinity (they are as unquoted constants). +* Support for unix domain socket connections (use: {socketPath: '...'}). +* Fix type casting for NULL values for Date/Number fields +* Add `fields` argument to `query()` as well as `'fields'` event. This is + similar to what was available in 0.9.x. +* Support connecting to the sphinx searchd daemon as well as MariaDB (#199). +* Implement long stack trace support, will be removed / disabled if the node + core ever supports it natively. +* Implement `nestTables` option for queries, allows fetching JOIN result sets + with overlapping column names. +* Fix ? placeholder mechanism for values containing '?' characters (#205). +* Detect when `connect()` is called more than once on a connection and provide + the user with a good error message for it (#204). +* Switch to `UTF8_GENERAL_CI` (previously `UTF8_UNICODE_CI`) as the default + charset for all connections to avoid strange MySQL performance issues (#200), + and also make the charset user configurable. +* Fix BLOB type casting for `TINY_BLOG`, `MEDIUM_BLOB` and `LONG_BLOB`. +* Add support for sending and receiving large (> 16 MB) packets. + +## v2.0.0-alpha (2012-05-15) + +This release is a rewrite. You should carefully test your application after +upgrading to avoid problems. This release features many improvements, most +importantly: + +* ~5x faster than v0.9.x for parsing query results +* Support for pause() / resume() (for streaming rows) +* Support for multiple statement queries +* Support for stored procedures +* Support for transactions +* Support for binary columns (as blobs) +* Consistent & well documented error handling +* A new Connection class that has well defined semantics (unlike the old Client class). +* Convenient escaping of objects / arrays that allows for simpler query construction +* A significantly simpler code base +* Many bug fixes & other small improvements (Closed 62 out of 66 GitHub issues) + +Below are a few notes on the upgrade process itself: + +The first thing you will run into is that the old `Client` class is gone and +has been replaced with a less ambitious `Connection` class. So instead of +`mysql.createClient()`, you now have to: + +```js +var mysql = require('mysql'); +var connection = mysql.createConnection({ + host : 'localhost', + user : 'me', + password : 'secret', +}); + +connection.query('SELECT 1', function(err, rows) { + if (err) throw err; + + console.log('Query result: ', rows); +}); + +connection.end(); +``` + +The new `Connection` class does not try to handle re-connects, please study the +`Server disconnects` section in the new Readme. + +Other than that, the interface has stayed very similar. Here are a few things +to check out so: + +* BIGINT's are now cast into strings +* Binary data is now cast to buffers +* The `'row'` event on the `Query` object is now called `'result'` and will + also be emitted for queries that produce an OK/Error response. +* Error handling is consistently defined now, check the Readme +* Escaping has become more powerful which may break your code if you are + currently using objects to fill query placeholders. +* Connections can now be established explicitly again, so you may wish to do so + if you want to handle connection errors specifically. + +That should be most of it, if you run into anything else, please send a patch +or open an issue to improve this document. + +## v0.9.6 (2012-03-12) + +* Escape array values so they produce sql arrays (Roger Castells, Colin Smith) +* docs: mention mysql transaction stop gap solution (Blake Miner) +* docs: Mention affectedRows in FAQ (Michael Baldwin) + +## v0.9.5 (2011-11-26) + +* Fix #142 Driver stalls upon reconnect attempt that's immediately closed +* Add travis build +* Switch to urun as a test runner +* Switch to utest for unit tests +* Remove fast-or-slow dependency for tests +* Split integration tests into individual files again + +## v0.9.4 (2011-08-31) + +* Expose package.json as `mysql.PACKAGE` (#104) + +## v0.9.3 (2011-08-22) + +* Set default `client.user` to root +* Fix #91: Client#format should not mutate params array +* Fix #94: TypeError in client.js +* Parse decimals as string (vadimg) + +## v0.9.2 (2011-08-07) + +* The underlaying socket connection is now managed implicitly rather than explicitly. +* Check the [upgrading guide][] for a full list of changes. + +## v0.9.1 (2011-02-20) + +* Fix issue #49 / `client.escape()` throwing exceptions on objects. (Nick Payne) +* Drop < v0.4.x compatibility. From now on you need node v0.4.x to use this module. + +## Older releases + +These releases were done before maintaining this file: + +* [v0.9.0](https://github.com/felixge/node-mysql/compare/v0.8.0...v0.9.0) + (2011-01-04) +* [v0.8.0](https://github.com/felixge/node-mysql/compare/v0.7.0...v0.8.0) + (2010-10-30) +* [v0.7.0](https://github.com/felixge/node-mysql/compare/v0.6.0...v0.7.0) + (2010-10-14) +* [v0.6.0](https://github.com/felixge/node-mysql/compare/v0.5.0...v0.6.0) + (2010-09-28) +* [v0.5.0](https://github.com/felixge/node-mysql/compare/v0.4.0...v0.5.0) + (2010-09-17) +* [v0.4.0](https://github.com/felixge/node-mysql/compare/v0.3.0...v0.4.0) + (2010-09-02) +* [v0.3.0](https://github.com/felixge/node-mysql/compare/v0.2.0...v0.3.0) + (2010-08-25) +* [v0.2.0](https://github.com/felixge/node-mysql/compare/v0.1.0...v0.2.0) + (2010-08-22) +* [v0.1.0](https://github.com/felixge/node-mysql/commits/v0.1.0) + (2010-08-22) diff --git a/node_modules/mysql/License b/node_modules/mysql/License new file mode 100644 index 0000000..c7ff12a --- /dev/null +++ b/node_modules/mysql/License @@ -0,0 +1,19 @@ +Copyright (c) 2012 Felix Geisendörfer (felix@debuggable.com) and contributors + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + THE SOFTWARE. diff --git a/node_modules/mysql/Makefile b/node_modules/mysql/Makefile new file mode 100644 index 0000000..1eab4b9 --- /dev/null +++ b/node_modules/mysql/Makefile @@ -0,0 +1,4 @@ +test: + node test/run.js + +.PHONY: test diff --git a/node_modules/mysql/Readme.md b/node_modules/mysql/Readme.md new file mode 100644 index 0000000..3f6cf6a --- /dev/null +++ b/node_modules/mysql/Readme.md @@ -0,0 +1,822 @@ +# node-mysql + +[![Build Status](https://secure.travis-ci.org/felixge/node-mysql.png)](http://travis-ci.org/felixge/node-mysql) + +## Install + +```bash +npm install mysql@2.0.0-alpha7 +``` + +Despite the alpha tag, this is the recommended version for new applications. +For information about the previous 0.9.x releases, visit the [v0.9 branch][]. + +Sometimes I may also ask you to install the latest version from Github to check +if a bugfix is working. In this case, please do: + +``` +npm install git://github.com/felixge/node-mysql.git +``` + +[v0.9 branch]: https://github.com/felixge/node-mysql/tree/v0.9 + +## Introduction + +This is a node.js driver for mysql. It is written in JavaScript, does not +require compiling, and is 100% MIT licensed. + +Here is an example on how to use it: + +```js +var mysql = require('mysql'); +var connection = mysql.createConnection({ + host : 'localhost', + user : 'me', + password : 'secret', +}); + +connection.connect(); + +connection.query('SELECT 1 + 1 AS solution', function(err, rows, fields) { + if (err) throw err; + + console.log('The solution is: ', rows[0].solution); +}); + +connection.end(); +``` + +From this example, you can learn the following: + +* Every method you invoke on a connection is queued and executed in sequence. +* Closing the connection is done using `end()` which makes sure all remaining + queries are executed before sending a quit packet to the mysql server. + +## Contributors + +Thanks goes to the people who have contributed code to this module, see the +[GitHub Contributors page][]. + +[GitHub Contributors page]: https://github.com/felixge/node-mysql/graphs/contributors + +Additionally I'd like to thank the following people: + +* [Andrey Hristov][] (Oracle) - for helping me with protocol questions. +* [Ulf Wendel][] (Oracle) - for helping me with protocol questions. + +[Ulf Wendel]: http://blog.ulf-wendel.de/ +[Andrey Hristov]: http://andrey.hristov.com/ + +## Sponsors + +The following companies have supported this project financially, allowing me to +spend more time on it (ordered by time of contribution): + +* [Transloadit](http://transloadit.com) (my startup, we do file uploading & + video encoding as a service, check it out) +* [Joyent](http://www.joyent.com/) +* [pinkbike.com](http://pinkbike.com/) +* [Holiday Extras](http://www.holidayextras.co.uk/) (they are [hiring](http://join.holidayextras.co.uk/vacancy/senior-web-technologist/)) +* [Newscope](http://newscope.com/) (they are [hiring](http://www.newscope.com/stellenangebote)) + +If you are interested in sponsoring a day or more of my time, please +[get in touch][]. + +[get in touch]: http://felixge.de/consulting + +## Community + +If you'd like to discuss this module, or ask questions about it, please use one +of the following: + +* **Mailing list**: https://groups.google.com/forum/#!forum/node-mysql +* **IRC Channel**: #node.js (on freenode.net, I pay attention to any message + including the term `mysql`) + +## Establishing connections + +The recommended way to establish a connection is this: + +```js +var mysql = require('mysql'); +var connection = mysql.createConnection({ + host : 'example.org', + user : 'bob', + password : 'secret', +}); + +connection.connect(function(err) { + // connected! (unless `err` is set) +}); +``` + +However, a connection can also be implicitly established by invoking a query: + +```js +var mysql = require('mysql'); +var connection = mysql.createConnection(...); + +connection.query('SELECT 1', function(err, rows) { + // connected! (unless `err` is set) +}); +``` + +Depending on how you like to handle your errors, either method may be +appropriate. Any type of connection error (handshake or network) is considered +a fatal error, see the [Error Handling](#error-handling) section for more +information. + +## Connection options + +When establishing a connection, you can set the following options: + +* `host`: The hostname of the database you are connecting to. (Default: + `localhost`) +* `port`: The port number to connect to. (Default: `3306`) +* `socketPath`: The path to a unix domain socket to connect to. When used `host` + and `port` are ignored. +* `user`: The MySQL user to authenticate as. +* `password`: The password of that MySQL user. +* `database`: Name of the database to use for this connection (Optional). +* `charset`: The charset for the connection. (Default: `'UTF8_GENERAL_CI'`) +* `timezone`: The timezone used to store local dates. (Default: `'local'`) +* `insecureAuth`: Allow connecting to MySQL instances that ask for the old + (insecure) authentication method. (Default: `false`) +* `typeCast`: Determines if column values should be converted to native + JavaScript types. (Default: `true`) +* `queryFormat`: A custom query format function. See [Custom format](#custom-format). +* `supportBigNumbers`: When dealing with big numbers in the database, you should enable this option. +* `debug`: Prints protocol details to stdout. (Default: `false`) +* `multipleStatements`: Allow multiple mysql statements per query. Be careful + with this, it exposes you to SQL injection attacks. (Default: `false`) +* `flags`: List of connection flags to use other than the default ones. It is + also possible to blacklist default ones. For more information, check [Connection Flags](#connection-flags). + +In addition to passing these options as an object, you can also use a url +string. For example: + +```js +var connection = mysql.createConnection('mysql://user:pass@host/db?debug=true&charset=BIG5_CHINESE_CI&timezone=-0700'); +``` + +Note: The query values are first attempted to be parsed as JSON, and if that +fails assumed to be plaintext strings. + +## Terminating connections + +There are two ways to end a connection. Terminating a connection gracefully is +done by calling the `end()` method: + +```js +connection.end(function(err) { + // The connection is terminated now +}); +``` + +This will make sure all previously enqueued queries are still before sending a +`COM_QUIT` packet to the MySQL server. If a fatal error occurs before the +`COM_QUIT` packet can be sent, an `err` argument will be provided to the +callback, but the connection will be terminated regardless of that. + +An alternative way to end the connection is to call the `destroy()` method. +This will cause an immediate termination of the underlying socket. +Additionally `destroy()` guarantees that no more events or callbacks will be +triggered for the connection. + +```js +connection.destroy(); +``` + +Unlike `end()` the `destroy()` method does not take a callback argument. + +## Pooling connections + +Connections can be pooled to ease sharing a single connection, or managing +multiple connections. + +```js +var mysql = require('mysql'); +var pool = mysql.createPool({ + host : 'example.org', + user : 'bob', + password : 'secret' +}); + +pool.getConnection(function(err, connection) { + // connected! (unless `err` is set) +}); +``` + +When you are done with a connection, just call `connection.end()` and the +connection will return to the pool, ready to be used again by someone else. + +```js +var mysql = require('mysql'); +var pool = mysql.createPool(...); + +pool.getConnection(function(err, connection) { + // Use the connection + connection.query( 'SELECT something FROM sometable', function(err, rows) { + // And done with the connection. + connection.end(); + + // Don't use the connection here, it has been returned to the pool. + }); +}); +``` + +If you would like to close the connection and remove it from the pool, use +`connection.destroy()` instead. The pool will create a new connection the next +time one is needed. + +Connections are lazily created by the pool. If you configure the pool to allow +up to 100 connections, but only ever use 5 simultaneously, only 5 connections +will be made. Connections are also cycled round-robin style, with connections +being taken from the top of the pool and returning to the bottom. + +## Pool options + +Pools accept all the same options as a connection. When creating a new +connection, the options are simply passed to the connection constructor. In +addition to those options pools accept a few extras: + +* `createConnection`: The function to use to create the connection. (Default: + `mysql.createConnection`) +* `waitForConnections`: Determines the pool's action when no connections are + available and the limit has been reached. If `true`, the pool will queue the + connection request and call it when one becomes available. If `false`, the + pool will immediately call back with an error. (Default: `true`) +* `connectionLimit`: The maximum number of connections to create at once. + (Default: `10`) + +## Switching users / altering connection state + +MySQL offers a changeUser command that allows you to alter the current user and +other aspects of the connection without shutting down the underlying socket: + +```js +connection.changeUser({user : 'john'}, function(err) { + if (err) throw err; +}); +``` + +The available options for this feature are: + +* `user`: The name of the new user (defaults to the previous one). +* `password`: The password of the new user (defaults to the previous one). +* `charset`: The new charset (defaults to the previous one). +* `database`: The new database (defaults to the previous one). + +A sometimes useful side effect of this functionality is that this function also +resets any connection state (variables, transactions, etc.). + +Errors encountered during this operation are treated as fatal connection errors +by this module. + +## Server disconnects + +You may lose the connection to a MySQL server due to network problems, the +server timing you out, or the server crashing. All of these events are +considered fatal errors, and will have the `err.code = +'PROTOCOL_CONNECTION_LOST'`. See the [Error Handling](#error-handling) section +for more information. + +The best way to handle such unexpected disconnects is shown below: + +```js +function handleDisconnect(connection) { + connection.on('error', function(err) { + if (!err.fatal) { + return; + } + + if (err.code !== 'PROTOCOL_CONNECTION_LOST') { + throw err; + } + + console.log('Re-connecting lost connection: ' + err.stack); + + connection = mysql.createConnection(connection.config); + handleDisconnect(connection); + connection.connect(); + }); +} + +handleDisconnect(connection); +``` + +As you can see in the example above, re-connecting a connection is done by +establishing a new connection. Once terminated, an existing connection object +cannot be re-connected by design. + +With Pool, disconnected connections will be removed from the pool freeing up +space for a new connection to be created on the next getConnection call. + +## Escaping query values + +In order to avoid SQL Injection attacks, you should always escape any user +provided data before using it inside a SQL query. You can do so using the +`connection.escape()` method: + +```js +var userId = 'some user provided value'; +var sql = 'SELECT * FROM users WHERE id = ' + connection.escape(userId); +connection.query(sql, function(err, results) { + // ... +}); +``` + +Alternatively, you can use `?` characters as placeholders for values you would +like to have escaped like this: + +```js +connection.query('SELECT * FROM users WHERE id = ?', [userId], function(err, results) { + // ... +}); +``` + +This looks similar to prepared statements in MySQL, however it really just uses +the same `connection.escape()` method internally. + +Different value types are escaped differently, here is how: + +* Numbers are left untouched +* Booleans are converted to `true` / `false` strings +* Date objects are converted to `'YYYY-mm-dd HH:ii:ss'` strings +* Buffers are converted to hex strings, e.g. `X'0fa5'` +* Strings are safely escaped +* Arrays are turned into list, e.g. `['a', 'b']` turns into `'a', 'b'` +* Nested arrays are turned into grouped lists (for bulk inserts), e.g. `[['a', + 'b'], ['c', 'd']]` turns into `('a', 'b'), ('c', 'd')` +* Objects are turned into `key = 'val'` pairs. Nested objects are cast to + strings. +* `undefined` / `null` are converted to `NULL` +* `NaN` / `Infinity` are left as-is. MySQL does not support these, and trying + to insert them as values will trigger MySQL errors until they implement + support. + +If you paid attention, you may have noticed that this escaping allows you +to do neat things like this: + +```js +var post = {id: 1, title: 'Hello MySQL'}; +var query = connection.query('INSERT INTO posts SET ?', post, function(err, result) { + // Neat! +}); +console.log(query.sql); // INSERT INTO posts SET `id` = 1, `title` = 'Hello MySQL' + +``` + +If you feel the need to escape queries by yourself, you can also use the escaping +function directly: + +```js +var query = "SELECT * FROM posts WHERE title=" + mysql.escape("Hello MySQL"); + +console.log(query); // SELECT * FROM posts WHERE title='Hello MySQL' +``` + +## Escaping query identifiers + +If you can't trust an SQL identifier (database / table / column name) because it is +provided by a user, you should escape it with `mysql.escapeId(identifier)` like this: + +```js +var sorter = 'date'; +var query = 'SELECT * FROM posts ORDER BY ' + mysql.escapeId(sorter); + +console.log(query); // SELECT * FROM posts ORDER BY `date` +``` + +It also supports adding qualified identifiers. It will escape both parts. + +```js +var sorter = 'date'; +var query = 'SELECT * FROM posts ORDER BY ' + mysql.escapeId('posts.' + sorter); + +console.log(query); // SELECT * FROM posts ORDER BY `posts`.`date` +``` + +When you pass an Object to `.escape()` or `.query()`, `.escapeId()` is used to avoid SQL +injection in object keys. + +### Custom format + +If you prefer to have another type of query escape format, there's a connection configuration option you can use to define a custom format function. You can access the connection object if you want to use the built-in `.escape()` or any other connection function. + +Here's an example of how to implement another format: + +```js +connection.config.queryFormat = function (query, values) { + if (!values) return query; + return query.replace(/\:(\w+)/g, function (txt, key) { + if (values.hasOwnProperty(key)) { + return this.escape(values[key]); + } + return txt; + }.bind(this)); +}; + +connection.query("UPDATE posts SET title = :title", { title: "Hello MySQL" }); +``` + +## Getting the id of an inserted row + +If you are inserting a row into a table with an auto increment primary key, you +can retrieve the insert id like this: + +```js +connection.query('INSERT INTO posts SET ?', {title: 'test'}, function(err, result) { + if (err) throw err; + + console.log(result.insertId); +}); +``` + +When dealing with big numbers (above JavaScript Number precision limit), you should +consider enabling `supportBigNumbers` option to be able to read the insert id as a +string, otherwise it will throw. + +This option is also required when fetching big numbers from the database, otherwise +you will get values rounded to hundreds or thousands due to the precision limit. + +## Executing queries in parallel + +The MySQL protocol is sequential, this means that you need multiple connections +to execute queries in parallel. You can use a Pool to manage connections, one +simple approach is to create one connection per incoming http request. + +## Streaming query rows + +Sometimes you may want to select large quantities of rows and process each of +them as they are received. This can be done like this: + +```js +var query = connection.query('SELECT * FROM posts'); +query + .on('error', function(err) { + // Handle error, an 'end' event will be emitted after this as well + }) + .on('fields', function(fields) { + // the field packets for the rows to follow + }) + .on('result', function(row) { + // Pausing the connnection is useful if your processing involves I/O + connection.pause(); + + processRow(row, function() { + connection.resume(); + }); + }) + .on('end', function() { + // all rows have been received + }); +``` + +Please note a few things about the example above: + +* Usually you will want to receive a certain amount of rows before starting to + throttle the connection using `pause()`. This number will depend on the + amount and size of your rows. +* `pause()` / `resume()` operate on the underlying socket and parser. You are + guaranteed that no more `'result'` events will fire after calling `pause()`. +* You MUST NOT provide a callback to the `query()` method when streaming rows. +* The `'result'` event will fire for both rows as well as OK packets + confirming the success of a INSERT/UPDATE query. + +Additionally you may be interested to know that it is currently not possible to +stream individual row columns, they will always be buffered up entirely. If you +have a good use case for streaming large fields to and from MySQL, I'd love to +get your thoughts and contributions on this. + +## Multiple statement queries + +Support for multiple statements is disabled for security reasons (it allows for +SQL injection attacks if values are not properly escaped). To use this feature +you have to enable it for your connection: + +```js +var connection = mysql.createConnection({multipleStatements: true}); +``` + +Once enabled, you can execute multiple statement queries like any other query: + +```js +connection.query('SELECT 1; SELECT 2', function(err, results) { + if (err) throw err; + + // `results` is an array with one element for every statement in the query: + console.log(results[0]); // [{1: 1}] + console.log(results[1]); // [{2: 2}] +}); +``` + +Additionally you can also stream the results of multiple statement queries: + +```js +var query = connection.query('SELECT 1; SELECT 2'); + +query + .on('fields', function(fields, index) { + // the fields for the result rows that follow + }) + .on('result', function(row, index) { + // index refers to the statement this result belongs to (starts at 0) + }); +``` + +If one of the statements in your query causes an error, the resulting Error +object contains a `err.index` property which tells you which statement caused +it. MySQL will also stop executing any remaining statements when an error +occurs. + +Please note that the interface for streaming multiple statement queries is +experimental and I am looking forward to feedback on it. + +## Stored procedures + +You can call stored procedures from your queries as with any other mysql driver. +If the stored procedure produces several result sets, they are exposed to you +the same way as the results for multiple statement queries. + +## Joins with overlapping column names + +When executing joins, you are likely to get result sets with overlapping column +names. + +By default, node-mysql will overwrite colliding column names in the +order the columns are received from MySQL, causing some of the received values +to be unavailable. + +However, you can also specify that you want your columns to be nested below +the table name like this: + +```js +var options = {sql: '...', nestTables: true}; +connection.query(options, function(err, results) { + /* results will be an array like this now: + [{ + table1: { + fieldA: '...', + fieldB: '...', + }, + table2: { + fieldA: '...', + fieldB: '...', + }, + }, ...] + */ +}); +``` + +Or use a string separator to have your results merged. + +```js +var options = {sql: '...', nestTables: '_'}; +connection.query(options, function(err, results) { + /* results will be an array like this now: + [{ + table1_fieldA: '...', + table1_fieldB: '...', + table2_fieldA: '...', + table2_fieldB: '...' + }, ...] + */ +}); +``` + +## Error handling + +This module comes with a consistent approach to error handling that you should +review carefully in order to write solid applications. + +All errors created by this module are instances of the JavaScript [Error][] +object. Additionally they come with two properties: + +* `err.code`: Either a [MySQL server error][] (e.g. + `'ER_ACCESS_DENIED_ERROR'`), a node.js error (e.g. `'ECONNREFUSED'`) or an + internal error (e.g. `'PROTOCOL_CONNECTION_LOST'`). +* `err.fatal`: Boolean, indicating if this error is terminal to the connection + object. + +[Error]: https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Error +[MySQL server error]: http://dev.mysql.com/doc/refman/5.5/en/error-messages-server.html + +Fatal errors are propagated to *all* pending callbacks. In the example below, a +fatal error is triggered by trying to connect to an invalid port. Therefore the +error object is propagated to both pending callbacks: + +```js +var connection = require('mysql').createConnection({ + port: 84943, // WRONG PORT +}); + +connection.connect(function(err) { + console.log(err.code); // 'ECONNREFUSED' + console.log(err.fatal); // true +}); + +connection.query('SELECT 1', function(err) { + console.log(err.code); // 'ECONNREFUSED' + console.log(err.fatal); // true +}); +``` + +Normal errors however are only delegated to the callback they belong to. So in +the example below, only the first callback receives an error, the second query +works as expected: + +```js +connection.query('USE name_of_db_that_does_not_exist', function(err, rows) { + console.log(err.code); // 'ER_BAD_DB_ERROR' +}); + +connection.query('SELECT 1', function(err, rows) { + console.log(err); // null + console.log(rows.length); // 1 +}); +``` + +Last but not least: If a fatal errors occurs and there are no pending +callbacks, or a normal error occurs which has no callback belonging to it, the +error is emitted as an `'error'` event on the connection object. This is +demonstrated in the example below: + +```js +connection.on('error', function(err) { + console.log(err.code); // 'ER_BAD_DB_ERROR' +}); + +connection.query('USE name_of_db_that_does_not_exist'); +``` + +Note: `'error'` are special in node. If they occur without an attached +listener, a stack trace is printed and your process is killed. + +**tl;dr:** This module does not want you to deal with silent failures. You +should always provide callbacks to your method calls. If you want to ignore +this advice and suppress unhandled errors, you can do this: + +```js +// I am Chuck Norris: +connection.on('error', function() {}); +``` + +## Exception Safety + +This module is exception safe. That means you can continue to use it, even if +one of your callback functions throws an error which you're catching using +'uncaughtException' or a domain. + +## Type casting + +For your convenience, this driver will cast mysql types into native JavaScript +types by default. The following mappings exist: + +### Number + +* TINYINT +* SMALLINT +* INT +* MEDIUMINT +* YEAR +* FLOAT +* DOUBLE + +### Date + +* TIMESTAMP +* DATE +* DATETIME + +### Buffer + +* TINYBLOB +* MEDIUMBLOB +* LONGBLOB +* BLOB +* BINARY +* VARBINARY +* BIT (last byte will be filled with 0 bits as necessary) + +### String + +* CHAR +* VARCHAR +* TINYTEXT +* MEDIUMTEXT +* LONGTEXT +* TEXT +* ENUM +* SET +* DECIMAL (may exceed float precision) +* BIGINT (may exceed float precision) +* TIME (could be mapped to Date, but what date would be set?) +* GEOMETRY (never used those, get in touch if you do) + +It is not recommended (and may go away / change in the future) to disable type +casting, but you can currently do so on either the connection: + +```js +var connection = require('mysql').createConnection({typeCast: false}); +``` + +Or on the query level: + +```js +var options = {sql: '...', typeCast: false}; +var query = connection.query(options, function(err, results) { + +}): +``` + +You can also pass a function and handle type casting yourself. You're given some +column information like database, table and name and also type and length. If you +just want to apply a custom type casting to a specific type you can do it and then +fallback to the default. Here's an example of converting `TINYINT(1)` to boolean: + +```js +connection.query({ + sql: '...', + typeCast: function (field, next) { + if (field.type == 'TINY' && field.length == 1) { + return (field.string() == '1'); // 1 = true, 0 = false + } + return next(); + } +}) +``` + +If you need a buffer there's also a `.buffer()` function and also a `.geometry()` one +both used by the default type cast that you can use. + +## Connection Flags + +If, for any reason, you would like to change the default connection flags, you +can use the connection option `flags`. Pass a string with a comma separated list +of items to add to the default flags. If you don't want a default flag to be used +prepend the flag with a minus sign. To add a flag that is not in the default list, don't prepend it with a plus sign, just write the flag name (case insensitive). + +**Please note that some available flags that are not default are still not supported +(e.g.: SSL, Compression). Use at your own risk.** + +### Example + +The next example blacklists FOUND_ROWS flag from default connection flags. + +```js +var connection = mysql.createConnection("mysql://localhost/test?flags=-FOUND_ROWS") +``` + +### Default Flags + +- LONG_PASSWORD +- FOUND_ROWS +- LONG_FLAG +- CONNECT_WITH_DB +- ODBC +- LOCAL_FILES +- IGNORE_SPACE +- PROTOCOL_41 +- IGNORE_SIGPIPE +- TRANSACTIONS +- RESERVED +- SECURE_CONNECTION +- MULTI_RESULTS +- MULTI_STATEMENTS (used if `multipleStatements` option is activated) + +### Other Available Flags + +- NO_SCHEMA +- COMPRESS +- INTERACTIVE +- SSL +- PS_MULTI_RESULTS +- PLUGIN_AUTH +- SSL_VERIFY_SERVER_CERT +- REMEMBER_OPTIONS + +## Debugging and reporting problems + +If you are running into problems, one thing that may help is enabling the +`debug` mode for the connection: + +```js +var connection = mysql.createConnection({debug: true}); +``` + +This will print all incoming and outgoing packets on stdout. + +If that does not help, feel free to open a GitHub issue. A good GitHub issue +will have: + +* The minimal amount of code required to reproduce the problem (if possible) +* As much debugging output and information about your environment (mysql + version, node version, os, etc.) as you can gather. + +## Todo + +* Prepared statements +* setTimeout() for Connection / Query +* Support for encodings other than UTF-8 / ASCII +* API support for transactions, similar to [php](http://www.php.net/manual/en/mysqli.quickstart.transactions.php) diff --git a/node_modules/mysql/benchmark/analyze.js b/node_modules/mysql/benchmark/analyze.js new file mode 100644 index 0000000..d27ae6b --- /dev/null +++ b/node_modules/mysql/benchmark/analyze.js @@ -0,0 +1,96 @@ +var script = process.cwd() + '/' + process.argv[2]; +var spawn = require('child_process').spawn; + +var numbers = []; +var boringResults = 0; +var scriptRuns = 0; + +function runScript() { + scriptRuns++; + + var child = spawn(process.execPath, [script]); + + var buffer = ''; + child.stdout.on('data', function(chunk) { + buffer += chunk; + + var offset; + while ((offset = buffer.indexOf('\n')) > -1) { + var number = parseInt(buffer.substr(0, offset), 10); + buffer = buffer.substr(offset + 1); + + var maxBefore = max(); + var minBefore = min(); + + numbers.push(number); + + if (maxBefore === max() && minBefore === min()) { + boringResults++; + } + + if (boringResults > 10) { + boringResults = 0; + child.kill(); + runScript(); + } + } + }); +} + +function report() { + console.log( + 'max: %s | median: %s | sdev: %s | last: %s | min: %s | runs: %s | results: %s', + max(), + median(), + sdev(), + numbers[numbers.length - 1], + min(), + scriptRuns, + numbers.length + ); +} + +function min() { + if (!numbers.length) return undefined; + + return numbers.reduce(function(min, number) { + return (number < min) + ? number + : min; + }); +} + +function max() { + if (!numbers.length) return undefined; + + return numbers.reduce(function(max, number) { + return (number > max) + ? number + : max; + }); +} + +function median() { + return numbers[Math.floor(numbers.length / 2)]; +} + +function sdev() { + if (!numbers.length) return undefined; + + return Math.round(Math.sqrt(variance())); +} + +function variance() { + var t = 0, squares = 0, len = numbers.length; + + for (var i=0; i 0) { + mergeBuffers.push(mergeBuffer.slice(0, offset)); + } + + return mergeBuffers; +} + +function benchmark(buffers) { + var protocol = new Protocol(); + protocol._handshakeInitializationPacket = true; + protocol.query({typeCast: false, sql: 'SELECT ...'}); + + var start = +new Date; + + for (var i = 0; i < buffers.length; i++) { + protocol.write(buffers[i]); + } + + var duration = Date.now() - start; + var hz = Math.round(options.rows / (duration / 1000)); + console.log(hz); +} + +var buffers = createBuffers(); +while (true) { + benchmark(buffers); +} diff --git a/node_modules/mysql/benchmark/select-100k-blog-rows.js b/node_modules/mysql/benchmark/select-100k-blog-rows.js new file mode 100644 index 0000000..d2673a0 --- /dev/null +++ b/node_modules/mysql/benchmark/select-100k-blog-rows.js @@ -0,0 +1,42 @@ +var common = require('../test/common'); +var client = common.createConnection({typeCast: false}); +var rowsPerRun = 100000; + +client.connect(function(err) { + if (err) throw err; + + client.query('USE node_mysql_test', function(err, results) { + if (err) throw err; + + selectRows(); + }); +}); + +var firstSelect; +var rowCount = 0; + +console.error('Benchmarking rows per second in hz:'); + +function selectRows() { + firstSelect = firstSelect || Date.now(); + + client.query('SELECT * FROM posts', function(err, rows) { + if (err) throw err; + + rowCount += rows.length; + if (rowCount < rowsPerRun) { + selectRows(); + return; + } + + var duration = (Date.now() - firstSelect) / 1000; + var hz = Math.round(rowCount / duration); + + console.log(hz); + + rowCount = 0; + firstSelect = null; + + selectRows(); + }); +}; diff --git a/node_modules/mysql/index.js b/node_modules/mysql/index.js new file mode 100644 index 0000000..f589e7f --- /dev/null +++ b/node_modules/mysql/index.js @@ -0,0 +1,20 @@ +var Connection = require('./lib/Connection'); +var ConnectionConfig = require('./lib/ConnectionConfig'); +var Types = require('./lib/protocol/constants/types'); +var SqlString = require('./lib/protocol/SqlString'); +var Pool = require('./lib/Pool'); +var PoolConfig = require('./lib/PoolConfig'); + +exports.createConnection = function(config) { + return new Connection({config: new ConnectionConfig(config)}); +}; + +exports.createPool = function(config) { + return new Pool({config: new PoolConfig(config)}); +}; + +exports.createQuery = Connection.createQuery; + +exports.Types = Types; +exports.escape = SqlString.escape; +exports.escapeId = SqlString.escapeId; diff --git a/node_modules/mysql/lib/Connection.js b/node_modules/mysql/lib/Connection.js new file mode 100644 index 0000000..f8b0af0 --- /dev/null +++ b/node_modules/mysql/lib/Connection.js @@ -0,0 +1,164 @@ +var Net = require('net'); +var ConnectionConfig = require('./ConnectionConfig'); +var Pool = require('./Pool'); +var Protocol = require('./protocol/Protocol'); +var SqlString = require('./protocol/SqlString'); +var Query = require('./protocol/sequences/Query'); +var EventEmitter = require('events').EventEmitter; +var Util = require('util'); + +module.exports = Connection; +Util.inherits(Connection, EventEmitter); +function Connection(options) { + EventEmitter.call(this); + + this.config = options.config; + + this._socket = options.socket; + this._protocol = new Protocol({config: this.config, connection: this}); + this._connectCalled = false; +} + +Connection.createQuery = function(sql, values, cb) { + if (sql instanceof Query) { + return sql; + } + + var options = {}; + + if (typeof sql === 'object') { + // query(options, cb) + options = sql; + cb = values; + } else if (typeof values === 'function') { + // query(sql, cb) + cb = values; + options.sql = sql; + options.values = undefined; + } else { + // query(sql, values, cb) + options.sql = sql; + options.values = values; + } + return new Query(options, cb); +}; + +Connection.prototype.connect = function(cb) { + if (!this._connectCalled) { + this._connectCalled = true; + + this._socket = (this.config.socketPath) + ? Net.createConnection(this.config.socketPath) + : Net.createConnection(this.config.port, this.config.host); + + this._socket.pipe(this._protocol); + this._protocol.pipe(this._socket); + + this._socket.on('error', this._handleNetworkError.bind(this)); + this._protocol.on('unhandledError', this._handleProtocolError.bind(this)); + this._protocol.on('drain', this._handleProtocolDrain.bind(this)); + this._protocol.on('end', this._handleProtocolEnd.bind(this)); + } + + this._protocol.handshake(cb); +}; + +Connection.prototype.changeUser = function(options, cb){ + this._implyConnect(); + + if (typeof options === 'function') { + cb = options; + options = {}; + } + + var charsetNumber = (options.charset) + ? Config.getCharsetNumber(options.charset) + : this.config.charsetNumber; + + return this._protocol.changeUser({ + user : options.user || this.config.user, + password : options.password || this.config.password, + database : options.database || this.config.database, + charsetNumber : charsetNumber, + currentConfig : this.config + }, cb); +}; + +Connection.prototype.query = function(sql, values, cb) { + this._implyConnect(); + + var query = Connection.createQuery(sql, values, cb); + + if (!(typeof sql == 'object' && 'typeCast' in sql)) { + query.typeCast = this.config.typeCast; + } + + query.sql = this.format(query.sql, query.values || []); + delete query.values; + + return this._protocol._enqueue(query); +}; + +Connection.prototype.ping = function(cb) { + this._implyConnect(); + this._protocol.ping(cb); +}; + +Connection.prototype.statistics = function(cb) { + this._implyConnect(); + this._protocol.stats(cb); +}; + +Connection.prototype.end = function(cb) { + this._implyConnect(); + this._protocol.quit(cb); +}; + +Connection.prototype.destroy = function() { + this._implyConnect(); + this._socket.destroy(); + this._protocol.destroy(); +}; + +Connection.prototype.pause = function() { + this._socket.pause(); + this._protocol.pause(); +}; + +Connection.prototype.resume = function() { + this._socket.resume(); + this._protocol.resume(); +}; + +Connection.prototype.escape = function(value) { + return SqlString.escape(value, false, this.config.timezone); +}; + +Connection.prototype.format = function(sql, values) { + if (typeof this.config.queryFormat == "function") { + return this.config.queryFormat.call(this, sql, values, this.config.timezone); + } + return SqlString.format(sql, values, this.config.timezone); +}; + +Connection.prototype._handleNetworkError = function(err) { + this._protocol.handleNetworkError(err); +}; + +Connection.prototype._handleProtocolError = function(err) { + this.emit('error', err); +}; + +Connection.prototype._handleProtocolDrain = function() { + this.emit('drain'); +}; + +Connection.prototype._handleProtocolEnd = function(err) { + this.emit('end', err); +}; + +Connection.prototype._implyConnect = function() { + if (!this._connectCalled) { + this.connect(); + } +}; diff --git a/node_modules/mysql/lib/ConnectionConfig.js b/node_modules/mysql/lib/ConnectionConfig.js new file mode 100644 index 0000000..1f77ccd --- /dev/null +++ b/node_modules/mysql/lib/ConnectionConfig.js @@ -0,0 +1,113 @@ +var urlParse = require('url').parse; +var ClientConstants = require('./protocol/constants/client'); +var Charsets = require('./protocol/constants/charsets'); + +module.exports = ConnectionConfig; +function ConnectionConfig(options) { + if (typeof options === 'string') { + options = ConnectionConfig.parseUrl(options); + } + + this.host = options.host || 'localhost'; + this.port = options.port || 3306; + this.socketPath = options.socketPath; + this.user = options.user || undefined; + this.password = options.password || undefined; + this.database = options.database; + this.insecureAuth = options.insecureAuth || false; + this.supportBigNumbers = options.supportBigNumbers || false; + this.debug = options.debug; + this.timezone = options.timezone || 'local'; + this.flags = options.flags || ''; + this.queryFormat = options.queryFormat; + this.pool = options.pool || undefined; + this.typeCast = (options.typeCast === undefined) + ? true + : options.typeCast; + + if (this.timezone[0] == " ") { + // "+" is a url encoded char for space so it + // gets translated to space when giving a + // connection string.. + this.timezone = "+" + this.timezone.substr(1); + } + + this.maxPacketSize = 0; + this.charsetNumber = (options.charset) + ? ConnectionConfig.getCharsetNumber(options.charset) + : Charsets.UTF8_GENERAL_CI; + + this.clientFlags = ConnectionConfig.mergeFlags(ConnectionConfig.getDefaultFlags(options), + options.flags || ''); +} + +ConnectionConfig.mergeFlags = function(default_flags, user_flags) { + var flags = 0x0, i; + + user_flags = (user_flags || '').toUpperCase().split(/\s*,+\s*/); + + // add default flags unless "blacklisted" + for (i in default_flags) { + if (user_flags.indexOf("-" + default_flags[i]) >= 0) continue; + + flags |= ClientConstants["CLIENT_" + default_flags[i]] || 0x0; + } + // add user flags unless already already added + for (i in user_flags) { + if (user_flags[i][0] == "-") continue; + if (default_flags.indexOf(user_flags[i]) >= 0) continue; + + flags |= ClientConstants["CLIENT_" + user_flags[i]] || 0x0; + } + + return flags; +}; + +ConnectionConfig.getDefaultFlags = function(options) { + var defaultFlags = [ "LONG_PASSWORD", "FOUND_ROWS", "LONG_FLAG", + "CONNECT_WITH_DB", "ODBC", "LOCAL_FILES", + "IGNORE_SPACE", "PROTOCOL_41", "IGNORE_SIGPIPE", + "TRANSACTIONS", "RESERVED", "SECURE_CONNECTION", + "MULTI_RESULTS" ]; + if (options && options.multipleStatements) { + defaultFlags.push("MULTI_STATEMENTS"); + } + + return defaultFlags; +}; + +ConnectionConfig.getCharsetNumber = function(charset) { + return Charsets[charset]; +}; + +ConnectionConfig.parseUrl = function(url) { + url = urlParse(url, true); + + var options = { + host : url.hostname, + port : url.port, + database : url.pathname.substr(1), + }; + + if (url.auth) { + var auth = url.auth.split(':'); + options.user = auth[0]; + options.password = auth[1]; + } + + if (url.query) { + for (var key in url.query) { + var value = url.query[key]; + + try { + // Try to parse this as a JSON expression first + options[key] = JSON.parse(value); + } catch (err) { + // Otherwise assume it is a plain string + options[key] = value; + } + } + } + + return options; +}; diff --git a/node_modules/mysql/lib/Pool.js b/node_modules/mysql/lib/Pool.js new file mode 100644 index 0000000..e3a5add --- /dev/null +++ b/node_modules/mysql/lib/Pool.js @@ -0,0 +1,148 @@ + +var Mysql = require('../'); +var Connection = require('./Connection'); + +module.exports = Pool; +function Pool(options) { + this.config = options.config; + this.config.connectionConfig.pool = this; + + this._allConnections = []; + this._freeConnections = []; + this._connectionQueue = []; + this._closed = false; +} + +Pool.prototype.getConnection = function(cb) { + if (this._closed) { + cb(new Error('Pool is closed.')); + return; + } + + if (this._freeConnections.length > 0) { + var connection = this._freeConnections[0]; + this._freeConnections.shift(); + cb(null, connection); + } else if (this.config.connectionLimit == 0 || this._allConnections.length < this.config.connectionLimit) { + var self = this; + var connection = this._createConnection(); + this._allConnections.push(connection); + connection.connect(function(err) { + if (self._closed) { + cb(new Error('Pool is closed.')); + } + else if (err) { + cb(err); + } else { + cb(null, connection); + } + }); + } else if (this.config.waitForConnections) { + this._connectionQueue.push(cb); + } else { + cb(new Error('No connections available.')); + } +}; + +Pool.prototype.releaseConnection = function(connection) { + if (connection._poolRemoved) { + // The connection has been removed from the pool and is no longer good. + if (this._connectionQueue.length) { + var cb = this._connectionQueue[0]; + this._connectionQueue.shift(); + process.nextTick(this.getConnection.bind(this, cb)); + } + } else if (this._connectionQueue.length) { + var cb = this._connectionQueue[0]; + this._connectionQueue.shift(); + process.nextTick(cb.bind(null, null, connection)); + } else { + this._freeConnections.push(connection); + } +}; + +Pool.prototype.end = function(cb) { + this._closed = true; + cb = cb || function(err) { if( err ) throw err; }; + var self = this; + var closedConnections = 0; + var calledBack = false; + var endCB = function(err) { + if (calledBack) { + return; + } else if (err) { + calledBack = true; + delete endCB; + cb(err); + } else if (++closedConnections >= self._allConnections.length) { + calledBack = true; + delete endCB; + cb(); + } + }; + + if (this._allConnections.length == 0) { + endCB(); + return; + } + + for (var i = 0; i < this._allConnections.length; ++i) { + var connection = this._allConnections[i]; + connection.destroy = connection._realDestroy; + connection.end = connection._realEnd; + connection.end(endCB); + } +}; + +Pool.prototype._createConnection = function() { + var self = this; + var connection = (this.config.createConnection) + ? this.config.createConnection(this.config.connectionConfig) + : Mysql.createConnection(this.config.connectionConfig); + + connection._realEnd = connection.end; + connection.end = function(cb) { + self.releaseConnection(connection); + if (cb) cb(); + }; + + connection._realDestroy = connection.destroy; + connection.destroy = function() { + self._removeConnection(connection); + connection.destroy(); + }; + + // When a fatal error occurs the connection's protocol ends, which will cause + // the connection to end as well, thus we only need to watch for the end event + // and we will be notified of disconnects. + connection.on('end', this._handleConnectionEnd.bind(this, connection)); + + return connection; +}; + +Pool.prototype._handleConnectionEnd = function(connection) { + if (this._closed || connection._poolRemoved) { + return; + } + this._removeConnection(connection); +}; + +Pool.prototype._removeConnection = function(connection) { + connection._poolRemoved = true; + for (var i = 0; i < this._allConnections.length; ++i) { + if (this._allConnections[i] === connection) { + this._allConnections.splice(i, 1); + break; + } + } + for (var i = 0; i < this._freeConnections.length; ++i) { + if (this._freeConnections[i] === connection) { + this._freeConnections.splice(i, 1); + break; + } + } + + connection.end = connection._realEnd; + connection.destroy = connection._realDestroy; + this.releaseConnection(connection); +}; diff --git a/node_modules/mysql/lib/PoolConfig.js b/node_modules/mysql/lib/PoolConfig.js new file mode 100644 index 0000000..838382f --- /dev/null +++ b/node_modules/mysql/lib/PoolConfig.js @@ -0,0 +1,14 @@ + +var ConnectionConfig = require('./ConnectionConfig'); + +module.exports = PoolConfig; +function PoolConfig(options) { + this.connectionConfig = new ConnectionConfig(options); + this.createConnection = options.createConnection || undefined; + this.waitForConnections = (options.waitForConnections === undefined) + ? true + : Boolean(options.waitForConnections); + this.connectionLimit = (options.connectionLimit === undefined) + ? 10 + : Number(options.connectionLimit); +} diff --git a/node_modules/mysql/lib/protocol/Auth.js b/node_modules/mysql/lib/protocol/Auth.js new file mode 100644 index 0000000..f8738c5 --- /dev/null +++ b/node_modules/mysql/lib/protocol/Auth.js @@ -0,0 +1,165 @@ +var Buffer = require('buffer').Buffer; +var Crypto = require('crypto'); +var Auth = exports; + +function sha1(msg) { + var hash = Crypto.createHash('sha1'); + hash.update(msg); + // hash.digest() does not output buffers yet + return hash.digest('binary'); +}; +Auth.sha1 = sha1; + +function xor(a, b) { + a = new Buffer(a, 'binary'); + b = new Buffer(b, 'binary'); + var result = new Buffer(a.length); + for (var i = 0; i < a.length; i++) { + result[i] = (a[i] ^ b[i]); + } + return result; +}; +Auth.xor = xor; + +Auth.token = function(password, scramble) { + if (!password) { + return new Buffer(0); + } + + var stage1 = sha1(password); + var stage2 = sha1(stage1); + var stage3 = sha1(scramble.toString('binary') + stage2); + return xor(stage3, stage1); +}; + +// This is a port of sql/password.c:hash_password which needs to be used for +// pre-4.1 passwords. +Auth.hashPassword = function(password) { + var nr = [0x5030, 0x5735], + add = 7, + nr2 = [0x1234, 0x5671], + result = new Buffer(8); + + if (typeof password == 'string'){ + password = new Buffer(password); + } + + for (var i = 0; i < password.length; i++) { + var c = password[i]; + if (c == 32 || c == 9) { + // skip space in password + continue; + } + + // nr^= (((nr & 63)+add)*c)+ (nr << 8); + // nr = xor(nr, add(mul(add(and(nr, 63), add), c), shl(nr, 8))) + nr = this.xor32(nr, this.add32(this.mul32(this.add32(this.and32(nr, [0,63]), [0,add]), [0,c]), this.shl32(nr, 8))); + + // nr2+=(nr2 << 8) ^ nr; + // nr2 = add(nr2, xor(shl(nr2, 8), nr)) + nr2 = this.add32(nr2, this.xor32(this.shl32(nr2, 8), nr)); + + // add+=tmp; + add += c; + } + + this.int31Write(result, nr, 0); + this.int31Write(result, nr2, 4); + + return result; +}; + +Auth.randomInit = function(seed1, seed2) { + return { + max_value: 0x3FFFFFFF, + max_value_dbl: 0x3FFFFFFF, + seed1: seed1 % 0x3FFFFFFF, + seed2: seed2 % 0x3FFFFFFF + }; +}; + +Auth.myRnd = function(r){ + r.seed1 = (r.seed1 * 3 + r.seed2) % r.max_value; + r.seed2 = (r.seed1 + r.seed2 + 33) % r.max_value; + + return r.seed1 / r.max_value_dbl; +}; + +Auth.scramble323 = function(message, password) { + var to = new Buffer(8), + hashPass = this.hashPassword(password), + hashMessage = this.hashPassword(message.slice(0, 8)), + seed1 = this.int32Read(hashPass, 0) ^ this.int32Read(hashMessage, 0), + seed2 = this.int32Read(hashPass, 4) ^ this.int32Read(hashMessage, 4), + r = this.randomInit(seed1, seed2); + + for (var i = 0; i < 8; i++){ + to[i] = Math.floor(this.myRnd(r) * 31) + 64; + } + var extra = (Math.floor(this.myRnd(r) * 31)); + + for (var i = 0; i < 8; i++){ + to[i] ^= extra; + } + + return to; +}; + +Auth.fmt32 = function(x){ + var a = x[0].toString(16), + b = x[1].toString(16); + + if (a.length == 1) a = '000'+a; + if (a.length == 2) a = '00'+a; + if (a.length == 3) a = '0'+a; + if (b.length == 1) b = '000'+b; + if (b.length == 2) b = '00'+b; + if (b.length == 3) b = '0'+b; + return '' + a + '/' + b; +}; + +Auth.xor32 = function(a,b){ + return [a[0] ^ b[0], a[1] ^ b[1]]; +}; + +Auth.add32 = function(a,b){ + var w1 = a[1] + b[1], + w2 = a[0] + b[0] + ((w1 & 0xFFFF0000) >> 16); + + return [w2 & 0xFFFF, w1 & 0xFFFF]; +}; + +Auth.mul32 = function(a,b){ + // based on this example of multiplying 32b ints using 16b + // http://www.dsprelated.com/showmessage/89790/1.php + var w1 = a[1] * b[1], + w2 = (((a[1] * b[1]) >> 16) & 0xFFFF) + ((a[0] * b[1]) & 0xFFFF) + (a[1] * b[0] & 0xFFFF); + + return [w2 & 0xFFFF, w1 & 0xFFFF]; +}; + +Auth.and32 = function(a,b){ + return [a[0] & b[0], a[1] & b[1]]; +}; + +Auth.shl32 = function(a,b){ + // assume b is 16 or less + var w1 = a[1] << b, + w2 = (a[0] << b) | ((w1 & 0xFFFF0000) >> 16); + + return [w2 & 0xFFFF, w1 & 0xFFFF]; +}; + +Auth.int31Write = function(buffer, number, offset) { + buffer[offset] = (number[0] >> 8) & 0x7F; + buffer[offset + 1] = (number[0]) & 0xFF; + buffer[offset + 2] = (number[1] >> 8) & 0xFF; + buffer[offset + 3] = (number[1]) & 0xFF; +}; + +Auth.int32Read = function(buffer, offset){ + return (buffer[offset] << 24) + + (buffer[offset+1] << 16) + + (buffer[offset+2] << 8) + + (buffer[offset+3]); +}; diff --git a/node_modules/mysql/lib/protocol/PacketHeader.js b/node_modules/mysql/lib/protocol/PacketHeader.js new file mode 100644 index 0000000..1bb282e --- /dev/null +++ b/node_modules/mysql/lib/protocol/PacketHeader.js @@ -0,0 +1,5 @@ +module.exports = PacketHeader; +function PacketHeader(length, number) { + this.length = length; + this.number = number; +} diff --git a/node_modules/mysql/lib/protocol/PacketWriter.js b/node_modules/mysql/lib/protocol/PacketWriter.js new file mode 100644 index 0000000..7de4e5a --- /dev/null +++ b/node_modules/mysql/lib/protocol/PacketWriter.js @@ -0,0 +1,197 @@ +var BIT_16 = Math.pow(2, 16); +var BIT_24 = Math.pow(2, 24); +// The maximum precision JS Numbers can hold precisely +// Don't panic: Good enough to represent byte values up to 8192 TB +var IEEE_754_BINARY_64_PRECISION = Math.pow(2, 53); +var MAX_PACKET_LENGTH = Math.pow(2, 24) - 1; + +module.exports = PacketWriter; +function PacketWriter() { + this._buffer = new Buffer(0); + this._offset = 0; +} + +PacketWriter.prototype.toBuffer = function(parser) { + var packets = Math.floor(this._buffer.length / MAX_PACKET_LENGTH) + 1; + var buffer = this._buffer; + this._buffer = new Buffer(this._buffer.length + packets * 4); + + for (var packet = 0; packet < packets; packet++) { + this._offset = packet * (MAX_PACKET_LENGTH + 4); + + var isLast = (packet + 1 === packets); + var packetLength = (isLast) + ? buffer.length % MAX_PACKET_LENGTH + : MAX_PACKET_LENGTH; + + var packetNumber = parser.incrementPacketNumber(); + + this.writeUnsignedNumber(3, packetLength); + this.writeUnsignedNumber(1, packetNumber); + + var start = packet * MAX_PACKET_LENGTH; + var end = start + packetLength; + + this.writeBuffer(buffer.slice(start, end)); + } + + return this._buffer; +}; + +PacketWriter.prototype.writeUnsignedNumber = function(bytes, value) { + this._allocate(bytes); + + for (var i = 0; i < bytes; i++) { + this._buffer[this._offset++] = (value >> (i * 8)) & 0xff; + } +}; + +PacketWriter.prototype.writeFiller = function(bytes) { + this._allocate(bytes); + + for (var i = 0; i < bytes; i++) { + this._buffer[this._offset++] = 0x00; + } +}; + +PacketWriter.prototype.writeNullTerminatedString = function(value, encoding) { + // Typecast undefined into '' and numbers into strings + value = value || ''; + value = value + ''; + + var bytes = Buffer.byteLength(value, encoding || 'utf-8') + 1; + this._allocate(bytes); + + this._buffer.write(value, this._offset, encoding); + this._buffer[this._offset + bytes - 1] = 0x00; + + this._offset += bytes; +}; + +PacketWriter.prototype.writeString = function(value) { + // Typecast undefined into '' and numbers into strings + value = value || ''; + value = value + ''; + + var bytes = Buffer.byteLength(value, 'utf-8'); + this._allocate(bytes); + + this._buffer.write(value, this._offset, 'utf-8'); + + this._offset += bytes; +}; + +PacketWriter.prototype.writeBuffer = function(value) { + var bytes = value.length; + + this._allocate(bytes); + value.copy(this._buffer, this._offset); + this._offset += bytes; +}; + +PacketWriter.prototype.writeLengthCodedNumber = function(value) { + if (value === null) { + this._allocate(1); + this._buffer[this._offset++] = 251; + return; + } + + if (value <= 250) { + this._allocate(1); + this._buffer[this._offset++] = value; + return; + } + + if (value > IEEE_754_BINARY_64_PRECISION) { + throw new Error( + 'writeLengthCodedNumber: JS precision range exceeded, your ' + + 'number is > 53 bit: "' + value + '"' + ); + } + + if (value <= BIT_16) { + this._allocate(3) + this._buffer[this._offset++] = 252; + } else if (value <= BIT_24) { + this._allocate(4) + this._buffer[this._offset++] = 253; + } else { + this._allocate(9); + this._buffer[this._offset++] = 254; + } + + // 16 Bit + this._buffer[this._offset++] = value & 0xff; + this._buffer[this._offset++] = (value >> 8) & 0xff; + + if (value <= BIT_16) return; + + // 24 Bit + this._buffer[this._offset++] = (value >> 16) & 0xff; + + if (value <= BIT_24) return; + + this._buffer[this._offset++] = (value >> 24) & 0xff; + + // Hack: Get the most significant 32 bit (JS bitwise operators are 32 bit) + value = value.toString(2); + value = value.substr(0, value.length - 32); + value = parseInt(value, 2); + + this._buffer[this._offset++] = value & 0xff; + this._buffer[this._offset++] = (value >> 8) & 0xff; + this._buffer[this._offset++] = (value >> 16) & 0xff; + + // Set last byte to 0, as we can only support 53 bits in JS (see above) + this._buffer[this._offset++] = 0; +}; + +PacketWriter.prototype.writeLengthCodedBuffer = function(value) { + var bytes = value.length; + this.writeLengthCodedNumber(bytes); + this.writeBuffer(value); +}; + +PacketWriter.prototype.writeNullTerminatedBuffer = function(value) { + this.writeBuffer(value); + this.writeFiller(1); // 0x00 terminator +}; + +PacketWriter.prototype.writeLengthCodedString = function(value) { + if (value === null) { + this.writeLengthCodedNumber(null); + return; + } + + value = (value === undefined) + ? '' + : String(value); + + var bytes = Buffer.byteLength(value, 'utf-8'); + this.writeLengthCodedNumber(bytes); + + if (!bytes) { + return; + } + + this._allocate(bytes); + this._buffer.write(value, this._offset, 'utf-8'); + this._offset += bytes; +}; + +PacketWriter.prototype._allocate = function(bytes) { + if (!this._buffer) { + this._buffer = new Buffer(bytes); + return; + } + + var bytesRemaining = this._buffer.length - this._offset; + if (bytesRemaining >= bytes) { + return; + } + + var oldBuffer = this._buffer; + + this._buffer = new Buffer(oldBuffer.length + bytes); + oldBuffer.copy(this._buffer); +}; diff --git a/node_modules/mysql/lib/protocol/Parser.js b/node_modules/mysql/lib/protocol/Parser.js new file mode 100644 index 0000000..d7a8751 --- /dev/null +++ b/node_modules/mysql/lib/protocol/Parser.js @@ -0,0 +1,386 @@ +var IEEE_754_BINARY_64_PRECISION = Math.pow(2, 53); +var MAX_PACKET_LENGTH = Math.pow(2, 24) - 1; +var PacketHeader = require('./PacketHeader'); +var BigNumber = require("bignumber.js"); + +module.exports = Parser; +function Parser(options) { + options = options || {}; + + this._supportBigNumbers = options.config && options.config.supportBigNumbers; + this._buffer = new Buffer(0); + this._longPacketBuffers = []; + this._offset = 0; + this._packetEnd = null; + this._packetHeader = null; + this._onPacket = options.onPacket || function() {}; + this._nextPacketNumber = 0; + this._encoding = 'utf-8'; + this._paused = false; +} + +Parser.prototype.write = function(buffer) { + this.append(buffer); + + while (true) { + if (this._paused) { + return; + } + + if (!this._packetHeader) { + if (this._bytesRemaining() < 4) { + break; + } + + this._packetHeader = new PacketHeader( + this.parseUnsignedNumber(3), + this.parseUnsignedNumber(1) + ); + + this._trackAndVerifyPacketNumber(this._packetHeader.number); + } + + if (this._bytesRemaining() < this._packetHeader.length) { + break; + } + + this._packetEnd = this._offset + this._packetHeader.length; + + if (this._packetHeader.length === MAX_PACKET_LENGTH) { + this._longPacketBuffers.push(this._buffer.slice(this._offset, this._packetEnd)); + + this._advanceToNextPacket(); + continue; + } + + this._combineLongPacketBuffers(); + + // Try...finally to ensure exception safety. Unfortunately this is costing + // us up to ~10% performance in some benchmarks. + var hadException = true; + try { + this._onPacket(this._packetHeader); + hadException = false; + } finally { + this._advanceToNextPacket(); + + // If we had an exception, the parser while loop will be broken out + // of after the finally block. So we need to make sure to re-enter it + // to continue parsing any bytes that may already have been received. + if (hadException) { + process.nextTick(this.write.bind(this)); + } + } + } +}; + +Parser.prototype.append = function(newBuffer) { + // If resume() is called, we don't pass a buffer to write() + if (!newBuffer) { + return; + } + + var oldBuffer = this._buffer; + var bytesRemaining = this._bytesRemaining(); + var newLength = bytesRemaining + newBuffer.length; + + var combinedBuffer = (this._offset > newLength) + ? oldBuffer.slice(0, newLength) + : new Buffer(newLength); + + oldBuffer.copy(combinedBuffer, 0, this._offset); + newBuffer.copy(combinedBuffer, bytesRemaining); + + this._buffer = combinedBuffer; + this._offset = 0; +}; + +Parser.prototype.pause = function() { + this._paused = true; +}; + +Parser.prototype.resume = function() { + this._paused = false; + + // nextTick() to avoid entering write() multiple times within the same stack + // which would cause problems as write manipulates the state of the object. + process.nextTick(this.write.bind(this)); +}; + +Parser.prototype.peak = function() { + return this._buffer[this._offset]; +}; + +Parser.prototype.parseUnsignedNumber = function(bytes) { + var bytesRead = 0; + var value = 0; + + while (bytesRead < bytes) { + var byte = this._buffer[this._offset++]; + + value += byte * Math.pow(256, bytesRead); + + bytesRead++; + } + + return value; +}; + +Parser.prototype.parseLengthCodedString = function() { + var length = this.parseLengthCodedNumber(); + + if (length === null) { + return null; + } + + return this.parseString(length); +}; + +Parser.prototype.parseLengthCodedBuffer = function() { + var length = this.parseLengthCodedNumber(); + + if (length === null) { + return null; + } + + return this.parseBuffer(length); +}; + +Parser.prototype.parseLengthCodedNumber = function() { + var bits = this._buffer[this._offset++]; + + if (bits <= 251) { + return (bits === 251) + ? null + : bits; + } + + var length; + var bigNumber = false; + var value = 0; + + if (bits === 252) { + length = 2; + } else if (bits === 253) { + length = 3; + } else if (bits === 254) { + length = 8; + + if (this._supportBigNumbers) { + if (this._buffer[this._offset + 6] > 31 || this._buffer[this._offset + 7]) { + value = new BigNumber(0); + bigNumber = true; + } + } + } else { + throw new Error('parseLengthCodedNumber: Unexpected first byte: ' + bits); + } + + for (var bytesRead = 0; bytesRead < length; bytesRead++) { + bits = this._buffer[this._offset++]; + + if (bigNumber) { + value = value.plus((new BigNumber(256)).pow(bytesRead).times(bits)); + } else { + value += Math.pow(256, bytesRead) * bits; + } + } + + if (bigNumber) { + return value.toString(); + } + + if (value >= IEEE_754_BINARY_64_PRECISION) { + throw new Error( + 'parseLengthCodedNumber: JS precision range exceeded, ' + + 'number is >= 53 bit: "' + value + '"' + ); + } + + return value; +}; + +Parser.prototype.parseFiller = function(length) { + return this.parseBuffer(length); +}; + +Parser.prototype.parseNullTerminatedBuffer = function() { + var end = this._nullByteOffset(); + var value = this._buffer.slice(this._offset, end); + this._offset = end + 1; + + return value; +}; + +Parser.prototype.parseNullTerminatedString = function() { + var end = this._nullByteOffset(); + var value = this._buffer.toString(this._encoding, this._offset, end); + this._offset = end + 1; + + return value; +}; + +Parser.prototype._nullByteOffset = function() { + var offset = this._offset; + + while (this._buffer[offset] !== 0x00) { + offset++; + + if (offset >= this._buffer.length) { + throw new Error('Offset of null terminated string not found.'); + } + } + + return offset; +}; + +Parser.prototype.parsePacketTerminatedString = function() { + var length = this._packetEnd - this._offset; + return this.parseString(length); +}; + +Parser.prototype.parseBuffer = function(length) { + var response = new Buffer(length); + this._buffer.copy(response, 0, this._offset, this._offset + length); + + this._offset += length; + return response; +}; + +Parser.prototype.parseString = function(length) { + var offset = this._offset; + var end = offset + length; + var value = this._buffer.toString(this._encoding, offset, end); + + this._offset = end; + return value; +}; + +Parser.prototype.parseGeometryValue = function() { + var buffer = this.parseLengthCodedBuffer(); + var offset = 4; + + if (buffer === null) { + return null; + } + + function parseGeometry() { + var result = null; + var byteOrder = buffer.readUInt8(offset); offset += 1; + var wkbType = byteOrder? buffer.readUInt32LE(offset) : buffer.readUInt32BE(offset); offset += 4; + switch(wkbType) { + case 1: // WKBPoint + var x = byteOrder? buffer.readDoubleLE(offset) : buffer.readDoubleBE(offset); offset += 8; + var y = byteOrder? buffer.readDoubleLE(offset) : buffer.readDoubleBE(offset); offset += 8; + result = {x: x, y: y}; + break; + case 2: // WKBLineString + var numPoints = byteOrder? buffer.readUInt32LE(offset) : buffer.readUInt32BE(offset); offset += 4; + result = []; + for(var i=numPoints;i>0;i--) { + var x = byteOrder? buffer.readDoubleLE(offset) : buffer.readDoubleBE(offset); offset += 8; + var y = byteOrder? buffer.readDoubleLE(offset) : buffer.readDoubleBE(offset); offset += 8; + result.push({x: x, y: y}); + } + break; + case 3: // WKBPolygon + var numRings = byteOrder? buffer.readUInt32LE(offset) : buffer.readUInt32BE(offset); offset += 4; + result = []; + for(var i=numRings;i>0;i--) { + var numPoints = byteOrder? buffer.readUInt32LE(offset) : buffer.readUInt32BE(offset); offset += 4; + var line = []; + for(var j=numPoints;j>0;j--) { + var x = byteOrder? buffer.readDoubleLE(offset) : buffer.readDoubleBE(offset); offset += 8; + var y = byteOrder? buffer.readDoubleLE(offset) : buffer.readDoubleBE(offset); offset += 8; + line.push({x: x, y: y}); + } + result.push(line); + } + break; + case 4: // WKBMultiPoint + case 5: // WKBMultiLineString + case 6: // WKBMultiPolygon + case 7: // WKBGeometryCollection + var num = byteOrder? buffer.readUInt32LE(offset) : buffer.readUInt32BE(offset); offset += 4; + var result = []; + for(var i=num;i>0;i--) { + result.push(parseGeometry()); + } + break; + } + return result; + } + return parseGeometry(); +} + +Parser.prototype.reachedPacketEnd = function() { + return this._offset === this._packetEnd; +}; + +Parser.prototype._bytesRemaining = function() { + return this._buffer.length - this._offset; +}; + +Parser.prototype._trackAndVerifyPacketNumber = function(number) { + if (number !== this._nextPacketNumber) { + var err = new Error( + 'Packets out of order. Got: ' + number + ' ' + + 'Expected: ' + this._nextPacketNumber + ); + + err.code = 'PROTOCOL_PACKETS_OUT_OF_ORDER'; + + throw err; + } + + this.incrementPacketNumber(); +}; + +Parser.prototype.incrementPacketNumber = function() { + var currentPacketNumber = this._nextPacketNumber; + this._nextPacketNumber = (this._nextPacketNumber + 1) % 256; + + return currentPacketNumber; +}; + +Parser.prototype.resetPacketNumber = function() { + this._nextPacketNumber = 0; +}; + +Parser.prototype.packetLength = function() { + return this._longPacketBuffers.reduce(function(length, buffer) { + return length + buffer.length; + }, this._packetHeader.length); +}; + +Parser.prototype._combineLongPacketBuffers = function() { + if (!this._longPacketBuffers.length) { + return; + } + + var trailingPacketBytes = this._buffer.length - this._packetEnd; + + var length = this._longPacketBuffers.reduce(function(length, buffer) { + return length + buffer.length; + }, this._bytesRemaining()); + + var combinedBuffer = new Buffer(length); + + var offset = this._longPacketBuffers.reduce(function(offset, buffer) { + buffer.copy(combinedBuffer, offset); + return offset + buffer.length; + }, 0); + + this._buffer.copy(combinedBuffer, offset, this._offset); + + this._buffer = combinedBuffer; + this._longPacketBuffers = []; + this._offset = 0; + this._packetEnd = this._buffer.length - trailingPacketBytes; +}; + +Parser.prototype._advanceToNextPacket = function() { + this._offset = this._packetEnd; + this._packetHeader = null; + this._packetEnd = null; +}; diff --git a/node_modules/mysql/lib/protocol/Protocol.js b/node_modules/mysql/lib/protocol/Protocol.js new file mode 100644 index 0000000..da743ee --- /dev/null +++ b/node_modules/mysql/lib/protocol/Protocol.js @@ -0,0 +1,296 @@ +var Parser = require('./Parser'); +var Sequences = require('./sequences'); +var Packets = require('./packets'); +var Auth = require('./Auth'); +var Stream = require('stream').Stream; +var Util = require('util'); +var PacketWriter = require('./PacketWriter'); + +module.exports = Protocol; +Util.inherits(Protocol, Stream); +function Protocol(options) { + Stream.call(this); + + options = options || {}; + + this.readable = true; + this.writable = true; + + this._config = options.config || {}; + this._connection = options.connection; + this._callback = null; + this._fatalError = null; + this._quitSequence = null; + this._handshakeSequence = null; + this._destroyed = false; + this._queue = []; + this._handshakeInitializationPacket = null; + + this._parser = new Parser({ + onPacket : this._parsePacket.bind(this), + config : this._config + }); +} + +Protocol.prototype.write = function(buffer) { + this._parser.write(buffer); + return true; +}; + +Protocol.prototype.handshake = function(cb) { + return this._handshakeSequence = this._enqueue(new Sequences.Handshake(this._config, cb)); +}; + +Protocol.prototype.query = function(options, cb) { + return this._enqueue(new Sequences.Query(options, cb)); +}; + +Protocol.prototype.changeUser = function(options, cb) { + return this._enqueue(new Sequences.ChangeUser(options, cb)); +}; + +Protocol.prototype.ping = function(cb) { + return this._enqueue(new Sequences.Ping(cb)); +}; + +Protocol.prototype.stats = function(cb) { + return this._enqueue(new Sequences.Statistics(cb)); +}; + +Protocol.prototype.quit = function(cb) { + return this._quitSequence = this._enqueue(new Sequences.Quit(cb)); +}; + +Protocol.prototype.end = function() { + var expected = (this._quitSequence && this._queue[0] === this._quitSequence); + if (expected) { + this._quitSequence.end(); + this.emit('end'); + return; + } + + var err = new Error('Connection lost: The server closed the connection.'); + err.fatal = true; + err.code = 'PROTOCOL_CONNECTION_LOST'; + + this._delegateError(err); +}; + +Protocol.prototype.pause = function() { + this._parser.pause(); +}; + +Protocol.prototype.resume = function() { + this._parser.resume(); +}; + +Protocol.prototype._enqueue = function(sequence) { + if (!this._validateEnqueue(sequence)) { + return sequence; + } + + this._queue.push(sequence); + + var self = this; + sequence + .on('error', function(err) { + self._delegateError(err, sequence); + }) + .on('packet', function(packet) { + self._emitPacket(packet); + }) + .on('end', function() { + self._dequeue(); + }); + + if (this._queue.length === 1) { + this._parser.resetPacketNumber(); + sequence.start(); + } + + return sequence; +}; + +Protocol.prototype._validateEnqueue = function(sequence) { + var err; + var prefix = 'Cannot enqueue ' + sequence.constructor.name + ' after '; + + if (this._quitSequence) { + err = new Error(prefix + 'invoking quit.'); + err.code = 'PROTOCOL_ENQUEUE_AFTER_QUIT'; + } else if (this._destroyed) { + err = new Error(prefix + 'being destroyed.'); + err.code = 'PROTOCOL_ENQUEUE_AFTER_DESTROY'; + } else if (this._handshakeSequence && sequence.constructor === Sequences.Handshake) { + err = new Error(prefix + 'already enqueuing a Handshake.'); + err.code = 'PROTOCOL_ENQUEUE_HANDSHAKE_TWICE'; + } else { + return true; + } + + var self = this; + err.fatal = false; + + sequence + .on('error', function(err) { + self._delegateError(err, sequence); + }) + .end(err); + + return false; +}; + +Protocol.prototype._parsePacket = function() { + var sequence = this._queue[0]; + var Packet = this._determinePacket(sequence); + var packet = new Packet(); + + // Special case: Faster dispatch, and parsing done inside sequence + if (Packet === Packets.RowDataPacket) { + sequence.RowDataPacket(packet, this._parser, this._connection); + + if (this._config.debug) { + this._debugPacket(true, packet); + } + + return; + } + + packet.parse(this._parser); + + if (this._config.debug) { + this._debugPacket(true, packet); + } + + if (Packet === Packets.HandshakeInitializationPacket) { + this._handshakeInitializationPacket = packet; + } + + sequence[Packet.name](packet); +}; + +Protocol.prototype._emitPacket = function(packet) { + var packetWriter = new PacketWriter(); + packet.write(packetWriter); + this.emit('data', packetWriter.toBuffer(this._parser)); + + if (this._config.debug) { + this._debugPacket(false, packet) + } +}; + +Protocol.prototype._determinePacket = function(sequence) { + var firstByte = this._parser.peak(); + + if (sequence.determinePacket) { + var Packet = sequence.determinePacket(firstByte, this._parser); + if (Packet) { + return Packet; + } + } + + switch (firstByte) { + case 0x00: return Packets.OkPacket; + case 0xfe: return Packets.EofPacket; + case 0xff: return Packets.ErrorPacket; + } + + throw new Error('Could not determine packet, firstByte = ' + firstByte); +}; + +Protocol.prototype._dequeue = function() { + // No point in advancing the queue, we are dead + if (this._fatalError) { + return; + } + + this._queue.shift(); + + var sequence = this._queue[0]; + if (!sequence) { + this.emit('drain'); + return; + } + + this._parser.resetPacketNumber(); + + if (sequence.constructor == Sequences.ChangeUser) { + sequence.start(this._handshakeInitializationPacket); + return; + } + + sequence.start(); +}; + +Protocol.prototype.handleNetworkError = function(err) { + err.fatal = true; + + var sequence = this._queue[0]; + if (sequence) { + sequence.end(err) + } else { + this._delegateError(err); + } +}; + +Protocol.prototype._delegateError = function(err, sequence) { + // Stop delegating errors after the first fatal error + if (this._fatalError) { + return; + } + + if (err.fatal) { + this._fatalError = err; + } + + if (this._shouldErrorBubbleUp(err, sequence)) { + // Can't use regular 'error' event here as that always destroys the pipe + // between socket and protocol which is not what we want (unless the + // exception was fatal). + this.emit('unhandledError', err); + } else if (err.fatal) { + this._queue.forEach(function(sequence) { + sequence.end(err); + }); + } + + // Make sure the stream we are piping to is getting closed + if (err.fatal) { + this.emit('end', err); + } +}; + +Protocol.prototype._shouldErrorBubbleUp = function(err, sequence) { + if (sequence) { + if (sequence.hasErrorHandler()) { + return false; + } else if (!err.fatal) { + return true; + } + } + + return (err.fatal && !this._hasPendingErrorHandlers()); +}; + +Protocol.prototype._hasPendingErrorHandlers = function() { + return this._queue.some(function(sequence) { + return sequence.hasErrorHandler(); + }); +}; + +Protocol.prototype.destroy = function() { + this._destroyed = true; + this._parser.pause(); +}; + +Protocol.prototype._debugPacket = function(incoming, packet) { + var headline = (incoming) + ? '<-- ' + : '--> '; + + headline = headline + packet.constructor.name; + + console.log(headline); + console.log(packet); + console.log(''); +}; diff --git a/node_modules/mysql/lib/protocol/ResultSet.js b/node_modules/mysql/lib/protocol/ResultSet.js new file mode 100644 index 0000000..f58d74f --- /dev/null +++ b/node_modules/mysql/lib/protocol/ResultSet.js @@ -0,0 +1,7 @@ +module.exports = ResultSet; +function ResultSet(resultSetHeaderPacket) { + this.resultSetHeaderPacket = resultSetHeaderPacket; + this.fieldPackets = []; + this.eofPackets = []; + this.rows = []; +} diff --git a/node_modules/mysql/lib/protocol/SqlString.js b/node_modules/mysql/lib/protocol/SqlString.js new file mode 100644 index 0000000..5dfa3be --- /dev/null +++ b/node_modules/mysql/lib/protocol/SqlString.js @@ -0,0 +1,136 @@ +var SqlString = exports; + +SqlString.escapeId = function (val, forbidQualified) { + if (forbidQualified) { + return '`' + val.replace(/`/g, '``') + '`'; + } + return '`' + val.replace(/`/g, '``').replace(/\./g, '`.`') + '`'; +}; + +SqlString.escape = function(val, stringifyObjects, timeZone) { + if (val === undefined || val === null) { + return 'NULL'; + } + + switch (typeof val) { + case 'boolean': return (val) ? 'true' : 'false'; + case 'number': return val+''; + } + + if (val instanceof Date) { + val = SqlString.dateToString(val, timeZone || "Z"); + } + + if (Buffer.isBuffer(val)) { + return SqlString.bufferToString(val); + } + + if (Array.isArray(val)) { + return SqlString.arrayToList(val, timeZone); + } + + if (typeof val === 'object') { + if (stringifyObjects) { + val = val.toString(); + } else { + return SqlString.objectToValues(val, timeZone); + } + } + + val = val.replace(/[\0\n\r\b\t\\\'\"\x1a]/g, function(s) { + switch(s) { + case "\0": return "\\0"; + case "\n": return "\\n"; + case "\r": return "\\r"; + case "\b": return "\\b"; + case "\t": return "\\t"; + case "\x1a": return "\\Z"; + default: return "\\"+s; + } + }); + return "'"+val+"'"; +}; + +SqlString.arrayToList = function(array, timeZone) { + return array.map(function(v) { + if (Array.isArray(v)) return '(' + SqlString.arrayToList(v) + ')'; + return SqlString.escape(v, true, timeZone); + }).join(', '); +}; + +SqlString.format = function(sql, values, timeZone) { + values = [].concat(values); + + return sql.replace(/\?/g, function(match) { + if (!values.length) { + return match; + } + + return SqlString.escape(values.shift(), false, timeZone); + }); +}; + +SqlString.dateToString = function(date, timeZone) { + var dt = new Date(date); + + if (timeZone != 'local') { + var tz = convertTimezone(timeZone); + + dt.setTime(dt.getTime() + (dt.getTimezoneOffset() * 60000)); + if (tz !== false) { + dt.setTime(dt.getTime() + (tz * 60000)); + } + } + + var year = dt.getFullYear(); + var month = zeroPad(dt.getMonth() + 1); + var day = zeroPad(dt.getDate()); + var hour = zeroPad(dt.getHours()); + var minute = zeroPad(dt.getMinutes()); + var second = zeroPad(dt.getSeconds()); + + return year + '-' + month + '-' + day + ' ' + hour + ':' + minute + ':' + second; +}; + +SqlString.bufferToString = function(buffer) { + var hex = ''; + try { + hex = buffer.toString('hex'); + } catch (err) { + // node v0.4.x does not support hex / throws unknown encoding error + for (var i = 0; i < buffer.length; i++) { + var byte = buffer[i]; + hex += zeroPad(byte.toString(16)); + } + } + + return "X'" + hex+ "'"; +}; + +SqlString.objectToValues = function(object, timeZone) { + var values = []; + for (var key in object) { + var value = object[key]; + if(typeof value === 'function') { + continue; + } + + values.push(this.escapeId(key) + ' = ' + SqlString.escape(value, true, timeZone)); + } + + return values.join(', '); +}; + +function zeroPad(number) { + return (number < 10) ? '0' + number : number; +} + +function convertTimezone(tz) { + if (tz == "Z") return 0; + + var m = tz.match(/([\+\-\s])(\d\d):?(\d\d)?/); + if (m) { + return (m[1] == '-' ? -1 : 1) * (parseInt(m[2], 10) + ((m[3] ? parseInt(m[3], 10) : 0) / 60)) * 60; + } + return false; +} diff --git a/node_modules/mysql/lib/protocol/constants/charsets.js b/node_modules/mysql/lib/protocol/constants/charsets.js new file mode 100644 index 0000000..6aefda7 --- /dev/null +++ b/node_modules/mysql/lib/protocol/constants/charsets.js @@ -0,0 +1,128 @@ +// not sure where I got this from, will need to add a generation script for it +exports.BIG5_CHINESE_CI = 1; +exports.LATIN2_CZECH_CS = 2; +exports.DEC8_SWEDISH_CI = 3; +exports.CP850_GENERAL_CI = 4; +exports.LATIN1_GERMAN1_CI = 5; +exports.HP8_ENGLISH_CI = 6; +exports.KOI8R_GENERAL_CI = 7; +exports.LATIN1_SWEDISH_CI = 8; +exports.LATIN2_GENERAL_CI = 9; +exports.SWE7_SWEDISH_CI = 10; +exports.ASCII_GENERAL_CI = 11; +exports.UJIS_JAPANESE_CI = 12; +exports.SJIS_JAPANESE_CI = 13; +exports.CP1251_BULGARIAN_CI = 14; +exports.LATIN1_DANISH_CI = 15; +exports.HEBREW_GENERAL_CI = 16; +exports.TIS620_THAI_CI = 18; +exports.EUCKR_KOREAN_CI = 19; +exports.LATIN7_ESTONIAN_CS = 20; +exports.LATIN2_HUNGARIAN_CI = 21; +exports.KOI8U_GENERAL_CI = 22; +exports.CP1251_UKRAINIAN_CI = 23; +exports.GB2312_CHINESE_CI = 24; +exports.GREEK_GENERAL_CI = 25; +exports.CP1250_GENERAL_CI = 26; +exports.LATIN2_CROATIAN_CI = 27; +exports.GBK_CHINESE_CI = 28; +exports.CP1257_LITHUANIAN_CI = 29; +exports.LATIN5_TURKISH_CI = 30; +exports.LATIN1_GERMAN2_CI = 31; +exports.ARMSCII8_GENERAL_CI = 32; +exports.UTF8_GENERAL_CI = 33; +exports.CP1250_CZECH_CS = 34; +exports.UCS2_GENERAL_CI = 35; +exports.CP866_GENERAL_CI = 36; +exports.KEYBCS2_GENERAL_CI = 37; +exports.MACCE_GENERAL_CI = 38; +exports.MACROMAN_GENERAL_CI = 39; +exports.CP852_GENERAL_CI = 40; +exports.LATIN7_GENERAL_CI = 41; +exports.LATIN7_GENERAL_CS = 42; +exports.MACCE_BIN = 43; +exports.CP1250_CROATIAN_CI = 44; +exports.LATIN1_BIN = 47; +exports.LATIN1_GENERAL_CI = 48; +exports.LATIN1_GENERAL_CS = 49; +exports.CP1251_BIN = 50; +exports.CP1251_GENERAL_CI = 51; +exports.CP1251_GENERAL_CS = 52; +exports.MACROMAN_BIN = 53; +exports.CP1256_GENERAL_CI = 57; +exports.CP1257_BIN = 58; +exports.CP1257_GENERAL_CI = 59; +exports.BINARY = 63; +exports.ARMSCII8_BIN = 64; +exports.ASCII_BIN = 65; +exports.CP1250_BIN = 66; +exports.CP1256_BIN = 67; +exports.CP866_BIN = 68; +exports.DEC8_BIN = 69; +exports.GREEK_BIN = 70; +exports.HEBREW_BIN = 71; +exports.HP8_BIN = 72; +exports.KEYBCS2_BIN = 73; +exports.KOI8R_BIN = 74; +exports.KOI8U_BIN = 75; +exports.LATIN2_BIN = 77; +exports.LATIN5_BIN = 78; +exports.LATIN7_BIN = 79; +exports.CP850_BIN = 80; +exports.CP852_BIN = 81; +exports.SWE7_BIN = 82; +exports.UTF8_BIN = 83; +exports.BIG5_BIN = 84; +exports.EUCKR_BIN = 85; +exports.GB2312_BIN = 86; +exports.GBK_BIN = 87; +exports.SJIS_BIN = 88; +exports.TIS620_BIN = 89; +exports.UCS2_BIN = 90; +exports.UJIS_BIN = 91; +exports.GEOSTD8_GENERAL_CI = 92; +exports.GEOSTD8_BIN = 93; +exports.LATIN1_SPANISH_CI = 94; +exports.CP932_JAPANESE_CI = 95; +exports.CP932_BIN = 96; +exports.EUCJPMS_JAPANESE_CI = 97; +exports.EUCJPMS_BIN = 98; +exports.CP1250_POLISH_CI = 99; +exports.UCS2_UNICODE_CI = 128; +exports.UCS2_ICELANDIC_CI = 129; +exports.UCS2_LATVIAN_CI = 130; +exports.UCS2_ROMANIAN_CI = 131; +exports.UCS2_SLOVENIAN_CI = 132; +exports.UCS2_POLISH_CI = 133; +exports.UCS2_ESTONIAN_CI = 134; +exports.UCS2_SPANISH_CI = 135; +exports.UCS2_SWEDISH_CI = 136; +exports.UCS2_TURKISH_CI = 137; +exports.UCS2_CZECH_CI = 138; +exports.UCS2_DANISH_CI = 139; +exports.UCS2_LITHUANIAN_CI = 140; +exports.UCS2_SLOVAK_CI = 141; +exports.UCS2_SPANISH2_CI = 142; +exports.UCS2_ROMAN_CI = 143; +exports.UCS2_PERSIAN_CI = 144; +exports.UCS2_ESPERANTO_CI = 145; +exports.UCS2_HUNGARIAN_CI = 146; +exports.UTF8_UNICODE_CI = 192; +exports.UTF8_ICELANDIC_CI = 193; +exports.UTF8_LATVIAN_CI = 194; +exports.UTF8_ROMANIAN_CI = 195; +exports.UTF8_SLOVENIAN_CI = 196; +exports.UTF8_POLISH_CI = 197; +exports.UTF8_ESTONIAN_CI = 198; +exports.UTF8_SPANISH_CI = 199; +exports.UTF8_SWEDISH_CI = 200; +exports.UTF8_TURKISH_CI = 201; +exports.UTF8_CZECH_CI = 202; +exports.UTF8_DANISH_CI = 203; +exports.UTF8_LITHUANIAN_CI = 204; +exports.UTF8_SLOVAK_CI = 205; +exports.UTF8_SPANISH2_CI = 206; +exports.UTF8_ROMAN_CI = 207; +exports.UTF8_PERSIAN_CI = 208; +exports.UTF8_ESPERANTO_CI = 209; +exports.UTF8_HUNGARIAN_CI = 210; diff --git a/node_modules/mysql/lib/protocol/constants/client.js b/node_modules/mysql/lib/protocol/constants/client.js new file mode 100644 index 0000000..59aadc6 --- /dev/null +++ b/node_modules/mysql/lib/protocol/constants/client.js @@ -0,0 +1,26 @@ +// Manually extracted from mysql-5.5.23/include/mysql_com.h +exports.CLIENT_LONG_PASSWORD = 1; /* new more secure passwords */ +exports.CLIENT_FOUND_ROWS = 2; /* Found instead of affected rows */ +exports.CLIENT_LONG_FLAG = 4; /* Get all column flags */ +exports.CLIENT_CONNECT_WITH_DB = 8; /* One can specify db on connect */ +exports.CLIENT_NO_SCHEMA = 16; /* Don't allow database.table.column */ +exports.CLIENT_COMPRESS = 32; /* Can use compression protocol */ +exports.CLIENT_ODBC = 64; /* Odbc client */ +exports.CLIENT_LOCAL_FILES = 128; /* Can use LOAD DATA LOCAL */ +exports.CLIENT_IGNORE_SPACE = 256; /* Ignore spaces before '(' */ +exports.CLIENT_PROTOCOL_41 = 512; /* New 4.1 protocol */ +exports.CLIENT_INTERACTIVE = 1024; /* This is an interactive client */ +exports.CLIENT_SSL = 2048; /* Switch to SSL after handshake */ +exports.CLIENT_IGNORE_SIGPIPE = 4096; /* IGNORE sigpipes */ +exports.CLIENT_TRANSACTIONS = 8192; /* Client knows about transactions */ +exports.CLIENT_RESERVED = 16384; /* Old flag for 4.1 protocol */ +exports.CLIENT_SECURE_CONNECTION = 32768; /* New 4.1 authentication */ + +exports.CLIENT_MULTI_STATEMENTS = 65536; /* Enable/disable multi-stmt support */ +exports.CLIENT_MULTI_RESULTS = 131072; /* Enable/disable multi-results */ +exports.CLIENT_PS_MULTI_RESULTS = 262144; /* Multi-results in PS-protocol */ + +exports.CLIENT_PLUGIN_AUTH = 524288; /* Client supports plugin authentication */ + +exports.CLIENT_SSL_VERIFY_SERVER_CERT = 1073741824; +exports.CLIENT_REMEMBER_OPTIONS = 2147483648; diff --git a/node_modules/mysql/lib/protocol/constants/errors.js b/node_modules/mysql/lib/protocol/constants/errors.js new file mode 100644 index 0000000..68ed9c5 --- /dev/null +++ b/node_modules/mysql/lib/protocol/constants/errors.js @@ -0,0 +1,725 @@ +// Generated by generate-error-constants.js, do not modify by hand +exports[1000] = 'ER_HASHCHK'; +exports[1001] = 'ER_NISAMCHK'; +exports[1002] = 'ER_NO'; +exports[1003] = 'ER_YES'; +exports[1004] = 'ER_CANT_CREATE_FILE'; +exports[1005] = 'ER_CANT_CREATE_TABLE'; +exports[1006] = 'ER_CANT_CREATE_DB'; +exports[1007] = 'ER_DB_CREATE_EXISTS'; +exports[1008] = 'ER_DB_DROP_EXISTS'; +exports[1009] = 'ER_DB_DROP_DELETE'; +exports[1010] = 'ER_DB_DROP_RMDIR'; +exports[1011] = 'ER_CANT_DELETE_FILE'; +exports[1012] = 'ER_CANT_FIND_SYSTEM_REC'; +exports[1013] = 'ER_CANT_GET_STAT'; +exports[1014] = 'ER_CANT_GET_WD'; +exports[1015] = 'ER_CANT_LOCK'; +exports[1016] = 'ER_CANT_OPEN_FILE'; +exports[1017] = 'ER_FILE_NOT_FOUND'; +exports[1018] = 'ER_CANT_READ_DIR'; +exports[1019] = 'ER_CANT_SET_WD'; +exports[1020] = 'ER_CHECKREAD'; +exports[1021] = 'ER_DISK_FULL'; +exports[1022] = 'ER_DUP_KEY'; +exports[1023] = 'ER_ERROR_ON_CLOSE'; +exports[1024] = 'ER_ERROR_ON_READ'; +exports[1025] = 'ER_ERROR_ON_RENAME'; +exports[1026] = 'ER_ERROR_ON_WRITE'; +exports[1027] = 'ER_FILE_USED'; +exports[1028] = 'ER_FILSORT_ABORT'; +exports[1029] = 'ER_FORM_NOT_FOUND'; +exports[1030] = 'ER_GET_ERRNO'; +exports[1031] = 'ER_ILLEGAL_HA'; +exports[1032] = 'ER_KEY_NOT_FOUND'; +exports[1033] = 'ER_NOT_FORM_FILE'; +exports[1034] = 'ER_NOT_KEYFILE'; +exports[1035] = 'ER_OLD_KEYFILE'; +exports[1036] = 'ER_OPEN_AS_READONLY'; +exports[1037] = 'ER_OUTOFMEMORY'; +exports[1038] = 'ER_OUT_OF_SORTMEMORY'; +exports[1039] = 'ER_UNEXPECTED_EOF'; +exports[1040] = 'ER_CON_COUNT_ERROR'; +exports[1041] = 'ER_OUT_OF_RESOURCES'; +exports[1042] = 'ER_BAD_HOST_ERROR'; +exports[1043] = 'ER_HANDSHAKE_ERROR'; +exports[1044] = 'ER_DBACCESS_DENIED_ERROR'; +exports[1045] = 'ER_ACCESS_DENIED_ERROR'; +exports[1046] = 'ER_NO_DB_ERROR'; +exports[1047] = 'ER_UNKNOWN_COM_ERROR'; +exports[1048] = 'ER_BAD_NULL_ERROR'; +exports[1049] = 'ER_BAD_DB_ERROR'; +exports[1050] = 'ER_TABLE_EXISTS_ERROR'; +exports[1051] = 'ER_BAD_TABLE_ERROR'; +exports[1052] = 'ER_NON_UNIQ_ERROR'; +exports[1053] = 'ER_SERVER_SHUTDOWN'; +exports[1054] = 'ER_BAD_FIELD_ERROR'; +exports[1055] = 'ER_WRONG_FIELD_WITH_GROUP'; +exports[1056] = 'ER_WRONG_GROUP_FIELD'; +exports[1057] = 'ER_WRONG_SUM_SELECT'; +exports[1058] = 'ER_WRONG_VALUE_COUNT'; +exports[1059] = 'ER_TOO_LONG_IDENT'; +exports[1060] = 'ER_DUP_FIELDNAME'; +exports[1061] = 'ER_DUP_KEYNAME'; +exports[1062] = 'ER_DUP_ENTRY'; +exports[1063] = 'ER_WRONG_FIELD_SPEC'; +exports[1064] = 'ER_PARSE_ERROR'; +exports[1065] = 'ER_EMPTY_QUERY'; +exports[1066] = 'ER_NONUNIQ_TABLE'; +exports[1067] = 'ER_INVALID_DEFAULT'; +exports[1068] = 'ER_MULTIPLE_PRI_KEY'; +exports[1069] = 'ER_TOO_MANY_KEYS'; +exports[1070] = 'ER_TOO_MANY_KEY_PARTS'; +exports[1071] = 'ER_TOO_LONG_KEY'; +exports[1072] = 'ER_KEY_COLUMN_DOES_NOT_EXITS'; +exports[1073] = 'ER_BLOB_USED_AS_KEY'; +exports[1074] = 'ER_TOO_BIG_FIELDLENGTH'; +exports[1075] = 'ER_WRONG_AUTO_KEY'; +exports[1076] = 'ER_READY'; +exports[1077] = 'ER_NORMAL_SHUTDOWN'; +exports[1078] = 'ER_GOT_SIGNAL'; +exports[1079] = 'ER_SHUTDOWN_COMPLETE'; +exports[1080] = 'ER_FORCING_CLOSE'; +exports[1081] = 'ER_IPSOCK_ERROR'; +exports[1082] = 'ER_NO_SUCH_INDEX'; +exports[1083] = 'ER_WRONG_FIELD_TERMINATORS'; +exports[1084] = 'ER_BLOBS_AND_NO_TERMINATED'; +exports[1085] = 'ER_TEXTFILE_NOT_READABLE'; +exports[1086] = 'ER_FILE_EXISTS_ERROR'; +exports[1087] = 'ER_LOAD_INFO'; +exports[1088] = 'ER_ALTER_INFO'; +exports[1089] = 'ER_WRONG_SUB_KEY'; +exports[1090] = 'ER_CANT_REMOVE_ALL_FIELDS'; +exports[1091] = 'ER_CANT_DROP_FIELD_OR_KEY'; +exports[1092] = 'ER_INSERT_INFO'; +exports[1093] = 'ER_UPDATE_TABLE_USED'; +exports[1094] = 'ER_NO_SUCH_THREAD'; +exports[1095] = 'ER_KILL_DENIED_ERROR'; +exports[1096] = 'ER_NO_TABLES_USED'; +exports[1097] = 'ER_TOO_BIG_SET'; +exports[1098] = 'ER_NO_UNIQUE_LOGFILE'; +exports[1099] = 'ER_TABLE_NOT_LOCKED_FOR_WRITE'; +exports[1100] = 'ER_TABLE_NOT_LOCKED'; +exports[1101] = 'ER_BLOB_CANT_HAVE_DEFAULT'; +exports[1102] = 'ER_WRONG_DB_NAME'; +exports[1103] = 'ER_WRONG_TABLE_NAME'; +exports[1104] = 'ER_TOO_BIG_SELECT'; +exports[1105] = 'ER_UNKNOWN_ERROR'; +exports[1106] = 'ER_UNKNOWN_PROCEDURE'; +exports[1107] = 'ER_WRONG_PARAMCOUNT_TO_PROCEDURE'; +exports[1108] = 'ER_WRONG_PARAMETERS_TO_PROCEDURE'; +exports[1109] = 'ER_UNKNOWN_TABLE'; +exports[1110] = 'ER_FIELD_SPECIFIED_TWICE'; +exports[1111] = 'ER_INVALID_GROUP_FUNC_USE'; +exports[1112] = 'ER_UNSUPPORTED_EXTENSION'; +exports[1113] = 'ER_TABLE_MUST_HAVE_COLUMNS'; +exports[1114] = 'ER_RECORD_FILE_FULL'; +exports[1115] = 'ER_UNKNOWN_CHARACTER_SET'; +exports[1116] = 'ER_TOO_MANY_TABLES'; +exports[1117] = 'ER_TOO_MANY_FIELDS'; +exports[1118] = 'ER_TOO_BIG_ROWSIZE'; +exports[1119] = 'ER_STACK_OVERRUN'; +exports[1120] = 'ER_WRONG_OUTER_JOIN'; +exports[1121] = 'ER_NULL_COLUMN_IN_INDEX'; +exports[1122] = 'ER_CANT_FIND_UDF'; +exports[1123] = 'ER_CANT_INITIALIZE_UDF'; +exports[1124] = 'ER_UDF_NO_PATHS'; +exports[1125] = 'ER_UDF_EXISTS'; +exports[1126] = 'ER_CANT_OPEN_LIBRARY'; +exports[1127] = 'ER_CANT_FIND_DL_ENTRY'; +exports[1128] = 'ER_FUNCTION_NOT_DEFINED'; +exports[1129] = 'ER_HOST_IS_BLOCKED'; +exports[1130] = 'ER_HOST_NOT_PRIVILEGED'; +exports[1131] = 'ER_PASSWORD_ANONYMOUS_USER'; +exports[1132] = 'ER_PASSWORD_NOT_ALLOWED'; +exports[1133] = 'ER_PASSWORD_NO_MATCH'; +exports[1134] = 'ER_UPDATE_INFO'; +exports[1135] = 'ER_CANT_CREATE_THREAD'; +exports[1136] = 'ER_WRONG_VALUE_COUNT_ON_ROW'; +exports[1137] = 'ER_CANT_REOPEN_TABLE'; +exports[1138] = 'ER_INVALID_USE_OF_NULL'; +exports[1139] = 'ER_REGEXP_ERROR'; +exports[1140] = 'ER_MIX_OF_GROUP_FUNC_AND_FIELDS'; +exports[1141] = 'ER_NONEXISTING_GRANT'; +exports[1142] = 'ER_TABLEACCESS_DENIED_ERROR'; +exports[1143] = 'ER_COLUMNACCESS_DENIED_ERROR'; +exports[1144] = 'ER_ILLEGAL_GRANT_FOR_TABLE'; +exports[1145] = 'ER_GRANT_WRONG_HOST_OR_USER'; +exports[1146] = 'ER_NO_SUCH_TABLE'; +exports[1147] = 'ER_NONEXISTING_TABLE_GRANT'; +exports[1148] = 'ER_NOT_ALLOWED_COMMAND'; +exports[1149] = 'ER_SYNTAX_ERROR'; +exports[1150] = 'ER_DELAYED_CANT_CHANGE_LOCK'; +exports[1151] = 'ER_TOO_MANY_DELAYED_THREADS'; +exports[1152] = 'ER_ABORTING_CONNECTION'; +exports[1153] = 'ER_NET_PACKET_TOO_LARGE'; +exports[1154] = 'ER_NET_READ_ERROR_FROM_PIPE'; +exports[1155] = 'ER_NET_FCNTL_ERROR'; +exports[1156] = 'ER_NET_PACKETS_OUT_OF_ORDER'; +exports[1157] = 'ER_NET_UNCOMPRESS_ERROR'; +exports[1158] = 'ER_NET_READ_ERROR'; +exports[1159] = 'ER_NET_READ_INTERRUPTED'; +exports[1160] = 'ER_NET_ERROR_ON_WRITE'; +exports[1161] = 'ER_NET_WRITE_INTERRUPTED'; +exports[1162] = 'ER_TOO_LONG_STRING'; +exports[1163] = 'ER_TABLE_CANT_HANDLE_BLOB'; +exports[1164] = 'ER_TABLE_CANT_HANDLE_AUTO_INCREMENT'; +exports[1165] = 'ER_DELAYED_INSERT_TABLE_LOCKED'; +exports[1166] = 'ER_WRONG_COLUMN_NAME'; +exports[1167] = 'ER_WRONG_KEY_COLUMN'; +exports[1168] = 'ER_WRONG_MRG_TABLE'; +exports[1169] = 'ER_DUP_UNIQUE'; +exports[1170] = 'ER_BLOB_KEY_WITHOUT_LENGTH'; +exports[1171] = 'ER_PRIMARY_CANT_HAVE_NULL'; +exports[1172] = 'ER_TOO_MANY_ROWS'; +exports[1173] = 'ER_REQUIRES_PRIMARY_KEY'; +exports[1174] = 'ER_NO_RAID_COMPILED'; +exports[1175] = 'ER_UPDATE_WITHOUT_KEY_IN_SAFE_MODE'; +exports[1176] = 'ER_KEY_DOES_NOT_EXITS'; +exports[1177] = 'ER_CHECK_NO_SUCH_TABLE'; +exports[1178] = 'ER_CHECK_NOT_IMPLEMENTED'; +exports[1179] = 'ER_CANT_DO_THIS_DURING_AN_TRANSACTION'; +exports[1180] = 'ER_ERROR_DURING_COMMIT'; +exports[1181] = 'ER_ERROR_DURING_ROLLBACK'; +exports[1182] = 'ER_ERROR_DURING_FLUSH_LOGS'; +exports[1183] = 'ER_ERROR_DURING_CHECKPOINT'; +exports[1184] = 'ER_NEW_ABORTING_CONNECTION'; +exports[1185] = 'ER_DUMP_NOT_IMPLEMENTED'; +exports[1186] = 'ER_FLUSH_MASTER_BINLOG_CLOSED'; +exports[1187] = 'ER_INDEX_REBUILD'; +exports[1188] = 'ER_MASTER'; +exports[1189] = 'ER_MASTER_NET_READ'; +exports[1190] = 'ER_MASTER_NET_WRITE'; +exports[1191] = 'ER_FT_MATCHING_KEY_NOT_FOUND'; +exports[1192] = 'ER_LOCK_OR_ACTIVE_TRANSACTION'; +exports[1193] = 'ER_UNKNOWN_SYSTEM_VARIABLE'; +exports[1194] = 'ER_CRASHED_ON_USAGE'; +exports[1195] = 'ER_CRASHED_ON_REPAIR'; +exports[1196] = 'ER_WARNING_NOT_COMPLETE_ROLLBACK'; +exports[1197] = 'ER_TRANS_CACHE_FULL'; +exports[1198] = 'ER_SLAVE_MUST_STOP'; +exports[1199] = 'ER_SLAVE_NOT_RUNNING'; +exports[1200] = 'ER_BAD_SLAVE'; +exports[1201] = 'ER_MASTER_INFO'; +exports[1202] = 'ER_SLAVE_THREAD'; +exports[1203] = 'ER_TOO_MANY_USER_CONNECTIONS'; +exports[1204] = 'ER_SET_CONSTANTS_ONLY'; +exports[1205] = 'ER_LOCK_WAIT_TIMEOUT'; +exports[1206] = 'ER_LOCK_TABLE_FULL'; +exports[1207] = 'ER_READ_ONLY_TRANSACTION'; +exports[1208] = 'ER_DROP_DB_WITH_READ_LOCK'; +exports[1209] = 'ER_CREATE_DB_WITH_READ_LOCK'; +exports[1210] = 'ER_WRONG_ARGUMENTS'; +exports[1211] = 'ER_NO_PERMISSION_TO_CREATE_USER'; +exports[1212] = 'ER_UNION_TABLES_IN_DIFFERENT_DIR'; +exports[1213] = 'ER_LOCK_DEADLOCK'; +exports[1214] = 'ER_TABLE_CANT_HANDLE_FT'; +exports[1215] = 'ER_CANNOT_ADD_FOREIGN'; +exports[1216] = 'ER_NO_REFERENCED_ROW'; +exports[1217] = 'ER_ROW_IS_REFERENCED'; +exports[1218] = 'ER_CONNECT_TO_MASTER'; +exports[1219] = 'ER_QUERY_ON_MASTER'; +exports[1220] = 'ER_ERROR_WHEN_EXECUTING_COMMAND'; +exports[1221] = 'ER_WRONG_USAGE'; +exports[1222] = 'ER_WRONG_NUMBER_OF_COLUMNS_IN_SELECT'; +exports[1223] = 'ER_CANT_UPDATE_WITH_READLOCK'; +exports[1224] = 'ER_MIXING_NOT_ALLOWED'; +exports[1225] = 'ER_DUP_ARGUMENT'; +exports[1226] = 'ER_USER_LIMIT_REACHED'; +exports[1227] = 'ER_SPECIFIC_ACCESS_DENIED_ERROR'; +exports[1228] = 'ER_LOCAL_VARIABLE'; +exports[1229] = 'ER_GLOBAL_VARIABLE'; +exports[1230] = 'ER_NO_DEFAULT'; +exports[1231] = 'ER_WRONG_VALUE_FOR_VAR'; +exports[1232] = 'ER_WRONG_TYPE_FOR_VAR'; +exports[1233] = 'ER_VAR_CANT_BE_READ'; +exports[1234] = 'ER_CANT_USE_OPTION_HERE'; +exports[1235] = 'ER_NOT_SUPPORTED_YET'; +exports[1236] = 'ER_MASTER_FATAL_ERROR_READING_BINLOG'; +exports[1237] = 'ER_SLAVE_IGNORED_TABLE'; +exports[1238] = 'ER_INCORRECT_GLOBAL_LOCAL_VAR'; +exports[1239] = 'ER_WRONG_FK_DEF'; +exports[1240] = 'ER_KEY_REF_DO_NOT_MATCH_TABLE_REF'; +exports[1241] = 'ER_OPERAND_COLUMNS'; +exports[1242] = 'ER_SUBQUERY_NO_'; +exports[1243] = 'ER_UNKNOWN_STMT_HANDLER'; +exports[1244] = 'ER_CORRUPT_HELP_DB'; +exports[1245] = 'ER_CYCLIC_REFERENCE'; +exports[1246] = 'ER_AUTO_CONVERT'; +exports[1247] = 'ER_ILLEGAL_REFERENCE'; +exports[1248] = 'ER_DERIVED_MUST_HAVE_ALIAS'; +exports[1249] = 'ER_SELECT_REDUCED'; +exports[1250] = 'ER_TABLENAME_NOT_ALLOWED_HERE'; +exports[1251] = 'ER_NOT_SUPPORTED_AUTH_MODE'; +exports[1252] = 'ER_SPATIAL_CANT_HAVE_NULL'; +exports[1253] = 'ER_COLLATION_CHARSET_MISMATCH'; +exports[1254] = 'ER_SLAVE_WAS_RUNNING'; +exports[1255] = 'ER_SLAVE_WAS_NOT_RUNNING'; +exports[1256] = 'ER_TOO_BIG_FOR_UNCOMPRESS'; +exports[1257] = 'ER_ZLIB_Z_MEM_ERROR'; +exports[1258] = 'ER_ZLIB_Z_BUF_ERROR'; +exports[1259] = 'ER_ZLIB_Z_DATA_ERROR'; +exports[1260] = 'ER_CUT_VALUE_GROUP_CONCAT'; +exports[1261] = 'ER_WARN_TOO_FEW_RECORDS'; +exports[1262] = 'ER_WARN_TOO_MANY_RECORDS'; +exports[1263] = 'ER_WARN_NULL_TO_NOTNULL'; +exports[1264] = 'ER_WARN_DATA_OUT_OF_RANGE'; +exports[1265] = 'WARN_DATA_TRUNCATED'; +exports[1266] = 'ER_WARN_USING_OTHER_HANDLER'; +exports[1267] = 'ER_CANT_AGGREGATE_'; +exports[1268] = 'ER_DROP_USER'; +exports[1269] = 'ER_REVOKE_GRANTS'; +exports[1270] = 'ER_CANT_AGGREGATE_'; +exports[1271] = 'ER_CANT_AGGREGATE_NCOLLATIONS'; +exports[1272] = 'ER_VARIABLE_IS_NOT_STRUCT'; +exports[1273] = 'ER_UNKNOWN_COLLATION'; +exports[1274] = 'ER_SLAVE_IGNORED_SSL_PARAMS'; +exports[1275] = 'ER_SERVER_IS_IN_SECURE_AUTH_MODE'; +exports[1276] = 'ER_WARN_FIELD_RESOLVED'; +exports[1277] = 'ER_BAD_SLAVE_UNTIL_COND'; +exports[1278] = 'ER_MISSING_SKIP_SLAVE'; +exports[1279] = 'ER_UNTIL_COND_IGNORED'; +exports[1280] = 'ER_WRONG_NAME_FOR_INDEX'; +exports[1281] = 'ER_WRONG_NAME_FOR_CATALOG'; +exports[1282] = 'ER_WARN_QC_RESIZE'; +exports[1283] = 'ER_BAD_FT_COLUMN'; +exports[1284] = 'ER_UNKNOWN_KEY_CACHE'; +exports[1285] = 'ER_WARN_HOSTNAME_WONT_WORK'; +exports[1286] = 'ER_UNKNOWN_STORAGE_ENGINE'; +exports[1287] = 'ER_WARN_DEPRECATED_SYNTAX'; +exports[1288] = 'ER_NON_UPDATABLE_TABLE'; +exports[1289] = 'ER_FEATURE_DISABLED'; +exports[1290] = 'ER_OPTION_PREVENTS_STATEMENT'; +exports[1291] = 'ER_DUPLICATED_VALUE_IN_TYPE'; +exports[1292] = 'ER_TRUNCATED_WRONG_VALUE'; +exports[1293] = 'ER_TOO_MUCH_AUTO_TIMESTAMP_COLS'; +exports[1294] = 'ER_INVALID_ON_UPDATE'; +exports[1295] = 'ER_UNSUPPORTED_PS'; +exports[1296] = 'ER_GET_ERRMSG'; +exports[1297] = 'ER_GET_TEMPORARY_ERRMSG'; +exports[1298] = 'ER_UNKNOWN_TIME_ZONE'; +exports[1299] = 'ER_WARN_INVALID_TIMESTAMP'; +exports[1300] = 'ER_INVALID_CHARACTER_STRING'; +exports[1301] = 'ER_WARN_ALLOWED_PACKET_OVERFLOWED'; +exports[1302] = 'ER_CONFLICTING_DECLARATIONS'; +exports[1303] = 'ER_SP_NO_RECURSIVE_CREATE'; +exports[1304] = 'ER_SP_ALREADY_EXISTS'; +exports[1305] = 'ER_SP_DOES_NOT_EXIST'; +exports[1306] = 'ER_SP_DROP_FAILED'; +exports[1307] = 'ER_SP_STORE_FAILED'; +exports[1308] = 'ER_SP_LILABEL_MISMATCH'; +exports[1309] = 'ER_SP_LABEL_REDEFINE'; +exports[1310] = 'ER_SP_LABEL_MISMATCH'; +exports[1311] = 'ER_SP_UNINIT_VAR'; +exports[1312] = 'ER_SP_BADSELECT'; +exports[1313] = 'ER_SP_BADRETURN'; +exports[1314] = 'ER_SP_BADSTATEMENT'; +exports[1315] = 'ER_UPDATE_LOG_DEPRECATED_IGNORED'; +exports[1316] = 'ER_UPDATE_LOG_DEPRECATED_TRANSLATED'; +exports[1317] = 'ER_QUERY_INTERRUPTED'; +exports[1318] = 'ER_SP_WRONG_NO_OF_ARGS'; +exports[1319] = 'ER_SP_COND_MISMATCH'; +exports[1320] = 'ER_SP_NORETURN'; +exports[1321] = 'ER_SP_NORETURNEND'; +exports[1322] = 'ER_SP_BAD_CURSOR_QUERY'; +exports[1323] = 'ER_SP_BAD_CURSOR_SELECT'; +exports[1324] = 'ER_SP_CURSOR_MISMATCH'; +exports[1325] = 'ER_SP_CURSOR_ALREADY_OPEN'; +exports[1326] = 'ER_SP_CURSOR_NOT_OPEN'; +exports[1327] = 'ER_SP_UNDECLARED_VAR'; +exports[1328] = 'ER_SP_WRONG_NO_OF_FETCH_ARGS'; +exports[1329] = 'ER_SP_FETCH_NO_DATA'; +exports[1330] = 'ER_SP_DUP_PARAM'; +exports[1331] = 'ER_SP_DUP_VAR'; +exports[1332] = 'ER_SP_DUP_COND'; +exports[1333] = 'ER_SP_DUP_CURS'; +exports[1334] = 'ER_SP_CANT_ALTER'; +exports[1335] = 'ER_SP_SUBSELECT_NYI'; +exports[1336] = 'ER_STMT_NOT_ALLOWED_IN_SF_OR_TRG'; +exports[1337] = 'ER_SP_VARCOND_AFTER_CURSHNDLR'; +exports[1338] = 'ER_SP_CURSOR_AFTER_HANDLER'; +exports[1339] = 'ER_SP_CASE_NOT_FOUND'; +exports[1340] = 'ER_FPARSER_TOO_BIG_FILE'; +exports[1341] = 'ER_FPARSER_BAD_HEADER'; +exports[1342] = 'ER_FPARSER_EOF_IN_COMMENT'; +exports[1343] = 'ER_FPARSER_ERROR_IN_PARAMETER'; +exports[1344] = 'ER_FPARSER_EOF_IN_UNKNOWN_PARAMETER'; +exports[1345] = 'ER_VIEW_NO_EXPLAIN'; +exports[1346] = 'ER_FRM_UNKNOWN_TYPE'; +exports[1347] = 'ER_WRONG_OBJECT'; +exports[1348] = 'ER_NONUPDATEABLE_COLUMN'; +exports[1349] = 'ER_VIEW_SELECT_DERIVED'; +exports[1350] = 'ER_VIEW_SELECT_CLAUSE'; +exports[1351] = 'ER_VIEW_SELECT_VARIABLE'; +exports[1352] = 'ER_VIEW_SELECT_TMPTABLE'; +exports[1353] = 'ER_VIEW_WRONG_LIST'; +exports[1354] = 'ER_WARN_VIEW_MERGE'; +exports[1355] = 'ER_WARN_VIEW_WITHOUT_KEY'; +exports[1356] = 'ER_VIEW_INVALID'; +exports[1357] = 'ER_SP_NO_DROP_SP'; +exports[1358] = 'ER_SP_GOTO_IN_HNDLR'; +exports[1359] = 'ER_TRG_ALREADY_EXISTS'; +exports[1360] = 'ER_TRG_DOES_NOT_EXIST'; +exports[1361] = 'ER_TRG_ON_VIEW_OR_TEMP_TABLE'; +exports[1362] = 'ER_TRG_CANT_CHANGE_ROW'; +exports[1363] = 'ER_TRG_NO_SUCH_ROW_IN_TRG'; +exports[1364] = 'ER_NO_DEFAULT_FOR_FIELD'; +exports[1365] = 'ER_DIVISION_BY_ZERO'; +exports[1366] = 'ER_TRUNCATED_WRONG_VALUE_FOR_FIELD'; +exports[1367] = 'ER_ILLEGAL_VALUE_FOR_TYPE'; +exports[1368] = 'ER_VIEW_NONUPD_CHECK'; +exports[1369] = 'ER_VIEW_CHECK_FAILED'; +exports[1370] = 'ER_PROCACCESS_DENIED_ERROR'; +exports[1371] = 'ER_RELAY_LOG_FAIL'; +exports[1372] = 'ER_PASSWD_LENGTH'; +exports[1373] = 'ER_UNKNOWN_TARGET_BINLOG'; +exports[1374] = 'ER_IO_ERR_LOG_INDEX_READ'; +exports[1375] = 'ER_BINLOG_PURGE_PROHIBITED'; +exports[1376] = 'ER_FSEEK_FAIL'; +exports[1377] = 'ER_BINLOG_PURGE_FATAL_ERR'; +exports[1378] = 'ER_LOG_IN_USE'; +exports[1379] = 'ER_LOG_PURGE_UNKNOWN_ERR'; +exports[1380] = 'ER_RELAY_LOG_INIT'; +exports[1381] = 'ER_NO_BINARY_LOGGING'; +exports[1382] = 'ER_RESERVED_SYNTAX'; +exports[1383] = 'ER_WSAS_FAILED'; +exports[1384] = 'ER_DIFF_GROUPS_PROC'; +exports[1385] = 'ER_NO_GROUP_FOR_PROC'; +exports[1386] = 'ER_ORDER_WITH_PROC'; +exports[1387] = 'ER_LOGGING_PROHIBIT_CHANGING_OF'; +exports[1388] = 'ER_NO_FILE_MAPPING'; +exports[1389] = 'ER_WRONG_MAGIC'; +exports[1390] = 'ER_PS_MANY_PARAM'; +exports[1391] = 'ER_KEY_PART_'; +exports[1392] = 'ER_VIEW_CHECKSUM'; +exports[1393] = 'ER_VIEW_MULTIUPDATE'; +exports[1394] = 'ER_VIEW_NO_INSERT_FIELD_LIST'; +exports[1395] = 'ER_VIEW_DELETE_MERGE_VIEW'; +exports[1396] = 'ER_CANNOT_USER'; +exports[1397] = 'ER_XAER_NOTA'; +exports[1398] = 'ER_XAER_INVAL'; +exports[1399] = 'ER_XAER_RMFAIL'; +exports[1400] = 'ER_XAER_OUTSIDE'; +exports[1401] = 'ER_XAER_RMERR'; +exports[1402] = 'ER_XA_RBROLLBACK'; +exports[1403] = 'ER_NONEXISTING_PROC_GRANT'; +exports[1404] = 'ER_PROC_AUTO_GRANT_FAIL'; +exports[1405] = 'ER_PROC_AUTO_REVOKE_FAIL'; +exports[1406] = 'ER_DATA_TOO_LONG'; +exports[1407] = 'ER_SP_BAD_SQLSTATE'; +exports[1408] = 'ER_STARTUP'; +exports[1409] = 'ER_LOAD_FROM_FIXED_SIZE_ROWS_TO_VAR'; +exports[1410] = 'ER_CANT_CREATE_USER_WITH_GRANT'; +exports[1411] = 'ER_WRONG_VALUE_FOR_TYPE'; +exports[1412] = 'ER_TABLE_DEF_CHANGED'; +exports[1413] = 'ER_SP_DUP_HANDLER'; +exports[1414] = 'ER_SP_NOT_VAR_ARG'; +exports[1415] = 'ER_SP_NO_RETSET'; +exports[1416] = 'ER_CANT_CREATE_GEOMETRY_OBJECT'; +exports[1417] = 'ER_FAILED_ROUTINE_BREAK_BINLOG'; +exports[1418] = 'ER_BINLOG_UNSAFE_ROUTINE'; +exports[1419] = 'ER_BINLOG_CREATE_ROUTINE_NEED_SUPER'; +exports[1420] = 'ER_EXEC_STMT_WITH_OPEN_CURSOR'; +exports[1421] = 'ER_STMT_HAS_NO_OPEN_CURSOR'; +exports[1422] = 'ER_COMMIT_NOT_ALLOWED_IN_SF_OR_TRG'; +exports[1423] = 'ER_NO_DEFAULT_FOR_VIEW_FIELD'; +exports[1424] = 'ER_SP_NO_RECURSION'; +exports[1425] = 'ER_TOO_BIG_SCALE'; +exports[1426] = 'ER_TOO_BIG_PRECISION'; +exports[1427] = 'ER_M_BIGGER_THAN_D'; +exports[1428] = 'ER_WRONG_LOCK_OF_SYSTEM_TABLE'; +exports[1429] = 'ER_CONNECT_TO_FOREIGN_DATA_SOURCE'; +exports[1430] = 'ER_QUERY_ON_FOREIGN_DATA_SOURCE'; +exports[1431] = 'ER_FOREIGN_DATA_SOURCE_DOESNT_EXIST'; +exports[1432] = 'ER_FOREIGN_DATA_STRING_INVALID_CANT_CREATE'; +exports[1433] = 'ER_FOREIGN_DATA_STRING_INVALID'; +exports[1434] = 'ER_CANT_CREATE_FEDERATED_TABLE'; +exports[1435] = 'ER_TRG_IN_WRONG_SCHEMA'; +exports[1436] = 'ER_STACK_OVERRUN_NEED_MORE'; +exports[1437] = 'ER_TOO_LONG_BODY'; +exports[1438] = 'ER_WARN_CANT_DROP_DEFAULT_KEYCACHE'; +exports[1439] = 'ER_TOO_BIG_DISPLAYWIDTH'; +exports[1440] = 'ER_XAER_DUPID'; +exports[1441] = 'ER_DATETIME_FUNCTION_OVERFLOW'; +exports[1442] = 'ER_CANT_UPDATE_USED_TABLE_IN_SF_OR_TRG'; +exports[1443] = 'ER_VIEW_PREVENT_UPDATE'; +exports[1444] = 'ER_PS_NO_RECURSION'; +exports[1445] = 'ER_SP_CANT_SET_AUTOCOMMIT'; +exports[1446] = 'ER_MALFORMED_DEFINER'; +exports[1447] = 'ER_VIEW_FRM_NO_USER'; +exports[1448] = 'ER_VIEW_OTHER_USER'; +exports[1449] = 'ER_NO_SUCH_USER'; +exports[1450] = 'ER_FORBID_SCHEMA_CHANGE'; +exports[1451] = 'ER_ROW_IS_REFERENCED_'; +exports[1452] = 'ER_NO_REFERENCED_ROW_'; +exports[1453] = 'ER_SP_BAD_VAR_SHADOW'; +exports[1454] = 'ER_TRG_NO_DEFINER'; +exports[1455] = 'ER_OLD_FILE_FORMAT'; +exports[1456] = 'ER_SP_RECURSION_LIMIT'; +exports[1457] = 'ER_SP_PROC_TABLE_CORRUPT'; +exports[1458] = 'ER_SP_WRONG_NAME'; +exports[1459] = 'ER_TABLE_NEEDS_UPGRADE'; +exports[1460] = 'ER_SP_NO_AGGREGATE'; +exports[1461] = 'ER_MAX_PREPARED_STMT_COUNT_REACHED'; +exports[1462] = 'ER_VIEW_RECURSIVE'; +exports[1463] = 'ER_NON_GROUPING_FIELD_USED'; +exports[1464] = 'ER_TABLE_CANT_HANDLE_SPKEYS'; +exports[1465] = 'ER_NO_TRIGGERS_ON_SYSTEM_SCHEMA'; +exports[1466] = 'ER_REMOVED_SPACES'; +exports[1467] = 'ER_AUTOINC_READ_FAILED'; +exports[1468] = 'ER_USERNAME'; +exports[1469] = 'ER_HOSTNAME'; +exports[1470] = 'ER_WRONG_STRING_LENGTH'; +exports[1471] = 'ER_NON_INSERTABLE_TABLE'; +exports[1472] = 'ER_ADMIN_WRONG_MRG_TABLE'; +exports[1473] = 'ER_TOO_HIGH_LEVEL_OF_NESTING_FOR_SELECT'; +exports[1474] = 'ER_NAME_BECOMES_EMPTY'; +exports[1475] = 'ER_AMBIGUOUS_FIELD_TERM'; +exports[1476] = 'ER_FOREIGN_SERVER_EXISTS'; +exports[1477] = 'ER_FOREIGN_SERVER_DOESNT_EXIST'; +exports[1478] = 'ER_ILLEGAL_HA_CREATE_OPTION'; +exports[1479] = 'ER_PARTITION_REQUIRES_VALUES_ERROR'; +exports[1480] = 'ER_PARTITION_WRONG_VALUES_ERROR'; +exports[1481] = 'ER_PARTITION_MAXVALUE_ERROR'; +exports[1482] = 'ER_PARTITION_SUBPARTITION_ERROR'; +exports[1483] = 'ER_PARTITION_SUBPART_MIX_ERROR'; +exports[1484] = 'ER_PARTITION_WRONG_NO_PART_ERROR'; +exports[1485] = 'ER_PARTITION_WRONG_NO_SUBPART_ERROR'; +exports[1486] = 'ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR'; +exports[1487] = 'ER_NO_CONST_EXPR_IN_RANGE_OR_LIST_ERROR'; +exports[1488] = 'ER_FIELD_NOT_FOUND_PART_ERROR'; +exports[1489] = 'ER_LIST_OF_FIELDS_ONLY_IN_HASH_ERROR'; +exports[1490] = 'ER_INCONSISTENT_PARTITION_INFO_ERROR'; +exports[1491] = 'ER_PARTITION_FUNC_NOT_ALLOWED_ERROR'; +exports[1492] = 'ER_PARTITIONS_MUST_BE_DEFINED_ERROR'; +exports[1493] = 'ER_RANGE_NOT_INCREASING_ERROR'; +exports[1494] = 'ER_INCONSISTENT_TYPE_OF_FUNCTIONS_ERROR'; +exports[1495] = 'ER_MULTIPLE_DEF_CONST_IN_LIST_PART_ERROR'; +exports[1496] = 'ER_PARTITION_ENTRY_ERROR'; +exports[1497] = 'ER_MIX_HANDLER_ERROR'; +exports[1498] = 'ER_PARTITION_NOT_DEFINED_ERROR'; +exports[1499] = 'ER_TOO_MANY_PARTITIONS_ERROR'; +exports[1500] = 'ER_SUBPARTITION_ERROR'; +exports[1501] = 'ER_CANT_CREATE_HANDLER_FILE'; +exports[1502] = 'ER_BLOB_FIELD_IN_PART_FUNC_ERROR'; +exports[1503] = 'ER_UNIQUE_KEY_NEED_ALL_FIELDS_IN_PF'; +exports[1504] = 'ER_NO_PARTS_ERROR'; +exports[1505] = 'ER_PARTITION_MGMT_ON_NONPARTITIONED'; +exports[1506] = 'ER_FOREIGN_KEY_ON_PARTITIONED'; +exports[1507] = 'ER_DROP_PARTITION_NON_EXISTENT'; +exports[1508] = 'ER_DROP_LAST_PARTITION'; +exports[1509] = 'ER_COALESCE_ONLY_ON_HASH_PARTITION'; +exports[1510] = 'ER_REORG_HASH_ONLY_ON_SAME_NO'; +exports[1511] = 'ER_REORG_NO_PARAM_ERROR'; +exports[1512] = 'ER_ONLY_ON_RANGE_LIST_PARTITION'; +exports[1513] = 'ER_ADD_PARTITION_SUBPART_ERROR'; +exports[1514] = 'ER_ADD_PARTITION_NO_NEW_PARTITION'; +exports[1515] = 'ER_COALESCE_PARTITION_NO_PARTITION'; +exports[1516] = 'ER_REORG_PARTITION_NOT_EXIST'; +exports[1517] = 'ER_SAME_NAME_PARTITION'; +exports[1518] = 'ER_NO_BINLOG_ERROR'; +exports[1519] = 'ER_CONSECUTIVE_REORG_PARTITIONS'; +exports[1520] = 'ER_REORG_OUTSIDE_RANGE'; +exports[1521] = 'ER_PARTITION_FUNCTION_FAILURE'; +exports[1522] = 'ER_PART_STATE_ERROR'; +exports[1523] = 'ER_LIMITED_PART_RANGE'; +exports[1524] = 'ER_PLUGIN_IS_NOT_LOADED'; +exports[1525] = 'ER_WRONG_VALUE'; +exports[1526] = 'ER_NO_PARTITION_FOR_GIVEN_VALUE'; +exports[1527] = 'ER_FILEGROUP_OPTION_ONLY_ONCE'; +exports[1528] = 'ER_CREATE_FILEGROUP_FAILED'; +exports[1529] = 'ER_DROP_FILEGROUP_FAILED'; +exports[1530] = 'ER_TABLESPACE_AUTO_EXTEND_ERROR'; +exports[1531] = 'ER_WRONG_SIZE_NUMBER'; +exports[1532] = 'ER_SIZE_OVERFLOW_ERROR'; +exports[1533] = 'ER_ALTER_FILEGROUP_FAILED'; +exports[1534] = 'ER_BINLOG_ROW_LOGGING_FAILED'; +exports[1535] = 'ER_BINLOG_ROW_WRONG_TABLE_DEF'; +exports[1536] = 'ER_BINLOG_ROW_RBR_TO_SBR'; +exports[1537] = 'ER_EVENT_ALREADY_EXISTS'; +exports[1538] = 'ER_EVENT_STORE_FAILED'; +exports[1539] = 'ER_EVENT_DOES_NOT_EXIST'; +exports[1540] = 'ER_EVENT_CANT_ALTER'; +exports[1541] = 'ER_EVENT_DROP_FAILED'; +exports[1542] = 'ER_EVENT_INTERVAL_NOT_POSITIVE_OR_TOO_BIG'; +exports[1543] = 'ER_EVENT_ENDS_BEFORE_STARTS'; +exports[1544] = 'ER_EVENT_EXEC_TIME_IN_THE_PAST'; +exports[1545] = 'ER_EVENT_OPEN_TABLE_FAILED'; +exports[1546] = 'ER_EVENT_NEITHER_M_EXPR_NOR_M_AT'; +exports[1547] = 'ER_COL_COUNT_DOESNT_MATCH_CORRUPTED'; +exports[1548] = 'ER_CANNOT_LOAD_FROM_TABLE'; +exports[1549] = 'ER_EVENT_CANNOT_DELETE'; +exports[1550] = 'ER_EVENT_COMPILE_ERROR'; +exports[1551] = 'ER_EVENT_SAME_NAME'; +exports[1552] = 'ER_EVENT_DATA_TOO_LONG'; +exports[1553] = 'ER_DROP_INDEX_FK'; +exports[1554] = 'ER_WARN_DEPRECATED_SYNTAX_WITH_VER'; +exports[1555] = 'ER_CANT_WRITE_LOCK_LOG_TABLE'; +exports[1556] = 'ER_CANT_LOCK_LOG_TABLE'; +exports[1557] = 'ER_FOREIGN_DUPLICATE_KEY'; +exports[1558] = 'ER_COL_COUNT_DOESNT_MATCH_PLEASE_UPDATE'; +exports[1559] = 'ER_TEMP_TABLE_PREVENTS_SWITCH_OUT_OF_RBR'; +exports[1560] = 'ER_STORED_FUNCTION_PREVENTS_SWITCH_BINLOG_FORMAT'; +exports[1561] = 'ER_NDB_CANT_SWITCH_BINLOG_FORMAT'; +exports[1562] = 'ER_PARTITION_NO_TEMPORARY'; +exports[1563] = 'ER_PARTITION_CONST_DOMAIN_ERROR'; +exports[1564] = 'ER_PARTITION_FUNCTION_IS_NOT_ALLOWED'; +exports[1565] = 'ER_DDL_LOG_ERROR'; +exports[1566] = 'ER_NULL_IN_VALUES_LESS_THAN'; +exports[1567] = 'ER_WRONG_PARTITION_NAME'; +exports[1568] = 'ER_CANT_CHANGE_TX_ISOLATION'; +exports[1569] = 'ER_DUP_ENTRY_AUTOINCREMENT_CASE'; +exports[1570] = 'ER_EVENT_MODIFY_QUEUE_ERROR'; +exports[1571] = 'ER_EVENT_SET_VAR_ERROR'; +exports[1572] = 'ER_PARTITION_MERGE_ERROR'; +exports[1573] = 'ER_CANT_ACTIVATE_LOG'; +exports[1574] = 'ER_RBR_NOT_AVAILABLE'; +exports[1575] = 'ER_BASE'; +exports[1576] = 'ER_EVENT_RECURSION_FORBIDDEN'; +exports[1577] = 'ER_EVENTS_DB_ERROR'; +exports[1578] = 'ER_ONLY_INTEGERS_ALLOWED'; +exports[1579] = 'ER_UNSUPORTED_LOG_ENGINE'; +exports[1580] = 'ER_BAD_LOG_STATEMENT'; +exports[1581] = 'ER_CANT_RENAME_LOG_TABLE'; +exports[1582] = 'ER_WRONG_PARAMCOUNT_TO_NATIVE_FCT'; +exports[1583] = 'ER_WRONG_PARAMETERS_TO_NATIVE_FCT'; +exports[1584] = 'ER_WRONG_PARAMETERS_TO_STORED_FCT'; +exports[1585] = 'ER_NATIVE_FCT_NAME_COLLISION'; +exports[1586] = 'ER_DUP_ENTRY_WITH_KEY_NAME'; +exports[1587] = 'ER_BINLOG_PURGE_EMFILE'; +exports[1588] = 'ER_EVENT_CANNOT_CREATE_IN_THE_PAST'; +exports[1589] = 'ER_EVENT_CANNOT_ALTER_IN_THE_PAST'; +exports[1590] = 'ER_SLAVE_INCIDENT'; +exports[1591] = 'ER_NO_PARTITION_FOR_GIVEN_VALUE_SILENT'; +exports[1592] = 'ER_BINLOG_UNSAFE_STATEMENT'; +exports[1593] = 'ER_SLAVE_FATAL_ERROR'; +exports[1594] = 'ER_SLAVE_RELAY_LOG_READ_FAILURE'; +exports[1595] = 'ER_SLAVE_RELAY_LOG_WRITE_FAILURE'; +exports[1596] = 'ER_SLAVE_CREATE_EVENT_FAILURE'; +exports[1597] = 'ER_SLAVE_MASTER_COM_FAILURE'; +exports[1598] = 'ER_BINLOG_LOGGING_IMPOSSIBLE'; +exports[1599] = 'ER_VIEW_NO_CREATION_CTX'; +exports[1600] = 'ER_VIEW_INVALID_CREATION_CTX'; +exports[1601] = 'ER_SR_INVALID_CREATION_CTX'; +exports[1602] = 'ER_TRG_CORRUPTED_FILE'; +exports[1603] = 'ER_TRG_NO_CREATION_CTX'; +exports[1604] = 'ER_TRG_INVALID_CREATION_CTX'; +exports[1605] = 'ER_EVENT_INVALID_CREATION_CTX'; +exports[1606] = 'ER_TRG_CANT_OPEN_TABLE'; +exports[1607] = 'ER_CANT_CREATE_SROUTINE'; +exports[1608] = 'ER_NEVER_USED'; +exports[1609] = 'ER_NO_FORMAT_DESCRIPTION_EVENT_BEFORE_BINLOG_STATEMENT'; +exports[1610] = 'ER_SLAVE_CORRUPT_EVENT'; +exports[1611] = 'ER_LOAD_DATA_INVALID_COLUMN'; +exports[1612] = 'ER_LOG_PURGE_NO_FILE'; +exports[1613] = 'ER_XA_RBTIMEOUT'; +exports[1614] = 'ER_XA_RBDEADLOCK'; +exports[1615] = 'ER_NEED_REPREPARE'; +exports[1616] = 'ER_DELAYED_NOT_SUPPORTED'; +exports[1617] = 'WARN_NO_MASTER_INFO'; +exports[1618] = 'WARN_OPTION_IGNORED'; +exports[1619] = 'WARN_PLUGIN_DELETE_BUILTIN'; +exports[1620] = 'WARN_PLUGIN_BUSY'; +exports[1621] = 'ER_VARIABLE_IS_READONLY'; +exports[1622] = 'ER_WARN_ENGINE_TRANSACTION_ROLLBACK'; +exports[1623] = 'ER_SLAVE_HEARTBEAT_FAILURE'; +exports[1624] = 'ER_SLAVE_HEARTBEAT_VALUE_OUT_OF_RANGE'; +exports[1625] = 'ER_NDB_REPLICATION_SCHEMA_ERROR'; +exports[1626] = 'ER_CONFLICT_FN_PARSE_ERROR'; +exports[1627] = 'ER_EXCEPTIONS_WRITE_ERROR'; +exports[1628] = 'ER_TOO_LONG_TABLE_COMMENT'; +exports[1629] = 'ER_TOO_LONG_FIELD_COMMENT'; +exports[1630] = 'ER_FUNC_INEXISTENT_NAME_COLLISION'; +exports[1631] = 'ER_DATABASE_NAME'; +exports[1632] = 'ER_TABLE_NAME'; +exports[1633] = 'ER_PARTITION_NAME'; +exports[1634] = 'ER_SUBPARTITION_NAME'; +exports[1635] = 'ER_TEMPORARY_NAME'; +exports[1636] = 'ER_RENAMED_NAME'; +exports[1637] = 'ER_TOO_MANY_CONCURRENT_TRXS'; +exports[1638] = 'WARN_NON_ASCII_SEPARATOR_NOT_IMPLEMENTED'; +exports[1639] = 'ER_DEBUG_SYNC_TIMEOUT'; +exports[1640] = 'ER_DEBUG_SYNC_HIT_LIMIT'; +exports[1641] = 'ER_DUP_SIGNAL_SET'; +exports[1642] = 'ER_SIGNAL_WARN'; +exports[1643] = 'ER_SIGNAL_NOT_FOUND'; +exports[1644] = 'ER_SIGNAL_EXCEPTION'; +exports[1645] = 'ER_RESIGNAL_WITHOUT_ACTIVE_HANDLER'; +exports[1646] = 'ER_SIGNAL_BAD_CONDITION_TYPE'; +exports[1647] = 'WARN_COND_ITEM_TRUNCATED'; +exports[1648] = 'ER_COND_ITEM_TOO_LONG'; +exports[1649] = 'ER_UNKNOWN_LOCALE'; +exports[1650] = 'ER_SLAVE_IGNORE_SERVER_IDS'; +exports[1651] = 'ER_QUERY_CACHE_DISABLED'; +exports[1652] = 'ER_SAME_NAME_PARTITION_FIELD'; +exports[1653] = 'ER_PARTITION_COLUMN_LIST_ERROR'; +exports[1654] = 'ER_WRONG_TYPE_COLUMN_VALUE_ERROR'; +exports[1655] = 'ER_TOO_MANY_PARTITION_FUNC_FIELDS_ERROR'; +exports[1656] = 'ER_MAXVALUE_IN_VALUES_IN'; +exports[1657] = 'ER_TOO_MANY_VALUES_ERROR'; +exports[1658] = 'ER_ROW_SINGLE_PARTITION_FIELD_ERROR'; +exports[1659] = 'ER_FIELD_TYPE_NOT_ALLOWED_AS_PARTITION_FIELD'; +exports[1660] = 'ER_PARTITION_FIELDS_TOO_LONG'; +exports[1661] = 'ER_BINLOG_ROW_ENGINE_AND_STMT_ENGINE'; +exports[1662] = 'ER_BINLOG_ROW_MODE_AND_STMT_ENGINE'; +exports[1663] = 'ER_BINLOG_UNSAFE_AND_STMT_ENGINE'; +exports[1664] = 'ER_BINLOG_ROW_INJECTION_AND_STMT_ENGINE'; +exports[1665] = 'ER_BINLOG_STMT_MODE_AND_ROW_ENGINE'; +exports[1666] = 'ER_BINLOG_ROW_INJECTION_AND_STMT_MODE'; +exports[1667] = 'ER_BINLOG_MULTIPLE_ENGINES_AND_SELF_LOGGING_ENGINE'; +exports[1668] = 'ER_BINLOG_UNSAFE_LIMIT'; +exports[1669] = 'ER_BINLOG_UNSAFE_INSERT_DELAYED'; +exports[1670] = 'ER_BINLOG_UNSAFE_SYSTEM_TABLE'; +exports[1671] = 'ER_BINLOG_UNSAFE_AUTOINC_COLUMNS'; +exports[1672] = 'ER_BINLOG_UNSAFE_UDF'; +exports[1673] = 'ER_BINLOG_UNSAFE_SYSTEM_VARIABLE'; +exports[1674] = 'ER_BINLOG_UNSAFE_SYSTEM_FUNCTION'; +exports[1675] = 'ER_BINLOG_UNSAFE_NONTRANS_AFTER_TRANS'; +exports[1676] = 'ER_MESSAGE_AND_STATEMENT'; +exports[1677] = 'ER_SLAVE_CONVERSION_FAILED'; +exports[1678] = 'ER_SLAVE_CANT_CREATE_CONVERSION'; +exports[1679] = 'ER_INSIDE_TRANSACTION_PREVENTS_SWITCH_BINLOG_FORMAT'; +exports[1680] = 'ER_PATH_LENGTH'; +exports[1681] = 'ER_WARN_DEPRECATED_SYNTAX_NO_REPLACEMENT'; +exports[1682] = 'ER_WRONG_NATIVE_TABLE_STRUCTURE'; +exports[1683] = 'ER_WRONG_PERFSCHEMA_USAGE'; +exports[1684] = 'ER_WARN_I_S_SKIPPED_TABLE'; +exports[1685] = 'ER_INSIDE_TRANSACTION_PREVENTS_SWITCH_BINLOG_DIRECT'; +exports[1686] = 'ER_STORED_FUNCTION_PREVENTS_SWITCH_BINLOG_DIRECT'; +exports[1687] = 'ER_SPATIAL_MUST_HAVE_GEOM_COL'; +exports[1688] = 'ER_TOO_LONG_INDEX_COMMENT'; +exports[1689] = 'ER_LOCK_ABORTED'; +exports[1690] = 'ER_DATA_OUT_OF_RANGE'; +exports[1691] = 'ER_WRONG_SPVAR_TYPE_IN_LIMIT'; +exports[1692] = 'ER_BINLOG_UNSAFE_MULTIPLE_ENGINES_AND_SELF_LOGGING_ENGINE'; +exports[1693] = 'ER_BINLOG_UNSAFE_MIXED_STATEMENT'; +exports[1694] = 'ER_INSIDE_TRANSACTION_PREVENTS_SWITCH_SQL_LOG_BIN'; +exports[1695] = 'ER_STORED_FUNCTION_PREVENTS_SWITCH_SQL_LOG_BIN'; +exports[1696] = 'ER_FAILED_READ_FROM_PAR_FILE'; +exports[1697] = 'ER_VALUES_IS_NOT_INT_TYPE_ERROR'; +exports[1698] = 'ER_ACCESS_DENIED_NO_PASSWORD_ERROR'; +exports[1699] = 'ER_SET_PASSWORD_AUTH_PLUGIN'; +exports[1700] = 'ER_GRANT_PLUGIN_USER_EXISTS'; +exports[1701] = 'ER_TRUNCATE_ILLEGAL_FK'; +exports[1702] = 'ER_PLUGIN_IS_PERMANENT'; +exports[1703] = 'ER_SLAVE_HEARTBEAT_VALUE_OUT_OF_RANGE_MIN'; +exports[1704] = 'ER_SLAVE_HEARTBEAT_VALUE_OUT_OF_RANGE_MAX'; +exports[1705] = 'ER_STMT_CACHE_FULL'; +exports[1706] = 'ER_MULTI_UPDATE_KEY_CONFLICT'; +exports[1707] = 'ER_TABLE_NEEDS_REBUILD'; +exports[1708] = 'WARN_OPTION_BELOW_LIMIT'; +exports[1709] = 'ER_INDEX_COLUMN_TOO_LONG'; +exports[1710] = 'ER_ERROR_IN_TRIGGER_BODY'; +exports[1711] = 'ER_ERROR_IN_UNKNOWN_TRIGGER_BODY'; +exports[1712] = 'ER_INDEX_CORRUPT'; +exports[1713] = 'ER_UNDO_RECORD_TOO_BIG'; +exports[1714] = 'ER_BINLOG_UNSAFE_INSERT_IGNORE_SELECT'; +exports[1715] = 'ER_BINLOG_UNSAFE_INSERT_SELECT_UPDATE'; +exports[1716] = 'ER_BINLOG_UNSAFE_REPLACE_SELECT'; +exports[1717] = 'ER_BINLOG_UNSAFE_CREATE_IGNORE_SELECT'; +exports[1718] = 'ER_BINLOG_UNSAFE_CREATE_REPLACE_SELECT'; +exports[1719] = 'ER_BINLOG_UNSAFE_UPDATE_IGNORE'; +exports[1720] = 'ER_PLUGIN_NO_UNINSTALL'; +exports[1721] = 'ER_PLUGIN_NO_INSTALL'; +exports[1722] = 'ER_BINLOG_UNSAFE_WRITE_AUTOINC_SELECT'; +exports[1723] = 'ER_BINLOG_UNSAFE_CREATE_SELECT_AUTOINC'; \ No newline at end of file diff --git a/node_modules/mysql/lib/protocol/constants/field_flags.js b/node_modules/mysql/lib/protocol/constants/field_flags.js new file mode 100644 index 0000000..c698da5 --- /dev/null +++ b/node_modules/mysql/lib/protocol/constants/field_flags.js @@ -0,0 +1,18 @@ +// Manually extracted from mysql-5.5.23/include/mysql_com.h +exports.NOT_NULL_FLAG = 1; /* Field can't be NULL */ +exports.PRI_KEY_FLAG = 2; /* Field is part of a primary key */ +exports.UNIQUE_KEY_FLAG = 4; /* Field is part of a unique key */ +exports.MULTIPLE_KEY_FLAG = 8; /* Field is part of a key */ +exports.BLOB_FLAG = 16; /* Field is a blob */ +exports.UNSIGNED_FLAG = 32; /* Field is unsigned */ +exports.ZEROFILL_FLAG = 64; /* Field is zerofill */ +exports.BINARY_FLAG = 128; /* Field is binary */ + +/* The following are only sent to new clients */ +exports.ENUM_FLAG = 256; /* field is an enum */ +exports.AUTO_INCREMENT_FLAG = 512; /* field is a autoincrement field */ +exports.TIMESTAMP_FLAG = 1024; /* Field is a timestamp */ +exports.SET_FLAG = 2048; /* field is a set */ +exports.NO_DEFAULT_VALUE_FLAG = 4096; /* Field doesn't have default value */ +exports.ON_UPDATE_NOW_FLAG = 8192; /* Field is set to NOW on UPDATE */ +exports.NUM_FLAG = 32768; /* Field is num (for clients) */ diff --git a/node_modules/mysql/lib/protocol/constants/server_status.js b/node_modules/mysql/lib/protocol/constants/server_status.js new file mode 100644 index 0000000..5537ee5 --- /dev/null +++ b/node_modules/mysql/lib/protocol/constants/server_status.js @@ -0,0 +1,39 @@ +// Manually extracted from mysql-5.5.23/include/mysql_com.h + +/** + Is raised when a multi-statement transaction + has been started, either explicitly, by means + of BEGIN or COMMIT AND CHAIN, or + implicitly, by the first transactional + statement, when autocommit=off. +*/ +exports.SERVER_STATUS_IN_TRANS = 1; +exports.SERVER_STATUS_AUTOCOMMIT = 2; /* Server in auto_commit mode */ +exports.SERVER_MORE_RESULTS_EXISTS = 8; /* Multi query - next query exists */ +exports.SERVER_QUERY_NO_GOOD_INDEX_USED = 16; +exports.SERVER_QUERY_NO_INDEX_USED = 32; +/** + The server was able to fulfill the clients request and opened a + read-only non-scrollable cursor for a query. This flag comes + in reply to COM_STMT_EXECUTE and COM_STMT_FETCH commands. +*/ +exports.SERVER_STATUS_CURSOR_EXISTS = 64; +/** + This flag is sent when a read-only cursor is exhausted, in reply to + COM_STMT_FETCH command. +*/ +exports.SERVER_STATUS_LAST_ROW_SENT = 128; +exports.SERVER_STATUS_DB_DROPPED = 256; /* A database was dropped */ +exports.SERVER_STATUS_NO_BACKSLASH_ESCAPES = 512; +/** + Sent to the client if after a prepared statement reprepare + we discovered that the new statement returns a different + number of result set columns. +*/ +exports.SERVER_STATUS_METADATA_CHANGED = 1024; +exports.SERVER_QUERY_WAS_SLOW = 2048; + +/** + To mark ResultSet containing output parameter values. +*/ +exports.SERVER_PS_OUT_PARAMS = 4096; diff --git a/node_modules/mysql/lib/protocol/constants/types.js b/node_modules/mysql/lib/protocol/constants/types.js new file mode 100644 index 0000000..21c4000 --- /dev/null +++ b/node_modules/mysql/lib/protocol/constants/types.js @@ -0,0 +1,29 @@ +// Manually extracted from mysql-5.5.23/include/mysql_com.h +// some more info here: http://dev.mysql.com/doc/refman/5.5/en/c-api-prepared-statement-type-codes.html +exports.DECIMAL = 0x00; // aka DECIMAL (http://dev.mysql.com/doc/refman/5.0/en/precision-math-decimal-changes.html) +exports.TINY = 0x01; // aka TINYINT, 1 byte +exports.SHORT = 0x02; // aka SMALLINT, 2 bytes +exports.LONG = 0x03; // aka INT, 4 bytes +exports.FLOAT = 0x04; // aka FLOAT, 4-8 bytes +exports.DOUBLE = 0x05; // aka DOUBLE, 8 bytes +exports.NULL = 0x06; // NULL (used for prepared statements, I think) +exports.TIMESTAMP = 0x07; // aka TIMESTAMP +exports.LONGLONG = 0x08; // aka BIGINT, 8 bytes +exports.INT24 = 0x09; // aka MEDIUMINT, 3 bytes +exports.DATE = 0x0a; // aka DATE +exports.TIME = 0x0b; // aka TIME +exports.DATETIME = 0x0c; // aka DATETIME +exports.YEAR = 0x0d; // aka YEAR, 1 byte (don't ask) +exports.NEWDATE = 0x0e; // aka ? +exports.VARCHAR = 0x0f; // aka VARCHAR (?) +exports.BIT = 0x10; // aka BIT, 1-8 byte +exports.NEWDECIMAL = 0xf6; // aka DECIMAL +exports.ENUM = 0xf7; // aka ENUM +exports.SET = 0xf8; // aka SET +exports.TINY_BLOB = 0xf9; // aka TINYBLOB, TINYTEXT +exports.MEDIUM_BLOB = 0xfa; // aka MEDIUMBLOB, MEDIUMTEXT +exports.LONG_BLOB = 0xfb; // aka LONGBLOG, LONGTEXT +exports.BLOB = 0xfc; // aka BLOB, TEXT +exports.VAR_STRING = 0xfd; // aka VARCHAR, VARBINARY +exports.STRING = 0xfe; // aka CHAR, BINARY +exports.GEOMETRY = 0xff; // aka GEOMETRY diff --git a/node_modules/mysql/lib/protocol/packets/ClientAuthenticationPacket.js b/node_modules/mysql/lib/protocol/packets/ClientAuthenticationPacket.js new file mode 100644 index 0000000..19e1539 --- /dev/null +++ b/node_modules/mysql/lib/protocol/packets/ClientAuthenticationPacket.js @@ -0,0 +1,32 @@ +module.exports = ClientAuthenticationPacket; +function ClientAuthenticationPacket(options) { + options = options || {}; + + this.clientFlags = options.clientFlags; + this.maxPacketSize = options.maxPacketSize; + this.charsetNumber = options.charsetNumber; + this.filler = undefined; + this.user = options.user; + this.scrambleBuff = options.scrambleBuff; + this.database = options.database; +} + +ClientAuthenticationPacket.prototype.parse = function(parser) { + this.clientFlags = parser.parseUnsignedNumber(4); + this.maxPacketSize = parser.parseUnsignedNumber(4); + this.charsetNumber = parser.parseUnsignedNumber(1); + this.filler = parser.parseFiller(23); + this.user = parser.parseNullTerminatedString(); + this.scrambleBuff = parser.parseLengthCodedBuffer(); + this.database = parser.parseNullTerminatedString(); +}; + +ClientAuthenticationPacket.prototype.write = function(writer) { + writer.writeUnsignedNumber(4, this.clientFlags); + writer.writeUnsignedNumber(4, this.maxPacketSize); + writer.writeUnsignedNumber(1, this.charsetNumber); + writer.writeFiller(23); + writer.writeNullTerminatedString(this.user); + writer.writeLengthCodedBuffer(this.scrambleBuff); + writer.writeNullTerminatedString(this.database); +}; diff --git a/node_modules/mysql/lib/protocol/packets/ComChangeUserPacket.js b/node_modules/mysql/lib/protocol/packets/ComChangeUserPacket.js new file mode 100644 index 0000000..d8279b0 --- /dev/null +++ b/node_modules/mysql/lib/protocol/packets/ComChangeUserPacket.js @@ -0,0 +1,25 @@ +module.exports = ComChangeUserPacket; +function ComChangeUserPacket(options) { + options = options || {}; + + this.command = 0x11; + this.user = options.user; + this.scrambleBuff = options.scrambleBuff; + this.database = options.database; + this.charsetNumber = options.charsetNumber; +} + +ComChangeUserPacket.prototype.parse = function(parser) { + this.user = parser.parseNullTerminatedString(); + this.scrambleBuff = parser.parseLengthCodedBuffer(); + this.database = parser.parseNullTerminatedString(); + this.charsetNumber = parser.parseUnsignedNumber(1); +}; + +ComChangeUserPacket.prototype.write = function(writer) { + writer.writeUnsignedNumber(1, this.command); + writer.writeNullTerminatedString(this.user); + writer.writeLengthCodedBuffer(this.scrambleBuff); + writer.writeNullTerminatedString(this.database); + writer.writeUnsignedNumber(1, this.charsetNumber); +}; diff --git a/node_modules/mysql/lib/protocol/packets/ComPingPacket.js b/node_modules/mysql/lib/protocol/packets/ComPingPacket.js new file mode 100644 index 0000000..359eef5 --- /dev/null +++ b/node_modules/mysql/lib/protocol/packets/ComPingPacket.js @@ -0,0 +1,12 @@ +module.exports = ComPingPacket; +function ComPingPacket(sql) { + this.command = 0x0e; +} + +ComPingPacket.prototype.write = function(writer) { + writer.writeUnsignedNumber(1, this.command); +}; + +ComPingPacket.prototype.parse = function(parser) { + this.command = parser.parseUnsignedNumber(1); +}; diff --git a/node_modules/mysql/lib/protocol/packets/ComQueryPacket.js b/node_modules/mysql/lib/protocol/packets/ComQueryPacket.js new file mode 100644 index 0000000..7ac191f --- /dev/null +++ b/node_modules/mysql/lib/protocol/packets/ComQueryPacket.js @@ -0,0 +1,15 @@ +module.exports = ComQueryPacket; +function ComQueryPacket(sql) { + this.command = 0x03; + this.sql = sql; +} + +ComQueryPacket.prototype.write = function(writer) { + writer.writeUnsignedNumber(1, this.command); + writer.writeString(this.sql); +}; + +ComQueryPacket.prototype.parse = function(parser) { + this.command = parser.parseUnsignedNumber(1); + this.sql = parser.parsePacketTerminatedString(); +}; diff --git a/node_modules/mysql/lib/protocol/packets/ComQuitPacket.js b/node_modules/mysql/lib/protocol/packets/ComQuitPacket.js new file mode 100644 index 0000000..d4e2805 --- /dev/null +++ b/node_modules/mysql/lib/protocol/packets/ComQuitPacket.js @@ -0,0 +1,7 @@ +module.exports = ComQuitPacket; +function ComQuitPacket(sql) { +} + +ComQuitPacket.prototype.write = function(writer) { + writer.writeUnsignedNumber(1, 0x01); +}; diff --git a/node_modules/mysql/lib/protocol/packets/ComStatisticsPacket.js b/node_modules/mysql/lib/protocol/packets/ComStatisticsPacket.js new file mode 100644 index 0000000..fe11d18 --- /dev/null +++ b/node_modules/mysql/lib/protocol/packets/ComStatisticsPacket.js @@ -0,0 +1,12 @@ +module.exports = ComStatisticsPacket; +function ComStatisticsPacket(sql) { + this.command = 0x09; +} + +ComStatisticsPacket.prototype.write = function(writer) { + writer.writeUnsignedNumber(1, this.command); +}; + +ComStatisticsPacket.prototype.parse = function(parser) { + this.command = parser.parseUnsignedNumber(1); +}; diff --git a/node_modules/mysql/lib/protocol/packets/EmptyPacket.js b/node_modules/mysql/lib/protocol/packets/EmptyPacket.js new file mode 100644 index 0000000..f02189c --- /dev/null +++ b/node_modules/mysql/lib/protocol/packets/EmptyPacket.js @@ -0,0 +1,6 @@ +module.exports = EmptyPacket; +function EmptyPacket() { +} + +EmptyPacket.prototype.write = function(writer) { +}; diff --git a/node_modules/mysql/lib/protocol/packets/EofPacket.js b/node_modules/mysql/lib/protocol/packets/EofPacket.js new file mode 100644 index 0000000..116f861 --- /dev/null +++ b/node_modules/mysql/lib/protocol/packets/EofPacket.js @@ -0,0 +1,20 @@ +module.exports = EofPacket; +function EofPacket(options) { + options = options || {}; + + this.fieldCount = undefined; + this.warningCount = options.warningCount; + this.serverStatus = options.serverStatus; +} + +EofPacket.prototype.parse = function(parser) { + this.fieldCount = parser.parseUnsignedNumber(1); + this.warningCount = parser.parseUnsignedNumber(2); + this.serverStatus = parser.parseUnsignedNumber(2); +}; + +EofPacket.prototype.write = function(writer) { + writer.writeUnsignedNumber(1, 0xfe); + writer.writeUnsignedNumber(2, this.warningCount); + writer.writeUnsignedNumber(2, this.serverStatus); +}; diff --git a/node_modules/mysql/lib/protocol/packets/ErrorPacket.js b/node_modules/mysql/lib/protocol/packets/ErrorPacket.js new file mode 100644 index 0000000..e03de00 --- /dev/null +++ b/node_modules/mysql/lib/protocol/packets/ErrorPacket.js @@ -0,0 +1,35 @@ +module.exports = ErrorPacket; +function ErrorPacket(options) { + options = options || {}; + + this.fieldCount = options.fieldCount; + this.errno = options.errno; + this.sqlStateMarker = options.sqlStateMarker; + this.sqlState = options.sqlState; + this.message = options.message; +} + +ErrorPacket.prototype.parse = function(parser) { + this.fieldCount = parser.parseUnsignedNumber(1); + this.errno = parser.parseUnsignedNumber(2); + + // sqlStateMarker ('#' = 0x23) indicates error packet format + if (parser.peak() === 0x23) { + this.sqlStateMarker = parser.parseString(1); + this.sqlState = parser.parseString(5); + } + + this.message = parser.parsePacketTerminatedString(); +}; + +ErrorPacket.prototype.write = function(writer) { + writer.writeUnsignedNumber(1, 0xff); + writer.writeUnsignedNumber(2, this.errno); + + if (this.sqlStateMarker) { + writer.writeString(this.sqlStateMarker); + writer.writeString(this.sqlState); + } + + writer.writeString(this.message); +}; diff --git a/node_modules/mysql/lib/protocol/packets/Field.js b/node_modules/mysql/lib/protocol/packets/Field.js new file mode 100644 index 0000000..9b48c14 --- /dev/null +++ b/node_modules/mysql/lib/protocol/packets/Field.js @@ -0,0 +1,31 @@ +var Types = require('../constants/types'); + +module.exports = Field; +function Field(options) { + options = options || {}; + + this.parser = options.parser; + this.db = options.packet.db; + this.table = options.packet.table; + this.name = options.packet.name; + this.type = typeToString(options.packet.type); + this.length = options.packet.length; +} + +Field.prototype.string = function () { + return this.parser.parseLengthCodedString(); +}; + +Field.prototype.buffer = function () { + return this.parser.parseLengthCodedBuffer(); +}; + +Field.prototype.geometry = function () { + return this.parser.parseGeometryValue(); +}; + +function typeToString(t) { + for (var k in Types) { + if (Types[k] == t) return k; + } +} diff --git a/node_modules/mysql/lib/protocol/packets/FieldPacket.js b/node_modules/mysql/lib/protocol/packets/FieldPacket.js new file mode 100644 index 0000000..b7a8819 --- /dev/null +++ b/node_modules/mysql/lib/protocol/packets/FieldPacket.js @@ -0,0 +1,65 @@ +module.exports = FieldPacket; +function FieldPacket(options) { + options = options || {}; + + this.catalog = options.catalog; + this.db = options.db; + this.table = options.table; + this.orgTable = options.orgTable; + this.name = options.name; + this.orgName = options.orgName; + this.filler1 = undefined; + this.charsetNr = options.charsetNr; + this.length = options.length; + this.type = options.type; + this.flags = options.flags; + this.decimals = options.decimals; + this.filler2 = undefined; + this.default = options.default; + this.zeroFill = options.zeroFill; +} + +FieldPacket.prototype.parse = function(parser) { + this.catalog = parser.parseLengthCodedString(); + this.db = parser.parseLengthCodedString(); + this.table = parser.parseLengthCodedString(); + this.orgTable = parser.parseLengthCodedString(); + this.name = parser.parseLengthCodedString(); + this.orgName = parser.parseLengthCodedString(); + this.filler1 = parser.parseFiller(1); + this.charsetNr = parser.parseUnsignedNumber(2); + this.fieldLength = parser.parseUnsignedNumber(4); + this.type = parser.parseUnsignedNumber(1); + this.flags = parser.parseUnsignedNumber(2); + this.decimals = parser.parseUnsignedNumber(1); + this.filler2 = parser.parseFiller(2); + + // parsed flags + this.zeroFill = (this.flags & 0x0040 ? true : false); + + if (parser.reachedPacketEnd()) { + return; + } + + this.default = parser.parseLengthCodedNumber(); +}; + +FieldPacket.prototype.write = function(writer) { + writer.writeLengthCodedString(this.catalog); + writer.writeLengthCodedString(this.db); + writer.writeLengthCodedString(this.table); + writer.writeLengthCodedString(this.orgTable); + writer.writeLengthCodedString(this.name); + writer.writeLengthCodedString(this.orgName); + writer.writeFiller(1); + writer.writeUnsignedNumber(2, this.charsetNr || 0); + writer.writeUnsignedNumber(4, this.fieldLength || 0); + writer.writeUnsignedNumber(1, this.type) || 0; + writer.writeUnsignedNumber(2, this.flags || 0); + writer.writeUnsignedNumber(1, this.decimals || 0); + writer.writeFiller(2); + + if (this.default !== undefined) { + writer.writeLengthCodedString(this.default); + } +}; diff --git a/node_modules/mysql/lib/protocol/packets/HandshakeInitializationPacket.js b/node_modules/mysql/lib/protocol/packets/HandshakeInitializationPacket.js new file mode 100644 index 0000000..a5b9def --- /dev/null +++ b/node_modules/mysql/lib/protocol/packets/HandshakeInitializationPacket.js @@ -0,0 +1,81 @@ +module.exports = HandshakeInitializationPacket; +function HandshakeInitializationPacket(options) { + options = options || {}; + + this.protocolVersion = options.protocolVersion; + this.serverVersion = options.serverVersion; + this.threadId = options.threadId; + this.scrambleBuff1 = options.scrambleBuff1; + this.filler1 = options.filler1; + this.serverCapabilities1 = options.serverCapabilities1; + this.serverLanguage = options.serverLanguage; + this.serverStatus = options.serverStatus; + this.serverCapabilities2 = options.serverCapabilities2; + this.scrambleLength = options.scrambleLength; + this.filler2 = options.filler2; + this.scrambleBuff2 = options.scrambleBuff2; + this.filler3 = options.filler3; + this.pluginData = options.pluginData; +} + +HandshakeInitializationPacket.prototype.parse = function(parser) { + this.protocolVersion = parser.parseUnsignedNumber(1); + this.serverVersion = parser.parseNullTerminatedString(); + this.threadId = parser.parseUnsignedNumber(4); + this.scrambleBuff1 = parser.parseBuffer(8); + this.filler1 = parser.parseFiller(1); + this.serverCapabilities1 = parser.parseUnsignedNumber(2); + this.serverLanguage = parser.parseUnsignedNumber(1); + this.serverStatus = parser.parseUnsignedNumber(2); + this.serverCapabilities2 = parser.parseUnsignedNumber(2); + this.scrambleLength = parser.parseUnsignedNumber(1); + this.filler2 = parser.parseFiller(10); + + // scrambleBuff2 should be 0x00 terminated, but sphinx does not do this + // so we assume scrambleBuff2 to be 12 byte and treat the next byte as a + // filler byte. + this.scrambleBuff2 = parser.parseBuffer(12); + this.filler3 = parser.parseFiller(1); + + if (parser.reachedPacketEnd()) { + return; + } + + // According to the docs this should be 0x00 terminated, but MariaDB does + // not do this, so we assume this string to be packet terminated. + this.pluginData = parser.parsePacketTerminatedString(); + + // However, if there is a trailing '\0', strip it + var lastChar = this.pluginData.length - 1; + if (this.pluginData[lastChar] === '\0') { + this.pluginData = this.pluginData.substr(0, lastChar); + } +}; + +HandshakeInitializationPacket.prototype.write = function(writer) { + writer.writeUnsignedNumber(1, this.protocolVersion); + writer.writeNullTerminatedString(this.serverVersion); + writer.writeUnsignedNumber(4, this.threadId); + writer.writeBuffer(this.scrambleBuff1); + writer.writeFiller(1); + writer.writeUnsignedNumber(2, this.serverCapabilities1); + writer.writeUnsignedNumber(1, this.serverLanguage); + writer.writeUnsignedNumber(2, this.serverStatus); + writer.writeUnsignedNumber(2, this.serverCapabilities2); + writer.writeUnsignedNumber(1, this.scrambleLength); + writer.writeFiller(10); + writer.writeNullTerminatedBuffer(this.scrambleBuff2); + + if (this.pluginData !== undefined) { + writer.writeNullTerminatedString(this.pluginData); + } +}; + +HandshakeInitializationPacket.prototype.scrambleBuff = function() { + var buffer = new Buffer(this.scrambleBuff1.length + this.scrambleBuff2.length); + + this.scrambleBuff1.copy(buffer); + this.scrambleBuff2.copy(buffer, this.scrambleBuff1.length); + + return buffer; +}; diff --git a/node_modules/mysql/lib/protocol/packets/LocalDataFilePacket.js b/node_modules/mysql/lib/protocol/packets/LocalDataFilePacket.js new file mode 100644 index 0000000..c38a88a --- /dev/null +++ b/node_modules/mysql/lib/protocol/packets/LocalDataFilePacket.js @@ -0,0 +1,8 @@ +module.exports = LocalDataFilePacket; +function LocalDataFilePacket(data) { + this.data = data; +} + +LocalDataFilePacket.prototype.write = function(writer) { + writer.writeString(this.data); +}; diff --git a/node_modules/mysql/lib/protocol/packets/OkPacket.js b/node_modules/mysql/lib/protocol/packets/OkPacket.js new file mode 100644 index 0000000..fb25e2e --- /dev/null +++ b/node_modules/mysql/lib/protocol/packets/OkPacket.js @@ -0,0 +1,34 @@ +module.exports = OkPacket; +function OkPacket() { + this.fieldCount = undefined; + this.affectedRows = undefined; + this.insertId = undefined; + this.serverStatus = undefined; + this.warningCount = undefined; + this.message = undefined; +} + +OkPacket.prototype.parse = function(parser) { + this.fieldCount = parser.parseUnsignedNumber(1); + this.affectedRows = parser.parseLengthCodedNumber(); + this.insertId = parser.parseLengthCodedNumber(); + this.serverStatus = parser.parseUnsignedNumber(2); + this.warningCount = parser.parseUnsignedNumber(2); + this.message = parser.parsePacketTerminatedString(); + this.changedRows = 0; + + var m = this.message.match(/\schanged:\s*(\d+)/i); + + if (m !== null) { + this.changedRows = parseInt(m[1], 10); + } +}; + +OkPacket.prototype.write = function(writer) { + writer.writeUnsignedNumber(1, 0x00); + writer.writeLengthCodedNumber(this.affectedRows || 0); + writer.writeLengthCodedNumber(this.insertId || 0); + writer.writeUnsignedNumber(2, this.serverStatus || 0); + writer.writeUnsignedNumber(2, this.warningCount || 0); + writer.writeString(this.message); +}; diff --git a/node_modules/mysql/lib/protocol/packets/OldPasswordPacket.js b/node_modules/mysql/lib/protocol/packets/OldPasswordPacket.js new file mode 100644 index 0000000..1ff78ec --- /dev/null +++ b/node_modules/mysql/lib/protocol/packets/OldPasswordPacket.js @@ -0,0 +1,15 @@ +module.exports = OldPasswordPacket; +function OldPasswordPacket(options) { + options = options || {}; + + this.scrambleBuff = options.scrambleBuff; +} + +OldPasswordPacket.prototype.parse = function(parser) { + this.scrambleBuff = parser.parseNullTerminatedBuffer(); +}; + +OldPasswordPacket.prototype.write = function(writer) { + writer.writeBuffer(this.scrambleBuff); + writer.writeFiller(1); +}; diff --git a/node_modules/mysql/lib/protocol/packets/ResultSetHeaderPacket.js b/node_modules/mysql/lib/protocol/packets/ResultSetHeaderPacket.js new file mode 100644 index 0000000..25b8002 --- /dev/null +++ b/node_modules/mysql/lib/protocol/packets/ResultSetHeaderPacket.js @@ -0,0 +1,25 @@ +module.exports = ResultSetHeaderPacket; +function ResultSetHeaderPacket(options) { + options = options || {}; + + this.fieldCount = options.fieldCount; + this.extra = options.extra; +} + +ResultSetHeaderPacket.prototype.parse = function(parser) { + this.fieldCount = parser.parseLengthCodedNumber(); + + if (parser.reachedPacketEnd()) return; + + this.extra = (this.fieldCount === null) + ? parser.parsePacketTerminatedString() + : parser.parseLengthCodedNumber(); +}; + +ResultSetHeaderPacket.prototype.write = function(writer) { + writer.writeLengthCodedNumber(this.fieldCount); + + if (this.extra !== undefined) { + writer.writeLengthCodedNumber(this.extra); + } +}; diff --git a/node_modules/mysql/lib/protocol/packets/RowDataPacket.js b/node_modules/mysql/lib/protocol/packets/RowDataPacket.js new file mode 100644 index 0000000..9ee4b4a --- /dev/null +++ b/node_modules/mysql/lib/protocol/packets/RowDataPacket.js @@ -0,0 +1,92 @@ +var Types = require('../constants/types'); +var Charsets = require('../constants/charsets'); +var Field = require('./Field'); +var IEEE_754_BINARY_64_PRECISION = Math.pow(2, 53); + +module.exports = RowDataPacket; +function RowDataPacket() { +} + +RowDataPacket.prototype.parse = function(parser, fieldPackets, typeCast, nestTables, connection) { + var self = this; + var next = function () { + return self._typeCast(fieldPacket, parser, connection.config.timezone, connection.config.supportBigNumbers); + }; + + for (var i = 0; i < fieldPackets.length; i++) { + var fieldPacket = fieldPackets[i]; + var value; + + if (typeof typeCast == "function") { + value = typeCast.apply(connection, [ new Field({ packet: fieldPacket, parser: parser }), next ]); + } else { + value = (typeCast) + ? this._typeCast(fieldPacket, parser, connection.config.timezone, connection.config.supportBigNumbers) + : ( (fieldPacket.charsetNr === Charsets.BINARY) + ? parser.parseLengthCodedBuffer() + : parser.parseLengthCodedString() ); + } + + if (typeof nestTables == "string" && nestTables.length) { + this[fieldPacket.table + nestTables + fieldPacket.name] = value; + } else if (nestTables) { + this[fieldPacket.table] = this[fieldPacket.table] || {}; + this[fieldPacket.table][fieldPacket.name] = value; + } else { + this[fieldPacket.name] = value; + } + } +}; + +RowDataPacket.prototype._typeCast = function(field, parser, timeZone, supportBigNumbers) { + switch (field.type) { + case Types.TIMESTAMP: + case Types.DATE: + case Types.DATETIME: + case Types.NEWDATE: + var dateString = parser.parseLengthCodedString(); + if (dateString === null) { + return null; + } + + if (timeZone != 'local') { + if (field.type === Types.DATE) { + dateString += ' 00:00:00 ' + timeZone; + } else { + dateString += timeZone; + } + } + + return new Date(dateString); + case Types.TINY: + case Types.SHORT: + case Types.LONG: + case Types.INT24: + case Types.YEAR: + case Types.FLOAT: + case Types.DOUBLE: + case Types.LONGLONG: + case Types.NEWDECIMAL: + var numberString = parser.parseLengthCodedString(); + return (numberString === null || (field.zeroFill && numberString[0] == "0")) + ? numberString + : ((supportBigNumbers && Number(numberString) > IEEE_754_BINARY_64_PRECISION) + ? numberString + : Number(numberString)); + case Types.BIT: + return parser.parseLengthCodedBuffer(); + case Types.STRING: + case Types.VAR_STRING: + case Types.TINY_BLOB: + case Types.MEDIUM_BLOB: + case Types.LONG_BLOB: + case Types.BLOB: + return (field.charsetNr === Charsets.BINARY) + ? parser.parseLengthCodedBuffer() + : parser.parseLengthCodedString(); + case Types.GEOMETRY: + return parser.parseGeometryValue(); + default: + return parser.parseLengthCodedString(); + } +}; diff --git a/node_modules/mysql/lib/protocol/packets/StatisticsPacket.js b/node_modules/mysql/lib/protocol/packets/StatisticsPacket.js new file mode 100644 index 0000000..5f70b3b --- /dev/null +++ b/node_modules/mysql/lib/protocol/packets/StatisticsPacket.js @@ -0,0 +1,20 @@ +module.exports = StatisticsPacket; +function StatisticsPacket() { + this.message = undefined; +} + +StatisticsPacket.prototype.parse = function(parser) { + this.message = parser.parsePacketTerminatedString(); + + var items = this.message.split(/\s\s/); + for (var i = 0; i < items.length; i++) { + var m = items[i].match(/^(.+)\:\s+(.+)$/); + if (m !== null) { + this[m[1].toLowerCase().replace(/\s/g, '_')] = Number(m[2]); + } + } +}; + +StatisticsPacket.prototype.write = function(writer) { + writer.writeString(this.message); +}; diff --git a/node_modules/mysql/lib/protocol/packets/UseOldPasswordPacket.js b/node_modules/mysql/lib/protocol/packets/UseOldPasswordPacket.js new file mode 100644 index 0000000..d73bf44 --- /dev/null +++ b/node_modules/mysql/lib/protocol/packets/UseOldPasswordPacket.js @@ -0,0 +1,14 @@ +module.exports = UseOldPasswordPacket; +function UseOldPasswordPacket(options) { + options = options || {}; + + this.firstByte = options.firstByte || 0xfe; +} + +UseOldPasswordPacket.prototype.parse = function(parser) { + this.firstByte = parser.parseUnsignedNumber(1); +}; + +UseOldPasswordPacket.prototype.write = function(writer) { + writer.writeUnsignedNumber(1, this.firstByte); +}; diff --git a/node_modules/mysql/lib/protocol/packets/index.js b/node_modules/mysql/lib/protocol/packets/index.js new file mode 100644 index 0000000..a13d469 --- /dev/null +++ b/node_modules/mysql/lib/protocol/packets/index.js @@ -0,0 +1,4 @@ +var Elements = module.exports = require('require-all')({ + dirname : __dirname, + filter : /([A-Z].+)\.js$/, +}); diff --git a/node_modules/mysql/lib/protocol/sequences/ChangeUser.js b/node_modules/mysql/lib/protocol/sequences/ChangeUser.js new file mode 100644 index 0000000..6169eda --- /dev/null +++ b/node_modules/mysql/lib/protocol/sequences/ChangeUser.js @@ -0,0 +1,41 @@ +var Sequence = require('./Sequence'); +var Util = require('util'); +var Packets = require('../packets'); +var Auth = require('../Auth'); + +module.exports = ChangeUser; +Util.inherits(ChangeUser, Sequence); +function ChangeUser(options, callback) { + Sequence.call(this, callback); + + this._user = options.user; + this._password = options.password; + this._database = options.database; + this._charsetNumber = options.charsetNumber; + this._currentConfig = options.currentConfig; +} + +ChangeUser.prototype.start = function(handshakeInitializationPacket) { + var scrambleBuff = handshakeInitializationPacket.scrambleBuff(); + scrambleBuff = Auth.token(this._password, scrambleBuff); + + var packet = new Packets.ComChangeUserPacket({ + user : this._user, + scrambleBuff : scrambleBuff, + database : this._database, + charsetNumber : this._charsetNumber, + }); + + this._currentConfig.user = this._user; + this._currentConfig.password = this._password; + this._currentConfig.database = this._database; + this._currentConfig.charsetNumber = this._charsetNumber; + + this.emit('packet', packet); +}; + +ChangeUser.prototype['ErrorPacket'] = function(packet) { + var err = this._packetToError(packet); + err.fatal = true; + this.end(err); +}; diff --git a/node_modules/mysql/lib/protocol/sequences/Handshake.js b/node_modules/mysql/lib/protocol/sequences/Handshake.js new file mode 100644 index 0000000..c63ba5c --- /dev/null +++ b/node_modules/mysql/lib/protocol/sequences/Handshake.js @@ -0,0 +1,65 @@ +var Sequence = require('./Sequence'); +var Util = require('util'); +var Packets = require('../packets'); +var Auth = require('../Auth'); + +module.exports = Handshake; +Util.inherits(Handshake, Sequence); +function Handshake(config, callback) { + Sequence.call(this, callback); + + this._config = config; + this._handshakeInitializationPacket = null; +} + +Handshake.prototype.determinePacket = function(firstByte) { + if (firstByte === 0xff) { + return Packets.ErrorPacket; + } + + if (!this._handshakeInitializationPacket) { + return Packets.HandshakeInitializationPacket; + } + + if (firstByte === 0xfe) { + return Packets.UseOldPasswordPacket; + } +}; + +Handshake.prototype['HandshakeInitializationPacket'] = function(packet) { + this._handshakeInitializationPacket = packet; + + this.emit('packet', new Packets.ClientAuthenticationPacket({ + clientFlags : this._config.clientFlags, + maxPacketSize : this._config.maxPacketSize, + charsetNumber : this._config.charsetNumber, + user : this._config.user, + scrambleBuff : Auth.token(this._config.password, packet.scrambleBuff()), + database : this._config.database, + })); +}; + +Handshake.prototype['UseOldPasswordPacket'] = function(packet) { + if (!this._config.insecureAuth) { + var err = new Error( + 'MySQL server is requesting the old and insecure pre-4.1 auth mechanism.' + + 'Upgrade the user password or use the {insecureAuth: true} option.' + ); + + err.code = 'HANDSHAKE_INSECURE_AUTH'; + err.fatal = true; + + this.end(err); + return; + } + + this.emit('packet', new Packets.OldPasswordPacket({ + scrambleBuff : Auth.scramble323(this._handshakeInitializationPacket.scrambleBuff(), this._config.password), + })); +}; + +Handshake.prototype['ErrorPacket'] = function(packet) { + var err = this._packetToError(packet, true); + err.fatal = true; + this.end(err); +}; diff --git a/node_modules/mysql/lib/protocol/sequences/Ping.js b/node_modules/mysql/lib/protocol/sequences/Ping.js new file mode 100644 index 0000000..0a5aba9 --- /dev/null +++ b/node_modules/mysql/lib/protocol/sequences/Ping.js @@ -0,0 +1,14 @@ +var Sequence = require('./Sequence'); +var Util = require('util'); +var Packets = require('../packets'); + +module.exports = Ping; +Util.inherits(Ping, Sequence); + +function Ping(callback) { + Sequence.call(this, callback); +} + +Ping.prototype.start = function() { + this.emit('packet', new Packets.ComPingPacket); +}; diff --git a/node_modules/mysql/lib/protocol/sequences/Query.js b/node_modules/mysql/lib/protocol/sequences/Query.js new file mode 100644 index 0000000..ba79c7b --- /dev/null +++ b/node_modules/mysql/lib/protocol/sequences/Query.js @@ -0,0 +1,163 @@ +var Sequence = require('./Sequence'); +var Util = require('util'); +var Packets = require('../packets'); +var ResultSet = require('../ResultSet'); +var ServerStatus = require('../constants/server_status'); +var fs = require('fs'); + +module.exports = Query; +Util.inherits(Query, Sequence); +function Query(options, callback) { + Sequence.call(this, callback); + + this.sql = options.sql; + this.values = options.values; + this.typeCast = (options.typeCast === undefined) + ? true + : options.typeCast; + this.nestTables = options.nestTables || false; + + this._resultSet = null; + this._results = []; + this._fields = []; + this._index = 0; + this._loadError = null; +} + +Query.prototype.start = function() { + this.emit('packet', new Packets.ComQueryPacket(this.sql)); +}; + +Query.prototype.determinePacket = function(firstByte, parser) { + if (firstByte === 0) { + // If we have a resultSet and got one eofPacket + if (this._resultSet && this._resultSet.eofPackets.length === 1) { + // Then this is a RowDataPacket with an empty string in the first column. + // See: https://github.com/felixge/node-mysql/issues/222 + } else { + return; + } + } + + if (firstByte === 255) { + return; + } + + // EofPacket's are 5 bytes in mysql >= 4.1 + // This is the only / best way to differentiate their firstByte from a 9 + // byte length coded binary. + if (firstByte === 0xfe && parser.packetLength() < 9) { + return Packets.EofPacket; + } + + if (!this._resultSet) { + return Packets.ResultSetHeaderPacket; + } + + return (this._resultSet.eofPackets.length === 0) + ? Packets.FieldPacket + : Packets.RowDataPacket; +}; + +Query.prototype['OkPacket'] = function(packet) { + // try...finally for exception safety + try { + if (!this._callback) { + this.emit('result', packet, this._index); + } else { + this._results.push(packet); + this._fields.push(undefined); + } + } finally { + this._index++; + this._handleFinalResultPacket(packet); + } +}; + +Query.prototype['ErrorPacket'] = function(packet) { + var err = this._packetToError(packet); + + var results = (this._results.length > 0) + ? this._results + : undefined; + + var fields = (this._fields.length > 0) + ? this._fields + : undefined; + + err.index = this._index; + this.end(err, results, fields); +}; + +Query.prototype['ResultSetHeaderPacket'] = function(packet) { + this._resultSet = new ResultSet(packet); + + // used by LOAD DATA LOCAL INFILE queries + if (packet.fieldCount === null) { + this._sendLocalDataFile(packet.extra); + } +}; + +Query.prototype['FieldPacket'] = function(packet) { + this._resultSet.fieldPackets.push(packet); +}; + +Query.prototype['EofPacket'] = function(packet) { + this._resultSet.eofPackets.push(packet); + + if (this._resultSet.eofPackets.length === 1 && !this._callback) { + this.emit('fields', this._resultSet.fieldPackets, this._index); + } + + if (this._resultSet.eofPackets.length !== 2) { + return; + } + + if (this._callback) { + this._results.push(this._resultSet.rows); + this._fields.push(this._resultSet.fieldPackets); + } + + this._index++; + this._resultSet = null; + this._handleFinalResultPacket(packet); +}; + +Query.prototype._handleFinalResultPacket = function(packet) { + if (packet.serverStatus & ServerStatus.SERVER_MORE_RESULTS_EXISTS) { + return; + } + + var results = (this._results.length > 1) + ? this._results + : this._results[0]; + + var fields = (this._fields.length > 1) + ? this._fields + : this._fields[0]; + + this.end(this._loadError, results, fields); +}; + +Query.prototype['RowDataPacket'] = function(packet, parser, connection) { + packet.parse(parser, this._resultSet.fieldPackets, this.typeCast, this.nestTables, connection); + + if (this._callback) { + this._resultSet.rows.push(packet); + } else { + this.emit('result', packet, this._index); + } +}; + +Query.prototype._sendLocalDataFile = function(path) { + var self = this; + fs.readFile(path, 'utf-8', function(err, data) { + if (err) { + self._loadError = err; + } else { + self.emit('packet', new Packets.LocalDataFilePacket(data)); + } + + self.emit('packet', new Packets.EmptyPacket()); + }); +}; diff --git a/node_modules/mysql/lib/protocol/sequences/Quit.js b/node_modules/mysql/lib/protocol/sequences/Quit.js new file mode 100644 index 0000000..d75ea51 --- /dev/null +++ b/node_modules/mysql/lib/protocol/sequences/Quit.js @@ -0,0 +1,13 @@ +var Sequence = require('./Sequence'); +var Util = require('util'); +var Packets = require('../packets'); + +module.exports = Quit; +Util.inherits(Quit, Sequence); +function Quit(callback) { + Sequence.call(this, callback); +} + +Quit.prototype.start = function() { + this.emit('packet', new Packets.ComQuitPacket); +}; diff --git a/node_modules/mysql/lib/protocol/sequences/Sequence.js b/node_modules/mysql/lib/protocol/sequences/Sequence.js new file mode 100644 index 0000000..d635799 --- /dev/null +++ b/node_modules/mysql/lib/protocol/sequences/Sequence.js @@ -0,0 +1,83 @@ +var Util = require('util'); +var EventEmitter = require('events').EventEmitter; +var Packets = require('../packets'); +var ErrorConstants = require('../constants/errors'); + +module.exports = Sequence; +Util.inherits(Sequence, EventEmitter); +function Sequence(callback) { + EventEmitter.call(this); + + this._callback = callback; + this._ended = false; + + // Experimental: Long stack trace support + this._callSite = (new Error).stack.replace(/.+\n/, ''); +} + +Sequence.determinePacket = function(byte) { + switch (byte) { + case 0x00: return Packets.OkPacket; + case 0xfe: return Packets.EofPacket; + case 0xff: return Packets.ErrorPacket; + } +}; + +Sequence.prototype.hasErrorHandler = function() { + return this._callback || this.listeners('error').length > 1; +}; + +Sequence.prototype._packetToError = function(packet) { + var code = ErrorConstants[packet.errno] || 'UNKNOWN_CODE_PLEASE_REPORT'; + var err = new Error(code + ': ' + packet.message); + err.code = code; + + return err; +}; + +Sequence.prototype._addLongStackTrace = function(err) { + var delimiter = '\n --------------------\n' ; + if (err.stack.indexOf(delimiter) > -1) { + return; + } + + err.stack += delimiter + this._callSite; +}; + +Sequence.prototype.end = function(err) { + if (this._ended) { + return; + } + + this._ended = true; + + if (err) { + this._addLongStackTrace(err); + } + + // try...finally for exception safety + try { + if (err) { + this.emit('error', err); + } + } finally { + try { + if (this._callback) { + this._callback.apply(this, arguments); + } + } finally { + this.emit('end'); + } + } +}; + +Sequence.prototype['OkPacket'] = function(packet) { + this.end(null, packet); +}; + +Sequence.prototype['ErrorPacket'] = function(packet) { + this.end(this._packetToError(packet)); +}; + +// Implemented by child classes +Sequence.prototype.start = function() {}; diff --git a/node_modules/mysql/lib/protocol/sequences/Statistics.js b/node_modules/mysql/lib/protocol/sequences/Statistics.js new file mode 100644 index 0000000..2a11cc1 --- /dev/null +++ b/node_modules/mysql/lib/protocol/sequences/Statistics.js @@ -0,0 +1,23 @@ +var Sequence = require('./Sequence'); +var Util = require('util'); +var Packets = require('../packets'); + +module.exports = Statistics; +Util.inherits(Statistics, Sequence); +function Statistics(callback) { + Sequence.call(this, callback); +} + +Statistics.prototype.start = function() { + this.emit('packet', new Packets.ComStatisticsPacket); +}; + +Statistics.prototype['StatisticsPacket'] = function (packet) { + this.end(null, packet); +}; + +Statistics.prototype.determinePacket = function(firstByte, parser) { + if (firstByte === 0x55) { + return Packets.StatisticsPacket; + } +}; diff --git a/node_modules/mysql/lib/protocol/sequences/index.js b/node_modules/mysql/lib/protocol/sequences/index.js new file mode 100644 index 0000000..a13d469 --- /dev/null +++ b/node_modules/mysql/lib/protocol/sequences/index.js @@ -0,0 +1,4 @@ +var Elements = module.exports = require('require-all')({ + dirname : __dirname, + filter : /([A-Z].+)\.js$/, +}); diff --git a/node_modules/mysql/node_modules/bignumber.js/LICENCE b/node_modules/mysql/node_modules/bignumber.js/LICENCE new file mode 100644 index 0000000..a5d1b40 --- /dev/null +++ b/node_modules/mysql/node_modules/bignumber.js/LICENCE @@ -0,0 +1,23 @@ +The MIT Expat Licence. + +Copyright (c) 2012 Michael Mclaughlin + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +'Software'), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + diff --git a/node_modules/mysql/node_modules/bignumber.js/README.md b/node_modules/mysql/node_modules/bignumber.js/README.md new file mode 100644 index 0000000..59ca3df --- /dev/null +++ b/node_modules/mysql/node_modules/bignumber.js/README.md @@ -0,0 +1,222 @@ + +# bignumber.js # + +A Javascript library for arbitrary-precision decimal and non-decimal arithmetic. + +## Features + + - Faster, smaller, and perhaps easier to use than Javascript versions of Java's BigDecimal + - 5 KB minified and gzipped + - Simple API but full-featured + - Works with numbers with or without fraction digits in bases from 2 to 36 inclusive + - Replicates the `toExponential`, `toFixed`, `toPrecision` and `toString` methods of Javascript's Number type + - Includes a `toFraction` and a `squareRoot` method + - Stores values in an accessible decimal floating point format + - No dependencies + - Comprehensive documentation and test set + +If an even smaller and simpler library is required see [big.js](https://github.com/MikeMcl/big.js/). +It's half the size but only works with decimal numbers and only has half the methods. +It also does not allow `NaN` or `Infinity`, or have the configuration options of this library. + +## Load + +The library is the single Javascript file *bignumber.js* +(or *bignumber.min.js*, which is *bignumber.js* minified using uglify-js). + +It can be loaded via a script tag in an HTML document for the browser + + + +or as a CommonJS, [Node.js](http://nodejs.org) or AMD module using `require`. + +For Node, put the *bignumber.js* file into the same directory as the file that is requiring it and use + + var BigNumber = require('./bignumber'); + +or put it in a *node_modules* directory within the directory and use `require('bignumber')`. + +The library is also available from the [npm](https://npmjs.org/) registry, so + + $ npm install bignumber.js + +will install this entire directory in a *node_modules* directory within the current directory. +It can then be loaded with `require('bignumber.js')`. + +To load with AMD loader libraries such as [requireJS](http://requirejs.org/): + + require(['bignumber'], function(BigNumber) { + // Use BigNumber here in local scope. No global BigNumber. + }); + +## Use + +*In all examples below, `var`, semicolons and `toString` calls are not shown. +If a commented-out value is in quotes it means `toString` has been called on the preceding expression.* + +The library exports a single function: BigNumber, the constructor of BigNumber instances. +It accepts a value of type Number, String or BigNumber Object, + + x = new BigNumber(123.4567) + y = BigNumber('123456.7e-3') // 'new' is optional + z = new BigNumber(x) + x.equals(y) && y.equals(z) && x.equals(z) // true + +and a base from 2 to 36 inclusive can be specified. + + x = new BigNumber(1011, 2) // "11" + y = new BigNumber('zz.9', 36) // "1295.25" + z = x.plus(y) // "1306.25" + +A BigNumber is immutable in the sense that it is not changed by its methods. + + 0.3 - 0.1 // 0.19999999999999998 + x = new BigNumber(0.3) + x.minus(0.1) // "0.2" + x // "0.3" + +The methods that return a BigNumber can be chained. + + x.dividedBy(y).plus(z).times(9).floor() + x.times('1.23456780123456789e+9').plus(9876.5432321).dividedBy('4444562598.111772').ceil() + +Method names over 5 letters in length have a shorter alias. + + x.squareRoot().dividedBy(y).toPower(3).equals(x.sqrt().div(y).pow(3)) // true + x.cmp(y.mod(z).neg()) == 1 && x.comparedTo(y.modulo(z).negated()) == 1 // true + +Like Javascript's Number type, there are `toExponential`, `toFixed` and `toPrecision` methods + + x = new BigNumber(255.5) + x.toExponential(5) // "2.55500e+2" + x.toFixed(5) // "255.50000" + x.toPrecision(5) // "255.50" + + and a base can be specified for `toString`. + + x.toString(16) // "ff.8" + +The maximum number of decimal places and the rounding mode for division, square root, base conversion, and negative power operations is set by a configuration object passed to the `config` method of the `BigNumber` constructor. +The other arithmetic operations always give the exact result. + + BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 4 }) + // Alternatively, BigNumber.config( 10, 4 ); + + x = new BigNumber(2); + y = new BigNumber(3); + z = x.div(y) // "0.6666666667" + z.sqrt() // "0.8164965809" + z.pow(-3) // "3.3749999995" + z.toString(2) // "0.1010101011" + z.times(z) // "0.44444444448888888889" + z.times(z).round(10) // "0.4444444445" + +There is a `toFraction` method with an optional *maximum denominator* argument + + y = new BigNumber(355) + pi = y.dividedBy(113) // "3.1415929204" + pi.toFraction() // [ "7853982301", "2500000000" ] + pi.toFraction(1000) // [ "355", "113" ] + +and `isNaN` and `isFinite` methods, as `NaN` and `Infinity` are valid `BigNumber` values. + + x = new BigNumber(NaN) // "NaN" + y = new BigNumber(Infinity) // "Infinity" + x.isNaN() && !y.isNaN() && !x.isFinite() && !y.isFinite() // true + +The value of a BigNumber is stored in a decimal floating point format in terms of a coefficient, exponent and sign. + + x = new BigNumber(-123.456); + x.c // "1,2,3,4,5,6" coefficient (i.e. significand) + x.e // 2 exponent + x.s // -1 sign + +For futher information see the API reference in the *doc* folder. + +## Test + +The *test* directory contains the test scripts for each method. + +The tests can be run with Node or a browser. + +For a quick test of all the methods, from a command-line shell at the *test/* directory + + $ node quick-test + +To test a single method in more depth, e.g. + + $ node toFraction + +To test all the methods in more depth + + $ node every-test + +For the browser, see *quick-test.html*, *single-test.html* and *every-test.html* in the *test/browser* directory. + +*bignumber-vs-number.html* enables some of the methods of bignumber.js to be compared with those of Javascript's Number type. + +## Performance + +The *perf* directory contains two applications and a *lib* directory containing the BigDecimal libraries used by both. + +*bignumber-vs-bigdecimal.html* tests the performance of bignumber.js against the Javascript translations of two versions of BigDecimal, its use should be more or less self-explanatory. +(The GWT version doesn't work in IE 6.) + +* GWT: java.math.BigDecimal + +* ICU4J: com.ibm.icu.math.BigDecimal + + +The BigDecimal in Node's npm registry is the GWT version. Despite its seeming popularity I have found it to have some serious bugs, see the Node script *perf/lib/bigdecimal_GWT/bugs.js* for examples of flaws in its *remainder*, *divide* and *compareTo* methods. + +*bigtime.js* is a Node command-line application which tests the performance of bignumber.js against the GWT version of BigDecimal from the npm registry. + +For example, to compare the time taken by the bignumber.js `plus` method and the BigDecimal `add` method: + + $ node bigtime plus 10000 40 + +This will time 10000 calls to each, using operands of up to 40 random digits and will check that the results match. + +For help: + + $ node bigtime -h + +See the README in the directory for more information. + +## Build + +I.e. minify. + +For Node, if uglify-js is installed globally ( `npm install uglify-js -g` ) then + + uglifyjs -o ./bignumber.min.js ./bignumber.js + +will create *bignumber.min.js*. + +## Feedback + +Bugs: surely not! Open an issue, please. +Other feedback to: + +Michael Mclaughlin +M8ch88l@gmail.com + +Bitcoin donation to: +**1KdnpLRSkWJs4FXPzj7pQ39H4Ur6Urydti** +Thank you + +## Licence + +See LICENCE. + +## Change Log + +####1.0.1 +* Bugfix: error messages with incorrect method name +* Corrected a couple of spelling mistakes in comments +* Very minor regex tweaks + +####1.0.0 +* 8/11/2012 Initial release + +[![githalytics.com alpha](https://cruel-carlota.pagodabox.com/50b85fd919b406ef9312551092a95fb7 "githalytics.com")](http://githalytics.com/MikeMcl/bignumber.js) diff --git a/node_modules/mysql/node_modules/bignumber.js/bignumber.js b/node_modules/mysql/node_modules/bignumber.js/bignumber.js new file mode 100644 index 0000000..c79e611 --- /dev/null +++ b/node_modules/mysql/node_modules/bignumber.js/bignumber.js @@ -0,0 +1,1909 @@ +/* bignumber.js v1.0.1 https://github.com/MikeMcl/bignumber.js/LICENCE */ +;(function ( global ) { + 'use strict'; + + /* + bignumber.js v1.0.1 + A Javascript library for arbitrary-precision arithmetic. + https://github.com/MikeMcl/bignumber.js + Copyright (c) 2012 Michael Mclaughlin + MIT Expat Licence + */ + + /*********************************** DEFAULTS ************************************/ + + /* + * The default values below must be integers within the stated ranges (inclusive). + * Most of these values can be changed programmatically using BigNumber.config(). + */ + + /* + * The limit on the value of DECIMAL_PLACES, TO_EXP_NEG, TO_EXP_POS, MIN_EXP, + * MAX_EXP, and the argument to toFixed, toPrecision and toExponential, beyond + * which an exception is thrown (if ERRORS is true). + */ + var MAX = 1E9, // 0 to 1e+9 + + // Limit of magnitude of exponent argument to toPower. + MAX_POWER = 1E6, // 1 to 1e+6 + + // The maximum number of decimal places for operations involving division. + DECIMAL_PLACES = 20, // 0 to MAX + + /* + * The rounding mode used when rounding to the above decimal places, and when + * using toFixed, toPrecision and toExponential, and round (default value). + * UP 0 Away from zero. + * DOWN 1 Towards zero. + * CEIL 2 Towards +Infinity. + * FLOOR 3 Towards -Infinity. + * HALF_UP 4 Towards nearest neighbour. If equidistant, up. + * HALF_DOWN 5 Towards nearest neighbour. If equidistant, down. + * HALF_EVEN 6 Towards nearest neighbour. If equidistant, towards even neighbour. + * HALF_CEIL 7 Towards nearest neighbour. If equidistant, towards +Infinity. + * HALF_FLOOR 8 Towards nearest neighbour. If equidistant, towards -Infinity. + */ + ROUNDING_MODE = 4, // 0 to 8 + + // EXPONENTIAL_AT : [TO_EXP_NEG , TO_EXP_POS] + + // The exponent value at and beneath which toString returns exponential notation. + // Number type: -7 + TO_EXP_NEG = -7, // 0 to -MAX + + // The exponent value at and above which toString returns exponential notation. + // Number type: 21 + TO_EXP_POS = 21, // 0 to MAX + + // RANGE : [MIN_EXP, MAX_EXP] + + // The minimum exponent value, beneath which underflow to zero occurs. + // Number type: -324 (5e-324) + MIN_EXP = -MAX, // -1 to -MAX + + // The maximum exponent value, above which overflow to Infinity occurs. + // Number type: 308 (1.7976931348623157e+308) + MAX_EXP = MAX, // 1 to MAX + + // Whether BigNumber Errors are ever thrown. + // CHANGE parseInt to parseFloat if changing ERRORS to false. + ERRORS = true, // true or false + parse = parseInt, // parseInt or parseFloat + + /***********************************************************************************/ + + P = BigNumber.prototype, + DIGITS = '0123456789abcdefghijklmnopqrstuvwxyz', + outOfRange, + id = 0, + isValid = /^-?\d+(?:\.\d+)?(?:e[+-]?\d+)?$/i, + trim = String.prototype.trim || function () {return this.replace(/^\s+|\s+$/g, '')}, + ONE = BigNumber(1); + + + // CONSTRUCTOR + + + /* + * The exported function. + * Create and return a new instance of a BigNumber object. + * + * n {number|string|BigNumber} A numeric value. + * [b] {number} The base of n. Integer, 2 to 36 inclusive. + */ + function BigNumber( n, b ) { + var isNum, i, j, + x = this; + + // Enable constructor usage without new. + if ( !(x instanceof BigNumber) ) { + return new BigNumber( n, b ) + } + + // Duplicate. + if ( n instanceof BigNumber ) { + id = 0; + + // i is undefined. + if ( b !== i) { + n = n['toS']() + } else { + x['s'] = n['s']; + x['e'] = n['e']; + x['c'] = ( n = n['c'] ) ? n.slice() : n; + return + } + } + + // Check if number and if minus zero. Convert to string. + if ( typeof n != 'string' ) { + n = ( isNum = Object.prototype.toString.call(n) == '[object Number]' ) && + n === 0 && 1 / n < 0 ? '-0' : n + '' + } + + if ( b === i && isValid.test(n) ) { + + // Determine sign. + x['s'] = n.charAt(0) == '-' ? ( n = n.slice(1), -1 ) : 1 + + // Either n is not a valid BigNumber or a base has been specified. + } else { + + // Enable exponential notation to be used with base 10 argument. + // Ensure return value is rounded to DECIMAL_PLACES as with other bases. + if ( b == 10 ) { + return new BigNumber(n)['div'](ONE) + } + + /* + * Follow Javascript numbers in allowing numbers with fraction digits + * to omit a leading zero and allowing a leading plus sign e.g. '+.5' for '0.5'. + */ + n = trim.call(n).replace( /^\+(?!-)/, '' ).replace( /^(-?)\./, '$10.' ); + + x['s'] = n.charAt(0) == '-' ? ( n = n.replace( /^-(?!-)/, '' ), -1 ) : 1; + + if ( b != null ) { + + if ( ( b == (b | 0) || !ERRORS ) && + !( outOfRange = !( b >= 2 && b <= 36 ) ) ) { + + i = '[' + DIGITS.slice( 0, b = b | 0 ) + ']+'; + + // Test non-decimal number validity. + // Any number in exponential form will fail due to the e+/-. + if ( j = new RegExp( '^' + i + '(?:\\.' + i + ')?$', 'i' ).test(n) ) { + + if ( isNum ) { + if ( n.replace('.', '').length > 15 ) { + + // 'new BigNumber() number type has more than 15 significant digits: {n}' + ifExceptionsThrow( n, 0 ) + } + + // Prevent later check for length on converted number. + isNum = !isNum + } + n = convert( n, 10, b, x['s'] ) + } else if ( n != 'Infinity' && n != 'NaN' ) { + + // 'new BigNumber() not a base {b} number: {n}' + ifExceptionsThrow( n, 1, b ); + n = 'NaN' + } + } else { + + // 'new BigNumber() base not an integer: {b}' + // 'new BigNumber() base out of range: {b}' + ifExceptionsThrow( b, 2 ); + + // Ignore base. + j = isValid.test(n) + } + } else { + j = isValid.test(n) + } + + if ( !j ) { + + // Infinity/NaN + x['c'] = x['e'] = null; + + // NaN + if ( n != 'Infinity' ) { + + // No exception on NaN. + if ( n != 'NaN' ) { + + // 'new BigNumber() not a number: {n}' + ifExceptionsThrow( n, 3 ) + } + x['s'] = null + } + id = 0; + + return + } + } + + // Decimal point? + if ( ( i = n.indexOf('.') ) > -1 ) { + n = n.replace( '.', '' ) + } + + // Exponential form? + if ( ( j = n.search(/e/i) ) > 0 ) { + + // Determine exponent. + if ( i < 0 ) { + i = j + } + i += +n.slice( j + 1 ); + n = n.substring( 0, j ) + + } else if ( i < 0 ) { + + // Integer. + i = n.length + } + + // Disallow numbers over 15 digits if number type. + if ( b = n.length, isNum && b > 15 ) { + + // 'new BigNumber() number type has more than 15 significant digits: {n}' + ifExceptionsThrow( n, 0 ) + } + + // Determine leading zeros. + for ( id = j = 0; n.charAt(j) == '0'; j++ ) { + } + + // Overflow? + if ( ( i -= j + 1 ) > MAX_EXP ) { + + // Infinity. + x['c'] = x['e'] = null + + // Zero or underflow? + } else if ( j == b || i < MIN_EXP ) { + + // Zero. + x['c'] = [ x['e'] = 0 ] + } else { + + // Determine trailing zeros. + for ( ; n.charAt(--b) == '0'; ) { + } + + x['e'] = i; + x['c'] = []; + + // Convert string to array of digits (without leading and trailing zeros). + for ( i = 0; j <= b; x['c'][i++] = +n.charAt(j++) ) { + } + } + } + + + // CONSTRUCTOR PROPERTIES/METHODS + + + BigNumber['ROUND_UP'] = 0; + BigNumber['ROUND_DOWN'] = 1; + BigNumber['ROUND_CEIL'] = 2; + BigNumber['ROUND_FLOOR'] = 3; + BigNumber['ROUND_HALF_UP'] = 4; + BigNumber['ROUND_HALF_DOWN'] = 5; + BigNumber['ROUND_HALF_EVEN'] = 6; + BigNumber['ROUND_HALF_CEIL'] = 7; + BigNumber['ROUND_HALF_FLOOR'] = 8; + + + /* + * Configure infrequently-changing library-wide settings. + * + * Accept an object or an argument list, with one or many of the following + * properties or parameters respectively: + * [ DECIMAL_PLACES [, ROUNDING_MODE [, EXPONENTIAL_AT [, RANGE [, ERRORS ]]]]] + * + * E.g. + * BigNumber.config(20, 4) is equivalent to + * BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 4 }) + * Ignore properties/parameters set to null or undefined. + * + * Return an object with the properties current values. + */ + BigNumber['config'] = function () { + var v, p, + i = 0, + r = {}, + a = arguments, + o = a[0], + c = 'config', + inRange = function ( n, lo, hi ) { + return !( ( outOfRange = n < lo || n > hi ) || + parse(n) != n && n !== 0 ) + }, + has = o && typeof o == 'object' + ? function () {if ( o.hasOwnProperty(p) ) return ( v = o[p] ) != null} + : function () {if ( a.length > i ) return ( v = a[i++] ) != null}; + + // [DECIMAL_PLACES] {number} Integer, 0 to MAX inclusive. + if ( has( p = 'DECIMAL_PLACES' ) ) { + + if ( inRange( v, 0, MAX ) ) { + DECIMAL_PLACES = v | 0 + } else { + + // 'config() DECIMAL_PLACES not an integer: {v}' + // 'config() DECIMAL_PLACES out of range: {v}' + ifExceptionsThrow( v, p, c ) + } + } + r[p] = DECIMAL_PLACES; + + // [ROUNDING_MODE] {number} Integer, 0 to 8 inclusive. + if ( has( p = 'ROUNDING_MODE' ) ) { + + if ( inRange( v, 0, 8 ) ) { + ROUNDING_MODE = v | 0 + } else { + + // 'config() ROUNDING_MODE not an integer: {v}' + // 'config() ROUNDING_MODE out of range: {v}' + ifExceptionsThrow( v, p, c ) + } + } + r[p] = ROUNDING_MODE; + + /* + * [EXPONENTIAL_AT] {number|number[]} Integer, -MAX to MAX inclusive or + * [ integer -MAX to 0 inclusive, 0 to MAX inclusive ]. + */ + if ( has( p = 'EXPONENTIAL_AT' ) ) { + + if ( inRange( v, -MAX, MAX ) ) { + TO_EXP_NEG = -( TO_EXP_POS = ~~( v < 0 ? -v : +v ) ) + } else if ( !outOfRange && v && inRange( v[0], -MAX, 0 ) && + inRange( v[1], 0, MAX ) ) { + TO_EXP_NEG = ~~v[0], TO_EXP_POS = ~~v[1] + } else { + + // 'config() EXPONENTIAL_AT not an integer or not [integer, integer]: {v}' + // 'config() EXPONENTIAL_AT out of range or not [negative, positive: {v}' + ifExceptionsThrow( v, p, c, 1 ) + } + } + r[p] = [ TO_EXP_NEG, TO_EXP_POS ]; + + /* + * [RANGE][ {number|number[]} Non-zero integer, -MAX to MAX inclusive or + * [ integer -MAX to -1 inclusive, integer 1 to MAX inclusive ]. + */ + if ( has( p = 'RANGE' ) ) { + + if ( inRange( v, -MAX, MAX ) && ~~v ) { + MIN_EXP = -( MAX_EXP = ~~( v < 0 ? -v : +v ) ) + } else if ( !outOfRange && v && inRange( v[0], -MAX, -1 ) && + inRange( v[1], 1, MAX ) ) { + MIN_EXP = ~~v[0], MAX_EXP = ~~v[1] + } else { + + // 'config() RANGE not a non-zero integer or not [integer, integer]: {v}' + // 'config() RANGE out of range or not [negative, positive: {v}' + ifExceptionsThrow( v, p, c, 1, 1 ) + } + } + r[p] = [ MIN_EXP, MAX_EXP ]; + + // [ERRORS] {boolean|number} true, false, 1 or 0. + if ( has( p = 'ERRORS' ) ) { + + if ( v === !!v || v === 1 || v === 0 ) { + parse = ( outOfRange = id = 0, ERRORS = !!v ) + ? parseInt + : parseFloat + } else { + + // 'config() ERRORS not a boolean or binary digit: {v}' + ifExceptionsThrow( v, p, c, 0, 0, 1 ) + } + } + r[p] = ERRORS; + + return r + }; + + + // PRIVATE FUNCTIONS + + + // Assemble error messages. Throw BigNumber Errors. + function ifExceptionsThrow( arg, i, j, isArray, isRange, isErrors) { + if ( ERRORS ) { + var method = ['new BigNumber', 'cmp', 'div', 'eq', 'gt', 'gte', 'lt', + 'lte', 'minus', 'mod', 'plus', 'times', 'toFr' + ][ id ? id < 0 ? -id : id : 1 / id < 0 ? 1 : 0 ] + '()', + error = outOfRange ? ' out of range' : ' not a' + + ( isRange ? ' non-zero' : 'n' ) + ' integer'; + + error = ( [ + method + ' number type has more than 15 significant digits', + method + ' not a base ' + j + ' number', + method + ' base' + error, + method + ' not a number' ][i] || + j + '() ' + i + ( isErrors + ? ' not a boolean or binary digit' + : error + ( isArray + ? ' or not [' + ( outOfRange + ? ' negative, positive' + : ' integer, integer' ) + ' ]' + : '' ) ) ) + ': ' + arg; + + outOfRange = id = 0; + throw { + name : 'BigNumber Error', + message : error, + toString : function () {return this.name + ': ' + this.message} + } + } + } + + + /* + * Convert a numeric string of baseIn to a numeric string of baseOut. + */ + function convert( nStr, baseOut, baseIn, sign ) { + var e, dvs, dvd, nArr, fracArr, fracBN; + + // Convert string of base bIn to an array of numbers of baseOut. + // Eg. strToArr('255', 10) where baseOut is 16, returns [15, 15]. + // Eg. strToArr('ff', 16) where baseOut is 10, returns [2, 5, 5]. + function strToArr( str, bIn ) { + var j, + i = 0, + strL = str.length, + arrL, + arr = [0]; + + for ( bIn = bIn || baseIn; i < strL; i++ ) { + + for ( arrL = arr.length, j = 0; j < arrL; arr[j] *= bIn, j++ ) { + } + + for ( arr[0] += DIGITS.indexOf( str.charAt(i) ), j = 0; + j < arr.length; + j++ ) { + + if ( arr[j] > baseOut - 1 ) { + + if ( arr[j + 1] == null ) { + arr[j + 1] = 0 + } + arr[j + 1] += arr[j] / baseOut ^ 0; + arr[j] %= baseOut + } + } + } + + return arr.reverse() + } + + // Convert array to string. + // E.g. arrToStr( [9, 10, 11] ) becomes '9ab' (in bases above 11). + function arrToStr( arr ) { + var i = 0, + arrL = arr.length, + str = ''; + + for ( ; i < arrL; str += DIGITS.charAt( arr[i++] ) ) { + } + + return str + } + + nStr = nStr.toLowerCase(); + + /* + * If non-integer convert integer part and fraction part separately. + * Convert the fraction part as if it is an integer than use division to + * reduce it down again to a value less than one. + */ + if ( ( e = nStr.indexOf( '.' ) ) > -1 ) { + + /* + * Calculate the power to which to raise the base to get the number + * to divide the fraction part by after it has been converted as an + * integer to the required base. + */ + e = nStr.length - e - 1; + + // Use toFixed to avoid possible exponential notation. + dvs = strToArr( new BigNumber(baseIn)['pow'](e)['toF'](), 10 ); + + nArr = nStr.split('.'); + + // Convert the base of the fraction part (as integer). + dvd = strToArr( nArr[1] ); + + // Convert the base of the integer part. + nArr = strToArr( nArr[0] ); + + // Result will be a BigNumber with a value less than 1. + fracBN = divide( dvd, dvs, dvd.length - dvs.length, sign, baseOut, + + // Is least significant digit of integer part an odd number? + nArr[nArr.length - 1] & 1 ); + + fracArr = fracBN['c']; + + // e can be <= 0 ( if e == 0, fracArr is [0] or [1] ). + if ( e = fracBN['e'] ) { + + // Append zeros according to the exponent of the result. + for ( ; ++e; fracArr.unshift(0) ) { + } + + // Append the fraction part to the converted integer part. + nStr = arrToStr(nArr) + '.' + arrToStr(fracArr) + + // fracArr is [1]. + // Fraction digits rounded up, so increment last digit of integer part. + } else if ( fracArr[0] ) { + + if ( nArr[ e = nArr.length - 1 ] < baseOut - 1 ) { + ++nArr[e]; + nStr = arrToStr(nArr) + } else { + nStr = new BigNumber( arrToStr(nArr), + baseOut )['plus'](ONE)['toS'](baseOut) + } + + // fracArr is [0]. No fraction digits. + } else { + nStr = arrToStr(nArr) + } + } else { + + // Simple integer. Convert base. + nStr = arrToStr( strToArr(nStr) ) + } + + return nStr + } + + + // Perform division in the specified base. Called by div and convert. + function divide( dvd, dvs, exp, s, base, isOdd ) { + var dvsL, dvsT, next, cmp, remI, + dvsZ = dvs.slice(), + dvdI = dvsL = dvs.length, + dvdL = dvd.length, + rem = dvd.slice( 0, dvsL ), + remL = rem.length, + quo = new BigNumber(ONE), + qc = quo['c'] = [], + qi = 0, + dig = DECIMAL_PLACES + ( quo['e'] = exp ) + 1; + + quo['s'] = s; + s = dig < 0 ? 0 : dig; + + // Add zeros to make remainder as long as divisor. + for ( ; remL++ < dvsL; rem.push(0) ) { + } + + // Create version of divisor with leading zero. + dvsZ.unshift(0); + + do { + + // 'next' is how many times the divisor goes into the current remainder. + for ( next = 0; next < base; next++ ) { + + // Compare divisor and remainder. + if ( dvsL != ( remL = rem.length ) ) { + cmp = dvsL > remL ? 1 : -1 + } else { + for ( remI = -1, cmp = 0; ++remI < dvsL; ) { + + if ( dvs[remI] != rem[remI] ) { + cmp = dvs[remI] > rem[remI] ? 1 : -1; + break + } + } + } + + // Subtract divisor from remainder (if divisor < remainder). + if ( cmp < 0 ) { + + // Remainder cannot be more than one digit longer than divisor. + // Equalise lengths using divisor with extra leading zero? + for ( dvsT = remL == dvsL ? dvs : dvsZ; remL; ) { + + if ( rem[--remL] < dvsT[remL] ) { + + for ( remI = remL; + remI && !rem[--remI]; + rem[remI] = base - 1 ) { + } + --rem[remI]; + rem[remL] += base + } + rem[remL] -= dvsT[remL] + } + for ( ; !rem[0]; rem.shift() ) { + } + } else { + break + } + } + + // Add the 'next' digit to the result array. + qc[qi++] = cmp ? next : ++next; + + // Update the remainder. + rem[0] && cmp + ? ( rem[remL] = dvd[dvdI] || 0 ) + : ( rem = [ dvd[dvdI] ] ) + + } while ( ( dvdI++ < dvdL || rem[0] != null ) && s-- ); + + // Leading zero? Do not remove if result is simply zero (qi == 1). + if ( !qc[0] && qi != 1) { + + // There can't be more than one zero. + --quo['e']; + qc.shift() + } + + // Round? + if ( qi > dig ) { + rnd( quo, DECIMAL_PLACES, base, isOdd, rem[0] != null ) + } + + // Overflow? + if ( quo['e'] > MAX_EXP ) { + + // Infinity. + quo['c'] = quo['e'] = null + + // Underflow? + } else if ( quo['e'] < MIN_EXP ) { + + // Zero. + quo['c'] = [quo['e'] = 0] + } + + return quo + } + + + /* + * Return a string representing the value of BigNumber n in normal or + * exponential notation rounded to the specified decimal places or + * significant digits. + * Called by toString, toExponential (exp 1), toFixed, and toPrecision (exp 2). + * d is the index (with the value in normal notation) of the digit that may be + * rounded up. + */ + function format( n, d, exp ) { + + // Initially, i is the number of decimal places required. + var i = d - (n = new BigNumber(n))['e'], + c = n['c']; + + // +-Infinity or NaN? + if ( !c ) { + return n['toS']() + } + + // Round? + if ( c.length > ++d ) { + rnd( n, i, 10 ) + } + + // Recalculate d if toFixed as n['e'] may have changed if value rounded up. + i = c[0] == 0 ? i + 1 : exp ? d : n['e'] + i + 1; + + // Append zeros? + for ( ; c.length < i; c.push(0) ) { + } + i = n['e']; + + /* + * toPrecision returns exponential notation if the number of significant + * digits specified is less than the number of digits necessary to + * represent the integer part of the value in normal notation. + */ + return exp == 1 || exp == 2 && ( --d < i || i <= TO_EXP_NEG ) + + // Exponential notation. + ? ( n['s'] < 0 && c[0] ? '-' : '' ) + ( c.length > 1 + ? ( c.splice( 1, 0, '.' ), c.join('') ) + : c[0] ) + ( i < 0 ? 'e' : 'e+' ) + i + + // Normal notation. + : n['toS']() + } + + + // Round if necessary. + // Called by divide, format, setMode and sqrt. + function rnd( x, dp, base, isOdd, r) { + var xc = x['c'], + isNeg = x['s'] < 0, + half = base / 2, + i = x['e'] + dp + 1, + + // 'next' is the digit after the digit that may be rounded up. + next = xc[i], + + /* + * 'more' is whether there are digits after 'next'. + * E.g. + * 0.005 (e = -3) to be rounded to 0 decimal places (dp = 0) gives i = -2 + * The 'next' digit is zero, and there ARE 'more' digits after it. + * 0.5 (e = -1) dp = 0 gives i = 0 + * The 'next' digit is 5 and there are no 'more' digits after it. + */ + more = r || i < 0 || xc[i + 1] != null; + + r = ROUNDING_MODE < 4 + ? ( next != null || more ) && + ( ROUNDING_MODE == 0 || + ROUNDING_MODE == 2 && !isNeg || + ROUNDING_MODE == 3 && isNeg ) + : next > half || next == half && + ( ROUNDING_MODE == 4 || more || + + /* + * isOdd is used in base conversion and refers to the least significant + * digit of the integer part of the value to be converted. The fraction + * part is rounded by this method separately from the integer part. + */ + ROUNDING_MODE == 6 && ( xc[i - 1] & 1 || !dp && isOdd ) || + ROUNDING_MODE == 7 && !isNeg || + ROUNDING_MODE == 8 && isNeg ); + + if ( i < 1 || !xc[0] ) { + xc.length = 0; + xc.push(0); + + if ( r ) { + + // 1, 0.1, 0.01, 0.001, 0.0001 etc. + xc[0] = 1; + x['e'] = -dp + } else { + + // Zero. + x['e'] = 0 + } + + return x + } + + // Remove any digits after the required decimal places. + xc.length = i--; + + // Round up? + if ( r ) { + + // Rounding up may mean the previous digit has to be rounded up and so on. + for ( --base; ++xc[i] > base; ) { + xc[i] = 0; + + if ( !i-- ) { + ++x['e']; + xc.unshift(1) + } + } + } + + // Remove trailing zeros. + for ( i = xc.length; !xc[--i]; xc.pop() ) { + } + + return x + } + + + // Round after setting the appropriate rounding mode. + // Handles ceil, floor and round. + function setMode( x, dp, rm ) { + var r = ROUNDING_MODE; + + ROUNDING_MODE = rm; + x = new BigNumber(x); + x['c'] && rnd( x, dp, 10 ); + ROUNDING_MODE = r; + + return x + } + + + // PROTOTYPE/INSTANCE METHODS + + + /* + * Return a new BigNumber whose value is the absolute value of this BigNumber. + */ + P['abs'] = P['absoluteValue'] = function () { + var x = new BigNumber(this); + + if ( x['s'] < 0 ) { + x['s'] = 1 + } + + return x + }; + + + /* + * Return a new BigNumber whose value is the value of this BigNumber + * rounded to a whole number in the direction of Infinity. + */ + P['ceil'] = function () { + return setMode( this, 0, 2 ) + }; + + + /* + * Return + * 1 if the value of this BigNumber is greater than the value of BigNumber(y, b), + * -1 if the value of this BigNumber is less than the value of BigNumber(y, b), + * 0 if they have the same value, + * or null if the value of either is NaN. + */ + P['comparedTo'] = P['cmp'] = function ( y, b ) { + var a, + x = this, + xc = x['c'], + yc = ( id = -id, y = new BigNumber( y, b ) )['c'], + i = x['s'], + j = y['s'], + k = x['e'], + l = y['e']; + + // Either NaN? + if ( !i || !j ) { + return null + } + + a = xc && !xc[0], b = yc && !yc[0]; + + // Either zero? + if ( a || b ) { + return a ? b ? 0 : -j : i + } + + // Signs differ? + if ( i != j ) { + return i + } + + // Either Infinity? + if ( a = i < 0, b = k == l, !xc || !yc ) { + return b ? 0 : !xc ^ a ? 1 : -1 + } + + // Compare exponents. + if ( !b ) { + return k > l ^ a ? 1 : -1 + } + + // Compare digit by digit. + for ( i = -1, + j = ( k = xc.length ) < ( l = yc.length ) ? k : l; + ++i < j; ) { + + if ( xc[i] != yc[i] ) { + return xc[i] > yc[i] ^ a ? 1 : -1 + } + } + // Compare lengths. + return k == l ? 0 : k > l ^ a ? 1 : -1 + }; + + + /* + * n / 0 = I + * n / N = N + * n / I = 0 + * 0 / n = 0 + * 0 / 0 = N + * 0 / N = N + * 0 / I = 0 + * N / n = N + * N / 0 = N + * N / N = N + * N / I = N + * I / n = I + * I / 0 = I + * I / N = N + * I / I = N + * + * Return a new BigNumber whose value is the value of this BigNumber + * divided by the value of BigNumber(y, b), rounded according to + * DECIMAL_PLACES and ROUNDING_MODE. + */ + P['dividedBy'] = P['div'] = function ( y, b ) { + var xc = this['c'], + xe = this['e'], + xs = this['s'], + yc = ( id = 2, y = new BigNumber( y, b ) )['c'], + ye = y['e'], + ys = y['s'], + s = xs == ys ? 1 : -1; + + // Either NaN/Infinity/0? + return !xe && ( !xc || !xc[0] ) || !ye && ( !yc || !yc[0] ) + + // Either NaN? + ? new BigNumber( !xs || !ys || + + // Both 0 or both Infinity? + ( xc ? yc && xc[0] == yc[0] : !yc ) + + // Return NaN. + ? NaN + + // x is 0 or y is Infinity? + : xc && xc[0] == 0 || !yc + + // Return +-0. + ? s * 0 + + // y is 0. Return +-Infinity. + : s / 0 ) + + : divide( xc, yc, xe - ye, s, 10 ) + }; + + + /* + * Return true if the value of this BigNumber is equal to the value of + * BigNumber(n, b), otherwise returns false. + */ + P['equals'] = P['eq'] = function ( n, b ) { + id = 3; + return this['cmp']( n, b ) === 0 + }; + + + /* + * Return a new BigNumber whose value is the value of this BigNumber + * rounded to a whole number in the direction of -Infinity. + */ + P['floor'] = function () { + return setMode( this, 0, 3 ) + }; + + + /* + * Return true if the value of this BigNumber is greater than the value of + * BigNumber(n, b), otherwise returns false. + */ + P['greaterThan'] = P['gt'] = function ( n, b ) { + id = 4; + return this['cmp']( n, b ) > 0 + }; + + + /* + * Return true if the value of this BigNumber is greater than or equal to + * the value of BigNumber(n, b), otherwise returns false. + */ + P['greaterThanOrEqualTo'] = P['gte'] = function ( n, b ) { + id = 5; + return ( b = this['cmp']( n, b ) ) == 1 || b === 0 + }; + + + /* + * Return true if the value of this BigNumber is a finite number, otherwise + * returns false. + */ + P['isFinite'] = P['isF'] = function () { + return !!this['c'] + }; + + + /* + * Return true if the value of this BigNumber is NaN, otherwise returns + * false. + */ + P['isNaN'] = function () { + return !this['s'] + }; + + + /* + * Return true if the value of this BigNumber is negative, otherwise + * returns false. + */ + P['isNegative'] = P['isNeg'] = function () { + return this['s'] < 0 + }; + + + /* + * Return true if the value of this BigNumber is 0 or -0, otherwise returns + * false. + */ + P['isZero'] = P['isZ'] = function () { + return !!this['c'] && this['c'][0] == 0 + }; + + + /* + * Return true if the value of this BigNumber is less than the value of + * BigNumber(n, b), otherwise returns false. + */ + P['lessThan'] = P['lt'] = function ( n, b ) { + id = 6; + return this['cmp']( n, b ) < 0 + }; + + + /* + * Return true if the value of this BigNumber is less than or equal to the + * value of BigNumber(n, b), otherwise returns false. + */ + P['lessThanOrEqualTo'] = P['lte'] = function ( n, b ) { + id = 7; + return ( b = this['cmp']( n, b ) ) == -1 || b === 0 + }; + + + /* + * n - 0 = n + * n - N = N + * n - I = -I + * 0 - n = -n + * 0 - 0 = 0 + * 0 - N = N + * 0 - I = -I + * N - n = N + * N - 0 = N + * N - N = N + * N - I = N + * I - n = I + * I - 0 = I + * I - N = N + * I - I = N + * + * Return a new BigNumber whose value is the value of this BigNumber minus + * the value of BigNumber(y, b). + */ + P['minus'] = function ( y, b ) { + var d, i, j, xLTy, + x = this, + a = x['s']; + + b = ( id = 8, y = new BigNumber( y, b ) )['s']; + + // Either NaN? + if ( !a || !b ) { + return new BigNumber(NaN) + } + + // Signs differ? + if ( a != b ) { + return y['s'] = -b, x['plus'](y) + } + + var xc = x['c'], + xe = x['e'], + yc = y['c'], + ye = y['e']; + + if ( !xe || !ye ) { + + // Either Infinity? + if ( !xc || !yc ) { + return xc ? ( y['s'] = -b, y ) : new BigNumber( yc ? x : NaN ) + } + + // Either zero? + if ( !xc[0] || !yc[0] ) { + + // y is non-zero? + return yc[0] + ? ( y['s'] = -b, y ) + + // x is non-zero? + : new BigNumber( xc[0] + ? x + + // Both are zero. + : 0 ) + } + } + + // Determine which is the bigger number. + // Prepend zeros to equalise exponents. + if ( xc = xc.slice(), a = xe - ye ) { + d = ( xLTy = a < 0 ) ? ( a = -a, xc ) : ( ye = xe, yc ); + + for ( d.reverse(), b = a; b--; d.push(0) ) { + } + d.reverse() + } else { + + // Exponents equal. Check digit by digit. + j = ( ( xLTy = xc.length < yc.length ) ? xc : yc ).length; + + for ( a = b = 0; b < j; b++ ) { + + if ( xc[b] != yc[b] ) { + xLTy = xc[b] < yc[b]; + break + } + } + } + + // x < y? Point xc to the array of the bigger number. + if ( xLTy ) { + d = xc, xc = yc, yc = d; + y['s'] = -y['s'] + } + + /* + * Append zeros to xc if shorter. No need to add zeros to yc if shorter + * as subtraction only needs to start at yc.length. + */ + if ( ( b = -( ( j = xc.length ) - yc.length ) ) > 0 ) { + + for ( ; b--; xc[j++] = 0 ) { + } + } + + // Subtract yc from xc. + for ( b = yc.length; b > a; ){ + + if ( xc[--b] < yc[b] ) { + + for ( i = b; i && !xc[--i]; xc[i] = 9 ) { + } + --xc[i]; + xc[b] += 10 + } + xc[b] -= yc[b] + } + + // Remove trailing zeros. + for ( ; xc[--j] == 0; xc.pop() ) { + } + + // Remove leading zeros and adjust exponent accordingly. + for ( ; xc[0] == 0; xc.shift(), --ye ) { + } + + /* + * No need to check for Infinity as +x - +y != Infinity && -x - -y != Infinity + * when neither x or y are Infinity. + */ + + // Underflow? + if ( ye < MIN_EXP || !xc[0] ) { + + // Result must be zero. + xc = [ye = 0] + } + + return y['c'] = xc, y['e'] = ye, y + }; + + + /* + * n % 0 = N + * n % N = N + * 0 % n = 0 + * -0 % n = -0 + * 0 % 0 = N + * 0 % N = N + * N % n = N + * N % 0 = N + * N % N = N + * + * Return a new BigNumber whose value is the value of this BigNumber modulo + * the value of BigNumber(y, b). + */ + P['modulo'] = P['mod'] = function ( y, b ) { + var x = this, + xc = x['c'], + yc = ( id = 9, y = new BigNumber( y, b ) )['c'], + i = x['s'], + j = y['s']; + + // Is x or y NaN, or y zero? + b = !i || !j || yc && !yc[0]; + + if ( b || xc && !xc[0] ) { + return new BigNumber( b ? NaN : x ) + } + + x['s'] = y['s'] = 1; + b = y['cmp'](x) == 1; + x['s'] = i, y['s'] = j; + + return b + ? new BigNumber(x) + : ( i = DECIMAL_PLACES, j = ROUNDING_MODE, + DECIMAL_PLACES = 0, ROUNDING_MODE = 1, + x = x['div'](y), + DECIMAL_PLACES = i, ROUNDING_MODE = j, + this['minus']( x['times'](y) ) ) + }; + + + /* + * Return a new BigNumber whose value is the value of this BigNumber + * negated, i.e. multiplied by -1. + */ + P['negated'] = P['neg'] = function () { + var x = new BigNumber(this); + + return x['s'] = -x['s'] || null, x + }; + + + /* + * n + 0 = n + * n + N = N + * n + I = I + * 0 + n = n + * 0 + 0 = 0 + * 0 + N = N + * 0 + I = I + * N + n = N + * N + 0 = N + * N + N = N + * N + I = N + * I + n = I + * I + 0 = I + * I + N = N + * I + I = I + * + * Return a new BigNumber whose value is the value of this BigNumber plus + * the value of BigNumber(y, b). + */ + P['plus'] = function ( y, b ) { + var d, + x = this, + a = x['s']; + + b = ( id = 10, y = new BigNumber( y, b ) )['s']; + + // Either NaN? + if ( !a || !b ) { + return new BigNumber(NaN) + } + + // Signs differ? + if ( a != b ) { + return y['s'] = -b, x['minus'](y) + } + + var xe = x['e'], + xc = x['c'], + ye = y['e'], + yc = y['c']; + + if ( !xe || !ye ) { + + // Either Infinity? + if ( !xc || !yc ) { + + // Return +-Infinity. + return new BigNumber( a / 0 ) + } + + // Either zero? + if ( !xc[0] || !yc[0] ) { + + // y is non-zero? + return yc[0] + ? y + : new BigNumber( xc[0] + + // x is non-zero? + ? x + + // Both are zero. Return zero. + : a * 0 ) + } + } + + // Prepend zeros to equalise exponents. + // Note: Faster to use reverse then do unshifts. + if ( xc = xc.slice(), a = xe - ye ) { + d = a > 0 ? ( ye = xe, yc ) : ( a = -a, xc ); + + for ( d.reverse(); a--; d.push(0) ) { + } + d.reverse() + } + + // Point xc to the longer array. + if ( xc.length - yc.length < 0 ) { + d = yc, yc = xc, xc = d + } + + /* + * Only start adding at yc.length - 1 as the + * further digits of xc can be left as they are. + */ + for ( a = yc.length, b = 0; a; + b = ( xc[--a] = xc[a] + yc[a] + b ) / 10 ^ 0, xc[a] %= 10 ) { + } + + // No need to check for zero, as +x + +y != 0 && -x + -y != 0 + + if ( b ) { + xc.unshift(b); + + // Overflow? (MAX_EXP + 1 possible) + if ( ++ye > MAX_EXP ) { + + // Infinity. + xc = ye = null + } + } + + // Remove trailing zeros. + for ( a = xc.length; xc[--a] == 0; xc.pop() ) { + } + + return y['c'] = xc, y['e'] = ye, y + }; + + + /* + * Return a BigNumber whose value is the value of this BigNumber raised to + * the power e. If e is negative round according to DECIMAL_PLACES and + * ROUNDING_MODE. + * + * e {number} Integer, -MAX_POWER to MAX_POWER inclusive. + */ + P['toPower'] = P['pow'] = function ( e ) { + + // e to integer, avoiding NaN or Infinity becoming 0. + var i = e * 0 == 0 ? e | 0 : e, + x = new BigNumber(this), + y = new BigNumber(ONE); + + // Use Math.pow? + // Pass +-Infinity for out of range exponents. + if ( ( ( ( outOfRange = e < -MAX_POWER || e > MAX_POWER ) && + (i = e * 1 / 0) ) || + + /* + * Any exponent that fails the parse becomes NaN. + * + * Include 'e !== 0' because on Opera -0 == parseFloat(-0) is false, + * despite -0 === parseFloat(-0) && -0 == parseFloat('-0') is true. + */ + parse(e) != e && e !== 0 && !(i = NaN) ) && + + // 'pow() exponent not an integer: {e}' + // 'pow() exponent out of range: {e}' + !ifExceptionsThrow( e, 'exponent', 'pow' ) || + + // Pass zero to Math.pow, as any value to the power zero is 1. + !i ) { + + // i is +-Infinity, NaN or 0. + return new BigNumber( Math.pow( x['toS'](), i ) ) + } + + for ( i = i < 0 ? -i : i; ; ) { + + if ( i & 1 ) { + y = y['times'](x) + } + i >>= 1; + + if ( !i ) { + break + } + x = x['times'](x) + } + + return e < 0 ? ONE['div'](y) : y + }; + + + /* + * Return a new BigNumber whose value is the value of this BigNumber + * rounded to a maximum of dp decimal places using rounding mode rm, or to + * DECIMAL_PLACES and ROUNDING_MODE respectively if omitted. + * + * [dp] {number} Integer, 0 to MAX inclusive. + * [rm] {number} Integer, 0 to 8 inclusive. + */ + P['round'] = function ( dp, rm ) { + + dp = dp == null || ( ( ( outOfRange = dp < 0 || dp > MAX ) || + parse(dp) != dp ) && + + // 'round() decimal places out of range: {dp}' + // 'round() decimal places not an integer: {dp}' + !ifExceptionsThrow( dp, 'decimal places', 'round' ) ) + ? 0 + : dp | 0; + + rm = rm == null || ( ( ( outOfRange = rm < 0 || rm > 8 ) || + + // Include '&& rm !== 0' because with Opera -0 == parseFloat(-0) is false. + parse(rm) != rm && rm !== 0 ) && + + // 'round() mode not an integer: {rm}' + // 'round() mode out of range: {rm}' + !ifExceptionsThrow( rm, 'mode', 'round' ) ) + ? ROUNDING_MODE + : rm | 0; + + return setMode( this, dp, rm ) + }; + + + /* + * sqrt(-n) = N + * sqrt( N) = N + * sqrt(-I) = N + * sqrt( I) = I + * sqrt( 0) = 0 + * sqrt(-0) = -0 + * + * Return a new BigNumber whose value is the square root of the value of + * this BigNumber, rounded according to DECIMAL_PLACES and ROUNDING_MODE. + */ + P['squareRoot'] = P['sqrt'] = function () { + var estimate, r, approx, + x = this, + xc = x['c'], + i = x['s'], + e = x['e'], + half = new BigNumber('0.5'); + + // Negative/NaN/Infinity/zero? + if ( i !== 1 || !xc || !xc[0] ) { + return new BigNumber( !i || i < 0 && ( !xc || xc[0] ) + ? NaN + : xc ? x : 1 / 0 ) + } + + // Estimate. + i = Math.sqrt( x['toS']() ); + + // Math.sqrt underflow/overflow? + // Pass x to Math.sqrt as integer, then adjust the exponent of the result. + if ( i == 0 || i == 1 / 0 ) { + estimate = xc.join(''); + + if ( !( estimate.length + e & 1 ) ) { + estimate += '0' + } + + r = new BigNumber( Math.sqrt(estimate).toString() ); + r['e'] = ( ( ( e + 1 ) / 2 ) | 0 ) - ( e < 0 || e & 1 ) + } else { + r = new BigNumber( i.toString() ) + } + + i = r['e'] + ( DECIMAL_PLACES += 4 ); + + // Newton-Raphson loop. + do { + approx = r; + r = half['times']( approx['plus']( x['div'](approx) ) ) + } while ( approx['c'].slice( 0, i ).join('') !== + r['c'].slice( 0, i ).join('') ); + + rnd( r, DECIMAL_PLACES -= 4, 10 ); + + return r + }; + + + /* + * n * 0 = 0 + * n * N = N + * n * I = I + * 0 * n = 0 + * 0 * 0 = 0 + * 0 * N = N + * 0 * I = N + * N * n = N + * N * 0 = N + * N * N = N + * N * I = N + * I * n = I + * I * 0 = N + * I * N = N + * I * I = I + * + * Return a new BigNumber whose value is the value of this BigNumber times + * the value of BigNumber(y, b). + */ + P['times'] = function ( y, b ) { + var c, + x = this, + xc = x['c'], + yc = ( id = 11, y = new BigNumber( y, b ) )['c'], + i = x['e'], + j = y['e'], + a = x['s']; + + y['s'] = a == ( b = y['s'] ) ? 1 : -1; + + // Either NaN/Infinity/0? + if ( !i && ( !xc || !xc[0] ) || !j && ( !yc || !yc[0] ) ) { + + // Either NaN? + return new BigNumber( !a || !b || + + // x is 0 and y is Infinity or y is 0 and x is Infinity? + xc && !xc[0] && !yc || yc && !yc[0] && !xc + + // Return NaN. + ? NaN + + // Either Infinity? + : !xc || !yc + + // Return +-Infinity. + ? y['s'] / 0 + + // x or y is 0. Return +-0. + : y['s'] * 0 ) + } + y['e'] = i + j; + + if ( ( a = xc.length ) < ( b = yc.length ) ) { + c = xc, xc = yc, yc = c, j = a, a = b, b = j + } + + for ( j = a + b, c = []; j--; c.push(0) ) { + } + + // Multiply! + for ( i = b - 1; i > -1; i-- ) { + + for ( b = 0, j = a + i; + j > i; + b = c[j] + yc[i] * xc[j - i - 1] + b, + c[j--] = b % 10 | 0, + b = b / 10 | 0 ) { + } + + if ( b ) { + c[j] = ( c[j] + b ) % 10 + } + } + + b && ++y['e']; + + // Remove any leading zero. + !c[0] && c.shift(); + + // Remove trailing zeros. + for ( j = c.length; !c[--j]; c.pop() ) { + } + + // No zero check needed as only x * 0 == 0 etc. + + // Overflow? + y['c'] = y['e'] > MAX_EXP + + // Infinity. + ? ( y['e'] = null ) + + // Underflow? + : y['e'] < MIN_EXP + + // Zero. + ? [ y['e'] = 0 ] + + // Neither. + : c; + + return y + }; + + + /* + * Return a string representing the value of this BigNumber in exponential + * notation to dp fixed decimal places and rounded using ROUNDING_MODE if + * necessary. + * + * [dp] {number} Integer, 0 to MAX inclusive. + */ + P['toExponential'] = P['toE'] = function ( dp ) { + + return format( this, + ( dp == null || ( ( outOfRange = dp < 0 || dp > MAX ) || + + /* + * Include '&& dp !== 0' because with Opera -0 == parseFloat(-0) is + * false, despite -0 == parseFloat('-0') && 0 == -0 being true. + */ + parse(dp) != dp && dp !== 0 ) && + + // 'toE() decimal places not an integer: {dp}' + // 'toE() decimal places out of range: {dp}' + !ifExceptionsThrow( dp, 'decimal places', 'toE' ) ) && this['c'] + ? this['c'].length - 1 + : dp | 0, 1 ) + }; + + + /* + * Return a string representing the value of this BigNumber in normal + * notation to dp fixed decimal places and rounded using ROUNDING_MODE if + * necessary. + * + * Note: as with Javascript's number type, (-0).toFixed(0) is '0', + * but e.g. (-0.00001).toFixed(0) is '-0'. + * + * [dp] {number} Integer, 0 to MAX inclusive. + */ + P['toFixed'] = P['toF'] = function ( dp ) { + var n, str, d, + x = this; + + if ( !( dp == null || ( ( outOfRange = dp < 0 || dp > MAX ) || + parse(dp) != dp && dp !== 0 ) && + + // 'toF() decimal places not an integer: {dp}' + // 'toF() decimal places out of range: {dp}' + !ifExceptionsThrow( dp, 'decimal places', 'toF' ) ) ) { + d = x['e'] + ( dp | 0 ) + } + + n = TO_EXP_NEG, dp = TO_EXP_POS; + TO_EXP_NEG = -( TO_EXP_POS = 1 / 0 ); + + // Note: str is initially undefined. + if ( d == str ) { + str = x['toS']() + } else { + str = format( x, d ); + + // (-0).toFixed() is '0', but (-0.1).toFixed() is '-0'. + // (-0).toFixed(1) is '0.0', but (-0.01).toFixed(1) is '-0.0'. + if ( x['s'] < 0 && x['c'] ) { + + // As e.g. -0 toFixed(3), will wrongly be returned as -0.000 from toString. + if ( !x['c'][0] ) { + str = str.replace(/^-/, '') + + // As e.g. -0.5 if rounded to -0 will cause toString to omit the minus sign. + } else if ( str.indexOf('-') < 0 ) { + str = '-' + str + } + } + } + TO_EXP_NEG = n, TO_EXP_POS = dp; + + return str + }; + + + /* + * Return a string array representing the value of this BigNumber as a + * simple fraction with an integer numerator and an integer denominator. + * The denominator will be a positive non-zero value less than or equal to + * the specified maximum denominator. If a maximum denominator is not + * specified, the denominator will be the lowest value necessary to + * represent the number exactly. + * + * [maxD] {number|string|BigNumber} Integer >= 1 and < Infinity. + */ + P['toFraction'] = P['toFr'] = function ( maxD ) { + var q, frac, n0, d0, d2, n, e, + n1 = d0 = new BigNumber(ONE), + d1 = n0 = new BigNumber('0'), + x = this, + xc = x['c'], + exp = MAX_EXP, + dp = DECIMAL_PLACES, + rm = ROUNDING_MODE, + d = new BigNumber(ONE); + + // NaN, Infinity. + if ( !xc ) { + return x['toS']() + } + + e = d['e'] = xc.length - x['e'] - 1; + + // If max denominator is undefined or null... + if ( maxD == null || + + // or NaN... + ( !( id = 12, n = new BigNumber(maxD) )['s'] || + + // or less than 1, or Infinity... + ( outOfRange = n['cmp'](n1) < 0 || !n['c'] ) || + + // or not an integer... + ( ERRORS && n['e'] < n['c'].length - 1 ) ) && + + // 'toFr() max denominator not an integer: {maxD}' + // 'toFr() max denominator out of range: {maxD}' + !ifExceptionsThrow( maxD, 'max denominator', 'toFr' ) || + + // or greater than the maxD needed to specify the value exactly... + ( maxD = n )['cmp'](d) > 0 ) { + + // d is e.g. 10, 100, 1000, 10000... , n1 is 1. + maxD = e > 0 ? d : n1 + } + + MAX_EXP = 1 / 0; + n = new BigNumber( xc.join('') ); + + for ( DECIMAL_PLACES = 0, ROUNDING_MODE = 1; ; ) { + q = n['div'](d); + d2 = d0['plus']( q['times'](d1) ); + + if ( d2['cmp'](maxD) == 1 ) { + break + } + + d0 = d1, d1 = d2; + + n1 = n0['plus']( q['times']( d2 = n1 ) ); + n0 = d2; + + d = n['minus']( q['times']( d2 = d ) ); + n = d2 + } + + d2 = maxD['minus'](d0)['div'](d1); + n0 = n0['plus']( d2['times'](n1) ); + d0 = d0['plus']( d2['times'](d1) ); + + n0['s'] = n1['s'] = x['s']; + + DECIMAL_PLACES = e * 2; + ROUNDING_MODE = rm; + + // Determine which fraction is closer to x, n0 / d0 or n1 / d1? + frac = n1['div'](d1)['minus'](x)['abs']()['cmp']( + n0['div'](d0)['minus'](x)['abs']() ) < 1 + ? [ n1['toS'](), d1['toS']() ] + : [ n0['toS'](), d0['toS']() ]; + + return MAX_EXP = exp, DECIMAL_PLACES = dp, frac + }; + + + /* + * Return a string representing the value of this BigNumber to sd significant + * digits and rounded using ROUNDING_MODE if necessary. + * If sd is less than the number of digits necessary to represent the integer + * part of the value in normal notation, then use exponential notation. + * + * sd {number} Integer, 1 to MAX inclusive. + */ + P['toPrecision'] = P['toP'] = function ( sd ) { + + /* + * ERRORS true: Throw if sd not undefined, null or an integer in range. + * ERRORS false: Ignore sd if not a number or not in range. + * Truncate non-integers. + */ + return sd == null || ( ( ( outOfRange = sd < 1 || sd > MAX ) || + parse(sd) != sd ) && + + // 'toP() precision not an integer: {sd}' + // 'toP() precision out of range: {sd}' + !ifExceptionsThrow( sd, 'precision', 'toP' ) ) + ? this['toS']() + : format( this, --sd | 0, 2 ) + }; + + + /* + * Return a string representing the value of this BigNumber in base b, or + * base 10 if b is omitted. If a base is specified, including base 10, + * round according to DECIMAL_PLACES and ROUNDING_MODE. + * If a base is not specified, and this BigNumber has a positive exponent + * that is equal to or greater than TO_EXP_POS, or a negative exponent equal + * to or less than TO_EXP_NEG, return exponential notation. + * + * [b] {number} Integer, 2 to 36 inclusive. + */ + P['toString'] = P['toS'] = function ( b ) { + var u, str, strL, + x = this, + xe = x['e']; + + // Infinity or NaN? + if ( xe === null ) { + str = x['s'] ? 'Infinity' : 'NaN' + + // Exponential format? + } else if ( b === u && ( xe <= TO_EXP_NEG || xe >= TO_EXP_POS ) ) { + return format( x, x['c'].length - 1, 1 ) + } else { + str = x['c'].join(''); + + // Negative exponent? + if ( xe < 0 ) { + + // Prepend zeros. + for ( ; ++xe; str = '0' + str ) { + } + str = '0.' + str + + // Positive exponent? + } else if ( strL = str.length, xe > 0 ) { + + if ( ++xe > strL ) { + + // Append zeros. + for ( xe -= strL; xe-- ; str += '0' ) { + } + } else if ( xe < strL ) { + str = str.slice( 0, xe ) + '.' + str.slice(xe) + } + + // Exponent zero. + } else { + if ( u = str.charAt(0), strL > 1 ) { + str = u + '.' + str.slice(1) + + // Avoid '-0' + } else if ( u == '0' ) { + return u + } + } + + if ( b != null ) { + + if ( !( outOfRange = !( b >= 2 && b <= 36) ) && + ( b == (b | 0) || !ERRORS ) ) { + str = convert( str, b | 0, 10, x['s'] ); + + // Avoid '-0' + if ( str == '0') { + return str + } + } else { + + // 'toS() base not an integer: {b}' + // 'toS() base out of range: {b}' + ifExceptionsThrow( b, 'base', 'toS' ) + } + } + + } + + return x['s'] < 0 ? '-' + str : str + }; + + + /* + * Return as toString, but do not accept a base argument. + */ + P['valueOf'] = function () { + return this['toS']() + }; + + + // Add aliases for BigDecimal methods. + //P['add'] = P['plus']; + //P['subtract'] = P['minus']; + //P['multiply'] = P['times']; + //P['divide'] = P['div']; + //P['remainder'] = P['mod']; + //P['compareTo'] = P['cmp']; + //P['negate'] = P['neg']; + + + // EXPORT + + + // Node and other CommonJS-like environments that support module.exports. + if ( typeof module !== 'undefined' && module.exports ) { + module.exports = BigNumber + + //AMD. + } else if ( typeof define == 'function' && define.amd ) { + define( function () { + return BigNumber + }) + + //Browser. + } else { + global['BigNumber'] = BigNumber + } + +})( this ); + diff --git a/node_modules/mysql/node_modules/bignumber.js/bignumber.min.js b/node_modules/mysql/node_modules/bignumber.js/bignumber.min.js new file mode 100644 index 0000000..21ad8ba --- /dev/null +++ b/node_modules/mysql/node_modules/bignumber.js/bignumber.min.js @@ -0,0 +1 @@ +/* bignumber.js v1.0.1 https://github.com/MikeMcl/bignumber.js/LICENCE */(function(e){"use strict";function y(e,t){var n,r,i,s=this;if(!(s instanceof y))return new y(e,t);if(e instanceof y){d=0;if(t===r){s.s=e.s,s.e=e.e,s.c=(e=e.c)?e.slice():e;return}e=e.toS()}typeof e!="string"&&(e=(n=Object.prototype.toString.call(e)=="[object Number]")&&e===0&&1/e<0?"-0":e+"");if(t===r&&v.test(e))s.s=e.charAt(0)=="-"?(e=e.slice(1),-1):1;else{if(t==10)return(new y(e)).div(g);e=m.call(e).replace(/^\+(?!-)/,"").replace(/^(-?)\./,"$10."),s.s=e.charAt(0)=="-"?(e=e.replace(/^-(?!-)/,""),-1):1,t!=null?t!=(t|0)&&!!f||(p=!(t>=2&&t<=36))?(b(t,2),i=v.test(e)):(r="["+h.slice(0,t|=0)+"]+",(i=(new RegExp("^"+r+"(?:\\."+r+")?$","i")).test(e))?(n&&(e.replace(".","").length>15&&b(e,0),n=!n),e=w(e,10,t,s.s)):e!="Infinity"&&e!="NaN"&&(b(e,1,t),e="NaN")):i=v.test(e);if(!i){s.c=s.e=null,e!="Infinity"&&(e!="NaN"&&b(e,3),s.s=null),d=0;return}}(r=e.indexOf("."))>-1&&(e=e.replace(".","")),(i=e.search(/e/i))>0?(r<0&&(r=i),r+=+e.slice(i+1),e=e.substring(0,i)):r<0&&(r=e.length),(t=e.length,n&&t>15)&&b(e,0);for(d=i=0;e.charAt(i)=="0";i++);if((r-=i+1)>a)s.c=s.e=null;else if(i==t||rt-1&&(a[i+1]==null&&(a[i+1]=0),a[i+1]+=a[i]/t^0,a[i]%=t)}return a.reverse()}function c(e){var t=0,n=e.length,r="";for(;t-1){i=e.length-i-1,s=l((new y(n)).pow(i).toF(),10),u=e.split("."),o=l(u[1]),u=l(u[0]),f=E(o,s,o.length-s.length,r,t,u[u.length-1]&1),a=f.c;if(i=f.e){for(;++i;a.unshift(0));e=c(u)+"."+c(a)}else a[0]?u[i=u.length-1]w?1:-1;else for(p=-1,h=0;++pb[p]?1:-1;break}if(!(h<0))break;for(l=w==f?t:d;w;){if(b[--w]N&&x(E,r,s,o,b[0]!=null),E.e>a?E.c=E.e=null:E.e++t&&x(e,r,10),r=i[0]==0?r+1:n?t:e.e+r+1;for(;i.length1?(i.splice(1,0,"."),i.join("")):i[0])+(r<0?"e":"e+")+r:e.toS()}function x(e,t,n,r,s){var o=e.c,u=e.s<0,a=n/2,f=e.e+t+1,l=o[f],c=s||f<0||o[f+1]!=null;s=i<4?(l!=null||c)&&(i==0||i==2&&!u||i==3&&u):l>a||l==a&&(i==4||c||i==6&&(o[f-1]&1||!t&&r)||i==7&&!u||i==8&&u);if(f<1||!o[0])return o.length=0,o.push(0),s?(o[0]=1,e.e=-t):e.e=0,e;o.length=f--;if(s)for(--n;++o[f]>n;)o[f]=0,f--||(++e.e,o.unshift(1));for(f=o.length;!o[--f];o.pop());return e}function T(e,t,n){var r=i;return i=n,e=new y(e),e.c&&x(e,t,10),i=r,e}var t=1e9,n=1e6,r=20,i=4,s=-7,o=21,u=-t,a=t,f=!0,l=parseInt,c=y.prototype,h="0123456789abcdefghijklmnopqrstuvwxyz",p,d=0,v=/^-?\d+(?:\.\d+)?(?:e[+-]?\d+)?$/i,m=String.prototype.trim||function(){return this.replace(/^\s+|\s+$/g,"")},g=y(1);y.ROUND_UP=0,y.ROUND_DOWN=1,y.ROUND_CEIL=2,y.ROUND_FLOOR=3,y.ROUND_HALF_UP=4,y.ROUND_HALF_DOWN=5,y.ROUND_HALF_EVEN=6,y.ROUND_HALF_CEIL=7,y.ROUND_HALF_FLOOR=8,y.config=function(){var e,n,c=0,h={},v=arguments,m=v[0],g="config",y=function(e,t,n){return!((p=en)||l(e)!=e&&e!==0)},w=m&&typeof m=="object"?function(){if(m.hasOwnProperty(n))return(e=m[n])!=null}:function(){if(v.length>c)return(e=v[c++])!=null};return w(n="DECIMAL_PLACES")&&(y(e,0,t)?r=e|0:b(e,n,g)),h[n]=r,w(n="ROUNDING_MODE")&&(y(e,0,8)?i=e|0:b(e,n,g)),h[n]=i,w(n="EXPONENTIAL_AT")&&(y(e,-t,t)?s=-(o=~~(e<0?-e:+e)):!p&&e&&y(e[0],-t,0)&&y(e[1],0,t)?(s=~~e[0],o=~~e[1]):b(e,n,g,1)),h[n]=[s,o],w(n="RANGE")&&(y(e,-t,t)&&~~e?u=-(a=~~(e<0?-e:+e)):!p&&e&&y(e[0],-t,-1)&&y(e[1],1,t)?(u=~~e[0],a=~~e[1]):b(e,n,g,1,1)),h[n]=[u,a],w(n="ERRORS")&&(e===!!e||e===1||e===0?l=(p=d=0,f=!!e)?parseInt:parseFloat:b(e,n,g,0,0,1)),h[n]=f,h},c.abs=c.absoluteValue=function(){var e=new y(this);return e.s<0&&(e.s=1),e},c.ceil=function(){return T(this,0,2)},c.comparedTo=c.cmp=function(e,t){var n,r=this,i=r.c,s=(d=-d,e=new y(e,t)).c,o=r.s,u=e.s,a=r.e,f=e.e;if(!o||!u)return null;n=i&&!i[0],t=s&&!s[0];if(n||t)return n?t?0:-u:o;if(o!=u)return o;if(n=o<0,t=a==f,!i||!s)return t?0:!i^n?1:-1;if(!t)return a>f^n?1:-1;for(o=-1,u=(a=i.length)<(f=s.length)?a:f;++os[o]^n?1:-1;return a==f?0:a>f^n?1:-1},c.dividedBy=c.div=function(e,t){var n=this.c,r=this.e,i=this.s,s=(d=2,e=new y(e,t)).c,o=e.e,u=e.s,a=i==u?1:-1;return!r&&(!n||!n[0])||!o&&(!s||!s[0])?new y(!i||!u||(n?s&&n[0]==s[0]:!s)?NaN:n&&n[0]==0||!s?a*0:a/0):E(n,s,r-o,a,10)},c.equals=c.eq=function(e,t){return d=3,this.cmp(e,t)===0},c.floor=function(){return T(this,0,3)},c.greaterThan=c.gt=function(e,t){return d=4,this.cmp(e,t)>0},c.greaterThanOrEqualTo=c.gte=function(e,t){return d=5,(t=this.cmp(e,t))==1||t===0},c.isFinite=c.isF=function(){return!!this.c},c.isNaN=function(){return!this.s},c.isNegative=c.isNeg=function(){return this.s<0},c.isZero=c.isZ=function(){return!!this.c&&this.c[0]==0},c.lessThan=c.lt=function(e,t){return d=6,this.cmp(e,t)<0},c.lessThanOrEqualTo=c.lte=function(e,t){return d=7,(t=this.cmp(e,t))==-1||t===0},c.minus=function(e,t){var n,r,i,s,o=this,a=o.s;t=(d=8,e=new y(e,t)).s;if(!a||!t)return new y(NaN);if(a!=t)return e.s=-t,o.plus(e);var f=o.c,l=o.e,c=e.c,h=e.e;if(!l||!h){if(!f||!c)return f?(e.s=-t,e):new y(c?o:NaN);if(!f[0]||!c[0])return c[0]?(e.s=-t,e):new y(f[0]?o:0)}if(f=f.slice(),a=l-h){n=(s=a<0)?(a=-a,f):(h=l,c);for(n.reverse(),t=a;t--;n.push(0));n.reverse()}else{i=((s=f.length0)for(;t--;f[i++]=0);for(t=c.length;t>a;){if(f[--t]0?(u=s,f):(i=-i,o);for(n.reverse();i--;n.push(0));n.reverse()}o.length-f.length<0&&(n=f,f=o,o=n);for(i=f.length,t=0;i;t=(o[--i]=o[i]+f[i]+t)/10^0,o[i]%=10);t&&(o.unshift(t),++u>a&&(o=u=null));for(i=o.length;o[--i]==0;o.pop());return e.c=o,e.e=u,e},c.toPower=c.pow=function(e){var t=e*0==0?e|0:e,r=new y(this),i=new y(g);if(((p=e<-n||e>n)&&(t=e*1/0)||l(e)!=e&&e!==0&&!(t=NaN))&&!b(e,"exponent","pow")||!t)return new y(Math.pow(r.toS(),t));for(t=t<0?-t:t;;){t&1&&(i=i.times(r)),t>>=1;if(!t)break;r=r.times(r)}return e<0?g.div(i):i},c.round=function(e,n){return e=e==null||((p=e<0||e>t)||l(e)!=e)&&!b(e,"decimal places","round")?0:e|0,n=n==null||((p=n<0||n>8)||l(n)!=n&&n!==0)&&!b(n,"mode","round")?i:n|0,T(this,e,n)},c.squareRoot=c.sqrt=function(){var e,t,n,i=this,s=i.c,o=i.s,u=i.e,a=new y("0.5");if(o!==1||!s||!s[0])return new y(!o||o<0&&(!s||s[0])?NaN:s?i:1/0);o=Math.sqrt(i.toS()),o==0||o==1/0?(e=s.join(""),e.length+u&1||(e+="0"),t=new y(Math.sqrt(e).toString()),t.e=((u+1)/2|0)-(u<0||u&1)):t=new y(o.toString()),o=t.e+(r+=4);do n=t,t=a.times(n.plus(i.div(n)));while(n.c.slice(0,o).join("")!==t.c.slice(0,o).join(""));return x(t,r-=4,10),t},c.times=function(e,t){var n,r=this,i=r.c,s=(d=11,e=new y(e,t)).c,o=r.e,f=e.e,l=r.s;e.s=l==(t=e.s)?1:-1;if(!o&&(!i||!i[0])||!f&&(!s||!s[0]))return new y(!l||!t||i&&!i[0]&&!s||s&&!s[0]&&!i?NaN:!i||!s?e.s/0:e.s*0);e.e=o+f,(l=i.length)<(t=s.length)&&(n=i,i=s,s=n,f=l,l=t,t=f);for(f=l+t,n=[];f--;n.push(0));for(o=t-1;o>-1;o--){for(t=0,f=l+o;f>o;t=n[f]+s[o]*i[f-o-1]+t,n[f--]=t%10|0,t=t/10|0);t&&(n[f]=(n[f]+t)%10)}t&&++e.e,!n[0]&&n.shift();for(f=n.length;!n[--f];n.pop());return e.c=e.e>a?e.e=null:e.et)||l(e)!=e&&e!==0)&&!b(e,"decimal places","toE"))&&this.c?this.c.length-1:e|0,1)},c.toFixed=c.toF=function(e){var n,r,i,u=this;return e==null||((p=e<0||e>t)||l(e)!=e&&e!==0)&&!b(e,"decimal places","toF")||(i=u.e+(e|0)),n=s,e=o,s=-(o=1/0),i==r?r=u.toS():(r=S(u,i),u.s<0&&u.c&&(u.c[0]?r.indexOf("-")<0&&(r="-"+r):r=r.replace(/^-/,""))),s=n,o=e,r},c.toFraction=c.toFr=function(e){var t,n,s,o,u,l,c,h=o=new y(g),v=s=new y("0"),m=this,w=m.c,E=a,S=r,x=i,T=new y(g);if(!w)return m.toS();c=T.e=w.length-m.e-1;if(e==null||(!(d=12,l=new y(e)).s||(p=l.cmp(h)<0||!l.c)||f&&l.e0)e=c>0?T:h;a=1/0,l=new y(w.join(""));for(r=0,i=1;;){t=l.div(T),u=o.plus(t.times(v));if(u.cmp(e)==1)break;o=v,v=u,h=s.plus(t.times(u=h)),s=u,T=l.minus(t.times(u=T)),l=u}return u=e.minus(o).div(v),s=s.plus(u.times(h)),o=o.plus(u.times(v)),s.s=h.s=m.s,r=c*2,i=x,n=h.div(v).minus(m).abs().cmp(s.div(o).minus(m).abs())<1?[h.toS(),v.toS()]:[s.toS(),o.toS()],a=E,r=S,n},c.toPrecision=c.toP=function(e){return e==null||((p=e<1||e>t)||l(e)!=e)&&!b(e,"precision","toP")?this.toS():S(this,--e|0,2)},c.toString=c.toS=function(e){var t,n,r,i=this,u=i.e;if(u===null)n=i.s?"Infinity":"NaN";else{if(e===t&&(u<=s||u>=o))return S(i,i.c.length-1,1);n=i.c.join("");if(u<0){for(;++u;n="0"+n);n="0."+n}else if(r=n.length,u>0)if(++u>r)for(u-=r;u--;n+="0");else u1)n=t+"."+n.slice(1);else if(t=="0")return t;if(e!=null)if((p=!(e>=2&&e<=36))||e!=(e|0)&&!!f)b(e,"base","toS");else{n=w(n,e|0,10,i.s);if(n=="0")return n}}return i.s<0?"-"+n:n},c.valueOf=function(){return this.toS()},typeof module!="undefined"&&module.exports?module.exports=y:typeof define=="function"&&define.amd?define(function(){return y}):e.BigNumber=y})(this); \ No newline at end of file diff --git a/node_modules/mysql/node_modules/bignumber.js/doc/API.html b/node_modules/mysql/node_modules/bignumber.js/doc/API.html new file mode 100644 index 0000000..189e5e2 --- /dev/null +++ b/node_modules/mysql/node_modules/bignumber.js/doc/API.html @@ -0,0 +1,1704 @@ + + + + + + + bignumber.js API + + + + + + +
    + +

    bignumber.js

    + +

    A Javascript library for arbitrary-precision arithmetic.

    + +

    + Hosted on GitHub. +

    + + +

    API

    + +

    + In all examples below, var and semicolons are not shown, and + if a commented-out value is in quotes it means toString has + been called on the preceding expression. +

    + + + +

    CONSTRUCTOR

    + +
    + BigNumberBigNumber(value [, base]) ⇒ + BigNumber + +
    +
    +
    value
    +
    + number|string|BigNumber : See RANGE for + range. +
    +
    + A numeric value. +
    +
    + Legitimate values include ±0, + ±Infinity and NaN. +
    +
    + Values of type number with more than 15 significant digits are + considered invalid as calling toString or + valueOf on such numbers may not result in the intended + value. +
    +
    + There is no limit to the number of digits of a value of type + string (other than that of Javascript's maximum array size). +
    +
    + Decimal string values may be in exponential, as well as normal + (non-exponential) notation. Non-decimal values must be in normal + notation. +
    +
    + String values in hexadecimal literal form, e.g. '0xff', are invalid, and + string values in octal literal form will be interpreted as decimals, + e.g. '011' is 11, not 9. +
    +
    Values in any base may have fraction digits.
    +
    + In bases above 10, numerals above 9 are represented by lower-case + letters. +
    +
    +
    +
    base
    +
    + number : integer, 2 to 36 inclusive +
    +
    The base of value.
    +
    If base is omitted, or is null or undefined, + base 10 is assumed.
    +
    +

    Returns a new instance of a BigNumber object.

    +

    + If a base is specified, the value is rounded according to + the current DECIMAL_PLACES and + ROUNDING_MODE settings. + Usefully, this means the decimal places of a decimal value + passed to the constructor can be limited by explicitly specifying base 10. +

    +

    + See Errors for the treatment of an invalid + value or base. +

    +
    +x = new BigNumber(9)                       // '9'
    +y = new BigNumber(x)                       // '9'
    +BigNumber(435.345)                         // 'new' is optional
    +new BigNumber('5032485723458348569331745.33434346346912144534543')
    +new BigNumber('4.321e+4')                  // '43210'
    +new BigNumber('-735.0918e-430')            // '-7.350918e-428'
    +new BigNumber(Infinity)                    // 'Infinity'
    +new BigNumber(NaN)                         // 'NaN'
    +new BigNumber('.5')                        // '0.5'
    +new BigNumber('+2')                        // '2'
    +new BigNumber(-10110100.1, 2)              // '-180.5'
    +new BigNumber('123412421.234324', 5)       // '607236.557696'
    +new BigNumber('ff.8', 16)                  // '255.5'
    +
    +new BigNumber(9, 2)
    +// Throws 'not a base 2 number' if ERRORS is true, otherwise 'NaN'
    +
    +new BigNumber(96517860459076817.4395)
    +// Throws 'number type has more than 15 significant digits'
    +// if ERRORS is true, otherwise '96517860459076820'
    +
    +new BigNumber('blurgh')
    +// Throws 'not a number' if ERRORS is true, otherwise 'NaN'
    +
    +BigNumber.config({DECIMAL_PLACES : 5})
    +new BigNumber(1.23456789)                  // '1.23456789'
    +new BigNumber(1.23456789, 10)              // '1.23457'
    + + +

    Methods

    +

    + The BigNumber constructor has one added method, + config, which configures the library-wide settings for + arithmetic, formatting and errors. +

    + +
    + configconfig([settings]) ⇒ object +
    + + Note: the settings can also be supplied as an argument list, + see below. + +
    +
    settings
    +
    object
    + +
    + An object that contains some or all of the following properties: +
    + + + +
    DECIMAL_PLACES
    +
    + number : integer, 0 to 1e+9 + inclusive
    + Default value: 20 +
    +
    + The maximum number of decimal places of the results of + division, square root and base conversion operations, and power + operations with negative exponents.
    + I.e. aside from the base conversion which may be involved with any + method that accepts a base argument, the value is only relevant to + the dividedBy, squareRoot and + toPower methods. +
    +
    +
    BigNumber.config({ DECIMAL_PLACES : 5 })
    +BigNumber.config(5)    // equivalent
    +
    + + + +
    ROUNDING_MODE
    +
    + number : integer, 0 to 8 + inclusive
    + Default value: 4 + (ROUND_HALF_UP) +
    +
    + The rounding mode used in the above operations and by + round, + toExponential, + toFixed and + toPrecision. +
    +
    + The modes are available as enumerated properties of the BigNumber + constructor. +
    +
    +
    BigNumber.config({ ROUNDING_MODE : 0 })
    +BigNumber.config(null, BigNumber.ROUND_UP)    // equivalent
    +
    + + + +
    EXPONENTIAL_AT
    +
    + number : integer, magnitude 0 to + 1e+9 inclusive, or
    + number[] : [ integer -1e+9 to 0 inclusive, integer 0 to 1e+9 + inclusive ]
    + Default value: [-7, 20] +
    +
    + The exponent value(s) at which toString returns + exponential notation. +
    +
    + If a single number is assigned, the value is the exponent magnitude. +
    + If an array of two numbers is assigned then the first number is the + negative exponent value at and beneath which exponential notation is + used, and the second number is the positive exponent value at and + above which the same. +
    +
    + For example, to emulate Javascript numbers in terms of the exponent + values at which they begin to use exponential notation, use + [-7, 20]. +
    +
    +
    BigNumber.config({ EXPONENTIAL_AT : 2 })
    +new BigNumber(12.3)         // '12.3'        e is only 1
    +new BigNumber(123)          // '1.23e+2'
    +new BigNumber(0.123)        // '0.123'       e is only -1
    +new BigNumber(0.0123)       // '1.23e-2'
    +
    +BigNumber.config({ EXPONENTIAL_AT : [-7, 20] })
    +new BigNumber(123456789)    // '123456789'   e is only 8
    +new BigNumber(0.000000123)  // '1.23e-7'
    +
    +// Almost never return exponential notation:
    +BigNumber.config({ EXPONENTIAL_AT : 1e+9 })
    +
    +// Always return exponential notation:
    +BigNumber.config({ EXPONENTIAL_AT : 0 })
    +
    +
    + Regardless of the value of EXPONENTIAL_AT, the + toFixed method will always return a value in + normal notation and the toExponential method will + always return a value in exponential form. +
    +
    + Calling toString with a base argument, e.g. + toString(10), will also always return normal notation. +
    + + + +
    RANGE
    +
    + number : integer, magnitude 1 to + 1e+9 inclusive, or
    + number[] : [ integer -1e+9 to -1 inclusive, integer 1 to 1e+9 + inclusive ]
    + Default value: [-1e+9, 1e+9] +
    +
    + The exponent value(s) beyond which overflow to Infinity and + underflow to zero occurs. +
    +
    + If a single number is assigned, it is the maximum exponent + magnitude: values wth a positive exponent of greater magnitude + become Infinity and those with a negative exponent of + greater magnitude become zero. +
    + If an array of two numbers is assigned then the first number is the + negative exponent limit and the second number is the positive + exponent limit. +
    +
    + For example, to emulate Javascript numbers in terms of the exponent + values at which they become zero and Infinity, use + [-324, 308]. +
    +
    +
    BigNumber.config({ RANGE : 500 })
    +BigNumber.config().RANGE     // [ -500, 500 ]
    +new BigNumber('9.999e499')   // '9.999e+499'
    +new BigNumber('1e500')       // 'Infinity'
    +new BigNumber('1e-499')      // '1e-499'
    +new BigNumber('1e-500')      // '0'
    +
    +BigNumber.config({ RANGE : [-3, 4] })
    +new BigNumber(99999)         // '99999'      e is only 4
    +new BigNumber(100000)        // 'Infinity'   e is 5
    +new BigNumber(0.001)         // '0.01'       e is only -3
    +new BigNumber(0.0001)        // '0'          e is -4
    +
    +
    + The largest possible magnitude of a finite BigNumber is
    + 9.999...e+1000000000
    + The smallest possible magnitude of a non-zero BigNumber is
    + 1e-1000000000 +
    + + + +
    ERRORS
    +
    + boolean/number : true, false, 1 or 0
    + Default value: true +
    +
    + The value that determines whether BigNumber Errors are thrown.
    + If ERRORS is false, this library will not throw errors. +
    +
    + See Errors. +
    +
    +
    BigNumber.config({ ERRORS : false })
    +
    +
    +
    +
    +

    +
    Returns an object with the above properties and their current + values. +

    +

    + If the value to be assigned to any of the above properties is + null or undefined it is ignored. See + Errors for the treatment of invalid values. +

    +
    +BigNumber.config({
    +    DECIMAL_PLACES : 40,
    +    ROUNDING_MODE : BigNumber.ROUND_HALF_CEIL,
    +    EXPONENTIAL_AT : [-10, 20],
    +    RANGE : [-500, 500],
    +    ERRORS : true
    +});
    +
    +// Alternatively but equivalently:
    +BigNumber.config( 40, 7, [-10, 20], 500, 1 )
    +
    +obj = BigNumber.config();
    +obj.ERRORS       // true
    +obj.RANGE        // [-500, 500]
    + + + +

    Properties

    +

    + The library's enumerated rounding modes are stored as properties of the + constructor.
    + They are not referenced internally by the library itself. +

    +

    + Rounding modes 0 to 6 (inclusive) are the same as those of Java's + BigDecimal class. +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    PropertyValueDescription
    ROUND_UP0Rounds away from zero
    ROUND_DOWN1Rounds towards zero
    ROUND_CEIL2Rounds towards Infinity
    ROUND_FLOOR3Rounds towards -Infinity
    ROUND_HALF_UP4 + Rounds towards nearest neighbour.
    + If equidistant, rounds away from zero +
    ROUND_HALF_DOWN5 + Rounds towards nearest neighbour.
    + If equidistant, rounds towards zero +
    ROUND_HALF_EVEN6 + Rounds towards nearest neighbour.
    + If equidistant, rounds towards even neighbour +
    ROUND_HALF_CEIL7 + Rounds towards nearest neighbour.
    + If equidistant, rounds towards Infinity +
    ROUND_HALF_FLOOR8 + Rounds towards nearest neighbour.
    + If equidistant, rounds towards -Infinity +
    +
    +BigNumber.config({ ROUNDING_MODE : BigNumber.ROUND_CEIL })
    +BigNumber.config({ ROUNDING_MODE : 2 })     // equivalent
    + + +

    INSTANCE

    + +

    Methods

    +

    + The methods inherited by a BigNumber instance from its constructor's + prototype object. +

    +

    + A BigNumber is immutable in the sense that it is not changed by its + methods. +

    +

    + The treatment of ±0, ±Infinity and + NaN is consistent with how Javascript treats these values. +

    +

    + Method names over 5 letters in length have a shorter alias (except + valueOf).
    + Internally, the library always uses the shorter method names. +

    + + + +
    + absoluteValue.abs() ⇒ BigNumber +
    +

    + Returns a BigNumber whose value is the absolute value, i.e. the magnitude, + of this BigNumber. +

    +
    +x = new BigNumber(-0.8)
    +y = x.absoluteValue()         // '0.8'
    +z = y.abs()                   // '0.8'
    + + + +
    + ceil.ceil() ⇒ BigNumber +
    +

    + Returns a BigNumber whose value is the value of this BigNumber rounded to + a whole number in the direction of Infinity. +

    +
    +x = new BigNumber(1.3)
    +x.ceil()                      // '2'
    +y = new BigNumber(-1.8)
    +y.ceil()                      // '-1'
    + + + +
    + floor.floor() ⇒ + BigNumber +
    +

    + Returns a BigNumber whose value is the value of this BigNumber rounded to + a whole number in the direction of -Infinity. +

    +
    +x = new BigNumber(1.8)
    +x.floor()                     // '1'
    +y = new BigNumber(-1.3)
    +y.floor()                     // '-2'
    + + + +
    + negated.neg() ⇒ BigNumber +
    +

    + Returns a BigNumber whose value is the value of this BigNumber negated, + i.e. multiplied by -1. +

    +
    +x = new BigNumber(1.8)
    +x.negated()                   // '-1.8'
    +y = new BigNumber(-1.3)
    +y.neg()                       // '1.3'
    + + + +
    + squareRoot.sqrt() ⇒ BigNumber +
    +

    + Returns a BigNumber whose value is the square root of this BigNumber, + rounded according to the current + DECIMAL_PLACES and + ROUNDING_MODE settings. +

    +
    +x = new BigNumber(16)
    +x.squareRoot()                // '4'
    +y = new BigNumber(3)
    +y.sqrt()                      // '1.73205080756887729353'
    + + + +
    + isFinite.isF() ⇒ boolean +
    +

    + Returns true if the value of this BigNumber is a finite + number, otherwise returns false.
    + The only possible non-finite values of a BigNumber are NaN, Infinity and + -Infinity. +

    +
    +x = new BigNumber(1)
    +x.isFinite()                  // true
    +y = new BigNumber(Infinity)
    +y.isF()                       // false
    +

    + Note: The native method isFinite() can be used if + n <= Number.MAX_VALUE. +

    + + + +
    + isNaN.isNaN() ⇒ boolean +
    +

    + Returns true if the value of this BigNumber is NaN, otherwise + returns false.
    +

    +
    +x = new BigNumber(NaN)
    +x.isNaN()                     // true
    +y = new BigNumber('Infinity')
    +y.isNaN()                     // false
    +

    + Note: The native method isNaN() can also be used. +

    + + + +
    + isNegative.isNeg() ⇒ boolean +
    +

    + Returns true if the value of this BigNumber is negative, + otherwise returns false.
    +

    +
    +x = new BigNumber(-0)
    +x.isNegative()                // true
    +y = new BigNumber(2)
    +y.isNeg                       // false
    +

    + Note: n < 0 can be used if + n <= -Number.MIN_VALUE. +

    + + + +
    + isZero.isZ() ⇒ boolean +
    +

    + Returns true if the value of this BigNumber is zero or minus + zero, otherwise returns false.
    +

    +
    +x = new BigNumber(-0)
    +x.isZero() && x.isNeg()        // true
    +y = new BigNumber(Infinity)
    +y.isZ()                        // false
    +

    + Note: n == 0 can be used if + n >= Number.MIN_VALUE. +

    + + + +
    + comparedTo.cmp(n [, base]) ⇒ number +
    +

    + n : number|string|BigNumber
    + base : number
    + + See constructor for further parameter details. + +

    + + + + + + + + + + + + + + + + + + + + + +
    Returns 
    1 + If the value of this BigNumber is greater than the value of n +
    -1 + If the value of this BigNumber is less than the value of n +
    0If this BigNumber and n have the same value
    null + if the value of either this BigNumber or n is + NaN +
    +
    +x = new BigNumber(Infinity)
    +y = new BigNumber(5)
    +x.comparedTo(y)                // 1
    +x.comparedTo(x.minus(1))       // 0
    +y.cmp(NaN)                     // null
    +y.cmp('110', 2)                // -1
    + + + +
    + dividedBy.div(n [, base]) ⇒ + BigNumber +
    +

    + n : number|string|BigNumber
    + base : number
    + See constructor for further parameter details. + +

    +

    + Returns a BigNumber whose value is the value of this BigNumber divided by + n, rounded according to the current + DECIMAL_PLACES and + ROUNDING_MODE settings. +

    +
    +x = new BigNumber(355)
    +y = new BigNumber(113)
    +x.dividedBy(y)             // '3.14159292035398230088'
    +x.div(5)                   // '71'
    +x.div(47, 16)              // '5'
    + + + +
    + minus.minus(n [, base]) ⇒ BigNumber +
    +

    + n : number|string|BigNumber
    + base : number
    + See constructor for further parameter details. + +

    +

    + Returns a BigNumber whose value is the value of this BigNumber minus + n. +

    +
    +0.3 - 0.1                  // 0.19999999999999998
    +x = new BigNumber(0.3)
    +x.minus(0.1)               // '0.2'
    +x.minus(0.6, 20)           // '0'
    + + + +
    + modulo.mod(n [, base]) ⇒ BigNumber +
    +

    + n : number|string|BigNumber
    + base : number
    + See constructor for further parameter details. + +

    +

    + Returns a BigNumber whose value is the value of this BigNumber modulo + n, i.e. the integer remainder of dividing this BigNumber by + n. +

    +

    + The result will have the same sign as this BigNumber, and it will match + that of Javascript's % operator (within the limits of its precision) and + BigDecimal's remainder method. +

    +
    +1 % 0.9                    // 0.09999999999999998
    +x = new BigNumber(1)
    +x.modulo(0.9)              // '0.1'
    +y = new BigNumber(33)
    +y.mod('a', 33)             // '3'
    + + + +
    + plus.plus(n [, base]) ⇒ BigNumber +
    +

    + n : number|string|BigNumber
    + base : number
    + See constructor for further parameter details. + +

    +

    + Returns a BigNumber whose value is the value of this BigNumber plus + n. +

    +
    +0.1 + 0.2                       // 0.30000000000000004
    +x = new BigNumber(0.1)
    +y = x.plus(0.2)                 // '0.3'
    +BigNumber(0.7).plus(x).plus(y)  // '1'
    +x.plus('0.1', 8)                // '0.225'
    + + + +
    + times.times(n [, base]) ⇒ BigNumber +
    +

    + n : number|string|BigNumber
    + base : number
    + See constructor for further parameter details. + +

    +

    + Returns a BigNumber whose value is the value of this BigNumber times + n. +

    +
    +0.6 * 3                         // 1.7999999999999998
    +x = new BigNumber(0.6)
    +y = x.times(3)                  // '1.8'
    +BigNumber('7e+500').times(y)    // '1.26e+501'
    +x.times('-a', 16)               // '-6'
    + + + +
    + toPower.pow(exp) ⇒ BigNumber +
    +

    + exp : number : integer, -1e+6 to 1e+6 inclusive +

    +

    + Returns a BigNumber whose value is the value of this BigNumber raised to + the power exp. +

    +

    + If exp is negative the result is rounded according to the + current DECIMAL_PLACES and + ROUNDING_MODE settings. +

    +

    + If exp is not an integer or is out of range: +

    +

    + If ERRORS is true a BigNumber + Error is thrown,
    + else if exp is greater than 1e+6, it is interpreted as + Infinity;
    + else if exp is less than -1e+6, it is interpreted as + -Infinity;
    + else if exp is otherwise a number, it is truncated to an + integer;
    + else it is interpreted as NaN. +

    +

    + Note: High value exponents may cause this method to be slow to return. +

    +
    +Math.pow(0.7, 2)             // 0.48999999999999994
    +x = new BigNumber(0.7)
    +x.toPower(2)                 // '0.49'
    +BigNumber(3).pow(-2)         // '0.11111111111111111111'
    +
    +new BigNumber(123.456).toPower(1000).toString().length     // 5099
    +new BigNumber(2).pow(1e+6)   // Time taken (Node.js): 9 minutes 34 secs.
    + + + +
    + equals.eq(n [, base]) ⇒ boolean +
    +

    + n : number|string|BigNumber
    + base : number
    + See constructor for further parameter details. + +

    +

    + Returns true if the value of this BigNumber equals the value + of n, otherwise returns false.
    + As with Javascript, NaN does not equal NaN. +
    Note : This method uses the comparedTo method + internally. +

    +
    +0 === 1e-324                    // true
    +x = new BigNumber(0)
    +x.equals('1e-324')              // false
    +BigNumber(-0).eq(x)             // true  ( -0 === 0 )
    +BigNumber(255).eq('ff', 16)     // true
    +
    +y = new BigNumber(NaN)
    +y.equals(NaN)                   // false
    + + + +
    + greaterThan.gt(n [, base]) ⇒ + boolean +
    +

    + n : number|string|BigNumber
    + base : number
    + See constructor for further parameter details. + +

    +

    + Returns true if the value of this BigNumber is greater than + the value of n, otherwise returns false.
    + Note : This method uses the comparedTo method internally. +

    +
    +0.1 > (0.3 - 0.2)                           // true
    +x = new BigNumber(0.1)
    +x.greaterThan(BigNumber(0.3).minus(0.2))    // false
    +BigNumber(0).gt(x)                          // false
    +BigNumber(11, 3).gt(11.1, 2)                // true
    + + + +
    + greaterThanOrEqualTo.gte(n [, base]) ⇒ + boolean +
    +

    + n : number|string|BigNumber
    + base : number
    + See constructor for further parameter details. + +

    +

    + Returns true if the value of this BigNumber is greater than + or equal to the value of n, otherwise returns + false.
    + Note : This method uses the comparedTo method internally. +

    +
    +(0.3 - 0.2) >= 0.1                   // false
    +x = new BigNumber(0.3).minus(0.2)
    +x.greaterThanOrEqualTo(0.1)          // true
    +BigNumber(1).gte(x)                  // true
    +BigNumber(10, 18).gte('i', 36)       // true
    + + + +
    + lessThan.lt(n [, base]) ⇒ boolean +
    +

    + n : number|string|BigNumber
    + base : number
    + See constructor for further parameter details. + +

    +

    + Returns true if the value of this BigNumber is less than the + value of n, otherwise returns false.
    + Note : This method uses the comparedTo method internally. +

    +
    +(0.3 - 0.2) < 0.1                    // true
    +x = new BigNumber(0.3).minus(0.2)
    +x.lessThan(0.1)                      // false
    +BigNumber(0).lt(x)                   // true
    +BigNumber(11.1, 2).lt(11, 3)         // true
    + + + +
    + lessThanOrEqualTo.lte(n [, base]) ⇒ + boolean +
    +

    + n : number|string|BigNumber
    + base : number
    + See constructor for further parameter details. + +

    +

    + Returns true if the value of this BigNumber is less than or + equal to the value of n, otherwise returns + false.
    + Note : This method uses the comparedTo method internally. +

    +
    +0.1 <= (0.3 - 0.2)                                // false
    +x = new BigNumber(0.1)
    +x.lessThanOrEqualTo(BigNumber(0.3).minus(0.2))    // true
    +BigNumber(-1).lte(x)                              // true
    +BigNumber(10, 18).lte('i', 36)                    // true
    + + + +
    + toExponential.toE([decimal_places]) ⇒ + string +
    +

    + decimal_places : number : integer, 0 to 1e+9 inclusive +

    +

    + Returns a string representing the value of this BigNumber in exponential + notation to the specified decimal places, i.e with one digit before the + decimal point and decimal_places digits after it. If rounding + is necessary, the current + ROUNDING_MODE is used. +

    +

    + If the value of this BigNumber in exponential notation has fewer fraction + digits then is specified by decimal_places, the return value + will be appended with zeros accordingly. +

    +

    + If decimal_places is omitted, or is null or + undefined, the number of digits after the decimal point defaults to the + minimum number of digits necessary to represent the value exactly. +

    +

    + See Errors for the treatment of other + non-integer or out of range decimal_places values. +

    +
    +x = 45.6
    +y = new BigNumber(x)
    +x.toExponential()         // '4.56e+1'
    +y.toExponential()         // '4.56e+1'
    +x.toExponential(0)        // '5e+1'
    +y.toE(0)                  // '5e+1'
    +x.toExponential(1)        // '4.6e+1'
    +y.toE(1)                  // '4.6e+1'
    +x.toExponential(3)        // '4.560e+1'
    +y.toE(3)                  // '4.560e+1'
    + + + +
    + toFixed.toF([decimal_places]) ⇒ + string +
    +

    + decimal_places : number : integer, 0 to 1e+9 inclusive +

    +

    + Returns a string representing the value of this BigNumber in normal + notation to the specified fixed number of decimal places, i.e. with + decimal_places digits after the decimal point. If rounding is + necessary, the current + ROUNDING_MODE setting is used. +

    +

    + If the value of this BigNumber in normal notation has fewer fraction + digits then is specified by decimal_places, the return value + will be appended with zeros accordingly. +

    +

    + Unlike Number.prototype.toFixed, which returns + exponential notation if a number is greater or equal to 1021, + this method will always return normal notation. +

    +

    + If decimal_places is omitted, or is null or + undefined, then the return value is the same as n.toString(). + This is also unlike Number.prototype.toFixed, which returns + the value to zero decimal places. +

    +

    + See Errors for the treatment of other + non-integer or out of range decimal_places values. +

    +
    +x = 45.6
    +y = new BigNumber(x)
    +x.toFixed()              // '46'
    +y.toFixed()              // '45.6'
    +y.toF(0)                 // '46'
    +x.toFixed(3)             // '45.600'
    +y.toF(3)                 // '45.600'
    + + + +
    + toPrecision.toP([significant_figures]) ⇒ + string +
    +

    + significant_figures : number : integer, 1 to 1e+9 + inclusive +

    +

    + Returns a string representing the value of this BigNumber to the + specified number of significant digits. If rounding is necessary, the + current ROUNDING_MODE setting is + used. +

    +

    + If significant_figures is less than the number of digits + necessary to represent the integer part of the value in normal notation, + then exponential notation is used. +

    +

    + If significant_figures is omitted, or is null or + undefined, then the return value is the same as n.toString(). +

    +

    + See Errors for the treatment of other + non-integer or out of range significant_figures values. +

    +
    +x = 45.6
    +y = new BigNumber(x)
    +x.toPrecision()           // '45.6'
    +y.toPrecision()           // '45.6'
    +x.toPrecision(1)          // '5e+1'
    +y.toP(1)                  // '5e+1'
    +x.toPrecision(5)          // '45.600'
    +y.toP(5)                  // '45.600'
    + + + +
    + toString.toS([base]) ⇒ string +
    +

    + base : number : integer, 2 to 36 inclusive +

    +

    + Returns a string representing the value of this BigNumber in the specified + base, or base 10 if base is omitted. Like + Number.toString, in bases above 10, numerals above 9 are + represented by lower-case letters. +

    +

    + If a base is specified the value is rounded according to the current + DECIMAL_PLACES + and ROUNDING_MODE settings. +

    +

    + If a base is not specified, and this BigNumber has a positive + exponent that is equal to or greater than the positive component of the + current EXPONENTIAL_AT setting, + or a negative exponent equal to or less than the negative component of the + setting, then exponential notation is returned. +

    +

    + If base is null or undefined it is ignored. +
    + See Errors for the treatment of other non-integer or + out of range base values. +

    +
    +x = new BigNumber(750000)
    +x.toString()                    // '750000'
    +BigNumber.config({ EXPONENTIAL_AT : 5 })
    +x.toString()                    // '7.5e+5'
    +
    +y = new BigNumber(362.875)
    +y.toString(2)                   // '101101010.111'
    +y.toString(9)                   // '442.77777777777777777778'
    +y.toString(32)                  // 'ba.s'
    +
    +BigNumber.config({ DECIMAL_PLACES : 4 });
    +z = new BigNumber('1.23456789')
    +z.toString()                    // '1.23456789'
    +z.toString(10)                  // '1.2346'
    + + + +
    + valueOf.valueOf() ⇒ string +
    +

    + As toString, but does not accept a base argument. +

    +
    +x = new BigNumber('1.777e+457')
    +x.valueOf()                      // '1.777e+457'
    + + + +
    + toFraction.toFr([max_denominator]) ⇒ + [string, string] +
    +

    + max_denominator : number|string|BigNumber : + integer >= 1 and < Infinity +

    +

    + Returns a string array representing the value of this BigNumber as a + simple fraction with an integer numerator and an integer denominator. The + denominator will be a positive non-zero value less than or equal to + max_denominator. +

    +

    + If a maximum denominator is not specified, or is null or + undefined, the denominator will be the lowest value necessary to represent + the number exactly. +

    +

    + See Errors for the treatment of other non-integer or + out of range max_denominator values. +

    +
    +x = new BigNumber(1.75)
    +x.toFraction()            // '7, 4'
    +
    +pi = new BigNumber('3.14159265358')
    +pi.toFr()                 // '157079632679,50000000000'
    +pi.toFr(100000)           // '312689, 99532'
    +pi.toFr(10000)            // '355, 113'
    +pi.toFr(100)              // '311, 99'
    +pi.toFr(10)               // '22, 7'
    +pi.toFr(1)                // '3, 1'
    + + + +
    + round.round([decimal_places [, rounding_mode]]) + ⇒ BigNumber +
    +

    + decimal_places : number : integer, 0 to 1e+9 inclusive +
    + rounding_mode : number : integer, 0 to 8 inclusive +

    +

    + Returns a BigNumber whose value is the value of this BigNumber rounded by + the specified rounding_mode to a maximum of + decimal_places digits after the decimal point. +

    +

    + if decimal_places is omitted, or is null or + undefined, the return value is n rounded to a whole number. +

    +

    + if rounding_mode is omitted, or is null or + undefined, the current + ROUNDING_MODE setting is used. +

    +

    + See Errors for the treatment of other + non-integer or out of range decimal_places or + rounding_mode values. +

    +
    +x = 1234.56
    +Math.round(x)                             // 1235
    +
    +y = new BigNumber(x)
    +y.round()                                 // '1235'
    +y.round(1)                                // '1234.6'
    +y.round(2)                                // '1234.56'
    +y.round(10)                               // '1234.56'
    +y.round(0, 1)                             // '1234'
    +y.round(0, 6)                             // '1235'
    +y.round(1, 1)                             // '1234.5'
    +y.round(1, BigNumber.ROUND_HALF_EVEN)     // '1234.6'
    +y                                         // '1234.56'
    + + + +

    Properties

    +

    + A BigNumber is an object with three properties: +

    + + + + + + + + + + + + + + + + + + + + + + + + + +
    PropertyDescriptionTypeValue
    ccoefficient*number[] Array of single digits
    eexponentnumberInteger, -1e+9 to 1e+9 inclusive
    ssignnumber-1 or 1
    +

    *significand

    +

    + The value of any of the three properties may also be null. +

    +

    + The value of a BigNumber is stored in a normalised decimal floating point + format which corresponds to the value's toExponential form, + with the decimal point to be positioned after the most significant + (left-most) digit of the coefficient. +

    +

    + Note that, as with Javascript numbers, the original exponent and + fractional trailing zeros are not preserved. +

    +
    x = new BigNumber(0.123)              // '0.123'
    +x.toExponential()                     // '1.23e-1'
    +x.c                                   // '1,2,3'
    +x.e                                   // -1
    +x.s                                   // 1
    +
    +y = new Number(-123.4567000e+2)       // '-12345.67'
    +y.toExponential()                     // '-1.234567e+4'
    +z = new BigNumber('-123.4567000e+2')  // '-12345.67'
    +z.toExponential()                     // '-1.234567e+4'
    +z.c                                   // '1,2,3,4,5,6,7'
    +z.e                                   // 4
    +z.s                                   // -1
    + + +

    + A BigNumber is mutable in the sense that the value of its properties can + be changed.
    + For example, to rapidly shift a value by a power of 10: +

    +
    +x = new BigNumber('1234.000')      // '1234'
    +x.toExponential()                  // '1.234e+3'
    +x.c                                // '1,2,3,4'
    +x.e                                // 3
    +
    +x.e = -5
    +x                                  // '0.00001234'
    +

    + If changing the coefficient array directly, which is not recommended, be + careful to avoid leading or trailing zeros (unless zero itself is being + represented). +

    + + + +

    Zero, NaN and Infinity

    +

    + The table below shows how ±0, NaN and ±Infinity are stored. +

    + + + + + + + + + + + + + + + + + + + + + + + + + +
    ces
    ±0[0]0±1
    NaNnullnullnull
    ±Infinitynullnull±1
    +
    +x = new Number(-0)      // 0
    +1 / x == -Infinity     // true
    +
    +y = new BigNumber(-0)   // '0'
    +y.c                     // '0' ( [0].toString() )
    +y.e                     // 0
    +y.s                     // -1
    + + + +

    Errors

    +

    + The table below shows the BigNumber Errors that may be thrown if + ERRORS is true, and what happens if + ERRORS is false. +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Method(s)ERRORS : true
    Throw BigNumber Error
    ERRORS : false
    Action on invalid argument
    + BigNumber
    + comparedTo
    + dividedBy
    + equals
    + greaterThan
    + greaterThanOrEqualTo
    + lessThan
    + lessThanOrEqualTo
    + minus
    + mod
    + plus
    + times
    number type has more than
    15 significant digits
    Accept.
    not a base... numberSubstitute NaN.
    base not an integerTruncate to integer.
    Ignore if not a number.
    base out of rangeIgnore.
    not a number*Substitute NaN.
    configDECIMAL_PLACES not an integerTruncate to integer.
    Ignore if not a number.
    DECIMAL_PLACES out of rangeIgnore.
    ROUNDING_MODE not an integerTruncate to integer.
    Ignore if not a number.
    ROUNDING_MODE out of rangeIgnore.
    + EXPONENTIAL_AT not an integer
    + or not [integer, integer] +
    Truncate to integer(s).
    Ignore if not number(s).
    + EXPONENTIAL_AT out of range
    + or not [negative, positive] +
    Ignore.
    + RANGE not a non-zero integer
    + or not [integer, integer] +
    Truncate to integer(s).
    Ignore if zero or not number(s).
    + RANGE out of range
    + or not [negative, positive] +
    Ignore.
    + ERRORS not a boolean
    + or binary digit +
    Ignore.
    toPowerexponent not an integerTruncate to integer.
    Substitute NaN if not a number.
    exponent out of rangeSubstitute ±Infinity. +
    rounddecimal places not an integerTruncate to integer.
    Ignore if not a number.
    decimal places out of rangeIgnore.
    mode not an integerTruncate to integer.
    Ignore if not a number.
    mode out of rangeIgnore.
    toExponentialdecimal places not an integerTruncate to integer.
    Ignore if not a number.
    decimal places out of rangeIgnore.
    toFixeddecimal places not an integerTruncate to integer.
    Ignore if not a number.
    decimal places out of rangeIgnore.
    toFractionmax denominator not an integerTruncate to integer.
    Ignore if not a number.
    max denominator out of rangeIgnore.
    toPrecisionprecision not an integerTruncate to integer.
    Ignore if not a number.
    precision out of rangeIgnore.
    toStringbase not an integerTruncate to integer.
    Ignore if not a number.
    base out of rangeIgnore.
    +

    + *No error is thrown if the value is NaN or 'NaN' +

    +

    + The message of a BigNumber Error will also contain the name of the + method from which the error originated. +

    +

    + To determine if an exception is a BigNumber Error: +

    +
    +try {
    +    // do something with BigNumbers
    +} catch (e) {
    +    if (e.name == 'BigNumber Error') {
    +        // do something
    +    }
    +}
    + +

    FAQ

    +
    Why are trailing fractional zeros removed from BigNumbers?
    +

    + Many arbitrary-precision libraries retain trailing fractional zeros as + they can indicate the precision of a value. This can be useful but the + results of arithmetic operations can be misleading. +

    +
    +x = new BigDecimal("1.0")
    +y = new BigDecimal("1.1000")
    +z = x.add(y)                      // 2.1000   
    +    
    +x = new BigDecimal("1.20")
    +y = new BigDecimal("3.45000")
    +z = x.multiply(y)                 // 4.1400000
    +

    + To specify the precision of a value is to specify that the value lies + within a certain range. +

    +

    + In the first example, x has a value of 1.0. The trailing zero + shows the precision of the value, implying that it is in the range 0.95 to + 1.05. Similarly, the precision indicated by the trailing zeros of + y indicates that the value is in the range 1.09995 to + 1.10005. If we add the two lowest values in the ranges we get 0.95 + + 1.09995 = 2.04995 and if we add the two highest values we get 1.05 + + 1.10005 = 2.15005, so the range of the result of the addition implied by + the precision of its operands is 2.04995 to 2.15005. The result given by + BigDecimal of 2.1000 however, indicates that the value is in the range + 2.09995 to 2.10005 and therefore the precision implied by its trailing + zeros is misleading. +

    +

    + In the second example, the true range is 4.122744 to 4.157256 yet the + BigDecimal answer of 4.1400000 indicates a range of 4.13999995 to + 4.14000005. Again, the precision implied by the trailing zeros is + misleading. +

    +

    + This library, like Javascript and most calculators, does not + retain trailing fractional zeros. Instead, the toExponential, + toFixed and toPrecision methods enable trailing + zeros to be added if and when required. +

    +
    + +
    + + + diff --git a/node_modules/mysql/node_modules/bignumber.js/package.json b/node_modules/mysql/node_modules/bignumber.js/package.json new file mode 100644 index 0000000..08d5c82 --- /dev/null +++ b/node_modules/mysql/node_modules/bignumber.js/package.json @@ -0,0 +1,44 @@ +{ + "name": "bignumber.js", + "description": "A library for arbitrary-precision decimal and non-decimal arithmetic", + "version": "1.0.1", + "keywords": [ + "arbitrary", + "precision", + "arithmetic", + "big", + "number", + "decimal", + "float", + "biginteger", + "bigdecimal", + "bignumber", + "bigint", + "bignum" + ], + "repository": { + "type": "git", + "url": "https://github.com/MikeMcl/bignumber.js.git" + }, + "main": "bignumber", + "author": { + "name": "Michael Mclaughlin", + "email": "M8ch88l@gmail.com" + }, + "engines": { + "node": "*" + }, + "license": "MIT", + "scripts": { + "test": "node ./test/every-test.js", + "build": "uglifyjs -o ./bignumber.min.js ./bignumber.js" + }, + "readme": "\r\n# bignumber.js #\r\n\r\nA Javascript library for arbitrary-precision decimal and non-decimal arithmetic. \r\n \r\n## Features\r\n\r\n - Faster, smaller, and perhaps easier to use than Javascript versions of Java's BigDecimal\r\n - 5 KB minified and gzipped\r\n - Simple API but full-featured\r\n - Works with numbers with or without fraction digits in bases from 2 to 36 inclusive\r\n - Replicates the `toExponential`, `toFixed`, `toPrecision` and `toString` methods of Javascript's Number type\r\n - Includes a `toFraction` and a `squareRoot` method\r\n - Stores values in an accessible decimal floating point format\r\n - No dependencies\r\n - Comprehensive documentation and test set \r\n\r\nIf an even smaller and simpler library is required see [big.js](https://github.com/MikeMcl/big.js/). \r\nIt's half the size but only works with decimal numbers and only has half the methods. \r\nIt also does not allow `NaN` or `Infinity`, or have the configuration options of this library. \r\n\r\n## Load\r\n\r\nThe library is the single Javascript file *bignumber.js* \r\n(or *bignumber.min.js*, which is *bignumber.js* minified using uglify-js). \r\n\r\nIt can be loaded via a script tag in an HTML document for the browser\r\n\r\n \r\n \r\nor as a CommonJS, [Node.js](http://nodejs.org) or AMD module using `require`. \r\n\r\nFor Node, put the *bignumber.js* file into the same directory as the file that is requiring it and use\r\n\r\n var BigNumber = require('./bignumber'); \r\n\r\nor put it in a *node_modules* directory within the directory and use `require('bignumber')`. \r\n\r\nThe library is also available from the [npm](https://npmjs.org/) registry, so\r\n\r\n $ npm install bignumber.js\r\n\r\nwill install this entire directory in a *node_modules* directory within the current directory. \r\nIt can then be loaded with `require('bignumber.js')`. \r\n \r\nTo load with AMD loader libraries such as [requireJS](http://requirejs.org/):\r\n\r\n require(['bignumber'], function(BigNumber) { \r\n // Use BigNumber here in local scope. No global BigNumber. \r\n });\r\n\r\n## Use\r\n\r\n*In all examples below, `var`, semicolons and `toString` calls are not shown. \r\nIf a commented-out value is in quotes it means `toString` has been called on the preceding expression.*\r\n\r\nThe library exports a single function: BigNumber, the constructor of BigNumber instances. \r\nIt accepts a value of type Number, String or BigNumber Object, \r\n\r\n x = new BigNumber(123.4567)\r\n y = BigNumber('123456.7e-3') // 'new' is optional\r\n z = new BigNumber(x)\r\n x.equals(y) && y.equals(z) && x.equals(z) // true\r\n\r\nand a base from 2 to 36 inclusive can be specified.\r\n\r\n x = new BigNumber(1011, 2) // \"11\" \r\n y = new BigNumber('zz.9', 36) // \"1295.25\"\r\n z = x.plus(y) // \"1306.25\"\r\n\r\nA BigNumber is immutable in the sense that it is not changed by its methods. \r\n\r\n 0.3 - 0.1 // 0.19999999999999998 \r\n x = new BigNumber(0.3) \r\n x.minus(0.1) // \"0.2\"\r\n x // \"0.3\"\r\n\r\nThe methods that return a BigNumber can be chained.\r\n\r\n x.dividedBy(y).plus(z).times(9).floor()\r\n x.times('1.23456780123456789e+9').plus(9876.5432321).dividedBy('4444562598.111772').ceil()\r\n\r\nMethod names over 5 letters in length have a shorter alias.\r\n\r\n x.squareRoot().dividedBy(y).toPower(3).equals(x.sqrt().div(y).pow(3)) // true\r\n x.cmp(y.mod(z).neg()) == 1 && x.comparedTo(y.modulo(z).negated()) == 1 // true\r\n\r\nLike Javascript's Number type, there are `toExponential`, `toFixed` and `toPrecision` methods\r\n\r\n x = new BigNumber(255.5) \r\n x.toExponential(5) // \"2.55500e+2\"\r\n x.toFixed(5) // \"255.50000\"\r\n x.toPrecision(5) // \"255.50\"\r\n\r\n and a base can be specified for `toString`.\r\n\r\n x.toString(16) // \"ff.8\"\r\n\r\nThe maximum number of decimal places and the rounding mode for division, square root, base conversion, and negative power operations is set by a configuration object passed to the `config` method of the `BigNumber` constructor. \r\nThe other arithmetic operations always give the exact result.\r\n\r\n BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 4 })\r\n // Alternatively, BigNumber.config( 10, 4 );\r\n\r\n x = new BigNumber(2);\r\n y = new BigNumber(3); \r\n z = x.div(y) // \"0.6666666667\"\r\n z.sqrt() // \"0.8164965809\"\r\n z.pow(-3) // \"3.3749999995\"\r\n z.toString(2) // \"0.1010101011\"\r\n z.times(z) // \"0.44444444448888888889\"\r\n z.times(z).round(10) // \"0.4444444445\"\r\n\r\nThere is a `toFraction` method with an optional *maximum denominator* argument\r\n\r\n y = new BigNumber(355)\r\n pi = y.dividedBy(113) // \"3.1415929204\"\r\n pi.toFraction() // [ \"7853982301\", \"2500000000\" ]\r\n pi.toFraction(1000) // [ \"355\", \"113\" ]\r\n\r\nand `isNaN` and `isFinite` methods, as `NaN` and `Infinity` are valid `BigNumber` values.\r\n\r\n x = new BigNumber(NaN) // \"NaN\"\r\n y = new BigNumber(Infinity) // \"Infinity\"\r\n x.isNaN() && !y.isNaN() && !x.isFinite() && !y.isFinite() // true\r\n\r\nThe value of a BigNumber is stored in a decimal floating point format in terms of a coefficient, exponent and sign.\r\n\r\n x = new BigNumber(-123.456); \r\n x.c // \"1,2,3,4,5,6\" coefficient (i.e. significand)\r\n x.e // 2 exponent \r\n x.s // -1 sign\r\n\r\nFor futher information see the API reference in the *doc* folder.\r\n\r\n## Test\r\n\r\nThe *test* directory contains the test scripts for each method. \r\n\r\nThe tests can be run with Node or a browser. \r\n\r\nFor a quick test of all the methods, from a command-line shell at the *test/* directory\r\n\r\n $ node quick-test\r\n\r\nTo test a single method in more depth, e.g.\r\n\r\n $ node toFraction\r\n\r\nTo test all the methods in more depth\r\n\r\n $ node every-test\r\n\r\nFor the browser, see *quick-test.html*, *single-test.html* and *every-test.html* in the *test/browser* directory. \r\n \r\n*bignumber-vs-number.html* enables some of the methods of bignumber.js to be compared with those of Javascript's Number type. \r\n\r\n## Performance\r\n\r\nThe *perf* directory contains two applications and a *lib* directory containing the BigDecimal libraries used by both. \r\n \r\n*bignumber-vs-bigdecimal.html* tests the performance of bignumber.js against the Javascript translations of two versions of BigDecimal, its use should be more or less self-explanatory.\r\n(The GWT version doesn't work in IE 6.) \r\n\r\n* GWT: java.math.BigDecimal \r\n\r\n* ICU4J: com.ibm.icu.math.BigDecimal \r\n \r\n\r\nThe BigDecimal in Node's npm registry is the GWT version. Despite its seeming popularity I have found it to have some serious bugs, see the Node script *perf/lib/bigdecimal_GWT/bugs.js* for examples of flaws in its *remainder*, *divide* and *compareTo* methods. \r\n\r\n*bigtime.js* is a Node command-line application which tests the performance of bignumber.js against the GWT version of BigDecimal from the npm registry. \r\n\r\nFor example, to compare the time taken by the bignumber.js `plus` method and the BigDecimal `add` method: \r\n \r\n $ node bigtime plus 10000 40 \r\n \r\nThis will time 10000 calls to each, using operands of up to 40 random digits and will check that the results match. \r\n \r\nFor help:\r\n\r\n $ node bigtime -h\r\n\r\nSee the README in the directory for more information.\r\n\r\n## Build\r\n\r\nI.e. minify.\r\n\r\nFor Node, if uglify-js is installed globally ( `npm install uglify-js -g` ) then \r\n\r\n uglifyjs -o ./bignumber.min.js ./bignumber.js\r\n\r\nwill create *bignumber.min.js*. \r\n\r\n## Feedback\r\n\r\nBugs: surely not! Open an issue, please. \r\nOther feedback to:\r\n\r\nMichael Mclaughlin \r\nM8ch88l@gmail.com\r\n\r\nBitcoin donation to: \r\n**1KdnpLRSkWJs4FXPzj7pQ39H4Ur6Urydti** \r\nThank you\r\n\r\n## Licence\r\n\r\nSee LICENCE.\r\n\r\n## Change Log\r\n\r\n####1.0.1\r\n* Bugfix: error messages with incorrect method name \r\n* Corrected a couple of spelling mistakes in comments\r\n* Very minor regex tweaks\r\n\r\n####1.0.0\r\n* 8/11/2012 Initial release \r\n\r\n[![githalytics.com alpha](https://cruel-carlota.pagodabox.com/50b85fd919b406ef9312551092a95fb7 \"githalytics.com\")](http://githalytics.com/MikeMcl/bignumber.js)\r\n", + "readmeFilename": "README.md", + "_id": "bignumber.js@1.0.1", + "dist": { + "shasum": "9a8a944c9b28febe317f7f605ed4245ef3d56dca" + }, + "_from": "bignumber.js@1.0.1", + "_resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-1.0.1.tgz" +} diff --git a/node_modules/mysql/node_modules/bignumber.js/perf/README.txt b/node_modules/mysql/node_modules/bignumber.js/perf/README.txt new file mode 100644 index 0000000..f018010 --- /dev/null +++ b/node_modules/mysql/node_modules/bignumber.js/perf/README.txt @@ -0,0 +1,45 @@ +bigtime.js +========== + * Creates random numbers and BigNumber and BigDecimal objects in batches. + * UNLIKELY TO RUN OUT OF MEMORY. + * Doesn't show separate times for object creation and method calls. + * Tests methods with one or two operands (i.e. includes abs and negate). + * Doesn't indicate random number creation completion. + * Doesn't calculate average number of digits of operands. + * Creates random numbers in exponential notation. + +bigtime-OOM.js +============== + * Creates random numbers and BigNumber and BigDecimal objects all in one go. + * MAY RUN OUT OF MEMORY, e.g. if iterations > 500000 and random digits > 40. + * SHOWS SEPARATE TIMES FOR OBJECT CREATION AND METHOD CALLS. + * Only tests methods with two operands (i.e. no abs or negate). + * Indicates random number creation completion. + * Calculates average number of digits of operands. + * Creates random numbers in normal notation. + + +In general, bigtime.js is recommended over bigtime-OOM.js, which is included as +separate timings for object creation and method calls may be preferred. + + +Usage +===== + +For help: + + $ node bigtime -h + +Examples: + +Compare the time taken by the BigNumber plus method and the BigDecimal add method. +Time 10000 calls to each. +Use operands of up to 40 random digits (each unique for each iteration). +Check that the BigNumber results match the BigDecimal results. + + $ node bigtime plus 10000 40 + + + + + diff --git a/node_modules/mysql/node_modules/bignumber.js/perf/bignumber-vs-bigdecimal.html b/node_modules/mysql/node_modules/bignumber.js/perf/bignumber-vs-bigdecimal.html new file mode 100644 index 0000000..266f84f --- /dev/null +++ b/node_modules/mysql/node_modules/bignumber.js/perf/bignumber-vs-bigdecimal.html @@ -0,0 +1,699 @@ + + + + + + Testing BigNumber + + + + + +

    Testing BigNumber against BigDecimal

    + +
    + +
    + + + +
    + + + +
    + + + +
    + +
    + BigDecimal: + + + BigInteger + add +
    + +
    + Random number digits: + + + +
    + +
    + Decimal places: + Rounding: +
    + +
    + Iterations: + +
    + +
    + + Click a method to stop + Press space bar to pause/unpause +
    + +
    + +
    0
    +
    +
    + + + + + + + + diff --git a/node_modules/mysql/node_modules/bignumber.js/perf/bigtime-OOM.js b/node_modules/mysql/node_modules/bignumber.js/perf/bigtime-OOM.js new file mode 100644 index 0000000..2dc7f71 --- /dev/null +++ b/node_modules/mysql/node_modules/bignumber.js/perf/bigtime-OOM.js @@ -0,0 +1,366 @@ + +var arg, i, max, method, methodIndex, decimalPlaces, + reps, rounding, start, timesEqual, Xs, Ys, + bdM, bdMT, bdOT, bdRs, bdXs, bdYs, + bnM, bnMT, bnOT, bnRs, bnXs, bnYs, + memoryUsage, showMemory, bnR, bdR, + prevRss, prevHeapUsed, prevHeapTotal, + args = process.argv.splice(2), + BigDecimal = require('./lib/bigdecimal_GWT/bigdecimal').BigDecimal, + BigNumber = require('../bignumber'), + bdMs = ['add', 'subtract', 'multiply', 'divide', 'remainder', 'compareTo', 'pow'], + bnMs1 = ['plus', 'minus', 'times', 'dividedBy', 'modulo', 'comparedTo', 'toPower'], + bnMs2 = ['', '', '', 'div', 'mod', 'cmp', ''], + Ms = [bdMs, bnMs1, bnMs2], + allMs = [].concat.apply([], Ms), + expTotal = 0, + total = 0, + + ALWAYS_SHOW_MEMORY = false, + DEFAULT_MAX_DIGITS = 20, + DEFAULT_POW_MAX_DIGITS = 20, + DEFAULT_REPS = 1e4, + DEFAULT_POW_REPS = 1e2, + DEFAULT_PLACES = 20, + MAX_POWER = 50, + + getRandom = function (maxDigits) { + var i = 0, z, + // number of digits - 1 + n = Math.random() * ( maxDigits || 1 ) | 0, + r = ( Math.random() * 10 | 0 ) + ''; + + if ( n ) { + if ( z = r === '0' ) { + r += '.'; + } + + for ( ; i++ < n; r += Math.random() * 10 | 0 ){} + + // 20% chance of integer + if ( !z && Math.random() > 0.2 ) + r = r.slice( 0, i = ( Math.random() * n | 0 ) + 1 ) + '.' + r.slice(i); + } + + // Avoid 'division by zero' error with division and modulo. + if ((bdM == 'divide' || bdM == 'remainder') && parseFloat(r) === 0) + r = ( ( Math.random() * 9 | 0 ) + 1 ) + ''; + + total += n + 1; + + // 50% chance of negative + return Math.random() > 0.5 ? r : '-' + r; + }, + + pad = function (str) { + str += '... '; + while (str.length < 26) str += ' '; + return str; + }, + + getFastest = function (bn, bd) { + var r; + if (Math.abs(bn - bd) > 2) { + r = 'Big' + ((bn < bd) + ? 'Number ' + (bn ? parseFloat((bd / bn).toFixed(1)) : bd) + : 'Decimal ' + (bd ? parseFloat((bn / bd).toFixed(1)) : bn)) + + ' times faster'; + } else { + timesEqual = 1; + r = 'Times approximately equal'; + } + return r; + }, + + showMemoryChange = function () { + if (showMemory) { + memoryUsage = process.memoryUsage(); + + var rss = memoryUsage.rss, + heapUsed = memoryUsage.heapUsed, + heapTotal = memoryUsage.heapTotal; + + console.log(' Change in memory usage: ' + + ' rss: ' + toKB(rss - prevRss) + + ', hU: ' + toKB(heapUsed - prevHeapUsed) + + ', hT: ' + toKB(heapTotal - prevHeapTotal)); + prevRss = rss; prevHeapUsed = heapUsed; prevHeapTotal = heapTotal; + } + }, + + toKB = function (m) { + return parseFloat((m / 1024).toFixed(1)) + ' KB'; + }; + + +// PARSE COMMAND LINE AND SHOW HELP + +if (arg = args[0], typeof arg != 'undefined' && !isFinite(arg) && + allMs.indexOf(arg) == -1 && !/^-*m$/i.test(arg)) { + console.log( + '\n node bigtime-OOM [METHOD] [METHOD CALLS [MAX DIGITS [DECIMAL PLACES]]]\n' + + '\n METHOD: The method to be timed and compared with the automatically' + + '\n chosen corresponding method from BigDecimal or BigNumber\n' + + '\n BigDecimal: add subtract multiply divide remainder compareTo pow' + + '\n BigNumber: plus minus times dividedBy modulo comparedTo toPower' + + '\n (div mod cmp pow)' + + '\n\n METHOD CALLS: The number of method calls to be timed' + + '\n\n MAX DIGITS: The maximum number of digits of the random ' + + '\n numbers used in the method calls' + + '\n\n DECIMAL PLACES: The number of decimal places used in division' + + '\n (The rounding mode is randomly chosen)' + + '\n\n Default values: METHOD: randomly chosen' + + '\n METHOD CALLS: ' + DEFAULT_REPS + + ' (pow: ' + DEFAULT_POW_REPS + ')' + + '\n MAX DIGITS: ' + DEFAULT_MAX_DIGITS + + ' (pow: ' + DEFAULT_POW_MAX_DIGITS + ')' + + '\n DECIMAL PLACES: ' + DEFAULT_PLACES + '\n' + + '\n E.g.s node bigtime-OOM\n node bigtime-OOM minus' + + '\n node bigtime-OOM add 100000' + + '\n node bigtime-OOM times 20000 100' + + '\n node bigtime-OOM div 100000 50 20' + + '\n node bigtime-OOM 9000' + + '\n node bigtime-OOM 1000000 20\n' + + '\n To show memory usage include an argument m or -m' + + '\n E.g. node bigtime-OOM m add'); +} else { + BigNumber.config({EXPONENTIAL_AT : 1E9, RANGE : 1E9}); + Number.prototype.toPlainString = Number.prototype.toString; + + for (i = 0; i < args.length; i++) { + arg = args[i]; + + if (isFinite(arg)) { + arg = Math.abs(parseInt(arg)); + if (reps == null) { + reps = arg <= 1e10 ? arg : 0; + } else if (max == null) { + max = arg <= 1e6 ? arg : 0; + } else if (decimalPlaces == null) { + decimalPlaces = arg <= 1e6 ? arg : DEFAULT_PLACES; + } + } else if (/^-*m$/i.test(arg)) { + showMemory = true; + } else if (method == null) { + method = arg; + } + } + + for (i = 0; + i < Ms.length && (methodIndex = Ms[i].indexOf(method)) == -1; + i++) {} + + bnM = methodIndex == -1 + ? bnMs1[methodIndex = Math.floor(Math.random() * bdMs.length)] + : (Ms[i][0] == 'add' ? bnMs1 : Ms[i])[methodIndex]; + + bdM = bdMs[methodIndex]; + + if (!reps) + reps = bdM == 'pow' ? DEFAULT_POW_REPS : DEFAULT_REPS; + if (!max) + max = bdM == 'pow' ? DEFAULT_POW_MAX_DIGITS : DEFAULT_MAX_DIGITS; + if (decimalPlaces == null) + decimalPlaces = DEFAULT_PLACES; + + Xs = [reps], Ys = [reps]; + bdXs = [reps], bdYs = [reps], bdRs = [reps]; + bnXs = [reps], bnYs = [reps], bnRs = [reps]; + showMemory = showMemory || ALWAYS_SHOW_MEMORY; + + console.log('\n BigNumber %s vs BigDecimal %s', bnM, bdM); + console.log('\n Method calls: %d', reps); + + if (bdM == 'divide') { + rounding = Math.floor(Math.random() * 7); + console.log('\n Decimal places: %d\n Rounding mode: %d', decimalPlaces, rounding); + BigNumber.config(decimalPlaces, rounding); + } + + if (showMemory) { + memoryUsage = process.memoryUsage(); + console.log(' Memory usage: rss: ' + + toKB(prevRss = memoryUsage.rss) + ', hU: ' + + toKB(prevHeapUsed = memoryUsage.heapUsed) + ', hT: ' + + toKB(prevHeapTotal = memoryUsage.heapTotal)); + } + + + // CREATE RANDOM NUMBERS + + // POW: BigDecimal requires JS Number type for exponent argument + if (bdM == 'pow') { + + process.stdout.write('\n Creating ' + reps + + ' random numbers (max. digits: ' + max + ')... '); + + for (i = 0; i < reps; i++) { + Xs[i] = getRandom(max); + } + console.log('done\n Average number of digits: %d', + ((total / reps) | 0)); + + process.stdout.write(' Creating ' + reps + + ' random integer exponents (max. value: ' + MAX_POWER + ')... '); + + for (i = 0; i < reps; i++) { + bdYs[i] = bnYs[i] = Math.floor(Math.random() * (MAX_POWER + 1)); + expTotal += bdYs[i]; + } + console.log('done\n Average value: %d', ((expTotal / reps) | 0)); + + showMemoryChange(); + + + // POW: TIME CREATION OF BIGDECIMALS + + process.stdout.write('\n Creating BigDecimals... '); + + start = +new Date(); + for (i = 0; i < reps; i++) { + bdXs[i] = new BigDecimal(Xs[i]); + } + bdOT = +new Date() - start; + + console.log('done. Time taken: %s ms', bdOT || '<1'); + + showMemoryChange(); + + + // POW: TIME CREATION OF BIGNUMBERS + + process.stdout.write(' Creating BigNumbers... '); + + start = +new Date(); + for (i = 0; i < reps; i++) { + bnXs[i] = new BigNumber(Xs[i]); + } + bnOT = +new Date() - start; + + console.log('done. Time taken: %s ms', bnOT || '<1'); + + + // NOT POW + } else { + + process.stdout.write('\n Creating ' + (reps * 2) + + ' random numbers (max. digits: ' + max + ')... '); + + + for (i = 0; i < reps; i++) { + Xs[i] = getRandom(max); + Ys[i] = getRandom(max); + } + console.log('done\n Average number of digits: %d', + ( total / (reps * 2) ) | 0); + + showMemoryChange(); + + + // TIME CREATION OF BIGDECIMALS + + process.stdout.write('\n Creating BigDecimals... '); + + start = +new Date(); + for (i = 0; i < reps; i++) { + bdXs[i] = new BigDecimal(Xs[i]); + bdYs[i] = new BigDecimal(Ys[i]); + } + bdOT = +new Date() - start; + + console.log('done. Time taken: %s ms', bdOT || '<1'); + + showMemoryChange(); + + + // TIME CREATION OF BIGNUMBERS + + process.stdout.write(' Creating BigNumbers... '); + + start = +new Date(); + for (i = 0; i < reps; i++) { + bnXs[i] = new BigNumber(Xs[i]); + bnYs[i] = new BigNumber(Ys[i]); + } + bnOT = +new Date() - start; + + console.log('done. Time taken: %s ms', bnOT || '<1'); + } + + showMemoryChange(); + + console.log('\n Object creation: %s\n', getFastest(bnOT, bdOT)); + + + // TIME BIGDECIMAL METHOD CALLS + + process.stdout.write(pad(' BigDecimal ' + bdM)); + + if (bdM == 'divide') { + start = +new Date(); + while (i--) bdRs[i] = bdXs[i][bdM](bdYs[i], decimalPlaces, rounding); + bdMT = +new Date() - start; + } else { + start = +new Date(); + while (i--) bdRs[i] = bdXs[i][bdM](bdYs[i]); + bdMT = +new Date() - start; + } + + console.log('done. Time taken: %s ms', bdMT || '<1'); + + + // TIME BIGNUMBER METHOD CALLS + + i = reps; + process.stdout.write(pad(' BigNumber ' + bnM)); + + start = +new Date(); + while (i--) bnRs[i] = bnXs[i][bnM](bnYs[i]); + bnMT = +new Date() - start; + + console.log('done. Time taken: %s ms', bnMT || '<1'); + + + // TIMINGS SUMMARY + + console.log('\n Method calls: %s', getFastest(bnMT, bdMT)); + + if (!timesEqual) { + console.log('\n Overall: ' + + getFastest((bnOT || 1) + (bnMT || 1), (bdOT || 1) + (bdMT || 1))); + } + + + + // CHECK FOR MISMATCHES + + process.stdout.write('\n Checking for mismatches... '); + + for (i = 0; i < reps; i++) { + + bnR = bnRs[i].toString(); + bdR = bdRs[i].toPlainString(); + + // Strip any trailing zeros from non-integer BigDecimals + if (bdR.indexOf('.') != -1) { + bdR = bdR.replace(/\.?0+$/, ''); + } + + if (bdR !== bnR) { + console.log('breaking on first mismatch (result number %d):' + + '\n\n BigDecimal: %s\n BigNumber: %s', i, bdR, bnR); + console.log('\n x: %s\n y: %s', Xs[i], Ys[i]); + + if (bdM == 'divide') { + console.log('\n dp: %d\n r: %d',decimalPlaces, rounding); + } + break; + } + } + if (i == reps) { + console.log('done. None found.\n'); + } +} + + + diff --git a/node_modules/mysql/node_modules/bignumber.js/perf/bigtime.js b/node_modules/mysql/node_modules/bignumber.js/perf/bigtime.js new file mode 100644 index 0000000..8398df8 --- /dev/null +++ b/node_modules/mysql/node_modules/bignumber.js/perf/bigtime.js @@ -0,0 +1,335 @@ + +var arg, i, j, max, method, methodIndex, decimalPlaces, rounding, reps, start, + timesEqual, xs, ys, prevRss, prevHeapUsed, prevHeapTotal, showMemory, + bdM, bdT, bdR, bdRs, + bnM, bnT, bnR, bnRs, + args = process.argv.splice(2), + BigDecimal = require('./lib/bigdecimal_GWT/bigdecimal').BigDecimal, + BigNumber = require('../bignumber'), + bdMs = ['add', 'subtract', 'multiply', 'divide', 'remainder', + 'compareTo', 'pow', 'negate', 'abs'], + bnMs1 = ['plus', 'minus', 'times', 'dividedBy', 'modulo', + 'comparedTo', 'toPower', 'negated', 'abs'], + bnMs2 = ['', '', '', 'div', 'mod', 'cmp', '', 'neg', ''], + Ms = [bdMs, bnMs1, bnMs2], + allMs = [].concat.apply([], Ms), + bdTotal = 0, + bnTotal = 0, + BD = {}, + BN = {}, + + ALWAYS_SHOW_MEMORY = false, + DEFAULT_MAX_DIGITS = 20, + DEFAULT_POW_MAX_DIGITS = 20, + DEFAULT_REPS = 1e4, + DEFAULT_POW_REPS = 1e2, + DEFAULT_PLACES = 20, + MAX_POWER = 50, + MAX_RANDOM_EXPONENT = 100, + + getRandom = function (maxDigits) { + var i = 0, z, + // number of digits - 1 + n = Math.random() * ( maxDigits || 1 ) | 0, + r = ( Math.random() * 10 | 0 ) + ''; + + if ( n ) { + if ( z = r === '0' ) { + r += '.'; + } + + for ( ; i++ < n; r += Math.random() * 10 | 0 ){} + + // 20% chance of integer + if ( !z && Math.random() > 0.2 ) + r = r.slice( 0, i = ( Math.random() * n | 0 ) + 1 ) + '.' + r.slice(i); + } + + // Avoid 'division by zero' error with division and modulo. + if ((bdM == 'divide' || bdM == 'remainder') && parseFloat(r) === 0) + r = ( ( Math.random() * 9 | 0 ) + 1 ) + ''; + + // 50% chance of negative + return Math.random() > 0.5 ? r : '-' + r; + }, + + // Returns exponential notation. + //getRandom = function (maxDigits) { + // var i = 0, + // // n is the number of significant digits - 1 + // n = Math.random() * (maxDigits || 1) | 0, + // r = ( ( Math.random() * 9 | 0 ) + 1 ) + ( n ? '.' : '' ); + // + // for (; i++ < n; r += Math.random() * 10 | 0 ){} + // + // // Add exponent. + // r += 'e' + ( Math.random() > 0.5 ? '+' : '-' ) + + // ( Math.random() * MAX_RANDOM_EXPONENT | 0 ); + // + // // 50% chance of being negative. + // return Math.random() > 0.5 ? r : '-' + r + //}, + + getFastest = function (bn, bd) { + var r; + if (Math.abs(bn - bd) > 2) { + r = 'Big' + ((bn < bd) + ? 'Number was ' + (bn ? parseFloat((bd / bn).toFixed(1)) : bd) + : 'Decimal was ' + (bd ? parseFloat((bn / bd).toFixed(1)) : bn)) + + ' times faster'; + } else { + timesEqual = 1; + r = 'Times approximately equal'; + } + return r; + }, + + getMemory = function (obj) { + if (showMemory) { + var mem = process.memoryUsage(), + rss = mem.rss, + heapUsed = mem.heapUsed, + heapTotal = mem.heapTotal; + + if (obj) { + obj.rss += (rss - prevRss); + obj.hU += (heapUsed - prevHeapUsed); + obj.hT += (heapTotal - prevHeapTotal); + } + prevRss = rss; + prevHeapUsed = heapUsed; + prevHeapTotal = heapTotal; + } + }, + + getMemoryTotals = function (obj) { + function toKB(m) {return parseFloat((m / 1024).toFixed(1))} + return '\trss: ' + toKB(obj.rss) + + '\thU: ' + toKB(obj.hU) + + '\thT: ' + toKB(obj.hT); + }; + + +if (arg = args[0], typeof arg != 'undefined' && !isFinite(arg) && + allMs.indexOf(arg) == -1 && !/^-*m$/i.test(arg)) { + console.log( + '\n node bigtime [METHOD] [METHOD CALLS [MAX DIGITS [DECIMAL PLACES]]]\n' + + '\n METHOD: The method to be timed and compared with the' + + '\n \t corresponding method from BigDecimal or BigNumber\n' + + '\n BigDecimal: add subtract multiply divide remainder' + + ' compareTo pow\n\t\tnegate abs\n\n BigNumber: plus minus times' + + ' dividedBy modulo comparedTo toPower\n\t\tnegated abs' + + ' (div mod cmp pow neg)' + + '\n\n METHOD CALLS: The number of method calls to be timed' + + '\n\n MAX DIGITS: The maximum number of digits of the random ' + + '\n\t\tnumbers used in the method calls\n\n ' + + 'DECIMAL PLACES: The number of decimal places used in division' + + '\n\t\t(The rounding mode is randomly chosen)' + + '\n\n Default values: METHOD: randomly chosen' + + '\n\t\t METHOD CALLS: ' + DEFAULT_REPS + + ' (pow: ' + DEFAULT_POW_REPS + ')' + + '\n\t\t MAX DIGITS: ' + DEFAULT_MAX_DIGITS + + ' (pow: ' + DEFAULT_POW_MAX_DIGITS + ')' + + '\n\t\t DECIMAL PLACES: ' + DEFAULT_PLACES + '\n' + + '\n E.g. node bigtime\n\tnode bigtime minus\n\tnode bigtime add 100000' + + '\n\tnode bigtime times 20000 100\n\tnode bigtime div 100000 50 20' + + '\n\tnode bigtime 9000\n\tnode bigtime 1000000 20\n' + + '\n To show memory usage, include an argument m or -m' + + '\n E.g. node bigtime m add'); +} else { + + BigNumber.config({EXPONENTIAL_AT : 1E9, RANGE : 1E9}); + Number.prototype.toPlainString = Number.prototype.toString; + + for (i = 0; i < args.length; i++) { + arg = args[i]; + if (isFinite(arg)) { + arg = Math.abs(parseInt(arg)); + if (reps == null) + reps = arg <= 1e10 ? arg : 0; + else if (max == null) + max = arg <= 1e6 ? arg : 0; + else if (decimalPlaces == null) + decimalPlaces = arg <= 1e6 ? arg : DEFAULT_PLACES; + } else if (/^-*m$/i.test(arg)) + showMemory = true; + else if (method == null) + method = arg; + } + + for (i = 0; + i < Ms.length && (methodIndex = Ms[i].indexOf(method)) == -1; + i++) {} + + bnM = methodIndex == -1 + ? bnMs1[methodIndex = Math.floor(Math.random() * bdMs.length)] + : (Ms[i][0] == 'add' ? bnMs1 : Ms[i])[methodIndex]; + + bdM = bdMs[methodIndex]; + + if (!reps) + reps = bdM == 'pow' ? DEFAULT_POW_REPS : DEFAULT_REPS; + if (!max) + max = bdM == 'pow' ? DEFAULT_POW_MAX_DIGITS : DEFAULT_MAX_DIGITS; + if (decimalPlaces == null) + decimalPlaces = DEFAULT_PLACES; + + xs = [reps], ys = [reps], bdRs = [reps], bnRs = [reps]; + BD.rss = BD.hU = BD.hT = BN.rss = BN.hU = BN.hT = 0; + showMemory = showMemory || ALWAYS_SHOW_MEMORY; + + console.log('\n BigNumber %s vs BigDecimal %s\n' + + '\n Method calls: %d\n\n Random operands: %d', bnM, bdM, reps, + bdM == 'abs' || bdM == 'negate' || bdM == 'abs' ? reps : reps * 2); + + console.log(' Max. digits of operands: %d', max); + + if (bdM == 'divide') { + rounding = Math.floor(Math.random() * 7); + console.log('\n Decimal places: %d\n Rounding mode: %d', decimalPlaces, rounding); + BigNumber.config(decimalPlaces, rounding); + } + + process.stdout.write('\n Testing started'); + + outer: + for (; reps > 0; reps -= 1e4) { + + j = Math.min(reps, 1e4); + + + // GENERATE RANDOM OPERANDS + + for (i = 0; i < j; i++) { + xs[i] = getRandom(max); + } + + if (bdM == 'pow') { + for (i = 0; i < j; i++) { + ys[i] = Math.floor(Math.random() * (MAX_POWER + 1)); + } + } else if (bdM != 'abs' && bdM != 'negate') { + for (i = 0; i < j; i++) { + ys[i] = getRandom(max); + } + } + + getMemory(); + + + // BIGDECIMAL + + if (bdM == 'divide') { + + start = +new Date(); + for (i = 0; i < j; i++) { + bdRs[i] = new BigDecimal(xs[i])[bdM](new BigDecimal(ys[i]), + decimalPlaces, rounding); + } + bdT = +new Date() - start; + + } else if (bdM == 'pow') { + + start = +new Date(); + for (i = 0; i < j; i++) { + bdRs[i] = new BigDecimal(xs[i])[bdM](ys[i]); + } + bdT = +new Date() - start; + + } else if (bdM == 'abs' || bdM == 'negate') { + + start = +new Date(); + for (i = 0; i < j; i++) { + bdRs[i] = new BigDecimal(xs[i])[bdM](); + } + bdT = +new Date() - start; + + } else { + + start = +new Date(); + for (i = 0; i < j; i++) { + bdRs[i] = new BigDecimal(xs[i])[bdM](new BigDecimal(ys[i])); + } + bdT = +new Date() - start; + + } + + getMemory(BD); + + + // BIGNUMBER + + if (bdM == 'pow') { + + start = +new Date(); + for (i = 0; i < j; i++) { + bnRs[i] = new BigNumber(xs[i])[bnM](ys[i]); + } + bnT = +new Date() - start; + + } else if (bdM == 'abs' || bdM == 'negate') { + + start = +new Date(); + for (i = 0; i < j; i++) { + bnRs[i] = new BigNumber(xs[i])[bnM](); + } + bnT = +new Date() - start; + + } else { + + start = +new Date(); + for (i = 0; i < j; i++) { + bnRs[i] = new BigNumber(xs[i])[bnM](new BigNumber(ys[i])); + } + bnT = +new Date() - start; + + } + + getMemory(BN); + + + // CHECK FOR MISMATCHES + + for (i = 0; i < j; i++) { + bnR = bnRs[i].toString(); + bdR = bdRs[i].toPlainString(); + + // Strip any trailing zeros from non-integer BigDecimals + if (bdR.indexOf('.') != -1) { + bdR = bdR.replace(/\.?0+$/, ''); + } + + if (bdR !== bnR) { + console.log('\n breaking on first mismatch (result number %d):' + + '\n\n BigDecimal: %s\n BigNumber: %s', i, bdR, bnR); + console.log('\n x: %s\n y: %s', xs[i], ys[i]); + + if (bdM == 'divide') + console.log('\n dp: %d\n r: %d',decimalPlaces, rounding); + break outer; + } + } + + bdTotal += bdT; + bnTotal += bnT; + + process.stdout.write(' .'); + } + + + // TIMINGS SUMMARY + + + if (i == j) { + console.log(' done\n\n No mismatches.'); + if (showMemory) { + console.log('\n Change in memory usage (KB):' + + '\n\tBigDecimal' + getMemoryTotals(BD) + + '\n\tBigNumber ' + getMemoryTotals(BN)); + } + console.log('\n Time taken:' + + '\n\tBigDecimal ' + (bdTotal || '<1') + ' ms' + + '\n\tBigNumber ' + (bnTotal || '<1') + ' ms\n\n ' + + getFastest(bnTotal, bdTotal) + '\n'); + } +} \ No newline at end of file diff --git a/node_modules/mysql/node_modules/bignumber.js/perf/lib/bigdecimal_GWT/BigDecTest.class b/node_modules/mysql/node_modules/bignumber.js/perf/lib/bigdecimal_GWT/BigDecTest.class new file mode 100644 index 0000000..455ed36 Binary files /dev/null and b/node_modules/mysql/node_modules/bignumber.js/perf/lib/bigdecimal_GWT/BigDecTest.class differ diff --git a/node_modules/mysql/node_modules/bignumber.js/perf/lib/bigdecimal_GWT/BigDecTest.java b/node_modules/mysql/node_modules/bignumber.js/perf/lib/bigdecimal_GWT/BigDecTest.java new file mode 100644 index 0000000..487ffdb --- /dev/null +++ b/node_modules/mysql/node_modules/bignumber.js/perf/lib/bigdecimal_GWT/BigDecTest.java @@ -0,0 +1,60 @@ +// javac BigDecTest.java +// java BigDecTest + +import java.math.BigDecimal; + +public class BigDecTest +{ + public static void main(String[] args) { + + int i; + BigDecimal x, y, r; + + // remainder + + x = new BigDecimal("9.785496E-2"); + y = new BigDecimal("-5.9219189762E-2"); + r = x.remainder(y); + System.out.println( r.toString() ); + // 0.038635770238 + + + x = new BigDecimal("1.23693014661017964112E-5"); + y = new BigDecimal("-6.9318042E-7"); + r = x.remainder(y); + System.out.println( r.toPlainString() ); + // 0.0000005852343261017964112 + + + // divide + + x = new BigDecimal("6.9609119610E-78"); + y = new BigDecimal("4E-48"); + r = x.divide(y, 40, 6); // ROUND_HALF_EVEN + System.out.println( r.toString() ); + // 1.7402279902E-30 + + + x = new BigDecimal("5.383458817E-83"); + y = new BigDecimal("8E-54"); + r = x.divide(y, 40, 6); + System.out.println( r.toString() ); + // 6.7293235212E-30 + + + // compareTo + + x = new BigDecimal("0.04"); + y = new BigDecimal("0.079393068"); + i = x.compareTo(y); + System.out.println(i); + // -1 + + x = new BigDecimal("7.88749578569876987785987658649E-10"); + y = new BigDecimal("4.2545098709E-6"); + i = x.compareTo(y); + System.out.println(i); + // -1 + } +} + diff --git a/node_modules/mysql/node_modules/bignumber.js/perf/lib/bigdecimal_GWT/LICENCE.txt b/node_modules/mysql/node_modules/bignumber.js/perf/lib/bigdecimal_GWT/LICENCE.txt new file mode 100644 index 0000000..eb284e4 --- /dev/null +++ b/node_modules/mysql/node_modules/bignumber.js/perf/lib/bigdecimal_GWT/LICENCE.txt @@ -0,0 +1,205 @@ +https://github.com/iriscouch/bigdecimal.js + +BigDecimal for Javascript is licensed under the Apache License, version 2.0: + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. \ No newline at end of file diff --git a/node_modules/mysql/node_modules/bignumber.js/perf/lib/bigdecimal_GWT/bigdecimal.js b/node_modules/mysql/node_modules/bignumber.js/perf/lib/bigdecimal_GWT/bigdecimal.js new file mode 100644 index 0000000..f72496c --- /dev/null +++ b/node_modules/mysql/node_modules/bignumber.js/perf/lib/bigdecimal_GWT/bigdecimal.js @@ -0,0 +1,592 @@ + +(function(exports) { + +if(typeof document === 'undefined') + var document = {}; + +if(typeof window === 'undefined') + var window = {}; +if(!window.document) + window.document = document; + +if(typeof navigator === 'undefined') + var navigator = {}; +if(!navigator.userAgent) + navigator.userAgent = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_2) AppleWebKit/534.51.22 (KHTML, like Gecko) Version/5.1.1 Safari/534.51.22'; + +function gwtapp() {}; + +(function(){var $gwt_version = "2.4.0";var $wnd = window;var $doc = $wnd.document;var $moduleName, $moduleBase;var $strongName = '4533928AF3A2228268FD8F10BB191446';var $stats = $wnd.__gwtStatsEvent ? function(a) {return $wnd.__gwtStatsEvent(a);} : null;var $sessionId = $wnd.__gwtStatsSessionId ? $wnd.__gwtStatsSessionId : null;$stats && $stats({moduleName:'gwtapp',sessionId:$sessionId,subSystem:'startup',evtGroup:'moduleStartup',millis:(new Date()).getTime(),type:'moduleEvalStart'});function H(){} +function P(){} +function O(){} +function N(){} +function M(){} +function rr(){} +function gb(){} +function ub(){} +function pb(){} +function Fb(){} +function Ab(){} +function Lb(){} +function Tb(){} +function Kb(){} +function Zb(){} +function _b(){} +function fc(){} +function ic(){} +function hc(){} +function Se(){} +function Re(){} +function Ze(){} +function Ye(){} +function Xe(){} +function Ah(){} +function Hh(){} +function Gh(){} +function Ej(){} +function Mj(){} +function Uj(){} +function _j(){} +function gk(){} +function mk(){} +function pk(){} +function wk(){} +function vk(){} +function Dk(){} +function Ik(){} +function Qk(){} +function Uk(){} +function il(){} +function ol(){} +function rl(){} +function Tl(){} +function Xl(){} +function km(){} +function om(){} +function Nn(){} +function Np(){} +function ep(){} +function dp(){} +function yp(){} +function yo(){} +function Zo(){} +function xp(){} +function Hp(){} +function Mp(){} +function Xp(){} +function bq(){} +function jq(){} +function qq(){} +function Dq(){} +function Hq(){} +function Nq(){} +function Qq(){} +function Zq(){} +function Yq(){} +function Yj(){Wj()} +function Ij(){Gj()} +function Eh(){Ch()} +function Ek(){Cb()} +function qk(){Cb()} +function Rk(){Cb()} +function Vk(){Cb()} +function jl(){Cb()} +function Oq(){Cb()} +function kk(){ik()} +function fm(){Yl(this)} +function gm(){Yl(this)} +function mg(a){Hf(this,a)} +function mq(a){this.c=a} +function bk(a){this.b=a} +function Cp(a){this.b=a} +function Sp(a){this.b=a} +function V(a){Cb();this.f=a} +function nk(a){V.call(this,a)} +function rk(a){V.call(this,a)} +function Sk(a){V.call(this,a)} +function Wk(a){V.call(this,a)} +function kl(a){V.call(this,a)} +function Yl(a){a.b=new fc} +function Ul(){this.b=new fc} +function rb(){rb=rr;qb=new ub} +function lr(){lr=rr;kr=new gr} +function jr(a,b){return b} +function ac(a,b){a.b+=b} +function bc(a,b){a.b+=b} +function cc(a,b){a.b+=b} +function dc(a,b){a.b+=b} +function or(a,b){lr();a[Ls]=b} +function nr(a,b){lr();ar(a,b)} +function _q(a,b,c){rp(a.b,b,c)} +function Jg(){rf();Hf(this,Tr)} +function pl(a){Sk.call(this,a)} +function Hk(a){return isNaN(a)} +function Jj(a){return new Oi(a)} +function Zj(a){return new Oj(a)} +function dl(a){return a<0?-a:a} +function hl(a,b){return ab?a:b} +function xe(a,b){return !we(a,b)} +function ye(a,b){return !ve(a,b)} +function ir(a,b){return new b(a)} +function Oj(a){this.b=new Yn(a)} +function Nj(){this.b=(Un(),Rn)} +function ak(){this.b=(Qo(),Fo)} +function Wo(){Qo();return zo} +function mr(a,b){lr();_q(kr,a,b)} +function br(a,b){a[b]||(a[b]={})} +function kq(a){return a.b=b)&&hq(a,b)} +function xc(a,b){return a!=null&&tc(a,b)} +function db(a){return yc(a)?Db(wc(a)):Lr} +function Z(a){return yc(a)?$(wc(a)):a+Lr} +function Fl(a){return lc(Vd,{6:1},1,a,0)} +function vq(){this.b=lc(Td,{6:1},0,0,0)} +function Pl(){Pl=rr;Ml={};Ol={}} +function Yo(){Yo=rr;Xo=Jk((Qo(),zo))} +function ik(){if(!hk){hk=true;jk()}} +function Gj(){if(!Fj){Fj=true;Hj()}} +function Wj(){if(!Vj){Vj=true;new kk;Xj()}} +function gr(){this.b=new Fq;new Fq;new Fq} +function X(a){Cb();this.c=a;Bb(new Tb,this)} +function Pi(a){Oh();oi.call(this,Hm(a,0))} +function gg(a){hg.call(this,a,0,a.length)} +function fg(a,b){cg.call(this,a);If(this,b)} +function ze(a,b){ee(a,b,true);return ae} +function tq(a,b){dq(b,a.c);return a.b[b]} +function rq(a,b){nc(a.b,a.c++,b);return true} +function _l(a,b,c){dc(a.b,Ll(b,0,c));return a} +function kb(a,b,c){return a.apply(b,c);var d} +function em(a,b,c){return ec(a.b,b,b,c),a} +function Af(a,b,c){return yf(a,b,Bc(a.f),c)} +function xf(a,b,c){return yf(a,b,Bc(a.f),Uo(c))} +function Bl(c,a,b){return c.substr(a,b-a)} +function Al(b,a){return b.substr(a,b.length-a)} +function fl(a){return Math.log(a)*Math.LOG10E} +function cb(a){return a==null?null:a.name} +function $(a){return a==null?null:a.message} +function yc(a){return a!=null&&a.tM!=rr&&!tc(a,1)} +function ec(a,b,c,d){a.b=Bl(a.b,0,b)+d+Al(a.b,c)} +function eg(a,b,c){dg.call(this,a,b);If(this,c)} +function pg(a,b){this.g=a;this.f=b;this.b=sg(a)} +function si(a,b,c){Oh();this.f=a;this.e=b;this.b=c} +function sl(a){this.b='Unknown';this.d=a;this.c=-1} +function yk(a,b){var c;c=new wk;c.d=a+b;return c} +function dr(a,b){var c;c=mp(a.b,b);return wc(c)} +function fb(a){var b;return b=a,zc(b)?b.hC():ob(b)} +function To(a){Qo();return Ok((Yo(),Xo),a)} +function qe(a,b){return de(a.l&b.l,a.m&b.m,a.h&b.h)} +function De(a,b){return de(a.l|b.l,a.m|b.m,a.h|b.h)} +function Le(a,b){return de(a.l^b.l,a.m^b.m,a.h^b.h)} +function Bm(a,b){return (a.b[~~b>>5]&1<<(b&31))!=0} +function Cq(a,b){var c;for(c=0;c=b&&a.splice(0,b);return a} +function wb(a,b){!a&&(a=[]);a[a.length]=b;return a} +function Ph(a,b){if(mi(a,b)){return tm(a,b)}return a} +function ii(a,b){if(!mi(a,b)){return tm(a,b)}return a} +function _d(a){if(xc(a,15)){return a}return new X(a)} +function Eb(){try{null.a()}catch(a){return a}} +function Ak(a){var b;b=new wk;b.d=Lr+a;b.c=1;return b} +function eb(a,b){var c;return c=a,zc(c)?c.eQ(b):c===b} +function se(a,b){return a.l==b.l&&a.m==b.m&&a.h==b.h} +function Ce(a,b){return a.l!=b.l||a.m!=b.m||a.h!=b.h} +function de(a,b,c){return _=new Se,_.l=a,_.m=b,_.h=c,_} +function rp(a,b,c){return !b?tp(a,c):sp(a,b,c,~~ob(b))} +function Eq(a,b){return Ac(a)===Ac(b)||a!=null&&eb(a,b)} +function Xq(a,b){return Ac(a)===Ac(b)||a!=null&&eb(a,b)} +function hq(a,b){throw new Wk('Index: '+a+', Size: '+b)} +function Xh(a,b){if(b<0){throw new nk(ts)}return tm(a,b)} +function dg(a,b){if(!a){throw new jl}this.f=b;Tf(this,a)} +function og(a,b){if(!a){throw new jl}this.f=b;Tf(this,a)} +function ig(a,b,c,d){hg.call(this,a,b,c);If(this,d)} +function jg(a,b){hg.call(this,a,0,a.length);If(this,b)} +function ng(a,b){hg.call(this,Cl(a),0,a.length);If(this,b)} +function lm(a){V.call(this,'String index out of range: '+a)} +function Zl(a,b){dc(a.b,String.fromCharCode(b));return a} +function pn(a,b){tn(a.b,a.b,a.e,b.b,b.e);Sh(a);a.c=-2} +function Tf(a,b){a.d=b;a.b=b.ab();a.b<54&&(a.g=Ie(ai(b)))} +function qc(){qc=rr;oc=[];pc=[];rc(new ic,oc,pc)} +function Ch(){if(!Bh){Bh=true;new Yj;new Ij;Dh()}} +function Sl(){if(Nl==256){Ml=Ol;Ol={};Nl=0}++Nl} +function cr(a){var b;b=a[Ls];if(!b){b=[];a[Ls]=b}return b} +function zk(a,b,c){var d;d=new wk;d.d=a+b;d.c=c?8:0;return d} +function xk(a,b,c){var d;d=new wk;d.d=a+b;d.c=4;d.b=c;return d} +function lc(a,b,c,d,e){var f;f=jc(e,d);mc(a,b,c,f);return f} +function Ll(a,b,c){var d;d=b+c;El(a.length,b,d);return Gl(a,b,d)} +function mo(a,b){go();return b=a.c.c){throw new Oq}return tq(a.c,a.b++)} +function wl(a,b){if(!xc(b,1)){return false}return String(a)==b} +function lb(){if(ib++==0){sb((rb(),qb));return true}return false} +function fi(a){if(a.f<0){throw new nk('start < 0: '+a)}return xo(a)} +function pm(){V.call(this,'Add not supported on this collection')} +function Fq(){this.b=[];this.f={};this.d=false;this.c=null;this.e=0} +function qi(a,b){Oh();this.f=a;this.e=1;this.b=mc(Od,{6:1},-1,[b])} +function sc(a,b,c){qc();for(var d=0,e=b.length;d=0&&a.b[c]==b[c];--c){}return c<0} +function tp(a,b){var c;c=a.c;a.c=b;if(!a.d){a.d=true;++a.e}return c} +function $l(a,b){dc(a.b,String.fromCharCode.apply(null,b));return a} +function am(a,b,c,d){b==null&&(b=Mr);bc(a.b,b.substr(c,d-c));return a} +function sn(a,b,c,d){var e;e=lc(Od,{6:1},-1,b,1);tn(e,a,b,c,d);return e} +function mc(a,b,c,d){qc();sc(d,oc,pc);d.aC=a;d.cM=b;d.qI=c;return d} +function uq(a,b,c){for(;ca.c)&&hq(b,a.c);Aq(a.b,b,0,c);++a.c} +function nn(a,b){var c;c=on(a.b,a.e,b);if(c==1){a.b[a.e]=1;++a.e}a.c=-2} +function Sh(a){while(a.e>0&&a.b[--a.e]==0){}a.b[a.e++]==0&&(a.f=0)} +function Gg(a){if(we(a,ur)&&xe(a,xr)){return df[Je(a)]}return new qg(a,0)} +function ji(a,b){if(b==0||a.f==0){return a}return b>0?wm(a,b):zm(a,-b)} +function li(a,b){if(b==0||a.f==0){return a}return b>0?zm(a,b):wm(a,-b)} +function $h(a){var b;if(a.f==0){return -1}b=Zh(a);return (b<<5)+_k(a.b[b])} +function bl(a){var b;b=Je(a);return b!=0?_k(b):_k(Je(Fe(a,32)))+32} +function Sb(a,b){var c;c=Mb(a,b);return c.length==0?(new Fb).o(b):zb(c,1)} +function Gl(a,b,c){a=a.slice(b,c);return String.fromCharCode.apply(null,a)} +function rc(a,b,c){var d=0,e;for(var f in a){if(e=a[f]){b[d]=f;c[d]=e;++d}}} +function up(e,a,b){var c,d=e.f;a=Qr+a;a in d?(c=d[a]):++e.e;d[a]=b;return c} +function gn(a,b,c,d){var e;e=lc(Od,{6:1},-1,b+1,1);hn(e,a,b,c,d);return e} +function Cl(a){var b,c;c=a.length;b=lc(Md,{6:1},-1,c,1);xl(a,c,b,0);return b} +function _e(a){var b;b=bf(a);if(isNaN(b)){throw new pl(Zr+a+$r)}return b} +function Fg(a){if(!isFinite(a)||isNaN(a)){throw new pl(hs)}return new mg(Lr+a)} +function wc(a){if(a!=null&&(a.tM==rr||tc(a,1))){throw new Ek}return a} +function Qf(a,b){var c;c=new og((!a.d&&(a.d=Li(a.g)),a.d),a.f);If(c,b);return c} +function bg(a,b){var c;c=new Pi(Zf(a));if(sm(c)0?1:0}return (!a.d&&(a.d=Li(a.g)),a.d).r()} +function Mf(a){if(a.b<54){return new pg(-a.g,a.f)}return new og((!a.d&&(a.d=Li(a.g)),a.d).cb(),a.f)} +function El(a,b,c){if(b<0){throw new lm(b)}if(ca){throw new lm(c)}} +function lg(a,b){if(!isFinite(a)||isNaN(a)){throw new pl(hs)}Hf(this,a.toPrecision(20));If(this,b)} +function Gk(a,b){if(isNaN(a)){return isNaN(b)?0:1}else if(isNaN(b)){return -1}return ab?1:0} +function uk(a,b){if(b<2||b>36){return 0}if(a<0||a>=b){return 0}return a<10?48+a&65535:97+a-10&65535} +function er(a,b){var c;if(!b){return null}c=b[Ls];if(c){return c}c=ir(b,dr(a,b.gC()));b[Ls]=c;return c} +function ke(a){var b,c;c=$k(a.h);if(c==32){b=$k(a.m);return b==32?$k(a.l)+32:b+20-10}else{return c-12}} +function be(a){var b,c,d;b=a&4194303;c=~~a>>22&4194303;d=a<0?1048575:0;return de(b,c,d)} +function Qe(){Qe=rr;Me=de(4194303,4194303,524287);Ne=de(0,0,524288);Oe=ue(1);ue(2);Pe=ue(0)} +function mn(a,b){hn(a.b,a.b,a.e,b.b,b.e);a.e=hl(gl(a.e,b.e)+1,a.b.length);Sh(a);a.c=-2} +function um(a,b){var c;c=~~b>>5;a.e+=c+($k(a.b[a.e-1])-(b&31)>=0?0:1);xm(a.b,a.b,c,b&31);Sh(a);a.c=-2} +function Tm(a,b){var c,d;c=~~b>>5;if(a.e>>d:0;Sh(a)} +function ai(a){var b;b=a.e>1?De(Ee(ue(a.b[1]),32),qe(ue(a.b[0]),yr)):qe(ue(a.b[0]),yr);return Ae(ue(a.f),b)} +function jn(a,b,c){var d;for(d=c-1;d>=0&&a[d]==b[d];--d){}return d<0?0:xe(qe(ue(a[d]),yr),qe(ue(b[d]),yr))?-1:1} +function ym(a,b,c){var d,e,f;d=0;for(e=0;e>>31}d!=0&&(a[c]=d)} +function ge(a,b,c,d,e){var f;f=Fe(a,b);c&&je(f);if(e){a=ie(a,b);d?(ae=Be(a)):(ae=de(a.l,a.m,a.h))}return f} +function gwtOnLoad(b,c,d,e){$moduleName=c;$moduleBase=d;if(b)try{Jr($d)()}catch(a){b(c)}else{Jr($d)()}} +function fr(a,b){var c,d,e;if(b==null){return null}d=cr(b);e=d;for(c=0;c>5==a.e-1&&a.b[a.e-1]==1<<(b&31);if(d){for(c=0;d&&c=0&&b=0){return new qg(ur,2147483647)}return new qg(ur,-2147483648)} +function Li(a){Oh();if(a<0){if(a!=-1){return new ui(-1,-a)}return Ih}else return a<=10?Kh[Bc(a)]:new ui(1,a)} +function zg(a){var b=qf;!b&&(b=qf=/^[+-]?\d*$/i);if(b.test(a)){return parseInt(a,10)}else{return Number.NaN}} +function kp(e,a){var b=e.f;for(var c in b){if(c.charCodeAt(0)==58){var d=new Yp(e,c.substring(1));a.Kb(d)}}} +function Rl(a){Pl();var b=Qr+a;var c=Ol[b];if(c!=null){return c}c=Ml[b];c==null&&(c=Ql(a));Sl();return Ol[b]=c} +function Be(a){var b,c,d;b=~a.l+1&4194303;c=~a.m+(b==0?1:0)&4194303;d=~a.h+(b==0&&c==0?1:0)&1048575;return de(b,c,d)} +function je(a){var b,c,d;b=~a.l+1&4194303;c=~a.m+(b==0?1:0)&4194303;d=~a.h+(b==0&&c==0?1:0)&1048575;a.l=b;a.m=c;a.h=d} +function Q(a){var b,c,d;c=lc(Ud,{6:1},13,a.length,0);for(d=0,b=a.length;d>=1){}return b}} +function sm(a){var b,c,d;if(a.f==0){return 0}b=a.e<<5;c=a.b[a.e-1];if(a.f<0){d=Zh(a);d==a.e-1&&(c=~~(c-1))}b-=$k(c);return b} +function io(a,b,c,d,e){go();if(b==0||d==0){return}b==1?(e[d]=ko(e,c,d,a[0])):d==1?(e[b]=ko(e,a,b,c[0])):jo(a,c,e,b,d)} +function en(a,b,c,d,e){var f,g;g=a;for(f=c.ab()-1;f>=0;--f){g=Ym(g,g,d,e);(c.b[~~f>>5]&1<<(f&31))!=0&&(g=Ym(g,b,d,e))}return g} +function on(a,b,c){var d,e;d=qe(ue(c),yr);for(e=0;Ce(d,ur)&&e2147483647){throw new nk('Underflow')}else{return Bc(a)}} +function Xn(a,b){Un();if(a<0){throw new Sk('Digits < 0')}if(!b){throw new kl('null RoundingMode')}this.b=a;this.c=b} +function Ki(a){Oh();if(xe(a,ur)){if(Ce(a,wr)){return new ti(-1,Be(a))}return Ih}else return ye(a,tr)?Kh[Je(a)]:new ti(1,a)} +function tg(a){var b;xe(a,ur)&&(a=de(~a.l&4194303,~a.m&4194303,~a.h&1048575));return 64-(b=Je(Fe(a,32)),b!=0?$k(b):$k(Je(a))+32)} +function pe(a,b){var c,d,e;c=a.l+b.l;d=a.m+b.m+(~~c>>22);e=a.h+b.h+(~~d>>22);return de(c&4194303,d&4194303,e&1048575)} +function He(a,b){var c,d,e;c=a.l-b.l;d=a.m-b.m+(~~c>>22);e=a.h-b.h+(~~d>>22);return de(c&4194303,d&4194303,e&1048575)} +function Sm(a,b){var c;c=b-1;if(a.f>0){while(!a.gb(c)){--c}return b-1-c}else{while(a.gb(c)){--c}return b-1-gl(c,a.bb())}} +function fe(a,b){if(a.h==524288&&a.m==0&&a.l==0){b&&(ae=de(0,0,0));return ce((Qe(),Oe))}b&&(ae=de(a.l,a.m,a.h));return de(0,0,0)} +function Ff(a,b){var c;if(a===b){return true}if(xc(b,16)){c=vc(b,16);return c.f==a.f&&(a.b<54?c.g==a.g:a.d.eQ(c.d))}return false} +function cn(a,b,c){var d,e,f,g;f=ur;for(d=b-1;d>=0;--d){g=pe(Ee(f,32),qe(ue(a[d]),yr));e=Nm(g,c);f=ue(Je(Fe(e,32)))}return Je(f)} +function wm(a,b){var c,d,e,f;c=~~b>>5;b&=31;e=a.e+c+(b==0?0:1);d=lc(Od,{6:1},-1,e,1);xm(d,a.b,c,b);f=new si(a.f,e,d);Sh(f);return f} +function ue(a){var b,c;if(a>-129&&a<128){b=a+128;oe==null&&(oe=lc(Pd,{6:1},2,256,0));c=oe[b];!c&&(c=oe[b]=be(a));return c}return be(a)} +function Ai(a){Oh();var b,c,d;if(a>5;b=a&31;d=lc(Od,{6:1},-1,c+1,1);d[c]=1<ys&&c[c.length-1]>ys){return c}var a=c.replace(/^(\s*)/,Lr);var b=a.replace(/\s*$/,Lr);return b} +function Yk(a){a-=~~a>>1&1431655765;a=(~~a>>2&858993459)+(a&858993459);a=(~~a>>4)+a&252645135;a+=~~a>>8;a+=~~a>>16;return a&63} +function nc(a,b,c){if(c!=null){if(a.qI>0&&!uc(c,a.qI)){throw new qk}if(a.qI<0&&(c.tM==rr||tc(c,1))){throw new qk}}return a[b]=c} +function Qh(a,b){if(a.f>b.f){return 1}if(a.fb.e){return a.f}if(a.e>1);f=a[e];if(fb){c=e-1}else{return e}}return -d-1} +function Pk(a){var b;b=_e(a);if(b>3.4028234663852886E38){return Infinity}else if(b<-3.4028234663852886E38){return -Infinity}return b} +function Ie(a){if(se(a,(Qe(),Ne))){return -9223372036854775808}if(!we(a,Pe)){return -me(Be(a))}return a.l+a.m*4194304+a.h*17592186044416} +function Bb(a,b){var c,d,e,f;e=Sb(a,yc(b.c)?wc(b.c):null);f=lc(Ud,{6:1},13,e.length,0);for(c=0,d=f.length;c0?d:Pr} +function ie(a,b){var c,d,e;if(b<=22){c=a.l&(1<>5]|=1<<(c&31))}return d} +function Jm(a){var b,c,d;b=qe(ue(a.b[0]),yr);c=sr;d=vr;do{Ce(qe(Ae(b,c),d),ur)&&(c=De(c,d));d=Ee(d,1)}while(xe(d,Fr));c=Be(c);return Je(qe(c,yr))} +function Gm(a){var b,c,d;if(we(a,ur)){c=re(a,Ar);d=ze(a,Ar)}else{b=Ge(a,1);c=re(b,Br);d=ze(b,Br);d=pe(Ee(d,1),qe(a,sr))}return De(Ee(d,32),qe(c,yr))} +function ko(a,b,c,d){go();var e,f;e=ur;for(f=0;f36){throw new pl('Radix out of range')}if(a.length==0){throw new pl('Zero length BigInteger')}Ei(this,a,b)} +function Vq(){Uq();var a,b,c;c=Tq+++(new Date).getTime();a=Bc(Math.floor(c*5.9604644775390625E-8))&16777215;b=Bc(c-a*16777216);this.b=a^1502;this.c=b^15525485} +function un(a,b,c,d){var e;if(c>d){return 1}else if(c=0&&a[e]==b[e];--e){}return e<0?0:xe(qe(ue(a[e]),yr),qe(ue(b[e]),yr))?-1:1}} +function In(a,b){var c,d,e,f;e=a.e;d=lc(Od,{6:1},-1,e,1);hl(Zh(a),Zh(b));for(c=0;c=e){return Oh(),Nh}d=lc(Od,{6:1},-1,e,1);for(;c999999999){throw new nk(bs)}c=a.f*b;return a.b==0&&a.g!=-1?Ig(c):new dg((!a.d&&(a.d=Li(a.g)),a.d).db(b),Dg(c))} +function tk(a,b){if(b<2||b>36){return -1}if(a>=48&&a<48+(b<10?b:10)){return a-48}if(a>=97&&a=65&&a=0;--a){Sq[a]=c;c*=0.5}b=1;for(a=24;a>=0;--a){Rq[a]=b;b*=0.5}} +function oo(a,b){go();var c,d;d=(Oh(),Jh);c=a;for(;b>1;b>>=1){(b&1)!=0&&(d=ei(d,c));c.e==1?(c=ei(c,c)):(c=new ri(qo(c.b,c.e,lc(Od,{6:1},-1,c.e<<1,1))))}d=ei(d,c);return d} +function nl(){nl=rr;ml=mc(Md,{6:1},-1,[48,49,50,51,52,53,54,55,56,57,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122])} +function rm(a){var b,c;b=0;if(a.f==0){return 0}c=Zh(a);if(a.f>0){for(;c>22);e+=~~d>>22;if(e<0){return false}a.l=c&4194303;a.m=d&4194303;a.h=e&1048575;return true} +function al(a){var b,c,d;b=lc(Md,{6:1},-1,8,1);c=(nl(),ml);d=7;if(a>=0){while(a>15){b[d--]=c[a&15];a>>=4}}else{while(d>0){b[d--]=c[a&15];a>>=4}}b[d]=c[a&15];return Gl(b,d,8)} +function vn(a,b){if(b.f==0||a.f==0){return Oh(),Nh}if(Vh(b,(Oh(),Ih))){return a}if(Vh(a,Ih)){return b}return a.f>0?b.f>0?Dn(a,b):wn(a,b):b.f>0?wn(b,a):a.e>b.e?xn(a,b):xn(b,a)} +function yn(a,b){if(b.f==0){return a}if(a.f==0){return Oh(),Nh}if(Vh(a,(Oh(),Ih))){return new Pi(En(b))}if(Vh(b,Ih)){return Nh}return a.f>0?b.f>0?Bn(a,b):Cn(a,b):b.f>0?An(a,b):zn(a,b)} +function Gf(a){var b;if(a.c!=0){return a.c}if(a.b<54){b=te(a.g);a.c=Je(qe(b,wr));a.c=33*a.c+Je(qe(Fe(b,32),wr));a.c=17*a.c+Bc(a.f);return a.c}a.c=17*a.d.hC()+Bc(a.f);return a.c} +function vg(a,b,c,d){var e,f,g,i,j;f=(j=a/b,j>0?Math.floor(j):Math.ceil(j));g=a%b;i=Gk(a*b,0);if(g!=0){e=Gk((g<=0?0-g:g)*2,b<=0?0-b:b);f+=Bg(Bc(f)&1,i*(5+e),d)}return new pg(f,c)} +function jc(a,b){var c=new Array(b);if(a==3){for(var d=0;d0){var e=[null,0,false][a];for(var d=0;dc;--e){a[e]|=~~b[e-c-1]>>>f;a[e-1]=b[e-c-1]<>5;a.e-=d;if(!Am(a.b,a.e,a.b,d,b&31)&&e<0){for(c=0;c>19;d=~~b.h>>19;return c==0?d!=0||a.h>b.h||a.h==b.h&&a.m>b.m||a.h==b.h&&a.m==b.m&&a.l>b.l:!(d==0||a.h>19;d=~~b.h>>19;return c==0?d!=0||a.h>b.h||a.h==b.h&&a.m>b.m||a.h==b.h&&a.m==b.m&&a.l>=b.l:!(d==0||a.h0?b.f>0?a.e>b.e?In(a,b):In(b,a):Gn(a,b):b.f>0?Gn(b,a):Zh(b)>Zh(a)?Hn(b,a):Hn(a,b)} +function sg(a){var b,c;if(a>-140737488355328&&a<140737488355328){if(a==0){return 0}b=a<0;b&&(a=-a);c=Bc(el(Math.log(a)/0.6931471805599453));(!b||a!=Math.pow(2,c))&&++c;return c}return tg(te(a))} +function Yh(a,b){var c,d;c=a._();d=b._();if(c.r()==0){return d}else if(d.r()==0){return c}if((c.e==1||c.e==2&&c.b[1]>0)&&(d.e==1||d.e==2&&d.b[1]>0)){return Ki(Rm(ai(c),ai(d)))}return Qm(Rh(c),Rh(d))} +function ci(a,b){var c;if(b.f<=0){throw new nk(us)}if(!(a.gb(0)||b.gb(0))){throw new nk(vs)}if(b.e==1&&b.b[0]==1){return Nh}c=Wm(bi(a._(),b),b);if(c.f==0){throw new nk(vs)}c=a.f<0?rn(b,c):c;return c} +function Am(a,b,c,d,e){var f,g,i;f=true;for(g=0;g>>e|c[g+d+1]<>>e;++g}return f} +function Ql(a){var b,c,d,e;b=0;d=a.length;e=d-4;c=0;while(c=0;--d){if(a[d]!=e[d]){c=a[d]!=0&&ve(qe(ue(a[d]),yr),qe(ue(e[d]),yr));break}}}g=new si(1,f+1,a);c&&pn(g,b);Sh(g);return g} +function Kf(a,b){var c;c=a.f+b.f;if(a.b==0&&a.g!=-1||b.b==0&&b.g!=-1){return Ig(c)}if(a.b+b.b<54){return new pg(a.g*b.g,Dg(c))}return new dg(ei((!a.d&&(a.d=Li(a.g)),a.d),(!b.d&&(b.d=Li(b.g)),b.d)),Dg(c))} +function sp(k,a,b,c){var d=k.b[c];if(d){for(var e=0,f=d.length;e=0;--f){i=Rh(g);Tm(i,c);g=ei(g,i);if((e.b[~~f>>5]&1<<(f&31))!=0){g=ei(g,d);Tm(g,c)}}Tm(g,c);return g} +function ar(a,b){var c,d,e,f,g,i,j;j=zl(a,Ks,0);i=$wnd;for(g=0;g>22-b;e=a.h<>22-b}else if(b<44){c=0;d=a.l<>44-b}else{c=0;d=0;e=a.l<>>b;e=~~a.m>>b|c<<22-b;d=~~a.l>>b|a.m<<22-b}else if(b<44){f=0;e=~~c>>>b-22;d=~~a.m>>b-22|a.h<<44-b}else{f=0;e=0;d=~~c>>>b-44}return de(d&4194303,e&4194303,f&1048575)} +function Uo(a){Qo();switch(a){case 2:return Ao;case 1:return Bo;case 3:return Co;case 5:return Do;case 6:return Eo;case 4:return Fo;case 7:return Go;case 0:return Ho;default:throw new Sk('Invalid rounding mode');}} +function mi(a,b){var c,d,e;if(b==0){return (a.b[0]&1)!=0}if(b<0){throw new nk(ts)}e=~~b>>5;if(e>=a.e){return a.f<0}c=a.b[e];b=1<<(b&31);if(a.f<0){d=Zh(a);if(e0){return a.e}b=1;c=1;if(a.b<54){a.b>=1&&(c=a.g);b+=Math.log(c<=0?0-c:c)*Math.LOG10E}else{b+=(a.b-1)*0.3010299956639812;Th((!a.d&&(a.d=Li(a.g)),a.d),po(b)).r()!=0&&++b}a.e=Bc(b);return a.e} +function zh(a){rf();var b,c;c=Lj(a);if(c==ks)b=Fg(a[0]);else if(c==ks)b=Gg(ue(a[0]));else if(c==ns)b=Hg(ue(a[0]),a[1]);else throw new V('Unknown call signature for bd = java.math.BigDecimal.valueOf: '+c);return new Kg(b)} +function Qi(a){Oh();var b,c;c=Lj(a);if(c==ms)b=new oi(a[0].toString());else if(c=='string number')b=new pi(a[0].toString(),a[1]);else throw new V('Unknown call signature for obj = new java.math.BigInteger: '+c);return new Pi(b)} +function Un(){Un=rr;On=new Xn(34,(Qo(),Eo));Pn=new Xn(7,Eo);Qn=new Xn(16,Eo);Rn=new Xn(0,Fo);Sn=mc(Md,{6:1},-1,[112,114,101,99,105,115,105,111,110,61]);Tn=mc(Md,{6:1},-1,[114,111,117,110,100,105,110,103,77,111,100,101,61])} +function Jn(a,b){if(b.f==0){return a}if(a.f==0){return b}if(Vh(b,(Oh(),Ih))){return new Pi(En(a))}if(Vh(a,Ih)){return new Pi(En(b))}return a.f>0?b.f>0?a.e>b.e?Mn(a,b):Mn(b,a):Kn(a,b):b.f>0?Kn(b,a):Zh(b)>Zh(a)?Ln(b,a):Ln(a,b)} +function Cn(a,b){var c,d,e,f,g,i;d=Zh(b);e=Zh(a);if(d>=a.e){return a}g=hl(a.e,b.e);f=lc(Od,{6:1},-1,g,1);c=e;for(;cc?1:-1:jn(a.b,b.b,g))==-1){return a}e=lc(Od,{6:1},-1,c,1);if(c==1){e[0]=cn(a.b,g,b.b[0])}else{d=g-c+1;e=Km(null,d,a.b,g,b.b,c)}f=new si(a.f,c,e);Sh(f);return f} +function $k(a){var b,c,d;if(a<0){return 0}else if(a==0){return 32}else{d=-(~~a>>16);b=~~d>>16&16;c=16-b;a=~~a>>b;d=a-256;b=~~d>>16&8;c+=b;a<<=b;d=a-4096;b=~~d>>16&4;c+=b;a<<=b;d=a-16384;b=~~d>>16&2;c+=b;a<<=b;d=~~a>>14;b=d&~(~~d>>1);return c+2-b}} +function kn(a,b){var c;if(a.f==0){nm(b.b,0,a.b,0,b.e)}else if(b.f==0){return}else if(a.f==b.f){hn(a.b,a.b,a.e,b.b,b.e)}else{c=un(a.b,b.b,a.e,b.e);if(c>0){tn(a.b,a.b,a.e,b.b,b.e)}else{qn(a.b,a.b,a.e,b.b,b.e);a.f=-a.f}}a.e=gl(a.e,b.e)+1;Sh(a);a.c=-2} +function ln(a,b){var c,d;c=Qh(a,b);if(a.f==0){nm(b.b,0,a.b,0,b.e);a.f=-b.f}else if(a.f!=b.f){hn(a.b,a.b,a.e,b.b,b.e);a.f=c}else{d=un(a.b,b.b,a.e,b.e);if(d>0){tn(a.b,a.b,a.e,b.b,b.e)}else{qn(a.b,a.b,a.e,b.b,b.e);a.f=-a.f}}a.e=gl(a.e,b.e)+1;Sh(a);a.c=-2} +function di(a,b,c){var d,e;if(c.f<=0){throw new nk(us)}d=a;if((c.e==1&&c.b[0]==1)|b.f>0&d.f==0){return Nh}if(d.f==0&&b.f==0){return Jh}if(b.f<0){d=ci(a,c);b=b.cb()}e=c.gb(0)?_m(d._(),b,c):Om(d._(),b,c);d.f<0&&b.gb(0)&&(e=bi(ei(rn(c,Jh),e),c));return e} +function $m(a,b,c,d,e){var f,g,i;f=ur;g=ur;for(i=0;ia.e){i=a;a=b;b=i}if(b.e<63){return no(a,b)}g=(a.e&-2)<<4;k=a.fb(g);n=b.fb(g);d=rn(a,k.eb(g));e=rn(b,n.eb(g));j=ho(k,n);c=ho(d,e);f=ho(rn(k,d),rn(e,n));f=fn(fn(f,j),c);f=f.eb(g);j=j.eb(g<<1);return fn(fn(j,f),c)} +function le(a){var b,c,d;c=a.l;if((c&c-1)!=0){return -1}d=a.m;if((d&d-1)!=0){return -1}b=a.h;if((b&b-1)!=0){return -1}if(b==0&&d==0&&c==0){return -1}if(b==0&&d==0&&c!=0){return _k(c)}if(b==0&&d!=0&&c==0){return _k(d)+22}if(b!=0&&d==0&&c==0){return _k(b)+44}return -1} +function wn(a,b){var c,d,e,f,g,i,j;e=Zh(a);d=Zh(b);if(d>=a.e){return Oh(),Nh}i=a.e;g=lc(Od,{6:1},-1,i,1);c=e>d?e:d;if(c==d){g[c]=-b.b[c]&a.b[c];++c}f=hl(b.e,a.e);for(;c=b.e){for(;c0?b:0)}if(b>=0){if(a.b<54){return new pg(a.g,Dg(b))}return new dg((!a.d&&(a.d=Li(a.g)),a.d),Dg(b))}if(-b>b;f=~~a.m>>b|c<<22-b;e=~~a.l>>b|a.m<<22-b}else if(b<44){g=d?1048575:0;f=~~c>>b-22;e=~~a.m>>b-22|c<<44-b}else{g=d?1048575:0;f=d?4194303:0;e=~~c>>b-44}return de(e&4194303,f&4194303,g&1048575)} +function Oh(){Oh=rr;var a;Jh=new qi(1,1);Lh=new qi(1,10);Nh=new qi(0,0);Ih=new qi(-1,1);Kh=mc(Xd,{6:1},17,[Nh,Jh,new qi(1,2),new qi(1,3),new qi(1,4),new qi(1,5),new qi(1,6),new qi(1,7),new qi(1,8),new qi(1,9),Lh]);Mh=lc(Xd,{6:1},17,32,0);for(a=0;a=b.e){return b}else if(d>=a.e){return a}g=hl(a.e,b.e);f=lc(Od,{6:1},-1,g,1);if(d==e){f[e]=-(-a.b[e]|-b.b[e]);c=e}else{for(c=d;c>5;b&=31;if(d>=a.e){return a.f<0?(Oh(),Ih):(Oh(),Nh)}f=a.e-d;e=lc(Od,{6:1},-1,f+1,1);Am(e,f,a.b,d,b);if(a.f<0){for(c=0;c0&&a.b[c]<<32-b!=0){for(c=0;c=0}for(d=1;d>1)?d:1+(~~(b-1)>>1);return wo(a,b)} +function Qm(a,b){var c,d,e,f;c=a.bb();d=b.bb();e=c0){b=Ki(Rm(ai(a),ai(b)));break}if(b.e>a.e*1.2){b=hi(b,a);b.r()!=0&&vm(b,b.bb())}else{do{pn(b,a);vm(b,b.bb())}while(Qh(b,a)>=0)}f=b;b=a;a=f}while(f.f!=0);return b.eb(e)} +function Sf(a,b,c){var d;if(!c){throw new jl}d=b-a.f;if(d==0){return a}if(d>0){if(d36){return Lr+Ke(a)}c=lc(Md,{6:1},-1,65,1);d=(nl(),ml);e=64;f=ue(b);if(we(a,ur)){while(we(a,f)){c[e--]=d[Je(ze(a,f))];a=ee(a,f,false)}c[e]=d[Je(a)]}else{while(ye(a,Be(f))){c[e--]=d[Je(Be(ze(a,f)))];a=ee(a,f,false)}c[e--]=d[Je(Be(a))];c[e]=45}return Gl(c,e,65)} +function Of(a,b,c){var d,e,f,g,i,j;f=b<0?-b:b;g=c.b;e=Bc(fl(f))+1;i=c;if(b==0||a.b==0&&a.g!=-1&&b>0){return Nf(a,b)}if(f>999999999||g==0&&b<0||g>0&&e>g){throw new nk(bs)}g>0&&(i=new Xn(g+e+1,c.c));d=Qf(a,i);j=~~Zk(f)>>1;while(j>0){d=Lf(d,d,i);(f&j)==j&&(d=Lf(d,a,i));j>>=1}b<0&&(d=zf(lf,d,i));If(d,c);return d} +function tf(a,b){var c;c=a.f-b.f;if(a.b==0&&a.g!=-1){if(c<=0){return b}if(b.b==0&&b.g!=-1){return a}}else if(b.b==0&&b.g!=-1){if(c>=0){return a}}if(c==0){if(gl(a.b,b.b)+1<54){return new pg(a.g+b.g,a.f)}return new og(fn((!a.d&&(a.d=Li(a.g)),a.d),(!b.d&&(b.d=Li(b.g)),b.d)),a.f)}else return c>0?rg(a,b,c):rg(b,a,-c)} +function Nm(a,b){var c,d,e,f,g;d=qe(ue(b),yr);if(we(a,ur)){f=ee(a,d,false);g=ze(a,d)}else{c=Ge(a,1);e=ue(~~b>>>1);f=ee(c,e,false);g=ze(c,e);g=pe(Ee(g,1),qe(a,sr));if((b&1)!=0){if(!ve(f,g)){g=He(g,f)}else{if(ye(He(f,g),d)){g=pe(g,He(d,f));f=He(f,sr)}else{g=pe(g,He(Ee(d,1),f));f=He(f,vr)}}}}return De(Ee(g,32),qe(f,yr))} +function Ei(a,b,c){var d,e,f,g,i,j,k,n,o,q,r,s,t,u;r=b.length;k=r;if(b.charCodeAt(0)==45){o=-1;q=1;--r}else{o=1;q=0}g=(Em(),Dm)[c];f=~~(r/g);u=r%g;u!=0&&++f;j=lc(Od,{6:1},-1,f,1);d=Cm[c-2];i=0;s=q+(u==0?g:u);for(t=q;t=9223372036854775807){return Qe(),Me}e=false;if(a<0){e=true;a=-a}d=0;if(a>=17592186044416){d=Bc(a/17592186044416);a-=d*17592186044416}c=0;if(a>=4194304){c=Bc(a/4194304);a-=c*4194304}b=Bc(a);f=de(b,c,d);e&&je(f);return f} +function Ke(a){var b,c,d,e,f;if(a.l==0&&a.m==0&&a.h==0){return Tr}if(a.h==524288&&a.m==0&&a.l==0){return '-9223372036854775808'}if(~~a.h>>19!=0){return Ur+Ke(Be(a))}c=a;d=Lr;while(!(c.l==0&&c.m==0&&c.h==0)){e=ue(1000000000);c=ee(c,e,true);b=Lr+Je(ae);if(!(c.l==0&&c.m==0&&c.h==0)){f=9-b.length;for(;f>0;--f){b=Tr+b}}d=b+d}return d} +function Uh(a,b){var c,d,e,f,g,i,j,k,n,o,q,r,s;f=b.f;if(f==0){throw new nk(ss)}e=b.e;d=b.b;if(e==1){return Lm(a,d[0],f)}q=a.b;r=a.e;c=r!=e?r>e?1:-1:jn(q,d,r);if(c<0){return mc(Xd,{6:1},17,[Nh,a])}s=a.f;i=r-e+1;j=s==f?1:-1;g=lc(Od,{6:1},-1,i,1);k=Km(g,i,q,r,d,e);n=new si(j,i,g);o=new si(s,e,k);Sh(n);Sh(o);return mc(Xd,{6:1},17,[n,o])} +function Zf(a){var b;if(a.f==0||a.b==0&&a.g!=-1){return !a.d&&(a.d=Li(a.g)),a.d}else if(a.f<0){return ei((!a.d&&(a.d=Li(a.g)),a.d),po(-a.f))}else{if(a.f>(a.e>0?a.e:el((a.b-1)*0.3010299956639812)+1)||a.f>(!a.d&&(a.d=Li(a.g)),a.d).bb()){throw new nk(cs)}b=Uh((!a.d&&(a.d=Li(a.g)),a.d),po(a.f));if(b[1].r()!=0){throw new nk(cs)}return b[0]}} +function qn(a,b,c,d,e){var f,g;f=ur;if(c36){throw new pl('radix '+b+' out of range')}d=a.length;e=d>0&&a.charCodeAt(0)==45?1:0;for(c=e;c2147483647){throw new pl(Zr+a+$r)}return f} +function En(a){var b,c;if(a.f==0){return Oh(),Ih}if(Vh(a,(Oh(),Ih))){return Nh}c=lc(Od,{6:1},-1,a.e+1,1);if(a.f>0){if(a.b[a.e-1]!=-1){for(b=0;a.b[b]==-1;++b){}}else{for(b=0;b0?b==0?0:b<0?-1:1:0;break;case 3:d=(b==0?0:b<0?-1:1)<0?b==0?0:b<0?-1:1:0;break;case 4:(b<0?-b:b)>=5&&(d=b==0?0:b<0?-1:1);break;case 5:(b<0?-b:b)>5&&(d=b==0?0:b<0?-1:1);break;case 6:(b<0?-b:b)+a>5&&(d=b==0?0:b<0?-1:1);}return d} +function Vf(a,b,c){var d,e,f,g,i,j;i=te(hf[c]);g=He(te(a.f),ue(c));j=te(a.g);f=ee(j,i,false);e=ze(j,i);if(Ce(e,ur)){d=se(He(Ee(xe(e,ur)?Be(e):e,1),i),ur)?0:xe(He(Ee(xe(e,ur)?Be(e):e,1),i),ur)?-1:1;f=pe(f,ue(Bg(Je(f)&1,(se(e,ur)?0:xe(e,ur)?-1:1)*(5+d),b.c)));if(fl(Ie(xe(f,ur)?Be(f):f))>=b.b){f=re(f,tr);g=He(g,sr)}}a.f=Dg(Ie(g));a.e=b.b;a.g=Ie(f);a.b=tg(f);a.d=null} +function tm(a,b){var c,d,e,f,g,i,j,k,n;k=a.f==0?1:a.f;g=~~b>>5;c=b&31;j=gl(g+1,a.e)+1;i=lc(Od,{6:1},-1,j,1);d=1<=a.e){i[g]=d}else{e=Zh(a);if(g>e){i[g]^=d}else if(g=0||k.f==0||k.e==1&&k.b[0]==1)}n=di(k,i,a);if(n.e==1&&n.b[0]==1||n.eQ(g)){continue}for(e=1;e=0;--i){n=De(Ee(k,32),qe(ue(b[i]),yr));if(we(n,ur)){j=ee(n,f,false);k=ze(n,f)}else{e=Ge(n,1);g=ue(~~d>>>1);j=ee(e,g,false);k=ze(e,g);k=pe(Ee(k,1),qe(n,sr));if((d&1)!=0){if(!ve(j,k)){k=He(k,j)}else{if(ye(He(j,k),f)){k=pe(k,He(f,j));j=He(j,sr)}else{k=pe(k,He(Ee(f,1),j));j=He(j,vr)}}}}a[i]=Je(qe(j,yr))}return Je(k)} +function he(a,b,c,d,e,f){var g,i,j,k,n,o,q;k=ke(b)-ke(a);g=Ee(b,k);j=de(0,0,0);while(k>=0){i=ne(a,g);if(i){k<22?(j.l|=1<>>1;g.m=~~o>>>1|(q&1)<<21;g.l=~~n>>>1|(o&1)<<21;--k}c&&je(j);if(f){if(d){ae=Be(a);e&&(ae=He(ae,(Qe(),Oe)))}else{ae=de(a.l,a.m,a.h)}}return j} +function dn(a,b,c,d,e){var f,g,i,j,k,n,o;k=lc(Xd,{6:1},17,8,0);n=a;nc(k,0,b);o=Ym(b,b,d,e);for(g=1;g<=7;++g){nc(k,g,Ym(k[g-1],o,d,e))}for(g=c.ab()-1;g>=0;--g){if((c.b[~~g>>5]&1<<(g&31))!=0){j=1;f=g;for(i=g-3>0?g-3:0;i<=g-1;++i){if((c.b[~~i>>5]&1<<(i&31))!=0){if(i>1],n,d,e);g=f}else{n=Ym(n,n,d,e)}}return n} +function Ln(a,b){var c,d,e,f,g,i,j;i=gl(a.e,b.e);g=lc(Od,{6:1},-1,i,1);e=Zh(a);d=Zh(b);c=d;if(e==d){g[d]=-a.b[d]^-b.b[d]}else{g[d]=-b.b[d];f=hl(b.e,e);for(++c;cb.g?1:0}d=a.f-b.f;c=(a.e>0?a.e:el((a.b-1)*0.3010299956639812)+1)-(b.e>0?b.e:el((b.b-1)*0.3010299956639812)+1);if(c>d+1){return e}else if(c0&&(g=ei(g,po(d)));return Qh(f,g)}}else return e0?a.e:el((a.b-1)*0.3010299956639812)+1)-f<0||f==0){return}d=a.q()-f;if(d<=0){return}if(a.b<54){Vf(a,b,d);return}i=po(d);e=Uh((!a.d&&(a.d=Li(a.g)),a.d),i);g=a.f-d;if(e[1].r()!=0){c=Qh(ki(e[1]._()),i);c=Bg(e[0].gb(0)?1:0,e[1].r()*(5+c),b.c);c!=0&&nc(e,0,fn(e[0],Ki(ue(c))));j=new cg(e[0]);if(j.q()>f){nc(e,0,Th(e[0],(Oh(),Lh)));--g}}a.f=Dg(g);a.e=f;Tf(a,e[0])} +function Yf(a,b,c){var d,e,f,g;d=b.f-a.f;if(b.b==0&&b.g!=-1||a.b==0&&a.g!=-1||c.b==0){return Qf(Xf(a,b),c)}if((b.e>0?b.e:el((b.b-1)*0.3010299956639812)+1)0?a.e:el((a.b-1)*0.3010299956639812)+1)){g=Uf(a);if(g!=b.r()){f=fn(lo((!a.d&&(a.d=Li(a.g)),a.d),10),Ki(ue(g)))}else{f=rn((!a.d&&(a.d=Li(a.g)),a.d),Ki(ue(g)));f=fn(lo(f,10),Ki(ue(g*9)))}e=new og(f,a.f+1);return Qf(e,c)}}return Qf(Xf(a,b),c)} +function rn(a,b){var c,d,e,f,g,i,j,k,n,o;g=a.f;j=b.f;if(j==0){return a}if(g==0){return b.cb()}f=a.e;i=b.e;if(f+i==2){c=qe(ue(a.b[0]),yr);d=qe(ue(b.b[0]),yr);g<0&&(c=Be(c));j<0&&(d=Be(d));return Ki(He(c,d))}e=f!=i?f>i?1:-1:jn(a.b,b.b,f);if(e==-1){o=-j;n=g==j?sn(b.b,i,a.b,f):gn(b.b,i,a.b,f)}else{o=g;if(g==j){if(e==0){return Oh(),Nh}n=sn(a.b,f,b.b,i)}else{n=gn(a.b,f,b.b,i)}}k=new si(o,n.length,n);Sh(k);return k} +function zn(a,b){var c,d,e,f,g,i,j;e=Zh(a);d=Zh(b);if(e>=b.e){return Oh(),Nh}i=b.e;g=lc(Od,{6:1},-1,i,1);c=e;if(e0?a:a.cb()}n=a.f;k=a.e;d=b.e;if(k+d==2){o=re(qe(ue(a.b[0]),yr),qe(ue(b.b[0]),yr));n!=e&&(o=Be(o));return Ki(o)}c=k!=d?k>d?1:-1:jn(a.b,b.b,k);if(c==0){return n==e?Jh:Ih}if(c==-1){return Nh}g=k-d+1;f=lc(Od,{6:1},-1,g,1);i=n==e?1:-1;d==1?Mm(f,a.b,k,b.b[0]):Km(f,g,a.b,k,b.b,d);j=new si(i,g,f);Sh(j);return j} +function hn(a,b,c,d,e){var f,g;f=pe(qe(ue(b[0]),yr),qe(ue(d[0]),yr));a[0]=Je(f);f=Fe(f,32);if(c>=e){for(g=1;g0){if(e0?(g=mo(g,Bc(e))):e<0&&(f=mo(f,Bc(-e)));return ug(f,g,c,d)} +function Gn(a,b){var c,d,e,f,g,i,j;d=Zh(b);e=Zh(a);if(e>=b.e){return b}i=b.e;g=lc(Od,{6:1},-1,i,1);if(d0){c-=d.length-b;if(c>=0){e.b.b+=es;for(;c>ef.length;c-=ef.length){$l(e,ef)}_l(e,ef,Bc(c));dm(e,Al(d,b))}else{c=b-c;dm(e,Bl(d,b,Bc(c)));e.b.b+=ds;dm(e,Al(d,Bc(c)))}}else{dm(e,Al(d,b));for(;c<-ef.length;c+=ef.length){$l(e,ef)}_l(e,ef,Bc(-c))}return e.b.b} +function ug(a,b,c,d){var e,f,g,i,j,k,n;g=Uh(a,b);i=g[0];k=g[1];if(k.r()==0){return new dg(i,c)}n=a.r()*b.r();if(b.ab()<54){j=ai(k);f=ai(b);e=se(He(Ee(xe(j,ur)?Be(j):j,1),xe(f,ur)?Be(f):f),ur)?0:xe(He(Ee(xe(j,ur)?Be(j):j,1),xe(f,ur)?Be(f):f),ur)?-1:1;e=Bg(i.gb(0)?1:0,n*(5+e),d)}else{e=Qh(ki(k._()),b._());e=Bg(i.gb(0)?1:0,n*(5+e),d)}if(e!=0){if(i.ab()<54){return Hg(pe(ai(i),ue(e)),c)}i=fn(i,Ki(ue(e)));return new dg(i,c)}return new dg(i,c)} +function ag(a){var b,c,d,e,f;if(a.i!=null){return a.i}if(a.b<32){a.i=Im(te(a.g),Bc(a.f));return a.i}e=Hm((!a.d&&(a.d=Li(a.g)),a.d),0);if(a.f==0){return e}b=(!a.d&&(a.d=Li(a.g)),a.d).r()<0?2:1;c=e.length;d=-a.f+c-b;f=new fm;cc(f.b,e);if(a.f>0&&d>=-6){if(d>=0){em(f,c-Bc(a.f),ds)}else{ec(f.b,b-1,b-1,es);em(f,b+1,Ll(ef,0,-Bc(d)-1))}}else{if(c-b>=1){ec(f.b,b,b,ds);++c}ec(f.b,c,c,fs);d>0&&em(f,++c,gs);em(f,++c,Lr+Ke(te(d)))}a.i=f.b.b;return a.i} +function xn(a,b){var c,d,e,f,g,i,j;e=Zh(a);f=Zh(b);if(e>=b.e){return a}d=f>e?f:e;f>e?(c=-b.b[d]&~a.b[d]):f0){d[e]=f;break}else{d[e]=f.substring(0,i.index);f=f.substring(i.index+i[0].length,f.length);c.lastIndex=0;if(g==f){d[e]=f.substring(0,1);f=f.substring(1)}g=f;e++}}if(b==0&&o.length>0){var j=d.length;while(j>0&&d[j-1]==Lr){--j}j1000000){throw new nk('power of ten too big')}if(a<=2147483647){return bo[1].db(b).eb(b)}d=bo[1].db(2147483647);e=d;c=te(a-2147483647);b=Bc(a%2147483647);while(ve(c,Ir)){e=ei(e,d);c=He(c,Ir)}e=ei(e,bo[1].db(b));e=e.eb(2147483647);c=te(a-2147483647);while(ve(c,Ir)){e=e.eb(2147483647);c=He(c,Ir)}e=e.eb(b);return e} +function $d(){var a;!!$stats&&Ue('com.iriscouch.gwtapp.client.BigDecimalApp');ik(new kk);Wj(new Yj);Gj(new Ij);Ch(new Eh);!!$stats&&Ue('com.google.gwt.user.client.UserAgentAsserter');a=We();wl(Sr,a)||($wnd.alert('ERROR: Possible problem with your *.gwt.xml module file.\nThe compile time user.agent value (safari) does not match the runtime user.agent value ('+a+'). Expect more errors.\n'),undefined);!!$stats&&Ue('com.google.gwt.user.client.DocumentModeAsserter');Ve()} +function Vo(a){Qo();var b,c,d,e,f;if(a==null){throw new jl}d=Cl(a);c=d.length;if(cOo.length){throw new Rk}f=null;e=null;if(d[0]==67){e=Ao;f=Io}else if(d[0]==68){e=Bo;f=Jo}else if(d[0]==70){e=Co;f=Ko}else if(d[0]==72){if(c>6){if(d[5]==68){e=Do;f=Lo}else if(d[5]==69){e=Eo;f=Mo}else if(d[5]==85){e=Fo;f=No}}}else if(d[0]==85){if(d[1]==80){e=Ho;f=Po}else if(d[1]==78){e=Go;f=Oo}}if(!!e&&c==f.length){for(b=1;b>5;this.b=lc(Od,{6:1},-1,this.e,1);for(c=0;c=2147483648&&(e-=4294967296),e))}this.b[this.e-1]>>>=-a&31;Sh(this)}} +function fn(a,b){var c,d,e,f,g,i,j,k,n,o,q,r;g=a.f;j=b.f;if(g==0){return b}if(j==0){return a}f=a.e;i=b.e;if(f+i==2){c=qe(ue(a.b[0]),yr);d=qe(ue(b.b[0]),yr);if(g==j){k=pe(c,d);r=Je(k);q=Je(Ge(k,32));return q==0?new qi(g,r):new si(g,2,mc(Od,{6:1},-1,[r,q]))}return Ki(g<0?He(d,c):He(c,d))}else if(g==j){o=g;n=f>=i?gn(a.b,f,b.b,i):gn(b.b,i,a.b,f)}else{e=f!=i?f>i?1:-1:jn(a.b,b.b,f);if(e==0){return Oh(),Nh}if(e==1){o=g;n=sn(a.b,f,b.b,i)}else{o=j;n=sn(b.b,i,a.b,f)}}k=new si(o,n.length,n);Sh(k);return k} +function Yn(a){Un();var b,c,d,e;if(a==null){throw new kl('null string')}b=Cl(a);if(b.length<27||b.length>45){throw new Sk(Hs)}for(d=0;d0?a.e:el((a.b-1)*0.3010299956639812)+1)0?b.e:el((b.b-1)*0.3010299956639812)+1)<-d-1){e=a;g=b}else{return Qf(tf(a,b),c)}if(c.b>=(e.e>0?e.e:el((e.b-1)*0.3010299956639812)+1)){return Qf(tf(a,b),c)}f=e.r();if(f==g.r()){i=fn(lo((!e.d&&(e.d=Li(e.g)),e.d),10),Ki(ue(f)))}else{i=rn((!e.d&&(e.d=Li(e.g)),e.d),Ki(ue(f)));i=fn(lo(i,10),Ki(ue(f*9)))}e=new og(i,e.f+1);return Qf(e,c)} +function $f(a){var b,c,d,e,f,g,i,j;g=Hm((!a.d&&(a.d=Li(a.g)),a.d),0);if(a.f==0){return g}b=(!a.d&&(a.d=Li(a.g)),a.d).r()<0?2:1;d=g.length;e=-a.f+d-b;j=new hm(g);if(a.f>0&&e>=-6){if(e>=0){em(j,d-Bc(a.f),ds)}else{ec(j.b,b-1,b-1,es);em(j,b+1,Ll(ef,0,-Bc(e)-1))}}else{c=d-b;i=Bc(e%3);if(i!=0){if((!a.d&&(a.d=Li(a.g)),a.d).r()==0){i=i<0?-i:3-i;e+=i}else{i=i<0?i+3:i;e-=i;b+=i}if(c<3){for(f=i-c;f>0;--f){em(j,d++,Tr)}}}if(d-b>=1){ec(j.b,b,b,ds);++d}if(e!=0){ec(j.b,d,d,fs);e>0&&em(j,++d,gs);em(j,++d,Lr+Ke(te(e)))}}return j.b.b} +function nm(a,b,c,d,e){var f,g,i,j,k,n,o,q,r;if(a==null||c==null){throw new jl}q=a.gC();j=c.gC();if((q.c&4)==0||(j.c&4)==0){throw new rk('Must be array types')}o=q.b;g=j.b;if(!((o.c&1)!=0?o==g:(g.c&1)==0)){throw new rk('Array types must match')}r=a.length;k=c.length;if(b<0||d<0||e<0||b+e>r||d+e>k){throw new Vk}if(((o.c&1)==0||(o.c&4)!=0)&&q!=j){n=vc(a,11);f=vc(c,11);if(Ac(a)===Ac(c)&&bd;){nc(f,i,n[--b])}}else{for(i=d+e;d=0&&a.b[0]=to[c];++c){}return so[c]}i=new si(1,a.e,lc(Od,{6:1},-1,a.e+1,1));nm(a.b,0,i.b,0,a.e);mi(a,0)?nn(i,2):(i.b[0]|=1);e=i.ab();for(b=2;eg?f:g));e=f-g;k=e>0?(go(),e>19!=0){b=Be(b);j=true}g=le(b);f=false;e=false;d=false;if(a.h==524288&&a.m==0&&a.l==0){e=true;f=true;if(g==-1){a=ce((Qe(),Me));d=true;j=!j}else{i=Fe(a,g);j&&je(i);c&&(ae=de(0,0,0));return i}}else if(~~a.h>>19!=0){f=true;a=Be(a);d=true;j=!j}if(g!=-1){return ge(a,g,j,f,c)}if(!we(a,b)){c&&(f?(ae=Be(a)):(ae=de(a.l,a.m,a.h)));return de(0,0,0)}return he(d?a:de(a.l,a.m,a.h),b,j,f,e,c)} +function An(a,b){var c,d,e,f,g,i,j,k;e=Zh(a);f=Zh(b);if(e>=b.e){return a}j=gl(a.e,b.e);d=e;if(f>e){i=lc(Od,{6:1},-1,j,1);g=hl(a.e,f);for(;d>13|(a.m&15)<<9;e=~~a.m>>4&8191;f=~~a.m>>17|(a.h&255)<<5;g=~~(a.h&1048320)>>8;i=b.l&8191;j=~~b.l>>13|(b.m&15)<<9;k=~~b.m>>4&8191;n=~~b.m>>17|(b.h&255)<<5;o=~~(b.h&1048320)>>8;C=c*i;D=d*i;E=e*i;F=f*i;G=g*i;if(j!=0){D+=c*j;E+=d*j;F+=e*j;G+=f*j}if(k!=0){E+=c*k;F+=d*k;G+=e*k}if(n!=0){F+=c*n;G+=d*n}o!=0&&(G+=c*o);r=C&4194303;s=(D&511)<<13;q=r+s;u=~~C>>22;v=~~D>>9;w=(E&262143)<<4;x=(F&31)<<17;t=u+v+w+x;z=~~E>>18;A=~~F>>5;B=(G&4095)<<8;y=z+A+B;t+=~~q>>22;q&=4194303;y+=~~t>>22;t&=4194303;y&=1048575;return de(q,t,y)} +function zf(a,b,c){var d,e,f,g,i,j,k,n;n=Ie(pe(ue(c.b),vr))+(b.e>0?b.e:el((b.b-1)*0.3010299956639812)+1)-(a.e>0?a.e:el((a.b-1)*0.3010299956639812)+1);e=a.f-b.f;j=e;f=1;i=nf.length-1;k=mc(Xd,{6:1},17,[(!a.d&&(a.d=Li(a.g)),a.d)]);if(c.b==0||a.b==0&&a.g!=-1||b.b==0&&b.g!=-1){return wf(a,b)}if(n>0){nc(k,0,ei((!a.d&&(a.d=Li(a.g)),a.d),po(n)));j+=n}k=Uh(k[0],(!b.d&&(b.d=Li(b.g)),b.d));g=k[0];if(k[1].r()!=0){d=Qh(ki(k[1]),(!b.d&&(b.d=Li(b.g)),b.d));g=fn(ei(g,(Oh(),Lh)),Ki(ue(k[0].r()*(5+d))));++j}else{while(!g.gb(0)){k=Uh(g,nf[f]);if(k[1].r()==0&&j-f>=e){j-=f;fe){vm(o,d);vm(q,e);um(j,e);c+=d-e}else{vm(o,d);vm(q,e);um(k,d);c+=e-d}j.f=1;while(q.r()>0){while(Qh(o,q)>0){pn(o,q);n=o.bb();vm(o,n);mn(j,k);um(k,n);c+=n}while(Qh(o,q)<=0){pn(q,o);if(q.r()==0){break}n=q.bb();vm(q,n);mn(k,j);um(j,n);c+=n}}if(!(o.e==1&&o.b[0]==1)){throw new nk(vs)}Qh(j,b)>=0&&pn(j,b);j=rn(b,j);i=Jm(b);if(c>f){j=Ym(j,(Oh(),Jh),b,i);c=c-f}j=Ym(j,Ai(f-c),b,i);return j} +function Xf(a,b){var c;c=a.f-b.f;if(a.b==0&&a.g!=-1){if(c<=0){return Mf(b)}if(b.b==0&&b.g!=-1){return a}}else if(b.b==0&&b.g!=-1){if(c>=0){return a}}if(c==0){if(gl(a.b,b.b)+1<54){return new pg(a.g-b.g,a.f)}return new og(rn((!a.d&&(a.d=Li(a.g)),a.d),(!b.d&&(b.d=Li(b.g)),b.d)),a.f)}else if(c>0){if(c0?b.e:el((b.b-1)*0.3010299956639812)+1)+f>(a.e>0?a.e:el((a.b-1)*0.3010299956639812)+1)+1||a.b==0&&a.g!=-1){d=(Oh(),Nh)}else if(f==0){d=Th((!a.d&&(a.d=Li(a.g)),a.d),(!b.d&&(b.d=Li(b.g)),b.d))}else if(f>0){g=po(f);d=Th((!a.d&&(a.d=Li(a.g)),a.d),ei((!b.d&&(b.d=Li(b.g)),b.d),g));d=ei(d,g)}else{g=po(-f);d=Th(ei((!a.d&&(a.d=Li(a.g)),a.d),g),(!b.d&&(b.d=Li(b.g)),b.d));while(!d.gb(0)){i=Uh(d,nf[c]);if(i[1].r()==0&&j-c>=f){j-=c;c36){return Hm(a,0)}d=Math.log(b)/Math.log(2);s=Bc(sm(new Pi(a.f<0?new si(1,a.e,a.b):a))/d+(u<0?1:0))+1;t=lc(Md,{6:1},-1,s,1);f=s;if(b!=16){v=lc(Od,{6:1},-1,o,1);nm(i,0,v,0,o);w=o;e=Dm[b];c=Cm[b-2];while(true){r=Mm(v,v,w,c);q=f;do{t[--f]=uk(r%b,b)}while((r=~~(r/b))!=0&&f!=0);g=e-q+f;for(k=0;k0;++k){t[--f]=48}for(k=w-1;k>0&&v[k]==0;--k){}w=k+1;if(w==1&&v[0]==0){break}}}else{for(k=0;k0;++n){r=~~i[k]>>(n<<2)&15;t[--f]=uk(r,16)}}}while(t[f]==48){++f}u==-1&&(t[--f]=45);return Ll(t,f,s-f)} +function Km(a,b,c,d,e,f){var g,i,j,k,n,o,q,r,s,t,u,v,w,x,y,z,A;u=lc(Od,{6:1},-1,d+1,1);v=lc(Od,{6:1},-1,f+1,1);j=$k(e[f-1]);if(j!=0){xm(v,e,0,j);xm(u,c,0,j)}else{nm(c,0,u,0,d);nm(e,0,v,0,f)}k=v[f-1];o=b-1;q=d;while(o>=0){if(u[q]==k){n=-1}else{w=pe(Ee(qe(ue(u[q]),yr),32),qe(ue(u[q-1]),yr));z=Nm(w,k);n=Je(z);y=Je(Fe(z,32));if(n!=0){x=false;++n;do{--n;if(x){break}s=Ae(qe(ue(n),yr),qe(ue(v[f-2]),yr));A=pe(Ee(ue(y),32),qe(ue(u[q-2]),yr));t=pe(qe(ue(y),yr),qe(ue(k),yr));$k(Je(Ge(t,32)))<32?(x=true):(y=Je(t))}while(ve(Le(s,Gr),Le(A,Gr)))}}if(n!=0){g=$m(u,q-f,v,f,n);if(g!=0){--n;i=ur;for(r=0;r=d){um(i,e)}else{vm(j,d-c0&&um(i,e-d+c)}c+=e}e=Sm(o,g);if(e!=0){um(o,e);if(d>=c){um(j,e)}else{vm(i,c-d0&&um(j,e-c+d)}d+=e}if(k.r()==o.r()){if(c<=d){ln(k,o);ln(i,j)}else{ln(o,k);ln(j,i)}}else{if(c<=d){kn(k,o);kn(i,j)}else{kn(o,k);kn(j,i)}}if(o.r()==0||k.r()==0){throw new nk(vs)}}if(Um(o,d)){i=j;o.r()!=k.r()&&(k=k.cb())}k.gb(g)&&(i.r()<0?(i=i.cb()):(i=rn(b,i)));i.r()<0&&(i=fn(i,b));return i} +function We(){var c=navigator.userAgent.toLowerCase();var d=function(a){return parseInt(a[1])*1000+parseInt(a[2])};if(function(){return c.indexOf(Wr)!=-1}())return Wr;if(function(){return c.indexOf('webkit')!=-1||function(){if(c.indexOf('chromeframe')!=-1){return true}if(typeof window['ActiveXObject']!=Xr){try{var b=new ActiveXObject('ChromeTab.ChromeFrame');if(b){b.registerBhoIfNeeded();return true}}catch(a){}}return false}()}())return Sr;if(function(){return c.indexOf(Yr)!=-1&&$doc.documentMode>=9}())return 'ie9';if(function(){return c.indexOf(Yr)!=-1&&$doc.documentMode>=8}())return 'ie8';if(function(){var a=/msie ([0-9]+)\.([0-9]+)/.exec(c);if(a&&a.length==3)return d(a)>=6000}())return 'ie6';if(function(){return c.indexOf('gecko')!=-1}())return 'gecko1_8';return 'unknown'} +function Kn(a,b){var c,d,e,f,g,i,j,k;j=gl(b.e,a.e);e=Zh(b);f=Zh(a);if(e0&&we(d,Er)){if(we(d,ur)){e=c+Je(d);for(f=17;f>=e;--f){j[f+1]=j[f]}j[++e]=46;g&&(j[--c]=45);return Ll(j,c,18-c+1)}for(f=2;xe(ue(f),pe(Be(d),sr));++f){j[--c]=48}j[--c]=46;j[--c]=48;g&&(j[--c]=45);return Ll(j,c,18-c)}n=c+1;k=new gm;g&&(k.b.b+=Ur,k);if(18-n>=1){Zl(k,j[c]);k.b.b+=ds;dc(k.b,Ll(j,c+1,18-c-1))}else{dc(k.b,Ll(j,c,18-c))}k.b.b+=fs;ve(d,ur)&&(k.b.b+=gs,k);cc(k.b,Lr+Ke(d));return k.b.b} +function Ef(a,b,c){var d,e,f,g,i,j,k,n,o,q,r,s,t;n=c.b;e=Pf(a)-b.q();k=nf.length-1;f=a.f-b.f;o=f;r=e-f+1;q=lc(Xd,{6:1},17,2,0);if(n==0||a.b==0&&a.g!=-1||b.b==0&&b.g!=-1){return Df(a,b)}if(r<=0){nc(q,0,(Oh(),Nh))}else if(f==0){nc(q,0,Th((!a.d&&(a.d=Li(a.g)),a.d),(!b.d&&(b.d=Li(b.g)),b.d)))}else if(f>0){nc(q,0,Th((!a.d&&(a.d=Li(a.g)),a.d),ei((!b.d&&(b.d=Li(b.g)),b.d),po(f))));o=f<(n-r+1>0?n-r+1:0)?f:n-r+1>0?n-r+1:0;nc(q,0,ei(q[0],po(o)))}else{g=-f<(n-e>0?n-e:0)?-f:n-e>0?n-e:0;q=Uh(ei((!a.d&&(a.d=Li(a.g)),a.d),po(g)),(!b.d&&(b.d=Li(b.g)),b.d));o+=g;g=-o;if(q[1].r()!=0&&g>0){d=(new cg(q[1])).q()+g-b.q();if(d==0){nc(q,1,Th(ei(q[1],po(g)),(!b.d&&(b.d=Li(b.g)),b.d)));d=dl(q[1].r())}if(d>0){throw new nk(as)}}}if(q[0].r()==0){return Ig(f)}t=q[0];j=new cg(q[0]);s=j.q();i=1;while(!t.gb(0)){q=Uh(t,nf[i]);if(q[1].r()==0&&(s-i>=n||o-i>=f)){s-=i;o-=i;in){throw new nk(as)}j.f=Dg(o);Tf(j,t);return j} +function Ve(){var a,b,c;b=$doc.compatMode;a=mc(Vd,{6:1},1,[Vr]);for(c=0;cMake sure your application's host HTML page has a Standards Mode (document.compatMode=' CSS1Compat') doctype,
    e.g. by using <!doctype html> at the start of your application's HTML page.

    To continue using this unsupported rendering mode and risk layout problems, suppress this message by adding
    the following line to your*.gwt.xml module file:
      <extend-configuration-property name=\"document.compatMode\" value=\""+b+'"/>':"Your *.gwt.xml module configuration prohibits the use of the current doucment rendering mode (document.compatMode=' "+b+"').
    Modify your application's host HTML page doctype, or update your custom 'document.compatMode' configuration property settings."} +function Lg(a){rf();var b,c;c=Lj(a);if(c==is)b=new cg(new oi(a[0].toString()));else if(c=='BigInteger number')b=new dg(new oi(a[0].toString()),a[1]);else if(c=='BigInteger number MathContext')b=new eg(new oi(a[0].toString()),a[1],new Yn(a[2].toString()));else if(c=='BigInteger MathContext')b=new fg(new oi(a[0].toString()),new Yn(a[1].toString()));else if(c==js)b=new gg(Cl(a[0].toString()));else if(c=='array number number')b=new hg(Cl(a[0].toString()),a[1],a[2]);else if(c=='array number number MathContext')b=new ig(Cl(a[0].toString()),a[1],a[2],new Yn(a[3].toString()));else if(c=='array MathContext')b=new jg(Cl(a[0].toString()),new Yn(a[1].toString()));else if(c==ks)b=new kg(a[0]);else if(c==ls)b=new lg(a[0],new Yn(a[1].toString()));else if(c==ms)b=new mg(a[0].toString());else if(c=='string MathContext')b=new ng(a[0].toString(),new Yn(a[1].toString()));else throw new V('Unknown call signature for obj = new java.math.BigDecimal: '+c);return new Kg(b)} +function uo(){uo=rr;var a;ro=mc(Od,{6:1},-1,[0,0,1854,1233,927,747,627,543,480,431,393,361,335,314,295,279,265,253,242,232,223,216,181,169,158,150,145,140,136,132,127,123,119,114,110,105,101,96,92,87,83,78,73,69,64,59,54,49,44,38,32,26,1]);to=mc(Od,{6:1},-1,[2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97,101,103,107,109,113,127,131,137,139,149,151,157,163,167,173,179,181,191,193,197,199,211,223,227,229,233,239,241,251,257,263,269,271,277,281,283,293,307,311,313,317,331,337,347,349,353,359,367,373,379,383,389,397,401,409,419,421,431,433,439,443,449,457,461,463,467,479,487,491,499,503,509,521,523,541,547,557,563,569,571,577,587,593,599,601,607,613,617,619,631,641,643,647,653,659,661,673,677,683,691,701,709,719,727,733,739,743,751,757,761,769,773,787,797,809,811,821,823,827,829,839,853,857,859,863,877,881,883,887,907,911,919,929,937,941,947,953,967,971,977,983,991,997,1009,1013,1019,1021]);so=lc(Xd,{6:1},17,to.length,0);for(a=0;a=0;--j){C=pe(Ee(y,32),qe(ue(B[j]),yr));t=Gm(C);B[j]=Je(t);y=ue(Je(Fe(t,32)))}u=Je(y);s=c;do{w[--c]=48+u%10&65535}while((u=~~(u/10))!=0&&c!=0);d=9-s+c;for(i=0;i0;++i){w[--c]=48}n=D-1;for(;B[n]==0;--n){if(n==0){break F}}D=n+1}while(w[c]==48){++c}}o=z<0;f=v-c-b-1;if(b==0){o&&(w[--c]=45);return Ll(w,c,v-c)}if(b>0&&f>=-6){if(f>=0){k=c+f;for(n=v-1;n>=k;--n){w[n+1]=w[n]}w[++k]=46;o&&(w[--c]=45);return Ll(w,c,v-c+1)}for(n=2;n<-f+1;++n){w[--c]=48}w[--c]=46;w[--c]=48;o&&(w[--c]=45);return Ll(w,c,v-c)}A=c+1;x=new gm;o&&(x.b.b+=Ur,x);if(v-A>=1){Zl(x,w[c]);x.b.b+=ds;dc(x.b,Ll(w,c+1,v-c-1))}else{dc(x.b,Ll(w,c,v-c))}x.b.b+=fs;f>0&&(x.b.b+=gs,x);cc(x.b,Lr+f);return x.b.b} +function jk(){nr(rs,Lr);if($wnd.bigdecimal.RoundingMode){var c=$wnd.bigdecimal.RoundingMode}$wnd.bigdecimal.RoundingMode=Jr(function(){if(arguments.length==1&&arguments[0]!=null&&arguments[0].gC()==Wc){this.__gwt_instance=arguments[0]}else if(arguments.length==0){this.__gwt_instance=new ak;or(this.__gwt_instance,this)}});var d=$wnd.bigdecimal.RoundingMode.prototype=new Object;if(c){for(p in c){$wnd.bigdecimal.RoundingMode[p]=c[p]}}$wnd.bigdecimal.RoundingMode.valueOf=Jr(function(a){var b=new bk((Qo(),Ok((Yo(),Xo),a)));return pr(b)});$wnd.bigdecimal.RoundingMode.values=Jr(function(){var a=fk();return qr(a)});d.name=Jr(function(){var a=this.__gwt_instance.Jb();return a});d.toString=Jr(function(){var a=this.__gwt_instance.tS();return a});$wnd.bigdecimal.RoundingMode.CEILING=Jr(function(){var a=new bk((Qo(),Ao));return pr(a)});$wnd.bigdecimal.RoundingMode.DOWN=Jr(function(){var a=new bk((Qo(),Bo));return pr(a)});$wnd.bigdecimal.RoundingMode.FLOOR=Jr(function(){var a=new bk((Qo(),Co));return pr(a)});$wnd.bigdecimal.RoundingMode.HALF_DOWN=Jr(function(){var a=new bk((Qo(),Do));return pr(a)});$wnd.bigdecimal.RoundingMode.HALF_EVEN=Jr(function(){var a=new bk((Qo(),Eo));return pr(a)});$wnd.bigdecimal.RoundingMode.HALF_UP=Jr(function(){var a=new bk((Qo(),Fo));return pr(a)});$wnd.bigdecimal.RoundingMode.UNNECESSARY=Jr(function(){var a=new bk((Qo(),Go));return pr(a)});$wnd.bigdecimal.RoundingMode.UP=Jr(function(){var a=new bk((Qo(),Ho));return pr(a)});mr(Wc,$wnd.bigdecimal.RoundingMode)} +function Hj(){nr(rs,Lr);if($wnd.bigdecimal.BigInteger){var d=$wnd.bigdecimal.BigInteger}$wnd.bigdecimal.BigInteger=Jr(function(){if(arguments.length==1&&arguments[0]!=null&&arguments[0].gC()==Sc){this.__gwt_instance=arguments[0]}else if(arguments.length==0){this.__gwt_instance=new Ni;or(this.__gwt_instance,this)}else if(arguments.length==1){this.__gwt_instance=Jj(arguments[0]);or(this.__gwt_instance,this)}});var e=$wnd.bigdecimal.BigInteger.prototype=new Object;if(d){for(p in d){$wnd.bigdecimal.BigInteger[p]=d[p]}}$wnd.bigdecimal.BigInteger.__init__=Jr(function(a){var b=Qi(a);return pr(b)});e.abs=Jr(function(){var a=this.__gwt_instance._();return pr(a)});e.add=Jr(function(a){var b=this.__gwt_instance.hb(a.__gwt_instance);return pr(b)});e.and=Jr(function(a){var b=this.__gwt_instance.ib(a.__gwt_instance);return pr(b)});e.andNot=Jr(function(a){var b=this.__gwt_instance.jb(a.__gwt_instance);return pr(b)});e.bitCount=jr(Number,Jr(function(){var a=this.__gwt_instance.kb();return a}));e.bitLength=jr(Number,Jr(function(){var a=this.__gwt_instance.ab();return a}));e.clearBit=Jr(function(a){var b=this.__gwt_instance.lb(a);return pr(b)});e.compareTo=jr(Number,Jr(function(a){var b=this.__gwt_instance.mb(a.__gwt_instance);return b}));e.divide=Jr(function(a){var b=this.__gwt_instance.nb(a.__gwt_instance);return pr(b)});e.doubleValue=jr(Number,Jr(function(){var a=this.__gwt_instance.z();return a}));e.equals=jr(Number,Jr(function(a){var b=this.__gwt_instance.eQ(a);return b}));e.flipBit=Jr(function(a){var b=this.__gwt_instance.pb(a);return pr(b)});e.floatValue=jr(Number,Jr(function(){var a=this.__gwt_instance.A();return a}));e.gcd=Jr(function(a){var b=this.__gwt_instance.qb(a.__gwt_instance);return pr(b)});e.getLowestSetBit=jr(Number,Jr(function(){var a=this.__gwt_instance.bb();return a}));e.hashCode=jr(Number,Jr(function(){var a=this.__gwt_instance.hC();return a}));e.intValue=jr(Number,Jr(function(){var a=this.__gwt_instance.B();return a}));e.isProbablePrime=jr(Number,Jr(function(a){var b=this.__gwt_instance.rb(a);return b}));e.max=Jr(function(a){var b=this.__gwt_instance.tb(a.__gwt_instance);return pr(b)});e.min=Jr(function(a){var b=this.__gwt_instance.ub(a.__gwt_instance);return pr(b)});e.mod=Jr(function(a){var b=this.__gwt_instance.vb(a.__gwt_instance);return pr(b)});e.modInverse=Jr(function(a){var b=this.__gwt_instance.wb(a.__gwt_instance);return pr(b)});e.modPow=Jr(function(a,b){var c=this.__gwt_instance.xb(a.__gwt_instance,b.__gwt_instance);return pr(c)});e.multiply=Jr(function(a){var b=this.__gwt_instance.yb(a.__gwt_instance);return pr(b)});e.negate=Jr(function(){var a=this.__gwt_instance.cb();return pr(a)});e.nextProbablePrime=Jr(function(){var a=this.__gwt_instance.zb();return pr(a)});e.not=Jr(function(){var a=this.__gwt_instance.Ab();return pr(a)});e.or=Jr(function(a){var b=this.__gwt_instance.Bb(a.__gwt_instance);return pr(b)});e.pow=Jr(function(a){var b=this.__gwt_instance.db(a);return pr(b)});e.remainder=Jr(function(a){var b=this.__gwt_instance.Cb(a.__gwt_instance);return pr(b)});e.setBit=Jr(function(a){var b=this.__gwt_instance.Db(a);return pr(b)});e.shiftLeft=Jr(function(a){var b=this.__gwt_instance.eb(a);return pr(b)});e.shiftRight=Jr(function(a){var b=this.__gwt_instance.fb(a);return pr(b)});e.signum=jr(Number,Jr(function(){var a=this.__gwt_instance.r();return a}));e.subtract=Jr(function(a){var b=this.__gwt_instance.Eb(a.__gwt_instance);return pr(b)});e.testBit=jr(Number,Jr(function(a){var b=this.__gwt_instance.gb(a);return b}));e.toString_va=Jr(function(a){var b=this.__gwt_instance.Fb(a);return b});e.xor=Jr(function(a){var b=this.__gwt_instance.Gb(a.__gwt_instance);return pr(b)});e.divideAndRemainder=Jr(function(a){var b=this.__gwt_instance.ob(a.__gwt_instance);return qr(b)});e.longValue=jr(Number,Jr(function(){var a=this.__gwt_instance.sb();return a}));$wnd.bigdecimal.BigInteger.valueOf=Jr(function(a){var b=(Oh(),new Pi(Ki(te(a))));return pr(b)});$wnd.bigdecimal.BigInteger.ONE=Jr(function(){var a=(Oh(),new Pi(Jh));return pr(a)});$wnd.bigdecimal.BigInteger.TEN=Jr(function(){var a=(Oh(),new Pi(Lh));return pr(a)});$wnd.bigdecimal.BigInteger.ZERO=Jr(function(){var a=(Oh(),new Pi(Nh));return pr(a)});mr(Sc,$wnd.bigdecimal.BigInteger)} +function Dh(){nr(rs,Lr);if($wnd.bigdecimal.BigDecimal){var c=$wnd.bigdecimal.BigDecimal}$wnd.bigdecimal.BigDecimal=Jr(function(){if(arguments.length==1&&arguments[0]!=null&&arguments[0].gC()==Qc){this.__gwt_instance=arguments[0]}else if(arguments.length==0){this.__gwt_instance=new Jg;or(this.__gwt_instance,this)}});var d=$wnd.bigdecimal.BigDecimal.prototype=new Object;if(c){for(p in c){$wnd.bigdecimal.BigDecimal[p]=c[p]}}$wnd.bigdecimal.BigDecimal.ROUND_CEILING=2;$wnd.bigdecimal.BigDecimal.ROUND_DOWN=1;$wnd.bigdecimal.BigDecimal.ROUND_FLOOR=3;$wnd.bigdecimal.BigDecimal.ROUND_HALF_DOWN=5;$wnd.bigdecimal.BigDecimal.ROUND_HALF_EVEN=6;$wnd.bigdecimal.BigDecimal.ROUND_HALF_UP=4;$wnd.bigdecimal.BigDecimal.ROUND_UNNECESSARY=7;$wnd.bigdecimal.BigDecimal.ROUND_UP=0;$wnd.bigdecimal.BigDecimal.__init__=Jr(function(a){var b=Lg(a);return pr(b)});d.abs_va=Jr(function(a){var b=this.__gwt_instance.s(a);return pr(b)});d.add_va=Jr(function(a){var b=this.__gwt_instance.t(a);return pr(b)});d.byteValueExact=jr(Number,Jr(function(){var a=this.__gwt_instance.u();return a}));d.compareTo=jr(Number,Jr(function(a){var b=this.__gwt_instance.v(a.__gwt_instance);return b}));d.divide_va=Jr(function(a){var b=this.__gwt_instance.y(a);return pr(b)});d.divideToIntegralValue_va=Jr(function(a){var b=this.__gwt_instance.x(a);return pr(b)});d.doubleValue=jr(Number,Jr(function(){var a=this.__gwt_instance.z();return a}));d.equals=jr(Number,Jr(function(a){var b=this.__gwt_instance.eQ(a);return b}));d.floatValue=jr(Number,Jr(function(){var a=this.__gwt_instance.A();return a}));d.hashCode=jr(Number,Jr(function(){var a=this.__gwt_instance.hC();return a}));d.intValue=jr(Number,Jr(function(){var a=this.__gwt_instance.B();return a}));d.intValueExact=jr(Number,Jr(function(){var a=this.__gwt_instance.C();return a}));d.max=Jr(function(a){var b=this.__gwt_instance.F(a.__gwt_instance);return pr(b)});d.min=Jr(function(a){var b=this.__gwt_instance.G(a.__gwt_instance);return pr(b)});d.movePointLeft=Jr(function(a){var b=this.__gwt_instance.H(a);return pr(b)});d.movePointRight=Jr(function(a){var b=this.__gwt_instance.I(a);return pr(b)});d.multiply_va=Jr(function(a){var b=this.__gwt_instance.J(a);return pr(b)});d.negate_va=Jr(function(a){var b=this.__gwt_instance.K(a);return pr(b)});d.plus_va=Jr(function(a){var b=this.__gwt_instance.L(a);return pr(b)});d.pow_va=Jr(function(a){var b=this.__gwt_instance.M(a);return pr(b)});d.precision=jr(Number,Jr(function(){var a=this.__gwt_instance.q();return a}));d.remainder_va=Jr(function(a){var b=this.__gwt_instance.N(a);return pr(b)});d.round=Jr(function(a){var b=this.__gwt_instance.O(a.__gwt_instance);return pr(b)});d.scale=jr(Number,Jr(function(){var a=this.__gwt_instance.P();return a}));d.scaleByPowerOfTen=Jr(function(a){var b=this.__gwt_instance.Q(a);return pr(b)});d.setScale_va=Jr(function(a){var b=this.__gwt_instance.R(a);return pr(b)});d.shortValueExact=jr(Number,Jr(function(){var a=this.__gwt_instance.S();return a}));d.signum=jr(Number,Jr(function(){var a=this.__gwt_instance.r();return a}));d.stripTrailingZeros=Jr(function(){var a=this.__gwt_instance.T();return pr(a)});d.subtract_va=Jr(function(a){var b=this.__gwt_instance.U(a);return pr(b)});d.toBigInteger=Jr(function(){var a=this.__gwt_instance.V();return pr(a)});d.toBigIntegerExact=Jr(function(){var a=this.__gwt_instance.W();return pr(a)});d.toEngineeringString=Jr(function(){var a=this.__gwt_instance.X();return a});d.toPlainString=Jr(function(){var a=this.__gwt_instance.Y();return a});d.toString=Jr(function(){var a=this.__gwt_instance.tS();return a});d.ulp=Jr(function(){var a=this.__gwt_instance.Z();return pr(a)});d.unscaledValue=Jr(function(){var a=this.__gwt_instance.$();return pr(a)});d.divideAndRemainder_va=Jr(function(a){var b=this.__gwt_instance.w(a);return qr(b)});d.longValue=jr(Number,Jr(function(){var a=this.__gwt_instance.E();return a}));d.longValueExact=jr(Number,Jr(function(){var a=this.__gwt_instance.D();return a}));$wnd.bigdecimal.BigDecimal.valueOf_va=Jr(function(a){var b=zh(a);return pr(b)});$wnd.bigdecimal.BigDecimal.log=jr(Number,Jr(function(a){rf();typeof console!==Xr&&console.log&&console.log(a)}));$wnd.bigdecimal.BigDecimal.logObj=jr(Number,Jr(function(a){rf();typeof console!==Xr&&console.log&&typeof JSON!==Xr&&JSON.stringify&&console.log('object: '+JSON.stringify(a))}));$wnd.bigdecimal.BigDecimal.ONE=Jr(function(){var a=(rf(),new Kg(lf));return pr(a)});$wnd.bigdecimal.BigDecimal.TEN=Jr(function(){var a=(rf(),new Kg(mf));return pr(a)});$wnd.bigdecimal.BigDecimal.ZERO=Jr(function(){var a=(rf(),new Kg(of));return pr(a)});mr(Qc,$wnd.bigdecimal.BigDecimal)} +var Lr='',ys=' ',$r='"',Or='(',gs='+',Is=', ',Ur='-',ds='.',Tr='0',es='0.',zs='0.0',As='0.00',Bs='0.000',Cs='0.0000',Ds='0.00000',Es='0.000000',Gs='0E',Fs='0E+',Qr=':',Kr=': ',Js='=',ps='BigDecimal',qs='BigDecimal MathContext',Ts='BigDecimal;',is='BigInteger',ss='BigInteger divide by zero',vs='BigInteger not invertible.',us='BigInteger: modulus not positive',Us='BigInteger;',Vr='CSS1Compat',_r='Division by zero',as='Division impossible',fs='E',Zr='For input string: "',hs='Infinite or NaN',bs='Invalid Operation',os='MathContext',ts='Negative bit address',cs='Rounding necessary',xs='RoundingMode',Vs='RoundingMode;',Nr='String',Rr='[',Ss='[Lcom.iriscouch.gwtapp.client.',Os='[Ljava.lang.',Ws='[Ljava.math.',Ks='\\.',Ls='__gwtex_wrap',Pr='anonymous',js='array',Hs='bad string format',rs='bigdecimal',Ns='com.google.gwt.core.client.',Ps='com.google.gwt.core.client.impl.',Rs='com.iriscouch.gwtapp.client.',Ms='java.lang.',Qs='java.math.',Xs='java.util.',Yr='msie',Mr='null',ks='number',ls='number MathContext',ns='number number',ws='object',Wr='opera',Ys='org.timepedia.exporter.client.',Sr='safari',ms='string',Xr='undefined';var _,Gr={l:0,m:0,h:524288},zr={l:0,m:4193280,h:1048575},Er={l:4194298,m:4194303,h:1048575},wr={l:4194303,m:4194303,h:1048575},ur={l:0,m:0,h:0},sr={l:1,m:0,h:0},vr={l:2,m:0,h:0},Hr={l:5,m:0,h:0},tr={l:10,m:0,h:0},xr={l:11,m:0,h:0},Dr={l:18,m:0,h:0},Cr={l:48,m:0,h:0},Br={l:877824,m:119,h:0},Ar={l:1755648,m:238,h:0},Ir={l:4194303,m:511,h:0},yr={l:4194303,m:1023,h:0},Fr={l:0,m:1024,h:0};_=H.prototype={};_.eQ=function I(a){return this===a};_.gC=function J(){return gd};_.hC=function K(){return ob(this)};_.tS=function L(){return this.gC().d+'@'+al(this.hC())};_.toString=function(){return this.tS()};_.tM=rr;_.cM={};_=P.prototype=new H;_.gC=function R(){return nd};_.j=function S(){return this.f};_.tS=function T(){var a,b;a=this.gC().d;b=this.j();return b!=null?a+Kr+b:a};_.cM={6:1,15:1};_.f=null;_=O.prototype=new P;_.gC=function U(){return ad};_.cM={6:1,15:1};_=V.prototype=N.prototype=new O;_.gC=function W(){return hd};_.cM={6:1,12:1,15:1};_=X.prototype=M.prototype=new N;_.gC=function Y(){return Fc};_.j=function ab(){this.d==null&&(this.e=bb(this.c),this.b=Z(this.c),this.d=Or+this.e+'): '+this.b+db(this.c),undefined);return this.d};_.cM={6:1,12:1,15:1};_.b=null;_.c=null;_.d=null;_.e=null;_=gb.prototype=new H;_.gC=function hb(){return Hc};var ib=0,jb=0;_=ub.prototype=pb.prototype=new gb;_.gC=function vb(){return Ic};_.b=null;_.c=null;var qb;_=Fb.prototype=Ab.prototype=new H;_.k=function Gb(){var a={};var b=[];var c=arguments.callee.caller.caller;while(c){var d=this.n(c.toString());b.push(d);var e=Qr+d;var f=a[e];if(f){var g,i;for(g=0,i=f.length;g0?c:Pr};_.gC=function Wb(){return Jc};_.o=function Xb(a){return Sb(this,a)};_.p=function Yb(){return 3};_=Zb.prototype=new H;_.gC=function $b(){return Nc};_=fc.prototype=_b.prototype=new Zb;_.gC=function gc(){return Mc};_.b=Lr;_=ic.prototype=hc.prototype=new H;_.gC=function kc(){return this.aC};_.aC=null;_.qI=0;var oc,pc;var ae=null;var oe=null;var Me,Ne,Oe,Pe;_=Se.prototype=Re.prototype=new H;_.gC=function Te(){return Oc};_.cM={2:1};_=Ze.prototype=new H;_.gC=function cf(){return fd};_.cM={6:1,10:1};var $e=null;_=qg.prototype=pg.prototype=og.prototype=ng.prototype=mg.prototype=lg.prototype=kg.prototype=jg.prototype=ig.prototype=hg.prototype=gg.prototype=fg.prototype=eg.prototype=dg.prototype=cg.prototype=Ye.prototype=new Ze;_.eQ=function wg(a){return Ff(this,a)};_.gC=function xg(){return pd};_.hC=function yg(){return Gf(this)};_.q=function Ag(){return Pf(this)};_.r=function Cg(){return Uf(this)};_.tS=function Eg(){return ag(this)};_.cM={6:1,8:1,10:1,16:1};_.b=0;_.c=0;_.d=null;_.e=0;_.f=0;_.g=0;_.i=null;var df,ef,ff,gf,hf,jf,kf=null,lf,mf,nf=null,of,pf,qf=null;_=Kg.prototype=Jg.prototype=Xe.prototype=new Ye;_.s=function Mg(a){var b,c,d;d=Lj(a);if(d==Lr)b=Uf(this)<0?Mf(this):this;else if(d==os)b=sf(Qf(this,new Yn(a[0].toString())));else throw new V('Unknown call signature for interim = super.abs: '+d);c=new Kg(b);return c};_.t=function Ng(a){var b,c,d;d=Lj(a);if(d==ps)b=tf(this,new mg(a[0].toString()));else if(d==qs)b=uf(this,new mg(a[0].toString()),new Yn(a[1].toString()));else throw new V('Unknown call signature for interim = super.add: '+d);c=new Kg(b);return c};_.u=function Og(){return ~~(Je(bg(this,8))<<24)>>24};_.v=function Pg(a){return vf(this,a)};_.w=function Qg(a){var b,c,d,e;e=Lj(a);if(e==ps)c=Bf(this,new mg(a[0].toString()));else if(e==qs)c=Cf(this,new mg(a[0].toString()),new Yn(a[1].toString()));else throw new V('Unknown call signature for interim = super.divideAndRemainder: '+e);d=lc(Qd,{6:1},3,c.length,0);for(b=0;b129?(a*=Infinity):(a=_e(ag(this))),a};_.gC=function Wg(){return Qc};_.hC=function Xg(){return Gf(this)};_.B=function Yg(){return this.f<=-32||this.f>(this.e>0?this.e:el((this.b-1)*0.3010299956639812)+1)?0:Mi(new Pi(this.f==0||this.b==0&&this.g!=-1?(!this.d&&(this.d=Li(this.g)),this.d):this.f<0?ei((!this.d&&(this.d=Li(this.g)),this.d),po(-this.f)):Th((!this.d&&(this.d=Li(this.g)),this.d),po(this.f))))};_.C=function Zg(){return Je(bg(this,32))};_.D=function $g(){return Je(bg(this,32))};_.E=function _g(){return _e(ag(this))};_.F=function ah(a){return new Kg(vf(this,a)>=0?this:a)};_.G=function bh(a){return new Kg(vf(this,a)<=0?this:a)};_.H=function ch(a){return new Kg(Jf(this,this.f+a))};_.I=function dh(a){return new Kg(Jf(this,this.f-a))};_.J=function eh(a){var b,c,d;d=Lj(a);if(d==ps)b=Kf(this,new mg(a[0].toString()));else if(d==qs)b=Lf(this,new mg(a[0].toString()),new Yn(a[1].toString()));else throw new V('Unknown call signature for interim = super.multiply: '+d);c=new Kg(b);return c};_.K=function fh(a){var b,c,d;d=Lj(a);if(d==Lr)b=Mf(this);else if(d==os)b=Mf(Qf(this,new Yn(a[0].toString())));else throw new V('Unknown call signature for interim = super.negate: '+d);c=new Kg(b);return c};_.L=function gh(a){var b,c,d;d=Lj(a);if(d==Lr)b=this;else if(d==os)b=Qf(this,new Yn(a[0].toString()));else throw new V('Unknown call signature for interim = super.plus: '+d);c=new Kg(b);return c};_.M=function hh(a){var b,c,d;d=Lj(a);if(d==ks)b=Nf(this,a[0]);else if(d==ls)b=Of(this,a[0],new Yn(a[1].toString()));else throw new V('Unknown call signature for interim = super.pow: '+d);c=new Kg(b);return c};_.q=function ih(){return Pf(this)};_.N=function jh(a){var b,c,d;d=Lj(a);if(d==ps)b=Bf(this,new mg(a[0].toString()))[1];else if(d==qs)b=Cf(this,new mg(a[0].toString()),new Yn(a[1].toString()))[1];else throw new V('Unknown call signature for interim = super.remainder: '+d);c=new Kg(b);return c};_.O=function kh(a){return new Kg(Qf(this,new Yn(Wn(a.b))))};_.P=function lh(){return Bc(this.f)};_.Q=function mh(a){return new Kg(Rf(this,a))};_.R=function nh(a){var b,c,d;d=Lj(a);if(d==ks)b=Sf(this,a[0],(Qo(),Go));else if(d==ns)b=Sf(this,a[0],Uo(a[1]));else if(d=='number RoundingMode')b=Sf(this,a[0],To(a[1].toString()));else throw new V('Unknown call signature for interim = super.setScale: '+d);c=new Kg(b);return c};_.S=function oh(){return ~~(Je(bg(this,16))<<16)>>16};_.r=function ph(){return Uf(this)};_.T=function qh(){return new Kg(Wf(this))};_.U=function rh(a){var b,c,d;d=Lj(a);if(d==ps)b=Xf(this,new mg(a[0].toString()));else if(d==qs)b=Yf(this,new mg(a[0].toString()),new Yn(a[1].toString()));else throw new V('Unknown call signature for interim = super.subtract: '+d);c=new Kg(b);return c};_.V=function sh(){return new Pi(this.f==0||this.b==0&&this.g!=-1?(!this.d&&(this.d=Li(this.g)),this.d):this.f<0?ei((!this.d&&(this.d=Li(this.g)),this.d),po(-this.f)):Th((!this.d&&(this.d=Li(this.g)),this.d),po(this.f)))};_.W=function th(){return new Pi(Zf(this))};_.X=function uh(){return $f(this)};_.Y=function vh(){return _f(this)};_.tS=function wh(){return ag(this)};_.Z=function xh(){return new Kg(new pg(1,this.f))};_.$=function yh(){return new Pi((!this.d&&(this.d=Li(this.g)),this.d))};_.cM={3:1,6:1,8:1,10:1,16:1,24:1};_=Eh.prototype=Ah.prototype=new H;_.gC=function Fh(){return Pc};var Bh=false;_=ui.prototype=ti.prototype=si.prototype=ri.prototype=qi.prototype=pi.prototype=oi.prototype=ni.prototype=Hh.prototype=new Ze;_._=function vi(){return this.f<0?new si(1,this.e,this.b):this};_.ab=function wi(){return sm(this)};_.eQ=function xi(a){return Vh(this,a)};_.gC=function yi(){return qd};_.bb=function zi(){return $h(this)};_.hC=function Bi(){return _h(this)};_.cb=function Ci(){return this.f==0?this:new si(-this.f,this.e,this.b)};_.db=function Di(a){return gi(this,a)};_.eb=function Fi(a){return ji(this,a)};_.fb=function Gi(a){return li(this,a)};_.r=function Hi(){return this.f};_.gb=function Ii(a){return mi(this,a)};_.tS=function Ji(){return Hm(this,0)};_.cM={6:1,8:1,10:1,17:1};_.b=null;_.c=-2;_.d=0;_.e=0;_.f=0;var Ih,Jh,Kh,Lh,Mh=null,Nh;_=Pi.prototype=Oi.prototype=Ni.prototype=Gh.prototype=new Hh;_._=function Ri(){return new Pi(this.f<0?new si(1,this.e,this.b):this)};_.hb=function Si(a){return new Pi(fn(this,a))};_.ib=function Ti(a){return new Pi(vn(this,a))};_.jb=function Ui(a){return new Pi(yn(this,a))};_.kb=function Vi(){return rm(this)};_.ab=function Wi(){return sm(this)};_.lb=function Xi(a){return new Pi(Ph(this,a))};_.mb=function Yi(a){return Qh(this,a)};_.nb=function Zi(a){return new Pi(Th(this,a))};_.ob=function $i(a){var b,c,d;c=Uh(this,a);d=lc(Rd,{6:1},4,c.length,0);for(b=0;b=0?Qr+this.c:Lr)+')'};_.cM={6:1,13:1};_.b=null;_.c=0;_.d=null;_=String.prototype;_.eQ=function Hl(a){return wl(this,a)};_.gC=function Il(){return md};_.hC=function Jl(){return Rl(this)};_.tS=function Kl(){return this};_.cM={1:1,6:1,7:1,8:1};var Ml,Nl=0,Ol;_=Ul.prototype=Tl.prototype=new H;_.gC=function Vl(){return jd};_.tS=function Wl(){return this.b.b};_.cM={7:1};_=hm.prototype=gm.prototype=fm.prototype=Xl.prototype=new H;_.gC=function im(){return kd};_.tS=function jm(){return this.b.b};_.cM={7:1};_=lm.prototype=km.prototype=new Uk;_.gC=function mm(){return ld};_.cM={6:1,12:1,14:1,15:1};_=pm.prototype=om.prototype=new N;_.gC=function qm(){return od};_.cM={6:1,12:1,15:1};var Cm,Dm;_=Yn.prototype=Xn.prototype=Nn.prototype=new H;_.eQ=function Zn(a){return xc(a,18)&&vc(a,18).b==this.b&&vc(a,18).c==this.c};_.gC=function $n(){return rd};_.hC=function _n(){return Vn(this)};_.tS=function ao(){return Wn(this)};_.cM={6:1,18:1};_.b=0;_.c=null;var On,Pn,Qn,Rn,Sn,Tn;var bo,co,eo,fo;var ro,so,to;_=Ro.prototype=yo.prototype=new Ik;_.gC=function So(){return sd};_.cM={6:1,8:1,9:1,19:1};var zo,Ao,Bo,Co,Do,Eo,Fo,Go,Ho,Io,Jo,Ko,Lo,Mo,No,Oo,Po;var Xo;_=Zo.prototype=new H;_.Kb=function _o(a){throw new pm};_.Lb=function ap(a){var b;b=$o(this.Mb(),a);return !!b};_.gC=function bp(){return td};_.tS=function cp(){var a,b,c,d;c=new Ul;a=null;c.b.b+=Rr;b=this.Mb();while(b.Pb()){a!=null?(cc(c.b,a),c):(a=Is);d=b.Qb();cc(c.b,d===this?'(this Collection)':Lr+d)}c.b.b+=']';return c.b.b};_=ep.prototype=new H;_.eQ=function fp(a){var b,c,d,e,f;if(a===this){return true}if(!xc(a,21)){return false}e=vc(a,21);if(this.e!=e.e){return false}for(c=new Ip((new Cp(e)).b);kq(c.b);){b=vc(lq(c.b),22);d=b.Rb();f=b.Sb();if(!(d==null?this.d:xc(d,1)?Qr+vc(d,1) in this.f:pp(this,d,~~fb(d)))){return false}if(!Xq(f,d==null?this.c:xc(d,1)?op(this,vc(d,1)):np(this,d,~~fb(d)))){return false}}return true};_.gC=function gp(){return Cd};_.hC=function hp(){var a,b,c;c=0;for(b=new Ip((new Cp(this)).b);kq(b.b);){a=vc(lq(b.b),22);c+=a.hC();c=~~c}return c};_.tS=function ip(){var a,b,c,d;d='{';a=false;for(c=new Ip((new Cp(this)).b);kq(c.b);){b=vc(lq(c.b),22);a?(d+=Is):(a=true);d+=Lr+b.Rb();d+=Js;d+=Lr+b.Sb()}return d+'}'};_.cM={21:1};_=dp.prototype=new ep;_.Ob=function vp(a,b){return Ac(a)===Ac(b)||a!=null&&eb(a,b)};_.gC=function wp(){return yd};_.cM={21:1};_.b=null;_.c=null;_.d=false;_.e=0;_.f=null;_=yp.prototype=new Zo;_.eQ=function zp(a){var b,c,d;if(a===this){return true}if(!xc(a,23)){return false}c=vc(a,23);if(c.b.e!=this.Nb()){return false}for(b=new Ip(c.b);kq(b.b);){d=vc(lq(b.b),22);if(!this.Lb(d)){return false}}return true};_.gC=function Ap(){return Dd};_.hC=function Bp(){var a,b,c;a=0;for(b=this.Mb();b.Pb();){c=b.Qb();if(c!=null){a+=fb(c);a=~~a}}return a};_.cM={23:1};_=Cp.prototype=xp.prototype=new yp;_.Lb=function Dp(a){var b,c,d;if(xc(a,22)){b=vc(a,22);c=b.Rb();if(lp(this.b,c)){d=mp(this.b,c);return Eq(b.Sb(),d)}}return false};_.gC=function Ep(){return vd};_.Mb=function Fp(){return new Ip(this.b)};_.Nb=function Gp(){return this.b.e};_.cM={23:1};_.b=null;_=Ip.prototype=Hp.prototype=new H;_.gC=function Jp(){return ud};_.Pb=function Kp(){return kq(this.b)};_.Qb=function Lp(){return vc(lq(this.b),22)};_.b=null;_=Np.prototype=new H;_.eQ=function Op(a){var b;if(xc(a,22)){b=vc(a,22);if(Xq(this.Rb(),b.Rb())&&Xq(this.Sb(),b.Sb())){return true}}return false};_.gC=function Pp(){return Bd};_.hC=function Qp(){var a,b;a=0;b=0;this.Rb()!=null&&(a=fb(this.Rb()));this.Sb()!=null&&(b=fb(this.Sb()));return a^b};_.tS=function Rp(){return this.Rb()+Js+this.Sb()};_.cM={22:1};_=Sp.prototype=Mp.prototype=new Np;_.gC=function Tp(){return wd};_.Rb=function Up(){return null};_.Sb=function Vp(){return this.b.c};_.Tb=function Wp(a){return tp(this.b,a)};_.cM={22:1};_.b=null;_=Yp.prototype=Xp.prototype=new Np;_.gC=function Zp(){return xd};_.Rb=function $p(){return this.b};_.Sb=function _p(){return op(this.c,this.b)};_.Tb=function aq(a){return up(this.c,this.b,a)};_.cM={22:1};_.b=null;_.c=null;_=bq.prototype=new Zo;_.Kb=function cq(a){sq(this,this.Nb(),a);return true};_.eQ=function eq(a){var b,c,d,e,f;if(a===this){return true}if(!xc(a,20)){return false}f=vc(a,20);if(this.Nb()!=f.c){return false}d=new mq(this);e=new mq(f);while(d.bMathContext immutable class encapsulates the + * settings understood by the operator methods of the {@link BigDecimal} + * class (and potentially other classes). Operator methods are those + * that effect an operation on a number or a pair of numbers. + *

    + * The settings, which are not base-dependent, comprise: + *

      + *
    1. digits: + * the number of digits (precision) to be used for an operation + *
    2. form: + * the form of any exponent that results from the operation + *
    3. lostDigits: + * whether checking for lost digits is enabled + *
    4. roundingMode: + * the algorithm to be used for rounding. + *
    + *

    + * When provided, a MathContext object supplies the + * settings for an operation directly. + *

    + * When MathContext.DEFAULT is provided for a + * MathContext parameter then the default settings are used + * (9, SCIENTIFIC, false, ROUND_HALF_UP). + *

    + * In the BigDecimal class, all methods which accept a + * MathContext object defaults) also have a version of the + * method which does not accept a MathContext parameter. These versions + * carry out unlimited precision fixed point arithmetic (as though the + * settings were (0, PLAIN, false, ROUND_HALF_UP). + *

    + * The instance variables are shared with default access (so they are + * directly accessible to the BigDecimal class), but must + * never be changed. + *

    + * The rounding mode constants have the same names and values as the + * constants of the same name in java.math.BigDecimal, to + * maintain compatibility with earlier versions of + * BigDecimal. + * + * @see BigDecimal + * @author Mike Cowlishaw + * @stable ICU 2.0 + */ + +//--public final class MathContext implements java.io.Serializable{ + //--private static final java.lang.String $0="MathContext.nrx"; + + //-- methods + MathContext.prototype.getDigits = getDigits; + MathContext.prototype.getForm = getForm; + MathContext.prototype.getLostDigits = getLostDigits; + MathContext.prototype.getRoundingMode = getRoundingMode; + MathContext.prototype.toString = toString; + MathContext.prototype.isValidRound = isValidRound; + + + /* ----- Properties ----- */ + /* properties public constant */ + /** + * Plain (fixed point) notation, without any exponent. + * Used as a setting to control the form of the result of a + * BigDecimal operation. + * A zero result in plain form may have a decimal part of one or + * more zeros. + * + * @see #ENGINEERING + * @see #SCIENTIFIC + * @stable ICU 2.0 + */ + //--public static final int PLAIN=0; // [no exponent] + MathContext.PLAIN = MathContext.prototype.PLAIN = 0; // [no exponent] + + /** + * Standard floating point notation (with scientific exponential + * format, where there is one digit before any decimal point). + * Used as a setting to control the form of the result of a + * BigDecimal operation. + * A zero result in plain form may have a decimal part of one or + * more zeros. + * + * @see #ENGINEERING + * @see #PLAIN + * @stable ICU 2.0 + */ + //--public static final int SCIENTIFIC=1; // 1 digit before . + MathContext.SCIENTIFIC = MathContext.prototype.SCIENTIFIC = 1; // 1 digit before . + + /** + * Standard floating point notation (with engineering exponential + * format, where the power of ten is a multiple of 3). + * Used as a setting to control the form of the result of a + * BigDecimal operation. + * A zero result in plain form may have a decimal part of one or + * more zeros. + * + * @see #PLAIN + * @see #SCIENTIFIC + * @stable ICU 2.0 + */ + //--public static final int ENGINEERING=2; // 1-3 digits before . + MathContext.ENGINEERING = MathContext.prototype.ENGINEERING = 2; // 1-3 digits before . + + // The rounding modes match the original BigDecimal class values + /** + * Rounding mode to round to a more positive number. + * Used as a setting to control the rounding mode used during a + * BigDecimal operation. + *

    + * If any of the discarded digits are non-zero then the result + * should be rounded towards the next more positive digit. + * @stable ICU 2.0 + */ + //--public static final int ROUND_CEILING=2; + MathContext.ROUND_CEILING = MathContext.prototype.ROUND_CEILING = 2; + + /** + * Rounding mode to round towards zero. + * Used as a setting to control the rounding mode used during a + * BigDecimal operation. + *

    + * All discarded digits are ignored (truncated). The result is + * neither incremented nor decremented. + * @stable ICU 2.0 + */ + //--public static final int ROUND_DOWN=1; + MathContext.ROUND_DOWN = MathContext.prototype.ROUND_DOWN = 1; + + /** + * Rounding mode to round to a more negative number. + * Used as a setting to control the rounding mode used during a + * BigDecimal operation. + *

    + * If any of the discarded digits are non-zero then the result + * should be rounded towards the next more negative digit. + * @stable ICU 2.0 + */ + //--public static final int ROUND_FLOOR=3; + MathContext.ROUND_FLOOR = MathContext.prototype.ROUND_FLOOR = 3; + + /** + * Rounding mode to round to nearest neighbor, where an equidistant + * value is rounded down. + * Used as a setting to control the rounding mode used during a + * BigDecimal operation. + *

    + * If the discarded digits represent greater than half (0.5 times) + * the value of a one in the next position then the result should be + * rounded up (away from zero). Otherwise the discarded digits are + * ignored. + * @stable ICU 2.0 + */ + //--public static final int ROUND_HALF_DOWN=5; + MathContext.ROUND_HALF_DOWN = MathContext.prototype.ROUND_HALF_DOWN = 5; + + /** + * Rounding mode to round to nearest neighbor, where an equidistant + * value is rounded to the nearest even neighbor. + * Used as a setting to control the rounding mode used during a + * BigDecimal operation. + *

    + * If the discarded digits represent greater than half (0.5 times) + * the value of a one in the next position then the result should be + * rounded up (away from zero). If they represent less than half, + * then the result should be rounded down. + *

    + * Otherwise (they represent exactly half) the result is rounded + * down if its rightmost digit is even, or rounded up if its + * rightmost digit is odd (to make an even digit). + * @stable ICU 2.0 + */ + //--public static final int ROUND_HALF_EVEN=6; + MathContext.ROUND_HALF_EVEN = MathContext.prototype.ROUND_HALF_EVEN = 6; + + /** + * Rounding mode to round to nearest neighbor, where an equidistant + * value is rounded up. + * Used as a setting to control the rounding mode used during a + * BigDecimal operation. + *

    + * If the discarded digits represent greater than or equal to half + * (0.5 times) the value of a one in the next position then the result + * should be rounded up (away from zero). Otherwise the discarded + * digits are ignored. + * @stable ICU 2.0 + */ + //--public static final int ROUND_HALF_UP=4; + MathContext.ROUND_HALF_UP = MathContext.prototype.ROUND_HALF_UP = 4; + + /** + * Rounding mode to assert that no rounding is necessary. + * Used as a setting to control the rounding mode used during a + * BigDecimal operation. + *

    + * Rounding (potential loss of information) is not permitted. + * If any of the discarded digits are non-zero then an + * ArithmeticException should be thrown. + * @stable ICU 2.0 + */ + //--public static final int ROUND_UNNECESSARY=7; + MathContext.ROUND_UNNECESSARY = MathContext.prototype.ROUND_UNNECESSARY = 7; + + /** + * Rounding mode to round away from zero. + * Used as a setting to control the rounding mode used during a + * BigDecimal operation. + *

    + * If any of the discarded digits are non-zero then the result will + * be rounded up (away from zero). + * @stable ICU 2.0 + */ + //--public static final int ROUND_UP=0; + MathContext.ROUND_UP = MathContext.prototype.ROUND_UP = 0; + + + /* properties shared */ + /** + * The number of digits (precision) to be used for an operation. + * A value of 0 indicates that unlimited precision (as many digits + * as are required) will be used. + *

    + * The {@link BigDecimal} operator methods use this value to + * determine the precision of results. + * Note that leading zeros (in the integer part of a number) are + * never significant. + *

    + * digits will always be non-negative. + * + * @serial + */ + //--int digits; + + /** + * The form of results from an operation. + *

    + * The {@link BigDecimal} operator methods use this value to + * determine the form of results, in particular whether and how + * exponential notation should be used. + * + * @see #ENGINEERING + * @see #PLAIN + * @see #SCIENTIFIC + * @serial + */ + //--int form; // values for this must fit in a byte + + /** + * Controls whether lost digits checking is enabled for an + * operation. + * Set to true to enable checking, or + * to false to disable checking. + *

    + * When enabled, the {@link BigDecimal} operator methods check + * the precision of their operand or operands, and throw an + * ArithmeticException if an operand is more precise + * than the digits setting (that is, digits would be lost). + * When disabled, operands are rounded to the specified digits. + * + * @serial + */ + //--boolean lostDigits; + + /** + * The rounding algorithm to be used for an operation. + *

    + * The {@link BigDecimal} operator methods use this value to + * determine the algorithm to be used when non-zero digits have to + * be discarded in order to reduce the precision of a result. + * The value must be one of the public constants whose name starts + * with ROUND_. + * + * @see #ROUND_CEILING + * @see #ROUND_DOWN + * @see #ROUND_FLOOR + * @see #ROUND_HALF_DOWN + * @see #ROUND_HALF_EVEN + * @see #ROUND_HALF_UP + * @see #ROUND_UNNECESSARY + * @see #ROUND_UP + * @serial + */ + //--int roundingMode; + + /* properties private constant */ + // default settings + //--private static final int DEFAULT_FORM=SCIENTIFIC; + //--private static final int DEFAULT_DIGITS=9; + //--private static final boolean DEFAULT_LOSTDIGITS=false; + //--private static final int DEFAULT_ROUNDINGMODE=ROUND_HALF_UP; + MathContext.prototype.DEFAULT_FORM=MathContext.prototype.SCIENTIFIC; + MathContext.prototype.DEFAULT_DIGITS=9; + MathContext.prototype.DEFAULT_LOSTDIGITS=false; + MathContext.prototype.DEFAULT_ROUNDINGMODE=MathContext.prototype.ROUND_HALF_UP; + + /* properties private constant */ + + //--private static final int MIN_DIGITS=0; // smallest value for DIGITS. + //--private static final int MAX_DIGITS=999999999; // largest value for DIGITS. If increased, + MathContext.prototype.MIN_DIGITS=0; // smallest value for DIGITS. + MathContext.prototype.MAX_DIGITS=999999999; // largest value for DIGITS. If increased, + // the BigDecimal class may need update. + // list of valid rounding mode values, most common two first + //--private static final int ROUNDS[]=new int[]{ROUND_HALF_UP,ROUND_UNNECESSARY,ROUND_CEILING,ROUND_DOWN,ROUND_FLOOR,ROUND_HALF_DOWN,ROUND_HALF_EVEN,ROUND_UP}; + MathContext.prototype.ROUNDS=new Array(MathContext.prototype.ROUND_HALF_UP,MathContext.prototype.ROUND_UNNECESSARY,MathContext.prototype.ROUND_CEILING,MathContext.prototype.ROUND_DOWN,MathContext.prototype.ROUND_FLOOR,MathContext.prototype.ROUND_HALF_DOWN,MathContext.prototype.ROUND_HALF_EVEN,MathContext.prototype.ROUND_UP); + + + //--private static final java.lang.String ROUNDWORDS[]=new java.lang.String[]{"ROUND_HALF_UP","ROUND_UNNECESSARY","ROUND_CEILING","ROUND_DOWN","ROUND_FLOOR","ROUND_HALF_DOWN","ROUND_HALF_EVEN","ROUND_UP"}; // matching names of the ROUNDS values + MathContext.prototype.ROUNDWORDS=new Array("ROUND_HALF_UP","ROUND_UNNECESSARY","ROUND_CEILING","ROUND_DOWN","ROUND_FLOOR","ROUND_HALF_DOWN","ROUND_HALF_EVEN","ROUND_UP"); // matching names of the ROUNDS values + + + + + /* properties private constant unused */ + + // Serialization version + //--private static final long serialVersionUID=7163376998892515376L; + + /* properties public constant */ + /** + * A MathContext object initialized to the default + * settings for general-purpose arithmetic. That is, + * digits=9 form=SCIENTIFIC lostDigits=false + * roundingMode=ROUND_HALF_UP. + * + * @see #SCIENTIFIC + * @see #ROUND_HALF_UP + * @stable ICU 2.0 + */ + //--public static final com.ibm.icu.math.MathContext DEFAULT=new com.ibm.icu.math.MathContext(DEFAULT_DIGITS,DEFAULT_FORM,DEFAULT_LOSTDIGITS,DEFAULT_ROUNDINGMODE); + MathContext.prototype.DEFAULT=new MathContext(MathContext.prototype.DEFAULT_DIGITS,MathContext.prototype.DEFAULT_FORM,MathContext.prototype.DEFAULT_LOSTDIGITS,MathContext.prototype.DEFAULT_ROUNDINGMODE); + + + + + /* ----- Constructors ----- */ + + /** + * Constructs a new MathContext with a specified + * precision. + * The other settings are set to the default values + * (see {@link #DEFAULT}). + * + * An IllegalArgumentException is thrown if the + * setdigits parameter is out of range + * (<0 or >999999999). + * + * @param setdigits The int digits setting + * for this MathContext. + * @throws IllegalArgumentException parameter out of range. + * @stable ICU 2.0 + */ + + //--public MathContext(int setdigits){ + //-- this(setdigits,DEFAULT_FORM,DEFAULT_LOSTDIGITS,DEFAULT_ROUNDINGMODE); + //-- return;} + + + /** + * Constructs a new MathContext with a specified + * precision and form. + * The other settings are set to the default values + * (see {@link #DEFAULT}). + * + * An IllegalArgumentException is thrown if the + * setdigits parameter is out of range + * (<0 or >999999999), or if the value given for the + * setform parameter is not one of the appropriate + * constants. + * + * @param setdigits The int digits setting + * for this MathContext. + * @param setform The int form setting + * for this MathContext. + * @throws IllegalArgumentException parameter out of range. + * @stable ICU 2.0 + */ + + //--public MathContext(int setdigits,int setform){ + //-- this(setdigits,setform,DEFAULT_LOSTDIGITS,DEFAULT_ROUNDINGMODE); + //-- return;} + + /** + * Constructs a new MathContext with a specified + * precision, form, and lostDigits setting. + * The roundingMode setting is set to its default value + * (see {@link #DEFAULT}). + * + * An IllegalArgumentException is thrown if the + * setdigits parameter is out of range + * (<0 or >999999999), or if the value given for the + * setform parameter is not one of the appropriate + * constants. + * + * @param setdigits The int digits setting + * for this MathContext. + * @param setform The int form setting + * for this MathContext. + * @param setlostdigits The boolean lostDigits + * setting for this MathContext. + * @throws IllegalArgumentException parameter out of range. + * @stable ICU 2.0 + */ + + //--public MathContext(int setdigits,int setform,boolean setlostdigits){ + //-- this(setdigits,setform,setlostdigits,DEFAULT_ROUNDINGMODE); + //-- return;} + + /** + * Constructs a new MathContext with a specified + * precision, form, lostDigits, and roundingMode setting. + * + * An IllegalArgumentException is thrown if the + * setdigits parameter is out of range + * (<0 or >999999999), or if the value given for the + * setform or setroundingmode parameters is + * not one of the appropriate constants. + * + * @param setdigits The int digits setting + * for this MathContext. + * @param setform The int form setting + * for this MathContext. + * @param setlostdigits The boolean lostDigits + * setting for this MathContext. + * @param setroundingmode The int roundingMode setting + * for this MathContext. + * @throws IllegalArgumentException parameter out of range. + * @stable ICU 2.0 + */ + + //--public MathContext(int setdigits,int setform,boolean setlostdigits,int setroundingmode){super(); + function MathContext() { + //-- members + this.digits = 0; + this.form = 0; // values for this must fit in a byte + this.lostDigits = false; + this.roundingMode = 0; + + //-- overloaded ctor + var setform = this.DEFAULT_FORM; + var setlostdigits = this.DEFAULT_LOSTDIGITS; + var setroundingmode = this.DEFAULT_ROUNDINGMODE; + if (MathContext.arguments.length == 4) + { + setform = MathContext.arguments[1]; + setlostdigits = MathContext.arguments[2]; + setroundingmode = MathContext.arguments[3]; + } + else if (MathContext.arguments.length == 3) + { + setform = MathContext.arguments[1]; + setlostdigits = MathContext.arguments[2]; + } + else if (MathContext.arguments.length == 2) + { + setform = MathContext.arguments[1]; + } + else if (MathContext.arguments.length != 1) + { + throw "MathContext(): " + MathContext.arguments.length + " arguments given; expected 1 to 4"; + } + var setdigits = MathContext.arguments[0]; + + + // set values, after checking + if (setdigits!=this.DEFAULT_DIGITS) + { + if (setdigitsthis.MAX_DIGITS) + throw "MathContext(): Digits too large: "+setdigits; + } + {/*select*/ + if (setform==this.SCIENTIFIC) + {} // [most common] + else if (setform==this.ENGINEERING) + {} + else if (setform==this.PLAIN) + {} + else{ + throw "MathContext() Bad form value: "+setform; + } + } + if ((!(this.isValidRound(setroundingmode)))) + throw "MathContext(): Bad roundingMode value: "+setroundingmode; + this.digits=setdigits; + this.form=setform; + this.lostDigits=setlostdigits; // [no bad value possible] + this.roundingMode=setroundingmode; + return;} + + /** + * Returns the digits setting. + * This value is always non-negative. + * + * @return an int which is the value of the digits + * setting + * @stable ICU 2.0 + */ + + //--public int getDigits(){ + function getDigits() { + return this.digits; + } + + /** + * Returns the form setting. + * This will be one of + * {@link #ENGINEERING}, + * {@link #PLAIN}, or + * {@link #SCIENTIFIC}. + * + * @return an int which is the value of the form setting + * @stable ICU 2.0 + */ + + //--public int getForm(){ + function getForm() { + return this.form; + } + + /** + * Returns the lostDigits setting. + * This will be either true (enabled) or + * false (disabled). + * + * @return a boolean which is the value of the lostDigits + * setting + * @stable ICU 2.0 + */ + + //--public boolean getLostDigits(){ + function getLostDigits() { + return this.lostDigits; + } + + /** + * Returns the roundingMode setting. + * This will be one of + * {@link #ROUND_CEILING}, + * {@link #ROUND_DOWN}, + * {@link #ROUND_FLOOR}, + * {@link #ROUND_HALF_DOWN}, + * {@link #ROUND_HALF_EVEN}, + * {@link #ROUND_HALF_UP}, + * {@link #ROUND_UNNECESSARY}, or + * {@link #ROUND_UP}. + * + * @return an int which is the value of the roundingMode + * setting + * @stable ICU 2.0 + */ + + //--public int getRoundingMode(){ + function getRoundingMode() { + return this.roundingMode; + } + + /** Returns the MathContext as a readable string. + * The String returned represents the settings of the + * MathContext object as four blank-delimited words + * separated by a single blank and with no leading or trailing blanks, + * as follows: + *

      + *
    1. + * digits=, immediately followed by + * the value of the digits setting as a numeric word. + *
    2. + * form=, immediately followed by + * the value of the form setting as an uppercase word + * (one of SCIENTIFIC, PLAIN, or + * ENGINEERING). + *
    3. + * lostDigits=, immediately followed by + * the value of the lostDigits setting + * (1 if enabled, 0 if disabled). + *
    4. + * roundingMode=, immediately followed by + * the value of the roundingMode setting as a word. + * This word will be the same as the name of the corresponding public + * constant. + *
    + *

    + * For example: + *
    + * digits=9 form=SCIENTIFIC lostDigits=0 roundingMode=ROUND_HALF_UP + * + *

    + * Additional words may be appended to the result of + * toString in the future if more properties are added + * to the class. + * + * @return a String representing the context settings. + * @stable ICU 2.0 + */ + + //--public java.lang.String toString(){ + function toString() { + //--java.lang.String formstr=null; + var formstr=null; + //--int r=0; + var r=0; + //--java.lang.String roundword=null; + var roundword=null; + {/*select*/ + if (this.form==this.SCIENTIFIC) + formstr="SCIENTIFIC"; + else if (this.form==this.ENGINEERING) + formstr="ENGINEERING"; + else{ + formstr="PLAIN";/* form=PLAIN */ + } + } + {var $1=this.ROUNDS.length;r=0;r:for(;$1>0;$1--,r++){ + if (this.roundingMode==this.ROUNDS[r]) + { + roundword=this.ROUNDWORDS[r]; + break r; + } + } + }/*r*/ + return "digits="+this.digits+" "+"form="+formstr+" "+"lostDigits="+(this.lostDigits?"1":"0")+" "+"roundingMode="+roundword; + } + + + /* Test whether round is valid. */ + // This could be made shared for use by BigDecimal for setScale. + + //--private static boolean isValidRound(int testround){ + function isValidRound(testround) { + //--int r=0; + var r=0; + {var $2=this.ROUNDS.length;r=0;r:for(;$2>0;$2--,r++){ + if (testround==this.ROUNDS[r]) + return true; + } + }/*r*/ + return false; + } +return MathContext; +})(); + +var BigDecimal = (function (MathContext) { +/* Generated from 'BigDecimal.nrx' 8 Sep 2000 11:10:50 [v2.00] */ +/* Options: Binary Comments Crossref Format Java Logo Strictargs Strictcase Trace2 Verbose3 */ +//--package com.ibm.icu.math; +//--import java.math.BigInteger; +//--import com.ibm.icu.impl.Utility; + +/* ------------------------------------------------------------------ */ +/* BigDecimal -- Decimal arithmetic for Java */ +/* ------------------------------------------------------------------ */ +/* Copyright IBM Corporation, 1996, 2000. All Rights Reserved. */ +/* */ +/* The BigDecimal class provides immutable arbitrary-precision */ +/* floating point (including integer) decimal numbers. */ +/* */ +/* As the numbers are decimal, there is an exact correspondence */ +/* between an instance of a BigDecimal object and its String */ +/* representation; the BigDecimal class provides direct conversions */ +/* to and from String and character array objects, and well as */ +/* conversions to and from the Java primitive types (which may not */ +/* be exact). */ +/* ------------------------------------------------------------------ */ +/* Notes: */ +/* */ +/* 1. A BigDecimal object is never changed in value once constructed; */ +/* this avoids the need for locking. Note in particular that the */ +/* mantissa array may be shared between many BigDecimal objects, */ +/* so that once exposed it must not be altered. */ +/* */ +/* 2. This class looks at MathContext class fields directly (for */ +/* performance). It must not and does not change them. */ +/* */ +/* 3. Exponent checking is delayed until finish(), as we know */ +/* intermediate calculations cannot cause 31-bit overflow. */ +/* [This assertion depends on MAX_DIGITS in MathContext.] */ +/* */ +/* 4. Comments for the public API now follow the javadoc conventions. */ +/* The NetRexx -comments option is used to pass these comments */ +/* through to the generated Java code (with -format, if desired). */ +/* */ +/* 5. System.arraycopy is faster than explicit loop as follows */ +/* Mean length 4: equal */ +/* Mean length 8: x2 */ +/* Mean length 16: x3 */ +/* Mean length 24: x4 */ +/* From prior experience, we expect mean length a little below 8, */ +/* but arraycopy is still the one to use, in general, until later */ +/* measurements suggest otherwise. */ +/* */ +/* 6. 'DMSRCN' referred to below is the original (1981) IBM S/370 */ +/* assembler code implementation of the algorithms below; it is */ +/* now called IXXRCN and is available with the OS/390 and VM/ESA */ +/* operating systems. */ +/* ------------------------------------------------------------------ */ +/* Change History: */ +/* 1997.09.02 Initial version (derived from netrexx.lang classes) */ +/* 1997.09.12 Add lostDigits checking */ +/* 1997.10.06 Change mantissa to a byte array */ +/* 1997.11.22 Rework power [did not prepare arguments, etc.] */ +/* 1997.12.13 multiply did not prepare arguments */ +/* 1997.12.14 add did not prepare and align arguments correctly */ +/* 1998.05.02 0.07 packaging changes suggested by Sun and Oracle */ +/* 1998.05.21 adjust remainder operator finalization */ +/* 1998.06.04 rework to pass MathContext to finish() and round() */ +/* 1998.06.06 change format to use round(); support rounding modes */ +/* 1998.06.25 rename to BigDecimal and begin merge */ +/* zero can now have trailing zeros (i.e., exp\=0) */ +/* 1998.06.28 new methods: movePointXxxx, scale, toBigInteger */ +/* unscaledValue, valueof */ +/* 1998.07.01 improve byteaddsub to allow array reuse, etc. */ +/* 1998.07.01 make null testing explicit to avoid JIT bug [Win32] */ +/* 1998.07.07 scaled division [divide(BigDecimal, int, int)] */ +/* 1998.07.08 setScale, faster equals */ +/* 1998.07.11 allow 1E6 (no sign) ; new double/float conversion */ +/* 1998.10.12 change package to com.ibm.icu.math */ +/* 1998.12.14 power operator no longer rounds RHS [to match ANSI] */ +/* add toBigDecimal() and BigDecimal(java.math.BigDecimal) */ +/* 1998.12.29 improve byteaddsub by using table lookup */ +/* 1999.02.04 lostdigits=0 behaviour rounds instead of digits+1 guard */ +/* 1999.02.05 cleaner code for BigDecimal(char[]) */ +/* 1999.02.06 add javadoc comments */ +/* 1999.02.11 format() changed from 7 to 2 method form */ +/* 1999.03.05 null pointer checking is no longer explicit */ +/* 1999.03.05 simplify; changes from discussion with J. Bloch: */ +/* null no longer permitted for MathContext; drop boolean, */ +/* byte, char, float, short constructor, deprecate double */ +/* constructor, no blanks in string constructor, add */ +/* offset and length version of char[] constructor; */ +/* add valueOf(double); drop booleanValue, charValue; */ +/* add ...Exact versions of remaining convertors */ +/* 1999.03.13 add toBigIntegerExact */ +/* 1999.03.13 1.00 release to IBM Centre for Java Technology */ +/* 1999.05.27 1.01 correct 0-0.2 bug under scaled arithmetic */ +/* 1999.06.29 1.02 constructors should not allow exponent > 9 digits */ +/* 1999.07.03 1.03 lost digits should not be checked if digits=0 */ +/* 1999.07.06 lost digits Exception message changed */ +/* 1999.07.10 1.04 more work on 0-0.2 (scaled arithmetic) */ +/* 1999.07.17 improve messages from pow method */ +/* 1999.08.08 performance tweaks */ +/* 1999.08.15 fastpath in multiply */ +/* 1999.11.05 1.05 fix problem in intValueExact [e.g., 5555555555] */ +/* 1999.12.22 1.06 remove multiply fastpath, and improve performance */ +/* 2000.01.01 copyright update [Y2K has arrived] */ +/* 2000.06.18 1.08 no longer deprecate BigDecimal(double) */ +/* ------------------------------------------------------------------ */ + + +/* JavaScript conversion (c) 2003 STZ-IDA and PTV AG, Karlsruhe, Germany */ + + + +function div(a, b) { + return (a-(a%b))/b; +} + +BigDecimal.prototype.div = div; + +function arraycopy(src, srcindex, dest, destindex, length) { + var i; + if (destindex > srcindex) { + // in case src and dest are equals, but also doesn't hurt + // if they are different + for (i = length-1; i >= 0; --i) { + dest[i+destindex] = src[i+srcindex]; + } + } else { + for (i = 0; i < length; ++i) { + dest[i+destindex] = src[i+srcindex]; + } + } +} + +BigDecimal.prototype.arraycopy = arraycopy; + +function createArrayWithZeros(length) { + var retVal = new Array(length); + var i; + for (i = 0; i < length; ++i) { + retVal[i] = 0; + } + return retVal; +} + +BigDecimal.prototype.createArrayWithZeros = createArrayWithZeros; + + +/** + * The BigDecimal class implements immutable + * arbitrary-precision decimal numbers. The methods of the + * BigDecimal class provide operations for fixed and + * floating point arithmetic, comparison, format conversions, and + * hashing. + *

    + * As the numbers are decimal, there is an exact correspondence between + * an instance of a BigDecimal object and its + * String representation; the BigDecimal class + * provides direct conversions to and from String and + * character array (char[]) objects, as well as conversions + * to and from the Java primitive types (which may not be exact) and + * BigInteger. + *

    + * In the descriptions of constructors and methods in this documentation, + * the value of a BigDecimal number object is shown as the + * result of invoking the toString() method on the object. + * The internal representation of a decimal number is neither defined + * nor exposed, and is not permitted to affect the result of any + * operation. + *

    + * The floating point arithmetic provided by this class is defined by + * the ANSI X3.274-1996 standard, and is also documented at + * http://www2.hursley.ibm.com/decimal + *
    [This URL will change.] + * + *

    Operator methods

    + *

    + * Operations on BigDecimal numbers are controlled by a + * {@link MathContext} object, which provides the context (precision and + * other information) for the operation. Methods that can take a + * MathContext parameter implement the standard arithmetic + * operators for BigDecimal objects and are known as + * operator methods. The default settings provided by the + * constant {@link MathContext#DEFAULT} (digits=9, + * form=SCIENTIFIC, lostDigits=false, roundingMode=ROUND_HALF_UP) + * perform general-purpose floating point arithmetic to nine digits of + * precision. The MathContext parameter must not be + * null. + *

    + * Each operator method also has a version provided which does + * not take a MathContext parameter. For this version of + * each method, the context settings used are digits=0, + * form=PLAIN, lostDigits=false, roundingMode=ROUND_HALF_UP; + * these settings perform fixed point arithmetic with unlimited + * precision, as defined for the original BigDecimal class in Java 1.1 + * and Java 1.2. + *

    + * For monadic operators, only the optional MathContext + * parameter is present; the operation acts upon the current object. + *

    + * For dyadic operators, a BigDecimal parameter is always + * present; it must not be null. + * The operation acts with the current object being the left-hand operand + * and the BigDecimal parameter being the right-hand operand. + *

    + * For example, adding two BigDecimal objects referred to + * by the names award and extra could be + * written as any of: + *

    + * award.add(extra) + *
    award.add(extra, MathContext.DEFAULT) + *
    award.add(extra, acontext) + *
    + *

    + * (where acontext is a MathContext object), + * which would return a BigDecimal object whose value is + * the result of adding award and extra under + * the appropriate context settings. + *

    + * When a BigDecimal operator method is used, a set of + * rules define what the result will be (and, by implication, how the + * result would be represented as a character string). + * These rules are defined in the BigDecimal arithmetic documentation + * (see the URL above), but in summary: + *

      + *
    • Results are normally calculated with up to some maximum number of + * significant digits. + * For example, if the MathContext parameter for an operation + * were MathContext.DEFAULT then the result would be + * rounded to 9 digits; the division of 2 by 3 would then result in + * 0.666666667. + *
      + * You can change the default of 9 significant digits by providing the + * method with a suitable MathContext object. This lets you + * calculate using as many digits as you need -- thousands, if necessary. + * Fixed point (scaled) arithmetic is indicated by using a + * digits setting of 0 (or omitting the + * MathContext parameter). + *
      + * Similarly, you can change the algorithm used for rounding from the + * default "classic" algorithm. + *
    • + * In standard arithmetic (that is, when the form setting + * is not PLAIN), a zero result is always expressed as the + * single digit '0' (that is, with no sign, decimal point, + * or exponent part). + *
    • + * Except for the division and power operators in standard arithmetic, + * trailing zeros are preserved (this is in contrast to binary floating + * point operations and most electronic calculators, which lose the + * information about trailing zeros in the fractional part of results). + *
      + * So, for example: + *

      + * new BigDecimal("2.40").add( new BigDecimal("2")) => "4.40" + *
      new BigDecimal("2.40").subtract(new BigDecimal("2")) => "0.40" + *
      new BigDecimal("2.40").multiply(new BigDecimal("2")) => "4.80" + *
      new BigDecimal("2.40").divide( new BigDecimal("2"), def) => "1.2" + *
      + *

      where the value on the right of the => would be the + * result of the operation, expressed as a String, and + * def (in this and following examples) refers to + * MathContext.DEFAULT). + * This preservation of trailing zeros is desirable for most + * calculations (including financial calculations). + * If necessary, trailing zeros may be easily removed using division by 1. + *

    • + * In standard arithmetic, exponential form is used for a result + * depending on its value and the current setting of digits + * (the default is 9 digits). + * If the number of places needed before the decimal point exceeds the + * digits setting, or the absolute value of the number is + * less than 0.000001, then the number will be expressed in + * exponential notation; thus + *

      + * new BigDecimal("1e+6").multiply(new BigDecimal("1e+6"), def) + * + *

      results in 1E+12 instead of + * 1000000000000, and + *

      + * new BigDecimal("1").divide(new BigDecimal("3E+10"), def) + * + *

      results in 3.33333333E-11 instead of + * 0.0000000000333333333. + *

      + * The form of the exponential notation (scientific or engineering) is + * determined by the form setting. + * + *

      + * The names of methods in this class follow the conventions established + * by java.lang.Number, java.math.BigInteger, + * and java.math.BigDecimal in Java 1.1 and Java 1.2. + * + * @see MathContext + * @author Mike Cowlishaw + * @stable ICU 2.0 + */ + +//--public class BigDecimal extends java.lang.Number implements java.io.Serializable,java.lang.Comparable{ +//-- private static final java.lang.String $0="BigDecimal.nrx"; + + //-- methods + BigDecimal.prototype.abs = abs; + BigDecimal.prototype.add = add; + BigDecimal.prototype.compareTo = compareTo; + BigDecimal.prototype.divide = divide; + BigDecimal.prototype.divideInteger = divideInteger; + BigDecimal.prototype.max = max; + BigDecimal.prototype.min = min; + BigDecimal.prototype.multiply = multiply; + BigDecimal.prototype.negate = negate; + BigDecimal.prototype.plus = plus; + BigDecimal.prototype.pow = pow; + BigDecimal.prototype.remainder = remainder; + BigDecimal.prototype.subtract = subtract; + BigDecimal.prototype.equals = equals; + BigDecimal.prototype.format = format; + BigDecimal.prototype.intValueExact = intValueExact; + BigDecimal.prototype.movePointLeft = movePointLeft; + BigDecimal.prototype.movePointRight = movePointRight; + BigDecimal.prototype.scale = scale; + BigDecimal.prototype.setScale = setScale; + BigDecimal.prototype.signum = signum; + BigDecimal.prototype.toString = toString; + BigDecimal.prototype.layout = layout; + BigDecimal.prototype.intcheck = intcheck; + BigDecimal.prototype.dodivide = dodivide; + BigDecimal.prototype.bad = bad; + BigDecimal.prototype.badarg = badarg; + BigDecimal.prototype.extend = extend; + BigDecimal.prototype.byteaddsub = byteaddsub; + BigDecimal.prototype.diginit = diginit; + BigDecimal.prototype.clone = clone; + BigDecimal.prototype.checkdigits = checkdigits; + BigDecimal.prototype.round = round; + BigDecimal.prototype.allzero = allzero; + BigDecimal.prototype.finish = finish; + + // Convenience methods + BigDecimal.prototype.isGreaterThan = isGreaterThan; + BigDecimal.prototype.isLessThan = isLessThan; + BigDecimal.prototype.isGreaterThanOrEqualTo = isGreaterThanOrEqualTo; + BigDecimal.prototype.isLessThanOrEqualTo = isLessThanOrEqualTo; + BigDecimal.prototype.isPositive = isPositive; + BigDecimal.prototype.isNegative = isNegative; + BigDecimal.prototype.isZero = isZero; + + + /* ----- Constants ----- */ + /* properties constant public */ // useful to others + // the rounding modes (copied here for upwards compatibility) + /** + * Rounding mode to round to a more positive number. + * @see MathContext#ROUND_CEILING + * @stable ICU 2.0 + */ + //--public static final int ROUND_CEILING=com.ibm.icu.math.MathContext.ROUND_CEILING; + BigDecimal.ROUND_CEILING = BigDecimal.prototype.ROUND_CEILING = MathContext.prototype.ROUND_CEILING; + + /** + * Rounding mode to round towards zero. + * @see MathContext#ROUND_DOWN + * @stable ICU 2.0 + */ + //--public static final int ROUND_DOWN=com.ibm.icu.math.MathContext.ROUND_DOWN; + BigDecimal.ROUND_DOWN = BigDecimal.prototype.ROUND_DOWN = MathContext.prototype.ROUND_DOWN; + + /** + * Rounding mode to round to a more negative number. + * @see MathContext#ROUND_FLOOR + * @stable ICU 2.0 + */ + //--public static final int ROUND_FLOOR=com.ibm.icu.math.MathContext.ROUND_FLOOR; + BigDecimal.ROUND_FLOOR = BigDecimal.prototype.ROUND_FLOOR = MathContext.prototype.ROUND_FLOOR; + + /** + * Rounding mode to round to nearest neighbor, where an equidistant + * value is rounded down. + * @see MathContext#ROUND_HALF_DOWN + * @stable ICU 2.0 + */ + //--public static final int ROUND_HALF_DOWN=com.ibm.icu.math.MathContext.ROUND_HALF_DOWN; + BigDecimal.ROUND_HALF_DOWN = BigDecimal.prototype.ROUND_HALF_DOWN = MathContext.prototype.ROUND_HALF_DOWN; + + /** + * Rounding mode to round to nearest neighbor, where an equidistant + * value is rounded to the nearest even neighbor. + * @see MathContext#ROUND_HALF_EVEN + * @stable ICU 2.0 + */ + //--public static final int ROUND_HALF_EVEN=com.ibm.icu.math.MathContext.ROUND_HALF_EVEN; + BigDecimal.ROUND_HALF_EVEN = BigDecimal.prototype.ROUND_HALF_EVEN = MathContext.prototype.ROUND_HALF_EVEN; + + /** + * Rounding mode to round to nearest neighbor, where an equidistant + * value is rounded up. + * @see MathContext#ROUND_HALF_UP + * @stable ICU 2.0 + */ + //--public static final int ROUND_HALF_UP=com.ibm.icu.math.MathContext.ROUND_HALF_UP; + BigDecimal.ROUND_HALF_UP = BigDecimal.prototype.ROUND_HALF_UP = MathContext.prototype.ROUND_HALF_UP; + + /** + * Rounding mode to assert that no rounding is necessary. + * @see MathContext#ROUND_UNNECESSARY + * @stable ICU 2.0 + */ + //--public static final int ROUND_UNNECESSARY=com.ibm.icu.math.MathContext.ROUND_UNNECESSARY; + BigDecimal.ROUND_UNNECESSARY = BigDecimal.prototype.ROUND_UNNECESSARY = MathContext.prototype.ROUND_UNNECESSARY; + + /** + * Rounding mode to round away from zero. + * @see MathContext#ROUND_UP + * @stable ICU 2.0 + */ + //--public static final int ROUND_UP=com.ibm.icu.math.MathContext.ROUND_UP; + BigDecimal.ROUND_UP = BigDecimal.prototype.ROUND_UP = MathContext.prototype.ROUND_UP; + + /* properties constant private */ // locals + //--private static final byte ispos=1; // ind: indicates positive (must be 1) + //--private static final byte iszero=0; // ind: indicates zero (must be 0) + //--private static final byte isneg=-1; // ind: indicates negative (must be -1) + BigDecimal.prototype.ispos = 1; + BigDecimal.prototype.iszero = 0; + BigDecimal.prototype.isneg = -1; + // [later could add NaN, +/- infinity, here] + + //--private static final int MinExp=-999999999; // minimum exponent allowed + //--private static final int MaxExp=999999999; // maximum exponent allowed + //--private static final int MinArg=-999999999; // minimum argument integer + //--private static final int MaxArg=999999999; // maximum argument integer + BigDecimal.prototype.MinExp=-999999999; // minimum exponent allowed + BigDecimal.prototype.MaxExp=999999999; // maximum exponent allowed + BigDecimal.prototype.MinArg=-999999999; // minimum argument integer + BigDecimal.prototype.MaxArg=999999999; // maximum argument integer + + //--private static final com.ibm.icu.math.MathContext plainMC=new com.ibm.icu.math.MathContext(0,com.ibm.icu.math.MathContext.PLAIN); // context for plain unlimited math + BigDecimal.prototype.plainMC=new MathContext(0, MathContext.prototype.PLAIN); + + /* properties constant private unused */ // present but not referenced + + // Serialization version + //--private static final long serialVersionUID=8245355804974198832L; + + //--private static final java.lang.String copyright=" Copyright (c) IBM Corporation 1996, 2000. All rights reserved. "; + + /* properties static private */ + // Precalculated constant arrays (used by byteaddsub) + //--private static byte bytecar[]=new byte[(90+99)+1]; // carry/borrow array + //--private static byte bytedig[]=diginit(); // next digit array + BigDecimal.prototype.bytecar = new Array((90+99)+1); + BigDecimal.prototype.bytedig = diginit(); + + /** + * The BigDecimal constant "0". + * + * @see #ONE + * @see #TEN + * @stable ICU 2.0 + */ + //--public static final com.ibm.icu.math.BigDecimal ZERO=new com.ibm.icu.math.BigDecimal((long)0); // use long as we want the int constructor + // .. to be able to use this, for speed +BigDecimal.ZERO = BigDecimal.prototype.ZERO = new BigDecimal("0"); + + /** + * The BigDecimal constant "1". + * + * @see #TEN + * @see #ZERO + * @stable ICU 2.0 + */ + //--public static final com.ibm.icu.math.BigDecimal ONE=new com.ibm.icu.math.BigDecimal((long)1); // use long as we want the int constructor + // .. to be able to use this, for speed +BigDecimal.ONE = BigDecimal.prototype.ONE = new BigDecimal("1"); + + /** + * The BigDecimal constant "10". + * + * @see #ONE + * @see #ZERO + * @stable ICU 2.0 + */ + //--public static final com.ibm.icu.math.BigDecimal TEN=new com.ibm.icu.math.BigDecimal(10); + BigDecimal.TEN = BigDecimal.prototype.TEN = new BigDecimal("10"); + + /* ----- Instance properties [all private and immutable] ----- */ + /* properties private */ + + /** + * The indicator. This may take the values: + *

        + *
      • ispos -- the number is positive + *
      • iszero -- the number is zero + *
      • isneg -- the number is negative + *
      + * + * @serial + */ + //--private byte ind; // assumed undefined + // Note: some code below assumes IND = Sign [-1, 0, 1], at present. + // We only need two bits for this, but use a byte [also permits + // smooth future extension]. + + /** + * The formatting style. This may take the values: + *
        + *
      • MathContext.PLAIN -- no exponent needed + *
      • MathContext.SCIENTIFIC -- scientific notation required + *
      • MathContext.ENGINEERING -- engineering notation required + *
      + *

      + * This property is an optimization; it allows us to defer number + * layout until it is actually needed as a string, hence avoiding + * unnecessary formatting. + * + * @serial + */ + //--private byte form=(byte)com.ibm.icu.math.MathContext.PLAIN; // assumed PLAIN + // We only need two bits for this, at present, but use a byte + // [again, to allow for smooth future extension] + + /** + * The value of the mantissa. + *

      + * Once constructed, this may become shared between several BigDecimal + * objects, so must not be altered. + *

      + * For efficiency (speed), this is a byte array, with each byte + * taking a value of 0 -> 9. + *

      + * If the first byte is 0 then the value of the number is zero (and + * mant.length=1, except when constructed from a plain number, for + * example, 0.000). + * + * @serial + */ + //--private byte mant[]; // assumed null + + /** + * The exponent. + *

      + * For fixed point arithmetic, scale is -exp, and can + * apply to zero. + * + * Note that this property can have a value less than MinExp when + * the mantissa has more than one digit. + * + * @serial + */ + //--private int exp; + // assumed 0 + + /* ---------------------------------------------------------------- */ + /* Constructors */ + /* ---------------------------------------------------------------- */ + + /** + * Constructs a BigDecimal object from a + * java.math.BigDecimal. + *

      + * Constructs a BigDecimal as though the parameter had + * been represented as a String (using its + * toString method) and the + * {@link #BigDecimal(java.lang.String)} constructor had then been + * used. + * The parameter must not be null. + *

      + * (Note: this constructor is provided only in the + * com.ibm.icu.math version of the BigDecimal class. + * It would not be present in a java.math version.) + * + * @param bd The BigDecimal to be translated. + * @stable ICU 2.0 + */ + + //--public BigDecimal(java.math.BigDecimal bd){ + //-- this(bd.toString()); + //-- return;} + + /** + * Constructs a BigDecimal object from a + * BigInteger, with scale 0. + *

      + * Constructs a BigDecimal which is the exact decimal + * representation of the BigInteger, with a scale of + * zero. + * The value of the BigDecimal is identical to the value + * of the BigInteger. + * The parameter must not be null. + *

      + * The BigDecimal will contain only decimal digits, + * prefixed with a leading minus sign (hyphen) if the + * BigInteger is negative. A leading zero will be + * present only if the BigInteger is zero. + * + * @param bi The BigInteger to be converted. + * @stable ICU 2.0 + */ + + //--public BigDecimal(java.math.BigInteger bi){ + //-- this(bi.toString(10)); + //-- return;} + // exp remains 0 + + /** + * Constructs a BigDecimal object from a + * BigInteger and a scale. + *

      + * Constructs a BigDecimal which is the exact decimal + * representation of the BigInteger, scaled by the + * second parameter, which may not be negative. + * The value of the BigDecimal is the + * BigInteger divided by ten to the power of the scale. + * The BigInteger parameter must not be + * null. + *

      + * The BigDecimal will contain only decimal digits, (with + * an embedded decimal point followed by scale decimal + * digits if the scale is positive), prefixed with a leading minus + * sign (hyphen) if the BigInteger is negative. A + * leading zero will be present only if the BigInteger is + * zero. + * + * @param bi The BigInteger to be converted. + * @param scale The int specifying the scale. + * @throws NumberFormatException if the scale is negative. + * @stable ICU 2.0 + */ + + //--public BigDecimal(java.math.BigInteger bi,int scale){ + //-- this(bi.toString(10)); + //-- if (scale<0) + //-- throw new java.lang.NumberFormatException("Negative scale:"+" "+scale); + //-- exp=(int)-scale; // exponent is -scale + //-- return;} + + /** + * Constructs a BigDecimal object from an array of characters. + *

      + * Constructs a BigDecimal as though a + * String had been constructed from the character array + * and the {@link #BigDecimal(java.lang.String)} constructor had then + * been used. The parameter must not be null. + *

      + * Using this constructor is faster than using the + * BigDecimal(String) constructor if the string is + * already available in character array form. + * + * @param inchars The char[] array containing the number + * to be converted. + * @throws NumberFormatException if the parameter is not a valid + * number. + * @stable ICU 2.0 + */ + + //--public BigDecimal(char inchars[]){ + //-- this(inchars,0,inchars.length); + //-- return;} + + /** + * Constructs a BigDecimal object from an array of characters. + *

      + * Constructs a BigDecimal as though a + * String had been constructed from the character array + * (or a subarray of that array) and the + * {@link #BigDecimal(java.lang.String)} constructor had then been + * used. The first parameter must not be null, and the + * subarray must be wholly contained within it. + *

      + * Using this constructor is faster than using the + * BigDecimal(String) constructor if the string is + * already available within a character array. + * + * @param inchars The char[] array containing the number + * to be converted. + * @param offset The int offset into the array of the + * start of the number to be converted. + * @param length The int length of the number. + * @throws NumberFormatException if the parameter is not a valid + * number for any reason. + * @stable ICU 2.0 + */ + + //--public BigDecimal(char inchars[],int offset,int length){super(); + function BigDecimal() { + //-- members + this.ind = 0; + this.form = MathContext.prototype.PLAIN; + this.mant = null; + this.exp = 0; + + //-- overloaded ctor + if (BigDecimal.arguments.length == 0) + return; + var inchars; + var offset; + var length; + if (BigDecimal.arguments.length == 1) + { + inchars = BigDecimal.arguments[0]; + offset = 0; + length = inchars.length; + } + else + { + inchars = BigDecimal.arguments[0]; + offset = BigDecimal.arguments[1]; + length = BigDecimal.arguments[2]; + } + if (typeof inchars == "string") + { + inchars = inchars.split(""); + } + + //--boolean exotic; + var exotic; + //--boolean hadexp; + var hadexp; + //--int d; + var d; + //--int dotoff; + var dotoff; + //--int last; + var last; + //--int i=0; + var i=0; + //--char si=0; + var si=0; + //--boolean eneg=false; + var eneg=false; + //--int k=0; + var k=0; + //--int elen=0; + var elen=0; + //--int j=0; + var j=0; + //--char sj=0; + var sj=0; + //--int dvalue=0; + var dvalue=0; + //--int mag=0; + var mag=0; + // This is the primary constructor; all incoming strings end up + // here; it uses explicit (inline) parsing for speed and to avoid + // generating intermediate (temporary) objects of any kind. + // 1998.06.25: exponent form built only if E/e in string + // 1998.06.25: trailing zeros not removed for zero + // 1999.03.06: no embedded blanks; allow offset and length + if (length<=0) + this.bad("BigDecimal(): ", inchars); // bad conversion (empty string) + // [bad offset will raise array bounds exception] + + /* Handle and step past sign */ + this.ind=this.ispos; // assume positive + if (inchars[0]==('-')) + { + length--; + if (length==0) + this.bad("BigDecimal(): ", inchars); // nothing after sign + this.ind=this.isneg; + offset++; + } + else + if (inchars[0]==('+')) + { + length--; + if (length==0) + this.bad("BigDecimal(): ", inchars); // nothing after sign + offset++; + } + + /* We're at the start of the number */ + exotic=false; // have extra digits + hadexp=false; // had explicit exponent + d=0; // count of digits found + dotoff=-1; // offset where dot was found + last=-1; // last character of mantissa + {var $1=length;i=offset;i:for(;$1>0;$1--,i++){ + si=inchars[i]; + if (si>='0') // test for Arabic digit + if (si<='9') + { + last=i; + d++; // still in mantissa + continue i; + } + if (si=='.') + { // record and ignore + if (dotoff>=0) + this.bad("BigDecimal(): ", inchars); // two dots + dotoff=i-offset; // offset into mantissa + continue i; + } + if (si!='e') + if (si!='E') + { // expect an extra digit + if (si<'0' || si>'9') + this.bad("BigDecimal(): ", inchars); // not a number + // defer the base 10 check until later to avoid extra method call + exotic=true; // will need conversion later + last=i; + d++; // still in mantissa + continue i; + } + /* Found 'e' or 'E' -- now process explicit exponent */ + // 1998.07.11: sign no longer required + if ((i-offset)>(length-2)) + this.bad("BigDecimal(): ", inchars); // no room for even one digit + eneg=false; + if ((inchars[i+1])==('-')) + { + eneg=true; + k=i+2; + } + else + if ((inchars[i+1])==('+')) + k=i+2; + else + k=i+1; + // k is offset of first expected digit + elen=length-((k-offset)); // possible number of digits + if ((elen==0)||(elen>9)) + this.bad("BigDecimal(): ", inchars); // 0 or more than 9 digits + {var $2=elen;j=k;j:for(;$2>0;$2--,j++){ + sj=inchars[j]; + if (sj<'0') + this.bad("BigDecimal(): ", inchars); // always bad + if (sj>'9') + { // maybe an exotic digit + /*if (si<'0' || si>'9') + this.bad(inchars); // not a number + dvalue=java.lang.Character.digit(sj,10); // check base + if (dvalue<0) + bad(inchars); // not base 10*/ + this.bad("BigDecimal(): ", inchars); + } + else + dvalue=sj-'0'; + this.exp=(this.exp*10)+dvalue; + } + }/*j*/ + if (eneg) + this.exp=-this.exp; // was negative + hadexp=true; // remember we had one + break i; // we are done + } + }/*i*/ + + /* Here when all inspected */ + if (d==0) + this.bad("BigDecimal(): ", inchars); // no mantissa digits + if (dotoff>=0) + this.exp=(this.exp+dotoff)-d; // adjust exponent if had dot + + /* strip leading zeros/dot (leave final if all 0's) */ + {var $3=last-1;i=offset;i:for(;i<=$3;i++){ + si=inchars[i]; + if (si=='0') + { + offset++; + dotoff--; + d--; + } + else + if (si=='.') + { + offset++; // step past dot + dotoff--; + } + else + if (si<='9') + break i;/* non-0 */ + else + {/* exotic */ + //if ((java.lang.Character.digit(si,10))!=0) + break i; // non-0 or bad + // is 0 .. strip like '0' + //offset++; + //dotoff--; + //d--; + } + } + }/*i*/ + + /* Create the mantissa array */ + this.mant=new Array(d); // we know the length + j=offset; // input offset + if (exotic) + {exotica:do{ // slow: check for exotica + {var $4=d;i=0;i:for(;$4>0;$4--,i++){ + if (i==dotoff) + j++; // at dot + sj=inchars[j]; + if (sj<='9') + this.mant[i]=sj-'0';/* easy */ + else + { + //dvalue=java.lang.Character.digit(sj,10); + //if (dvalue<0) + this.bad("BigDecimal(): ", inchars); // not a number after all + //mant[i]=(byte)dvalue; + } + j++; + } + }/*i*/ + }while(false);}/*exotica*/ + else + {simple:do{ + {var $5=d;i=0;i:for(;$5>0;$5--,i++){ + if (i==dotoff) + j++; + this.mant[i]=inchars[j]-'0'; + j++; + } + }/*i*/ + }while(false);}/*simple*/ + + /* Looks good. Set the sign indicator and form, as needed. */ + // Trailing zeros are preserved + // The rule here for form is: + // If no E-notation, then request plain notation + // Otherwise act as though add(0,DEFAULT) and request scientific notation + // [form is already PLAIN] + if (this.mant[0]==0) + { + this.ind=this.iszero; // force to show zero + // negative exponent is significant (e.g., -3 for 0.000) if plain + if (this.exp>0) + this.exp=0; // positive exponent can be ignored + if (hadexp) + { // zero becomes single digit from add + this.mant=this.ZERO.mant; + this.exp=0; + } + } + else + { // non-zero + // [ind was set earlier] + // now determine form + if (hadexp) + { + this.form=MathContext.prototype.SCIENTIFIC; + // 1999.06.29 check for overflow + mag=(this.exp+this.mant.length)-1; // true exponent in scientific notation + if ((magthis.MaxExp)) + this.bad("BigDecimal(): ", inchars); + } + } + // say 'BD(c[]): mant[0] mantlen exp ind form:' mant[0] mant.length exp ind form + return; + } + + /** + * Constructs a BigDecimal object directly from a + * double. + *

      + * Constructs a BigDecimal which is the exact decimal + * representation of the 64-bit signed binary floating point + * parameter. + *

      + * Note that this constructor it an exact conversion; it does not give + * the same result as converting num to a + * String using the Double.toString() method + * and then using the {@link #BigDecimal(java.lang.String)} + * constructor. + * To get that result, use the static {@link #valueOf(double)} + * method to construct a BigDecimal from a + * double. + * + * @param num The double to be converted. + * @throws NumberFormatException if the parameter is infinite or + * not a number. + * @stable ICU 2.0 + */ + + //--public BigDecimal(double num){ + //-- // 1999.03.06: use exactly the old algorithm + //-- // 2000.01.01: note that this constructor does give an exact result, + //-- // so perhaps it should not be deprecated + //-- // 2000.06.18: no longer deprecated + //-- this((new java.math.BigDecimal(num)).toString()); + //-- return;} + + /** + * Constructs a BigDecimal object directly from a + * int. + *

      + * Constructs a BigDecimal which is the exact decimal + * representation of the 32-bit signed binary integer parameter. + * The BigDecimal will contain only decimal digits, + * prefixed with a leading minus sign (hyphen) if the parameter is + * negative. + * A leading zero will be present only if the parameter is zero. + * + * @param num The int to be converted. + * @stable ICU 2.0 + */ + + //--public BigDecimal(int num){super(); + //-- int mun; + //-- int i=0; + //-- // We fastpath commoners + //-- if (num<=9) + //-- if (num>=(-9)) + //-- {singledigit:do{ + //-- // very common single digit case + //-- {/*select*/ + //-- if (num==0) + //-- { + //-- mant=ZERO.mant; + //-- ind=iszero; + //-- } + //-- else if (num==1) + //-- { + //-- mant=ONE.mant; + //-- ind=ispos; + //-- } + //-- else if (num==(-1)) + //-- { + //-- mant=ONE.mant; + //-- ind=isneg; + //-- } + //-- else{ + //-- { + //-- mant=new byte[1]; + //-- if (num>0) + //-- { + //-- mant[0]=(byte)num; + //-- ind=ispos; + //-- } + //-- else + //-- { // num<-1 + //-- mant[0]=(byte)((int)-num); + //-- ind=isneg; + //-- } + //-- } + //-- } + //-- } + //-- return; + //-- }while(false);}/*singledigit*/ + //-- + //-- /* We work on negative numbers so we handle the most negative number */ + //-- if (num>0) + //-- { + //-- ind=ispos; + //-- num=(int)-num; + //-- } + //-- else + //-- ind=isneg;/* negative */ // [0 case already handled] + //-- // [it is quicker, here, to pre-calculate the length with + //-- // one loop, then allocate exactly the right length of byte array, + //-- // then re-fill it with another loop] + //-- mun=num; // working copy + //-- {i=9;i:for(;;i--){ + //-- mun=mun/10; + //-- if (mun==0) + //-- break i; + //-- } + //-- }/*i*/ + //-- // i is the position of the leftmost digit placed + //-- mant=new byte[10-i]; + //-- {i=(10-i)-1;i:for(;;i--){ + //-- mant[i]=(byte)-(((byte)(num%10))); + //-- num=num/10; + //-- if (num==0) + //-- break i; + //-- } + //-- }/*i*/ + //-- return; + //-- } + + /** + * Constructs a BigDecimal object directly from a + * long. + *

      + * Constructs a BigDecimal which is the exact decimal + * representation of the 64-bit signed binary integer parameter. + * The BigDecimal will contain only decimal digits, + * prefixed with a leading minus sign (hyphen) if the parameter is + * negative. + * A leading zero will be present only if the parameter is zero. + * + * @param num The long to be converted. + * @stable ICU 2.0 + */ + + //--public BigDecimal(long num){super(); + //-- long mun; + //-- int i=0; + //-- // Not really worth fastpathing commoners in this constructor [also, + //-- // we use this to construct the static constants]. + //-- // This is much faster than: this(String.valueOf(num).toCharArray()) + //-- /* We work on negative num so we handle the most negative number */ + //-- if (num>0) + //-- { + //-- ind=ispos; + //-- num=(long)-num; + //-- } + //-- else + //-- if (num==0) + //-- ind=iszero; + //-- else + //-- ind=isneg;/* negative */ + //-- mun=num; + //-- {i=18;i:for(;;i--){ + //-- mun=mun/10; + //-- if (mun==0) + //-- break i; + //-- } + //-- }/*i*/ + //-- // i is the position of the leftmost digit placed + //-- mant=new byte[19-i]; + //-- {i=(19-i)-1;i:for(;;i--){ + //-- mant[i]=(byte)-(((byte)(num%10))); + //-- num=num/10; + //-- if (num==0) + //-- break i; + //-- } + //-- }/*i*/ + //-- return; + //-- } + + /** + * Constructs a BigDecimal object from a String. + *

      + * Constructs a BigDecimal from the parameter, which must + * not be null and must represent a valid number, + * as described formally in the documentation referred to + * {@link BigDecimal above}. + *

      + * In summary, numbers in String form must have at least + * one digit, may have a leading sign, may have a decimal point, and + * exponential notation may be used. They follow conventional syntax, + * and may not contain blanks. + *

      + * Some valid strings from which a BigDecimal might + * be constructed are: + *

      +  *       "0"         -- Zero
      +  *      "12"         -- A whole number
      +  *     "-76"         -- A signed whole number
      +  *      "12.70"      -- Some decimal places
      +  *     "+0.003"      -- Plus sign is allowed
      +  *      "17."        -- The same as 17
      +  *        ".5"       -- The same as 0.5
      +  *      "4E+9"       -- Exponential notation
      +  *       "0.73e-7"   -- Exponential notation
      +  * 
      + *

      + * (Exponential notation means that the number includes an optional + * sign and a power of ten following an 'E' that + * indicates how the decimal point will be shifted. Thus the + * "4E+9" above is just a short way of writing + * 4000000000, and the "0.73e-7" is short + * for 0.000000073.) + *

      + * The BigDecimal constructed from the String is in a + * standard form, with no blanks, as though the + * {@link #add(BigDecimal)} method had been used to add zero to the + * number with unlimited precision. + * If the string uses exponential notation (that is, includes an + * e or an E), then the + * BigDecimal number will be expressed in scientific + * notation (where the power of ten is adjusted so there is a single + * non-zero digit to the left of the decimal point); in this case if + * the number is zero then it will be expressed as the single digit 0, + * and if non-zero it will have an exponent unless that exponent would + * be 0. The exponent must fit in nine digits both before and after it + * is expressed in scientific notation. + *

      + * Any digits in the parameter must be decimal; that is, + * Character.digit(c, 10) (where c is the + * character in question) would not return -1. + * + * @param string The String to be converted. + * @throws NumberFormatException if the parameter is not a valid + * number. + * @stable ICU 2.0 + */ + + //--public BigDecimal(java.lang.String string){ + //-- this(string.toCharArray(),0,string.length()); + //-- return;} + + /* Make a default BigDecimal object for local use. */ + + //--private BigDecimal(){super(); + //-- return; + //-- } + + /* ---------------------------------------------------------------- */ + /* Operator methods [methods which take a context parameter] */ + /* ---------------------------------------------------------------- */ + + /** + * Returns a plain BigDecimal whose value is the absolute + * value of this BigDecimal. + *

      + * The same as {@link #abs(MathContext)}, where the context is + * new MathContext(0, MathContext.PLAIN). + *

      + * The length of the decimal part (the scale) of the result will + * be this.scale() + * + * @return A BigDecimal whose value is the absolute + * value of this BigDecimal. + * @stable ICU 2.0 + */ + + //--public com.ibm.icu.math.BigDecimal abs(){ + //- return this.abs(plainMC); + //- } + + /** + * Returns a BigDecimal whose value is the absolute value + * of this BigDecimal. + *

      + * If the current object is zero or positive, then the same result as + * invoking the {@link #plus(MathContext)} method with the same + * parameter is returned. + * Otherwise, the same result as invoking the + * {@link #negate(MathContext)} method with the same parameter is + * returned. + * + * @param set The MathContext arithmetic settings. + * @return A BigDecimal whose value is the absolute + * value of this BigDecimal. + * @stable ICU 2.0 + */ + + //--public com.ibm.icu.math.BigDecimal abs(com.ibm.icu.math.MathContext set){ + function abs() { + var set; + if (abs.arguments.length == 1) + { + set = abs.arguments[0]; + } + else if (abs.arguments.length == 0) + { + set = this.plainMC; + } + else + { + throw "abs(): " + abs.arguments.length + " arguments given; expected 0 or 1"; + } + if (this.ind==this.isneg) + return this.negate(set); + return this.plus(set); + } + + /** + * Returns a plain BigDecimal whose value is + * this+rhs, using fixed point arithmetic. + *

      + * The same as {@link #add(BigDecimal, MathContext)}, + * where the BigDecimal is rhs, + * and the context is new MathContext(0, MathContext.PLAIN). + *

      + * The length of the decimal part (the scale) of the result will be + * the maximum of the scales of the two operands. + * + * @param rhs The BigDecimal for the right hand side of + * the addition. + * @return A BigDecimal whose value is + * this+rhs, using fixed point arithmetic. + * @stable ICU 2.0 + */ + + //--public com.ibm.icu.math.BigDecimal add(com.ibm.icu.math.BigDecimal rhs){ + //-- return this.add(rhs,plainMC); + //-- } + + /** + * Returns a BigDecimal whose value is this+rhs. + *

      + * Implements the addition (+) operator + * (as defined in the decimal documentation, see {@link BigDecimal + * class header}), + * and returns the result as a BigDecimal object. + * + * @param rhs The BigDecimal for the right hand side of + * the addition. + * @param set The MathContext arithmetic settings. + * @return A BigDecimal whose value is + * this+rhs. + * @stable ICU 2.0 + */ + + //--public com.ibm.icu.math.BigDecimal add(com.ibm.icu.math.BigDecimal rhs,com.ibm.icu.math.MathContext set){ + function add() { + var set; + if (add.arguments.length == 2) + { + set = add.arguments[1]; + } + else if (add.arguments.length == 1) + { + set = this.plainMC; + } + else + { + throw "add(): " + add.arguments.length + " arguments given; expected 1 or 2"; + } + var rhs = add.arguments[0]; + //--com.ibm.icu.math.BigDecimal lhs; + var lhs; + //--int reqdig; + var reqdig; + //--com.ibm.icu.math.BigDecimal res; + var res; + //--byte usel[]; + var usel; + //--int usellen; + var usellen; + //--byte user[]; + var user; + //--int userlen; + var userlen; + //--int newlen=0; + var newlen=0; + //--int tlen=0; + var tlen=0; + //--int mult=0; + var mult=0; + //--byte t[]=null; + var t=null; + //--int ia=0; + var ia=0; + //--int ib=0; + var ib=0; + //--int ea=0; + var ea=0; + //int eb=0; + var eb=0; + //byte ca=0; + var ca=0; + //--byte cb=0; + var cb=0; + /* determine requested digits and form */ + if (set.lostDigits) + this.checkdigits(rhs,set.digits); + lhs=this; // name for clarity and proxy + + /* Quick exit for add floating 0 */ + // plus() will optimize to return same object if possible + if (lhs.ind==0) + if (set.form!=MathContext.prototype.PLAIN) + return rhs.plus(set); + if (rhs.ind==0) + if (set.form!=MathContext.prototype.PLAIN) + return lhs.plus(set); + + /* Prepare numbers (round, unless unlimited precision) */ + reqdig=set.digits; // local copy (heavily used) + if (reqdig>0) + { + if (lhs.mant.length>reqdig) + lhs=this.clone(lhs).round(set); + if (rhs.mant.length>reqdig) + rhs=this.clone(rhs).round(set); + // [we could reuse the new LHS for result in this case] + } + + res=new BigDecimal(); // build result here + + /* Now see how much we have to pad or truncate lhs or rhs in order + to align the numbers. If one number is much larger than the + other, then the smaller cannot affect the answer [but we may + still need to pad with up to DIGITS trailing zeros]. */ + // Note sign may be 0 if digits (reqdig) is 0 + // usel and user will be the byte arrays passed to the adder; we'll + // use them on all paths except quick exits + usel=lhs.mant; + usellen=lhs.mant.length; + user=rhs.mant; + userlen=rhs.mant.length; + {padder:do{/*select*/ + if (lhs.exp==rhs.exp) + {/* no padding needed */ + // This is the most common, and fastest, path + res.exp=lhs.exp; + } + else if (lhs.exp>rhs.exp) + { // need to pad lhs and/or truncate rhs + newlen=(usellen+lhs.exp)-rhs.exp; + /* If, after pad, lhs would be longer than rhs by digits+1 or + more (and digits>0) then rhs cannot affect answer, so we only + need to pad up to a length of DIGITS+1. */ + if (newlen>=((userlen+reqdig)+1)) + if (reqdig>0) + { + // LHS is sufficient + res.mant=usel; + res.exp=lhs.exp; + res.ind=lhs.ind; + if (usellen(reqdig+1)) + if (reqdig>0) + { + // LHS will be max; RHS truncated + tlen=(newlen-reqdig)-1; // truncation length + userlen=userlen-tlen; + res.exp=res.exp+tlen; + newlen=reqdig+1; + } + if (newlen>usellen) + usellen=newlen; // need to pad LHS + } + else{ // need to pad rhs and/or truncate lhs + newlen=(userlen+rhs.exp)-lhs.exp; + if (newlen>=((usellen+reqdig)+1)) + if (reqdig>0) + { + // RHS is sufficient + res.mant=user; + res.exp=rhs.exp; + res.ind=rhs.ind; + if (userlen(reqdig+1)) + if (reqdig>0) + { + // RHS will be max; LHS truncated + tlen=(newlen-reqdig)-1; // truncation length + usellen=usellen-tlen; + res.exp=res.exp+tlen; + newlen=reqdig+1; + } + if (newlen>userlen) + userlen=newlen; // need to pad RHS + } + }while(false);}/*padder*/ + + /* OK, we have aligned mantissas. Now add or subtract. */ + // 1998.06.27 Sign may now be 0 [e.g., 0.000] .. treat as positive + // 1999.05.27 Allow for 00 on lhs [is not larger than 2 on rhs] + // 1999.07.10 Allow for 00 on rhs [is not larger than 2 on rhs] + if (lhs.ind==this.iszero) + res.ind=this.ispos; + else + res.ind=lhs.ind; // likely sign, all paths + if (((lhs.ind==this.isneg)?1:0)==((rhs.ind==this.isneg)?1:0)) // same sign, 0 non-negative + mult=1; + else + {signdiff:do{ // different signs, so subtraction is needed + mult=-1; // will cause subtract + /* Before we can subtract we must determine which is the larger, + as our add/subtract routine only handles non-negative results + so we may need to swap the operands. */ + {swaptest:do{/*select*/ + if (rhs.ind==this.iszero) + {} // original A bigger + else if ((usellenuserlen) + {} // original A bigger + else{ + {/* logical lengths the same */ // need compare + /* may still need to swap: compare the strings */ + ia=0; + ib=0; + ea=usel.length-1; + eb=user.length-1; + {compare:for(;;){ + if (ia<=ea) + ca=usel[ia]; + else + { + if (ib>eb) + {/* identical */ + if (set.form!=MathContext.prototype.PLAIN) + return this.ZERO; + // [if PLAIN we must do the subtract, in case of 0.000 results] + break compare; + } + ca=0; + } + if (ib<=eb) + cb=user[ib]; + else + cb=0; + if (ca!=cb) + { + if (ca B if subtracting */ + // add [A+B*1] or subtract [A+(B*-1)] + res.mant=this.byteaddsub(usel,usellen,user,userlen,mult,false); + // [reuse possible only after chop; accounting makes not worthwhile] + + // Finish() rounds before stripping leading 0's, then sets form, etc. + return res.finish(set,false); + } + + /** + * Compares this BigDecimal to another, using unlimited + * precision. + *

      + * The same as {@link #compareTo(BigDecimal, MathContext)}, + * where the BigDecimal is rhs, + * and the context is new MathContext(0, MathContext.PLAIN). + * + * @param rhs The BigDecimal for the right hand side of + * the comparison. + * @return An int whose value is -1, 0, or 1 as + * this is numerically less than, equal to, + * or greater than rhs. + * @see #compareTo(Object) + * @stable ICU 2.0 + */ + + //--public int compareTo(com.ibm.icu.math.BigDecimal rhs){ + //-- return this.compareTo(rhs,plainMC); + //-- } + + /** + * Compares this BigDecimal to another. + *

      + * Implements numeric comparison, + * (as defined in the decimal documentation, see {@link BigDecimal + * class header}), + * and returns a result of type int. + *

      + * The result will be: + * + * + * + * + * + * + * + * + * + *
      -1if the current object is less than the first parameter
      0if the current object is equal to the first parameter
      1if the current object is greater than the first parameter.
      + *

      + * A {@link #compareTo(Object)} method is also provided. + * + * @param rhs The BigDecimal for the right hand side of + * the comparison. + * @param set The MathContext arithmetic settings. + * @return An int whose value is -1, 0, or 1 as + * this is numerically less than, equal to, + * or greater than rhs. + * @see #compareTo(Object) + * @stable ICU 2.0 + */ + + //public int compareTo(com.ibm.icu.math.BigDecimal rhs,com.ibm.icu.math.MathContext set){ + function compareTo() { + var set; + if (compareTo.arguments.length == 2) + { + set = compareTo.arguments[1]; + } + else if (compareTo.arguments.length == 1) + { + set = this.plainMC; + } + else + { + throw "compareTo(): " + compareTo.arguments.length + " arguments given; expected 1 or 2"; + } + var rhs = compareTo.arguments[0]; + //--int thislength=0; + var thislength=0; + //--int i=0; + var i=0; + //--com.ibm.icu.math.BigDecimal newrhs; + var newrhs; + // rhs=null will raise NullPointerException, as per Comparable interface + if (set.lostDigits) + this.checkdigits(rhs,set.digits); + // [add will recheck in slowpath cases .. but would report -rhs] + if ((this.ind==rhs.ind)&&(this.exp==rhs.exp)) + { + /* sign & exponent the same [very common] */ + thislength=this.mant.length; + if (thislengthrhs.mant.length) + return this.ind; + /* lengths are the same; we can do a straight mantissa compare + unless maybe rounding [rounding is very unusual] */ + if ((thislength<=set.digits)||(set.digits==0)) + { + {var $6=thislength;i=0;i:for(;$6>0;$6--,i++){ + if (this.mant[i]rhs.mant[i]) + return this.ind; + } + }/*i*/ + return 0; // identical + } + /* drop through for full comparison */ + } + else + { + /* More fastpaths possible */ + if (this.indrhs.ind) + return 1; + } + /* carry out a subtract to make the comparison */ + newrhs=this.clone(rhs); // safe copy + newrhs.ind=-newrhs.ind; // prepare to subtract + return this.add(newrhs,set).ind; // add, and return sign of result + } + + /** + * Returns a plain BigDecimal whose value is + * this/rhs, using fixed point arithmetic. + *

      + * The same as {@link #divide(BigDecimal, int)}, + * where the BigDecimal is rhs, + * and the rounding mode is {@link MathContext#ROUND_HALF_UP}. + * + * The length of the decimal part (the scale) of the result will be + * the same as the scale of the current object, if the latter were + * formatted without exponential notation. + * + * @param rhs The BigDecimal for the right hand side of + * the division. + * @return A plain BigDecimal whose value is + * this/rhs, using fixed point arithmetic. + * @throws ArithmeticException if rhs is zero. + * @stable ICU 2.0 + */ + + //--public com.ibm.icu.math.BigDecimal divide(com.ibm.icu.math.BigDecimal rhs){ + //-- return this.dodivide('D',rhs,plainMC,-1); + //-- } + + /** + * Returns a plain BigDecimal whose value is + * this/rhs, using fixed point arithmetic and a + * rounding mode. + *

      + * The same as {@link #divide(BigDecimal, int, int)}, + * where the BigDecimal is rhs, + * and the second parameter is this.scale(), and + * the third is round. + *

      + * The length of the decimal part (the scale) of the result will + * therefore be the same as the scale of the current object, if the + * latter were formatted without exponential notation. + *

      + * @param rhs The BigDecimal for the right hand side of + * the division. + * @param round The int rounding mode to be used for + * the division (see the {@link MathContext} class). + * @return A plain BigDecimal whose value is + * this/rhs, using fixed point arithmetic + * and the specified rounding mode. + * @throws IllegalArgumentException if round is not a + * valid rounding mode. + * @throws ArithmeticException if rhs is zero. + * @throws ArithmeticException if round is {@link + * MathContext#ROUND_UNNECESSARY} and + * this.scale() is insufficient to + * represent the result exactly. + * @stable ICU 2.0 + */ + + //--public com.ibm.icu.math.BigDecimal divide(com.ibm.icu.math.BigDecimal rhs,int round){ + //-- com.ibm.icu.math.MathContext set; + //-- set=new com.ibm.icu.math.MathContext(0,com.ibm.icu.math.MathContext.PLAIN,false,round); // [checks round, too] + //-- return this.dodivide('D',rhs,set,-1); // take scale from LHS + //-- } + + /** + * Returns a plain BigDecimal whose value is + * this/rhs, using fixed point arithmetic and a + * given scale and rounding mode. + *

      + * The same as {@link #divide(BigDecimal, MathContext)}, + * where the BigDecimal is rhs, + * new MathContext(0, MathContext.PLAIN, false, round), + * except that the length of the decimal part (the scale) to be used + * for the result is explicit rather than being taken from + * this. + *

      + * The length of the decimal part (the scale) of the result will be + * the same as the scale of the current object, if the latter were + * formatted without exponential notation. + *

      + * @param rhs The BigDecimal for the right hand side of + * the division. + * @param scale The int scale to be used for the result. + * @param round The int rounding mode to be used for + * the division (see the {@link MathContext} class). + * @return A plain BigDecimal whose value is + * this/rhs, using fixed point arithmetic + * and the specified rounding mode. + * @throws IllegalArgumentException if round is not a + * valid rounding mode. + * @throws ArithmeticException if rhs is zero. + * @throws ArithmeticException if scale is negative. + * @throws ArithmeticException if round is {@link + * MathContext#ROUND_UNNECESSARY} and scale + * is insufficient to represent the result exactly. + * @stable ICU 2.0 + */ + + //--public com.ibm.icu.math.BigDecimal divide(com.ibm.icu.math.BigDecimal rhs,int scale,int round){ + //-- com.ibm.icu.math.MathContext set; + //-- if (scale<0) + //-- throw new java.lang.ArithmeticException("Negative scale:"+" "+scale); + //-- set=new com.ibm.icu.math.MathContext(0,com.ibm.icu.math.MathContext.PLAIN,false,round); // [checks round] + //-- return this.dodivide('D',rhs,set,scale); + //-- } + + /** + * Returns a BigDecimal whose value is this/rhs. + *

      + * Implements the division (/) operator + * (as defined in the decimal documentation, see {@link BigDecimal + * class header}), + * and returns the result as a BigDecimal object. + * + * @param rhs The BigDecimal for the right hand side of + * the division. + * @param set The MathContext arithmetic settings. + * @return A BigDecimal whose value is + * this/rhs. + * @throws ArithmeticException if rhs is zero. + * @stable ICU 2.0 + */ + + //--public com.ibm.icu.math.BigDecimal divide(com.ibm.icu.math.BigDecimal rhs,com.ibm.icu.math.MathContext set){ + function divide() { + var set; + var scale = -1; + if (divide.arguments.length == 2) + { + if (typeof divide.arguments[1] == 'number') + { + set=new MathContext(0,MathContext.prototype.PLAIN,false,divide.arguments[1]); // [checks round, too] + } + else + { + set = divide.arguments[1]; + } + } + else if (divide.arguments.length == 3) + { + scale = divide.arguments[1]; + if (scale<0) + throw "divide(): Negative scale: "+scale; + set=new MathContext(0,MathContext.prototype.PLAIN,false,divide.arguments[2]); // [checks round] + } + else if (divide.arguments.length == 1) + { + set = this.plainMC; + } + else + { + throw "divide(): " + divide.arguments.length + " arguments given; expected between 1 and 3"; + } + var rhs = divide.arguments[0]; + return this.dodivide('D',rhs,set,scale); + } + + /** + * Returns a plain BigDecimal whose value is the integer + * part of this/rhs. + *

      + * The same as {@link #divideInteger(BigDecimal, MathContext)}, + * where the BigDecimal is rhs, + * and the context is new MathContext(0, MathContext.PLAIN). + * + * @param rhs The BigDecimal for the right hand side of + * the integer division. + * @return A BigDecimal whose value is the integer + * part of this/rhs. + * @throws ArithmeticException if rhs is zero. + * @stable ICU 2.0 + */ + + //--public com.ibm.icu.math.BigDecimal divideInteger(com.ibm.icu.math.BigDecimal rhs){ + //-- // scale 0 to drop .000 when plain + //-- return this.dodivide('I',rhs,plainMC,0); + //-- } + + /** + * Returns a BigDecimal whose value is the integer + * part of this/rhs. + *

      + * Implements the integer division operator + * (as defined in the decimal documentation, see {@link BigDecimal + * class header}), + * and returns the result as a BigDecimal object. + * + * @param rhs The BigDecimal for the right hand side of + * the integer division. + * @param set The MathContext arithmetic settings. + * @return A BigDecimal whose value is the integer + * part of this/rhs. + * @throws ArithmeticException if rhs is zero. + * @throws ArithmeticException if the result will not fit in the + * number of digits specified for the context. + * @stable ICU 2.0 + */ + + //--public com.ibm.icu.math.BigDecimal divideInteger(com.ibm.icu.math.BigDecimal rhs,com.ibm.icu.math.MathContext set){ + function divideInteger() { + var set; + if (divideInteger.arguments.length == 2) + { + set = divideInteger.arguments[1]; + } + else if (divideInteger.arguments.length == 1) + { + set = this.plainMC; + } + else + { + throw "divideInteger(): " + divideInteger.arguments.length + " arguments given; expected 1 or 2"; + } + var rhs = divideInteger.arguments[0]; + // scale 0 to drop .000 when plain + return this.dodivide('I',rhs,set,0); + } + + /** + * Returns a plain BigDecimal whose value is + * the maximum of this and rhs. + *

      + * The same as {@link #max(BigDecimal, MathContext)}, + * where the BigDecimal is rhs, + * and the context is new MathContext(0, MathContext.PLAIN). + * + * @param rhs The BigDecimal for the right hand side of + * the comparison. + * @return A BigDecimal whose value is + * the maximum of this and rhs. + * @stable ICU 2.0 + */ + + //--public com.ibm.icu.math.BigDecimal max(com.ibm.icu.math.BigDecimal rhs){ + //-- return this.max(rhs,plainMC); + //-- } + + /** + * Returns a BigDecimal whose value is + * the maximum of this and rhs. + *

      + * Returns the larger of the current object and the first parameter. + *

      + * If calling the {@link #compareTo(BigDecimal, MathContext)} method + * with the same parameters would return 1 or + * 0, then the result of calling the + * {@link #plus(MathContext)} method on the current object (using the + * same MathContext parameter) is returned. + * Otherwise, the result of calling the {@link #plus(MathContext)} + * method on the first parameter object (using the same + * MathContext parameter) is returned. + * + * @param rhs The BigDecimal for the right hand side of + * the comparison. + * @param set The MathContext arithmetic settings. + * @return A BigDecimal whose value is + * the maximum of this and rhs. + * @stable ICU 2.0 + */ + + //--public com.ibm.icu.math.BigDecimal max(com.ibm.icu.math.BigDecimal rhs,com.ibm.icu.math.MathContext set){ + function max() { + var set; + if (max.arguments.length == 2) + { + set = max.arguments[1]; + } + else if (max.arguments.length == 1) + { + set = this.plainMC; + } + else + { + throw "max(): " + max.arguments.length + " arguments given; expected 1 or 2"; + } + var rhs = max.arguments[0]; + if ((this.compareTo(rhs,set))>=0) + return this.plus(set); + else + return rhs.plus(set); + } + + /** + * Returns a plain BigDecimal whose value is + * the minimum of this and rhs. + *

      + * The same as {@link #min(BigDecimal, MathContext)}, + * where the BigDecimal is rhs, + * and the context is new MathContext(0, MathContext.PLAIN). + * + * @param rhs The BigDecimal for the right hand side of + * the comparison. + * @return A BigDecimal whose value is + * the minimum of this and rhs. + * @stable ICU 2.0 + */ + + //--public com.ibm.icu.math.BigDecimal min(com.ibm.icu.math.BigDecimal rhs){ + //-- return this.min(rhs,plainMC); + //-- } + + /** + * Returns a BigDecimal whose value is + * the minimum of this and rhs. + *

      + * Returns the smaller of the current object and the first parameter. + *

      + * If calling the {@link #compareTo(BigDecimal, MathContext)} method + * with the same parameters would return -1 or + * 0, then the result of calling the + * {@link #plus(MathContext)} method on the current object (using the + * same MathContext parameter) is returned. + * Otherwise, the result of calling the {@link #plus(MathContext)} + * method on the first parameter object (using the same + * MathContext parameter) is returned. + * + * @param rhs The BigDecimal for the right hand side of + * the comparison. + * @param set The MathContext arithmetic settings. + * @return A BigDecimal whose value is + * the minimum of this and rhs. + * @stable ICU 2.0 + */ + + //--public com.ibm.icu.math.BigDecimal min(com.ibm.icu.math.BigDecimal rhs,com.ibm.icu.math.MathContext set){ + function min() { + var set; + if (min.arguments.length == 2) + { + set = min.arguments[1]; + } + else if (min.arguments.length == 1) + { + set = this.plainMC; + } + else + { + throw "min(): " + min.arguments.length + " arguments given; expected 1 or 2"; + } + var rhs = min.arguments[0]; + if ((this.compareTo(rhs,set))<=0) + return this.plus(set); + else + return rhs.plus(set); + } + + /** + * Returns a plain BigDecimal whose value is + * this*rhs, using fixed point arithmetic. + *

      + * The same as {@link #add(BigDecimal, MathContext)}, + * where the BigDecimal is rhs, + * and the context is new MathContext(0, MathContext.PLAIN). + *

      + * The length of the decimal part (the scale) of the result will be + * the sum of the scales of the operands, if they were formatted + * without exponential notation. + * + * @param rhs The BigDecimal for the right hand side of + * the multiplication. + * @return A BigDecimal whose value is + * this*rhs, using fixed point arithmetic. + * @stable ICU 2.0 + */ + + //--public com.ibm.icu.math.BigDecimal multiply(com.ibm.icu.math.BigDecimal rhs){ + //-- return this.multiply(rhs,plainMC); + //-- } + + /** + * Returns a BigDecimal whose value is this*rhs. + *

      + * Implements the multiplication (*) operator + * (as defined in the decimal documentation, see {@link BigDecimal + * class header}), + * and returns the result as a BigDecimal object. + * + * @param rhs The BigDecimal for the right hand side of + * the multiplication. + * @param set The MathContext arithmetic settings. + * @return A BigDecimal whose value is + * this*rhs. + * @stable ICU 2.0 + */ + + //--public com.ibm.icu.math.BigDecimal multiply(com.ibm.icu.math.BigDecimal rhs,com.ibm.icu.math.MathContext set){ + function multiply() { + var set; + if (multiply.arguments.length == 2) + { + set = multiply.arguments[1]; + } + else if (multiply.arguments.length == 1) + { + set = this.plainMC; + } + else + { + throw "multiply(): " + multiply.arguments.length + " arguments given; expected 1 or 2"; + } + var rhs = multiply.arguments[0]; + //--com.ibm.icu.math.BigDecimal lhs; + var lhs; + //--int padding; + var padding; + //--int reqdig; + var reqdig; + //--byte multer[]=null; + var multer=null; + //--byte multand[]=null; + var multand=null; + //--int multandlen; + var multandlen; + //--int acclen=0; + var acclen=0; + //--com.ibm.icu.math.BigDecimal res; + var res; + //--byte acc[]; + var acc; + //--int n=0; + var n=0; + //--byte mult=0; + var mult=0; + if (set.lostDigits) + this.checkdigits(rhs,set.digits); + lhs=this; // name for clarity and proxy + + /* Prepare numbers (truncate, unless unlimited precision) */ + padding=0; // trailing 0's to add + reqdig=set.digits; // local copy + if (reqdig>0) + { + if (lhs.mant.length>reqdig) + lhs=this.clone(lhs).round(set); + if (rhs.mant.length>reqdig) + rhs=this.clone(rhs).round(set); + // [we could reuse the new LHS for result in this case] + } + else + {/* unlimited */ + // fixed point arithmetic will want every trailing 0; we add these + // after the calculation rather than before, for speed. + if (lhs.exp>0) + padding=padding+lhs.exp; + if (rhs.exp>0) + padding=padding+rhs.exp; + } + + // For best speed, as in DMSRCN, we use the shorter number as the + // multiplier and the longer as the multiplicand. + // 1999.12.22: We used to special case when the result would fit in + // a long, but with Java 1.3 this gave no advantage. + if (lhs.mant.length9) + acclen=multandlen+1; + else + acclen=multandlen; + + /* Now the main long multiplication loop */ + res=new BigDecimal(); // where we'll build result + acc=this.createArrayWithZeros(acclen); // accumulator, all zeros + // 1998.07.01: calculate from left to right so that accumulator goes + // to likely final length on first addition; this avoids a one-digit + // extension (and object allocation) each time around the loop. + // Initial number therefore has virtual zeros added to right. + {var $7=multer.length;n=0;n:for(;$7>0;$7--,n++){ + mult=multer[n]; + if (mult!=0) + { // [optimization] + // accumulate [accumulator is reusable array] + acc=this.byteaddsub(acc,acc.length,multand,multandlen,mult,true); + } + // divide multiplicand by 10 for next digit to right + multandlen--; // 'virtual length' + } + }/*n*/ + + res.ind=lhs.ind*rhs.ind; // final sign + res.exp=(lhs.exp+rhs.exp)-padding; // final exponent + // [overflow is checked by finish] + + /* add trailing zeros to the result, if necessary */ + if (padding==0) + res.mant=acc; + else + res.mant=this.extend(acc,acc.length+padding); // add trailing 0s + return res.finish(set,false); + } + + /** + * Returns a plain BigDecimal whose value is + * -this. + *

      + * The same as {@link #negate(MathContext)}, where the context is + * new MathContext(0, MathContext.PLAIN). + *

      + * The length of the decimal part (the scale) of the result will be + * be this.scale() + * + * + * @return A BigDecimal whose value is + * -this. + * @stable ICU 2.0 + */ + + //--public com.ibm.icu.math.BigDecimal negate(){ + //-- return this.negate(plainMC); + //-- } + + /** + * Returns a BigDecimal whose value is -this. + *

      + * Implements the negation (Prefix -) operator + * (as defined in the decimal documentation, see {@link BigDecimal + * class header}), + * and returns the result as a BigDecimal object. + * + * @param set The MathContext arithmetic settings. + * @return A BigDecimal whose value is + * -this. + * @stable ICU 2.0 + */ + + //public com.ibm.icu.math.BigDecimal negate(com.ibm.icu.math.MathContext set){ + function negate() { + var set; + if (negate.arguments.length == 1) + { + set = negate.arguments[0]; + } + else if (negate.arguments.length == 0) + { + set = this.plainMC; + } + else + { + throw "negate(): " + negate.arguments.length + " arguments given; expected 0 or 1"; + } + //--com.ibm.icu.math.BigDecimal res; + var res; + // Originally called minus(), changed to matched Java precedents + // This simply clones, flips the sign, and possibly rounds + if (set.lostDigits) + this.checkdigits(null,set.digits); + res=this.clone(this); // safe copy + res.ind=-res.ind; + return res.finish(set,false); + } + + /** + * Returns a plain BigDecimal whose value is + * +this. + * Note that this is not necessarily a + * plain BigDecimal, but the result will always be. + *

      + * The same as {@link #plus(MathContext)}, where the context is + * new MathContext(0, MathContext.PLAIN). + *

      + * The length of the decimal part (the scale) of the result will be + * be this.scale() + * + * @return A BigDecimal whose value is + * +this. + * @stable ICU 2.0 + */ + + //--public com.ibm.icu.math.BigDecimal plus(){ + //-- return this.plus(plainMC); + //-- } + + /** + * Returns a BigDecimal whose value is + * +this. + *

      + * Implements the plus (Prefix +) operator + * (as defined in the decimal documentation, see {@link BigDecimal + * class header}), + * and returns the result as a BigDecimal object. + *

      + * This method is useful for rounding or otherwise applying a context + * to a decimal value. + * + * @param set The MathContext arithmetic settings. + * @return A BigDecimal whose value is + * +this. + * @stable ICU 2.0 + */ + + //public com.ibm.icu.math.BigDecimal plus(com.ibm.icu.math.MathContext set){ + function plus() { + var set; + if (plus.arguments.length == 1) + { + set = plus.arguments[0]; + } + else if (plus.arguments.length == 0) + { + set = this.plainMC; + } + else + { + throw "plus(): " + plus.arguments.length + " arguments given; expected 0 or 1"; + } + // This clones and forces the result to the new settings + // May return same object + if (set.lostDigits) + this.checkdigits(null,set.digits); + // Optimization: returns same object for some common cases + if (set.form==MathContext.prototype.PLAIN) + if (this.form==MathContext.prototype.PLAIN) + { + if (this.mant.length<=set.digits) + return this; + if (set.digits==0) + return this; + } + return this.clone(this).finish(set,false); + } + + /** + * Returns a plain BigDecimal whose value is + * this**rhs, using fixed point arithmetic. + *

      + * The same as {@link #pow(BigDecimal, MathContext)}, + * where the BigDecimal is rhs, + * and the context is new MathContext(0, MathContext.PLAIN). + *

      + * The parameter is the power to which the this will be + * raised; it must be in the range 0 through 999999999, and must + * have a decimal part of zero. Note that these restrictions may be + * removed in the future, so they should not be used as a test for a + * whole number. + *

      + * In addition, the power must not be negative, as no + * MathContext is used and so the result would then + * always be 0. + * + * @param rhs The BigDecimal for the right hand side of + * the operation (the power). + * @return A BigDecimal whose value is + * this**rhs, using fixed point arithmetic. + * @throws ArithmeticException if rhs is out of range or + * is not a whole number. + * @stable ICU 2.0 + */ + + //--public com.ibm.icu.math.BigDecimal pow(com.ibm.icu.math.BigDecimal rhs){ + //-- return this.pow(rhs,plainMC); + //-- } + // The name for this method is inherited from the precedent set by the + // BigInteger and Math classes. + + /** + * Returns a BigDecimal whose value is this**rhs. + *

      + * Implements the power (**) operator + * (as defined in the decimal documentation, see {@link BigDecimal + * class header}), + * and returns the result as a BigDecimal object. + *

      + * The first parameter is the power to which the this + * will be raised; it must be in the range -999999999 through + * 999999999, and must have a decimal part of zero. Note that these + * restrictions may be removed in the future, so they should not be + * used as a test for a whole number. + *

      + * If the digits setting of the MathContext + * parameter is 0, the power must be zero or positive. + * + * @param rhs The BigDecimal for the right hand side of + * the operation (the power). + * @param set The MathContext arithmetic settings. + * @return A BigDecimal whose value is + * this**rhs. + * @throws ArithmeticException if rhs is out of range or + * is not a whole number. + * @stable ICU 2.0 + */ + + //--public com.ibm.icu.math.BigDecimal pow(com.ibm.icu.math.BigDecimal rhs,com.ibm.icu.math.MathContext set){ + function pow() { + var set; + if (pow.arguments.length == 2) + { + set = pow.arguments[1]; + } + else if (pow.arguments.length == 1) + { + set = this.plainMC; + } + else + { + throw "pow(): " + pow.arguments.length + " arguments given; expected 1 or 2"; + } + var rhs = pow.arguments[0]; + //--int n; + var n; + //--com.ibm.icu.math.BigDecimal lhs; + var lhs; + //--int reqdig; + var reqdig; + //-- int workdigits=0; + var workdigits=0; + //--int L=0; + var L=0; + //--com.ibm.icu.math.MathContext workset; + var workset; + //--com.ibm.icu.math.BigDecimal res; + var res; + //--boolean seenbit; + var seenbit; + //--int i=0; + var i=0; + if (set.lostDigits) + this.checkdigits(rhs,set.digits); + n=rhs.intcheck(this.MinArg,this.MaxArg); // check RHS by the rules + lhs=this; // clarified name + + reqdig=set.digits; // local copy (heavily used) + if (reqdig==0) + { + if (rhs.ind==this.isneg) + //--throw new java.lang.ArithmeticException("Negative power:"+" "+rhs.toString()); + throw "pow(): Negative power: " + rhs.toString(); + workdigits=0; + } + else + {/* non-0 digits */ + if ((rhs.mant.length+rhs.exp)>reqdig) + //--throw new java.lang.ArithmeticException("Too many digits:"+" "+rhs.toString()); + throw "pow(): Too many digits: " + rhs.toString(); + + /* Round the lhs to DIGITS if need be */ + if (lhs.mant.length>reqdig) + lhs=this.clone(lhs).round(set); + + /* L for precision calculation [see ANSI X3.274-1996] */ + L=rhs.mant.length+rhs.exp; // length without decimal zeros/exp + workdigits=(reqdig+L)+1; // calculate the working DIGITS + } + + /* Create a copy of set for working settings */ + // Note: no need to check for lostDigits again. + // 1999.07.17 Note: this construction must follow RHS check + workset=new MathContext(workdigits,set.form,false,set.roundingMode); + + res=this.ONE; // accumulator + if (n==0) + return res; // x**0 == 1 + if (n<0) + n=-n; // [rhs.ind records the sign] + seenbit=false; // set once we've seen a 1-bit + {i=1;i:for(;;i++){ // for each bit [top bit ignored] + //n=n+n; // shift left 1 bit + n<<=1; + if (n<0) + { // top bit is set + seenbit=true; // OK, we're off + res=res.multiply(lhs,workset); // acc=acc*x + } + if (i==31) + break i; // that was the last bit + if ((!seenbit)) + continue i; // we don't have to square 1 + res=res.multiply(res,workset); // acc=acc*acc [square] + } + }/*i*/ // 32 bits + if (rhs.ind<0) // was a **-n [hence digits>0] + res=this.ONE.divide(res,workset); // .. so acc=1/acc + return res.finish(set,true); // round and strip [original digits] + } + + /** + * Returns a plain BigDecimal whose value is + * the remainder of this/rhs, using fixed point arithmetic. + *

      + * The same as {@link #remainder(BigDecimal, MathContext)}, + * where the BigDecimal is rhs, + * and the context is new MathContext(0, MathContext.PLAIN). + *

      + * This is not the modulo operator -- the result may be negative. + * + * @param rhs The BigDecimal for the right hand side of + * the remainder operation. + * @return A BigDecimal whose value is the remainder + * of this/rhs, using fixed point arithmetic. + * @throws ArithmeticException if rhs is zero. + * @stable ICU 2.0 + */ + + //--public com.ibm.icu.math.BigDecimal remainder(com.ibm.icu.math.BigDecimal rhs){ + //-- return this.dodivide('R',rhs,plainMC,-1); + //-- } + + /** + * Returns a BigDecimal whose value is the remainder of + * this/rhs. + *

      + * Implements the remainder operator + * (as defined in the decimal documentation, see {@link BigDecimal + * class header}), + * and returns the result as a BigDecimal object. + *

      + * This is not the modulo operator -- the result may be negative. + * + * @param rhs The BigDecimal for the right hand side of + * the remainder operation. + * @param set The MathContext arithmetic settings. + * @return A BigDecimal whose value is the remainder + * of this+rhs. + * @throws ArithmeticException if rhs is zero. + * @throws ArithmeticException if the integer part of the result will + * not fit in the number of digits specified for the + * context. + * @stable ICU 2.0 + */ + + //--public com.ibm.icu.math.BigDecimal remainder(com.ibm.icu.math.BigDecimal rhs,com.ibm.icu.math.MathContext set){ + function remainder() { + var set; + if (remainder.arguments.length == 2) + { + set = remainder.arguments[1]; + } + else if (remainder.arguments.length == 1) + { + set = this.plainMC; + } + else + { + throw "remainder(): " + remainder.arguments.length + " arguments given; expected 1 or 2"; + } + var rhs = remainder.arguments[0]; + return this.dodivide('R',rhs,set,-1); + } + + /** + * Returns a plain BigDecimal whose value is + * this-rhs, using fixed point arithmetic. + *

      + * The same as {@link #subtract(BigDecimal, MathContext)}, + * where the BigDecimal is rhs, + * and the context is new MathContext(0, MathContext.PLAIN). + *

      + * The length of the decimal part (the scale) of the result will be + * the maximum of the scales of the two operands. + * + * @param rhs The BigDecimal for the right hand side of + * the subtraction. + * @return A BigDecimal whose value is + * this-rhs, using fixed point arithmetic. + * @stable ICU 2.0 + */ + + //--public com.ibm.icu.math.BigDecimal subtract(com.ibm.icu.math.BigDecimal rhs){ + //-- return this.subtract(rhs,plainMC); + //-- } + + /** + * Returns a BigDecimal whose value is this-rhs. + *

      + * Implements the subtraction (-) operator + * (as defined in the decimal documentation, see {@link BigDecimal + * class header}), + * and returns the result as a BigDecimal object. + * + * @param rhs The BigDecimal for the right hand side of + * the subtraction. + * @param set The MathContext arithmetic settings. + * @return A BigDecimal whose value is + * this-rhs. + * @stable ICU 2.0 + */ + + //--public com.ibm.icu.math.BigDecimal subtract(com.ibm.icu.math.BigDecimal rhs,com.ibm.icu.math.MathContext set){ + function subtract() { + var set; + if (subtract.arguments.length == 2) + { + set = subtract.arguments[1]; + } + else if (subtract.arguments.length == 1) + { + set = this.plainMC; + } + else + { + throw "subtract(): " + subtract.arguments.length + " arguments given; expected 1 or 2"; + } + var rhs = subtract.arguments[0]; + //--com.ibm.icu.math.BigDecimal newrhs; + var newrhs; + if (set.lostDigits) + this.checkdigits(rhs,set.digits); + // [add will recheck .. but would report -rhs] + /* carry out the subtraction */ + // we could fastpath -0, but it is too rare. + newrhs=this.clone(rhs); // safe copy + newrhs.ind=-newrhs.ind; // prepare to subtract + return this.add(newrhs,set); // arithmetic + } + + /* ---------------------------------------------------------------- */ + /* Other methods */ + /* ---------------------------------------------------------------- */ + + /** + * Converts this BigDecimal to a byte. + * If the BigDecimal has a non-zero decimal part or is + * out of the possible range for a byte (8-bit signed + * integer) result then an ArithmeticException is thrown. + * + * @return A byte equal in value to this. + * @throws ArithmeticException if this has a non-zero + * decimal part, or will not fit in a byte. + * @stable ICU 2.0 + */ + + //--public byte byteValueExact(){ + //-- int num; + //-- num=this.intValueExact(); // will check decimal part too + //-- if ((num>127)|(num<(-128))) + //-- throw new java.lang.ArithmeticException("Conversion overflow:"+" "+this.toString()); + //-- return (byte)num; + //-- } + + /** + * Compares this BigDecimal with the value of the parameter. + *

      + * If the parameter is null, or is not an instance of the + * BigDecimal type, an exception is thrown. + * Otherwise, the parameter is cast to type BigDecimal + * and the result of the {@link #compareTo(BigDecimal)} method, + * using the cast parameter, is returned. + *

      + * The {@link #compareTo(BigDecimal, MathContext)} method should be + * used when a MathContext is needed for the comparison. + * + * @param rhs The Object for the right hand side of + * the comparison. + * @return An int whose value is -1, 0, or 1 as + * this is numerically less than, equal to, + * or greater than rhs. + * @throws ClassCastException if rhs cannot be cast to + * a BigDecimal object. + * @see #compareTo(BigDecimal) + * @stable ICU 2.0 + */ + + //--public int compareTo(java.lang.Object rhsobj){ + //-- // the cast in the next line will raise ClassCastException if necessary + //-- return compareTo((com.ibm.icu.math.BigDecimal)rhsobj,plainMC); + //-- } + + /** + * Converts this BigDecimal to a double. + * If the BigDecimal is out of the possible range for a + * double (64-bit signed floating point) result then an + * ArithmeticException is thrown. + *

      + * The double produced is identical to result of expressing the + * BigDecimal as a String and then + * converting it using the Double(String) constructor; + * this can result in values of Double.NEGATIVE_INFINITY + * or Double.POSITIVE_INFINITY. + * + * @return A double corresponding to this. + * @stable ICU 2.0 + */ + + //--public double doubleValue(){ + //-- // We go via a String [as does BigDecimal in JDK 1.2] + //-- // Next line could possibly raise NumberFormatException + //-- return java.lang.Double.valueOf(this.toString()).doubleValue(); + //-- } + + /** + * Compares this BigDecimal with rhs for + * equality. + *

      + * If the parameter is null, or is not an instance of the + * BigDecimal type, or is not exactly equal to the current + * BigDecimal object, then false is returned. + * Otherwise, true is returned. + *

      + * "Exactly equal", here, means that the String + * representations of the BigDecimal numbers are + * identical (they have the same characters in the same sequence). + *

      + * The {@link #compareTo(BigDecimal, MathContext)} method should be + * used for more general comparisons. + * @param rhs The Object for the right hand side of + * the comparison. + * @return A boolean whose value true if and + * only if the operands have identical string representations. + * @throws ClassCastException if rhs cannot be cast to + * a BigDecimal object. + * @stable ICU 2.0 + * @see #compareTo(Object) + * @see #compareTo(BigDecimal) + * @see #compareTo(BigDecimal, MathContext) + */ + + //--public boolean equals(java.lang.Object obj){ + function equals(obj) { + //--com.ibm.icu.math.BigDecimal rhs; + var rhs; + //--int i=0; + var i=0; + //--char lca[]=null; + var lca=null; + //--char rca[]=null; + var rca=null; + // We are equal iff toString of both are exactly the same + if (obj==null) + return false; // not equal + if ((!(((obj instanceof BigDecimal))))) + return false; // not a decimal + rhs=obj; // cast; we know it will work + if (this.ind!=rhs.ind) + return false; // different signs never match + if (((this.mant.length==rhs.mant.length)&&(this.exp==rhs.exp))&&(this.form==rhs.form)) + + { // mantissas say all + // here with equal-length byte arrays to compare + {var $8=this.mant.length;i=0;i:for(;$8>0;$8--,i++){ + if (this.mant[i]!=rhs.mant[i]) + return false; + } + }/*i*/ + } + else + { // need proper layout + lca=this.layout(); // layout to character array + rca=rhs.layout(); + if (lca.length!=rca.length) + return false; // mismatch + // here with equal-length character arrays to compare + {var $9=lca.length;i=0;i:for(;$9>0;$9--,i++){ + if (lca[i]!=rca[i]) + return false; + } + }/*i*/ + } + return true; // arrays have identical content + } + + /** + * Converts this BigDecimal to a float. + * If the BigDecimal is out of the possible range for a + * float (32-bit signed floating point) result then an + * ArithmeticException is thrown. + *

      + * The float produced is identical to result of expressing the + * BigDecimal as a String and then + * converting it using the Float(String) constructor; + * this can result in values of Float.NEGATIVE_INFINITY + * or Float.POSITIVE_INFINITY. + * + * @return A float corresponding to this. + * @stable ICU 2.0 + */ + + //--public float floatValue(){ + //-- return java.lang.Float.valueOf(this.toString()).floatValue(); + //-- } + + /** + * Returns the String representation of this + * BigDecimal, modified by layout parameters. + *

      + * This method is provided as a primitive for use by more + * sophisticated classes, such as DecimalFormat, that + * can apply locale-sensitive editing of the result. The level of + * formatting that it provides is a necessary part of the BigDecimal + * class as it is sensitive to and must follow the calculation and + * rounding rules for BigDecimal arithmetic. + * However, if the function is provided elsewhere, it may be removed + * from this class. + *

      + * The parameters, for both forms of the format method + * are all of type int. + * A value of -1 for any parameter indicates that the default action + * or value for that parameter should be used. + *

      + * The parameters, before and after, + * specify the number of characters to be used for the integer part + * and decimal part of the result respectively. Exponential notation + * is not used. If either parameter is -1 (which indicates the default + * action), the number of characters used will be exactly as many as + * are needed for that part. + *

      + * before must be a positive number; if it is larger than + * is needed to contain the integer part, that part is padded on the + * left with blanks to the requested length. If before is + * not large enough to contain the integer part of the number + * (including the sign, for negative numbers) an exception is thrown. + *

      + * after must be a non-negative number; if it is not the + * same size as the decimal part of the number, the number will be + * rounded (or extended with zeros) to fit. Specifying 0 for + * after will cause the number to be rounded to an + * integer (that is, it will have no decimal part or decimal point). + * The rounding method will be the default, + * MathContext.ROUND_HALF_UP. + *

      + * Other rounding methods, and the use of exponential notation, can + * be selected by using {@link #format(int,int,int,int,int,int)}. + * Using the two-parameter form of the method has exactly the same + * effect as using the six-parameter form with the final four + * parameters all being -1. + * + * @param before The int specifying the number of places + * before the decimal point. Use -1 for 'as many as + * are needed'. + * @param after The int specifying the number of places + * after the decimal point. Use -1 for 'as many as are + * needed'. + * @return A String representing this + * BigDecimal, laid out according to the + * specified parameters + * @throws ArithmeticException if the number cannot be laid out as + * requested. + * @throws IllegalArgumentException if a parameter is out of range. + * @stable ICU 2.0 + * @see #toString + * @see #toCharArray + */ + + //--public java.lang.String format(int before,int after){ + //-- return format(before,after,-1,-1,com.ibm.icu.math.MathContext.SCIENTIFIC,ROUND_HALF_UP); + //-- } + + /** + * Returns the String representation of this + * BigDecimal, modified by layout parameters and allowing + * exponential notation. + *

      + * This method is provided as a primitive for use by more + * sophisticated classes, such as DecimalFormat, that + * can apply locale-sensitive editing of the result. The level of + * formatting that it provides is a necessary part of the BigDecimal + * class as it is sensitive to and must follow the calculation and + * rounding rules for BigDecimal arithmetic. + * However, if the function is provided elsewhere, it may be removed + * from this class. + *

      + * The parameters are all of type int. + * A value of -1 for any parameter indicates that the default action + * or value for that parameter should be used. + *

      + * The first two parameters (before and + * after) specify the number of characters to be used for + * the integer part and decimal part of the result respectively, as + * defined for {@link #format(int,int)}. + * If either of these is -1 (which indicates the default action), the + * number of characters used will be exactly as many as are needed for + * that part. + *

      + * The remaining parameters control the use of exponential notation + * and rounding. Three (explaces, exdigits, + * and exform) control the exponent part of the result. + * As before, the default action for any of these parameters may be + * selected by using the value -1. + *

      + * explaces must be a positive number; it sets the number + * of places (digits after the sign of the exponent) to be used for + * any exponent part, the default (when explaces is -1) + * being to use as many as are needed. + * If explaces is not -1, space is always reserved for + * an exponent; if one is not needed (for example, if the exponent + * will be 0) then explaces+2 blanks are appended to the + * result. + * + * If explaces is not -1 and is not large enough to + * contain the exponent, an exception is thrown. + *

      + * exdigits sets the trigger point for use of exponential + * notation. If, before any rounding, the number of places needed + * before the decimal point exceeds exdigits, or if the + * absolute value of the result is less than 0.000001, + * then exponential form will be used, provided that + * exdigits was specified. + * When exdigits is -1, exponential notation will never + * be used. If 0 is specified for exdigits, exponential + * notation is always used unless the exponent would be 0. + *

      + * exform sets the form for exponential notation (if + * needed). + * It may be either {@link MathContext#SCIENTIFIC} or + * {@link MathContext#ENGINEERING}. + * If the latter, engineering, form is requested, up to three digits + * (plus sign, if negative) may be needed for the integer part of the + * result (before). Otherwise, only one digit (plus + * sign, if negative) is needed. + *

      + * Finally, the sixth argument, exround, selects the + * rounding algorithm to be used, and must be one of the values + * indicated by a public constant in the {@link MathContext} class + * whose name starts with ROUND_. + * The default (ROUND_HALF_UP) may also be selected by + * using the value -1, as before. + *

      + * The special value MathContext.ROUND_UNNECESSARY may be + * used to detect whether non-zero digits are discarded -- if + * exround has this value than if non-zero digits would + * be discarded (rounded) during formatting then an + * ArithmeticException is thrown. + * + * @param before The int specifying the number of places + * before the decimal point. + * Use -1 for 'as many as are needed'. + * @param after The int specifying the number of places + * after the decimal point. + * Use -1 for 'as many as are needed'. + * @param explaces The int specifying the number of places + * to be used for any exponent. + * Use -1 for 'as many as are needed'. + * @param exdigits The int specifying the trigger + * (digits before the decimal point) which if + * exceeded causes exponential notation to be used. + * Use 0 to force exponential notation. + * Use -1 to force plain notation (no exponential + * notation). + * @param exform The int specifying the form of + * exponential notation to be used + * ({@link MathContext#SCIENTIFIC} or + * {@link MathContext#ENGINEERING}). + * @param exround The int specifying the rounding mode + * to use. + * Use -1 for the default, {@link MathContext#ROUND_HALF_UP}. + * @return A String representing this + * BigDecimal, laid out according to the + * specified parameters + * @throws ArithmeticException if the number cannot be laid out as + * requested. + * @throws IllegalArgumentException if a parameter is out of range. + * @see #toString + * @see #toCharArray + * @stable ICU 2.0 + */ + + //--public java.lang.String format(int before,int after,int explaces,int exdigits,int exformint,int exround){ + function format() { + var explaces; + var exdigits; + var exformint; + var exround; + if (format.arguments.length == 6) + { + explaces = format.arguments[2]; + exdigits = format.arguments[3]; + exformint = format.arguments[4]; + exround = format.arguments[5]; + } + else if (format.arguments.length == 2) + { + explaces = -1; + exdigits = -1; + exformint = MathContext.prototype.SCIENTIFIC; + exround = this.ROUND_HALF_UP; + } + else + { + throw "format(): " + format.arguments.length + " arguments given; expected 2 or 6"; + } + var before = format.arguments[0]; + var after = format.arguments[1]; + //--com.ibm.icu.math.BigDecimal num; + var num; + //--int mag=0; + var mag=0; + //--int thisafter=0; + var thisafter=0; + //--int lead=0; + var lead=0; + //--byte newmant[]=null; + var newmant=null; + //--int chop=0; + var chop=0; + //--int need=0; + var need=0; + //--int oldexp=0; + var oldexp=0; + //--char a[]; + var a; + //--int p=0; + var p=0; + //--char newa[]=null; + var newa=null; + //--int i=0; + var i=0; + //--int places=0; + var places=0; + + + /* Check arguments */ + if ((before<(-1))||(before==0)) + this.badarg("format",1,before); + if (after<(-1)) + this.badarg("format",2,after); + if ((explaces<(-1))||(explaces==0)) + this.badarg("format",3,explaces); + if (exdigits<(-1)) + this.badarg("format",4,exdigits); + {/*select*/ + if (exformint==MathContext.prototype.SCIENTIFIC) + {} + else if (exformint==MathContext.prototype.ENGINEERING) + {} + else if (exformint==(-1)) + exformint=MathContext.prototype.SCIENTIFIC; + // note PLAIN isn't allowed + else{ + this.badarg("format",5,exformint); + } + } + // checking the rounding mode is done by trying to construct a + // MathContext object with that mode; it will fail if bad + if (exround!=this.ROUND_HALF_UP) + {try{ // if non-default... + if (exround==(-1)) + exround=this.ROUND_HALF_UP; + else + new MathContext(9,MathContext.prototype.SCIENTIFIC,false,exround); + } + catch ($10){ + this.badarg("format",6,exround); + }} + + num=this.clone(this); // make private copy + + /* Here: + num is BigDecimal to format + before is places before point [>0] + after is places after point [>=0] + explaces is exponent places [>0] + exdigits is exponent digits [>=0] + exformint is exponent form [one of two] + exround is rounding mode [one of eight] + 'before' through 'exdigits' are -1 if not specified + */ + + /* determine form */ + {setform:do{/*select*/ + if (exdigits==(-1)) + num.form=MathContext.prototype.PLAIN; + else if (num.ind==this.iszero) + num.form=MathContext.prototype.PLAIN; + else{ + // determine whether triggers + mag=num.exp+num.mant.length; + if (mag>exdigits) + num.form=exformint; + else + if (mag<(-5)) + num.form=exformint; + else + num.form=MathContext.prototype.PLAIN; + } + }while(false);}/*setform*/ + + /* If 'after' was specified then we may need to adjust the + mantissa. This is a little tricky, as we must conform to the + rules of exponential layout if necessary (e.g., we cannot end up + with 10.0 if scientific). */ + if (after>=0) + {setafter:for(;;){ + // calculate the current after-length + {/*select*/ + if (num.form==MathContext.prototype.PLAIN) + thisafter=-num.exp; // has decimal part + else if (num.form==MathContext.prototype.SCIENTIFIC) + thisafter=num.mant.length-1; + else{ // engineering + lead=(((num.exp+num.mant.length)-1))%3; // exponent to use + if (lead<0) + lead=3+lead; // negative exponent case + lead++; // number of leading digits + if (lead>=num.mant.length) + thisafter=0; + else + thisafter=num.mant.length-lead; + } + } + if (thisafter==after) + break setafter; // we're in luck + if (thisafter0] + if (chop>num.mant.length) + { // all digits go, no chance of carry + // carry on with zero + num.mant=this.ZERO.mant; + num.ind=this.iszero; + num.exp=0; + continue setafter; // recheck: we may need trailing zeros + } + // we have a digit to inspect from existing mantissa + // round the number as required + need=num.mant.length-chop; // digits to end up with [may be 0] + oldexp=num.exp; // save old exponent + num.round(need,exround); + // if the exponent grew by more than the digits we chopped, then + // we must have had a carry, so will need to recheck the layout + if ((num.exp-oldexp)==chop) + break setafter; // number did not have carry + // mantissa got extended .. so go around and check again + } + }/*setafter*/ + + a=num.layout(); // lay out, with exponent if required, etc. + + /* Here we have laid-out number in 'a' */ + // now apply 'before' and 'explaces' as needed + if (before>0) + { + // look for '.' or 'E' + {var $11=a.length;p=0;p:for(;$11>0;$11--,p++){ + if (a[p]=='.') + break p; + if (a[p]=='E') + break p; + } + }/*p*/ + // p is now offset of '.', 'E', or character after end of array + // that is, the current length of before part + if (p>before) + this.badarg("format",1,before); // won't fit + if (p0;$12--,i++){ + newa[i]=' '; + } + }/*i*/ + //--java.lang.System.arraycopy((java.lang.Object)a,0,(java.lang.Object)newa,i,a.length); + this.arraycopy(a,0,newa,i,a.length); + a=newa; + } + // [if p=before then it's just the right length] + } + + if (explaces>0) + { + // look for 'E' [cannot be at offset 0] + {var $13=a.length-1;p=a.length-1;p:for(;$13>0;$13--,p--){ + if (a[p]=='E') + break p; + } + }/*p*/ + // p is now offset of 'E', or 0 + if (p==0) + { // no E part; add trailing blanks + newa=new Array((a.length+explaces)+2); + //--java.lang.System.arraycopy((java.lang.Object)a,0,(java.lang.Object)newa,0,a.length); + this.arraycopy(a,0,newa,0,a.length); + {var $14=explaces+2;i=a.length;i:for(;$14>0;$14--,i++){ + newa[i]=' '; + } + }/*i*/ + a=newa; + } + else + {/* found E */ // may need to insert zeros + places=(a.length-p)-2; // number so far + if (places>explaces) + this.badarg("format",3,explaces); + if (places0;$15--,i++){ + newa[i]='0'; + } + }/*i*/ + //--java.lang.System.arraycopy((java.lang.Object)a,p+2,(java.lang.Object)newa,i,places); // remainder of exponent + this.arraycopy(a,p+2,newa,i,places); + a=newa; + } + // [if places=explaces then it's just the right length] + } + } + return a.join(""); + } + + /** + * Returns the hashcode for this BigDecimal. + * This hashcode is suitable for use by the + * java.util.Hashtable class. + *

      + * Note that two BigDecimal objects are only guaranteed + * to produce the same hashcode if they are exactly equal (that is, + * the String representations of the + * BigDecimal numbers are identical -- they have the same + * characters in the same sequence). + * + * @return An int that is the hashcode for this. + * @stable ICU 2.0 + */ + + //--public int hashCode(){ + //-- // Maybe calculate ourselves, later. If so, note that there can be + //-- // more than one internal representation for a given toString() result. + //-- return this.toString().hashCode(); + //-- } + + /** + * Converts this BigDecimal to an int. + * If the BigDecimal has a non-zero decimal part it is + * discarded. If the BigDecimal is out of the possible + * range for an int (32-bit signed integer) result then + * only the low-order 32 bits are used. (That is, the number may be + * decapitated.) To avoid unexpected errors when these + * conditions occur, use the {@link #intValueExact} method. + * + * @return An int converted from this, + * truncated and decapitated if necessary. + * @stable ICU 2.0 + */ + + //--public int intValue(){ + //-- return toBigInteger().intValue(); + //-- } + + /** + * Converts this BigDecimal to an int. + * If the BigDecimal has a non-zero decimal part or is + * out of the possible range for an int (32-bit signed + * integer) result then an ArithmeticException is thrown. + * + * @return An int equal in value to this. + * @throws ArithmeticException if this has a non-zero + * decimal part, or will not fit in an + * int. + * @stable ICU 2.0 + */ + + //--public int intValueExact(){ + function intValueExact() { + //--int lodigit; + var lodigit; + //--int useexp=0; + var useexp=0; + //--int result; + var result; + //--int i=0; + var i=0; + //--int topdig=0; + var topdig=0; + // This does not use longValueExact() as the latter can be much + // slower. + // intcheck (from pow) relies on this to check decimal part + if (this.ind==this.iszero) + return 0; // easy, and quite common + /* test and drop any trailing decimal part */ + lodigit=this.mant.length-1; + if (this.exp<0) + { + lodigit=lodigit+this.exp; // reduces by -(-exp) + /* all decimal places must be 0 */ + if ((!(this.allzero(this.mant,lodigit+1)))) + throw "intValueExact(): Decimal part non-zero: " + this.toString(); + if (lodigit<0) + return 0; // -1=0 */ + if ((this.exp+lodigit)>9) // early exit + throw "intValueExact(): Conversion overflow: "+this.toString(); + useexp=this.exp; + } + /* convert the mantissa to binary, inline for speed */ + result=0; + {var $16=lodigit+useexp;i=0;i:for(;i<=$16;i++){ + result=result*10; + if (i<=lodigit) + result=result+this.mant[i]; + } + }/*i*/ + + /* Now, if the risky length, check for overflow */ + if ((lodigit+useexp)==9) + { + // note we cannot just test for -ve result, as overflow can move a + // zero into the top bit [consider 5555555555] + topdig=div(result,1000000000); // get top digit, preserving sign + if (topdig!=this.mant[0]) + { // digit must match and be positive + // except in the special case ... + if (result==-2147483648) // looks like the special + if (this.ind==this.isneg) // really was negative + if (this.mant[0]==2) + return result; // really had top digit 2 + throw "intValueExact(): Conversion overflow: "+this.toString(); + } + } + + /* Looks good */ + if (this.ind==this.ispos) + return result; + return -result; + } + + /** + * Converts this BigDecimal to a long. + * If the BigDecimal has a non-zero decimal part it is + * discarded. If the BigDecimal is out of the possible + * range for a long (64-bit signed integer) result then + * only the low-order 64 bits are used. (That is, the number may be + * decapitated.) To avoid unexpected errors when these + * conditions occur, use the {@link #longValueExact} method. + * + * @return A long converted from this, + * truncated and decapitated if necessary. + * @stable ICU 2.0 + */ + + //--public long longValue(){ + //-- return toBigInteger().longValue(); + //-- } + + /** + * Converts this BigDecimal to a long. + * If the BigDecimal has a non-zero decimal part or is + * out of the possible range for a long (64-bit signed + * integer) result then an ArithmeticException is thrown. + * + * @return A long equal in value to this. + * @throws ArithmeticException if this has a non-zero + * decimal part, or will not fit in a + * long. + * @stable ICU 2.0 + */ + + //--public long longValueExact(){ + //-- int lodigit; + //-- int cstart=0; + //-- int useexp=0; + //-- long result; + //-- int i=0; + //-- long topdig=0; + //-- // Identical to intValueExact except for result=long, and exp>=20 test + //-- if (ind==0) + //-- return 0; // easy, and quite common + //-- lodigit=mant.length-1; // last included digit + //-- if (exp<0) + //-- { + //-- lodigit=lodigit+exp; // -(-exp) + //-- /* all decimal places must be 0 */ + //-- if (lodigit<0) + //-- cstart=0; + //-- else + //-- cstart=lodigit+1; + //-- if ((!(allzero(mant,cstart)))) + //-- throw new java.lang.ArithmeticException("Decimal part non-zero:"+" "+this.toString()); + //-- if (lodigit<0) + //-- return 0; // -1=0 */ + //-- if ((exp+mant.length)>18) // early exit + //-- throw new java.lang.ArithmeticException("Conversion overflow:"+" "+this.toString()); + //-- useexp=exp; + //-- } + //-- + //-- /* convert the mantissa to binary, inline for speed */ + //-- // note that we could safely use the 'test for wrap to negative' + //-- // algorithm here, but instead we parallel the intValueExact + //-- // algorithm for ease of checking and maintenance. + //-- result=(long)0; + //-- {int $17=lodigit+useexp;i=0;i:for(;i<=$17;i++){ + //-- result=result*10; + //-- if (i<=lodigit) + //-- result=result+mant[i]; + //-- } + //-- }/*i*/ + //-- + //-- /* Now, if the risky length, check for overflow */ + //-- if ((lodigit+useexp)==18) + //-- { + //-- topdig=result/1000000000000000000L; // get top digit, preserving sign + //-- if (topdig!=mant[0]) + //-- { // digit must match and be positive + //-- // except in the special case ... + //-- if (result==java.lang.Long.MIN_VALUE) // looks like the special + //-- if (ind==isneg) // really was negative + //-- if (mant[0]==9) + //-- return result; // really had top digit 9 + //-- throw new java.lang.ArithmeticException("Conversion overflow:"+" "+this.toString()); + //-- } + //-- } + //-- + //-- /* Looks good */ + //-- if (ind==ispos) + //-- return result; + //-- return (long)-result; + //-- } + + /** + * Returns a plain BigDecimal whose decimal point has + * been moved to the left by a specified number of positions. + * The parameter, n, specifies the number of positions to + * move the decimal point. + * That is, if n is 0 or positive, the number returned is + * given by: + *

      + * this.multiply(TEN.pow(new BigDecimal(-n))) + * + *

      + * n may be negative, in which case the method returns + * the same result as movePointRight(-n). + * + * @param n The int specifying the number of places to + * move the decimal point leftwards. + * @return A BigDecimal derived from + * this, with the decimal point moved + * n places to the left. + * @stable ICU 2.0 + */ + + //--public com.ibm.icu.math.BigDecimal movePointLeft(int n){ + function movePointLeft(n) { + //--com.ibm.icu.math.BigDecimal res; + var res; + // very little point in optimizing for shift of 0 + res=this.clone(this); + res.exp=res.exp-n; + return res.finish(this.plainMC,false); // finish sets form and checks exponent + } + + /** + * Returns a plain BigDecimal whose decimal point has + * been moved to the right by a specified number of positions. + * The parameter, n, specifies the number of positions to + * move the decimal point. + * That is, if n is 0 or positive, the number returned is + * given by: + *

      + * this.multiply(TEN.pow(new BigDecimal(n))) + * + *

      + * n may be negative, in which case the method returns + * the same result as movePointLeft(-n). + * + * @param n The int specifying the number of places to + * move the decimal point rightwards. + * @return A BigDecimal derived from + * this, with the decimal point moved + * n places to the right. + * @stable ICU 2.0 + */ + + //--public com.ibm.icu.math.BigDecimal movePointRight(int n){ + function movePointRight(n) { + //--com.ibm.icu.math.BigDecimal res; + var res; + res=this.clone(this); + res.exp=res.exp+n; + return res.finish(this.plainMC,false); + } + + /** + * Returns the scale of this BigDecimal. + * Returns a non-negative int which is the scale of the + * number. The scale is the number of digits in the decimal part of + * the number if the number were formatted without exponential + * notation. + * + * @return An int whose value is the scale of this + * BigDecimal. + * @stable ICU 2.0 + */ + + //--public int scale(){ + function scale() { + if (this.exp>=0) + return 0; // scale can never be negative + return -this.exp; + } + + /** + * Returns a plain BigDecimal with a given scale. + *

      + * If the given scale (which must be zero or positive) is the same as + * or greater than the length of the decimal part (the scale) of this + * BigDecimal then trailing zeros will be added to the + * decimal part as necessary. + *

      + * If the given scale is less than the length of the decimal part (the + * scale) of this BigDecimal then trailing digits + * will be removed, and in this case an + * ArithmeticException is thrown if any discarded digits + * are non-zero. + *

      + * The same as {@link #setScale(int, int)}, where the first parameter + * is the scale, and the second is + * MathContext.ROUND_UNNECESSARY. + * + * @param scale The int specifying the scale of the + * resulting BigDecimal. + * @return A plain BigDecimal with the given scale. + * @throws ArithmeticException if scale is negative. + * @throws ArithmeticException if reducing scale would discard + * non-zero digits. + * @stable ICU 2.0 + */ + + //--public com.ibm.icu.math.BigDecimal setScale(int scale){ + //-- return setScale(scale,ROUND_UNNECESSARY); + //-- } + + /** + * Returns a plain BigDecimal with a given scale. + *

      + * If the given scale (which must be zero or positive) is the same as + * or greater than the length of the decimal part (the scale) of this + * BigDecimal then trailing zeros will be added to the + * decimal part as necessary. + *

      + * If the given scale is less than the length of the decimal part (the + * scale) of this BigDecimal then trailing digits + * will be removed, and the rounding mode given by the second + * parameter is used to determine if the remaining digits are + * affected by a carry. + * In this case, an IllegalArgumentException is thrown if + * round is not a valid rounding mode. + *

      + * If round is MathContext.ROUND_UNNECESSARY, + * an ArithmeticException is thrown if any discarded + * digits are non-zero. + * + * @param scale The int specifying the scale of the + * resulting BigDecimal. + * @param round The int rounding mode to be used for + * the division (see the {@link MathContext} class). + * @return A plain BigDecimal with the given scale. + * @throws IllegalArgumentException if round is not a + * valid rounding mode. + * @throws ArithmeticException if scale is negative. + * @throws ArithmeticException if round is + * MathContext.ROUND_UNNECESSARY, and + * reducing scale would discard non-zero digits. + * @stable ICU 2.0 + */ + + //--public com.ibm.icu.math.BigDecimal setScale(int scale,int round){ + function setScale() { + var round; + if (setScale.arguments.length == 2) + { + round = setScale.arguments[1]; + } + else if (setScale.arguments.length == 1) + { + round = this.ROUND_UNNECESSARY; + } + else + { + throw "setScale(): " + setScale.arguments.length + " given; expected 1 or 2"; + } + var scale = setScale.arguments[0]; + //--int ourscale; + var ourscale; + //--com.ibm.icu.math.BigDecimal res; + var res; + //--int padding=0; + var padding=0; + //--int newlen=0; + var newlen=0; + // at present this naughtily only checks the round value if it is + // needed (used), for speed + ourscale=this.scale(); + if (ourscale==scale) // already correct scale + if (this.form==MathContext.prototype.PLAIN) // .. and form + return this; + res=this.clone(this); // need copy + if (ourscale<=scale) + { // simply zero-padding/changing form + // if ourscale is 0 we may have lots of 0s to add + if (ourscale==0) + padding=res.exp+scale; + else + padding=scale-ourscale; + res.mant=this.extend(res.mant,res.mant.length+padding); + res.exp=-scale; // as requested + } + else + {/* ourscale>scale: shortening, probably */ + if (scale<0) + //--throw new java.lang.ArithmeticException("Negative scale:"+" "+scale); + throw "setScale(): Negative scale: " + scale; + // [round() will raise exception if invalid round] + newlen=res.mant.length-((ourscale-scale)); // [<=0 is OK] + res=res.round(newlen,round); // round to required length + // This could have shifted left if round (say) 0.9->1[.0] + // Repair if so by adding a zero and reducing exponent + if (res.exp!=(-scale)) + { + res.mant=this.extend(res.mant,res.mant.length+1); + res.exp=res.exp-1; + } + } + res.form=MathContext.prototype.PLAIN; // by definition + return res; + } + + /** + * Converts this BigDecimal to a short. + * If the BigDecimal has a non-zero decimal part or is + * out of the possible range for a short (16-bit signed + * integer) result then an ArithmeticException is thrown. + * + * @return A short equal in value to this. + * @throws ArithmeticException if this has a non-zero + * decimal part, or will not fit in a + * short. + * @stable ICU 2.0 + */ + + //--public short shortValueExact(){ + //-- int num; + //-- num=this.intValueExact(); // will check decimal part too + //-- if ((num>32767)|(num<(-32768))) + //-- throw new java.lang.ArithmeticException("Conversion overflow:"+" "+this.toString()); + //-- return (short)num; + //-- } + + /** + * Returns the sign of this BigDecimal, as an + * int. + * This returns the signum function value that represents the + * sign of this BigDecimal. + * That is, -1 if the BigDecimal is negative, 0 if it is + * numerically equal to zero, or 1 if it is positive. + * + * @return An int which is -1 if the + * BigDecimal is negative, 0 if it is + * numerically equal to zero, or 1 if it is positive. + * @stable ICU 2.0 + */ + + //--public int signum(){ + function signum() { + return this.ind; // [note this assumes values for ind.] + } + + /** + * Converts this BigDecimal to a + * java.math.BigDecimal. + *

      + * This is an exact conversion; the result is the same as if the + * BigDecimal were formatted as a plain number without + * any rounding or exponent and then the + * java.math.BigDecimal(java.lang.String) constructor + * were used to construct the result. + *

      + * (Note: this method is provided only in the + * com.ibm.icu.math version of the BigDecimal class. + * It would not be present in a java.math version.) + * + * @return The java.math.BigDecimal equal in value + * to this BigDecimal. + * @stable ICU 2.0 + */ + + //--public java.math.BigDecimal toBigDecimal(){ + //-- return new java.math.BigDecimal(this.unscaledValue(),this.scale()); + //-- } + + /** + * Converts this BigDecimal to a + * java.math.BigInteger. + *

      + * Any decimal part is truncated (discarded). + * If an exception is desired should the decimal part be non-zero, + * use {@link #toBigIntegerExact()}. + * + * @return The java.math.BigInteger equal in value + * to the integer part of this BigDecimal. + * @stable ICU 2.0 + */ + + //--public java.math.BigInteger toBigInteger(){ + //-- com.ibm.icu.math.BigDecimal res=null; + //-- int newlen=0; + //-- byte newmant[]=null; + //-- {/*select*/ + //-- if ((exp>=0)&(form==com.ibm.icu.math.MathContext.PLAIN)) + //-- res=this; // can layout simply + //-- else if (exp>=0) + //-- { + //-- res=clone(this); // safe copy + //-- res.form=(byte)com.ibm.icu.math.MathContext.PLAIN; // .. and request PLAIN + //-- } + //-- else{ + //-- { // exp<0; scale to be truncated + //-- // we could use divideInteger, but we may as well be quicker + //-- if (((int)-this.exp)>=this.mant.length) + //-- res=ZERO; // all blows away + //-- else + //-- { + //-- res=clone(this); // safe copy + //-- newlen=res.mant.length+res.exp; + //-- newmant=new byte[newlen]; // [shorter] + //-- java.lang.System.arraycopy((java.lang.Object)res.mant,0,(java.lang.Object)newmant,0,newlen); + //-- res.mant=newmant; + //-- res.form=(byte)com.ibm.icu.math.MathContext.PLAIN; + //-- res.exp=0; + //-- } + //-- } + //-- } + //-- } + //-- return new BigInteger(new java.lang.String(res.layout())); + //-- } + + /** + * Converts this BigDecimal to a + * java.math.BigInteger. + *

      + * An exception is thrown if the decimal part (if any) is non-zero. + * + * @return The java.math.BigInteger equal in value + * to the integer part of this BigDecimal. + * @throws ArithmeticException if this has a non-zero + * decimal part. + * @stable ICU 2.0 + */ + + //--public java.math.BigInteger toBigIntegerExact(){ + //-- /* test any trailing decimal part */ + //-- if (exp<0) + //-- { // possible decimal part + //-- /* all decimal places must be 0; note exp<0 */ + //-- if ((!(allzero(mant,mant.length+exp)))) + //-- throw new java.lang.ArithmeticException("Decimal part non-zero:"+" "+this.toString()); + //-- } + //-- return toBigInteger(); + //-- } + + /** + * Returns the BigDecimal as a character array. + * The result of this method is the same as using the + * sequence toString().toCharArray(), but avoids creating + * the intermediate String and char[] + * objects. + * + * @return The char[] array corresponding to this + * BigDecimal. + * @stable ICU 2.0 + */ + + //--public char[] toCharArray(){ + //-- return layout(); + //-- } + + /** + * Returns the BigDecimal as a String. + * This returns a String that exactly represents this + * BigDecimal, as defined in the decimal documentation + * (see {@link BigDecimal class header}). + *

      + * By definition, using the {@link #BigDecimal(String)} constructor + * on the result String will create a + * BigDecimal that is exactly equal to the original + * BigDecimal. + * + * @return The String exactly corresponding to this + * BigDecimal. + * @see #format(int, int) + * @see #format(int, int, int, int, int, int) + * @see #toCharArray() + * @stable ICU 2.0 + */ + + //--public java.lang.String toString(){ + function toString() { + return this.layout().join(""); + } + + /** + * Returns the number as a BigInteger after removing the + * scale. + * That is, the number is expressed as a plain number, any decimal + * point is then removed (retaining the digits of any decimal part), + * and the result is then converted to a BigInteger. + * + * @return The java.math.BigInteger equal in value to + * this BigDecimal multiplied by ten to the + * power of this.scale(). + * @stable ICU 2.0 + */ + + //--public java.math.BigInteger unscaledValue(){ + //-- com.ibm.icu.math.BigDecimal res=null; + //-- if (exp>=0) + //-- res=this; + //-- else + //-- { + //-- res=clone(this); // safe copy + //-- res.exp=0; // drop scale + //-- } + //-- return res.toBigInteger(); + //-- } + + /** + * Translates a double to a BigDecimal. + *

      + * Returns a BigDecimal which is the decimal + * representation of the 64-bit signed binary floating point + * parameter. If the parameter is infinite, or is not a number (NaN), + * a NumberFormatException is thrown. + *

      + * The number is constructed as though num had been + * converted to a String using the + * Double.toString() method and the + * {@link #BigDecimal(java.lang.String)} constructor had then been used. + * This is typically not an exact conversion. + * + * @param dub The double to be translated. + * @return The BigDecimal equal in value to + * dub. + * @throws NumberFormatException if the parameter is infinite or + * not a number. + * @stable ICU 2.0 + */ + + //--public static com.ibm.icu.math.BigDecimal valueOf(double dub){ + //-- // Reminder: a zero double returns '0.0', so we cannot fastpath to + //-- // use the constant ZERO. This might be important enough to justify + //-- // a factory approach, a cache, or a few private constants, later. + //-- return new com.ibm.icu.math.BigDecimal((new java.lang.Double(dub)).toString()); + //-- } + + /** + * Translates a long to a BigDecimal. + * That is, returns a plain BigDecimal whose value is + * equal to the given long. + * + * @param lint The long to be translated. + * @return The BigDecimal equal in value to + * lint. + * @stable ICU 2.0 + */ + + //--public static com.ibm.icu.math.BigDecimal valueOf(long lint){ + //-- return valueOf(lint,0); + //-- } + + /** + * Translates a long to a BigDecimal with a + * given scale. + * That is, returns a plain BigDecimal whose unscaled + * value is equal to the given long, adjusted by the + * second parameter, scale. + *

      + * The result is given by: + *

      + * (new BigDecimal(lint)).divide(TEN.pow(new BigDecimal(scale))) + * + *

      + * A NumberFormatException is thrown if scale + * is negative. + * + * @param lint The long to be translated. + * @param scale The int scale to be applied. + * @return The BigDecimal equal in value to + * lint. + * @throws NumberFormatException if the scale is negative. + * @stable ICU 2.0 + */ + + //--public static com.ibm.icu.math.BigDecimal valueOf(long lint,int scale){ + //-- com.ibm.icu.math.BigDecimal res=null; + //-- {/*select*/ + //-- if (lint==0) + //-- res=ZERO; + //-- else if (lint==1) + //-- res=ONE; + //-- else if (lint==10) + //-- res=TEN; + //-- else{ + //-- res=new com.ibm.icu.math.BigDecimal(lint); + //-- } + //-- } + //-- if (scale==0) + //-- return res; + //-- if (scale<0) + //-- throw new java.lang.NumberFormatException("Negative scale:"+" "+scale); + //-- res=clone(res); // safe copy [do not mutate] + //-- res.exp=(int)-scale; // exponent is -scale + //-- return res; + //-- } + + /* ---------------------------------------------------------------- */ + /* Private methods */ + /* ---------------------------------------------------------------- */ + + /* Return char array value of a BigDecimal (conversion from + BigDecimal to laid-out canonical char array). +

      The mantissa will either already have been rounded (following an + operation) or will be of length appropriate (in the case of + construction from an int, for example). +

      We must not alter the mantissa, here. +

      'form' describes whether we are to use exponential notation (and + if so, which), or if we are to lay out as a plain/pure numeric. + */ + + //--private char[] layout(){ + function layout() { + //--char cmant[]; + var cmant; + //--int i=0; + var i=0; + //--java.lang.StringBuffer sb=null; + var sb=null; + //--int euse=0; + var euse=0; + //--int sig=0; + var sig=0; + //--char csign=0; + var csign=0; + //--char rec[]=null; + var rec=null; + //--int needsign; + var needsign; + //--int mag; + var mag; + //--int len=0; + var len=0; + cmant=new Array(this.mant.length); // copy byte[] to a char[] + {var $18=this.mant.length;i=0;i:for(;$18>0;$18--,i++){ + cmant[i]=this.mant[i]+''; + } + }/*i*/ + + if (this.form!=MathContext.prototype.PLAIN) + {/* exponential notation needed */ + //--sb=new java.lang.StringBuffer(cmant.length+15); // -x.xxxE+999999999 + sb=""; + if (this.ind==this.isneg) + sb += '-'; + euse=(this.exp+cmant.length)-1; // exponent to use + /* setup sig=significant digits and copy to result */ + if (this.form==MathContext.prototype.SCIENTIFIC) + { // [default] + sb += cmant[0]; // significant character + if (cmant.length>1) // have decimal part + //--sb.append('.').append(cmant,1,cmant.length-1); + sb += '.'; + sb += cmant.slice(1).join(""); + } + else + {engineering:do{ + sig=euse%3; // common + if (sig<0) + sig=3+sig; // negative exponent + euse=euse-sig; + sig++; + if (sig>=cmant.length) + { // zero padding may be needed + //--sb.append(cmant,0,cmant.length); + sb += cmant.join(""); + {var $19=sig-cmant.length;for(;$19>0;$19--){ + sb += '0'; + } + } + } + else + { // decimal point needed + //--sb.append(cmant,0,sig).append('.').append(cmant,sig,cmant.length-sig); + sb += cmant.slice(0,sig).join(""); + sb += '.'; + sb += cmant.slice(sig).join(""); + } + }while(false);}/*engineering*/ + if (euse!=0) + { + if (euse<0) + { + csign='-'; + euse=-euse; + } + else + csign='+'; + //--sb.append('E').append(csign).append(euse); + sb += 'E'; + sb += csign; + sb += euse; + } + //--rec=new Array(sb.length); + //--Utility.getChars(sb, 0,sb.length(),rec,0); + //--return rec; + return sb.split(""); + } + + /* Here for non-exponential (plain) notation */ + if (this.exp==0) + {/* easy */ + if (this.ind>=0) + return cmant; // non-negative integer + rec=new Array(cmant.length+1); + rec[0]='-'; + //--java.lang.System.arraycopy((java.lang.Object)cmant,0,(java.lang.Object)rec,1,cmant.length); + this.arraycopy(cmant,0,rec,1,cmant.length); + return rec; + } + + /* Need a '.' and/or some zeros */ + needsign=((this.ind==this.isneg)?1:0); // space for sign? 0 or 1 + + /* MAG is the position of the point in the mantissa (index of the + character it follows) */ + mag=this.exp+cmant.length; + + if (mag<1) + {/* 0.00xxxx form */ + len=(needsign+2)-this.exp; // needsign+2+(-mag)+cmant.length + rec=new Array(len); + if (needsign!=0) + rec[0]='-'; + rec[needsign]='0'; + rec[needsign+1]='.'; + {var $20=-mag;i=needsign+2;i:for(;$20>0;$20--,i++){ // maybe none + rec[i]='0'; + } + }/*i*/ + //--java.lang.System.arraycopy((java.lang.Object)cmant,0,(java.lang.Object)rec,(needsign+2)-mag,cmant.length); + this.arraycopy(cmant,0,rec,(needsign+2)-mag,cmant.length); + return rec; + } + + if (mag>cmant.length) + {/* xxxx0000 form */ + len=needsign+mag; + rec=new Array(len); + if (needsign!=0) + rec[0]='-'; + //--java.lang.System.arraycopy((java.lang.Object)cmant,0,(java.lang.Object)rec,needsign,cmant.length); + this.arraycopy(cmant,0,rec,needsign,cmant.length); + {var $21=mag-cmant.length;i=needsign+cmant.length;i:for(;$21>0;$21--,i++){ // never 0 + rec[i]='0'; + } + }/*i*/ + return rec; + } + + /* decimal point is in the middle of the mantissa */ + len=(needsign+1)+cmant.length; + rec=new Array(len); + if (needsign!=0) + rec[0]='-'; + //--java.lang.System.arraycopy((java.lang.Object)cmant,0,(java.lang.Object)rec,needsign,mag); + this.arraycopy(cmant,0,rec,needsign,mag); + rec[needsign+mag]='.'; + //--java.lang.System.arraycopy((java.lang.Object)cmant,mag,(java.lang.Object)rec,(needsign+mag)+1,cmant.length-mag); + this.arraycopy(cmant,mag,rec,(needsign+mag)+1,cmant.length-mag); + return rec; + } + + /* Checks a BigDecimal argument to ensure it's a true integer + in a given range. +

      If OK, returns it as an int. */ + // [currently only used by pow] + + //--private int intcheck(int min,int max){ + function intcheck(min, max) { + //--int i; + var i; + i=this.intValueExact(); // [checks for non-0 decimal part] + // Use same message as though intValueExact failed due to size + if ((imax)) + throw "intcheck(): Conversion overflow: "+i; + return i; + } + + /* Carry out division operations. */ + /* + Arg1 is operation code: D=divide, I=integer divide, R=remainder + Arg2 is the rhs. + Arg3 is the context. + Arg4 is explicit scale iff code='D' or 'I' (-1 if none). + + Underlying algorithm (complications for Remainder function and + scaled division are omitted for clarity): + + Test for x/0 and then 0/x + Exp =Exp1 - Exp2 + Exp =Exp +len(var1) -len(var2) + Sign=Sign1 * Sign2 + Pad accumulator (Var1) to double-length with 0's (pad1) + Pad Var2 to same length as Var1 + B2B=1st two digits of var2, +1 to allow for roundup + have=0 + Do until (have=digits+1 OR residue=0) + if exp<0 then if integer divide/residue then leave + this_digit=0 + Do forever + compare numbers + if <0 then leave inner_loop + if =0 then (- quick exit without subtract -) do + this_digit=this_digit+1; output this_digit + leave outer_loop; end + Compare lengths of numbers (mantissae): + If same then CA=first_digit_of_Var1 + else CA=first_two_digits_of_Var1 + mult=ca*10/b2b -- Good and safe guess at divisor + if mult=0 then mult=1 + this_digit=this_digit+mult + subtract + end inner_loop + if have\=0 | this_digit\=0 then do + output this_digit + have=have+1; end + var2=var2/10 + exp=exp-1 + end outer_loop + exp=exp+1 -- set the proper exponent + if have=0 then generate answer=0 + Return to FINISHED + Result defined by MATHV1 + + For extended commentary, see DMSRCN. + */ + + //--private com.ibm.icu.math.BigDecimal dodivide(char code,com.ibm.icu.math.BigDecimal rhs,com.ibm.icu.math.MathContext set,int scale){ + function dodivide(code, rhs, set, scale) { + //--com.ibm.icu.math.BigDecimal lhs; + var lhs; + //--int reqdig; + var reqdig; + //--int newexp; + var newexp; + //--com.ibm.icu.math.BigDecimal res; + var res; + //--int newlen; + var newlen; + //--byte var1[]; + var var1; + //--int var1len; + var var1len; + //--byte var2[]; + var var2; + //--int var2len; + var var2len; + //--int b2b; + var b2b; + //--int have; + var have; + //--int thisdigit=0; + var thisdigit=0; + //--int i=0; + var i=0; + //--byte v2=0; + var v2=0; + //--int ba=0; + var ba=0; + //--int mult=0; + var mult=0; + //--int start=0; + var start=0; + //--int padding=0; + var padding=0; + //--int d=0; + var d=0; + //--byte newvar1[]=null; + var newvar1=null; + //--byte lasthave=0; + var lasthave=0; + //--int actdig=0; + var actdig=0; + //--byte newmant[]=null; + var newmant=null; + + if (set.lostDigits) + this.checkdigits(rhs,set.digits); + lhs=this; // name for clarity + + // [note we must have checked lostDigits before the following checks] + if (rhs.ind==0) + throw "dodivide(): Divide by 0"; // includes 0/0 + if (lhs.ind==0) + { // 0/x => 0 [possibly with .0s] + if (set.form!=MathContext.prototype.PLAIN) + return this.ZERO; + if (scale==(-1)) + return lhs; + return lhs.setScale(scale); + } + + /* Prepare numbers according to BigDecimal rules */ + reqdig=set.digits; // local copy (heavily used) + if (reqdig>0) + { + if (lhs.mant.length>reqdig) + lhs=this.clone(lhs).round(set); + if (rhs.mant.length>reqdig) + rhs=this.clone(rhs).round(set); + } + else + {/* scaled divide */ + if (scale==(-1)) + scale=lhs.scale(); + // set reqdig to be at least large enough for the computation + reqdig=lhs.mant.length; // base length + // next line handles both positive lhs.exp and also scale mismatch + if (scale!=(-lhs.exp)) + reqdig=(reqdig+scale)+lhs.exp; + reqdig=(reqdig-((rhs.mant.length-1)))-rhs.exp; // reduce by RHS effect + if (reqdig1) + b2b=b2b+var2[1]; + + /* start the long-division loops */ + have=0; + {outer:for(;;){ + thisdigit=0; + /* find the next digit */ + {inner:for(;;){ + if (var1len0;$22--,i++){ + // var1len is always <= var1.length + if (iv2) + break compare; // OK to subtract + } + }/*i*/ + /* reach here if lhs and rhs are identical; subtraction will + increase digit by one, and the residue will be 0 so we + are done; leave the loop with residue set to 0 (in case + code is 'R' or ROUND_UNNECESSARY or a ROUND_HALF_xxxx is + being checked) */ + thisdigit++; + res.mant[have]=thisdigit; + have++; + var1[0]=0; // residue to 0 [this is all we'll test] + // var1len=1 -- [optimized out] + break outer; + }while(false);}/*compare*/ + /* prepare for subtraction. Estimate BA (lengths the same) */ + ba=var1[0]; // use only first digit + } // lengths the same + else + {/* lhs longer than rhs */ + /* use first two digits for estimate */ + ba=var1[0]*10; + if (var1len>1) + ba=ba+var1[1]; + } + /* subtraction needed; V1>=V2 */ + mult=div((ba*10),b2b); + if (mult==0) + mult=1; + thisdigit=thisdigit+mult; + // subtract; var1 reusable + var1=this.byteaddsub(var1,var1len,var2,var2len,-mult,true); + if (var1[0]!=0) + continue inner; // maybe another subtract needed + /* V1 now probably has leading zeros, remove leading 0's and try + again. (It could be longer than V2) */ + {var $23=var1len-2;start=0;start:for(;start<=$23;start++){ + if (var1[start]!=0) + break start; + var1len--; + } + }/*start*/ + if (start==0) + continue inner; + // shift left + //--java.lang.System.arraycopy((java.lang.Object)var1,start,(java.lang.Object)var1,0,var1len); + this.arraycopy(var1,start,var1,0,var1len); + } + }/*inner*/ + + /* We have the next digit */ + if ((have!=0)||(thisdigit!=0)) + { // put the digit we got + res.mant[have]=thisdigit; + have++; + if (have==(reqdig+1)) + break outer; // we have all we need + if (var1[0]==0) + break outer; // residue now 0 + } + /* can leave now if a scaled divide and exponent is small enough */ + if (scale>=0) + if ((-res.exp)>scale) + break outer; + /* can leave now if not Divide and no integer part left */ + if (code!='D') + if (res.exp<=0) + break outer; + res.exp=res.exp-1; // reduce the exponent + /* to get here, V1 is less than V2, so divide V2 by 10 and go for + the next digit */ + var2len--; + } + }/*outer*/ + + /* here when we have finished dividing, for some reason */ + // have is the number of digits we collected in res.mant + if (have==0) + have=1; // res.mant[0] is 0; we always want a digit + + if ((code=='I')||(code=='R')) + {/* check for integer overflow needed */ + if ((have+res.exp)>reqdig) + throw "dodivide(): Integer overflow"; + + if (code=='R') + {remainder:do{ + /* We were doing Remainder -- return the residue */ + if (res.mant[0]==0) // no integer part was found + return this.clone(lhs).finish(set,false); // .. so return lhs, canonical + if (var1[0]==0) + return this.ZERO; // simple 0 residue + res.ind=lhs.ind; // sign is always as LHS + /* Calculate the exponent by subtracting the number of padding zeros + we added and adding the original exponent */ + padding=((reqdig+reqdig)+1)-lhs.mant.length; + res.exp=(res.exp-padding)+lhs.exp; + + /* strip insignificant padding zeros from residue, and create/copy + the resulting mantissa if need be */ + d=var1len; + {i=d-1;i:for(;i>=1;i--){if(!((res.exp=0) + {scaled:do{ + // say 'scale have res.exp len' scale have res.exp res.mant.length + if (have!=res.mant.length) + // already padded with 0's, so just adjust exponent + res.exp=res.exp-((res.mant.length-have)); + // calculate number of digits we really want [may be 0] + actdig=res.mant.length-(((-res.exp)-scale)); + res.round(actdig,set.roundingMode); // round to desired length + // This could have shifted left if round (say) 0.9->1[.0] + // Repair if so by adding a zero and reducing exponent + if (res.exp!=(-scale)) + { + res.mant=this.extend(res.mant,res.mant.length+1); + res.exp=res.exp-1; + } + return res.finish(set,true); // [strip if not PLAIN] + }while(false);}/*scaled*/ + + // reach here only if a non-scaled + if (have==res.mant.length) + { // got digits+1 digits + res.round(set); + have=reqdig; + } + else + {/* have<=reqdig */ + if (res.mant[0]==0) + return this.ZERO; // fastpath + // make the mantissa truly just 'have' long + // [we could let finish do this, during strip, if we adjusted + // the exponent; however, truncation avoids the strip loop] + newmant=new Array(have); // shorten + //--java.lang.System.arraycopy((java.lang.Object)res.mant,0,(java.lang.Object)newmant,0,have); + this.arraycopy(res.mant,0,newmant,0,have); + res.mant=newmant; + } + return res.finish(set,true); + } + + /* Report a conversion exception. */ + + //--private void bad(char s[]){ + function bad(prefix, s) { + throw prefix + "Not a number: "+s; + } + + /* Report a bad argument to a method. + Arg1 is method name + Arg2 is argument position + Arg3 is what was found */ + + //--private void badarg(java.lang.String name,int pos,java.lang.String value){ + function badarg(name, pos, value) { + throw "Bad argument "+pos+" to "+name+": "+value; + } + + /* Extend byte array to given length, padding with 0s. If no + extension is required then return the same array. + + Arg1 is the source byte array + Arg2 is the new length (longer) + */ + + //--private static final byte[] extend(byte inarr[],int newlen){ + function extend(inarr, newlen) { + //--byte newarr[]; + var newarr; + if (inarr.length==newlen) + return inarr; + newarr=createArrayWithZeros(newlen); + //--java.lang.System.arraycopy((java.lang.Object)inarr,0,(java.lang.Object)newarr,0,inarr.length); + this.arraycopy(inarr,0,newarr,0,inarr.length); + // 0 padding is carried out by the JVM on allocation initialization + return newarr; + } + + /* Add or subtract two >=0 integers in byte arrays +

      This routine performs the calculation: +

      +    C=A+(B*M)
      +    
      + Where M is in the range -9 through +9 +

      + If M<0 then A>=B must be true, so the result is always + non-negative. + + Leading zeros are not removed after a subtraction. The result is + either the same length as the longer of A and B, or 1 longer than + that (if a carry occurred). + + A is not altered unless Arg6 is 1. + B is never altered. + + Arg1 is A + Arg2 is A length to use (if longer than A, pad with 0's) + Arg3 is B + Arg4 is B length to use (if longer than B, pad with 0's) + Arg5 is M, the multiplier + Arg6 is 1 if A can be used to build the result (if it fits) + + This routine is severely performance-critical; *any* change here + must be measured (timed) to assure no performance degradation. + */ + // 1996.02.20 -- enhanced version of DMSRCN algorithm (1981) + // 1997.10.05 -- changed to byte arrays (from char arrays) + // 1998.07.01 -- changed to allow destructive reuse of LHS + // 1998.07.01 -- changed to allow virtual lengths for the arrays + // 1998.12.29 -- use lookaside for digit/carry calculation + // 1999.08.07 -- avoid multiply when mult=1, and make db an int + // 1999.12.22 -- special case m=-1, also drop 0 special case + + //--private static final byte[] byteaddsub(byte a[],int avlen,byte b[],int bvlen,int m,boolean reuse){ + function byteaddsub(a, avlen, b, bvlen, m, reuse) { + //--int alength; + var alength; + //--int blength; + var blength; + //--int ap; + var ap; + //--int bp; + var bp; + //--int maxarr; + var maxarr; + //--byte reb[]; + var reb; + //--boolean quickm; + var quickm; + //--int digit; + var digit; + //--int op=0; + var op=0; + //--int dp90=0; + var dp90=0; + //--byte newarr[]; + var newarr; + //--int i=0; + var i=0; + + + + + // We'll usually be right if we assume no carry + alength=a.length; // physical lengths + blength=b.length; // .. + ap=avlen-1; // -> final (rightmost) digit + bp=bvlen-1; // .. + maxarr=bp; + if (maxarr=0;op--){ + if (ap>=0) + { + if (ap=0) + { + if (bp0) + digit=digit+b[bp]; // most common + else + digit=digit-b[bp]; // also common + } + else + digit=digit+(b[bp]*m); + } + bp--; + } + /* result so far (digit) could be -90 through 99 */ + if (digit<10) + if (digit>=0) + {quick:do{ // 0-9 + reb[op]=digit; + digit=0; // no carry + continue op; + }while(false);}/*quick*/ + dp90=digit+90; + reb[op]=this.bytedig[dp90]; // this digit + digit=this.bytecar[dp90]; // carry or borrow + } + }/*op*/ + + if (digit==0) + return reb; // no carry + // following line will become an Assert, later + // if digit<0 then signal ArithmeticException("internal.error ["digit"]") + + /* We have carry -- need to make space for the extra digit */ + newarr=null; + if (reuse) + if ((maxarr+2)==a.length) + newarr=a; // OK to reuse A + if (newarr==null) + newarr=new Array(maxarr+2); + newarr[0]=digit; // the carried digit .. + // .. and all the rest [use local loop for short numbers] + //--if (maxarr<10) + {var $24=maxarr+1;i=0;i:for(;$24>0;$24--,i++){ + newarr[i+1]=reb[i]; + } + }/*i*/ + //--else + //--java.lang.System.arraycopy((java.lang.Object)reb,0,(java.lang.Object)newarr,1,maxarr+1); + return newarr; + } + + /* Initializer for digit array properties (lookaside). + Returns the digit array, and initializes the carry array. */ + + //--private static final byte[] diginit(){ + function diginit() { + //--byte work[]; + var work; + //--int op=0; + var op=0; + //--int digit=0; + var digit=0; + work=new Array((90+99)+1); + {op=0;op:for(;op<=(90+99);op++){ + digit=op-90; + if (digit>=0) + { + work[op]=(digit%10); + BigDecimal.prototype.bytecar[op]=(div(digit,10)); // calculate carry + continue op; + } + // borrowing... + digit=digit+100; // yes, this is right [consider -50] + work[op]=(digit%10); + BigDecimal.prototype.bytecar[op]=((div(digit,10))-10); // calculate borrow [NB: - after %] + } + }/*op*/ + return work; + } + + /* Create a copy of BigDecimal object for local use. +

      This does NOT make a copy of the mantissa array. + + Arg1 is the BigDecimal to clone (non-null) + */ + + //--private static final com.ibm.icu.math.BigDecimal clone(com.ibm.icu.math.BigDecimal dec){ + function clone(dec) { + //--com.ibm.icu.math.BigDecimal copy; + var copy; + copy=new BigDecimal(); + copy.ind=dec.ind; + copy.exp=dec.exp; + copy.form=dec.form; + copy.mant=dec.mant; + return copy; + } + + /* Check one or two numbers for lost digits. + Arg1 is RHS (or null, if none) + Arg2 is current DIGITS setting + returns quietly or throws an exception */ + + //--private void checkdigits(com.ibm.icu.math.BigDecimal rhs,int dig){ + function checkdigits(rhs, dig) { + if (dig==0) + return; // don't check if digits=0 + // first check lhs... + if (this.mant.length>dig) + if ((!(this.allzero(this.mant,dig)))) + throw "Too many digits: "+this.toString(); + if (rhs==null) + return; // monadic + if (rhs.mant.length>dig) + if ((!(this.allzero(rhs.mant,dig)))) + throw "Too many digits: "+rhs.toString(); + return; + } + + /* Round to specified digits, if necessary. + Arg1 is requested MathContext [with length and rounding mode] + returns this, for convenience */ + + //--private com.ibm.icu.math.BigDecimal round(com.ibm.icu.math.MathContext set){ + //-- return round(set.digits,set.roundingMode); + //-- } + + /* Round to specified digits, if necessary. + Arg1 is requested length (digits to round to) + [may be <=0 when called from format, dodivide, etc.] + Arg2 is rounding mode + returns this, for convenience + + ind and exp are adjusted, but not cleared for a mantissa of zero + + The length of the mantissa returned will be Arg1, except when Arg1 + is 0, in which case the returned mantissa length will be 1. + + */ + + //private com.ibm.icu.math.BigDecimal round(int len,int mode){ + function round() { + var len; + var mode; + if (round.arguments.length == 2) + { + len = round.arguments[0]; + mode = round.arguments[1]; + } + else if (round.arguments.length == 1) + { + var set = round.arguments[0]; + len = set.digits; + mode = set.roundingMode; + } + else + { + throw "round(): " + round.arguments.length + " arguments given; expected 1 or 2"; + } + //int adjust; + var adjust; + //int sign; + var sign; + //byte oldmant[]; + var oldmant; + //boolean reuse=false; + var reuse=false; + //--byte first=0; + var first=0; + //--int increment; + var increment; + //--byte newmant[]=null; + var newmant=null; + adjust=this.mant.length-len; + if (adjust<=0) + return this; // nowt to do + + this.exp=this.exp+adjust; // exponent of result + sign=this.ind; // save [assumes -1, 0, 1] + oldmant=this.mant; // save + if (len>0) + { + // remove the unwanted digits + this.mant=new Array(len); + //--java.lang.System.arraycopy((java.lang.Object)oldmant,0,(java.lang.Object)mant,0,len); + this.arraycopy(oldmant,0,this.mant,0,len); + reuse=true; // can reuse mantissa + first=oldmant[len]; // first of discarded digits + } + else + {/* len<=0 */ + this.mant=this.ZERO.mant; + this.ind=this.iszero; + reuse=false; // cannot reuse mantissa + if (len==0) + first=oldmant[0]; + else + first=0; // [virtual digit] + } + + // decide rounding adjustment depending on mode, sign, and discarded digits + increment=0; // bumper + {modes:do{/*select*/ + if (mode==this.ROUND_HALF_UP) + { // default first [most common] + if (first>=5) + increment=sign; + } + else if (mode==this.ROUND_UNNECESSARY) + { // default for setScale() + // discarding any non-zero digits is an error + if ((!(this.allzero(oldmant,len)))) + throw "round(): Rounding necessary"; + } + else if (mode==this.ROUND_HALF_DOWN) + { // 0.5000 goes down + if (first>5) + increment=sign; + else + if (first==5) + if ((!(this.allzero(oldmant,len+1)))) + increment=sign; + } + else if (mode==this.ROUND_HALF_EVEN) + { // 0.5000 goes down if left digit even + if (first>5) + increment=sign; + else + if (first==5) + { + if ((!(this.allzero(oldmant,len+1)))) + increment=sign; + else /* 0.5000 */ + if ((((this.mant[this.mant.length-1])%2))==1) + increment=sign; + } + } + else if (mode==this.ROUND_DOWN) + {} // never increment + else if (mode==this.ROUND_UP) + { // increment if discarded non-zero + if ((!(this.allzero(oldmant,len)))) + increment=sign; + } + else if (mode==this.ROUND_CEILING) + { // more positive + if (sign>0) + if ((!(this.allzero(oldmant,len)))) + increment=sign; + } + else if (mode==this.ROUND_FLOOR) + { // more negative + if (sign<0) + if ((!(this.allzero(oldmant,len)))) + increment=sign; + } + else{ + throw "round(): Bad round value: "+mode; + } + }while(false);}/*modes*/ + + if (increment!=0) + {bump:do{ + if (this.ind==this.iszero) + { + // we must not subtract from 0, but result is trivial anyway + this.mant=this.ONE.mant; + this.ind=increment; + } + else + { + // mantissa is non-0; we can safely add or subtract 1 + if (this.ind==this.isneg) + increment=-increment; + newmant=this.byteaddsub(this.mant,this.mant.length,this.ONE.mant,1,increment,reuse); + if (newmant.length>this.mant.length) + { // had a carry + // drop rightmost digit and raise exponent + this.exp++; + // mant is already the correct length + //java.lang.System.arraycopy((java.lang.Object)newmant,0,(java.lang.Object)mant,0,mant.length); + this.arraycopy(newmant,0,this.mant,0,this.mant.length); + } + else + this.mant=newmant; + } + }while(false);}/*bump*/ + // rounding can increase exponent significantly + if (this.exp>this.MaxExp) + throw "round(): Exponent Overflow: "+this.exp; + return this; + } + + /* Test if rightmost digits are all 0. + Arg1 is a mantissa array to test + Arg2 is the offset of first digit to check + [may be negative; if so, digits to left are 0's] + returns 1 if all the digits starting at Arg2 are 0 + + Arg2 may be beyond array bounds, in which case 1 is returned + */ + + //--private static final boolean allzero(byte array[],int start){ + function allzero(array, start) { + //--int i=0; + var i=0; + if (start<0) + start=0; + {var $25=array.length-1;i=start;i:for(;i<=$25;i++){ + if (array[i]!=0) + return false; + } + }/*i*/ + return true; + } + + /* Carry out final checks and canonicalization +

      + This finishes off the current number by: + 1. Rounding if necessary (NB: length includes leading zeros) + 2. Stripping trailing zeros (if requested and \PLAIN) + 3. Stripping leading zeros (always) + 4. Selecting exponential notation (if required) + 5. Converting a zero result to just '0' (if \PLAIN) + In practice, these operations overlap and share code. + It always sets form. + + Arg1 is requested MathContext (length to round to, trigger, and FORM) + Arg2 is 1 if trailing insignificant zeros should be removed after + round (for division, etc.), provided that set.form isn't PLAIN. + returns this, for convenience + */ + + //--private com.ibm.icu.math.BigDecimal finish(com.ibm.icu.math.MathContext set,boolean strip){ + function finish(set, strip) { + //--int d=0; + var d=0; + //--int i=0; + var i=0; + //--byte newmant[]=null; + var newmant=null; + //--int mag=0; + var mag=0; + //--int sig=0; + var sig=0; + /* Round if mantissa too long and digits requested */ + if (set.digits!=0) + if (this.mant.length>set.digits) + this.round(set); + + /* If strip requested (and standard formatting), remove + insignificant trailing zeros. */ + if (strip) + if (set.form!=MathContext.prototype.PLAIN) + { + d=this.mant.length; + /* see if we need to drop any trailing zeros */ + {i=d-1;i:for(;i>=1;i--){ + if (this.mant[i]!=0) + break i; + d--; + this.exp++; + } + }/*i*/ + if (d0;$26--,i++){ + if (this.mant[i]!=0) + { + // non-0 result; ind will be correct + // remove leading zeros [e.g., after subtract] + if (i>0) + {delead:do{ + newmant=new Array(this.mant.length-i); + //--java.lang.System.arraycopy((java.lang.Object)this.mant,i,(java.lang.Object)newmant,0,this.mant.length-i); + this.arraycopy(this.mant,i,newmant,0,this.mant.length-i); + this.mant=newmant; + }while(false);}/*delead*/ + // now determine form if not PLAIN + mag=this.exp+this.mant.length; + if (mag>0) + { // most common path + if (mag>set.digits) + if (set.digits!=0) + this.form=set.form; + if ((mag-1)<=this.MaxExp) + return this; // no overflow; quick return + } + else + if (mag<(-5)) + this.form=set.form; + /* check for overflow */ + mag--; + if ((magthis.MaxExp)) + {overflow:do{ + // possible reprieve if form is engineering + if (this.form==MathContext.prototype.ENGINEERING) + { + sig=mag%3; // leftover + if (sig<0) + sig=3+sig; // negative exponent + mag=mag-sig; // exponent to use + // 1999.06.29: second test here must be MaxExp + if (mag>=this.MinExp) + if (mag<=this.MaxExp) + break overflow; + } + throw "finish(): Exponent Overflow: "+mag; + }while(false);}/*overflow*/ + return this; + } + } + }/*i*/ + + // Drop through to here only if mantissa is all zeros + this.ind=this.iszero; + {/*select*/ + if (set.form!=MathContext.prototype.PLAIN) + this.exp=0; // standard result; go to '0' + else if (this.exp>0) + this.exp=0; // +ve exponent also goes to '0' + else{ + // a plain number with -ve exponent; preserve and check exponent + if (this.exp 0; + }; + function isLessThan(other) { + return this.compareTo(other) < 0; + }; + function isGreaterThanOrEqualTo(other) { + return this.compareTo(other) >= 0; + }; + function isLessThanOrEqualTo(other) { + return this.compareTo(other) <= 0; + }; + function isPositive() { + return this.compareTo(BigDecimal.prototype.ZERO) > 0; + }; + function isNegative() { + return this.compareTo(BigDecimal.prototype.ZERO) < 0; + }; + function isZero() { + return this.equals(BigDecimal.prototype.ZERO); + }; +return BigDecimal; +})(MathContext); // BigDecimal depends on MathContext + +if (typeof define === "function" && define.amd != null) { + // AMD-loader compatible resource declaration + // require('bigdecimal') will return JS Object: + // {'BigDecimal':BigDecimalPointer, 'MathContext':MathContextPointer} + define({'BigDecimal':BigDecimal, 'MathContext':MathContext}); +} else if (typeof this === "object"){ + // global-polluting outcome. + this.BigDecimal = BigDecimal; + this.MathContext = MathContext; +} + +}).call(this); // in browser 'this' will be 'window' or simulated window object in AMD-loading scenarios. diff --git a/node_modules/mysql/node_modules/bignumber.js/perf/lib/bigdecimal_ICU4J/BigDecimal-all-last.min.js b/node_modules/mysql/node_modules/bignumber.js/perf/lib/bigdecimal_ICU4J/BigDecimal-all-last.min.js new file mode 100644 index 0000000..78bbf7e --- /dev/null +++ b/node_modules/mysql/node_modules/bignumber.js/perf/lib/bigdecimal_ICU4J/BigDecimal-all-last.min.js @@ -0,0 +1,61 @@ +/* + Copyright (c) 2012 Daniel Trebbien and other contributors +Portions Copyright (c) 2003 STZ-IDA and PTV AG, Karlsruhe, Germany +Portions Copyright (c) 1995-2001 International Business Machines Corporation and others + +All rights reserved. + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, provided that the above copyright notice(s) and this permission notice appear in all copies of the Software and that both the above copyright notice(s) and this permission notice appear in supporting documentation. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + +Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Software without prior written authorization of the copyright holder. +*/ +(function(){var m,k=function(){this.form=this.digits=0;this.lostDigits=!1;this.roundingMode=0;var a=this.DEFAULT_FORM,b=this.DEFAULT_LOSTDIGITS,c=this.DEFAULT_ROUNDINGMODE;if(4==k.arguments.length)a=k.arguments[1],b=k.arguments[2],c=k.arguments[3];else if(3==k.arguments.length)a=k.arguments[1],b=k.arguments[2];else if(2==k.arguments.length)a=k.arguments[1];else if(1!=k.arguments.length)throw"MathContext(): "+k.arguments.length+" arguments given; expected 1 to 4";var d=k.arguments[0];if(d!=this.DEFAULT_DIGITS){if(d< +this.MIN_DIGITS)throw"MathContext(): Digits too small: "+d;if(d>this.MAX_DIGITS)throw"MathContext(): Digits too large: "+d;}if(a!=this.SCIENTIFIC&&a!=this.ENGINEERING&&a!=this.PLAIN)throw"MathContext() Bad form value: "+a;if(!this.isValidRound(c))throw"MathContext(): Bad roundingMode value: "+c;this.digits=d;this.form=a;this.lostDigits=b;this.roundingMode=c};k.prototype.getDigits=function(){return this.digits};k.prototype.getForm=function(){return this.form};k.prototype.getLostDigits=function(){return this.lostDigits}; +k.prototype.getRoundingMode=function(){return this.roundingMode};k.prototype.toString=function(){var a=null,b=0,c=null,a=this.form==this.SCIENTIFIC?"SCIENTIFIC":this.form==this.ENGINEERING?"ENGINEERING":"PLAIN",d=this.ROUNDS.length,b=0;a:for(;0=c&&this.bad("BigDecimal(): ",a);this.ind=this.ispos;"-"==a[0]?(c--,0==c&&this.bad("BigDecimal(): ",a),this.ind=this.isneg,b++):"+"==a[0]&&(c--,0==c&&this.bad("BigDecimal(): ",a),b++);e=d=!1;i=0;g=f=-1;k=c;j=b;a:for(;0=l){g=j;i++;continue a}if("."==l){0<=f&&this.bad("BigDecimal(): ",a);f=j-b;continue a}if("e"!=l&&"E"!=l){("0">l||"9"c-2&&this.bad("BigDecimal(): ", +a);e=!1;"-"==a[j+1]?(e=!0,j+=2):j="+"==a[j+1]?j+2:j+1;l=c-(j-b);(0==l||9k&&this.bad("BigDecimal(): ",a),"9"=k?this.mant[j]=k-0:this.bad("BigDecimal(): ",a),l++}else{b=i;j=0;for(;0this.MaxExp)&&this.bad("BigDecimal(): ",a))}},H=function(){var a;if(1==H.arguments.length)a=H.arguments[0];else if(0==H.arguments.length)a=this.plainMC;else throw"abs(): "+H.arguments.length+ +" arguments given; expected 0 or 1";return this.ind==this.isneg?this.negate(a):this.plus(a)},w=function(){var a;if(2==w.arguments.length)a=w.arguments[1];else if(1==w.arguments.length)a=this.plainMC;else throw"add(): "+w.arguments.length+" arguments given; expected 1 or 2";var b=w.arguments[0],c,d,e,i,f,g,j,l=0;d=l=0;var l=null,k=l=0,q=0,t=0,s=0,n=0;a.lostDigits&&this.checkdigits(b,a.digits);c=this;if(0==c.ind&&a.form!=m.prototype.PLAIN)return b.plus(a);if(0==b.ind&&a.form!=m.prototype.PLAIN)return c.plus(a); +d=a.digits;0d&&(c=this.clone(c).round(a)),b.mant.length>d&&(b=this.clone(b).round(a)));e=new h;i=c.mant;f=c.mant.length;g=b.mant;j=b.mant.length;if(c.exp==b.exp)e.exp=c.exp;else if(c.exp>b.exp){l=f+c.exp-b.exp;if(l>=j+d+1&&0d+1&&0f&&(f=l)}else{l=j+b.exp-c.exp;if(l>=f+d+1&&0d+1&&0j&&(j=l)}e.ind=c.ind==this.iszero?this.ispos:c.ind;if((c.ind==this.isneg?1:0)==(b.ind==this.isneg?1:0))d=1;else{do{d=-1;do if(b.ind!=this.iszero)if(fj)){k=l=0;q=i.length-1;t=g.length-1;c:for(;;){if(l<=q)s=i[l];else{if(k>t){if(a.form!=m.prototype.PLAIN)return this.ZERO;break c}s=0}n=k<=t?g[k]:0;if(s!=n){sb.mant.length)return this.ind; +if(c<=a.digits||0==a.digits){a=c;c=0;for(;0b.mant[c])return this.ind}return 0}}else{if(this.indb.ind)return 1}b=this.clone(b);b.ind=-b.ind;return this.add(b,a).ind},p=function(){var a,b=-1;if(2==p.arguments.length)a="number"==typeof p.arguments[1]?new m(0,m.prototype.PLAIN,!1,p.arguments[1]):p.arguments[1];else if(3==p.arguments.length){b=p.arguments[1];if(0>b)throw"divide(): Negative scale: "+b;a=new m(0, +m.prototype.PLAIN,!1,p.arguments[2])}else if(1==p.arguments.length)a=this.plainMC;else throw"divide(): "+p.arguments.length+" arguments given; expected between 1 and 3";return this.dodivide("D",p.arguments[0],a,b)},y=function(){var a;if(2==y.arguments.length)a=y.arguments[1];else if(1==y.arguments.length)a=this.plainMC;else throw"divideInteger(): "+y.arguments.length+" arguments given; expected 1 or 2";return this.dodivide("I",y.arguments[0],a,0)},z=function(){var a;if(2==z.arguments.length)a=z.arguments[1]; +else if(1==z.arguments.length)a=this.plainMC;else throw"max(): "+z.arguments.length+" arguments given; expected 1 or 2";var b=z.arguments[0];return 0<=this.compareTo(b,a)?this.plus(a):b.plus(a)},A=function(){var a;if(2==A.arguments.length)a=A.arguments[1];else if(1==A.arguments.length)a=this.plainMC;else throw"min(): "+A.arguments.length+" arguments given; expected 1 or 2";var b=A.arguments[0];return 0>=this.compareTo(b,a)?this.plus(a):b.plus(a)},B=function(){var a;if(2==B.arguments.length)a=B.arguments[1]; +else if(1==B.arguments.length)a=this.plainMC;else throw"multiply(): "+B.arguments.length+" arguments given; expected 1 or 2";var b=B.arguments[0],c,d,e,i=e=null,f,g=0,j,l=0,k=0;a.lostDigits&&this.checkdigits(b,a.digits);c=this;d=0;e=a.digits;0e&&(c=this.clone(c).round(a)),b.mant.length>e&&(b=this.clone(b).round(a))):(0e)throw"pow(): Too many digits: "+b.toString();d.mant.length>e&&(d=this.clone(d).round(a));i=b.mant.length+b.exp;e=e+i+1}e=new m(e,a.form,!1,a.roundingMode);i=this.ONE;if(0==c)return i;0>c&&(c=-c);f=!1; +g=1;a:for(;;g++){c<<=1;0>c&&(f=!0,i=i.multiply(d,e));if(31==g)break a;if(!f)continue a;i=i.multiply(i,e)}0>b.ind&&(i=this.ONE.divide(i,e));return i.finish(a,!0)},D=function(){var a;if(2==D.arguments.length)a=D.arguments[1];else if(1==D.arguments.length)a=this.plainMC;else throw"remainder(): "+D.arguments.length+" arguments given; expected 1 or 2";return this.dodivide("R",D.arguments[0],a,-1)},E=function(){var a;if(2==E.arguments.length)a=E.arguments[1];else if(1==E.arguments.length)a=this.plainMC; +else throw"subtract(): "+E.arguments.length+" arguments given; expected 1 or 2";var b=E.arguments[0];a.lostDigits&&this.checkdigits(b,a.digits);b=this.clone(b);b.ind=-b.ind;return this.add(b,a)},r=function(){var a,b,c,d;if(6==r.arguments.length)a=r.arguments[2],b=r.arguments[3],c=r.arguments[4],d=r.arguments[5];else if(2==r.arguments.length)b=a=-1,c=m.prototype.SCIENTIFIC,d=this.ROUND_HALF_UP;else throw"format(): "+r.arguments.length+" arguments given; expected 2 or 6";var e=r.arguments[0],i=r.arguments[1], +f,g=0,g=g=0,j=null,l=j=g=0;f=0;g=null;l=j=0;(-1>e||0==e)&&this.badarg("format",1,e);-1>i&&this.badarg("format",2,i);(-1>a||0==a)&&this.badarg("format",3,a);-1>b&&this.badarg("format",4,b);c!=m.prototype.SCIENTIFIC&&c!=m.prototype.ENGINEERING&&(-1==c?c=m.prototype.SCIENTIFIC:this.badarg("format",5,c));if(d!=this.ROUND_HALF_UP)try{-1==d?d=this.ROUND_HALF_UP:new m(9,m.prototype.SCIENTIFIC,!1,d)}catch(h){this.badarg("format",6,d)}f=this.clone(this);-1==b?f.form=m.prototype.PLAIN:f.ind==this.iszero?f.form= +m.prototype.PLAIN:(g=f.exp+f.mant.length,f.form=g>b?c:-5>g?c:m.prototype.PLAIN);if(0<=i)a:for(;;){f.form==m.prototype.PLAIN?g=-f.exp:f.form==m.prototype.SCIENTIFIC?g=f.mant.length-1:(g=(f.exp+f.mant.length-1)%3,0>g&&(g=3+g),g++,g=g>=f.mant.length?0:f.mant.length-g);if(g==i)break a;if(gf.mant.length){f.mant=this.ZERO.mant;f.ind=this.iszero;f.exp=0;continue a}j= +f.mant.length-g;l=f.exp;f.round(j,d);if(f.exp-l==g)break a}b=f.layout();if(0e&&this.badarg("format",1,e);if(fa&& +this.badarg("format",3,a),lb)throw"setScale(): Negative scale: "+b;c=d.mant.length-(c-b);d=d.round(c,a);d.exp!=-b&&(d.mant=this.extend(d.mant,d.mant.length+1),d.exp-=1)}d.form=m.prototype.PLAIN;return d};v=function(){var a,b=0,c=0;a=Array(190);b=0;a:for(;189>=b;b++){c=b-90;if(0<=c){a[b]=c%10;h.prototype.bytecar[b]=G(c,10);continue a}c+=100;a[b]=c%10;h.prototype.bytecar[b]=G(c,10)-10}return a};var u=function(){var a,b;if(2==u.arguments.length)a=u.arguments[0],b=u.arguments[1]; +else if(1==u.arguments.length)b=u.arguments[0],a=b.digits,b=b.roundingMode;else throw"round(): "+u.arguments.length+" arguments given; expected 1 or 2";var c,d,e=!1,i=0,f;c=null;c=this.mant.length-a;if(0>=c)return this;this.exp+=c;c=this.ind;d=this.mant;0c&&(this.allzero(d,a)||(f=c));else throw"round(): Bad round value: "+b;0!=f&&(this.ind==this.iszero?(this.mant=this.ONE.mant,this.ind=f):(this.ind== +this.isneg&&(f=-f),c=this.byteaddsub(this.mant,this.mant.length,this.ONE.mant,1,f,e),c.length>this.mant.length?(this.exp++,this.arraycopy(c,0,this.mant,0,this.mant.length)):this.mant=c));if(this.exp>this.MaxExp)throw"round(): Exponent Overflow: "+this.exp;return this};h.prototype.div=G;h.prototype.arraycopy=function(a,b,c,d,e){var i;if(d>b)for(i=e-1;0<=i;--i)c[i+d]=a[i+b];else for(i=0;ithis.exp){a+=this.exp;if(!this.allzero(this.mant,a+1))throw"intValueExact(): Decimal part non-zero: "+this.toString();if(0>a)return 0;b=0}else{if(9d&&(d=3+d), +c-=d,d++,d>=a.length){b+=a.join("");for(a=d-a.length;0c?(a="-",c=-c):a="+",b+="E",b+=a,b+=c);return b.split("")}if(0==this.exp){if(0<=this.ind)return a;d=Array(a.length+1);d[0]="-";this.arraycopy(a,0,d,1,a.length);return d}c=this.ind==this.isneg?1:0;e=this.exp+a.length;if(1>e){b=c+2-this.exp;d=Array(b);0!=c&&(d[0]="-");d[c]="0";d[c+1]=".";var i=-e,b=c+2;for(;0 +a.length){d=Array(c+e);0!=c&&(d[0]="-");this.arraycopy(a,0,d,c,a.length);e-=a.length;b=c+a.length;for(;0b)throw"intcheck(): Conversion overflow: "+c;return c};h.prototype.dodivide=function(a,b,c,d){var e,i,f,g,j,l,k,q,t,s=0,n=0,p=0;i=i=n=n=n=0;e=null;e=e=0;e=null;c.lostDigits&& +this.checkdigits(b,c.digits);e=this;if(0==b.ind)throw"dodivide(): Divide by 0";if(0==e.ind)return c.form!=m.prototype.PLAIN?this.ZERO:-1==d?e:e.setScale(d);i=c.digits;0i&&(e=this.clone(e).round(c)),b.mant.length>i&&(b=this.clone(b).round(c))):(-1==d&&(d=e.scale()),i=e.mant.length,d!=-e.exp&&(i=i+d+e.exp),i=i-(b.mant.length-1)-b.exp,if&&"D"!=a)return"I"==a?this.ZERO: +this.clone(e).finish(c,!1);g=new h;g.ind=e.ind*b.ind;g.exp=f;g.mant=this.createArrayWithZeros(i+1);j=i+i+1;f=this.extend(e.mant,j);l=j;k=b.mant;q=j;t=10*k[0]+1;1p)break c}s++;g.mant[j]=s;j++;f[0]=0;break a}while(0);n=f[0]}else n=10*f[0],1d)break a;if("D"!=a&&0>=g.exp)break a;g.exp-=1;q--}0==j&&(j=1);if("I"==a||"R"==a){if(j+g.exp>i)throw"dodivide(): Integer overflow";if("R"==a){do{if(0==g.mant[0])return this.clone(e).finish(c,!1);if(0==f[0])return this.ZERO;g.ind=e.ind;i=i+i+1-e.mant.length;g.exp=g.exp-i+e.exp;i=l;n=i-1;b:for(;1<=n&&g.expm&&0<=m){do{d[p]=m;m=0;continue a}while(0)}m+=90;d[p]=this.bytedig[m];m=this.bytecar[m]}if(0==m)return d;c=null;i&&h+2==a.length&&(c=a);null==c&&(c=Array(h+2));c[0]=m;a=h+1;f=0;for(;0b&&!this.allzero(this.mant,b))throw"Too many digits: "+ +this.toString();if(null!=a&&a.mant.length>b&&!this.allzero(a.mant,b))throw"Too many digits: "+a.toString();}};h.prototype.round=u;h.prototype.allzero=function(a,b){var c=0;0>b&&(b=0);var d=a.length-1,c=b;for(;c<=d;c++)if(0!=a[c])return!1;return!0};h.prototype.finish=function(a,b){var c=0,d=0,e=null,c=d=0;0!=a.digits&&this.mant.length>a.digits&&this.round(a);if(b&&a.form!=m.prototype.PLAIN){c=this.mant.length;d=c-1;a:for(;1<=d;d--){if(0!=this.mant[d])break a;c--;this.exp++}ca.digits&&0!=a.digits&&(this.form=a.form),d-1<=this.MaxExp)return this}else-5>d&&(this.form=a.form);d--;if(dthis.MaxExp){b:do{if(this.form==m.prototype.ENGINEERING&&(c=d%3,0>c&&(c=3+c),d-=c,d>=this.MinExp&&d<=this.MaxExp))break b; +throw"finish(): Exponent Overflow: "+d;}while(0)}return this}this.ind=this.iszero;if(a.form!=m.prototype.PLAIN)this.exp=0;else if(0this.compareTo(a)};h.prototype.isGreaterThanOrEqualTo=function(a){return 0<=this.compareTo(a)};h.prototype.isLessThanOrEqualTo= +function(a){return 0>=this.compareTo(a)};h.prototype.isPositive=function(){return 0this.compareTo(h.prototype.ZERO)};h.prototype.isZero=function(){return this.equals(h.prototype.ZERO)};h.ROUND_CEILING=h.prototype.ROUND_CEILING=m.prototype.ROUND_CEILING;h.ROUND_DOWN=h.prototype.ROUND_DOWN=m.prototype.ROUND_DOWN;h.ROUND_FLOOR=h.prototype.ROUND_FLOOR=m.prototype.ROUND_FLOOR;h.ROUND_HALF_DOWN=h.prototype.ROUND_HALF_DOWN=m.prototype.ROUND_HALF_DOWN; +h.ROUND_HALF_EVEN=h.prototype.ROUND_HALF_EVEN=m.prototype.ROUND_HALF_EVEN;h.ROUND_HALF_UP=h.prototype.ROUND_HALF_UP=m.prototype.ROUND_HALF_UP;h.ROUND_UNNECESSARY=h.prototype.ROUND_UNNECESSARY=m.prototype.ROUND_UNNECESSARY;h.ROUND_UP=h.prototype.ROUND_UP=m.prototype.ROUND_UP;h.prototype.ispos=1;h.prototype.iszero=0;h.prototype.isneg=-1;h.prototype.MinExp=-999999999;h.prototype.MaxExp=999999999;h.prototype.MinArg=-999999999;h.prototype.MaxArg=999999999;h.prototype.plainMC=new m(0,m.prototype.PLAIN); +h.prototype.bytecar=Array(190);h.prototype.bytedig=v();h.ZERO=h.prototype.ZERO=new h("0");h.ONE=h.prototype.ONE=new h("1");h.TEN=h.prototype.TEN=new h("10");v=h;"function"===typeof define&&null!=define.amd?define({BigDecimal:v,MathContext:m}):"object"===typeof this&&(this.BigDecimal=v,this.MathContext=m)}).call(this); diff --git a/node_modules/mysql/node_modules/bignumber.js/perf/lib/bigdecimal_ICU4J/LICENCE.txt b/node_modules/mysql/node_modules/bignumber.js/perf/lib/bigdecimal_ICU4J/LICENCE.txt new file mode 100644 index 0000000..ca1ad2e --- /dev/null +++ b/node_modules/mysql/node_modules/bignumber.js/perf/lib/bigdecimal_ICU4J/LICENCE.txt @@ -0,0 +1,30 @@ +Copyright (c) 2012 Daniel Trebbien and other contributors +Portions Copyright (c) 2003 STZ-IDA and PTV AG, Karlsruhe, Germany +Portions Copyright (c) 1995-2001 International Business Machines Corporation and others + +All rights reserved. + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, provided that the above copyright notice(s) and this permission notice appear in all copies of the Software and that both the above copyright notice(s) and this permission notice appear in supporting documentation. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + +Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Software without prior written authorization of the copyright holder. + + + +ICU4J license - ICU4J 1.3.1 and later +COPYRIGHT AND PERMISSION NOTICE + +Copyright (c) 1995-2001 International Business Machines Corporation and others + +All rights reserved. + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, provided that the above copyright notice(s) and this permission notice appear in all copies of the Software and that both the above copyright notice(s) and this permission notice appear in supporting documentation. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + +Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Software without prior written authorization of the copyright holder. + + +-------------------------------------------------------------------------------- +All trademarks and registered trademarks mentioned herein are the property of their respective owners. \ No newline at end of file diff --git a/node_modules/mysql/node_modules/bignumber.js/test/abs.js b/node_modules/mysql/node_modules/bignumber.js/test/abs.js new file mode 100644 index 0000000..8b7cdf5 --- /dev/null +++ b/node_modules/mysql/node_modules/bignumber.js/test/abs.js @@ -0,0 +1,1080 @@ +var count = (function abs(BigNumber) { + var start = +new Date(), + log, + error, + passed = 0, + total = 0; + + if (typeof window === 'undefined') { + log = console.log; + error = console.error; + } else { + log = function (str) { document.body.innerHTML += str.replace('\n', '
      ') }; + error = function (str) { document.body.innerHTML += '

      ' + + str.replace('\n', '
      ') + '
      ' }; + } + + if (!BigNumber && typeof require === 'function') BigNumber = require('../bignumber'); + + function assert(expected, actual) { + total++; + if (expected !== actual) { + error('\n Test number: ' + total + ' failed'); + error(' Expected: ' + expected); + error(' Actual: ' + actual); + //process.exit(); + } + else { + passed++; + //log('\n Expected and actual: ' + actual); + } + } + + function T(expected, value){ + assert(String(expected), new BigNumber(String(value)).abs().toString()); + } + + log('\n Testing abs...'); + + BigNumber.config({ + DECIMAL_PLACES : 20, + ROUNDING_MODE : 4, + ERRORS : true, + RANGE : 1E9, + EXPONENTIAL_AT : [-7, 21] + }); + + T(1, 1); + T(1, -1); + T(0.5, '0.5'); + T(0.5, '-0.5'); + T(0.1, 0.1); + T(0.1, -0.1); + T(1.1, 1.1); + T(1.1, -1.1); + T(1.5, '1.5'); + T(1.5, '-1.5'); + + T(0.00001, '-1e-5'); + T(9000000000, '-9e9'); + T(123456.7891011, -123456.7891011); + T(999.999, '-999.999'); + T(99, 99); + T(1, new BigNumber(-1)); + T(0.001, new BigNumber(0.001)); + T(0.001, new BigNumber('-0.001')); + + T('Infinity', Infinity); + T('Infinity', -Infinity); + T(NaN, NaN); + T(NaN, -NaN); + T(0, 0); + T(0, -0); + + var minusZero = 1 / (-1 / 0); + + function isMinusZero(n) { + return n.toString() === '0' && n.s == -1; + } + + T(0, 0); + T(0, -0); + T(0, minusZero); + + assert(true, isMinusZero(new BigNumber('-0'))); + assert(true, isMinusZero(new BigNumber(minusZero))); + assert(false, isMinusZero(new BigNumber(-0).abs())); + assert(false, isMinusZero(new BigNumber(minusZero).abs())); + assert(true, !isMinusZero(new BigNumber('-0').abs())); + assert(true, !isMinusZero(new BigNumber(minusZero).abs())); + + BigNumber.config({EXPONENTIAL_AT : 100}); + + T(Number.MIN_VALUE, Number.MIN_VALUE); + T(Number.MIN_VALUE, -Number.MIN_VALUE); + T(Number.MAX_VALUE, Number.MAX_VALUE); + T(Number.MAX_VALUE, -Number.MAX_VALUE); + + var two_30 = 1 << 30; + + T(two_30, two_30); + T(two_30, -two_30); + + T(two_30 + 1, two_30 + 1); + T(two_30 + 1, -two_30 - 1); + + T(two_30 - 1, two_30 - 1); + T(two_30 - 1, -two_30 + 1); + + var two_31 = 2 * two_30; + + T(two_31, two_31); + T(two_31, -two_31); + + T(two_31 + 1, two_31 + 1); + T(two_31 + 1, -two_31 - 1); + + T(two_31 - 1, two_31 - 1); + T(two_31 - 1, -two_31 + 1); + + BigNumber.config({ EXPONENTIAL_AT : [-7, 21] }); + + T(NaN, 'NaN'); + T('0', '0'); + T('1', '-1'); + T('11.121', '11.121'); + T('0.023842', '-0.023842'); + T('1.19', '-1.19'); + T('9.622e-11', '-0.00000000009622'); + T('5.09e-10', '-0.000000000509'); + T('3838.2', '3838.2'); + T('127', '127.0'); + T('4.23073', '4.23073'); + T('2.5469', '-2.5469'); + T('29949', '-29949'); + T('277.1', '-277.10'); + T('4.97898e-15', '-0.00000000000000497898'); + T('53.456', '53.456'); + T('100564', '-100564'); + T('12431.9', '-12431.9'); + T('97633.7', '-97633.7'); + T('220', '220'); + T('188.67', '-188.67'); + T('35', '-35'); + T('2.6', '-2.6'); + T('2.2e-19', '-0.000000000000000000220'); + T('1.469', '-1.469'); + T('150.7', '-150.7'); + T('74', '-74'); + T('3.52e-9', '-0.00000000352'); + T('2221.7', '-2221.7'); + T('0.000004211', '-0.000004211'); + T('1', '-1'); + T('5.886', '-5.886'); + T('16', '16'); + T('4.4493e-9', '0.0000000044493'); + T('47.6', '47.6'); + T('1.6', '-1.60'); + T('1', '-1'); + T('1.5', '-1.5'); + T('5', '-5'); + T('1', '-1'); + T('8027', '8027'); + T('6.36e-16', '-0.000000000000000636'); + T('3.87766', '3.87766'); + T('7.4', '-7.4'); + T('4.449', '-4.449'); + T('5.2218e-19', '-0.000000000000000000522180'); + T('1.3769e-11', '-0.000000000013769'); + T('7.898e-13', '-0.0000000000007898'); + T('522.9', '-522.9'); + T('16.1', '-16.1'); + T('2.15', '2.15'); + T('4.3', '4.3'); + T('3', '-3'); + T('2.8', '-2.8'); + T('1', '-1'); + T('0.0000128696', '-0.0000128696'); + T('13.33', '-13.33'); + T('0.00000132177', '-0.00000132177'); + T('1.41516', '-1.41516'); + T('180.4', '-180.4'); + T('115079', '-115079'); + T('959', '959'); + T('714.4', '714.4'); + T('1.4544', '1.4544'); + T('53.691', '53.691'); + T('2.03832e-12', '-0.00000000000203832'); + T('1', '-1'); + T('10.8', '10.8'); + T('6189.2', '-6189.2'); + T('6.30866', '6.30866'); + T('62306', '62306'); + T('4', '-4.0'); + T('997.1', '-997.1'); + T('27.4', '-27.40'); + T('9242', '9242'); + T('31.1', '-31.1'); + T('23.4', '23.4'); + T('451818', '-451818'); + T('7', '-7'); + T('1.9', '-1.9'); + T('2', '-2'); + T('112.983', '-112.983'); + T('9.36e-8', '-0.0000000936'); + T('12.8515', '12.8515'); + T('73.1', '-73.1'); + T('18.15', '18.150'); + T('11997.8', '11997.8'); + T('23.1', '-23.1'); + T('82.022', '-82.022'); + T('3.916e-20', '-0.00000000000000000003916'); + T('3.3', '-3.3'); + T('892.1', '-892.1'); + T('24.4', '24.4'); + T('72', '72.0'); + T('0.0013346', '0.0013346'); + T('10.4', '-10.4'); + T('367.5', '367.5'); + T('7', '-7'); + T('127.195', '127.195'); + T('7.89e-13', '-0.000000000000789'); + T('63', '-63'); + T('85821.2', '-85821.2'); + T('95.6', '95.6'); + T('8.9e-14', '-0.000000000000089'); + T('112.1', '-112.1'); + T('3.68', '-3.68'); + T('9', '-9'); + T('0.0000975', '-0.0000975'); + T('393.6', '-393.6'); + T('7.4', '-7.4'); + T('69.62', '-69.62'); + T('5201.3', '5201.3'); + T('163', '163'); + T('4.30732', '4.30732'); + T('224.49', '-224.49'); + T('319.8', '-319.8'); + T('88.1', '-88.1'); + T('2.7762e-8', '0.000000027762'); + T('2.043e-7', '-0.0000002043'); + T('75459.3', '-75459.3'); + T('0.178', '0.178'); + T('0.00001633', '0.00001633'); + T('955', '955'); + T('373898', '-373898'); + T('9780.1', '9780.1'); + T('503.47', '503.47'); + T('3.44562', '-3.44562'); + T('1.6', '-1.6'); + T('1.22442', '-1.22442'); + T('1.4', '1.4'); + T('1219.1', '-1219.1'); + T('2.7', '-2.7'); + T('1057', '-1057'); + T('1938', '1938'); + T('1.1983', '1.1983'); + T('0.0012', '-0.0012'); + T('95.713', '-95.713'); + T('2', '-2'); + T('17.24', '-17.24'); + T('10.3', '-10.3'); + T('1', '-1'); + T('65.8', '-65.8'); + T('2.9', '2.9'); + T('54149', '54149'); + T('8', '-8'); + T('1', '1.0'); + T('4', '-4'); + T('6.3', '-6.3'); + T('5.25e-9', '0.00000000525'); + T('52.3', '-52.3'); + T('75290', '-75290'); + T('5.9', '-5.9'); + T('13.7', '13.7'); + T('2.3982e-9', '0.0000000023982'); + T('91.5', '-91.50'); + T('2072.39', '2072.39'); + T('385.6', '385.6'); + T('4.77', '4.77'); + T('18.72', '18.720'); + T('2817', '-2817'); + T('44535', '-44535'); + T('655', '655'); + T('2e-15', '-0.0000000000000020'); + T('0.625', '0.6250'); + T('2', '-2'); + T('5.315', '5.315'); + T('70.9', '70.90'); + T('6.4', '6.4'); + T('1824', '1824'); + T('52.595', '52.595'); + T('3662', '3662.0'); + T('3.1', '3.1'); + T('1.05032e-7', '0.000000105032'); + T('997.063', '-997.063'); + T('41746', '-41746'); + T('24.0402', '24.0402'); + T('0.009135', '0.009135'); + T('2.34e-9', '-0.00000000234'); + T('13.1', '13.1'); + T('228.8', '228.8'); + T('565.85', '565.85'); + T('4e-20', '0.000000000000000000040'); + T('1.73', '1.73'); + T('38.9', '38.9'); + T('1.02e-14', '-0.0000000000000102'); + T('302.8', '-302.8'); + T('7', '-7'); + T('1', '-1'); + T('0.00247', '0.00247'); + T('2', '-2'); + T('3.26', '-3.26'); + T('8.8', '8.8'); + T('90.6', '90.6'); + T('8.3053e-17', '-0.000000000000000083053'); + T('2.5', '-2.5'); + T('376.2', '-376.2'); + T('1.29', '1.29'); + T('1.379', '-1.379'); + T('40921.5', '-40921.5'); + T('1', '-1'); + T('12.5', '12.5'); + T('10.1', '10.1'); + T('1', '-1'); + T('226636', '226636'); + T('1', '-1'); + T('1.7', '-1.7'); + T('31.31', '31.31'); + T('79.9', '-79.9'); + T('4.027e-13', '0.0000000000004027'); + T('43.838', '43.838'); + T('6.47', '-6.47'); + T('5.292e-19', '0.0000000000000000005292'); + T('4.6', '-4.6'); + T('15918', '-15918.0'); + T('239.45', '239.45'); + T('1.02', '-1.02'); + T('14101', '-14101'); + T('7', '-7'); + T('367.34', '367.34'); + T('5', '-5'); + T('19.9', '-19.9'); + T('269.45', '-269.45'); + T('10.34', '-10.34'); + T('3.32882e-12', '-0.00000000000332882'); + T('5.9', '5.9'); + T('9', '-9.0'); + T('1.3597', '-1.3597'); + T('8', '8.0'); + T('1', '1.0'); + T('312.5', '312.5'); + T('1.554', '-1.554'); + T('210.985', '-210.985'); + T('1', '-1'); + T('1.24', '-1.24'); + T('513865', '-513865'); + T('6748', '-6748'); + T('591.51', '-591.51'); + T('2.2', '-2.2'); + T('19.5495', '19.5495'); + T('3.3', '3.3'); + T('30', '-30'); + T('94', '-94'); + T('217.55', '217.55'); + T('2', '-2'); + T('99', '99'); + T('4.067', '-4.067'); + T('702.57', '702.57'); + T('3.7', '-3.70'); + T('4', '4.0'); + T('192944', '192944'); + T('0.000022', '0.000022'); + T('47.6', '47.60'); + T('0.391', '0.3910'); + T('35', '-35'); + T('100', '-100'); + T('3.3', '-3.3'); + T('32.432', '32.432'); + T('1.07849e-18', '0.00000000000000000107849'); + T('2', '-2.0'); + T('23.27', '23.27'); + T('4.054e-15', '-0.000000000000004054'); + T('7.6', '-7.6'); + T('1305', '1305'); + T('1.501', '-1.501'); + T('3.4', '3.4'); + T('22.5', '-22.5'); + T('1.0916', '1.0916'); + T('2', '-2'); + T('58.271', '58.271'); + T('1.73e-12', '0.00000000000173'); + T('1.3458e-15', '0.0000000000000013458'); + T('309.87', '-309.87'); + T('5.318', '-5.318'); + T('1.5302e-8', '0.000000015302'); + T('596765', '596765'); + T('54.42', '-54.42'); + T('6.549e-20', '0.00000000000000000006549'); + T('29', '29'); + T('46.025', '46.025'); + T('2556.78', '-2556.78'); + T('0.00287721', '0.00287721'); + T('1.63', '-1.63'); + T('0.00041', '0.00041'); + T('698', '698'); + T('134.4', '134.4'); + T('2.1', '2.1'); + T('2.07', '-2.07'); + T('122.869', '122.869'); + T('0.00017', '-0.00017'); + T('18.6', '18.6'); + T('7', '-7'); + T('0.0180557', '0.0180557'); + T('5', '-5'); + T('6.2', '-6.2'); + T('8', '-8'); + T('450.96', '-450.96'); + T('20.2', '-20.2'); + T('176.52', '176.52'); + T('0.00017', '-0.000170'); + T('5', '-5'); + T('1', '-1'); + T('1.37856e-14', '0.0000000000000137856'); + T('76.3048', '76.3048'); + T('1803.7', '-1803.7'); + T('74', '74'); + T('1.7e-12', '0.0000000000017'); + T('48.7', '-48.7'); + T('4.48', '-4.48'); + T('1.4', '-1.4'); + T('7.69', '-7.69'); + T('23.5987', '23.5987'); + T('3074', '3074.0'); + T('8.06e-15', '-0.00000000000000806'); + T('21.3757', '-21.3757'); + T('35', '35'); + T('11.056', '11.0560'); + T('3.36e-14', '-0.0000000000000336'); + T('49139.4', '-49139.4'); + T('32.654', '-32.654'); + T('34035.4', '34035.4'); + T('15.22', '15.22'); + T('62', '62.0'); + T('8.89156', '-8.89156'); + T('14', '14'); + T('0.006', '-0.0060'); + T('1.5', '1.5'); + T('7', '-7'); + T('1.6e-11', '0.000000000016'); + T('26.6427', '26.6427'); + T('1.5e-18', '-0.0000000000000000015'); + T('1.52838e-15', '0.00000000000000152838'); + T('119.1', '119.1'); + T('0.004283', '0.004283'); + T('818', '-818'); + T('194', '194'); + T('104.788', '-104.788'); + T('3.74e-11', '0.0000000000374'); + T('6.162', '-6.162'); + T('5.19214e-18', '-0.00000000000000000519214'); + T('1.4', '-1.4'); + T('1.27', '-1.27'); + T('7.83822e-12', '-0.00000000000783822'); + T('1', '-1'); + T('4.4', '4.4'); + T('7.37382e-12', '0.00000000000737382'); + T('13.618', '13.618'); + T('1.03', '-1.03'); + T('3.7457e-13', '0.00000000000037457'); + T('5.2', '-5.2'); + T('3.5', '3.5'); + T('364', '-364'); + T('7.336', '7.336'); + T('1.1447e-16', '-0.00000000000000011447'); + T('510.63', '-510.63'); + T('5.8', '5.8'); + T('7.8', '7.8'); + T('2.96', '-2.96'); + T('15.64', '-15.64'); + T('187863', '-187863'); + T('2.73', '-2.73'); + T('2.671', '-2.671'); + T('18.179', '-18.179'); + T('855885', '855885'); + T('4.16', '4.16'); + T('5.722e-18', '0.000000000000000005722'); + T('67.62', '67.62'); + T('813.31', '813.31'); + T('40.2', '40.20'); + T('0.00002515', '0.00002515'); + T('0.0196', '0.01960'); + T('13.165', '13.165'); + T('6.743', '-6.743'); + T('1', '-1'); + T('200.56', '-200.56'); + T('1.932', '1.932'); + T('92.9', '92.90'); + T('16.74', '16.74'); + T('4.5554e-7', '-0.00000045554'); + T('2.1296e-15', '-0.0000000000000021296'); + T('2.088', '2.088'); + T('2577', '2577'); + T('45.4', '-45.4'); + T('41.3', '-41.3'); + T('3.63', '-3.63'); + T('1.09', '-1.09'); + T('1', '-1'); + T('3.7', '-3.7'); + T('204.54', '204.54'); + T('235.6', '235.6'); + T('384', '-384'); + T('0.0207', '0.02070'); + T('680', '680'); + T('1.09', '1.09'); + T('109.2', '109.2'); + T('0.00010117', '0.00010117'); + T('13.81', '13.81'); + T('192.3', '192.3'); + T('1', '-1'); + T('1.2', '1.2'); + T('4.1', '-4.1'); + T('2.5', '2.5'); + T('8.4076', '-8.4076'); + T('0.0517', '0.0517'); + T('6.3923', '-6.3923'); + T('506.179', '-506.179'); + T('375886', '375886'); + T('618858', '-618858'); + T('8.5e-11', '0.000000000085'); + T('6', '-6.0'); + T('2.4', '2.40'); + T('0.0000013', '-0.0000013'); + T('1.064', '-1.064'); + T('1', '-1'); + T('4', '-4'); + T('4.5', '-4.5'); + T('93.6206', '93.6206'); + T('3.07e-18', '0.00000000000000000307'); + + BigNumber.config({EXPONENTIAL_AT : 0}); + + T('5.2452468128e+1', '-5.2452468128e+1'); + T('1.41525905257189365008396e+16', '1.41525905257189365008396e+16'); + T('2.743068083928e+11', '2.743068083928e+11'); + T('1.52993064722314247378724599e+26', '-1.52993064722314247378724599e+26'); + T('3.7205576746e+10', '3.7205576746e+10'); + T('8.680996444609343472665e+17', '8.680996444609343472665e+17'); + T('1.254549e+3', '1.254549e+3'); + T('6.23417196172381875892300762819e-18', '6.23417196172381875892300762819e-18'); + T('1.31179940821919284431e+19', '1.31179940821919284431e+19'); + T('9.7697726168e+7', '9.7697726168e+7'); + T('2.663e-10', '-2.663e-10'); + T('1.26574209965030360615518e+17', '-1.26574209965030360615518e+17'); + T('1.052e+3', '1.052e+3'); + T('4.452945872502e+6', '-4.452945872502e+6'); + T('2.95732460816619226e+13', '2.95732460816619226e+13'); + T('1.1923100194288654481424e+18', '-1.1923100194288654481424e+18'); + T('8.99315449050893705e+6', '8.99315449050893705e+6'); + T('5.200726538434486963e+8', '5.200726538434486963e+8'); + T('1.182618278949368566264898065e+18', '1.182618278949368566264898065e+18'); + T('3.815873266712e-20', '-3.815873266712e-20'); + T('1.316675370382742615e+6', '-1.316675370382742615e+6'); + T('2.1032502e+6', '-2.1032502e+6'); + T('1.8e+1', '1.8e+1'); + T('1.033525906631680944018544811261e-13', '1.033525906631680944018544811261e-13'); + T('1.102361746443461856816e+14', '-1.102361746443461856816e+14'); + T('8.595358491143959e+1', '8.595358491143959e+1'); + T('3.6908859412618413e+9', '-3.6908859412618413e+9'); + T('2.25907048615912944e+5', '-2.25907048615912944e+5'); + T('1.7441871813329475518e+19', '-1.7441871813329475518e+19'); + T('3.805493087068952925e-11', '-3.805493087068952925e-11'); + T('3.58049465451e+9', '-3.58049465451e+9'); + T('8.0688614291e+10', '-8.0688614291e+10'); + T('3.337855e+4', '-3.337855e+4'); + T('2.59977855e+8', '2.59977855e+8'); + T('4.96353e+4', '-4.96353e+4'); + T('7.47233581107861762e-13', '7.47233581107861762e-13'); + T('1.73948e-2', '1.73948e-2'); + T('5.784e-15', '5.784e-15'); + T('4.448338479762497e-8', '4.448338479762497e-8'); + T('3.9008023052e+8', '3.9008023052e+8'); + T('3e+0', '3e+0'); + T('8.61435e-9', '8.61435e-9'); + T('4.37e+1', '-4.37e+1'); + T('8.4034159379836e-18', '-8.4034159379836e-18'); + T('2.002857355721079885824481e+7', '2.002857355721079885824481e+7'); + T('7.000871862e+6', '-7.000871862e+6'); + T('2.2902057767e+9', '2.2902057767e+9'); + T('5.9896443375617e+8', '5.9896443375617e+8'); + T('1.53503650707e-11', '-1.53503650707e-11'); + T('2.0508347e+6', '2.0508347e+6'); + T('4.789433e+2', '-4.789433e+2'); + T('8.28161975302168665599e+11', '8.28161975302168665599e+11'); + T('1.2518396296278445e-5', '1.2518396296278445e-5'); + T('1.44290332e+8', '-1.44290332e+8'); + T('4.6570237501625609051773e-12', '4.6570237501625609051773e-12'); + T('7.8514960198282212436e+19', '7.8514960198282212436e+19'); + T('1.6197e-20', '1.6197e-20'); + T('6.51635176e+0', '-6.51635176e+0'); + T('4.49618e+3', '-4.49618e+3'); + T('1.32052259561417e-1', '-1.32052259561417e-1'); + T('2.09089580968e-18', '2.09089580968e-18'); + T('1.4064735615678257623873854709e-1', '1.4064735615678257623873854709e-1'); + T('3.14172e+0', '-3.14172e+0'); + T('1.7458792e+1', '1.7458792e+1'); + T('9.97831655282e+11', '9.97831655282e+11'); + T('1.94594e+1', '-1.94594e+1'); + T('1.2174602334491e+5', '-1.2174602334491e+5'); + T('1.12135222651239e+6', '-1.12135222651239e+6'); + T('6.3160490484343918e-20', '6.3160490484343918e-20'); + T('1.9238315686509393329629520842e+24', '1.9238315686509393329629520842e+24'); + T('9.915274405618026e+11', '-9.915274405618026e+11'); + T('2.3564687894712721487205001557e+28', '2.3564687894712721487205001557e+28'); + T('8.127315365677288172165e+2', '8.127315365677288172165e+2'); + T('4.93e+0', '-4.93e+0'); + T('1.41530382e+0', '-1.41530382e+0'); + T('4.86451432707435321820779e+19', '-4.86451432707435321820779e+19'); + T('1.4162540859e+0', '-1.4162540859e+0'); + T('4.646e+2', '-4.646e+2'); + T('2.1172e-14', '-2.1172e-14'); + T('8.69000536011392432707132752e-11', '8.69000536011392432707132752e-11'); + T('2.52776394053478133209e+20', '2.52776394053478133209e+20'); + T('8.500211152e+9', '8.500211152e+9'); + T('1.36178922026634255436879e+23', '1.36178922026634255436879e+23'); + T('4.6398705910903109e+3', '-4.6398705910903109e+3'); + T('2.15872185740218265392874524e+18', '2.15872185740218265392874524e+18'); + T('2.4663508855569609277266393e-3', '-2.4663508855569609277266393e-3'); + T('5.247072789229625795e+11', '-5.247072789229625795e+11'); + T('1.142743622516581e-15', '-1.142743622516581e-15'); + T('3.70055552960951165e-4', '-3.70055552960951165e-4'); + T('1.01218e+3', '1.01218e+3'); + T('3.622286100282e+2', '3.622286100282e+2'); + T('9.5526239814e+3', '9.5526239814e+3'); + T('2.7619598176203983624994361644e+28', '2.7619598176203983624994361644e+28'); + T('6.8696488497688008067537526e-6', '6.8696488497688008067537526e-6'); + T('2.48936e+1', '2.48936e+1'); + T('3.27658301230616e+14', '3.27658301230616e+14'); + T('2.1887387e+0', '-2.1887387e+0'); + T('1.4779696309033248e+16', '1.4779696309033248e+16'); + T('1.471782313713309789663e+4', '1.471782313713309789663e+4'); + T('2.0674554e+2', '-2.0674554e+2'); + T('1.763392540310312024e+9', '1.763392540310312024e+9'); + T('2.66209467493293140387227569744e+26', '-2.66209467493293140387227569744e+26'); + T('1.4522423854706487171671160683e-16', '1.4522423854706487171671160683e-16'); + T('5.5534571375626084341933639e-18', '-5.5534571375626084341933639e-18'); + T('3.670610508911e-18', '-3.670610508911e-18'); + T('1.8e+1', '1.8e+1'); + T('4.21466540619392e+14', '-4.21466540619392e+14'); + T('4.57881788773078611890575215e-13', '-4.57881788773078611890575215e-13'); + T('1.14912007700989046355e+20', '1.14912007700989046355e+20'); + T('1.10572e+0', '1.10572e+0'); + T('5.45027073427600086838788178e+8', '5.45027073427600086838788178e+8'); + T('5.3607527344097728e-14', '-5.3607527344097728e-14'); + T('1.20985e+0', '1.20985e+0'); + T('2.173758396975e+4', '-2.173758396975e+4'); + T('1.443459545123362e+10', '1.443459545123362e+10'); + T('8.26154936079048787963e-19', '8.26154936079048787963e-19'); + T('1.24e+0', '-1.24e+0'); + T('6.61e+1', '6.61e+1'); + T('8.37241281e-15', '-8.37241281e-15'); + T('1.4673863119972e+5', '1.4673863119972e+5'); + T('1.052445707646628e+15', '1.052445707646628e+15'); + T('2.770216401480935105227985046e+0', '2.770216401480935105227985046e+0'); + T('1e-2', '-1e-2'); + T('2.0530189404000503380382112e+7', '-2.0530189404000503380382112e+7'); + T('7.73428930734513129e+5', '7.73428930734513129e+5'); + T('2.969e-2', '2.969e-2'); + T('3.355869237729311e-19', '3.355869237729311e-19'); + T('7.585426017526e+3', '7.585426017526e+3'); + T('1.6544419963706446557685646278e+23', '-1.6544419963706446557685646278e+23'); + T('2.92136474375552641396809118574e-18', '2.92136474375552641396809118574e-18'); + T('3.38424409165604660854e+4', '-3.38424409165604660854e+4'); + T('1.173591570196350093112e+11', '-1.173591570196350093112e+11'); + T('7.8375092064291352e+1', '-7.8375092064291352e+1'); + T('1.88191e+3', '1.88191e+3'); + T('4.6761e-2', '-4.6761e-2'); + T('5.988129995539574e+10', '5.988129995539574e+10'); + T('2.5390529009345115e+2', '2.5390529009345115e+2'); + T('2.132229656150917182e+5', '-2.132229656150917182e+5'); + T('1.0719725506854825717e-19', '-1.0719725506854825717e-19'); + T('4.3681500769125575941008112847e+28', '-4.3681500769125575941008112847e+28'); + T('1.35927075893264893848008382e-13', '-1.35927075893264893848008382e-13'); + T('1.9240692976139e-18', '-1.9240692976139e-18'); + T('4.49668506275546883445e+20', '4.49668506275546883445e+20'); + T('5.19198662387790072e+9', '5.19198662387790072e+9'); + T('1.51188431866457089e+16', '-1.51188431866457089e+16'); + T('1.4463331863500941e+12', '1.4463331863500941e+12'); + T('1e+0', '-1e+0'); + T('2.50029927958615945e+1', '-2.50029927958615945e+1'); + T('1.001415164502846757e+3', '-1.001415164502846757e+3'); + T('1.45526428e+8', '-1.45526428e+8'); + T('5.813181844e-3', '-5.813181844e-3'); + T('2.4481022856740302965057941113e+10', '2.4481022856740302965057941113e+10'); + T('5.55e+1', '-5.55e+1'); + T('3.36356932710712e+11', '-3.36356932710712e+11'); + T('5.28080163e+8', '5.28080163e+8'); + T('5.3879740593083469994135e+13', '-5.3879740593083469994135e+13'); + T('6.6759148438881472902e+19', '-6.6759148438881472902e+19'); + T('1.26e-20', '1.26e-20'); + T('1.005680289388988e+10', '-1.005680289388988e+10'); + T('1.4855958598e+0', '-1.4855958598e+0'); + T('2.94014963598446075495453768e+24', '-2.94014963598446075495453768e+24'); + T('5.219896118644e+12', '-5.219896118644e+12'); + T('6.8e+0', '-6.8e+0'); + T('5.492e-9', '-5.492e-9'); + T('1.0038e+4', '-1.0038e+4'); + T('2.781382585e+5', '2.781382585e+5'); + T('3.30150670653876784e+17', '-3.30150670653876784e+17'); + T('1.87927e+5', '-1.87927e+5'); + T('1.4774557974305197453804758396e+16', '-1.4774557974305197453804758396e+16'); + T('6.05644990832733182152086098e+18', '-6.05644990832733182152086098e+18'); + T('2.78459055955765755e-14', '-2.78459055955765755e-14'); + T('2.66385931106395122e+6', '2.66385931106395122e+6'); + T('3.3683073647556597682246e-9', '-3.3683073647556597682246e-9'); + T('7.081e+2', '7.081e+2'); + T('2.73122035866217320954404e+6', '2.73122035866217320954404e+6'); + T('1.2434001e-7', '1.2434001e-7'); + T('1.135877627944001e+14', '1.135877627944001e+14'); + T('5.59534951548380080886141393126e+21', '5.59534951548380080886141393126e+21'); + T('5.7723782191795798882571e+9', '-5.7723782191795798882571e+9'); + T('1.5162957113185485632499369443e-12', '-1.5162957113185485632499369443e-12'); + T('4.29309951955288963780116e+6', '4.29309951955288963780116e+6'); + T('3.9722643229317825409e+13', '3.9722643229317825409e+13'); + T('1.011489199242414759e-17', '1.011489199242414759e-17'); + T('1.253643670639200989056241e-19', '-1.253643670639200989056241e-19'); + T('4.4836025129185e+8', '4.4836025129185e+8'); + T('6.3777231879677253018091496e-20', '6.3777231879677253018091496e-20'); + T('4.76278478201471177044e+11', '4.76278478201471177044e+11'); + T('1.05e+2', '-1.05e+2'); + T('8.2407974521826916377252018422e+18', '8.2407974521826916377252018422e+18'); + T('2.00932156087e+4', '2.00932156087e+4'); + T('1.965992456941204354956867603e-17', '-1.965992456941204354956867603e-17'); + T('5.333218599567659131313e+2', '-5.333218599567659131313e+2'); + T('1.286162439284e+10', '-1.286162439284e+10'); + T('8.1336617205815143346477183e+16', '-8.1336617205815143346477183e+16'); + T('1.762845949430042e+13', '-1.762845949430042e+13'); + T('7.837280986421e+12', '7.837280986421e+12'); + T('2.84048190010833793e+13', '2.84048190010833793e+13'); + T('3.25755301782427035301e+20', '-3.25755301782427035301e+20'); + T('2.58959421885729898387238225e+13', '2.58959421885729898387238225e+13'); + T('1.8851093513683294449e+10', '-1.8851093513683294449e+10'); + T('1.21916240456196024666e+20', '-1.21916240456196024666e+20'); + T('5.840503333749926899855535241e-6', '5.840503333749926899855535241e-6'); + T('2.998914116e+4', '2.998914116e+4'); + T('5.97277308650934e+10', '5.97277308650934e+10'); + T('6.56e+2', '6.56e+2'); + T('1.56235984592541e+12', '-1.56235984592541e+12'); + T('3.71e+1', '3.71e+1'); + T('5.41937441824138694e+16', '-5.41937441824138694e+16'); + T('6.116633e-5', '-6.116633e-5'); + T('5.45e+2', '-5.45e+2'); + T('2.9449785444e+3', '-2.9449785444e+3'); + T('6.6706550091070638245894e+7', '-6.6706550091070638245894e+7'); + T('1.39231027e-9', '1.39231027e-9'); + T('7.45311483e+8', '7.45311483e+8'); + T('7.6856950378651228179663e+18', '7.6856950378651228179663e+18'); + T('3.094636736003620629e+8', '-3.094636736003620629e+8'); + T('5.876896131624540495694931644e+7', '-5.876896131624540495694931644e+7'); + T('1.10975974e+8', '-1.10975974e+8'); + T('1.741e+0', '1.741e+0'); + T('2.351595813466272408066e-4', '-2.351595813466272408066e-4'); + T('1.519156959043394168562e+20', '1.519156959043394168562e+20'); + T('1.620081571051799e+7', '1.620081571051799e+7'); + T('7.316815038867932520586761e+23', '7.316815038867932520586761e+23'); + T('3.094134522833396822e+0', '3.094134522833396822e+0'); + T('1.168234556e+2', '-1.168234556e+2'); + T('1.503324779432e+4', '1.503324779432e+4'); + T('5.6710777e-9', '5.6710777e-9'); + T('2.1463873346182e-6', '2.1463873346182e-6'); + T('1.2934324795526700185311026007e+28', '-1.2934324795526700185311026007e+28'); + T('1.237009087265757433674283664e+11', '1.237009087265757433674283664e+11'); + T('1.226806049797304683867e-18', '1.226806049797304683867e-18'); + T('5e+0', '-5e+0'); + T('1.091168788407093537887970016e+15', '-1.091168788407093537887970016e+15'); + T('3.87166413612272027e+12', '3.87166413612272027e+12'); + T('1.411514e+5', '1.411514e+5'); + T('1.0053454672509859631996e+22', '1.0053454672509859631996e+22'); + T('6.9265714e+0', '6.9265714e+0'); + T('1.04627709e+4', '1.04627709e+4'); + T('1.74378341199e+9', '1.74378341199e+9'); + T('8.427721739784805398864e+21', '-8.427721739784805398864e+21'); + T('3.0433401636913618083715e-20', '3.0433401636913618083715e-20'); + T('8.596751182989204e-17', '8.596751182989204e-17'); + T('2.83012114501087201358049280895e-3', '2.83012114501087201358049280895e-3'); + T('6.0621417107465763e-13', '6.0621417107465763e-13'); + T('7.927e+0', '7.927e+0'); + T('1.95309091153617e+6', '-1.95309091153617e+6'); + T('3.479245772e-4', '3.479245772e-4'); + T('9.1256366370332e-20', '-9.1256366370332e-20'); + T('6.357737394e-19', '-6.357737394e-19'); + T('4.016038725869e-1', '4.016038725869e-1'); + T('2.3600611340992838105408e-2', '-2.3600611340992838105408e-2'); + T('1.1982e+3', '1.1982e+3'); + T('1.895744317788222501065084139e+17', '1.895744317788222501065084139e+17'); + T('3.2450271098259184465439822499e+5', '3.2450271098259184465439822499e+5'); + T('1.1699868235212007000965506e+25', '-1.1699868235212007000965506e+25'); + T('7.988985662262809183538221216e+27', '-7.988985662262809183538221216e+27'); + T('1.476540158366695285164548325e+7', '-1.476540158366695285164548325e+7'); + T('8.8357361253e+1', '-8.8357361253e+1'); + T('2.6019583787920961e+15', '-2.6019583787920961e+15'); + T('2.617913486220978003463345e+24', '2.617913486220978003463345e+24'); + T('8.22380392476331112656616e+14', '-8.22380392476331112656616e+14'); + T('5.738943e+2', '-5.738943e+2'); + T('1.04315155601043625824403526143e+24', '-1.04315155601043625824403526143e+24'); + T('5.1800101324564241e-1', '-5.1800101324564241e-1'); + T('3.5101750876959537987e-8', '3.5101750876959537987e-8'); + T('2.1857385393e+3', '-2.1857385393e+3'); + T('2.29674272702302434336e+13', '2.29674272702302434336e+13'); + T('2.64606405319747e+14', '2.64606405319747e+14'); + T('2.1888980498865372455451e+1', '-2.1888980498865372455451e+1'); + T('1.51602e+0', '-1.51602e+0'); + T('5.8047548e+7', '5.8047548e+7'); + T('1.17525103769842428108679e+6', '-1.17525103769842428108679e+6'); + T('8.47642371517851e-1', '-8.47642371517851e-1'); + T('6.0574e+0', '-6.0574e+0'); + T('2.59202859815854485362744156646e-3', '2.59202859815854485362744156646e-3'); + T('1.040746238422014004691755e+15', '1.040746238422014004691755e+15'); + T('1.7064734811115159257936e+22', '-1.7064734811115159257936e+22'); + T('7.26051238227573319908663048e+26', '7.26051238227573319908663048e+26'); + T('7.4795685183599759424050861e+6', '-7.4795685183599759424050861e+6'); + T('2.9817e-16', '-2.9817e-16'); + T('2.298907884272330951e+6', '2.298907884272330951e+6'); + T('4.0531847e-8', '4.0531847e-8'); + T('2.6189e+4', '-2.6189e+4'); + T('3.911906e+3', '-3.911906e+3'); + T('9.408498865993245868145865993e+2', '-9.408498865993245868145865993e+2'); + T('4.05451047373376774e-7', '4.05451047373376774e-7'); + T('2.08836709959016517e+6', '-2.08836709959016517e+6'); + T('6.3417891663e+10', '6.3417891663e+10'); + T('8.08596745e+9', '8.08596745e+9'); + T('2.5865615419545921e+13', '2.5865615419545921e+13'); + T('1.5731674925482283378868e+22', '-1.5731674925482283378868e+22'); + T('1.19068602e+1', '-1.19068602e+1'); + T('5.3687670881355020502668e-3', '-5.3687670881355020502668e-3'); + T('1.2488884456407e+10', '-1.2488884456407e+10'); + T('2.51800212e+3', '-2.51800212e+3'); + T('3.738131519976930832896022e+24', '-3.738131519976930832896022e+24'); + T('6e+0', '6e+0'); + T('1.24131e+5', '-1.24131e+5'); + T('9.22635e+3', '-9.22635e+3'); + T('4e+0', '4e+0'); + T('1.83e+1', '1.83e+1'); + T('1.846025e+6', '-1.846025e+6'); + T('1.27e+1', '1.27e+1'); + T('2.24e+1', '2.24e+1'); + T('2.476323257183413822109348e-18', '-2.476323257183413822109348e-18'); + T('1.926752842e-7', '1.926752842e-7'); + T('8.80612762892681839383e-19', '8.80612762892681839383e-19'); + T('1.101085e+3', '-1.101085e+3'); + T('3.4906077350467600648759e+22', '3.4906077350467600648759e+22'); + T('1.04494855994965735236868e+23', '1.04494855994965735236868e+23'); + T('1.58387879923230822739579e+19', '1.58387879923230822739579e+19'); + T('4.213902971419525700930675e+19', '-4.213902971419525700930675e+19'); + T('9.13804011600009749427632034e+0', '9.13804011600009749427632034e+0'); + T('1.84491548817806624708211e+23', '-1.84491548817806624708211e+23'); + T('1.948625124086563483825890385e+22', '1.948625124086563483825890385e+22'); + T('1.3e+0', '1.3e+0'); + T('1.32939216745e+12', '1.32939216745e+12'); + T('7.078251628e+6', '7.078251628e+6'); + T('1.7313022e+2', '1.7313022e+2'); + T('3.415584872774897359156e+0', '3.415584872774897359156e+0'); + T('5.51297107980065895009041695e+23', '5.51297107980065895009041695e+23'); + T('2.5113503918614988744859e-15', '2.5113503918614988744859e-15'); + T('1.630239450859331215249576367e+27', '1.630239450859331215249576367e+27'); + T('5.4721390329589760404415744136e+18', '-5.4721390329589760404415744136e+18'); + T('2.945751278429364126367812e-17', '2.945751278429364126367812e-17'); + T('4.2782880893227686126997e+4', '4.2782880893227686126997e+4'); + T('1.9847055931e+1', '-1.9847055931e+1'); + T('2.261026e+3', '-2.261026e+3'); + T('1.52615708575e+9', '1.52615708575e+9'); + T('4.55553743697189921932e+5', '-4.55553743697189921932e+5'); + T('4.222829719336993778496867e+12', '4.222829719336993778496867e+12'); + T('4.485e+3', '4.485e+3'); + T('5.2e+0', '-5.2e+0'); + T('1.845091473820299081635836e+6', '1.845091473820299081635836e+6'); + T('5.46863948617381450255744e-14', '-5.46863948617381450255744e-14'); + T('3.0245e+4', '3.0245e+4'); + T('1.53486267119215101935302e-6', '-1.53486267119215101935302e-6'); + T('6.4843132478784299210571e+16', '6.4843132478784299210571e+16'); + T('4.386363241636966071e+13', '-4.386363241636966071e+13'); + T('7.581683508504e+6', '7.581683508504e+6'); + T('1.09730944345409824e+16', '1.09730944345409824e+16'); + T('3.594503e+6', '-3.594503e+6'); + T('4.443273220375505949638436659e+1', '4.443273220375505949638436659e+1'); + T('1.70867026016477719112e+20', '-1.70867026016477719112e+20'); + T('1.29553439888e+11', '-1.29553439888e+11'); + T('1.1130502308247230952431e-11', '1.1130502308247230952431e-11'); + T('6.058565749e+10', '-6.058565749e+10'); + T('3.87180284987679e-10', '-3.87180284987679e-10'); + T('3.49184930268913133535e+19', '3.49184930268913133535e+19'); + T('9e+0', '9e+0'); + T('1.28461567447442016927071963077e-8', '-1.28461567447442016927071963077e-8'); + T('2.72815445800161137e-19', '2.72815445800161137e-19'); + T('5.849268583211e-4', '5.849268583211e-4'); + T('3.19417089569942412006e+3', '-3.19417089569942412006e+3'); + T('1.9e+1', '-1.9e+1'); + T('3.3872886317814608310483125577e+6', '3.3872886317814608310483125577e+6'); + T('3.99977971703789643632671956e+9', '-3.99977971703789643632671956e+9'); + T('1.998549e-5', '1.998549e-5'); + T('7.18512424913e-15', '7.18512424913e-15'); + T('9.365052273317995234261e+21', '9.365052273317995234261e+21'); + T('2.569e+3', '-2.569e+3'); + T('9.460553674215355e+3', '-9.460553674215355e+3'); + T('1.22541e+2', '-1.22541e+2'); + T('2.180882957e-2', '-2.180882957e-2'); + T('3.963983308804e-5', '3.963983308804e-5'); + T('4.9059909584804e+11', '4.9059909584804e+11'); + T('3.89345544e+8', '-3.89345544e+8'); + T('3.13811755993550161609599737307e+9', '3.13811755993550161609599737307e+9'); + T('2.1684124657298e+7', '2.1684124657298e+7'); + T('4e+0', '4e+0'); + T('1.89e+1', '-1.89e+1'); + T('1.0500428125617165569673e+6', '1.0500428125617165569673e+6'); + T('3.45971690973815432646e+9', '-3.45971690973815432646e+9'); + T('4e+0', '-4e+0'); + T('1.2826728638181755448600624e+4', '-1.2826728638181755448600624e+4'); + T('5.2490288314345e+5', '5.2490288314345e+5'); + T('8.46401e+0', '8.46401e+0'); + T('2.15070506987596858e-9', '2.15070506987596858e-9'); + T('1.4569180505e+5', '-1.4569180505e+5'); + T('1.75535288191468954993283e+8', '-1.75535288191468954993283e+8'); + T('1.83e-19', '1.83e-19'); + T('3.77847393193912874449578e+6', '3.77847393193912874449578e+6'); + T('2.823610210086368e+0', '2.823610210086368e+0'); + T('3.2326e+4', '-3.2326e+4'); + T('7.21208310236919171558e+7', '-7.21208310236919171558e+7'); + T('2.537182162994085967e+11', '2.537182162994085967e+11'); + T('2.4881474405e-15', '2.4881474405e-15'); + T('6.8484737e+6', '6.8484737e+6'); + T('8.09636762896763e+1', '8.09636762896763e+1'); + T('1.387805e+1', '-1.387805e+1'); + T('1.949086825141843503e-3', '-1.949086825141843503e-3'); + T('8.22006002683570972726913386e+26', '-8.22006002683570972726913386e+26'); + T('8.82e+1', '-8.82e+1'); + T('9.8e+0', '-9.8e+0'); + T('5.73018e+5', '-5.73018e+5'); + T('2.039854296e-18', '2.039854296e-18'); + T('3.85806698884e+2', '3.85806698884e+2'); + T('7.761351239715879e-15', '-7.761351239715879e-15'); + T('2.37976961448611739e-13', '2.37976961448611739e-13'); + T('1.625694436559179391897024e-12', '-1.625694436559179391897024e-12'); + T('2.612e+1', '-2.612e+1'); + T('8.317023570754122191146041e+24', '8.317023570754122191146041e+24'); + T('8.128823e-9', '8.128823e-9'); + T('3.316888938212137e-7', '3.316888938212137e-7'); + T('4.590734e+2', '4.590734e+2'); + T('9.95284154681380079083087718e-7', '9.95284154681380079083087718e-7'); + T('1.379051e-15', '1.379051e-15'); + T('2.543347781939297185736e+21', '-2.543347781939297185736e+21'); + T('1.41496183748704601485699e-10', '-1.41496183748704601485699e-10'); + T('3.11665e+5', '-3.11665e+5'); + T('6.4377728353162694052697e+1', '6.4377728353162694052697e+1'); + T('1.36920115218557491e+17', '1.36920115218557491e+17'); + T('1.27e+1', '-1.27e+1'); + T('5.1e-4', '5.1e-4'); + T('4.124e+3', '4.124e+3'); + T('7.96e+0', '7.96e+0'); + T('1.0109019145999979839008159507e-20', '1.0109019145999979839008159507e-20'); + T('1.507784067070212e+12', '1.507784067070212e+12'); + T('5.03530585620864526983697e+10', '5.03530585620864526983697e+10'); + T('5.87771648701709094e-3', '-5.87771648701709094e-3'); + T('2.6641175511284360931e+19', '2.6641175511284360931e+19'); + T('3.5430949752e+3', '-3.5430949752e+3'); + T('1.434481e+6', '1.434481e+6'); + T('6.95e+0', '6.95e+0'); + T('2.7922814988487634078255e+17', '2.7922814988487634078255e+17'); + T('1e+0', '-1e+0'); + T('1.34094272275111823704509269719e+9', '-1.34094272275111823704509269719e+9'); + T('5.2e+0', '5.2e+0'); + T('5.961731008805248930549e+0', '5.961731008805248930549e+0'); + T('1.95863217313239788358925850999e+27', '1.95863217313239788358925850999e+27'); + T('1.115927378282807678794111117e+18', '-1.115927378282807678794111117e+18'); + T('6.6448e-6', '-6.6448e-6'); + T('1.210298078691983e-7', '1.210298078691983e-7'); + T('1.55022703113469956595e+8', '-1.55022703113469956595e+8'); + T('2.519409262126392490249e+9', '-2.519409262126392490249e+9'); + T('8.3744112435155841906e+19', '8.3744112435155841906e+19'); + T('5.56052914013431e-4', '5.56052914013431e-4'); + T('1.847716075495989e+13', '-1.847716075495989e+13'); + T('5.78580529835020695846e+19', '-5.78580529835020695846e+19'); + T('7.3177e-15', '-7.3177e-15'); + T('5.8018949e+6', '-5.8018949e+6'); + T('1.234850494854913982840923624126e+30', '1.234850494854913982840923624126e+30'); + T('3.1e+0', '3.1e+0'); + T('3.085340434810406103e+4', '3.085340434810406103e+4'); + T('1.461332e+6', '1.461332e+6'); + T('2.042933164181166e-9', '2.042933164181166e-9'); + T('1.14852656434391849784404293276e-6', '1.14852656434391849784404293276e-6'); + T('8.56930722573e-11', '8.56930722573e-11'); + T('7.753629727831898e+11', '7.753629727831898e+11'); + T('2.5807119689e+5', '-2.5807119689e+5'); + T('6.5889872564e+7', '6.5889872564e+7'); + T('6.2e+0', '6.2e+0'); + T('7.16926024589772e+14', '-7.16926024589772e+14'); + T('2.444762609546357e-12', '2.444762609546357e-12'); + T('1.58017211706879e+2', '-1.58017211706879e+2'); + T('2.74612804105217564273009e+23', '-2.74612804105217564273009e+23'); + T('8.2105e+3', '-8.2105e+3'); + T('6.2289747e+7', '-6.2289747e+7'); + T('4.47847136680063365276e+21', '-4.47847136680063365276e+21'); + T('7.599263848474204e+15', '-7.599263848474204e+15'); + T('9.534064037670226206e-11', '-9.534064037670226206e-11'); + T('5.3511395608925655035624181e+7', '-5.3511395608925655035624181e+7'); + T('2.536656469414e+8', '2.536656469414e+8'); + T('4.454301005499233196018257e+16', '-4.454301005499233196018257e+16'); + T('2.3289800995961777747097e+10', '-2.3289800995961777747097e+10'); + T('2.7363696755334e+6', '-2.7363696755334e+6'); + T('2.56e+2', '2.56e+2'); + T('7.3430201092837e+2', '7.3430201092837e+2'); + T('1.114804e+5', '1.114804e+5'); + T('3.1845809556698336607622e+4', '-3.1845809556698336607622e+4'); + T('1.7780378655260403138e+19', '-1.7780378655260403138e+19'); + T('3.608970926e-15', '3.608970926e-15'); + T('1.949e+3', '-1.949e+3'); + T('1.9021837e+4', '-1.9021837e+4'); + T('1.5e+0', '1.5e+0'); + T('3.1155266673e+10', '-3.1155266673e+10'); + T('4e+0', '-4e+0'); + T('9.09316542545977506e+14', '9.09316542545977506e+14'); + T('2.15531740334146749845e+8', '2.15531740334146749845e+8'); + T('1.5605317646e+8', '1.5605317646e+8'); + T('3.8806066633613066e+13', '-3.8806066633613066e+13'); + T('1.653298e+6', '1.653298e+6'); + T('7.920024310736e-20', '7.920024310736e-20'); + T('2.27611872e+8', '2.27611872e+8'); + T('2.76569307109179036145271e-15', '-2.76569307109179036145271e-15'); + T('1.425171314e+8', '1.425171314e+8'); + T('1.3702555167748408653e+11', '-1.3702555167748408653e+11'); + T('5.146936435e+9', '5.146936435e+9'); + T('4.183285814905222880076696e+19', '-4.183285814905222880076696e+19'); + T('2.270923702039578057376e-16', '2.270923702039578057376e-16'); + T('9.4963549e-12', '9.4963549e-12'); + T('1.453060439e-3', '1.453060439e-3'); + T('2.97303365e+2', '2.97303365e+2'); + T('1.16485757109e+2', '-1.16485757109e+2'); + T('7.7984946334626919799413338378e+5', '-7.7984946334626919799413338378e+5'); + T('1.905453e+5', '1.905453e+5'); + T('5.36989497616503e-20', '5.36989497616503e-20'); + T('4.3e+0', '4.3e+0'); + T('2.70434008699476809368089518776e+25', '-2.70434008699476809368089518776e+25'); + T('2.8813069851e+10', '2.8813069851e+10'); + T('7e+0', '7e+0'); + T('1.0577487e-18', '-1.0577487e-18'); + T('6.8e+1', '6.8e+1'); + T('1e+0', '-1e+0'); + T('8.446803887694575079e+6', '-8.446803887694575079e+6'); + T('2.3384835e-6', '-2.3384835e-6'); + T('1.072e-13', '1.072e-13'); + T('7.13295350162e-5', '7.13295350162e-5'); + T('4.59897478609e+3', '4.59897478609e+3'); + T('4.11875744698515118e+11', '4.11875744698515118e+11'); + T('3.12339620225171e+5', '3.12339620225171e+5'); + T('3.79932554e+1', '3.79932554e+1'); + T('2.457332691061964e+4', '-2.457332691061964e+4'); + T('3.944602320705902e+6', '-3.944602320705902e+6'); + T('3.164305812145e+4', '-3.164305812145e+4'); + T('7.22239735515689399e+1', '-7.22239735515689399e+1'); + T('5.261981e+3', '-5.261981e+3'); + T('2.3642968462845e+7', '2.3642968462845e+7'); + T('3.9326785e+3', '-3.9326785e+3'); + T('8.5853e-11', '-8.5853e-11'); + T('2.60532943946e+0', '2.60532943946e+0'); + T('3.64630216318427246476533e+18', '-3.64630216318427246476533e+18'); + T('3.031732127749e-3', '3.031732127749e-3'); + T('2.49298080885329502254338e-12', '-2.49298080885329502254338e-12'); + T('8.81838341457179780743504843e+2', '-8.81838341457179780743504843e+2'); + T('2.285650225267766689304972e+5', '2.285650225267766689304972e+5'); + T('4.5790517211306242e+7', '4.5790517211306242e+7'); + T('3.0033340092338313923473428e+16', '-3.0033340092338313923473428e+16'); + T('2.83879929283797623e+1', '-2.83879929283797623e+1'); + T('4.5266377717178121183759377414e-5', '4.5266377717178121183759377414e-5'); + T('5.3781e+4', '-5.3781e+4'); + T('6.722035208213298413522819127e-18', '-6.722035208213298413522819127e-18'); + T('3.02865707828281230987116e+23', '-3.02865707828281230987116e+23'); + T('5.5879983320336874473209567979e+28', '-5.5879983320336874473209567979e+28'); + + log('\n ' + passed + ' of ' + total + ' tests passed in ' + (+new Date() - start) + ' ms \n'); + return [passed, total];; +})(this.BigNumber); +if (typeof module !== 'undefined' && module.exports) module.exports = count; \ No newline at end of file diff --git a/node_modules/mysql/node_modules/bignumber.js/test/base-in.js b/node_modules/mysql/node_modules/bignumber.js/test/base-in.js new file mode 100644 index 0000000..6a08514 --- /dev/null +++ b/node_modules/mysql/node_modules/bignumber.js/test/base-in.js @@ -0,0 +1,456 @@ +var count = (function baseIn(BigNumber) { + var start = +new Date(), + log, + error, + undefined, + passed = 0, + total = 0; + + if (typeof window === 'undefined') { + log = console.log; + error = console.error; + } else { + log = function (str) { document.body.innerHTML += str.replace('\n', '
      ') }; + error = function (str) { document.body.innerHTML += '
      ' + + str.replace('\n', '
      ') + '
      ' }; + } + + if (!BigNumber && typeof require === 'function') BigNumber = require('../bignumber'); + + function assert(expected, actual) { + total++; + if (expected !== actual) { + error('\n Test number: ' + total + ' failed'); + error(' Expected: ' + expected); + error(' Actual: ' + actual); + //process.exit(); + } + else { + passed++; + //log('\n Expected and actual: ' + actual); + } + } + + function assertException(func, message) { + var actual; + total++; + try { + func(); + } catch (e) { + actual = e; + } + if (actual && actual.name == 'BigNumber Error') { + passed++; + //log('\n Expected and actual: ' + actual); + } else { + error('\n Test number: ' + total + ' failed'); + error('\n Expected: ' + message + ' to raise a BigNumber Error.'); + error(' Actual: ' + (actual || 'no exception')); + //process.exit(); + } + } + + function T(expected, value, base) { + assert(expected, new BigNumber(value, base).toString()) + } + + log('\n Testing base-in...'); + + BigNumber.config({ + DECIMAL_PLACES : 20, + ROUNDING_MODE : 4, + ERRORS : true, + RANGE : 1E9, + EXPONENTIAL_AT : 1E9 + }); + + // Test integers of all bases against Number.toString(base). + for (var i = 2; i < 37; i++) { + for (var j = -100; j < 101; j++) { + T(j.toString(), j.toString(i), i); + var k = Math.floor(Math.random() * Math.pow(2, Math.floor(Math.random() * 52) + 1)); + T(k.toString(), k.toString(i), i); + } + } + + T('0', 0, 2); + T('0', 0, 10); + T('0', -0, 36); + T('-5', -101, 2); + T('-101', -101, 10); + + // TEST NUMBERS WITH FRACTION DIGITS. + + // Test rounding. + BigNumber.config({DECIMAL_PLACES : 0, ROUNDING_MODE : 0}); + T('1', '0.1', 2); + T('-1', '-0.1', 2); + T('1000', '999.5', 10); + T('-1000', '-999.5', 10); + + BigNumber.config({ROUNDING_MODE : 1}); + T('0', '0.1', 2); + T('0', '-0.1', 2); + T('999', '999.5', 10); + T('-999', '-999.5', 10); + + BigNumber.config({ROUNDING_MODE : 2}); + T('1', '0.1', 2); + T('0', '-0.1', 2); + T('1000', '999.5', 10); + T('-999', '-999.5', 10); + + BigNumber.config({ROUNDING_MODE : 3}); + T('0', '0.1', 2); + T('-1', '-0.1', 2); + T('999', '999.5', 10); + T('-1000', '-999.5', 10); + + BigNumber.config({ROUNDING_MODE : 4}); + T('1', '0.1', 2); + T('-1', '-0.1', 2); + T('1000', '999.5', 10); + T('-1000', '-999.5', 10); + + BigNumber.config({ROUNDING_MODE : 5}); + T('0', '0.1', 2); + T('0', '-0.1', 2); + T('999', '999.5', 10); + T('-999', '-999.5', 10); + + BigNumber.config({ROUNDING_MODE : 6}); + T('0', '0.1', 2); + T('0', '-0.1', 2); + T('1000', '999.5', 10); + T('-1000', '-999.5', 10); + T('999', '999.4', 10); + T('-999', '-999.4', 10); + T('1000', '999.500001', 10); + T('-1000', '-999.500001', 10); + + BigNumber.config({ROUNDING_MODE : 7}); + T('1', '0.1', 2); + T('0', '-0.1', 2); + T('1000', '999.5', 10); + T('-999', '-999.5', 10); + + BigNumber.config({ROUNDING_MODE : 8}); + T('0', '0.1', 2); + T('-1', '-0.1', 2); + T('999', '999.5', 10); + T('-1000', '-999.5', 10); + + BigNumber.config({DECIMAL_PLACES : 20, ROUNDING_MODE : 3}); + T('546141272243.39871532041499605905', '111111100101000100011100111100010110011.011001100001001000110101000011011001100010111000110000101011000010100010110111100010010000011010100100001111010010100', 2); + T('-761392382117509615082995635394.835132598876953125', '-1001100111000011000100000100010111000100100100101110010100101000000110101101100101101101010011000010.110101011100101101000', 2); + T('18181', '100011100000101.00', 2); + T('-12.5', '-1100.10', 2); + T('43058907596428432974475252.68192645050244227178', '10001110011110000101000000111011011100000010011100000001111011111011101110111111110100.10101110100100101011101101011011001011110111001101', 2); + T('-50063197524405820261198.16624174237994681863', '-1010100110011110111001101110101001100100001000111000001111110000001101001110.001010101000111011010001100111101100000001111110011001111100001101111001', 2); + T('12659149135078325508.50965366452082459802', '1010111110101110010101010001000100111011000010010111110100000100.100000100111100010101001100111010110011101001011100101110', 2); + T('-6387062313767439324325.28595431079156696797', '-1010110100011111001001011101001100100001111011000110000100101010010100101.0100100100110100010011010011110100', 2); + T('1396.09066858848154879524', '10101110100.0001011100110110000011100111111001001101100', 2); + T('-13243297892469.48301514260489275543', '-11000000101101110010000100010000100001110101.0111101110100110111000010110000011110101111101100110', 2); + T('343872.5', '1010011111101000000.10', 2); + T('-27858197522682350277663998.90234375', '-1011100001011001100111110100111101101100011110100111111111001110111101001110011111110.111001110', 2); + T('11350269087477005972403595905463622183936313327592261705214528.375', '11100010000001100111100001010001011000011110001001101101000011011111011100111010110101011100111001110110111111001001000111101000100100011110011011110011001011101010001100001001111010111110010101001000000.011', 2); + T('-4582111067006609431937422134.8848765093534893822', '-11101100111000111011110000101010101111000001100010100011111001000111010110000001001100110110.11100010100001110100010001010100101011', 2); + T('517236958880385002164572266126922644', '11000111001110111000000001111111110000110111101111101110011100111000000111101011000000001100011110010000101001110010100', 2); + T('-21553306071707458208211095787817816237164981584743591.29723221556402690258', '-111001100110110101111011010110011000011000100110010000110101110110101011101011100001010010101000000110111100101000110100111001000111001101111100100110111001010100110010100111.01001100000101110110100100010101001010100100010100101', 2); + + BigNumber.config({DECIMAL_PLACES : 20, ROUNDING_MODE : 6}); + T('90182851032808914967166718343839124510737262515334936.05372908711433410645', '11110001000010011001110001010101001001001000011011110000101001011001110011010100000001001000011000010101101101000111110111101000001101000101100000101011100110000010111100011000.0000110111000001001100001', 2); + T('-328.28125', '-101001000.010010', 2); + T('606266547022938105478897519250152.63383591632958904971', '1110111100100001010001101110110111100101000011011110001111001011010010100111110100011000101110100101011101000.1010001001000011000100100001001110101010011100000110001', 2); + T('-1236693955.36249679178679391345', '-1001001101101100111001111000011.010111001100110010010110111110011010000100010011010101010111111100000101001010101', 2); + T('6881574.93937801730607199391', '11010010000000100100110.1111000001111011000100111110011011101001001100001101001011001010111', 2); + T('-341919.144535064697265625', '-1010011011110011111.0010010100000000010', 2); + T('97.10482025146484375', '1100001.000110101101010110000', 2); + T('-120914.40625', '-11101100001010010.01101', 2); + T('8080777260861123367657', '1101101100000111101001111111010001111010111011001010100101001001011101001', 2); + T('-284229731050264281.85682739554010822758', '-1111110001110010010110111100111001110110110001011011011001.11011011010110010000101001001010001010010110', 2); + T('1243984453515709828041525111137171813652.844970703125', '1110100111110111101011000011100001010011001110000000111100101100010010000100010000101010011101011011001000001111100011010100010100.110110000101', 2); + T('-4208558618976524911747722597.24609066132409893216', '-11011001100100111100111100111110001011100111101001010011111110000111001100101110110101100101.00111110111111111100110000101110001111001110111010101110000111110100111001110011010001101111001101011000001011100101111011110000001101001111000', 2); + T('1268683183361093666211101090.703125', '1000001100101101110000111010010111000000111000111110001110111001010100000111111100110100010.10110100', 2); + T('-105641.26311671037711231997', '-11001110010101001.010000110101101110011101111000100001100111001110000111000011001001001000110101110001101111001101000000111000011100001001011101111100001011101010111101100010010001110111001110101010110001101110010011', 2); + T('473340007892909227396827894000137.5', '1011101010110011001000000110110101100101110011110011001100111100110101100011010101000010000000010101000001001.1000', 2); + T('-32746.47657717438337214735', '-111111111101010.011110100000000011110110001100011111111100100101111010110001110100001011010010001011101111001100110011001010010110001000111100011100', 2); + T('192.49070453643798828125', '11000000.01111101100111101101000', 2); + T('-1379984360196.47138547711438150145', '-10100000101001101011110100100001100000100.01111000101011001011011111111000000001', 2); + + BigNumber.config({DECIMAL_PLACES : 40, ROUNDING_MODE : 2}); + T('-729.0001524157902758725803993293705227861606', '-1000000.00000001', 3); + T('-4096.0000152587890625', '-1000000.00000001', 4); + T('-15625.00000256', '-1000000.00000001', 5); + T('-46656.0000005953741807651272671848803536046334', '-1000000.00000001', 6); + T('-117649.0000001734665255574303432156634721649541', '-1000000.00000001', 7); + T('-262144.000000059604644775390625', '-1000000.00000001', 8); + T('-531441.0000000232305731254187746379102835730507', '-1000000.00000001', 9); + T('-1000000.00000001', '-1000000.00000001', 10); + T('-1771561.0000000046650738020973341431092840981941', '-1000000.00000001', 11); + T('-2985984.000000002325680393613778387440938881268', '-1000000.00000001', 12); + T('-4826809.0000000012258947398402566721524761600832', '-1000000.00000001', 13); + T('-7529536.0000000006776036154587122781861854381443', '-1000000.00000001', 14); + T('-11390625.0000000003901844231062338058222831885383', '-1000000.00000001', 15); + T('-16777216.00000000023283064365386962890625', '-1000000.00000001', 16); + T('-24137569.0000000001433536083296850401481727781882', '-1000000.00000001', 17); + T('-34012224.0000000000907444262711670884293370452072', '-1000000.00000001', 18); + T('-47045881.0000000000588804597472215429921222500439', '-1000000.00000001', 19); + T('-64000000.0000000000390625', '-1000000.00000001', 20); + T('-85766121.0000000000264390375792455941496210138949', '-1000000.00000001', 21); + T('-113379904.0000000000182229445394427114965206410085', '-1000000.00000001', 22); + T('-148035889.0000000000127696005408659110598172017909', '-1000000.00000001', 23); + T('-191102976.0000000000090846890375538218259411675049', '-1000000.00000001', 24); + T('-244140625.0000000000065536', '-1000000.00000001', 25); + T('-308915776.0000000000047886513275010026255956100003', '-1000000.00000001', 26); + T('-387420489.0000000000035407061614721497695336509027', '-1000000.00000001', 27); + T('-481890304.0000000000026468891228855948366647868677', '-1000000.00000001', 28); + T('-594823321.000000000001999014833671504164315094574', '-1000000.00000001', 29); + T('-729000000.0000000000015241579027587258039932937052', '-1000000.00000001', 30); + T('-887503681.0000000000011724827159637921277158030113', '-1000000.00000001', 31); + T('-1073741824.0000000000009094947017729282379150390625', '-1000000.00000001', 32); + T('-1291467969.0000000000007110309102419347878538765581', '-1000000.00000001', 33); + T('-1544804416.0000000000005599750325378321880787999147', '-1000000.00000001', 34); + T('-1838265625.0000000000004440743054270216786320984887', '-1000000.00000001', 35); + T('-2176782336.0000000000003544704151217464391770978328', '-1000000.00000001', 36); + + BigNumber.config({DECIMAL_PLACES : 51, ROUNDING_MODE : 4}); + T('1072424547177.982891327541533302850175278158817253467459228776101', 'donxvwix.zdts', 36); + + BigNumber.config({DECIMAL_PLACES : 86}); + T('824178538787196749922434027872451367594239056.93473392033316110609748881918323116875731371037529199959272159196515804304815690839727', '402kfhkd37bt5n8scr1ir9ndlrnipig.s17oe7rkhi91bh', 30); + + BigNumber.config({DECIMAL_PLACES : 84}); + T('9560389177469634483515162.499335215204179931606951906984830542647805834768203380512715304247460734647288652625', '195qdkkqsa8shmhp9e.edr89', 29); + + BigNumber.config({DECIMAL_PLACES : 65}); + T('5955289028666603391738616069969.70235175643053599414353772852590894151261634747374296179598348968', '8qp28dk3js2iqksmqaqnq.lntnif5qh', 31); + + BigNumber.config({DECIMAL_PLACES : 49}); + T('27603501710202437282037.4945845176631161140013607910579053986520224457133', '42545302442500101544532043113.254455200225412543300022520330204033', 6); + + BigNumber.config({DECIMAL_PLACES : 39}); + T('9464300204295306111422098057.77248824166891668678144149703717008528', '25473f3dbce5cf3hg8318d7.dg52d120b14ea966a7ag06a2gh03', 18); + + BigNumber.config({DECIMAL_PLACES : 15}); + T('133262758349237628352120716402.993431117739119', '3bkobquqthhfbndsmv3i.vp8o0sc4ldtji02mmgqr7blpdjgk', 32); + + BigNumber.config({DECIMAL_PLACES : 65}); + T('171510920999634527633.53051379043557196404057602235264411208736518600450525086556631034', '1fqecn4264r1is.ijur8yj41twl9', 35); + + BigNumber.config({DECIMAL_PLACES : 48}); + T('325927753012307620476767402981591827744994693483231017778102969592507', 'c16de7aa5bf90c3755ef4dea45e982b351b6e00cd25a82dcfe0646abb', 16); + + BigNumber.config({DECIMAL_PLACES : 48}); + T('72783.559378210242248003991012349918599484318629885897', '11c4f.8f33690f15e13146d99092446da', 16); + + BigNumber.config({DECIMAL_PLACES : 81}); + T('8535432796511493691316991730196733707212461.36382685871580896850891461623808', '9l0ah4mf8a0kcgn44oji4kh7l6fbenb.929jlggo43612jfn', 25); + + BigNumber.config({DECIMAL_PLACES : 7}); + T('0', '0', 2); + T('3', '3', 24); + T('0.037037', '0.1', 27); + T('101412023101671912143604060399016691636944374947585694881897391246499475847835837224977373985157443438754012038820105175407623679155088073411120684342336808325631625647896282357928709212286943830565579566232670291284084535962556769836340401310575784301282705195128879424575312893.9', '999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999.99999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999991999999999999999999999999999999999999', 11); + T('15398955012055570438.9425184', 'ST87ST87ST87S.S87TS87TS87TS', 30); + T('2126934655697951.030303', '11111111111.1111111111111', 34); + T('-288494149172542947905560340081675757349.9789739', '-P98IJYP96JHYP95DPHJWPH09Y.Y98HO8WH58HW', 35); + + BigNumber.config({DECIMAL_PLACES : 31}); + T('4060090888512781039564383580983002345701981946441239.3428571428571428571428571428571', '4hv6vl92gvkmumr0a6ley0dhkwmwfe35oo.c', 35); + + BigNumber.config({DECIMAL_PLACES : 90}); + T('20398136837.975941624007641435905199481124700109083958314345873245346912136478926756110974638825468924', '5MI4K5MF.MA66B0L4HK8DK35LI3D0G9JFF7LBB27LAKH3E4FCEJM', 23); + + BigNumber.config({DECIMAL_PLACES : 38}); + T('42689628837110945219.60963984922125154547359100149049425936', 'D37AFB2193DJ265.CGHI7F1BK1I9GJ', 21); + + BigNumber.config({DECIMAL_PLACES : 59}); + T('893835640746065892983175797034880314945754459977061255725623898879842611', '4231231434203102220114420330232412332321132204022241104411014023324140104333412232222433424401214430421', 5); + + BigNumber.config({DECIMAL_PLACES : 100}); + T('175', '67', 28); + + BigNumber.config({DECIMAL_PLACES : 59}); + T('683674717563732788139425742102304147', '23BXVQVK5NK29XCNPM7JWQQC', 35); + + BigNumber.config({DECIMAL_PLACES : 63}); + T('21872738004815869.777777777777777777777777777777777777777777777777777777777777778', 'E8NB0D88AN2D.IG', 24); + + BigNumber.config({DECIMAL_PLACES : 2}); + T('4839094569478687835499021764036676797809986482983355.46', '9G041CFCPN92FSECBIHHL1F1I74FJMGAKTR.EAJ7JQ', 31); + + BigNumber.config({DECIMAL_PLACES : 2}); + T('198496092814270915085258754228681831655498041942', '24310400201333231203024322334002413400114320223240014320424444320232', 5); + + BigNumber.config({DECIMAL_PLACES : 5}); + T('7371249.07083', '93089.23M993NGABNLEP', 30); + + BigNumber.config({DECIMAL_PLACES : 47}); + T('799580158552527670.51524163982781306375625835799992154433181428013', '1C5C994CD5A7E49A.7ADE19484CE921B8EE7', 15); + + BigNumber.config({DECIMAL_PLACES : 64}); + T('16165422251964685360633312857381850497426314130782805.0722805578590765752365085976081394656988159695365026477063128458', '184254BE3B14F86L7HPKEOIIJKHCQ3DDBCPG5.20IJJ', 28); + + BigNumber.config({DECIMAL_PLACES : 66}); + T('321903599394345741344181790866033344020400577177.313819548430693134687858394581066124770210878514089611637812764975', 'GKE2D93H4K55C41EA627I1867CEFFCHBHE8I.6C85JF7D0BFDJFK4K', 21); + + BigNumber.config({DECIMAL_PLACES : 38}); + T('66906978329149775053912152738679.85034153550858840284188803538614532877', '2011110022202010100200021000121022200222101110012102220102212010111.21122122002110012111112102002110221102120102', 3); + + BigNumber.config({DECIMAL_PLACES : 49}); + T('1334535467.5658391510074236740492770511046811319813437111801', '45033235646.365040260503443445435151335014', 7); + + BigNumber.config({DECIMAL_PLACES : 62}); + T('26234523211578269977959969', 'LMDG5KNKLAUCSCNH1.0', 32); + + BigNumber.config({DECIMAL_PLACES : 21}); + T('572315667420.390625', '10250053005734.31', 8); + + BigNumber.config({DECIMAL_PLACES : 0}); + T('135378457250661080667637636173904073793598540954140', '1002012000221022001212121111002202200112011211012200211202012002222102020101100001022121022011000222110010.012011121', 3); + T('19121180169114878494408529193061279888621355', '30130433145052134410320001411315120554033203511455405455', 6); + T('121756633', '1I0JBBC.F628AF202451951181911H3HGID95I855056I', 20); + T('3943269', '7370130.225184', 9); + T('491578', '1700072.2013436326', 8); + T('7793119763346', '6A06CF7K7G.58CD39A32GE', 22); + T('7529497809730458840', '4BI52A83H0F7720.6G912C3J4I6H7HI1I41', 20); + T('46865454464741700656', 'BF6CDEA9FDBKKB.6G9A74QO718PHAK', 27); + T('304', 'F4.18180D', 20); + T('744', '453.61845741C18C5B7AC08A', 13); + T('246', '77.MS', 34); + T('191110529149', '2617704640174.75763527113244751520622', 8); + T('6', '6.8E2FCGH', 18); + T('11952558583', '49E4EDC8C.C86', 15); + T('1486467157880871503427980640713668', 'C0776B7908614278DD33549496D36.539A196725', 14); + T('13069', '5C43.B25BB7338', 13); + T('811', 'R1.6', 30); + T('1092443496', '1443DA51.G5FHF0121H2F', 19); + T('995982886869648407459143', '1HJAHK0FKDN4LN29FI.3DDG4GCBBFJGOM648JBCCCBE5', 25); + T('2563', '42D.9MBNBD3CHC961K4', 25); + T('5165465768912078514086932864', '5165465768912078514086932864.15061794310893065985169641395', 10); + T('5471', 'B6F.18F0HFAK', 22); + T('10463269570005574', '2V0X3OKD7B9.VOFRSL', 36); + T('303213556691515289188893743415846', '5AMIB6B7CEFJKJEL5H6CD1K5.H7996', 24); + T('73885536580075722710224913630', '111011101011110010101110111100111100010011001101110011011001010001110110111100101100010011011101.1111100101011011100000101001010110110010001000000010100000111100001010100111110101', 2); + T('72678037004728932464472011232185435761', '1J6F1EG58J959DDJ54HKBIHG6625B', 22); + T('7', '111.01010000111000100001000010011011000100101010011111100110111011100011000000010110001010111000011000010110011101001010', 2); + T('281006', '1000100100110101101.110001110000001100011001010100001110101111001100101111110011010100011110111010101000110000100010110010001011101010011000010000100001010100010100000000011010001011110101111110101101110100000000001', 2); + T('8573576497511403672686', '1110100001100011001000110011111111011101101000100111100001101010001101101.11100010000011111000001110011100111', 2); + T('40455365809845824222189300824558751', '1111100101010011010100000001111111110100101001001000000110111101001100011110001000011011101100010100100110010011110.10111100000011011111100110100101101111110001110100011100000000001111111001111100011011100011010', 2); + T('46275491328393338072', '101000001000110011100100100010111101100011100011011101110011010111.10011001111111100010011010101101010001010001001000111100010101011101100011', 2); + T('1433628110429482851535358742130957026457687710451052766168752', '11100100011000111101111111011100111100111011101101110010101011100111000110111010010011111010101010111010101011110111101010101000011010110011101111010011110011110111001010101001011010100000011010101111.10', 2); + T('888', '1101111000.01110001001100110110011001000100101110001110101011110000100001101001000011010011111110111001001110100110001101011001011100101000000010010111111111111101101010110010101011010000101110000101100101100000101110011011000101110101', 2); + T('1901556394517909524025875', '110010010101010111001010000100101110100000111100010000110000001011001001000010011.0010111010110101000001000001101010001100111101111100111010011011001000100000111010011011101110010000', 2); + T('260195957172449000', '1110011100011001101101100000101111010000011010111011101000.000100000111110001011101010011011010100011100110111010101001010101000011110101100010100111100100110000110101', 2); + T('654853', '10011111111000000101.000100010010100101001111011111101101010010001000100110110101110110010111010110000110010001001101010010110010110100101011100011101001110111000111000010001001100', 2); + T('186', '10111001.11001111010', 2); + T('45580573', '10101101111000000100011100.1010101100100100101110001110001111101010110011101110001000000100111011011101011011', 2); + T('74504933', '100011100001101101011100100.1110010001101110101110100000110010010100000111101100100011011001011011111', 2); + T('2', '10.001010111110111010100000011010000001011010110111001010001110100110111001100100001000011110101100101', 2); + T('10653067', '101000101000110110001011.0001110000101000100000101011010100000001011100001111110001101001110110111011010000011011000000100011', 2); + T('3103819016502701158728118887794', '100111001011001111101011101010010100101011001111011000001000110100100001001011110010001110010101110001.111111100111100100100111001000101011110011110011000000000001101010111101100010100010100001100000101110100111010000010011001', 2); + T('70726621184417493343184041374', '111001001000011110110000100110010000100100000101010100001010011100110000100100110011010110011110.0101000011101101100111001110000111010111010111101101101100000101011010001011010111010', 2); + T('4639750624206524979284798532410213523141234414', '11010000000011011011100110011110101101001101111100011101110100111010111000110000010010000001101010101110011101110011101101000111011101010000111011101101.11111111000111101101010110010011', 2); + T('2377749182359', '100010100110011100111001010011011110010110.11010', 2); + T('26', '11001.100111001011111001010011010101011000110110111100011100101101101111000001101001000011101', 2); + T('389501027984', '101101010110000000100100000011010010000.01010001000000010100011101101100001111011001', 2); + T('5169', '1010000110001.0010001010100001011111010000111010001110110111011111110001010000100100010110000110111001110101100011110100110100111001011100100111101000100011110001011011000011011000100001100000000100001010010001010110001010010010101011', 2); + T('2072974714841016', '111010111010101110000001001100000011010011110110111.10011111010001011000011011010001100', 2); + T('3', '10.11', 2); + T('6569814675686107322725113', '10101101111001101100101111000000001011111101000101100011110001110110011001011111001.00100011110010001110011001100001000011000010100101011100101000100101111011011101000001110100101001001001100010100001001100011010011011', 2); + T('984456092178345483540429', '11010000011101110111100011000000110111000100100101100011101001111001011111001100.10110000010110000110100110110001100010111001', 2); + T('6729551587237203748588625739672573822682543614592964521541035860', '100000101101111001111011010110111111110111000100001010001101001110111111101100011101010001101011100011010110010100001100111110101010111110001111100010000111000010100001010011000111100000000000101001110011101010100', 2); + T('329347347', '10011101000010111000100010011.0001101000000100000000011101110101011001000011111100110110000100100011110001110110010011001000011010001100010010000101010001111000110', 2); + + /* + BigNumber.config({DECIMAL_PLACES : 5000}); + T('6022239845523628300792137851333617197616053606580805361460444571405159915948416057193556599026984420186847535714193186506779546.45562364433149048376909884425264838196627845956471301832353037216028002220557941081995561235866533298815815922678466806108234749212464649692584770778636508682771855319769124974649405509297732509500507702362168384314107653609786430967640203107454687605887412794096157913528626853706056446855881531545195000734665133919578058463901659136523244159808597378906266443321758454939816465192126295342280568880123960605134416002321981988529228618898697072789772080291342478304351440847738944612720456898241717924298967008171252854355869450188166408302699162551054528159131912895298938197347616702659802404073209181609536327921587288300421033874114565425368107966522446454855931005917304136935908432754883056828263061549088965135169569684456008477541982066123091033968877584432281431379815341125413388350665252537980749041131051878291040173564632382596634048981529497244126378198699352829834835751033446902713765443032376617851981166182096456938914400530557912226087362980440980578460246231055456778104006415527727260144095903127275419414807349147304707405254543427544838982731455334927521421806120799785694323203756123916853431908716090161389876298981034132804663437564753354768639621168658600102486177710685317251506858936381061516323456154147708084807303368146788089168077930658523442473995088742325773226839695051398002486616767897842485900547744342133455226785895506239035265653618936400640974168752824304125514038750444312714907633618171991355429431759439952307076477817217105979944570733869770158307019913889590797598165139754807215433076623400151503800862360578168290788982250598565524133502841168163050960633073023086590377971028607254136702588526777419958903274032568187324150715013909702207304519885442684246154424782763896029535730853643906929626045280406345718447643848365642454794436200184559384104514455046474916698853542487141393373504315472859932883938412782930021292976807483126232761531618262529099148770786402625394165285080740814372385937680961636708062338551092904431743317072664203085901678724391714803254679215220462002284827189814215842974479924985602985736840346662287388320297983891277984351215430795679480190118537345626368022990139894769505155754558312126932952671414774316202379066527423168541384888466209214314154656662254580694814197800298638656821314275995533216305058772309199532434503635943016121377240397454883296750491850460737680808149474215115525147893924328495593024234124241923099439564731922184295950348564035465169266840591302330909689592731054406376096204521212856678638595326253266853596009793769540552472576546585623610514603873467842223218383413469519311698301974531524237384072650293621563877939654382136609518592602998975525783497411981332278754077646791148254910680215716571959847794999990247155904843380251881145330210230503708687521912940355094829433297671479621259952291050451507069861516277689852652120824074226408244695466776128994445706937283501626742574832399257358784925070613374733443923318045672485243752481960132066316477982467772782652564401225093039509921674057244503251628994886108332809253787838807087045292349084813153418737514141651084390353861740493248726168058140952618277156388955744920898401233144729995305891815236381631092752549773465825925187270747564816278320933350674627641648384663562427197990911234109442852754919229966716090476391048342193483833862003532792898637819146892137188859066257902207068814887904172213161571698554092509870791904603500154815868135120390375352892915790562057269104998986616170310087063962096170912045311169499205938470776723319613174250097225084425676690856982407000880056724620818824503061125725461684399498255127313452269964097609152404362732856503883361007911375417900940044634592803539714125533402906835228146503351037643506565226937040944039386627046902360157120659188931448110133381205133170527455488802527077001776856346493147507947490287029277744578775527372923256995419864299678429507426389922953403127483507515479327442988251888961453922972301510643563216583092771781978061366034284974632235631032912241967179283080214267387399797724014498036440569206078211810225217786455419707373248180986740603131905953623973926533609693886155905704306604100315482559358455550018630679789876126218887092040393676456180793809957296390894821682732929521075917502388856575712596709103037671223414578669707747332478371632108168893761388532592606235363056704156483680099201459584177626289636906715420355110405019316492710052426228518585155223882424429151702414484321844004913577523588611847871639322325737509992577988369672218344719659244872142799432036756062631109614278597717292745716623038732618863518899700937188424653264323754203446589769545236970901181775744966400800101730416875793459251675109469665985644198416152029852905095989068691042302222376893958470550095432860142880876451168971479312433163514921818509750264250472945722655641064950528004153004188190549429918759335822341644887168398385954219498973215722761336436971169084930492144143419812959401754073906781284401436962270645729138821367459312144327', '58LURTSHGLIURSHG8O7YH8OG754YOG8O7YGYG75EOY5EYGO87EYOG87YG407Y87Y1IUHJROLIGKHGERGRE.GEHKRGUERYG0908Y76981YIUGHFIJVRBKOFUHEWO8T9343097', 36); + */ + + BigNumber.config({DECIMAL_PLACES : 20}); + + assertException(function () {new BigNumber('2', 0).toString()}, "('2', 0)"); + assertException(function () {new BigNumber('2', 2).toString()}, "('2', 2)"); + assertException(function () {new BigNumber('2', '-2').toString()}, "('2', '-2')"); + assertException(function () {new BigNumber('0.000g', 16).toString()}, "('0.000g', 16)"); + assertException(function () {new BigNumber('453.43', 4).toString()}, "('453.43', 4)"); + assertException(function () {new BigNumber('1', 1).toString()}, "('1', 1)"); + assertException(function () {new BigNumber('1.23', 36.01).toString()}, "('1.23', 36.01)"); + assertException(function () {new BigNumber('1.23', 37).toString()}, "('1.23', 37)"); + + assertException(function () {new BigNumber(12.345, NaN).toString()}, "(12.345, NaN)"); + assertException(function () {new BigNumber(12.345, 'NaN').toString()}, "(12.345, 'NaN')"); + assertException(function () {new BigNumber(12.345, []).toString()}, "(12.345, [])"); + assertException(function () {new BigNumber(12.345, {}).toString()}, "(12.345, {})"); + assertException(function () {new BigNumber(12.345, '').toString()}, "(12.345, '')"); + assertException(function () {new BigNumber(12.345, ' ').toString()}, "(12.345, ' ')"); + assertException(function () {new BigNumber(12.345, 'hello').toString()}, "(12.345, 'hello')"); + assertException(function () {new BigNumber(12.345, '\t').toString()}, "(12.345, '\t')"); + assertException(function () {new BigNumber(12.345, new Date).toString()}, "(12.345, new Date)"); + assertException(function () {new BigNumber(12.345, new RegExp).toString()}, "(12.345, new RegExp)"); + assertException(function () {new BigNumber(101, 2.02).toString()}, "(101, 2.02)"); + assertException(function () {new BigNumber(12.345, 10.5).toString()}, "(12.345, 10.5)"); + + T('NaN', 'NaN', undefined); + T('NaN', 'NaN', null); + T('NaN', NaN, 2); + T('NaN', '-NaN', 2); + T('NaN', -NaN, 10); + T('NaN', 'NaN', 10); + T('12.345', 12.345, new BigNumber(10)); + T('12.345', 12.345, null); + T('12.345', 12.345, '1e1'); + T('12.345', 12.345, undefined); + T('Infinity', 'Infinity', 2); + T('Infinity', 'Infinity', 10); + T('-Infinity', '-Infinity', 2); + T('-Infinity', '-Infinity', 10); + T('101725686101180', '101725686101180', undefined); + T('101725686101180', '101725686101180', 10); + + BigNumber.config({ERRORS : false}); + + T('2', '2', 0); + T('NaN', '2', 2); + T('2', '2', '-2'); + T('NaN', '0.000g', 16); + T('NaN', '453.43', 4); + T('1', '1', 1); + T('1.23', '1.23', 36.01); + T('1.23', '1.23', 37); + + T('NaN', 'NaN', 'NaN'); + T('NaN', 'NaN', undefined); + T('NaN', 'NaN', null); + T('NaN', NaN, 2); + T('NaN', '-NaN', 2); + T('NaN', -NaN, 10); + T('NaN', 'NaN', 10); + T('12.345', 12.345, new BigNumber(10)); + T('12.345', 12.345, null); + T('12.345', 12.345, undefined); + T('12.345', 12.345, NaN); + T('12.345', 12.345, 'NaN'); + T('12.345', 12.345, []); + T('12.345', 12.345, {}); + T('12.345', 12.345, ''); + T('12.345', 12.345, ' '); + T('12.345', 12.345, 'hello'); + T('12.345', 12.345, '\t'); + T('12.345', 12.345, new Date); + T('12.345', 12.345, new RegExp); + T('5', 101, 2.02); + T('12.345', 12.345, 10.5); + T('12.345', 12.345, '1e1'); + T('Infinity', 'Infinity', 2); + T('Infinity', Infinity, 10); + T('-Infinity', -Infinity, 2); + T('-Infinity', '-Infinity', 10); + T('101725686101180', '101725686101180', undefined); + T('101725686101180', '101725686101180', 10); + + log('\n ' + passed + ' of ' + total + ' tests passed in ' + (+new Date() - start) + ' ms \n'); + return [passed, total];; +})(this.BigNumber); +if (typeof module !== 'undefined' && module.exports) module.exports = count; \ No newline at end of file diff --git a/node_modules/mysql/node_modules/bignumber.js/test/base-out.js b/node_modules/mysql/node_modules/bignumber.js/test/base-out.js new file mode 100644 index 0000000..500a5f1 --- /dev/null +++ b/node_modules/mysql/node_modules/bignumber.js/test/base-out.js @@ -0,0 +1,10818 @@ +var count = (function baseOut(BigNumber) { + var start = +new Date(), + log, + error, + undefined, + passed = 0, + total = 0; + + if (typeof window === 'undefined') { + log = console.log; + error = console.error; + } else { + log = function (str) { document.body.innerHTML += str.replace('\n', '
      ') }; + error = function (str) { document.body.innerHTML += '
      ' + + str.replace('\n', '
      ') + '
      ' }; + } + + if (!BigNumber && typeof require === 'function') BigNumber = require('../bignumber'); + + function assert(expected, actual) { + total++; + if (expected !== actual) { + error('\n Test number: ' + total + ' failed'); + error(' Expected: ' + expected); + error(' Actual: ' + actual); + //process.exit(); + } + else { + passed++; + //log('\n Expected and actual: ' + actual); + } + } + + function assertException(func, message) { + var actual; + total++; + try { + func(); + } catch (e) { + actual = e; + } + if (actual && actual.name == 'BigNumber Error') { + passed++; + //log('\n Expected and actual: ' + actual); + } else { + error('\n Test number: ' + total + ' failed'); + error('\n Expected: ' + message + ' to raise a BigNumber Error.'); + error(' Actual: ' + (actual || 'no exception')); + //process.exit(); + } + } + + function T(expected, value, base) { + assert(expected, new BigNumber(value).toString(base)) + } + + log('\n Testing base-out...'); + + BigNumber.config({ + DECIMAL_PLACES : 20, + ROUNDING_MODE : 4, + ERRORS : true, + RANGE : 1E9, + EXPONENTIAL_AT : 1E9 + }); + + // ---------------------------------------------------------------- v8 start + + T('NaN', NaN, 16); + T('Infinity', 1/0, 16); + T('-Infinity', -1/0, 16); + T('0', 0, 16); + T('9', 9, 16); + T('5a', 90, 16); + + T('0', -0, 16); + T('-9', -9, 16); + T('-5a', -90, 16); + T('4294967296', Math.pow(2,32), undefined); + T('ffffffff', Math.pow(2,32)-1, 16); + T('11111111111111111111111111111111', Math.pow(2,32)-1, 2); + T('100000000000000000000000000000000', Math.pow(2,32), 2); + T('100000000000000000000000000000001', Math.pow(2,32) + 1, 2); + T('-11111111111111111111111111111111', -(Math.pow(2,32)-1), 2); + T('-100000000000000000000000000000000', -Math.pow(2,32), 2); + T('-100000000000000000000000000000001', -(Math.pow(2,32) + 1), 2); + + T('5yc1z', 10000007, 36); + T('0', 0, 36); + T('0', 0, 16); + T('0', 0, 10); + T('0', 0, 8); + T('0', 0, 2); + + T('-5yc1z', -10000007, 36); + T('1000', 1000, undefined); + T('0.00001', 0.00001, undefined); + T('1000000000000000128', '1000000000000000128', undefined); + T('0.000001', 0.000001, undefined); + T('8.8', 8.5, 16); + T('-8.8', -8.5, 16); + + // ------------------------------------------------------------------ v8 end + + // 10000 integer base conversions generated from java BigInteger.toString(radix) with random values. + T('440155688144172', '101725686101180', 9); + T('101012012002102211212101002012121211210112201112022122012110220101', '11665560554201545341275846801989', 3); + T('16g621gjdfj387g8f', '878682490721226942575', 20); + T('23296228463551556aa7a803294013169936813630895547', '20254039346778828988686906345231844106054371456414', 11); + T('86', '294', 36); + T('j6angf77m93m', '29321388122089630', 24); + T('171634571716400543513334300705612071133717535572246575453160', '364584667335183828987221775272570428237696628507956848', 8); + T('79ih09ddbmoj6chgi', '5317189538963113735021341', 31); + T('17140110747560', '1043696177008', 8); + T('5mf9glgacka1oj', '8798568215457188744', 25); + T('14i0i1bijh5bb66318hjbe39el8ed7', '1038225938103094195672715196371622399149', 22); + T('3779577535435531065475', '3779577535435531065475', 10); + T('1101000100001000000110100100011100000101001', '7182272837673', 2); + T('v1r0gswws8mg7rg877gua', '132336254343195067504822207481070', 34); + T('1caiusm1ngmh8', '1101263079273875608', 31); + T('bcd583cc3014846', '132516316064365582', 14); + T('1656', '942', 8); + T('2iq2q6a', '1046997262', 27); + T('s0tb0wwdorr1don43twqe', '65743744003104369805298454218408', 33); + T('4', '4', 17); + T('13eb7d6c25678', '2652301005605213', 19); + T('63595846315682339605641914681670020', '63595846315682339605641914681670020', 10); + T('3192', '53640', 26); + T('18jd4fccghe', '86689784393126', 24); + T('ahn8jmcronn1imiwqqf6894boecrwtt', '92552461943195873402655551990866403102200950223', 34); + T('732a68649252780573256384a0762a874827823929485545', '64359755261128349657756381355778457151559256253657', 11); + T('o0502ci441waab54sxss84sdbiq3', '5373042738281691949642803579987183092210407', 34); + T('1021112001100000210210', '13373890500', 3); + T('40202343000', '39887250', 5); + T('8720081b5e09269094e56202843449cb', '24377982076224740260643696757107121341', 15); + T('1iomc2mqsn5qpt8h1f569gs852', '13789591701124129450628724568456423352', 30); + T('1eom414n8l1d9nfel48f1bmqmm0nmle0j3', '266719145838127409543902693002813822731463432657', 27); + T('13k56oq3m631lo954n2ohok7', '2181841744266177308465040173350263', 28); + T('454023134354435330523150501153110052125254133003305331', '863587285752958267795174798408995811866775', 6); + T('1d6ekejh1ik9hk6k718', '2338861492105483120978650', 22); + T('2', '2', 29); + T('1e6c', '15573', 21); + T('g57c69', '52060929', 20); + T('12020002010112222111002201112002020022001101201021102000', '303840883816576562846336400', 3); + T('117e081886a2b7dhh6b7ddc9g9dah881', '4703193157526229832838915604553828591088', 19); + T('120', '48', 6); + T('r3ph9dgk57p', '74774633365798895', 35); + T('8a0a2kj0d87f3m42i17h31kl60k28e4de70', '167827516964906460076306119782216338842769448945', 23); + T('2l055f3b4noi9po87stgqmchln5387', '18531519454051111130681336099858607562067947', 30); + T('421062013993955192a2221428707a96575292bb', '115579778299459540087492544347756755742382977', 13); + T('1bibgea4if', '526155599692', 19); + T('1497d29d3476a2a9780b34d03dd8d7b', '32297467668609167750315214037242897', 14); + T('1100', '12', 2); + T('3', '3', 10); + T('aj768i29h4hiaa4c21ehiad1ejcia8ig', '235542570596088783891401514707500777363576', 20); + T('0', '0', 26); + T('1057782', '1057782', 10); + T('10110000100', '67806', 3); + T('130301232102', '7543698', 4); + T('3iuna', '5311190', 35); + T('12120101010001002202210212202210210222212101010111220211201121001202001', '4647047674765599509161881404042506', 3); + T('19c1p4e5sc', '77422104704616', 34); + T('20jd875f0sb7eob641f2j2rogg5i22f', '150648633114646195779853741265975908572439118', 29); + T('fe5pdnmr6agww3hvvh1m5y6084tkm4qi', '11317796537927193164907314114830625186030646924078', 35); + T('115gekg30bl34558', '144730350757318919194', 22); + T('3fagc3b8m35ahj6346g1mbkh885b5159g2', '3176675255123809025734896069538375765072180396', 23); + T('5686he7d5bb824gci8i3e78c7j0ih', '14283076803292405590664992623911672377', 20); + T('1jmnldb1lfkrjoe75k7o3rednhb1f8h0', '1242551650400204544842102196394576048943170972', 28); + T('60bf8d3f1cb70827109c', '456880688358819786854556', 16); + T('340432530435433213034435253441422121', '6339719167942344530566282177', 6); + T('i38g07j7ie95b2g3533dfi075', '982752454390853323739173663368665', 21); + T('1h6t', '42509', 30); + T('642677755550042022420042650122720673705371422153432', '9341223088519577080757976073309527669316572954', 8); + T('4ddho197n710a2m273kka0e23l4g0h85b', '2462195801283263655162466534079464545810817636', 25); + T('1243240323034002400230042343332120411442100332', '45148599779050957102730921831342', 5); + T('88scnc9d', '228014337833', 31); + T('1170484020308451032231073707375108400760815', '14346468379928007582608703547513785950258', 9); + T('4823304938154542868234529244227621001', '4823304938154542868234529244227621001', 10); + T('1651372117475740354637456547', '4427164671782016593583463', 8); + T('7i2233ggjhb94938eb1bjeh9ah01c', '21220547440397899830782173177438536032', 20); + T('38e2f51l5226upuurq', '212488028484539189554322396', 33); + T('2302012223231313010303032233111031210011020131110321321303332231113103032', '62060333685205067717083070636012166725334222', 4); + T('978074cbc72b612330461c399a6cd9a5246e', '1383648770009475636965471306920429322557754', 15); + T('ttla4bfhg8ogcqe72ur1432jjo76ghc', '42713337532562165277151943846110614488089838124', 32); + T('61482faj92i2287770b', '1588859334544847514778811', 20); + T('3053066362454436563436414156651113001465631', '970611871710418073313798574789753891', 7); + T('28b74a2sl5cr8s1ki0sro011', '9881987714990620033551204066568469', 29); + T('9alod3a4n9ncieiqihlpehs8cqd1sd10dj2mb', '415054010142313409024004868502578691674339253356722226', 29); + T('120131131131201001210300133101113223032122100210332221130303031030', '2080853698331650615760995253176321127244', 4); + T('ihk308048gi1', '6604552742887513', 21); + T('a', '10', 28); + T('41179', '2854566', 29); + T('h0qpo1102o4h2k', '69043303761626479331', 27); + T('9g4baafceihhgf518g7bm7h20nkhed8b07m64', '471227319810157894343865948670273836507237979925524', 24); + T('dho5eqfqowsqv1meq8bquhml', '4406294486817687943635096558491220991', 35); + T('29bb5fdpe1kes', '1813313296055953458', 31); + T('8ff84083f', '62334898476', 17); + T('70a2g249a1da182if3bhf4db31b', '167580219569043944485242667799058497', 21); + T('5fl2a1id1b2jolhmhjlk7na7g', '51071422881267420196649258348708342', 26); + T('100022', '251', 3); + T('432', '282', 8); + T('3wr3swm6ubjrkvt', '16294970748730625951364', 35); + T('17168', '11807', 9); + T('35584293177335052090482862003912891468038390', '35584293177335052090482862003912891468038390', 10); + T('7998aldd', '33899695237', 24); + T('4kij6bl8043lpba7', '8045734455699535180463', 26); + T('4gla1701h5602l588', '29045123944032022935020', 23); + T('4krb3', '3804633', 30); + T('3211002241324002022113342004130434213023003244232433', '1531292744433422364552476748786320993', 5); + T('27', '39', 16); + T('3o6qpgd0', '104034477683', 31); + T('5dg2c119a0892cb61353d9b1', '116223645530706451323585167475', 17); + T('1156036607174723020034543345673164620146641', '103357460209213083948351046056291650977', 8); + T('41ib89ghdgeidg0039be199c3a4', '27490663465965934673955627614337404', 20); + T('e7k93m5', '6879430493', 28); + T('120223324040024130101444123240111221103312343230410102202103302323', '3849970071333132024959950921403659216898884713', 5); + T('jg36bjg950j6i9m8oi8glle21kh3j1kfc', '10649691942461568427422892625442894260778934762', 25); + T('4w4a6teferq6r5ik5ut62fual', '13835986798310811924322665391394254965', 33); + T('312490955c70', '5539379829789', 13); + T('emtaesbe76h7dk71h4bt3h8kg3bn69', '101339233480279275559007163118630302631547889', 30); + T('3p619b5fmg0l1632dd7dlo2kh', '88631790446416440440286264005548442', 27); + T('1341', '2757', 13); + T('f43426ggb18h6510e7fe84fh310b', '511382471492848290663092376073298210', 19); + T('6j41em7raogenfrjhgjkfkfh3eu', '3945233626117535310773506175958783010154', 31); + T('111641556162423641100614510003', '3807645289032672695383142', 7); + T('2696427c2f1cad979g08685g71f0h7h4hbh48289f4f', '124382154384973091480024194947893719797603463814945307', 18); + T('11845026586657305823549960872429', '11845026586657305823549960872429', 10); + T('1h64s71x4rusnjlx5s7', '9260237785040115157604241362', 35); + T('10311042615', '300721440', 7); + T('2451143b5ba7ca6943a', '262895985819802223782', 13); + T('jo11nn24j791mg1i8j1mhc47p255', '3189124189951034463858246698569851705767', 26); + T('10011232230103110332', '281029981502', 4); + T('iaa7a6e611gih', '41068316481138638', 19); + T('1912f60k5nd203ej1', '58775002826689939438559', 26); + T('2459b78a913708732', '438882964276198934', 12); + T('308258662', '133548968', 9); + T('347175', '118397', 8); + T('2l383movaqq6vge0t51d1asb5', '3534985310385748495852148058236481893', 32); + T('1002011011221201220110020010111000021211000120100020001121', '1695352250587759269039520513', 3); + T('121', '25', 4); + T('a0480880954109d', '292517771808862273', 15); + T('3g5c6881d68a6g3g7ded8f00ddc3', '6605800905697912313930823429368376', 17); + T('g9bnclea0di628jg02k69b75iaf6mld17akh', '33275613302454138474042464061355756382668628304497', 24); + T('3410345247354238502664518577282', '146560013392255863392167155830', 9); + T('21121101020212000010110210100', '58005313126803', 3); + T('2331003220030000131011220331231', '3405742490204409709', 4); + T('kepi6h75hclp6o', '210478662369536496313', 29); + T('14320202403220110112112043411443103144334124004312122302230433132031244204244', '256316960412695093498974392340639287985576426301944324', 5); + T('21oh0', '812300', 25); + T('637302200571726036177', '78099699617401957027', 9); + T('3h8nrbxu09bl9y59qd0x76mh', '2169701554867548714090537334110301769', 36); + T('5ei5i1ji6hf23g10036fbcgh9kg7b2c8cace9e', '265177220460106545362048683909814340097671193815436', 22); + T('2il', '1605', 24); + T('md18bbl3ikih980m8ijjm5hk37aboh7i26c4', '190769957856763978202455746822271950952451735582179', 25); + T('49a947b15', '11910266120', 15); + T('5563068134037605066000072214445077281483844846461', '35846490510257461400361080273583563758784437804', 9); + T('2326og3ij7pqp6nrqmbkkh6d4', '5822237723786017480562091732598915027', 33); + T('120133110323003200013220212133103302121120320212', '30316511656490491221060718118', 4); + T('16mdhr19sd5c5d5c0jjav97fu9o1', '267673848646358103096813679060486949796693', 34); + T('jga1bjl82k4ah11179fk5', '33833463661666075552032677215', 23); + T('c20kujdb', '514029069323', 33); + T('11226540043034355', '39624784159854', 7); + T('v', '31', 34); + T('14502011231234', '23602310374', 6); + T('kgl06leab96536b72hh13b4gd12', '5267876931068834999207837763071495773', 23); + T('jl7of6l89i2iabafma', '22471829516120804540402146', 26); + T('1450007a44290518221a532', '114367864225072949311955', 11); + T('298fe1gbg9c72', '1491696784725786', 17); + T('250711224523642463565466455623', '408358568053857594342267795', 8); + T('9flo2bq373qjcgkp3e6k71qnonehh', '316990433419229469352412547876129922440461', 28); + T('1203662265620020640221323330644160123013', '1179984859885559189864263643508373', 7); + T('16x9ld', '72095953', 36); + T('67d8i74a4e8gg43', '73378543709714711958', 23); + T('58398378841218155357', '58398378841218155357', 10); + T('dy3hf3dta7', '1101392127345132', 35); + T('ko6nkrons9d0fc0bil4i3qi63e8ff816f302', '31822762789078625728496093591661767305613028321798487', 29); + T('198g4ec36ah639', '31806677232541503', 18); + T('45243354620633', '461990081612', 7); + T('775823b0c15', '4319863197095', 15); + T('g28he7j4icef0bcbjgj8', '1201572315079967980347229812', 23); + T('g4d4dqb4', '169104269893', 27); + T('18jc9hh8c8im15d8a09i8', '5496196321990395030043538936', 24); + T('4g9282g604cbh7da78c99ca7', '365574202021938047866967922307', 18); + T('e5rf3kpheo', '206076021040648', 29); + T('713414314586b73', '27941755511268212', 13); + T('619739902555681054508877700190814647189340192531531', '619739902555681054508877700190814647189340192531531', 10); + T('20111011002200122', '93082868', 3); + T('100230221211233101331231031001203331331003102231102112012330112112330000132301133133021', '6247333955182528679256744382669521818617928418195401', 4); + T('31464741215652662410302172736', '61905218854453628692395486', 8); + T('708nesooj9eefjp', '3352746100369361432095', 30); + T('8fidd470c39jbio0fqbmo4r8ad', '12923744867491474626257779584052881637', 28); + T('1151171074647051031165674252760067', '764101851531641191689328779319', 8); + T('11043032215231230545441315401541344541210241405152211', '34556143670121676351099193602542355133167', 6); + T('7451b5a50511996bac9b28b0', '306395754266354995755659445', 13); + T('13ir12f', '2389675047', 36); + T('2e', '72', 29); + T('112551341310022250543503544424133243522435', '100211013146144877918564374426903', 6); + T('15g4rioci4g3qfn9da47hln', '177378797438603886266961020628820', 29); + T('313qoor3rl62hs', '111971617480570505788', 32); + T('11be338996c3222d74125b207e1c94c74384dc344', '123816432746013151845557555294618280342247674364', 15); + T('510151', '1885261', 13); + T('al5ra6h4', '293932103440', 31); + T('7p7gq6ao', '171498767724', 30); + T('4aip7ke83a0mnoa31e9hc64c', '3668246283124124964717547932816798', 27); + T('26ffmuj7qfj5urc', '2600404271332517411692', 32); + T('1228jnkc879102l6klfmhgeh7b3k9kjem3chmk', '1271226839086861348134838781391638338414049937252452', 24); + T('3m1dkpcjl6se25ees', '941019906537302808213671', 29); + T('nvk4t2ijr0pt6a', '885016896759055316170', 32); + T('353463695235911', '353463695235911', 10); + T('2592c02eb41095d60c7b3ae4c19254bcb7e451', '77783442256833108339948757455065770782318226', 15); + T('101001110010100101010011101100111001101001100111101111111000101011011111000010011111', '12630360807685587318206623', 2); + T('10a94b226bd2a3cb347d8239a354494baa876d3c', '7719527647026016534723119044578909360854733857', 15); + T('10112100000101212222210120202020120022212020022002012220222222110100101012200010201221221112010100', '22465908588350531170561340022119338184319644550', 3); + T('3526', '1294', 7); + T('trqchmprtris8jhmt53mgfph2bqlk1rdlj', '166379098618921452590839536518689519047997516551349', 30); + T('amqtg5blk7b3', '540363976066013685', 33); + T('5bb8f0da136651ih36if43c9', '1446604699008863640297362261438', 19); + T('169095c1igm9lagle03', '18254265908591826520258753', 25); + T('5ca72lphe8b1g6na87l028nk7', '49874912506100858512179674721524459', 26); + T('db2hm3or5qm99cejggihbqj24o', '20227071482916596230414576969129951720', 28); + T('3e06d7bed9cl3hmcdh4rk6d', '518456522736295870554795311386837', 29); + T('3783552669408621336694762820722', '3783552669408621336694762820722', 10); + T('8plkxhiid9r48fmxut8j', '1097250217160493743377273093271', 34); + T('114c00b88e376egfab533', '4369484999824057755698184', 17); + T('14983603362604292572455838465420099066461810', '14983603362604292572455838465420099066461810', 10); + T('509d164ce8562017ac87ed954c322aabb3eee76', '2478749182617286136760963476865027709609349886', 15); + T('3fkhedjllk072h2jdi0722fndca0nm2jh9d', '309586105474608741121591603678170578618026772773', 24); + T('1iq6sj905ic2n1b75s3bhc97qjj82iclshg7', '2522966691781107980265563729308641205273869137106927', 29); + T('2a6cba18b56b3', '155884237022909', 14); + T('8bddeba1aaa3c4d55a4b1496ae4556aa273d', '1280685511801156504844254243757080956139633', 15); + T('2cd', '2733', 34); + T('8n6fnlac07f83b3hl5a2cdnjen9fig989', '1316884479548601245836236435764995581418738953', 24); + T('6fj39908aajh0f7eici5g653270g2', '18248065317134624862612052897609976322', 20); + T('100442024203540041', '17296877228281', 6); + T('864lljmcga', '14895956013429', 23); + T('ida78k0lnm720jk42co06325dndfincdcf', '251216020257140411511559806773250633017763086565', 25); + T('2202302331132212020233000022322031121', '12012243725278503478105', 4); + T('6i6jabi6j', '532166217509', 23); + T('6cmh6r7doponp2ajcjoo2pn87eakbgg', '167803056903383062748024010526394587708233856', 28); + T('2360598122619478480207180074620237', '2360598122619478480207180074620237', 10); + T('4fdgfae5ai1dfggc57jb56gfdhh', '32108887594999276898768884821885557', 20); + T('30316cbc668127583b5c359b17195c7680c', '225869808340726521462856371477325948274', 13); + T('b0a4c9igh1d34258f', '33188485929923604704131', 22); + T('9b81ii', '75424770', 24); + T('150j0jm2n63ana812', '27968036853522567739402', 25); + T('2rxjdeshl7hv031gh8x8tal1', '913145329049266795302812350123389486', 35); + T('11ba64655696c81c01230a5c4', '622476147856099856056476548', 13); + T('2if7c15b64menb5f381mbffsq5552gb4d22pn', '116879749441690585814553354811233856559766636508284681', 29); + T('a89d1e8ba7d4b79c033a15d0d12e', '600946350698036566145005181087894', 15); + T('65kkch4kkab51720gk72de14i4m1i65j1h5j', '2863074376250121461194200964351550106115034432936', 23); + T('hq9iq11x71vufsis5', '141103623069429330755986709', 36); + T('31352441130112145', '9239969893601', 6); + T('1e6g5c3c8', '63619126397', 21); + T('32bcbi7d25g42l', '880900685973582625', 22); + T('111627132417321114752432320745434507337525667340540534056666', '220880699124044497678574383774865426395965086166441398', 8); + T('31ajm2h13k3kcceeb9', '432180494217866849859531', 23); + T('30hj3', '848956', 23); + T('h2eaee905c464gh13c1g3a24bffbd7b157a7d8243', '2788179404237205827575664664460917404793610485107907', 18); + T('6l5fmeo4r8q9ksh0e16dqs2a', '29054682041642997983411270167870486', 29); + T('9bgeg983a9gb072ia', '2776374479824499829805', 19); + T('427303573032681547102347847', '27865476405856977419599954', 9); + T('58186560531623536388240774584465008', '1644634101768983314712700937410068', 9); + T('gud5evq5j', '23798093687167', 33); + T('273989b4c4b2b65507308785c9601b1991866b1', '5472576971132404535367740776182484421987974', 13); + T('52e226', '3945861', 15); + T('c4bg1f73', '5037578485', 17); + T('0', '0', 7); + T('2ga84ck3k8lf1b6g81e4d1o10adildo4fb73d3', '14063518582163403576381156810721420380483851225111578', 25); + T('18398a17693a99a73829311597a8009a998', '449495260282451489496065134468852961', 11); + T('0', '0', 10); + T('2322cb943a7c0e49c0adecc89ae8c8', '28247920028932853396658049010936738', 15); + T('4a7lmeeehee0m0e2f88h3fhi9jae36', '13754660732035427506299787750012455330113', 23); + T('66om3l', '61326346', 25); + T('1jaxmqc44xcgutokt3', '440143628927856861597987927', 36); + T('43402144002311022321023', '11357849767776388', 5); + T('f1q', '15418', 32); + T('94bm3khgmeh6h666e51h4hkb1ba70lb0', '15037888711417055917959334087989947554028156', 23); + T('468836dc5e0921dc805d0ca944655824a80', '43081374214668891982097847922924570176495', 15); + T('7aia5ft68j2ah9tdnij8hbf2436', '1869214551753119688855382398317532507696', 30); + T('14a3b3', '1352627', 16); + T('upklpfh648l1', '1555511519818102177', 33); + T('3642604410156200265653560662320144226060043062566313031', '17044221773211127840838069782217144740567292173', 7); + T('11111001010110010000011011010110111010011011110010100101011010010000111011110110011011011100001110000001110010101000001101', '5178750376444939350710857550952606221', 2); + T('25914', '69645', 13); + T('22201121210', '171768', 3); + T('1299ea6145a33955gg494827fgfb4', '160233176579923489744786615302245782', 18); + T('2404400303345455302', '273021872765366', 6); + T('2780589741896838784693', '2780589741896838784693', 10); + T('120051666651454430105', '102765715947351287', 7); + T('go', '488', 29); + T('7hdkmh4echjjf94fc851b7cm9a6309he06fhk', '81727387424011034101131466677491869453894982060018', 23); + T('33313031310333101301210101232121100102032301201220123220033121130222032003202122', '1448964781656315513831338629339319660846289270938', 4); + T('1f4ejan70ggb73lk5bia4djdjelig6', '17342687637043286986515244372299021023238', 24); + T('9', '9', 22); + T('100110', '38', 2); + T('101010011010001001110001110111110010010100011100110100001101101110100100001101001', '1602153026925525548353641', 2); + T('dce94', '701914', 15); + T('1ecgdk4ch2ki2gal6geikc9fmgm6gc8a8mb', '135755121543031059870445637631947092289577070619', 24); + T('hviu8xaubwr6cba0mkh6xhcmkgrudf98np4', '563888921489815885331467969078334098692735774824158929', 35); + T('16b72', '32774', 12); + T('3fkd07k', '2106600098', 29); + T('121344424133143434114024144', '2193410290272017424', 5); + T('ej561m9bckcn7i03ja6mj2a1m1alm85ej9mhc', '720924047901203102542178589784759717033703825426724', 24); + T('6dkib54b13fncbkcefo7lafkdkae78m59l', '88812159262476475867698690215386920230540581496', 25); + T('5947916744591013134669825015156762693936309', '5947916744591013134669825015156762693936309', 10); + T('97fj791568miadhqtj6dci02', '87089150165580623669373687837670202', 30); + T('3ocb5459mcgps', '2026781564861859178', 30); + T('828g6fdkbfje1kaji14fk361', '20909317220805593816802833365225', 21); + T('q5', '941', 36); + T('8alo9sgaa', '4187460686272', 29); + T('5j6nf244ahl3k83f24l5imff20a0ik2ij45', '490788188097844322838594090172370516724231182117', 24); + T('4kfem4ifgc376m7fhfiab7ji51n', '78208441448030014437846328864355857976', 27); + T('22ga1if26hi9', '5021678125886084', 25); + T('6h8110747bb4ec5', '5526770097051812790', 19); + T('3kmiao', '64421584', 28); + T('35b2ef5i09feda6bf2dfg56cfhc54123h74573h', '90100642513830363534883950760191394857528151082877', 20); + T('4j10knam', '29062827147', 25); + T('9dj8geg', '620710696', 20); + T('100100101111011101011001111110000010001001100010101110000010010011111100100011110010001010000110100000010111011111110', '95386528077312833528510117745536766', 2); + T('37odmlq4t1cphe42', '46784748191707671321722', 30); + T('3cg8jhkdc1b1dd644hf6g3ff4fhbc', '37974153903814605133910844090810871839', 21); + T('2d90a4719837dbaca346e54796196aa4c39a29d7028', '72320014326190529207268511298086237053386258031788', 15); + T('221112010143201440041132340304141040211331000103002002341243330240031303', '103772284529022914388035430657679022322741387814578', 5); + T('234', '123', 7); + T('1gbj8j3f3g4fc7afcg', '23985271553951719606256', 20); + T('16dhfi679ge8cdahc0f5c3de64', '126062950519944159766121561159030', 19); + T('2110001020000212001221110002112102201001012101102121211212111212200211202111112122101002222112', '576441067410056461483703142176818271029941704', 3); + T('1400010200522020432130022505551242315132004422311315214250500552', '17595958038682732910920374172787533846127463600692', 6); + T('1100', '36', 3); + T('132133002330203222133230301300333012000022322212301213111003301031330013313211', '43509780485649606280607371868487166230944316901', 4); + T('111111220020010200200211011122002020002221111000112101211122021112110021011010120000011110110011', '3184810401058738852989667333232201616049894969', 3); + T('p2190d2m471f14c7m5jinn', '128683057515715021320115217552355', 29); + T('66607051535464671602731746325356021372265', '9099202145653789818834446363266512053', 8); + T('rxxwxwhb9cp2sndulf513ch', '137941140090442856448979588513676333', 34); + T('5v1as3h7gkt', '9098519834770439', 33); + T('23323330311211123313232', '52498284264942', 4); + T('1j6l4lj3lda2ah', '927009955843875697', 23); + T('10u4an3sxhdjqbpdd1', '111253813312875559803626727', 34); + T('n65aacems59afhei0i128qcjobg', '5898638281362823389060707803600314054946', 30); + T('1c69', '16597', 22); + T('472035076601272777773466260770745221025541771310455547267433', '940021031620376267748547570264155096359926520862306075', 8); + T('72', '79', 11); + T('19398c170gfcg64f843af17bgaa1a241947c', '129947852827238055712040360831603626896491442', 18); + T('101418606067268463402226345262270255081', '1857887598344404806997185438936620857', 9); + T('81mgdn230a75egkmiald7995gagm911', '2059707806285597627503761733243610129021017', 24); + T('2gllk780bm04e8lfmcekjgcfh07d27', '286479826696535775464273610901096241568391', 26); + T('122120012022201210200121222211001112112110221211212120212010011011001', '542747711299361252116322470317832', 3); + T('36bjnnofqm2f7ibl0n8hel8re350b7ff', '2349614933088599651464732173196752378742407779', 28); + T('2', '2', 17); + T('1901f2f75eddf8bif1dai18d2d', '486612954588567587212842937829253', 20); + T('fpr72ngapr11bdjarrjra8m3q0idnhcg7', '324494898071507461877053978943272748028566739783', 28); + T('mriospvubhhkbhhknl2', '84091461121613338404016434744', 34); + T('1gbxzhqfotpmsr', '247967926192484011179', 36); + T('171c43', '1119888', 15); + T('719d9ae0j06dc5k', '148475592775622801804', 24); + T('bfacgjw4l', '16123175442252', 33); + T('27nc9ja3ildcbpu92tmf', '48762307359506883152233969612', 31); + T('35100215607256233370100157131103657413347736114726441', '332554887108209374458014391052845453182019808545', 8); + T('2d', '43', 15); + T('61g7883dd3a55cfamm4307l26gd5qn', '1958734810273792705789246918934822143371545', 27); + T('jaa6397qhgfh47nj48ad3f4pg', '436699483716932159117919657451490464', 27); + T('7a9e8u030c2mlmislh2iq', '4925854031564503132850322969410', 31); + T('8dc', '3147', 19); + T('165130926947488295413682234912291953857277202438', '165130926947488295413682234912291953857277202438', 10); + T('2', '2', 35); + T('g7n4l', '15007121', 31); + T('2000201212021200110122', '21205710026', 3); + T('256e27c683g7e28444fe68dfg37', '227373590164376719118580707971549', 17); + T('3589ma16bn', '8514389402783', 24); + T('peqek92fb83fml55k4f7qa567ja', '1079505469268043886172306636663444862734', 28); + T('i6okun8rle5lgo2klrg7r24l1o48r9', '812263483616430907150828319601346058339361641', 32); + T('ffjb', '167409', 22); + T('16899758c5637027cc4509197a0806151b1b', '1472124298781451615642290787701974764196', 13); + T('dk50dq28hq0b9', '7265988549586872339', 30); + T('79f', '2191', 17); + T('69', '99', 15); + T('72da992618353861841c01d4687073a8d516', '93886242244818385595059361163892476186560', 14); + T('aki9bbh89fh87m8l1aa4a9l5g7bffm0h88385', '114763233555248086785759194797816098143926938310370', 23); + T('184b51amh5', '3542898368285', 24); + T('10034412103112330433111411132332013242104321130404032331313343', '4474599918067555064654041662068659458463598', 5); + T('rj5hgcjcce4heh0bafh', '5821635304368037800119927690', 29); + T('i237h1j32f357', '232647752169124233', 22); + T('23127102426b', '4010576357201', 13); + T('111111101111110011111000011001110101001101110000000011000', '143545575800234008', 2); + T('676884', '405319', 9); + T('42k68dbf4fcc250l5k282505m4imcfc', '293284630414438750039663958568928524711326', 23); + T('g31j84ai', '20678305818', 20); + T('0', '0', 3); + T('1ar451i41igd3prsian71prim0lseslbh', '86238754807491960819075362998411526539819962332', 29); + T('111011100110001111100001101100100100', '63992372004', 2); + T('bc053tka9gjboqptfug8764vteewhtn', '40826388795618571128129367769621369352492615884', 33); + T('bb972', '248486', 12); + T('i1qamkq1pfuin9eo', '3989956977379744422840672', 36); + T('361524917', '361524917', 10); + T('57b08jkec82938i3khak1b6c', '13806151720864861977227556530364', 21); + T('6ech2h1890', '94263489226286', 29); + T('1j5o5jmn9jafbdn4nn', '6738409255222242873889819', 28); + T('15cmpsn09too2c', '43116122218866434124', 32); + T('811', '980', 11); + T('4', '4', 9); + T('3492n', '2546183', 30); + T('c503f', '1026883', 17); + T('c8841d8a3e0c3184a1d13f24b7c8abcbf36', '1091713357762058306584556087055815769112374', 16); + T('101111111110', '3070', 2); + T('crsczl5y5f6wtp9lh3gh798ir8lusu', '17339136471721411584933213471118181624608588590', 36); + T('1fq5bta3pagdp8okhgs53f7clioamk37ko8', '255008927803374998828799238728878199583965626637728', 30); + T('210873084153651612242427773566076226832', '3874424403685633658520167970745713578', 9); + T('3db0523a24e245743553', '86803771432248580685703', 15); + T('40324414', '323734', 5); + T('5d6ka3abcc68880h', '767243912601976420529', 22); + T('c38lqjl46kabetl5qlj1r9oitjij', '92343694633170266121595556492720749580659', 30); + T('40552355236034366411121260630', '1894076705177959214150189', 7); + T('f8o42sl1bgh8oefa73djm5nbcqj2pfkiqd', '250697214887739481273552937511044544495638076630497', 31); + T('ldb4lgkib', '30103008932711', 33); + T('2', '2', 19); + T('pk06i2ceg0', '272020641434528', 28); + T('1010001000100010110011010000100001000001111010001100001000000001011001110100101110101000001010001110101011100111111100100001010010110010000011001000110101100011100000110001', '3791391092894496185657389426598978260806574313715761', 2); + T('2930', '4788', 12); + T('11011011001101101111100101010011000101000100', '15064322355524', 2); + T('4nz549mpd2ekdoe', '28653665664075364608062', 36); + T('k1b3b27gf1', '15943538449567', 21); + T('1fl9ian76dblfa44hgkle1j2la', '145148177867836192856283849258501785', 25); + T('5sr', '6759', 34); + T('0', '0', 10); + T('f9h', '12029', 28); + T('30ijdbbc1fb48dqb5h0a54ij3', '163061899281675414544508578695564599', 28); + T('11499i6bb7j9jcl22gfc691jkaijl9g70644hjf5', '23854750315423368837146215349983736231413256524952211', 22); + T('1os4p3n5ytmn', '164971754456015943', 35); + T('gbek5ifl9uvccwl', '29691120613113956443083', 33); + T('244668499127028e83bb4181', '2565913383528918683684970721', 15); + T('4t3cdnbdu3hi', '125493059871385556', 31); + T('33444410431312132044442214340', '141551939616015585595', 5); + T('f0e18mang1ckb83o6d02lm5p7mo4a2j4', '1098667950936590953496178062298824527159019274', 26); + T('10000010110111110100000101001001001011110100001100011111011011000110110011100000000101101', '316429297174908011263148077', 2); + T('10010111000101010011011101101001010010011100110100111100001', '340208393737103841', 2); + T('4455190b50557152a56aa689', '28956950424301470445177161', 12); + T('30178a990619211a65284', '2027761131843662253152', 11); + T('32adibdic3507e964', '904264457185802878114', 19); + T('1402203332505114241034521554031304', '80106131292450875184746488', 6); + T('1b7e6bfdgaf8h618hh396d94gf99660f2ah3', '140638185851643426335154839361249634663210461', 18); + T('4n02qr0qcjn', '1428131533975659', 28); + T('722062570016143', '32030085618787', 8); + T('12h1wrii6xf1isrxgxotoxf0k4rs', '240306175962933523255986233934776980691330', 34); + T('271132ed2156b56ba2264090d5', '624075202158401303369210786825', 15); + T('cbbe0ifb0ecg0eefifca0861754ad2gi2e5acc9af', '17820079854097348669358676176262454365377640065197275', 19); + T('d488h34b78i092jn5ki28d4hd0a2def3', '80631173055200461094000840558382509399473899', 24); + T('kai', '14868', 27); + T('74663674130162363012065031725670307006351247702', '2650448086139415170144453379569169365028802', 8); + T('410ek648686h', '3853830909449054', 23); + T('112122110102210020020200021022102221202202200122111210110112201002', '16764033406503354998216612366594', 3); + T('5a9ag0c99d9faad76g1eg9egegg3b6bc98d4140', '2801521663446241132823944236302962625699717089212', 18); + T('bfbi5a6afj45iah666dk760bd509af6', '219330264685128598444241632527479365312816', 22); + T('oi3j09e1m2dd9498c12fd1', '5622045359644445263576289494076', 25); + T('1403606123334625332112530636430620636042', '1439558915530889901212705116835520', 7); + T('111111100100110000000000001000101001001001101101011000001011100001010001100110111110010111111101000100000010001001111000111011111000100101000100000100000001111100011011101011101000', '1522300117779563676992926268294212750701795813499189992', 2); + T('32f9e995', '1301412242', 17); + T('2l900ee2', '9976339380', 23); + T('v998ik9huu', '1451808320253717', 33); + T('20460428a2a42366480a4650481749aa', '391102418677365044663717119852919', 11); + T('111111000111011011001001111100100111', '67770294055', 2); + T('50ce3', '4629574', 31); + T('54ig18iqae2tph', '606662590569600162167', 35); + T('4f4jav5ke8j9w', '10607946018036371326', 34); + T('435gmb5r5s9bbkbqo8pn8nis', '17742072943258762084938672774179567', 29); + T('210010022141321034344014413321311333243103213404021224344141321142101100141', '11655341046605487362673272556680098862550253021893796', 5); + T('11703652371245327270875136818411753701245105114621364', '50015363250812413592978674160611932885342581878621', 9); + T('100110111011000001111100110000100110011010001010000000100000011101101011110100000100010110011101001000010000100101010101010011111010110100011101', '13562459849657731179062132755251654390951197', 2); + T('f55ch081bgiqjfoi580i5027j5ibnm4g', '93717655210173870936123983046544755878321950936', 30); + T('14c7bd9g8fgegf4598ig78db559egei', '286902761703352399115713383654173395387', 19); + T('if9644b9hjb53je550iggh2095h', '125985325474900384130099682358723717', 20); + T('436j48e17g8hhbad8l02', '309158322644714941880361057', 23); + T('19395107722a624381360a3a37388491485545493', '837334765628822776393052128437254413732612', 11); + T('2f2ebnnd84moej1fh5g', '284114881218993578999222252', 28); + T('2266ce3388fee3c292256', '2599310186932964178862678', 16); + T('12f09b', '2839808', 19); + T('3v1lrp1nu0', '139695817285568', 32); + T('26234', '26234', 10); + T('8546683557740281816235016708082647838436361741010513', '39956203753802223948047814344332292828203738992921', 9); + T('224130321113431331234124334203030021101242314334043412423133', '446347968128646822230071497717582810279793', 5); + T('122784354735470573734278130737225806820754754778367', '648246815949675714466794273511802263245293730952', 9); + T('522bb0cac72011727319b7ab67075037aba2', '5030349684335489902148585919042821411528', 13); + T('784afb326df4e14f44919e903da2daab2c6a8c2b7', '10988016479801545098971638340838655979698598232759', 16); + T('1', '1', 6); + T('1a', '40', 30); + T('1140625615021215040452466121535636111', '3254092286706201839308923015042', 7); + T('15oonil2fhic899aaec4im0hpda0ghi', '3458063037512129270731260341461940831158412', 26); + T('5qf0e4a8gcpyoh', '680672672565382003132', 35); + T('r6t5mdbk2bhbksd79sk267f7kj6etr76ch2', '13843573438903736667979936265567288587972581206329575', 31); + T('5i5a32b13if5hd6b27ie1abd4d7831fb83335fh', '23338871699861348992667980731442144357549336414583', 19); + T('965h512b2a26efd4hihi4h7ch5deb10ig', '776421006283852166648096674359365276607441', 19); + T('23cc00a57842c825b2b73', '190753980657808903079377', 14); + T('84fgd0b838027260hghf3b1i', '6911861868573500849174840828438', 20); + T('32024343310', '33434205', 5); + T('2g25ae07b9bd0d8953dgg9c9', '215312595589787196108811324581', 18); + T('2c7516b990ec844c7a113d5gc84977g6', '380417281882594767106673659584705172801', 17); + T('3937e11053978eaa8b', '356239468690396944881', 15); + T('423540545131050354211054225420050220141241010244114235255451', '36191168862496053559216924657081367445614940343', 6); + T('1mq', '1349', 27); + T('41336630208066014426507600014561516256045788602138888685', '126394964103942872413285726629499765226015930689454252', 9); + T('23812465082116078023663065846540105844417', '359745322984251038213859961958548558564', 9); + T('32731602b73c56641e0a549720ac684047dc186d2e', '5250067280281468268057767492160429729760400843844', 15); + T('207', '457', 15); + T('221016156567502', '9966232203074', 8); + T('3', '3', 4); + T('149390610a9a', '5397912566784', 14); + T('1', '1', 31); + T('1100210011201102102100222212220201010222002011211211201', '79222020471668857707359281', 3); + T('oumnfcjqawvoiu2umob4hel', '63683659777115454000636977806709805', 33); + T('121a8gdf0bg5ee492017d', '4565149191282994738546034', 17); + T('101100010010', '2834', 2); + T('sfb31qelcjas', '348085994301840276', 29); + T('761570133215525640271', '8966391655604633785', 8); + T('k6ljbii1b950a29q', '290193032454717352772096', 30); + T('14444133312304020024142413311244142024204432230212103022143102', '8669102161750148059985951449842543267771652', 5); + T('4fg703204ae6653c6b3j4a9jf2ej1j', '257208195071681839222502187276784439639', 20); + T('1c0f6se081r4nf9rfr9te43d1e5c13', '24646533503075931130110785406893472989210500', 31); + T('5855387560621204', '1226716470634171', 9); + T('256907', '3289405', 17); + T('99igokmb20gb41jlqag2731bjn641pa8m11', '149265576178669580878869535449967114241115964835709', 28); + T('17g40f10cl36712efi6bc47g777e801bm77421fi', '170939473992155811269351752741318276877107096372302484', 23); + T('64647672689', '64647672689', 10); + T('1643632561314231340041002365410010553', '5171467731134228257724052634904', 7); + T('47d', '1149', 16); + T('393ba729770d6505a3118287502dcc939639a85a1803', '70352045253191285526358196586767060137043932511707', 14); + T('1khg50kik085caak5a', '59864078118328974774637', 21); + T('5tcqa', '4844590', 30); + T('4bn43k601jd9rsbjtjelutf1u5krrthabjc', '2226709914233178306419196997863309807078435719529623', 31); + T('j21c171a63p', '21463980112681081', 32); + T('735f0a94g0', '853457045557', 17); + T('31', '58', 19); + T('11303315150321412253104251022353441041322125054241231155444320242', '79348974866336815279783368738596691903140624659106', 6); + T('emtnivvcvpbofbjwx00q5r', '7042313029555078022883072758212719', 36); + T('1111111011110011111100001011100110001010100001111100110011010001101011000001000000001100000011101000111101100011000110111111110111111111111111010101011', '2842819740151363791267849959009928040708832939', 2); + T('11124', '789', 5); + T('263460', '160029', 9); + T('132020230022232233001012312110000320', '2223628314707328843832', 4); + T('qmatp6x7x0i7kwww9ru3g74fg31u', '13041558211114994891605591496874198058411615', 35); + T('1212432456235400016312330136544614313425566221424415544351423', '667449638793600765524787631521077125935234478926704', 7); + T('613b8b5', '101955765', 16); + T('1nbehnbn3k7io1e9h6', '2156225812589011334673092', 26); + T('101530101442425775517477023774', '158785455373148008304355324', 8); + T('8393265877750', '8393265877750', 10); + T('gejki8ped057na8', '1068784882324809922800', 26); + T('35524gbcgd415cg72e5385a3a687bbfa', '2698475481148714592199279711100304788108', 18); + T('1li6168emf0glp8b74bcgnf49', '16707705100794731252094321598976869', 26); + T('4ujg9feb5lsbwn83p1ftqv85a966nujwd', '19276486249671857007076018238589272537818685313529', 33); + T('7k', '167', 21); + T('bbwtg5482u5u125jwaw4grahxsl2wv6', '99870770755356292494097529732122977160595962180', 34); + T('12102302311130033133311221232311233111030032222222300300020200302332222313211130221', '36792782803022052519563878572962189298755425949481', 4); + T('39fd0kdiglo6f1', '13594585461735594178', 27); + T('30214311524250615152333025534506', '480518635808621857675890962', 7); + T('33736082402621341865465256743878261', '952533655583805522673631866039924', 9); + T('15536323540072537510214740648724651474', '328944392163793117310283327346967335', 9); + T('baajk2e9jcgcbk4a', '783476238643207986019', 21); + T('78s0h42a7', '3656391077499', 29); + T('5jipugkahalhjqpash1', '3937423681465917065890170274', 31); + T('aba12217aa326a16084a45', '505448814884269683427541', 12); + T('g8db2dff76', '5311016260900', 19); + T('fblgab2', '4774316536', 26); + T('cw0b3rp0nqac6rkqjm1a', '2807837344213103415524527607870', 35); + T('2220221212200221020001120101000021222', '438934738823378954', 3); + T('853iy2c2t9n5skt9ncntdinxj9hw', '8528601144540421131583349837423197612512212', 36); + T('enld1pqd72iiaah331p4c31sjricj', '8459371819370199255275975857354512812858013', 31); + T('374160464102717737077444644401061474361141636', '21456498302081433312710883059235111093150', 8); + T('5bnlih4kc679j7c1g4k3hak8eanfk2cd75', '74243343685087721564583592254567964316602539555', 25); + T('i291e', '2362778', 19); + T('ff4e0b01g44379g699bgc30c8gb2a1e393a01b', '53454133794642577998107664307448664264718891224', 17); + T('h6g', '19872', 34); + T('hff', '6437', 19); + T('201301132320130302211011203213010', '38937807697351162308', 4); + T('el2i1c1kvnf4n9a', '17306001852428266396970', 32); + T('llor', '586647', 30); + T('18f0l3un7hx6v3l6xu6whg0c854kolmeb', '12695193933193179158621509296985565216876568630503', 34); + T('2ehm00rlkmf', '1053398216187932', 29); + T('60lb29l4bkkbb6bnlccd5557h43h78', '209357188819429378059650212593873946932683', 25); + T('r4b', '33226', 35); + T('31222304042332433414413402401331030144230123012203422141033420300', '1789049338874374103059075210410623287931935700', 5); + T('13abbda6aa99c3c209c60266c69080c', '30726786430113013257219600561452028', 14); + T('262643168493430786031', '262643168493430786031', 10); + T('1100122100212202211210011021210022012211112201000122102110221222202200012220101210', '601798443643669936350054442563165420687', 3); + T('14otqenu046jhlxo4ptmng1u', '190810415328770416971685556952127736', 34); + T('da4h7jm2gf386iojnaq5ce1d25gl', '15818738612601844466551284963021649225125', 28); + T('100110100000100110110110010101000101011000001100010101011110100101000010101001100000001110111010100101010010', '195266285040805814110355923380562', 2); + T('488342231251751346242311', '44247487379947531811290', 9); + T('2h8bfc33dhb130bgd6d37', '37877193351326116690267633', 18); + T('3r2q2kd0md', '135336655487693', 32); + T('23332231413342023', '7332327145311', 6); + T('265735ecgdd4b353h3472743a3', '56608285630040709994361807982867', 18); + T('36gq75xn8dkj1vgvsz00l', '42502936499191450526350062396117', 36); + T('eh7dtarl9r36qaa4mhmk7', '9778676538945889058686790375871', 31); + T('14803558684458a2993a0a32099467a0614194730', '647203408320127342024090091627696455000077', 11); + T('1451431412002040323331043104330', '400960425098607615886590', 6); + T('297p13lh5gepa3ecdhhco', '99373684147185210906053364513', 27); + T('1301432143220', '394412310', 5); + T('33', '87', 28); + T('432231350515154632', '1041384299764405', 7); + T('313121410300242022022133', '39718036029485918', 5); + T('6b63', '27491', 16); + T('682b3', '189426', 13); + T('7219653551a624979495a91a8', '70891355956396038181400257', 11); + T('33002231111131', '252368221', 4); + T('4d88ggej8i58d', '59239205589626625', 22); + T('34451601353532653611436161142566545211336115564531652', '323278188886248967529158547940775990624674072', 7); + T('1is5noptlnirtdb3fvp5n', '2015588554685716212306054997175', 32); + T('bha5cgdkjk0d', '4144765439844616', 21); + T('27a25d8j516cdi4d7b', '70786447958357042929196', 21); + T('1586', '2030', 11); + T('31342760667031767334646421766116726252335314714', '1108212082493888677367272229520408961194444', 8); + T('28546553', '14143782', 9); + T('257jd0p4o', '460207294324', 26); + T('2lafklt78vxkn9xllik', '9683449653483437263505971556', 34); + T('2d3777760a984a21c97a0d20c628c419cab2bfc67f', '66084232243819558824679961490043082487366953191039', 16); + T('2eqb5xje', '127870218160', 34); + T('272343723733570133550665013', '880462300728651545799179', 8); + T('3kji6mhdk8no7jc8a9emhqr', '552688352219570858171515412726536', 29); + T('45472185506624743014572972163525387956841', '45472185506624743014572972163525387956841', 10); + T('27330316426437424646561612652414263301414200342717', '522342837272716004737400194551917026620851663', 8); + T('2b32df51f67de8g8834c19eec0c3c9320bbc943a4c6', '12688544036802134995824223195793070866654304069676611', 17); + T('101214044003251242303202220534005133043421420054520404513042300402350', '85236281669632536888419124917731749716268802441235130', 6); + T('33', '27', 8); + T('22014g67ff8bf1c644c2081d17bed81171c6526e75', '594721012934655345095358079862004270167442813594302', 17); + T('2uejffgbg594', '75792588512668236', 31); + T('6hedef5cg89aehbg029334ehibff5b', '84126707114035006726317668787251510718', 19); + T('12c9942167ae93c737fc5ff39d', '1488492491002839592133151683485', 16); + T('c2c44', '797764', 16); + T('22112301432130424314234114214121144302343011224233033111040443413213434424', '2596351663106652674437417994841482826828643522405614', 5); + T('447886b857b4442ae33e07b9c620', '244322955053028014376497119444380', 15); + T('fe787f84cf0ae7655d44db4e793b2a98ae8f', '22167524012235587957931446373184044722073231', 16); + T('ce00gfa61b35502ddea6ae08fa9e3c', '32311970180252432302213442175559249026', 18); + T('6410235531675374505654365627', '15755268886904815024728983', 8); + T('10421g292f1g86520b7g99743ffg', '1691511665188307722429188808830042', 17); + T('hfhae73', '608398905', 18); + T('1b02pnbb9fk2kt7hgejkfghaarsm03', '9380211704840395733125589366849221945645803', 30); + T('1cmfc4mbkho', '303773375379894', 27); + T('1011201211112002120002000021221000200212210122022200221211100002211020111201222', '19303102056479652797750726699461962392', 3); + T('fmf7k2vvfli7js7qddj08lrrsvjjkqhlqp', '734369787776964304691750078309244157228282267883353', 32); + T('b9r33ab', '10045230494', 31); + T('2144b7bc8951804726196a6a744886dcc1ba41ad002cb', '563023243497677865341196187925034677481508487973787', 14); + T('ab7', '1579', 12); + T('11111101111011111000010011100001100110110110000101100', '8934565388446764', 2); + T('121201210112011002210112122011102121100111200121201121221210210101', '19152206217272003533575256015003', 3); + T('87ike7hc4c4e4csrtrunnah4', '165014231640248173568866466973234731', 31); + T('6f40aa9gd3529589f6d6e8', '4857078092896960066845279294', 19); + T('1000112300233023320333000013301220131002213013133010032002130232121200112', '22424670700759204990548756345478151954602006', 4); + T('12010020202022011121200110122022012210210002011121220002010110220200022221212120022', '2270509037526981909994030317330177692336', 3); + T('jtcrk8briibmd1', '734874456187380029857', 32); + T('323ab6b303a0kh2cg', '4439310393102239451589', 21); + T('132213311303211212102223130230213013330011030112320113113131211020222200130222310101', '179019401287519987440897017633826802507494397750545', 4); + T('10421aa279', '10865826370', 13); + T('28cbajpejjf18u', '264768966115047556535', 35); + T('1u7nolh6bd6v0', '4507977116539696462', 34); + T('54wmga17c', '7244724152205', 33); + T('13uviq1i1r00087sqj8qncs9lo8', '1529924306777719202810742088266389182216', 32); + T('5ds4b7nu00morbk', '6415012024329735794036', 32); + T('34410186233', '12187121115', 9); + T('47a1c4hbmma0gjf3b5kn914n4n', '381569904666915560937256750088358248', 25); + T('54ttopkk9fmtu6764m54', '111825156831061493422412579685', 31); + T('mgn', '18989', 29); + T('10505055444011541442103154442231040330004242', '3299912455302280343771981626079042', 6); + T('7g38gcdfb0972cd176561eff', '587323076724641878770901613469', 18); + T('49106l58aqblku24m2mc62shsm30p9q5j3', '1474965748795651704391869363110766509836712354573853', 34); + T('50258', '192550', 14); + T('5025aa24a', '4090471668', 13); + T('17515037027696b9a135497bab85868', '384282956567691349139467954115216', 12); + T('573j1fe75j8a9f29ii7d34cb3jbbf', '14387834859916761337851572818723836635', 20); + T('186b6b31486165c0bc8c778fd49af12ea08f7dad332', '571028668500605890623232664155788301681845784466226', 16); + T('2313123220321101131302220130003331201011233103120', '227077642865109202959441786072', 4); + T('7eejonl537c40faim9b', '222874151472317796433717213', 26); + T('8k0oy5j231dhtdv5t8q7w5', '2283030198732051810335111155170075', 35); + T('435045040612115113266114321225361030034215', '202006427408006640757853847254122093', 7); + T('2akkgn3g1jsabehm6kgnnrpl26s2t4b', '3329280104777703639665143207138900680219128971', 32); + T('20', '40', 20); + T('111101011111010111100011011101010001111100010010110111101111010111011010000', '36297363457553334775504', 2); + T('3222123012301022200330013311022', '4222998842413448522', 4); + T('a2587983019413965124039', '832724865093143284531509', 11); + T('akej63bg59kj4okd4oh5il012j8j0p', '1167589559975024794478346165128293255822901', 26); + T('23c2he446d2g0a6gdi0fdee2gb6e5c', '26583275300599088108871698596507139368', 19); + T('1jkeh637ms7gofnk8ood5i5kk1j22d', '4312562387308133742326791929397236729866296', 29); + T('78837f5f773015da983e', '1792798252228672996730116', 17); + T('1416c69100c21b05a22264796b', '9291730109537657404686437398', 13); + T('93d8a93d28', '191813134864', 14); + T('394a2167461768638586b2914b0b80667386548658', '667335229599904318812161808924349330646817188', 12); + T('1wdsuoqsut7um45fo7d4', '140917464962232105605575506580', 33); + T('4icn278aa75564g6j2olk7kl7fl5ga1n', '102797064941780765797751135934146317345959423', 25); + T('9i002055a4hi6jaaadg3', '51904577968178133729685523', 20); + T('1cvfqsut', '72490601641', 34); + T('fj2je594k1j0bhf93b2de72373', '18079705921653558686576826974593824', 21); + T('4240320213321034004', '17415886111754', 5); + T('711966f187geaeb5bc7d207e32a43da8265e186864g5', '573279130756576280449162350505323079502754368266400507', 17); + T('49271274804b36c488411958c67c8bb9c1486455', '130788357055261430585631300892818257979129537', 13); + T('2dj4ib63771dfig859hcc0ab17hc03j', '2897080031583056937886505492750169216079', 20); + T('2aef3ee6f864b26772c23cf6', '13287600730756091106849602806', 16); + T('frcnn9hib7eog6f34l23', '628128512915374991101180138563', 32); + T('1010111000111110100011011011100101010011110000101011000000010000010011101001010001111101111001110000010100010000111100100110001011001011110010100010111010010010100', '7958075089772384277251993017934409136873707500692', 2); + T('46h51n7bh5n7n86njh37fhihc3d79cj8h', '628335332219766512635376856539379172420010897', 24); + T('pciq4mdi1q9q22q9n3g', '2848254632326814305960656020', 28); + T('1', '1', 29); + T('2f826f687ie3h5h39', '1815538753739148366869', 20); + T('85224600844450714154447', '8452979833566085087057', 9); + T('2ncrhr4rasjjeqaajq4341jr09r', '1642784213600589272925380877043975840644', 31); + T('a00', '1210', 11); + T('56c717da4g7863c4127229b838b42dgbbf7g1132', '5242908799066029717292077136248328396959421188623', 17); + T('293684b63150b4456438340064cbc788c4b01', '34310245908660290962930216560562702368986', 13); + T('40cc56abcc240', '94978404251094', 13); + T('218903cf27a47178b456e4cea5e470f7ae51670db5', '586417501992499293536891609375926193432812131092364', 17); + T('d15wq1nleg7u549dadd0718e', '2183292000236241138234881147030692666', 34); + T('1113023440200122202434101414400101', '147253000878996390387526', 5); + T('193c4c1a69add29d9a5101ced0568697d923', '2198325248780085112365807036920470754023715', 16); + T('11a507516c68d662f15d9', '1333191524844399246644697', 16); + T('138246022172800612014535', '12723226204164688321097', 9); + T('2f', '67', 26); + T('n9bbffps4ij483m9p4lfeon74jmdernad', '4319880888388973123665036793081840398907295990013', 30); + T('9nrr20re0e90il9hi49fijfrk3el', '11668527008401372147103143919940731784397', 28); + T('110200020222202010012012000002001020120022212111121202111121101021', '14508751609178069453862292358287', 3); + T('401014110441023423013340310213213401002003324434144220111030', '701341637605553414959898651614073338832015', 5); + T('16d1438563c3dab89cac1b8a2b02c9ab92652cd016087', '402145454893768368538070238910742261904151734958103', 14); + T('16c430ih94bdgcd', '1078369041154387027', 19); + T('6rrmvjny73f40mqhlbav2u92ly8xhs0yl', '174704136528249902816525420461236150502024477152961', 35); + T('6h0g8ijlelligfeh699i4lfm4', '8948723159164161623690376517243348', 24); + T('909697005b', '186948429217', 14); + T('205ftjhgh6bthp9i71h51r9mrade01sii1jkr', '301112010317868572084712100360200322156165974734024727', 30); + T('20ij24h4d1j9jj50', '1890604943011908121375', 25); + T('221011001021222000210020222201200120101000', '101921456153063705544', 3); + T('m2nhkcpq0r16jd3jgm', '160361482760888867774119965', 29); + T('14065304637358947988886', '14065304637358947988886', 10); + T('jg2ii78j380j', '6924453033870937', 21); + T('mi0m64bfip6rsb53ol2oscllcoe', '2381613436643734921316429121959549049180', 29); + T('11101000111010011101011001100100101001110111101110110100011001011111101111100100111011111100010011101111001010001100', '75584728662217792152893436906631820', 2); + T('90169650', '90169650', 10); + T('0', '0', 23); + T('9m7fl', '4504599', 26); + T('462207311743', '41106117603', 8); + T('apjbn7lln0l9xau8pxi', '39637920958143725832613021304', 34); + T('127dc0ab6f59gd8955b', '16097431569685397455342', 17); + T('273h4fd', '81667075', 18); + T('1isgbdtssth73e6es382gs5k13rci6ob9u', '74377241800512845181909478165136810275516650892606', 32); + T('3', '3', 25); + T('ad4684a', '124002745', 15); + T('4aa54680539bb5a81c6a665694717a30a525a0045', '1744843150071734423605691580172448713985937039', 13); + T('5c8n1tpje68ud2mu125nttg62entnlc', '7683611140873419478117143666838299771020435116', 32); + T('fa7f', '187971', 23); + T('22215', '3107', 6); + T('52a326814a947496353844318285bb39b066903', '534626397264431225021347981842706300601235', 12); + T('322011015154252234042', '12393630663355754', 6); + T('a2669c148f4ea9e', '731388268367899294', 16); + T('5d10e2dd05007', '12587319228711547', 19); + T('ed2a498f218583395d57871', '4587441849070983049702111345', 16); + T('16bdq35kl27kdjj71no6sf4k0', '152793950271880209148219854505487346', 29); + T('10431071513a9ck3iaa47hdgecchf9he29', '43381023423292724420039310610763756891127936', 21); + T('5dbf71b1', '7269656621', 20); + T('10011010111100000001000010101000111000100111', '10647241395751', 2); + T('jpkpcjbvt1kvasvw0o3', '42599410634040128543688914739', 33); + T('128308731332831865326', '16111972802247011835', 9); + T('35434021473746', '2030987278310', 8); + T('127cc6cdaf7qa1kc', '3203387745871429565940', 27); + T('10766710063735420744724674434722341532775011206477', '200309946175742618027595387139557376886377791', 8); + T('32112213201233103231130113312210200302012032213313131032', '4657944669466625109696536299665230', 4); + T('1bn51ig3p6da10fi41e', '83689955139542057791275209', 27); + T('14j0emmo11eae3de0agnk4ff', '169171441207698617319338544456015', 25); + T('1102002220022000112001222221211021202000220200', '4169673548357936837733', 3); + T('7', '7', 14); + T('340204213', '6175089', 6); + T('1e', '32', 18); + T('18c7c1610d38c2a024785', '136841031302109468114513', 14); + T('31ueglor3822uu3gf35hm7gje1qj9jt6pe', '50259653982330318278094715762420803895196428266256', 31); + T('236321451394c64', '8928832987449509', 13); + T('5cslpmcp2rs872s2fr8rc2d2squils2w2', '21087793377200031159635076834353655172712568202115', 33); + T('10gf', '7178', 19); + T('7d0i834f9lbf8dl7977c1066d', '3633925888734055009195256007865654', 23); + T('7iswwap4lp8p8j6i3pu2qnd04', '21064442780596247994135825814304247484', 33); + T('1101001000000100000001010101100110000010101111011111001011110100000010011011101011110011000111101001111001101110110011000101001101100111011111111111011001111010000000000', '613876598207563084074184752663166261629198587982848', 2); + T('r38bdsmlfkj5o5fgpn2sr37fh', '3394192241536374888033574057729932943', 29); + T('pen', '24482', 31); + T('1000100010101010011110010010110101110000011100110', '300531517677798', 2); + T('374680', '1894648', 14); + T('8a814d4d17641016e7', '857434943927347654942', 15); + T('995aia8i7i534cd5a', '407923137231020478898464', 26); + T('2', '2', 10); + T('ei0k088eed6b8baak8863593jk5jg2f3bj0ce', '5914160321016074730951144567079146927255110936222', 21); + T('605d40ca01bba94b5807', '36039226245164182578223', 14); + T('2691817922ahd8h70hgfg450i6c', '15587210948018755081634733837607332', 20); + T('22i4', '22664', 22); + T('292529d755fcad39c17', '35683399481751866213677', 17); + T('37a1997195385c7547', '31127908670407785724', 13); + T('3cfh6q7qs3e8jee6tkjlpqq9a5i8itae', '21107782523772991850229603406241369125689392414', 30); + T('7258001566030', '2060303030955', 9); + T('1003141020014213142400041342114334000420', '1868009637795830437567875110', 5); + T('2610ijgk2', '86541700184', 21); + T('1msi', '47658', 30); + T('3411241353543406436103214661', '236290896186624501227090', 7); + T('kqqku6nh', '886989350792', 33); + T('9dg966gcfea13ibihfhbi5ab3dh91189652h', '33298588133944531766622520550241012455771090057', 20); + T('126d4x7', '1644209985', 34); + T('b38kcknna398q', '12799947735241434394', 32); + T('119597325350', '333730723810', 11); + T('44toq1pb0t6sg08i2s76clauklu2ma', '73890216568631498105831170089909975464059440', 31); + T('10100001111011110000000110100110101010010101001001111011110000101000110111000010000000100010111011', '200464110595405607835630307515', 2); + T('qpkff9xbvnrd1n8t', '3872892307770646972701359', 35); + T('15c07e8c84e0c2bi', '19681700319754445162', 19); + T('13575006b4598b303a5410114ab2769b9578a58a237', '2728161815957558299608324450916107759586273483', 12); + T('17l9ag', '18489184', 27); + T('5m05rwmt4y', '443630110370824', 35); + T('3ci69diccggg440b5', '2389318437192755872225', 20); + T('1idml3gk', '80950718952', 34); + T('127928787d5515718a438393d750a759455ca565b34', '1621680550245507449770648650226492957703885128306', 14); + T('6t0gwhcj9gtqhtqv1e8vwinisj5r83mng', '26914594023358001953145365010867100117166476629602', 33); + T('66rfq', '10393190', 36); + T('l666idhbjuae0g3068871ejrtsokejq', '30248459681883725436709460504274517072248715898', 32); + T('150620403643664355463463322516301634404212612006326044340316311', '43130882606292506635424332740606360103280488114152080', 7); + T('41862475647386600025768161687222', '1609441597409751564405007398428', 9); + T('265bb6js6mfj0thebap9qw3poall', '2273949182220992377824887028606074878128297', 36); + T('2e80b229c', '145582396026', 22); + T('448hp32fj2m6dg3fm759hf7mljjpn67n1h6fmo', '94146978337401409225278981432841045277813022960667856', 26); + T('c530a0916607a5c2671239577c4a97', '2499620725800614133816439595702949', 13); + T('97k68ef0g5jaj5d423nm3823', '518314667420525656062603410445363', 24); + T('1252', '320', 6); + T('754125931534429694233291', '754125931534429694233291', 10); + T('3fg8dg94585b3940c4cb6e07f41bfcf61aea', '334073125271035216894226588458437368734495030', 18); + T('1010662343214312332313544054462240410550513026053443303634422611', '178309037555490506292600092100168566672657290807577202', 7); + T('30wc', '129757', 35); + T('4320aaac', '266240883', 13); + T('1539a246a76a609648858', '26736559541986486658071', 13); + T('4', '4', 33); + T('29gefgf8fg2bbc0j2gae2dfdg5aab081g7523edbad', '547963388106591613005337267146277208966777017739948613', 20); + T('92d6a085a2c34a7428ed', '203795832889664860683148', 15); + T('264652754111247167745300734100146216146065', '30046186741840723600384513771105209397', 8); + T('23b62849704471426559815', '1286298360248279428215377', 12); + T('222h1338d29055hgif', '11581651006107396744198', 19); + T('8b7e0', '4473522', 27); + T('1717051362601647', '67007056380839', 8); + T('420547635403', '36601543427', 8); + T('4n11affqj', '1822050938139', 28); + T('101001100001010001110111111101100110001101100111011011101110000011111111011100', '196072603810916493443036', 2); + T('kjj3ich1hi8927', '3235928371344402790', 21); + T('1026cbcceedf14b4084c26ddb8d60', '28586225584974591487797016899842612', 17); + T('5100303210200143452311', '113393272692833971', 6); + T('31c', '3312', 33); + T('b8a04fb11aadbgcd194aebfcaa140fg85aha', '986969674191993486338612160880717878632568844', 18); + T('qx25up2', '41667188532', 34); + T('2042243400202111330011234030111430404114414112200340102313410330022024', '3694289161066978099428391349384630089650597110889', 5); + T('7e4cib6408d', '128053581918877', 21); + T('3dkla1bq60rov4', '400737723756673959989', 35); + T('1112001210', '29937', 3); + T('11000022220202112001012222221012122202100012010210220211221201112011000021', '90389162760212801316792406240633498', 3); + T('104402113303233132403332320314443334301340343223200420040204122102', '3232890541201633751697810007380727413369989027', 5); + T('31347902', '31347902', 10); + T('du', '472', 34); + T('111000100110111111111101111111100010111000011111110101000111011000110010110000100100010110010100101000101000111100010011110101010011101110011011100', '157803884622143105853315584471057717069995228', 2); + T('2la86sdx095fp9olfp3cd', '34638184595229945075220814528557', 36); + T('mbppcgg', '16326236296', 30); + T('ik3heeah89k44040852hcbjdad1bd0dgj26356d', '3328101869145288095897995482276848932558602785015740', 21); + T('248lhk5e9bh6', '2087440191630642', 23); + T('48b381a9cc6bd2259838e067176d166b03de75b48b52', '1710407976429394820093761786315250202911786143975802', 15); + T('11120241101421342112022021114234', '5852950522529808769944', 5); + T('10a86b3888445869a814001084b9b71a27b8854486', '189496275017394315065342874001655116260299430', 12); + T('113650166605747526017701737745742053073656134564465203303', '443294363845688739540957905727674168806539626088131', 8); + T('1403535540244734200354', '13901404808061976812', 8); + T('oi2e0u6dv564iip091kv1svcs', '279954224614775983979370462509946073923', 35); + T('3m81k0kg3dk87dhgk8e605k9c', '1907459221327034327466909784285991', 23); + T('122463220110011161460202464352', '4317537278759647032243456', 7); + T('12a2112333a', '32837849428', 11); + T('343e', '55524', 26); + T('7', '7', 9); + T('5340a04h093ha55', '8454246524189420105', 20); + T('1t6597dtoc6a60r96asbjt2kkdkmdhgdg', '365699081636314950725064929820331423361435603806', 30); + T('70accd12646c3668ad5a94bcb5a46a9594d615dbb4', '691498804549708730481403267581768571471127086226', 14); + T('14231502342125123444', '1058783927560948', 6); + T('h16uh99gks0oke4jm1', '1112042758022780182454147425', 33); + T('180235996184901794802', '180235996184901794802', 10); + T('199eqcuo494p', '33035755412380307', 31); + T('15vcnwm360nhtrsdcg170j95ic9', '16344915028963724309159916980885883220604', 35); + T('1fbbac5129573', '558254565528947', 16); + T('74712131706533505237435313', '287567912644119793384139', 8); + T('2120102201101112121220222000121120121200212022010202121020200001022', '79471474421937214637587196749697', 3); + T('6k56ciqjbp09cecihitc2s9ci401s1o', '1373800350782015189643171446697543684559252254', 30); + T('483911671045098021', '483911671045098021', 10); + T('6ls4rklq68eg57k39771ongp5', '1901116087770507341357362812137376155', 30); + T('62534342550506655221142232301622406', '346261030417237040471354955721', 7); + T('3d3gi2aec6h4iaj274341ij04b8adb5i6424', '12574335526418428815722193942856616209362929644', 20); + T('9dhgbffi73bm8ig6j6gmb465bgfg', '56087289901202292671877462355609399160', 23); + T('jo0mgo65i01d2', '1189795222467969702', 25); + T('2fmgko7cif2id3n4', '7641584157166496651380', 27); + T('11ers038dn31h4q0jwwitaigbls', '6861444888213865174920042415409636982706', 34); + T('38204aa633aa43727a069aba97ab5495546', '18117724934806126020578044715213143494', 12); + T('4383536346071054764058653730600', '188091218363927447542822724322', 9); + T('16195113650897769995630', '16195113650897769995630', 10); + T('b07264b2abe1878a5340ceead0', '2785665573207221854518665183445', 15); + T('2sfd3nd98gbq14g7j1q57csr07p3eenjlcr', '492057936249730728996372928617044050859159675362287', 30); + T('5b5192543b4a303561a88b728', '473197943789271561906525776', 12); + T('1b91780b06a70cf46e5fa0fa8e63407e80030f027a', '40291024919626546988689644749021723762456102109818', 16); + T('1hvatyxzin2h7omp4c2vx1ngdnegv7pzju', '3412107642788556261980502714401988369603559696843578', 36); + T('4bjd23t2r9gpt2dbrjpwtuw', '11115017221742953718461821513987449', 33); + T('8302a02', '14659515', 11); + T('p5rfvi61d3hfog2h9tabq5lbaa8h9lr', '35942528587984060838184369332151588523281524411', 32); + T('4g34hp2kfaa79kk3dgfo0emn528609', '499893475952157966556029154241504867485217', 26); + T('9k8kf4kea69420f4b85h42gf9if75', '104943512895974446884235378529723561312', 21); + T('3gdjkct3qhipsqae8uz', '35635251197434521507651851867', 36); + T('66kk1e4bk592m8dk', '1679888991376791562911', 23); + T('3', '3', 20); + T('10h6pig', '316807208', 26); + T('iq49obnbtrfnr97tl', '22747999482124841946226613', 32); + T('5136777371700436', '182450142019870', 8); + T('23gddce4e', '15588339003', 17); + T('53', '93', 18); + T('366abb213203b8f4cd9e1788f81deegc664cb', '5191961241144177945785597152999737524951590787', 18); + T('5c171421', '2343354801', 17); + T('5', '5', 36); + T('110113511313646244303100', '31375848110336055984', 7); + T('d62116b5b5eba94c98e1', '297260523753065332755511', 15); + T('25a90a2b75d596836e10d26ec831', '763841862190387816235893777156145', 16); + T('25142514424542535314551544304432', '3822616861518711367435556', 6); + T('1', '1', 22); + T('60gcc66e9d5h7i96g84', '629571193297266217720396', 19); + T('557', '2537', 22); + T('57b890a83c6a982606918', '106570504349447291847546', 13); + T('1ko1l0ioi13ml70237k46e', '418030558143625054474397580789', 25); + T('gjq69grls56a81maharg3k1h9ne80k3gb8', '92627603492627444203230902129810925855579328295738', 30); + T('198e45c5b8957ca80347ee693c5', '6210993456975719701341596528735', 15); + T('1c622c6a62cbcb908073c', '37242012395034880960188', 13); + T('8067bcggh07c550c58312f4gf730feajdgg0', '27542586791389756078137842819468361236131150720', 20); + T('1339017669669006742006795785006474', '1339017669669006742006795785006474', 10); + T('110110010011000000100001111100110101001101010111100100111001000111000001011100011001111011010100100000010100101101110000110010', '72173098483072489213930426080106306610', 2); + T('1akbifk7n24n', '11471452525560295', 28); + T('11010011001001100111100101011100111011011110100100', '928648793405348', 2); + T('692a2496995', '419167655681', 12); + T('374e3f2798d3b581c2335f3cc', '4554993763503222341647341469656', 18); + T('5rsbkqfkfcoj29ajdi', '630903110773372341792602744', 34); + T('33300232000244330423420200441024144200431020022134234241320011403', '2017080979900182548533705442612218309222032103', 5); + T('d8e68i33ekfb03hli', '40331655796578387904428', 22); + T('9ckk1o6p70dhgk60a3kjkekfjn05mef3g8oh7h', '214478514683523014526073551129543814424042054284209707', 26); + T('du9ofj3b04aecjm6i8uk222wnj67mumte', '54453279705597662566198782922581780169626751344881', 33); + T('a985nf1qf87n8f938gfp3gr4k81g9gjca1o', '165026316421448486404656724055483635522214133933780', 28); + T('44554275695', '114358237746', 11); + T('6c70a1aa65089aab372c819690a90c6898', '40090597115431771839762779123955361890', 13); + T('86044b053d0daaa6b', '18360481564891608503', 14); + T('b9g0kjlh7ic1gd503k4he', '8071692227413319882891853540', 22); + T('6b6lgm8glf152jl0ki91aldk2lo5n9c', '475619065001030234952948540234894886223466110', 29); + T('87a7a8', '1405170', 11); + T('1a7a31c5863d7402', '272823800502213130', 14); + T('jcjj6h518h1472jaj', '12877770189538637943819', 20); + T('1cfxr1lh5ox', '4919839455772689', 36); + T('310288811367762633415531745156071681653', '5684663159794685190217985404311834111', 9); + T('14037', '9511', 9); + T('21304440200313123441220313012000130041114333011322430023430432130', '1261979446859029545623380849346186459988139665', 5); + T('fbd45cc9e2', '1081599642082', 16); + T('519c09d40a70404490053c29b986', '45172525747251864110145361563666', 14); + T('19', '45', 36); + T('j58dfca6dnhf0ncbn49gkgbm69a2nlb0j9ch0', '936333578326698695534344960444912288238423306547864', 24); + T('1120000152232022252110140241032312245311023234334032342030250', '59734827155605610430522117739886928577205767446', 6); + T('18kakpghglhn6hnp7', '58343831352748592126197', 26); + T('3204102231020302334334000041132202', '399742489157707275724052', 5); + T('76r7khersf2irrlc07pm', '44183444942343119517736482557', 29); + T('10110011010100010000101111100010111', '24067464983', 2); + T('9049021262545393024579091866492398542902', '9049021262545393024579091866492398542902', 10); + T('3', '3', 26); + T('3veoda0voe2luvu4k', '12515452726305126989433740', 34); + T('1s8uc49044sv7fuccu7', '18407131120081731496593356287', 36); + T('5dbb78e8bkl9', '8462954128212225', 24); + T('31k43g71i6l49knimql', '342583482343807445741585613', 28); + T('kik9bjahj6ego855e4p747mcnj46ej11h49763', '468224983002703595759182810826586464545958811319348899', 26); + T('13442134313121140343404', '4281453440168604', 5); + T('7j3l8g4pm64k892n3dpbfpl1', '2709736655099210675851690721591311', 26); + T('24cg6b802a04fcdg5ae11fe7fg6ffdbg4cf0c7', '7666093592391929958225523158661060374109385283', 17); + T('29752369384011377360244601230116502477113293803222359', '29752369384011377360244601230116502477113293803222359', 10); + T('5c7ch4dcfjl3m5ca7c4dd180ac5', '4235317763416835730488450279827445669', 24); + T('2035677377165', '141448576629', 8); + T('1014', '6882', 19); + T('50amqhdu1dahb479ah6hefe0p18abc1', '2759244699893958338366015509269119092121474036', 31); + T('31solno38be6ms7z0l32lezy', '1902149044738223750663383610950532398', 36); + T('51vaai09fb1a015ap7ic8e2dkdid0d13', '599793397183230055183156703483234422199767481181', 33); + T('ef9g06g61ga899g028ahi376hfb5ad', '179724417572923541328982412809644535193', 19); + T('30461305635630120110', '35333469582885698', 7); + T('304320404024431014001134123224020123023411323323310331123', '4423498436624887900904435210623464152038', 5); + T('5tchpra8cb7gljnqmln', '12687862955738067803782907150', 33); + T('1a9c03j1ifa7bccc9gj407lj3ma0d46akbp', '21869065306730387940320360093107271014796230532621', 28); + T('90ag62b53a29861ge4h90', '115163310974925364653762918', 18); + T('621e835f12ad64e909cf7', '7413676543182627283180791', 16); + T('2', '2', 7); + T('7630b7863d3f7j2dgd5bhc200d0f68gb5i', '313413466559810937691188229453692824598698991', 21); + T('73g65db', '460210271', 20); + T('89a53768777804667091962684a82141855084708827488a283', '104534620147629781560246588908903729115824398664090794', 11); + T('4nehl018cm4eha03ch2nhc7qr0o4sk', '12351795250155371862634726792610964318320229', 29); + T('36472233456', '12991747029', 9); + T('32d0113076633053bg7b3709g318g996c6f7', '36792759299975206676907084433244583181437716', 17); + T('13mkp5t2fulgpft1', '66633458682354245995171', 33); + T('ait1ia1bl303ms1spcn2nr2iiboj9ent', '65672776682779904820651918660598404908077846319', 30); + T('3abhdcj86', '90360583766', 20); + T('6225d58f7849kc20437131', '35642008659327399615108918817', 21); + T('53pl04gjp4hag07ahf6gqqml', '22162199821100339000975528379110427', 29); + T('g06', '5190', 18); + T('20p98o15if0p78l6720837', '1055700859046956086847060755701', 26); + T('53i8', '48014', 21); + T('epk6lkjbak073be', '1636219455447096840209', 27); + T('222bbibi7c8gfg30664781e67i953j', '113089149702236219736580991019929354079', 20); + T('216qomeeo9db41m6k03bbb1j9e', '1244900192918777003082880510514807396', 27); + T('11b93e', '849209', 15); + T('7mifim9aek5b', '12095932884795779', 24); + T('b4b46h7bae18d8bg7deb', '7972552227341225059016915', 18); + T('207551b6c0195', '115523483441287', 14); + T('3p', '103', 26); + T('197f9idk9iig0l3bke9d1k62cgc8j5a79h', '284292035870134579813298295972717503315861875', 22); + T('155963d4d8h4f8i1hbgcb', '132504736945942923398014651', 20); + T('304801222557410412641765610074071503', '7660601613972756521838449165642178', 9); + T('a5f39b2250eff541ech35162ea4', '4476738604960162450815500774841664', 18); + T('54a88663121c64617d71b4a122209cd2c0390', '11605880739459970698798281924031905080986435', 15); + T('4ab695565b5', '666873944885', 13); + T('5ca1md', '78319993', 27); + T('3qslq250dvz741jhl8', '1072784063532716370614632652', 36); + T('185230488c4261398a2544cb00c34742bcb23288', '45731671516320241574807720089017159625203497', 13); + T('24141422340244200340140401', '856829699562036976', 5); + T('17de6483675cb29063c', '7044803064789933295164', 16); + T('429850987a9175209439859143545288466071015673385618', '4548955205287866147144947183033535389148611528651380', 11); + T('83gc50deckf7g2i95i3fk2f8jjjb7hlc5dg36', '17356768087450686226472673111107289905971168186576', 22); + T('7344c055395b32a41819c', '137912936874177212298706', 13); + T('1011010001011000101010000000000110111101010000111101010101000011001110001001011101011100001101101110011011110101101010011000100110101111', '61368670450547755504412274420309228620207', 2); + T('1000011111100010111001111100000100000000111001111111100100011100110101001010011010100111110100101001000100101000100010100000001100111001001101001110011111100000000111001010010111', '203364476148734435560803274724374642023080004086166167', 2); + T('ah3g35d548ea4bfh9d1fc292h94e193feg2e75dfb', '1780619835592323113116024582457203219155826657157669', 18); + T('855mqlyozhw069jiod', '2333132714739048924227135053', 36); + T('102022201201110020112212212022121021200011000220200', '903223172393847799242732', 3); + T('9bhy9w1e41l55fw61', '74170005765265656927173017', 36); + T('h592d8637d2dd0k5163gj', '4801712957170939177303758961', 21); + T('5', '5', 22); + T('2', '2', 29); + T('12000150142656341264053255555626', '202870200111145673769893502', 7); + T('257e51f', '107482369', 19); + T('2ecc612', '49071634', 16); + T('15355035253621352061261230366305602135543424420434543365', '54172534486662629705202470905166502672672269648', 7); + T('249h996cke9b0be5nc3l70fnc93h20ibg', '320569955418628440453489001255451094189328792', 24); + T('f3adom1ngq3u4irb01s2j4', '314624319053987691295478037262950', 31); + T('27a12175892a7a0160424168a35996613950b421869823b5', '1397433081866498613503527062681137551712252447761337', 12); + T('340632544630522633415662322031104260443650626022261224', '2214784384390370140259383269354114041805894388', 7); + T('6q6nce5eecdqkdkmjnje4mpchc', '4241070534916309906119738425533045869', 27); + T('113235054406626436112', '96665647902597209', 7); + T('12101301021001012300301111100123103322132000323213300011001223332331322131313', '8959721927373131398259946028619287042425595767', 4); + T('16kr4', '762808', 28); + T('2854737432023865746217633237845436746', '66621795309306392625749774020755759', 9); + T('19cb300183bb', '3169302143434', 13); + T('1012555568138a1b741846165585aa7b35a3b49475a', '2134175130500831128858578786794170081433983030', 12); + T('271106223317652510470133141417013436324344447232', '8063865882119118770028661617297344888458906', 8); + T('1j1', '1317', 28); + T('14bb4a5d83f3d4bf43b66adada6b0e993784', '1805977369681030296729705669300424034301828', 16); + T('1c83c397a04ac034190703b42b8a86c20119ac58', '54795371938228469135901266442543827602116802', 13); + T('49i16f5i7j2d76egccdde1c66ji93i82276731bd', '2471244346578176698373748682028711809826870228344633', 20); + T('131132', '5167', 5); + T('3e72bc538', '139294601405', 21); + T('111342330121004', '7759223254', 5); + T('g35', '4680', 17); + T('jj0h5371ddah0iahf6bh1', '5538389688853463873501657539', 21); + T('22pirudfu9e7mgq5ki34m731h9fngq6', '1151434291285406691472999364496269523410514631', 31); + T('79jcqqap3nbjkdb74jdc80qi1rl', '310580897107477820585107874712335706009', 28); + T('1p', '59', 34); + T('l84m984fde6354hgf936ug56kb8ntuo4q6', '348786713144351173808729528284372110071543438511290', 31); + T('5e0jot7ec7fa', '521409833288888610', 35); + T('20120222120202001200221101201011011000002122021022201010120111010122121222221222021100212021210202', '41942954018106129338036588729324918948010233105', 3); + T('93809gd4ghg1e170a', '1116205695833217173038', 18); + T('446230341604256064105154511213003600435153634235', '24648873732798551638045236958735680691288', 7); + T('1e1f', '15471', 21); + T('12520004233203303235', '902764818264263', 6); + T('13434033002003004402141124302242203344214233214324410224001421242', '970702797270984391835801113220919489871123322', 5); + T('5522220135303151503503131051350101251', '60854636647067381415610435615', 6); + T('r3178ou9caakpsh7bhbe', '587232889506503339619803819571', 31); + T('11344b48925c928590a9b65965790a531ab71ac0181456', '147070368225022849438278483344224755447603064318709', 13); + T('11132233130311012310113133213321303', '404377318206700682867', 4); + T('21243103211203011430314411440423000341224401022424403242114230442442334232', '2453393003559216570036598154088578511990647212855567', 5); + T('77138783429395', '77138783429395', 10); + T('e0hi', '378528', 30); + T('1sfro', '2720469', 35); + T('10a803a13b3aacb313d20ad45d79895db83072', '2688774325186814939420907831934492554488940', 14); + T('28c33418ca402312012c065c', '604690168281921446532949930', 14); + T('184', '349', 15); + T('2571c597721b', '20456544556601', 15); + T('kk6sqj7rr4hme2lhds', '150208264567193002800858826', 29); + T('566bdhgd6gf6f3i325i3eid7i6adf4h1h7382h', '1098869380632307597689024002479488625096341992121', 19); + T('48cvcjovvcps6w5ih0vvgg1ebtfsrm', '463163236652429988640359361211359679555574220', 33); + T('958baz1ki4nyqglpbas5lh1qksb7zikeivp', '750728967818084621222424385256922764057494617052439317', 36); + T('86151740892663982775089', '86151740892663982775089', 10); + T('213b', '4613', 13); + T('r7k5rw7lm1vngtxhj', '86816834093372879138789857', 34); + T('217025023377545890216047915201', '217025023377545890216047915201', 10); + T('28216429043406a128001999103968938669743', '10267451898484492247566507299193901416802', 11); + T('ikn5rh010c', '198281469065244', 28); + T('cdn3t8', '302754578', 30); + T('4a2681940051031157a53278652494885604968a144380017571', '636699130425199233901707564276961890453203238857370317', 11); + T('214001300333', '115259468', 5); + T('1bdec674867daeb454bedc3125b72e1582686e0c', '13235662457450871047945698439432593046607531537', 15); + T('1461101624363430103541030526563133043332334410035661345255', '2513783613053608388287524826007109061198917911061', 7); + T('1fdc0qd1nfs2j', '3466820238745915791', 34); + T('1ec2fd96j50ll', '21357449083341579', 22); + T('1021722', '271314', 8); + T('cj9ea1c3dd12880g3hei6c13fc1gk5e1gj192d', '108044509832522390985019647621567967006917730046839', 21); + T('22022a15a1242a4050a4a5802758aa2', '514622640579936481914636293866778', 12); + T('1d8d052c67dd79a1a2754', '165172435194406497470358', 14); + T('5f', '185', 34); + T('68771d2b5d82g', '3784863040815843', 17); + T('35116201514255324122021325201040', '590116123779691041518146077', 7); + T('7036036165443146', '248356246275686', 8); + T('b5ik3rusjxloun0e7nwk22bd0afic50jnwn', '351480021513874030859064287892370214007546506744437693', 35); + T('4457450hil348', '53898766295660932', 22); + T('hd1oj4rtqlkdf98x4vmxj0h3xx', '6943386874692972087645952788769858758738', 35); + T('3mao2pk4o2', '29204186262374', 27); + T('2n4cnm9w7j2g7s6kw5h5u1tz36knpqdbj', '167360655322446028749706425278701718029623161912047', 36); + T('264026a0ac626cd3b644714478899c', '4233598300815455570056021723238862', 14); + T('1132004131214141022204432310342112034223000012120', '4747410412074476042164830201172785', 5); + T('14c69b7', '6669566', 13); + T('6i8jh5495mljld5imn', '1967338742655672740382887', 24); + T('11011010100100111010010', '7162322', 2); + T('2sacrn05cl5dn81476l6pg3g0jkldgltrtn', '491130187805084132256352213258420044325768153618193', 30); + T('7629eg25216062g0bhccc54f310g475gf2d851h02', '1193072249536776238087255066419340494300241692433118', 18); + T('5110242554012351311222', '113996815429002782', 6); + T('3pih350290ji1ba39npfee1b67nadop', '11222243968353715216614952364432075435971389', 26); + T('g351f93h270h7b7hki', '4691673247887821898764850', 24); + T('6470565', '1732981', 8); + T('5335763184182038172006046108484131152678603', '64393019391265736471397626369582559266481', 9); + T('10000100100110110001000101100111011100111010011011001101110010111100101111001001100001', '40077624010777577544413793', 2); + T('d37d676ed324d97e91', '28833401401805729291779', 18); + T('2111db1644e3db18d1ef1e0d61gdgaee5c6', '1411526454880979898913723256921011458189878', 17); + T('35bacc513809d', '193736987400347', 14); + T('14l0ii8ci49k14i991el2j18997ai', '47432159257624618593218965255177560530', 22); + T('4kfshu6linig20uv100p44ds0emo3npg0a0u', '222236758510407484956912068045177884120458517136025630', 32); + T('3h66nirrqm0i7uf35145j8', '74031708866092624643936753260340', 31); + T('1kcnj2glh16sc9cl5b5db31o61oirjc', '126951344107855183929498621767034725464772792', 29); + T('1', '1', 27); + T('40h0kg91a5ldc', '88364370457256098', 23); + T('2kgb8kg39ajji17bhagd9mc1f578mbk7o', '5312546317931594372611431312678286944856393334', 26); + T('106454014536a137614909484877aa42a8318', '32549768237359567248289108586482266373', 11); + T('102020022121120220010200010122201201000102120101212112102021202121021101', '9373515480802386787336379528216869', 3); + T('113jamevd0ea', '52240096897795498', 33); + T('4dbb076838d50e5b00b29235081314e9ec', '3183265672012968496848943540783648620747', 15); + T('2236k2ihi51', '35074324315654', 21); + T('2044', '460', 6); + T('8i787d5ge3dopd9p48f1', '13622774573376163046429858386', 27); + T('111', '7', 2); + T('1012645216266112554320010312', '67619419391382234277050', 7); + T('3103801', '1656208', 9); + T('25a3g8b0ggja0bc0g', '1491257047471328092816', 20); + T('100100011011111000010110101011000000011101100010001110110111', '656366019324289975', 2); + T('2hy6l5cg1dt4ggq62', '19885494590425537842223226', 36); + T('gm0nqp0hpr4200fnkk9n', '102288227674562835100668366757', 29); + T('t9q0hhsxm67aglisrrvnl', '124812001386691713133980119986343', 34); + T('1757193', '1757193', 10); + T('8b63e2dca39c336b18', '2571294983995377543960', 16); + T('pjai3cvvbrto2t7s7vv5', '1014281637785517689396544143333', 32); + T('2l', '91', 35); + T('27a', '565', 15); + T('164qesjrk8v565v75ffd6wnf909to5h767k', '13879928000835241925467631555592155788584903540287490', 34); + T('9b8d19742d4', '2843752747826', 14); + T('b30f159f05chc4h', '4186384634788528049', 18); + T('2dbq', '102086', 35); + T('12f67hg2a8i64jbfhlhfk5', '17420544768736569554233288737', 22); + T('1100', '12', 2); + T('hari895bivb6v7ur8uhti8b5mnaq0j55to', '2237261580805951883828359760940720036427289454035019', 33); + T('1731mf3', '604246471', 28); + T('377e2roj', '137186257447', 33); + T('161d6be75eb7926a271576e8e6a07e67513bea4c6', '155734848943868815828395124475901609082268815461', 15); + T('200212032120020222230330311120311003232310222230102113323103000322230302220301231111032', '12196082923051903043941661056550160063059733091112270', 4); + T('31bl50i5hfnj2g92205knjn8m26aoni1i4n969', '16193982856683928575461552404913450912093921320287034', 25); + T('66h', '3053', 22); + T('3uqesuhcjwdakwf4g', '7780167401827423762290433', 33); + T('2eop91d5nt5193i92xfin7oiam1f9w3uvc4', '28605886795171609313172129799075303081247927522208376', 34); + T('129828a42a1a983', '479396571777467', 11); + T('qo5fjm47e83j', '149519533662546148', 27); + T('120930d30a1c6cca9c9c85d68a9d', '10109362297846202081439662847219', 14); + T('433434112303022113322421334420042341432322243420342410412010213', '103176224496584812657695985895438714073938183', 5); + T('2aa745d38106c55880246', '231591415358075620700166', 14); + T('10a23548709447811b5468951600', '147092018792966563018352675616', 12); + T('1muuqpq6h', '2989050560877', 34); + T('105h58mn7cho3e6ao1e8n8lnj3cj9k3539f', '341896959260587485518394721610662378353223908365', 25); + T('121a5813986070394bb7144864aa7329b9301ba', '120406122800356790683822388154769546350622', 12); + T('11100010020210011200001011221110201100212001011121020120012011211000002002101100102120012222', '37860101293024691849726322460894592104690511', 3); + T('2uaofdemihchuxnsi22cl3i60goox', '22006538653225073786749125118104638524377073', 34); + T('d329q', '8058230', 28); + T('26686dhpl7e1p9lb1qrlpn3fbmj8e4f96q', '1267711441005450956992875908126805624422712405650', 28); + T('2pjkq', '3291644', 33); + T('5ne50bnhcg8jh63h4b8gak89', '332489330535230011694478313343433', 24); + T('42d', '4173', 32); + T('7ncf8namfjbg1kk97p70j8j524ioddmg5fo6m', '6868243522317166196967869805047542008508489290755130', 26); + T('3c1440de515e09b31f73cdd0da6e2', '19496787444412678571409607909811938', 16); + T('4ml9dlae0ci8kbladibmmd62mi7bk79mack8', '2286569324205503763236162887597617701852950700129', 23); + T('i5g1c1039jc3bfbj3jg6250g15g51h8e398g', '62844649752973800818784289497153800322395867776', 20); + T('7427745', '3975116', 9); + T('54153260107451562218510277555707018420', '54153260107451562218510277555707018420', 10); + T('5aee981853bc993326395be', '428950049262896681474864804', 15); + T('add56j4b9hcai87c357j8ga5i', '576203698240315171997261396983665', 21); + T('25ea2g068b67dh1f1h9bch38f0g8h', '326308845239382288473188087950535697', 18); + T('1a12f68igh7e1ha195db27g5i9247g7a59', '2417780901753180332851584091382890457838743', 19); + T('dqgoc94ej889u5pcvhcnvmhlt5ohscn', '19737221570425505289342027022964526059214139799', 32); + T('2246d7744eb3e897', '942853654698726067', 15); + T('2', '2', 28); + T('2dclih6geh7hib9f1i8mjib5lf8i0ibicmh01ij', '14418043617625234175059607245813179917796405933128627', 23); + T('4w5q', '210901', 35); + T('112112113201334001133324303214103244132203441240131112102002404130442240443', '6830926531027276927950105054067971781356898029258873', 5); + T('156d6c3431108a479a72d969727', '877359658879832942505464566647', 14); + T('206143367232576283626041763949358536', '206143367232576283626041763949358536', 10); + T('3ntm', '145508', 34); + T('61216176216205012773031', '454507717401133184537', 8); + T('de94dkh6425m06qhqe2attru6bceaq', '599730557272586153217330707522770691809491290', 32); + T('8k77renk7g72pf3j5o45qorep14aj6b', '226691682861596196794798492778633822748918883', 28); + T('2jhf51dde7d0i38cfc9bh0c64c060i3', '3215219793828568936375294331195174448363', 20); + T('22h8460gcde', '13203582611224', 19); + T('91464b7740a664b76346b166b0b6', '1252108265251775177482532735178', 12); + T('lak3bifhtb6', '12610316079035436', 30); + T('1470998178', '7132969964', 12); + T('16hi0mjk1lpe1j0hd37c', '963405816410883410946327686', 26); + T('913b33b1474ba887bb9810409b9', '104295075607044617523054107037', 12); + T('161100013125365301651212042603023364211204566300621264341445', '136474139311752213668130631029378317696922594692639', 7); + T('7tc1le9kf', '6778801564928', 31); + T('8i837bdb2cc5951', '7167109876485719255', 19); + T('168a3egd44528f5861bfa0d474', '7979073806747005263453716304209', 17); + T('23bd94833', '3357993565', 14); + T('jfhcvjdllusom', '32474670588429458224', 33); + T('t5qb0g', '709461916', 30); + T('d39570c80caa28598ea432085259', '4291428326751199011126676862554713', 16); + T('807a81976166987b1', '17509808255778732167', 14); + T('48631823380828816', '9204637946118855', 9); + T('1223466603257252468314540667812301184', '28199983454052965359351624334678314', 9); + T('380h5kb7e3hurkfa4', '2370411015159854211757261', 31); + T('1440141506864757812308430315687726770760773493695949582', '1440141506864757812308430315687726770760773493695949582', 10); + T('1rls0b2jrpx9', '127252119185280215', 34); + T('7856f7b676ee2', '4363430111213756', 17); + T('2sq3johrljsw10qzoq8zdjf7u8', '2261502733792759669833591306474349874288', 36); + T('3002513066606060620347136440362562046653642', '255651532540391785253392875614499461026', 8); + T('3k9bk96jfj', '7002080842657', 23); + T('2ra', '3405', 35); + T('8oe8d7', '127827592', 27); + T('155504503336160624601362', '50117236696639403363', 7); + T('1201221010100002', '24940793', 3); + T('4313403103333003042400241154454214031542', '10125479020346114991096697847126', 6); + T('1ec3298g37f1a5di954cd42527cdh10246', '2798816910510266638276958183897932081056861', 19); + T('1en6ggipmk2fpmgndjp39q6md2dg', '1810736445109522104704252771239936966748', 28); + T('8', '8', 23); + T('37634546500bb245b039a5b1735089983763', '214232450284525132996750864907535178875', 12); + T('100001010110000111111010000011000100111100000100011111011011010010110110010010100101001100001101', '41279952929416973510169481997', 2); + T('122423221304033404101141043320442014321432131110421342', '16834509131210666326342619688068842097', 5); + T('1020131', '4637', 4); + T('klx3aeefvxnyodkn34o2d', '275488914248612801544646762918357', 36); + T('112211002222011102200100100', '4185291549411', 3); + T('4to0ahwqd18wpl114oxxmbkoq7', '1937666241171363939533759101938045719692', 35); + T('1135', '418', 7); + T('249', '249', 10); + T('121312302423213040021142110333333331102401', '66685945228939713462829550351', 5); + T('1625356215252', '26494122069', 7); + T('anwdkfr2m3dg48rdwbw0modm', '904249144970472511877809144186597204', 33); + T('113ki80ilh', '1271990411687', 22); + T('1530304232122121415550005004031544233425532424030304403', '2010294933256617576397318672085330157825939', 6); + T('104072459a38346d3ee7dad37496a609076921c', '500243084593242089330407721774970862086353352', 15); + T('18gbeee10bd80613e1b25ba0989dda3af21429', '5138521665544916194033529092059378256571453963', 17); + T('10101010101111010010000111011111110100001010110000111101100', '384469593819013612', 2); + T('b8a63049983a0654ba6778a469072297596926489102', '298161575681388874506973967749374933332233147730', 12); + T('1d54a95161a44ae4d216da350d20954f13992a85', '167448744619550277927636746527062265701749828229', 16); + T('1b8i6bff3538', '322005234426068', 20); + T('7gf7d819f8cc8f51bd98b226a8d4067ccc0', '5470961222003556575284943473483752741364570', 17); + T('2003040245545114430003204351', '2061732724911322435435', 6); + T('206740', '123075', 9); + T('b71g35500e8185fcfcf9gb3ded4339c567320dd', '652632768758471633033004484042049552510007932968', 17); + T('8d4dae81737a49469edbf0ag44119c95fef5c2fd715', '41919359081724970340005698065286668228554601347266486', 17); + T('5264349b37283231740', '138729190626813625824', 12); + T('456', '302', 8); + T('a1dafd83a744eaf49gfbf592bg05ffcg9b166', '1998673178276656072855040019793637333390949546', 17); + T('17004753588212207815125616470722317780142872376105688', '74245187234283454851664056978383868771198848737133', 9); + T('2211211011212001222020111010111010120012011220212111112010010110110122010102120001201001', '919746263988110720330734195365089255014915', 3); + T('2ai04fj3i27690f5c81j35b7c2hcgcf4d5bf', '8744656450668874412129805378468279112496746235', 20); + T('101100000001000100101100001000111011100010100111001101110011001101100111001001001011010010110010111010011111110100110100110101100001001101110100011100000100011', '502582666714640400473511879468920658557790730275', 2); + T('458b14g5ff2ki11ak43o64bl0mie6d', '146185391432846819540888318943706307712038', 25); + T('8453nb9ien1n12689c3a7i42aieg2g', '86825542084489172944843999109269881698368', 24); + T('101221012', '72262', 4); + T('17065041017173527170644622577111123272557633404173157515', '88295987850015910722625103099562923405439709011789', 8); + T('1010134331130134001334443233314112431111111043141002214131242344311202', '1766678229765066235739620315143368730448384369552', 5); + T('l8g1mja9aeehcme5m46109', '843832827267550590415898815954', 23); + T('16d687ff52f', '13653016922055', 20); + T('2jad9ic7hh8gj96ci73eh9g0bjbd2jb6524', '511390944414014194229800955887738666430610044', 20); + T('6614048801073688628406604411830070546726', '109782278237026239880293845889313820712', 9); + T('1jcej88b218fbd7412', '58088627120868089575496', 21); + T('17nkctjba7jdw43auam4', '450272045225207253826494727996', 36); + T('2000325253334254251300', '43932904281041364', 6); + T('acaqvr4', '13397132632', 33); + T('32200130031020032023121203230330001013022030331131222333123012201210033201313132212000010', '347370908365053402115400890112019448640793233522843652', 4); + T('2t7e5vi3n0b2q59gwn0mf1h25j5jgx17', '855292840092541663219061040782700655334518789309', 34); + T('223c6bgi7i80b024g8b3f7152d53a7jh882cd', '144932207807299978358573285607434907402231745053', 20); + T('21bk2h3iq62gon0deskjk6rb', '8842310846155518916223348697373797', 29); + T('43812c330990036289588b377110b0001c3a', '4162225291349057804333124544154752098422', 13); + T('kd', '673', 33); + T('153111155020052013155231500442433215421053021', '33301389716284423546912957799031589', 6); + T('1fk00c2842k0', '1610232270940190', 23); + T('15cd3', '734191', 28); + T('1210002122002102222011201021112122110012122122012121012110021110001020210220022010111020', '575848262380687269510769585003227729853005', 3); + T('23aa3133417', '61292676947', 11); + T('q3kt6q79an40st27dc3w5r', '3782702939054610713945575733531133', 34); + T('89gpanae', '112571410966', 28); + T('3odl2odo173g9oioe961n5m18a1fpgegif76d0', '89103898368780329843843213967906565582206158676623346', 26); + T('57l5tc9s9vp02t2l19j3j77fw2iw5hq0', '620246157108817541536543733311579693819651519455', 33); + T('1fl41tuf27cii', '4885706799284972973', 35); + T('3h62g4eh760f73c8h', '481320829720357766009', 18); + T('1000101011', '555', 2); + T('q57bwbthwkspaj2ucs6jlwcvq07k4', '86297743847844103494926974103414975911710346', 33); + T('21ce07f1b511gg0f0f57599c95713b', '1013676859489927884538566004602431047', 17); + T('3oskac9r2i9tf65', '2879424166264572649417', 31); + T('121101240224333112303121202113413123400342034344023', '128652690811737711862977258490543638', 5); + T('1422424401304142', '58085572422', 5); + T('6085281a33b1389aa68', '161299549199109190256', 12); + T('c', '12', 27); + T('54523528783185940853887445327908196165978268324', '54523528783185940853887445327908196165978268324', 10); + T('111110100201102211220100110220011100210121101110202212020100011201021202110', '303182193417511432321441108708547007', 3); + T('1536gd20h0fhhg5d55436c0ha63e29c60ahg', '726145947704576858453585758674557404546198173', 19); + T('22022010221000100202211222102202021002220222001201001111111011202212011122101022220212', '99392017799768645924361603871458701456597', 3); + T('53adce4b028fgcd7hf548e', '1193207787087913909236098534', 18); + T('a4', '144', 14); + T('ho2er', '14420247', 30); + T('e3ffcc64277a78a8256d7e1d7c05eaa9bf', '77584111689906087598180624752236124875199', 16); + T('1g7n7lo5io37ce9mp2b', '328524151751122058961202483', 29); + T('2030102214012423403324030304243103001403324042420010414232', '14722655319890169268088222422460420013692', 5); + T('613563354021145663036162612061303', '6871051676078235862437063776', 7); + T('gjhlfm5lknn95bkn84b1con012o8jd6g7', '31867442134261188923108513411199647167070822199', 26); + T('llhf1m42ch6mg6kc6e45ppc9', '18191151044159190019737039426392154', 27); + T('5e8dipbabapt0nodg85kmnoms0o2', '41758231678994811795607253224155508776722', 30); + T('621anm95ho73m0', '15082986714813289376', 26); + T('1e702hldk8l734b5f12e8dle', '33866826604275005079924066683978', 23); + T('22f4736', '36652854', 16); + T('15448784483296', '15448784483296', 10); + T('1jnoq4673ll4', '20540068473952319', 29); + T('4421014224404214202301000', '291383814569181375', 5); + T('1332402323133230', '53179114815', 5); + T('22455201354420531414254341553042333144110314033330011503431000114', '156559057575824331523615397895706894115565285344494', 6); + T('b07b1426d', '16292352313', 14); + T('16caa4d1d594aab6b98ab0b1b14264a9', '506098807791173960954389695213967701', 14); + T('220220321220320011330201211001230333102010121303332222311323021110121213033021', '58002021669943215882437485089516366950604108745', 4); + T('460175', '460175', 10); + T('rm92t4nmi39j', '704301162993180277', 31); + T('2c35e4d05c0', '3038123984320', 16); + T('3ahdutj9mbmtr086foui53gu0hx', '21785718654104569515056333343275862936563', 34); + T('14087634143410782327333780148640301877', '295332466513866374270920611186627388', 9); + T('43b171h0e87eg945ic7563b5cg64fd', '50806559075581748348880564861624437804', 19); + T('16ckpwbk9b3i275h5d8338a058ck1alg', '141489416893679296818740151228347362930888733302', 33); + T('k78iostc2pua', '1950965634957774935', 35); + T('4aa54j21df8hkcgkgp20mh9d931b', '5173226992447654665422544156091087390231', 28); + T('4eb942t', '8105266499', 35); + T('101011100101101001010111111110010111011010010100010100110101000001001101111111111111010111000110111010001010101100101101111001110111001101000010101110001010111011010', '31852131995136650015824448712052459356282756208090', 2); + T('171860g48cahf92064', '7521304142338550340336', 19); + T('1024', '361', 7); + T('e', '14', 32); + T('f', '15', 31); + T('cji2g2ynilowjpau9sxl2525vz9v7iy', '612959941037504203320865072390685049444312906970', 36); + T('6j92bc252e1pa6n5foeo4dphrr7', '282842955335866464220455210371442191467', 28); + T('754721358689534984612281', '754721358689534984612281', 10); + T('106nh39bc8a1dbd9efibf', '4068759645359915205371605911', 24); + T('8dfg4ha5g8e79i4k7e0', '5460155756354332817482965', 21); + T('4312506613443045610152261106065301405562361602421616', '56109700415530612765613834518456450896421741', 7); + T('42230004031210204341024234214114343400044000', '5120515292918450620552927346750', 5); + T('11010011110000101001111110011100100101011000110001000000110001110011011010110001010101010110100001010110111011010001100100001110001101111011', '1152932454441681553686105050801467624055675', 2); + T('gc35a15gh0e6hbfa344ci6h60d1756d3i', '7133162389260283421788216763773968727253278', 20); + T('ped56s09o4os2e', '261629936007586831748', 29); + T('b00', '5819', 23); + T('204a8kjg27l7kgelna', '1168264197453743365857460', 25); + T('1284b58363a24248816a', '391391876041895186146', 12); + T('1a6glmf9i6ld6', '31721821241462604', 23); + T('1100000001001001000111010001111010010111001011100111101110000101111110001011111', '454021537654527488097375', 2); + T('ktuv02o8h0dh8memwvf', '129541724909808086439236801675', 35); + T('3400040104213424322133232220302111041324', '6914515487235712203520018339', 5); + T('6e5jf09', '429758009', 20); + T('dppb2e9nnjn96jfbd293bc7d', '4903303064412360643152733423833467', 26); + T('2bdhki1c4cdjg8d92hh48e5930945b95b3g9', '48428996090391084590565126593313973435696979409', 21); + T('5nsrllolb0ncn3', '59794172529212348462', 29); + T('4j47', '58818', 23); + T('1101001101000111001011011000010111000111110010011011101101011101011101010011001100100111000010011100111001101111100010011001011111111100001110010001001', '2355828849861155012884780223410671381544574089', 2); + T('5h18fkuqeobprbtgdphncwcnb9nqi14p74e', '23502944357360874074985050551823304242402482605470882', 33); + T('430e68bd9ad4952', '301994663360678226', 16); + T('83mybdyfk', '18250265709570', 35); + T('345632h7po7bfnl419273c3h', '1107369755793636209889847907168631', 26); + T('155hmdm10qao8rfp5f29fnn06691nm24rfclp5', '415761194832301392698634884108004928012396592720849681', 28); + T('75376b8a021b20131b48b637182292202a', '3052560053832658763100020747136367522', 12); + T('252bf74645b4k1eb2f1cidb6k8gac4jg', '218675971817632327166089471412035111563445', 21); + T('1041630262513110000365330', '208292689407845958902', 7); + T('8ipcnej3bm5e1lj03k3d76d9kkp273', '944588256140958917841550791402929957368041', 26); + T('21122220112200101011011220112111022022210110201011001002112100120100211222120001220', '3398109006511352612217149313338598854505', 3); + T('11221211111111102230023113113121303102202013003202300031132232223', '480626689266491150511095172309208918955', 4); + T('3baaa8682ijg9hg6jiiegkk2e77', '84652263531904780964938488704665624', 21); + T('7027910070685774862975771344292902196641813764924732', '7027910070685774862975771344292902196641813764924732', 10); + T('14nmi4940e3cdr', '7628443576261703047', 28); + T('29714113449495030180067704', '29714113449495030180067704', 10); + T('16027026131232476667231251', '66325667775824613159593', 8); + T('0', '0', 22); + T('166452ac011c2116a421ac5bc3c023b6bc4990', '246444225807161486770221362501829463826523', 13); + T('10312410044054404422165523342606411123616622336034061556043', '11043975746401930269143716067439560851383524557870', 7); + T('1iea4l97c0i553k3b64e9k9jhb9bkj7k5566', '178448019454450986199237722696936967229476033686', 22); + T('1478139520', '1478139520', 10); + T('1d854cf1f48c4529d864b686f2d', '37421939842938093643010520149805', 16); + T('1a7129b0cb220c0c496b03233', '983122173959444998093229449', 13); + T('61637976999142621145200538', '665607201960195049612272036', 11); + T('b437bb812dc0198d5a011a2aa866151bc83add0d20b', '15509757582610193893018549990835987906527184363915', 14); + T('m23o33o2ml072aamjic75jgg68aa016544an4o', '116924132032633647730209472607114957774639320109155124', 25); + T('62c4hnh0i1hgaa6ki4cccb3g0f9pr01t', '103732044580983310247443658362576131853311657763', 31); + T('2mkv65', '105113750', 33); + T('222678eca86eddc939b60848b7b8316828608e2', '1053714680554554231365359188076002075988224512', 15); + T('2g7db1dd4f496b8503cccdc3089bd', '84151059017237335236726835977283846', 17); + T('11356664335110632222416260423353223124562262661224650210151051611', '1490024421959891167700411423106906579208279293688323560', 7); + T('8lfgf', '11533971', 34); + T('8gf0h', '2051693', 22); + T('21h9mlbfh1cfaml7ahfnn513925k46j26', '304178596755743063799400356490104291373592310', 24); + T('222020120014433', '15156798118', 5); + T('a737gcfagg0ee030af20537e209h57d13f', '2760612480391619308046997847062410963259009', 18); + T('bf475f0e5ed9ggg433b1a7', '822034344011337163185436487', 17); + T('11010122002222211221222010200112111201222220111011221010122022000121000111022210200012', '49501356081468652681886134573393140563711', 3); + T('0', '0', 22); + T('1j221dh95aj9ed83b5e4kaf22ej9', '956853653611900643236190963151594750', 21); + T('48d1', '40846', 21); + T('266359b8b969632b6ac86695403a8be8c3a2c2', '79536364099052136307674191123580292528001882', 15); + T('7bc4edj25jg8fb3dhmb63in40f', '662536092600660719641563026403877515', 25); + T('2123b9378a3e', '17962722130559', 15); + T('1vb1rg21fp9tf', '6402729056965380805', 35); + T('90507i0f54gk4b2g0gc108520j8m3m8k9', '338836712441591160747477280351050302149052875', 23); + T('23h48496g', '447052385744', 26); + T('3322002', '16002', 4); + T('2ej6jk0i', '84396331026', 32); + T('35gkbg9', '281020980', 21); + T('477ba0g4qq4himbr2delgbibcpjnr', '141181564767286604205256660712659301710991', 28); + T('16625630637244103026266171376764352575040', '2457838121719672737744590760418408992', 8); + T('12772', '8651', 9); + T('3334e2ff48e42igd0a18e49fee8i7g1cdf9d2f', '652404784229042811789503804111388997324151029358', 19); + T('390312a922213a8a64714a01061249a60a7a57903894', '2301485456077975760943477454917012552590331798', 11); + T('4kfc692l3', '534994898043', 24); + T('f6ei0o93q62gtjc3o9eefdad31c6aa3p', '259600317350324790376664305311377927792105345844', 31); + T('77jeli', '47252368', 23); + T('1818a46', '3086518', 11); + T('jlul2c5fu75ctck2', '462484928590385125215962', 31); + T('2kdbs53vman', '2970189100472663', 32); + T('18ba40257c006787249025dc132901035373', '21233179223979726392280273913614195304377', 14); + T('12tq8', '890888', 30); + T('mcgnpml3i3', '171328946260377', 27); + T('5su0gr41uohmu73i9c', '133822801190393847297321403', 31); + T('10042553121242502132252422', '29022304271575587422', 6); + T('68e3f619263', '13143928745961', 17); + T('cdteiu0u3iffuohsbsiqupa1uscjpcm7p', '18173795688393997715594261305551967041493744900345', 32); + T('10ee5sidfeljo8clrcp6nk4d0j0mkam32k48j', '45055395262449121673024204762282471724687471901724826', 29); + T('1561736223610', '118371198856', 8); + T('4hion', '7535831', 36); + T('3bdh6671139d1288bdb9d8e06b7bc9bg', '2993926724680335312809084195839710840298', 18); + T('49b4a2104b545b2439baa986099927bbb251419703', '851737504589717022185417748267818774777893299', 12); + T('3f2ac50eehakjh4a05cdjlh5b67m9fa', '259979250004821542868763765100327385014666', 23); + T('32021113132120213020101103112220220223032312122', '17512340678477455793664617882', 4); + T('34iihadc', '2916834773', 19); + T('tgcaenh22', '41483651434205', 33); + T('h8', '484', 28); + T('1345013', '179399', 7); + T('1hfi5', '302365', 20); + T('1837046a2692d423b', '3461408270213809773', 14); + T('2423b8895916', '19692665799546', 15); + T('37l2grtlcaek6h1i3407', '37852085679981001127651964607', 30); + T('5306200451262252', '25859506488363', 7); + T('cijg0', '2071920', 20); + T('3223131302032121211300021332322023033313232022211002002202101001320002202320221112211303', '88098060436515295647388763871409380266783398231894387', 4); + T('7mgg6lii29f52l7f82d22kl25no6m4elbhf', '2678874370559434952680139408552413555034712835440', 25); + T('blrmrcir7mk12fbckpetiwg', '29790101256737754545389640825091289', 33); + T('73m028wm4wdf0', '33643976305588152300', 36); + T('46h49d5e', '5559117314', 20); + T('2h94b5961k6k33f4j62b3d2', '347276697125022380759656573571', 21); + T('iir6o954dn6d', '472825548883025356', 31); + T('15056662412721204036161014', '61822867030969079620108', 8); + T('e8g6s2ier6', '501934442756966', 32); + T('hmrire23hk12dot2906e1ttgf6hkj3npdb', '98751340425225592010077526066776177092708434773901', 30); + T('18gflnnl7gcreqms0u3', '4606469246867644935544977535', 34); + T('14232313010113323034040302131444113021324402231301144403120243324', '1034471412400084913926462730158583111529852964', 5); + T('339188b1b51529b83204', '1058597104025846215012', 12); + T('5b6igfike9', '4399870445952', 21); + T('68476024a7', '15953876374', 11); + T('1llad2', '18303452', 25); + T('10111111022112002220002220200220', '720566895785271', 3); + T('82082726527757034455488080404806838654330250467537202641', '250570007137020818998373455622683381347427919884630129', 9); + T('lj1lc7m', '4165081534', 24); + T('4dg8p9ia1160g5ppg9t', '1724578545171269121406439699', 30); + T('kimpiadg8qpdf3amf65h61n52h52', '9178107846544020627692598732858329684582', 27); + T('12443301242243', '19142651475', 6); + T('506s2b6', '2979045190', 29); + T('21211101111122222000011002210222210011101210020200102110210210111210222202002210', '128580978328817621464532250583984291620', 3); + T('349e7g5d20b4e0a765721dacbbd737cgfgfee', '646586583890294574021104159470580456873235673', 17); + T('79c', '2710', 19); + T('1231300233324230142304044004233200', '178445501100086472727300', 5); + T('5db3324efd09a682cd', '1728459668785308533453', 16); + T('62bbe37605981730a0651b', '30853873199744823817849526', 15); + T('2db62d70d086egffd30a5e464hjklfl750', '521541774356940252445618700157719013899814514', 22); + T('m96', '22822', 32); + T('187708h7k8', '1110072620903', 21); + T('17ce9ldjd8934gc2b9a3chc1d744i703jkd935', '62826943015042400290867266302428296777642741341475', 22); + T('11443312400322012223000', '3332757738398500', 5); + T('1hqjh7ttioeg3', '848328945650941083', 30); + T('2be94375a', '66205466910', 20); + T('221330320311200333302212213320111201', '3095465187976224408929', 4); + T('1059486961', '1059486961', 10); + T('1f74g8g613iggbic54d5c1666b3354853ci55', '19620313041727143313210925539501308523593302666', 19); + T('2b80691b78400b3b875986849c456785a6', '16656663317340963020300085481646403927', 13); + T('105503321454253531533345552515052013033050251424524110022331215545011', '95428095959296366124948006431032808833093168473760031', 6); + T('63c22g38f64bd23576d563c98a', '35884274494603924587117723372126', 17); + T('100000443142103030421444', '11924694146732749', 5); + T('ggb57935h39jrjohipp0rmqdi', '894389162868447514060089400627116702', 28); + T('2q2dn6b09n80d9k2g93ap6npnea', '48717964930141503475483909108219387417', 27); + T('43614541525400501036656560325626334530352123112304543351', '137711359489426689304557831808873617418940236797', 7); + T('13323bh1bebi114agffj24c1h711bhdcif0e60dd3', '89008124624321806307999787004805853614563072139070876', 21); + T('1', '1', 4); + T('7fb2ajiw2hgrnoeb0vhsa', '99256366762497264660825409804234', 36); + T('149a672ab00124427a47b2636aba00a80b724a159b66', '35605955455380818029558322811688734791059784766', 12); + T('3ad', '2645', 28); + T('2222', '312', 5); + T('102124304003114232', '833650441817', 5); + T('7w092wmu58es1prcdq0498nb6q', '1537695760778926711856163192898098505322', 34); + T('27f', '2025', 30); + T('2fib6i3', '308401327', 22); + T('5241360402442352621410122040100421346264560451615162662345006', '2729029317009007107739107745937257680991457741019081', 7); + T('2c1a7b4270fgc467ed689a6g', '54141458195409785751855946358', 17); + T('1010101011001011000110110010001011101011111101100', '375578620712940', 2); + T('5', '5', 22); + T('790ul96r', '309988654893', 33); + T('1022653165254525421460266331000356', '8113458137413116173799745960', 7); + T('3114306040302713076119191937545', '3114306040302713076119191937545', 10); + T('1633654452405530', '9162556072418', 7); + T('gabapnjpf1tf80bs2b7qd38981gr', '710991831783491714221384954071153594598939', 32); + T('2', '2', 25); + T('18c5', '23301', 26); + T('1213330331231123', '1744034651', 4); + T('1b60d2a23a53bc5a', '1972808230993378394', 16); + T('4pavtk4kwc2g0r3sz', '37428329950762094839639043', 36); + T('g1bbecabg532781dd572bcc45f85a1a835f17a', '54127394101584857904914717532946479324272494182', 17); + T('101021210012022200121', '3985912249', 3); + T('13iqmcb60d3l6qn9af41o3jldo5cqoqelb6kf', '14166929345174532589732691260929644735007809841979615', 28); + T('2518135184834132752870818455702810', '79701961075331499851002499212929', 9); + T('210110010012000122202102122011011122201012201120000202211201012021100021112200020120121020112', '187204475327792704723082910911246163138644555', 3); + T('ha1gnkhng', '3630888091418', 26); + T('12g655b423e00675ag9g7b6b28hhfbf4b22e3h1bfch', '61163427224627665999001017285634740702868701629011309', 18); + T('3b', '50', 13); + T('18', '22', 14); + T('ab15c03638359ad93da63a0ac', '34690700872343342065779519544', 14); + T('1g085f52a1g721f56949c1679ag376ec102e40', '6532133482571135978509596041353302889104298965', 17); + T('1t6bar8271g65th5hr89nk3mqrlq6i4tff', '10972219189140165833792184350100087874831084514565', 30); + T('64y', '7954', 36); + T('101110201221010200', '150258663', 3); + T('c', '12', 13); + T('iaec11ceic9320cbb8h8', '245219574798540725794780433', 21); + T('c4gf859id03c5g676a13e5dbhe', '1140847745113516444764873661865817', 19); + T('1beik1nyofl440ag7gkcjl6hc', '15143452013784185315179545005102573332', 35); + T('76689e9e8754', '64261061415529', 15); + T('236oh8q7m88m1vmbwbwtl', '4919241811255159457064943728087', 33); + T('212303367410485756685340683385777821', '212303367410485756685340683385777821', 10); + T('ia8d2l548mr69jp', '3344051649396076528445', 28); + T('5b46jc6n0sxni8xvpercfiqt', '892299334153828813360735264583249649', 34); + T('6wjkpdrd1l1eq6ev75lw2dqt7k', '2769821915598289015754184942663874264915', 35); + T('2dk43cneaa38bde9il6lk6', '248598248682430883472103621926', 24); + T('2dt2ep3auv4', '4969992251611066', 34); + T('h5eg38u5ob9g1lwao', '33951757895785755222148470', 33); + T('c64b2aaa24b8c1cbc1a6a116a687a520893c9010b801b47', '21775469720607548784649620095270581236726101794248269', 13); + T('5fh1274cjdf3h55020a74c5', '705854882662235548477311540560', 21); + T('lb69k81d', '73171113401', 23); + T('epmjfo2h3g2g2e36b6c8n34kpe29gp6dp79lg1', '338817707971967615907480318364523251504671071025089101', 26); + T('240440323120014132430403102121201024012100040001003200142014230300142', '961763898207535652839231078700423730480243212547', 5); + T('m2jhe8i', '6828900850', 26); + T('11101111110110011011001010101101010000001100111010010010100101', '4320760375549338789', 2); + T('1045205104430132440520024411321142422540353410133210445340142121120', '2590167532599341334614211172458659924849693395596552', 6); + T('g36jd1oe92jn86aai3jkklcoeq3obp92e4p4', '253854072983617271692860022272463002824013138562756141', 31); + T('8dkooqd4zn', '850775103673475', 36); + T('15120343551355124445525435232555231033521151050423243335402', '2539878326431426452775761994842902860886262746', 6); + T('298lgil5k5kcgili6lg3kihb23gc203l7cb63c', '113456079349387858220556248154469725980796810803534', 22); + T('1lei632qmoefkm31p6imh065fa7j', '797240105544041247670463126344319732926', 27); + T('5j5lid3cq1t97vkphbce1pdsc0ad50', '249736734398750751548236560945594271892059296', 32); + T('3477263035715376447112210', '17112580757759444423816', 8); + T('156448734843a1a32b376aa2654087b6', '4161327287906171047830726268271226', 12); + T('34433515140021245052211514423', '23302817098029688581807', 6); + T('1j', '51', 32); + T('51471b55a0724a95b6a5c7338993303081ac', '4964947861806473401365128050047846101681', 13); + T('c24h0hghhe534338cfd8135c', '901568719507789440497671591386', 18); + T('bir31dee2n4q3kiqncidbhqksllce8', '206194968967125424489569046312454402749360697', 31); + T('120022100000120120111100022111120222122011001200120022202222022101021200110122211222', '6788270345480080438329192354621823378457', 3); + T('174fa72d10hf8f8h2e3g99cag8h', '608727676666149236358796734219473', 18); + T('a1h8432ih885f9', '424773876852211679', 19); + T('nojm2d4ns71v37ugm0qf06gbcmpnw', '78337300498913437512813545723950687423977167', 33); + T('161037100117541', '7769478438753', 8); + T('3', '3', 9); + T('1b7b2cc91769682ad42af60ef67c77c99ac81d227197', '10281919698706053870205728976619722313496732052386199', 16); + T('afh25f80e4ph82gp1fr67hmrgpn7i3nq89h', '168629703795331360132747588030374114678927773055501', 28); + T('3323341402104', '905809654', 5); + T('1wd9i2gb5x51qwn0i3uf1s1ve27wjpvj', '584082364118340230826335224432353183683007501197', 34); + T('32577073350883554', '6105022583908099', 9); + T('a9bee35057d1i71ffe8a0ja643h54bhfa58ii', '720134659347610141900482413183484695157617643578', 20); + T('121210122100221002202202210000201121202001210111011200111002110210', '19230462838832172623888006401599', 3); + T('2hfgf7f293d9bacc79ef', '2120195472437110473202983', 18); + T('5ihjghqni4g96j554pe5fc5okg71de', '14486130945303122393368850677450427863143234', 29); + T('1', '1', 5); + T('8iw9sg6afo8s0k8uf01e8vsbdiagnfiaqh', '2958988238033921612788754062346621852633413272634125', 34); + T('4beubn95hjpt4r9e0ci7usc7', '366449081183766477979316652536458765', 33); + T('d48a2d77b1b60940c800003621010101a61763d28549b', '3584857812230806937337786075261982505145054504278321', 14); + T('0', '0', 12); + T('g7a3', '112464', 19); + T('10111111200110221021121120', '988574822682', 3); + T('1r4y316lix1qw2umka60k5rhzz9lww', '2380985708564990921650705038323328729070310960', 36); + T('10110512330112515662324231', '1372761603510037086403', 7); + T('16a9c4841a0c959526650301a7b5caa2a65597', '3783858424048742348429335229654291816630417', 14); + T('fgrg85nfo4947li3dqj', '33409143920842372353926257681', 33); + T('78a9c9d91cb45ec86599f1b402f6635265b69a0317', '176349517282896190364726424897935661923732528169751', 16); + T('1408fdc9f191a9be2efbc3846be66cd47ea391b', '70707899311965473818711332151924460200296539144', 17); + T('11', '6', 5); + T('32183b04e5e72ed8c76582a5e', '52862848155929840288075992214', 15); + T('1140302201413440103242033313203', '1271212993476215135428', 5); + T('30xh2uypo0ito62vbqbntsiq', '987701737110790082032413714393048956', 35); + T('1c6b943a8603ab486e082d6a4a6762', '23395026406105011370375736268800042', 15); + T('12ff86h', '790162397', 30); + T('1s7lqds33eengipiipxqqa', '858343047434452825500670693844626', 36); + T('4f6e67b1114hcac24d7i79c995', '447528954470338933744428432073566', 19); + T('5636664', '698688', 7); + T('mafk7830dc', '121664093929910', 26); + T('768gsjk4gsm7pl1ot75grodpfj0t', '133120656483903774436059010594997642935901', 31); + T('4313442301430144333034333224310301432040323222210030044222211411421331344304', '123662770604980307050783935056941063117742366185028079', 5); + T('f977ljj', '1748806177', 22); + T('eg38ke7fk1', '79381095454493', 26); + T('2i7p4t8fpceetf4dnlq', '1010667644618526459089112356', 30); + T('12c4g4', '2171092', 18); + T('2', '2', 31); + T('gn2r2eopa9ssql', '267366244724756072001', 30); + T('b28ana08k94f596m0h9hi7n', '25697606312564649510807036677951', 24); + T('16ps4ug6m2ba2r', '29801816306000563900', 31); + T('5926b', '284051', 15); + T('51263426046122444503052060226', '2393161862759116724273865', 7); + T('8247054749346666208174a1', '7360587857824675562554214', 11); + T('ka4jnb62g8cmlf', '17902323632911891335', 24); + T('4de9276993hgb8a6echc3ef224b38cg5dh', '1265428646069784687854510709176092917599183', 18); + T('42gd1k2jj', '322506363396', 23); + T('1hn5kpf05fb4o0a6hr301', '143595453719112771974614666609', 28); + T('4e603fcjm32086ng194n', '7107200633977689504284025944', 27); + T('qfjhf7t644i8rcprlhja28br', '249684275564201049491161041832861557', 30); + T('10o3mixxqcq', '2812826818986546', 35); + T('1202111021110211021102202120202012101001201111021200210001112201202200110221121122101', '21059093384477202862416737568527737310314', 3); + T('2ji33jfcje7ci63a7j74658cf4eic4', '160814309330846460265100741771056759444', 20); + T('1kjf2ige0j', '2353894887979', 22); + T('47534897688907458', '215057061551555682', 11); + T('4175', '7145', 12); + T('52', '57', 11); + T('2061405345251056213423263560600313464103414350261551220366453223', '370646419200904248631530204999374005994255272808697624', 7); + T('1a7fhdtcdpl', '3563463934771321', 35); + T('33dj', '111526', 33); + T('39894', '79024', 12); + T('7e1d1ed059a1e146138', '11736928073492751232403', 15); + T('159197a68aa2525674259a8995014b69b43267906', '21755721404512460507158581208182125061497430', 12); + T('lgfi9r5hunkcmir8tclqh6tb1pqf33q', '11856112170670785902649247238864725820665462048', 31); + T('221a2ac80c43003a864a93561a33', '2581136407529861197214154837507', 13); + T('15k97k6h2k5k8ejkh4jf35fh6c014ed', '10587821536977531443888357135531651418988564', 27); + T('1rcd8', '1739821', 31); + T('3c2aqh', '152433373', 34); + T('13dp547hbmkbq39', '123667923481065503379', 27); + T('77425744122551307334650320055405680842741484675143', '448423853223269792174799411068423443678773482313', 9); + T('4sockf2l157f8hb17ddr2hn9', '21560188551982844171137848011861038', 29); + T('3juflq4b8kdr8f21p00c0t357l2t5j8bs', '1928545001966571247157174149144121166575881998307', 31); + T('ghp116oj9ld85dm24m3fhp', '19072941993100916686445846260174', 27); + T('2hi0977bg554', '998426859590521', 21); + T('dmq1t205zcsi', '1794163292538515586', 36); + T('kjck7akab8f6lg35g3i7h7g', '7132544457923014075211392976822', 22); + T('2d3ceebhei36e', '5963519500590381', 19); + T('a4q63wkuhu5ew942ns1ep76i4', '28222639869071829322012344499963435954', 33); + T('6o0jiguur7dnbl1usfp1d87u6fdu0ltisl4', '28664748020226432037191687849395173254239302974652396', 33); + T('t0l2snlanhd02t33k0nj9c0sc88tis1', '5975669526488595725702933777554273527309680041', 30); + T('2fmjlnb9ol7', '368530312010049', 26); + T('qhhvd3umkjbqw9tv7', '52479183082258753819239127', 33); + T('2500403606135212325430122365142624450522464122104', '99685783804159217515113789269706714123131', 7); + T('67qam7pealp2tbtr7c7', '2426267332304775510672525667', 30); + T('32556410147661251456104752223004', '33072622383942794561666491908', 8); + T('1c4ba716175b6355c7a', '219526637401960896784', 13); + T('5f1biddjbgdb988d7i73dgg0j9iid3411', '2471320652055149744926174715249139131705621', 20); + T('1388d574ca446bab251b87412c45352', '30454263653289721532545707133349100', 14); + T('7gj62q9ggf07fng3jebko3heolfp8hhd', '5526886878277522528388980899464600768775115001', 28); + T('357609f72f993e', '32878913632422200', 17); + T('292357a4a7ca0a4648512acaa416', '3226641593686507554429950032194', 13); + T('13hog', '1313053', 33); + T('aks3be893ugctq81jr25n8', '823004494027615294747011449706584', 33); + T('1901201228993448243', '1901201228993448243', 10); + T('10pe57shgkj0salrufuot8', '21377178212418820499882165050214', 31); + T('1h056a5d68', '385881101936', 18); + T('s1q88msiur9c5', '46791653096466186782', 33); + T('214256605b5b68173072b55a286678a78809b8a1b9123', '643841400834614066547345702859283739566239655019', 12); + T('225934566430252988213108187132502829348539', '225934566430252988213108187132502829348539', 10); + T('d46c910d58ac7136d30353803945d705d2c686b94a4b88c', '702141078557834674338031856012906248646954470735486212', 14); + T('60561454833387506208577187677017606400252625684525728', '253403574031753766760677099922706298646581738014040', 9); + T('5855c280622b208', '22237016075348836', 13); + T('551243031044335040041414252402143313230452031', '101760249517059532483322747468911891', 6); + T('43fia', '1164224', 23); + T('5ffn', '163858', 31); + T('150c7d4ab18bef2ef5f6732d9c2e43', '624946142089881488416245393484485342', 17); + T('1622555136441511413165355262403631420051', '1733785303380199232372666440606372', 7); + T('35gdh2332d44c44fe61beib', '44909929802583956335572418047', 19); + T('1a2', '553', 19); + T('6l23gp1o0d5lllh0h0cdg8phhooc8le', '19160300206063055542614858497172997898567024', 26); + T('356555', '861329', 12); + T('121121', '448', 3); + T('cn81glehb1bj731', '272882629276550119945', 24); + T('310f7e944db1e20ca7d4db559be74aafcd', '16694431636419175813863637436681440374733', 16); + T('1c50o3fo032p9dlma2984c2m1n5', '9043264155154723194686490722280250127', 26); + T('2r4je4q2dgrcwof3ha10riwtv2i', '38819957816824364031051480668637630210813', 35); + T('1bsa21se9qifdeljkhl8t', '487505004229099904116267378169', 30); + T('6hra982l6rcia40f233gc6623kndbhi7', '4832827139354482206384048706613262325658834511', 28); + T('54c1te5y52hryxhw8dqfw', '38992453646077977693451503497907', 35); + T('111001110101100110110110001001100011101011000110110110001110111111010110110101110010100100001101101100111011011100110000110111100000011100011', '2519183162360903506191281057447758087831779', 2); + T('7je5fa763i628f2261ed4527cb', '2679563654580342682033196365619051', 20); + T('3dn6l79c9i41', '5450807136767713', 24); + T('f9766807', '52451515394', 23); + T('88ed0197de', '1684047406892', 18); + T('52h1b8218gdc40ad5i310cgag863ag', '276096404325838933546263152968372529416', 20); + T('52t9r2u77vbvf40efm68bawfi2h', '33471177559078492055448775316984931198101', 34); + T('200hd', '210271', 18); + T('1f1v242ndsl7lvirbmm58el7', '122766495427277981800542186078046723', 33); + T('5h', '192', 35); + T('a7538d005092a0', '8355305185328108', 14); + T('1211474324420476530235671057512302', '804188130270400499435404432578', 8); + T('36007574066667272553066076615170250031017703', '2553404178224213798051876650192088604611', 8); + T('5e358', '487347', 17); + T('1303322003313332132023030213123123210311132201113000000201300133220032030023213310031203', '43366030506223289335027745955530792181104257171145571', 4); + T('13579e8b8g5c1ii6c63102', '581965839975794432039894464766', 26); + T('een2b8gn5a0akreg', '74066109426399607206216', 28); + T('373734g9481fe1bd3808ebg66f', '19756375071243592050789033494286', 17); + T('1122000020200011200202100120112021222202012201021212012120002222112122210212112201', '722771278211345591971149292885640595157', 3); + T('22rod', '1295069', 28); + T('q5odfp9f43b1c50qjqpl6r75', '50477571992047059200316127648900857', 28); + T('3acw01ki1tllmf', '268187445649566046567', 34); + T('179h9bpefc02l4', '3184639878779111822', 26); + T('603076927928855a459', '33500247475513964715', 11); + T('b7937246a973707756360997bbc4a1add265359b332a', '221810527222776063188868345414589959484754657616362', 14); + T('11a4ae80f151dad1752e32c310a41dae552c37b7b4', '25785693883194456949802584063055012266517133244340', 16); + T('1q0s0ct3a', '1993804772458', 32); + T('305b07aac599939a5c2a7', '253475774098192811736459', 14); + T('3e7c04g60291a4g4c9f8h6fce634ccba', '3114555919530851258064228685168186383232', 18); + T('94nl1m3ak53p4it388jf6l3mq', '5679054267841124072813695563380516908', 31); + T('1e9e77gdcg8999dh501deb4b1a8', '783953025310755506835756788250680', 18); + T('lomhb6bfinkeke7jghdjnhibdi', '1953665391422082290906397636706147843', 25); + T('2116596779495229974441934380827118544653435', '2116596779495229974441934380827118544653435', 10); + T('368d9', '174129', 15); + T('1agh7h9ae43hi1af8k8kghdhfkc08dbhff66dg', '12657253320720905806182288358437536765226473490475', 21); + T('320abd803f00618b853f0f4ad06d76e5ead8eb20d', '4571024861681675091071130733403917525672421929485', 16); + T('13s8nnc8bsk2d', '1862804681403965620', 33); + T('1d1f67lnfl0l2d54e8pd4fdld2q1f2i00m2', '6881652679580574557491455550605507870404485512536', 27); + T('200e0d886dg8dc3b3b2bae2b5fe030egfe843', '396106131924337983787092625578393234401506110', 17); + T('nnik4kneo3', '252246525060547', 28); + T('opgbb9o1gvdiijz8jg721c39untg', '25881420507156207174185940935514686366771476', 36); + T('1837bbb0c0b3aa5', '17663579102091025', 14); + T('9jief28l04mka1lle8', '2856790240918270335561368', 24); + T('7tp3jdgcfd32', '141621578705936792', 30); + T('4', '4', 30); + T('222300022013300210200', '2937927436576', 4); + T('11100000111001110001000011110101010101100011', '15455189161315', 2); + T('1ha43j30df6io8438bq9slk1', '31199374101388173422454285941010092', 31); + T('10jbjaf26fgjiffg64fded9e9i5', '24920507465295692091626238401086277', 21); + T('87h9ij5dlhhcjh1hk60galgb7c', '92091778011039547451374958750302842', 23); + T('2784592431917088379783455384035660971125128970527148', '2784592431917088379783455384035660971125128970527148', 10); + T('3f440273754699dfg5bb4e74', '77813808595431029263623003362', 17); + T('1533i', '947808', 30); + T('c681cb1744269d1db3976001b16d3818c2b64839dd4', '17109878266190272366632308176425149995679950565718', 14); + T('60v', '6565', 33); + T('shn5ajab50en3smbga0d5s076', '3582012633407680801468180717971425010', 29); + T('e3j6q9ic5', '3992855661140', 27); + T('irhcdao47803hhdpeu9e89ed', '378032942792617127943658071456183506', 31); + T('g256ch64c0b74idagf1ab1ifhi4i737e6627', '9199059457373375499891835079838688223060102043', 19); + T('10111010101101', '11949', 2); + T('117005335301204024246205442614352033070314715177', '846676850563380044165463437005588987127070916', 9); + T('4f4a32024611g26g2264f6', '338430706762087113025482959', 17); + T('5ksu', '169073', 31); + T('11mrnnlfebrg7raer', '152018401101654203204227', 28); + T('83ioaci', '3152456595', 27); + T('9e6142b038a', '34978108072150', 18); + T('1emawv26mw212hnqtpcwl4j99s', '566817147004008119440688047613652334743', 35); + T('29sh6pr5181di802j6t', '14165634085464252520185940514', 35); + T('7462320173122283772726810', '599983522402508738369613', 9); + T('3wrotodvd4dgo8sn2epehwf8vdoh9685c', '15630856736175398255351237559386715772597049203092', 33); + T('2095151352baa52614a53a0421205491386524a32b20b', '629494720198763535790368010310014455139220124011', 12); + T('909848', '909848', 10); + T('1e1b700ag1gf8eea9b3488gf6a8g', '3050765026582250489151628861107884', 17); + T('17f27d4daa32a', '421284028261162', 16); + T('3fd14203387143ed10002039a6fed', '20709934734392064809458286974365677', 16); + T('111010040102014022442422222032420002341024101300144343101412134', '26924030592936765055391026801687634225029044', 5); + T('4wiojwnbrlkl8pg9foo23uu9a1qpbmlac', '126760787317043868804119267318859978950162615116837', 35); + T('210320022332330111223223020320012020', '2721092611678604067208', 4); + T('n7ku5i7ckrca9k83bvdh', '920599639906328717359960161713', 32); + T('17b220gb2623f405b0', '18058612030620400642220', 20); + T('606mb55', '3573729571', 29); + T('9d59e66704633dg70ag8gfbf7998831ge1', '2585365443584252475016853533056335340761269', 18); + T('11111120331110311113221201203001223223111320230121232310100232011333011220123123130', '31183875195251062246636964788521888205106734806748', 4); + T('11012202012112221210020112000110210121122201111011121222010', '6614437174755192747904170297', 3); + T('4566b69a3b1567574178164a4394616b309890b373a', '9444463089320211225317858853703681134950130526', 12); + T('pkiga3j55qn', '5305045276825646', 27); + T('hb78bcc8ced66de45f14c04ae8d6hfeg42a', '84259895898473468702361264132957044004367294', 18); + T('30436028074514706633323564703107103255261676805352', '174908702299661723007314223174052884313545177020', 9); + T('6klbn2j2eln', '5464796003103282', 31); + T('7j3pcw6nfmhr9fxocg1wxkenrnkt7we5m49', '88904461013157334884357042737148269672311351079065265', 34); + T('r82v5q', '914455738', 32); + T('34ad769763ec2b7', '96777760100981122', 15); + T('gmposxc78rakn', '39780003905171575839', 34); + T('a73268168a75548674124697', '9548080180583883175964866', 11); + T('1237051', '343593', 8); + T('q6u777k1', '1376248631213', 34); + T('10010111010010010011111011111011000101100010011010101110111000010', '21802627242312687042', 2); + T('14dmjh7bjlc4d47dmfae09kcj524505mjd', '1038322928472978173076737040174508852100751669', 23); + T('11317560a17393ab6a99a582195a678aa749193a39b9a0', '4041658781234719016719043489530302116978697137352', 12); + T('3120122333011103321221103210310332213020023023220112001000', '70232841201518207453336540043894848', 4); + T('119bb65631559198409a47456871003ca715548c33', '5332093690285257080851788740211348309400491181', 13); + T('1m2rec', '36143234', 29); + T('366237621254212707310212730126632527636236606', '20953914213183846148388529652331213045126', 8); + T('5tt1f2duo4glotq8vsfkr1os', '246514271200574513800096210368694044', 32); + T('34e1bcb5gb53cibjmb6b3', '5492559329232323890310212939', 23); + T('3hb44ahgj6d304fic32bjc8heh7lhk', '3232709760711829349820278323781274358774', 22); + T('346ffj4208je', '7559300332817989', 25); + T('1d73nf4c2ic64', '223833191887270462', 27); + T('225024242331044121344', '9046573709095648', 6); + T('1049hebe2f', '201147941571', 18); + T('230kc5cc2bbffi6h6003fie16aafdd8bd67dj', '4542385341584792754115882088702313332812815292781', 22); + T('1f9b1tk7v7qsb5um73klta', '59949796791943622919687088265130', 32); + T('4184b1l3d96gbngkgi0bg50mk2m1', '74780513187896152341086440607818686097', 24); + T('okmg182dn4q7r', '8745053305431694017', 29); + T('53ae7173b79042ed481ba175e034e38e1d0', '50951535169205935843174191126575047980795', 15); + T('222i8fc3cjb789c995511jde1g9', '14141883645422057031570049406992729', 20); + T('aeiaou79juj3tkj5ga2k5qchh3ahce', '185979506581766660458072557764185061403967977', 31); + T('eacae9856ijgj3242678egf9', '12189771867978125139049367798709', 20); + T('2433113434303102021443032400412244243442443342242', '10466909999621086883955370845684072', 5); + T('2ae0fggc6c6g', '878502187845025', 21); + T('180845968a3226a8a253479619663', '250001325233535979152109394821', 11); + T('hj3tdd8slhdf', '2307423515301123891', 36); + T('ddf93c33cbe97520fb19a19', '4293593374816726677147720217', 16); + T('10013104402044003311220402002301031430001044', '1151854194727926643451204922024', 5); + T('1124210334', '2569469', 5); + T('7451704923b3ba8647a8c6b375402115658417212a4963', '984073049999829873728964883865033372424530670574289', 13); + T('1ij8n0u5', '54333768645', 32); + T('463cojq1oo', '44627322572360', 28); + T('1g2509ced735611b3bf0dd25egd1383ia5i', '55515377175716442946588772750863162331336647', 19); + T('10a099149225276aa0308163405854426a4546969042', '652590329197497894293981277355838911625689415', 11); + T('37bc13d810602438ce47db31c0e7a87e6b7831', '1242924848237600517379561065653635852461111345', 16); + T('676337572246445153657', '8042293848523986863', 8); + T('1g68836b967fgf9421011', '24334561727939858364932923', 18); + T('6b6620b97ac6a6b6', '352387246281540515', 13); + T('12776426', '6309843', 9); + T('24b0c6885ab8b8a892', '228166923738350465687', 15); + T('2', '2', 35); + T('15a', '346', 16); + T('300134022400134213344140000102213323042404311040243310312000343103042342', '127652641370367962998095582336792086908935738721597', 5); + T('3lfs4fgwbvj2wghyh740xh4oirg', '104622608267093965118263270976335121345788', 36); + T('157423050242731427202356723', '526719833217016133180883', 8); + T('1b15hp8lt9ju2rh8dqp', '2874344460549394391885632870', 33); + T('533921', '5454113', 16); + T('7732111706233511415326631451', '19164044677656856523125545', 8); + T('3dd0h9f7637i95fac3heh40c', '959218007315210960375525274067', 19); + T('881w1kydu9j4phfb2c07u94ghigb', '4029435105852318664830504263789530818302121', 35); + T('51', '181', 36); + T('2eh', '917', 18); + T('ca16b71428aig5i579j5jfb0ie2de4j95e5a52aj', '6873773388658232174414133826827672181606125713641019', 20); + T('20486090530289807472885277534944595036578390a', '13514447539625782711007863489274523595153330080', 11); + T('ioq5s4bdalj52flkt', '22698271406125036937402013', 32); + T('7a', '150', 20); + T('hfhrlg3rrnnwks8kws5qksp1la', '1603852442098792332083147036848732541416', 33); + T('5700507927296a1058a55a90235789278085068346', '28062460682476336947447786622579009202128233', 11); + T('959787104', '4077788116', 12); + T('2a7dda271d5i2j31eh72387daf31c639hchb84h74', '27699000410590034444165195331712291767536579684518944', 20); + T('111100101010101010000101011000001001110000100110111000010111110010111101101000110111011111101011000001001101111111110111011100010011100011111', '2642399810851701674212632837439227993925407', 2); + T('fbcim4p3nsgtjo1r03vfr2j3iqe4s0s0', '701339888089764999500469781844563368651453760384', 32); + T('64lzp05nduwcdnr0noygfcm85az', '178315640220328504562173918873277402530523', 36); + T('35lqm90bgico0a4bm5pm76qr8q6iibfph', '65327914287307331894331060275333284488697055741', 28); + T('83a2c22', '62241790', 14); + T('89ebae1173d48a4', '252977067390654829', 15); + T('770d01b680082f7c23db6444c14f885dacb63824', '679659960629478197799609320106784570818809968676', 16); + T('44', '60', 14); + T('133574562456214335435', '1652705792533576477', 8); + T('hjc4g2j5l13o8j194g4cak2fg4448d5lo0606b', '94123874693313956619727979886115180204328649160250161', 25); + T('153301155', '3242879', 6); + T('20db9n21fq5ibaapk90chaof', '1684131408222169123186744163051184', 27); + T('8908560898716681919534923549712841926366', '8908560898716681919534923549712841926366', 10); + T('110101010010011100111000100001100100101101000111000001000111101010100010010111001000001100001100100100101111100', '2161630318713979730472184517642620', 2); + T('164r7nnhmtvtn5dqm9vwb3sjam16', '118591147821330046156032931950921969681024', 33); + T('jm78unrb447ll9146j29fbu2njvmfgbl', '899490746363646305757921797948267020154887979381', 32); + T('2419413757519055953413373253672626060250908979623', '2419413757519055953413373253672626060250908979623', 10); + T('78i', '4593', 25); + T('dc1', '12866', 31); + T('2jci759g3516', '610774111386026', 20); + T('8824059425840339a993058b86957230870716058427784746', '658484467757378126049963737243666805178029770173426470', 12); + T('20', '30', 15); + T('12fnrrcj2g3dnbj0uvd3lqwfrs215hlt6', '4206028108501355290972496973094116936076368376680', 33); + T('11682eaa9a50b5bcc234b90342bb9d82e10da8cd55e87', '6133831849997371600782799052395677700841654445348277', 15); + T('224', '224', 10); + T('1kplfagn', '18578948909', 27); + T('167110ac751f4fe', '2158807311824281914', 20); + T('1d35', '7477', 16); + T('aa906c1dabfebe6da', '196647076124632540890', 16); + T('a9692a0a76714aa83b9088424a3955232971b8a618aab2b58', '68234402305157694365438746604458604774416341282072308', 12); + T('57g5', '156183', 31); + T('1ghp8v317z7', '5331055013092771', 36); + T('3b4ho477oeopclmi', '5753023344951280573362', 26); + T('640a34c4d5bca61b85d8255ba0', '1583171296199874175043612916375', 15); + T('655', '1621', 16); + T('4713001873693116544881662', '4713001873693116544881662', 10); + T('6gl3bca0', '30744845808', 24); + T('60644mi3d', '917033167588', 25); + T('21151054205203166605404660561', '1001991791616520586906319', 7); + T('129qr11chmnjfbix', '235017795197032514991897', 36); + T('244bd93174aa753ba6c202185776cb', '3994077758483075041207284320967331', 14); + T('10b4cdbc67791d914b4835190', '3400360668240333886096375178', 14); + T('1gjm2b566fl5e52133930k7088b82ijgb90c0', '18243047800946255257397415707493803164371776970538', 23); + T('3c3031a86910bc6256', '118078665313660741892', 14); + T('5k0u43zh6', '15674653708890', 36); + T('80137052', '38347634', 9); + T('5783jfdm426d5lh4h', '64288507756051477652657', 24); + T('1debef5dc8c2g4ccg2b1effc389', '178108250891112116916624674314670', 17); + T('rn4b', '1289675', 36); + T('96bghh4a66fk3g7ehh13c', '2590902696974891660626840167', 21); + T('556423035126405021416221205151', '18834557073762345117422046', 7); + T('1ed6e1bi4b9c13', '74595097394557912', 19); + T('3d8e3ijff6f8g1656f92hc2dcha67ik9363hg', '1448249031707035880952506340806153721615337546525', 21); + T('9ok43ekhol', '75619493880060', 27); + T('11af668734ef7a60033c5f518c530', '5739161962048683655238213338449200', 16); + T('hro9lido58n6', '149244549072792522', 28); + T('2yelbnsxotdubg6p2j', '846844061507274550621896811', 36); + T('3f8a', '86024', 29); + T('fcxqpdu0', '988921967600', 35); + T('kohlm', '8198672', 25); + T('cc57148', '62535637', 13); + T('12151', '5225', 8); + T('3375365cdde3db711375ae895d85d271d3cb25', '105909922550502800264613611713682806644035510', 15); + T('21031424', '1772495', 7); + T('4j3nl0517f9m0m301ganfm233l', '153601615041435840934780931557446429', 24); + T('4310255062420466600245524221213133235464365030', '476197169299254422116266555387455712335', 7); + T('4244423244041424242212043102240041314210000322', '130719114900175165281529950078212', 5); + T('nkoba1m6iajaofd2e18qgr7irlcrao6h8', '483767596088912028670249928507167976393694305348', 28); + T('2bf51ahb70i08dd7dc', '76858429135673573387403', 21); + T('9035964bc6d843d71d2ef9124632b039ca9ad9d6062cd', '863281823741412484448091339719676346358410323679011533', 16); + T('30lln67g83icilejifnfc257chemea', '105297837315708788148863073871950075232860', 25); + T('34rlrbnqcogal48', '578637984758229207624', 28); + T('210', '105', 7); + T('4g', '84', 17); + T('b384950cd1e16f', '16589581301885375790', 25); + T('8d9bhgdf3930', '562480785855234', 18); + T('570b40885', '5738449608965', 32); + T('1o97ac9d17j9b20ojeg5lnn4b2afddlen8i46j', '10454900498332552068488800154275426413110941145987044', 25); + T('9ldj9cic03oom4', '14695585287355078054', 25); + T('53287c', '1947997', 13); + T('134kd7hi96jd', '404274808381030', 21); + T('5fm21mdph4behl0a478jki5', '1733653126898384929528694793111545', 30); + T('11001101011011110101111100000111110011011001101110110010101100110101100101001111100101100110110010010001110001100000010011100110010101000011001111001001000111101000010', '150121826439470624887536282475629271619430756159298', 2); + T('4', '4', 13); + T('4d1631d4942f63e89279', '1140237935084465937312261', 17); + T('1372066706', '199781830', 8); + T('11hhc23551e866ib6812h7g23ad', '7346411878504474781966365272977413', 20); + T('101111000010001110110001111111100110010111000100010100010111111100100011010110101011110000010000100001110011100101111010011100111000100010000000011100110111000111', '4296345185753731570217826010182320032993209601479', 2); + T('b84d8a8i32', '3689641436737', 19); + T('821ro50fcuctkgot33m90ob09tucvv1f', '368313190889612097541983506195312358021535890479', 32); + T('1742eikl8lom1h71ad2', '37595040685294737585118388', 26); + T('37324076026320245555326737570636206', '19911177604481197795113399696518', 8); + T('320023020321233320302211200320322222033103201322110011320211', '1166689340508182807089736390989078053', 4); + T('vikd2pt8101fd9eil04sq7cvi6l', '441068211140868982000952250746004390824531', 35); + T('442123', '15288', 5); + T('711i3khj96m9511mfn20c5bjemc13kfn93', '24821870043582444752692478195243347378957786779', 24); + T('51lmp8tqwo2ihznbv47n39v8wk05', '5284244405211887591129226457353248485630277', 36); + T('28ia', '25574', 22); + T('1bcr3flr9a26qiocbai0g3na4p3a7kd', '36624769937531720777599142004807101241462829', 28); + T('14460a28a41383802814154aca2c71c5cc4391791c33aca', '2325888630013449576179969978508312620979962590691472', 13); + T('e708234759a6db8944ee0a6e1b6', '1413966030986819590654632803896888', 17); + T('q4iad60645grlf0coh7ajunj', '2203400666051301621545431516042922668', 33); + T('1220112101122000120220201222121201222002112000212001', '4110612146620826410819909', 3); + T('3', '3', 15); + T('65f8bc89d60a7011dcdb80539f104c2cf2894', '1255404535660022776668629518669612407348698590', 17); + T('17d0c2897b9hk96aj', '1949684990803549976380', 21); + T('2g5fed38ik06ii4e1c3bhdc0b513fe01753ddf6c', '10228352956451115239173172361471341616481366320264027', 21); + T('6bohd4bgt0eeonfjajubo4sojmfnms2mcv', '297805807713638700732162989593992480395200752081311', 32); + T('5df5a6eg3h2b2', '12674703290992823', 19); + T('30331120101023202223220032313030032223212233022223222202220', '269148936607402430897888550064138408', 4); + T('2a3nlbjoo40fbldn07d9n39p34p8alin9gqq', '297524222430407948715826730547173299573877425424600', 27); + T('1h5cg9gld4h07i7bgh', '499570659694781114823761', 24); + T('1framh4l', '41608063497', 31); + T('131', '1405', 36); + T('74m9lo2h16651b4bb922capfn', '386718113062216498663314663422184395', 28); + T('10101211101010001110020002220011101002010120100211', '271290657968780557694368', 3); + T('10201210211111010000110211011102121', '20755601360118862', 3); + T('o8m10fgn2jiu48go9sm6og1mlhooht9', '13369563582584175800565573934107108011510398039', 31); + T('11101000101000110001101001011101110010011110011101011011011001001010011111100101110101110011000100111001101111110101100110000000000111001001001101', '81062205635532331055236284929003822323364429', 2); + T('11010111', '215', 2); + T('6b792a454071b65717222968a031a81782b1b9856636', '177037493461561410531659133074253146230898913546', 12); + T('6311c13b75126da75ba7ba4485863726', '2107483404556464441066229583431654982', 14); + T('cpnpj5hmoj5a1nigpfld', '9961795419078247375796458163', 26); + T('10121452100213303532013451014132100303230445', '2998363768314347289377629629426269', 6); + T('20', '8', 4); + T('1ccp559ip8j1s70q8ab2c0227rgs', '25883719710063102259022735893679879209136', 31); + T('h780bg2q', '591900557402', 32); + T('a84850aknhp9hrp29rjfpmflaa03ckann00', '164376078844886204368282401541329974440232267281584', 28); + T('2c6c138b6024', '172705552710088', 18); + T('2b7h335ca7917803hfe890', '604800599026530009611628162', 18); + T('413kgak', '459596960', 22); + T('5570634a7653209a864697327a77aa7a167654aa214aa46688', '5883232483921140121005021114807539284596199567869393', 11); + T('fa3d98dfd239530c9a9556', '302522339292227790310118742', 16); + T('110030202222212020231013312023111312012023330132313132201212111231202', '109957282949036883749941648777035608841058', 4); + T('3oep1jk36mmc8pbj6pq06qdgg2c0', '1733516732758228053675351796432011366126', 27); + T('1af9', '8067', 17); + T('e92g', '224441', 25); + T('1466104572263031', '68894276814035271', 13); + T('10011000011011101000011000001101011000000110000101101000011101011110001010011100100011', '46069664430530648537081635', 2); + T('11mm8ml58rari0e', '193855100598485237870', 28); + T('1pfi7291d10t2bme00', '41101471466544183228950720', 31); + T('6', '6', 12); + T('f8b5889f095d', '1800044447610490', 19); + T('62373d', '8703010', 17); + T('10fdb7f', '17816447', 16); + T('15073c8576a045', '420372672828997', 13); + T('7f', '260', 35); + T('1333433', '27368', 5); + T('2244130132243425132044145124224415024451554010223151134204', '557550459764737171250298964345492919336144380', 6); + T('8d68f68g2h8b9n7hdf', '4965201398478292577464090', 25); + T('354313665111045406', '885233290237456', 7); + T('d0jb1kf9idebf73gi0f61ek47563dkbdhkc', '11772703237518049717164718112135708535788508390', 21); + T('1g0fw', '1761440', 33); + T('1111101001110000110010000000001001000111100111000100101111101110001100001000100001010001010011101000111101000100000100110001010111110000001011010011011', '2792505467580338130476655688091490969863067291', 2); + T('4kem1b33od5mfgmg', '109359135408139845817891', 31); + T('252401220241235031123451', '2296208767961087095', 6); + T('610k89dn', '63160332926', 27); + T('16agb99g4d805j75831909a4ggd218b5ij6ci5', '1823913478028636622491544197209852539611260693165', 20); + T('261a033075aaa9629248385a388', '3052545960208975734532191842', 11); + T('t7a1tf2e7tgnb8imbdeedmtigi9gso', '39644969218663723727102891143612359344002477896', 36); + T('7dl', '4023', 23); + T('25533oih57blao7g4pkl08bn13ol8piaa4kg', '73530387775765582430116303708968126882088830298200', 26); + T('519deeadj7la6fh80do', '148946600253514084380503194', 26); + T('4pcj', '97300', 27); + T('1ge2d9amf61k4l9e', '459233734124780611459', 23); + T('1052fmo6cnm59p37149o3l597k13', '161266754400204723877757541169558797813', 26); + T('2de4638', '33376778', 15); + T('210010202222212210201102001021122', '4352520348668609', 3); + T('5d24fc', '14090127', 19); + T('18d260c9d8f110eea9d29', '1875481379014053338979625', 16); + T('5joajar33labh4', '58322924858252306043', 29); + T('4iaqqiwyaom1ce66e', '22936244757184115769387199', 35); + T('69rr344rlel67mi7nflp87pmhgrp03', '43449918504438809554215800177138569914811503', 30); + T('6dc6205912265fe68cb44ae5c', '543574178265693146271925448284', 16); + T('43d54494ad5b05321084667b75d163d973a9d5a', '152956351019871496094981073356920240750506556', 14); + T('ah12a9bhec53547ch1gffbd4ce', '1014336400315441401789662738444945', 19); + T('2bd', '2699', 34); + T('3aec56e9h2g', '12856803598240', 18); + T('rq9uu', '25719242', 31); + T('d4n0x51toa6qdt318fp', '81581464565230142757839048850', 35); + T('jadsk62rh6ij31eo1ch3o0bhmhgj9jtnc4', '107561372102244760144971481381587972564573705894064', 30); + T('2043276441110982538543', '2043276441110982538543', 10); + T('20201210311332011322', '585807421818', 4); + T('727kcili23kg3l5i828m7cf0lf', '78445700911564313828749219623193471', 23); + T('36009102725393959984512648753051', '36009102725393959984512648753051', 10); + T('8ukdkn', '349394354', 33); + T('5ki8ke06mag1alck15hdfcbec6h3cga1e', '11023064368084528790974090237767391150220405232', 26); + T('3000113322000200111111113300212023213010111013202003200322021133133330031120110302003011', '71975485293215942293184497039364273438587712328376517', 4); + T('5a1a7b653b1a8a3171138a68', '38731186957000914147920624', 12); + T('12112311232132232202132212302112123231131121', '122959685741398740635146073', 4); + T('224224200440342044342040012141212202224032', '117352577650533752666371914267', 5); + T('gslgybo3qge', '46391977465963549', 35); + T('2uboe91cml1u7nj0', '69926702089025500890856', 31); + T('1b12egkmfpk6ek4ci', '62129465622057070801946', 26); + T('nnhs6', '31660330', 34); + T('67pqqk6c0547', '52109078987080647', 28); + T('1d1w7qp5k49pkew524aqk', '10447930959289958589155414670305', 35); + T('9alklpr1npcnqi', '61021505045351897946', 28); + T('a34jlmfhgco1mhe7i464e0a13p2fohm3g', '64375134650196903816516350557832247480646609606', 27); + T('4abw', '155033', 33); + T('2142033204210223322323142100114402142302', '4324065003615716467353162202', 5); + T('60532043272968a94888952a68053751a363283518447b7', '264927210929454220225095471298215643100178078897019', 12); + T('blqachpkchipk', '1773214262533625366', 27); + T('6a8', '4992', 28); + T('pcgo435a8', '7192807940789', 27); + T('qp0pr0mqbbjk7d', '174868044459225160273', 28); + T('5828156996331', '5828156996331', 10); + T('26fkfcd083b8lpgch1b', '66450659287855347635773641', 26); + T('8mmf63f0ia1ah5kdbjh99e9h9c977', '1209459278082656851165067356679983218550', 23); + T('52i148', '104410274', 29); + T('qk0tfb59r2qbln6o2sp8ugfboi31bt', '473285949705108395655138274449579397276795076', 31); + T('205532300043402003003254103', '369253734666995461719', 6); + T('879ab0', '235775925', 31); + T('241624188370143088778102727584606422', '6171271817077031180028886241834420', 9); + T('3255046123035', '47096682099', 7); + T('1i0c4vdgr', '2174016088986', 33); + T('146jkgfke909glk3ob6mdm58f8ilho', '40622675473823760328962580924562649904199', 25); + T('jj8y8', '32810768', 36); + T('1e4hkj6aa05cxq7m', '132784276644103297330004', 34); + T('978564821b048', '223388964080485', 13); + T('2436', '1310', 8); + T('hhfmf3j0f5i', '736122101988364', 23); + T('17267', '17267', 10); + T('4664330262460243362665332443326246035423001202', '534251783398075165083933973334281628283', 7); + T('b38gklnok0110c17n8mhoo010o5ag57j', '241427482360734538990839716374778906058847069', 25); + T('f3e7pulssj', '916859590578979', 34); + T('27d7555288d30272d', '5595200654400679125', 14); + T('819q61r30e', '282911846534158', 32); + T('480c9b46b994a5ba', '236539854099919419', 13); + T('fwprhkg', '20654989624', 33); + T('qpvqsoagbcxe1m9p4njcr3s1u5o8rilv', '8005304852449403198353189427839491405562792406601', 34); + T('3otz8vcq51hb4x2049', '1057170856381011920131894809', 36); + T('5c0d3086', '991652751', 15); + T('77he9mc', '1399298652', 24); + T('235325244120503340533314220240120541543313532314023214045251354045', '1009019759786137757734399255898805702011348236556717', 6); + T('pen16ld2', '267263406983', 27); + T('38da605fff560480g774a571914821fg4ce1b', '695692475188289760917741559372738544759806604', 17); + T('2as88bci0t3u4peh32h43sbiol8msq', '41775863368398953273228305076503096642379144', 31); + T('434b69658123b20626071b159419805b829bb', '3036841224924436585369140335673525677855', 12); + T('1639ce13gg5jn8n799h2egb', '7079325759472298465468600431036', 25); + T('223462807300306567156031813152503638585503736', '2197225859272539628269139500011586036340695', 9); + T('103e8i5je409cfjij2gjj2', '5891431329615183110981153276', 21); + T('27ehfd3mm1amb2', '2031041578695417482', 24); + T('294a9a0194301a1347905a9a23', '309810801471710455254108235', 11); + T('13410234243444343010', '33738914059130', 5); + T('m96d02hpr8iq', '802992036207501914', 32); + T('122101003320023331230132013130330312331033133310', '32516440874028879538684229620', 4); + T('72gd3be26bald2', '6233639407268330618', 24); + T('2d544bi4di8iee4bif6626hc7gbh6e6cig4dif81db', '72451765332560287083369602461296345124271516517829805', 19); + T('3eg4d95c4af8g6901ee4h5ai', '975073009049557106375679720761', 19); + T('382658c9903142c73aca3ab7cb65a9b03d1', '3332092804303405540969753019109086440851', 14); + T('jmt3oqow11l3pmdn80', '1285457439759406193536144680', 33); + T('224qna7', '1001249039', 28); + T('436m9407fh314jmifj3i1deeg69m5nad', '971010955553278162770513965655919904558476747', 27); + T('2satkskboq0b52lhqkmi4c5esc2l3', '673846076795500227422362618917964848206433', 30); + T('1111101100001101110000001101101111010010011111111101100000010111010101110110101100110010110010101000010100000010011110100100100111101010011', '683433243524982240677777243476582452055891', 2); + T('2914ian070b8148i4gj', '16589998566194339193968275', 24); + T('3a749k6112hhak447jj781mmeac', '876069885826400018389776921704533226', 23); + T('255872662234441388265248510244', '12384677052693094655070972427', 9); + T('560090c1c7219aac49bc98723', '17449270853995006816160134795', 14); + T('331hkjh2h222gd8j7f87053h0ekkg', '33116649224902344081270523395559561873', 21); + T('19d6ad933a8e5', '454557212846309', 16); + T('15576357436114241002422756773501074050', '4461159021738482150619844582864936', 8); + T('4ctu84vr3pf0r07ccpln', '1617599669168190267768549135515', 36); + T('45', '33', 7); + T('trcrs9kqi8j1indmkpce9nhggn966', '17122684227038407228619197596494484876338236', 31); + T('2buoook3nvs3kx7rsaxm5r4t0', '52296535133778210239758710339648429588', 36); + T('14226054c26c7552445020a886b7760b5b5135', '217115666892653625414446286763519219185314', 13); + T('204100', '6775', 5); + T('25163361', '5564145', 8); + T('3a7i5', '3481157', 32); + T('409cddb354a247c953ba', '89645162802357578226475', 15); + T('82701069295659144047712581742043369852863', '82701069295659144047712581742043369852863', 10); + T('1m1cdch85eede', '42940540919670056', 23); + T('8510a148870865416551266375119a8744402a37237554973a33', '1092891470413014298604369531468860344380942265185284043', 11); + T('2o8q93w6wqfxlcyj', '591019503162075661873627', 36); + T('1010101110101110001000111100111001110011001010011111001111101100', '12370864596035695596', 2); + T('11000111110001100111001010011110011010110101010010111100011010111100101101101101101010', '60378345252763661786864490', 2); + T('103334131441234433031414320224222030200141024110030322323443121443', '3117589328891536907605724784500236990408176498', 5); + T('3osq24ebjht8b4ofmqo4h3rihibobeebp0n', '639082398725178107711437881596434023161974350859523', 30); + T('4hwpetajtnef42hf6i7gk4ft1c56284h0', '284870293967456034800024507342384514579618737697444', 36); + T('47nk79pdq08jkr03j68h48j14fhob24jnl', '7753840463194256229084069256136460485337725952889', 29); + T('3e1ddad6b81e605', '279748388776437253', 16); + T('14213123322410322220113041', '564245997485316646', 5); + T('10101100111000000110001100101100001101101011010000111101100001111110100100011001000001010110001001110011111111101111111000000000000010000110110100111011100010001000100', '126329653589454952926638707222811823179996994585668', 2); + T('1121013121130033133101030331223301230313330233123323132', '451869705599733348535930921533150', 4); + T('2832526509886158185210a67196980527236826366270922', '267178313423247125602360439007441778151867246111079', 11); + T('301112020122222002200213300023011011021302010030010310320221102023120230', '17194503433563229118380499993437205254682156', 4); + T('69282098413186766083358437581101', '69282098413186766083358437581101', 10); + T('4415457670585382436475220327776155226816666075213', '28405304143473153865445009451075313957752794595', 9); + T('u55k6lj5rgfl57wgi31hvuqn4tf6hb1b4', '117985718169999606760995918723069839695453898058769', 33); + T('b7x2jn', '589663013', 35); + T('10126', '6666', 9); + T('b5879a2a1b80a2901235433a292338bb37', '4707604586763280840085306433760750747', 12); + T('n8jcfhcgkd97m599hckkej75midmgd696di93', '4944810674354559044783104703290657564535755949823978', 25); + T('3m', '91', 23); + T('2223210010100034424104121024440210422141112', '570144644155456680754503708907', 5); + T('13124122112412134233312432', '495575953944432242', 5); + T('e073b0188f2d6667b75f11f65a82fda', '18646734802776877837813543784990388186', 16); + T('mbtf7g37f4vmntj5ucgkv14ibgs52c', '2434353097193477091898655577704481736864297392', 33); + T('15d694d721', '29460575985', 14); + T('260163345975', '9836790910595', 14); + T('6uljaaspif4qcgv0w3r4s1d49i4gstwe', '821480362679083726187114504615763265574310553397', 33); + T('5gab21g70h002da99d2c84b5h', '7924712928864678423214354832759', 18); + T('39a6485c82b213cc4bc44409a44bb599a470a67a3a76b2', '503487028064289493492980947734948505492983138659732', 13); + T('20002201222000101110020000222120101200112221201021100001111111002', '6983493499156781197462869089813', 3); + T('10002412413200341022442444310143', '4677943423343013666298', 5); + T('111001000110000010011110111001000111011101011111100111110111111101100100110010001000011001100001000111010000010010110010110100111101000011110000111', '159155836031631574967766651303670498797193095', 2); + T('81f531048349c33f91627d55e1b6bdd8a78', '707557451293532648521737780488438655322744', 16); + T('3lielemoqkwe6hy7x49h7e2wa1xx537h', '2655961913531425670206416089623348076947591148312', 35); + T('563305225055677232242325342', '1753817655195311740136162', 8); + T('7212497884a67328a', '330466724397412118', 11); + T('0', '0', 25); + T('32012123102210300020113012111210131102113212120100320013103', '292854113268474190487876694062629331', 4); + T('56005640531166633533552031326403615010402', '37307044943970381141955666758261394', 7); + T('11000110000110100101011010000011010110100101011000011101010000011010110001010100011110011100010100111111010110000101110110110110100000', '16852729444979725339524623444714796314016', 2); + T('789g13febje5iejfa1ig8jf8c2aca4e83g', '63776033229698957310821624134744128800755276', 20); + T('9i15l0njmgm82jkd85m9nklm7fb17pql', '59304813258620243353054039369424204841493322301', 30); + T('13e4770aa6479a189h4ijhe7h', '19890160409189373966588476781757', 20); + T('391', '1021', 17); + T('2fu0b0cwrqnhk3g2', '148774633410591042263180', 33); + T('5bga0ahccc26ha', '117904089797019172', 18); + T('4aa8130208329129a05788a58233099034432a05816279a53258', '645369877978597708954154480649585042163183610604351956', 11); + T('2422033234133422320321444021300', '2698216128927171860825', 5); + T('4tpp5vh5bt6hek4g', '457274415287522823498216', 34); + T('k17w5vb34d3138wefz5fattm5dg8j5', '27198023106008199799064230217875560645484318769', 36); + T('2102013312101313322013123023202313023333130222031133013220323102212033032102100', '208553181918156893475157564867315522998449792144', 4); + T('51332502222305150244505511341050032244223', '70394344811157929465865596540343', 6); + T('12412251054223304020131354003520010333204354435', '904941860581497811835960794805811575', 6); + T('3479681145ba9586574471', '16462881831354787246025131', 15); + T('4ja2ighlhlc1', '2854140987850373', 22); + T('2202221002000121120210101202121020220112100111202222000100000100011222111101', '1688023704896041845224562059363977918', 3); + T('210000122110212221020111022121011222120000002200', '62111394465978849346782', 3); + T('6pimx7e60eft5feqa8u4b4bw90', '1307284040175844778008871938774231576106', 34); + T('1i16rl7r4oam1b5tean7rcu95tlt', '154612291629528044654847293969784668743598', 33); + T('15110303', '7506030', 9); + T('2016414121621263631244402455154', '45972634857804622561848566', 7); + T('44432212443', '289844523', 6); + T('58a4100974641092373572734330a556a85a3649335a64760887', '750631221647335681998791040547190909433022379938062625', 11); + T('743b060c9e1ec97aaccb57a0b82b7273', '20948613103678762990462558732773459183', 15); + T('1ajb3mdkf30l3ggp6n1a1', '59220428702663606276074957201', 27); + T('19cg5o96p252mmgrrjrl4ilod', '165904775415412969849796184365702337', 29); + T('3g74s6dirr87mm9foqlo7bfi582', '374825061004185779220292067103421684849', 29); + T('a6giogfn4fh', '3031737957822773', 28); + T('78b8be03f14', '8295928577812', 16); + T('26n4banle87jn35feal1m6', '220963128547176781029291070038', 24); + T('3h85d6b45gb6109f41d1728k9caacm7b1aji', '1718109577201049817604488911453241934701038840497', 23); + T('bd09e98b82e633', '116544317962963279', 17); + T('2110441420453022322540033154112020554313145001155131552512040', '107428364649645482426810419589588006553616123320', 6); + T('6d01menkb1m6op', '16127757406621275713', 26); + T('1730611463642631260026156435013323236764317226', '83774860480485487711819613225974439714454', 8); + T('2100667557474081635521', '231108395393156176477', 9); + T('eajmn8hsd1pjfm', '350223684312837767216', 31); + T('c', '12', 35); + T('3hh6bccn4457ag7adn', '1087094043870481997468111', 24); + T('2cmfuigao1lx7crntyo1ugf9i8lfn4xintk', '74377881431362654774128391002848996423791130882315335', 35); + T('ky425gzem0n0ly4at', '166714666329050622675578693', 36); + T('1sg1pw6tb7354mkeo50qw9hw2kampcodl', '18686700577780102002056839220792859826440700702559', 34); + T('3zk6unwmvk1cbbvs88gq87ir7zajx737', '7016346383200454479387022948900734227527567863075', 36); + T('10322140422033432323113304140103031433203324313120022144', '316354577067079212853499387473063048424', 5); + T('1aedc38e246a0a149337e0c21ce94312ab2a731', '851651713725780036567549303250491168513333496', 15); + T('g28dhe5ec7gca2da009c0676b', '79014378046420572184971870226746', 19); + T('sb63me5fg1ia384si46ls96olgbri43dbmh6', '141956865342110649337804593119630908073755164359747316', 30); + T('2e0b0c44dbc73ff4e6cg89g20a', '16306506209387027589159612217900', 17); + T('12dci8290ifa027fb7ejd6gh0195hga', '1217746749869313260112097211823364687130', 20); + T('100593ba5a865981d02bdbc05ebcd1d0eeaca4bc4', '110757343351711672327388218706433958588903853659', 15); + T('27519372626617950348722900682739422090', '27519372626617950348722900682739422090', 10); + T('3uupshi4aagt21d7itr5', '157172315431494653918152587109', 32); + T('2ep4', '50251', 27); + T('m9h3', '664581', 31); + T('110100000100110000001100110011111010100011011111011101010011110100011001010101001001100111', '1007262826627701209829823079', 2); + T('4fdcaeffedcef169c7g9efdea3', '117447089342770251162409579295367', 18); + T('6fh5eab56am5f61bl48l7c9b8me6icae840i2g92', '855997003648548335026652493309865049009850682381985715', 23); + T('7c0n5d8jn3lpa8hp99', '8461593530418792315440287', 26); + T('1tu322cusnnvoic90utms2kb8kpsffaopr', '90526131960565018083687339860055870929107749790523', 32); + T('110122010001', '248671', 3); + T('3fhh08ego0g82aj5dnk2q2kbn7idq3pm6', '22776756121219843287237037542642788102057852286', 27); + T('17bj8da6fm3f', '1264125153712738', 23); + T('f7543ch846', '7865867659286', 20); + T('2ag041225dg8e40b86f5d563065721a22e80', '224048255295439918093318523708092978352301432', 18); + T('152dgc8jh390j5b495gc', '6588878765500952675914332', 20); + T('noi', '18722', 28); + T('odb2603j2', '26846840229474', 32); + T('1062em', '9860997', 25); + T('24676', '16593', 9); + T('1255403606425333320235315622513526506526044146610025', '17675708274550040406518050433158199000096421', 7); + T('mc8cnmgceje46l2740j8ip1omjdk77o3', '5291886225857373516516815562816611072132097222', 27); + T('143141023331223043333', '184512629893593', 5); + T('1d1o6ko66e4ao2868mnibkee4dn2jf157c', '20642579270952330510501003581022184589302753312', 25); + T('28advfy', '4112308409', 35); + T('570310266815233921772669264379360250406802529', '570310266815233921772669264379360250406802529', 10); + T('3m8k49hbc2', '14854779179052', 25); + T('112265015661422606235430001553122514516430634002244346', '735500185117893335759658114968030927435658591', 7); + T('1bx', '1563', 34); + T('154198526b2676bb06962353abb66578266264812615421', '63438474644380821718834297112295766181334517357849', 12); + T('1100210202021100110022010112', '10394984607800', 3); + T('705373640815a38b6625734317272751745938838b66957931', '533650458267011464715178902445187808113331072099472757', 12); + T('5mu0', '242375', 35); + T('f412647bb', '106305216589', 17); + T('8', '8', 16); + T('rm9hate55nk5xr', '4711198898839826781711', 36); + T('td0hcbh0ndskf9md', '422345416603914184013773', 30); + T('343702712358238358', '58222225743441794', 9); + T('6bee0', '1820611', 23); + T('232530', '41769', 7); + T('540444340443225024252235511251333122111303332222444045405203402', '10009287342414262691465339202517966834792921923866', 6); + T('60535639204665261809056323', '60535639204665261809056323', 10); + T('498g0', '1708525', 25); + T('19j25i98e1ihd07224ka82eg', '78254066225000382046873246127584', 24); + T('330330100323133221011332232003003211033310230111011301111102233112323133133132', '86978805378934327315465572304260470254359934942', 4); + T('e32gfkiacklp3qeb8dahd973n', '317981536760764840843373569644467543', 27); + T('1ibs79baql74', '19946951806298397', 29); + T('gc2bafd1bfcfg8f8e6797cd872g40bbca786d', '3305765433031391380598054150042785559743311339', 17); + T('jablfdo', '14103490914', 30); + T('5dce26263c419372a4ebb00d424ba', '5048759171413629413482567787816575', 15); + T('9pj1utgw6indocmuk3', '638053591604508936554605548', 33); + T('39mm42fghqmj6rai4ms44a8jmaes', '10189567831237705666598526955508127749423', 29); + T('e2c9ij3dl7d3idek5hamdke4b64bh', '1896357467030637609113345980127736335781', 23); + T('s4n5pasy6ew75l2a1t', '4993163715460998736843408064', 35); + T('658334577577241364255153', '5841024053232128589867558', 11); + T('1404132402322011330243102041021123140304', '3337373674316685552024036954', 5); + T('3lm', '3352', 30); + T('18h9i9figeb0d243b8e097309b75fg8a0id', '44138855572089599578572255789371956709642686', 19); + T('2241012304021323300241123210431301', '299011414865892653217701', 5); + T('12022120121120000011112110210122210222102001000', '15710188707765121460544', 3); + T('4e7kf6ccdp4il17', '495576709967367899179', 27); + T('35i4', '50454', 25); + T('hi1d7dg97k5b0ailflh1gagbfakjhf33f36kf8', '832882004590031466088018493593950259022003331850434', 22); + T('6821545810481312184878830548787014204', '155801745935514050378370617627291164', 9); + T('10300033231231031023033122220332', '5480800290149870142', 4); + T('1011010110011101110010000110111110100010011000001', '399378554504385', 2); + T('efc1ltd227dle8flfrqcwtcvkvs', '43822708871975185309034493996620102899735', 33); + T('12832300405', '12832300405', 10); + T('650595570247321885101265507780200498020021110989312', '650595570247321885101265507780200498020021110989312', 10); + T('3124144616475210442326726176753', '3917395568817125518374141419', 8); + T('19b1kgb252i8d05fdi2', '917130084420731730796550', 21); + T('10110001001001000101010101010000101101000110100110000110001000001000010110100111000110101000010010100111010100011000100011101100111001110001010100000', '493799621713705665209661337050845053741490848', 2); + T('65ajh2mc90inhcmd846g8i5ac3l3inc', '1587173922359823128666098525120017654586548', 24); + T('keoej5b6', '125728425281', 25); + T('7aqjhe8ne805qgosdh01fosn193nege651', '13396367124183589399343540124147227754242301295318', 29); + T('200111111010212211010011210012210021121011120111200101001110011111110210220001111220201210122221011011112', '85808090717084077750326522417981797898295448342990', 3); + T('28f06cc7ea7a819gf781e895a2b', '1080002582657621357238123894492239', 18); + T('13da1526049c632g88525c75dgfg2dcfab7c2f5', '69930158209361480953961939859540779534596389301', 17); + T('e9e51rloqsmtrleng4s7pq0jarfl', '109166094703871534700120128616442419684771', 30); + T('34216063', '2979343', 7); + T('6c063c35cb81dadc43adb1', '8034831935878348183255023', 14); + T('989164hdf9b51geg8624chhc7g47h5377ab71', '14664682513456963530829234223873975820816166603', 18); + T('145241986', '145241986', 10); + T('122551245377370372510600247650271544', '52420971115555265131642802500452', 8); + T('bba7aa6155a3014', '46889782002517822', 13); + T('3deb3tkkhlamh89ljpprd2', '36080909083483453648852421649692', 30); + T('4120104313404000512310', '92641744056051474', 6); + T('4fg', '2477', 23); + T('1eghg93c74j179gg56dd045id2ii86i', '1870702929919246989271587432599881427338', 20); + T('51123225122335422566204631400', '2378354862895607406604402', 7); + T('13577', '13577', 10); + T('5kjbqd5ilhk6rsthb7aok056d3rm', '104710675709925942718275325006590464848210', 31); + T('1l', '47', 26); + T('g996104g1ef15e13cg4', '232909810115697952226467', 17); + T('5dpcd6micqpf7c3rf', '2351027610634734415497525', 30); + T('1q3r03saf7da72ogme3qsgol0ka', '1098670850837387299606462566653196917356', 31); + T('6mabf7a4mdjk56265l8kka7i2j46', '40764485063999108303947012898651625672', 23); + T('711265667352525777055750103304054072', '289883291844318827546712512419898', 8); + T('181ah327cbh09bbdbi05gihdja3a6766cf1c89', '1929446677883376438181941961611633360059304812969', 20); + T('683ao9qhn91f6ifj5ggnm48i20diinqama9', '330737041385586113625862339185409951588553481122988', 29); + T('4z82fjb9rvrg0sfjrxoz330j2j4wym', '6758750673748428599831923455366157745143999198', 36); + T('19218eb109', '1706298801557', 22); + T('1xteget9vm7rmvt1qeleb', '8506448668267622326601389463723', 34); + T('3i33kbg9cqg54jm2dfa', '213466100023939044330506035', 27); + T('215h8f51db257ael57', '289767309771867327604947', 23); + T('10110101110101110100000111010001011000111011010000101001110101111110110001011000000', '6869753008454091059192512', 2); + T('58e', '3602', 26); + T('659874ecb742089cd0f2fc72a2e912d48334f2d', '36250497918673919606249316600592246963107483437', 16); + T('fecne', '6086214', 25); + T('5kbn62hdf7wmwhk67dqk', '701711736487352936694557071892', 34); + T('193418768773292279686a8766bb', '2041543002021168521235526438842', 13); + T('b5f7p0qqnmk2h8qfjhgmb', '475042274550491463639138392813', 27); + T('1okma06a16bp4ingkgf7o', '38938334164376358043955589354', 26); + T('km3', '11089', 23); + T('201', '51', 5); + T('2e4yc5cjy2hj9jy', '9951741372023452880724', 35); + T('13001304414442041212340', '3820949701507220', 5); + T('2ie2bm03mioejrh1nd8ihi53hjj3bac', '196391064504813821616820420047441343526039222', 29); + T('38a179006b409b755426146692007b083661', '220736472532747947341118345018618875881', 12); + T('52eofqqb0rg4dijj7oir56gr', '9803633243543859078443703279727611', 28); + T('10542528849006a4209977a245a6670844a65893a8', '5200046241474102735966912429570012726348257', 11); + T('301222300033320033', '53330640399', 4); + T('14k461i83b0kc', '71064921466188012', 25); + T('11101001010111011000000010011000001110011111110011111000110011110011001111011111101111000100010110001110100101', '1183302363719122225851040665789349', 2); + T('6aim7vpcb6nw0rtr9x74xowefjtnonisji8', '198480536455893007753383205691175236273156270478363788', 35); + T('44957146989902980426789317', '44957146989902980426789317', 10); + T('110205b4b61454d4b3b7803c', '246154487751049576297182022', 14); + T('14ogjsp73do5', '14239859065452217', 29); + T('1bd0nkar7jlf3bdp1', '349044193281529358817564', 29); + T('5eo6ed6nmmcoc6qdh', '442845139356014267015909', 27); + T('311000312203102002211302220033201323322001122212020301110332333131233222302032', '75663136060016606687972617399235327868190764174', 4); + T('e0ji5u', '401391626', 31); + T('1424357303022501420341156201', '3723432687881212284689537', 8); + T('1ot26r1r25y6jshe21wni', '13008118169902415707339281796648', 35); + T('1i2', '1685', 33); + T('2fjhc5hif69dg6605d171eb7cjc7k729', '1122293919180819662380020426292955339311361', 22); + T('386587ngd3dnln', '33687830964706424608', 29); + T('6535', '4811', 9); + T('595b11426b9c0704b17689d3b6', '255251373547377701279623680212', 14); + T('6237m485ddjcnieokb4nc7oij2fbao558l', '82471258057252969989346717428147198122909847096', 25); + T('43440d004a624a9aa5215926d127d0cd34000071555', '5812346158873879973339574652454563446486067283271', 14); + T('3ml01ehme4niee4', '83156933475485244628', 24); + T('3dd0foql9qr434', '22633155441925307864', 28); + T('100011010000101111111110101011111111100111011111111000011101110010100000110001111000111100010111011110000101010100000101011100', '46870857086354303302378526158318027100', 2); + T('5dd677042ad15hda283e0e3h0ci920c91', '475991049360626890704302602104214715388328', 19); + T('2484222523', '987550482', 9); + T('1o54o241he2d16m6fa2pl4n3c65gi4', '208907464043630568560284375825261087372160', 26); + T('1014120211123113242013134132412222314312433034232212101102023124331133233', '227485273039510873413178482785035220246188554161693', 5); + T('dm5lgtvb1p', '481781008542777', 32); + T('8gq1c', '6070379', 29); + T('2cj7llc4eg8f4k0higp57i4kgce48k3n5a6a', '83230479743519414484378889869266300543737457886886', 26); + T('20', '36', 18); + T('ext2p1il80v9lpv9ebwfhw3pufedgesl0k', '5185280930874834437412210154592858661728459849547240', 34); + T('268732c65576481b112', '282507652502544897001', 13); + T('2b38484aa35e0d64507ca723c15933b9b43', '26686868200702243883872800111367217352288', 15); + T('43e48jkmxot2oy2fo017sfk72hnevbl1oo', '3687542753129712107602138468735370587663145861696839', 35); + T('ojudi704tha6', '626181160658812467', 31); + T('j5', '385', 20); + T('103533241255410240323255355232043144540505', '88966569636637417158897456537305', 6); + T('q0l7j2j7r0p6ae1baf6s', '563916309957339378866464786934', 31); + T('5a7c53b2', '364964095', 13); + T('1fjne9il8lkg3bh', '103626865036283572091', 26); + T('30d7de9e033c54b451c6d3b51ec197329a6e0542', '22557901127642576391477860038224820219603000562', 15); + T('20360161522501151310214311356463136125245245560521232311426', '21552877623292541132456573250632857116774507721475', 7); + T('512350542042531015303442430241435053151310231500225235203315045314', '1991453522210060656872676051735126305923083736859310', 6); + T('21121310020023020001103220', '2646808142550248', 4); + T('9gf55f6rj8pd80r431be60rolg54oeqe', '20665197735276350815418661624870881870158116448', 29); + T('6di7fnk1ka03ho5bmc43kld2de9', '106858530460627601101778247911433225126', 27); + T('14d26a4b3a267', '8975609863073539', 21); + T('28e98e7jc72', '98390517534444', 23); + T('95', '158', 17); + T('148b9f744h78h2b8h99b', '884510597649896304807737', 18); + T('1136025406614a982932a2414233036646a259314a9690', '81653801636548512093768636534022656649699507364', 11); + T('18b51h64hd398a', '30802810305582406', 18); + T('1043243232004324343', '4534554761223', 5); + T('5k6khbk8qmq1bd2nr5j7162d3dhmogs76pa', '2874134176824005398775676217605241490607568199781842', 31); + T('e5b9vh77mseismvci6a', '30505084481497262094146130166', 33); + T('544622661023252114032553653430635012455640216226', '29737930867189529595998234535940410116741', 7); + T('c5g4m06c48d4530a409d4', '49190458509627322489392813436', 24); + T('2jb0b2bnji', '10595811514868', 25); + T('1001011100111010011100011010100000000100011101001101110110110010110100011001101000011110010000101110110101111110000000111100000101110100010100110100110001000000010110100011', '3536326453156193038031587123790239903142359400187299', 2); + T('52bf9ld84dbblg', '1446598246008687106', 22); + T('d3c5daj8ae7il', '169193485055337357', 22); + T('101010100101101101010110000001111101000100001110000011010001', '767218737556283601', 2); + T('1437', '16207', 24); + T('114133340123233432103120012420300414231232242043303433332031141324311011321', '7273916554967523346010893023640093442791484794235211', 5); + T('cdemrp1q1dfo5oaa9o552', '29104534648610198033358963191135', 33); + T('hn4i0bh3lnh22dbpiie6nbnh', '34333773871855985124318946939651717', 28); + T('10110110001111010100100101100010111000001010000111100100011110001011101000101100111001111011100111001111', '14438492881715694934558943721935', 2); + T('588', '3333', 25); + T('51adke15g1', '6117745845773', 22); + T('v1cb8mieshuc6gua3nbswk', '2402909063962783729496267888203295', 33); + T('154ad6bida8ch6350198e231f0i5hi7f94', '2016744827456637173074923253636234179984684', 19); + T('4041103013000012302004', '1988313720822129', 5); + T('343231343104143200023110332242214210120241412004213422100041430211002422', '166923575124772514544128066112153498600774395406612', 5); + T('b8nkae4j', '52169931763', 24); + T('102400633554632', '713852464334', 7); + T('15230012004363225000152043112', '811351549236281156826172', 7); + T('32221779b4b37b37513082406424450aa579a2a8834a', '80810046681505916793845914766512942540525426666', 12); + T('2kmcp3r6qs1g5p245fqb0g8qa', '340045012651728420163296954517156597', 29); + T('11110110001010000001011100110100101010001101010100100101000010101010001111101101110101100110100000111100101011001000010000000001101111', '20940687968317900181954981756671243649135', 2); + T('10b9821c0db4bcb045262d98b761d2117a', '70367656624653783927494922061307165096', 14); + T('231032232010133020300013323031302133220331310111301123312001312131321103331330', '64554409692052210685332500753625976302230388604', 4); + T('1dk701j6d4baf96bf4iib1', '25341540144182484368121637707', 22); + T('4edea9ba4', '12802842379', 15); + T('ciffbbda77', '4192099035923', 19); + T('3bcb854a520', '1113967604288', 14); + T('1768433009ba79273507849b37b1949a0aa91', '1155230524818144260160287806949250060685', 12); + T('21', '7', 3); + T('12', '15', 13); + T('a3dd53124a00bbc3a902c2b7c02', '6479682616939747273872424224938', 14); + T('1rn0d8s4ror38g0bsimk', '11952637171366777777073055104', 29); + T('2eg5ag969k30e', '34322046314733994', 22); + T('df6i05bcl', '2837296447201', 26); + T('d6hbff561gk039bm', '67475093532951335800346', 28); + T('736135d12de0dc5197046', '2403172999591697203426191', 15); + T('1917700k7b0798hlh7fj1a3l158il8c9k78fgkki', '31935326566626088190275112296683968556264917574568138', 22); + T('110442', '19434', 7); + T('a4f9451ce43j', '2096875845233679', 20); + T('10pc0lrrod1ng7813ho6f1735ni4856nk9og13', '362001328932031510264970316722642804830244524894241823', 28); + T('340', '95', 5); + T('2', '2', 12); + T('jfb98e91hdhd146', '730834824992077156981', 25); + T('2u715wji0ksv', '276409078243593011', 35); + T('p538go6b3sgsk2q05dh8499n5lg3', '76866731395524797035264473788165190998742', 29); + T('10210322121301121330021', '20128796614409', 4); + T('czprbjnb6c5va57wfojodh2s1b2phqt', '634971610203428324104731270997646500012871287829', 36); + T('163351146232500134562615331', '18110985379078188834196', 7); + T('6e4129jca7943b106ib8cfjb1421', '900619828463523710649738973182569641', 20); + T('23230100001012100222023301223332133121311333112211232131113120312132203001122302001022200', '279953661912858509028227026934672011374168514476118688', 4); + T('5jgr1tjenanafmgy02av80a4ju8nsh', '3332563710063599538714906051740573308676056547', 35); + T('2a03a8a82cd13dc18b5', '12400430345351117674677', 16); + T('11000001011111101100110101100110', '3246312806', 2); + T('29a449404373294192348416192a795a064a9', '89775465256863804086218230386927370554', 11); + T('68e76kcjm1afgdkmkm', '1848940629085999196683126', 24); + T('2kbe3faaf7iegaa4e9b4f08a933fhciljk', '2501181635047310570015074845876633642933551437', 23); + T('12344hbfe6', '359536823591', 19); + T('143442112', '765282', 5); + T('4a081317336a309149661ab942', '4615291648867282664377427330', 12); + T('3jkk8128c64j9i', '1104902507111910404', 22); + T('amo9tdefgwuecrqta7jpqfo6kg6jaw4', '223524633732333732706172640317287185870223150499', 35); + T('21a58a0047a1884514880231963587a9aa5266571076574502', '2324252250359662008081886857169837234726499778719045', 11); + T('2eg7g43878ag755id005efg87bhi1ihk0iggf9h', '474575893810580165151415734655919630427242773838537', 21); + T('1253981930', '1253981930', 10); + T('84f646c', '281267112', 18); + T('699224148127737506438432736786719976879926194098083936', '699224148127737506438432736786719976879926194098083936', 10); + T('130587969810795743976151248055472770225248488', '130587969810795743976151248055472770225248488', 10); + T('7287697267041921400', '7287697267041921400', 10); + T('12l', '749', 26); + T('2blo1glbdeillcf0on2mk14h', '351738590084565988788756864375742', 25); + T('49mfphl', '3828465983', 31); + T('51147130442424172652616112', '194568628606971297864778', 8); + T('602', '296', 7); + T('g0fk7lla0ii5i7i2g288eegi2ke45nme', '347493304922004024159457621489970110001655564', 25); + T('3427410030517411126776423004072314', '2247499600567123820908846806220', 8); + T('11c0b422813e46a0704286bcc78e9ae64a4aac5', '550518894687870908612059469029958777652379310', 15); + T('4mgrao8bnjmlfprj1g5k7o', '11809356002610908689865424701148', 28); + T('16602427320624026652410144225431222411', '4788262207154170686928960302163209', 8); + T('1133922820054976072a26336240128a97', '25979311751316593865740595613096134', 11); + T('111130535130440515255305101002545525104205242311405241', '209770118829200105874769377203607523817689', 6); + T('33410044421301', '4599998326', 5); + T('g85cualojockutoj8l9i05fer', '10090207313826743038498352382093951180', 31); + T('33ed24501e0ba9a810d3', '72404567612236270674198', 15); + T('577nlao2jqemfps13laqti6av4o66', '7284410453812369054568448091009770033668294', 32); + T('51380825345112415250165068281324', '1968364002188078831430803112511', 9); + T('837101b3a0a907711987672759a2317b079', '40850603036144384752073171952853482909', 12); + T('1irpsmnr2', '1070073795512', 30); + T('bd7f3576f5875', '13588639558671227', 18); + T('dd9h4', '7171636', 27); + T('26w41a77diqu8', '5260279707492571244', 34); + T('46144610334425521434631035561707752201423', '6346533567879985413095577825858618131', 8); + T('5ba89cc62ab54', '137675765649465', 13); + T('131534626543730752048834', '11992216206430875347086', 9); + T('dl6dc8768f1ig42kh', '168255534771745044094577', 24); + T('2eb9b59115mdikbhmc551dchgbf5', '143119111508435191417807312784059632255', 25); + T('cssbedntprq7i', '21473268174365747109', 33); + T('392s9qmrdqggnh7m1', '1421950054322530991895961', 30); + T('3d235be4948269469821ee4ee8c659e073caa436488', '96444901326379451008420429583243171799035293288778', 15); + T('c', '12', 18); + T('161162230b89b81068276b63888013a3a715a35b2b47', '38295121533792138694595448876904917585402510055', 12); + T('112012102101010200120', '5501676750', 3); + T('ojk7jec5b56ijsr3fao8', '286565314487033509494400944728', 30); + T('2a60j25ki993i6cc960ccadj92g11fgc5', '5095635099989024533935083494179547954150889', 21); + T('nahoipcvslh8suq2qgtvitg4', '969084134162426052646973641814799876', 32); + T('c7222hli0l3l6244945dcpqh', '10231322180811816357229624809826769', 27); + T('3244223102234410102002134323340331322021444210142314143403233432', '389884100489780930202190481841298604587555492', 5); + T('7327ef47l94j3e8', '2114488657647112742209', 29); + T('cf9g1dahcdaf2026h91gh8c73d76g5ca54d', '61466270199599757540795294611578425158922457', 18); + T('7f4h786d247ebca9', '52952122599419205189', 18); + T('4302014423242240001311214131403014', '537446950702717645184759', 5); + T('8ch8ff6ik', '325689693419', 21); + T('50gg86980m5gom1qg', '2160248255368559193835696', 30); + T('20122021021102112201221221211122110111121101202', '19615481787418378846121', 3); + T('6214216998763', '6214216998763', 10); + T('k5edi4w6y8rpf4jbd01k8i8na6v6k8db', '14807562688860562973809761754715067179928180924641', 35); + T('g4h', '10937', 26); + T('0', '0', 30); + T('ac7a273b', '1851111506', 15); + T('2200123440245032334125041530555505552', '24078438391794160644374978732', 6); + T('1130215551', '157358953', 8); + T('100144143000316540003233550024603', '1109765702355719674747590391', 7); + T('30441204442400', '3899296600', 5); + T('113695d064b657b6e38', '1599024751435436052203', 15); + T('6dehkk21l55bjnoghjefaqsprdf59cj4fjdi', '9875112479907817915333605507323858110862750123273684', 29); + T('141606qhkh847fg0', '5833789314492474260464', 28); + T('2chgdbf1b3dg46dk4ebc70b0g9j3f8c8lh5aei', '120675412358469616349928651160190450670575079622934', 22); + T('59agmj6uku8bv289o4d8koni8aqc3vqmc40', '165870499545712369328916058056499539367750790670918090', 35); + T('2rbcn8lum', '6261797865422', 35); + T('22m3v3fuu9emp5jna', '4116024592593979746814825', 33); + T('366121646421620330410', '317849044022280631', 7); + T('2116b48', '6253544', 12); + T('25140718474428175265303486', '1847517948365808950428587', 9); + T('4598i4c662g8ca070ijfd54cdb6', '28679737685086326785443322448741426', 20); + T('1ao6m4o89llpgdc82kd9h9nrje9kph', '3527082557153952794613151020059372427454804', 29); + T('32jnm0mmb3pssdd66an', '650845857248237485135874915', 29); + T('111100012000222102122202200200101222011012212012101112001210212020000011200112121122202110', '4312338675736411168834113479404731768937986', 3); + T('6112004b71a2b5434b77703651a347642a93b69b8771', '154708197486329491948970688330686826353013326149', 12); + T('1042032441303342344224002110103322213421224333342', '4182077882904105022063063694371097', 5); + T('29c68h1c7ede0jd09dffg0', '5202625875782390263071006320', 20); + T('1e634adab5f805f52f70cac738dd261d7d6', '165447251922571882378062853693168471365590', 16); + T('3jgalil961', '6947464731518', 23); + T('1214401', '334081', 8); + T('54860130871146444', '10286973227136298', 9); + T('1030533234260', '14720402858', 7); + T('100aa3e40361hfha8e248bfbb09h20h7a6c79h26ac', '2930615985226137047162398456800365754016041083603160', 18); + T('43591767393031052388336018446089607834282371433', '43591767393031052388336018446089607834282371433', 10); + T('1a42634db3a398440b0d143640b', '1093389394637381321001671261403', 14); + T('1k92', '22956', 23); + T('7ovd36cvh0mkqjfvfnuvbsq391cn9', '10844675681652928114870191782873626527707881', 32); + T('15g1', '15181', 23); + T('67b69b71b1717', '59413996339651', 12); + T('30j57pimocqtilogto2d', '35115475354624111874465964673', 30); + T('2d0b0ae2b685425d29b0ecb3b5edfa717cb1417', '16071927572096392119675195392748578598193665047', 16); + T('11', '18', 17); + T('112001000110021202210110201211122221220112122100101010011002100102020001020201000120001011', '4537785058981363374616512422509774739280043', 3); + T('50ab6141b78600b83b78b88348b5a05131a91a', '43175432477484073434743334087258618678694', 12); + T('eo9qocnoj90bor40al4p5479b7g4c1r1cb31', '6650244100026164587107322943956581111894985709587461', 28); + T('2ad3kx1qktnu3vpnmo2ao6x1dv4x7xg', '20282628012647095397816411972962059191966263670', 34); + T('222116623333265530440631564017304', '180929743300409204225159995076', 8); + T('dbbg6mlmj33n0', '492243480903801576', 24); + T('2b2ec06g3877d2791928b9ffd1746b', '1280577379796462921259686563546353143', 17); + T('102101102211102021013144443014440303124104', '49494259261254501284171145529', 5); + T('7a87c66768a00656e6143d364', '606741009919509661621760021348', 16); + T('47767235803614822752211551670476', '1859353386668959678249738581726', 9); + T('1', '1', 14); + T('4hecd739h5679e7gd9029m08f', '2289177364521402481927372413403470', 23); + T('6l3bh7f6o9gknn00f', '159385341670896444890640', 25); + T('5e5kjlkvo5unf3dtwmmqrvik257j4w5w84', '700990942006311373479452989797165256937719202881105', 33); + T('201', '33', 4); + T('233203422520520454251431153344153122212110131402224331', '452721388389843317258206375087014173893951', 6); + T('14n29lgjdc4rim3ornkjna8klilg59bdka', '668735111660092455694876539400574336368551464522', 28); + T('b', '11', 20); + T('oq', '722', 29); + T('1', '1', 36); + T('22421402200021542042515102115130343415021040433015141', '71435842509809622557607232355007569617093', 6); + T('82a46ca7f2c27bifi76b123gg87f9ef0i3h6d', '88188580584290016425414330488192929012692460292', 19); + T('cwvsjk3p2hdtr4bpc6bjsc0d2br4l00a', '3879212286333054912615124824551633983865683141266', 34); + T('15g8jceb9g0402a30g48a8612', '21661444885578056193556763266422', 20); + T('25r', '2509', 34); + T('2288', '7328', 15); + T('15005456104534360056661132626255212535602123', '3748858381866343201840235184540881558', 7); + T('7lld', '96774', 23); + T('112a8a77b453749a7996396a419b826b48a67', '782118792606829649781720121593080718319', 12); + T('574b3345395446ab3a11a95127716a973b22b3', '47781483264575360443895323857628984548903', 12); + T('10ae515da0e8b84e1e20004268c3d939357e3', '2290518350084555998421706774896373302739288', 15); + T('a8g9b05eb591d3fg16eeb9940', '14045662689555135928086001793700', 18); + T('1fi8bk0164hkb0b5bi61c', '2894983804002405037438210044', 23); + T('4gg7ww428kg970rxm51xcpiergn2utyn', '7841808545231879066984143936817455941346408116527', 36); + T('10054403136531256244562420403101530', '55009081778931754371153954089', 7); + T('312202102122120111132101013111300030323012301121312222012320000011', '4639388111541284305176062560415061344261', 4); + T('oo6wsed7h44idu7atc3eo5tebrp2bhdp6ok', '105381163294233046110304801048710957853696204404133202', 33); + T('3skbj1l78pv7i', '4490496804454726898', 32); + T('7975t25qbm14rr76', '275342913943535946165478', 32); + T('8jdml6mamk5l02a0b5nh4c9l14jhd07f3', '16642540390807604641675529615883877432380047157', 26); + T('100000110100001011111111101000110001111011011011101111101001100001001000011010001111001111001110000100110001011000010111101001110111', '2791627903658830465325077767573756541559', 2); + T('4cuiv1vijcw8byyvt91x1yn2bk3', '126777211099543650145997525057934330115587', 36); + T('1pb0kr2su503t7vfb5r0gare3o3k', '78053133845809892830118124009511471669364', 32); + T('11011110001000000010111111000000000100001001000010010101111100110101100100011011011001010100011101000101100001110000001001010011000100101010101010011', '619196159474080554644191332764720245730596179', 2); + T('1oj50', '891774', 26); + T('6636451124501446361531', '3875098321019619443', 7); + T('h6n02q8h3m', '250019766843768', 29); + T('451ede25d199cae895e992118130', '246702729069387709295316838306020', 15); + T('gc2c4lrbids9dvjt', '618717800012065820573309', 32); + T('o0n5g9lnkc32u4', '1948944931869490633248', 34); + T('ug5duads9tjl9t', '1125447236183519778109', 32); + T('6dn54ifdh0j8p9468dkoc33h3hc3c5cl5g11d1', '594648027170439572811905861146439260035602841911119099', 27); + T('gm5aek', '134776292', 24); + T('1', '1', 30); + T('0', '0', 27); + T('43', '143', 35); + T('lm98d', '9989473', 26); + T('24ca595ac7a9bgbcc7f4g861afc1chf7814a11ae0', '367456433495521438883185813377166029060518959081788', 18); + T('14660314530440163216346260243553125625015065133254552566', '51735077687650277604403201198662868237459984412', 7); + T('510a75b6953b2128b51', '571468653948337229839', 13); + T('2j8', '1394', 22); + T('11111111100100100000010101000110100110011111111000001001001010000111010110011011100001101011011', '39547602794153772246742451035', 2); + T('13d11h1lm539', '1746352709861265', 24); + T('2j3h0n5lj1ldlgm2jhd3o28nl7mofb35q', '17234505762002327507626042985478124525535819504', 27); + T('84158ebbagfd4fc814e8bb2l53gf2ag', '153343999117336060540862649308280733262460', 22); + T('7g909e76cdeb0321bhi9c21dcgfeacd2i6e3f7806', '11116275700830490343102710037586110243685725571804348', 19); + T('ib264o56m1n', '3790551468077834', 27); + T('3qe', '4366', 34); + T('5p', '200', 35); + T('3130233402005135513010143100020201', '155289768167720086146598249', 6); + T('1001001001110110001', '299953', 2); + T('16fomoru8scj8qi6', '45444374663984422611526', 32); + T('1002212012012122202112020220212002111111020202102122110010021100022', '34175452783248538685342138607785', 3); + T('27a50c6be781d23639d548c74668abe9e94be3ce22', '4167412892319939194840854425277338372039201983057', 15); + T('88a3780da4dbdd289baa01a811bc6517a', '40906542215241584358490557843916640488', 14); + T('gqbold9ds9didvt57hbb8jf', '21838794139140707774087244457288303', 32); + T('10b', '452', 21); + T('ihk', '13601', 27); + T('26252453157610233727260203', '1937319065301154692119358', 9); + T('aa9895782cb87a165276477c', '452046848974584515631452537', 13); + T('798233d41bd4d8570a55253c47760375b8ad22', '19604340805420393759398902048029147177522210', 14); + T('2fiq2gfu', '129071446540', 34); + T('1400512', '185131', 7); + T('1b244a9ba6227462680836922985195', '43502077484194496821773474699946943', 14); + T('412011433400334101043320401431213340122122234301220044344341432211331132312', '22669905856359456126837986263860586893462278431114707', 5); + T('99jlbgcbm8l', '895669350576471', 25); + T('2160778865276', '617500413969', 9); + T('4619a48750a8a1388433820', '371293698754379801044722', 11); + T('23b2a23b8ab1171549b81a523924944bba2b9451b979750a1', '14712614649874115297808648378077142784658853979174201', 12); + T('1c9aa', '56586', 13); + T('5accejj99akk1ah', '34098874640361347185', 22); + T('20013312310323123', '8721747675', 4); + T('7f841c807c4a4e9eb32eeg4963ai78888ff', '234637522959956493197663705686912406112573938', 19); + T('32f102da079f77cac41', '15035262184397547023425', 16); + T('1o', '56', 32); + T('15567437201441347355454544146426241554605511544026607651', '80286234176563111847045853769570753921004267573161', 8); + T('hjn18i8mqcbprs06jgfr5q3oo9bck', '1565631049924090657943692422085174312230242', 29); + T('6j62l6sn11', '305449793742193', 33); + T('1a92b1371017319959b372ab60ba2294679b45215', '27889304114434174647327312538513856310180593', 12); + T('5839272560037068796091105463956029620211063950', '419776982872392388414731107567819482106312014038', 11); + T('6', '6', 20); + T('2c880d56k3a7li582622b5imekd0b', '341027304272170248894809973045388788348', 23); + T('10100100101101011011010101000101001101001100101010110111110000100000101010011110010110001001001101000010001110110011110000111100010001001001101011010010', '3673151219411926241066396539539895097311402706', 2); + T('111011100011111111000011011010110010010000111010100111001111001101110000', '4394919723391067681648', 2); + T('4aa5', '13081', 14); + T('2opifo52o8q32g8maod8l58md725mbrbd23', '46158568616582718889447630456685730068082636613195', 28); + T('418j32fja719d73155', '53377690823861098744505', 20); + T('20144632610464350', '67599832991439', 7); + T('2kh493991i0g7khbf2f7kck4i96e9fh933', '587461139271908422337268964350415471317511729', 22); + T('4a2n9f06i8b3tbik3ge2hl5jb39mom1hrcp', '723192498587288435855105790107635409475143071893685', 30); + T('12113303030120222311111003', '1793522922116419', 4); + T('24077', '16108', 9); + T('4pjpv', '6350789', 34); + T('322311323221313230132232233002003010013223213212310021203233123120002312231230', '83983092135187210616217933394923456110667721580', 4); + T('29f4d7g5ch1mjb7h51f7jcfeg45hibg', '612063586663379541382996507678741140541336', 24); + T('10pek1pldlia8p6oseke4p57cgqckj4g', '46807350154418933094997050205656695831893003408', 32); + T('e3cc8jmq4qfi72', '91829383300393248806', 28); + T('13c11i9545i088bddgk90lfe', '8722694663106063748286842646172', 22); + T('22a42a6856d282i', '24416804218738314558', 23); + T('5j5dvvf', '7207343895', 33); + T('21423087479741957663258638136686693560b0717', '4470867495087534207987102294285398093469949699', 12); + T('a440f8912c06198b', '11835733123122207115', 16); + T('7124732', '3795770', 9); + T('1mi6dae6p6n18p51j94pe7ac6dcngk94', '433566629754475119418916772536421104644424677', 27); + T('1f4792hbih0e5', '3987607350745668', 19); + T('1110011001100111011111001110111110', '15462167486', 2); + T('1eb01360e00290e5366a042b85', '500540389147064575524034196225', 15); + T('600196957607397725519151670801466183229598842', '39767779963727744076832805419657145468053323910', 11); + T('1pfswthxe5tqbubhjjshgvdkiwf4ryitg', '44414159361977485248499214227052721453325811694581', 35); + T('3a338ah6', '3159952098', 19); + T('1a41af5dge63cdb70149eagb60df978adc19d', '316909217417428222992238303166579153231020418', 17); + T('c008c78c61addc8e085ca3ff6e76fa13', '255257360887256236558111057213476239891', 16); + T('aigg730gb9gg5b1i9ggch147b34daf4222d', '330203157939216599297841920141628505752777778', 19); + T('21035126413112020231313', '8420857150186478861', 7); + T('21011110201101001010201', '74954636299', 3); + T('1043686460506176163', '1043686460506176163', 10); + T('33ob8s2ob4abipqpbu7oq2338r2ic6kq4s', '1075138754438632694426396913632774320113838381374220', 34); + T('2254120142306727111645063565', '5648689955684980442294133', 8); + T('4c65b28hg', '51641173186', 18); + T('189425b6', '62046426', 12); + T('202222000', '15282', 3); + T('2ix2460e7mc4yrfsyx16urp79', '29019140380746084875089897645108901004', 35); + T('10001001101001101101010110001101011101100100001010101100000010000100001100000010101001101100101101011100101101111000110110010010001001001101100100110110111101011000111000110100', '51501613866007552548575243188268697652335512286236212', 2); + T('72bai2lh5a5ige2c6h8j1pi7do6ph8po', '518863311245070128162706172824537578926308538', 26); + T('1gg4e12gmdd9g34kldbkff6g', '36045469172509506032689305574493', 23); + T('1d849l7924g24ge5k6k9nbgik8b6625j4', '228420120550953130629950010012173053917911308', 24); + T('7f2n5pcj', '317806874668', 33); + T('203252000343611312345016732574324517652170570536340103164002', '393097177469022242668976094291182082270851391919286274', 8); + T('10c509a15ej1c8h2ceei3dh46d3h2agd85j6j7d2', '566593718328820186671679871086974063112535421915062', 20); + T('0', '0', 35); + T('96463a781475552277b', '253758635463416758223', 12); + T('20101011102211012212200010200011010012111102122002', '508627374341025984624677', 3); + T('3n', '122', 33); + T('1332321215012153105302330', '7558638818512137102', 6); + T('d78e53g7ao', '260656990368624', 30); + T('10433235012112521331423540541', '6924859979187917170861', 6); + T('jregrnbedbqvdh2kqlmuqwtt7o18ua7m', '2351190601646006071521498616875161108543841169408', 33); + T('c6ae909740k7fbdhc61b4mied7bhia', '37961155295368021280681243879680158633940', 23); + T('1b04754391', '9903375901', 12); + T('448ccx0p3cjbx6hwiqa370ktmd3645', '1067333585305947578398968392489544974864772877', 34); + T('id', '535', 29); + T('3de2', '21962', 18); + T('1i87e93lld2hmb5of61481a1p', '37803177566866222246047503937156379', 27); + T('1d50bl1bg', '123317230093', 23); + T('ed4fbpym9a02o', '48576469025418884469', 35); + T('850ahc19dfc6cag09c3fe1a7', '615573849475122469837759021759', 18); + T('2924844413578201a144433a54311938093312874', '1284588798112331415097636284287592444342524', 11); + T('268spn0x9rkgrdn9mq', '386669665422099248737174821', 35); + T('5hk231k5bacd3b8f1', '8376132966290213466637', 21); + T('1p8og16j01fia6lc9r6k74336b', '2875139523028270878045249857146557219', 28); + T('esmq', '488154', 32); + T('5b9gb9b4', '56701257988', 27); + T('c9o3l82q12ep0gpa9', '986427541756225676608461', 27); + T('55388688a120a6849aa3', '1738783465109452015323', 12); + T('11649c762', '4668901218', 16); + T('1', '1', 25); + T('183c9j7k2e6bcdej9h', '41731318811749061211776', 21); + T('1101010000000101100111011110011110010', '113828412658', 2); + T('1103200032222010132222130123311033221023310310113', '103372423190590343441776856343', 4); + T('343', '938', 17); + T('340033799252741465289305518413058425050058', '340033799252741465289305518413058425050058', 10); + T('4503240112405112435055530202225400044402200153042', '108877380126556039702448219236071909458', 6); + T('22410502071700760126344737773405044556536263663106274741', '108249648375668138579864767958324372334698552719841', 8); + T('60471', '39754', 9); + T('jqvj', '712159', 33); + T('12b987ca3bc8c94588c3', '1788415352163649686935', 13); + T('1f4h9ih4568', '44931985848560', 22); + T('118g069313', '214821890121', 18); + T('2vlc0hrwcjqk5qh', '17671005276271615582217', 36); + T('1eaccg8b2', '12979996198', 17); + T('21629b2b0b4a2366b9163b76b5aa3799049393531705a11', '93332007302941381029153257858901257592873163524973', 12); + T('100202010011101022120020200002121112102200011001112000', '20987916954361515072077661', 3); + T('lf81l1k4di2h8', '2060202423101314474', 26); + T('11000010110111101110', '798190', 2); + T('35464780031172685830831886', '2594420148586517707211619', 9); + T('mjmbe1m', '13491665179', 29); + T('e1q8siod631g8jl8e96q3ndsua89fepgeaf', '7149422266506896025400459577722689166265236529840392', 31); + T('an8h5ufehm74gww4pwj33cwlq9nq1niww3k', '45609180326934639552795902886424593721591572949928264', 33); + T('1174957d27585ca327c392a177a2', '9779753057084979308662475538114', 14); + T('5qsfwtg879agqymabikny', '43877513087409382241114364600839', 35); + T('2202944b4c47910367ca8013', '89983147789156215799431229', 13); + T('448cniclj7j66205dnabj7jb2gc2m', '1850318014395914995109265267767209237318', 24); + T('444240441312131031044040211011202221', '14501598914208195910256561', 5); + T('1qe2prgrs1k', '2056183230623796', 32); + T('12311306121012324000412325560306516', '73082607480360333686565698116', 7); + T('39c4641c46b27b205a771ac', '12093715273566107607445694', 13); + T('1dhkkglpcr7ffd7wbebr9w6d30tegw', '153518783138820389818290476576072446336105598', 33); + T('9ao457cql7l2pajdjvbb', '1167566332972029419259805429445', 34); + T('bne906ag9f7ibi0o2icoochhqi49linbfe4ko3', '1083840512907384568109778905809324323571508451103168731', 27); + T('27gkfmsss', '1131180526362', 29); + T('1kl14jp0ck6e6b874a9', '53073824937278508675447573', 26); + T('1qblmfnmbc', '15092289265620', 27); + T('291145005283226378a15', '1902201869880961210864', 11); + T('98a3165430386919708314a69668019301122aaa08a8a333a0', '10471562781280726876191243734075742375342072600357397', 11); + T('101001001111101100100111111000110000111010000', '22674826617296', 2); + T('11100101111101100010000001111110011001100101111111111100000001101001011000100101000011110010111100001111', '18219421810715473011424793407247', 2); + T('5012045354154511564663311145062010640462551253626443', '63280196142241745046302922172418725133921298', 7); + T('d5ce0d6e6egj51ac8c4', '8369782607667375206621824', 21); + T('6051440330403356333004250540', '401296487305318979784424', 7); + T('100110101000101100100110100100100100111110100000100010110001111100111100000011111001100110011111111010100100001100011000110110011111001100001011000111100001000', '441143871171700310794467845617284706136179969800', 2); + T('7b57878058a56a65', '122576051834583917', 12); + T('6497912562474778656b110a8103302a371071056', '94070129616506972086443616132039643483737602', 12); + T('gdjdxk185ppgrwkdfct', '101796127731034217658663835574', 35); + T('1178977c0a6405a2163234a6cb718024c74312422b4a', '890596335029491966141847230958764595731490655195', 13); + T('37088663068aa806731063a736661', '525351225612561927340747775978', 11); + T('5171612706118415272715060137148', '220427209875590734018941429974', 9); + T('3hml8b7kc1p4gm2hn74hhd6o7d1ll62', '31952120714648933153539685420949059951111594', 27); + T('9je255g', '852236590', 21); + T('2044434433132300230220130303341220144143144304323233423021', '15263322484434834405567371553028493264136', 5); + T('9eeeg985656bcfgb5133b5eh5e4a1', '1380061401736935644143449342352895269', 18); + T('15pn91facaj7o', '117436627306186186', 26); + T('6h45h4b', '584858264', 21); + T('b5b5aa526c4894a5b93355d135eg', '18900713795310413451403180379983325', 17); + T('5572f75ca5f099eda', '98516089885791198938', 16); + T('323603301632153011406266531651206501610', '437183320525590537223414014997897', 7); + T('1a2d35e82eadaid548h6b7c1db', '142758553123601399605862815621287', 19); + T('871', '1444', 13); + T('7dabco9lff9ngn317m0', '109673961094915000469942425', 25); + T('43092b9541b0079386931b2b36', '4059444959588416633123556058', 12); + T('1boc7bh0olho8m4n02h6d78ih4a9k1', '465799410987253426014508176316492036379788', 27); + T('6mg8915i', '116919428053', 29); + T('822d188gc6c2d8bge4932b3bb7fb3672b5', '327157616726198043612671071851924507757009', 17); + T('101jomm7el07sqf4rhm', '388135427144045277146082832', 30); + T('1ajadffaqbk4nkho11fflbkdml27', '619452202075986493017080634500652444361', 27); + T('159b420c8d4a7477ad5dd8a54cb565e0', '3959681364275325746089585349463518460', 15); + T('7f243fd29c8ib9d39ebad', '293037388819465175740976997', 19); + T('2859938585818baa4ba73924b97823a353b8a653739761', '9900376965008691067376961107831442209219200169977', 12); + T('12464266411210', '134354404534', 7); + T('fru1j0vpcftehqooiiv56bi27', '21098962974195274149815095570253334599', 32); + T('daai9e9i2b18agdb4210fj6038h7', '78621573343485599235200018571738231605', 23); + T('ffin61o2298eh', '931637737813427242', 25); + T('116210618', '51143498', 9); + T('m0iggpdj6lrcdl6o892l1ojt1d', '936545650234778704563539555026320618541', 32); + T('bld30f5', '2895750380', 25); + T('43516380211c6510c36c6ca2ba201cb6b78c', '4145070522657789681367338903946033748528', 13); + T('2frhlapipo1jm9', '26165355055652545639', 29); + T('eebihhhh8ic074d20c11', '29221406700141396291294443', 19); + T('702464247710160725611573536407615231642232', '74869132891027108059075932498363368602', 8); + T('6cddfjh43c091ck', '418124197863421976856', 26); + T('14dqq6n4bhh5dehlh6i7jok7j', '709417662539059692087600073605499945', 31); + T('1mc4o514q6g3icsfedhsm1cd20m', '1026878606225608766969967252663359647001', 31); + T('af', '175', 16); + T('2', '2', 9); + T('7b84b19108bb07591b3753a3311b03', '157757817132486011855402897961459', 12); + T('5g92l47cjl0n7ob932c9b9kokpi54p3', '15835098073858662949103316680483193845978405', 26); + T('111100111101101111000010110010101', '8182531477', 2); + T('c41a62e8bd1c7123c92220df', '60690961081480451125474894047', 16); + T('3111330202313102310311201221301101332333333333132102113330213203322221313023020', '305353951579153096643759644208233327052754219720', 4); + T('1e993o3ukos', '2194385828754565', 33); + T('5231203324201232502321202321', '5550302446432876259113', 6); + T('c531016e18898347ce', '1216498610182453367144', 15); + T('vrd88', '42502932', 34); + T('167233640813776470607127062215056', '6030750934980643551934540195509', 9); + T('80911866', '80911866', 10); + T('38', '92', 28); + T('56966em0jce2e135odie7c488o', '18942697033508769047921405112915875394', 29); + T('1ufv6t7m2qwda3im46wrvi63e4ee8eqe8', '19283761638158770938814497486670870733658376776828', 34); + T('7j0nqi4dr3odrdrrif730bq2ijhskf', '19658598320579357039141641643837077460209654', 29); + T('4f632ga542fd4c0ai8065fg2407b08d16b024g', '990186552886364408955753851129882315763213446878', 19); + T('22211001121012112202021220001202200100222', '35731418813631116117', 3); + T('5723918bdb28978d197bb99c96b78bc', '133387033950880025293297852372942078', 14); + T('f', '15', 21); + T('24k170e', '191770628', 21); + T('113380473156115346053712477828402262444530753651827', '594483726000523306774625214331012707298970579092', 9); + T('0', '0', 35); + T('5nljfrvan0nc8g9ia22uc8b', '7450754896579357424627414612259083', 32); + T('chgj01cdbafh5fj55bj83ia', '540745421736410580973158305570', 20); + T('14301524', '7087036', 9); + T('15i804kd9fjh42if69i0dlag2fied3245fh92fl', '1300847036023294222835276240403460067139304231007087', 22); + T('3f', '75', 20); + T('1cruxw1necvlj49oqtnxu7k9', '445548487845292717307860766038288034', 35); + T('moke3taeim7qnhjto11o', '4935873699081075292509565948409', 35); + T('765e3e05ca0c4b853679e80667d71bb51ec118c87c1', '2767923543808337676781898227256098432891809077954497', 16); + T('fga', '6330', 20); + T('7a172', '634187', 17); + T('dfwq2av9tp2g61n9pvjyo9mmvg6q', '14080845047776418964900559740542764294594994', 36); + T('23103303120101130120', '777177339672', 4); + T('4p4eq0464bo6ocqh', '14571181667815526352455', 27); + T('15m58b273dl', '79058625110541', 24); + T('e7d2kg93kg66eh5ic6fc0h93', '107753610293001126855936969374669', 22); + T('4544550314555030245131500001423553314', '51236655573337292293249788910', 6); + T('44123343424431144042133134403210100301', '353761873626317393756721951', 5); + T('14554315330320440350550251242124214503531444', '5290305465869465535101508124318804', 6); + T('3j3015puqer2', '180865604805106619', 33); + T('76706d53152137383626628b70d4ccc6c122344', '266602455093722056456430772081609665962697976', 14); + T('13pif992g4658ch6j8ahgogpi60lp', '4800018957123587648437240307149790316011', 26); + T('234a67c65a94c47', '8895403611426989', 13); + T('gcikbqs4jjkr5q0aorqboa2c9obfk4s20e', '766678025667202009433846434100440635178484404979726', 32); + T('643b91b0289fe98c02b3f790ed41085ba228ba4c', '572227512274253374435718937361849836268824345164', 16); + T('3k20g', '3803152', 32); + T('1312c4085', '1801106837', 14); + T('8emmcmbp542l8l', '21269151478085207497', 26); + T('1ic7ll37iije93k6b7m982dmdk8', '458805542302884920114146210861237128', 23); + T('tmpt2qp4v10vic65b', '58727236794092214086891669', 33); + T('6khk8ll2h7b40553', '1840683580393299686805', 23); + T('63', '147', 24); + T('202110021331103212003022032301', '618162844202738609', 4); + T('721b60be132a6819c03d84861d836c15e0758a62e', '789621417226946084682961249654900691281833580769', 15); + T('14', '16', 12); + T('1jn', '2003', 36); + T('20321034124130112312321020314230234', '1244390864496847188820694', 5); + T('i32gde23mq7nfbl6cgfoqlf9n5kqfi', '16807844582918365513594352707748847318383958', 28); + T('8da1c90b5b00bc0b805b125d953776d42876b25', '320741753186531118132849958969232281983489485', 14); + T('111101', '61', 2); + T('2gjmehabca7mmbjef0i30kcf', '5000975177520593103948512648993183', 28); + T('148534683843', '409063381147', 11); + T('10425635163828754608715', '1036960431474820128377', 9); + T('98e015d5a8d7ad', '18674876444372488', 15); + T('3489180081680194594039', '3489180081680194594039', 10); + T('e68c', '152164', 22); + T('hn1d16jak', '1977064226756', 24); + T('cfeed95dfij9afgf8g5j7h4b8be3i8d19', '5491903449965714818143888948680411788549229', 20); + T('1403243122140432204', '6975903061554', 5); + T('4121443420114', '1048810659', 5); + T('4o86g3', '99219965', 29); + T('11101010000101100100100000011100101111100011001011010011001011011100110100011100000010011111010110010000001001111011', '75965586951977951466854946826683003', 2); + T('418b1a918265a8452c7897c64966', '4924364715692255096187414788005', 13); + T('8ln1hgc9n8045k', '7813942802430495116', 24); + T('pr2lln', '867260087', 32); + T('1fcn793f1gsn7isrq2bs', '32443969807482433165938998580', 31); + T('71215302120100471557063', '528279067564974726707', 8); + T('279dr', '2633658', 33); + T('1k', '41', 21); + T('g3c', '7822', 22); + T('52unr90smo2unpsfaro4', '110445292972077630039222055408', 31); + T('120212330303033103100222', '108229740540970', 4); + T('5a42729b56b5327b5695', '1872989024756192416913', 12); + T('3443452305237156410051107403', '8630515683508240645394179', 8); + T('6d0e24f917cia4376dih37450h', '622334481357904649813944940629175', 19); + T('70r16fpnf8fpach4bni1nhb9frlo1', '233162017149374796044403481642635719993649', 28); + T('9g5b4c6fa8i5i1ba54chdad2h2b7diigeg', '84300792214158192051555299617411649772630696', 20); + T('27kgj0c34g3p97i2jjfp1oaool62jnh9', '168212362913311220690364503904168199040526871', 26); + T('10045661289', '10045661289', 10); + T('568101442316503108', '96174458293818842', 9); + T('12', '18', 16); + T('10lg1mffqbgb6n', '4172603685173290148', 27); + T('22h08f1j2aib4a56fghcija206753id7c3gbh0b3d', '23557638256623360938264238120003382902511416101924473', 20); + T('6', '6', 9); + T('3e1fhfh10', '138834297903', 21); + T('540', '3484', 26); + T('1122030011212013021130', '6197731684956', 4); + T('3d6rdvev3i8smk56mqkf176sjqoru', '4756953400164035672859471330837978142303102', 32); + T('28ea59cbb990457243147551fc12145', '3399121160718415003848736585359106373', 16); + T('1750617616706657707114034617432306132573321272245040042711', '5850571219466548068012306893496891664635414265742793', 8); + T('bk0ppwbbjolo9ukpeepe', '1452584125569882865183540835864', 34); + T('a2i1kcki8i6afl0318gbi0c', '3458077475262704937982766014556', 22); + T('105431041122515350205233534011145020140402052220000', '937497849037121623452661458994336348896', 6); + T('17000472', '17000472', 10); + T('500502757838694ab1678942205536b80267164a6b403ca17', '1473835956263371576873030907640706150910262129499406441', 13); + T('316eee54be4c00b9a96a0c19e19a40a046db2508d55', '77069585133800346034958196432644102010796362311255', 15); + T('cao9u61rkkfk0h45aoofof39ig18q4', '219321826067019903637853646593680142271461817', 31); + T('1b21ce892bcdaecb887bbdd4b51', '6601064768543115590908820764801', 15); + T('1c0bkk3ideb7id68ak', '47247687823294270861205', 21); + T('bf7mgo6n4', '32224267177888', 36); + T('4delmbr5pglab2c4rpnike', '11012871448891715561043207133854', 28); + T('747373012741076272574334113131066623327', '158199639324663999178714767706236631', 8); + T('1casd7p3p3a9d2jksh7b7p427', '867620324388850207003677149313386558', 31); + T('73c4c569b6b25573bc331aa883a4745a6db34b', '18565516288910449123169494151650103860788871', 14); + T('84444108680656169877651363', '84444108680656169877651363', 10); + T('1bi8n3f3if4k6ncf420he5a9n3b7c95hah8fad', '1742086738914014097772398313856731491439635861267133', 24); + T('ld12m8430bm8bfl35bbhjn', '2078522121514721270837067229727', 24); + T('1aij577mdjag5b', '741129866732072277', 23); + T('e06e5by0huf6wr78l2s77qqlrtgjt3qyi2g', '441167684426814513681312893751351585030041477675499261', 35); + T('nc25kj9f3', '3583308896628', 25); + T('2774470632043051240455350472340', '121680175780473175097234491455', 9); + T('150115341123121222041335341030534511303335504141455340005003403044', '699070363336208570930399209135482486908535252991204', 6); + T('10320123211204231240044311303042001210140422412120222012442011240122', '77011705597734437930150474763682977663080180662', 5); + T('2ep2nubk6u7u95', '60499856765543229904', 31); + T('27101471413489956474516936', '27101471413489956474516936', 10); + T('205512131', '3633175', 6); + T('1b5b00b1026b90354cc9b9905c931bc93c8b508b45515', '19401633096691683512551170208360848886053437418114', 13); + T('3045540', '146436', 6); + T('63ckmgig4kid768l9dj7fgdqd1nnp902dp3oc', '20723302228019764418200643552099428622221940273775183', 27); + T('d8bb2364a8db15b1412576b6c124a1b49583', '177430658346563064062252894201653646474719', 14); + T('8f0bbcioj1fe8mdk7ki8l4aonjk377g0gig83f', '45531903854689224866634237825158981669263098308067590', 25); + T('2748709529c232f08g85dbac64f8d4665g03d', '480051529652914850587360519926185710690595373', 17); + T('ak4tcr8j80noaam9sg', '240165757095163574519326269', 31); + T('332167b6ee686ch36ga', '4577445810401469572747674', 22); + T('93', '210', 23); + T('1101012110122111102121002100221121122220112000122001210201100111212221000220201121202102110222221000021', '6391116759661421858380546864255293273592806783454', 3); + T('3rx8d41dc8nzpg3buihq9k1005', '3051780930874321900947488047344884444741', 36); + T('16bl61jc5cdhm9947ga', '4163579690872185402607781', 23); + T('39mi77', '110840039', 32); + T('8149468040947619516457530899555331641620787260864253', '8149468040947619516457530899555331641620787260864253', 10); + T('3if6j38s2cgak3qg4', '910596518615709492487577', 29); + T('240646541755015151746375314736543447343444475552143', '3586530035933343022858608741776409267984061539', 8); + T('2lqj09278ea7ag2q54m', '579985127245834611445154934', 29); + T('b2rggmqii5jb0odp7', '1585296695989924711356563', 28); + T('2', '2', 21); + T('2bdie', '592342', 22); + T('thj2denh', '647086684307', 30); + T('10hg5iimal1m', '984702139840031', 23); + T('11111010111100001001110010100011011111111011001010000110011000010101110010100101110100110110011010000011110011101110011100011101010000011001001010000001011100100', '2865227033411954606371792440103294708104730837732', 2); + T('12f6rr7mgeop2rtanem1', '12594149153851802918636434261', 30); + T('6204661505100123631344312032141634623322531530342234621245631', '3200663074421335398837744308850619093123113632613932', 7); + T('d02e51b2006c9aba507ee8078944483', '2495283013998564778170214002942629523', 15); + T('6c8461h11c67j84', '10847089588583423764', 20); + T('5jmek310gbmfldaemli', '19039589015004936268391471', 23); + T('2bfgmh1', '371275868', 23); + T('i1kicf7408ja', '43089829171489860', 25); + T('kmg9vehm5uc5j', '49306200853105671213', 34); + T('3', '3', 21); + T('122222101101011012330310012021100322300021121331', '33004057764112427046850827901', 4); + T('f54kak7e4cbomlcj74q1gjj8ima', '249496516505770436608106844531244644676', 27); + T('6c0906a1a0571698c729481b4214', '8260906699678257716913660927911', 13); + T('47565283104081157633720612', '3480763053212520433373009', 9); + T('123301111223321011010131302322013313330310033133', '34378733037297577486842020831', 4); + T('emi9p2agp5of4o6qj050q5embro4fkk7c8f', '236538829295639541371770226117340564376039956754927', 28); + T('a6617a383d3630869c8c5b94', '2401408811388914735909033670', 14); + T('h9hi3hfbf11ml9bl44ajk8c1eedc7hi20b559', '847811630497490086928088517877737870085926386752961', 24); + T('6t2fmrdufe6cj0ttsf6cm', '4660945383740971389474445619601', 31); + T('1c149ecb87796c6a9116eaa5', '8690508679745247747029527205', 16); + T('50511214103014512415251153355121045141321231325212202024140', '6984297965964263483810433193107562554690235452', 6); + T('713410438960822980645a5993', '771298716488835296229308646', 11); + T('21111003233203000222133110131110220102003011312023311323112200111033333', '3250695581456803692625152484104902348461055', 4); + T('3', '3', 18); + T('11g2el2cd7ijmimdmj2', '3484028926865476565217908', 23); + T('w1jn1pjy', '2061728269824', 35); + T('fl9eiljddneo', '58071616717298104', 26); + T('1012210331013523255213150253013335240310251413254533540213', '235028416077302984568423163498848184230924465', 6); + T('21345516652054242646357330536124', '21600249893595093431386029140', 8); + T('3516566ad8390f97fcah6167f6h3fcbhib', '5164130207340834274229128435944714360103739', 19); + T('1celd6bb2d65i05m2gjn1bi9b7b82of', '1304319448692751655608515138766232006376865', 25); + T('3d24cfd5a3d86612', '4405874851959039506', 16); + T('437hoia6g4', '190186408481293', 33); + T('4kt50of2od', '123618635333176', 31); + T('fss67o7io263', '572949178706823363', 32); + T('jecjjk7f97a3ej77hb2cf73kihe935ji', '8105008394473920878854794247558553077032448', 22); + T('1bnorre7hl4tb7q9qpjfm25ksob', '4105331027918683625727596478007911896039', 33); + T('du5i8vtbhj5dtwskns1gtgjx09uqdrx1', '10184138846438586443859407370042237810094945982856', 35); + T('1210020000002100011101212222100120101112102000011112211211002222221121212110010112110212011100', '420882836067947584715454206106333480694711890', 3); + T('35194576c4c38370b', '2258945736842956744', 13); + T('c75b132g', '5101050905', 17); + T('c921ss00d3csg', '58052666456572596352', 36); + T('2jgajk9kj56c4bdh3j6', '1856193611885092871748090', 21); + T('112020', '1416', 4); + T('620i04ijh105p36ph5m', '179174918213489533732778468', 26); + T('1kxvl05dwu06qqr79fhiseddrvm', '10649257859457410016272202703683336103832', 34); + T('152445052135131354510404240340301115311014543', '33109388948224325760981254841111039', 6); + T('55', '85', 16); + T('1ghckb1ch96ad55h8ik0b21e0lgmad2gaaf', '143513343624647251275600679456062100442672338815', 24); + T('3ii52g', '9899396', 19); + T('2b6ul', '2464725', 32); + T('7btk3xhm7s16wgi2e', '23436808404419636027088410', 34); + T('8b656c', '3298632', 13); + T('1201110111012211112100011211101011010001200020110211010110200221021211012212012022210220112110122', '10949138520677755464489045550877099321077567229', 3); + T('1100', '12', 2); + T('3052066107', '413690951', 8); + T('e7fbo4m38pc', '2017574092397070', 26); + T('40wsrr8g88ltx2qa7', '12846856175435338795665091', 34); + T('4a13cb301dcad5701812', '28213021023084856900552', 14); + T('33f50po', '4009779435', 33); + T('433b40b7', '266911483', 13); + T('8a555026628970838a79424521', '970195127281423746562878756', 11); + T('4e01f7de0hcgjl8g6', '13962247025122105118382', 22); + T('1jeo2h254hk0b9mldg', '1038391416567657581997841', 25); + T('e46ch8078971g1hhf9f1b97531df2b929fgd3c938', '2314731369176522523922328092957556423672080265360978', 18); + T('242717160430', '1747072738404', 12); + T('121211122110102210121020011202002211101012121011221122211112212212221221022112021110222020012', '146968138778253529694918992051477705186343198', 3); + T('2f2ajhrj3l7q46177onqegts', '409232179316426518796201876801844902', 34); + T('3fkkeg', '61306072', 28); + T('22343414021421424023041441331434124003402212320222104332421301224130332311232', '338574476822007917824757676170869262799211929767072692', 5); + T('15058101388443184451253136358', '818332960438094029477243766', 9); + T('114c1i96cjm8k9k0k63c5jil41bjfh4789dh', '481396998104028267082829096262079902077941433867', 23); + T('92dac144110424d4c77d2b0c84cd321c67', '611833115355492218664994981758095135811', 14); + T('5a6e26e2de56di3a08', '72309336910701228508008', 20); + T('123791225460336062189914aa9098058a41a4989a27944', '972171175105408063075115872561973013135356652374', 11); + T('1kj04p42grlk3ke6gehp1727plbfijfm4h', '991737689151806718971626022815597324840056300833', 28); + T('2nkf524l41ld8plr6h', '11380730654120331785946409', 28); + T('23335225', '728225', 6); + T('k26ddnn863h2b98l3ai3d85h65m7d493fp', '993176059355328275357598675656866581607010932371', 26); + T('4i', '122', 26); + T('3n', '98', 25); + T('848h21d7869hfg9g8f16', '16292644969781732195571684', 19); + T('c05b090d0d716f41de31bh', '8581554053841462934818166374', 19); + T('2324501355', '25979975', 6); + T('116', '78', 8); + T('a55096037a79274691', '5305434806751713910', 11); + T('a8309vwwidpnc', '17087840760045903288', 33); + T('bi403hqq3bhholr5k666knagopj', '1223933313842546154543619577505005775473', 29); + T('2c6', '2876', 35); + T('e5jb479g3h7b4c8idd244b3al86g1', '552313164311562243318741691899753694921', 22); + T('388ehbf9a4ibk1d70nm6l3kg3e4hi5gn57', '11797601925594328234833479927518591099616355391', 24); + T('8udnnwc', '16302304807', 35); + T('29ul982l0le66', '1829153838816649769', 31); + T('0', '0', 18); + T('1000000110001111010010110000101010101011101111101011011101000000000101010100011100', '2447314272063451666863388', 2); + T('19escb3098ff1ibb', '11460919535170071665494', 29); + T('144142131212402102322221414212012024144131342412100', '175428218095062761572388134603091525', 5); + T('12b9a0eiko', '5938407034584', 26); + T('26n3f9pfb18b0l7f4eebh59po5', '536292074201521875899112083004836625', 26); + T('p6i0aesfjm18oo5', '7506892679720214826271', 29); + T('29674bcptat7dm06j7f5o5psi90', '1369393655999563288033729621327624087757', 31); + T('14ekpb14sjd5kjacq3qsgpndjkf89rd4s6khi', '172557940720326178657618843389705196986384318987060528', 30); + T('jhh95ebg93j58f2aedg2h8337gjiaa99d34d7189', '10936655689667291351153903966134856902763255246936569', 20); + T('149819381691633a23a48', '971554154257673586069', 11); + T('2o8g1jammj87cep0', '8569512661345976338857', 27); + T('odoq', '877463', 33); + T('rm4rnpim570475dkvnu2nn', '2141999355713822778715273015702793', 33); + T('1ac69832157b88926', '1226565762593354124', 13); + T('dl6nilan5q', '199215636869702', 29); + T('243104323302040443431304423423442241042131', '133218548417027778287104627791', 5); + T('ibgad688n1tt1no901c2kan51np67bk3or08', '289608891570140335427409811203476440142828467327116217', 31); + T('244311300143314014024304440302004302233424031234444422441312430300100102', '126466804626308277778897937260691523506062725784402', 5); + T('213248823315264041320', '26159069159933260464', 9); + T('1aebpqb5gfrar0', '72444883332647710566', 33); + T('0', '0', 2); + T('c45', '5901', 22); + T('2b1dc5d2236fc61848eb80e4032e842131c7ea1edd0', '1008232683040405259975519873135905613349630326730192', 16); + T('1101000010010001111110110001011000000001101111000111011111000110', '15029069503449036742', 2); + T('206dj8sanq7es6sb491g9pjc19c57o1fpi1g', '3066391464081196310306031655376750037586720973723086', 29); + T('92', '209', 23); + T('12478802aa0a687639b08595396b', '164695396078375004356316605091', 12); + T('23eh13lemi', '16251531039963', 27); + T('c50d1e2', '577020863', 19); + T('coc4ouoeqjjltmun2t95q8d3emx', '177591866017908630546079893678723856610953', 35); + T('20000011000210202100201102121111212201202102200222111121011100202102120120010211121221100111201010110120021', '752112721711477552473490297488694750786078293851581', 3); + T('4e1ae4430cbaa1e317a76a2247d6', '280724852947932121003515360229026', 15); + T('31341304005033501220015003320215500333312434105521550120133031533', '207103120854860196428042222092939291401063326967057', 6); + T('0', '0', 5); + T('2194', '3712', 12); + T('aac7bc27dg81559gdbgbgd472938b54031g2bce9', '10329879133439956684984427194752281557369149598185', 17); + T('1yu1qd5butqh93n5t9f268wi', '651203452267786771549026926235644438', 35); + T('6ed6h1hbb5k9i5ai5h8387f694193', '70471388027526307133742046232328939096', 21); + T('5em6875eptkhs', '12960542504353252646', 34); + T('9', '9', 18); + T('da', '205', 15); + T('elle1baj3dg432c7icc775560h2eji272k87jb8', '15421675663335715158214679544236080147103750752169230', 22); + T('1001012012202221220211011202222102222221111212', '3084861462391318124129', 3); + T('3173', '4194', 11); + T('1c232a352526b255a0', '16750443967049089622', 13); + T('1h3s1irr2s6', '669313434447102', 29); + T('4bcfgl', '125047759', 31); + T('a132a469136450985a5397a768261a9304a71924a1', '50372232119853962785587827398768698622013630', 11); + T('3a887gffeh1h50g3408d1fbhbgh4f5c7he5ag', '5544963555766448467377477277242334965699182968', 18); + T('11012331313202110222120203021021211010131232210', '6324455456594725514532477860', 4); + T('1279423', '2208638', 11); + T('788ckp2qh', '2063972254859', 27); + T('5775521126167057826022666', '468376935266933192169177', 9); + T('snf3hoep3bqgon6dipu50vt5h', '38193381830725709155237943160568018097', 32); + T('giflcil6n936fo', '405257343426048644637', 31); + T('9hml5pj8b0pfdjgdob06748', '130505791364330545697626575212348', 26); + T('81ebe6m2cd6lgi9j0ci98', '13850919497461336125687141375', 23); + T('nn70fao', '5842587774', 25); + T('2041331', '33966', 5); + T('6te5to0lfrkbabtrd41c8ed0ee92e5p', '3826937530476055398947144233230431055942456846', 31); + T('3050340627050765676451357427033162550', '999186955807785473462332939887976', 8); + T('22', '14', 6); + T('21a1g99c3ecd1ef4a25i5j390m9', '523989361127969369779528855785778858', 23); + T('bpk', '11366', 31); + T('1000100101100110011011000000101101001110011', '4721031010931', 2); + T('ff7d64fc8fjaahccid9d5', '4376819508586761049622784008', 21); + T('14h', '638', 23); + T('3591a1d0aaaa14514d8a0a8826ee', '1086505871907198290436180679337710', 16); + T('a0i75f', '605510835', 36); + T('3001102543', '30288159', 6); + T('1233', '111', 4); + T('172013616177746634055145614015', '295033519224308286956705805', 8); + T('24431111223333024222441130311332234341', '217260336465598947913555596', 5); + T('61871645566813861858843771', '4465139885288479008513037', 9); + T('2j99a2o6ig6kaenpr8ccc213o21ih', '236072821902099878272860191254755048167320', 29); + T('20c82rj842r3sl5pngg1m30s1ns9lenblg2q2', '302235546226118472645257056192337633007044068331744582', 30); + T('3bsnls', '113139388', 32); + T('5ge5b00f1', '219154999267', 21); + T('67542hgdflha6i6kgebk306l8je3i29j71ifad', '295779061503259490861711170029814187601403466252005', 22); + T('2ci8om31pwctteuy619olu06813', '68305183746720942432677368181624371607079', 36); + T('uj1f', '1201133', 34); + T('70dd4ece07c4cadh88eg571ee00671fh299ff', '10902617491709320295309665615607760573150022665', 18); + T('211133412100341030430344024122400212340404224043414124314044343', '48876580902143767369888221969372524247409348', 5); + T('g8eg08ah1', '279586301292', 19); + T('11830geefc83b4b495f02', '40418107783678577959278312', 19); + T('g637b29bf9a', '32991498472403', 17); + T('4f', '127', 28); + T('60ahgkhg', '20498279068', 23); + T('807dj3ia477k6540b2', '531044090253007204514148', 22); + T('glo1dnold5a6fm1nnnbdfb0mrnjh2obi0nr', '2789545609120026862639750879216157236162178740596717', 30); + T('20551660343300260022603032344543556365661', '13481349525083560101951990618981076', 7); + T('11111000100111111001100001100100010001100110001101000110101001111111011011101010110110110101000100100101001100010011010110100100000101010010011100111000011100111010000000110011', '93021064714003304999209676659750808550526701882548275', 2); + T('5ed', '1696', 17); + T('21231203102002032200322312100032102333310033312230121202021202211020', '52875735012335675083325403253481232804168', 4); + T('4a9g6d3285a0f71', '14592320917794115609', 21); + T('2rkjar7bcgfjapl95hikel9bhpd1q', '261692392820668064199561442410427511575031', 29); + T('v', '31', 36); + T('870l0talhqlbocuut87rmnht', '164639756154616554672312658123494939', 31); + T('166gg5cd', '829405561', 18); + T('111111011110010111011101011101101101000100110001011011111001', '1143454535228004089', 2); + T('7g335jhjiaeef11cdg9cigbd6cl7g8mk14', '6661914066616801000688433796989649066873498685', 23); + T('729c210a63g9a0b87hb236e1e9i7095h3fi5a', '77328303793071910139493127832503020470265247731', 19); + T('111110101010110100000011111001001010111110', '4306578150078', 2); + T('270fl2fj7g06jh4bfebb7ad', '792003659981720720802552797405', 22); + T('123240341121241110', '1176945883905', 5); + T('609af0552gf9977067f10321ggb5067705e0gfa9c', '99658853369916214404971432082520573489936957319371', 17); + T('3di3edkai068i8g0850d5dbj7b3', '914473354161724934676796320329532991', 23); + T('60072304104', '20955430219', 9); + T('9a3lpoi5h902hn8bodq', '3617529642401747033698699016', 30); + T('283k0224f93f440chhidef1g7a66g875', '232905975079915676784494113568223597432899', 21); + T('43010013142634444066025411', '5942944657464057117855', 7); + T('7b1504d695414bc4b3367a537', '2597305124184055465506755532584', 17); + T('a03d', '58387', 18); + T('75746114788229445253810814861417162069', '75746114788229445253810814861417162069', 10); + T('1517a25680a7a55381b18994b3204a13035644130417cd4', '71951788846356115851868854226027470196598485964814850', 14); + T('ldxw2kod', '1675994868013', 36); + T('cb7427fibhh580al3cbjh31d28960i', '10658187116944300172792431427417942701250', 22); + T('g7dew', '19240946', 33); + T('8480d1184c0264903c99019ba79a520', '201522207278301179690568435464536016', 14); + T('13233020022320110000133221210031013222033313331121202132', '2510595482396899974505895592040606', 4); + T('32mfbd43s65247pmjh4rc2okq8d5klii65l', '163041687824253430655263510014482606677780918948782', 29); + T('100026126125431453044406321032314335211606643345035545012516', '72661785003425012140588523563139272506535099051702', 7); + T('1f27p24anjbgrc', '15595560185780589258', 29); + T('1ks2s86798bq3049a0ssd4n03m5l3dihqg', '3129227003843513763551368915590401778246667625712', 29); + T('3', '3', 5); + T('3ba953957', '1716304531', 12); + T('124014322013143030122204204203124343100110121402423233030012244', '33894391020518795695192912235400479381094699', 5); + T('110000100010000111110110110111100110111001001001111000110', '109286979318617030', 2); + T('58166441445415768526440246567887125401', '1198377845109548748098572871264323582', 9); + T('cb5bgbickjp7a3nadiw', '26576898192662296489123461908', 33); + T('3b0ba610991', '530965728385', 13); + T('404413nqd9fiqpnkfj', '16007373449287050500285495', 28); + T('2121350320201502103345551021045003450201550321400113412420214551', '23539590020554430797855801628642485899381919626499', 6); + T('53mlbddfag758gptf8', '66187385842518934543061558', 30); + T('69gmek9m38ie3', '380697603731777228', 25); + T('2i2g0ifgij0i6hfi3g90', '37935881359797264481717506', 21); + T('ii0054mb', '195260028392', 27); + T('1fjfei7b2g5dee5agcg51246d8ah9ib', '1932164313553377614588544011374939339971', 20); + T('2e1aqjfd3fhk90mj491b49jed', '134908996318227926701481577799370629', 28); + T('5pr4od8gcehj7qkd2mdalo834k3ffmg2', '12728449099802910729307024798552491911885534266', 29); + T('2ekdpk4jcpq', '748235759126742', 28); + T('d50ccg6jc38jae', '2045130355749296249', 21); + T('3603gj7d46ngf8h94kl2020egbn8fmm31d', '11452231113764962902532730057716103944191773413', 24); + T('2e', '44', 15); + T('161654155547445343476406063530377171044513302703466', '2538635569062190223060841428161267358214358838', 8); + T('1cba2a2f26dfe80b4c05d5f5496b9', '9322511400054499645799889634629305', 16); + T('10000211001200211120211222122100112200000112110102100102002212002120220100000121020111111111', '26448038821401714118351547701564166386304908', 3); + T('100001011110001110101100101110001101010010011110010010101101110110001000110101011101101000101101111110110111001111100101001000000001101010100000011111100011001000101000', '195679510499172126937950972652289628431931810918952', 2); + T('22g547', '59586936', 31); + T('87fggklhhg', '10081601679330', 22); + T('14loc9q0brmnf2l3pjns', '13453999087631333376321422818', 30); + T('16b120336097820377102ba1a6530694', '4492294931008813292353818571952848', 12); + T('39gbh606nqc', '989997953401812', 28); + T('1dig5', '226295', 19); + T('1b3ka4g0c31if', '32556633457068098', 23); + T('36173', '15483', 8); + T('25mnkqg', '1597959796', 30); + T('396ddbf310babd9b0124f477cif5j', '36237589250638277361694592995401437908', 21); + T('101113023002', '51298502', 5); + T('110', '56', 7); + T('110001011001101100010101001101000111101010000010111101011011011011011101100', '29161467826175673743084', 2); + T('132b5284b7468b042763b92848288906579115b7195a6a4a', '669106877176619840691504688183033278062755763332186', 12); + T('2jbk', '78202', 31); + T('36547444550627731264507057423205012330760602245415526634143', '91896719045463903069060584567797070657705215769917539', 8); + T('2121342000144101', '70013678026', 5); + T('how', '20500', 34); + T('6', '6', 24); + T('2r5mv', '3740439', 34); + T('4cej5c3cj6j6h6a9h44g1ee0', '11865811719145171527617979234903', 21); + T('1a', '25', 15); + T('322311222203133013020010112003012001310321220002231100213132013232132123101011010', '5374536559442579875501675621431604976446648160580', 4); + T('eehubjvg4wb05956wfr89p64b8llt5', '19553077057948292475181539283795939051996984745', 36); + T('66', '138', 22); + T('21e5', '25190', 23); + T('5824gg', '7778723', 17); + T('qhcic05m', '1392438529792', 34); + T('70748', '103386', 11); + T('dd2f83', '14495619', 16); + T('269a83d0c1e15243ge7', '33557569767693937959458', 17); + T('217a8j', '35197139', 28); + T('2nqr8sm3l6dor7l06btp44g3q4opsp7hhto', '466388495687397034337875211314470597167886175645194', 30); + T('919ha621d52e19dgefh8669', '37530506019880420547749751997', 18); + T('1pije311bgqvpb5ekr73gsqm3emdg575o9', '229124521801149764060037079145996433176668172334504', 33); + T('1515502220244213520322244000232533532', '19475372332703870864203147616', 6); + T('3qep1fh4qwndwwwe5awp06cpsgoffdu69cu', '118279202173747931820139636011582054710456162076665600', 35); + T('1ada80a134bd3cb309', '54410775990170265437', 14); + T('8a97823751309916828', '49979715688154191266', 11); + T('5gb6k8igf7gemfcm', '2870749420792582219510', 24); + T('9n3b1mjinci0ni8l6gin2f724nmpbf3', '86027429526935179638753640862837929481681397', 27); + T('a9698129d564ca424d1289a5cd3b641a1a4aa763d8', '1046398402135353288360947832509612205229878640394', 14); + T('9', '9', 27); + T('15f7', '23740', 27); + T('e64g', '422980', 31); + T('9ca76d75d5559', '1277567401473084', 15); + T('78ed606o1j8fqhiidi6fkoi83j0n4c3iiqp', '33935317423077288563227681620299054243465830701883', 27); + T('31cfej', '36322539', 26); + T('1d5hn9ibgty', '3795546581559774', 35); + T('22210011201122011202', '3403203221', 3); + T('39c9ef36fd8d6d173e0dcef1548f', '5958639927430509319986930239964875', 17); + T('1', '1', 20); + T('1006602851715538236745820258681874447601432823308065764', '3412333354307507489911392031280207794163602060048483', 9); + T('amhodl4nfajj525j0qm5px41bsa4os', '2758944573212546785156336043340023815551190796', 34); + T('1200', '45', 3); + T('2120040430001210430112021023230112121300222320220130', '1013117983252189204902772113159538790', 5); + T('11111111110110000000100111111010011010000000001001', '1125213381697545', 2); + T('14c0jb', '4973567', 21); + T('16530fa17cif', '454442982820233', 21); + T('a3a0adf4f85', '20585721319165', 17); + T('203203033120031120201213113232300022323332032233', '44009547630098010676449502127', 4); + T('bl1i9', '3334710', 23); + T('8pc7240lvue8vuq37ywvx34j6ltmfl', '5232403222434712533947020919591570328338399621', 35); + T('111011110101010010011000011101001010111001100000000110110111101110101110111000101011101000000001000110000111010000111101100101000011000000110', '2606077838126325794622812111329148470986246', 2); + T('222022012110', '517737', 3); + T('405934gifigga12739441giih0796c14b5c997ih0', '44130496382894991152875168789677354953126176798303540', 20); + T('557ad083j4', '9422716142562', 23); + T('304bdb166ac5edgab3d61e97b606250d5', '7142197345479876851613804398524943471095', 17); + T('23020170177167056322724056253016211772161010110040067', '217303698775390775219268953665006962201726042167', 8); + T('5fch', '60781', 22); + T('rfeemi554rimeo2bt6lwrbe', '70166644768206913891123105929597662', 33); + T('335a4441544334925626015a5261a88000604774798564', '242132208927109792755852728923466600488607984570', 11); + T('1110110100000000001111001111001010000000000111000001000100000111101001001000011010100101100111', '18337058785747772841230707047', 2); + T('j1l6qkgfntjef9vc32oc2g', '772839569513479974919512085246032', 32); + T('gbi8', '114065', 19); + T('i3da2hi80eb0ag8d9g912d7a', '1008543268485443569575877596092914', 24); + T('1011001010011111110101100010010100111110101100001000111101111010011011101110001110000000101101010110111100001110000111111010110001000111011', '486261763761604150405408746183250518303291', 2); + T('jijd51jhj1j95f4je54493jae2jmf81biaee', '9069209033129880269632627501828625587610894134746', 23); + T('2hikdk67o4g7lmh1k9j', '39437368888777361305497119', 25); + T('15c6f07', '22834951', 16); + T('6581d19cb883a36', '1064511493807102328', 17); + T('52', '107', 21); + T('1p0qemoadmtnlgmecm6kbmn74i', '15541937980818601123360827036285747438', 30); + T('1', '1', 4); + T('21590025143', '21590025143', 10); + T('d6sy36', '693030386', 35); + T('11322122', '24218', 4); + T('1110011010011010101000111100111010101111000001101010001110110001111110000100001001100011001100101100000010110110111000010000110001010', '9808812004949753301944141481962869891466', 2); + T('2011346064205340121321043166651212640460403562264030', '25491520237430529777628523147054536052862839', 7); + T('ucqqp06', '26993470385', 31); + T('360364043226375763434734203', '1135619094464764138731651', 8); + T('16a22ab29g6gag27d902i028h5a5h28ij26aa', '91071572231094736409429316734882921398332658610', 20); + T('16bcdc134bd0175b6ba3c8b645b3a8acaa8653926', '10426556992801999163605089672879387047740400062', 14); + T('101010110001010111100100111111100000100011001010110100111000011010101000100011110110111000111000010011000101101100101101101100001000', '3638586720469021421571505782203805260552', 2); + T('140c5a387bc44a4b10aa460b7c7b206a12260722a190', '1042190142619938105857559249577611044384867548601', 13); + T('796246846337819935321375455889727088', '796246846337819935321375455889727088', 10); + T('4748365707045', '1366592978372', 9); + T('18dqnic9l9d8lof0an83jhl8p', '161791385498298856077148137049891879', 29); + T('e4enc1ry5e2fev5tn0puixpkat5hs3u', '690214300653731249034075248278056601286873317770', 36); + T('12103332000040255055033214532003', '1809113997459018487166787', 6); + T('4ov5o3bldn8i98vgsc68wq3ce0j6hgec', '563851485207171383268487747899059744066460463002', 33); + T('122100200021100200201002001202112012200002120122212121020102212102010020001111020011121001201012211121102012201', '58695548546092379485949598870251325789565837785276340', 3); + T('10011001012102121210111220101212021010211021100201001221211112200010100222110012211010', '37710977865302705162890164637672855056666', 3); + T('168f56983', '14994285015', 18); + T('lmil2egd65k87f', '54272692008795037013', 26); + T('2335440145154021142020', '57257388878637468', 6); + T('40101301132322244002210301221323411221140331223132341', '8976324511590349126560140575129895971', 5); + T('mlg51b99bfc3fbg6jch8kaea93d3gbi31cbmi0', '5553841642984415591090623182299846227471263243529165', 23); + T('1245412455512', '3201760196', 6); + T('4503a22bbbeccbec347352979ce46918', '12466951961005062711489205571650902923', 15); + T('10bfa7f775', '1236461192499', 22); + T('382377804843587793924059644948380229143271542188852331', '382377804843587793924059644948380229143271542188852331', 10); + T('f1o3nlnekf8h69cem6ep', '11553871160155818431289732717', 26); + T('bkd7bkpi1415qbfghl9ifckcsf8sab1pkd9', '616479730153122276188583638809339600885956993018944', 29); + T('297le48dg0ah3ab203cgge3l2a', '26579580179095250157256986137526036', 23); + T('87530521065105884', '16387573292942836', 9); + T('1201111202112221120110012120211222102002021212012011011220010212010222022222022', '28290291045491254023506261936179023326', 3); + T('3b08l8bia9d618', '3031752476775111584', 24); + T('902250c032b7g0f89bdaf178b', '3057545841520061381930994706945', 17); + T('40047350077123034467287624460405518424571', '592212941919593143318170237785813532640', 9); + T('f6ddad188bhgckedi58jf734191ifc9j7igi', '290294718982610863234917060711053043029223349512', 21); + T('9kf6g5tphosttsn2i6bmjnmr4g4ra39io', '5112058191839606068411315609839936325831521670438', 31); + T('17hc4ge9fhi71', '3136930029314922', 19); + T('e', '14', 33); + T('1', '1', 28); + T('19385916362038001511974974352326061606', '19385916362038001511974974352326061606', 10); + T('994hg2d2dhbh0gah', '64197081894248845109', 18); + T('acbg60n772m1ea9irebfnqrao', '1305370225928181620545110631536852533', 29); + T('14233136655362371400640556051237407411322356356326214052664', '36825078122035846824139359498863387810994115321025972', 8); + T('92392b490301a664', '4006460987264335819', 15); + T('167a115b4jif', '270081361799975', 20); + T('1640200513276356713203217', '8561606752326371837583', 8); + T('6fa8crom2v', '227951526041695', 32); + T('4umsdr5ai26d8fmvbkvlb2mn2u6sqw1ipv', '636523307570103041146492708259627994295321250393266', 33); + T('38u9003eaqm6mpnr467a62t', '8353799196317598820195931099074052', 33); + T('skj4', '1028647', 33); + T('63u6q9h8p6ahh6bmkb9mj82mgp0rjo46d3o', '9163926831552473156333325816156658696482771840480376', 32); + T('374181045005367453', '63869760985078506', 9); + T('gi77gs7t4c86svd44', '20031375747586205082956932', 32); + T('idgcgg3iif306812456h377f56942aha1h1bi8de3', '26466184663410551722103090587444979074925601227697522', 19); + T('1n8s7', '1811335', 32); + T('1101111001100', '7116', 2); + T('32032002233210222021330301320', '256154294077082744', 4); + T('21d05e087118154801e38de0d0c9e836ee62', '309359469371419698329028550109463239304242', 15); + T('7bnkba8727mao', '711734299233608012', 26); + T('23122113350351205124402523114241022314241152131452310154403', '3446603390947454372499645215833941706110137379', 6); + T('8fid35se7iqd8qp9jad33p88c4eshmrsn', '1578863152062103440946991148225491469855580789163', 30); + T('866416783373441066298147461690874873461', '866416783373441066298147461690874873461', 10); + T('6eq5an5rab06h', '1517176822531587577', 28); + T('ud2svcuaqq4sr7jrqe2bre2hsa2e', '1324502565529099628698041478533401102133326', 32); + T('6hm5pp81ik2pf1ii6hhl5jioc', '60893965774839245281672395269677740', 26); + T('ee7744r3ad7', '6096626264406298', 29); + T('1q6af87', '2316479689', 33); + T('11111010111011101001100100100011100010110011000101011100', '70631085671395676', 2); + T('6bgai2ib8jigfejj7akee7gkhcc', '1653728637039272131322974404967196079', 23); + T('774k16nrl0naamuri4r0r70cnc6', '4311028221216091060938421206338050133954', 31); + T('15464kh3m', '184142510722', 25); + T('a3d7iil0k055ea2e5', '236120447734071099376605', 25); + T('174svburisi05', '1410646341741070341', 32); + T('6103526361624161311443517175371632412741737', '521666973443756820065064110478867547103', 8); + T('103807464250446522257054681023194524538600', '103807464250446522257054681023194524538600', 10); + T('3j35qafo5is9b46bon3r50k2lcgp', '797208106619573886168214719184124083800753', 34); + T('kb5tm5ueho', '538338180669237', 31); + T('gffi08e4l931g4fa4670c066me3pka4h1cgm', '554854175062937340737429653211079158274027725303326', 26); + T('imsyw1tlimmvc1a84d82mb5v8gi3x', '702689747548001434279373592171391347865465773', 36); + T('3cbj9ceddch0ca260b877', '1001161473757765639302563398', 21); + T('0', '0', 35); + T('247a679c84b4d', '298529370955423', 15); + T('500313532362550151405060156664016331505660206001614462450', '1059924439122427863447760659387416953643785787762', 7); + T('21104675576566636070802230712528334778338134', '228886256147665679004281010479547505677553', 9); + T('nde6d3h4h7n9ndc', '877038302183182967837', 25); + T('2f8f19d0d3ff', '52291659944959', 16); + T('9po6he7l23n7b4', '40360148730545473327', 27); + T('4vrcnav64my', '13539089772110454', 35); + T('wt3f', '1407645', 35); + T('2fff4h9i3026gh1397i10d5i8ae6c4f', '652969455080964332999891591145708320863', 19); + T('1101001100111000100111000111101111110101101110011', '464480193997683', 2); + T('6203', '95003', 25); + T('lntorhe8qgtf', '1097991413515091385', 33); + T('1dd4hhc', '80963249', 19); + T('41076a3c610cd64', '45272036908151372', 14); + T('33101330321210100311220302230010000011013000121332133011131113201013230301021222121', '89329862369401356626441467590629208479429264972441', 4); + T('ow7tdn8yg3', '1964139743090213', 35); + T('1q60sn55rc57k46jch376dbi18u', '1100010206904531923980306975025572612130', 31); + T('al1cclajlg', '113737896778508', 28); + T('5', '5', 12); + T('36341540646206345106351653034450633650542255', '8584090170028289590539679646753255116', 7); + T('1102033632151056', '5454472967691', 7); + T('4c5nb2a31', '496481252041', 24); + T('396rc6g1r9hf9aabkj42', '10434942490263324352574492834', 28); + T('1c1', '406', 15); + T('57rggzfac60l9nrn661pfq10u', '117102687392726624510030956959605426862', 36); + T('38', '41', 11); + T('1u2qm', '2034518', 32); + T('1232053250', '14377278', 6); + T('59', '119', 22); + T('66877666510', '7045749564688', 16); + T('101262042073', '34406946350220', 17); + T('174406316667406655013647151755454742463', '40406618960600991640852771818947891', 8); + T('381367303', '381367303', 10); + T('fdd6hifi49ehhfagi', '4534655080747979804851', 19); + T('293bo9drjuh', '8235734635761209', 36); + T('4865260ac23b750a96', '40252545837442207366', 13); + T('3m5gh8f9eiuii2i29da13dmhe3shrt8', '2045787934668186695600969415825357209406033909', 31); + T('191803aa3382219136708a9508218', '264262054527282503748967555048', 11); + T('1444052445552541441142310', '8514868572634010370', 6); + T('15011400422413113112434241014421043155342445031005101', '53518774664077147625027648928085924722973', 6); + T('1ddx5zi5bavp1', '6500361914360643061', 36); + T('1di6j7cc6cc5e9afj9b42d5475hjba4k9f60e', '660940889065923867470806531240107647134213385615', 21); + T('f6g4828730j', '157087239737219', 20); + T('cgbck18cj6d30g231d3873had68b2c8gb', '115631796673116218055162703588567020964949739', 22); + T('1b8g1adag10f', '57508815430230', 17); + T('43236337121823529354644', '43236337121823529354644', 10); + T('h59b7989d6c1280ia899ggibf2f', '115923326177989136223953138998174055', 20); + T('55b585', '1367669', 12); + T('855elbci61icfb', '12232290116758492261', 25); + T('qf9s38bt2pqt8g', '1456565460716253297547', 33); + T('4791940b5c8', '633114739642', 13); + T('3nb1mukrb', '10289748946583', 36); + T('2roq', '86299', 31); + T('2j4m3ja8hj3bbjc13', '17388834727775714756395', 23); + T('21210210200221000100011011021121122020110102', '854293782429088571072', 3); + T('121886200777336076581247707653381174765200168442101338', '468460499850199466928527287592120617883229696652094', 9); + T('63kwnf77bwut56ca', '572752155516297110798450', 34); + T('ideh4if', '4527221715', 25); + T('428427', '255499', 9); + T('ce65d3144a87631c5d8d5e', '64651681400824332635469389', 15); + T('1tirisssmcieq9jjem2ld4fpd001afe968gl', '9944720592415733461822502465141583653366986082659701', 30); + T('27564631602344315060464577541', '1490731602885528882512419711', 9); + T('1112222200201011020301023333113211313222223333203311000', '439439643250765496890620832005440', 4); + T('ni5m4p3nkb8e7', '2261758525856544683', 26); + T('bb5ha55hc1j5786c6gi3b0jf', '9701164395793552878907962168395', 20); + T('1d8e03j1fcgggf93f5ef1c4e4ba8', '224378652645875278576698754063076608', 20); + T('h1hvj0hqkglm', '1196363266840296960', 34); + T('345ismnc7lr43jja1e2ff24', '985236942305240622053932671238564', 30); + T('1e3iebb0', '5501850470', 23); + T('coa782d6j67noe6koclci6ogoanlbkd9bkb', '4396598624432652113517535536299626773660112648011', 25); + T('41002112043331422302240214202440223000312140422212', '74671149805376831258756652992904682', 5); + T('djxmkk7v3s248gexm1gp', '1703151246313896607474774348861', 34); + T('8646077885b0c2a21a112c29675749c57ab', '635151353519033987553420797933447242705', 13); + T('bu441qf2akw2gtvd8qe7t7uu', '3869618174244179076226832622786813655', 35); + T('7iur81phdrrfcnn97u4kkk79tj', '146414973454877334021181536955701659607', 31); + T('a0', '120', 12); + T('48ee59e90ac14e8e7c231ce875e6589419a0', '669783568562143349960735984002758784886175', 15); + T('ge623etu1ob2q6buudk474je8sbe', '1642513449767667629299872543927786786403661', 33); + T('43c3917a388969c28c304b4497c0a', '66716252264599355808678868874746', 13); + T('2859b5a', '12788474', 13); + T('7641714202176443731750235267341521674705251706234', '174307282119711580494340594082900153247173788', 8); + T('jaf', '14136', 27); + T('283k299hb26llbgchgb6l9', '36807839785608217611584893207', 22); + T('33ol8dmma43g9e7kd5a', '45980645590797982073367635', 25); + T('1i4e6ifai9ej', '1068011337586619', 22); + T('133300022331010012301000210032002111201200121310122003302323031001133131103020023202', '185626342194041733951899580551736160422093201900258', 4); + T('a3j87g1mqj0b0h9nj68odofglpm', '166491782431993148839670675364949059340', 27); + T('7481370241361', '2130975455815', 9); + T('502e75ea0c6d0c039', '32928634294384428054', 15); + T('11011100010001001111010010110101001000001111000100101001001010111111001100011101011010101101110001001011101011100011100010101110100101010100111110101110011011010110011000', '1287696114982305806708561003677255537140522028742040', 2); + T('1bqfb3dfpepng0kb445532e46i2k2plnerbl1', '17866045281194629714550510066941232047098126404456765', 28); + T('1228541550535432070748521080570353154383164027640630', '5838445704235480390616223077573968603488172323015', 9); + T('202120202', '15005', 3); + T('2b15ses6j', '4151154643167', 34); + T('1oletrcgbcq9b0ol6abg654', '572355626082756700069900296347554', 30); + T('4d0l4fjnvdebtl12cyjt3', '33268500416963035715332927486418', 35); + T('21684428648370560244556270286321625', '611004158938408181845575483482792', 9); + T('22516578301431031712115715', '22516578301431031712115715', 10); + T('ia8c746a5k698gb0ea0h25', '4186764807821527418737933604430', 25); + T('552d4b5c5', '7928248585', 14); + T('9962395855075', '9962395855075', 10); + T('94o', '9368', 32); + T('8l5p1gbpln7feh87180q30id4mh', '370245596672569805456573812561788398457', 28); + T('c9s863pkoa6nm9k271s6agd5936622fij3', '22417592566417395601808617316485913816273476937652', 29); + T('69jl39227g9jchi7fbh7k', '4550255795481192857394992106', 22); + T('i3llek5pmb', '98532878244435', 26); + T('27sr5g2k6lamc0jckdb9mf3l856gei9gc6n', '119857086374419767386831815250826945200461652035528', 29); + T('5hq2j9i5nw6ohs3hvdoxhd', '800197957325309307636499187015299', 34); + T('c5d885ldc2hd49jeg9gafaa6a6ke6i6e423', '53787528350697204358419391960520601829238505391', 22); + T('5llrhq0bim40jagd8j27c7hi44aerb272a7pd', '72355247952723729282010000522046316637619366408542137', 28); + T('ha1668kgjcf', '463661948026435', 22); + T('h74bo7h93481mki8i9lj4fe', '98266163081048910410819920612264', 25); + T('ak75ffj7d38bka4jh3h7gb', '64086606059975639770545476537', 21); + T('1544451212224143030151322131521234453150350121040114141', '2060205073108919819474425853323987884294925', 6); + T('740202262443263067454211712735764360631542423775344744', '5483538014645444559676878691527370323481540807140', 8); + T('6a7de5g426252fdc28', '5472421497078469371086', 17); + T('5473907070054b040932430b873', '61634926370145594667567575831', 12); + T('4115450564572527160830368830000012742181361444838505', '19161272032820073281912521629778352968829319565898', 9); + T('1', '1', 17); + T('1440410431423404203', '7502669747428', 5); + T('1', '1', 19); + T('251460508961154488826737846', '251460508961154488826737846', 10); + T('5n19ftqpc2ik5ia4shol4qfedbab3erk', '261244167379311148761203476835802681174819715956', 32); + T('72ia1k5b8d5', '451134854378813', 24); + T('176cefd755l41g0g4ik1ingdb1bcnhc7c7ii42', '115776909918913879948624420561685892929802962695482263', 27); + T('122021102223121130311101313331131210010021212203020033200302031213222', '142347927402828237530224283047207824316906', 4); + T('1195am2d29gld35edldn', '177161953608480500227591823', 24); + T('12202112022120110102022212212202210000211102022200220200100011122201212222220201122101022122', '50276392565959796508087003591344035380000890', 3); + T('195196760bb10d797632bc9ab92032ad43540604d99a608', '87971157221742030648612012232857353870163597460159360', 14); + T('100110001011101010111011011011101100111001111011000', '1343422207521752', 2); + T('5i0n32cm7gihpgomken4k', '113463368288089227639632223336', 26); + T('m1iken16m494defec2jim8', '2129732956718515846300095237272', 24); + T('352754440661731162345175142131150650044732105622163', '5239828571223832230977981455751540869256651891', 8); + T('2h21g76gf6c4gcb1771hf25c3h37h560fa9d49', '82232560865623068409274522061107609432063075661', 18); + T('18336631326266747387301843477103751556526163', '208077150063548931141427603913143139920977', 9); + T('373127070001223103537740007213', '607292123862578721351274123', 8); + T('a', '10', 32); + T('2d54e7df', '3408755075', 20); + T('4116705626b180469537aa157a4659', '80986654674608879103776539438245', 12); + T('340021440031401103111001314240223132411342323331400412101243322420111334431', '20137295347910978050137678754715001634222372529793116', 5); + T('153d9792e5b2bd96679de7bbee9f34cd131', '115644794069417523805676707579411471061297', 16); + T('3kbean5c2', '790686787750', 26); + T('190e6jhg36c0d', '5946547059732813', 20); + T('pa4b5ocijnpckmbkio', '54653058302977747314709557', 27); + T('5191999d6121cd2bdc01a33e38252b0e26', '3305144539726123107189696653194983953811', 15); + T('630415b975cc33bb4c363b7be33517ea703195a3', '45712578593779552927926495716849553528442516653', 15); + T('35115035', '1083263', 6); + T('ik8ecg4647i4j', '139555487244430570', 21); + T('413gfiabjgci37ggbhj167il2a6lj87k69a0', '1853468167532157988104259516068589250397587101519', 23); + T('b45grd33e3rgagm', '46026603618605840281332', 35); + T('3i', '90', 24); + T('24032', '6197', 7); + T('14643', '14643', 10); + T('9mb0', '347754', 33); + T('13120234334110400213502255541105350', '440476073103983155758151266', 6); + T('15462416000664444652033602350030142433164413645004054633552531', '6452632018511786950986114433943476403580602805020808', 7); + T('37572601640375442622771540474365322704464564070', '1382461219874045756706531331920884785145912', 8); + T('1f6ce9be57023fe14fa060be4c01e7a', '2610723550735662335298250928784678522', 16); + T('267g342l2c4fqdl4ajeb16073kn', '36667153627913303191726714912695388556', 27); + T('c7a494d6c', '210541427015', 19); + T('cs7tw02ho930capsvbscsc8rq8crl90', '46186547958524001279903376963371423125825316690', 33); + T('1110101110100000101011000101111100101001110011100100001000110010001101110011101000011111101000110100011100101110000101100000010000100110001001', '5131515373500601241098729740846521305336201', 2); + T('3no9lh6jcq6hj7fnm1tj9f7dql4g8hpk', '23432634258735773139507989470200385544339392070', 30); + T('77202ccbd3bdb106c70a3c843815d', '927344578178019254002795633520519', 14); + T('c9g73jc183o36oe5r', '1761650416053970767908743', 28); + T('21001120111101010111201220221001200110010222102121001221010102020220220011100222010000121001000020', '44909696191691954741895603189242516933740673358', 3); + T('af8301s', '19182618063', 35); + T('afb3ej2cjdfg56ce8bea719b59eh8hd6920b6ej', '296262541658682380384776698481582878196565062490699', 20); + T('1b29xn8g00941kgw', '289012521433739258455520', 36); + T('2xtp', '117767', 34); + T('1020112012122220201022201002120000010120100100110211220001222110211110121012100001121012121', '10837637600823066480493206482425734822338083', 3); + T('22315001431055114221302441100', '14892771054125887454268', 6); + T('bl31de', '455503007', 33); + T('1442414261073074545327716347556337315543405616452064022', '9163205510581199876674535919032970590548216277010', 8); + T('212202324042155400', '37777131521784', 6); + T('12349640aaa944688139259530937033044', '309196066606488820168555372722983338', 11); + T('fpgqcforjadl4m41hefa91o5k2', '24029402257540793970931286440247548034', 28); + T('24102100001234302042410140240312000000202423233343230421014423', '12331802937444045464002527321771813605251238', 5); + T('11a47138b132881731', '2563461905444852437', 12); + T('85cb3b8659ac21af1a8', '117256916843717402630003', 17); + T('530510315641333222253215315131453602302126013654335', '9790111583735606376490411560153169670670337', 7); + T('10011101000011001000111010000101011111110111011101101001010010011000111101100010110010100011010100001000000001100000000011000010100010100001011100', '54723606892902481536500944335964133487421532', 2); + T('1637342435475173653242473', '8554147181574260344123', 8); + T('70b85a374348bb964492a19b784087048003', '418269954707700454074594450672126945795', 12); + T('fe1d346amod6lrm9ljngm', '5393449861419496363652864244202', 30); + T('1734425698429208702123875', '1734425698429208702123875', 10); + T('1mh1lrj86jhfco6ce7', '12909789186113871807459532', 29); + T('2h45bd450c7a32dfa2aa97f48caebfc1', '12727768324370554279947630389647616613795', 19); + T('40vodsfi176dd7whnoe', '8678884792879959684067074146', 33); + T('2n', '79', 28); + T('3a506d', '2011449', 14); + T('kugenh9ait4003ra6', '25331317463136730892856646', 32); + T('3b01db', '5178823', 17); + T('dmbepcheuoekosb36', '9981424586270997624379758', 31); + T('3p0qqad0rbd3a0d1edi9qj', '9565860082877068038671133862651', 28); + T('8xrc11wnvgd', '32677858720142077', 36); + T('hb9pb74jv', '48841995735499', 36); + T('2h4d0i45baf58', '60216197692422312', 23); + T('102003023330021103223132320323203023202122311', '349133714394419821353510581', 4); + T('9l41ldpj39nnj71m7l51he9idhqk2m8l', '2305496927225468830003959459450437448260834721', 27); + T('15b74943a22560828b568aa6288a66b7a75', '7370244945567598717283130690155534393', 12); + T('9e63632c0dca5485e48bee9ad1b5a28049aa157e307', '3703754566336033126591165191492065433661004773319431', 16); + T('3ja1', '31801', 20); + T('g42g1w4hpfd1uc3c9d8a20rouq1al7pma0i', '68696270202616562976167194676008006702228230750870258', 33); + T('21230013102330032330322002201103203321120011301323120113033012202', '824272888453390045291865751777634480546', 4); + T('9hilehjdf6lb36j5lecb67b10igid65i4f62am', '2366158544165559387606813664930337805770821698614502', 23); + T('1nkhq7l94h4', '547299336104672', 28); + T('12d', '973', 30); + T('8371b0d9c54b9de08c7', '38795452173112617863367', 16); + T('22g68fg8d03219h4dabfg83b1ee44', '303673527388065638076672857780213284', 18); + T('97c0c3840dgee5g86fch6585d31a4ca2437c67ac', '85105391259450946493116320690718103848694691007404', 18); + T('1101001110111010100010011100001', '1776108769', 2); + T('d5j', '5319', 20); + T('1a690', '51662', 13); + T('343432441403012032', '3019525047767', 5); + T('5kcjujtof3vggbr3pearj3csbgta81w8d1', '725293002341316327093764860114945003565348827512163', 33); + T('384707362343836408736872363284', '18595584801040647198239186170', 9); + T('23cdltgf5iop3i', '115711808465236512492', 33); + T('a34fdfjgchh3c2g', '117542990081505966008', 23); + T('2631935a01935aa659a8', '14608971021561178647344', 14); + T('322002310130020410230120043200023330430400213012024320211340432412204203', '147419546263656400907418587687857873288933335663053', 5); + T('282', '2042', 30); + T('43ejf7c72d8f8088fbj3bih90f', '1405082153027789457088306150219615', 20); + T('537377662473314366627013423', '1659910424702725658515219', 8); + T('8ma60g4d77ogd7gl6l8d8j96i2b5o6bd', '648142815659880474199092122299949894688142195', 26); + T('d3b35e07218e7b0c20bfc', '15995649127931990167915516', 16); + T('3002232001101221323200221231313101100103031012231101330120230321', '258826027845063265069952010556344994617', 4); + T('1qridbfjg80nkda01gp', '219762364301785223184857833', 28); + T('1hdei9i3rgciqki4kk', '6491983373329676555100676', 28); + T('3d166bc11', '26294890438', 17); + T('1325694580866459008894526620', '1325694580866459008894526620', 10); + T('d6d6bf6dljje', '20197332467018390', 24); + T('p1ph4npc5ifhk1m4j2f', '1457942038136981020113858924', 27); + T('4igf', '45333', 21); + T('0', '0', 14); + T('35a7757c09cd7a6a3099b0074b1bd0229dd7', '44396742597558682737158855425055583198089', 14); + T('110540301053', '432804633', 6); + T('fc1ar8b57hdr1mgek51b1ejaqc3l2j', '14320513748631668139007866084261399565403611', 28); + T('9bg5mp1g6jbrbimdb3opeq1c3gbajbaia', '191782744327193344704269800684620420221378415330', 28); + T('17m0rs', '30564838', 30); + T('2024420615', '82897232', 7); + T('92ja514', '1350637008', 23); + T('11000011103131232110013', '21995927823623', 4); + T('665ca2e5cce0h0763c794b14fg141fbc89b7b092', '57340876399944844035247195611985145713742306546252', 18); + T('94cpak8nov5n5jsja3gk089n8asf', '913033666774297494496300127790730852112223', 33); + T('242010412444', '140716624', 5); + T('12010002200', '1589408', 4); + T('8228i4a7kke940f9575620j95eiji0elkke37', '85158690741068950560220168929739588599306465964428', 23); + T('1e9dk7d31g5ab', '12420927280751063', 21); + T('100000001100000110111101111110000001100110101101000100111111001110011100010111101101011000101010101011111100000001010101111111', '42786787446528052699594039883348317567', 2); + T('3k486j3c08fhj8iml41g3ga2', '3126146499527434483823713052690285', 27); + T('bi6iisjvvlnkpsvkdwp8', '1445838597034929554695290655842', 34); + T('126270344754', '126270344754', 10); + T('334la43805b6j5k95f0a65', '123931244832514383361412135938', 23); + T('184920bc8b1a070d606bbd', '1868511579146852493161699', 14); + T('143031224020013310032213240120330021140214004304320142440', '2671868346315276990910773927582919302870', 5); + T('4', '4', 5); + T('1252554a990bb57b4787920719', '1147434430259691058685198853', 12); + T('8kcn44n4n2k6akh6515m1ad6', '1253494409726106013840668026194081', 25); + T('358aa040343b6b00c031674257b166cc38b', '257178834697945123965109260345022568295', 13); + T('c6b6dfbdc40011198bd286c0', '61499113032079803212142642880', 16); + T('13fufa8rfm7c9', '2629801716449273661', 34); + T('3nfc8nf3ag9i19b1', '3673872814701266818401', 25); + T('3166512513354164277266524513220176106234611', '274925189339848199032955327991581849993', 8); + T('e7mr7pkubteges7ak7qma2o', '18485960290768871891830807896729688', 32); + T('97mhfmoedpl16b81r313lslfb0d3ahrk55b', '488123867222855086416788166437659651327293157909633', 29); + T('6', '6', 13); + T('22bo080907cpgmo24h45oltclc20l4rs9734', '10405451217668484228774583686702481362996408865029394', 30); + T('86b8cha148k0a1l718kj9hg9dhd0eh74fa', '1655125180972045181280611035879161485328995804', 22); + T('31h16jd', '455317098', 23); + T('3575735559093705164576928117947264010533599186', '3575735559093705164576928117947264010533599186', 10); + T('3fo34cr8cmj0mbfcqf35b5gpdjm9222t4e', '19605601676847494221950277140066486701282651300234', 30); + T('32', '98', 32); + T('1ifq9j', '28624111', 28); + T('11941375807', '30304915736', 11); + T('64246753172171466452551711206021704632', '16980787914168592911515222526101914', 8); + T('33220020032212223313011322312310220032221030112000101110003102020333222112100', '22303612305914145667368014737273431444860872080', 4); + T('223', '63', 5); + T('954', '11204', 35); + T('c', '12', 36); + T('j24mdeul5i0smbejpbg2mrwscb54wwmwkup', '600423386348711943943690378212372893459687681945626950', 35); + T('bcd6jjlaab9jiofb6f6h6ha00g8', '25537871091880597881403599806322266033', 25); + T('37s7tn0f6ig9tnk7c8c7rffc4q6m', '24895596590360112154229623928710499351602', 30); + T('19751b6963975970b57bb7b746997b245983192a2', '26479394819881134034901962063085314419077978', 12); + T('3', '3', 4); + T('1043010421003143134023441324323114202400040000334203121104331321132402344242', '31350194075596081385648272410035836892718252280903072', 5); + T('o4sglc4m9rcnj310m9nqm7611lrmqe9eo', '4477835046237745517249653886244954948658609046544', 30); + T('ncdq', '918332', 34); + T('114840453324568213742188', '10388126375431293821606', 9); + T('1325642', '371618', 8); + T('443111423431241321342101131402240', '114790435587670217450320', 5); + T('7lpgsaosisg8arkmbcbd', '304282863628138208061599101293', 32); + T('7ib76c6p3li2cj43t1dk5au5jlfcd', '57375933993952595073463711388407424935224025', 34); + T('191e2a6lkeb8bjf5adi691', '132925541528054151438002596441', 24); + T('l1aqdbjq69jatffbg8l587cb92climt', '30031891651603255389418074895566086243934194397', 32); + T('40852838842682255543932763748781364902234498', '40852838842682255543932763748781364902234498', 10); + T('10fh318cdcc5d4f0b418c8b6d8cdca9', '47758452381716675478875781477650034453', 18); + T('f34a', '74640', 17); + T('4511565631241654652431163010554550101105031254624', '173977603700328524810402269464951078727230', 7); + T('5e7545h2668b5ail52a137fa1f', '20545488673771633172442655662596037', 22); + T('b', '11', 33); + T('327be62d5', '8119207775', 15); + T('4ejfrjo1u91wnrwq7w30ft3wrmbnukwab9', '573523620056731492643942313246303569824330571405259', 33); + T('127009363602697407785107082524162100683', '127009363602697407785107082524162100683', 10); + T('1011', '31', 3); + T('7cf9a45c21858e891798ad503930df741b93f61f127', '2922422513262668930583564242609727203228735133315367', 16); + T('458436820017127712311344837258866175737864032873011734', '1750953219563250455758063124003504566473420077405224', 9); + T('211112111201200021012000221110120020011101001002200202100002110020112012010202220202112002211102211110111202022', '76207615872454986906354894113586871317110730853497314', 3); + T('1b77l3r4ano12a6cr7m', '1672233795439662833861029110', 32); + T('pbc7jaab8ch0k0lcm3i9', '79612608910395590545180311985', 28); + T('2', '2', 14); + T('112321002011100100132031220333103333032113032102102330', '116071835591031872355033264235708', 4); + T('2', '2', 18); + T('48dfh22ibd8g686d6c7hg729gi2ii82g', '19527034789263406799378911097575104041422', 19); + T('15p529opb1me5asxv0kvb92dhhmvyvxn00jn', '1282638969189853870845839507929770245008746776925221313', 35); + T('dmo3cl', '237786773', 28); + T('46304360250101432053612230414', '2263254868286362202605959', 7); + T('324513a78b039aa624999b846c771339217883b781b56a3', '5543689730975453400411089215322289389594932504349843', 13); + T('cr9q5isidqrtldskqr9o9c', '135053305512535595499609893934882', 30); + T('panmd5okjtjqanieaj3o2', '8842387608432478043445480816422', 30); + T('2klgjkhff6', '29004353292634', 28); + T('865jbnbhee9h2kd9glj60', '33205472956554208933300869456', 24); + T('203141101240402110133321', '25448656205552336', 5); + T('67h54b429cjd8h', '984366776515330274', 21); + T('678049c017727c47ff4cc7ba35a849365fd111', '2308152223994224783375970725248611287908208913', 16); + T('3943a96100921', '12096243472017', 11); + T('19587422557', '936904834207', 15); + T('18ldm6jmneaao08l', '1261466197653666390846', 25); + T('31332131332322011120122300003333100230310112203022023133333110332120213', '4869949642092297086513535782457768257250855', 4); + T('6ds2g5facl671psmi9kopocsn3bfg0e2', '13996683735002911099235125659493455754164705769', 29); + T('ep72dck6alenjbtdan08q36', '4657326369780155877897242059139496', 30); + T('3ehpcnv1qmye2c61vyls1mjif', '76394919330212421657759781891604966727', 36); + T('bkelggb44g84m', '260736168381814061', 23); + T('9fijq01aj0ggkb31l3kp5lei6', '515503505760431112899810816546231966', 28); + T('20iie0e1hede3c4g0c9590g6g82', '3629916012028800240382232462917311', 19); + T('iobij7ij7j4jag8a', '17675386214341843525835', 25); + T('lkua2se8mgeqhq', '529292255664993899534', 31); + T('8d9840', '6765360', 15); + T('1s5mm61fb3g6dq3oqfnh7dmd', '18261245306493429843745215527871373', 30); + T('43034020201421421322412203422111122221223143323', '658038361800557817887307737318588', 5); + T('1n6vgb45qtdf4ikjtj25fi', '131855452845673101428220026231241', 33); + T('9a9717c775c2b36c6822a', '816836093782779632836942', 14); + T('kai2rgecm5n316ete0tj61qa', '191613767525038384468665535800253690', 30); + T('14401013144312402141400421441400330221110202204310', '34846925086734636841681380918788080', 5); + T('2a9h20f471ai95h651faf460ah4i7', '6777022823748317540045163909505737967', 20); + T('32j270nhc4bgekbd52k4gmjg7fm', '2394183168081128341140646193748287806', 24); + T('12mhifvg4v4bye7begu5wl17gkpaaojn8', '27656181148017299182041086613371692124335836981213', 35); + T('1c499a6b08497', '236220851334292', 15); + T('59pbjsqeb', '3495838469831', 30); + T('5fslkh97b6gr4ed830n0hbmbmdghh6poid', '10081808095888046930034956127945486656376182179651', 29); + T('72b397d', '120273277', 16); + T('11c4', '28264', 30); + T('316015042241513211046541', '89387023411491791840', 7); + T('19lcp7345b4r3qqd8m41l1ljeacij', '118276727933259686532854210784405707429767', 29); + T('3460ba73227a7b12a3', '28923607142014134891', 13); + T('1a0uln', '44071607', 32); + T('2240', '812', 7); + T('306cbr5cn81802r730gpmj', '31455598097537036058527866355179', 30); + T('133h', '8016', 19); + T('11000011111111011101011000111101101110010000101101000010101110101011', '225962873073433848747', 2); + T('4352590526188669238249982a05a', '622402855647499439865384142241', 11); + T('1313b872e4f69acbe969be1d71f982', '569050198457789316514154161677419564', 17); + T('6c6b4gg9675b92af602cb2', '464915643818894184675253282', 17); + T('j540fcg0b23', '197223400964443', 20); + T('i3ajkm8f0nbn9ge88', '790683382405880428525952', 26); + T('e66jfbkldf51lj3ff4cha92bh4i3h76eil', '2850287987851619314988966826056234683936420921', 22); + T('2ggcrh6e6mb4hbfh', '13215306058649270742309', 28); + T('89554664174942265124111587a6a7120', '18714353879248606802890337384240043', 11); + T('g414b2dj', '40369454881', 22); + T('b58368gh0g80lgi1gg2didl2ckfg04944gl0ab0', '11560775941796264717421207380163035997465478257097258', 22); + T('f9445c1a', '4182006810', 16); + T('5', '5', 24); + T('1526560366610442265035362226254443423206210', '553765118614712852621627633491154163', 7); + T('22202222011100002002200020112201101212020011020120012222002220211002000210220222210202122020200222', '55842912623697180438441630010534694569956648734', 3); + T('44a492308724488a0854505895041a0205631753753', '243693813005521214827257950133961142324762188', 11); + T('elkgaxe0nj7qcd52xc1fwh', '2120609821063037588735605933326453', 34); + T('1gl23enhegdlhljb5ipq6f', '3926268391749797408627184401943', 28); + T('2hg7egbhehahcc1f581d1a9', '39898359687999673183300054247', 19); + T('172347572204054163707174', '1129426023321529454204', 8); + T('6fbjh157eeid2ej4hidjg', '11454637245507530619115659086', 23); + T('46a22ebd2d0308431234d1d7a5e799e27394583254b86c', '373239676623123985927471130783407252534116489001507152', 15); + T('9fa2b1e', '3707379842', 27); + T('34343034', '309144', 5); + T('347687508325242200786366857', '22875086492752810114104388', 9); + T('2e59b1caf7e91g4c9ffdb398cbe2', '4740961834842729902995635598127720', 17); + T('d', '13', 21); + T('1d05afafg0562g7e997c26g5142718c', '78434399249593842169745603723971856568', 18); + T('4aff51f382c09c710fc5302d96b22', '24338029676537462451324711222209314', 16); + T('2i545e8etdhk8d4l110gan6iibd61n8', '1423893027311604030720414601275162449842291280', 31); + T('22001443021151101235211245245025454', '668923687080866304933463114', 6); + T('111111100111001101011011100101111010010110100110011000000000010110100111100011', '300402265535819852900835', 2); + T('100011111010111011011011111', '75331295', 2); + T('1opgblfs8839mofi', '16032906358388861446368', 29); + T('721b540a442b29b6b9a949371705b78076236394', '8794420240219128094357849185522299772425632', 12); + T('1707337005035225145674', '17427769821173697468', 8); + T('c169da5309db2363726965508991008', '292974756595688509640864085984168496', 14); + T('2874nt95970r9', '2602121717242626921', 32); + T('11850495657', '30108462611', 11); + T('895990ln1nlaa0o96q623qd', '257752897790289617728328339560450', 27); + T('8glm797oggo3g88jjgkdn57id06cii', '300975455472025404063790549176072636820468', 25); + T('374180043761116258361480038233844323506212452340241234', '1438877121553870492092518259559470761109318218910430', 9); + T('117j8g2g7kakh7e7bcbl0c9k4b65ag0', '19892904511763002652899252931188965080000', 22); + T('3167272', '847546', 8); + T('2na2aqadr6ftc6hhofi63m1lrnqn', '21182882506854980579454759175462290060503', 30); + T('29qu9npnpxs7cadd12', '248079850896649443598509984', 34); + T('4amr', '106631', 29); + T('28007349a873a53156493531a8a7104523525a3774188182a39', '32021550905735198309451788837892104007319202888697839', 11); + T('463511040000003430154003656024', '15885165020452488943863244', 7); + T('173486', '399846', 12); + T('133231001202043243140', '166046488649795', 5); + T('4016115014064440351', '6576217459168862', 7); + T('9c12flhfo75i23ia4q7pre8bp469dgq', '701074624625567608345494904482202635893993684', 29); + T('1091hic4fh383ia8bg3034h12df80diab7', '1620628900580902524870029713957325210730956', 19); + T('o8ioef0lde0bk138gc6agc57i5', '466926356481357301921407566566243000411', 31); + T('156166233517641635777855368480178700372231307125', '1153782478383987344932810256184711436759925846', 9); + T('i1hc0f8gdc8d613g31c', '4743234800984285827809232', 20); + T('353f272adf56cd1', '556923195492411264', 17); + T('63aj808b1j9i2l3752h2c8f', '2102800826252539448210723171375', 22); + T('hjl1da7gi3rdangpujtt50pp93in4h', '10531702766622824424209314777731567825942451957', 35); + T('3w', '131', 33); + T('95bmloc', '2250748112', 25); + T('k22vpihhfj99hk6e4iagot4tnf3td', '152675756450524691112514516843247633696893691', 34); + T('mdg36', '20720220', 31); + T('10459598a086ea0f535900e70abab1e2ce7377', '362873575854611890806983645493404163992613751', 16); + T('2376477566636626564635', '23033650866571372957', 8); + T('13914986769550370259286637241021842091', '13914986769550370259286637241021842091', 10); + T('11000100111000000111011111010101000010111001', '13529272635577', 2); + T('5ch4711k39hj9m10h3cc6lm19218k47eh9l663', '1344478086630991461378463072455217839508892798663492', 23); + T('63459562', '63459562', 10); + T('h4lbal07', '42968523451', 22); + T('35417144376113077', '1038983257167423', 8); + T('2isi9763jab3835ab', '1898862177205082054043291', 31); + T('1e97ga2aj3h09be', '2823746625228323834', 20); + T('2gmewjc0nsk4jug3dgwscu7', '6400228217909621185741059682632718', 33); + T('6', '6', 35); + T('3121331021101301211', '234027818085', 4); + T('3712ehigg25d5fcfh191d8f8de5a6f4j672f', '11520281194133048656485798164515576584655890855', 20); + T('434111433421313440000042101330304314030013001221322421003', '6620016156139174966816882667786009185753', 5); + T('2uaw', '113660', 34); + T('406', '1302', 18); + T('690tmau1brdkfyixuh7h4q0jg', '140340864443150170969873647334684597564', 36); + T('7hajj8r1e6e2g', '4027528437578814676', 30); + T('1fk83h78ei', '2081221039806', 22); + T('97', '205', 22); + T('21', '55', 27); + T('13j1oidkd2q', '335135749046306', 28); + T('0', '0', 5); + T('2een4crrde9s32jkqb6knn4m0r', '21038850143660963827557680221477657827', 30); + T('12loaj2940nebcem7l0', '16227765522388241333942400', 25); + T('2111100212300112320221331022013012032132213112003011213202121110311110231113030323', '13633934239202886688012669467423495607469030601531', 4); + T('d4d6hny4if4ascj159owdnfl8oblrxlvpty', '413441877376397794445086151818809162820265897964345799', 35); + T('8', '8', 33); + T('2220022133231011332120002011022211103321210113011101123030223230113', '14305810169077546460171468395578819525399', 4); + T('fid80b9icb16gdh3c1ici19eb879f6c619609', '173312570072706487103248993376364065928773435527', 19); + T('u5p39lqrcw82l0y9dpd', '311064991681509310112389324705', 36); + T('5788ebbbd', '59674095031', 18); + T('22322022211100011011323110102123130120132030331132000001021012322', '928020921651814319185701793477052109242', 4); + T('1020002001020111220102010211121212201202111', '134041409755206311668', 3); + T('61kgqe6qh7j6h5dmbhcpagg', '187437974023295879369323694043814', 27); + T('1525f4c59842083h36cch3a6acc92dh', '58487425566031862638196589521131679819', 18); + T('1323310230013310310020130332222000133132321203003331033322310230122133132213033030221300', '46327786194880935021662331012705260961479696272116336', 4); + T('1222112121002201101211021101112011002201122202201012001110220211212222021012201021210102002121', '467300445568875369947037784070967420441399325', 3); + T('8qonvegdmnu0aw5hw', '69568665577613648606318036', 36); + T('220020120220012211201202201211221022020002021', '2652757109859326311312', 3); + T('106327541747664237656046756411744551632275412233636062531656', '210781807562814008194311763577265460650228437440181166', 8); + T('19id0d164f6a26b01a8787cd386i66c3djf63bii3', '16455610792247832827316755327263321154889574099775563', 20); + T('3763572416255254335772542046235033', '2520123204503077543365320456731', 8); + T('14304746133086816270030', '1459645652707714950813', 9); + T('1001101100100010000010100000000111000110011111111000111010110101001000011101100011011101000100011110111100000110101010011010101110010011000011100011001', '1729790364338742795479957074258010329122965273', 2); + T('13640c20a010754124', '357697310375837778212', 16); + T('707506qs04orhsrerdppi1', '35973675807994335426304181530113', 29); + T('ce2a8529a4dchf72i9560j1687i9d', '133351074897666171754903799213958249001', 21); + T('24e51ifi4b152e', '94621388214723936', 19); + T('kf2792h1ei6ha1ehfhcb478671l50j', '17617644517562941018851095704171110933039', 22); + T('1kqn50ronep3ik2as71c', '10506891875702197951637673937', 29); + T('8fcgm2cc191v2k5m94q3d2jr0t53g6k8m', '12394963354787525293292048856772126140028495810838', 32); + T('1221203303301202', '1770994786', 4); + T('11024430224454000050552153331515000154434145', '3405930454233930313833095643386321', 6); + T('1ae3o0iklelbnlb7a5afldgoog94', '78973134539990265721524279153730463354', 25); + T('2dce3eb5f', '30433782453', 18); + T('12201db5b511f9fc661a8225f4f6ea3bc71e884g', '1092702138296823636859142055508527236195490782052', 17); + T('10222101', '2899', 3); + T('1a8j0feg5iefjah96dd0765a6adb96aeig', '13077143928228900070839845463145745373845976', 20); + T('r9354', '40906604', 35); + T('121024024241140131404411041240331403404323421413014', '128298909408254408631675074392372884', 5); + T('n', '23', 26); + T('okpcf7kj6gkaibogc87l755jk9', '5873631648722461721096776636076218101', 26); + T('120221112021201112010200202021111012202111101122002002', '34341775954281462267693056', 3); + T('351fbdagg58d05f37dg95b0', '3876964600282154058560351240', 17); + T('ab606kkfrbm0b43vt', '20450089454749253433872162', 33); + T('cg01k4h6e8edhf7j4jk3kgg4', '95601159367307880683256564463092', 22); + T('2313170567182781514845334162722086585', '52943234894452629237397323708821327', 9); + T('210012402421430434433211224202', '410248229704577054927', 5); + T('110001101', '397', 2); + T('230101001110120222121210110222233301023222023101213120123102130', '58839535885482273625594904155393209500', 4); + T('55e23b1cbcgehhe4def6685041h908g4h13ff5g', '2669182359503479925557363322521478498996957386414', 18); + T('1fc9hc27fm7f0b9gi05m2k7jaa1hbke0cm7', '33337457252900489495176823888495821992491880369', 23); + T('1699dd9a1d1861703c0557d', '107958390441765319600724368', 15); + T('14147e01ca6501f252ca', '94825344299726024102602', 16); + T('11c34b4ebfcggcfhae2953e13geg0b14fb8bggh45d35', '1036090998997567837002071965020056914329981363019169015', 18); + T('14a0291a2b388628531aa718388b5209', '3996214153071564773412011127782889', 12); + T('75362616525327077427633563743155774', '38963888713731612415310433147900', 8); + T('1a23264b6a079082734834885a08532421930329a553b62', '81150864498278616239579438837878483217874994006970', 12); + T('452', '371', 9); + T('144ma40bogqkpeo', '209181900230345710384', 28); + T('183252c3b36ab7abaa032914698b66740344135b3989', '1296812461469385668481395148233683766030915189997', 13); + T('n2c24d82a117md8mf', '1841858623472597640997953', 27); + T('1', '1', 34); + T('54a73437b957356ac721c801463275c6b763c2c5abac761', '9362287370778203876248441483257901259174776145134802', 13); + T('3dlfl87mc821m8pjbmts6fpo0u7kpfdpeo6l', '54254596415880694426461637870882068424348153030146597', 31); + T('4e7f9a6gd97b30798f976c761d2bgd412', '70818459574521833397436206841144875444908', 18); + T('14', '31', 27); + T('ai1hkchj', '19562256754', 21); + T('7968575b87c588b7c80ebb7cab7955a046255', '16663308132245987253286598155041222107098280', 15); + T('6g2626t1rdjf', '165622971742904452', 31); + T('3100548104371332670708', '340507102097498147585', 9); + T('13ec29c517d286454bde140c8c9', '4794553784351603034387761189364', 15); + T('20031330213232323031021000030101132211210133', '158957787606405250851428639', 4); + T('213131110022331020201132203013123012110013330010', '48846699476025920364315967236', 4); + T('2twkozg6fu4c249o5f5zyeec9czwqepc7', '179296745079015573585380066754316589663143881114055', 36); + T('26a7a2cc7339074', '9938939755610350', 13); + T('1401406016234566024656', '13862291742387612078', 8); + T('1a628b5613bb840750538548c20', '1099860000407698314785972483372', 14); + T('466', '1126', 16); + T('11021320220101031233302313012032302', '380331316042715128754', 4); + T('389hf883', '2127638811', 18); + T('29ie3ff4am2gmk8c3g5m6e21konfgj4m457aaob', '316274860130420327338945579781478121794869214895475611', 25); + T('202002310133032023', '36554535819', 4); + T('2d6g', '86245', 33); + T('3335430431155012310211122333325135535301201033251432425000540', '176432506934097595361072713115592833769129404172', 6); + T('28hh02ahb827dehd2e8425gb6469ff5', '113785157165293467441651522676088088311', 18); + T('lbe799x', '46401410229', 36); + T('542042344044043434516560152013305605', '2126711221789406518733117742978', 7); + T('14cc2eih1qbp7m1lcl1jgk9fr46383sm3vjp', '54455663158870289665155251942993016244412111864856185', 32); + T('301120302123222001', '53029223041', 4); + T('21002212001122001102111', '74328205351', 3); + T('6c3b796a99801633c', '4622054283778099219', 13); + T('527298604', '7643923564', 14); + T('ffaada51296f61e1e68gcf903', '5403735448335965376083431828872', 17); + T('470', '1577', 19); + T('rnail5l1bn85jq8bh7g8ln0kohp9fqlkepb', '1464423638887609511501651149716898849286416176934312', 29); + T('1eaicc6ocfph097440gjrr', '15465211311476430886891003649937', 30); + T('456655fiend21i0e618m4mm07bbg', '4955855013263935561852905206907470889780', 28); + T('10c69ba2fbc7250aba4', '14665823570079359829194', 17); + T('69971c', '5043852', 15); + T('1id9l4k6i8hke4n2d74e1d9baaij7llg8gbed', '368762199829326281974893275218436743619213050257238', 25); + T('5061106542532243626312166650455043365554255346431466040', '22133959010696779781390318938330831551505973337', 7); + T('5', '5', 34); + T('42224339b0580a7b7067022a', '27704115985298623082217538', 12); + T('74c698493dd81930c415', '551457940709438745789461', 16); + T('1cbi34hg3521e104i1hc729', '22589935080941762817906922306', 19); + T('13b0q6gqemo3dcj5l06f7', '197625953235284830356426908706', 29); + T('230e5471ql17ronr6cl', '235869451232670303532443141', 28); + T('3ea2ijlp8cjmp1', '14315135597535072655', 27); + T('242172304552', '21775354218', 8); + T('23705742311920354491610', '23705742311920354491610', 10); + T('40325421556234466622163363452036405', '220223274809854189346586380853', 7); + T('ecflnj2', '2776273802', 24); + T('33509', '506009', 20); + T('1d01a5hgjl7cbgkah3eilbhi', '11951010251677826156024965580908', 22); + T('kbbmei7l403b22c80jke192789k1jfldih', '17733393536564264087317496003121331121456941743', 23); + T('21b45224568eg22ebdgdcb', '144938388338383501238036430', 17); + T('8d6gezyo1r7kgunyh6gyo3vwlrv7n', '315495151231056477198722506140404177883380675', 36); + T('22221001143240330002123400003234100102313423234421344304343302', '10831690462680924247665518681482540721949827', 5); + T('2u62foj1jxdqq58n3dj8ksqkst', '1143893514844433004546634072814737767134', 35); + T('10325355', '2206445', 8); + T('12520777811783201841298519685547286', '12520777811783201841298519685547286', 10); + T('17e8083a944a58d2135204de1d42a2e4', '4404340011548131300800772375526798164', 15); + T('1118a2416aa6553752761a', '8183802068176534960841', 11); + T('fj0bbckn6mh7', '24031145125734175', 24); + T('4mdje', '3846284', 30); + T('dj0k7665ccfg4fh5ld73kej2gh73f0feb74i3j', '648001720001923293019461828150893010954852476585805', 22); + T('14443534015344414233131041354', '11049599345097890843494', 6); + T('35c274a509b72011851c279b1205', '4122336741698498861081854592794', 13); + T('e0e56b076bdba54babbb651486838bcd107826b1c9', '23326277500217281890367493168426531936362798766289', 15); + T('2achhbd88bfcc090f339c6dd4gffbe9bc245h3', '72332440899007196422573251018352913217544180617', 18); + T('aud0e484rtppi5k', '12927724743456282429620', 32); + T('1893b577b113ca2', '6577012154487127', 13); + T('150414855', '2005058907', 14); + T('323614332751473698986062206774a17305686a63090457150', '37696720390064545358579042379279742922532057398473550', 11); + T('e8', '344', 24); + T('2e5f2b623ba0cfee63689d427bad6eb6be5', '252471852786048400736119714699808445524965', 16); + T('79c6i0j6k19ml660j1c0', '553239859980946859861014156', 23); + T('0', '0', 13); + T('50030224252340154430425145221531101235', '310311840929542538031369361751', 6); + T('d0ae9ed728d186863961d16b1222c198687', '126669789677015144972609639930049865196602', 15); + T('c48dweo2roi3gkg1dc0hum03a6lji3jj', '3626814969878210822526263491353744863308498468613', 34); + T('34', '100', 32); + T('118b8a7ac2ea6941525103d16a8bbc5ee845d3d00db635', '92837971948140306642985790446832742660953864264056025', 15); + T('10011100001001100111110000111', '327470983', 2); + T('75c76616828b228bd7455c2c999219c236c4a7797917ca', '27940171295879883706960540178285471388494888097624886', 14); + T('kg179j06cnn1jh6glmrk3s141h7f', '156589475611419217431593938280129049582525', 30); + T('a5b4480b333', '649859623959', 12); + T('2991ermf1od46m', '36829745558819094802', 30); + T('16d5jf82kec707f9fec5df91i9k2b7', '3974871017260808935849561835122343397100', 23); + T('7287daf9101b1baa352ge5g50a15a2735eaa2ceefh', '20878363680987496322793600785003364424501723901933639', 18); + T('553423232610330161355053636604102414210315', '257966622392557728002609223143145240', 7); + T('1geeiakd63', '2121886850779', 22); + T('151oid', '60097918', 35); + T('1554db786111ab83632c0c3569728d55', '469086419082028176209975038936729727', 14); + T('6d2cce94ec843ac0', '218122797689114268240', 20); + T('ehkhjkfaf33r5n8r5srmth', '303423269013943738843820005454771', 31); + T('17', '17', 10); + T('1f0f5867d98ch1aeba8hc69dced97a413f', '487366045647121584986060742937193428723689', 18); + T('10200011000220120222', '1422685484', 3); + T('0', '0', 35); + T('2dfq4gemi4r9llwr0tujr', '5649561877814315213511808712184', 33); + T('1205ndan1', '224960838103', 26); + T('2afjnmenha35', '8837961904857363', 26); + T('1d51ii94186ifc1d5a5ih301h2', '557924059465873457492743606880742', 20); + T('r5n4g0no6ps5gs', '279088576244954004402', 29); + T('3j12unn6frsvwwb', '21668993189574689558603', 36); + T('37knjjig9rjji', '760884044919918742', 28); + T('1foo8qbpu42m7vim', '317396884789932427278670', 36); + T('2bh', '1893', 28); + T('112041514360454142431252232315620204503134442616', '6215681033732759258603480209777352275820', 7); + T('10100101011', '1323', 2); + T('22013130002200100013310001333230', '11663208147409969132', 4); + T('15c19888b148407823b9c1828b344b8c4a4b9478c846078', '2539097207098298474524756002937168478008339494491634', 13); + T('38100741b0ba7', '32754548919727', 12); + T('pqhp4un27wniedjg342ce4ssn18kj', '441373172882700032180399107069795794985758394', 35); + T('1gagg188890fjbc94jhh1k4g0e52', '895153322821681750246160888581105058', 21); + T('4h319bckj0xomusrreu4e', '19188647657289503363275186769038', 34); + T('1001100110010000000111010100111101011110101111101000110100', '172896507987163700', 2); + T('1f2rp6t0eftije2', '2646676016339395366328', 33); + T('ef2ahd7bgg654e7hh94bc7f1', '3815003844814091481285089876188', 19); + T('13o6kk4kl8bn846', '125216551882870328787', 27); + T('33210310231123020200311132220320203', '1149259353017133207075', 4); + T('114hda3c9758i3f80', '1514391907433723410974', 21); + T('6f6j846ai9ssd62qsek1a1', '33492652261548954183529841322978', 29); + T('27724823338b9431001b31a7b13237ab48b41188850a3b20', '1386830760394607501538378708339339174927213150934152', 12); + T('6jbln8sfg9bmr1gi3iqtmgi6c3sn6pbhbd', '36947529442995940436549729882382448862333593362643', 30); + T('8764hg81h7h15f7deh', '18379721313637192662857', 18); + T('811gj5gfidgpeb8mb', '2011069496924051490676563', 29); + T('aaxe', '405736', 34); + T('305383c510aaa4228', '6592270467788129132', 14); + T('5503607200750620360575714717560', '6972513910589491335440605040', 8); + T('116645642868217044018', '14517737883366084548', 9); + T('dhahqnlrok4pl2m', '2479775577014041842782', 28); + T('cpf25ffg8l3p1ib1n8ga96j2drl32rf8', '9394972520892725333788219596291929339951668956', 28); + T('6kpvicpldai0n7rnaoe9m9x5', '1107286946452408105661642622788152587', 34); + T('261ifm0bpih8irntbt3enr4isa4bn8l3rtb', '367197720067086066449024042284301785272031948516181', 30); + T('2032022213100210301323023223230232111333113222333230001112', '46135451060314504303355529120366678', 4); + T('cekd17j1k0nai35oaila6f', '6512290589845536947166047665595', 26); + T('1sa9ql0k6vq', '6528811470402518', 36); + T('2788515c1744b', '144221635071147', 14); + T('38a52cc273671b0b8b078ec7f7f17102c9bd8c', '1263230489190036409842245570352830262209527180', 16); + T('66f56', '535030', 17); + T('197c7cb589c999e015eca97a72ad491c9ad586d019ec', '610090894842715166825622127314166839310002841580622', 15); + T('2guc902a8t7jun5pb7pb7ps', '3283701567832717695895623064461116', 32); + T('78655d620287e6db76141a906c5701bdc47', '655497934873142286500331809443840511433799', 16); + T('4640170a8e173a17c97c572dc4ae', '250998262368302692675285521015314', 15); + T('2133433400401001132230143432411300', '273762691502915134653950', 5); + T('147876bd8h', '623895453377', 20); + T('5462cg16c5d87aadca1f734dce9e926', '1204772766075379104025376180982802601691', 19); + T('6eecb9a0d2fdd3b9a541f3', '134099742883823958727410163', 16); + T('gmjc8gd6ld67j1hcg', '205382570774701498109296', 24); + T('1', '1', 33); + T('2523014035132512253315120521134522513331043435134415550024255', '141880014505703112137860189697781827375878410347', 6); + T('11m0cjg02nme2e96a6kdfmoodi83h7p', '3013031187307321824945581807606052286997163', 26); + T('10110101100110011101011011001111000000100011011110001110101100110111011111000010010101100010100110101101101111011', '7366609054351701610086110120336251', 2); + T('1dfgb3f7dbb948e856b4a8c2fcac6203f0b1b54egc', '5181812657853529080935299746837888070235867612047476', 18); + T('54', '159', 31); + T('mc8b5e3gepf1q233', '525523234314787298854260', 31); + T('4sisanoghph8mc4r8ko0tclu1hokowgra8kv', '684135811180224801018880221858811529488221626606104369', 33); + T('d4c232c5h1', '2630171232487', 18); + T('7hc2h7i1e2b1e36cce06745954i7552430hd', '27076706386804313773324111944537138361927064353', 20); + T('149256bc3f1g624487', '1048037012773290717716', 17); + T('102210223032321301303033111130', '334582412443710812', 4); + T('ypasamqyaijh238', '143737877066768893777688', 35); + T('6ltpq9plna', '177369251586825', 31); + T('2f8fa201f5vl6bfy', '352859176463170667696909', 35); + T('1132608609770787564030397938212', '1132608609770787564030397938212', 10); + T('2dnwsieep7q9', '122108426181152211', 33); + T('10729856', '37631874', 12); + T('332b67', '1205900', 13); + T('54bd61680d7ceb5beb37894e46599ef77', '1802215542237292717156325458542562242423', 16); + T('3623770788ce585c3', '22397781910457053308', 15); + T('6', '6', 33); + T('1jepg0je5o6n78eoc4cbhchbk1fmg1i5m7', '86673579277719196099662870496657925074641748567', 26); + T('7', '7', 34); + T('c06k2k4eb0g2el16jled', '896355371037423667067354202', 23); + T('3a847dfcee83cd860720c8c0d8b53c7fda25d77', '20879758636120455697847204680129815020870720887', 16); + T('70', '189', 27); + T('79526679b2739b383954', '168988259175985567289104', 15); + T('4c328a9i09ign', '267323824394683548', 25); + T('eb6n6p2bkhqi2q3d07jef4', '16500933193925506222917225700348', 27); + T('a78345b8a3ceaa785c69b82b86c47d0b8d3', '101958714004435870099940928484001465270373', 15); + T('52a1a7655a049a554107197757', '570549577195104508415580932', 11); + T('8l0nl0fl', '150507080301', 29); + T('1cia018de01h0gffh28622eada3ie5c55fc7a7', '346689972196368767502452114289967602936650680304', 19); + T('bc86c2dh', '7158384323', 18); + T('beb66h1b42h1g6ff', '796506101028725304813', 21); + T('264701463721526107175255711722057442604571730762750705256542', '541396336231392418293871062570279037186171679825812834', 8); + T('34d17g', '6164890', 18); + T('7n5frqj6lbsfoshfh4267b91n45qf8f54', '488443138181884558426267360141962918059414061401', 29); + T('1bfj5h5mzx13z6slkfsw1mwypqlsmgs15', '83453369282181797046231963508586180290313617770473', 36); + T('1b668259809mpno6edljmi34n', '13043612843565239822455698795540027', 26); + T('10', '9', 9); + T('22b658253657', '1669392598243', 12); + T('10312223132113013103211020001011302202', '22924085214109545815202', 4); + T('e8a3gc9b39qkfhn7a877k8', '73337537709170036461394725372187', 29); + T('5ep0b0q81j7mhmg3lklhhd5joil2qq71qfih', '695418668680819693407024988950834157396053624624518', 27); + T('7113127129610017826894813814734722', '7113127129610017826894813814734722', 10); + T('504833417050a175571a00033306070375784003', '207340641858777856714830237467106311988385', 11); + T('78qc24hl01o32nl1b9obkagkl6f8ei7gp', '149119393785412110406988347201245769764862541001', 28); + T('fhh78b21', '14250920874', 19); + T('4b5164fbm0317kei7mh2jldnn12c2ckk', '27325910626851946593723470147559719546669300', 24); + T('5e0ggb1f199fgbg7hd6i68439bhgc99e95g4g1e33', '8109668848249742565130771662601144027802596607563179', 19); + T('3', '3', 36); + T('97a8liq839q2jk1a2ecnpcdnalfp3j6iq', '188719129529654657714378849535242845096426504370', 28); + T('169d38a3a649737433d7c36863d9ed3c981346a8632c', '538850185854491322031700163636042819763278649644717', 15); + T('5rc06oo7', '248431717321', 33); + T('4mjch40iina71khi374n0iln5k75d89', '42256608840244945294489743371747073478088568', 27); + T('12221111112122221210211121102011120110110220000111101120212101121010101212121000210102022000200102001222202', '744470241433567593087124994714749545239291673387755', 3); + T('2db9303w76pg3tf0om982eub', '202678684562832691213375034394009638', 33); + T('8us3ppu', '16323958905', 35); + T('76eb310380a6f577f166b90d28c3b107a', '2529121398079147937688504401561827086458', 16); + T('6zi4pwsxbopeuo0', '42901925859461436709824', 36); + T('4wtm0l6op452g5d0ukfuef6up', '13900763662628056937835621763527325033', 33); + T('1jnih9p6qjf7546jp0q0l8ckc5d4cmd', '44403896952339670058436709191269479548991285', 28); + T('d912314e0j7d945', '22041016952382027685', 20); + T('e6h28', '23816672', 36); + T('b73dda2c', '3074284076', 16); + T('264dhk7f', '4135804884', 21); + T('804274228116773141152427814054250885', '20158575172598902835228115918096347', 9); + T('23ib3bjdijk8k4bb5410a', '607873769279078604965999731', 21); + T('a6hb4dbg6e7gm42nbiem972baal8d', '4549058722674037827068667071194505505805', 24); + T('45d7233ed9d3b02ab1faa0f0d9bf18ac5dfe5dd', '248086945188765744497478402146757696039664616427', 17); + T('3122203153014053123250405454054141255311243322', '336066208633979782737442344609629378', 6); + T('4301669926304aa373740a46326790932a036', '132118669959027389980112041611329718317', 11); + T('adrp', '341881', 32); + T('3233212220212010212210020020122021312100310230101', '296614965335263805059597814545', 4); + T('34j62ge2m30kk97jfj2ade', '126716918529588548517026652077', 23); + T('2dd8', '16118', 18); + T('cbi6cklacc4qmhpeicgk92l4ecna5dio49294', '155480057705826337198133385077759543587893171560517344', 28); + T('1cc9', '38169', 30); + T('421625631535034357267563', '2525290811852796555123', 8); + T('1qj838bk869igobhjoc', '115685339404443983601600810', 27); + T('54cb071386a641e2036589bd90e3d49a6d6b7a37', '39240766526100951032727242882830164365238920302', 15); + T('2ei963c32bcc9f34g2ia66f91eh17h3', '642555509107905840901107486734813888017', 19); + T('57aif0f59', '293069958531', 22); + T('21066a6d790df66edfc', '2982109405734959108902426', 22); + T('240789669949708542904a12267392', '3758762420368146985528482557394', 11); + T('3766050301207656231423150647646364447', '1291785946520991837632125610879271', 8); + T('151310021205105422405525412313052003545043034123332302', '327490019360437760098446140776026159705902', 6); + T('1df4260b790d60490a8gfab1c4cbbgg12', '4303564154827738667782109938928048999136', 17); + T('145066c034296c1', '14572212708973081', 14); + T('2cm4jma6gk9', '727710161344441', 28); + T('270423591a8477593a978265860659850482952a2629a', '17490584572350116403287038674890859126167019559', 11); + T('8brgm', '7742334', 31); + T('136q2', '1301126', 33); + T('be2b9', '1873029', 20); + T('4o23p0d6an', '37303140766586', 27); + T('srf62prb7tl7qk7t73dte986otnittnlkca', '43189112923977571782711948149497678772791160765862282', 32); + T('110110010111101111010001001101010001011101101010001001001101111111011', '501483179338306460667', 2); + T('7agbe97851ffc36f1a99489162b52eafb5', '307786361732642783601055064914331084965166', 17); + T('9401c316a2c5708b', '476467776395576743', 13); + T('48217637502968090', '48217637502968090', 10); + T('3fon0jpk1jo5p9pgr6f4c4pp7so6nhd95pb', '588290809092568702675103575771741647312948810878261', 30); + T('702dk92kdad23k6ljd9i910', '2391852600323744303903407333754', 22); + T('25dfea9dgg42c49che64f7bc8771idih', '10077817429629058832781708059900951083873', 19); + T('5dc14757bb61aec90e3143c2b14ee', '5045511542117661075208474024001999', 15); + T('bo6k19juf873a9ibk5t09fgolpol9q', '209254750018939653487646684289205340364736495', 31); + T('7', '7', 19); + T('eifh4b0dfheg19fbad12jb', '87013738359168431501653737926', 21); + T('mgjdhbaaih094b46ojn80l', '5154851507795871179377927708146', 25); + T('2go8sf6in0img386olmhfbmblrop1e08c', '161607556749841399584405686305215260945437777544', 29); + T('6', '6', 29); + T('7mpkn8g3o0j9pik6fa3ib23n9ia9', '1261958045881925421127437894220522481101', 26); + T('212231022023030131223130221120310223333', '182782071163972676176639', 4); + T('2613203210505455264415513332655241663040344635106556455', '12467081099669883703235113908035091968240448895', 7); + T('1630720467054635751474753253627460422', '583694432446675939525765785084178', 8); + T('94hejakd137n48k', '342285102160921065220', 25); + T('167od46an4pkpsi3hl9erab6fcb7s0ebnb', '2208752247116288312429398287096265138047341117708', 29); + T('1a6kf5n4jb8fdfihm56km4183mmic', '632147076529030884714528591446221784892', 24); + T('1160605164826248954349876602042464161647577454', '1160605164826248954349876602042464161647577454', 10); + T('hc0f09', '33387237', 18); + T('3964660993859239689981872620682101954389246037065', '3964660993859239689981872620682101954389246037065', 10); + T('3fd278b8d795a', '1122771216988506', 16); + T('0', '0', 22); + T('12a572492dadb4c41419e14e5e1d3e93689a410b8c90', '440134561263388299663890810636098917176789570414835', 15); + T('3cat5h5ksknnnq30b2scq', '2283068063004048177101847374756', 31); + T('aa58b190195b8a2b242c856', '34697005906923003886801890', 13); + T('22v0inp', '2247117561', 32); + T('9c2a9e3dc0a71', '1273077348403606', 15); + T('if5', '22580', 35); + T('l9yagt4k1l7sppxkiv0bf', '161971068528812396345997940762650', 35); + T('41opx0v48cr1gj9uvnlpufako9abd80q5w', '1400711475411842935054148452748722383058297214051090', 34); + T('66odf78si3pdk3i63forppb1lgll2b86dgr48', '276206081640004784888361976308196895753527959765633826', 29); + T('6ac7e0cd1808d2e6154b93134ecae5e', '1289018068112858182387369331118635114', 15); + T('310111212000103', '878075923', 4); + T('14555f77ja2h486d', '39752861388169155333', 20); + T('140102440103002143132302400040001223232103134111223143040111130223220401231404', '1197061222107197331414639288099046337494969650509398979', 5); + T('222012020000022211112012200101011012112200120121', '77383589757349523721532', 3); + T('gm3hjn22oors', '204516082482475075', 29); + T('11001000121202110101001012000222012001212201210210110000211222200112001222121212111021000', '1305279370208619893883805792602512582417319', 3); + T('51b6c7a9820878798897', '7521848979002189462794', 13); + T('2584a257', '88684771', 12); + T('9622831859834a72a75a2', '6434216029758043315681', 11); + T('10121110102012010', '51794130', 3); + T('95607761058a3876984a1474768133331', '20067921113189362115162324154987500', 11); + T('1308584667613a4a2a51451862', '138590144081857578198409796', 11); + T('303124303051000610137231406655066133635770174121', '8500626221290107216014710817942733884291153', 8); + T('3b1j1ea29icf93e1h52ac21db04b9g', '190851477248266851912684038197347236596', 20); + T('b7b3c9a57487c1c39c51a44c4884847', '30405998793962949996970230863617614', 13); + T('23956aa67a1c0902a7142c5a42a289a', '5990721395892835344544973452522160', 13); + T('n2dro68c276c1ao36m29', '500136698154468954862520957409', 31); + T('mgh9n462o2da6iikmh3b2b2gme8mgoci', '491530325873995573329061908191309647059640318', 25); + T('4l38xf6', '8460907706', 35); + T('d5f1ab1c85421854', '201983925762344371011', 19); + T('6272990055345011144532205391668424858014', '6272990055345011144532205391668424858014', 10); + T('127il6blnag6mhokrg42585i6feb9pj6h53lq0', '379103572560507898585828059072007254689097272767096168', 28); + T('3b62hnjnf2ag543c5eokdgllejg8kkf59hicc', '730518050516683388784082123629631983409244437386562', 25); + T('8nnheh9l0906mgjb00cjgggg4inh2k3b9d', '31709631306533183931103075528584558673938676645', 24); + T('132', '132', 10); + T('3h3e4c00eiih1i5eebifh2h4k4b43', '40175422326439172482436371700536055298', 21); + T('2121434132', '4483667', 5); + T('3gse47h8l2j25172', '30940800974512039283108', 29); + T('341000443044511215010354204103', '136127973237647033674695', 6); + T('778da0c24f47774967183e20f8b1827299f', '650909720313013143267150228395755917748639', 16); + T('qb564jneaor2otdhc68gqs123cfuk92s3', '13948377585746116315226679137884300625553492956545', 31); + T('25ld', '48425', 28); + T('gkec3qp6mrsi5jhjmef7no', '174506635997402423118687087352014', 30); + T('3j', '109', 30); + T('11211102100101100011220020122000121211112020210220222100102212220202011112102000210012111', '1561458763443428746693446798877497187904716', 3); + T('145454052052432542224044220140403512204050112451433414045020354033532', '150096937333395628734778900213563908439843747504734720', 6); + T('10101110110111001100101001110000100100101001011100101010111010101110010000000100001110', '52848936898297944277057806', 2); + T('5736c9b7f9a', '32971047415618', 19); + T('1674507585', '1674507585', 10); + T('24hb0b4gbjf7cgj8', '73527411112945222788', 20); + T('1al5bea9j3kd3i3fb871eljb13kkk043gc', '1275824033146566143960476806758461477943738798', 23); + T('8b2', '10766', 36); + T('ba6bbb26802b2a8a95420b97781a2058791572601506226', '521464466313915762537835346317353826045525484287422', 12); + T('110100101110001101101000000010100010010010000010110011110111100110111001010010111000101100100101111001111000011011100100011110101100111110001101011011111100', '75247462135135296147483304900271494532907456252', 2); + T('1113562110102132653505161654522056473771101354321312031', '6710609582342689120085581704302230873683253367833', 8); + T('23400502', '44933836', 11); + T('228vicgd', '71168504333', 32); + T('3003414434123423022213024230441220102414322224430411', '1346050865149295997081509487231483231', 5); + T('m30phl4khx84xsj34wcdqne5itfnjjtk4ep', '259691039455794091563131654919327983964194791661478421', 34); + T('22461a6cifde', '432283541270274', 20); + T('1464600512311275', '56401597141693', 8); + T('2121122202120101111210020220210', '538808295256851', 3); + T('3330012300031114401330014013441', '3464973034967461079246', 5); + T('550', '660', 11); + T('33020323332302311', '16256068789', 4); + T('1dlol893q3853m48g92636r414dg7', '49459728783752884863701490260561300521367', 28); + T('6bmb2mip8fhq6bghjd78', '10108171592176668723712485818', 27); + T('959m42ii3jc', '878888942861737', 25); + T('1063bg6bn14mfk3e3o1', '29746944359805875726720509', 26); + T('35261605356', '3938913006', 8); + T('4bf373d19052eb5b393b58', '1068860929333821354151303382', 18); + T('752a4gp58hf3pog9mngpebo2', '13831046927668991950153094727269842', 28); + T('4211', '556', 5); + T('433500525', '7737317', 6); + T('4gb9ad76g2d4af481022d256929dg4dc87675', '985133603874828141261886573157932023568227394', 17); + T('1dpn0de8fbj6l2ckd567ge8maj45p2jmfo', '76060515087749557754895067969401915547233012014', 26); + T('6500d', '413709', 16); + T('1000100111100011101111100111010111110011101110011001100111111000011001010010101011', '2604661372805165686559915', 2); + T('759oe0fl', '156973518471', 30); + T('4h2op13e963hnhn1l', '369608946272770491801516', 27); + T('et76apcban3', '54151698158762655', 36); + T('85a47b903a7', '50835737401094', 19); + T('70b49g9382g', '25117276340860', 18); + T('6816593j79822edi3h7jjbaj5i7', '152330705063267926722130069067111965', 21); + T('8h50j6cji851dcf3c90h6b', '51537232193150669639514304916', 21); + T('b1uvn6m8cvfd6of', '67867262563984521850383', 36); + T('122221233120313213321122322320210031031', '125861429895573339784013', 4); + T('2595gh6a7628705i332884f51c9ec', '300353510882507195422219641808364360941', 23); + T('200212120111110221202222101', '5330324508112', 3); + T('15iji6dk13d61ah4a91m4eecej67l2lac', '47125646686754897581267667193187325517140225', 23); + T('12ho', '26588', 29); + T('4j', '115', 24); + T('110000000011011011111101100001100000010100011110111001010101010000111000010000101110010100000111000000010110111011111001011011110111111100111101111010000', '8573066822280330509997029656969204484303387600', 2); + T('3e58agf9190dc826cb8gige5hc', '1246066562583123755485476924274352', 20); + T('3706961c2b', '5952582721395', 23); + T('106502144', '6555497', 7); + T('3451a499a56354705154686763a3a37138', '79114710272261003126294782198609671', 11); + T('9p169c8ehho986chmfpe0', '420843323139258346157240672220', 27); + T('14eg266a', '776416222', 18); + T('116502640400620343322', '102138755603486562', 7); + T('28355677004068874128443313', '2106070737272795731626021', 9); + T('nqel8nnfk2e99k3id1m1kf299h5k', '10634808758829298719295188434620358556776', 27); + T('i', '18', 27); + T('501514303011045351151043045025413430140043211223124', '4083661748572002344042581553196268202332', 6); + T('51jc67gtmj92p0rqg51w', '1096729190801416843188189049067', 35); + T('5a1bf29425c38c8f22a81fc3f105169ce4907acbb7', '131694699796400245476746024523885969905255483886519', 16); + T('c2a33e', '22944128', 18); + T('7f5a8b16ad9c9b6gbfg608186agf38b91', '115776634518774027784211063476397070420703', 18); + T('1e946da5ed27825dff2', '9025563349429600509938', 16); + T('8856957692761177368973855070651649a103aa', '360994117177708368729629428077578463699360', 11); + T('2010211102200001110000', '22404845025', 3); + T('5379a6cc3748', '9456611769938', 13); + T('3a4b04cb4b528e10c566a180c9477c5e10d277318008', '1376197964280137220342614148681543675554523110918258', 15); + T('8vs5renyzluyc8rl34fib3ui5wppiggae80', '729183516825929850436740277863751712823686402504398464', 36); + T('5827701587706499416955', '5827701587706499416955', 10); + T('42591fk220i9', '2396927578798245', 22); + T('oajpedj1e17q5dkge', '1946120213098978975238603', 27); + T('1111000010000101010011110111001010001110101010010110011011010110110001101100011001101001101', '2326173895977887311754310477', 2); + T('7cj1ah4n4mdde4f', '483161982916646045703', 26); + T('10hcg8f0c722giai9cb70fci7f6ag', '669672956840092248394431297216875488', 19); + T('20212212102', '135497', 3); + T('52d16bjjk5b2gkghibk4', '164105040092908202550049352', 22); + T('5a5c32b3b39ca1c272c0aca32025182b0', '2570064118523150975450771620831844886', 13); + T('23d288aea4', '153856028324', 16); + T('116050533116030', '859603851575', 7); + T('66ci8if75644500i0f23chdag341fb59j49', '1087881863946554468036969878132901480676079689', 20); + T('6384llfdke9fh5419hlg93b', '34862705286427416058205496740086', 25); + T('d0frhs4ruangmm5jhp', '293524371757655532307398620', 31); + T('1ba588dd51c1235d25d2bb97ddc97300050bb38da27', '2522944524206913556204355519010579773376112207235', 14); + T('ae5ffic9a021fa', '452195817972105538', 19); + T('26444016101', '833900621', 7); + T('33233113022222331113010', '69225388168644', 4); + T('4bdc3b2b93e8cb0967b92', '5731840537208636428417938', 16); + T('102jd5j8ejebfd265k0mg833g8gbhb', '3107718466423767292009122732909038798627', 23); + T('74difk793cb96h7c3d6fl7kjc', '3457816970788290910213733483049600', 23); + T('30221001210002312311001220210', '227720131173947940', 4); + T('b6ba0a739c89b435660e8134449e3060de60', '1667517158964041521729990635459641284368990', 15); + T('df86plbcntpfs51eje4nwg4ihv', '1235835514259777075839888411102059589165', 33); + T('506132050005635323464330614633642404063404361136411512640', '1084754468050903323226297755149960657030618207525', 7); + T('12202000222102211212200220', '1621734114201', 3); + T('51j2c9b1085a5b98679e65i0gg1', '406702206426087714623273688096310561', 22); + T('22g1e05fd98e04', '21526429538375015', 17); + T('152305713596150626771408a7766a35065348310122012', '1181335871352138289886257270048037267074936415136', 11); + T('10717758873411', '2768061987676', 9); + T('85b83816a07b493083721288', '56296106638600534110367304', 12); + T('5j2bbmeba3gfeja', '121922415384534240082', 24); + T('8', '8', 31); + T('10277607558022478675857166831738961', '10277607558022478675857166831738961', 10); + T('101010110000111000011000100111111000000100110110', '188077030998326', 2); + T('5kpm5tc', '7270492758', 33); + T('2506a714784', '63800374554', 11); + T('34043042242013301344041302332230031124003430303014131313322004244', '2080090103990504899666426994140445994059953699', 5); + T('2263011b5698730859524510806838b7aa365bb83863b92', '96993840751786125665886676025172179431233429573854', 12); + T('m6m84kdc', '75938273001', 23); + T('38758513458382788045178062860185381467215842186888002', '166292428083754702524723009147547249346798940043838', 9); + T('4bhnimqepln5fa16g', '630260532539082351528008', 28); + T('1555100535210245322041304141135342035015443', '960612721329969379046956918521267', 6); + T('18b984126ba54378a409197b61b33228772b5b4', '178481932192815614023496736965622010377112', 12); + T('85c3ec713a41b3a91', '55094814325358219386', 15); + T('e45', '12725', 30); + T('460844611766389887ba8ba4a2b211079714', '266086624761556754577648371384666605504', 12); + T('225624015211256062001324334062320', '2657607429475613454644488243', 7); + T('686i87fbad4c59a8a6f7da1abhg', '510102928348460205068613539295917522', 22); + T('120354645453413557275444611571627313424176417756144520333753', '240836899455748097083887093250256470467559683019356139', 8); + T('3dqg99g70qop9ie', '384933516113618232755', 27); + T('h92ioci8loamk', '2602196299100018423', 27); + T('3', '3', 12); + T('1473631257945483', '5949114354201252', 11); + T('8aqne3kd8mhhr0k8b418473ei', '1048637133019307092199604836008301958', 29); + T('20213', '2673', 6); + T('1gi3ib2hi775h58918', '24189219409084535267628', 20); + T('29dc54fe38ig3f5669fbde1ij0', '833503078428796826688762347855580', 20); + T('1325d509c65da973839227b8c5143d6c43d993cbba7b5', '329881289130026584178299136878593170302229089677819', 14); + T('14g49i7j7fe3cc7j2c17jg7bhgje4b3g2fh70i3097', '272802468690487870109445646857507298063115670210904187', 20); + T('1c57b1', '1857457', 16); + T('100hd142c72ef166a6h9h445h', '4911395571502197789470629148686', 19); + T('8piopdl60m7c7p3hmlpsb5kho5amsh', '156766692402888022009790158482742306168035518', 31); + T('124b6bb98c1280c5c053155cb58ca9a7b', '523703265361788077644933507150951633', 13); + T('15dgfi8756e5647c3h73be76', '335597289586138002689108049036', 19); + T('123c', '21234', 27); + T('264453362706666107438146787', '17589366337294688071335514', 9); + T('1000001000110100001000111000111110101100101010100100110111000001000011110011010001100001101010001101111111010100001100011110010100101110000100001', '22684678246378182819785716745165465876847649', 2); + T('1fcgaha8g23db586i49ifd5chc063', '1165185085777837851964737766554067371', 19); + T('7pxo', '331929', 35); + T('f68dg44m5kp8gpn', '1666876518883127367662', 27); + T('a09281016407aa888667282461b42b069599a9a', '1027211842920428183779353394595382499256278', 12); + T('on2hn9rpaemeadihgljn6m54agjhb045hdah', '11102396046178622275186103353743351877958935735136185', 28); + T('11k180j1fekgi8sfcf63gfdhnfghq8c6hbkng', '46875230493473105664159872712226948600083973055131500', 29); + T('1a369a2616a711306a6434287723024', '33835620048560993311538138158584', 11); + T('415043345230010025122031405052354214145335205523543225245522', '35100339098704592825154927338841645808437394490', 6); + T('1re38adrm94', '587148820026528', 28); + T('7m2g6oc0lhenclidom2kagg5kfjg4oina5', '106851402006098786130154554561772902036425686505', 25); + T('332728', '332728', 10); + T('1101100111111101001001001100011001000011101001001100000001000111110000101001100010011011011100101100000010001000100110010111111010011111000000001000001001011010101111110101', '5097456801022432585476312678303126165684672742665205', 2); + T('6g98kb47i93am', '147121554856091277', 23); + T('6lml', '218837', 32); + T('3fe26f336209d592efh3d10bb394', '30258541260323091988380754480565626', 18); + T('110100102002202221', '177188389', 3); + T('b6dab6e4caceab483d2085d9d1766a088a19', '15928860703021466826033711809396661962705433', 16); + T('1c671a9cmkljh4739491kg32eh09f8k337', '1326625039330667581969787383813804136095791793', 23); + T('160b6959844a8ab23b27a69001', '1437328315622303205888330433', 12); + T('407280517b355977843723144a93686a45298640701', '8572038042461765480971133069199082943420256241', 12); + T('h975age91371hhbe43chiia2d', '85698406450142962437373788380907', 19); + T('0', '0', 7); + T('20013045354031552445055', '264171391963599131', 6); + T('38a2de70alnb0', '122375305409282760', 24); + T('3c9e2c9d', '1016999069', 16); + T('0', '0', 8); + T('eb6j293', '932312983', 20); + T('10101011211221111220222000', '953771059485', 3); + T('14ly', '48544', 35); + T('4a52p0016af1', '16120814872832879', 26); + T('160daa1h41jj04i628', '17061519740979136786448', 20); + T('32fqepsd95teekq70pbo', '667470048911505020976383369784', 35); + T('410jnn8bjoeomk74fn4ja6d', '124788397270763513083091234145493', 27); + T('3ef3fa7740eb1252gg5fd99', '4552875972769088346240367764', 17); + T('7775561', '4183462', 9); + T('3jou26ds5l3kfobk967jve6hbduuq8b8kkr', '15332447576016846623868933715298495290279226254477197', 33); + T('3akfed5xjcd7ixqmjbjlo', '25129890463803560823611370723159', 35); + T('66cbhh9b922gg5jfg47h6j', '13278090021200453785331902939', 20); + T('27eedlhdg8d', '1836671735070828', 31); + T('1020102102110112', '17762423', 3); + T('3fqsn2n', '3116816190', 31); + T('827a806c27934197c39516c1a260a581b689a5882a', '38503176957765921865456861356760222362428149559', 13); + T('2iok0f136a', '51715272179890', 30); + T('fe41l5eaqnchh1ebi346j0e4980i6oipe', '969883696027169474847827349317450953078655187235', 29); + T('14a2b930036b0644a86880ab148250891604977aa', '20642983383491072302934026303675112606383282', 12); + T('457513c7', '745963612', 15); + T('10027766104635746057', '1356176112501203917', 9); + T('152545504843833807110608416814641251026576331823857', '818321316273512555089438042552450294648569716128', 9); + T('100022102012211220200122111101200201', '51764207569214860', 3); + T('3bdf42r16fkgn6qn3ja1g70bl25knl', '3164854049998441022423696324674875839621785', 28); + T('5d569k4de58i504i2hjfbk52l4eee2gi4h574i41', '126711396842379940031754324715276160248231187472784721', 22); + T('2elrjoj7fttds1kj1eqe05924mkeg17jr', '9563118598851333187355892107063110561421940440136', 33); + T('76320618nf9en4355818i', '29166440299227823085424378642', 24); + T('274hoc18', '13962101283', 25); + T('3', '3', 33); + T('a085993656a6731351278a0261496b9', '2387749458635635883908416654291117', 12); + T('18bp', '57445', 36); + T('44605ba', '13064542', 12); + T('6j47fh3', '445502343', 20); + T('3140021040032442034032142420324101102421103121431111202023134014422311022111', '88957367186178880784956669030745448554566774878220281', 5); + T('6775333741557561774067363222030024220313353605226', '155993258459571709305776966445938258645813910', 8); + T('7b410ha9adh2d4dbbfgb15145ddf7', '1071007184595736715355171202846231105', 18); + T('4bl486be', '27306379039', 25); + T('2d047117ed235996e16cb8', '54422637554743220665150648', 16); + T('2g178gi7h371bdgabc4h9i024jkd00di1j80', '52404222604294956540188715269674775463381424101', 21); + T('327okdlg', '24807760006', 26); + T('148', '445', 19); + T('67886851384', '411369168340', 12); + T('1a7882a8178a98298920a653aa0', '2352073067567029324464577191', 11); + T('6bkkd7o2f4ipbmtt6lfss01l97sblpi', '1315571448647629811709487168066391442124096668', 30); + T('52104143220101400504102332405300', '7115605410380560227795492', 6); + T('p6hhicpff2ch097ai', '3602154508749776816617050', 28); + T('ddefh9mmog050', '3130965055875579020', 28); + T('1eb8d81a8cd02825b628918358307e2c5dbc77de937', '49381329097323571281085427147300803948474329819952', 15); + T('5g6j8of586ebi9en6am60ica64dj76acgl446', '1196611703139037684394056082836814593197976197986981', 25); + T('145301455322303124543303144112202100010', '675682273892366920630205240550', 6); + T('1332', '126', 4); + T('d2hqmv4pkhpis4kwil17sh', '1894404209949516584414030849488509', 34); + T('9c1', '6886', 27); + T('114dda1g9f4377h6', '72084475607353599207', 21); + T('1111000101001100001000111101001001110001110000011100100101000000111001000010100010000110110100010001011010101001000011000110010101000010001111001110110000100110110000111011', '5642505228059227244247414269863757684704851232189499', 2); + T('508fh1aaf1c0e9f4h52c', '9940527316953908325812962', 19); + T('707582405746100557868862537622284066', '17758735160295117568970479831136394', 9); + T('24774bk74l8im54cd3j6n5mge5d2a27m86aj1', '106152337767157132554701435127389724414365801045065', 24); + T('lha7bbb0g693i7f2hb7c28ib61l8l3', '18560795418562899773775421028146824268153', 22); + T('anoq', '457791', 35); + T('ig04h50me1', '33674426643383', 23); + T('4521045140035435334320', '107362640409615336', 6); + T('14ci84egi8905e0i507015e72783hecb042c588', '4878804467161002434134901366333118155781387556615', 19); + T('8qcg4bli', '120689031950', 28); + T('bd827aa941c4', '102957760172659', 15); + T('fch0db7685f8e5a47jjgi30b1g9e80291gf', '2687375605960327268686364570667231480832392735', 20); + T('1cbc96', '2479779', 17); + T('4123860810563631873', '621577956977422779', 9); + T('9cca75000ac59287564b4900', '2277995890851753018758808052', 14); + T('9ggj7xjgjsi3q9qry0m3h6e4qjn', '132479614685652095506805037318263627015913', 35); + T('4vgp', '227401', 36); + T('x3y740258u2xqas0', '7319695651559802393895440', 36); + T('13100833188435435125150061085463661600516', '198924198766645592728442581078146274410', 9); + T('f7bc4b91d86c645df413c359e5751fgb2g', '622025592428355872931685309924438488611961', 17); + T('11100011100111110000110111101111011111110001101101110101000110101100011100', '16795487938751986166556', 2); + T('g1ehkkl5ld', '28947072317388', 23); + T('132003011111302133121322221302000112', '2217164258386481979414', 4); + T('10120021102122', '1894985', 3); + T('1325505836763333045651420073434683647446736780', '11919401481124430210661735944237867636702382', 9); + T('49791378b016636074608922783ab261aab07ab308b63', '1464088016751655045075255651768104776706515226747', 12); + T('3m76k2jbo5719da6487kmap51', '35123523959570521061791470079350967', 26); + T('4fh5a15sv', '12497226572191', 36); + T('336765172584422549579974190155368820349813775', '336765172584422549579974190155368820349813775', 10); + T('c0587a820625', '21565963607297', 13); + T('1k93o', '708849', 25); + T('f5fm9dh2cp4l2oeas9jcdqk', '4764950243508633926985496746426500', 30); + T('d9soeeuqk2ofds3a', '502812647839703693193322', 32); + T('6b825n1gjjhbdn4ih1f2o8h4i4ld', '358210303755108885399620686031173721788', 25); + T('283xtndhybuwkml6di3d897khpv641rc', '3915242572217002753616152125461650495415068480488', 36); + T('6soqo98im8ie11i3ar5', '2696831302220222960747970815', 30); + T('11li3j9pe1bb1ojcmj55ml81ic6fb8b642m5n', '3607150919906347032136744566385373723352731718670814', 27); + T('q4gm28vepfmd', '1320994706837332870', 33); + T('fj1cj5fh2he05j36a', '47781006865064491040978', 22); + T('24febc915dfc243g620d6chc6f17d', '319045853086479420376719648609675175', 18); + T('axjeq4oscj230g0e9nrlxc7ukt0', '153295229065424111605138505063212510938015', 35); + T('1310113002212031201323001312121331212323233311132233111320223', '2416702837718654938336064508044074539', 4); + T('eg5h8tkm0ou', '16331639907615518', 32); + T('612b5fcgfg251857213eej2f01', '2032194356980031603784734383862001', 20); + T('11111001101101111001100110000101001000001111100100001011001100101100100001110100100110010110011010100111100010100111111110101000100110001011011001011000101011101000001011011', '11678786451764002081049400473764762680882990476021851', 2); + T('1a85ffkq5jtqqabjrfr11g9nn', '825825047012895137626767704923066737', 31); + T('e3c7i8hf6o5d1e90b1a4o0p88a9', '232026393767377308312827755103218776666', 27); + T('316c6ec7195e44b347955', '1029840967122771047178230', 15); + T('8legb275511j26', '2541054341067686758', 22); + T('83821342401386120262277735280270866873166', '1246775385198205735853522756093577523023', 9); + T('1333a1570743a16175a20a62266554a517766', '40200921314714807799085888577859275397', 11); + T('47j24pkin8', '23333085707030', 26); + T('26319444a9a30142989750291785a9a8088727505830635', '2061929969794917702400557105886923348678232898726', 11); + T('7q3p1', '4234708', 27); + T('1kej3a62l3d23g6525he408c930hh81631l9ghehi', '965311996501533239723956354548870830282992813453656632', 22); + T('30223103202020302120133313230101102', '935371222603691639890', 4); + T('88i2899dh1igc3fc3ge9ba2828ghg7e700id', '4834199907401772810967464568465313588983170258', 19); + T('hmbf7jk276f7fojedr1p6gl5q976geajbb3', '284317650265820333891656626427162630405435211338279', 28); + T('1676422201112714661607652471073', '2317596989962208644778586683', 8); + T('32200020323332100330223231033', '261248084065041231', 4); + T('9n6pnuwemvcmb6smt0v2b', '41262690485679650990706863602139', 34); + T('dc2b0efhb9722i67g57163a2ee073a0689g533', '2809681747620610587259840399694397347937589951716', 19); + T('8ngc8lewylbsnsatjhndyi7vyjbqkom3', '6370199031623917343971300162836561169065317503923', 35); + T('2mk52j2b8a5587d84dhpn1udvmmhlj', '689449600810762543106689709493580073372350929', 34); + T('5208d0737609053ab026ca28186d02941625c3947dbc11', '19374960955601935508953122309385766256870298527229847', 14); + T('51af', '34861', 19); + T('dda0ed04ef2e2b22a78e6455b862865ce', '4713519390205494839540473117533526320590', 16); + T('2c25mufgyjnptg0prr6a801gnt2u5aso', '1722590891706429392707864779225562562261184133879', 35); + T('2ks2sb6abmm1226bemg', '573090129852773147595705184', 29); + T('1851849181066300127651593990', '1851849181066300127651593990', 10); + T('7c4243ba2c42626d5', '17158768285212739043', 14); + T('3', '3', 27); + T('2kn', '3335', 36); + T('fqlr27m00m19rfp17c', '63771501247128679770543776', 28); + T('irqod2oc1pbe0s4dnhch9q7q3soc8rhd5aj', '998706528151123858219009078845461735670084733546613', 29); + T('4z26tntpn3q2er9pwri1ovygbmsc', '5210334327381751818125703692230802722918428', 36); + T('38rcbbetbf5f36uj084ps51fqbka4p', '355736129774653976136192164359376778173186929', 33); + T('1q3iwgn8occfg446ds', '191677272763836654973524750', 34); + T('1683', '1290', 9); + T('1ed170582a62cb2ac6c31c4c843913ed3568801ce6378', '11148226317787355356748077765017756339753205698186038', 15); + T('9019bj0j23id037a71d2f818a', '151057014706796380851381320864570', 20); + T('2e6nm', '2562806', 32); + T('5d4jin3sdcerj9j25ibg3', '3643909555936028919787218032171', 31); + T('5pc8hlj06m086i24njhggeli04aoa51dlb2e', '744260236987988475505418299871418940910369537440256', 27); + T('20130132323123223323201321021202031222113', '2552360031161222970268311', 4); + T('5da2y6ut99g', '14840050365248481', 35); + T('1083802151385314311018533036227557457058382761215181306', '3733408597840360399737721104598784068927221985247670', 9); + T('1453174752703234014531654704472633215271161761475347123730', '4742538088234854254854687216429269914428692374530008', 8); + T('3514356630112412504223242652361506044035016524224453444224', '5551155566932115229579274888281173021908256673491', 7); + T('9we3kreite6hf59jaxdtohv202y', '138846389291496608664050011275340367383354', 35); + T('b15ai5h94960g978431c984', '150193634897414415974425816748', 19); + T('30341416404222', '297793923408', 7); + T('ea944gi43hf7c8kih76a6gi7gd457', '152552752071312514741382931890385578071', 21); + T('k3cac62899efcgkde', '28856302935223233143555', 21); + T('1o7gg6w1c75ct1rc91g5tt0dnfcz63c6gnl', '137287343769800626880929715047781191933283098618048977', 36); + T('25e', '2091', 31); + T('g3592kdhll95dnbfg0ob', '5867544395796906365592047486', 25); + T('36ljlm6k7hlbhj24g34iljjbkca6kj', '34917605806636558754409253491187290532723', 24); + T('2013331213110201030220232320001301111010031211331331132312003112313330', '740251484693542342168090012177869705145852', 4); + T('71l3xyfox', '15866279172623', 35); + T('3g', '112', 32); + T('3f9f8a0d243e0fb51b2cb5ac85181c892287d599e5c0', '317847259344191067119088327577099421993210660703648585', 17); + T('a', '10', 16); + T('g7bhf3k0tkqjj56iisl', '6294112241758545358107863061', 30); + T('uudfufj6tp2', '34847370150901538', 32); + T('77fk260mc7demfo25il8c2n81717a682c9', '99005083348240474978989079910691552284523954684', 25); + T('393b', '6527', 12); + T('17', '16', 9); + T('7172b7g1d6cb1503520590483f1g', '11813382188355814044195049379459867', 17); + T('2prc6kn3266c6n7g28el5a', '7192303509446282093103429808486', 28); + T('95ogfxje7ls', '25276108149452713', 35); + T('4bfu5onl45ilrx9alz34jimt75t1', '4523010860648796756968176777170199400173093', 36); + T('7j5j65f6e8b0h97i30b0096h0e1agaj', '8552261610768542589195104260783405046619', 20); + T('79533920b86a94445760532769035154b330018205', '1373349827844291882840401376619651400305985573', 12); + T('1a245455c83151a3184a64938389322a55a6', '1734548256184785741768296183872320983247', 13); + T('984e5039808eb14e793dd95', '2946024784801310608062668181', 16); + T('53154012227153364107323333356132334', '27388210321734783241567604356316', 8); + T('o0qu28952r6jprsxdo6cput', '118349942107141459621585048529740925', 34); + T('3462ede96a29390b3', '21637787906719251168', 15); + T('18b', '395', 16); + T('673308785538823746262395', '673308785538823746262395', 10); + T('35225503612770774201320011176174535217542332620333552', '334458377978261177426569028332297268603291547498', 8); + T('376695373779076933422509ab99ab365a9246a8b08b2', '1105994899549067482501897563124358078250931847174', 12); + T('3869261a7405a666a4433a416748710960', '87879253530807463519018010147091126', 11); + T('7d9539285610896be3di4aajcc', '2574680758226813621572702606487852', 20); + T('eom9', '630429', 35); + T('ctnpgfics204j7lifau74', '30261420041988892749003398105371', 33); + T('1e30c76d4c3babeded1eb9d54', '149496328017603561036003908948', 16); + T('2g49l8ejj322oko8o1237li', '15046627139453716262719493020543', 25); + T('lac1ai4002i9m', '3210059280216614719', 27); + T('1002102222011110100112211002202021202110211010220021211102012002001010121212021102102001', '352510346325299817822890694447040983131473', 3); + T('1tf6fn7i5di6ge5u', '175030739395576483074272', 34); + T('282wcq3vpdit7gl8er4ww81jp4lagquja', '22759143758885240102880787824974474168226886339160', 34); + T('1e', '47', 33); + T('168009a43e598232cdg9cdg1a063587c35ac', '16061623027950486410325718902752796011029361', 17); + T('1a007541183e0822315a57de1158e0', '21307529572089996579521941688891385', 15); + T('3djeag7eibcdc6d87', '2424384796123691573367', 20); + T('230301023011114232204234331140040120224432024241342400200433404001440223', '111145690113580800793934548266340600396757527374438', 5); + T('10520860a57581009a8126046695028a524810847a01481461', '1112948582926775947692302960456787691406066035576488', 11); + T('82de71e9ebi78529h6', '2357479348054666852291038', 24); + T('318669479760997a65444728', '2831351356374386128515581', 11); + T('3270247822563079013554888236298a158711461511477', '2597684729342955847047035976952888032696181844728', 11); + T('551232202', '33100972', 7); + T('hlsoqgnnhlol86302lmbpc1o1v7cn39f', '2094068282660026545502003357264798290330943200753', 33); + T('17ag7ck44ei4cc0', '4404516346410619761', 21); + T('944dpkcbk68i6agk0d', '10386492460212205943074365', 26); + T('2sfgvqs01wmc0hpi3honfnq078b5', '635009624927118482002742877780185972981715', 34); + T('414365504624046053220263710402064311', '170169261032326095162398418168009', 8); + T('13hgdibii4e17k553j9gkhce0if5bc5ceai94hi4', '4361265005863822570682081694079725185789054191122793', 21); + T('lgg1jccj55ls9rm2ajrrq5cs', '430943296004749884742945946753353589', 31); + T('11101001011010111111100100000111101100010100011100001111011010010011111011011101000101001010111001100010001100000110000011000011010001111110010001101100000100010000111', '170573148533121700284914386034471572584747624695943', 2); + T('13413125266103565462344013350460103615501162', '3307282268566056426163788875674325818', 7); + T('3j', '106', 29); + T('b349008315969b8ccc7052a43c57b5b29142939c7704a801', '255164047256623112253163706181586265330065889629470557', 13); + T('94dc8b4cab1b6b3dec5gd6beceega62', '76058492450972753054531985019222386368', 17); + T('1ab27cfd2a77eh0b50ab24g2f', '7628045918745194687434147924866', 19); + T('34rkmn6on56piqq4345crmroc4m08', '105344564607152675293550922255989496280680', 28); + T('6420543526040821082041501606040060756238112101624', '41166399030228549347833032744913546219462846120', 9); + T('759075c552136629a36146a', '23890078166204400503313568', 13); + T('7ak705g0lje0d29h6l1hdfgijba35fba79d17h', '350347689943364175900597066972947125277514426393207', 22); + T('4d1fb3fde8905', '1356776945387781', 16); + T('c6e46gkiem1eiahck493g9k4c', '43565766401935427989245632115778237', 25); + T('63721g686be16e1e526', '87206911321780393529297', 17); + T('25045cc77b4debh4h916h8', '1616816419392758474839845354', 19); + T('5eaok0n30e0e1m6gd29e4a9f0m56j', '7740457295545283166939800698000390972044', 25); + T('1c6ad164b71af7cf0a92d7c2cf97ac3539cf4a190a6', '664509895940083432745213666480332815238360970924198', 16); + T('9605629834738021029786a867a158511013a52a8405a72462', '10191274996495287729155135548072159517142616697156216', 11); + T('3352cmj', '1500429243', 28); + T('10001100111100111110001010', '36949898', 2); + T('h3hh0g2c85bh7396gg', '94303598818479768768188', 19); + T('20141443402241032211400201334013114442204204132042', '36862688956020216748269194930536522', 5); + T('6mkq', '261962', 34); + T('457ggif1m1bl2ee98303l59b', '88366118125435849323789834859634', 23); + T('5147bf2lga7f7069', '2549101427903154350745', 24); + T('1c32affbg6cj1e15ce', '21073984633002181450254', 20); + T('p8cra2eidd65ph9fo8n397k', '7933449586075462280012611659119330', 30); + T('4c129h0fhb58211aic7ai6e6a927dabd5236fc', '954786819466789784055108938545862635435383874674', 19); + T('82033830', '82033830', 10); + T('1010010100010010011110001110011111100001', '708979517409', 2); + T('42478377375073344992', '42478377375073344992', 10); + T('24292893d565157b8dc04379c076919d0a67d0080dda1', '618333628399653605854827547452825613797180483032025', 14); + T('12021032452513221510441200345501434243555230315414240', '39091544699662086629498022647413959018000', 6); + T('lahi07', '254389623', 26); + T('dmrf4tjrc668037', '6583228333332288876097', 30); + T('18d32b6bdd20482a56', '49972933524301416292', 14); + T('31b2hd51f35d1d8966fbad2d17fe07112eg', '14764753272450920274778007595847767027142732', 18); + T('474370686', '1001518425', 11); + T('4cbb8nr0ga4e20m32ak0jn1rhl2ef69', '329672291129572906563643430219747967931125305', 29); + T('tads6deu8nl7wsluarmb', '2083847353511862075875525723903', 33); + T('3i9360ehd0f2941h', '60311321989193348951', 19); + T('11101000001111110011000101110101110011011011110110011110000000111111111011110011101111110001110101100100101111111100010101010011110011001110001010010011011001000001000101000101001', '695150897721330668961198822938644201466146242961639977', 2); + T('1012111122021000000112111200100010100200012011210021220100002201002022121210010010200002112211012212122010', '150771843971952583323861645995496523521380113647165', 3); + T('7jb1ijfii2cf4j3b3ef3', '41826352819841414347389903', 20); + T('5t1n3', '4834593', 30); + T('12', '33', 31); + T('27ejhdlpeek1acpp57jif5kh56ikpliedhi', '2945305406573061366174441740050992970724142349520', 26); + T('17bb10407140593873565730389587876a2438811b26', '42315982694007165665825252379784192339494272526', 12); + T('n0gq7e71hoa7jibe3kcjljid537', '973294813025943583919577094627375341675', 28); + T('57f1a732hje05bd5g8ef', '28247010766435335146531495', 20); + T('2fkb331cc1f4enclm0hbn', '10695289997958612784724248415', 24); + T('940jymc', '16755335182', 35); + T('23b5a42785b', '144253937159', 12); + T('332332', '4030', 4); + T('133336431314111040125445650165', '4830459607356940965265100', 7); + T('6ec41', '882361', 19); + T('22', '22', 10); + T('0', '0', 26); + T('373pbof59iq41ja80np3h1hb66c0a', '39086275552205397897730850178810132407635', 27); + T('1cee21f1ce8gf26g6e0b8105cg5he4415db2hff2', '15459905127505680786167890226971872272009384340116', 18); + T('87dgdwg1renuvkoeavwbim8lpxgv4vb', '401000049256626858774368667583141736311922306663', 36); + T('3isj14grpphjnc1nfpi', '1407040022579438811290045268', 30); + T('lotrwre8ar', '1711090616092927', 35); + T('1gsqeka2jl1b976qi8ehc6', '16374903938406169822980318273666', 30); + T('4dnqe3', '148629955', 32); + T('d3dkdfd7nj9qigq12i6cffd34q', '7986534045217039049966056077355386629', 27); + T('30015015540350210153424450312551312411', '186187559266853112245008019767', 6); + T('jul8cg1ela0e4edfg0', '3527382384060143413865828810', 35); + T('110122101100221202120201211212122200220201020120122120222111202001122120010221202110210011210122020', '80448857968083617554152347697248793494050049616', 3); + T('9vemie00f9u3rnk4o4mrf1v254vu9ns3b5', '466890651064760271528412966235388536094543461616997', 32); + T('111121313111310122021311332010123110123202033302202330211020113121332102232231313031', '125128719044623689856157423015050011081778094857677', 4); + T('240451003255052453254351310432552514340023252', '46587982443617743794995947075156496', 6); + T('k5o510ef', '272684166231', 28); + T('bf10gnal8c8l50fgbk', '46108402152178609412805768', 28); + T('42324441444331403351355513', '125935341458202497061', 6); + T('75gdpii', '4277974110', 29); + T('10153514333', '63726609', 6); + T('1h1g', '29110', 26); + T('393b41a3143a454943', '8380580329886369091', 12); + T('59304176726473587130612', '59304176726473587130612', 10); + T('137d5j42h356jed8caa21jahh9ie44b28c', '10043027274116397234553163118775038349528972', 20); + T('49u64', '5733968', 34); + T('165a8273521956a4', '6662096633605824', 11); + T('65ggfd2h200', '6949479788349440', 32); + T('9', '9', 28); + T('1j', '42', 23); + T('an11', '290731', 30); + T('32504342124451030441114503214444040214143430154453032220413050500002', '47554002877149413362434118805244987488297716371458402', 6); + T('430200', '14425', 5); + T('3094a85981a027626759a77870223658270a055', '11513511128194690284501911822638050206045', 11); + T('8jj7ad301acg769fjghhbc9ccdi2aa53c7f', '1545920497099530665176555768420891600032828955', 20); + T('23142012635205', '238490986074', 7); + T('3p23slu2or2lkqci8', '4573755691405244852154952', 32); + T('560c11b6845a072c0c22ba28144472650a753ab9', '151894844910815511057842865133583436415605129', 13); + T('5688884955', '5688884955', 10); + T('9v1bex484u9g', '954561932219597956', 35); + T('13699363090125374585452111316030', '13699363090125374585452111316030', 10); + T('10300233111311300112121130110032132331231030013122231000013222', '6329196093597682159006452132074488298', 4); + T('g3', '275', 17); + T('a9362a295020575', '4119405967597805', 11); + T('4cke3ggbhkg3kkcd8c2j3e23j3h3c', '177610512943070772233329421133901768714', 22); + T('aejfebhda5647d8hicfgg92fd62c3jbhhlk6d', '22681378063543267593175360612666532727335364021641', 22); + T('26bk', '24462', 22); + T('40el80h7h5998lghk0gckh9a45i20gkia1817hd', '22426986371581060650291320125302165512055992788579187', 23); + T('0', '0', 34); + T('3cvdf0ffw8arpgd', '9324689059447121647753', 34); + T('7456545364015236001000', '70016530198021276160', 8); + T('9jllkk12hej0', '35833846973541838', 26); + T('2ksbm90w2g', '122159535406606', 33); + T('5233', '3837', 9); + T('25cc173935aa89717957cc690287c8ac5897114004974', '25388874872205695306782055570702284695041270251885', 13); + T('1221222002102000210101012122211220200222100110200212021020100112111120', '1636824719836500158668182780963606', 3); + T('1111232131122000111300020210302202321011223131010022232111131311120203011211', '1911752105791956460258073810226603098202321253', 4); + T('8988550feh2fb19l0i6l04gjj7', '30634356015861131671092023444404629', 22); + T('oeancnlo9ijbac77dglo1ask6ofnl4k', '1824014149455616255108864549225566262750135574', 29); + T('11002012221102210200101112000211221121210000000111220212101', '6409268570990190943079463412', 3); + T('36qdh85pljsmb8g98m0s', '37533975292710168814998325828', 30); + T('170gj', '999499', 30); + T('3932581210798432862405499987164457', '3932581210798432862405499987164457', 10); + T('3ch7258m07q7rl16r0bg0', '7927276440553837446719503793985', 33); + T('20257774520426157193756088561635', '20257774520426157193756088561635', 10); + T('951ge58337f90b1fe68h7bd2d95', '4025392988076931185675982866053147', 18); + T('1l6k7cm15ufsup', '189871394492066962875', 35); + T('321b959d5b325b728b0326e73eaaa41', '602332697103765494715420483143314186', 15); + T('10568796b24113372942513671b638ab2210a1b7b107011', '45581696081476450286298571130938321064311891651405', 12); + T('3b98k8120ccc74n6ef9bd1beac3hcfa', '885608666388200390191758079174867768107634', 24); + T('43433b2bb4b422', '1289017868139471', 13); + T('360l0j8h2j1j45bf0k9adajhec647', '126767233401225735441881274095914648023', 22); + T('b80kmr23044g0fh5l5faksiprorems', '28955063766509964293677139808717178701084446', 29); + T('1da98c5a3d4h821a9k1af', '1137471209110481204473484095', 22); + T('618450432807535130378045834820211332', '15559949571019773458768163619429673', 9); + T('5tko940pe0jrm6', '218650082993546849990', 32); + T('a8eq7cifdb9mhiigh5b', '599921281419889941644672261', 27); + T('qxk39a7dx68egvn5s0h01w8', '251307205109451556038643316790309853', 35); + T('118hndcbh9313e', '926322242353869974', 24); + T('24440334411431203422412133041402214043204340402320114020044014', '12980997135625297861036354210265432195471759', 5); + T('2gtre5qjheeuh5uodo4hik5005w0v37', '9025673405212440662562000938329712048049568180', 33); + T('ghj9h0d', '4079838763', 25); + T('3083300286348713118154344655632051', '95902949580067304421978859746787', 9); + T('2204342431201401113411321022041242024', '35481463480601705590180889', 5); + T('542093a55a0269031073108234aa3', '8815351536757882311286614273051', 12); + T('7745a7c782', '5832395843129', 21); + T('7a934244281251a48524aa43', '7150917669356406106144382', 11); + T('2xnwqdgwrh5uecw5q8y4dbasw0', '2372398626016802230522523263083931807680', 36); + T('45oggh72', '267833757697', 35); + T('9d937f7', '331639225', 18); + T('2', '2', 10); + T('61k1g5ekbid4461', '127823767005507989905', 24); + T('1e4a5ec1282e03ecb924350g96a9', '58781744149373563800579530600867870', 19); + T('1b8e5095', '688404805', 17); + T('0', '0', 10); + T('5m5i8ff349l8bf5al1k686cgmb7mdejhjijmnm2', '166279352831336816425981143513635237161255195203340754', 24); + T('1804736634422744877', '284505311624250607', 9); + T('mtca98yofgyh4l8guo3u7me8qyt', '319476383658716451190075727542821418162944', 35); + T('214', '670', 18); + T('0', '0', 8); + T('8e0n4lpe4qgji4aem9pk657a14ff0a4', '74359597134400809115329522029847080723202805', 27); + T('6b', '191', 30); + T('23e9f2fa8h8k', '1265749744976616', 22); + T('2khe6hm38gkfb935jagneag3n', '3819659602086817228674066252275807', 24); + T('l7fcfbh1mmg58f8lfach85k', '121103810194801760541361186598895', 25); + T('585d36c89594115ab2da6003336c', '49406265527885526964870839515652', 14); + T('i7hc8e6g51bh499k3d20cg6', '2254290174662249778124399696926', 21); + T('29d730cd9c087e9', '188433258449504233', 16); + T('4bbffc982422401d23e107db16617c0c0', '1611023225678920504550274579287300882624', 16); + T('399eiccfdg776g8ie7ed51199aicj3c1i26', '3114217897390306876666438603763020155894866697', 21); + T('a0408a39c0347', '233539456688506', 13); + T('1244321202100034242200131421310423344110212023', '45404554130117615171994334460263', 5); + T('100011011001101111', '145007', 2); + T('m0id8e0lii79i0hamjm6j3lo0njgb8k3p1cfd', '19142712657104634174482218734811759840268764171688795', 26); + T('2fi15dh0gj44', '4042101164149540', 24); + T('15frc89bucts2fbt3tggm', '1485349439418814854186055680534', 32); + T('c5fc', '169140', 24); + T('816746485234485786017137575711607104112550441248', '5793937697453244801258576864771947865560248340', 9); + T('131002122121310201002130312', '8173384848647990', 4); + T('92', '92', 10); + T('4c66j3i793d79fcl6eem85ggibmin6ff03ii0i', '5273269349565326953768769699813092661952318735852690', 24); + T('2100112202101220211022012101010100', '13083662499139368', 3); + T('8i6rwohm7plthofwaflkou7075t6w', '64957478046184050549268164669753853232592056', 34); + T('3ge52j30h118a90aq1li8bqhgde42l', '9162992827240438154336690317061119953413480', 29); + T('3pgekc3n1f5q4n7d58f', '229611421142039521550129532', 27); + T('cqq5mc0alqf89', '14801280699144682761', 32); + T('2i8jqk9ecjl3j7pokbi', '553717099454231407510522435', 29); + T('d', '13', 28); + T('3iflgoq8fkd', '1084961028184109', 28); + T('318836651153123015848312384230506810010032857747444671', '1210321032121068276111676497142116640496938793305774', 9); + T('110410143222242232313', '117657104649083', 5); + T('2f1qe2qpoc09khcfaq9dfk54', '4888325003381937548488277795720464', 28); + T('ugfkv6ssxm8bprvcbcmeld', '8115207037438171760870129030349898', 35); + T('3p7hk8j1n1h0n69em6p863dimcr', '164991699304116139976836789916894063947', 28); + T('b4194d586dad9d52398', '4821265933637921163698', 14); + T('2320m01gm0j0ebo6cjq4nl82iclc2', '25308651911329509101643504949204196120222', 27); + T('32d470005nmgog06cg', '3510779211405082452397344', 26); + T('1biia047d46e', '190055020053562', 19); + T('453554hf345l715n01', '1225398359686044688634305', 24); + T('6mocq54g41kgnpb67r12lf70jb8076578e9pe', '85364451999663221329010408002474800688521919163853530', 28); + T('26fcl84k3d2e8flkg9fbbb13db51gefj1il', '10116499145802283445045451241317675314169646973', 22); + T('dmld1d719ge074f45', '16572445824579028888206469', 32); + T('6dn3kga760j5d3mcng390jg1j977', '1045864553213695887738689074624417178057', 26); + T('7c822a', '59831482', 24); + T('3', '3', 13); + T('7hsfag1ohnswxi6thw9sxqf0sfl1fhbcq', '76526067136899944638578262007377029250134038384950', 34); + T('34fa796a05fee3b566107aef6fea5327c9f794ce6f2', '1238848647360391370812154035309938766206217768199922', 16); + T('62aff0j6g27cbb62fbi6ehc8ei9707ie7', '2631513170276940677418579291672958038463487', 20); + T('160006380611399874532975360', '160006380611399874532975360', 10); + T('321113214233340303122034034341', '642745280323070611846', 5); + T('0', '0', 11); + T('939fc0e1ed37f3gfg712', '48100541569978054645730822', 20); + T('a0778l44fno863j1kj8845kanonbjic606o', '3392085958211408076013624279917504691844418843924', 25); + T('6h5a', '130636', 27); + T('l9b0it50qmnedap8johl8iloks', '905661954380795627228973456176408355484', 32); + T('bfeb5lec3g0g188i488e', '4228466062971689766442645839', 25); + T('1b', '43', 32); + T('3', '3', 13); + T('7a3p2m', '440231854', 36); + T('617748df2i664962id56755f28id9e', '73665342183530469462696099210511390428', 19); + T('768505531614045785056572382071602027184721164318550231', '2920164631077979800661618205224712844072060341452933', 9); + T('hm7rb8citq72i762a162cbqef', '23520916221723656411579473355413514703', 32); + T('16ik63anb3hed098h0p70g02k6l4oi5mgfb9c', '1093730280055464079356271243419045177402000893676762', 26); + T('1a7o19hhppbr670tea3', '1634167009538284294723516739', 32); + T('c83i7i445c57c239d3lblijk9dggbj8gj9', '10687139874282278734927122410769711076904192751', 23); + T('h6h905643ldje0ell031b6a7g0l', '1384376087764757994009208722127705501', 22); + T('5463p83imndnib6bhgl8e62k5mq725', '1666904828897862368867031608875610218601012', 27); + T('17al0j92go770fd7ccb300', '294982324454146101460571267500', 25); + T('5030794a3a16181221353142', '4499832616666426071863261', 11); + T('13013306320776254', '387810637118636', 8); + T('2aba034153b7624807b6c8cc6658a84941204061a47703', '380713175788771350162354052927260664309723900025732', 13); + T('15enpfxat367y28nww9sx', '8787844721197737785481977672788', 35); + T('2907465cdd296accc8ab4bd', '793605010131443253911401661', 16); + T('btd90hija', '33333612923926', 36); + T('1100001010011011100011011010100011111100110100001111', '3423573638106383', 2); + T('41022452241053505514431155445534332343153435032144521344023203', '1225194524811083036078094796606648972619116520691', 6); + T('e1qmlkug6atzc2szmrgbaj', '6760472143725608443176424992006187', 36); + T('37scnff6r4bke6blfcli', '19989390915717056236744855873', 29); + T('334222400013230015435445313223214033', '6226915450088276574887871237', 6); + T('7vea3c0', '10270438893', 33); + T('1c1d81680a2af9', '16957483031426736', 17); + T('m96mg3', '638353398', 31); + T('ld1n9', '7148145', 24); + T('21', '17', 8); + T('1b1c1bsf7n72urusb', '986592048657092288475155', 31); + T('22002021201021222120211011222121200201102111121010', '644884299955469783555760', 3); + T('38hya9w03adpnml1wt1', '20146753328658169736251561841', 35); + T('678900492958281937296424307391310688109544200506572255', '678900492958281937296424307391310688109544200506572255', 10); + T('1d4353ff5f56571144g1844', '2089805731314765099203371537', 17); + T('ir6039m4ogo6rekmap628lipn6g3i81d9j6', '303029496939924707734813747542699909042016864377194', 28); + T('1015155663263325215616644031243334242363653236243', '38015525426091545614476127416406246189660', 7); + T('7m8bcspos3p9n', '12799934209662533825', 33); + T('t10i9jj6rf8d4igqh2fol97p37ue', '536606270683321487460519767895396158935512', 31); + T('14afo4gl6', '179599291781', 25); + T('71eg1137a13bf3hh8ab3195g31163460d7', '1885141378228919225779975457128661363992129', 18); + T('9pfjef8fl22jchcnot331qs7j', '2782134740188232381925166871891437429', 30); + T('372196b06930740a29ba60a7', '806032988961165618240479843', 14); + T('7c', '152', 20); + T('4mkcw59u2s8c6jncek076', '10990686957535604207639130208131', 33); + T('a8gdb61okldrl0aik758e53g38aq2552hlica', '129065494496127233059548754102332462801434930608863802', 28); + T('a1nnrn99ivdm', '705391832310469964', 34); + T('2042221145454461340562431', '400103241982606737303', 7); + T('11000011010212021211022010', '1131323251782', 3); + T('4n21rlmmp3', '125431688294070', 31); + T('m6i70g5a', '102194648194', 24); + T('3q41d63orgmotlhgfslqc20hb82kfe4rh', '717334587965790065732270364786517943405016532427', 30); + T('1101110000000101010111111111010', '1845669882', 2); + T('47ol1hogcnk5', '52105694239787194', 29); + T('1021322332210220132113300001221111002122210023222212121131012010300', '6288547997581842904727500905920033218864', 4); + T('o23ot4tfpccbofo7nf6gboa5q3a5q', '13790372660580043232353319429756002887354620', 31); + T('1kb6g3ibfffaf1f4a3h8d96e631h', '991195679687488764520434246680302343', 21); + T('2158696h99hhdn1s21kt7jehj', '1264237421480805368218573017622222919', 31); + T('x6o5jx9cv74m8', '112160215850835853303', 35); + T('2', '2', 7); + T('57176028a440a918503', '31415193562039976560', 11); + T('40b80ab60400181118c', '457553993478347736554', 13); + T('223320033212201002110210032011333011012113002031320310112331022000102', '238898959948440949613215671638042952900626', 4); + T('11a8g8kj0fab1d1kilhh9hf', '364282053955268028963745481233', 22); + T('11240455044265520645036360110314304240205125566156', '307183470929453944085729413338106398817956', 7); + T('523ik6ij13kk5880ci6m59ef', '106368852856173920584075434741551', 23); + T('1714', '1309', 9); + T('2dcbed61b0454448ee4g201fa7gef68e59eb358184', '788683087187581292214395140742054830008036513743616', 17); + T('101111100111001010111111110111111000111100111111110001110011', '857702623840828531', 2); + T('5347712744236105712406353', '25750698989482171567339', 8); + T('37g34g40d04974eccbg', '48767935869856137341083', 17); + T('vthbi9q8o55jnbxvv3ti', '11814978679218404459790901458966', 36); + T('8d69r3qf2ottj4c0rl72g05o1mn12uww', '2508962139336692901577954469144032904191497935832', 34); + T('5g9fg3c9dcg1a023b712321470216gf31adee74', '341537217285112703078107777185027563591020784046', 17); + T('ccd721fgmr5e4', '14282288858953258436', 32); + T('a80ae46dhaea67', '438302256218022495', 19); + T('12916146057', '166501275246', 13); + T('6tiy2k8iyrsp6qf7xmqe9', '52080446267291461713344751743099', 35); + T('df3f6l', '70550413', 22); + T('6je482j', '1302612547', 24); + T('184397303', '377967098', 11); + T('611985c74c0c61193988409b7ac8080b859c3b9cb173', '4830410812954644160553068441629408675970314449453', 13); + T('7r6jrt', '354387775', 34); + T('3008fcuib88j392ucbg5869juji', '1788819762374982410062695434989906399169', 31); + T('163437548162880523537684124013727543874884361', '1658096721479270315378604205589291844831901', 9); + T('b9', '229', 20); + T('b3j5bb58153c37g6e0279j', '65358334895093431573877660737', 21); + T('11202213003212013202011130120200230100100123213301210211002', '115077606360628968095680622787709250', 4); + T('160003100bc818c7c2475a649b', '10313273121890479048668535784', 13); + T('659a832355510920755202a222a0813216a0599645415257580', '76738460570358936081428047041239658092598283361190466', 11); + T('8aa7eb5be50', '9528363302480', 16); + T('1a2a38', '311374', 11); + T('15', '26', 21); + T('a8qjvrqf7anvqln9b9kh', '407074332757747109859008292497', 32); + T('qh5oal7t', '911800095997', 32); + T('140005430425315', '130664921807', 6); + T('41430355414103404513450514422151345210212415430454523', '124894395792287452864745586425404037844339', 6); + T('1', '1', 4); + T('8l1x5am4a32igljg2tls4wjxl0wrm4', '5158839313249239164751957239861646046595412099', 35); + T('72a', '1219', 13); + T('2h6ii2g3hb2caeaj3fjka04a3803a80fhfibdfa9', '10413494305628146258331381259290048979757145255897373', 21); + T('2483bb318b5c', '4223782433155', 13); + T('30472a755209b73aab2237b3b4b6ba6b4a051b066b59391b64', '229935298182638819911567178597930454480466069384927804', 12); + T('2j0k3iq4f297gn6n38ugm398bj6', '7804799583798677561149968484488848426376', 33); + T('10bsq5up56iew5ew2frmjp', '146381119737686760083072120059007', 34); + T('322', '87', 5); + T('421345344324', '1588619644', 6); + T('55rq7fpd9510d22kgga9qt2cqdo5ju5a', '88593570103139158692015868786912788737196709657', 31); + T('13d29b67', '3933280722', 23); + T('1krw15t4oraf7onn0tiqqmdvon', '149796236898283951228532905796770497668', 33); + T('3j96a36ie056hg3d9a6kg4kbhb4', '93677997263967875177503265523746296', 21); + T('15c14f12e032624a1206', '102735615609474072056326', 16); + T('kd250h4kcdnhmk9921m91j8b', '7181407883202320763157477055926079', 26); + T('180a70hf7fb865533heg09', '21177926122372456937157622281', 22); + T('2d2650f939302bf9306f3db1fd19a7666712ff8', '16109941674613560268665251639244419228113121272', 16); + T('14042210021400013331223212044400010400022334204000342123141440202040122310414', '242980031176762892729926943688121630090892651895119484', 5); + T('16140eamh8k8c0i', '14642806436348304641', 23); + T('4201033713624', '292199307156', 8); + T('2306577543183936183865665a22384343a10249a928654a561', '26737226623626911856928473582008646056500695263735591', 11); + T('9ifb', '79511', 20); + T('21002000210000101111101212220100202201002210221202111222122011010010000221020022211102100020112111201', '1215456332160362004993935235255673868488941612481', 3); + T('gh4j1c8ccj0ha09a', '2297228448562517781904', 22); + T('110602312535653306453056163441062133026363', '51720570582674121452566926758640555', 7); + T('25hj29dkcjk21i84g5mi06ikibgj38a91gfm8a', '544909359244447938678618718321934826921483716508566', 23); + T('1555215136316402505015533551631166', '14161948712279262986113894899', 7); + T('2egb72aqslj7f3coqcncq2ctmrdaso5bpo', '40494263521822533022866511308330148471304529398018', 31); + T('174d0ii9c8c', '8469481708812', 19); + T('11eznfre', '81447352970', 36); + T('6147402214224431303026413646714237211640331341', '270142041873110958246056630570783242040033', 8); + T('26217103620571', '26217103620571', 10); + T('1740c8293545021042b730c704a025b203944b24201', '95380799134993785564663731354331010215990332043', 13); + T('hfa', '10162', 24); + T('32312554053142020121', '2086206758458321', 6); + T('bb', '231', 20); + T('a652scv2d2cetnml8q07rin1bmmtnn', '2634349543405059211976189682479993087452778569', 34); + T('28', '58', 25); + T('4hf703dcjj8c2jdc82', '64072923883505417548962', 20); + T('11ba86915a5600811428ca244ccc5a5788c802c91259', '910070795625285317118605406708822896222785514764', 13); + T('23llqkf9drl9kq8', '633595908841101403781', 29); + T('1b2gj1h2c2aekjbid916665h1jc', '36512492798947082162412228775679670', 21); + T('10100100001000010111000101101101000100001', '1409871436321', 2); + T('23h023952c59969gabbhe14c3ef18026b5h454icg', '24106941776124250340342392848281591922711841101639456', 20); + T('4301240430452331524422321005351031101230421411052040101430514215', '47575980866556413314221304862772696911550410330915', 6); + T('5028926799', '103581232435', 14); + T('qk52htpg5s77qeeekaw2k', '62421682061116668942703365250451', 33); + T('hx1wjtw4tu5ri84krqr3p', '239520584446386005614208719787701', 36); + T('e8d05b12f4d1d9h5c6134h0e86fd', '113048495116012205309732881337506579', 18); + T('22212211020210102211200022022010201211220202220112220100000200222122000120', '200105700798705299655405516905014140', 3); + T('1k9mn0qj86h3pe0594eicn1rqigcbj1', '126683083370995227384223569141871955819814409', 29); + T('3to5kkghh', '6917888883859', 34); + T('c4jsebf02dii38m62j820hhlhg4mm', '1076807142156967950235640680591835512378940', 29); + T('56420594375697116243914157706969195542878987', '56420594375697116243914157706969195542878987', 10); + T('240343101031431344', '2160207295849', 5); + T('2950239ba8c6665809b903936a215', '42198574579570963238277599179178', 13); + T('472caea81c1eadce316', '6619962484583137949196', 15); + T('1iff68050gbdi14', '3177537542453071224', 20); + T('4nsujphp4e4oeh', '553600630574258719532', 35); + T('403130431322252150212401000303143211423223', '328068405789131208325952848031295', 6); + T('1101300303030', '21433548', 4); + T('25303', '3783', 6); + T('2071022121', '808867882', 9); + T('6c4c0acc549735bb09904', '2268273210775487799698029', 15); + T('32033203021201120321313110002230020201320222201010200020020', '295814627854058541670739255760126472', 4); + T('aed9b9ri5m95mm', '845724641799698178142', 34); + T('5o2mlgf3ak4nkcf63e3hn', '249802225714608272506459114448', 27); + T('2i1f3', '464703', 20); + T('ers5t39623laf5pi6e8nchq9adel1is3468', '63245054851996044208467781885652929644411675671796077', 33); + T('41k2o04q', '54799568010', 28); + T('2jog4c4b1ck2facnjolid4d648', '248639818689269111187343577521300733', 25); + T('315335405243353303023000323013353153411', '1233705100662924822920998240783', 6); + T('c0b42d10550ce0f4ea97567ede6bae89e93b', '16786869625005321512335207434991310677338427', 16); + T('1i3sc73cm6h', '683826880532477', 29); + T('7u506tlhc5aj1dbb', '187087416521171722983827', 31); + T('5fh04di9lh854bg4957ed2c0ji2788', '4868812415572782947735163151740587465316', 22); + T('13030030412302400343203111232', '60506277551461769567', 5); + T('18423115785830864674513a49890a6a369653577', '797488530648724604221696847400592018064367', 11); + T('mib33aik0oe', '2168445661641239', 25); + T('4f373b2cdchh4ic9ba63aic625h989b383a48hhd', '356883101285661886815711288455781633251556555968023', 19); + T('49645837a599899700a60', '3277077666371488259808', 11); + T('30467e8e', '515946284', 15); + T('f88gnqjdhnqce53g03rpde1km46qc9sb9r4', '805058822427589583306256678962040241179999133462129', 29); + T('1mpqq', '1265644', 29); + T('dd5d03lda1r2bjmfofid4dg4ln5j27d', '1001880008568720793424449251386638391786461149', 29); + T('481kjai1h5e226gikj2i08g85ki810e80hj5c1ga', '16164773357903179257478471364779107060390719020084606', 21); + T('cc312enkg34of9i', '1362114899632793344734', 27); + T('a523a89a13', '53831004783', 12); + T('bcb3750ecd418048f3c9a907a1', '14950433883660044294408311998369', 16); + T('404902a03666449471524a9193353311260037114433a54294', '305850369678697383399472296340395515919908283719915920', 12); + T('122202012113', '6955415', 4); + T('1ush8wqys6nym91b', '410160199735843616675135', 36); + T('am3230j9', '66436375484', 25); + T('402524530030233354500101105335132042113514123333551524544415115012', '1550904369864527359367977424097726543505044596334704', 6); + T('75khfam4kcnghm715bdaa6kde15ilb6jd', '1063550394889085802339598789900636157058462037', 24); + T('15ckebn4a8bmv1jrov3jmj', '90034910889272889928459408320145', 33); + T('74a57mj3b7oqfkjdi7qt4c', '148686083061828528921843173717108', 31); + T('2a1cgmci7leh2e1g6h212il487aj', '1051977661293043554453465596384040119404', 27); + T('177a7a3a9b4414a79617934', '904337669156803925941624', 12); + T('1334504451254233444333525101252522240052410203505301300545545325', '16952109548779766921097840692944523012508999766805', 6); + T('81jaht3g0q8ebuauk', '5857490476197292433536452', 31); + T('a3664d6c2801a1d385947d711b40c94537786632c75cb', '2755747140622424147994575137709870068882656069074383', 14); + T('kbk7bgdb07g5g49b8jkflig1hjaae3', '17494482520856869278705339934437230552543', 22); + T('21cc019d87d6a38d7240d0a', '35045098625804789921638718', 14); + T('b7677de626a96290c23c7b34d2a3d48b9d993ee5', '84740181377896568043867047475707714193154444115', 15); + T('g72bbf12e0', '3252509311068', 18); + T('4b63k3', '35585187', 24); + T('441345035204314004532312424335512520451', '1749684973421935188191842585519', 6); + T('2kecacmfnzc19d33', '567413050870791669672831', 36); + T('6a065551905199780109695521766', '997063787222699268458056520053', 11); + T('82a8dc8782612a', '15920695955540515', 15); + T('14231143130424222102345535', '49386499907903489507', 6); + T('20200331130223100331230312230310123302011310332130213210', '2763276123199138513786811130169828', 4); + T('l8sjd62j21qtfk0bkk', '275049147514425322241710520', 30); + T('8b5r027799go6wmw0nasgk3fm', '23196991346952529463855897995513260706', 33); + T('514c5po1af8i0g2g508', '148726327273315469093588700', 26); + T('db1cdc3', '103874095', 14); + T('497a45', '2518269', 14); + T('3rqbk84od6a', '5884908609656152', 33); + T('1b3fu94ovmgk087q', '50894505143084876046586', 32); + T('bf4g4g44i2bg3gafdh', '352245026857755092633435', 21); + T('1bhb8os3jig8a0jjg509', '8544492060848011899078076234', 29); + T('9bb889jb0boh9004ghi4ifji999', '21001275121677892617892428312654193359', 25); + T('1', '1', 25); + T('175cec17gd755f6cebd6d71caab7', '2387636247630379533351295291428493', 17); + T('1q3q4d1m332m2bkaid5', '114462382134814329996673745', 27); + T('1435cb611aagd2e35026fb46a2b9', '40981399468733686494173008403141599', 19); + T('15qocnklsa4osrk0490', '463533209002652420364303870', 30); + T('15240705643046435', '468452863921437', 8); + T('73c49d6e96842ccc53a2c8b211', '1831900048463710636442691320716', 15); + T('4a8d8f3oodsg4fy1ua4mzpsseul7o', '161563492183061675654277113651271343378498788', 36); + T('jx0e9', '29927249', 35); + T('l7q9fhvql7jsu1rai6g51vm8036882eun', '31048769411271240430732754144531195600735144328151', 32); + T('12144', '924', 5); + T('148930a291006200a1468a260360162', '25069985375355798281506802929220', 11); + T('6646091881a040835', '1207532109684779177', 12); + T('3e4i0f1chhb7c', '27052411261074351', 21); + T('1312221302201230200', '127402646304', 4); + T('f663flb3h1cm2fm7cia24hb1lh265', '2052532182599394731797271980461818317874', 23); + T('29knujohjz5r2x38fcil', '841388446955060573107520827677', 36); + T('1000101011', '555', 2); + T('11ah5iab16d64e51kg0k7khkb233250fifk', '967644642858844521497590773738918042685372937', 21); + T('17108461113891045589910352983286918980713352258990', '17108461113891045589910352983286918980713352258990', 10); + T('1012000210011211001012102011001112011210021021220211221011222220022102122111102200001002210', '10353644175713994607088273235575881655299917', 3); + T('1hb3083fe2j735', '283424846911969208', 21); + T('13340672a7748b5cb36', '1794939665419760555526', 15); + T('1321012003221112321200303121230000110100012002320330123012230210303221', '659301932561021877769528555071668952911081', 4); + T('47013a004030970099911357a0750aa569aa72509508244576a3', '598824846543948874720639846647786926677632860889870751', 11); + T('k59bb2gfie5g1', '149027214830542483', 21); + T('93', '228', 25); + T('2244514405433141213351312', '11689824549798354428', 6); + T('3391990050', '3391990050', 10); + T('322240420551002415103245414443533220432233513', '58925535053757685361596112546437173', 6); + T('1448918iehd5cd705a94g4b2987603hcge1heag364a', '623766172807410187823974273716557093465964345387560462', 19); + T('vhh8f2apoddkcbte8qd2cv6eo07qf8l', '45026967317927008054648848145141282924620758293', 32); + T('4gcghhbpm5s', '1921232692885665', 29); + T('a2tv2d23w5ax3vro', '2228115152562528794000532', 36); + T('23fbge2h54fb39', '46123055007002883', 18); + T('1211013220130122010000203133130013313230032100013112323100', '32815072429253845963147847323709136', 4); + T('63665b4143847051bd8112a28125339', '151192052168606148985101333943415831', 14); + T('121230151444000352035', '5018902103174711', 6); + T('17o6rjepo7o', '379407511108636', 28); + T('3e0jd35h9fj984ji0c952ha6a0619ei433f64b4g', '2035447414961080260067064298213540337611882480996496', 20); + T('9qoj95o', '3872991264', 27); + T('2ehjmmpq26', '48937594118466', 30); + T('20203010100313111', '318125401031', 5); + T('16624342084015440626027666617826745786663', '257801163001691389520291595409112640129', 9); + T('99ja4077kkr89mhi7kn2lin', '642847989448256643908613736023263', 28); + T('1200022320121322202111310132001213031202322103211003223112', '31208956033081947189359407770385110', 4); + T('ch3n6m933c1i68nfdld7n8beni82ni', '135036167864868994578206007145405022688954', 24); + T('850dgbj1bina77q967n3icd', '562583517839371187906929749349565', 28); + T('1c1b6hf2b6adcf19jaf423gdf6985djb7f9b', '5511020452322809692026505861258306260094622191', 20); + T('368h14b3a9iceii0h6837ag1g1', '310916278043275877944347017914923', 19); + T('1498c6d696hd218ag5a38gbd23255a3056758dd', '4840693541321204605632050758615059700032223696728', 19); + T('1vbb', '64875', 32); + T('3337pb61glb100lncp21', '2391589725484953912041378217', 26); + T('262523728', '116165285', 9); + T('5dd205e2db781f491bff', '443054323304979904404479', 16); + T('bfa04g4ghebgkae5j56ic11j', '30241293639507272594473537217404', 21); + T('9bg1a88d', '32375211230', 23); + T('3164e8k31407jd14algmcl79', '169629850617492399214780875675633', 24); + T('724887434828033700521303', '64556976680043023374716', 9); + T('1030310123113122032223011230', '21622677210575212', 4); + T('h94dk4e', '1974926286', 22); + T('620022671924219242429260867884371762289253', '620022671924219242429260867884371762289253', 10); + T('637151001154473265053799092722218122', '637151001154473265053799092722218122', 10); + T('140388a179a26299bcb19c75', '54670958388535719430386529', 13); + T('c0q2e8ilnral78q2a1pl', '37703922421575356885249800545', 28); + T('15e88026c3393905e6b3db31ccca6b7', '268084119743214063479478076068474022', 15); + T('5660c7b6977c29ca6', '3658116372348412435', 13); + T('1l', '45', 24); + T('2meqp7a6g3d510aq97l0kd1gel3', '46566148499279171126893633952988857703', 27); + T('10010011010001101011011101011000110001101001001001000000111111101101010000001110000111011001101110100011001010001000100001010101000100010000110100010010', '3284369793875476139142406227062347521500187922', 2); + T('1519a3010603c6051198c8c744', '9843602098699228915851703184', 13); + T('10210220102220222021112112110001202201210200001022000010000002210000010010100121110', '1690033786016843276059524636331001957853', 3); + T('674', '952', 12); + T('3530013143266263651', '66147388776605609', 8); + T('6g9jfk60c173eb5j5a8id7j3ea8kd', '71392844079040287986961370661351593891', 21); + T('1b5qepfq17oceqlrkb0j40l9', '2697119998800124545301978047134805', 28); + T('4f82be1gec8c4c93080174', '1114866884635660480307604358', 18); + T('84lb400kqln0d4ea3c504lnfc1cfnggmrp8', '429932989531641627287877704445651412410140512616235', 29); + T('1213031124022303141133121134110403143023', '2664899547599003947569974763', 5); + T('5972204c293a718d436', '2424395701327022173624', 14); + T('48c05660c35831096571569584b9bb', '944525160078047876860764786207444', 13); + T('1737j8ged2j9335f57579j018i6edde42', '583469808841264533540282982195940270989682', 20); + T('b92a4', '3775348', 24); + T('g0a0g3g3ed3', '57238226797917', 18); + T('c00ile7i0a6e7059d0k8k', '8466411686951123921386451716', 22); + T('1417a983839823752962043864a03', '198707395183668497169407615155', 11); + T('212020002201', '457156', 3); + T('293ge61a0554a3fg74cd4d708fbf2f4', '20837793831755445803430404484447203673', 17); + T('31ksjf53lo5lfcelu4kbm', '2051668901240245477484691606434', 31); + T('18b91bbda46660aa90d0bab167807cb51ddbd521d3', '159834746906390155881812965963138183604335984605', 14); + T('a325a721', '200595880', 11); + T('111220333303003000330232212132302100100322220331201330230213123202330231230133001331', '126510946622282313351146590205348811859694558769277', 4); + T('3nklanafm65ed90g78koh93do226ondn7dg765', '20928977098157474166932241491953431194495934644004530', 25); + T('8d56gggg3gl7fn7d6k273k38aaegg', '3783755977257147057647496235991570373904', 24); + T('jvjs', '783286', 34); + T('3', '3', 16); + T('2dm48dk09h2mf', '57135037288325649', 23); + T('7c58km94ogkeoecfk3oji2b64e806b', '808192629771412919893870560197459472754247', 26); + T('108ba7dc0b83574862fffc703b989d5b578d862', '5903642409059499044928754369694490849414010978', 16); + T('cjqnk4gdjh3vq4ddj', '15256476694176334186952115', 32); + T('228kcgi0di3fi32idcda4hk', '259572623213169656398598069717', 21); + T('3ce10e4g6mc3m', '77759411065315097', 23); + T('2c7323b8', '305067694', 14); + T('10022103330001303212', '285949828326', 4); + T('3t7e2cawj', '6892011752699', 34); + T('22', '28', 13); + T('464a1', '287905', 16); + T('5cc2576599c26', '759539534269986', 15); + T('jbj03hlkdha41fmj4', '236168166638253520612684', 24); + T('0', '0', 25); + T('2sn0577s1dkxc2in2lcg9c01qif5', '1380060804894799857868555382265618092450455', 35); + T('32h3b8bg', '2818270187', 19); + T('255545', '23321', 6); + T('44672701365702351354627010564700332716441663244', '1605697031030267612185423502895189353522852', 8); + T('dg6', '6075', 21); + T('172f', '5935', 16); + T('ff79a62d5304f3d99d59gheb8h486g96g8ahah2191', '46385498914881808944086334290535921747293937913848583', 18); + T('15141', '2437', 6); + T('26460b23b58906', '270831364391958', 12); + T('3', '3', 8); + T('1nelh6fd2nm', '385460235648697', 27); + T('555002132250423043321044154114553040535143212221300403502105', '48649779907252203719145936253957752216789784697', 6); + T('502c614709d225ddf70geg70ad7', '491428972626763333617324944411991', 17); + T('2a809', '43569', 11); + T('231025152544454503423105544545133222512424413141345', '2044955716085193393522162227889590083649', 6); + T('6127516', '1617742', 8); + T('3001212', '12390', 4); + T('61k8t4r', '5372388005', 31); + T('558hhgfj0i392d5149cdhaj4c81b3f45c01f', '10601211512457181022617948775789014879554131318823', 24); + T('5ai55am1f3fg3368080ag', '9386067417807853412865332671', 23); + T('375335072413', '1049997224103', 11); + T('3ulp5k2gfak4vwhs5xp3fp2vt91q1vvgf', '99640256815388464443077052932078228628581826390175', 35); + T('3cb5204i8gdhk31k1ca1jl12hji103', '3039225421760116368864520168279113397031', 22); + T('95g0pdi85jlch9', '146430211203929468319', 30); + T('1ga94k3', '253927869', 23); + T('17eae76fe4agb44b', '9674350126680300347', 18); + T('731352357080453082167066163008066544870856880624501815', '2761694377915234883111996820445810369791439662349049', 9); + T('28b42eg3fch6h17ec1f6bah7a46gg0ba8e8ge3728', '402898479377320666571762561009961282566338625627456', 18); + T('47763aa67667199503a', '26126027821437042586', 11); + T('1a1513a229241db1a', '3748786654473436012', 14); + T('4j3wlppbfgjvx12bhfdraxhj8as', '30035221592107391008826387409658384272600', 34); + T('4a', '66', 14); + T('11dmgo0pm5844ph95n0es4r1js8oh53s531m', '1605008834095669751131228638721128071723402662779373', 29); + T('78ac3g919991730dabf', '4671636511491254279401113', 21); + T('3uen8v', '132603167', 32); + T('18n1jhh534ed9kijd36h9eh926ajj98', '1176935676756916434242879253348138978824608', 25); + T('c6lida42bb7dibkb2ai9038j1bff2i7425', '2457445295804537407775390175826401409277343241', 22); + T('520451821452737', '119611394254600', 9); + T('111010010000011101100011000010100001011001011101111110001001100000101101100111111110110101111100011111000010101110101001010001011010', '4955975645658396849750021048094688973914', 2); + T('2j535maaee8', '177566375337176', 24); + T('87doh4mu9m4upmt8jjj8ppswm8h1ntc7c4', '18709453669151556448621559262750940609280449675917604', 36); + T('ki6g9a9c2194hjk1', '1421884784853472743133', 21); + T('1uu682edcgoe605vg08aul', '149927190638896493897053359305001', 33); + T('33611430560050523326063140530063215636236565634401651316012153', '12640761518619389588311599773840813250762104347169015', 7); + T('2e7mc3jal7908e06fm', '5447254724723092802070793', 27); + T('7i2ab92gccil8e5141e75fnpkb', '11544586496253437449398718886123580939', 28); + T('3ch6i46h3c9hj4d4', '245970537455421763324', 21); + T('341950453278908a8a0005', '153920651144564889561605', 12); + T('157396461156129428907782692155506630549', '157396461156129428907782692155506630549', 10); + T('4e8phiqe', '77509233466', 29); + T('h61b8f3aif1921abecg1fg82', '14515588347289719209260339486562', 20); + T('49eb10560b24720dc8d64d9a3869c21b64c7', '679348185541738001210448180139429111150087', 15); + T('1141752865644301566854274762894601647406769493', '1141752865644301566854274762894601647406769493', 10); + T('519569635591341326218616477948', '519569635591341326218616477948', 10); + T('64coenh4m7nclcdok6c9', '2248552578979295785537035309', 25); + T('57fdf4f5g0f9d84iib58b0f1edi4f1626i808', '58679471173751985874228442168831694410618065700', 19); + T('7638a5255', '3236027681', 12); + T('796623821741144', '2989556390158705', 11); + T('g21m964mkm4mfjb5nn86fe0cj7k8edbha9i', '1360344415859629714125407839865176137228200369514', 24); + T('323322023301122022303233132013010213321220101022220011321203', '1244263825928288441278865283502595683', 4); + T('3c4gd68dhibg23f5ie91e0226c', '1212014021547517721660786028816932', 20); + T('il2204ha0bc7mkimno87f', '171379074171212894108622645815', 25); + T('3078kt6ygmvmjoyl', '435509192168873571302736', 35); + T('a38', '2010', 14); + T('665354580258', '665354580258', 10); + T('b6iljh', '89840921', 24); + T('12', '8', 6); + T('1100100010101100010011010111010011011110001010011', '441284718869587', 2); + T('103425a844c64b54a799c19a8b80b8360', '451483347908514778430800009719438373', 13); + T('13jg1cd', '133462793', 22); + T('15r36doe4lc5pu9bt7ajk', '799090626108561656879167065895', 31); + T('9e6d58bifcddh8f7e8d566551gf', '17251970079387384841395849025324832', 19); + T('1111122112221020121000000102010022221121002021122212002221002101011012121', '33917854345218936391135563425595112', 3); + T('4990l153jqalbca5518d', '93177576163241292629115944053', 31); + T('1010110010000010', '44162', 2); + T('28b6338a', '98418778', 12); + T('36503hg2d8i', '309754322695843', 25); + T('1n96e8nk86i8', '44503394396446494', 31); + T('sll', '33103', 34); + T('33033011220200223', '16359262251', 4); + T('99d3129gc76egbef4fd3gbg4g11f1d70', '1333694013824598235831401355357401336069', 17); + T('97df0ig25e8c8bgicbda68g287ad2213be3d9h5', '36818894414378796947469929289289701562088950063034', 19); + T('4h2d93ahb9560361i7cieif04c99da16eiad747gh', '6926899048124838337587570688835924691980039686118308', 19); + T('1efa78a04b9cfae15i608', '66906711299008903988241970', 19); + T('6dajh82l2h39k17l89jj06b6ij1d38l2ah4a', '638587640933730076874373620811221314023256400630', 22); + T('29fikcgql9j9j', '1231539340753070389', 30); + T('3da62e0cd7d5edc8b6731fc', '1192467796933113553619464700', 16); + T('167i437dik6224', '642946919459203965', 23); + T('2212030030033111020121122', '730913496663642', 4); + T('0', '0', 3); + T('a934gbe3eb6gd0686eg7ceacf3g', '1034060133939988465057499206465869', 17); + T('b06bk9d6g0a42af4a', '15757568799670003822267', 21); + T('11813a068978a723528a6811a04418872a25a97', '4331585506586356267499594006764356259902', 11); + T('o3emg54n6mk8fn292gdfne0', '137241894959729632465723306108475', 25); + T('26f70gdg0a75ge56f63g2gbda6e', '236057761685701334850732917197770', 17); + T('8ujdov2cs356b', '14889117743117384096', 33); + T('p0p', '28925', 34); + T('331331554260223242', '804688549652157', 7); + T('9m0508egpmhni5gm7aicn07dm66g911j1863f', '8556964370979913328368960003720919994571132796665125', 26); + T('97659', '273516', 13); + T('30841783490097007741741271081026', '30841783490097007741741271081026', 10); + T('4q4sqdqsadn8rck7bhjsos61kniq4qo', '365053872988495536844847225543861276332385142', 29); + T('3085581349916184a854518229397966', '589317025721598516831908960908549', 11); + T('5r4otco7ld', '116235391074943', 30); + T('h881s7ng42l7ktf', '8262879069644201817885', 30); + T('722935123087', '722935123087', 10); + T('2211424', '271870', 7); + T('169675b23386dc66556b4', '123567084465286023095006', 14); + T('1d1460d5', '725910715', 17); + T('101110100110000101110000101000000100100110110100000101100000011001111010111100011101011100101010001001010011001101001010001', '7741948260639498696423377430502808145', 2); + T('6324dl7i97ejh30h7d2d', '196908817838272957802386245', 22); + T('1e6bdg9840bij4m6mgaif0b3a1fa800i', '2650595719449645853646782554686853038953647', 23); + T('3op280u714f1l5c4e58d3n195wgdadon', '2722922194519046542296617636311541345690187538038', 35); + T('4ul4gph', '10556594837', 36); + T('neepzcrwsljpq56yw5fe1p8slc2q6h', '31768227704262634163351278216775977989668712713', 36); + T('163508485687', '53683805509', 9); + T('kq1f5osda769asejc2', '151662515754458740001154937', 29); + T('2bb5kba8ij1n8kcg9i5f8d46n8425dk6l6iac8', '2896620834535199514593225193367996812104377232901032', 24); + T('13fpo7ebe9ibo45o7f38mgcoh3705kc', '3204372840607139571307714097742381921592280', 26); + T('fl1976f57ha23jae159kdck7e', '2636992324538165186145579853041064', 22); + T('421d5154795bc24eee09c38bc0ebe5b8ee29273a675ab', '23184471520376505532353622062217664262369811465453661', 15); + T('120cc7a219303044926aba2366c8a981b4704098b34', '70792117155249797617821261835217822465201863468', 13); + T('706069779aab536435babab84561', '967362705785425743632483240473', 12); + T('587ci2heb9f6ha5', '8878675397855255005', 20); + T('6', '6', 22); + T('101100000110111000111001010110010000110011', '3031053984819', 2); + T('g402fj8dc41h', '15410872733788423', 23); + T('384cb1e378c31062632840835ca792', '45443550340307284975305780784392962', 15); + T('709120709950241446662286143551107773877', '709120709950241446662286143551107773877', 10); + T('10110011010101011100010110100101111101111101110001011111101011011001101100100010000001010011011110010010010011101010001010011100101000001000000001010100111011111110001011', '1048393860009702438276451118840918885709561673793419', 2); + T('43530143525312435203035354402132515250345350110051254130', '29245051644396815096043409979498563547760486', 6); + T('273874118720265720003330', '25054867528860327211665', 9); + T('75chppa1pfoc8', '5650988903040886596', 31); + T('1o2xzq0y85nh2uz4hrq', '17214140131662303072328011254', 36); + T('7mel09lb2a8a57gbgjajae1231gg63ifi', '300296405223222733629146932689003077500853453', 23); + T('9h797idhg6bf82hbneffie06d7n7n6bj692', '822053978411404614899330556271321295033323274330', 24); + T('2231451202332013234346554405060630261020301565243616052163120', '1194780384819131090196038746300735825418428054448297', 7); + T('651308764720485861752385601247', '30955749937585936729212961915', 9); + T('wisjnua14a5j', '3141478047294715819', 35); + T('1f287eg4d1e96aj275810j2b76hk6', '65295279177191049973439872523750757634', 22); + T('732jlm285a7', '452060572081207', 24); + T('543a6a7205935', '16936274072569', 11); + T('11d84024g1e', '2228646074688', 17); + T('b733f14109d5b25bg0d4bc03ebag43945g86242c1bb1', '927003510624924525673202158389033192698291798479053046', 17); + T('baabja1c5fhfjbgb7a248bkhcgk', '274413406419696811582074157627497260', 21); + T('12rkl64f6r165mb', '201505391341491620163', 28); + T('86nnhl7wdo3yfaupk3gxyn3b9', '93531275000126027219179909918998577069', 35); + T('9fa97a6685f7f068fa0c7c7c', '198055880094540331320903211843', 17); + T('53b5607598a8568405b6038b056b', '732126558636324783191109176867', 12); + T('1d38dki3ecf4hb2c', '110820443100982410906', 21); + T('alicf731m71ekmfb7', '132157470326092217910991', 24); + T('2946f0f6fa', '498579612616', 18); + T('p1m5fba4i9c8', '139351741901234288', 27); + T('491npjfdqp5o0eok5m8k83d272p4bpa', '37843769272881591548066267248820470893488566', 27); + T('3sp139s619h5fnr3g43075g41qrphm1274', '22020285331732361216643228764147906649510745949014', 30); + T('1go8q2j1hfhkp8cnecdgthoma', '440682856002100886822190646729771270', 30); + T('1l69ed12hc2i7d2xo3xp10s585gnj', '27505025872397325904081958842489980594333549', 35); + T('7jam53fgqrsghesc', '178900402668575769571705', 31); + T('1ta11tnjsu4sqnkctllg5r', '146148626279942060305711089820179', 33); + T('38549293', '132726351', 12); + T('erj', '13429', 30); + T('0', '0', 2); + T('aps76', '12788364', 33); + T('i4f689483a05fg79dd459', '1912424668215298964958985709', 20); + T('2l129l', '27751496', 25); + T('2303412343', '25367175', 6); + T('549b8457125278', '578041793560892', 12); + T('120869707199141380905a805187000259a0606312a8878', '952772077272503697711661443135381708565035744224', 11); + T('4s4ie4nc0dg8o', '5625644808984248600', 32); + T('febb3g4036', '1881263605907', 17); + T('24adgbd8nbf0k', '129751809901743770', 25); + T('g27i79d5e55896i4fg7a245', '218847629102163139699173355291', 19); + T('30529c2802a7a6500a48164', '9734582938146405358147470', 13); + T('13a77a7280a338383a965945211402', '2159245188374564306148810546761', 11); + T('4ahj0705e9i38hf4gjj1c4bh27jge090i1h05hi', '124928632984691876439135258471206747484391557922358', 20); + T('440313525', '26407491', 7); + T('kmm8mq0bl9', '1627285397199219', 35); + T('43hqv0r126', '144649097151558', 32); + T('1048b51ab04b2bcc558ccac705672542b3db9', '186529630154587639414052458405508817794479', 14); + T('14423112251502214140350553421432332152103521123', '1116071013468917454980382318315110091', 6); + T('13mn8ak8okaa5', '68944310390553380', 25); + T('38m9915e9g1gd051akdkke5f5a27jd58ej3', '67448136771996483355341359401090802088684251372', 23); + T('kq86qir6d1p29bfceqvf', '824785809235191997125198572527', 32); + T('1112321020311312133310021133020222332223221101322301322220113323000222032', '30277716024835658731702957127157570855504526', 4); + T('208408904304224157224980647150862034543184171614714', '208408904304224157224980647150862034543184171614714', 10); + T('1342414184334047452273', '151665011409098573076', 9); + T('1la8c107nb8105l7h8n2d4nn', '263830603401598394475203594737473', 25); + T('luz2', '1019918', 36); + T('9k9fm7bqw7yyerjs2k764il8lqq', '133997186940027427483405272900623275104661', 35); + T('10x4cf7afl8kevixm3d0yxgqt4jfe', '38674921472624504070368294249321086159708250', 36); + T('11011000100011101011010010001001101010111010000100000110100010011010100100101000110011001000000101100101', '17157448231253463055811180527973', 2); + T('123466063012654210205425010534440020', '515748143498324939176731633807', 7); + T('33044012241110', '4441524530', 5); + T('1158b5a630619185', '17305771835233973', 12); + T('7n0vvguft7mnqbir', '461401544473301116074780', 33); + T('567a95139027a78a', '23440483786358649', 11); + T('10002000442022441044', '19134759968274', 5); + T('4dfc', '63156', 24); + T('312a406aa3450a3a23912402340a01966692', '8754550707437018386514400792052318480', 11); + T('cnddgk98jmb92cga29agigo17ij02oc44ag7k', '2740506289219815903046559261127339765453793253682070', 25); + T('112002022001', '277237', 3); + T('13185359b8b7cc6c', '63496717433440602', 13); + T('rdp8', '670169', 29); + T('a5945524a0ba9', '93456277979313', 12); + T('2csg3gpqajhsck3', '1829362423553209975227', 31); + T('qawko53qgbm', '54339224712711276', 34); + T('53a8981b9513684a', '82035316765523002', 12); + T('161b048i782', '21503214153206', 21); + T('22102400412123042123341032122120332432011302', '2779064502733276433175230344577', 5); + T('idlbb4187e191dd42', '114102484434631244007167', 23); + T('b1gd8d', '88149517', 24); + T('87aa5220276', '536130980730', 12); + T('17813c4bee86cgad8acfa4gd6980122g0e1c2c3f', '1398872946976482742153451223578417416198761226747', 17); + T('542516a818ab733164bb11a0b90448b54385562205002a949', '33811866838197068550203974493168709163294532080937673', 12); + T('34', '31', 9); + T('ulddjl1p7g33c3lfi', '243484528223299178648975166', 36); + T('43685922830053717349636937254384863641936188539078', '43685922830053717349636937254384863641936188539078', 10); + T('1kq', '1526', 30); + T('h3q4', '417894', 29); + T('2sgpnvjvimhdvfte53e', '3579393219704746078446752878', 32); + T('2g0klh8m51d2m737719helbbmhfb13aadf52k6ba', '345403492723336949220351795875996776734586242292103572', 23); + T('34534434531104021501132204125434', '5071162229234026722846814', 6); + T('18728536442631514847167146206666864236812842053', '155482283694964503460685159464849077646366146', 9); + T('1011102210012020002010101120221020201200012022022210100200120211200210212112000', '19121766375891188407348322182261750770', 3); + T('43xd87t9i3wc5dy9urecm', '31297925864315303967241520625217', 35); + T('6tn9585oibr', '5704387543834275', 31); + T('1odaiw750phch8k7ghptsrbd6r', '332539724961043900901068288669103492707', 34); + T('235a2975935301a79', '106684220535281420', 11); + T('42ba', '33030', 20); + T('j', '19', 21); + T('j4rjbgf0d', '12573534055513', 30); + T('32xshoix6xh9ccr30', '9848122710986064368393554', 34); + T('535', '203', 6); + T('16077c0833e289da0b', '406367684695924791819', 16); + T('3m20fi3q3lm17gnmhqpjbpmh3eo4q284o', '235527531251668145423074205329962075938693335711', 29); + T('132db2098c07d5c2f3db90fc9dc5969f4c5ef8', '3988017842540737733695567767722086300600078298', 17); + T('1c85d01', '103725201', 20); + T('1001111101111001100110000011001', '1337773081', 2); + T('vwb7r7k3g5h2c3r97q88rp', '2475548335462435623069755240245930', 33); + T('5qrlb4tcb76enmfllc6l944m16', '49968491826455815316033134152951067836', 30); + T('110020012122031310100', '1383087004944', 4); + T('132102232221032133123312103100322102332222330010331130223031113100023031010332322323113', '11333821350115864348147427574650948754682805810343639', 4); + T('60370776342110666', '60370776342110666', 10); + T('3h4i4ejlfjg0688l', '6140106694915716688693', 26); + T('1dm8lihi1e26ahfa1fk6g43ibfjjmg37', '2628602474297861320421568139067733120965444', 23); + T('aebd6h6e4h0h3g6', '17578668715830537526', 20); + T('3v16buqvxdcu0pl580aduqh59t4p1ytyzw3', '317029270815082851172083917802213165659300395303124787', 36); + T('ef6f9235d0afe2e5cg', '12331072171139724632698', 17); + T('1010000101', '645', 2); + T('687cab97212266004232ddb3d3b9e', '5597607870848036280745860522464624', 15); + T('10212311222220113132220123112023213020301012233202002122122321233112231321220233233101003', '110312191634483651495896170224950641069551786395628611', 4); + T('3832ac25760c6957d0a4c6d213458a5dba00029b3', '25115577925068533589911218721261542504047301873', 14); + T('7chebcgc', '6865651019', 19); + T('4nn', '2879', 24); + T('a321054270b305ba0b66ba3b6b56339', '2436546585202095704641104341508957', 12); + T('1l141elo4mkmm50cok767dgbhnl859ea223a099', '243768152347675786552797555960516182859457306417343984', 25); + T('3gg7mpsa4mef', '43568856039788618', 29); + T('dn', '374', 27); + T('3000445345054', '6538448122', 6); + T('320403212410040111002033343341141234242231423043134214130032422404322010313', '18174722812021434932358160186198714046154568563860083', 5); + T('h7963j9697ilenpfbea65fnh3k', '4092136993515034862901357828279507182', 26); + T('44d', '1693', 20); + T('9lif165fb9am8i5i6df725ah5ke7kakmimc8', '4552222216377737849505813807820250518334913223674', 23); + T('95cc0a9523c654d1d87c6c8c41da3c0', '228044297514817056310395998663259348', 14); + T('1eb5298', '22596218', 15); + T('18d15067c13c7b96546a0bd03811aa0648', '108794139679161970964043442876985805816', 14); + T('10c8c5c2', '3484449218', 23); + T('1130241183031735622176218077807830726640278265535', '7307690599679782626468030026978745315150762698', 9); + T('147hios9h6pc49vabeeijibp7l9el4juv', '1654964473386058879615178865366866020965350002655', 32); + T('2hehe758c84', '18001465765974', 19); + T('27ca95172', '17128511655', 17); + T('11a64b1364976db4501b4641', '1249071479135368641718518661', 15); + T('oalp077scqppkgsithtf2lgmdekuhltt', '415553692412432987092587239826921522135844076896', 31); + T('24512544314343321411051', '370182538802982343', 6); + T('18762343i219897i8bab2a3gii7b7h8f34a', '43289966715277773748038371629470766822398253', 19); + T('2pi', '2286', 28); + T('1cbbe0h4g8jcjf8c1f1e5fkgc', '259324373962987253102359495935860', 22); + T('pt', '904', 35); + T('1pq017hmfclcb9', '7949466399349926747', 27); + T('f7a3a6c5202h31ef64ef1a142e', '371455948373140075962244702804106', 18); + T('5391521717249849338', '5391521717249849338', 10); + T('115048968584225548467a166a8505a22189', '3182768778233114520385989554018322385', 11); + T('784c5768a01120f03ef7a73160baaa0c5f', '40935359210071367599328032328982052080735', 16); + T('a79a1616597a68813', '492505903090120637', 11); + T('104302302000041202003342432402432', '27586639009156197153492', 5); + T('e6', '482', 34); + T('10a9ba011b397214372673b869154', '1772448509226592504876544881552', 12); + T('b529388682ca681a0a211a9c291aa525a569b89', '24365646313226855959855845860118543252986104', 13); + T('60266784078122366807652381741868036523827834044816', '345530321229050938748463990139827078607744866078', 9); + T('nrj2wqd517bt9sf0ji8', '245119446680615904169840513472', 36); + T('i30lg31967233dca599k9khf253', '13925405872348342338134182452445003515', 24); + T('2ryv', '120046', 35); + T('11a28178b2d3749352dd0688d33325000b80c1d7c21a73', '4229526571666583429911018550162020409543001093510565', 14); + T('1hlf33b40v7pqogpco5h', '61489711252104567972030734513', 32); + T('2ooqt4ok6crqcqoprok0e1e', '1807700340428814411931323774855651', 31); + T('5330703347212770743451273354450142023332067068', '46881764614088473306314988288234150109880758', 9); + T('190411146532942276953175', '190411146532942276953175', 10); + T('1032', '78', 4); + T('220311100310133201101213211131102122120103321313021203300230312221332102132', '910589190412628421660420436887035984747160734', 4); + T('53aiqhbd26i4t3gpnfmpo9', '106372792078016060806151089912464', 31); + T('1mcshrkt3vuow', '3957079661421807504', 34); + T('11420140420313400023142434242130143320333001404323014032011441103301014244', '1457518531908973605405978898403083567207549128141824', 5); + T('265210518039651538964229872a244598261186', '106497114458263044665001931751128560884115', 11); + T('b5b39686', '411895686', 12); + T('9693g67fd46443ch29bfad5', '391033997087892318025118684265', 20); + T('6aa1787181528233441a875', '569250946715170907346131', 11); + T('1534821551365858622483716488168', '67797697219511094422985323240', 9); + T('2u5h5ch75t99h7ftpar8epck0uf2l2thgkp', '1512058697304555562850007013279347701338862065083953', 31); + T('364lf34159pfld9decepegn9jnc', '19932987570255245395513434170488890598', 26); + T('cjbxwfida', '28266954157515', 35); + T('234422033140', '136517920', 5); + T('5d27dhru9i0rolnl7k5cc04d', '224657379433425485580575516892987533', 32); + T('15d96d637d18724681c68', '119388782053752864730372', 14); + T('glgmfg19hmbiuw8gejqlushd', '2785871717038208979814744954063843071', 34); + T('fs27q3', '327526525', 29); + T('1aj94', '742369', 27); + T('2rpnbci4jt3cga9b7k7ri2kq951k2l06opu3', '45679643141383333963769732373782633717189382232076574', 31); + T('2fvp005iv45', '6770745914953620', 35); + T('3739cfai4g37d8ehigiiaa5c5e1017hfgif34f34', '251228158449149553590458723730036424872270586078914', 19); + T('100132020020131301313310320', '4636099868065080', 4); + T('1hufs4gy8ux4t98q', '330662166686009999383562', 36); + T('31141410440222032202444232140002403313304013141143142112332414', '14202859109742120451995012678655132660667859', 5); + T('120314021231222320010021120411103223412323023', '8111041563265329020880984104763', 5); + T('5', '5', 15); + T('22356', '5676', 7); + T('23', '45', 21); + T('7lgn37jdpecj6403d0jom4jna', '71329726048559149957340654751993676', 26); + T('113lhxiw79qpwyjdlpgn', '224270117034921406000339777208', 35); + T('e62poemoo3e9cjo1l4', '16140263108781826392138362', 26); + T('326167dc1c29169ddb457e2ea74da9540', '136353349886424397650412714901640659685', 15); + T('a280710ji1he43a427k81fif1fa2g', '106423632510333355935644382252587269768', 21); + T('0', '0', 16); + T('4bo96rt0bo', '263786477496742', 34); + T('111110000001000011100000110010111011001011100110111110011110111011010101010111101100101111101000000000101100011111110111100101001110000011111000010011011', '11064110199645779468713657128408705698455744667', 2); + T('rc7', '26326', 31); + T('9ci9486917f60e45b082chgd4c63djjhcha240d6', '5303028473960156575531077483320594119475139680352266', 20); + T('7f6in4ffhb1flp871ipcpg545o56c5', '7001603956717371881956901400431902260257909', 28); + T('7691c95hhipboj7rg2lj229rkmhac45b8', '147212537247130546499231460140529489308763331468', 28); + T('1rsi5r604m7ioheb6fcl4h2bnlcfj', '173989478506881942888773260671258027309887', 29); + T('b4om1cj2maljon40k9e6a5', '5798208632384734824227289530657', 26); + T('11eol4ua776vdblm882h3qwa6h0', '6860908597449491750120493068938147873066', 34); + T('12121010010220000101211121000222100022201020', '612407733641262215889', 3); + T('5623882688c3a20370c29683af', '30933873734949067206794851517102', 17); + T('7p3014mdoasx', '1013060656191967665', 36); + T('2f4i8d7g63149c81', '90515183521475916961', 20); + T('1037028086382201343445', '114527582053447761554', 9); + T('cmj', '16363', 36); + T('31013032010320201322221203203', '236219413687867619', 4); + T('xrienrjyq3vi44686', '171329229726722909956091011', 35); + T('g98pi5f5i37blbo3e619', '12538983223080485163975508379', 26); + T('6gthi0fijlk13kg3m8recgqcsqi65h0', '1351923881091471085665472649762970950098547010', 30); + T('48920165m2204a', '2200120683667985813', 23); + T('ba575460a', '5104899946', 12); + T('9eq', '6965', 27); + T('298285791a0888b970036ab67875b9361668222', '286515785301458024010310865718090862556474', 12); + T('32b10239083bbb27a8a9b1225534b956487365', '529271448272229707546432985555718969417502', 13); + T('3ba90bcf292a852be', '68783684858858197694', 16); + T('66726644', '14396836', 8); + T('10q71', '833611', 30); + T('hd2353gg4ahh2d5', '14134610453581815173', 19); + T('452202163400753742090780', '452202163400753742090780', 10); + T('3d9j3hecof6ld5a3mk35io5', '20097704011001101800560987589980', 25); + T('1200022202010221001210111012111200222000102211101020211212121012022110012', '37817615564406149218083810637238750', 3); + T('23454344155', '159499655', 6); + T('bk7lb8gl2kl01k554', '72883403283874275717587', 23); + T('112313101022313000012003220003310032321110323332332300', '115932056790344637678217394646960', 4); + T('256ag1pilpennbnalhfgg1b', '67800097110287594251574673904676', 27); + T('5819b9b905cb0970ce6766d5d5367907e589b9365ea713', '465231703686879290288579188172672651019623788286244093', 15); + T('948', '2677', 17); + T('49fgidcf2', '243740232980', 22); + T('ba8e67fg8116agd0ecd06a07746e7b6c', '1618376196981235195559537216353877633919', 17); + T('7p75nir4wc44', '543366534313517148', 34); + T('207526928514479808388641363288479462', '207526928514479808388641363288479462', 10); + T('11110010010110011110011011000110111010', '260222595514', 2); + T('22ow3qaizvi3ml84m', '16512328963582356580908646', 36); + T('dm8d5k9lg4jfk601434n4327ma1', '10702631860631688676459813994309897329', 24); + T('1p4re9g4k7to1mkbxxi982qugvwfubm2wnb', '20450108624302345417065874616002109798595396729996393', 34); + T('50a1d7df74babgeg860cf8f0cbbf', '39266851385410224911159816445537921', 18); + T('11210021110100', '2544543', 3); + T('409b9393847462143', '2700650788976025603', 13); + T('7334', '19842', 14); + T('615264ba2c91bb2d16b27657687d61cb8a68829190d5', '117133480342797205694669610294061082973100299430819', 14); + T('101000100111110011111100111001011100001000101101110011000100111111011001111', '23979030927343490334415', 2); + T('2bcl7chf626gjic', '15721285277159323940', 22); + T('e8jdshpceh511akg3eh96f1n', '61724909151432021746879467844279912', 29); + T('7ioidpi3fac69bd58h75pd2', '527856824728503952184574006672830', 28); + T('2012210212121110221011001201', '16892157195730', 3); + T('7669mmf310dd86flfkbh3l675akb3a4c9i63', '3328050075667048755190343358056273076421320709312', 23); + T('cbe1kfj09id9fijfd2k4bd6if7i48f9j2a7eg', '4997329333935474233928057995322719152450533537259', 21); + T('481df814c99e917079aeb', '5449011495668093676919531', 16); + T('200021121011012220120110212211201112021111020012112021', '39372587067244907527609165', 3); + T('2cuod2x5qskclq2839s0pbquc6w', '15665344596694415117114470797884328339020', 34); + T('61d8', '41770', 19); + T('1132d0e10b1dc7d9d4945b80da4', '4093911128145427008187373761204', 15); + T('6jbkeffkb3c665', '1948081861707426769', 22); + T('7839b37889659a675469b685a4774878965116', '65435909692700209089779026721746853819490', 12); + T('4h3e0o14306am2g2a8m5a1nkkcje', '260108515968753744015241516937732742364', 25); + T('5311555461504533675663441245372657173', '1750444240707415099769307901156987', 8); + T('189060cb8888330b22595a73b453', '1990161334123571052468023603490', 13); + T('d14f6c28f6b1a66f83ec00058d939e6deae057', '4667774422027164788903448529246588503172243543', 16); + T('5757513a925222715971a799023207', '9015463886750727461068645868694', 11); + T('10i', '547', 23); + T('3ldfpp1i4hgel51lhl8coggl2cno09lnj8gm', '127944080850766885182905102175542189745277162709534', 26); + T('esei2e43m92ifq3rhv23i7fvkp4cpi', '664081559838961998097945329675608329857151794', 32); + T('aflab0b8e', '1173646657934', 24); + T('2ag3ce11feg1d147d11', '37187897709081800814449', 17); + T('1288928', '1288928', 10); + T('36j3f8hj7aehd7i742i', '47593949304334976393861943', 25); + T('70eck6mb9ckm13m5k6164hc7a3e2g703d', '264297515812027647476881571249469049684770707', 23); + T('6al0cc485a5g84jio98ifi94aj9jppd4nkc', '8247805371919561622181081071988922761105885432992', 26); + T('4054706260215077404512214064677061152506', '679180789158344428977587279718831430', 8); + T('3123121033311032212223021333221101200333311110232023233201332023201101212233300', '313130279871566800608670339808906134119938157552', 4); + T('186700d42cfi55851jf1j12ddbd90if', '1520284426625971721505976719940709352375', 20); + T('867b3d952dd3236d30777193533ea0acd4eb217', '4144999543089127983532268234731096383836940097', 15); + T('21607142494642a17435480244914366aa7', '546971158677056207712730953612440610', 11); + T('2i4db77e2f9g2eh', '17593540766587374397', 22); + T('eg7b8135ag6j0aff3b4h8455ihfb7241di86i2ce', '8146790374268511095664515210088247752112171418705054', 20); + T('22ib', '88841', 35); + T('1230232302031112000011113212222', '1958723707255224746', 4); + T('3abkckh711b824d7dlc7kc50f5lfc903jh', '694110549193234127943850316292345559419640751', 22); + T('1a6faf864dh9', '101335185654255', 18); + T('csq', '11666', 30); + T('peldf6n7c', '16724317232922', 30); + T('1113212222141410102131431304441', '1180618941657064322496', 5); + T('a79123bd80', '217898466044', 14); + T('7c4729j', '487096999', 20); + T('1cd49d38b6ba7ad56f0h3f69i4', '155274639330332110420080389983927', 19); + T('101000000010010101101101001010', '671701834', 2); + T('62246711201113702465222477417147602750116154310733', '1122306478377713902587095609358921499575161307', 8); + T('crhab338af7bj', '10152189826006295493', 31); + T('14a51a0a2970459f9g006c5g309806d5f', '3009456851013370386519092081927217660807', 17); + T('2k2', '2994', 34); + T('22022111224', '23628939', 5); + T('21bia', '271824', 19); + T('338h', '25377', 20); + T('5222641636635631424', '8687773728715799', 7); + T('7bdld', '1763687', 22); + T('58560588242628367536365131', '4277917636306674590636902', 9); + T('8oeo85rqhb23bn8heg', '198205969424047940045873928', 31); + T('110112020021111122112101120211020200011100220222021000', '26979604883978349681358218', 3); + T('40212411423333423310130132', '1219680442848911292', 5); + T('33573674763b69438683abab62467a22164846297500ab52', '1732108517557715522209626167916098168953157629532654', 12); + T('rhsop', '32662105', 33); + T('2uorbofow27vtcai', '272365401628221575069518', 34); + T('6d8ghigi559d3f7e0a56b66d2a6hc9bch8ac55d4', '498928139884483809004632946022741017481450018749395', 19); + T('3adeb9d5cgb6c476376578c83e5787a96a', '955161261560504360368030415364335026227034', 18); + T('31015bf359cb9', '1782296955174613', 17); + T('10011100000110011001110110011111011101110001101011110111110011000001100001000101110111001110000010011101101001010111010010010101110111110110110000010111110111011010', '14258780956329408244620868751517156468304535191002', 2); + T('a2ebaf', '98663390', 25); + T('7b383jj778s', '6031015850885550', 31); + T('cfkmcgh4e9b19c710bifcedk1', '6095263335022578606276134979387222', 23); + T('4300224402031123300102132244311441413342', '8374896953320607531654247972', 5); + T('23mudc42y3b866', '248890986859579133516', 35); + T('38ge2iga36c4dicei8g', '902238930978105211639376', 20); + T('12003010033220032023213222112', '108949482152819350', 4); + T('8de244ec358hd24g0dgh', '6208260500151952090111781', 18); + T('4os8a0fcvnesa9', '176262234589093130569', 32); + T('9266oe530oj7gq', '59035236811161304202', 28); + T('13501034310034411445543051511', '10069554545357101315747', 6); + T('13gja52a98le74g2kc1ia2ka198484h5k', '10621239938769010401661040302635515509442950', 22); + T('3lnfcs6hndpnr79pms4rl', '664104835931225383450432803211', 29); + T('1x2gvx3bv3dvianrnuc7', '247269945120794324823087129439', 34); + T('1e0m8aao3', '567086770883', 28); + T('40jh43vsm04ag', '4633680786357227856', 32); + T('5044045341615306051311146510', '334711131291030516548281', 7); + T('62577dgab82cc39d', '17565163291072020168', 17); + T('4440adcc7f', '1362287072187', 19); + T('6649', '8765', 11); + T('1056403052652033555205161605402426525', '2973189411870171183261703706762', 7); + T('4l', '129', 27); + T('431pqa0cg9ga1j50ehka8nj1nc', '2502289496753859425052816386077486242', 27); + T('5732613240167571782367688321087552413', '131081400058592141994418041108160236', 9); + T('962d7915a045dd7b469', '4031321067511146526693', 14); + T('296awxtwry1ofvagrxdsne2xl5t3lki', '47488752629003449774538666832367750089164079443', 35); + T('il6dkdf7ch5031gc2edc917jgf823g6b6b6', '83252721133987805751930856697199204387425946104', 22); + T('4215475722134', '293885944924', 8); + T('14235542532634022', '53950625103587', 7); + T('36818425f9ca90bbe7a5b983c074', '1105511449492687971454561936457844', 16); + T('122073687', '53724220', 9); + T('2c977359c619b2a50e368272a2e12faa4', '948358531678320636918207632756786264740', 16); + T('1ut', '2013', 32); + T('2795131101664a797a3a020179003a156600a592623472830a', '2896979920691545032875120949083037703653537561322463', 11); + T('io', '474', 25); + T('529aab41b58281bcc49a806552a08a', '1050423338673734373190153676094415', 13); + T('43g2adf3', '7527485766', 21); + T('2bb390cbeed37eb3cc07g3e0f9eca921051g0c3b', '2609684906236620171804092629180580497183714528610', 17); + T('2gfdk850am77j316jhh1g6dc51i95b', '8423594663327891685667172048428742806616', 23); + T('1rc', '1722', 30); + T('15375392648094006750a890b440ab8163', '591409515137761369963146900003400155', 12); + T('7o5p8m8g0gk6ijm8dmthif4kpq2r', '143800041458103826053584594867124604912372', 31); + T('2b84f927eg76786hl89h7b651a9581a701lc1199', '319331358330810708432381010329034594655582446439863946', 23); + T('3hja70k2eg654af9i60ghcahka4cga2cge8k5fe8g', '298299391287001975026249946197438275847645771779205835', 21); + T('g4o2h7lh4cerm0xshxhlvs', '2338404688421636123000323976076998', 34); + T('53746157770654301215760653406471005756045764305156', '980109855734296770512774083035337723940538990', 8); + T('1boe2lob3mb1mdia7efsfnk4a', '176313634322313784050394291476552120', 29); + T('6102895394796612a85173242a66933', '106319505266114007488585957212707', 11); + T('j002mpkdge8fq0l6l86ic0ac325ko8kqh7', '10838559599010796633261649462182374112236602961027', 28); + T('1222102113020213', '1783198247', 4); + T('4', '4', 24); + T('223f5489h440gf6f45c9a2g5c70h3c71bb6821ebag6', '111787604760465635211456045075716599160139971202176742', 18); + T('24010204351221200301421443', '75953507215165005411', 6); + T('1b97c7449123344a72d6', '39363370326873603896151', 15); + T('10011010111001101001111000001000011000111000010111000100011101110000111010000010101010', '46815908925437602817089706', 2); + T('6786f6aaa24466c66772096948176f023b4ee4267e3', '2420882788095960105392950361690122210695410931099619', 16); + T('f465ic7jijm9da7fd5i0m4d6', '317085199137891998237067454281872', 23); + T('1801d483751a78d3370bb6819bd195', '2717717024003799773996202145806191', 14); + T('223d90d52784663b8a787c45', '496625290357492852632525461', 14); + T('67a153a65674020736842a450841b', '10968126203942490133113632912471', 12); + T('3gc91839', '2404483767', 18); + T('fme77w83b549ckmtrq9xaw0c3jh5e', '119174546513911048622366013545047675421136964', 34); + T('1eon5e2p6hgwvqrmmllbuwvjvbp00o1', '5198336511245033811195969352539905871452815252', 33); + T('999909a7b8807176b3a561590620867616b0b2410887', '249347755823438371204577699931935970503519167975', 12); + T('1', '1', 27); + T('210222101000211020101202011222222022221200020100021110222011201200011012', '18337051074624686676362253945875828', 3); + T('144813', '339855', 12); + T('468dd654d147', '77575000215879', 16); + T('4d8d6b0d09b2e87896571e8', '367073963094640539910552193', 15); + T('9ahg1d933fc3a72g45497a9b2fbbdc95c6h8d8265c', '257081352042987479986034962212194285056550134922156730', 19); + T('m', '22', 23); + T('12dcgcffk0ba841ekmfe7mlh10e1i1abbb', '962384266581672850344681457680540073681275566', 23); + T('466d816c1a1', '4839758545313', 16); + T('6idfak3f1', '533176825117', 23); + T('21qydfvujgdwibqfyef2ce073b8p', '1003962989378222780097553353426096168318655', 35); + T('hid4leab6200ddc9g0hd0778ag2dal0deamlc', '187416244122839612888287458425399312143406757414849', 23); + T('9fgg9988817491665857f5acb06', '975227292551389311524714747927864', 17); + T('13ibo4hcadhj4a5nbfmahje6c26bmfjeh5', '195226174949035947407967016245360627759255669140', 27); + T('67bab', '138227', 12); + T('1403340621202787910a0285502741823a86056950691991282a', '176407038475836628166083068850217042878816946943609943', 11); + T('10t0oduu5hu7xeq3d5tstcm0', '171705160058240681451967384000803748', 34); + T('2312645603023334053206206506114311', '18999669376657025727125561163', 7); + T('352320175446067457668251036773504880876250056665', '2534236716512667558334635281810919815086530038', 9); + T('215b44a990b5064486156753173b6213', '6052053142903698783509806567110831', 12); + T('jh6cl8q', '7608361103', 27); + T('ml0m012enj6ahef', '481225577733348729759', 24); + T('66aa96i4ncuqe15p3', '4513151173544319269517148', 31); + T('4ggc16n1l01dm5978a2', '67904639129257439505583377', 25); + T('bdb10650kdg48ca', '37772529505037088310', 21); + T('1pdko8mej5i32fc1c0ipfl7m19ko4b8p5', '3769138624256537961669330967608079598594202279', 26); + T('d6bcf011b9965', '3777711518226789', 16); + T('7f16e2f8fahf2i4ac7k76ffdj9dkf', '81208999985742760703645792450856237870', 21); + T('597a8749344790975339207177217856893a700aa553207a7', '570862871205184623051159726110304643063426032082261', 11); + T('1g3on4nkha0onef5mnpg53om619q5nkbod89q', '5403365419155920691028033935258064905584695189712495', 27); + T('52028440551854348388', '7059902878123817183', 9); + T('5d630bb7df92gfga8jc18dgih', '925999331010922039840596084374517', 22); + T('1080144b0i1gc9d192hh987', '42782218356170060622665259767', 20); + T('22210300330232332120020121221030032', '780256723337944142606', 4); + T('j0g60g4jj54070gdkj', '571906447450030093189003', 21); + T('1b', '30', 19); + T('452b31479640239b9b639a853476a6bb44a6bbb7', '5434568005375437518663444319858934471487227', 12); + T('1100010000000010001100111000011111100010101000010101100001010100011101111001101000001101111111101101000100', '62117604478929274751724622969668', 2); + T('3jg9g040jnf688ahh6jcok583kdj9j6', '3284019737150995327641899557095386675302981', 25); + T('13022133211310011123230321012030003000', '33830856903016211595456', 4); + T('336f838e47dje06749he1ac0ffg15a45c64', '544073756599977257872783903178913691232684924', 20); + T('46uhr61flrt37on48b1ckijk2cu', '5740347931453676082842828840069448206750', 32); + T('112001100211101', '7467022', 3); + T('pkdd1ik4ok5do8ffh7141bibpd2ii2193n', '1275141665523532165934940150111953342128717752497', 26); + T('25a', '535', 15); + T('2g4b41cb5bcbg9dadf91c08435f69', '83842838314159505886654561772317800', 17); + T('2bs9rbjjd', '1573422884683', 30); + T('klf8ad0', '6434826762', 26); + T('4f85g7c4364de0bh2280', '9521123183996160458149027', 19); + T('j5679d5hjj97', '3945663570879787', 20); + T('3140424', '52614', 5); + T('5461a8382b009b9483b90a440400065186a83788934', '11378348078699777667231184166670745809447683896', 12); + T('33e4g067j05kf0i5', '433325785455399388953', 22); + T('b5d54c2d13cbb24', '126959326916907412', 14); + T('74411760251306275052060', '558193600905071580208', 8); + T('3qobi0x', '8143314945', 36); + T('bqwufrh1qns50r3q9koaqiskfw', '1084917181467100837895352646759177337651', 33); + T('8gog7p67d210op9jd71mmrn', '591719162913780893033433711729131', 28); + T('44ba0aa61oma07l6hj03p35fr7l', '175761910992404861930958631561896387273', 28); + T('e55691a4ae8194023d7e8ae5e8059974432acc', '470387544390600973185133828002346243787354817', 15); + T('200212011122002020102220210201021010110022010122021202020110212121000', '582778073711029575626711438957001', 3); + T('3hk3l521jr4lqaig4qf0', '251179674690390315785498983554', 33); + T('mnt5fg94627qt3qse', '16565095395068373496545234', 31); + T('3bcobialm95oah08a5', '2014430966081121686333380', 25); + T('4641', '4641', 10); + T('2122002121200110101112120201201211000000201101022120010021111020112021', '2197120323515351911893330117447634', 3); + T('13714bdkap72ac8o4e4be9mpknl1f9j', '3167116946002852306408351163567756537094769', 26); + T('1l50bolpgp45pobdlpeh8b91mgfmoa9p214loc', '615842729217762132092179913282546237871597211241972476', 28); + T('100210022201220022112011202221202210222121120001021112210121220221011010012', '220547687111185863624614511757145708', 3); + T('23202303201343231214132000144124220422011033043224303012231042143040012224', '2842011217102887511723449090629059947996251803047814', 5); + T('55963455889939073566595695050105', '55963455889939073566595695050105', 10); + T('986a9a06406031855545a', '6582892192043057625734', 11); + T('66mjdcnicmi516553hefq0j4h8dbic', '110427317002013536940850484529174252675024590', 31); + T('5d6i14h30e2cd14', '4557106641352576163', 19); + T('1c7c554b8b5b11189a66324036092ca89462bb420', '711595302242240761379226114335862270631136990', 13); + T('2kkhh5aofpg8q74596e9drfobmj1p', '90838564499601485405393795175496213959653', 28); + T('3034134553053502555553353040432', '686018049407535850038308', 6); + T('23738', '15911', 9); + T('4212222124151323425', '444042355913513', 6); + T('a7elnbdja8nj5m2hha8gjj6', '23890454338021551829445564632206', 24); + T('32321200100213200022011012333331112', '1099315331975916289878', 4); + T('1eb9ee0017fk30iag8i6f3ed9d4b6e', '5039295759456928282155913550785147389669', 23); + T('27802069423286155041889995717306694770', '27802069423286155041889995717306694770', 10); + T('867960525699c5cb061401a', '27323968410745294080357770', 13); + T('35d7n4q2bxot45uuxm5scro1tvo6', '706987327769754553481308742217767001081194', 34); + T('3e5mt3q30', '4823236902825', 33); + T('cbd3b0dd08123466b52d', '962545403373485503722797', 16); + T('41ea3b163a5614966ae7957bde8126e0a93d4a4', '23519245104289372491020812621093511206089774244', 16); + T('238038k8rcoor', '1658110821340608856', 31); + T('3hg0m706l428n', '1275595457674448025', 29); + T('35bq3c', '54966336', 28); + T('3d42f8df046ed6958fc5b33d9fa992b492f1e', '85386222153107555893245630091838241326575390', 16); + T('m0gmnxts4h8p6an6ku', '2386980155865318111096328630', 34); + T('132cibe94hgc', '236874990279132', 20); + T('lcig0galc', '30069875475102', 33); + T('16bisddgvyhcthdd6mi3', '256735802970771139963215358583', 35); + T('i58a6g', '58468136', 20); + T('3525', '1293', 7); + T('3gkh7gij7ie', '1065634675177142', 28); + T('c6e2421', '1818992997', 23); + T('100200100020222220100002112200122110202011112222212202000221121212001212102101221', '158966224837100078693781454905147589627', 3); + T('f648df4cg04e1b26g221bbcf052c5ad0539cgf8cga', '4315582534924165708877106720565720519480837388903874', 17); + T('2p6aphhakh8mc5plc5j2gp', '1539390179865627184775927891721', 26); + T('11b4', '2513', 13); + T('jl7kjm7n32il1d4nmk0', '584261154838235821573009240', 26); + T('hd9ba149dh6e4gafee8', '698476730595539737056020', 18); + T('3j1g22je8lf5bhg8ilk629ndjila21lhg0', '13370053725951634183200009583712537939441657280', 24); + T('27u50bmqvtha', '156658788335426776', 34); + T('516h17gbh7da3a587f9f37he33', '122298188975115485587298035337289', 18); + T('4b2a649880a0367630759204aa1b75475b', '2024946574268874581365721289039689783', 12); + T('254225026012443321355065156140330663234621542653300', '5040887501845594508322543821207461070163390', 7); + T('202011012221101001100122211001000002022111011121201222', '43410492801425593645350452', 3); + T('7', '7', 26); + T('577115015776462242165511716153070323513627023272', '16688555517189422187103917664151515791369914', 8); + T('506444b16828035a216871011b744a221a2315b', '514848138656395936699051891875368909651735', 12); + T('2ao0kqth4t1pcbh7a4', '30477411673928429295975604', 30); + T('2o35odgjn2jo1a94haaknk48h3dcnnc', '2571886141556160166724302520638175571686837', 25); + T('67', '55', 8); + T('7nbr75', '402672450', 35); + T('370jc1indcji8ijma13k1938f6eg', '60716324784319268778229637859744954592', 24); + T('72967942960049867762435665277391293551369688649986', '72967942960049867762435665277391293551369688649986', 10); + T('6sa', '7898', 34); + T('294174393015', '294174393015', 10); + T('73807c73ea415707344a', '160403961758478608615470', 15); + T('11100010001001100001', '926305', 2); + T('235b15k4n3982ht4kq', '27196458988445840025157226', 30); + T('88ch45e7kmfl732o6qm9dp9k29m4qnh36alc3', '28111637207061985918949614744842625868551463394743253', 27); + T('4aibck298h47jj8c3an0eflejeh2', '82024129949273334698484088931402810138', 24); + T('mb8n96ghp477069ld5hdqncdccpe0q', '7247302454506934271382941736372903791832556', 27); + T('f2baa0ic94g5i1b83fd33g2hce1j', '2030554880143475280397062737673221639', 20); + T('17465535030523', '1072356929875', 8); + T('a3mnq3967n6c16l7cji9', '31760096086178432274519348273', 28); + T('liiqmo', '372897696', 28); + T('1opx6hidp8vdzknr2', '13423618670694897535417406', 36); + T('95m4odhqe7b4h9orpf', '66756845457585399045539197', 29); + T('13317', '5839', 8); + T('102241442', '1794050', 6); + T('239f68talh6mpj24fdo45g5s39e1389', '1159960371112212929883230396521680545356867105', 31); + T('10121234300252110055303232340504321110', '64247287136397682542328003650', 6); + T('6ml5j5lmbg9j90dba1mkbe', '1572054598386072574697608169039', 25); + T('2hi0', '20197', 19); + T('43cdb039b196a4010e938a308889bc6d70126ab41', '470755174678153103704950155870502047761506218161', 15); + T('4442b058b9763', '38899171257339', 12); + T('2b61', '5113', 12); + T('2734162636214', '201356688524', 8); + T('391dawskl', '4604605109961', 33); + T('1110101110110010110010101010010011001111111011011000', '4146450184077016', 2); + T('11132123322121103122101112223320301301100', '1654887842635132747062352', 4); + T('morem8755ban11441j1', '2561728804654073084523891749', 28); + T('219325241c390905b1', '18439460011248535663', 13); + T('111660012024443044042601641430256405054463532100311152514563012', '29454939227794636720645039138734936559113026503970971', 7); + T('2res55qjde5rbj', '30256919008754218863', 29); + T('514235610013374235501066012045440247061144570241', '14474060683475264437751372654279118864707745', 8); + T('2bul9j', '106774265', 34); + T('314k24yu9p730k6hlpswsrg7lje1pyote', '192003039777745220557413924708457255464807291072290', 36); + T('0', '0', 18); + T('26cd5g9af76g717e867e148e28d9fgb881b', '1640454531676645570762870476133782871483910', 17); + T('oqpeub0p', '853405543449', 32); + T('3ebd71a02', '64015510165', 19); + T('1ukrr02c8plk2tbsh41fmftqce1e', '36771157999423113295070824371683506360213', 31); + T('2003430034331000233232444424241404340303121021220313202324234334410424342140', '53769918856434339956161867351165493334635002404137170', 5); + T('544243155105110423', '98014695681615', 6); + T('17fdc28hi', '23980123515', 19); + T('j307ogn7m8', '145736706102857', 27); + T('7fge3sgq9qsrsdd02rq8knk75dajgn198p3f', '11511172676350799991011065866253721863347287895012897', 29); + T('hdeetqc', '15473116595', 31); + T('9a8c07c15362316cb5701668', '410109005226020106060632781', 13); + T('50n', '3668', 27); + T('2945877220049a90093575774827929', '49828341800440814243069556167882', 11); + T('ce45xapw3bm94bol9ughds341c', '2403991013021267385347874576469551271030', 34); + T('423304243332410224213434434222423112', '13229055276162993153326657', 5); + T('0', '0', 9); + T('76f2kc270hcol', '692157402620182845', 26); + T('3', '3', 15); + T('6nl26h4sjjeu2o6m07bl8lafrq', '130087953347892837054523599720072286649', 31); + T('6gh', '2487', 19); + T('34l13l046dp2ginpqjagi9bdi', '4181142245164401129320919247203118514', 32); + T('30413552001353013220353015331', '19152449789569897624327', 6); + T('l3e2o0c0jm3fop5a', '62425993275542993038219', 27); + T('djie7cl09h1fjae6jkf24hddb', '2297349384615200133513075570628245', 22); + T('29c00c467ad2297fgcebb1ggc65623e4f930', '29909191785719748871453419197824524959368206', 17); + T('2324a5233', '5664701748', 15); + T('3ha44k4jux0pu2ibb3381c5r38w68nq2d6', '3144597894719011198697132550928807872754550797197661', 35); + T('11100011100000111011000000111111001001011000011011110001011110010111101001001001000011111101000000011111101001111000010101001011100000010100000000001000000101001100101110110', '10640405756706933069932552513853268918056402456582518', 2); + T('4hkgai2g41gjkkfk28k0b2cbc58j', '2433652428912036105474056297252338648', 21); + T('f78gfdb425bc4dd73422de8d9hi37ahhe3c474e0e', '21750452433737224069756534727541495878338776132463249', 19); + T('23eme2rljlt0dfr12ro8s8msak3ra7nb27hr', '10588615039451549196330996020739733471641788070870837', 30); + T('189397lg7l47n', '79549303381971448', 25); + T('4wo15q0rodat47qheu0i8dfsv1r6wqo', '43653736667927410786469653245862403187138436044', 34); + T('10002120112002010100200200221222120002210222210022102002221020200011101101102', '1882808015430216703112943141384175547', 3); + T('ip', '601', 32); + T('301021404444300333431124040', '4535598742859239270', 5); + T('48d54obq9brm0c9aapjhi5m3i5s6h4', '11019306556204066307913575375918358320537764', 29); + T('50g4ll', '32379007', 23); + T('2247560737886056563088784666', '132701908509217706410444191', 9); + T('83f23b573f02gc6ehc9hf99a27h', '3561270466397699675623785225228503', 18); + T('330977844350743989365961925052001832148516', '330977844350743989365961925052001832148516', 10); + T('lrilmctn2s8x6rx3w07thrhmon', '17591718481915563097535542071461139053591', 36); + T('l6c0458gj9ngja8k7d4', '148452363181722357676361980', 24); + T('3534775621556047145137126527746324006765443367053164', '42036808204933511970427575795842368941701486196', 8); + T('4efid', '623080', 19); + T('1l6iufezrq9zhljcarptf2pvb', '35662422559916045014345714581704950391', 36); + T('2c6d07d3g2c15730284663', '616677193007865389311834215', 18); + T('1xuy7hnx04lukxy', '8147224799381093225064', 35); + T('aa828911672415968', '504404529377026737', 11); + T('423147a7a23756807a665a5', '342517176925712535575988', 11); + T('1371035220605170410066165577113314501175100', '126452315889789497901223436832123189824', 8); + T('10djj7hy0pn', '2789079501903648', 35); + T('bd88a7hb69bjad4c', '382437456673894325292', 20); + T('4rd', '4694', 31); + T('1v7f6ffg924wrk2picsg5ttta0ia', '429364493553457680681114867558750620331758', 34); + T('2k76jdee9', '313272045273', 24); + T('123042434342420343211442034202400443333133410423', '1085245063387282023154479674513238', 5); + T('131333311230232203231112021123001300113120032333023300', '152105319842008098107694289515248', 4); + T('51450362621322470420', '749021597016944912', 8); + T('1743281026180240084', '274931041666976077', 9); + T('1gv5s19r8tko', '55140372098348696', 32); + T('3110342443423203112413', '1547942848488483', 5); + T('2u566xr8ccdaqbh6c80hxj89cpswkcu9t8', '2575249682730886757243709065864952197950034185571423', 35); + T('100000010101', '2069', 2); + T('401574b6g1ak1ak44m8kch', '157978187599619061617502135471', 23); + T('2ks19ota29tyw3r5ov', '738394685619991470364891279', 36); + T('oibk25gf4o23', '1241117724903340848', 33); + T('4a65', '31165', 19); + T('2020211100001120022201021222112000020', '338142311987848269', 3); + T('1110112010011122000221200021001010120001112200122211112122201220120012102211210221', '649092111671534536930325932482290711269', 3); + T('4d6mie8p2alme5am', '13267418111464317128518', 27); + T('42577131133a232032662209b95408096081', '248422206977724611904731225962594664929', 12); + T('1n', '53', 30); + T('132103000344313341', '1288575776096', 5); + T('6jmt943mg0umthea6pn6q9hf', '132823934112197986003728246640958089', 31); + T('111121000010012201001001122', '3838995704177', 3); + T('1677676576173b51b9357', '5953759059536287667635', 12); + T('102jba5ac2cja', '95816830507621688', 26); + T('42waoqh9taak26ebde6k2', '9594733085680997313599473375961', 33); + T('33i3it9kgf0uhpdsrdsnsj', '64884487071552586313401842309055', 31); + T('953158728', '953158728', 10); + T('4gg9sat', '6927952297', 34); + T('722e27159ecfbg10h407345c8aig598ddi654g0', '27840770996812521761625900201217611244514913752965', 19); + T('2t03qjlt7x5twkp8qndne6wgdq0r', '638613689380489298155684957574955359701995', 34); + T('257734a46f7icbh9fj', '29732309036426152299919', 20); + T('c', '12', 22); + T('5', '5', 20); + T('4hqo477259', '49098912593397', 28); + T('178a034d5229384107a', '659300251029847390372', 14); + T('a3b1b80751b', '639453463079', 12); + T('2q422mo9ap647jsdo', '726063595260133145012147', 29); + T('2', '2', 34); + T('24hfch7i3dh6a51k8jeii679gk4955cb55de5', '887846405096017197440980451741450143251200403470', 21); + T('266441154454153132', '696261848866747', 7); + T('2766c9b3d2db9ea5a577a00847a3293d8939823', '1226312698204113502459283231484488118966971583', 15); + T('4', '4', 8); + T('41726045554731777722315562631262755462314641246551410413772', '101522180338987737728899908294640200607836241899165690', 8); + T('ico5im1l6gipi5mncbafaijkp1', '4379692464186729985302450182878794995', 26); + T('10fb906', '35653938', 18); + T('3ef7kik8nh207bh7d5j70bag3epj4mj41g', '176077548195361303192424319318361820663061066322', 26); + T('15b0ac7a6aac2113c2db3ca1850b4387777ac7b', '50486609943116788827252878271742473022089629', 14); + T('p', '25', 28); + T('26jfceina94oa3454j9dhh3e6j7kejjg4234', '75531629983146118263655855521646711760476817989082', 26); + T('31022130220010213222023033003011321112121201330333321013331222', '17496945529151877267572936509934042986', 4); + T('o29mcf83oi4b08k', '4384699236470516280372', 28); + T('6btaxrktbscxnb', '1079469584074493701463', 36); + T('b7jl677jvvi7io7k8o5juejadv', '1030942310965426695181339530150102930538', 33); + T('35ig9la7', '11075108265', 23); + T('4682fcd', '105751964', 17); + T('8d933590baac338cda4d9', '750978790972524648878031', 14); + T('7p221h60dnofi1b', '513797078081391814565', 26); + T('5814844bc69', '1613521666101', 14); + T('2535134113102123350', '298694173861650', 6); + T('1d1ag75228ddg644cc125539e4b5f96f6', '4192146465970754575581869917056003117055', 17); + T('40003033353315404140', '2438896653963996', 6); + T('21xn2vnm91ln4xmsr7lgcwth9dv6q5ukdm', '711811184545142701110316372055176235138545025034656', 34); + T('dhkcpvs3p81dua43mg', '524235584720684984089841360', 32); + T('495fcaa89e8bbbg646', '3763874598256486747577', 17); + T('nahjm1ll5fh41hfjliikkid088bdmi', '249014596602561282054902123492366098035042', 24); + T('40111000144002230310210303210044222130402132411', '575483485884632505627426105114731', 5); + T('3726520073102165257153311', '18508139224259054327497', 8); + T('i', '18', 33); + T('107a5b45606177a04b292a', '48520908714351770811826', 12); + T('32b712a55', '2628417862', 13); + T('19h4282j092he3cj51d61fe87j49aijib625a3b', '257590807854928552405178656994213410865026962322433', 21); + T('1lb4ep0c3a14inkjjmd9q91', '55412392011791736985105645077409', 27); + T('546935971318244194705643405', '546935971318244194705643405', 10); + T('35313224023324540435523050250331155210203', '52453055717382339610852843153371', 6); + T('15193624138', '192278230399', 13); + T('2', '2', 28); + T('3poq733', '4086111331', 32); + T('2atlinu3', '99312069288', 33); + T('fkbskc5fehg9cuqdijcact', '7490176084806938114482789713939053', 36); + T('1d9plprag6q9qcf2t8lr', '16786382574488616380634910857', 30); + T('1ha2nsdonr7p9dyd', '327188362472580029633509', 36); + T('111044424210411044040300133410343042444013312004333103402304423423', '3382637550594455513139626004317778571489529863', 5); + T('acppkmiqg3tpomqk', '149640867231485432618600', 30); + T('tf4', '38128', 36); + T('1dh63h4o13b35ln0li033b99fklhid632c5lb', '327715658396590402208146044366411318465199249019286', 25); + T('48', '76', 17); + T('ae7l6k3q8w6c72qxkg2fb', '79186912232612253291296402267111', 35); + T('e9n5bbn1i7lcbm1g05geb3dk94ep7e', '1555968092781480866983906031197226493462360', 26); + T('7ubmw1pjt3l57oajqgrll5jph8m94g8w', '2360795619253126146184916535662718674178380996704', 34); + T('1r65rt2trb55lq22h19eapnidnq', '484704933472164164552752255631996628416', 30); + T('136848467048258286126300125028474625160260100577417745404', '388690899361213038703438733086886750206857769355496235', 9); + T('g9cc', '152409', 21); + T('1lh1ecc99m7861fik3c44lm0g', '934238414796316634228162970694355', 23); + T('3215000045', '134002244', 7); + T('5h6n2', '8240157', 35); + T('e714krve8kdcbij581xc06a0440si92', '298097214434462329831651763900675946445833904117', 35); + T('1', '1', 28); + T('5f2ikae7i1ch6a10dch', '8289858128215684549179261', 22); + T('110233030106104754146604170637', '174817507453714537420747167', 8); + T('2nun96lb71g85sloh47bpp7r1sgbl9tut', '10662007558514444968621546451733698226110473802612', 33); + T('0', '0', 22); + T('11j09ae5i2cg', '2552089982704691', 25); + T('bkc8e0op1mo87', '1764757861634423806', 27); + T('2423550141325415012042301033404550435232245255441054030230', '620111545601390684890879270195626493023037962', 6); + T('21254414445535530534202215310522321041405310511521521210', '14135465583609025304128608335209973245692774', 6); + T('12604595560023747679439524152220210561427659802303', '12604595560023747679439524152220210561427659802303', 10); + T('25331131324141215022', '1786353731930966', 6); + T('8fhgfr7mfhj5l2tn', '320586536359265220332471', 32); + T('650643875157180170d14d81c9b', '23995660583887604305815556001846', 15); + T('a8di63mkh6j72or7e5f9p821il41q0j8fgd', '1714712023081629097084375038192551872981528239619993', 30); + T('10331300311210202013221033', '1397536800143951', 4); + T('5bckjekkjgc1', '30157465514958847', 27); + T('1307pd9inl8m59809e4e9hc74cf44', '4643603931817311396953878999346150129672', 26); + T('1cuj0rq761f8f3ruagfiku4t8r5csao8ldia', '22368007327103577567192720592619403223865279053466023', 31); + T('3210245134450313253351101435530534', '160603316899608463616006554', 6); + T('127392d2a4caa', '66893400725574', 14); + T('2ikak5bkjajd9gf8h3cd565j199beg3', '13474955681660365951671452544344812602258', 21); + T('3eao5e8450ic', '8529544513359837', 25); + T('e9guf69', '22058758689', 34); + T('15158180900', '7766337557396', 19); + T('2mj44mncbs4hs2198geouq5jq19qjcduq28l', '43028515822351712961957527689171615902026923021969323', 31); + T('30esr4bjaqcjo3p10b3js7kf7415bjsl3abn', '4609195958142232639596012908552014584998492990749496', 29); + T('14ehrjk2', '15672492194', 28); + T('bc2c51eabeb4d', '47540354209876493', 20); + T('1b69d49b7b2391582a7b6a8', '29845378456995755608746436', 14); + T('375099280174972588499969848346581', '375099280174972588499969848346581', 10); + T('1b', '31', 20); + T('185008621588745454705101543580381764687780441351', '1379122328542048273411929412033977767884857859', 9); + T('1ai80571828g1l13b180f49h7b6', '373322096841196369617565471577760841', 23); + T('365562046046280128146688864433503', '12828940182695045910972242404065', 9); + T('1122130130022320301030133301123031201221230031', '1749448690563478934830619405', 4); + T('27421303721506401005734534027062355252748655124456623', '118144497372701082723759261444994330066950112399602', 9); + T('11022211200211001100222020202010111210211000211222020112201201212010222212201110', '71070272534459599139697985336272797397', 3); + T('10a4786b212c23234b78', '1551477993551070203588', 13); + T('6i51o82m5bgnb93011420o75b9nd470729n', '2279577849940632952238972161001397266163154407748', 25); + T('1', '1', 31); + T('1g', '45', 29); + T('17llodh0p9p4omai6e01b4', '674371603170934289782308835302', 26); + T('ld54e21eh02cbkfbaa093fl55bcg8364im7', '429238038060162231685243227854062073708831450765', 23); + T('7mpy6nawcmhw0g2u', '1108330902717012441427200', 35); + T('6ajf4ammhdhb71b6954hhkgmb65bh6ghg957', '2961483371926675845110593572135331590333628729021', 23); + T('fba75c3e2c8a777f', '18133563846735591295', 16); + T('pjcqacl5cdendipkqb70ipo5ba5nn', '307951112168204374490658438192806014671308', 27); + T('6tun5793cse93i199uffmqgrd0kh', '128777919986710631701713272631586482084386', 31); + T('13a5t7mjda9ou6rrbpfa', '23997647707013581885686488193', 31); + T('7201731', '3839509', 9); + T('11641233332213532446', '14562466660945139', 7); + T('99a986165294448a71', '21797994356398731253', 12); + T('2401101411122303434111302420203144', '327094274822059722428549', 5); + T('4144619d2', '6041074356', 14); + T('34321447613754733467632640535662447106103006103436', '633549261053883686239613232774717922594031390', 8); + T('3xaj72k7juuw8wjlpl8ckfb', '67994205225961269732014170337721959', 36); + T('26148k3kima2ag9i6kcoiafn3ogb1k6eo', '1215324793757930007410045265759556424912816624', 25); + T('1025206642353532', '5014780923889', 7); + T('knim5m76a00h2lmkoccol07f04knh3b81daj', '2614651514382553773659324279451802705234366596554065', 27); + T('909a9a268692348781a698093878', '119072460849132927971033373039', 11); + T('5duc4skq2rrunqptmcpc8', '3661917045452129831279130480136', 31); + T('10470ea350e01dd0e75a7366dh77a30b', '830413508341641695220604349217566325431', 18); + T('101000101100101111110110100100001110100101001010010100101010001100001101100011110110001001111110010010110100001011101101111010100110000000110100110101000', '7260976836577029672818019365254002054979938728', 2); + T('q', '26', 27); + T('1077074290508987607466933a10', '13937973055009429267248363869', 11); + T('1lf3eee3d2sbfs9ogated9t', '538748668557436691784615710879999', 30); + T('1h9cb8h485', '620046063560', 19); + T('dk', '358', 26); + T('13241431430411013330310434441310033234333013212', '243729894988914189325871229969807', 5); + T('18917a008279a324a66a3', '1212930867843585167566', 11); + T('gfgfe19f636c1be7', '48492131801646439905', 17); + T('100122221110210110122111222112001022221002012020122012112011012101121100111102122211221002020001101121100021112', '32679709809245815111430154357022862731776016143211796', 3); + T('281689658717189228532b0585c7a77384c774', '431443448247936435069993946707949525906845', 13); + T('12502532345305244100314200520130435541150024035250011323125030', '432380196346644742357025125509064993551796602762', 6); + T('jhf3d6ec', '35740674639', 21); + T('281b8h03e2b4568', '3938599428744194128', 20); + T('rra3eo9ang1nkjbgggoj8be9522j', '33118535163106500657229181745691670041643', 28); + T('16724077876370768542274160467677713', '488519835671298139694841930475413', 9); + T('5paaj8r2vmg77onwoimbb', '13527973399537075043951910147074', 33); + T('12c94030', '127283226', 14); + T('bjt39p1qaevgviriinv', '14387551065792537297755392767', 32); + T('43', '75', 18); + T('7ep4eb7mlkkeh37baaejlo39odlhmjp84dh', '9739053884128074552490865807121378544532459516835', 26); + T('205168664a2c', '17495412563292', 15); + T('qp51qp4bhxk5xpi', '110602057480221626740068', 35); + T('5a4d12b4ii8cme6gk5llj8dj45eii', '731561718476390279418093411754616519803', 23); + T('15gb1d3754', '160300118210', 17); + T('5626616225462155434', '9637056328483581', 7); + T('654a4c9aab6db6aa93cba723a2c6484', '154437158573067708419825110074369876', 14); + T('1010010010100000101011111111110100000011101101000100100000111001100000010101011011000011111010111001000111011110101111010000110', '109413864136821966738078269201594670726', 2); + T('mhl5jj26bffelm04k15l49fcik4j', '133104314563536506366413132367074503679', 23); + T('9fi00bhiic06', '2006016761428806', 20); + T('32097811179437438638590235847063', '9036190162614205241654679982433163', 12); + T('j4r8gmegar04bpj', '9165914535009266218669', 30); + T('fe9nphkmv', '27537217830419', 34); + T('19km8am29a5lgf44lmgmli52jk7am859a778bdm', '7966769005196291051847190165381447220788995817722931', 23); + T('1d98hdila12217', '1365501640827240607', 24); + T('4', '4', 9); + T('103408764722834675342275873a075472522265', '42290766920392525491850559747134754129335', 11); + T('40145342023520434603630305455', '1855754698685829573314702', 7); + T('2330143431434321023412200330441401404220433113243103233304100213', '295242550269530830933574434277185767468034433', 5); + T('52lfpjk6gjpe8h0j5o085705enhh', '2263111846247859246807588383287598329958', 27); + T('6', '6', 35); + T('ckdc1n59j5hm20h2hne7', '9802463620743345899194619415', 26); + T('74vyqpfst45qaxxjdnhre4anybk5mfljczf', '585768757405889601439917672060830645196186705764956539', 36); + T('25333005405423404431150032421232424132311504103', '1829167166770747320900573042647616039', 6); + T('a31a9b0c189b5604675483a87502864845b', '766374537111738699661732942419840514807', 13); + T('p6h4o2o7prsknugn44ahp89eq3bc6quhss', '1178753525703649096388315386598744840163151378859932', 32); + T('49opl92p19df0knm8hp4gn7252gf', '701559229806255576316878885678199202687', 26); + T('11101001010010010000001010101001000010111010011111010011101101000010110', '2151676161178286545430', 2); + T('c44a45536316dc7b0c353aad14b7830d09c2aaa3607c5', '3310452953174251067352010576935718387727695162512521', 14); + T('1546474620083335460588111104874445', '49874778889357532913325826762540', 9); + T('1338003447a222244271a09305208a90b51b1', '904051338548505527200275028870151876053', 12); + T('33260652734712254347', '492610547748526311', 8); + T('10643055642332651415554523356524323', '61444932294731769038022280425', 7); + T('3e21s8lhau56242nlcla6rmjoiue9kf5f', '5026850379275392936691910666263310074025543875759', 32); + T('4792739119043471aab4ca622058650496013c96c827', '3644595850902778704692127204892999955943240641053', 13); + T('110cc5gb37c8', '67978664942084', 18); + T('29615025419685937529', '29615025419685937529', 10); + T('7lmc', '123062', 25); + T('302702', '486664', 11); + T('447', '367', 9); + T('42121511051155513325202314155012551211041663406164645351603', '44712944643337807555851878205053325752326477807548', 7); + T('12rslb2mm9188nl9wr4gc9ty7y4isn4i4vl1', '1190543759247226965370117450905999428839676647370465211', 35); + T('14kkhbjl509ej5bhjm03mmhai72lc3fk3m0', '101720279602301692133681010267630420149945544912', 24); + T('3dbguecegfef5bu08g0ac2', '71460045177172533150728371041297', 31); + T('553d041d97381b8b08049209ba3', '3387541749393070534320306028403', 14); + T('1idb05jl4446g11h344b1eaikhbg', '3248342745065968412361931577840440806', 22); + T('391kdm2ia', '265857054704', 23); + T('d', '13', 19); + T('2foj', '74760', 31); + T('15152500051251431501352430050404005030331044424233', '254129829633425094552392729656769925213', 6); + T('93i242f842aghgi8ed018e1d', '2374115750141125588719021780660', 19); + T('13e7e73ifh5i2g3ameacble1eaek26e2j3jgj', '12182402836527839156286030802586331869647012229654', 23); + T('x7ann37tsvehx3q5vpxaqq1eo', '745474840780903891388495474305666096032', 36); + T('23468822326408', '23468822326408', 10); + T('209087', '513319', 12); + T('ba4c030c1374033d446177d0a2d045851266', '152797075747889508739869970552336948630314', 14); + T('b4ka', '119514', 22); + T('1g6b8h7486qjdwajnef1', '317929058502405198044902984426', 35); + T('1', '1', 2); + T('8icmpii9daod', '31973718431183165', 26); + T('2c8jhn1qg6n5', '13655372424481868', 27); + T('3dr0y9yp1xtkd42c4fw6k3', '903807188407354488131442830742553', 35); + T('6', '6', 29); + T('61829970', '220025892', 12); + T('6a7f74151fcc6ed8ed2b3f19100', '135002082526570912993917396947200', 16); + T('a71qu3m9cxks', '716447809640070456', 34); + T('1332111232033320011301003033232200111310000111011222210002131320330132100', '44022861335477932950560265835710759372572560', 4); + T('12021101120202001100012212010220010100011102010110021000111202010201121222002102102122221002101102220', '905995283475954839283786144849547150961766784239', 3); + T('dd0373aof6fk', '74945293912339265', 27); + T('6795977293774152225212538650395631193808973258378', '6795977293774152225212538650395631193808973258378', 10); + T('pm95ag59im21f', '9117644977445972259', 29); + T('1b56', '3378', 12); + T('4g8ea53b5ehd9694ih3dc838ac11c561dc0hgd5', '19047736684211855674982504436903813834471230419734', 19); + T('11110110100000100001101001110011101100010110000110011101110010101110101010111001001000101011101101100000010000100101', '79996489761592791530139097880724517', 2); + T('11531554acc00836794199184218445c5218c222b61', '67628655578352237505304598601215330350928553080', 13); + T('35291', '1955549', 28); + T('5a0d410c996ff91fce14753b986e36ed02c8038a', '514104745647653703895348991238314574953430123402', 16); + T('98ef2d49bef8f926076d15ea07db47db', '203284532859688206391148792201594226651', 16); + T('1101000110', '838', 2); + T('2b1b51h6a9a23eg4gfg65hccjig37d24ai2a4b4', '70201256484595753224630835840712606388793018001824', 20); + T('3086551513a21531959700a62389709283423440875a1a3534', '3277335942462557850196574034226034230391750988025359', 11); + T('2xagh32n24eno24f2r8cfjn', '14679210071634068950133360692505241', 34); + T('4605666016246640266213126434411416031022605203144100210325560055', '849411127852458866731338127021230286264433815611688357', 7); + T('45nqegp1jrjgmjofhmn83bcr', '18133891299810930196922310944355618', 29); + T('ssrkb0jj', '500219805132', 29); + T('1033032010232122200222020213020010', '91334330474893046276', 4); + T('110353378073354064510546137', '7210867946142586075586503', 9); + T('3406105036448313018', '518252281403001236', 9); + T('flvh3l2mdlamctv7nm9agrm133', '1438094370381119663687960958424282684125', 33); + T('6334358463', '6334358463', 10); + T('35c614c13a10691', '38009608424197159', 14); + T('11010000111111110000100100100110100000110001000101010100111110', '3764941434990646590', 2); + T('498c3d13a1d760', '3721053183465240', 14); + T('e140rellefn9phhmfp2p0did7npg4d2a71ja', '21442464367275264053737247138139660244488577062935044', 29); + T('2200223332021133030213020133', '45229383068316191', 4); + T('92k2c0j8mj00', '21725079534730625', 25); + T('38q2bdu9tnlwkgn34qhgbajcp3fk4', '10775935475547100477756815098145914310211171', 33); + T('13212', '486', 4); + T('1021012', '923', 3); + T('bj3l5080jlklfibj99gl230bf6ikl76kajcjk', '124541870118109694822199814329231541722666270319503', 23); + T('41eojig6v4m011hg3u4hyk7wc', '46139830864306341644172166605630244707', 35); + T('be3203d11fa9ca5b4', '575872105144800539244', 17); + T('1143442324240112302414320334333410111030143112344223421342030211131', '18863137177859377006372116620735071224799069541', 5); + T('c2i6d6kf', '55565364591', 24); + T('1969', '58545', 36); + T('25d', '475', 14); + T('596851a668739904620', '32659692732589912924', 11); + T('lv3', '23895', 33); + T('7a7c175', '183805569', 17); + T('76cpgp9gim624dqmkii8d5qbqib1p5br', '15595823047616363439274756729939503861036829536', 29); + T('dga1fafagg644g0fe', '4000702988803940637805', 19); + T('1acba9489c62b65a4b89b66a2ca29a5a221', '138107096676865488162009424053018420376', 13); + T('2156543644250631306263231223052110364562324313246541265', '9779427167319853821850991345749633818069902582', 7); + T('li04', '846196', 34); + T('h0h887omnj63lhn05cebu7b0gs9', '10146394091043760918958586860739479666458', 31); + T('49b5633djac5d6j82i21i33dd8ac', '601048929950921960604242992843787412', 20); + T('64246041612682857608', '8747501280912207998', 9); + T('30j2mbl97e7eg', '66536342778013341', 23); + T('e', '14', 31); + T('ckqc54g4jn8ppf12', '64984930998994069460686', 28); + T('58a8cbac11b2ab6a129d3399', '1291579933284075416907209643', 14); + T('26vq0dek7', '2439340538503', 32); + T('130023655', '8241595', 7); + T('1102202120121121002222100120012012221110010110020', '114515542030739621547975', 3); + T('1992566752847870721677784', '1992566752847870721677784', 10); + T('1100110001010110001011110100101011101000110000011100010000110010010111010010001101111000000111110101100010111000101101001101', '16975625492382937650444877242569558861', 2); + T('2rbbesin701sp', '1547900614446571765', 30); + T('c5q44p3j2js3kok0asn588980a7hp', '1080508918419483023850317169372101858474032', 29); + T('941egd5hb1f5e12481h9a', '117639049478624610284913400', 18); + T('4655600500', '1834889031', 9); + T('79088597835694330a29', '478556138580736188025', 11); + T('iqlb3ql72', '5363996629763', 27); + T('6h2ej0ckka2ke', '50134882009333016', 21); + T('20653232085716', '20653232085716', 10); + T('3198916b5130ba', '949252404083214', 13); + T('1ed53c612a9ce8f563380bc006af575169', '10491910079311728745430929182060466098537', 16); + T('cb6hcfa270ly1w8h', '1784912231557744137344247', 35); + T('526b56b97804', '176181942855498', 17); + T('26gem7j62i2c4ka2580d8', '9160982641229049777224024384', 24); + T('d6e1e36jj2f4ge85ga001ig2ib', '15132464896763908208949954242501531', 21); + T('5upfq7p41fw', '16214516102201407', 35); + T('ca0148216a132370494579c3811c9528b2579bb', '27291858728033467909120034313500390261718897', 13); + T('123020003', '111107', 4); + T('a50938148a435a83', '531761988603885367', 13); + T('1gj44qmicab', '662398178858335', 29); + T('11102787284451943115992270196016750607834192358', '11102787284451943115992270196016750607834192358', 10); + T('3b062213d4ed1b6d6621c4b02ee73d12a00bd436b0e5c', '20908546194267013369961168110558040107137325813741362', 15); + T('75akcpb3de2s0jsnrh3bcu2g0', '4449836213108688141279407743308365708', 31); + T('2b60892958b2631c6423a326', '120333156700155119670331895', 13); + T('42400114311051151043215013041103042421240541121425125454', '27935245721852777377012293595535900324233642', 6); + T('55qs1hj40j71ig0m3i6hh60pq5qp', '39627138353823040931217142004547884957305', 30); + T('4003040210505622', '19032912241576', 7); + T('223022300313310221001110032310212133130201333210100220222030031000000330332300331203', '252361472917175591010150696208672808420570612567907', 4); + T('2o0hf18glq5mnn0jmafl78op7krr457i8k', '1630303300352983488506028827484775858825533838676', 28); + T('hjgo156lifg', '3649805981664910', 27); + T('2672ck1ak9j3668idig9i', '9094565766877483628951027946', 24); + T('42558a1397719', '236437228306155', 14); + T('50514031666626056320465152246460322326631121443656262634540', '52944692260629312711052610581234760210698420791042', 7); + T('223645618550327621756258550420232724400738370', '2199636652234003810100969121876147258759993', 9); + T('8ac1', '147681', 26); + T('3ga7b38ggh0f88d744c7c9ha', '998035919010781157725464776885', 19); + T('103211011033132223113233320333313313223201302011021123102231012121121003202', '436635316515833678899653582525236295625969890', 4); + T('d5l4dza', '28635977926', 36); + T('2pdtlhmse6eg26s19ucis9hfldid6i', '124654514568801370471033136141160922807350482', 32); + T('52felh5gh4510kh106jeoj7cl5kj11il5', '2767399766384557104422717154012442967715261780', 25); + T('k0lk', '213442', 22); + T('11c25b068603cce9f3bbdca', '343512914478456071211695562', 16); + T('335033424101323340423113234541353340534', '1352227850184145127759798321002', 6); + T('9e44986ad6c5a3421885a4dd03a', '37696781807784302268353865692680', 15); + T('395ibtl4so0egl', '52712097322785853101', 30); + T('dh2cedf2bf587c91dci88f', '9929040065272749223553832140', 19); + T('772a8e4b457995e13897900d8000ad6c1f7c9a1', '42519933036531441133313813110786358673933846945', 16); + T('1d1cd508f519156', '131111610056020310', 16); + T('ekj8dkbj6i3kga95ij22', '198679762579399342902422792', 21); + T('41k911j29kjhdhc13ag902l30dh0a2c', '76586399715825395164280132066877039296656', 22); + T('fpe0tn39dh6qih2sr45jhrijlc', '304283009698601976205960463944913734374', 31); + T('273dcf23ogp2cfakgbn4fl', '1178457683913699770110878339571', 26); + T('5da9a9bf96be6918e50', '27644363394761964490320', 16); + T('93a089d540da7e65fbc745d', '10819104601922865145439435655', 17); + T('1133562034346632011', '1978986750380760', 7); + T('4ba121a43bc41383ebeed9d21e1832', '61080584384845175908009030944254597', 15); + T('55c3008747765cb5a544430393a3400375b2', '5308482319711252523172754195251756876991', 13); + T('5710728926a32bd8578b09d', '90281115589861012459774291', 14); + T('124222134144321323244004220113002310334232043000124314311123034413034133433', '8364205020182315700566879525103608648610325894833618', 5); + T('3ij6fei7ct8bditifj57qidrne', '69250254015520173234889635905422378215', 31); + T('j84l4e35cnah4pm082jo8f23fj119754ef', '955016814986800763460011887048876324258463031587', 26); + T('2l6hm8aomfi120xvkq64', '328810104424271657766987866856', 34); + T('3su7i6', '200878586', 35); + T('468713253255775056138736506054776103258272850367', '3375929477240893115892314179236945437132610304', 9); + T('iiq2dxy', '34073294114', 35); + T('2jh6cd8i91mia', '62648677168244333', 23); + T('2b8f9ai9hd48207a3e05dc0ejah55j156e', '22092750538409534069194105946265366099050134', 20); + T('404b8493a8a43b334aa439', '185609888390849041174509', 12); + T('hjq9kjqgj848r1e98ijc0', '1553934125194558113894610790144', 28); + T('ake308dif9ihnaem7hmm5gh6', '603396346398581702540847365854110', 24); + T('510nddj9k3gf404c2i6gb9n7', '280271867286312020777609932859503', 24); + T('963slghoaue5o6iajlj08do1jhmob6r', '5064387257282298335135751952618725428567377882', 31); + T('60b558db764d03150846989b1c37', '53430936932852060459452718754345', 14); + T('ha08mf8sid8joj6el2cfognrdspcbreh', '37455615024172541953556930974489194890334970044', 29); + T('2341300044110340114203320234412220030412114120300123110413121412240133', '4697326942430825924898237671958542016017650118168', 5); + T('d65a86297a7bf3c', '2251611900925702988', 17); + T('4jh25fkmbd28lhoaod1akam9ina2onm', '4152357643144590426805411364596922347703097', 25); + T('7h13b82d2kj6e8c4bhbjc681bf00f9ih00', '335744283433797761544495039026062289479426677', 21); + T('79nidei4qdbvudiev0sbf9m', '9481488549331803281413309926325558', 32); + T('3fknbt02chqbcn967adb', '75965804098331194115528214530', 31); + T('625229929149012470971842263044', '625229929149012470971842263044', 10); + T('17711i5p7cqf', '31331848805567615', 31); + T('1a4314b9650544b6206b8639', '12341325556611002168638605', 12); + T('55a7a2011dcb9c54941653aa6a35', '47723551702572572040904921974727', 14); + T('7teqfe59j05st6pun69d', '172302167861573369948783075562', 31); + T('33662122623', '1008274536', 7); + T('168e9ecf225e4206e22aabe3d5de7gc1c8', '55695742667189173051412647636327754746841', 17); + T('po0kdjoclplm33elfgn5gfnbbf9i1', '107884700371921309802125903666720535662145', 26); + T('iiaj731mhb7icl795864e4', '742188118991708140904927327409', 23); + T('627c5465', '389098247', 13); + T('1110110111110101110000001100101101010101101101111111011001101011101101000010010010111101010011101111011011011110001111000001100001010010011001111010010110001001111111001', '695557780484633047451419090913265350682286538560505', 2); + T('v1hdrpi72rxl7l', '3671512854030700329616', 35); + T('4925aggfbh8e4gac6ae5c64254d0b415i82bd34', '17535511043608617303142367159976450528283461395046', 19); + T('c', '12', 29); + T('30o3fuug0ga3lqf', '12500070118039641683400', 35); + T('387d80c474c32a591b366c5456c7a871951', '3358240678140338946789670983146684842579', 14); + T('orw6puyc02pj561q', '3592793122578442538624286', 35); + T('i719319aa0g22bi7f6d', '1913082545143094439790472', 19); + T('531d70f5cb9f96h9ab282af2eegb420hgfc19', '8007055515291584323571716917746295137673084963', 18); + T('3790218a', '72314780', 11); + T('7', '7', 35); + T('3652056541643012540022255', '18097097047518748877997', 8); + T('4n39u20hj5qdditk9kdim6469sbqd9', '210607480145416873193807172344770565962590633', 32); + T('3b', '86', 25); + T('18gb9ffn0mcg28', '3304915001872755708', 26); + T('a3aa73', '3822367', 13); + T('33aa32b1a1703484200015460108a02a6b6', '246534305809775961185312195074070771144', 13); + T('76da3o3qmka6jm9bpi1f881p1re94q0d', '5261591201984542081284964078385959485970188205', 28); + T('f76deiaj99kaf5mdndig0m2s8gi2fs', '270557992879867684462992923067573004312715064', 31); + T('10010011101100000110011111100100000000101001100101000101111110001101010110000010011010000001000110010001001011011001110011000010111001011110110', '6432766911463399701129205956556722425393910', 2); + T('14028338200708615102070674515767072214', '293684470306336046607148169275151740', 9); + T('46n11ynilo', '330255553677059', 35); + T('gclfn6mi9d33kii', '1802574648845195012667', 27); + T('10000010011101010000001110000110011101010111100000111010010011100001100100', '9626033841394783172708', 2); + T('26gc07ahg33696b6b35i6875dd4bfdb84h3edaffigi', '1204775186640355894241660800988487731870565763140511756', 19); + T('a424dhjj68k0gdfgb72e6ea7f0d5d1c70bd6a', '4057922578962802051428308232940970109455163045139', 21); + T('7c53d48781c046a2542b2455752ca849b37', '7330016794037776721321455336599394592981', 14); + T('12d140iel5jf', '653197596401981', 22); + T('3j3bj63jaj3kk0iecg', '256450260218708669218880', 22); + T('201002131031010332002230020133020100212211122313012213313001310322321211203312212123', '193142585656707088166778168268938862156435413756315', 4); + T('49a9l40e8ekdh705bf7i66g33f5c45b60', '40178796887510802718501234793652601812654280', 22); + T('1c3b34c3c85359aac868b5a9c15', '178508803284588917440368782394', 13); + T('2266675470606120531031640140307074715050044204', '102669173431008960637137393788268958468228', 8); + T('10h81l22adk0769i06e8d6cm4ca195gii2a52', '10869724195205977220549980987330530624249475503838', 23); + T('3pi1chtc5pc4', '97193250034096933', 31); + T('1101101000011111101101001000111', '1829755463', 2); + T('14a08119381f59538f02a2c549605', '6693834434076143282016415621879301', 16); + T('1', '1', 15); + T('5f4fde7ab29b25bdfa4af', '23976578463856222590090297', 17); + T('1g6h69i35029818e', '28255938241753109175', 19); + T('6hrfeum2khl0zl27y24vi8ddg143duhb', '11424803451794483589056265558023874926815658466959', 36); + T('dmsofbufuxjqg9w', '56513064049768744430947', 35); + T('4dnefgommja0796h683m0mj57n5l', '253005180165119243199661555791691530146', 25); + T('1713eo6', '312946856', 25); + T('3c7b2b515538d22436336b1d3a7d4da13456d32d4a1c68', '14671861619977476398729036327299069334875111680121764', 14); + T('4qwt9maaj3sp1inn', '288790554898254466919258', 33); + T('22311421101332244000124243023442422133310', '23019524981022032107906052330', 5); + T('uyyxj8cvk5a2smp23b', '5501966907140058787121075691', 35); + T('5l9rpehrm6sng53', '1706788842927692648372', 29); + T('d278658d7dc7', '113890822462987', 15); + T('18dk30d14nkf391jn981h3d9m82ibhjmnp9dj', '1154145887404199057068348781766608208776338261114369', 26); + T('18ia9ddae0ddebffjff4c84b5645c0bgil1ehl5k', '31708278802686177414795357361653618380221248289373646', 22); + T('24531010135252224313144452221105444022014', '37699522300506678162787688219866', 6); + T('1435a122c73911356a7046', '1526399338520071390500838', 14); + T('402332314023014143212', '391927271631057', 5); + T('1vew7yl00kagl6w8yf3l1o1pd4j9tbq26', '48803334327251890804125487484681131320572737671676', 35); + T('19228cb3f0a4795bc2dg58288821', '49714879698985993220949182598831692', 19); + T('101013510035221112224414143441513001515500033423435154345', '38806529557660171345438701910920418778114393', 6); + T('144142024401344124331202432034204232321141334041222432422444024414311403324', '10455975472873714399055311680044207748367282684872339', 5); + T('9907qit', '6779912969', 30); + T('7073', '96939', 24); + T('vhkckv2ar9oj8hd', '57275964522373642706212', 33); + T('1233134320020124210004433032220444200021042233114014402022042432422033111444', '40945031687597829579374183757759884584950193578410249', 5); + T('2222101020221111100022001022220200211111121222121002010121200200221010012101002222', '1320095371747740273885112117677015990623', 3); + T('1nsitm4w6l6idtqqsi9t0v6c', '284946527389049829952915614970309188', 34); + T('1bjfh6dmkidlb2a05gkj760gf09afd67d25m', '693461359711438949012962332381951054793856687791', 23); + T('1467124ltbe5885tjf26dnos1ork5mfud7l8q', '554897363491883262342501037868827669091792347235392284', 31); + T('k88unrh77le0', '729898419802592704', 32); + T('210120111201121222002122001212220200200112', '87431386841990129633', 3); + T('926ic79b8762gd9j810d6gi3dj9b', '1223706960610540148323952981562191791', 20); + T('agnai6kk71ebjd1f5a', '22882320064040934814223437', 27); + T('2cd4ghcggg8gg9b8611611li0h0h', '4527014616841415467524507113754343925', 22); + T('2352250503021325401322130335143351', '126559545519634091287010419', 6); + T('0', '0', 29); + T('6h5k9b', '65325236', 25); + T('81b43idjccodfjc4f9lbdhoa95c54i4n', '174727107340902317729886057171151789669995748', 25); + T('argrac', '364408140', 32); + T('10002111001001110100201112021020221212010120101101020220110110120122101000000122022101111021', '26986516589437621598399475479704475782140826', 3); + T('5515030240151510034313345231334334552', '60696827531635769898353913092', 6); + T('ke3fzopiit913', '96622923170020539639', 36); + T('598e03f8e19f4379c5b70b9c15f4fa9156bcdf74116', '2094150575916241308211940593568291573516182910091542', 16); + T('mt9', '22050', 31); + T('9m5peb9g1fea9o8ahe3dn8kos29str8h80e', '1624329574028280261522777174783118066092425064046214', 30); + T('6e7mjlg1m45e570i7bfhmfeg3d86jml664f0i', '69712363311376846821424071636169936838984692925273', 23); + T('7ol', '6181', 28); + T('99b66b61a8ab384d253b', '57978178355149351769929', 14); + T('85jbj3h12fe7hi8i699478g89317a077244', '1425756476686551290364945510303428131201176884', 20); + T('2f2', '1199', 21); + T('1662b5550ad', '422372216993', 14); + T('k7j57pdqehkc2khdli6bmen6epbqbko4j', '413053805045735653604164429634486822891282984963', 28); + T('c7l352qiq0r6f6r9nqfqmq', '30158411446987207313594748241506', 28); + T('36llefmp28687i', '33170031393242299676', 29); + T('3', '3', 4); + T('5331355335541541550413633156555041304', '14569418445448629730411478463671', 7); + T('43i5b5kccajifo8qn6b7idg9qe8i', '4889376657622272141258689718283342404178', 28); + T('b1', '309', 28); + T('4a9vo4kd4hip6il3', '163290295531837842475683', 32); + T('41706e31dj9ahhea1k3bie0i823757e87fbhba', '33963855813517146822738096038997244039390777451035', 21); + T('2d4a3sg', '3096803308', 33); + T('3331103101301', '66401393', 4); + T('4362145245600312216211556654331135', '35234402549674165076345929086', 7); + T('2bx3qg0a15e1dwf2011n8', '10024147880840790550776084418594', 34); + T('hihd6ih05afff641', '273205768456185626265', 19); + T('b255o', '4331399', 25); + T('0', '0', 18); + T('510080h0271hkaaf', '4693884914412126100265', 25); + T('1022022320020331232330321010100110202021202322033330222311301200212213212222230111', '6774969515016529365414708362547391944587048823573', 4); + T('c4p4ohjglla1iqosl2fqs3ps644ko', '1077352974905789650285543140145512793505236', 29); + T('28', '36', 14); + T('5f43e3cbdhc7q', '2925355769036300036', 30); + T('10202211221120121102010212002220111220201021221011200112200201120012000101011121200120200', '1219399490015420262032876008368588084898218', 3); + T('lqmqdeigiyrstjb0ptr62', '290606160250456698859096910550986', 36); + T('140j63g8eabdhe9geig55544ea95fdb1j7g', '206573099734256434789729083818951917803375756', 20); + T('1121333330123010230103232231300011231', '6640763429402799702381', 4); + T('4a9732b446c3496c8b481128862c7b8736788c2', '10313718642811383413495457120072097181651548', 13); + T('177aia9d3dd6d7fd2f400be1f5921i', '16853319484940264292799668730168052007', 19); + T('e996ok2br25wxr812xqwewkxjs0ha7bbqj', '4935251121671834230635165665794644497506649296785915', 34); + T('1829fj43kdnhlebado4q7qk2b', '69493606859298866281274539784122883', 28); + T('1ug4btjsjoljqjl8ru5', '4144140361800145764282627077', 33); + T('59141846746238', '201252640070138', 11); + T('3dn0q439kfh3joh90glm66', '71708810576319538414890222164286', 31); + T('424420433042212434434234410011320342132310014231', '3265300947003957321669335288360566', 5); + T('6983s51hy35qgqnol5kr01wq', '2043620645014439781841299449690331746', 35); + T('33503001354', '11839443619', 9); + T('1ea715638357a4gab8f36837d2913b7b457a087', '106285010031392323780353251260419840504700665981', 17); + T('4423326130032', '63980138511', 7); + T('qe58jl12nirrhapb24', '1725118401903404858826766756', 33); + T('9ctyl8vinmol1', '31654299928017819011', 35); + T('53kkn252hrf7ip73go6kisp', '763327533894184601429521762539764', 29); + T('rr', '864', 31); + T('2n', '73', 25); + T('31de58c8c77182cce2248cbb5082aedbb8e6bca34', '345951087846276854939428074890216991884992827799', 15); + T('26ed2hii1fb68gg77jd09g9ha25fije312', '20071611461553679427803317028838458620753222', 20); + T('b56a74b20161a13971286a946476a56a675816549046266', '503143184803276945768198832235249483823865080806894', 12); + T('3mauq262ifqc6q6uo3k7rhcn28owuigh501', '15665089503001948796936991201084677402815300352038414', 33); + T('8a', '114', 13); + T('7g74hk2i1', '4947834512341', 30); + T('2001301233012895477086277973272385359833', '2001301233012895477086277973272385359833', 10); + T('3', '3', 35); + T('3v3cl34ntssctbo61j8h61awuc', '758000163587568845774810157998497968616', 34); + T('2pj6m6dn0k2f8862ad1l', '2291763978068855450334466547', 26); + T('1275', '2631', 13); + T('111010100011110110011011011111000100011011011111000010110000110001101011001100010110100011110000', '72493971032499161046675712240', 2); + T('1jxwnrx4311dqk790lxyio0a', '969152182386767070760404233313656842', 36); + T('1515213043431201', '886767999121', 6); + T('231546954488138026339363483421', '231546954488138026339363483421', 10); + T('63obkjao56klm71jg9eoe', '56017208321706855359322806239', 25); + T('79cee1c1a710f200ab5d7687154a5f', '3650407151966683309370718278348943140', 17); + T('1b8ga7fa32455ec', '282558612029627531', 17); + T('6jh6oofb7', '1900009409713', 27); + T('12220411', '116981', 5); + T('6hd35cdafbaa1j6745b40614546ca0', '369523428248678589607467253915152693000', 20); + T('31424505144046650031120545413045362312145623206003', '830451645463432810708654518843838981528671', 7); + T('ab7d7252', '13528536902', 20); + T('1767255257', '266164911', 8); + T('355b5738c3cfe719582f351c17af6b629d4', '290502049209306091381681583617785118206420', 16); + T('146984', '343540', 12); + T('d69', '10369', 28); + T('1110132', '5406', 4); + T('x15mjchu7c3yp', '156518775559992462865', 36); + T('1lb759m57kc3gek0k95h', '144338567461065415742555002', 23); + T('6eoirrjmgwb6obmpjo61', '806330884412638477847015065941', 34); + T('3057512050807124036250432', '245051565483871936556723', 9); + T('1a9lrsle898kn30ra700', '15622486673307407101219146300', 30); + T('2dff5q', '94243340', 33); + T('1018b49ca466c70abb8bb400a59ca870252c7224184c01382', '297566178044937671004403039004634049926129648125406845', 13); + T('g2205xofm41', '33155058894377401', 34); + T('15a243c6d249', '23786665988681', 16); + T('ifej8jf196156', '409370272611766206', 23); + T('etkn2y3s9cvl6', '70229835510573528042', 36); + T('29j6gle78lp65m8dm7i09i4k69pkn2jodkfjo7', '53655147107520605107993005320957190736069756575349851', 26); + T('25a8', '38800', 26); + T('1467iplsq5dslc4bj59r8kmpb53ij1', '2940974102374884746297729490325333196270210', 29); + T('4536654164105350431016416626411512', '37076575885240993457676872428', 7); + T('2nm62', '1531793', 27); + T('30120131003344321043400200', '910915490646856300', 5); + T('g5gc3h6cfg0743a72d0', '642497565387831178951530', 18); + T('3a9e2ecf094bcff872507503010fcbac11', '19946638349599244406026473172687735467025', 16); + T('2iifhg6ffdd44e7lbe0cl4kg2ikhi8j8j5', '569950147839903345158898327398158628782163599', 22); + T('111321132220011110203311323001012030033333122210132333132', '7106340429083953157339766519361502', 4); + T('1201221111210100122201012101121022010110011221222200002202020102202002202022221221201201111100', '409732885115794556739316662328279212569754192', 3); + T('b540j', '10311549', 31); + T('6a5641ecbfg1ea', '65437633393280157', 17); + T('60a0k4g', '516550456', 21); + T('6o07a19gn95qqgff1r9gea0', '471673109789461277231531949208824', 28); + T('1mfiu6v72mratrp5prdp51', '437124683387082202034280167355051', 35); + T('200010223200133123211221100132213031', '2366578692023700810189', 4); + T('91o46kk', '4369067940', 28); + T('9788582921928030343347009158567718617002', '9788582921928030343347009158567718617002', 10); + T('10101010100001111110010100000111110011000010111011011111', '48000163788893919', 2); + T('1127455366', '444026184', 9); + T('kc3', '26355', 36); + T('2lp7a3ilb6bfnlk4ogm', '3318777765483669862045868566', 32); + T('2626066314348382334087016144874320851', '60819966203777863003542815738208343', 9); + T('bglhm6dc2lbdk2i', '246210942857687735106', 24); + T('104250563615655123425305223624351100434404606601061642122065', '79076976109191887382437259405911955830291672386105', 7); + T('1421177654711484117133204549051424', '1421177654711484117133204549051424', 10); + T('11acwiup3x7vh', '3504374201215692052', 35); + T('65p82e8jl85ml9heap02a4nld1', '22517218879878010567520679124266724821', 29); + T('lsje', '1016762', 36); + T('21a393696a4', '56451375083', 11); + T('807c981a9b4265463804343a1212a6', '1621821470894150277381748029433515', 13); + T('46121044606131213674', '687399603768989628', 8); + T('1222510546137173360622712725208565646586263870474284165', '4228218347033366281983071723933458237415026632421325', 9); + T('210a273248358a3309b93', '8009667820567421769567', 12); + T('am9m3dbgll5g2gobdl47ecfkl5n265', '1175130187214663893323173490478694625614065', 26); + T('5051886704b13c99002d580d6629aad03', '23841202011560005570250339873422608167', 14); + T('145h7ksh68dngfvid0d2t5sj0sock9d2h13e', '54135831669620078248540205180825147407334169234670702', 32); + T('2', '2', 22); + T('9', '9', 27); + T('404m0929nhj6g3dnmk', '1165673727265105034486756', 24); + T('15254347665284856901682080432226700882304900', '15254347665284856901682080432226700882304900', 10); + T('33242010105400244453142514140511051333355', '47797340239896148848896357884199', 6); + T('38842', '26201', 9); + T('ih', '467', 25); + T('39i07de6570i4045a00a53566h71c6c', '812073321324466799437765816797697010511', 19); + T('1c5275eddd9d16247052052d663a452a63463075e9bae', '10204524473213180795676416372405071534170216958491764', 15); + T('103424333140140020211212040403022', '26931963138899281575387', 5); + T('2', '2', 6); + T('322410403313321422041034123341223413120', '1278336783462605112004904160', 5); + T('324', '905', 17); + T('157016a602978573c19c34c0bbb5b99242570a479462785', '2486227056319163423119585018132170605939378769156255', 13); + T('182803a1797819510a53305902aa92842958036542a3', '1054102736944210758101345700310507040992017617', 11); + T('23212243001042341214134020012203124424420014304114414302140200222344', '182426131021917657349015925899722232349209773474', 5); + T('44615', '18829', 8); + T('0', '0', 9); + T('16320ab4', '92882209', 13); + T('112022211222102000100021111210120012200211012002211122100020221022020221000211210221211112002', '125052658519630718209984060103893048415853566', 3); + T('1340023330b2816a', '19686890504051938', 12); + T('224a38884764730225a9197021a82539496', '567834953854624641093665357593660410', 11); + T('7a376a34653987b669615931454', '89961092718473726960191912000', 12); + T('28750672b1a08159168b61aa4b65402a4a7bb', '1926663722022386252350512493673056478207', 12); + T('51132b066849699663a69c23014a9', '626977183384857905326074634931325', 14); + T('111001110111101101111011001110001110011111000010110101101', '130312977572136365', 2); + T('32036543023423166444215212320333164', '178439557729142493094112540113', 7); + T('2c6o1qrt', '65869267447', 31); + T('11255025561251045231224000464003501561312', '7642441686790045418235602618854503', 7); + T('ef3499db4bh46ed', '47755591093273946707', 21); + T('b2b829fe48e23hc7e0h629gc5', '14916845674629231086360004118853', 18); + T('2h42', '83074', 32); + T('409l0boib2jnp9c3s6t', '1553857676392526343363526409', 30); + T('1484hk4mnpcq8h7coh4s1852n5a263', '2946760199386210436099617232527112169685032', 29); + T('1de4i757jb9efi40', '112491740329665106179', 21); + T('411544125301', '8264748073', 7); + T('2700af68ha3393j4lom6ffg3o49i83d8n', '1236005201183605405737692388333431118098883348', 25); + T('260ba5decd5', '23566738197065', 20); + T('161cbd70d0dd827d45', '43857475434041062169', 14); + T('102102110211002002102001202210020200110020001010002121', '24605931904729883191409011', 3); + T('261285518c13c83b80a6141c98a74515', '84082439719575951296466210805706579', 13); + T('3l8odr3jb0rd4pikg2j9gak', '2380011848157138949995072867010228', 31); + T('6252121061244', '88503004566', 7); + T('4jjchql40icjqfghfun9bd', '187112850943724980990652726355309', 32); + T('1066551671032724130551075541344416006004545251', '48210079462363778492658888113295918811817', 8); + T('2b0142e2bc8feaa4657563be6095f30f9f787e6', '15344670653497010702533663436850880847648622566', 16); + T('202121222120120221221121110100121101022121002112222100202', '1199573832123177666249284048', 3); + T('165', '725', 24); + T('7552109468745084311115076521370466702755126903852723', '7552109468745084311115076521370466702755126903852723', 10); + T('d92409d43a71035dd1607162ac59a36', '330459364479294639582756285439419040', 14); + T('5866087207670384282121402433586', '253132125297513316727613194688', 9); + T('hne5k8mhl3eo7pbd173f881cpo', '4239590379457835998662721763582285498', 26); + T('43', '115', 28); + T('4b56a3e2e6ae07cbb13415ea5e4e6b26e91c7547c7e1', '1775440932456640417914474064580085383417183550152911', 15); + T('52v37tbmm0idhufxl061ordug9j80hbw9', '130694367745642080024891425171303262177267298512229', 35); + T('57b110d1a114200601b064cbc8d3d6d36d426a375', '38897697195561314890830075857936232069438002819', 14); + T('1010114', '16284', 5); + T('3011332032001111112012121233222333112', '14607768040300540243926', 4); + T('12213', '1809', 6); + T('1efko0', '15481850', 25); + T('6146dqjn5em3m8iag3hnhgi9cqh0nh5', '156984890010244096277130750219079284286689617', 28); + T('3853245phar6qkhopu3nhfhmdqp45dqm010', '1659449215436607323768397181970499924333501857945769', 31); + T('1kbg', '23016', 23); + T('349bc1ee612041071202acda5e253ee814767bdb1a58', '1235304033805275134490493701587801892224447248153208', 15); + T('254054435232113145254243412201240513023333', '236517755592988157513186489952873', 6); + T('3123222202033123033333133100112311110212332311000201131220301', '4562255449967943117630410467356039729', 4); + T('20k2g1b61b9bb', '26244500043153689', 22); + T('5301274373619a9abb075331570b44372a320b45b38', '11112964586088228654822104128277512727028281372', 12); + T('41kt3bliuu71', '284086055727071575', 34); + T('26je278jef63f30b4h', '70007399630130868935725', 21); + T('661746213440700265725363254604246460427455151704051', '9677402829255135526689200426680775741960325161', 8); + T('6175', '3197', 8); + T('145092186943011290758112327', '145092186943011290758112327', 10); + T('24012130142220113203333413000132130030341343340', '399568998285969726086954376512345', 5); + T('137jb08gne02cbkl5ee1giga862', '874678313646620526970274269320064658', 24); + T('bj49k5h', '6935833969', 29); + T('401151407274000477346136437000', '621886148896195273543007744', 8); + T('e62ujehl35lkp25kob1e9tvetqh972', '3668880263925499454416380147695985359306937564', 34); + T('1221221010111012010111210000121100021121111210010222012121220002002011111', '44164600435998484951707492971081782', 3); + T('2519ebiggfgg0k7djg2l5f32', '16752300490444701684531024329512', 22); + T('12jrw3z5iqh6vy4hd9umfbce6u7bhmd', '52334612299904782804807790302710417391016520949', 36); + T('m90d8calnmib3n38f82ag12c', '1243484437066565674917884244591228', 24); + T('5o9441e1ehe6', '71232157609716713', 29); + T('mo6ub7vjpqcd41odk309dkb6mesoudc', '32479569784999047522872481329328980918409132460', 32); + T('99a104', '2443540', 12); + T('1001110011011111011001111000011011000100000001110111000110110010001101010010011000100100001100111001101001100110011110001111111111110111101111010', '27331074366810509421853388280769875793670010', 2); + T('140135470caa96563a640912c99695818a', '7530555028125352679628379917810633699', 13); + T('1234320550101200300234201211525525033442525240545402554434330051', '15178212380235027454950908395863207673277874355183', 6); + T('227qji77n49doii2i14mi6anfbi04np4n2', '358193257509349600441790087340361151109806798954', 27); + T('5b1706', '13823418', 19); + T('249c44f17568b404f004d1fab5d14', '11880762815518784994450284839918868', 16); + T('6radrdrbdm7mhpvswkb486v4eens16w', '24529899580687594598518917969085283802959665013', 33); + T('5496b049593863de8ab664bcf192d8aa3046b16', '30182230828157060898612488525177295598317234966', 16); + T('3', '3', 5); + T('dhda22ffaca6je08gg623d3egic495d0j3e301f5', '7632679632132235991964925001252763420525080557280705', 20); + T('36ca696c54211109ac498674444579b926437', '44733871000508032307696312443457357060058', 13); + T('15nn57058h663g02i5', '363480846432405747500597', 24); + T('1420220341042043041130312221022231231044021124324024400213', '13072107582995750416163595291483084215683', 5); + T('g91', '15656', 31); + T('1000001110110010010010110000001010001001011100000010100100100100000001011101001101100100001111000010', '652129268908332354914162721730', 2); + T('3308c774d7a9d93620db30a6dc7c3afb6245cda884b8', '19094196084927690615894155917265930659289199085651128', 16); + T('9910587826577455047017155908954', '9910587826577455047017155908954', 10); + T('1pn69d', '33086633', 28); + T('56e18i5ec9bc9bcfb506', '170001599187441436937591218', 22); + T('8dg63a351777ef27065718ede19a9g', '4251605536447843079014370453494147309', 17); + T('3757440272647170475376331367246161235546703357147547454', '23196351263151106376071114036941254762538586787628', 8); + T('1133102031011211111321020120221222221013303233300222001020131200322121001', '33201783315139109346417949703891666719712833', 4); + T('111177ac156c8061a2cb9c2a11c49c9bcb1b8aa61251a', '11177922941418324255581769628452411069931934894274', 13); + T('f5a25dlig1h8in642i5f6482bbl39ikdf1', '53647895828829728643682410481516014676799977129', 24); + T('142103234113241523135450505', '294644752058281948745', 6); + T('3e8u2lxxicgxl0', '579245446681359249924', 36); + T('e1aebc286f28a4213d5b89774ba1b2c', '18748973437595317918722188262730505004', 16); + T('14i0l6ha6', '94600891963', 23); + T('fyi', '19583', 35); + T('110002121111021002012011', '126535710037', 3); + T('2ede2k53307k0le4g202kb1ka8j608e6fb', '531584620037427546349053144337530803653075325', 22); + T('5941a2ba5123ba48823bb', '108647376527879131217663', 13); + T('1100000101101000011101100101011100010111010011001000100000101101100111000010011000001110011111111111001000101110001', '31382251255391898419590799476887921', 2); + T('2798b48667a9a76', '3403683742605498', 12); + T('f0wpw0tsqxe4vg84s', '47926281420044967329301940', 34); + T('120274183083323227016750865268186648155326604433755556', '460659788402837426091935077340365397293891092234756', 9); + T('5165bg0dibdk', '2955698679780350', 22); + T('4id7h78kfi5m276c856bd0d9jc01a93f0', '700749527198104432526320153790964979274223144', 24); + T('1101111011001011000101110110110111011010111100010110001110100111000010001101101001100011101001101101101110001101110010001110000000001111', '75812640390549515698067392896804260995087', 2); + T('1135', '605', 8); + T('16fceb35ec78f61b7', '26503318076778308023', 16); + T('gsh3zf', '1015286379', 36); + T('1330803169291356585', '1330803169291356585', 10); + T('106eg28dj4ab8gjf893371d4ic', '341198497110116667345130454665972', 20); + T('1031332103011210202123330122302232122332133101220', '96526406143541450009541735528', 4); + T('ak711dka02e97fd29a882gi5d42540', '2423827227910121626584716485263513891048', 21); + T('8841418102', '3463649669', 9); + T('190a8g5f0b22eaa29h0fd75g', '111655360963807509350164170526', 18); + T('1101010000010110111100110000100010111001101110110100011101001010100111100101111011100110000111000011011000101011110010111011101110001011001001101000101', '2364878576296174981737730111388996744591545157', 2); + T('a4f9f563b2hd1d', '1579563483297980704', 21); + T('1e', '30', 16); + T('bmj9i28fqup2rr01quj', '25168455972112565443783764925', 33); + T('2659c2524b681b0611bc0462068277b22c4a090b6c', '11718193492167173003845518942891790726930347344', 13); + T('95dbhv5ghj', '425304350878063', 33); + T('70f0bfb348eelg', '1988449310602969318', 22); + T('5601892416741275270a47a14b258b77b62ac9a', '11674083978692042300298963640315521087970772', 13); + T('18526598951b4925686c191b82c726443', '728861732602079775340902630060883104', 13); + T('c72f1ga78a3b', '4322248291965062', 21); + T('43i7nlns66s', '2432989186691608', 30); + T('umkamr', '1393260527', 34); + T('1144311422131400141044220', '83282084180409310', 5); + T('4336', '1546', 7); + T('47i77', '575935', 19); + T('260391741833138309844242694047', '260391741833138309844242694047', 10); + T('eikcnkechdj036', '21983428280688968831', 25); + T('399j60', '21947290', 23); + T('547573ba0754c7d9cd26bab3c7d4b72ab562ad35b3c78', '1431614009980309658037899654407501069747983045942546', 14); + T('1bf61n8b8gl2inhm1026c0bn93gmlmkh18c9l6m', '41658106305222335140890827573148074573365393774007782', 24); + T('22ba4a4a22063356716285520739b82386a133', '19129802531842066466744883829679615294007', 12); + T('208263', '1098079', 14); + T('802a2fb0ef85471', '577202901428491377', 16); + T('6e950otf9qieb8sqmlkdq84h0fk3fi22', '40005797156134257760904691332287629017123851262', 30); + T('10202220200010012022120012111211001112', '566544668055011303', 3); + T('88ofbogm6hfl2fmabbhli9jb', '2922571833986926750005829529758653', 26); + T('254221216022520612441642424104134100642', '364163231141058677780767508382534', 7); + T('3k6m41606ml1ik41545j853488196ac508j', '77247355295178353514512199583695660421921997280', 23); + T('11320022231321', '98610041', 4); + T('7c25j5c2c2h8m2e', '87247680970474478133', 23); + T('7u79or4r9ca2aq3pq9umq4', '612755209566507170400347312382877', 33); + T('6hae760771j1iaefc20bh5ddc12d537dg336db7j8', '75611167578444251429175163594651767050933149653371188', 20); + T('2032r9kjbnaii717i', '501415814815568679766375', 29); + T('367k9mu6s9hme1ngoe7gnih', '2066867889461958903697381214108212', 31); + T('60j2m', '2001670', 24); + T('71h62c643342', '456889209843566', 18); + T('12312260105254421212115405048517370253420300156574618154', '38374839154335357656678955333874522222907486811128641', 9); + T('47lkf1', '121626548', 31); + T('5', '5', 28); + T('1101111111100100101111001111011100000100000011110011111111010101100100011011', '66081699980324911274267', 2); + T('eaq63c', '650488250', 34); + T('3kh2ikk7k1i37c9h1gk1a7fj9ek', '95237913325164984575779037624604026', 21); + T('chml54eh1dek5', '465563672539918181', 24); + T('19650e6h06cbjihffkc67', '2407869036365245485341891710', 23); + T('1120330254342541015412', '26871303967424288', 6); + T('1db61d64d2aca4f8ddhg7ieb', '442324583985640572989145851962', 19); + T('h5g0nn7g00jbq8dkal27ddppd1i', '282596981311037438532533274321771897012', 27); + T('3cb6a74dbc0782a7c312d88129b86a1c8', '18574170307436528537867610263305518660', 14); + T('9j93cscrm2saln1ns2d0cg', '49614136249868364997959915587716', 29); + T('12nr6ks92puzhecioazklliu3qqhgd902mo', '88154165422723953669323639000490842970444052275022416', 36); + T('2h', '57', 20); + T('3', '3', 27); + T('1aj8uhg09llocde4jsa', '938586685176702437596326906', 31); + T('a67wb8fvo1kas0p2dtvb1pim7u', '935376131947858129999170856037964165345', 33); + T('8cg0wsd5hc1rj2ur5xe', '86081079913939968176696159426', 36); + T('196hca7f9h0d3de53e7dd9cd', '384908563380755640626858713681', 19); + T('24i4f31gc45g4', '5004498340474430', 19); + T('2p82al4l2aofjb0l433n1ma2pdcm1', '12374372390948872370836716034198336907461', 26); + T('aickd5fc9kcijdjk', '91778300438306519322527', 29); + T('bijb6jff785abdg50ch93jci1j07f0', '641502687123029513871412727798918243100', 20); + T('1110000110010101101101001100110011010000100001011100100111001010010101111000000101101111101011101100000001000110000110101111111100100000101111', '4912801682953604186696386732310079951849519', 2); + T('k4713cejo6jmooion0em218l2', '71662757397263121604346927461739902', 25); + T('131p0ch901seflrw7hpck5u9bwvr7', '8293373983427066208235978575638533608956521', 34); + T('11000101100000111011101101001000010010000011100010010110011000111110110101110110100001100110100100000100000000010111010', '512777157413030085980733281858093242', 2); + T('56a0631865658b42a973787149', '38957935569902816546521273555', 13); + T('7339fcb70cai272ic', '4691540493840057977172', 20); + T('3302000230232200221211111131020213222022300333232222303223003331321002232012033210313', '1414797421045846182215653783000271431836488267528503', 4); + T('1cef5g065cd4bcdfgc', '1453833012137887343510', 17); + T('22905c', '2265180', 16); + T('14p1aq38h5h6p3ggog8pef2nq', '146180156816301607543919347943451040', 29); + T('fea1kjp1rk207jvbgolwua1tn6iiw7', '1680226571949963189952641105288040096752983593', 33); + T('18gklif1hf11kk2bf5d65m3cdn16f2ih9knica3', '38229891140881220748747963138698607615755419662309363', 24); + T('31864470241501561251518062508850', '1228037037479082758134146470778', 9); + T('1f8h38h7ecgh286hig9bh5i20b', '594633699552685458820517879344811', 20); + T('1558082832482056078618821', '129891586602840328457452', 9); + T('7b2d96aeee4ce78ce5aee28', '579561875731331284066869188', 15); + T('1210133301012212101130002013110200312222233110232023231111013020312221110011220130212021', '37600153384455208153546802413238636668955012511156617', 4); + T('1021111102001211210012102112012020221210222022011101011110212202200102221110020211220220220220202211201102', '160009247997291013413774126585486451337226598990112', 3); + T('13g', '716', 25); + T('10dj', '17933', 26); + T('jh75i', '32715126', 36); + T('2175424561041415433353531757', '5428551387992052131083247', 8); + T('180ka63', '255086355', 24); + T('48a1615136', '176001170901', 15); + T('110010000000100010010100110100001011001001100010001111011010100000', '57655736925864654496', 2); + T('1310', '1705', 11); + T('1zewmp49ibteo4c', '12181934920523719776924', 36); + T('52520357630643422', '1500865557120786', 8); + T('bbe35djn062d5b761si4ch35amf', '1199785854063018906993506866638229011140', 29); + T('0', '0', 25); + T('e5i7fh471g2a1', '58556310038689001', 20); + T('8108b3', '11444879', 17); + T('12133332000140', '1794406295', 5); + T('233cci793322ed7d9cb8855ed24ffaicg17d', '1237217723084165492642180249762745096032841489', 19); + T('kia626g3jjfhek7fng5d0ihn01i1cbi8mlkj', '175644053681799645945065512508851170704116634341769', 25); + T('307id184633ff2gcecfj', '15832615175405459381237119', 20); + T('102210122003344331140041103001322204034014044', '6239672517153332817129500298024', 5); + T('4325101155', '46150847', 6); + T('12003220425', '80779841', 6); + T('k7khqonlt5b3ce9od1ouu', '25655759396523763765963618575326', 32); + T('1a2e', '5669', 15); + T('24642336001364105631011', '10582257656560822478', 7); + T('4200112121043211', '134340409181', 5); + T('dji6e981g0bmicak6nkmjldmb3', '442482125298832453947547925860696203', 24); + T('1ouvmsmphr12ugwqkp68', '627712599848792393543454824048', 36); + T('537gbj98e49ja89d84j9g44ch0940ga5b', '2220315485025179053502135485282739788932111', 20); + T('714313', '423075', 9); + T('a23c0', '290667', 13); + T('c2g4dhaf324d15b4dfdfh8a37b24af52g3d1', '1045967377308067032554410895079596222351962039', 18); + T('1adb02f0gf53ff9327efegda34df0ge1f5d9', '19026193308545467945661475426458835723094908', 17); + T('236188c20edc4b0a6', '14628716301779930406', 15); + T('16ac59431489a575d977893381e17996', '4165152233272488511477307829446785791', 15); + T('i15f3hhg737gh49f464412', '37883791206577734258893793622', 20); + T('143912408735308919916476067550676143993718804207', '143912408735308919916476067550676143993718804207', 10); + T('2c84hcb3e617i308g011c2g97', '13003562015150612759615402719156', 19); + T('1', '1', 30); + T('24411332303104412232404024412', '110670388179331704982', 5); + T('1933e587c735a0944325aec2059cbfc7447e', '2195466647218532976318479234926892387091582', 16); + T('12bleplh50em72e7co2m5bc', '14743439849575623122276244494446', 26); + T('58xh', '225347', 35); + T('4icfie106h6bhih68cc', '1292892082246312828371452', 20); + T('453', '299', 8); + T('8rhpd0qch5pktpovj1glt91oct0tjlr', '12647022957479689372096487316445682624573132475', 32); + T('2dj00qb3qpxopwossisb2g4otn9f', '2488698509088656658453543066597325211124483', 36); + T('1010310', '4404', 4); + T('hfq3j1a9ndbi30efh052', '27619266965177624232556247447', 27); + T('39069027740350553286', '39069027740350553286', 10); + T('9bi416j01ci4kj733b87334164j0igi5e6h5h', '3806996854533890953144943088476687870626549429877', 21); + T('6ca196aaip90qn9he2g0a4i2mq3mogi', '56367196598633473854629190366616476560879928', 27); + T('16cf7', '492257', 25); + T('bhe1co7jjpkaj18teg3n', '134616320166471331187477282513', 30); + T('11e0kng0kkbl3j', '934367663338406299', 24); + T('1514314554356446416612036633020010445411545120500414631632', '2588550172153450082104301619898179441784748691764', 7); + T('53657', '150482', 13); + T('566a2326039100a019069468b084aa0a8a9966a', '566225725026345410347153259571357126562162', 12); + T('192996', '296676', 11); + T('1gf0p8he3n6f9knc95c85j1lcea3ei', '177191432101748018199118067763850396927258', 26); + T('2j2bq68kmo136', '4299689571441867510', 33); + T('ji1d29aeh6h4gkkc0635jefbbe853aijb', '40645713826960095513453151704998149841545850', 21); + T('37710781838842630361512', '3806832103892449001030', 9); + T('2442143434220532532101123222344253535005050540352', '62605961983133424986426709017621042732', 6); + T('d518g', '6029468', 26); + T('70n78hi8c', '1986022468452', 27); + T('38bh61b21cga0e2ff0a0bcg4e3gea06gb3182e1hh', '565783320821525533704067328716967069896244298888023', 18); + T('1001000100111010111111000011101100000010001110101111111011000110010001010001111001110011001', '1404582351453280869403915161', 2); + T('333924a049a51684529a74ba87412bcbac8', '243398556912996292725156441791879362977', 13); + T('17a55a93a040736775744561a5055a9385', '40020975700910684233413707318255946', 11); + T('6b', '113', 17); + T('100110101110100011110010101100010111011111101000111100001110000101011100010100111101100000011010001100111000011110', '12567788490336688088992466604707358', 2); + T('j', '19', 33); + T('5ea8ajhd4j34fh5hbag04g1', '240168729092027349654498561921', 20); + T('q8mr50da1a05raqf', '226974721325958220743445', 29); + T('e6a3363', '1620616539', 22); + T('75503024732436207824610451700833671010674575810465066', '318007217504658857405619875262949061586268948936365', 9); + T('34ee3cc09kkl9kf6ac60h4afc8', '11677571670551009274952367520363516', 22); + T('1232306211304043222536154143636150212163663301143551245', '5847041463724405635992138544250779787366825652', 7); + T('64214b1895397696b4c93', '120114256331405719997422', 13); + T('110001100021002021111121022001121020001101021112121212002221012112202211122202112222111120', '3895174620732775849452424240420599239140176', 3); + T('a87e916d51599b02107778980ce73', '9006992363531177743062167113009383', 15); + T('e2eb9fg280g68256e53875a7138e16c216e6', '164829342483558859829243147407641086382111803', 17); + T('dh7hef833', '6800973993113', 29); + T('87ecdca16b110', '4930623993377600', 17); + T('242664233613444510003204103241260166', '997238647098049790608059979085', 7); + T('24865', '2524505', 33); + T('8dg8ee', '16577402', 18); + T('dcb0', '56496', 16); + T('100140020240014343012103310244203321413011432220000311343', '1407800314105875865179520542356562510223', 5); + T('8ic4cida70638r6qd24lo1eohnehq0fnq8', '4939135926415967125713934662696787505407553615760', 28); + T('110111110010011110110111001011100010001010100001110011111111111101110001000101111100110011100110000100010110010011', '18104495725933236784651084181816723', 2); + T('2110', '66', 3); + T('9h553ajcj585e0fld63dk1f1fdg38bd7c4c3', '944691391197912510590336782111009994890396317899', 22); + T('d94jspuomfb30nnigc0i9c2', '8583227698431941711284555523051436', 31); + T('540511212211521022015430420425', '209679875672133971720897', 6); + T('93521bc9838bc844374c6', '176011291340468000063614', 13); + T('21111212100011211111122102212120200222', '1127735725992381629', 3); + T('433', '118', 5); + T('b35f3d85b', '78106650410', 17); + T('24ad24572815556edb04e8388a3cb8dbcab', '22472704690990952783138622997610828085611', 15); + T('ej7615a78j777d2d7a6', '3923839018485436650027006', 20); + T('6c', '138', 21); + T('2301032330302133212203322310000123330030112121321023221320323132221132330233000122011322', '66310958980712759741798040630188575295953581006496122', 4); + T('3892bc32082ab81c', '187850563808306190', 13); + T('nepn0i83d', '8890790458465', 28); + T('27m1p4cgajmpd77n5nob5k3ckoo8172n2fl', '2959224102019221153580776647569649027089445494715', 26); + T('2c211bi9a4i4g', '5837125451724486', 19); + T('6finion2cknbcjclfc1maacjl3n', '277329603884172207207342214563875742203', 28); + T('2744a2b1b6da050450ad1dc77c3c444918572d3a95c77c', '9495750905280175430367933734800935871583094331419290', 14); + T('2540b7a2c', '1964842541', 13); + T('29hbanag919j07i2h9fm5n5blde', '1847860763613921662545512809287537286', 24); + T('522636df92e24188g123fb5e646fgf28g1a5e64', '292970008668785630924688679808211955559007788343', 17); + T('165yyau6n6umgpli0rnp', '255752898934275797065342348280', 35); + T('1110', '84', 4); + T('293b01a935a3799a96024719b2b03915938', '13670064701193438658934893988141749244', 12); + T('1v4r1bs1', '82842560296', 33); + T('656babd', '48129143', 14); + T('261351cc2663d63', '70221672594373143', 15); + T('8glmoqrlas9stn2mi', '3683728409489953625513478', 30); + T('c1oce8e32d', '65559511889053', 26); + T('564031351615643266525566325521613406414624250361503461216530430', '147867740046978228024321274080345862741610052024709013', 7); + T('230131444013022131034243004132023043040334422', '14855672849648868100497603839987', 5); + T('12545150406353046425421123355434036032', '26016700480759035883689036134576', 7); + T('2dlta5vhvg9qgl', '132869544199893066807', 33); + T('2312030023204131320203', '1266940535807553', 5); + T('2977597a8b13493692178b15b', '222825050040676849479153431', 12); + T('385bd327542709g6e5271h7ia', '16835126876024648618550765824498', 19); + T('1319267918888', '4042081859901', 11); + T('hr996gwt7sli7tqw6prqc46o1', '49591308422914160460367750680805956892', 33); + T('2m6n7a0q732oq6ax99rs99uvomu2fajwm', '26979653390318370528670832083221165119891832619810', 34); + T('l1973bi5hak3elkl57a4bjh9167d', '37065350900219381074120392127131177415', 22); + T('43llt8lf8l2891ttr9p85b6m', '82442096432449770071926138860460002', 31); + T('506748004476441', '116315255825092', 9); + T('1j73083e1ek8ek8ac12qlg', '17167767622561300310786542488046', 30); + T('7g239db88h4f1b5807599egc321dgedce78', '37727159811971103917360167652947572210206126', 18); + T('3h6', '1412', 19); + T('1875061762750423705', '297528461189732876', 9); + T('adkaja86gj', '8471456689351', 21); + T('7edjg9684771l', '721329267732824707', 26); + T('1655c91427gb5325f4d69a5g98fc', '10534364998017011610805677227288034', 18); + T('1', '1', 11); + T('980817ca67b74b4a12b53b8065a09367b8579846', '267254106995150662257373930152524132970726356', 13); + T('3835160608814336587', '590328195439989373', 9); + T('86aee9b70c52fb93dea1ce85e', '666919169547294519852185479262', 16); + T('b60f869bg5d693e84g6dfe2669cbf75ea96568d6', '11034100614489305854323210870717035173423206179782', 17); + T('13130230301232022132211111011003302312223321', '144073625444367205824948985', 4); + T('i6k473f9cigp', '101452153263413209', 27); + T('56d0g6d5b64f56ba74g2fb768e4g149193220g', '18148997614117285672045460339793419442793046305', 17); + T('450g315d6c609d23dfa01bf1e3ebe', '601353401386687882116399680820562724', 18); + T('4352502133233111221215445543', '4761333221430647953287', 6); + T('396769e718f39e316d00bcdc49721c228ea3', '5000590150769401690668401759809188422389411', 16); + T('ad7b683e1fc7cdea2dd3fda24f96f6ce5022803f0dd', '4056709020997348015695058837718936633645982841827549', 16); + T('331484', '811108', 12); + T('k3i5', '245346', 23); + T('135cng6p', '15032544769', 28); + T('41431552231054351454251041452441434304115015351502140424230300', '1258945994027471345472426069448355009467939191900', 6); + T('31023c896cc216cb8959414', '9885951986278698583058420', 13); + T('6a0d8b333b26dcd0ccaa3d3303d3732932', '446217024491807326078408464241966377488', 14); + T('325bd1', '3300305', 16); + T('4156172b64866980a8', '9144238910518146944', 12); + T('1375bhcg8ddde43f7551f312', '303750588830256802292808765740', 19); + T('1k03jqlfa4klao9jb9a3ho81cn6f2l', '562769643994858107795871822429176159838800', 27); + T('19375332788653716726349605608924050432887719120', '19375332788653716726349605608924050432887719120', 10); + T('24gte619dnxqqntp5kjigqo94hnpkhw1g1e', '67033488159416015091486213127299423889621915101970024', 35); + T('79b5jfflhabec1i', '46242889680463735640', 22); + T('3136523464465430', '15305223556763', 7); + T('24h', '1265', 24); + T('2eeb9a81387chlge6a82i', '1880930934491341165799127406', 22); + T('3h2s642hee7s1mr2qfqjs9bnmi8bkp567q91d', '158997805986072348580445510192627913450430823619387102', 29); + T('175c2ee70201e7837c5c0a0b323969d8a8749ab7', '11002072616623697244801360586654294094591597797', 15); + T('743bg293f6bab3e91089478dfea389ah266c20', '201573045644676256310882487614494362105144963300', 18); + T('1104154030050343015502310415254530311', '12239997207198897956935770115', 6); + T('c', '12', 32); + T('665fcei2a6', '11296107920224', 23); + T('12011220313142422020144234021000241120013443341142414232113123331303104302114', '186661780639150984434609490693985841246731986480931534', 5); + T('143333403021031322023424140200314313', '5675316520546384121885583', 5); + T('22032030123002232430201320123040', '11303442964719339223520', 5); + T('42wnriu9jc1d9pi6m8iiw73e5i1', '12392393408418156448684972868597198547946', 33); + T('65jhb5kj84', '11265751641346', 23); + T('8jboj1180100', '32109820032181892', 26); + T('404013250231232343032', '15035328204976892', 6); + T('f5loqa6a', '159157001341', 27); + T('3bace918a9ac3ab0e2c9d64', '1154290724173228330560822628', 16); + T('j1f02okrpm6braj45g6p79o9fk2ddf8e37m', '1003413309681967687472390428106527031481479140655021', 29); + T('20246731230644474456707331224171', '20210639089554274678470944889', 8); + T('6ada3415177d23a183a37', '567634082013543482865249', 14); + T('80d1jdc7770i8j38jh1718e5a', '3853881204132107057348022178700165', 23); + T('1135320202552420132423303550434554115305', '2842213632774508421222497813913', 6); + T('4556754565', '1792468580', 9); + T('2b3r4b9krhfmae41cjj35pk55og42r11qh', '38693692809223437015464946236160411990614992957508', 31); + T('3d0h89gj', '6521609785', 21); + T('1465101514516303445150635221541651513656043104', '182862618643837207841758558179961577682', 7); + T('15hdb8f1kaghao1midm', '17870640162985488516370972', 25); + T('1111000110100000011101011000111010010101011101010010110110111000010101110110110100010000110000001101101011011001101101101100100110110110111100011001100110010010000100010111011', '45201658205192969951078809960368998187352382503454907', 2); + T('1364beii2hig17k8j693m2h712ag3b8', '81200218931722105270666349240310189486416', 23); + T('40s0c831o9f90omcs700nidi9s9ga7jneal', '672278250813445369021834441413341140309396296123921', 30); + T('b1h4kk729ddg98264250', '146882207557384251944382069', 21); + T('an69hf2fd88ika1f0lm', '76557434096017215994674190', 24); + T('1212102020111221212120121021021010121221210201122120101112021201122202101012122112021110222012101101020210221', '6313978818560826155486650951933487040678832450680226', 3); + T('4ejad5', '65217425', 27); + T('1011504405105011504344000223123003254223051533524', '23268755836632412189291409311287879196', 6); + T('muldc', '21231788', 31); + T('f965kejejhfkde62ca31gjk', '1894746813418880221855401179069', 21); + T('16624bgb4j6b7i9', '2154952615997851169', 20); + T('44778038225350466', '44778038225350466', 10); + T('10is', '30377', 31); + T('7m9tgv6mfbr3i5j', '9087238325403642874035', 32); + T('17ffh3b3i2', '18276892443748', 29); + T('1fioa', '2166650', 35); + T('6j', '169', 25); + T('1uj6q', '1835722', 31); + T('4452315051414642631402123421521430165234323', '1460239514815687621335205309448665546', 7); + T('80c6a65ec4a4e460891678c95ee0083e2aec16be1c2d09', '676377725653122531508231251848624820273960326886392184', 15); + T('37gla290975a', '27131230954665414', 28); + T('560542234405003554201260116626420636032150041612', '30796886684101041402274860246696545791006', 7); + T('12kpl730it31', '39012501237101665', 32); + T('1', '1', 22); + T('51caee3d08a4d8c648526e2', '383313354354011387493852062', 15); + T('120111001020020', '8228391', 3); + T('b333sqsmq8m2q9el311hos', '116146323856091954730364462753048', 30); + T('l', '21', 35); + T('2a549e1fc1c63f027e4af4879d42e41d2c', '14404335589336084186051447276771435879724', 16); + T('68615361864802033401765783131528708623121623624150567', '290764608685445070971126767459580690752903879643392', 9); + T('324ll353j6ip451j07if0', '130593071665433916106882664211', 27); + T('hf22669j3hbgj2cj2263j323207', '119153731039102138994504862665944807', 20); + T('4863693778871642193596385609267335923840802058', '4863693778871642193596385609267335923840802058', 10); + T('12', '5', 3); + T('3022210002012101203131123121', '57016419145864921', 4); + T('17wf', '52585', 35); + T('glrr50o92hn5cmb8djdlrj5', '1154557453433021517715910663974537', 28); + T('a6124c3897a09984bc448189378276c2c', '4635252028861401159639480965708427422', 13); + T('3000523151311', '206247350985', 8); + T('1bj4s6r9', '46813551465', 32); + T('2iwa61pel', '3621674718177', 33); + T('3a6ghnm5bac0ihln2fngbj3o541kehea', '73957115739832950099327264217773316424057860', 25); + T('4bpcunf', '3888410460', 31); + T('114224434001431', '8427640866', 5); + T('19k3pmi2lu8b9s105c47ftfdf60laq82o', '5051715463332295990422738632378276342058129697092', 33); + T('h9b70g8i6j4cqeqsblge0hmsn7idik1m1j', '96241136838849620955570471404790819811825290646849', 30); + T('3646322361204aa63026', '219147633166881177589', 11); + T('1ktnhn6cns1ud', '7479229664002588501', 36); + T('7g2gfa6e25lof62haj9k9ih2h45a1', '10608546611840530886415289384421901237751', 25); + T('188d375f5g640eed5die8f', '1032128844540501662690155999', 19); + T('1g5fhj9cg0aa9j7kk3', '959847532524172458716128', 25); + T('0', '0', 31); + T('5rdfpt9vlkh7h086hqffidpavpaljea9rar', '8765347386525329765560210131623728090268059379756379', 32); + T('39nij3dq0vn75y7nq', '16614188017737901319467156', 35); + T('39c4e9074344eab09eb04b4a7d3e7', '3114724911743451144361477555664767', 15); + T('c5aruh', '408252369', 32); + T('405efc001ed2j67ekd4ch0h96jkfaji6i7hb8', '1597188434640792138193865275315517085324950380772', 21); + T('rdgitjorf5omwcme', '2569695095565227618197066', 34); + T('2841a2bfa959f226e', '120911102842184090589', 17); + T('11681iidhhhf47j49b41ig28487c', '143077731089223004915621937671715352', 20); + T('80a0bc97ab', '85467928206', 13); + T('154319679383470735078149017579697301292976548', '154319679383470735078149017579697301292976548', 10); + T('2l2l8c8djb4d940fbde6di4g47kfea2', '207494593328905984754688447749751909520475', 23); + T('aaa72a6070701947707486871805579a247a25474980920', '8817500977665857282017186690319436997296375867085', 11); + T('18636giec7g5cjj62g2aefai821j4f1g2e0bae1', '38906708030084175037896855329780703075886252892281', 20); + T('lsb8tamndgn1wrnt16v5ba1etppehx5mn', '222046606335808194085660527561222477330915583202991', 34); + T('14c54ca39de6b19610b1c1cc289a0b26e6e53', '2886541874571131971389047650134152171194728', 15); + T('62184', '176037', 13); + T('fch37gj2cehk4712', '1063412649849085727648', 21); + T('13025014420320445053', '922056100333593', 6); + T('ps5obl7uslhpb0rnn0m01b60c1fmsum63pg', '13175053317274004235425460616183284215407700766951276', 31); + T('363701247162828065', '61927839099614975', 9); + T('1465b8abc8413', '168027162035418', 15); + T('k9bdgg8ejllf7', '262667689891801069', 22); + T('123010320313322313012221200321321211020013130132032023220131021332303032', '9434743235284812342744700199923423780531406', 4); + T('14212000224111011410232242220022111442141', '17200423635950346297631359046', 5); + T('219003b4c2hhh8g1h31f9i9', '28192499777611999330166104608', 19); + T('1000222100000000121201212112020001021202', '4198943923002496316', 3); + T('ki1', '16185', 28); + T('5lfjlpk8005pj215', '133603915990551547797011', 31); + T('1a438995227803567077324354096', '280489817685276861500109179409', 11); + T('a10ehgsh91b8r916op1d3p', '208937036874285900087095215604516', 31); + T('6g3irid4iokp16', '104226752458483402536', 30); + T('5sa078vcetk7l609is106', '7459835478504164366375430521862', 32); + T('15a3161b39799106c3', '12501616036457500969', 13); + T('g8p24', '21724780', 34); + T('6f0cfb185fd93b13bfe1', '524422133844304697999329', 16); + T('l1cffc501g6397ncj95', '306466239988961202225980855', 25); + T('2dfhb52jnchd', '9260943760100799', 26); + T('1ed471cbb25831d740fad016d1d3b092756e7', '42970555202513419911347877108629841551775463', 16); + T('12010002112102113121211330123023300021102210310312012230202322331130300003031', '8653507377084930340696211927307966913814134989', 4); + T('m8r5jh99kbea98ncemdddkj', '1535249309958690925403581682727379', 28); + T('16dbe1e64nof2d6ghi71l55', '16848131424242679059584846180243', 26); + T('9k97kh08be10if0bh2k2ecd9ac7cgdd712gfa1', '83361997971403184373688949366445710300829770044324', 21); + T('imqtc', '22166475', 33); + T('7f9d', '118988', 25); + T('f974bd83', '4185177475', 16); + T('1421112043421420020212223332442113204311210441024', '6714842848023828193177289953999514', 5); + T('5118a5bda9c5261d038a', '112475404365415864605805', 15); + T('fnxo4qnb3lw', '32422356295501310', 34); + T('93e5657d9928e3fd12074c643179b35cg8243f1', '527318231363570231110630496178567104982477188975', 17); + T('3i1fl4ahgleh2474j119ej4', '3436931963820318159686038917367', 23); + T('26ihk7ci3f9l735jk930dabd49hdb714', '952831117130053200769266367664413387630926', 22); + T('24nm8lmkc27ibal1njl3g84hgd', '70684225231749335253166543877275597', 24); + T('7b86', '13782', 12); + T('g3', '467', 29); + T('67ett6tur7tgd6', '229969461645745766822', 32); + T('2', '2', 7); + T('42fo2fhmcnn8560o1e967aa6eo5ik21', '3560990677089860840955807820073740226856301', 25); + T('50ge69b9c5065', '11169299770836272', 19); + T('1emroim9bcbjb3jlpah1779kcmb2nbapmap', '24427253992307533768599615831526539311208539755089', 28); + T('11110111101000011110000010001', '519322641', 2); + T('11302241241113033441003123010033313434402233044414234331230110201301300', '11215699606213392429515209493735425261429502759575', 5); + T('1gkdto3jds571f2gl47pdjuilk58', '66203436243049732688831467829307575554216', 32); + T('7f6d06d941b729ee41ec06af76ce5284c2', '43360782010770292902695704345624074945730', 16); + T('95e92k228c29a0f206e6h0f27mjic06gcjg1f', '97294998912929677139041351897383527563262247885142', 23); + T('2226fcb4jb4fg9i7ccf9jb08dd3b61', '113056836222057401495768166170155708521', 20); + T('113134637066412045754477071261275213637470', '12491631272411798853591088807340359480', 8); + T('373b67560324387b3ba12902a68b0846', '10285568089390168608368989457924022', 12); + T('3413502511', '145381489', 7); + T('1322000', '7808', 4); + T('49779304356a81a92899b9ab1232b41781a4', '283704343904838147306674158478269921804', 12); + T('ic70g9dlj', '12077356215349', 30); + T('351979a81875084020960', '2334517700246777830642', 11); + T('1do8npjgkf75l92km9ed3i33hp', '921435866566322324120159754197201155', 27); + T('12150522204302144012304143435', '8504919659789669048783', 6); + T('ikmk', '797040', 35); + T('2h2aa1cag5g0jgi5ehgfhdai410f37', '153347136980338866201795951450764966067', 20); + T('6geppmmpa5f80epk2lnl2q4l165ibgf8jn', '1136083732855390230208808437587722537241518643644', 27); + T('10100000110110110111011011110111110110111001000001001000100101000001110101001101000011111000100011011110110100111101111', '417609385350091179779636810113575407', 2); + T('54632316365542122661224526250554320122025413431325200346', '172403155442202581292345539544844888140672862457', 7); + T('100001010110111010111000000100010101101100010111', '146710581041943', 2); + T('124214202121442431300322140210140142301222201200231014440034434232343414021', '8359229864672618132611974237068932716828001597248011', 5); + T('126052261312470627317166600322300777652073650715', '3749430734838772876224746985432540515357133', 8); + T('54kc632ht19qabr5k1d82fljbc8n', '39317638087117867171096975460673000998063', 30); + T('4cg649834a4gfe0805d451', '1082429577946169111734611427', 18); + T('2dbxaptbqkf9l1g3d3of1sqg472yfyu67g', '2143081075993914961942603741184451795448682536174486', 35); + T('2156754868212718707616125201572327501277016723445525', '10122054780304258510261361631432189947078549013491', 9); + T('a9h99e3ag2c083127d2442a9d53de87eg354754', '5293910916748687218888816990104934714816456671242', 18); + T('5gdn1845mnh18dce', '5273404900500166539689', 25); + T('b', '11', 30); + T('10001111010011100001101011101100110111010100100', '78782810975908', 2); + T('5r4li88rrsefseqtbmp65jliid6dbeh', '3235354455814832733783749566355407213876680098', 31); + T('3d3a4927111cbb104723', '23592314824260135815291', 14); + T('61ix6cz9s69ag9db1yumlsjxc3', '4883940813241885530407328690972629933955', 36); + T('27bg82053fh3f68c2agg71he1bbg3ae8eha90d0h8', '394212306751663957838040335570427410296703664987266', 18); + T('455045100512441541313240', '3929676740978264664', 6); + T('880fh38b5h6aeje263bbd1deaak4ci', '1852428335715416475730972147092577202763', 21); + T('7h', '192', 25); + T('g4ilt52j5h1ds23hqolp', '187753427332679979656205394255', 30); + T('4176a2ba095a941aa340504234063a03174b51880167b', '1260509150099956775877167423441090608940444985983', 12); + T('2504826bh0b3deh44e63bg18', '169404321985280583053906034530', 18); + T('629kcmkm5ik804p97p7foo46i7g64m8lnn', '301188094060622480080121017741192037465487025537', 26); + T('175d4c5f', '13251037524', 27); + T('5a2ca18578b968277b1a60b025949a7c20963048', '160781227675665332719698714323247199958314771', 13); + T('10042463361643553220643436602540351641102252346210022043140655340', '1235358916306184009653528848855128388104787637282935370', 7); + T('aoqdh7d8q05g', '191839424516082166', 30); + T('11bg20d5g85hb21c9e98969cb', '1461738785476516432644631550663', 18); + T('36g71jbo', '43649833020', 28); + T('28926757219098079129718935', '28926757219098079129718935', 10); + T('1aif04ggc10', '9677067550041', 19); + T('5spe84tfqc6eest0f09oj6h85', '7842244574244691095548258935194731781', 32); + T('2j5vlxc3dsnf3ybqzp2l2qefe7aj', '2652680566022137390794201796609346674664299', 36); + T('44316700137250607462031357163634027001772445', '3096914367914270992782060024671299433765', 8); + T('equ6neejg0bt4e', '363092673073628729020', 31); + T('1i4h', '15297', 20); + T('80280654445380371979110490326444540434133731', '80280654445380371979110490326444540434133731', 10); + T('2635fee98dc2adc6d0bb9d3d2gg', '1016175556140463958965806888751984', 18); + T('2433018197317196158128417653316133781757212131523', '2433018197317196158128417653316133781757212131523', 10); + T('13arbcaflcuvjckqr9dlnsbpgfno', '245678666866906453273845830896602877589970', 34); + T('0', '0', 26); + T('1617b43cb4c1267ccb6c9a67', '61421603420165493428425457', 13); + T('11id2614gl6f4ecbk37l', '34754434464457820201082091', 22); + T('52b6d2313c32bd8b492b829f096003bab3ae2af0afb', '1934189728430433084118852318011260708451697369746171', 16); + T('109589b891295cc8f907838a8ff1a1a8d085d9b5e4c', '387803793636734915816188347290438110144007551802956', 16); + T('38h97959h6i9fh8895ja', '45316631296938641648982088', 21); + T('145fal7gh9k16j2d0h7hb09m9ld32cmh0aa', '23568482424313596356642349423973072408497271926', 23); + T('1nd23p72gq7slj6jcdsa0kgq', '16768688186146628617716846505518506', 30); + T('349d0ee9ea0idcha1i67h4e64a2i92e90', '269343193465673541093888647165059275488773', 19); + T('6854lhj1k80klcj54c787e69320k0ab2e', '57805283011680584908800630453906197594651766', 22); + T('804', '1356', 13); + T('5bc8ihgg0j26f98j2ab2g3j0', '4681781173320281184745635649580', 20); + T('q3ot4m3j5ll2u6amf', '19002275427294001435167502', 31); + T('2pqal87pf54lo7kaq02iocpokbbenqe2bp06', '370968670422455186597525315256886862435204203283442', 27); + T('14121204025541551033435113555133500255041104211512', '229652526776877666192899652532215661412', 6); + T('4cb80d', '63995278', 27); + T('3g8ff677jg9g4384ie9chfci6', '64122028661030601402847337245166', 20); + T('1to1rqarpco61sobaq03gj7mpkq', '12335682298221035964378060459101864739750', 34); + T('4b959fg0ok', '46593656068532', 28); + T('265gb83e9g60e9cf167852e334aff1f01d6ce379', '2306333583911925762109580082245431983946279388064', 17); + T('101012120121102120022020112222011001221121222021211202012022201', '432669425053505639748394359655', 3); + T('7jkpqkav978wv24g5qgube4oe49vprj12l', '980570245844506132383809249275091353381128060854310', 33); + T('e03jkjfc1dh51njoahllfld86q65d', '1239960032059488024964338692108578276765671', 29); + T('m783400e4ffe1aa6c6en4ckh', '1239584291259839658707406684316913', 24); + T('fnhd7ke0gao', '1520924761338399', 25); + T('38qgue2niuk4ribm8f', '74092686835055561528594725', 31); + T('ne6b2l9736m6j0kia2', '26699330820578748156911374', 26); + T('196i14lbk', '109958823703', 23); + T('10001110110110100000011010101', '299581653', 2); + T('4059kejh4oa8rh7qmh6a1o0n5lq80hcs250b9', '177450033973248979305599574069360735269525214008062910', 29); + T('pj3g0e84lqw4aiwt42to', '1818225340602370091437090095360', 33); + T('a3m7be8r9553ugsinn40phdcp109v7edh', '14783759765079103513279709123504193591994024704433', 32); + T('1756e5g7692c9h', '111684756948660997', 20); + T('1310214023220313413114434030010043031322341230112322140434', '11406035175438373014369495726669985740119', 5); + T('417c1deb522fc30e36id2be1826b', '136881678478819836067507779602024299', 19); + T('92252179669209632312214876221319317863641946757', '92252179669209632312214876221319317863641946757', 10); + T('46372312a98707a02376aa8a10', '495759640298771450157982756', 11); + T('30435540243430140', '102782589253365', 7); + T('6fhdafecfi5707b46319a8i6dc04', '229779267604296881101047008482286527', 19); + T('bbdjckf7k409d6l12d0gg', '8132684440039836441113393896', 22); + T('7aa1ffmd443dobagk7cj5johagf9', '411676472259993059055019141270748994759', 25); + T('8f4k91t4tjnt0fcn9du7k43s8vv', '25625379512718683322830604232552206610120', 33); + T('93b7504c8b9c69340', '6187855604057469017', 13); + T('1sb35x3s0k1q396aiw08vsmrbplhfn8upj', '633864643448678437738472399825285684192119995266605', 34); + T('agua7ucjsg0iih', '578621718768720599495', 33); + T('1110001011001100001001100110001010000110', '974087676550', 2); + T('143144514240325455532435105401025403335453100232325214143111550101431', '144340707728293600047951401185589484227036000826020443', 6); + T('233044', '8524', 5); + T('582552wok', '11778038097685', 35); + T('149f9d98ffca8gb3a9e4141', '1491232566783461596326244889', 17); + T('22t1321rdu668p4ic3ib9q303b8j8keqfm', '34360852610107045028311793108369775693929421677085', 31); + T('462622265601022655402232133025653611105', '638815298652167365671534920494773', 7); + T('4230756a54234667163044394627859a924', '1074822316475608305169982087744148310', 11); + T('f8g3c', '2015532', 19); + T('f0i2ihgab04g1jda8fc4bjf75jm8i7ic81', '13004707395130797801783447008659194898218637369', 23); + T('179253963a36bcb3055c8b7', '5115853635094224906866873', 13); + T('64ijj66738659b1j31hc0820049h64g291k7egd', '6396071996445462346194349108953750662378937713977069', 22); + T('171215002356221063407', '2184703385532655367', 8); + T('12b92d0b3fb36a8340f2ba7', '4736076939720343041873077671', 18); + T('18533b10492434055a895882a6bb2620a0124211a9879716', '897043158909364946043573806406449154734736512608194', 12); + T('11100011001001011111010000101001001011001001010110110101001110000000111010110100001000011100010011010011100011000010000101101001110100011101110011110111', '5065575398273300616873996741388922355920788727', 2); + T('2766585533096734963797354878145135898641', '2766585533096734963797354878145135898641', 10); + T('23721121', '5218897', 8); + T('ad9a3ee51ae483bc3c92ee9719ed', '3521077463500554185208755094231533', 16); + T('538225767260919961504023', '538225767260919961504023', 10); + T('8bjfla5x1ajj4pcc3pvq076xjshfu', '63473818980036415589889054621162799274007056', 34); + T('1de1640281a9c904e09eb8', '9623171535473259745289948', 15); + T('5b6i14i40f3j53cd20b8ga1ba', '911209787080683607634683777689488', 22); + T('d6g6a01', '455214169', 18); + T('2b72r5rbeigo1e8wa4ky86u1yvrrqxnze', '146380404990650204600521560022975352362017972817322', 36); + T('1', '1', 6); + T('2c3jan9p54e7oq7', '268026783261347839750', 27); + T('26', '20', 7); + T('111', '13', 3); + T('13220232312', '2001846', 4); + T('ggc1dvks0wznulslk6qtto', '7918026888898711931888200605892476', 36); + T('jc9gne01itlg52i5vp6rgr848', '220966959400300968753461444338213486948', 35); + T('b3k2b5pmj4g0g', '1063566102909702304', 26); + T('3b7h43c4g34ig6h033g50e50ib', '12782782886402816341557428904412335', 22); + T('14734353322620206602545731', '61062963683852360010713', 8); + T('2b0binb0g286hblbh56dd9m62gkc97m7', '15043189108277243144346702606154391095130071', 24); + T('403141', '31813', 6); + T('7flc72ih3ffbhg9mk10hb', '30802551855160402027073927075', 24); + T('230451055847842670116857431341321500872417704342', '1654015781734635936691762853372312699223635807', 9); + T('fg5f0', '1333123', 17); + T('3133320121122020231323', '15384999136123', 4); + T('b732he8i04f29k1c8', '16223282627992833931091', 21); + T('4766a43c95b203a143a5bc5a521a00a1517294545b8c79', '613814573577095538322406054851347528901593201139075', 13); + T('475312075530063365616', '5717675808740207502', 8); + T('16162192b5325a09229b66154994a58c0191b83346c', '89746042615495845467561696653563459924799018890', 13); + T('bmk6fjkc882gl', '262863262963325798', 23); + T('83k', '4321', 23); + T('291912ga026f903h805113e1008b7', '351864600431743706976833767888152589', 18); + T('5ij68fj1ci24781hf3bc6bc2g2jdh6b3j20fe', '2348628424621736684950599296511281097502939955369', 21); + T('4m', '138', 29); + T('9iomgxldnucfvk5vc94jrxkxqhg0q86lug', '3302490167238267842315194141274974765989676875973840', 34); + T('102213220130020023311220303121213121312110302212123210023333', '386706650024275360677522460004729599', 4); + T('6c3c7c0c0273106b49', '60090702381311935043', 13); + T('58112gemkb46mjmnlaikgci3', '296486678920377209704264064810163', 24); + T('3wt', '4352', 33); + T('8epdqfehsbh2dcc17afk440pinmgkc', '21858855191422671471340155581640803606008076', 29); + T('49c791b', '23008529', 13); + T('1dhli5mlhe3beji4i863lc1m3c', '50343339607330193689400174698342356', 24); + T('123031003202300213121210210010232313231132223021232113211032101221331', '148112609815368618622505037403177396804221', 4); + T('18ce23d9jf21f2029626', '18676222308756564436417161', 21); + T('597065210033583', '597065210033583', 10); + T('3k26bk0ke1b07p', '9360289351819814615', 26); + T('2955447a895348242a10734120381179706848798a081a24a', '277814985699113393836174322641904828474105999637700', 11); + T('5', '5', 25); + T('1d21e3d1302b26h', '647940567601800701', 18); + T('v780', '1023232', 32); + T('3hjf70me46ace3', '5530384201457585978', 25); + T('mdm50i95kffa', '34359902758185778', 24); + T('27594fe4363354706hb690h55aa751e35bh9gd', '491043964499596096790903212672593094950152072892', 19); + T('4a89803', '35829979', 14); + T('267015546c1d214c872ec08d7370e71', '466173270071093767519019729134792006', 15); + T('360077158271360562586726301234510052565274063276314', '1890330141502524623802729708237946328855224484518', 9); + T('33qw8b27i1jw96v2ng8eqobrtevma', '10278823232880451587462834430209746065248241', 33); + T('2ffj4kk34984e1im4l961976g7mc1lfmjkf309', '3100701785176197033715745123477117444206063832592585', 24); + T('1022341304133421140443420110010243111004132014011020330414342141', '119499096791628035571843616922889895197027796', 5); + T('p2cmh2pk8i0iaj3e1kck', '78607604800260622873133016676', 28); + T('19ac1eg52gah2ajc34he552f07jg', '25687840615874920182000176600011964824', 24); + T('11', '33', 32); + T('4c51d2353763cd99e5gb9996ecb', '463382824850947753162321910886735', 17); + T('b4lb34kh23acelhhb0a9', '359969560591369257338660893', 22); + T('29533b2', '85574108', 18); + T('210230042006603033250136610531101152631005355211234231305', '454901252792917385468584025058887603070565139533', 7); + T('1fbfd085agi2461h64f1095j86cce1', '95533836923505794150091786478042661081', 20); + T('if7cntugmjrbee1eb8ckb3cumn3cov', '824056020452353062283203568047736986646197023', 32); + T('d1c', '4242', 18); + T('pe89dn', '728905472', 31); + T('47ejfjhla3ndcebdjdcg', '723161521468601797654769776', 24); + T('4975a52e86dihh5g2a3g5885', '1158656071841032338859418439765', 19); + T('b2a', '2515', 15); + T('18802049166029703a5145880531512464114a2', '6708572829867641951682044334790673523856', 11); + T('1303', '327', 6); + T('2b9en9mdh0ma6l3gb2mk6a7', '5730992327390802294169442362999', 24); + T('a4om7q5', '9012380858', 31); + T('32315145242005405042351015402414403452431515', '9890393161550519699750282408306759', 6); + T('23d8', '7628', 15); + T('3x65bk', '180647358', 34); + T('11013133142310444', '185143322624', 5); + T('11mfikagfi4937b232g8mfif81d1', '19931061357332966183661805527444530041', 24); + T('1111111000001101100100011000', '266393880', 2); + T('4aghegjc5deepchjn4n5k0d118le6nd981ak', '147378856393139936930504545227123321111306845601900', 26); + T('a053581765919556968948712586810a9015', '28225998746921616615219371069369367892', 11); + T('f20j9hkhjha1959706m391', '595569091584864335710531454901', 23); + T('23ihb64he5a0f5ii443cg280e5hahf18ib9', '377475347206489360974272030507154369136231429', 20); + T('1134221502523554343504155430344022131010005022402143505540202144', '13410812065491845847587964012298459020282685390768', 6); + T('e3doam26jjll', '33718022971403046', 25); + T('a1opuepaio9sq6lj79uv7jdsm3mu70', '448489371933662834507614222400068450749479136', 32); + T('7dia0h6ci727h3jd5l2ih8g90jg78i9gle2h3c92', '172565724572140439608372962298001362724338507747933200', 22); + T('185578g007dg20e80549a07g6ac256f58gcg81', '5006150941846375710425629090586415981041329547', 17); + T('a57aa50714a5a58241591229577a12719502409006', '52377118471664082839971342562274998095676747', 11); + T('32b2cgmbb66g07h0gam0j4', '1602756351859232543197284945538', 26); + T('161a2b46106774', '161867200944328', 12); + T('4hwkgw', '271937696', 36); + T('102313011003221000033031221130002002113001313220002132132330232300021', '102686925972400425528527084594359115639817', 4); + T('3sk4730l9qqkomev', '147136098020632457664991', 32); + T('but6h3hj9q56eg9srihnw9hdon941rp3ots', '50854478902964517143833982141512258828988090776984054', 33); + T('5942a269472a40200841698110c391b0b01240b23c95', '4536812636437232093232481982122462495851953165886', 13); + T('b490gmm', '1656667712', 23); + T('31146334332061140050113651455520142356166650613065', '816409488023628465545576155395605191426552', 7); + T('2131301223123222330', '169410935484', 4); + T('9co4b4k5p151', '657937061645466823', 34); + T('h0fd72f5254f1g26c3c744h4b3f314hg490', '81461749134903178373218607627253657134879874', 18); + T('1002233331133111021130313321223322032032232030203011000132202222132020131311130112311031', '24973910663440836930300964560676670988365943043878221', 4); + T('2ifd83008', '75242904008', 20); + T('7884218894543281858859629374135875813832', '7884218894543281858859629374135875813832', 10); + T('13103023041232143', '251002289673', 5); + T('304e49gd80298d67bfg69g02dac696bc7a8gead681', '847119008557111727693264083647354550664309377534571', 17); + T('77440275263665614314052136204775', '78687457933212079867651754493', 8); + T('12334424101331102324103', '3699927180120528', 5); + T('a4g05c', '14611359', 17); + T('5261257577514510167240362153507501754265746731563', '119228114395905189012428590020540134015611763', 8); + T('3l4dg03eaij22al6le6d551', '1353453954185679560322791661947', 22); + T('2bqfxxthm4', '142468042285068', 34); + T('fiap77iheooadg8q169p6n', '38461005482942559471400836911887', 28); + T('8a8025017961715439905021215027084a5519a3737a', '5406771714928108622296605629432833570349691892', 11); + T('126lhlbc3j7mbbjcf38', '3568853907090242324887631', 23); + T('7aiii2', '24151562', 20); + T('1i7gem1uaffiis0u7et3jb', '724613157606382056196630988579111', 36); + T('503260b17454901', '6448202932655377', 12); + T('4850626593a5713082aa56206712900743aa7201817', '261169229231878869752098014758313048888037312', 11); + T('3d62zhhw', '263758474580', 36); + T('6hz40', '10916352', 36); + T('a134e378efg25b5b709b48f25', '3418312060655617619528647783454', 17); + T('15otpknf32t2botcfgcigfqu6gnkd32', '653730401352621635529986827040115039458290175', 31); + T('4bg6gf9', '217552973', 19); + T('55kd1i5i', '13144826416', 22); + T('i4upwht7sz8semwr0m8xds89ckgj0nvcc', '1148664345372000562399006295243039757410796703394412', 36); + T('123233222120332213211233223210103022130311300113203323200030222020321211321', '618728024794653152611181264645104903381031289', 4); + T('222', '26', 3); + T('17a', '304', 14); + T('bekonj1ck7ko0m', '118074773170177241397', 29); + T('1wbdij09m30', '3032795011029696', 33); + T('16024a6a8524a08ab4d', '610190839032691602657', 14); + T('792hf8bc24k6297dek1g2jfjgddc6h', '1643015926452657057435885816967287278987', 21); + T('40120', '2535', 5); + T('1323334411403144204202403234301133303410340324332211031', '94927992994481212046822848686698710141', 5); + T('2a1d28a129791828054c5a9bd6b79bd9a27c8793b3', '266985353736826850080436241041352235363843789393', 14); + T('1200022202111120001122020012101100012202122120221001021201100', '71161283691673020779124574143', 3); + T('5977', '15589', 14); + T('104340303411210044440320430122', '221766877905265014412', 5); + T('11013120201312031120211130123201013011333313203123220110', '1660030361577179570818698261150228', 4); + T('301j59773', '235204794824', 23); + T('10110101100100101010001010111001000000011100000110110001011100011111111100000110001001010101111111010011000011100011010001110110011101101100101111101101111110', '259149353365748547676531551540644422107339619198', 2); + T('205111503a5610828263990683193', '294498462378684194194060531477', 11); + T('1101011110100010001011001011000010000011001011110000111100001100101100100010001111101111001110100011011000010000', '4373566857843294445861437353637392', 2); + T('336803b72924db88985ac563199312a', '619172222915569013937138339844159765', 15); + T('32405', '406130', 19); + T('80j5ddg1b1dl14kjka5c6', '5671500746690810780935275986', 22); + T('7a1881a31b06bd6451ad1b6d30a1c894c72dcbb2b1', '756847193473448614435521815498749214334384581243', 14); + T('48mshqkulqlpne44ud', '461366817247928145199340217', 34); + T('60779a50d1c0ddh0e446a96gee68c29', '274145136144895069895965328926167326013', 18); + T('58', '178', 34); + T('385g8d44f0eh76c43af5c680', '257444068870885858169187329208', 18); + T('814495845206832393929422614995075089273212205592362', '814495845206832393929422614995075089273212205592362', 10); + T('f3f77b3b2e9b8c8ac86ff', '18433604493853855199299327', 16); + T('bkrtagjfbg1pno3idbmuo0nt7n7702ga2', '6177359692973648095722111400642059003569459901224', 31); + T('1dfcsm42odexo0ktieslb4qafa35f8yy30', '3130691163505477254704987194463689878868046927467788', 36); + T('145203764627604366316134', '933938082134087015516', 8); + T('19h912757478f8crkkhr4og99ni73dn19aca', '600864466904483449441439149901096985867299402717370', 28); + T('39ll9imkk0jkj0flmanno7', '771926574252593113042455452482', 25); + T('228167317827360633087566306336123870011383433267784530', '872924535016160646996267471070001556922344992057865', 9); + T('13340', '1095', 5); + T('pwd8412ejz4a81edyrszibtkdcl3i', '976685155536350163623078908506832125214491342', 36); + T('3re4fusjbcu8j5lv1l82', '272329957684893601942297513205', 33); + T('chg0', '103120', 20); + T('4odi3m7234bk701n297fmcejq584gk5b1oh6', '614617226825809656528595998076194516792828845237451', 27); + T('111594024100d66', '11985349514603310', 14); + T('76560070281357891106470860382421443497991878779506051', '76560070281357891106470860382421443497991878779506051', 10); + T('72b8ekje0dj2l7c3af0hjgjm01bk', '41536239334041308155633538070798114142', 23); + T('6bckt4ppt4heg95ar4di9d8lt3l', '1621907836199076168122557852891843973211', 30); + T('6t2mq5jxqophfjfkv2', '1212339255267290424899164962', 35); + T('e7pmg05bciepi1dofi43mbkodb', '3387641514834198687347692335687382541', 26); + T('27a774bb8504617833802249056310167810008b70191', '809835557745463941303042632876919088150536027133', 12); + T('100011101001110010110011110100110011010000101000100111010100101001000111110100101011010101000001111110100000100110111001001001101010011010000101001000111000110111010', '26053480661633533853821712739093750512044053131706', 2); + T('78267h30e5ede4a049072cc', '30778804593492484652016321540', 18); + T('qjdkoo3766l1dqpgn21ne5p9k91kp8c21cjf6', '90359581173566956884322886148109729184492339838200142', 27); + T('fqdde1sn729mi91m6eemruutf3pr', '689302333458744601010081226005660309098299', 32); + T('421c07ac3832988bb3a09602', '173915305366970601824607453', 13); + T('1110010101111000001010010001101011101010001111011001101000000111111111010000000001011000011001101111010101100001101011001100011100010011010100111000100011100110001111110010', '5365917928263298552573558618072276593881915061068786', 2); + T('242', '72', 5); + T('538ke8j2m83cfi', '7650430109348882893', 25); + T('lmu0mac6l44w0r9', '39403923966776686881276', 33); + T('fh2e6opj1dni5kf749', '17753033290059290065644837', 26); + T('1', '1', 18); + T('26d3525', '40711461', 16); + T('300440712774126174401451236156067007573370014604', '8387356043080138295526316927827140067465604', 8); + T('5t4hfub0osbb99ir50', '228658754079328656695061664', 32); + T('71ic9b6hh204d7i11', '2049179021938589824134', 19); + T('5hddbe15gg556hi26i46d93d2af86h3g426cij', '8087180350965242088908465549595651157432077173179', 20); + T('1300433434104342031413234234331430214242234142011003120034442112001442203422', '42553163117436041210820684828722894387321388431600487', 5); + T('38b954141f26f2a4afe6f7a9b5e34286428e3', '79061632155013935902994702509288944969197795', 16); + T('1332570322632', '98077615514', 8); + T('d35odi2fdjojk7e98gfe6k35b8mf', '2100644003633488135175085159618349120211', 26); + T('3716217572065650441626246', '18430886692014464117926', 8); + T('29490', '41844', 11); + T('38240bedb839f71c66a', '16569841585813541996138', 16); + T('2bbq82tjjlboq6ut42kgo3f9lj9knij2', '40405579441757956010771252427816760128528380148', 31); + T('781c04b2456348', '14676917899295993', 15); + T('53dc391hc7h33dbei', '1498649871829166765405', 19); + T('1g5h3sftq04hfnphf8f8jj1', '982528894566891028570672354176986', 31); + T('5a5', '845', 12); + T('178172ce93h8b664', '92075388339711112816', 21); + T('9sr4id02', '340213183490', 32); + T('2b8', '489', 13); + T('2300300330330001003112022332211030330300132321001003030013210', '3671262870120598176271167818539254244', 4); + T('4pqt2k', '161313876', 32); + T('20jhah3e3594ic7blj5783a220edj9k2', '841249012824513777684222245238901038443798', 22); + T('11131403031142402344414241010142321033102334', '1440321372656516822979172159719', 5); + T('200310102202323332203003033113', '591179016791929815', 4); + T('716521140', '121283168', 8); + T('111010120001120220202202221201010201101101011000121121102022111210100002', '10956952452694016827581915819578357', 3); + T('111202131303133301210221032032111320031321032312301110231', '6989651474722512359041597886371117', 4); + T('0', '0', 2); + T('1h5ah9abadha39h8bgc5eb78229dd6', '4960759047638296451407652673971888460', 18); + T('2012012212100221', '31470469', 3); + T('85g254c289ab3bg8a4273', '33936134064348767438727660', 17); + T('agh25kbib97hb0g', '1161594685951625568670', 27); + T('12glh92lelm40816c', '6862332277154598602249', 23); + T('248ppji8q3gceono93bg', '24909353208658444795454586046', 30); + T('3qpamh8c03327tq2nudhccfpc1j', '2304427318605821370197739524368941219074', 31); + T('elimj5c2tlc2jf15sjs3ehinc1jnfp1s', '90926703087141442632989969922650276777949757558', 30); + T('101101010011001101010001010001010000110000011111', '199232011439135', 2); + T('411222201420220221121003', '50782833370098253', 5); + T('2039114347726530b4b0aa421220', '278325835859819389698795043320', 12); + T('41004131223131231131142234133411213241244344310323342404242112441330432', '35634094054178335947847642423396152869554996042617', 5); + T('100101010000010110110111111000101111000110000101010010001001101001101000', '2748976914400602004072', 2); + T('22230433215142110', '6780166900026', 6); + T('8mk1at9o9r804dudopt3k8wj', '732139600050794539356052387629430435', 33); + T('hf90c267ed759h', '371923695419188175', 18); + T('h3dnd0i7ic0', '2419032644884024', 26); + T('2fd', '931', 18); + T('21k67f3ff8mdg70mc6lhkl0di4hmkl', '6434984278071506771897566744856884038406', 23); + T('19p1httrcm79oj9rgtbcdiraloho', '1329656272867458937798290256287785742722364', 36); + T('3212131401031111334432423124321430000330412430201342140322331330011012330404', '91550385572652543205746270772410011134482321789183229', 5); + T('352m60pl8anklqx', '19288129733595604666905', 36); + T('bh0b4i51g', '202042896689', 19); + T('1119744c426471170b60025b47566cb98dd11657', '540029478576476753822278962275953374371031885', 14); + T('334737324b022c16a12776067cb0e59', '617423186874142070437062374479797609', 15); + T('3ar', '3624', 33); + T('7518019e9f1b02abec44d0b94eb31e2641e59f76b', '10695796466552661793442196497637299434594286303083', 16); + T('180pk6d6kaik7bj', '234289341354887508919', 28); + T('lf41em56', '290649634162', 28); + T('5edqqle17ombhpf05hego2l175f8', '2455572852658581967926750753107310477266', 27); + T('3m63gj51o8k4iioo2n', '4371172906141889814528715', 26); + T('3739a84a4486191653b6344395a88b34a', '123393978207073455312508389622518826', 12); + T('5a92108b809285441b85b256002730b2', '16797817024717861380905046511444934', 12); + T('hnge9ejgn3hocbc3fi2lgf3f3gdk1lhjk', '363506737365826966052915737077950321295612551160', 28); + T('1h0of7r2eq988g6ggrrsreirkb187r7csprjb', '235284507762506989471049564238403899403844842607979881', 30); + T('20253055005124511321504332435202215042331022', '6009050050525852848744537187631030', 6); + T('255h2ie39a2fb1500f973kbeaejac1a120f1a', '896034685417542420338893072410925395756357640783', 21); + T('k242j2c4nnangfl848h26bgnmffkekijlb', '70788268624971959173282983665178195588772935875', 24); + T('2435301544115404035300020040304413033133225434345', '62316354829793498075260144431239712473', 6); + T('2g2i', '62310', 29); + T('4102', '902', 6); + T('otj47dcmaon7keme2w12ld6s5v2eqpto7', '638854684449416351631309299374737671670073661571372', 35); + T('heac707ba3e5de', '1452158473696594274', 20); + T('cmah1lheg94', '1815679606647118', 26); + T('3', '3', 15); + T('36dg4c1fce3g01f', '5463291949613408035', 20); + T('2gp6i28usr3ica94iw3798uwa', '14194117306000686702866639330287897138', 34); + T('6ed', '1573', 15); + T('5i88i38d7ja58gc', '67220527363641484650', 23); + T('jc446gjo4ajf14bbcp7kpac9cnk44ggafg', '3341389528445632882430361472253103750301895578375', 27); + T('5na9jcrd', '196840371053', 32); + T('4snet0', '220080266', 34); + T('3411042340040', '939808770', 5); + T('1in4vg5uunmtttvicldm5195c3ape4t', '5628692971846091847621849643956512531468869964', 33); + T('31ne0m81elc2ni378f12m78', '7137831462888106233070797205040', 24); + T('1k33gi01c68jg90b5g2kh0f6', '5049053173243219517979291311964', 21); + T('rcrrrmn64una', '987268935367949034', 32); + T('1b', '24', 13); + T('1100010100011100010100101000101110001101001001010111100010', '221926845064713698', 2); + T('1r7pkwftlcre0ii', '4967939422698252306902', 34); + T('61226277150121532713772501031623101', '31243593013026976686003389408833', 8); + T('1h5hgf08i21c3bchb5hjc5cdg2dcf8g7269b08', '15235227425880825633838957695898165136395002484154', 21); + T('3b9e252789', '436531204678', 17); + T('k61l82d4naef4', '1206574722460321629', 25); + T('6hcchjif0g9j237k08462f987', '369998501355671383411474631968651', 21); + T('12d12b00ic0', '6998243180208', 19); + T('564041k3kggc5cb91lkigf8a0b882', '708046707322052814836378156934476046910', 23); + T('5918789824383b512946ab03655a5721426090a258275811', '3034504785879651863453500736958310166080471464555853', 12); + T('4a28dda30874514cd66531', '1047116675864538401747740219', 18); + T('340402203510613364531', '285913804988245316', 7); + T('jglhl745', '49319314049', 22); + T('75i9cih98am7fl2gg99gba7n776ifk868b6dh', '352662788590054230998768616200965729446372971897033', 24); + T('2g575jj883c596gag3b753iek59d60fh91j0jhkk', '10225004397589075860213367077653867616378434533721837', 21); + T('egf56c999khgk', '108840444143808488', 21); + T('3fa622c7ed221182e769dd30636092d163', '21658621556399738720046392793916662534499', 16); + T('107380259', '107380259', 10); + T('a00k9ff6e863c4daegfkd99ac5616hg5kg606a4k', '226239231994177458369309950416257385004898669100608548', 22); + T('727134513004332506', '16578205872928070', 8); + T('8a5cb867b3273', '205132338279105', 13); + T('q97mhi3ort3ke5dsl3v', '96850671091881098816986196009', 34); + T('4403412514545', '63419722728', 7); + T('36cb3cc08416821757', '30602499066114507240', 13); + T('7d54g8', '89201328', 26); + T('3oojso3g3392dkbbt84xvbxc0l', '2979009146895467259349827974056406782485', 36); + T('36fbg77a0ggb0ci9hd', '18409004251720729857403', 19); + T('2k4l', '93807', 33); + T('1qlhdvxiwgm6cr7nsem3jalucm', '345303493069524735491170228117585524750', 34); + T('2434042100312310041041102032432412344014', '5372241755138001316636449884', 5); + T('hmo15lnok4fod15g', '16687884040803134578891', 25); + T('gfiid29109b3j8jc8cc3j1eahfdd7732cic8ed', '140059672476506082851982887877581752595147028007486', 21); + T('3c84189bk07j261he9290cjd87i7', '6268314837095821879011320392648968063', 22); + T('1lh0b4c2e9i6kckf92e29jn6ac47dgc2878d3985', '1282419934581887287299945684653043019039515750548801285', 24); + T('fe3', '13923', 30); + T('1319468a4667519180593038183130808286630930', '6412675244028174355879293291613657100674876', 11); + T('4a3', '3189', 27); + T('402majam846193eo9ac96o6a5hg', '8892077274986800146995489100822816066', 25); + T('10d8b3c572250152618107b2259d5608a14a3a45b2ad', '20544745080946531559142719199803291524781420432601', 14); + T('go0sck6gotd462c2bnfafcmqtvlrcbb', '23907635617759730937515657563927387778907484523', 32); + T('111010011101110111001010101110100000001011000', '32142349779032', 2); + T('5d97', '59737', 22); + T('9g9', '4314', 21); + T('fcq1qb34ndqo3900m556lhaehdn1o1', '5004100408428511376913892098705761953181767', 27); + T('43g65e7a8f38', '489624285606273', 19); + T('32113334244320312400104443', '1029375448159769373', 5); + T('310221411043332421244032101422342140', '9370827599951145560355920', 5); + T('69hhp89in0h5jie', '695638255018079621219', 27); + T('fc7k6b4efua79nh18eohd', '205046231015999268860758172036977', 36); + T('684161846238401', '158778455527054', 9); + T('180abggf7782389698', '7796408187235478919696', 19); + T('rff01k5fpsgoa88ewo11igh9jt5dfcfs9a', '3546436014833336229063455228043873170002123415057080', 33); + T('100110011010220120210111121202200110', '52533845531034879', 3); + T('1hkah8eqdo36uid', '1188063720587983164130', 31); + T('789b534735', '518002001717', 16); + T('502233334544512511610366503153406301634260122', '77168872698190232426753092866458114298', 7); + T('1hn', '1283', 28); + T('1eki1s4cghp61aqj9ck5bbcqjkemr5', '3870223673450934834503736739043981885517199', 29); + T('cao', '10406', 29); + T('lcr', '20580', 31); + T('44e50119b604029dbb42911105f0', '7145735262791158676522926629699807', 17); + T('55a72a8845606a6101935b762956212030697197882721b8', '2891443867392734091987458182380459443067274109345180', 12); + T('49', '49', 10); + T('ectrh11nho2471jvmvx4q9trfk9hs81h4', '369444070950732839712792142856641597182627892515449', 35); + T('rqqeq6mqpoqpasrrcuq6jt9fjt4rkq', '494957438299081733206543531712764649663268456', 31); + T('1d35hh64e49c4h3g9954d522a58jcfg308ea93bb4g', '364650097839632030692202970098568691121387743389372496', 20); + T('130322112032010332300220231130333210003101302000113110123311213110220133010231', '41264121145398472876534214952762106425299300653', 4); + T('3a53c2755b1260d232bb8d62729689f9aeb62e35f60e', '21822791108317911324343501911275861646156768606549518', 16); + T('825673232713090477952', '825673232713090477952', 10); + T('i46jcdno2a01mk98004', '2031208929970583000541849348', 28); + T('1205434053320310320', '138125884535976', 6); + T('hge85la4bh0khqbbabe6igki', '14695370412094062868205499164831367', 27); + T('133kt1cswtuwmpd5qhk24k55sa8p04it', '326448646650356344354610046025058475184987458209', 34); + T('3236e2efal6l7h1d115264h1', '23268339383522455310975833089111', 22); + T('804660753567512670080084580036', '37956769767951851794665023592', 9); + T('1015752175345655', '36143524858797', 8); + T('916aa0c1752b7ae8194', '127717282530992844422639', 17); + T('1675967', '1675967', 10); + T('b913', '157275', 24); + T('10011414', '78984', 5); + T('337bd9e8a2153571582283dc2eb03e', '41349713484510984486738119285124059', 15); + T('121120022200112011010', '6418577568', 3); + T('bmy944flvntaqlvlqrswu10d3uk2khti', '8564046232202665530251180136943811879121979161858', 35); + T('c167372796bc509cd1b8363b6082', '106760449584399644261680763206674', 14); + T('3lqb8a2m8isg56fpgrwe1u7e02wusdv', '13151181110013852579067705641818021287165798549', 33); + T('117', '117', 10); + T('3941c283fg135ad1273fg109bb540a607', '8390935227868619653499488684200707583861', 17); + T('498400a895933a9307', '2470275750549750381', 11); + T('75fhhmgajaa5nmkc4j23dmi3c5nlkhe4a53', '611871605189747040922198802979378146489796218619', 24); + T('2e2ljgje2i4oe', '1312494953013310334', 30); + T('2308d687g0cf657c5dc77fdha9145334cf', '575552748356204066006280555783397107050655', 18); + T('15366300702132404747410165', '63663188402072700457077', 8); + T('1211021110112110002201210020210210010022011102002022112112211110111110001212222211120211121000210010012011002201', '166623003788951092841186083176122549763292977336948088', 3); + T('h6272h1dfd84f0e1hdh63bb891f297e49e40c60', '8698065705772214605732543063301832216085264908252', 18); + T('2du59wacc1pv', '169045559446116821', 34); + T('1104144', '19299', 5); + T('7b7b929ib38ha0h3efd37823e2e0ff60i', '632309191486570820267877405266584767267970', 19); + T('2607400245312045520037132356700', '3422470520825634689242488256', 8); + T('anu0', '420648', 34); + T('7zs9sznolivv0b261pz', '82453896793285080027030707255', 36); + T('v0k7bjb64u08q0rj', '1171893246067812904797043', 32); + T('164703aaab2ab8687405bc5c61aca10607055a713aac87b', '2594865872979998742750325942751781337383906323934209', 13); + T('6j7076hgc4cb4171fiifj117c7a5d9e0f', '14163341774568096462942504854512024189875789', 21); + T('335066305135104410516', '281945542299465302', 7); + T('0', '0', 36); + T('13996ae52a6d601db495cdecceab53b9549ac2e1a', '137420483326676517320231475107274395010419164300', 15); + T('1011000111100001011000110110010011101101', '763990598893', 2); + T('1u', '62', 32); + T('1f2e4acgh9e01', '12654640102386115', 21); + T('2052222130', '21667014', 6); + T('8jb7hcm50ej9k9klm09g3a4kc53ckeef116', '176022396062062610788399163891079098715666661582', 23); + T('20509a0235136a791180530831856481092', '521683223673880098116902682825014335', 11); + T('3eb5dh9fehd62ge5624486338g0ggf', '9641340713490442552045610666398445487', 18); + T('1a4bh040f9deb', '1816166780329331', 18); + T('40648755c8337a608c0cbc7b90960072a6c5160cc6', '18958470038164827979052792005696996964594012748', 13); + T('1', '1', 8); + T('16a80aa482', '3853305469', 11); + T('13mb90opa29kf', '1853733788161526583', 33); + T('1116feff891', '2144402836934', 17); + T('1100110021212111102212202', '381334691207', 3); + T('6kmr999ps3rdmfota14e73kk7nct5c1t8w', '855615046083522375775633777751308402456027767363821', 33); + T('fa5m9n4ajdig0ek53p9ak5j3', '306774699778415632661541827410190127', 31); + T('1j', '41', 22); + T('14232370256353054042511271041451307447', '3992139171064784961434159759593255', 8); + T('2988540913', '2988540913', 10); + T('1ae421bc92c6a53434324c74a65972633', '74644101775626481011978862480423290648', 15); + T('1902619a3864973a78193b1', '966910259499607548518389', 12); + T('4gsli', '3697848', 30); + T('2322d2009a', '30550988649651', 29); + T('4424240313181', '1263871046485', 9); + T('h8bdh45okcjf9o0hd3909k6b131', '38499150432406333646220029299270094451', 25); + T('140532020041465345104254054014206235406222630412', '8323153346263714336098983109345737707197', 7); + T('37y978xajd', '254414505320303', 35); + T('63108698628a4146909492', '46485268864599157788725', 11); + T('606362645', '35360540', 7); + T('2933a9b2c5e3c0a260072g14a7', '60459499766662642607270785339795', 18); + T('2766j199g1gf', '822341130472107', 21); + T('14545302124120420504244241454221314', '523836947223749155885762222', 6); + T('6120015562805331441103', '671376316612472574141', 9); + T('2mlb1r41o57o4o1464da0ppr', '12017943535755782808346241199775876', 29); + T('4d4b5f1hd64a0k0adjf86i3283fc79bd0cj2ide', '25463948070963903636723374419580115004912767069913171', 23); + T('b31qm7ci547jbnl9g7aoe618bd9rmd08ae3n', '4968565779272654017559601113501856102648368276823243', 28); + T('b1b5a0541ba01b', '8833755076953433', 14); + T('459037672a349796631496b5aa343b1b0436', '264580482109908454505064970141676910954', 12); + T('12', '13', 11); + T('27acbca85360b462b56c3a6992020a', '524707494029683596995243591366042', 13); + T('cq7md', '10428973', 30); + T('b205a4482e48439b767dc065d6e0d76cd6a964c', '5472159758300289441724757607228631541440203672', 15); + T('5337ac5ca7b7ee1c', '5996450942817922588', 16); + T('14350655634', '465416676', 7); + T('16m3mf6fd47ahb3f3728n', '426985809555038783456824121063', 30); + T('3ba358b358599', '490282471293894', 15); + T('8k535ee64117gi6753e43ea', '3045443598760536171170990533130', 22); + T('18c13ac02bh475', '30853119934409675', 18); + T('5063500066723494917007154667', '66234080067305105030592636313', 11); + T('186chh5mj71bk32nli72', '225231837610389033637644074', 24); + T('117148a5a0a852043b1c50a', '3593926048415359085014726', 13); + T('9', '9', 21); + T('0', '0', 21); + T('111110001111011010110111001010100111111101111001001011010101110110110011010001110010101101000011', '77050543164333814857060526915', 2); + T('25515232513310234351525133004334443', '854103611059645825566911835', 6); + T('53d6c0b8d7bc0c92538c72570292b169', '1790024541721718087301984827108484233', 14); + T('2316578141127154800332364024878378', '72770916299142794014818013970582', 9); + T('24312351554365464465465661533114621266242560401543', '677411054975350956949697408467820078793932', 7); + T('32404015430043', '45027693963', 6); + T('n5d8co3ojm57fc5olmok1nif3ion43m7bchme', '4917311114710343888452797906984336898319878490823689', 25); + T('bqxrro27abrmak0px9ooq2ns5vuh5so0r', '302670621534517112486044629162358286408048774808052', 35); + T('42hfgfolkj60fdoa', '6881729329622147179046', 26); + T('39ci8i1eihc4lec9cm763b8i3d4j0', '459022136565872107778798075253822151324', 23); + T('63c0mqkbp2r8dr7rlr7l', '1325268836989857485637303916216', 35); + T('g5tvq7jp0h1adior91e2fjqslp9io8os6o', '756966247294325777176797359454729091694026239537368', 32); + T('6a8c2f4ea19l831j8', '19490172547544158065526', 22); + T('6462041347652128580521325524', '379213761926885851181407495', 9); + T('gpnbyecz5edn8762pv', '4788313445419794110010788419', 36); + T('48cc6cc6a', '3827488090', 13); + T('64sslivyfuh', '16931440283999692', 35); + T('2102101210121000222001002102121200202210112011102011101021', '3802992314666317441798852519', 3); + T('21c5b3519', '1754309761', 13); + T('110111110010111101111000100111010010001110001111111100001101100010001101000100100100011100100011011011010111010111001001001110100001100', '37973033900975016780110288277302266862860', 2); + T('e9f4921560f07fe8d', '709589094228525375321', 17); + T('123310120101000322131120133331230033133310220323232210330303130311010333100123223300031', '10408108193832826669272437276453612756402294521510925', 4); + T('25731604', '25731604', 10); + T('g2', '514', 32); + T('223105124315354545', '40995871357025', 6); + T('101000111010110010000111111000011000001001011001111000001100001001110001101100001111001000000000010111111101110011100011011001111111110100100010001110000000101101001110100', '1913677948341929506841492066019813618520908835609204', 2); + T('1644024', '229485', 7); + T('98b0862965b3834318436470061301a3', '27754417671206367867044116818436107', 12); + T('1095204a777458309a72aa', '49018069076437376288482', 12); + T('7hke206325ih', '28203781823823961', 26); + T('ffkmcd2rq9563sy1xvqsc', '117533208066219358628225769982592', 35); + T('952', '2688', 17); + T('bm8e8138q57am0kpj8pb8plbm08c', '5244190084268927879196798208000799879232', 27); + T('1415a41cc770527309', '11386080654330629802', 13); + T('1i1eh', '254427', 19); + T('45145317829278248420231253636297540283', '45145317829278248420231253636297540283', 10); + T('2l6j1i594e0d4fijgib3e7fe8700ibdjc5glibigk', '1477333573534925171219612384777712079874272005954068612', 22); + T('282gd2f28', '90293858348', 21); + T('6c1074ha0e', '2140840789109', 19); + T('18134e39226', '887329110861', 15); + T('16471074688235670422', '16471074688235670422', 10); + T('157b2e3d04dc2d3f2c5d24471f4ea6e', '1784586140646675991730453110223858286', 16); + T('a86', '1304', 11); + T('1efcc47a12967085ad8cf3e4bd18a9d6', '41189283705768995637851264202925713878', 16); + T('1g3d785ii67i488315102d815090', '242822867207165195727104515417800180', 20); + T('121202210222010100102010211011201220121101222100020210210201020212120101012002221101', '7436650012220024757800516842466470073650', 3); + T('75lkce7kh36cjmf701', '1023850888444449444662304', 23); + T('cahdf581f8h0f3eh10523f8g4g3732dak', '25614782272742316000546588041656891750618958', 21); + T('c235rkr51obgch00s9hls25o', '52114806185494513712231850125002384', 29); + T('512450325542104132203204311205230152424404424444', '19625794458356109522992578261777179820', 6); + T('2938760b2268721900b061aa78147', '4575799291145190419537441899975', 12); + T('575g1fk6gjk', '141564983017126', 22); + T('1bnrqqhr6axy', '174253590792010726', 36); + T('1889b9fe35e07e831ee8', '115877401735749106343656', 16); + T('11', '4', 3); + T('7', '7', 11); + T('211012220220', '437343', 3); + T('9766o7p4eago037lpdf4317jiqj5b', '306860122389219927555679423284323106653767', 28); + T('22e602h65', '54675222925', 20); + T('232', '46', 4); + T('327', '463', 12); + T('2654', '1452', 8); + T('174kb3627', '50857395421', 21); + T('23330n76466p54202nfg5dnpmo5b', '339324532051327829474356208074218552333', 26); + T('1b', '35', 24); + T('8fk3617863k1ekj3i4nbl54gjih5j8d0mcc', '11064457703744790697464223530688876525906885114476', 26); + T('28d11a69l0c51033hl52d97ka58203cd5985', '230834132211031575077351661596124469754192074433', 22); + T('1hq1lyqrvs', '118773335426438', 35); + T('4h8dra5hbdhh6qoigef555994', '249026258798368156622666692897679952', 28); + T('gm', '502', 30); + T('6nbbg0v2ppw', '13803003606198230', 34); + T('o8995ejolijik9ihd6h88711k5dc3', '33771583190371089624006346925091814539678', 25); + T('4qtin436tr24bq', '78115196524110627956', 30); + T('6ns7a0jdiaoq96ol', '254868647544300369124117', 32); + T('xpawcvygn9kw0sjebn7sc69w3xv', '471734872338124510193818490984195329748111', 35); + T('11g04c02ffi1jei4fhj', '285744497211343343718359', 20); + T('3hfid1e', '557949033', 23); + T('27366', '1203018', 27); + T('410001534025040051252012542022342552143230432315', '15592777075391766081309283367976081239', 6); + T('1111101001100110010101010000001000100000101001101110110100011', '2255400303091572131', 2); + T('c928639b2d13', '429702230763951', 17); + T('1ck', '1505', 33); + T('1rg4slbg29', '37751233721469', 30); + T('113223330300320211033', '1627738310991', 4); + T('7526131ba0fe6e6d338a003af179d', '38016936118707892590533223274977181', 16); + T('7kbia0gi223ojjok8l9ho8', '1777784215960035304259119683108', 25); + T('9g339757c94f3653fb7g0', '126191630648724675191221284', 18); + T('1232330203001200013211200333021302320202121321212333231320120', '2304259321047843514901283244800400920', 4); + T('21647ibj2fg0638c34jji5jbh258h0j', '2217866954079313899427020782581575270819', 20); + T('723532980a7a6160', '30120427896650289', 11); + T('2838da9931dg46976fb7619a664', '1064566675009185862217875437188488', 18); + T('9dqonc1dohg', '7743225898096948', 31); + T('1652b10575aa9464338761', '70682923355125382861113', 12); + T('10ii6eidbd15c683666', '109597980236249948993049', 19); + T('dhdbjfc5f0kehfjl9neo9n70h9agm22', '38466966256495223900208674134248822954556238', 26); + T('7icf1', '1533673', 21); + T('e9b7a48', '166885943', 15); + T('2l1752qdn2mabgmd', '8211555811727424645412', 27); + T('5df602ce4dbge0', '120139111113169572', 18); + T('222232223001210301212101233001323033013211230301222323021321', '887451886358748243322562892954055289', 4); + T('179faejd9kk670fi99ajk0066jkadj', '299524423604818745400343490657227811143', 21); + T('43200420031713445212602476237542777011721017120532156', '402495698817091827248733349983795241261310588014', 8); + T('13csb24qhher85cfdcsl66g7s0ob5305m', '70068000321367559069425429652328969811703105193', 29); + T('bbhlbl3fj6djl87bi16ig1bkb0lbk2h6k', '104622289890616799189358030121475094962525324', 22); + T('lci64j40949l9l3ghjfe60', '2077372440260189074331803122192', 24); + T('3234121002', '6942002', 5); + T('5c3c18143a8d96ddbb3c3597550682d86aa344313d2', '8063490574133991241638155039025343935997707461868', 14); + T('110100010100001101111110100010100001100101110001100011111001010001101001100010011011001110110011000010100001001011101100001011101001011010000011001010001100', '74667765260706149423652281266282011954894090892', 2); + T('e66h2dp', '6853789541', 28); + T('i6ga265f8fhg7ci', '30050327699762851058', 20); + T('kpjn1g235bnqdt0pfqtpcm76p4d6fn1fl', '3864528859465205644913303289493194133427615572371', 30); + T('8rj60u4oi36nelvsax9eqy5iihuv3', '150573930494022755146637799121836756574031088', 35); + T('10020121120100201100102212101100211221', '487049655635708407', 3); + T('9p8cei7opdpi65n57loob4g7nbc8ckoblec2f7', '225365305306981525279174955491083242350460825335359093', 26); + T('10a75b1764057474656bb29', '592793221090149901308561', 12); + T('4anfmab64n5bl8h7lgg1ie0l4ddfg25cg4e1', '9047095202662955427862645312426846850781918243409', 24); + T('ci8i20261ji2a58h12hh08543b44gg7', '59758755425248253813800729972530250941001', 21); + T('244q5nujetw6880uoouz1lr', '36636647742989920257650194763362527', 36); + T('2f959fkeaf3o7o3', '281006925782093444199', 27); + T('2dh9c4ndacn1rl', '39101896643140342731', 30); + T('697949013', '1475458768', 11); + T('im8', '13724', 27); + T('6q6vhmd1iu0b8pqb80kvc', '8644518006985435630419253941228', 32); + T('9gjbn3t7i081aggxoosngzvxjwyvefe', '462313443934060201968693839921231382427024338122', 36); + T('1000000010111101', '32957', 2); + T('a6c29', '300855', 13); + T('9jk5', '120019', 23); + T('2958324266700a89cba7a88aba7b1483a80a845394c', '166375841507718717154199653196499305551542689961', 13); + T('8bga99e87', '146479828376', 19); + T('552c7691213c2b1d86123c1c7caa2938d5c986da9b6c4d4', '283151423101296097641534175091523701505647270269960362', 14); + T('9cbd4aha1ha92b2eg45jeb5eadff0ed4', '206784494673855421123664772006772082405864', 20); + T('1d08aio5dtk7t3ok8imm0rirb5iqsj', '62732185189647697420568057030541027413945235', 32); + T('159g201094dkhfd22bf965eb5je48ea946e84e9', '221200921967109264882569021709960008760497185134222', 21); + T('282810456027348881588a1a6844975597a10279217', '150593766383429712523815468178854618203779472', 11); + T('gkeel6a6k1ke899bc1ioh2pmn9', '10194974937056732227569538058731359834', 27); + T('1h', '42', 25); + T('1111110100011101111101100011', '265412451', 2); + T('1cl6kj1ij107ce544', '65107429951418530980464', 26); + T('570996141450414325391258602192009734881', '570996141450414325391258602192009734881', 10); + T('2011220221021021120202000120200111201121001102100222011201020212020121110102021011', '967713477488275607218048209625740279136', 3); + T('7b807441cd4ddd6b26880719b0', '1961771544630113528190880625565', 15); + T('aka6g7bm5qcpcamgncnak34grnpqn', '355563315866230083340179532894009970687679', 28); + T('3jon8', '1986425', 27); + T('11110010', '242', 2); + T('1ea4cb38dc109662aff507', '37045991477844459182355719', 16); + T('a5202753805b262552a29a36', '69100527198804395338546314', 12); + T('h758blfokoe2h1f6elgpdl6lb3je', '2765358558144112774392012587127708191216', 26); + T('rvracembjfb0j0gdqetvns80gwmfi7ocn', '109408928137522865486039210206106484286615208207327', 33); + T('c655c454468g2f2d191448bc0', '4199457544137003090436194808585', 17); + T('16166f015f2938', '6217115507829048', 16); + T('3a439d31a60970875bb2', '22327746714916052427152', 14); + T('8f2149o2099e21dpbomf89sl2s8', '896954776923762691198643934470088411598', 29); + T('2732ck508j4khfk70b9hbi1i0g51agk3kh', '100584319142432419662581113685907275800401254', 21); + T('2293hbi1c0ibj8b04eb0a8e306363k', '467614135020365754837471336728850191984', 21); + T('1001111110110111001001000000111011110010101101011001000011110110000001000000001101110010100000110111011000101111000100101111111001100001001100011111010100101100100', '7294509680489473516157489095568130945736908974436', 2); + T('3pfr2ip7jnn26sdh0c7o5pp', '577698647900420975141535859962895', 29); + T('a71022623aa8568a56574a648a6393129a75', '29914427537161064808542804258585866020', 11); + T('1txea4tl4ioma4xhclq9hd91tcga9b', '1113049897936374448769342426122784424634168576', 35); + T('12cjj1kh53kg5d31b8l6da', '17344044780654272896096456024', 22); + T('6338438487154824328460106772453870408', '143776716058614716325880611403859603', 9); + T('432001140311342041002012043', '6974394432902375898', 5); + T('4a6', '1332', 17); + T('1659648793588259334905356155006008342186329512002888', '1659648793588259334905356155006008342186329512002888', 10); + T('4ff72', '2101868', 26); + T('5f550f99', '1599410073', 16); + T('111203231301110320313223212301010312302200122013100020102300232030232302031030313233100', '8065823905840410320894641643979945858160602700282832', 4); + T('17cb282a436a703632a81c96c82a23b48bc5327a9857c3301', '475704029530481315157224161906654754528942922274574893', 13); + T('a4c3', '222995', 28); + T('163l03ajcb0ad40c442k90j0nc', '40227429932334134086127053002343476', 24); + T('5710182695a29304279467503339a7a18', '11918193967216532512029301640127416', 11); + T('111101001100101010011001111111100101100011110011110', '2153208033232798', 2); + T('171d86581e06acd30671393', '110366637375726363319446063', 15); + T('4309b', '88247', 12); + T('12g769bj187gg86h8hf973j0a42gjd', '61252434461027682447268959845152662793', 20); + T('1a12b67c34d57d7b7ab7bac0', '8069232682011269556707244736', 16); + T('101111100110101010011111110100000001110001010101110001000001101101101011111010100110011011011', '7366381587271251372942380251', 2); + T('782713006615886387770478158878371218820625', '10540317444948349549974758397221264757353', 9); + T('er7m00fe4h1a98apn47rp7ngqof', '633071733739943048886072406486704224591', 28); + T('5fba', '53161', 21); + T('1', '1', 25); + T('373a2b3ab965aab293', '8009398354430311887', 12); + T('10', '20', 20); + T('1430', '240', 5); + T('74c71', '210835', 13); + T('9xsfamo', '21634167696', 36); + T('188222373080761752602365676404381071', '4983141020490008650128344377943701', 9); + T('jb2e96lje1ha', '18563807355127419', 23); + T('2cahf1g8g954b14e5894eg015bcb7g', '6829065184980377404323550915244107882', 18); + T('11100', '28', 2); + T('113411024302423333024433100040', '252194224967802628145', 5); + T('f180a79f03c93c97fb35ggeb08', '87059322139486573429172839940859', 17); + T('120efdk4bgb0262hkg872i6a', '8204646330520455780142328716598', 22); + T('6256357393600602316105463449174016233346', '6256357393600602316105463449174016233346', 10); + T('3212301333200210131012', '15859158501190', 4); + T('18c1109b859b3213a88455', '1912876166082408380555931', 14); + T('3msgodhb0', '3189281360714', 31); + T('10110022202212111122222212200112022000', '518798912531859027', 3); + T('1980a00544620cdd3422c116ddc9c2cac75ba9675c261', '452854399467234314582837732095548314825458988323821', 14); + T('22120310223131300233301203123010232321121331222211100311121300112121221200320333', '948867252058170771971968589971969532899273084479', 4); + T('8610336237073', '8610336237073', 10); + T('1gn4sel36jcbqf58rhhhgclt8j36nht4q7mok', '752672174999009092630489286382303645479407654345444956', 31); + T('1a6814', '671454', 13); + T('2121004240121331213033020403240303241143321444022223', '1016205781946557654652895245042954688', 5); + T('3krgqepgut6dd9os0', '18224259273870124042615005', 35); + T('25535776478032142616588245811660254', '729334501710489629337454615331293', 9); + T('6k0b066cpgf2p21bb9505ee', '91199647570792812205739943564766', 26); + T('ap7kgeh2dn7i6388b3fcl', '218672926024286079336604110609', 26); + T('ce4', '6120', 22); + T('16a256605b0061a6', '24202414333303182', 12); + T('1212102230320001', '1716178433', 4); + T('4q1vkp65a7al9pk0', '287088200068338986362716', 33); + T('1e', '41', 27); + T('55510210244455351232000220243023431514140253311004235431353500150330', '81776145043668260223503433020247653436287857614658350', 6); + T('130305050324253103313502041022443', '12053790958929773590572219', 6); + T('83hap5gtvwyl7599', '1173538126887991015344699', 35); + T('12881398792329044007438159548', '12881398792329044007438159548', 10); + T('23h7ffhgeajdlfi07ha92fdcde28', '3822210589969585209003310564499412420', 22); + T('1j011g1ocb5pge5n73n340l40m', '1036339108033766409452608824145334557', 27); + T('211286b927780106249b51734e81a10806cb6a37', '15272908194563540988310670174159872284243270052', 15); + T('12665330245536441266321151203103102661414103262235', '366872199782353523541963434688475998858925', 7); + T('505432a457580', '44912120764272', 12); + T('p2pcjfaa9kh1d7', '101755664535230532349', 27); + T('1ca17a18211', '273370087134', 13); + T('1a6eki24el0nmj9gfb', '415305377140894690392947', 24); + T('3311124011032202103222400434004110041', '53121754075159082263738146', 5); + T('757575478216a0369101a9a', '611877203654087245090193', 11); + T('5hk707tas86j7lgepasea3a856lf', '102938253425144386832441058642305902207629', 31); + T('0', '0', 9); + T('23310db646fa85615a6d3a159621607b', '46777680511357499186246331786523140219', 16); + T('330da4bd37ad5178d5d1007da898453212c6742b9407d', '865753046927137144605560690484335314112623722543359', 14); + T('6jhid8iejf0b921d642d', '36673075507149093253329653', 20); + T('3e', '68', 18); + T('df', '223', 16); + T('eca7fb1ac1f4gd0a485', '578348126662152188101397', 18); + T('201222022102021122110002120000202022001010211011001210111020020222102120001202211101111000212202021022', '3431471172203461653218475265244817680631426808448', 3); + T('33cb8694e7a24d9d05805', '1082956090598761200374930', 15); + T('ca', '370', 30); + T('8897a2162a5266', '16689805406089296', 15); + T('2290daiad16472c0fga333889736g5f5j6c6i9', '2917258149546117962537789858395697836179581858769', 20); + T('47451060028002207126815661', '3470450188748283358865308', 9); + T('114r', '28047', 30); + T('57ba054gpg66el', '13115553604473529321', 26); + T('116214463211556364653562325626235034462421545060660', '2287347864835163237256472200746189442885120', 7); + T('1154000440000511455342052110220205054114425', '637191928874193961970691931711985', 6); + T('27', '47', 20); + T('22020101201201202211222101010002200212102011', '901277883406744447207', 3); + T('2798165243533191120056', '2798165243533191120056', 10); + T('9dh1m6jk4486fl7ie', '58857822718096078072226', 23); + T('14ik9ll0dgkee1ck7c0a4f313991adch88eb', '117891995927485506019012046581940014028686934255', 22); + T('28718dncmjreg', '808197342478474568', 29); + T('175acc70bc5338cc6b', '46636214136757771663', 14); + T('46puu0tjk81b5ksa2oht9e1fm135', '78008186942992687166968757565746709077308', 31); + T('26q46ph98mcbflecrd', '8982841934283065478848833', 28); + T('7', '7', 34); + T('sn7to1hmp60mn76nol3cqlcqbr8e20rj95eq', '1375725743077776547871273369745579120905697393330394586', 32); + T('454k6j5ifbe412jc5jah10b488', '4828430285363354503415653711937102', 21); + T('81ptfnrpjslw0v9ghq56q1g', '75036895810433018445880325692861026', 35); + T('10011100111001101100', '642668', 2); + T('377683501888313149', '377683501888313149', 10); + T('vwlugpjwq79g6outhe5ppgq8bmejfod2k', '325037691298489231093571012113559335342031712624284', 34); + T('1f000932fa1ca86508eaafa96ab453c29', '659300071197325571806191735253210840105', 16); + T('68242gcbe2euld2s1apcietj94k', '3732484254314395839062129559607170449956', 31); + T('120001333132124003241232313444414012433343014310022304413224440202344143', '59315978615169369703579038472917980021927481293673', 5); + T('2d31429c9b278c5cg9i8aj4fa9ha8fa7379', '456580926576690928879270905384043456561657349', 20); + T('a9803495569a337879a337a88369ab60aa4a', '638259518594740470682480348997343560026', 12); + T('133534443423300243223404305511241424032531131434023033530', '60692847352782957146725953144004923108889662', 6); + T('85ehgbd', '390694638', 19); + T('3j5', '2029', 23); + T('1012373453302574', '35905333986684', 8); + T('1dhke7dqoqf', '440416062149351', 28); + T('5hkpg', '5144063', 31); + T('35ec5ce3922a7b1370', '994709174014332048240', 16); + T('j3s32kabnnsgbnsmf89bgh92gndas64407', '34754001064750863291622215672807282090764762457400', 29); + T('61dd8092382749b078370bb97dad5821322187', '15671002482405137501514236252535037151239851', 14); + T('4hgwcua9d', '12653415422833', 36); + T('30201301530031554', '8623342543966', 6); + T('54a85400285541985', '250548156011412583', 11); + T('i0o', '11274', 25); + T('11ah4c5odl6', '100812863664906', 25); + T('2b1ebn61', '80579255489', 32); + T('102052273401065267741403121062144257736511671', '5621698349102047273384509211278621447097', 8); + T('12m5m2g24g9ha', '40974227046315490', 24); + T('b0316fi0fi12cc2edfgh666f4cie4h7717', '17401925878966433671042194733848449150168289', 19); + T('1523011035032422014120125032023343524443321', '915746679762856704907142877377473', 6); + T('e77b7374944b', '254517404013643', 16); + T('c1h6s949befmc', '4265231138793771068', 29); + T('8gn5neeg3j9kanelcml', '60767643491277312404351781', 24); + T('1d0f1645dc1656b1174ce08b54fe4e40d8a45a3', '10368573985886829358840965263279576467697714595', 16); + T('31b999', '787653', 12); + T('59lp636iq0uipac40', '16849438009500138420303704', 34); + T('1', '1', 25); + T('20py9t', '106157619', 35); + T('1nbp5hb6mhkcbl0jbej24mp2f7ie6705bn', '94059918813328332413354055079765980054543365401', 26); + T('372828313408429453a89234335705aa93', '84982956234483079772353825488568807', 11); + T('1', '1', 34); + T('597599783196a239116345493271610aa304a', '181780923673444526658447231965398995472', 11); + T('jah2d9f35eecehkhaig50k058f32dh34i17deh8', '3425329058012479254389346018958616073008108535858638', 21); + T('3fkc5ekh02fl5l7504lf4kjch', '615443274731752854770742839505669', 22); + T('c09g66ff3g4a', '66781941358533058', 27); + T('8kjcadt', '7690526901', 31); + T('216307272261', '68706452503', 9); + T('132122213122323312233100211230220310021', '143634905030561828605193', 4); + T('4', '4', 30); + T('2ih8d4', '9419464', 20); + T('5cbru2esldn7bi3r11s3slklg7', '103847118190398120797912171490899906888', 31); + T('2756753281255824113730120138022846228121005758023353', '13214305490430474201156158495454841847969048656749', 9); + T('535g', '25533', 17); + T('cfdjhdbh42', '6545912574882', 20); + T('5bae9d8572781e', '117534573740411384', 18); + T('32a7c1783c7795016594977106', '22697848458351903229013168476', 13); + T('5j72cag18jf7hd2438hdk4d8gebh872b1jh6i', '2356586866027928758507194750053263942297777670070', 21); + T('29a8703347585354205108131051123', '50730942867273729841510907088926', 11); + T('202', '74', 6); + T('1r6n20omm758binpfhhg6o', '4846670585161045993229294323840', 28); + T('302l1h5k25mengegj12ig4j', '6958109965429248922848549113971', 24); + T('1i7ctk2rx8mw', '107795645888833828', 34); + T('dma1', '408736', 31); + T('ii27k020bh', '71425244172167', 25); + T('3bh1h47d78cb647h695', '144161934131410544716151', 18); + T('12l91995c6pb02ka9fojp8qr', '10264759826056914843582409364273007', 30); + T('73kbijcfakakhjge0je9', '95249983769065885922897793', 21); + T('231256124330320211253061220356', '7912150971698220450062992', 7); + T('63ee15b1600gd1e7c1aa076ad2ba7cg338e2g5b', '355952630936226662025856351876918476512022045757', 17); + T('2scs3i0nr8k2j8htv02264fgq22jike5', '131881187118274767764360147174413433678100779461', 32); + T('79g87d5ba26if7f9hfb7495f9beb', '252650784623083713180577012193606464', 19); + T('2446336161312425410360135603630002111211452144', '285926215543115581336289477929436470821', 7); + T('1014', '134', 5); + T('a7eg2ih4eg8fg', '23039629802162005', 19); + T('fjf1fc86n391bb3fad3ja', '143555586534627347785306846110', 25); + T('53ee0k686kk9p0adk24', '151433087203562860042013424', 26); + T('3gde516ce', '43324547990', 18); + T('245a76562671a079a31367a6677264a795a6a253aa3a27196036', '311589292474793017656303618319953525081276226845816579', 11); + T('179aaa005c10bacc03', '13811640779442966125', 13); + T('5', '5', 22); + T('3e0d8607cegf52025ceg72fh2f1e', '29502535901784316100206946117442716', 18); + T('bdc872482aacdb6b3878488d2bb47b4', '290245307604746958781826626029678378', 14); + T('1022imeahr', '60825976875029', 34); + T('231100121114223332230343030211204244131433', '120421321606190578932235536493', 5); + T('cebsni1lh28p1a0nle3a46gnso5', '7431258037694141924732501459014099990268', 31); + T('a90d7361iba901a3jlf9', '333807389054166765483570559', 22); + T('a4725g0b0b2', '20684084949700', 17); + T('p402062lc63b2o0p8ggbl3c', '777160257890411909864572085822448', 27); + T('2303355462020425243403060', '11247570692927310923312', 8); + T('2dbdh7fd0l32j3a82ba3licjb31i4f07f9509', '5554907043046798505631459409749348180767609870309', 22); + T('4hlg2321bc13197g5', '204342990490417640852281', 26); + T('236571440705332620722731730', '749616319651624136717272', 8); + T('55bc38d17d8bb55131574b20616870b', '131116903380881919543215522786677223', 14); + T('1634023045115006652225404137572537300225444451056550315', '10550640276770088084077930237138652035960136192205', 8); + T('7898', '7898', 10); + T('9t', '299', 30); + T('10004226456290899026384452917652101828', '10004226456290899026384452917652101828', 10); + T('10896b75jlghjj5ac303bee41', '168126786589614868323001367557489', 22); + T('a', '10', 20); + T('23456bb', '6811055', 12); + T('ef557cf221b976840f876d6fb8f40', '77668303327151794801661259781214016', 16); + T('74e7kfgi63dkjcf0g709hb342', '390828104573594513794256813228258', 21); + T('5206807007436090535494441589318273345', '5206807007436090535494441589318273345', 10); + T('d50ecdd40a74g6b26d', '10999913536169400117845', 17); + T('aaom96hgek17f1', '568329567265580151340', 33); + T('2h72if30l24m1jbhijh', '8929830333919554320478685', 23); + T('28d312047jhhp9l6ad6bdec81bjgoce990', '115062764810939925699862575664608474748105279006', 26); + T('65360803637634a9a320113a990530426', '13689954501985913625610550156362967', 11); + T('26c2a5eie22a', '477248367792850', 20); + T('11d071e8c8ed7f60c4fce894fa20a754', '23679184030321848843326203235370313556', 16); + T('170101df', '1223323850', 19); + T('5al863jgic19c4adgjrhelrc3k20i5bflhrk', '2408022757613879912229341990414136203114403118805720', 28); + T('72ba45fi27d44i7831a4732di2i271agi047abfd61', '191613909069100350797661478313614413491069036280929215', 19); + T('6304300645', '259937389', 7); + T('9uadt2ms0g6dfj57d0keiomj6', '56331308674978903283699628034003500420', 34); + T('616h5k6dfj11d5hc2iibedfbiga248623eic', '114913060108619059717914037645723081826728710552', 21); + T('151e2dij79o8m161hj57pbpl638jk9jplfc1j', '1038147489563282380151219519342367976127837619996133', 26); + T('805akctjlb4cc8aefu61', '317118938284714353937988712641', 32); + T('343', '178', 7); + T('7cee134a1dab3d5cff44b067e971', '2533881063347006744885016016710001', 16); + T('10100010111000011011100101000111000010110010000101111001111001111011101110110110100101001110100100111010101010111100100001001110110100100100100', '7094500064780213519639611108740313788148004', 2); + T('9j48ed9o4n15benq02k1mnd4jpphcmp57m', '1668040714992898949399742204953861377855573157899', 27); + T('111110111101010100110000011010010100100111110001111001101110110001011110001111011000011001000100110101101100001010000011000001000111010100', '342777004104073921541803082899350493073876', 2); + T('2aps9b7ceb3348dj98d64qdn67l', '250116512555563755653432147366865700291', 29); + T('2fc6363ce8caa6f2f7d7dc022c', '3785067239745545603746923020844', 16); + T('11100011110111111101111100110111111000010011000000101100001100000100000011111110011001110100000111001011111111010110100111111011010101110011011011101000', '5081771157073840975382845753680003415619876584', 2); + T('5bddc1', '35425291', 23); + T('2s9ne5s9i6tk5rl1ep', '111588862691610935453976025', 32); + T('21012001212121112221011011010110122121021212011200201012212011200012100001110220010120111001100210202', '1234802724654414853946459041807906768113064412381', 3); + T('3bf5488fde2e', '65924670414382', 16); + T('u3pd7sn71e2e7c99642dxo', '4362855934107800076687165630732286', 34); + T('242104344320311141301411342043231022024424', '131400847482479502782843939364', 5); + T('141829b5162377b1056773629bb7a64073631', '953369605617258980018209252546165804741', 12); + T('12bedk90926m62hc41076m84meda13mkkbf', '93314399078008522916395011917110262331060012567', 24); + T('54c1fc9g96ageg9aibb005a5904e933ebea', '157502651794975274233660048577504724325147521', 19); + T('133431b367b4a8b8979372b4164197204715a31079a71268369', '1158759359278975321088119115465152282863498420368213505', 12); + T('13b', '765', 26); + T('2ck823dg0eah37k2c8416i78850c901d3jei5k', '21878942278821174795945388165121844819343606060160', 21); + T('8h63bi8906620568a8528f8f', '22734498086376568954341159917064', 21); + T('3011203103330203200111103022312', '3558775854728557238', 4); + T('2114345430422321530520332432005304354143001413014543014', '2321243578574069612613894494714592689697586', 6); + T('313c41070cb56276a', '2062977410540325354', 13); + T('226062710577641', '10314752130977', 8); + T('eq', '404', 27); + T('1rrbem3ecq3n67boi65q5', '175399218720599627675357116077', 28); + T('9005452', '26883134', 12); + T('48lgbngap7dk71io03', '4920463358341388158907427', 26); + T('12b924341033230434a810', '302187810594058435801794', 13); + T('103522531132242513144124530124313441213454020315521503313101452132405', '90987503713365214158548349492616461122244894478035413', 6); + T('477895231156911238285', '477895231156911238285', 10); + T('1000212202022010101222211220102100022002001020110010201210211000120121011201111012121202220002221121111222120', '3491562614859609420313071183474817621330068508271172', 3); + T('28qrfjm8om073jm9jr3', '1598066573075108614197842742', 31); + T('glof4tcf9be30bkk12huv', '21144602101411302851236097771487', 32); + T('12234515554420440450423405522354121252513251541023431322250340003', '89091283215408342578048636526866275587072931600611', 6); + T('293a2ac1719c62b6b4139', '51592970952982353881099', 13); + T('63834852656662556175641051453321158', '1790303853240101318026187599939340', 9); + T('32534135313343133422341503303202021011402445221134014', '101535298750522938072060693442171335418426', 6); + T('2112212120112111200100011112212210202021000111012002022220001202002010000021100000022000001120111', '16230306822675488621342411759833456926468945274', 3); + T('1a2d62jmlkaoj399e', '32690531722536862943364', 25); + T('22065453526323025411333336261643566522', '42796341889415021094527192979898', 7); + T('104167430465731064510563526155446356705', '22143034232047918382504353520541125', 8); + T('5j3d7b3oppg6kc3mn2744ijmndkpe673k', '36321347509392283793093324752977729120040144694', 27); + T('120414231214540521150224323551320', '10769598675773992644375360', 6); + T('1bi9fehbj9e547c49j7a06jg7560g8765e', '5250966747722630510598487707449375086663043078', 24); + T('82twddpskk881uha', '758314750152574060793292', 34); + T('d52llnno6g3gh4gkdim8rms5ak', '111585313532002326992087587176446680820', 30); + T('qkbqpb3i9tuggok45k1auq7', '17209839140980123276676359657614507', 31); + T('2d8d0', '147120', 15); + T('1a549702802504ab20a90371a4a264007b8490821a', '329963588381537567503898209643604670682080054', 12); + T('1110101100001100111010010101011010001101111001100101110110011101111101110111000011101001010011110110000100011010011001001100100010111', '9997939815383461009512050917690963695895', 2); + T('222310200', '175392', 4); + T('amiik9pb3', '5393051815336', 29); + T('5661a43808fca8b4914', '25495292807490092878100', 16); + T('1bf28069b1be09e531b503126', '576881162454758851939576929685', 17); + T('1ab6kaha802h2babna20o2d50fi8lhae', '30748760641046756957353468296768955257370264', 25); + T('r6ngp7gp', '469799289293', 29); + T('17apm6p9a7fbhl9el', '56058811903597689734205', 26); + T('25ad8a6e4382e566', '2714978356557964646', 16); + T('52hmf81bke60a1ke52184jlaafg612kibcb', '101881994750582739020029670929688842788838198590', 23); + T('ehi4b', '4134238', 23); + T('1315442501021345443411512242201232334120442122534143311114044131454', '3544848832557588737143248118483924586575113144263194', 6); + T('12250151105015533254352133311311334000', '87400952959480256128641322608', 6); + T('10202202221201002000012011112100102011112212101120000101', '219194364044464644628553410', 3); + T('3a3', '1403', 20); + T('4m3gia86cajgn0gdgi', '5500811188268590953027430', 26); + T('6w3nih08nq', '323632265894876', 33); + T('132720259751334396422683662607336', '132720259751334396422683662607336', 10); + T('efh6fkbppc', '111175184462268', 27); + T('n3hh8ie5go912kd01ecbooigbnobii22p2d3c', '78229552724209774917834081784752324809901456980962338', 27); + T('1a6060e36b871e4936cabc14e31', '6414250388216682298310005961071', 15); + T('8i4emgkdbf89m293dafa7j3c6d5', '6728193838600532021344689195469391549', 24); + T('2014393794498', '2014393794498', 10); + T('2119tt7n0227mjn5m9q74s8in35rh1', '36121164187835391842857679215651365416073949', 31); + T('i194c24a44i6f4a2fgf3', '35766342361937111855098852', 19); + T('51021d6b3743de66d02c23c15ce023cc49b9c83c8b3eb', '28365584323066293841735710762592894605506406026618021', 15); + T('26uhc4w2e80buav4ek5lr5lrhal2p', '82594494815054016601080486021223708523042353', 36); + T('222014311425534015230513153023430030545215', '191709426580611202017069517126955', 6); + T('6fl2ghallhed', '3929812949532461', 22); + T('7a337a', '1278210', 11); + T('10001010010011111111100001110010110100110011101', '76038037662109', 2); + T('fjk05ee4qc7djqa6hdca4l17bl8ffhe2', '11426461588103614891586213643420335678694578906', 28); + T('1i82b85b56f04bii7f34d60515bee4b38d0e965334', '52886360111107438155328456805662247358206078055736978', 19); + T('163a89480a79713846076141827', '1881124520769713055736991120', 11); + T('8f2g', '331856', 34); + T('33f49h', '7923777', 19); + T('pmeea2d7919bb977n72ei4', '29569453750412076045125686518769', 27); + T('10ik4q8i53n162bregsc29mt9cnnr5l', '561304419042503423943841208615348170365516275', 31); + T('1mslct8ed9fnbton', '101475049402356215994266', 33); + T('30616161545253435002', '35655471572473580', 7); + T('6thgnei47c630i44', '163171243313361202379251', 31); + T('a9i5h2mm08ijmhh7i', '63937387916914384871933', 23); + T('35f3oh1m6c', '12299557451412', 25); + T('43906e3351853cb2ad062c9315091712290', '367854393737791193668837913203410675507856', 16); + T('210320', '2360', 4); + T('1f03jb6375155cde2h3cb0a7c2e08516', '37591642929944359779790325970114732866026', 20); + T('1101000011101001000100110101000110011011110000001000010010000011111000010000111011101001000010011111010011111111011111101101101110110110001011010111000000100001001000', '76330741559420840213970134181579220885370404866120', 2); + T('723bbt5iw69j', '681623175196640934', 35); + T('1111020210221212120011001102022021200002101012202000012212121201012121211021212021112002222221101', '9485666611553640815200275025119640319945611036', 3); + T('e9230432g1a379f7', '41610888623244319513', 17); + T('i4d5e3kpdlpfain4qip0', '28521809758740110400245059650', 27); + T('5ep9dndi8d0s08qk5p7recji9', '690128544843296060408933983940765539', 29); + T('bee89262200de8b67aba', '265978570932745965667300', 15); + T('4276ibbd1hf8h', '9131409870722716', 19); + T('85hp63929kfdcbgrbpl6i2c6bf55ni9nnk6', '130996974800003436075520961172392638886635381034470', 28); + T('474', '2476', 24); + T('2631ab3225463601659691', '116022131993562424814989', 12); + T('10525030898513855313', '10525030898513855313', 10); + T('3h7k4mqi6nd5r605gp7qjbik1', '450084426424182428475145576797678729', 29); + T('33fd9j1dlnk497kdn8c0n4bnp5c', '19319964977974884787425260629106620314', 26); + T('1426c7880438b', '30816340281062', 13); + T('64321023153', '1875330978', 7); + T('25', '23', 9); + T('hm351b6lb7je8mlfd5g68off2', '63540723667510583038007846985931627', 25); + T('klk6ek', '108208208', 22); + T('208d919616a4ifc5h4765ebj38ji100778i', '347322272727940675644219270315862525504058978', 20); + T('cpcunfpgqlk473drd1o4so4a76606', '7345383461143882582651212119039482107238312', 31); + T('1pih4ojmpcnu704kojsv72ab6i', '162908784779725387991102787318550729815', 33); + T('360474703465644142142614426374633517336173745433164557017', '1406659725135506145446652465678360390928078042488335', 8); + T('10snsh0giu9p7h69iri88lfng74bb', '7799390119107220662097119983075788706149993', 34); + T('2d4e3gbg41s2pl85qbpadg6', '365226006635397229971610827736500', 29); + T('16ek4lh6ikh6', '761689572308220', 22); + T('8niepouv', '300193473503', 32); + T('101110101011111101011000011101001100011100000100001000110011101011011101110001101110110011010110010111100', '29591313602933764036329127652540', 2); + T('7m7phem4rh16ri', '283899653498709515122', 32); + T('ecd7559017ec', '260409597630444', 16); + T('baccfh26e6', '2299936728858', 18); + T('812659a6b', '6600640018', 13); + T('3eg', '1365', 19); + T('57i652ea9a5ki2929ajdjigjg', '290822038162647483611639195114581', 21); + T('1mm6spj0adu7lutd63hru3578hqs92gnj94s3', '846779105368022234729976221876987821217467278988194056', 31); + T('1077226367', '150809847', 8); + T('363ci0ha5g0b2cafedh474d717', '309571283776743389617828368758327', 19); + T('j3ki90fhj0am3dibmf513fl', '17403192502310050592752764662905', 23); + T('57', '107', 20); + T('103203234141240404420403444124340102400144443233202011123100014', '24657740989792007884797847294801892590440634', 5); + T('2o81l8eh8bnimmbe3kff0snig', '15449657193898916995922777414678363600', 34); + T('132220114253153453325114041000542535224210310041312131', '273473331059592249838738470025686999579223', 6); + T('3311431340103430231230130014102', '3404424300858526016777', 5); + T('4144044111132405001404032300314542302355012031251140414404341351', '45361153961682006879724274980338129551748231408067', 6); + T('jog1df881f7fj1', '203639325446012074046', 29); + T('14lbk76fofm7o02j2g5cn3f91a', '106080117489697708196077914532661910', 25); + T('13bm05fedmkkj3cmih811g', '45512227946855270778013305435', 23); + T('5g8cgdppge8j49f1695ifanl2oh1l', '23420870779452170989646779263011153019603', 26); + T('6rod3d4k0l0mic61n9', '50510545435421981840252334', 29); + T('0', '0', 31); + T('5fq0nnj67eo9f767cih6', '8778527137266071484312465711', 27); + T('3fhn5bl869423a69717c65m1eif50iho9j0bka', '19210103805642147226446252712767630434515948337507385', 25); + T('269216', '637938', 12); + T('5docn114l0a7bk2', '207097343626957148002', 25); + T('didc6c0k28hk1551k9j6j0a547lk6ab', '259424451571890813907422054130537742940815', 22); + T('7663148312338aa823201a0833aa4111a315026533478147a', '737078060626686169073460661351622551458807003364061', 11); + T('f4k60afkkjh3jj8kici99jcf4l', '168030591422000297543312682719724026', 23); + T('1tuk1gnk98sakdrj', '268546796319568703321264', 35); + T('2fe5ec45gff89', '1708242462795110', 17); + T('17khpqq2cba0034d4711c0n0qlk', '21146626764499735093141819532482917428', 27); + T('54g9ge896014bc067c180', '197583741379071034909670273', 19); + T('9bpp49hg05lgjpjfed6', '549106762305328162669533939', 27); + T('ep0i2ceehf0hycozofuprj7c69mw', '15393314250847454087963951962903836882005576', 36); + T('dkeko5igsti69grhta', '308044223476306846565544919', 31); + T('533412700560147364151506123351553042070455067164', '15136684942816823221295501833940390148075124', 8); + T('2dg4d457f', '100451031759', 21); + T('de6ah1j792i6h94801j2i5667d91ch49h7h82aa4', '50429457718111652003697844375837041689243661530621284', 21); + T('1c2l72df1bi98qi371hk208a31qjq', '125466201932627525943031559221363343701027', 29); + T('977gba19e', '1417885313364', 25); + T('140043111034404144201210434', '2693295130467600744', 5); + T('g0a2', '390516', 29); + T('2200230010311333101333233323021231023133021203102', '198922953943240318378080770258', 4); + T('6353066873101558127578076017130160508', '144165800189980848048554063340548054', 9); + T('21242641202566034126363025555154566411334600010060002214520311', '7811306433748906294071935652319422095601397419580172', 7); + T('2jgbbv6et', '7166652508469', 36); + T('gi1cl', '6532196', 25); + T('5mpmf5l3qnn0d', '13529230278332772833', 34); + T('15', '12', 7); + T('4on8fqz2b7qt38fa2kidf3pd49fmawxwl', '296723553761811447810148760526142314377887578064293', 36); + T('2232314414020324203112114402403134412320', '4622837608422402490924529085', 5); + T('6rhkhhq4g0k6221s46riimbki', '1954313924165907007256835789755584518', 30); + T('tis', '28455', 31); + T('843220348618317110', '141498156522774510', 9); + T('4rdmf54o561n', '41317387029108563', 28); + T('1719c2acb576a7ac38b848daa63bb880', '511177631774649682452485037162895944', 14); + T('11', '10', 9); + T('d31tvva6q2', '460761943317314', 32); + T('110011101001000110010011100', '108301468', 2); + T('1372349637259ca9562', '143180187315524159049', 13); + T('659717282256311982263695312406804638295363772323', '659717282256311982263695312406804638295363772323', 10); + T('66255904a3319526575b98abb5639106a66a7', '4619304232886119691354791167430461349471', 12); + T('fa2d', '124053', 20); + T('18au', '37819', 31); + T('1fe9o', '955188', 28); + T('2d719808e11hia0i3', '1748293226855801360363', 20); + T('34b782264683b4c8c03b489972105c', '680443750818396200684733855097238', 13); + T('313513101344552064046222545523160040', '1219516865836938913640561312952', 7); + T('l861', '227613', 22); + T('1011102020222', '618380', 3); + T('37q70clb5agn865ckd1862352', '74237408841777670888732000080865424', 27); + T('381n0od6glk1nkho2', '77371357752513446808102', 25); + T('393b9b61ad34', '62928172723508', 16); + T('96boudmwjku', '33547764777497886', 36); + T('b772g42e1e937i9e9hfeaa8fj6f2a', '119431034908791666035134911878398548328', 21); + T('23340', '6006', 7); + T('26', '34', 14); + T('ia8i4el', '7121667009', 27); + T('2b', '37', 13); + T('10111010011000101111000011000000111000011100011010000010011000011101011011111000001100000001110001', '230735293932368005478672810097', 2); + T('3eulm73dn0dlbv85fq0a1kww9fevjgg', '12403336167562412385040944567150574800575129761', 33); + T('837812', '1342629', 11); + T('234122624231456421160102414510144', '2776670000065408919554607368', 7); + T('1333430001421122252314350034330122331524', '3566212756079222889777237710956', 6); + T('u6g7vu3quql9i75qo8012b10j83uc8x', '633618464174594585664731042520999309975445212513', 35); + T('927s1xbugpdet7cf0ivndfw71d0eh3d0q', '92198010959092081267985643765193993525052372840374', 34); + T('720661003a44b8782a377b7', '22986456123373619033935096', 13); + T('1ch1g38dhb8a9220c2aekc2k6jc4166b33edi', '640864053337562236398014189720034411222966567738', 21); + T('3d5921bbba07fi6fi95778ig43d98f0fdjd', '629408214644536101232564875177207640880125593', 20); + T('3ad4d290b374idhb579052e1eed452c4b40c65ceda', '95656564169281584571909173688226500498143045385593636', 19); + T('799c83346777193da55152bb3a313d158d99845663719', '2068949030146458959617219570382689988916278523145339', 14); + T('1355453240562410203531031534466', '34872452909171789038452198', 7); + T('1201320221113011020033320121013312322003023301320020000213322012000202003022233201', '8941201919917841907198878463588663584033560374241', 4); + T('9438b8aac2c05d97bd296538aba44737780930467d', '911864476827779974279651792691116485290689311431', 14); + T('14557ca16860c7508', '891547425836696533', 13); + T('2d661398', '494661068', 15); + T('64ea975079b06c4e5832714dd20d', '359755626933367859228607184583713', 15); + T('hd7o', '383596', 28); + T('dfneaok4lo7eltlm3keflhmnj5', '114604998140550560800450290968639685275', 30); + T('2quqi6v5ip', '130702437007387', 33); + T('0', '0', 24); + T('40310301140342410444003411000420304041021141232031002220022040432', '2238323181401796966396578744731682312617377617', 5); + T('31b7ebb7e8b136deb2b30b4593ad1a775e7', '270692937955729861614382230692061625415143', 16); + T('7cf6f4d44ihi7i', '625733239311823358', 20); + T('117295c2222276a10451625946c486941c2312b197c874', '150143930723763569187444310649172754803478411214564', 13); + T('1331022023133202030010033121310211001332', '591046930327775686578302', 4); + T('101110001011101011001000111000101100110110001010110111110010110111000101000010110100000010010011101000111001010010011011010', '7673368527850305306860702856736711898', 2); + T('1qzxuq3h8f4p1nox5tv21vi3k51', '50920381745468843583132978679805532194485', 36); + T('a999b7a41393a14a9a5b312', '5972349927337564992006398', 12); + T('31c49f4d6a14d5a60e3be92b6c7d09a28ef733', '1109864730568327689119301182815368410691467059', 16); + T('bkn4e', '6256400', 27); + T('37llr8al5bkq2885eq0qjl98f6aq56', '3042030791816242326398464933034496584602546', 28); + T('0', '0', 5); + T('98684568311394652b149c525bb2b8b7870c', '125020666101961535355843525380489345420216', 14); + T('7jih', '63977', 20); + T('56dd88a', '341387370', 20); + T('n7p5qd', '400694517', 28); + T('5', '5', 7); + T('5kte56h40thm99oi9ei35', '7166982777711639280635189086309', 32); + T('871b919770510408845b20a20', '683441136014615003034368952', 12); + T('47321211337', '5289349855', 8); + T('33', '27', 8); + T('671dg', '536043', 17); + T('1098970497529a1105663963204529a4366270', '367599383800156596794902828804760154380', 11); + T('j1gk', '418340', 28); + T('60163523202015310203260406350643620424355666514246323', '532226906168395704747817553933051591835925873', 7); + T('28340466027959819372283a24801', '397312781649077687305059417953', 11); + T('1016651ababb278b52735114a43067320725b5a4b213', '25670087069424327116744087567400672087130937199', 12); + T('2ob9erjwdlabfl6hp9isx0pwqd', '2162440175968208142159324732902997284341', 36); + T('58lc411umrhir', '6076908444205303387', 32); + T('d0', '468', 36); + T('6438156633447850200458070558', '377549095913992594176286013', 9); + T('45', '101', 24); + T('33de4f8d6baka5f9058ga23ef', '4199395346525371895901328042038303', 24); + T('16408b6a2837647365594951', '10123990278705144980915533', 12); + T('110ca', '1376058', 34); + T('32510310126061345240566235', '4547372983380291419500', 7); + T('165d4ce740e3046bae79a27abb9c2131020e70d73', '157696374111283237707883383886612883626999191783', 15); + T('1e7490li81e785j9becimk2lb0o11o067ce', '532437839280281697432460793212226489874746192189', 25); + T('1ihh485ai', '196017355842', 24); + T('141g04patj89879', '542884791574809430419', 30); + T('n9khp6f3l67iqfq8eaj8m66iirkk', '71244463346160860580002443985000856641849', 29); + T('hirjvxh5jmno7f7ns', '55978446537763950133687022', 34); + T('1044463624121b4', '1322835039891352', 12); + T('lu4j8tgm', '933910735285', 33); + T('9j1g51fh60kj3hk3b74g0ca3c6c8c9f5g2', '425850397149549655524432709384404177906197591', 21); + T('2539b2b5', '151026660', 13); + T('57a82342c455g9a17ga571f484e1b3fca0gbf7b49', '89990290894968066371722348778575965073382603807535', 17); + T('mdpbsafb7csl4gfibc7q3d', '115378571471053973725066202243548', 29); + T('474a338272a1a1a4a1196907567a1668494', '1194906116055811058177751679883239985', 11); + T('18gingmssvt4ul1139dt05', '51363042207429652823989292561413', 32); + T('2ce42c8496', '192806683798', 16); + T('11000010011011000010100001001011111110000001111000101100100011011100000', '1793230956491923932896', 2); + T('4f', '99', 21); + T('9f2ibccj4bh', '162142189763270', 21); + T('1cy0q86r37684a3f0xe9cuq5hoxk', '1424207968256042080686950649776824750523768', 36); + T('12224530341515005031015313254204553135323542204313144542', '8811492262978145988790902373392289264937486', 6); + T('t5wr4x', '1763445345', 36); + T('434c5c2a2679a15a', '218057423288814210', 13); + T('22234314204204424014101430443102442231430233043103244323130322104', '1361476455979988470036534159812062182545557779', 5); + T('808pani', '3860596982', 28); + T('3114060641760665307', '56720562441120455', 8); + T('20052215130115042121', '1233946618855393', 6); + T('18623146542a444', '675413878461414', 11); + T('3j0ei880glmfdb76g1fgch6d6e5m876', '966695542929174813619268439440759006627502', 24); + T('3abd', '15037', 16); + T('321544500711356560655140', '1934109172007933532768', 8); + T('111lwhz2sdptjhv2xz1g5fd', '17827003136890080321517837629398137', 36); + T('l8ne8mcac9878kag0e61ni982nl7m9', '226995884117043510928077829213939988951001', 24); + T('3tii74kkn5pj2iiomo', '254294093773044532571434347', 33); + T('1', '1', 3); + T('10101110101001011001101100000100111110111010000110100110110', '393269849358142774', 2); + T('4bikp5908romjjci53378', '387494241223681393190475393084', 28); + T('a9gn', '162298', 25); + T('31553466646', '3450760614', 8); + T('77992465873916625993036446511778946620300874171', '77992465873916625993036446511778946620300874171', 10); + T('39d1', '17562', 17); + T('25427707303456416047670142267372377104250171470', '938489360691345858919636520999045373686584', 8); + T('233540237076312188', '39655724759031329', 9); + T('1g10070mb0edm15gmk33870b3ga54l2f', '2775772450662354288239662524197284067896579', 23); + T('1ip9pmsrnqt', '961402113030509', 30); + T('33334404014320301030430142', '1118103322902592547', 5); + T('3de5gih8i9f02ff4j2', '48309612020985608921982', 20); + T('a59vtp', '461426503', 34); + T('3207145150222', '912827599922', 9); + T('17587', '17587', 10); + T('1lci48gsc73l8srm7h14', '10614491499072743532053511413', 29); + T('30unig', '158880696', 35); + T('124405625444044364574470555231', '204335816074449425736587929', 8); + T('5el9kb5ma058hilj', '1506277403735522227245', 23); + T('22022111212012012010202100220000012121200101022021202210022201212102001010120200002010201122201022001121120011020', '759167441024557484181567645428524750251602121011253909', 3); + T('56bo22b2rk25gnekrqt2hcbdb6rb8', '1192593196505593827607689568864200483996638', 30); + T('6on6d5k6miquhqpydf7imhli6jvrj', '114889571277404698459666127207755422175313564', 35); + T('1h', '45', 28); + T('4c3d0cm6f', '354629784409', 23); + T('km18d28ka4063o1cbdo33jah6m680nh', '58649899688819306737372660540249084938234311', 26); + T('aa954cd38c39006a0d5d65a0b2', '13514993771256587973240014872754', 16); + T('6f8a84d', '116959309', 16); + T('21540300431025331403002', '305949724456401866', 6); + T('g1h00', '1690956', 18); + T('21d98926569b658f6028hd2fde42bh', '25351569049858465877817627105822773543', 19); + T('28f4ybfi9bm5kiqhfdexzg6dcj4', '65002375284191780502488464831022727755440', 36); + T('64234204142', '1870771814', 7); + T('g6', '406', 25); + T('11100010011101010', '115946', 2); + T('21f7g31kje0i0c11i0eg3c002hie4a1bh79g00i0', '7675939963269437319032080266122665912099477642009377', 21); + T('4e5de4aae42fhagcd77b1819ii2a71f7fhg8fcb0d2', '127596210502348048047227140390153976968822456518898776', 19); + T('eedogk003clc6gei2g', '105223011043453847437536073', 29); + T('1323314231102664064254536346523603525504340', '461558548190589236267853076121213693', 7); + T('11110001000100001110011001100100', '4044416612', 2); + T('7d633972a0473', '451304675159061', 14); + T('6a83831eb7m4', '6145795507071009', 23); + T('341534666615406346022401654625010604323314603', '55153818937912725941205585783698988590', 7); + T('j97i92i9lld11bcrsi5b', '764101907334236165295715535019', 32); + T('1n94df2m58nc2f292egdhj', '190478845693184355163546148587', 24); + T('193a551506a574158808739708a326409a8232a731616', '12264564257932968384919289414304439064543308258', 11); + T('415301137a97274285', '2089766854598334719', 11); + T('4ldl81fik12cm3da7771d3b70bcbb8ja9692e63i', '632495479818532982131362164200507449663312253671354541', 23); + T('1l4v5wq6v49ucf501e1aeagnbetf7s3480', '211857233605896369351266132026791700842067821353880', 33); + T('313b62cj40gi8g2205j203kn279l7e4a85', '10738451034432329068272471398733940161160040261', 24); + T('1012121020021200221210120121200110122122012001211002202010211102021021100111022121200222', '390318533778659728411429509673944759961196', 3); + T('m27mglbi2lk5f5gih4ac0lgb8aicil0', '1571331400777723523482785976497721521964481', 23); + T('5ab9da880303', '99754281796355', 16); + T('6a1216cc363156993c7619b93bd0614a2', '31876928265786310963486391817306746230', 14); + T('19a13581067b', '1352416871615', 12); + T('1324', '994', 9); + T('1i3f4a292364h6g057822', '519041051879430852117563660', 21); + T('f4bh5e04efd4bbeaf9h7a6ee18d0faab73dc', '1312404820878713008763000090033788596202434090', 18); + T('3nn8515hl7af', '31939448982826071', 28); + T('101211121220201212012002012001202201102021200012112', '864510256165221257456579', 3); + T('2knk20f4a89g98inl80hdf26kl2g7', '3938634393856186288183708257843572595407', 25); + T('3j07djc8b21gde84120d', '51743188098385652943158566', 21); + T('11101111111000111000010010011101000110101000100101100010', '67522678144797026', 2); + T('139052073f74b24', '447711998083326148', 18); + T('gfg157ac3dag139de1ff6486f98', '1661627613676505415512176639620939', 17); + T('180', '209', 11); + T('c0', '276', 23); + T('99v31mgs8h9m0mi8ncqw9', '39597598618192553451515827167745', 34); + T('1012202022110211200111', '12688938049', 3); + T('3hpj4m7gl70rg5s986bn7l7dbjtb', '27415197316826959949133005401311879944981', 30); + T('1g4odyx23p8fxodidmc', '9075451789279991776772493457', 35); + T('55329abc2c3fe0m216ai7f', '206170368324589305893946138226', 23); + T('1340009855286682649574456361871475494115109071462971870', '1340009855286682649574456361871475494115109071462971870', 10); + T('11100000110000100010000100100100000010001111011000011001101101101101001000010011101010011110110010101111010000001100000100100100000', '2390040390567048642966647388057001920800', 2); + T('52223564742465635082247585678534782336', '1064509718181642515244340994372031822', 9); + T('712872119b030a5232a76660ba7', '81302736597615293178940708015', 12); + T('ck82eq63q177e9fob2d4am9', '394072217994880709942370882654321', 27); + T('b', '11', 34); + T('4967a6888a214810953573018257373a97081612156a2', '32295474191633069925047732615369002936277376178', 11); + T('818025300991552057072573', '818025300991552057072573', 10); + T('1010000110010110100110111100111101001001101101011001111001110010000110100010000000000101100011101100010011011000000010111111000110000001', '54985654283950555052147243853162465718657', 2); + T('3i3rcfesgl4e1pnpdl36fjst9ribl5pb1h6', '1822841056993585330595743968680994820026920032451064', 31); + T('518835417113272363020373362806722040762766', '6945921601924648113241636640663267958543', 9); + T('51215114114444441323115130', '148715282153752964766', 6); + T('3gi38d7c1r2agrh', '1063253583022369377084', 29); + T('7b3178a9bb793298669', '211348054902766508721', 12); + T('iaej02e3j5f72623372gja8jb446af208ec0182', '509551507301561858265746542302971839802931758720562', 20); + T('131171878520608025130476470220451332844204786553674', '694806882997751424690876571416772531272782056888', 9); + T('kto7o2', '1094994042', 35); + T('6hdcstaqd1tg3f1739a8plpkbbcl4baph', '1219582161259509474473107342419081037076931846767', 30); + T('1dgf7wbm1iri95orsqjb7', '18364036674616095538201293327427', 36); + T('13aog6neo84l11mjjqa2kk28fms9s1599kgg', '1705016958103088803360933755064603355390629893620766', 29); + T('i76', '14314', 28); + T('15c81512ccd18881b020', '8494230105025646245908', 14); + T('gjebn2c57rnik5n29ojr7aqfldfm4h13', '102838449890987454302661340891009306868629443333', 30); + T('783igc1h3b33869a72', '40730864443858836835650', 19); + T('42a5l8c6cn', '22217784905703', 26); + T('342j', '38682', 23); + T('ba7282d384ii6e1ba498', '22842952907395097528788325', 19); + T('3kob9j10mi6m70cggiba8ca9', '545573043076070981074015736460884', 25); + T('abij88h', '1194911977', 22); + T('7417670326016217030', '135666019698548248', 8); + T('63687610', '123331197', 11); + T('201120021011222022012112110220122212022110020012200210200102110222001122222120010121101100000101021212121', '90752154646385975070999099110350327711936017168706', 3); + T('453560155', '27628396', 7); + T('3el292bhjhjeldin8ccj225261i2fd0k7en', '1217610299685725985627264896485512835404180004748', 25); + T('2313311021213111210010233033003000203221233313020223311311103021310113112023102012133223', '68779145291008920229511359415983281509892813113288683', 4); + T('acbj', '184177', 26); + T('p9c0adfhgl7pjkme65pm3c62cffmge6lf', '48235152154085152675537161376096266286876276537', 26); + T('5gi81hd87ohf1goa0ojlc8e829gk7pmmb3', '278990742516194289085133608565402019725737015193', 26); + T('22c61bc7b60a9c8132c791630604c6bac46c6', '28171352787129023473400908616682244220258', 13); + T('13', '37', 34); + T('21e006f1f9cfc', '2427921901128738', 18); + T('103g5hi8fh49', '353276045114673', 21); + T('4e8295q681bl6hanec562697mf63', '5339163936161554860562933482146186694683', 28); + T('3214387157', '3214387157', 10); + T('39ma9', '1544253', 26); + T('3b728922be05708c343de41', '281706306025336513245142711', 15); + T('112gj40idklam575iu', '111850377682228327449684446', 34); + T('520424544225123253212235432303044355140441225100443352241304023533', '2034756118713909937637031846420814255105822777216881', 6); + T('k0iolo48fl4j4lp0s5u', '24781493827610679219607072958', 32); + T('128ggb4dh8cj8fdc566k91cki3', '1267160922429805851247593339094335', 21); + T('1045451206214364325164', '613386390999810957', 7); + T('1107772788549410a4414822299a234856a6016475154906', '9672542336539708087518829624662668197292765768698', 11); + T('11000011100011000100111110110111001010010101000011001010010011101111010011110001101100110110001111011110100110010011', '63458983779334095341636694071699859', 2); + T('41430002221022141424223400340100430110041020444223024014041003410', '2376588431552008570655123555427072543719078605', 5); + T('8273c422025895e75c', '2406418559385510209372', 16); + T('m2h98f7l05ai4289j5k42ink4c2ia8aab', '3246517122524761841891626370023065146892969851', 24); + T('330112202301211213122103100103022210323100110332313310211202202013311030023331222002023', '22580453758464343463710433259085476023887934191476875', 4); + T('2nb194h6ga8qi', '430322682063490731', 27); + T('jpmi4moew0hzbah40iy0rgbgjkvsf7st', '34681988587068576957716048878356716190719421336893', 36); + T('26lv2swvoi3grja39ctlr', '5165229217881148067867135922963', 33); + T('50gf0c8e292h217h6b1g9gc7ffef4b05e0d768e', '2534050190869413489303341066801668313035183620734', 18); + T('75742', '110035', 11); + T('h3c9f2n', '3276752903', 24); + T('ksmurptv0dnfdahfpv5t2ttv3qn', '28444102905166388726141858508924545634135', 32); + T('k4g49523k4gj1ima6dgf4l9j2bhi5egmba1', '1707736842966246461835311670413679917106063130033', 24); + T('14624322306021144203510134', '60398430088699424182364', 8); + T('45h2d09g9jgf8km8m73d2g6i4m149ieb0', '159828027787837356457234355582069560638186013', 23); + T('293e747', '29816392', 15); + T('2p1h8egsiaapppbd2alcp8r', '426308484322430923493844090113709', 29); + T('43433024234131230143201230', '1427229136114037690', 5); + T('289a4633', '98006151', 12); + T('41608955313b1911a62765333599a23676423', '2924108119384944390066125637461201476059', 12); + T('diqn1r7dg7d6qsprogmqe2r6qdgja2ba', '29481647088004232174662553215167090041336899916', 29); + T('oj', '859', 35); + T('2gdf6532dab77840d6a5114a0gg', '293251122577439820618448012407740', 17); + T('18rpho7m8m09qsqb0gljfei8af80j', '296852593993951607772214947149628004912219', 30); + T('24keb7jdl94mfm', '1930409257079544574', 24); + T('1674442410', '250758408', 8); + T('1g7', '568', 17); + T('4', '4', 33); + T('5c59e4222e6bhi0djb7', '3522719264468518688329651', 21); + T('1220560661202652130166402663055101525606330601606006331303252', '675150095126381288896084826641786137855807876233627', 7); + T('8bdd5jmb776gh24h453cm5j7985e7gk5ma5', '169186553911260540940677935317019936465424663620', 23); + T('527635172', '90126970', 8); + T('277ae', '379014', 20); + T('601248508516016121653034235336305447350802022167218600', '2260213996246938282352523423961800103525210629322720', 9); + T('7141002130726144240353615134174321', '4556862540217805685823766591697', 8); + T('20907952950099a0198619690a4', '2472922861761322996286447619', 11); + T('ea36fd1clfjqe5fm1g2s83nf47g47', '1270443528906376270651074312814971947683121', 29); + T('101111100010001011001011101011100010010111010000111100101000010011100010100001001111001100010000111111', '3766029900593721359372665013311', 2); + T('998b3480cc2535104921e', '3205175075301584736233354', 15); + T('a8lcaq8o84hr8k71i2nq', '62871767920054444800492313760', 29); + T('2cng1gia0kq5mujipjbape898vl', '3263921313975839853748035663784831132661', 32); + T('476bd81afce52', '1256456203521618', 16); + T('5d45102dc724852d2db67b51c9b9a77d74dd3', '1084392974332641207686512234196875228047773', 14); + T('4815230672045132', '1010606396855429', 9); + T('1v9kekq', '2124036762', 32); + T('74a', '3181', 21); + T('328a53a1007307b61942065682aa46', '63859486675999658099313593314134', 12); + T('1a2b71b61a194aa8aa308521795481514ab29a339', '27248586215670941038987160555872821966497373', 12); + T('33310200313011302122011', '69579394459269', 4); + T('12202221120012000022122221021211010122121121202100210120122120102', '6610763645257536623940916016153', 3); + T('231ogcf3kkg4pig5m1haa9nr1k54a7sqq', '131862409594175767861875835443409445020844276370', 29); + T('d6qe4em8u38u', '926445109477491562', 34); + T('3eh2c5b9cnkai44ii8e0feb3jb0h0cf5k', '530433754311027126180546490781321137757629004', 24); + T('315ag8333b315a8458c2e27', '3615724227326593741564426512', 17); + T('34158', '49431', 11); + T('3ils27oe28e7', '91557914807141968', 31); + T('edn2gblf7n0banus753dpjdoe6h504l6a', '7642629969726378331747823898058942648773832841239', 31); + T('708a23436b28a0331221a80a1cc36', '109326184942549365525657861606388', 13); + T('2hk9kj1c8e569dj936kb4', '794579205969206004082283587', 21); + T('122505415330540034050461630624613221516550102513164104620053', '97354517682441334188608404808066903954920393510893', 7); + T('2278502839268387241756', '2278502839268387241756', 10); + T('55t56st8qhj3c46de0e1cocd0o', '99849784143466753187227752067831344089', 31); + T('1293', '1293', 10); + T('8163a159h14c271id682j0419412h28j5gd', '1385631680048601439082465294762283037255834333', 20); + T('33103002234130422102321400', '1086244791478948350', 5); + T('o7c7dlja7qnllqglace1kl5jji', '14766346445976221588816768352790750827', 27); + T('50581gee4ef2g5g9c5b', '522201912074626183642486', 19); + T('132232201331030203102313022030032032030013022021203311111313320331032001132112031132231322', '735766436167284912814914395757285842906978477229337466', 4); + T('a', '10', 23); + T('623150750562117510607143030162837240736', '11425818336940049045139902134722023322', 9); + T('1n9353d6cb5k404', '122447087321171523044', 26); + T('28ldf2lb7d7cc25a33bfl4', '94283647489871424522663101176', 23); + T('339b79a42943835492239b54023b886b38b99', '2352685629298138350299211793902313821093', 12); + T('7703554633327072657443651371706621271374', '1309663585734465506833205292089832188', 8); + T('nbagqkohqn57pj7r8i4i', '506352586652779671862372959634', 31); + T('1f1c9hie6h6', '10999559699306', 19); + T('84c5f2554693b9f5500f5bb85b158fde13e1f', '185058871763639409971122557584749513555394079', 16); + T('21210021110102020012010220021101002010100212022120120220102111211', '8913855519363454596688827191062', 3); + T('1k4g82kbq0i3a', '599743970399950235', 29); + T('232221321002323112330020033132222223231021231332112', '3696354442389518199954992455574', 4); + T('31', '13', 4); + T('2fl289c9g37788lk851g21', '42297178746901523108180433621', 22); + T('gm06jwlv6dqleu1dip653ubs', '10360002803920470539953905454083262792', 36); + T('5975200c0c58b4a4209dc3bd9bd65351c4a686953', '39765261669001283521985826220442639112464102333', 14); + T('1b7eaehgc6na27qdj', '1633286773621121735715251', 32); + T('19c71489d18e3a0980e42cc36293cacbe3', '1071329852165428379062747217653305005688', 15); + T('a66j4br3o', '5109925159442', 29); + T('236k3i37fdkaca9ggce9488a', '16154458171800913743319566344714', 22); + T('547c3cc0b090c099585c166c56caa7b0c', '2370956445374590211607145293779895329', 13); + T('31c6l2fimcm94ehd3mfe3jmf289iamk83m54cd94', '392700371206866291770648353879270744554067295237496903', 23); + T('49a83c6874d02a9b9b81b4', '5501733310687036523031026', 14); + T('1i6aptg1v97t1269a9nfx6', '222397813672483505273091300846188', 34); + T('6430553763248061224028267601063731268', '146036643954511589188331459488427555', 9); + T('22777415000440655526', '342256872923028310', 8); + T('3077216', '818830', 8); + T('g0869g953a5a0689482id9ic', '4131232785565176280208325038394', 19); + T('377805kgi96dgc9mb32fm406m0f6f39c7i2hg', '34922854162614667688896860620347909170055951885512', 23); + T('34', '55', 17); + T('9mo72jfoon', '53654687111919', 26); + T('17em8okm0dmnf', '123219026310591941', 26); + T('ojfgmec3bh5hn8e', '923316247884933873964', 25); + T('300449c1c3e6cg7', '1124713376756150983', 18); + T('148468717751060247811551716501887635', '3879291235122751908691549806834740', 9); + T('2111111022002222200220201001211120011211020211120001122121112210', '2861089797219981690788113774269', 3); + T('ba86k1hjmgc2ka1b188c3ocg8mg7', '633561834955856968092087110467408732907', 25); + T('7', '7', 36); + T('101111011000101011011011001000010010011111001001111010000111011111010010010100111011110010011100010011000111110011110110001010101100010110010110001111011100', '67630990462245519904689419770374213484683027420', 2); + T('lmnopcc579rq1d1kecrck', '1913989049548883118555149674260', 28); + T('101', '26', 5); + T('34243442230362323775450370', '133734900702608268611832', 8); + T('7705c09763f0c8', '33501846960337096', 16); + T('16b68084359212420b42a0b466', '1507498439245168038118909134', 12); + T('3422230204423244344144431342004202323331033340410420130', '216503932187688762113715510289005560665', 5); + T('bxg1asoyef', '1211512806561831', 36); + T('100qrn', '17231531', 28); + T('14376376532381875', '2764823838681551', 9); + T('341b85880261127b4a4501bb59989072003', '16474978878686249530126059882195408003', 12); + T('34m9643moi5645kloff0lc2k8', '11353733191493162765109958504486133', 25); + T('1gjmm4me082gf7bedmn6944a48d6c3abig', '22657993401538002512673217109094636311397819841', 25); + T('1dbfd0l6', '4028639324', 22); + T('443147117026070130387352', '39737724767758401461831', 9); + T('770344133547754604246147776', '2382177288166020121939966', 8); + T('34806170568316', '34806170568316', 10); + T('2000220010020110122110001022122021021002202002101100222000110111011121220211211210122011102220220112121', '9430263244564363699327129166426166870352926916807', 3); + T('0', '0', 34); + T('1408054854833732408165393468129134240219856072', '1408054854833732408165393468129134240219856072', 10); + T('5cb3132a8b90c8cc5c8d10243b', '266140453841238714299979326165', 14); + T('152270', '1847985', 17); + T('14111026000144152', '53012937079839', 7); + T('514fb06b03ae4e191f9375228e62', '1649188801468585902988396540890722', 16); + T('gica0712b8g45ji39dieeihj38b3c9ahdh412e', '23270135840441636506607963274541746417908332352454', 20); + T('1fc020c94aec1d384d6939fc0b55b6275a201238e6', '46403408144166737594428754848567058468276133837030', 16); + T('23340350340466132353555624150', '1150738817150733757069179', 7); + T('10253000316', '298475673', 7); + T('3el911b9jkj3eja4cd', '243839699882594291978053', 22); + T('2l8275h1ile71nccmm511b2bdko2', '1236657450961741770578027094047122672829', 27); + T('1j48ldn30atne4g9pm319ajs5pt', '416383185377779055815558205572990151279', 30); + T('ef3608f1c4e83', '4208245717356163', 16); + T('10ioej21', '6288902551', 25); + T('120111120110220122002210020', '4378424224299', 3); + T('97h2dfg886g4gi6b58fhfh911', '46126311918607212312965582703752', 19); + T('d8gi6', '4433334', 24); + T('dacb2da4o9f7k2n', '1464835209320250160295', 27); + T('1oamd0eekoi64ehfabi4n7m2hfj5n7', '68606278289505370536462171548139088191207', 25); + T('263595cg8acc', '81034230587588', 17); + T('ellacdbn920kpgec5ei217h', '199907295253233852870341333748187', 26); + T('203301330211342344224021133433344413034221', '97522914206952615171825908686', 5); + T('26f92kg780dme5mo5g8b1pa8mlb4i5', '243826089597210290299504496901549601839025', 26); + T('1l4k6gf03', '150535071740', 23); + T('1fc9v2l3l3u161ewt0asv7ptco733c6f', '173787731730491489596204621593808047374649391899', 33); + T('3d', '97', 28); + T('10187086a12014347597a7', '7509462547837819682131', 11); + T('142314040103301030333323', '22732398342042963', 5); + T('51j5e99d3j48ei33dklc148ddm38hj31l7gjenb', '142386292443578000840331039336729798455275663535088563', 24); + T('14e10g9aafbd5aeac1f8784h558ad6d4b636e14', '634827726136703092193623226005666297523516017966', 18); + T('12laj1a9j89aed9k37b8cfh', '1023636874052341758796882576386', 23); + T('5016208620292365704037092632106487328146733', '5016208620292365704037092632106487328146733', 10); + T('56in43q1ql8085cdn7vopa7t3ngoed', '566008935658169643200168161957539183036996844', 33); + T('22s35pn5i1', '96833203005232', 33); + T('21g58a423675gb1gd43hb6ahdb5cechf4', '31056550222828623762491892131048679702550', 18); + T('m2m7o1mk5n5iem1nhg1m60t99k', '187177916478689826036137763116654591390', 30); + T('224bq', '1467049', 29); + T('2i26b4g863ja2f17a857', '37922279694690532644554800', 21); + T('r762346o82jt96r1sphc5jabqgqeajk', '5608490487827560829488032592521356647934247590', 30); + T('ect4olb', '31249474175', 36); + T('1020002020', '24117', 3); + T('1dk9619', '1278426989', 31); + T('1000101000001110001001001111100000001100000100', '37948338602756', 2); + T('daca1a0aab47147cb69b3c70407', '8680663224967641711152705530951', 14); + T('1303113130113203223212212221102033230300310201103302321232332332231220110012132010012302', '43163657603938060665271546922523188912463705523372466', 4); + T('sfrieq23hnbt055don', '368445731443436833015197443', 30); + T('i7c03j43e885j77ce94jdjahc', '308365645364868380135794239036352', 20); + T('6nhf47ej3f2e7m808h', '4044367825426498856375217', 25); + T('27147380099557912676606433547302', '27147380099557912676606433547302', 10); + T('csufgg1smqp3il1ri5pcgugua0fr9kfs1', '18860343033998469134466167856463713999512137252737', 32); + T('5gbg6d513f1cfbfb8f23e26', '7026912409111194787384092222', 17); + T('67beb095466748i6g6f1c16e1e1c0e', '77643205100110837901641527913924838755', 19); + T('dafoc28d4ihd844oj09', '195367712290739827433590009', 25); + T('2kd99n7e3f7hmadjg972ie3', '6614458529250547048035239167443', 24); + T('1110100101100011001000000000001010011000110001010101101010010', '2102165078632082258', 2); + T('50313234404041444204313100205345520142025331140404044', '148127386264832747696142468115120225091068', 6); + T('4frs', '122338', 30); + T('2', '2', 5); + T('2c7fh', '2211743', 31); + T('521627769aa9903ca2777282a9704', '80035204419629686507847889516653', 13); + T('1acb8e8c35bb51f0a97f', '126536489245502589675903', 16); + T('fhgj743d66d2afb82fe3097ech3k02de59c', '69380446582614420752469037047577265610011498022', 22); + T('13ljdao15c9kqq80lrprhomnp8h', '285719325945344921748137856736984663757', 30); + T('aa694h8gdfc5egi29ei9d76d60bcedg95f91ci', '2172203053088265616832262859897091710533691361277', 19); + T('117eacbdcefdf0a6a17f2fff826d4a3757e9a72', '6242361556294202529040777632205572383849749106', 16); + T('nbron6', '784196326', 32); + T('l61ce8p6n9mbm4eh13p2f83p4d', '5027409891709818675841213415466148689', 26); + T('133571757441551116445813870017686612348244840615', '974429239787874369080373672137480024198248529', 9); + T('2de56487c7306e350a2804a1c7a26a750', '126433237955384861849183674345949279775', 15); + T('1t0eskw02w9j0787kjvhllsk0uorv3rp', '554365961922175577358851876276185152369421121763', 34); + T('19a90b5297g', '3156751459983', 17); + T('94af3ka81ai04agjdd1jf9eh02kcb05eh4c19j', '77019278316732820000275934466986562978818961285944', 21); + T('2arg5f1tbbo', '1395878631103254', 30); + T('hfol59rdpaif61d0ffs4ll5l5n', '63700684237192600496984163750362294029', 29); + T('523215407441303043220321763763461205763333647', '28862443771771851434414707295001265420199', 8); + T('1172558', '638333', 9); + T('24547788612b797cca89561c91685305c', '1035822093635901600043042970084595452', 13); + T('297357a6913a0506230864ba0a40806999b5', '165423726645441709448459506175417770841', 12); + T('3nv1t16', '4811349054', 33); + T('11', '3', 2); + T('dcu7kkv', '14393004703', 32); + T('74jd2k05b41hi19cqb0b56c4ogldk61mbnec', '898558171987652192588434184021750232818244947634099', 27); + T('87017232bb16a097aa683d76a', '27322467806827082697027163842', 14); + T('33315524233101', '46920839581', 6); + T('428613775532906a631a669a07b607262', '1861425910744005080289960554061159938', 13); + T('2032312224134213012123140122124', '1994223287446852270289', 5); + T('d9g3jika93bf6687e', '82311084389009274810693', 23); + T('4g3mek2', '696240109', 23); + T('2al', '1993', 29); + T('2790a6bb3ac09c4132a22704d2d547', '1177464169231489879646847630186327109', 17); + T('ac85h2b60g1f1bb9443b2f6140gf3d23531c2', '16553297321499287941274783612999953493375468582', 18); + T('84cbbe378gi408a2g24c7cc701', '767458631826801795787229605068011', 19); + T('1', '1', 24); + T('2545050224042355443043313126144254255442454', '876893815708574640678938176379453669', 7); + T('96mg2bto', '253583237819', 31); + T('103257515380518060751732276470265252833018424', '1009215289986412660969292628675150865766422', 9); + T('9bb', '1675', 13); + T('213061078bbaaa19a59273794a46402467905220517', '4454029219153574030222038736662990993813474531', 12); + T('1404', '1404', 10); + T('4hrlw7ejvwsf5ks8fw1kakn', '11598871980554104486046361604542989', 33); + T('hwohlkmmd0wcxl496krx4kuvu', '204793993426728369555445184850179150990', 35); + T('hxokubeca', '40450292757955', 35); + T('3gp2122gp51e1jmnlmc6jfe69', '81710274994239238611207516341652249', 27); + T('1742', '7006', 17); + T('1222212003002000102423324020100242030', '21822773039447439961337140', 5); + T('542400122414150021231341152142123', '45688850379684810973948803', 6); + T('113142622818152826', '19181680787913279', 9); + T('1725ab', '1516971', 16); + T('cd590583dd0fb4d2bccab06f852', '5523664634945639953514439685775444', 18); + T('fcqdhgpjd', '10123224125083', 30); + T('11000000101111101111010110110101001110011010001011001011', '54253158045164235', 2); + T('5b52e5ka259kcmfeg9bam8m', '4982195858013579020225977318933', 23); + T('37102705430230406225007132550325075', '19731384956592254443851247364669', 8); + T('62187847341581405083883177441', '3269223553709039612339577952', 9); + T('1', '1', 7); + T('34acbca', '16279598', 13); + T('7b1dscibt14j', '186913558166857804', 31); + T('3813872748312506470161272871424048420854', '64160413369317212332708670220456731959', 9); + T('1b509bg3', '2000076723', 20); + T('19', '28', 19); + T('1e49lnh', '382576217', 25); + T('1011101000010110000100000100111001010100101101011011101001001011001111001100101110010100100011101011', '921454163161847327849553938667', 2); + T('26654765110654444621720', '210641979748604126160', 8); + T('4', '4', 20); + T('233j35tjr8i', '1242415162527558', 30); + T('2ihc6g5', '188418725', 20); + T('14514222035543505233324403513154511132', '112236158532531500922346262912', 6); + T('11780822188440823003268608463462043302170765', '130234632675642352830843282842679037904699', 9); + T('ca6g776665362g312a759d0hc289ah', '31803568025214749779356446816303550281', 18); + T('3c2143412ahgl7gkd7dj56g4aa032edl5ab', '15579825921597836295227254929575079744069515235', 22); + T('b688cabb4a880463a00', '1294695345930300972346', 13); + T('7gb84b2e8ai22aeja43fhj', '16417614158933628179168670359', 20); + T('2b29fii0ffb453799099', '5116039768857765569837805', 19); + T('4j0fl44j0jifd0db5m1jk27lmb2j7g0', '1221597028986776804949762637681448487662400', 24); + T('1102200110020020010111210002120102000110001011102010110012', '2249432091384144139655815631', 3); + T('575257272', '99966650', 8); + T('21412332322000110322224410114133331204441322340320331022', '658469531400806135753913612265079464512', 5); + T('lbeexon7mjw0a', '72065470380896239460', 35); + T('11002222122101102201200001002221120110010', '16658525175081901887', 3); + T('2cbm6ghalhaf0jecd510eh8', '14205312878701722696609668368558', 25); + T('i5f89347h0j3gi8h4677fi5a04', '583695524553451988357837938643879044', 24); + T('2jjl4mk2ba6ab4f', '104001036849709538240', 25); + T('11011110010110101000111111000110101111000110111001001011111', '500696147126612575', 2); + T('11201020021211102010000011211021101021120202020210002011110222101120021', '3931899899409076416396361943543530', 3); + T('132', '30', 4); + T('1ah3g6f9d9df1g3ided508ia48448d6hhgbgea38a', '16965212814601045549441068611275594500781000437521370', 20); + T('6237a6ab64112b2494bb05a722886a55a2540', '4388944420159332022712765742793042396800', 12); + T('q72a', '859210', 32); + T('120412252325053420430240504004014444424440120055', '5062770525903140764486411269774590627', 6); + T('295d4bnfaqdpoc1b20aqjr1cnbdbkpe2g', '47436826040024452612254699971551679789734617832', 28); + T('67716235176889702569725884201488570294266282909281', '67716235176889702569725884201488570294266282909281', 10); + T('2053235221113252151103025044', '2205439986612091266100', 6); + T('331', '127', 6); + T('135411345210555202432511042142510325514134213144343430525350045345', '630257158895680511354194148657769220873851791365505', 6); + T('ncgw536u3', '52596306137028', 35); + T('1br4', '37714', 30); + T('ar5cg3h5rj8jpdoe3q4cq3enr9', '16565568581597008816111159366077297901', 28); + T('dgmjoauv', '464615386079', 32); + T('4411066504304310664', '7482831387322120', 7); + T('2ie17917j22aog9aaekd76', '3074217943693005788722019767635', 27); + T('7jhwhw5hwfw6t8u79', '24155077979418001247241407', 34); + T('2b8b00d67a9af7f532ff749683bb', '4464429849532419014043873313196703', 17); + T('333201021222132001303333132200222320010300', '19197132799297047545741616', 4); + T('1o2rba1ab625lqg2ap4tjf6db5chq', '5706946668967398466318375257987680829296303', 33); + T('3ba90478b168103a7864b1c6b0b62960bc316', '49439560619910889109663125468488809074137', 13); + T('uh39vdq366v29506mq74', '1209595543050368363395591923940', 32); + T('17a5881b485a3a3729b621ed24851346eb44e526936', '37635985091401630307879776080822155210816748779826', 15); + T('3', '3', 20); + T('1010101001110010100011100110011111001011001010011010000110001101', '12282035710234042765', 2); + T('3p7o5m2pspogfa4rln8kaa', '19871208148630067099353934028190', 29); + T('444hc35i9e91', '492075654378634', 19); + T('dee149', '14606665', 16); + T('8d6lcpobjgcx8r79vwo91', '35747137599516159959965340852451', 34); + T('1313a30663415072a5378a573a5004618', '2710898421116005898719133773622357', 11); + T('1a2ufr79n7jkg', '2177788338840118042', 33); + T('11123413012404012202014420304221', '5877498546826679463061', 5); + T('321413111412432', '21207529117', 5); + T('d04552edgg3j5i30d1aebcg35319h5ce', '279401733817838264163142101327955396778254', 20); + T('65230302412105526230540564112431212010546410325343324336355', '70128063903609250369648995014131506639349252995600', 7); + T('122135222500433255020341512552123313545535005021145045415', '52664708035958260940426227456273342924406099', 6); + T('2405352063454611542614252613643', '58322141881707592214580663', 7); + T('331', '469', 12); + T('15', '19', 14); + T('4og0nttk27itgb3kqcm6if', '50395967140764173858035932119955', 30); + T('b163a1d14c43827424b12db', '182084380520360792772703409', 14); + T('0', '0', 24); + T('0', '0', 29); + T('10bqg3q7ide7p123982defon7gd6gn4', '8871455511993695280948914558473713435679678', 27); + T('8b5i53jdflg33amn975o4em75rl', '355133268860557842919835043492122626201', 28); + T('iif46p31b95vumvcu7t4', '2324168331442784232456379135370', 34); + T('2bu5a91hcjjf5bvs4llmt3mlv', '3154536200599521483056493747395222207', 32); + T('101776827305203208883833456438314282601147', '1361051538453470393031244031499904314100', 9); + T('a7q6ce8no836pi1dpb1h855ifag0e', '123260072425789697349589714923797010531053', 27); + T('6an46', '4507041', 29); + T('c85100972abcd17099d6436265a7d00037d15669c2a855', '47428482751140063971988445268995152371199255649614715', 14); + T('1001101010011101000101110010011010001010101111001000000101010010100001100000110010100001000001111011011110001100110111101011111011000011001011000100000000011110001011111011', '3615489279593509708772217418002107077942788107657979', 2); + T('472ac263a709338a322', '512265232277236694323', 13); + T('3bwf', '143235', 35); + T('lakj6bpeg7qk1jhp82j5718p7dm00', '708768256027400694345310993664646688588064', 28); + T('3', '3', 31); + T('3l5g1noh9km1e4lnlcmi7hk24lkfn584', '83462512429809308449012708265095091998409579', 25); + T('1602o', '1102353', 31); + T('bba2100668676a123b8969745542cba', '31194377870767966662985925118106525', 13); + T('31536413040', '919850568', 7); + T('200110021212121222001222201201221002001212122212121112101', '1073167764274370737333513450', 3); + T('8d5kj4ppha6o5yywbpaork4lfwln3', '143529562916204167813572705035194801747117283', 35); + T('115200231503212201324113232151432415611206413', '19119837827416003266077275103148717672', 7); + T('h76b5b9dhebcf9bd639fe3342845c', '11099864955326032429942032083370594653', 19); + T('278cbbef4c3b7a5cd3ae71e1', '12240052494575754714578579937', 16); + T('200020121120002102200121210010001112121200112101112222120021001012211022021020201200122220122201211012022112', '2284936355530730650861310432484515232422851367913401', 3); + T('730d9080c5076bbe550c4d', '35932875541587203941802773', 15); + T('7207565613527210030', '130876365269176344', 8); + T('55a3d', '207815', 14); + T('3g0s38r3bt087aqrmi1tn79ia85gmeh', '1936565240398482832728717768927271259807794475', 31); + T('1i28p44i9akoo65c8oo9f3105g8kg30gh5jg', '56680776457726013494388507242577969396880764644890', 26); + T('40hli90fef115b2gbd', '568985677342288643620301', 23); + T('5921161174358003708931086151189129598336753', '5921161174358003708931086151189129598336753', 10); + T('7b9ie9g63131ge5961ckc9eigg2dij6d7jbi', '143022933563074189781666359143199930960782247692', 21); + T('1fjnlg601b60e', '362500102776455854', 28); + T('2570b2cd172507d801138abed2', '2966320491435734983427362569938', 16); + T('16d7r26k9f', '13024515303115', 28); + T('11110012020002022', '63875771', 3); + T('44uu1', '6945049', 36); + T('5roia7h50d72egib8dc0kbgibgc3181l', '4362559620688171285632591021024625499868373361', 28); + T('7a61cd850ab00f4e75b8fdd', '2367212971376424991309139933', 16); + T('2ggm3d7dbdijij6hj8dh0fk1bki55l11de80k8je', '349289245969708219829891150618982716299609391061246124', 23); + T('6f7bissn1u9k2a2nds0jcyqf', '2099343598521464701612621568865662700', 35); + T('1j50dok9ppnfnb712ai17q3aeogebg', '1563779391961982516054733166515013611227172', 28); + T('100', '121', 11); + T('152003747a37c191079b493a', '58307629840901487900667265', 13); + T('12a550842495600aa183242674b9354cc40615469b78', '964513977187218862668336384529626864441099542359', 13); + T('1', '1', 7); + T('1010010111011001111100100000011001101110111101110011101010110000011011001110010010111000000110101001101000001110', '3363864999018073552305148875414030', 2); + T('2a388957a5626004a648219068853a80843148917a', '14639334203511394499271219968495476019919238', 11); + T('178qmhlmomjgu6n907urpggfgm22bad8t0v', '1836865714504113766258732956737909765209405609243679', 32); + T('39qp1ndaj7i2kcors0a2q9g0c3tgco', '22852659824082944134646404893585993114827784', 30); + T('1220243421341234055245501432452205215131515413023', '31231684169839893198944772635028600039', 6); + T('1003331113233012121222210121312333011', '5014483212176774885317', 4); + T('1460300646123356400652060261434153321405542062433', '62217170078805469818735068808101425405148', 7); + T('618c3a055efhb78dfa09e5e064', '146515377058619956051290383262640', 18); + T('3243111303430002444312342434243011132433431232433320413034233', '3110380362244237009969587203947233566143068', 5); + T('34ckfdrm4akdmpf0nmk3g9r97m6635f', '234784623328429291304866563544367892203497462', 29); + T('2fh2b', '446851', 20); + T('2133221031301122232332213', '702121681547175', 4); + T('4dj5f7a9kmdkd6ib7h9h16jl75lgdg1', '39344152861693838773867535837606678058786331', 27); + T('386bicebii369h1kc4k00e7h6j4c85ibe8e68i2', '596047102194584014318473702865419545819037150251222', 21); + T('252c', '34437', 25); + T('1c46b1c9ef8122e5c0809', '2136485514231402911762441', 16); + T('565273142344', '179884362478', 9); + T('fg8ckmivf483', '558741734364254467', 32); + T('3ff3kcevj5hawuhshs34x3oi3vx', '22740752524651070386437452324283746717307', 34); + T('10110111000011100000100001000111101011000010011100010111111001001110011000000111100110101111111111111011110110111010111011010000101010100111011000100110010111001', '2090116485561415533220743961894899901833660878009', 2); + T('agc17', '5638120', 27); + T('eglk3j68dgack4', '12888395715127982308', 24); + T('28gil143c52a', '5595221231831310', 25); + T('66c152b47c14a05b3610620', '20983529061179635723774027', 13); + T('15dokhdbb5', '70366773099039', 34); + T('1a9501016a5512889b2993544451938993b91652b234', '48223308327186227572954772551054429866630121864', 12); + T('159a345bdf44d369a', '24905827046438811290', 16); + T('1461e', '65504', 15); + T('32d7b08f520g228ece8bff5', '3716536139742781837934428348', 17); + T('101001101001001011010001100010111111010000001111110100110010110011101000000011010111111110011100001011100011111101100100010110000001100111000010001111110', '7429426803493479456828449389493437652073153662', 2); + T('6kc6bk6g03', '131487097676403', 30); + T('34hvgrjns4o7', '411305032746097063', 36); + T('45heh87j', '25806520819', 25); + T('2b3foie8kki6eg7kg8e1j2jb83ka43', '2224972752466567394372343513970647975249171', 28); + T('1b51n4bcb5573mk', '53946798171681752445', 25); + T('1neq6n', '31675359', 28); + T('1606', '643', 7); + T('i21d7ef5b658jja4f4ch63a6i7jflah1', '29580131903402267811587112773000293466018906', 23); + T('1crq7057b3lo5bfd1p0bmrf6i5mk0bn6bpme', '2209991301392227713894588972684184312154769557819480', 29); + T('1tk4sj7hb1btm', '2220446801040814006', 32); + T('2582642852065202685367571622548333884509', '2582642852065202685367571622548333884509', 10); + T('ddeh10je03104h2gj9d297e005e25bf702', '117571564833759622294922629069619346065882802', 20); + T('7dd0aa8c145447eb92707ad1d07', '159489590003544512404938984070407', 16); + T('6pdn173bn9eqs25mnf7go8g6p55ii', '609026075406678657195419482812059187779088', 29); + T('c9h8075jkbgce2bhje7ih029', '32124773769478466147508433993026', 21); + T('5e47t7mbkd4cmfkbka1e7', '23078675295563054872571444265175', 34); + T('1102212000221210121011', '15052511263', 3); + T('kqnpjm9mkj41j5gq92a6en1e3p53a', '251372779390673891723478386066935182969151', 27); + T('130c449gf', '19695443734', 19); + T('60127615404142232301236257126373142705430101557417025270', '281610543490460264519467262765660796455848821664440', 8); + T('d5ao0joon475j', '787826660155535769', 25); + T('85099cba', '526401184', 13); + T('orjl0mf2l64mih7famg', '5251853940693847762549796320', 29); + T('24b44822469ba933aa9cc564a0b792345', '780612549310309792407655025164475245381', 16); + T('1', '1', 12); + T('308b94918920047775b056707915397', '726935161157046423838017053561059', 12); + T('10101101101111010111001110101001101001100', '1492415632204', 2); + T('1af515d2006312ae69biha', '1120313283402535131518464857', 19); + T('13', '12', 9); + T('4244', '1502', 7); + T('4724f245n6f154h089', '1249114287744755126982345', 24); + T('13243040401001003123201', '4093805177786051', 5); + T('11020002112000000121010022202010112100222210221102110011021', '6634494201815577732081058297', 3); + T('5b4dgd', '28394225', 22); + T('6272ha', '15166304', 19); + T('100011011100100000101110001000011111111010011010011001101001010010000011110000111011010001101011000010010000110110001', '92021749248802288107686447118623153', 2); + T('2i40qec7pqjm10', '26939109963617553388', 29); + T('402104a166592b6016aab40a2734702872958605', '4916982450386947278439429436768334682151525', 12); + T('77c3922084b82910c3086a43cb03a4', '1533937693030670114672009321321763', 13); + T('37f3ddigh3fa1e31g2j45d62aeg4gcdh56gg9', '232818880109822059294086716237622233513847254729', 20); + T('151a97027746544a0007496525666a962a', '34163769708560970311913160174313395', 11); + T('24n9g1bf55depf641q81qfgj2q3efd', '704762263092344530284533783215679804998393', 27); + T('323079876474415845475805249641768917', '323079876474415845475805249641768917', 10); + T('k9ghe4a66r5kt8euaf4l', '804063141258299683011907894421', 32); + T('1ljejem5hm57gjjpflpe6kml801', '11306564293793981256004374145021939273', 26); + T('2a0a2b05a7', '14649964111', 12); + T('7tr60m', '412336247', 35); + T('11777165574076763721455', '92219848663426376493', 8); + T('4llmg19ke36037l9n', '211068244533390000747325', 26); + T('1k9b669', '218681021', 22); + T('a5c3b8d2b440bc7c99d', '15352022411228212540798', 15); + T('145124424214052201111155025520222', '14423786224168117069403798', 6); + T('78a3h7p', '11190615491', 34); + T('110202011101011000110020211200220101100002000222001122020020221010002001210221112100221211000222100220110211220002', '1163746839236428869432018441230348532163437184859997503', 3); + T('104502', '18426', 7); + T('2ccl1dcoa9ke9n4acjoii97cio4g7hpn', '181430764600829521764547344057062011723425949', 26); + T('1g999gge8f', '234124479585', 17); + T('2102122000222201112100112012201202002102100', '265973195855731931784', 3); + T('17pm3mbe4', '484680719548', 28); + T('3ffd9eb2i9bjbd3kffdhi6', '145319854130204054939620248184', 23); + T('7c6bgjabk7b77cb02365356g71462lf', '141625763379595196233525648980420679263893', 22); + T('7hjd27j7mi072ll5dj6166b0701ffl', '24036455572105994456221585880207038384542', 23); + T('1drm5e6qurifp4c', '2578009544187725538837', 33); + T('hhg1ca1h1e44dehd3cbjd7', '37518475324760931197003615867', 20); + T('1lj47hb7l5mcmbf1cd42h1hh36cjiak0hbkj', '891983220438694620232014357960845056377943934222', 23); + T('1uhkcq0knndgar709ggbgktfq2skchn81s', '32579224663928263100000786859064490006605648315352', 31); + T('1cacd0gjbiqo9gembo48ojrkt', '398669520541557676768031831110377929', 30); + T('1014035244555111523450130114241515', '49986724694411884036240919', 6); + T('k4jn6e9d6glnigblcgf0b', '183644159120719141946254946886', 25); + T('10102311003323010321021122122111321132123020213312213323123211221121001231222322031', '25103947154379810646139325622747166556671557676685', 4); + T('50ahfeachacka3', '776160684509952255', 21); + T('5gf39cg6a6d30f70cdh77', '75670880512894340281508401', 18); + T('3i', '99', 27); + T('5799c79ib6a7119bbbf1362e2f07a3a75', '448835587235333894824032459146597136265394', 19); + T('20199362559584384642', '123276124968958033085', 11); + T('14f6dj7bij792d6273cija5g5j0cb9hi1ggc', '4254894585269962546595403514332354881913294732', 20); + T('9982bc1097968c8c3b610c47a14b74b861406486124', '594597577726034824881214857458527499759845362913', 13); + T('2542204051144325114301201212455', '653347659057319259531891', 6); + T('8bc1fs0q6', '7136460415847', 31); + T('12245232344501421', '3982268425045', 6); + T('435708bc337', '587768670171', 13); + T('9gqc89j93bfm4', '2230491747853233820', 28); + T('a15903691c9001b323a09395906', '927480369551047749189616833196', 13); + T('3g2uaml4gj9rdi0owqv5e3fi', '581742884070494714992134070640198076', 34); + T('179ehi909125bc0b3i9e4a91f522dc2gfi', '2206014001526987616423852615240896648228754', 19); + T('12010211100221020022211100000120201000000120021010221201101101212121210', '4290236792225220853841200359967002', 3); + T('7k', '174', 22); + T('1071610', '578592', 9); + T('22000000001210211002100001211120100222010001111001200111000021111112122102210222212022221020110002120211', '37107607574596122561009019100775525141832001665669', 3); + T('1nkqomm3qifm695cfra0hicrl9k6o1i2ioj', '29519803751298537211113975613679446742819642561363', 28); + T('1158d8cc', '115976908', 14); + T('4836398098bdb7c6cb93bd3ca2bc048a69c614c84', '32124850151621055288011165638934576325866972244', 14); + T('ek5ag0l', '3615400646', 25); + T('d4de8jakhg46gg8ke52hl3hl64af8h1g00', '11417779761519995781476451771964854089342166669', 23); + T('2gbeajig4810aab745afki14', '20666612177047863663274280987634', 22); + T('218k2c080cikh9eakdhbci94j8fgh', '79894697026629332310714396980970566525', 22); + T('46ebc2ha', '2680633108', 18); + T('35576422324763736', '1046634462177246', 8); + T('crfjig2n34dsuqnh0bgco', '16300713892509942649067256791448', 32); + T('3fljnn67qh0he798q', '2550626756903000471191471', 31); + T('10110001100100001110111010111001010011000110010100011010110010010100110100111111101111010110100110100', '1758529900728895870358045306164', 2); + T('105212361216153102535206354065633406325425223013011', '1993490998659291300161155678289157518972908', 7); + T('c4244b59g5c96da003c464332', '4155898790145483848870845049775', 17); + T('h', '17', 18); + T('100102122000000201000211201012010010101212012201120021012102011000202002201002102221012002101001212120022121011012', '861002691662158159012861645549677449067811598994275093', 3); + T('200000220244012526360023', '54738028206812706724', 7); + T('45025334847078362688008185858168724', '1268020314482631821675827535583508', 9); + T('85804d0f7992aef5f63', '862732012489613736899710', 19); + T('5mq', '6197', 33); + T('412165', '70411', 7); + T('3a670f32d8a0d0c5fe1d860669e0fa790a28', '5087581870263472260351886848536796076771880', 16); + T('14423420134', '108229018', 6); + T('3cdhij9b1o', '36452913717412', 28); + T('c38857c477adc786108ddc50913b', '108114098280659403543883930629969', 14); + T('4420623bfbcg0cea952bb74', '17465324511132004366053468166', 18); + T('76ebtvjipk64pcgeom', '469643266496008087961694799', 33); + T('833572012939455360689846300738643973735', '833572012939455360689846300738643973735', 10); + T('532jlutr4mkwmokrkk1spv29jpx2d', '38740672047259297073570474824972320124549357', 34); + T('1e7lwq7lfibag8x9g7', '249581188294471901155422092', 35); + T('16bpm7d7hh9ia9ql6', '175490655969459169683378', 28); + T('22', '22', 10); + T('1da6f2573623f320b0d788ecg77', '176650893165944234984783472578532', 17); + T('b54c', '31232', 14); + T('106d31a9f39dgg5ca5d22882606g1a166g1561937e65', '83055395658429905495429379420525542544257624906202499', 17); + T('87167783686580b6760546286a7005', '170003347235677664923783013736773', 12); + T('1011222012101', '629272', 3); + T('5e4c1kg8kgb9e0j9b', '8121399895030321436429', 21); + T('120310023320132031111031222201110323031303133', '479999663316795249342078175', 4); + T('2581695437092034322608281300193', '2581695437092034322608281300193', 10); + T('10b31379b4421', '9613231649881', 12); + T('fjai0pn268g32oa21ekbl2ee9d06m1idg', '29945640848113871009545458332782939996039036978', 26); + T('2242152541332302355454225214033201', '117239748984429205550000257', 6); + T('515335122443035', '3564199709740', 7); + T('143c0bb001a4313735185c73', '55571846248867914153487159', 13); + T('b81h6f61', '28354183265', 22); + T('b5d3ab57023c', '46265651034958', 14); + T('3', '3', 12); + T('5a1je9034nek74n9586cghc3', '301192022551379992935349177894755', 24); + T('6085chb9dbadgd17ad', '13171586833706983780981', 18); + T('4982a53ea0476cd120c6a38c8c5d964b2c068', '10126556364355015871790928748398484260463723', 15); + T('kc9g3uegiyvlshvrtdvx64ln', '6639598343399941171297097806956821033', 35); + T('4a4acc500818db', '3761155193407385', 14); + T('20pcq1260k', '53578455065104', 31); + T('321r9j1iqm9iqdd421ik', '9631620548977442780416929948', 28); + T('244ga3cb25dbf9f00b9gf272ffg9gd46097e', '26204733276579768210781207022287836057779358', 17); + T('9868dbdh147fceg49', '57400460873969103003533', 23); + T('222604', '39400', 7); + T('1001111000000', '5056', 2); + T('ek064d', '76838973', 22); + T('1a5188n3h1b0jod1671hbb9e9a5l422948', '19083115540402109213773674981974542272012536983', 25); + T('338912e9130a4', '420150545582779', 15); + T('17b6490b7ad35b949236027026ac1c55d10472d8b07', '2138281111827887420594645460315403726459746303107', 14); + T('9xwfs0gwcyv519', '1179101895976769853419', 35); + T('3ah4m2145foj5', '204295666789312355', 25); + T('b02mmltnld2jnx', '1301255465101006358613', 35); + T('bc45885577cgd2a67db35a5d14ca3c17c', '27753918928513171463189805378534573507156', 17); + T('3141201334301213410030010112321334303004321104142122430444023001310200043002', '89237897287660630346174371948143819745060364170706002', 5); + T('11010430110321', '1476410086', 5); + T('dlqp8bdh7i8ldf6ii8', '55089869930926033233979040', 28); + T('366255123122311123125', '4437634644479092309', 8); + T('11b2b2b57830934b307aa1958', '92329386229213427978411540', 12); + T('2a111815915', '175903352801', 12); + T('rrfshm3nx845epw5rqh7ti', '4029249737737517853157864145330896', 34); + T('797ssrfvu21ikjwltpjeiw6rq', '20251792508585042855691553376521064843', 33); + T('1231751346340466252606553475546101570554617315561125473', '7603872826618045742580005490971103946545668860731', 8); + T('1f1h2gqak41d5k0il1pbicdgpddmsr2t1b6c', '23416799607567184928718366393017760124104542135755195', 31); + T('9l1cha2o1do4j9cma', '427797075500712961988110', 26); + T('56322319981030', '56322319981030', 10); + T('76cwfnedn051qhit62lftaek9t934vhhasm', '30649878915096954532359678848211944230048706163888601', 33); + T('3iy04whwds', '279168468016683', 35); + T('1bsjgq108cagj', '1581450458898508307', 32); + T('4', '4', 10); + T('a0aq6pdf859381b42of904', '24599377046503368931010489086420', 28); + T('855c8e9b7922e67e7ba4da908010159', '1602902410787815193041624442766566559', 15); + T('55311312112233002243402130211312155421350340514451512400', '37223961907514345278830328700560172586461424', 6); + T('1022013123223003223300322320201010', '85450081323994286148', 4); + T('908710466301120434499886628231275207086870624675', '908710466301120434499886628231275207086870624675', 10); + T('8e8k8d4chg0b663e0iiikicd084ed7', '7370809038638046077658634722860915413949', 22); + T('2bm2pe4i87cj1k2l15k0nfnnh4', '581467039424523178429739030625165794', 26); + T('1ncooa9r', '38948697297', 30); + T('bipk4coqlx4m5w2ixtt7153oq336', '2585657693309581263603316685828104816727144', 34); + T('1h0aa5a1966b6ad64a4447028d107hgf7a2ah096', '17572273698356237543052229497274331150348443287504', 18); + T('276544434422885080212460407577672', '276544434422885080212460407577672', 10); + T('110000111100010100101000011111110101000011110011111100111010010010001111001101100000001000111111100010010101100', '1985345177021823592895244450907308', 2); + T('1001110000100000000000110110100010010101111110010100011100010101101010', '719999719481543869802', 2); + T('92fal9add', '1002804039109', 24); + T('a4hp5lh4dc2npkd6fa3jjh0dm0mgg687mqa', '47185254555192750689361563819892235471735779772486', 27); + T('15d9f04b1gef9d08fgfh', '934578487538888755916375', 18); + T('832913', '832913', 10); + T('4g1dq064c6ph', '430443150310562742', 35); + T('2413dcab4dd4acf50d555c028f9dfa7', '2997208574424073828351508066743213991', 16); + T('5lb1d', '5942317', 32); + T('12b283c0fa13dcbgbg3b33d95g2a39482424', '13450882559601947456920748168407415837877954', 17); + T('111100100100001100100101001110001101011010010100011010011100101000000101011011', '286012825709225924788571', 2); + T('5312521314325345320414255524522421', '264602503512316272185020237', 6); + T('4h910', '521982', 18); + T('737685bb6532393c7ae4kga8k71g2b8kli2', '31388007356628532619060635382380018033403436610', 22); + T('3fnjmf', '61371367', 28); + T('avvrce29ic6gnaa0a8mwsl3m855im98u6b5', '46733255380075003831663039424046041165133968062385816', 33); + T('14750145321891718544515464840373136519875', '14750145321891718544515464840373136519875', 10); + T('535563217273266762141100234605765502234', '113492301891561204235365568461833372', 8); + T('10403204012512222022021335534244123', '319087493465006318567376147', 6); + T('2b518a84c986454h611221d3f687e2', '6642461774183699172360267164698027418', 18); + T('232111223201301', '777435249', 4); + T('2g73538gn0qj0m89ik6m', '4085811882054081271200217927', 27); + T('j28szlkk5hwfzklssj0f', '7078218218729352925375627288383', 36); + T('14715687608876514226036405014660867608606525724', '120428847967260029520597138950650653087280057', 9); + T('kpp941t7q7udmnai4x57yy3602ntyg8', '435254642075720789924201732136377372350529359343', 35); + T('11010111100100111111110100111001010000011101110110100000001100001100001011011000110100010110110001110101100111100111000110010100011', '2292419381743847793952323533642807872675', 2); + T('1657330721157546300772313767037603015', '597965777884596169919754548479501', 8); + T('o4', '724', 30); + T('413310344421231413322303241330043014343010000443140423313', '6031086358432186950670068161163571029833', 5); + T('2g5k913n7f2dlf1bb0a39fkcaa6b6bn', '682270546676077618064623251305670646415519', 24); + T('21a71aezu3ea0izwvu7e1tluykn', '59233443885800213081870684139782121612167', 36); + T('4e50ci4dmn55ebb3c6kg9', '18459998608205280317028086409', 24); + T('1nb05cm44j2bd8jgcl6fi', '79142228769239865835175770884', 27); + T('2434241221440210204311', '1409805166881831', 5); + T('701711416205015540454465462370167111721657451163343320', '5136876924230800291846439025619119075547100858064', 8); + T('3f8n1of2a38obnl8ep11ecd', '110253233544146089611390491118511', 27); + T('34t', '3036', 31); + T('tskui29ucbiu17gpko7k1a6kpdqsa', '98535358769443740139966556351639343186441328', 33); + T('430210103354454023323444555113024234125300210122242', '3645392594482175303918584334169722751506', 6); + T('140687lbfcib5h5', '13615044335277161621', 23); + T('cexrtmgibat', '45391017618162101', 36); + T('kic4b3ma5nc2plgpgkpogfoai92dng8oj0mm5', '69938518380225983695147679294614413330181200341989838', 27); + T('ahj8kgo5925m5i0054', '12112057029207057322038214', 26); + T('100110100001101001001110101010000101110100000100000010100110001010101111110100110101001001001011011101000111001101100001101100010011000010011010', '13424243929007150060864059623182269932449946', 2); + T('67', '73', 11); + T('23362457004252530156262', '2342754483992148575675', 9); + T('3011202121101030201030100303033210301111220112030200110', '1001633711617655191899956991019028', 4); + T('137a892549638a9837a917a7666a362251', '7350842488951219051870982842648687535', 13); + T('b4ikcmf69e2ol9djiho334o', '63608428236453413618284599267624', 25); + T('3t4ptor60wd4kn0n1', '30316095985110696140429053', 36); + T('5', '5', 7); + T('64uiq0vl3orqb2q80', '19593826409773818947256632', 34); + T('628el9oca6cf5l', '96872666241776197671', 30); + T('11c6027fb07', '1221383944967', 16); + T('0', '0', 31); + T('231302302223322220011101010202122003210', '216254277740074631799012', 4); + T('1ejb7n9hn98fdko2b82omid', '9044494589730121024947833201713', 25); + T('dec57b8559i0da03202fg77e7ihdfe57d24494g3', '1024122312906876955463549547517122427306089572501789', 19); + T('oomkd0b', '6102664386', 25); + T('1lpci5r', '1259890377', 30); + T('f8v1bofvwns0ot46cp03bwel64nvjeut5', '155217583886970469124492270430014237032433826545559', 34); + T('bbgb8b78016ed4cb3d5e354f5af4b0c5312c4079719', '55874981774696748806533238208646256520967064718000675', 17); + T('2a4o3cabjeghak61a44', '35040210811575576369553229', 25); + T('hci0h6iifld5ff5ilbk65b48426nm9lc', '107241447290727904013766223879143355844274756', 24); + T('70nh5l498afi1gke4j26e916iaob15', '761187094370053383900135740007646208708043', 26); + T('3c43d5cv5ddo8wv0rqjw', '727519923745015769780970587047', 35); + T('1je3a5egj4709cdc4gfi9c2', '83275359746814050652469747842', 20); + T('6a74799742895178b887', '2199503576725308160807', 12); + T('7835c68b1', '6228797485', 13); + T('4blcgo2tngsc9', '2333273210661787569', 30); + T('1g0cc21kionpi43ajcn1bpb7i8dn7', '6725433872501710944890249791746813975217', 26); + T('1hpbdn020l6rhf3awq0hpe09q77856', '167486908631010808846811171655656010754677429', 33); + T('5epinj069hpeommq0p0a', '33648845471194696230841845068', 29); + T('32k8ee4kiedel4llelc8e4ie', '23533597718626777596381780445114', 22); + T('2c32db797c', '59370297194', 14); + T('e65a208743664c3ba599a15ad608eab43ba6a9ab52cba7', '1211237383851901761546703849501641437474536862403847507', 15); + T('f', '15', 16); + T('2335738633324401748700117607031714222313587', '28474989317702039795653269668144118345370', 9); + T('480umoz559ibt', '20009609804381113865', 36); + T('g33g47chh933gg', '679936669195392700', 19); + T('f3gcdd5e82542ba316483287377cf1d22f101d5448d', '72724582067825296668190966379135599043646147680532925', 17); + T('4j3na18o4p0ceo', '30452392062677782368', 28); + T('6g8f47d79h9f638b0h', '15118189433563577196653', 18); + T('676j80k4dfcfe18kkh9', '4005482188146748168521174', 21); + T('1001101010110110000', '316848', 2); + T('137147352425256713737330565276377404642163711477430', '2123077029185636827747635674055058793964142360', 8); + T('3132230032110133023222301010323132020003013002232133', '17643398431162255932320877652895', 4); + T('68ugt8', '328443123', 35); + T('89jedji105c7att4gb6atoq5n0da324cpr', '136322375391388103649786958602863047119729868881023', 31); + T('1ect', '43646', 31); + T('263052612663632623450322', '79933753083194935136', 7); + T('kkncd128450dnngb4e0006jn91jke9mcem', '73549583692565773010150654459903537277634564198', 24); + T('mlcnf05opd91', '83782165337060295', 26); + T('fj57gm406jbl3853lg127fm46igifb5knd52bd', '18471318386634651669357017600415819167888436283401109', 24); + T('d7cd254c4b261358f8a5ca', '260887824373193911758792138', 16); + T('2e266h0', '94725594', 18); + T('38d1adb1f0855eba75gac818fae4e3ada61', '2406025984446729980588911310762723226916599', 17); + T('969vlp1nq0cmdg4p', '861520870277679404136873', 34); + T('284357144735', '92362940285', 9); + T('miok6n6e2', '11330609651475', 29); + T('200010001231230121311320032101101102203020', '9690422491199883037714632', 4); + T('86gf50d54d35gf0dc0b41ebab6847d7h2f4c5', '90668674464877887390632519960182768841029658717', 19); + T('2ani4r0nhig1gbjh8l5kh6kk2prmpap38mkrb3', '837057992878003710672168205308141026264831823314103527', 28); + T('i7vbrcx6k9', '1436460800474184', 35); + T('73iah', '5767517', 30); + T('6438038702116a311387638837207a68073a93', '2174370174074028677328289240479077494102', 11); + T('m259bbnj7a', '320249541066343', 29); + T('113130150532102045044452115001025205501441503430320114205434101', '2211604036567285168567876925597855231015638757749', 6); + T('535188052007887974548621926768462151300749858328', '535188052007887974548621926768462151300749858328', 10); + T('3e7a93dkfi27dj1bfh9i35c3abjcg9fg', '1505256982398481387593340874013583945570174', 22); + T('1', '1', 24); + T('gxpupp4', '26250856922', 34); + T('at7tc8ntw2om38gg49r1o9wc', '917677889249261147737339445563028676', 33); + T('93n', '5279', 24); + T('1290c63c030979049c3c076649b408bb37741519bc', '5669935905784594135179408409816347268201188910', 13); + T('258peq2trq01ocru', '129442317021809162827266', 33); + T('254767174882833131', '43620452343308152', 9); + T('aql4oir5djm', '3245007227292090', 28); + T('db343e9a340d3b', '26756154339280481', 15); + T('3220003201211133020201030', '1020589011404876', 4); + T('3o78c', '2072046', 27); + T('2d877kan5ldq31293oilrd82opq81gg5ae', '4464070539173170102196895822272337548717444132915', 29); + T('e126trtmrqpdrleqkk775dcnrita15', '96328326169357847704968608549063554178472035', 30); + T('2232fagd5ogl88h', '134278057960916371337', 26); + T('1202112', '1283', 3); + T('5rm3m', '7768444', 34); + T('16a18ognkkd58hmk6k884imbg8ae3a9mo8jn', '10639470795815794263674183939356306402456151552373', 25); + T('17hk3j53', '10405409225', 26); + T('3', '3', 29); + T('30882179734', '30882179734', 10); + T('6ggg25h82da25ge6bj4bf7a43ijeabg5hhf0a9ecf', '75228743181702840807285203704272617023859657921677855', 20); + T('112001120124433010232210444042123440330342432210210431102401110143313320', '54227490505239760641941694866809573616876524197960', 5); + T('15427672061537656436340433201663652647551672', '1152417987539763660190335375077130818490', 8); + T('10i2p38hnf5i1dfprkdo83i2pg10kmqq3', '63970988722559728762937017576893997855744155811', 29); + T('h1b117o20np01tdi5jaekbg', '5349088060367663935485224075196346', 30); + T('86b34a14a2582b132', '1586003464764431606', 12); + T('74342', '30946', 8); + T('436m5fa847c7m1kjplgh05cd3822mic3', '971009368598280732378011474082406690927211238', 27); + T('8f2zzdeenejdkr209z38mtkvdch2906lz', '533260676773267340578452417326723669642107198382711', 36); + T('1hi9r2c9ronogk6csdqdeh4ruho04djiiqdf', '24708859854809466983372602857862889522307039320807326', 31); + T('947sq', '10825610', 33); + T('885526373854872554336133526465', '42192813046514552728772042462', 9); + T('3faa3h9c205g13aacfc0269bb', '18706722517747698176671987201674', 19); + T('227467610c43e85', '63224810139562775', 15); + T('123031112100212312320002001132001331012220023220231232232010013003013032', '9480799240652897962878990342506933303128526', 4); + T('23345022', '729446', 6); + T('101011111101010101011011110011001000000010110011111100010001101110000000011001110011010011', '850278303532391505837792467', 2); + T('2300003300310202100220321330023', '3171593279030664971', 4); + T('11d138c113205e6bh7359f4a', '280728756129469210482775394960', 19); + T('hadfml2', '26734017388', 34); + T('54k7jf718dd', '87347282076592', 21); + T('1ne8fda3abm60jc04fg2', '332195869682574442832526146', 24); + T('101011100110000111000010001011101100100110001110011000100000001011001101011101100101000010000000001000011010100011110011000110101100110110', '237356300857539012126250205765532327373622', 2); + T('1o271fchb00ol4dkhem17', '38390328656608000668455077433', 26); + T('525314545', '9216929', 6); + T('aa64c64c793e8364a', '70247576439398188420', 15); + T('a8pfj97f0435', '125741271124301512', 29); + T('ggh534c6ggbha518e08d25f05d0012f509', '4497422234177618704742490604901750978647125', 18); + T('22311232113211320312012333000330312102011322032221', '858789346873481805128057463721', 4); + T('1200113112201030310210113101120123', '111101134074076272155', 4); + T('1200121112221000122200012020202121102020111', '184849475168462687158', 3); + T('872983082774482983787518618800', '872983082774482983787518618800', 10); + T('5mlim4nidil98ff5n', '72148072134153551039567', 24); + T('1652585ba300b5380364870b504a1a7', '364646790364235488156172628236431', 12); + T('978h66d8caahcd0', '58089002636112249670', 22); + T('1kkla3a015jnhj', '1638687175226099563', 24); + T('746213261004212350555277277331633603', '308211597500827039469103368058755', 8); + T('4gp292pk42doc', '443983278306821408', 26); + T('180b294564700829387', '44545269922505572567', 12); + T('kk7d84p3dka3nreccq1m609d0gr00p', '19233251736714867892517505234457736796220249', 28); + T('110201102002110220120012121000002001000110221212100202020001102001212122', '10612477178427271665625741528055207', 3); + T('73363c6892d237', '5740049763623441', 14); + T('n4ckfns3mrno2dp0hlasg', '4097962887367983122115091338600', 29); + T('14431533104233134255102', '236018374533878510', 6); + T('34ca18064bb40237671722a6', '141266261546214472896454219', 13); + T('28391e59d70ch7', '102217702033516445', 19); + T('3', '3', 35); + T('9qgi', '241849', 29); + T('113250532', '2121752', 6); + T('7599788542b594096a5b87a5', '49584486067719553446039917', 12); + T('8s3t8ils7jfnndobdlaemqj250g3', '164631635071927317444094845929001081303849', 31); + T('4h2iacf43m', '17869487346347', 25); + T('110201121', '9277', 3); + T('12177711606432104883357', '1226392108651838512159', 9); + T('373256e2e8b17b56chg3a54', '45826692083221550917290789196', 19); + T('0', '0', 19); + T('11n8j', '359059', 24); + T('12202002002000122002221112122012222001112120002110000120001212201210220211221100001211221220111021000', '986705214174978834196213675086407606233888004604', 3); + T('10111110111011011100010100010100101010100010101001001000001101001000', '220125906067706381128', 2); + T('68fdii14l', '700119936693', 24); + T('3egk0140j5c1f5k', '229866340801816690810', 26); + T('e5degigka838d2205ilfi7gil479', '25083920445727826356901122508495429259', 22); + T('13320313301210112230203120320113320132003233132311213212213233333002202111302', '11259010157049734086345735286363460728682849650', 4); + T('5h62g38ge626f81', '2235184586731991197', 18); + T('1011001011101100001110000011', '187614083', 2); + T('xkemny6t', '2630437657301', 36); + T('10b0413250819386b108351290b73226b6a1590b34b05a6366', '81645102709884483913181829243891844511840914769743998', 12); + T('6372c', '315492', 15); + T('dj473h8cah3hid55dj1249a426g8f94bjf9603g', '383754275040977617362152965924589307652725745488076', 20); + T('22210332111320213210032300131133223121', '49951871347577207519961', 4); + T('6be', '7749', 35); + T('1b73282h0bii5031f4d542ee31ea46h635', '2527326396121816469210042873835773485296097', 19); + T('66227115432070273523772053651452513083354117373625624', '279494516756655179230331728401746874479009481968914', 9); + T('166qn1tp23j3vaxo0ojf', '435136933431911116389704144955', 36); + T('a28coq79j', '8591402127987', 31); + T('65irso', '150361164', 30); + T('73e98ddhgj831i1jeg8g329e451b8', '19290253118088978042039590991981480628', 20); + T('526622b5h943db7fa86hab06', '381454244000888974479231073170', 18); + T('43168a72fi0dt3h3ms', '52964818504140944984592388', 30); + T('hmmbmq09oh26', '216989280041265574', 29); + T('3c8k8kehcghg', '5349260598820264', 24); + T('6cj60m6fb50mb', '143719450210177075', 23); + T('146bi1debcfhsf97ci41rgm758201', '101427316663798701296660111279977667209213', 29); + T('1iihdci3d2d0872j6c4c44dagi1', '45334034109911611232603135189813584', 21); + T('8degg41934b83bih61i664a36j2hf', '91051501141223799965271020952208632909', 21); + T('16c786802b79020cb457cb593382714a0c641aa02400b78', '2677894540962015624580557265698048634806854048320936', 13); + T('52oi3aq54pojstedhf89eip6b', '14140583748705894224928943574695025684', 33); + T('61590172645abb69183b233b54b5747962b19', '4340185485693521080055289170225554068933', 12); + T('110682585501136724772506418006240605818072213886', '792229254764182331069673929338255216691773278', 9); + T('43qxp7', '248160283', 36); + T('c9uhlcfbn1c9q5', '300876274501077613973', 31); + T('694t1v4aaosluu3ljg2ijqu', '8159750513846010634274540700127070', 32); + T('21795846019a487881188a37130208', '3419949453251184532031131805419', 11); + T('1001010100111011001111111101000001111111111010110111001001100', '1344157337501134412', 2); + T('2mgd3m04rb98mva', '10936422713010831976670', 35); + T('40210655551020225312633630466450665625251450544442661653456430', '14381574785226902109942073009116714912332534395284510', 7); + T('u7en0vpl65blxi80te38tryfsku', '422618140589562267742993269570998416915030', 35); + T('11000001011001010001100111001000110011000110001011001101111001001101100001', '14270026723513393976161', 2); + T('ebpceco7pxldgb4onagjoht4k7', '5729256960747607579936416329466508315857', 35); + T('b9081qbq5sqxvik2xumnthjash', '4499212750032844054690121752205782394747', 35); + T('32j5g5095nln6naok9e3qaps68rn9o015adk0', '136942195680745271283041728157055292644430490770829675', 29); + T('725497617273767332245236077173508191481447722770385', '725497617273767332245236077173508191481447722770385', 10); + T('4or2dg2hagf0f9s876jn30gbjq59f4hhen141', '215251212904058918759190014904099329610351440654544226', 29); + T('rqo92bmij', '39112462451422', 33); + T('64238346686567353403826531363543727200', '1312747209333613899473709033496633239', 9); + T('62637563245765352276624303141602613364172154133241311371742', '152088100153270232559520172242319908695772301728543714', 8); + T('1333330113211232222022003003', '36012825892135107', 4); + T('3001031311233030312333010130233233313100113031012022130310211203220122223211011120221031', '72290779573970253392304372068058964937709043831900749', 4); + T('10041140324543315', '2876139957791', 6); + T('135561883015772', '32093135289974', 9); + T('715pfikbdn64049b0e329iebmee2p8a8l', '13402036795732724143888377560374564804041015517', 26); + T('7653b61a4a0', '466672013112', 12); + T('110321332122033332003323233102303213230320211320101123133032', '434197763291942311469426951196096462', 4); + T('2tge8uy8p3ve', '274389336133434774', 35); + T('155151710526047560257027505415470777132176305054012751404', '638423785977537057303063374808031230555869057635076', 8); + T('a765fadf402kk307f64imh08ca0a', '60279477718441090640145794037158399941', 23); + T('3hm6lg129la75k37c3jjk51l60c9h0', '11688186075235252346472073838202560002816', 23); + T('19dogfgr62cjraj17fo', '1602752867648709555962027512', 32); + T('kegju4tfeei9b048hsvot7pu4', '56859703342713352624670750416660729636', 33); + T('83034086469954352644240830031237890715772719822', '83034086469954352644240830031237890715772719822', 10); + T('3203202223033322231020001321', '64047325323231353', 4); + T('i2d0', '318058', 26); + T('4n6n4e77px75', '328641670161001487', 34); + T('1vtmkpr6qhospuplepvg09blp', '2655480572001125819849416161655828153', 32); + T('1ihow717r0rgjvmy7l29beg2bzww8pz6u6o', '124254102510606623034672266738595978367467100361745744', 36); + T('2m5gba', '33915216', 26); + T('hf654cg5bb3idigh9c', '232857980165918636614992', 20); + T('35443340144063542115553', '14892674299147846407', 7); + T('2112220110102011210112101020202110011021112200011221000102210102201020022', '57494075722004273256340780908238154', 3); + T('5lci5gb', '4165510991', 30); + T('11', '9', 8); + T('14f90cecc7171ac6437641b5ac089688db33909', '7483364180601064196936956248122321436304161033', 16); + T('o4jfagol6io', '2307070478457349', 25); + T('7b8a012ba0c5381568b3435c3654475cc62009135804b27a', '179001727269993328584512210018248776292093962282697712', 13); + T('a03b513b148787c4cbb10177a873b4182989', '9750173084845230278730830143332448339989', 13); + T('1iairpl57sp8n6033ge2rodf75f6gdori8g', '86022733789177873849337430569285876925456258265210', 29); + T('11kdb6p2md0hdgd8bm18i19k7di080', '344319303571314782580067280084060158221399', 27); + T('ik2jnjkj9m2e1og5gdmt1p72', '3113905142614984871455941391842734124', 34); + T('1d6k39adlb79a9pdfagh', '2340516863066457913428999698', 27); + T('ioqrojfmm7gea8rljr0f4pe5rbtt3', '10772975501661450017818524272575556265371968', 31); + T('21040', '1395', 5); + T('ei4mlt7tmgt7b7m', '6985663203740380489132', 30); + T('bb8cd4', '12291284', 16); + T('20504664240177812000285235681063216130278276', '222234624997451365651218301513111340426529', 9); + T('166432654201456360026451202162050312312114151254', '10448295064112667804382843649392154179282', 7); + T('mgc3ap914ff0379i98klj8d1hgc1pdm60ga8kp', '511401910152592553129845047866126227176299771468553809', 26); + T('15570', '30180', 12); + T('4df0e5fb247bf16f43c6776ccd60df556f502a', '1738142587398168829725897493959473887005593642', 16); + T('974e2c60da2db82a6314561004ee7da6fa4', '823784761827070684801624947985460569468836', 16); + T('7lofr8ub6g11ql13l34', '9507591535540334154075984996', 32); + T('87hjr15kg78kshbwf1ou45pkg8gs91p8uu2g', '1156903500550024753523548410979938002404617165251289196', 33); + T('2211212002220100021221212011011202102022210202101210111000211110122121110102112020021', '34079911752189551791157867491366350579586', 3); + T('43am2o6euumfbant06', '267667501385619931196518341', 33); + T('1d7cj1ceege23', '20652593811671495', 22); + T('4240243333000422254145314244201530204403151510530441', '21564520097455639497199309296429090214969', 6); + T('11869794193a97004899a475670a23182', '2453835010791845353960456267792399', 11); + T('ici00emcdk9p4', '14497585545174247457', 31); + T('313323041432211', '20435889681', 5); + T('4487649166275510951938a48870316aa5872476aa88a9674', '430315194065841472277550412799061686011884707425398', 11); + T('cfgip9i9js6mdsocjjmbqk56', '54118901185544030982279736369588342', 29); + T('78020k4bda5k787af0719j46', '19018189936144091928181332395673', 21); + T('1dnihd7g4pjvg9p2', '304917124976447619715094', 36); + T('5yk7ssas3wgmlx7ahwxjm1yayifvlwa7v7', '13590391589834916615774355195549723338258732720949843', 36); + T('7rsibsdr8eolqbkot9ehpnef1hacb1b', '68787249568298723121694457609989013843031697593', 34); + T('122101012101101001101011122022010011221011220120202110202022121101210101200211110122102201022201101001211112122', '58761003770056410036945132714314493878941158522889874', 3); + T('247oh4fpjh652m53aqpm09pk2g8h', '957358665081700123817860607985546969611', 27); + T('10110110010001101011010101000010011011110110110111101110111001000101101011110011000011011001000011011010001111110001110110001000010010', '15506344473128630453531168072244872569362', 2); + T('1ba4f196d2', '1836378562944', 22); + T('q85m56jde1ijaqvrspbmep65lf', '5080889917612367493209814869041589214701', 34); + T('28k3', '32739', 24); + T('2b24473632', '15134113478', 12); + T('206804748241013587542373', '18480377731997813950830', 9); + T('1429', '22662', 27); + T('12002012011120110010122201110112020120202102122002101222', '295468412871856185863944127', 3); + T('12000310142032111034412433113144010123022231141211420323444332011201', '94937406117061099909537623729787566702636203926', 5); + T('3ca1ab294586c19884478cc5562b0594a11', '298052963486521030604056025307425922825', 13); + T('1321573434316', '96870480078', 8); + T('200468a73553a18804a80927308663a07', '4230083436897722239837342629998453', 11); + T('0', '0', 34); + T('e823de9c24d78d3a4a31709137519b7a', '41830648502807920110953412072000880465', 15); + T('1mioj28ohgl5e57ir43p9h1l18rrf7h86', '36871182090696202519639887715662651503934529590', 28); + T('559t1wf8tqjcf4hsqigapgu931b67', '39236251530838046870605814177749092966502359', 34); + T('8gk8kganb8739cebk6ig8k791c4aami8', '632357147598558623973831444596664388969242660', 26); + T('f5ll4689f0cb7a', '7691005216002972700', 23); + T('67a0a27079b1453', '8542256755875903', 12); + T('33cic9ej8', '1560004667550', 29); + T('11101101000100000111011', '7768123', 2); + T('1469a870266b763900a2151605815894732009c0581', '82262652821492357872492374378244010360002277967', 13); + T('87kt32mchjk5c29d8ba4jp1r4doni392fc', '45899125404340044355369226957575208740733387075262', 30); + T('17ogc78hqfdol3m79f', '2784763002896554190331327', 27); + T('1b354c90c', '7303645452', 16); + T('333414', '11734', 5); + T('2ig1gj5ahfecb49e9h8jb6hb4ac96bd6e0g912a', '507895713729619956403077058830524059107852124474504', 21); + T('43214ba9635', '584965373374', 13); + T('3nncigsq19', '74651509139439', 30); + T('104m0kiom60lgfom9nd', '29690896309147298930418935', 26); + T('6dddo7nuhlpt80n7qr', '693283167208501106539919907', 34); + T('44323004044422212', '753914451557', 5); + T('2kjbagdd936cdihgl3di2iehcf3cha', '8983928381495948321401576478563586947687', 23); + T('15417724275812361346116783338045428115075362702', '126271823583933789437986560482347810218604565', 9); + T('4424434032402310351550243455031032530001231250544545401045032010023', '10818193299861878243790076799343621945293694027382815', 6); + T('3lm0hbfkkf', '10338045823215', 24); + T('lnihn1q', '19313199759', 31); + T('98476750d3abd781768003d843d02ca1c1cbb54', '342681225614809442677626946848997427648271550', 14); + T('57in', '171607', 32); + T('4l0', '4230', 30); + T('13zqljn2h5210jch67r9n', '14850078065778626446235105210315', 36); + T('17pcmfkig62aeakj4bbpp6abe3', '787221900286688152294317969622892409', 27); + T('ca12c1g899b', '128028933827791', 20); + T('1442561330613212634115655230112622234401141505', '177775307843218888019761099117675922373', 7); + T('1322323203230232302322231320313023000300232211112003322223102', '2553168476684154228725217265795967698', 4); + T('95bb', '38331', 16); + T('7knm', '228492', 31); + T('6d80b3e4ai96l315j64fffj4a2b', '528476806561481039995566993561707151', 22); + T('28598oa3', '18598623319', 26); + T('1', '1', 33); + T('57434427908678899a19616398a30a5aa9', '131732495350301681645134300922039080', 11); + T('ugvsalo6lid801bhequ2j3gm69md02dg1', '310169070310248176158440173181169510159391272861573', 34); + T('22021210220020120001110112211201111212022000100020002000222220201210111220', '186744606233199646302344057916276861', 3); + T('1mdbdo81sittch2c9pqmq23', '548604384913200011277372830177463', 30); + T('23160307511727067463554413', '90761577315987134273803', 8); + T('200011211221200112210021201112020211002012110102110112021211', '28542801355511656365238383949', 3); + T('37992', '539782', 20); + T('24kcglcnbq2n412', '238120258337878748231', 27); + T('42ol3e', '99487004', 30); + T('403734699498096870624883', '403734699498096870624883', 10); + T('211321053050604411', '505485346237719', 7); + T('78a27309357a327', '2966574256778513', 11); + T('461020385428b040b79533921bab8', '69259761610665370549777502991976', 13); + T('b1fr2rp41mbx3xncb0xfmra2d6oqw', '84042654646449163888200240417821757512098356', 34); + T('3005013424350503040343321122301430430201', '6735784675050747106650763807609', 6); + T('38pg3n2r', '139184565195', 33); + T('184786kd5415bn82eg8152hkhj0kgcne6n91gk', '1567411026865786158336358856957759587592645854583252', 24); + T('212303112311202220301131213210110230010201122003312032111011323000202002300331130310', '226839378801283979800479091211239181319725606229812', 4); + T('308432779036791936833307501538813', '308432779036791936833307501538813', 10); + T('5000a91de6305', '1407420280496901', 16); + T('be8a37712eafed235251de23df', '15096126834474288185885113328607', 16); + T('11110101000010010000001010101000011110000111000111011111111001111100110001101001111111', '74057344034249031021697663', 2); + T('4agdca9f536a3bg7367905192f0aa7cf28bade5026', '1304733992727463155067887261543758863312332333333468', 17); + T('1595', '2040', 11); + T('mfjh4f16g9qlgi1l6qokhf', '55420676304645035287654438132523', 28); + T('1', '1', 16); + T('28425704a041274a5416a3555399', '36212667591400568262055481715', 11); + T('4866ad25280b1764', '5217047593452509028', 16); + T('388555g50d2d369g7faa273cc55a6e8f35f2gd', '11765155725634973359235955063513317904611001160', 17); + T('212cj736k0c', '34252959577044', 21); + T('1202a1124e4e326e05d05e1de7bdc94fd25', '765196471729486476120236447628523003605404', 17); + T('79c17a306185a475639c20019c', '54786259681378319011782543509', 13); + T('1011000001', '705', 2); + T('11112122011212', '2413850', 3); + T('3413223330301224020104103042124113333023103342330044234', '214721484670156988481537697242134221819', 5); + T('4081922', '4081922', 10); + T('9dcgef01fh13h9066', '1185510195771990049194', 18); + T('7ec1421d879ad37189383a', '39838461593516143724886355', 15); + T('4556620513242533005444500602162053362636156165231420513026553350', '842757530742166745590516121006132571018257988845461487', 7); + T('887583326a0a09533114847045a6', '115229604461058273430446100080', 11); + T('soh3nc0r2a', '2912725556543746', 36); + T('1041143200233250', '525242817246', 6); + T('p8ihzekylx3yw1ndrradu1xvdoq80b8', '1233400406203421024397148451955822220091322400148', 36); + T('7h73garbjseceg8ekhef152cr2699', '672439504915616762220698973393004587395750', 29); + T('ml9je258hk2ie6gfed9igkpn5fi0', '3652887835869131415590854688229822429384', 26); + T('1b7e942f819b', '30230465970587', 16); + T('112341204334112423241230302230433023330333431030430', '116427771469295513780567588074080115', 5); + T('50g66a1fr6k1ck41broj1mcg69g9lik', '130468150434356532266429210273257638981218844', 28); + T('3cfd5e832db0e5g118297bc8f985g58de7gg3210', '3653875188901914332922344609876154431472747363931', 17); + T('263a85b3', '641369523', 16); + T('4842428884713208430441876574523584564054565420170316', '22921456423834362632075410365760509919770550726785', 9); + T('59m4bs422rhhaaml8j07o6ls8so0gn1e80i', '281062888625341158814391292979611212560325630954348', 29); + T('b1bb', '30545', 14); + T('abh35f', '296959741', 31); + T('19aq117k2sk88', '468204151297586117', 29); + T('19lcg0g7k3khl8e4ak109843a5kk1c5', '27236272682373056800446620591828837123057', 22); + T('e8alej65ca3j32e9kh9gh', '24658599960999816341036277260', 23); + T('455919786b458acd526635037dca6075d88804346', '30703490401628056566732211795733293107803742570', 14); + T('7txkbf0ec3obw', '26547103232126519067', 35); + T('38', '56', 16); + T('5dhefbac0e6bj26', '9329618703405855646', 20); + T('101e9b30e17e', '17723638735230', 16); + T('2obir141170utjb3pdqeq1g2ld', '53587818951559954153548512220759128235', 31); + T('1114b1711481a37b40ab782', '603474625470367571048594', 12); + T('10122212212210020011210200001010010102020011201011220002110102200111122002120001110', '1623999922600731648116424421855627143570', 3); + T('a93ac3066111a691314c6b5b3ba516270747a9199a08b7', '1436959793947238532222831766204822671586011493120070', 13); + T('58480962a86729768482180130940604', '1106822665412898914406602330090165', 11); + T('131301223210133302302302221021', '536401454673111625', 4); + T('evfp0fsfkrpfirrmh2jnau895v', '1372783108572463878894831856355242799710', 33); + T('afijc5fbwglvb1', '1235206740707162508111', 35); + T('310011232113023311032211012023002203301013101011212', '4126950927538421833835204120934', 4); + T('6e8ngmahe', '1844460496346', 27); + T('1bpo5h74agrcgoo6b51cshgl', '6086700625232934820042018053764608', 29); + T('24351022035415021620230332665631431152316000314500', '680247907196347864914631461520709331522883', 7); + T('df8661ghcbaahg6h0i5abi257', '67664436903091499279834668430129', 19); + T('5a3282a143771e795d87ee5', '425024233293429042801085115', 15); + T('404244212412030422302034330214300441441432', '190258475138999060530910108992', 5); + T('5on', '4027', 26); + T('6cffj7ihad83nfiiehd63bh', '15113784949593526393490088172505', 24); + T('23k322g0c7h9', '2066164244508171', 23); + T('689hd3303cd606f1f99f5afe0a725890a85bf07', '3247974309774379895380706745511795262908184133739', 18); + T('27358340790499664c9a9c5b910121320b13cb22', '71092424548919054827902632131879373254277531', 13); + T('5hki', '198876', 33); + T('bclp4mbe1djj2b5o', '33899350519431680218890', 27); + T('bpgdh6iee75ooge827a', '353340952670231280445716776', 26); + T('d8bk206fjkj15ie4dhcl3cc', '12138152877944519436661702674041', 23); + T('333ljh5b6m79h6', '1581616916999395997', 23); + T('d2qxawll1gbiiij6e7ln3', '99526840765015723857527315388533', 35); + T('11876187218c934699c6057131c808b5c45c9ca0503b65740', '332245795948615376820642052747656044479282749839696434', 13); + T('5atv', '191563', 33); + T('1', '1', 26); + T('311', '375', 11); + T('ae7b24afb7a1dd2ad59ef565c636f4af', '231925067868680755427379099063532582063', 16); + T('1222000221102020001212001011021122', '10919408154431444', 3); + T('1256216662445441356235433665015445002263033', '438697014198691047518334542836935784', 7); + T('626gmncl3ms71p6opdash', '4078656173551560415187079606707', 31); + T('9ghhakhf1f0bi35d5c4kdh73k433fdk8h2ih23j', '1720533821779021495938138198647013851872290282091672', 21); + T('5ei7ke0hj52j00eki3pr06cqodpifoon9', '1016743133813841084879455508016504611887385220299', 30); + T('21titq3hucthn6f0of2616njf40', '1230037399641719218164443592833669976942', 31); + T('2biej', '1933639', 30); + T('q', '26', 30); + T('67978744699025702245219518654', '67978744699025702245219518654', 10); + T('1253111112541554232', '151023434718764', 6); + T('111011000010100011011110010000000000010110111001001100010010101101000001000010111010110001110010010101', '4677623609407056260314308484245', 2); + T('201211021000021122202201112210212212210200202100', '58567569643036490851386', 3); + T('5a88292b44c720421cb894b3a12', '533915890363656397491382509270', 13); + T('2h3e9hh2ib08c86bi0f0', '5747634541497108642678548', 19); + T('37567a0687g4258ga436c778d3h95h2818c8dh9', '1708150384691444782060059038629023779853876775407', 18); + T('givc5j13vrst', '597831052538408861', 32); + T('4131234010544202445323324233414', '941033209809342819174418', 6); + T('1619m9di82d46o18hnd1m3e1a36576530', '673416020131515842532807516881375904836815700', 25); + T('9m0', '8760', 30); + T('88xp', '353980', 35); + T('rbn8ep3b3rlj980chlm8qq4jleq8', '1191977843977043837841082225345577902324552', 32); + T('d3eahfcacbd146d48496hhah3667h', '1856055109840344885967358014189889063', 18); + T('640ee4mvnfj118ko5o7osb3arkd', '85533992399600604195850584300979623830038', 35); + T('20', '62', 31); + T('4012233002114142114422214001201340442021313142420204432130402210244423', '6878505816170177212464782885897033424143266493738', 5); + T('13e52klc4l', '3037222455669', 24); + T('r10qcmspcqekq3kpvdbqgbbtfa5aj867l2', '9346556545971537223317971555464781544415436716699000', 34); + T('14mjb3el6fba077gln', '350780406639162972508175', 24); + T('hiigh749709hij318ad53c27b64f5eaj7', '36632370970561829556172951184321651113284751', 21); + T('2b207beb5089ejh85kib9', '703442893999669422870353721', 21); + T('2', '2', 18); + T('4g8h9d7qkcst30925i7lrjbcn76qnlr', '16140733323463101968248981740436855171786353768', 33); + T('3602178', '1248395201', 27); + T('26jfj0fch02309bk10k', '1470277628960362858087031', 21); + T('h771za89m9jsnkj3e8', '4927970904269521731241666544', 36); + T('1hafgfbe', '10357681539', 25); + T('4250d1c09bbb3867368b696bd811d490115', '3875741601165944284125909641413718735527', 14); + T('339ef7a5f81e079987fa8c3ae71', '65437348931585993956193860824689', 16); + T('7cco5bfijg64cmcm1kc7hnck83k46', '10409381677342479533995796423788528575106', 25); + T('7cf5td85bcllkqq98pdui1', '154169249902641839102789533784495', 31); + T('20621a550a42279185769998249a3', '295806720939573663643677166305', 11); + T('1mb6d83m4c50sle0oc7pd18ca', '1067940877091749641918965208695920032', 31); + T('54b6ca52773', '741121768884', 13); + T('10225075515717745075', '1388960944958441156', 9); + T('12033e19', '458883185', 17); + T('155430719053377666277386799088760775939080', '155430719053377666277386799088760775939080', 10); + T('206142346532535062330364656312416520634234521450614502', '1312201569241680518802305709945691263438445736', 7); + T('111011121211', '259249', 3); + T('4a0687a7a455a92b8101638727', '212245593684005354604310715375', 14); + T('15fhdb8gcg17ca4daai4b', '49141072391005691770808896', 19); + T('35bmllo0filj87hmoe', '3639448929253283009287022', 26); + T('30cd1039500b4ab6dac54a49c614bd3a851b1b4', '1502423755197224198218677083417578305925869394', 15); + T('19ck0a7476b8146ci0k7b3e6', '10784621227701209583410027023454', 22); + T('jh821e8t4onq', '703971165467730682', 32); + T('2ccih998858bf1f1h4gefdh98a9kf38ljgb', '11288708847794836487628299578289569053830362671', 22); + T('136030', '136030', 10); + T('621301550003036553464635301440623601534020222336132356653', '1336170888382484501976014506902352076175198389248', 7); + T('c7xk9wfj3838o6su0eikx', '93045511580118968344881438576158', 35); + T('npj', '21469', 30); + T('21a58906c334d0208cd37b20b0602', '262325768672641862422584585884490', 14); + T('l8h7nee7wqtpfw0fxhdj', '2663559215161630225508053538953', 34); + T('2', '2', 8); + T('1010001000000011111000000101001100001011100000011111111001101000100001001011010110000010011011111111000011110101010001110011', '13459691377936385656205820498694591603', 2); + T('6aonr', '5152317', 30); + T('141023221242233231310523004', '289378994775032790796', 6); + T('1220120200002120122020021', '539548971703', 3); + T('b24med8f1f2dfge0c', '483364700771293735772052', 26); + T('1840p1', '15608139', 26); + T('ztl1vn37v062ms6t', '7919265633809577167295029', 36); + T('20425420504320415140035236441560246636135235', '4563739435349096802532430020917212365', 7); + T('1m5ccvktskp5', '157659130001415880', 35); + T('8o', '288', 33); + T('240c65a596', '24532236839', 13); + T('983763db8j57bchehcd435bga0e9h0bac', '4040882893213836419463664776313088927524612', 20); + T('2201200102221110020000022201221010', '15170686366681812', 3); + T('456374', '1109896', 12); + T('70m8mn2ba', '1073573407785', 25); + T('451aakninemmhcb6b2h1p227g0n56od8dfs1', '20853955252647719617988537600784407469238338538745341', 30); + T('j14k513fd1elhc79agqssuepkbcr2ju7', '324947526914571293920860403904607004779325895507', 31); + T('22680488', '11036006', 9); + T('5c3bg11jf751fh0jg60i7gfjfdi2kgkl3', '50354032529134077402872376698216146306223649', 22); + T('3c650110b937028a4799a6b1a55b772c718182', '651168490122119567243142061008190429370417', 13); + T('1221032311120020101101033230200302323202011313101001003132221111121303133100023322101132', '39371883765686973625144887114028494953808808960304222', 4); + T('4099gl', '25860025', 23); + T('25e8g63gff11gc17d08ea34826ddbgdfagga', '27273517546344897300623839432182770845480659', 17); + T('12a96edb754d4d6dca', '116318229977030547115', 15); + T('a7r01598mcsok', '3634911087742907341', 29); + T('8lugnnh', '18735214013', 36); + T('462338084841', '462338084841', 10); + T('3203123', '14555', 4); + T('1jhwtj2p4rl', '3250085526472387', 34); + T('23044346313736', '1310562293726', 8); + T('5lpf0fh0l9fn7li', '15558130210796154919424', 34); + T('13do6afq9o84jnaggjan11gq8ihgmqo49ko18', '3821564988333362537058780890229032055458378165509784', 27); + T('18193e4c8dlc5hk7iib', '38609061493103824129546527', 26); + T('1h02g1kj7832642l6d', '117460092015601351103221', 22); + T('72186117768166364743807116578515315415805223867883384053', '220528602283214676716138238392247863019093407607117978', 9); + T('6ik6bc2k96gmi0', '3438006927862011506', 23); + T('762722210536357403530500', '4601638793217664004416', 8); + T('2dh3ha273465c12f', '41472924050752232897', 19); + T('104413305412351302314043503540052212312', '419908180423076828270954660852', 6); + T('6', '6', 13); + T('1g3hh6bfde4f35', '77925319234957436', 19); + T('49ig78819he', '27748810576749', 19); + T('22412142010434432110021004244121', '11975887279273703196786', 5); + T('2bogi', '1703507', 29); + T('101111100101010010010101000010100111111101111011110111100110', '857171914848189926', 2); + T('gtnjivuoj64ki9', '624581256882734387785', 32); + T('9h8f5nh1ph3qe9glh8lft06p1oc5k0', '65721260945294966804233759504775006489069100', 30); + T('151132121055324332334031340133105132441504412305001233331', '70457366252732538353135178251613420869315383', 6); + T('f145aggec1e7jjga4i97279ef', '252676495567805480924286038779895', 20); + T('7de7cag27639158g0b565910d1b0be23c', '18504577862769439979869071005055514681936', 17); + T('475294666089764828847579973438', '475294666089764828847579973438', 10); + T('2301', '834', 7); + T('k8e4b4jkmhrmdp6rp1n7ec38o555275b', '14773238036137641376439746063291883553488634503', 28); + T('fc3f66gd3m6db132bahaji2b0', '7457653487404061820814558204897923', 23); + T('111222200010332331131301121103332210223130202030200012032230321111220103200021113', '1978880662522375880691401912877401491165359768151', 4); + T('75899793636343882742', '75899793636343882742', 10); + T('eo8496ka6glj6c9g4uv7cbnq2q0cd4jpg', '377805709401704966595895997759561079844005820122541', 35); + T('7nacmugtp8k6xm66a543', '963315084681439473869691613071', 34); + T('7', '7', 17); + T('47cle2eajl4d4li7ahg', '6332844204194445871554582', 22); + T('12107170aj5f52ielll1be', '16962840667954795901484794380', 22); + T('55bww8w0t0eghb8ls55dcl6ixlwv15olhaq', '162308148448278373157076294786164277284790340959530326', 35); + T('484ja34e81gf135j3e2ac56e0i7hij', '236890988768063667108553222280578943179', 20); + T('2243232540752434710611323210536463', '1469808842581774120550500842803', 8); + T('p575eb5ca5038d3ok8idllf2e899b5', '2726961239011011355236144568961137638537999', 26); + T('2b1bd606021a1b', '707917646595659841', 22); + T('2ed9f432ejd0f11jcfj1f5al9b2bk5nm27280', '2223214645127163142355016653760898495984516506656464', 26); + T('152bc54129052ac50', '2987450448112457894', 14); + T('46066728688271603364', '6316495850515234477', 9); + T('2g5d0h7g0gbmf78c79243nn9', '148727643469245968217529721296881', 24); + T('15lf11bf87j7jci121kma4nkhn', '39880191485245317293588274721343663', 24); + T('hh577s4nnlha0gi0s', '4402448697185571173522937', 29); + T('ca713dba8442e', '1647538652528819', 15); + T('284dfddhg', '27099949678', 18); + T('1610kf97j8i041bb', '174505901776678878593', 22); + T('8kt18kxjdwg4q3kuvknkwf2m23fnogq', '180423804171461723659383672666400155952750669236', 35); + T('g1abca5091b2cfd77a42559cfa1705882e81', '187251468917148330282582773146445435959176796', 17); + T('3303131212212212001121223303303323000100022312113322022110101221231332303213132', '347481362131991515099107296900808626703171271134', 4); + T('10718a989932057354a4601117981469033274a', '3961930126752739711210993249170997323907', 11); + T('113e4g13546f6i9ej14ii', '111073560433528497263849978', 20); + T('2li2i2lfj3', '5308535621389', 23); + T('54knqyisd3f1qtn5lcsrqimc5', '58593465649571042522289076646796218500', 35); + T('2010022010120011221220010122020200001020022101222000', '4570711546653019923644655', 3); + T('6042532553115031666', '109306485388096438', 8); + T('6ah6ehccca1ed30ch49f3chbb6', '611921790018452815367943572833440', 19); + T('960087e1ab29243087', '926162178026733465877', 15); + T('l2lhfda4f8c2kpecq9e', '4439523739653117128740893076', 29); + T('3a8fq8un9i68qu7nfu8g9m6rne', '64072841936979423961636673759087451780', 31); + T('20865277352048389955531777302333293367153791034484', '20865277352048389955531777302333293367153791034484', 10); + T('74s3lnibf977jg6r2kfq0785hco5qf6ghsjq', '10952987102780656964577606541072916821267549127588375', 29); + T('aqrwo4u14gmsqb80p606l9c', '53151205860039125228759211533105730', 34); + T('212222211102121102002220202102221012012001100010', '70884984454458032820162', 3); + T('2db1hciffk0hm0e6k40', '8389881219953798948711887', 23); + T('2kcgcdj47ii9fo9d63dk', '4330238080712124271959724007', 27); + T('6e7hc7ii81j52091i8', '88076484386866246472768', 20); + T('e7772iik87lc17dmagacj1hi282c7fl', '1017940669032249205173001354895673774197894', 23); + T('e9ee099c86950e5cd055c3', '73154233593336417594233808', 15); + T('114320330134242422200031242123411112401023032042310442412142213311341204321', '7345000213858373240721280688086693345479506507366211', 5); + T('j88o3pi34mb99l', '78248748988488054576', 27); + T('15d1fe6b5dfe7e1a87573a3946b42cb4437be39c6', '1993149199833169001344544884949567309662274861510', 16); + T('1ar5ld7bhpweb', '2214925368227004290', 33); + T('2sa2atrt1bhh1a', '71145664465186679354', 31); + T('18rgp8mhc3g6cvfamnrnkev61i0lpr', '56950731880511586745670579431418877456701243', 32); + T('54750443750225316571406736430512671452166747632', '1958033248391176678532214751521115754712986', 8); + T('10033312210131414322321312324022212541331410155345315450', '6389651250992348768646795839155231300106070', 6); + T('2001', '55', 3); + T('110110001001110001101001101001011100110000000100111101101000111101100100110101001110010001', '1047466460252578697656357777', 2); + T('24dc49e9660gcd', '183011576916166653', 20); + T('42122277123352400676', '615387804455272894', 8); + T('0', '0', 16); + T('1110024243220212030313224420010414040224', '2257245111890157772228268189', 5); + T('5433a', '111070', 12); + T('4dd96b56229865b89a161511122a14600007', '65059146911706674028661393829083246616519', 14); + T('4m9', '4269', 30); + T('1', '1', 32); + T('34233430413121304312422', '9322841380150987', 5); + T('61mp8fo48jlan56in9gmkdhfg9c0alh', '17083001674217793608388954599991083027738235', 26); + T('32hvfwcdfgexkaw0n6ifo45nvnu7j', '52637066972675961314961424822511197998983139', 35); + T('noodmkbwaj9tm528epefa87', '60668696101764660552956150804345518', 33); + T('50d7k398dfikdc954iic8bjbfe3jcb0i98e81c', '42044682017147219899812045714230284465317216035715', 21); + T('57c89kfq15fd3pkco0', '67759519628186541120701520', 30); + T('53176', '77402', 11); + T('101211210202121000001100112010', '82697070088632', 3); + T('12d633', '905898', 15); + T('b2rtvc8g61c437iddjuthv8', '28319832096437414138598301478368955', 33); + T('6ga8d5h5g9f2f1fe4hbc9c5b7', '9262426469570471976898418380753', 18); + T('17110233227503265253014384471688317133280470764448630707', '54520949680778856452144908392364747704157731362612641', 9); + T('36a7c7709df98c98d9bf0d8037e2e374f003c1', '11394536016349300502893187504942759921712585249', 17); + T('211100001220021021121201201002200101', '124166832733905544', 3); + T('1l1qjc84j7pqdb5o8lnp2js1qo', '6267531622610675770077756739540891303', 29); + T('7bi', '4314', 24); + T('1d58555c755829deb105aca86ad2add', '362671265369959944822892451673948583', 15); + T('10000101011010001000100001111111001110010010110100011000111101001010000001001011001000111010010000011010101111001111101101010001', '177330090800059334179372876785623300945', 2); + T('5rmq1hja3i2htok977', '76520833163682115657688317', 30); + T('d2brswannhgj3dlq5n05', '929158307404877629186032129341', 33); + T('4pc21d0595qm6akekaffschk', '45628774689731521025778390467417330', 30); + T('jpa', '19044', 31); + T('1691716c0670488844023aa40c20188381b82cc302', '7115945393660134960643716538173622961377844730', 13); + T('djrpok3d6kkfg', '3184685238921417716', 28); + T('18shakkersigg179aaslnd1', '6207140351700911819450122511814847', 34); + T('16gii99hma3mili3he91m', '11521470163607970255895536922', 25); + T('4uk404fu5r5bdwu1ak9gand07697', '1096743830617243267478450024447881641715561', 34); + T('177a69e65c0d5c23b', '9858342665710869131', 15); + T('20a772797373a501749a', '127724571524906942090', 11); + T('10e5a57g96279ah', '391367132694107585', 18); + T('1h7hhhfe2bd6i11d96326g7d', '494193280655696512736123393974', 19); + T('7672ff747c781c06ec82bf84418073cc9158fdb', '42264090573810039509111928267687533762028343259', 16); + T('33908b093481777ab43bb5271273b0755570243606', '584310085758916620977709600135575563060196262', 12); + T('123231331132230331312022003', '7801961318933123', 4); + T('1', '1', 32); + T('66je9gr0ha23vrljqp2tr', '14542761384658132443821891589168', 33); + T('50tr39qo5m9eja', '594238253683306042450', 35); + T('1010', '10', 2); + T('2c7d4bd1cd6167cbb', '6311101283107439389', 14); + T('23e20bfb8hhed30c2c843a87badi184297f567f', '8599266531496302272627406261206189142556716915261', 19); + T('41526780b9a5a17239720c92a3a0b54135bd39b09', '28686410109773337194021152769532941934256864189', 14); + T('ecml001aqoe9jiq', '4296982938641008844248', 29); + T('9c9294297137cb8c4b01j957', '8072196030039931406649024315707', 20); + T('710b006a61846c1b6485b9a2', '295698290243613321492343567', 13); + T('lof0hf', '448075216', 29); + T('1492380631939476422', '1492380631939476422', 10); + T('18617787217', '6853402807', 9); + T('28', '28', 10); + T('233025524522200322430510512000143324053140010223351404541514313402', '982649847712429965283271312633628451452240511169738', 6); + T('1c1a6cbb', '308835626', 15); + T('3i', '114', 32); + T('1i6chph3robe3ko60b1gd3fleqf6hdcfo9j6', '738415477605791828889810374125732142138172965238442', 28); + T('416d94816d6c7feh0cde02eiaa6iagf01770c', '44142204501594531372888971214564230677789639395', 19); + T('5fdf6andc0cblgci248bob183k', '499314055028383130819138235346114470', 25); + T('b1219a76298532a168636973ab', '10587337000034099908821844595', 12); + T('1rg6o01h5oi0njeqkb7o1r88gafndlan7', '40440720236650984662808240649217148711435143915', 28); + T('kc7k2ddbdg5m4fg777geg1i89fajf1fe', '33580873055276588035833179463849652564714137', 23); + T('4c7', '2807', 25); + T('50d68', '256148', 15); + T('3j8lfa0', '921431500', 25); + T('4d21233cfh9h2he4', '314977287497448880315', 21); + T('22ptrk21dlua2difpbga7nqfoo17nif', '2979844012644061261709624973913718814284176975', 32); + T('18ccbk9mn8', '13768771588524', 28); + T('3akf5a1okjdf9i2', '220305847680983116834', 26); + T('b52', '7002', 25); + T('20f293dah58dhi6591774if90', '10002849645651587260522047835251', 19); + T('nirh2c1rlp2k3', '8368956114944618930', 29); + T('141671751106136325535453330430775232437321543', '8325279825157794222097655945192898667363', 8); + T('58a2b3d05b929508b18', '2400541066384412592866', 14); + T('31023001203013012002021120200330112321120213130122023130020222330', '1120571363755739421100727158868165036732', 4); + T('72e7bed4eb579abe8684d4908b0184cb45ee3b33dd', '11938380317430849854727246010136297539608439111633', 15); + T('66d1', '26321', 16); + T('8j24l7eh5a14576ddaaj9i3dabcifhh', '166156615220176117320330888289725612288371', 22); + T('9i', '207', 21); + T('1110000101111000100101111000000001000100111010100110100101100011001010000101101001100000000100101011101001110000001110011101000001110', '9590478319392434269891419865097211165198', 2); + T('115156027', '481106335', 12); + T('1144850cc6', '41741581011', 15); + T('1487132dabd4006942ea4621e5753f54520400535ef3', '7680300593500415724655977000547063327920546737512179', 16); + T('10546275881470641020601788147547482777581620632', '83907179991104098938515481963287844552882413', 9); + T('334cfdf0g8g0dd78084a1e9c9fcdef78ag8e7', '4924973649792829875901725536375255033046058627', 18); + T('2948fb1b9376', '161562182577000', 18); + T('21042a641728100chad9ef8h6d7b7c3098dbhf0', '1031417459611470715458453074567717343310137625146', 18); + T('15f2bjhmi3jane4l65kn803d0dhjmjhmf3bh48', '1443199917648326594528212198138420579039397582219432', 24); + T('492c38263b15288875198043a58417aa27a2322', '10065688820077810586833059893292051419004944', 13); + T('33233013302021011031220010112', '283479533598179606', 4); + T('4od7gmh2e', '1032178487094', 26); + T('9g08hgf', '463091841', 19); + T('3do7n1lfh7m4m57onajanrnhqn', '5277516132422516396735738514310367807', 28); + T('2322ca44cbeca009cecc2dabc607c253c0ede', '4826418133925788145647532256925808902342109', 15); + T('1101010001110100011011010010011010100010111111101000101011111111111011011100001000010100011100010000111011001011000101100010010001111011101111010100100011000010001', '9703219505953893074023234217532878016916428047889', 2); + T('8ca', '2250', 16); + T('1101000001100011011001110000010011000100110001000011010110000100', '15015958852762088836', 2); + T('dvjl87viis0gkrmcghlrd7q', '240395536768968656611032877948245158', 36); + T('2a', '82', 36); + T('111210120022010000110211002221221220000021220211121211021120001', '584945674767242374610105648344', 3); + T('1ai9132i20a5fgi721037icd8ag64g', '19134774517743882367815280823402029739', 19); + T('11110011111110100111011111001010001010010100010010110', '8584226467555478', 2); + T('g703h2dca60', '272444928079086', 21); + T('10210020120001121102010211101102021200220021222120101121200121202022202101220210110', '1679155601670174046538269979766608832201', 3); + T('2d4c0a43168909a302959c729a7d61dac88c6787673418', '242496727538337888410218936739166557375410421370281048', 15); + T('44182a6d51a945a6a5cbe', '1421060022593917761957254', 15); + T('322125', '55977', 7); + T('7263581986004721570413a2739a67aa83484237817a00a2a', '701827631601858999302922019818257157812697798613760', 11); + T('5c42b9c7003c24696620468954b29cbb3800b450', '165259584116068790832545074144076581971429835', 13); + T('1fako8578e8uy8bvlnj95', '10936625165885490373805378810345', 35); + T('ess', '14350', 31); + T('nqs63sn7ska0afpfj9ob2b5', '3562053305005166648568447677059132', 29); + T('4153913738413582813112676402665839356882390406053', '4153913738413582813112676402665839356882390406053', 10); + T('10', '11', 11); + T('21ni3ig3fdm5ak24qbg9faqpnc648bgofgpa', '923922508138801830427813012811681004567930200769030', 28); + T('c5063b871', '31613731531', 15); + T('133113123230232030111101031013101303211010113000130302330313013222211013123100', '44767247228757594878589756004233521788175546064', 4); + T('ggjfk4cp1', '3475798835003', 26); + T('c25q', '237815', 27); + T('10c362c311ac7a583b35bdc6c2989b90d6abcc84c73b427', '56002849258572207947726688091124294570134439897478763', 14); + T('177c59d0fc389g3340g71f79a2b811444e5f1355f', '23761033881708446864722030370719581689404930279586', 17); + T('122212220012221002101022101210102112212101012222120021111202110222220100022220211102202012122002022020222021', '2239868430693007918519867980663532667540649890303176', 3); + T('v9uwm7cslow8gxma0vyq6hlymtxplqg', '656661129725170073836410425741911682455436847276', 35); + T('7x08xllu24op4byosm9ltihxjewibl', '10747943758603250784828832033535923549465833153', 36); + T('3ajic8h4jji8ahfadkd71', '979685512478696901448807321', 21); + T('39904l73ja8jd608cg076m3anbb7k2dhglcl4i5', '95128101998246343813523478731453034388462265997768885', 24); + T('13d75b964659495122b477d3253b201b8', '6087380592454876448304034029996695910', 14); + T('239bo8qho9dbdf187i8f6h33i', '114276554361298256463392230807709014', 28); + T('r', '27', 31); + T('22439348a809183a88a50', '1492002089284103770835', 11); + T('11502245241132103500255402550454540604341255554516024022114521111', '1519687960622981585676593638948280395813952883484605445', 7); + T('178ac7i56c101dagac80g7', '994276001910959615043844218', 19); + T('ab32097dd97de47c4f76930046f32a1', '14222362164666534040463596276719497889', 16); + T('h70nie89fkng', '41202353353372466', 25); + T('8dodbheltf29ensgfend90tmv1pe', '367182433456718603593958892406561938835246', 32); + T('2ro6d78uogvvqatywvhy', '1028055008673794181515446812022', 36); + T('a0je', '80394', 20); + T('b0a7m1cbobk4rln', '8334455843425820422974', 31); + T('350', '1562', 22); + T('ad5285g52hdica4c1a0', '1113997739784091562392939', 19); + T('1266513240443235025011542435215551161116052', '445444030178987216515247159044782503', 7); + T('i9fhkgc7a8fehb8', '3339213521202402120908', 28); + T('5pkrtcfr8cerqo8ipka8kme49p6ndm13nj', '32557148939358327987280716163959952063457820750409', 30); + T('d881c3d55a3d9a1ab22155bcba6880a32c831', '2480623568212133413145101410008494284467243', 14); + T('1i181nlbf4ihf2n181jlbc7mjl8kf7ki4n', '6174255537646104877910561539949873285987455223', 24); + T('12100211221201110111200012210221200011120011200201111022212012001101022221120021220010211101212', '1264246371202182024824489688458885819892007097', 3); + T('18p04j', '26779257', 29); + T('175smiphiert0icrad6h69j43ktrobas6tscr', '186110422740954237972811643773335017903308645946068587', 30); + T('j31jf849bhd8ge7ik3', '5562425811185304078419043', 24); + T('aa26298a', '4348115833', 17); + T('a', '10', 20); + T('2005de18a020a0de6882170bc1b43298acb4', '291477737292846364616559097414390155525994', 15); + T('889879000997066842936930294683621095', '889879000997066842936930294683621095', 10); + T('bj0bq0nbka9482gnfj6i', '18376271230937994256598748855', 27); + T('11210022002100211112121001', '1352518851547', 3); + T('5cdb', '28265', 17); + T('wgq0sm8v88qipu4jl55wdmfs3', '185048329912249256046507375601716367543', 34); + T('3hhbfa26a6ag0h657jngjne0gm', '119674172072479416223149913309701526', 24); + T('966fak005ekj9e91ke3ilf7h6', '1534617368221003391050212773784944', 22); + T('1d4ih6d3hgaib', '11991106508998187', 21); + T('40gvpk43a0i7x94g8oo501ccbpu', '26430135653734764560098269423411491767516', 34); + T('240ba639a2b64033773588e7b763b5135', '97942534619350353663913105286511742775', 15); + T('683808a457ab1b61b6d60339831515', '11391383242216318199571205789803407', 14); + T('9gg6j4k35je53jaj150', '6181958445081757496538513', 21); + T('321313001000320223101101313301230313301132212222023131032222013000300000331221311103', '338247732186199822617132923037597361245860046216531', 4); + T('12013123311342314233134100', '421194664960052400', 5); + T('12030220120032122033320002313313221213332313221231133300', '2011157666555401095987816028362736', 4); + T('8a3l4gafc0m2a513hciechb1m1ieh782ijcb', '17095480346983415895985102058484502145825487853547', 24); + T('198c811986971ccf4c7ae1d257bd14617', '543363838528230108444050115794098538007', 16); + T('38o49', '2667729', 30); + T('1da10785dba094271a0853133', '6364020275909582230507693161', 14); + T('25625405646456255440253434530105642535166540551600530343', '85992026238312929162701996737786316819479861911', 7); + T('3bgf2ef5afaa7', '127353903362695543', 24); + T('68dex1o32tn0l6t33k', '677341342496752070722244590', 34); + T('c326c455446c1846b028650b142a90', '2467988856215900113554830957527735', 13); + T('27153a0209195a12442144002943717a72417001a1684', '17551046277853328651208735650016780160738798650', 11); + T('1553004033284', '1553004033284', 10); + T('20', '6', 3); + T('10020022210212022100200110222220122202022001200211121202011221102021101022211', '1967321487242019672711309698612514787', 3); + T('daf3b6d57572ab962da81ba7100ea1c01geb5', '2697762624776499737414767670932022089986035272', 17); + T('2a95800', '13635934', 13); + T('1077854802720401556208188660715424', '33911117740835848829495038574110', 9); + T('7335121015337612327750625531460025777262', '1234844453153886969183275916721651378', 8); + T('253272123047374812418881680107', '12229562920471835831260364707', 9); + T('28246143458208570507420470627448606245', '592047740537531029039695756680392592', 9); + T('88g3531ghe47l3bhg8fe', '6385854850376914436410648932', 26); + T('cg91b18d8ffe17fdda67c94gaf1dcbbe84g', '8877530717131611365758781215750878707501327', 17); + T('11423126362025406', '40931493129918', 7); + T('fnnab926fl7h311dh89ael4', '90707709949122827343223226337404', 25); + T('22041030131244423101', '46420979686026', 5); + T('12lg639iclme7a8jjkfb5m3038hm7c6m2m31andm', '754799287626894199405656579173085804877204040517935374', 24); + T('3l2b3qi100mukf', '89853492206992969252', 31); + T('1fh4g40f1530810bbeh343d2gbfe4h3ag1', '500820818178766703373445527247524807984049', 18); + T('9293939', '9293939', 10); + T('1llcfack6ghai5db9mdcci', '77118891790688562859651405532', 23); + T('11432112034140244342124413210203012021241020023114341233', '385139582158041869703117414736354058943', 5); + T('8308a74a959243410a89116259a', '9867615035253851484907098008', 11); + T('4g99', '44298', 21); + T('2jcht42joa2bkcp8a63agkc', '830760916763039680706280898515012', 30); + T('4ln1cj15bihk299i28fgj27hlmm489md', '30066001737656440754502736608642901647230557', 24); + T('3oea68q9bpjs3eknag8', '8056944497162955537298825205', 33); + T('63eh66a67665gad92fa3eg756eh66gc4', '5090244877148186916553478619985250564812', 18); + T('11111001001000111101010101111010100110110100011001001110111101011011100101010101001111001011', '4819067998434611218882057163', 2); + T('32332430464240256001146045200236310562160661444160', '862436561440195610645043053487346040135069', 7); + T('3033310222001233103003', '14281471358147', 4); + T('1talc3of6pgvtfnki60c319qhip45', '2671445363930637285453293589205968592921733', 32); + T('14b88h2a64h9eb7b180h55d2cc0958cfe', '18546971486428099560785204564726497876220', 18); + T('8bb780bee008d95bb46c61a3', '9858567156569511176401293753', 15); + T('1517cc674d47eaa', '218748902058933633', 17); + T('3h59993b1e5', '14144442895085', 18); + T('2iatvo7gf', '2829242342927', 32); + T('11d21cdf4g8hgbc86h', '14191954690468981059337', 20); + T('12vpsc2rqq', '38476342980442', 32); + T('115bgd5b5f988dag', '7239369780823995736', 18); + T('409n59ne8533o12rh9d7cl', '9856837668406974868410246784661', 28); + T('35076930aa392955480a62237a1a6014710a', '9724207798767279949903395457416695518', 11); + T('425500504', '7550680', 6); + T('kkf221beom61jh2gobcj2k00c9be4', '86524752967035174099147414982995233177380', 26); + T('1', '1', 15); + T('1vuhc0b', '2994074691', 34); + T('53235442050545103344550', '733647565874904402', 6); + T('2j47eqcorpexvwt8k84flrvjj74pa359ja06', '1024286329198622500448450238532515199584215260718394422', 34); + T('1hi4mlgwh5', '71093615250905', 33); + T('4dh68l874m1b2g0k7g8cc1jj23o2l0elmefa', '151263649369190377647518450909854496784718245462152', 26); + T('1240', '469', 7); + T('7kbh51nf8nd4b', '466030895657789486', 25); + T('1000', '8', 2); + T('12wxdup8db', '109782501177503', 36); + T('digcef32fc533448e8aif8db8k3de8a', '64480886700586659856294991683281947655160', 21); + T('4o2', '5150', 33); + T('6008876027824378607323267735681760411', '135448018472400810939023044683257641', 9); + T('3hf', '4285', 35); + T('1d5jockj5o28f3', '2278802922177380378', 25); + T('1eh7b4bnak4elc', '3880602947847388294', 26); + T('4m48kr7afep', '7153362074610172', 33); + T('11fe', '6440', 18); + T('4bd2646ba67c1c8601d579', '5684511546512382995795239', 14); + T('jbb3o', '22939908', 33); + T('441432102412423022113230434443230222200444340410212211422241103', '105764167603788002379416021764167189320118278', 5); + T('693ua2pac7t5', '823025751705624713', 36); + T('1d15a1', '1422151', 15); + T('1858534', '1042906', 9); + T('79342dd90631361gcc54c053875ebb2b3e984aeg1e30', '611944223012432862605426228702591634892516011343824314', 17); + T('ohs99', '41140557', 36); + T('blmkda2', '2276931122', 24); + T('102420314023322220', '850994354685', 5); + T('23', '33', 15); + T('3eaa4c7cfgd88b77', '11049592928959128173', 17); + T('7s2r7enh4klqsg', '432126166790924355568', 33); + T('af4', '5639', 23); + T('f01b522dmn9e7kp0b5g4bheln7mnefbc6jl96', '13037461943521682948211857727883424231962156108335356', 26); + T('kqlwbq282j8u9q9ffxgp468ist7ap3rt', '6216832805199435867202542241926072963789701207623', 34); + T('d96fkii7i20d255i9g6k534', '1649490761867743340632538678272', 21); + T('fcg8ue48', '655411007435', 33); + T('24289nd', '414836341', 24); + T('22122002213302203113021210110221302123', '49145148846184613452955', 4); + T('6vph0up640u4', '251974013283337156', 32); + T('f8cikf0681l0hf8e9g5di6g', '5254646220406358219380292021220', 22); + T('kwao6um7be5rs1h', '86611757767034532188852', 35); + T('e1bl972i5k2l', '78122648549972001', 27); + T('9747', '12877', 11); + T('1lksrr7u', '85911461456', 34); + T('1223322120330131002223033013', '30374623384875975', 4); + T('443214453', '7996065', 6); + T('43c', '2587', 25); + T('2fes8aol48bh81ohpabrasajhmscge2', '518146223108772795960839685944410913480618822', 30); + T('20203024323143413012343010', '621374920377074755', 5); + T('1', '1', 12); + T('aa0lg6h9l', '573814360943', 22); + T('bd70012bbdb53b5d2', '573663294778570368519', 17); + T('239ed10cbbhee855g9', '4802380765995946947237', 18); + T('22uis68', '3221309812', 34); + T('ak7mfor2d869gpkhl505f4e5g0ogeat', '5865849748702540844254563979641472462990066379', 31); + T('5724a97a2c28c9239b4c82c24b86892', '14547506169643477096795713397236176', 13); + T('4328b574c61866', '1286203061783399', 13); + T('104431344433103242341404300000304013211223033122340424034413420031101', '405686721914999412775855564051467307713591564526', 5); + T('2c4sg1lkami', '1017993753533358', 29); + T('1960489310a11299202664431547939a38a48745556a085a1125', '241227213092126499005003956230016230527788026414070835', 11); + T('24s7i5i30os0d914bg1f84d885qe7hh', '161698974156390625196048193402829173858804514', 29); + T('b3908e88kfe9c73hj6g646eh', '83789782476702429147335816721501', 22); + T('240k0f8emlca9mbhl7f1im4gh9e', '4799009126114249598188047801242057739', 25); + T('2l2hdimhe9ghhrlp004ilucb72lo', '49535259940385235819597981796368276475008', 31); + T('0', '0', 31); + T('1bdi1h0be', '58823658866', 21); + T('212122120101112200020020222112010102111210100110121102100101100221220222122120111211100002120022202', '150482228156175231923706170828095340312341047317', 3); + T('94839aa9789403917659313531965350768976a1910078477', '915133389834165806424172578480631193246796372988381', 11); + T('2c6c7bbc371b70c910847334aa68044002', '17063007174308160689263160442437073677', 13); + T('lhvd4rd7wrsutd4trqqkto1n', '1816128740873245045862646604444664981', 33); + T('517lkfo86mjk1n7n2', '117639937337022657004952', 25); + T('44440410224320021021102404200343344202100', '45414259359901534405710537775', 5); + T('1377', '5906', 17); + T('432515211531405012421143504541653342665233161034344', '8065571726594635162433197674859531479206439', 7); + T('81em8f45tl24dc6hd0y', '82918246775638900170726875698', 36); + T('1cnwccs22o75v29bqdwio4n', '3539668494095448715446596413354433', 33); + T('54gl2dtvn42594hv23mq0', '12048842304748264619401149083853', 33); + T('1nddnha9cdm1dn3k7881fefn', '110139605060745517578151640980223', 24); + T('1a57a67650755493', '28851425417366895', 12); + T('699813005753897145482303531413094', '699813005753897145482303531413094', 10); + T('ag69c388dj8i408ha8c7cgj7j0c5', '1451725933112051761879128259646072245', 20); + T('13222222210031111130232321233012312', '565698333742480159158', 4); + T('101110001000011100101111000001100011100000100010101011101011110', '6648324064296392542', 2); + T('65ef9iie9cdh76bab6hiahbciaf251g4f2bdea20g5', '169249660939047170839859107567643191800346320651365749', 19); + T('38f1l', '1114605', 24); + T('7dfga9g84e281b', '77453725087312278', 17); + T('2002430262261656351626655', '384633596358941967644', 7); + T('ca5b8a672pf5ippj', '106581144305861002491231', 29); + T('206114a28e5g9aa12bce3gg', '2373768079789299543687455581', 17); + T('hbga737h34ga1daa', '267564050311526319341', 19); + T('c04129c1c5b256985547a2d5b4', '3034717347366835137853819740169', 15); + T('2038b8395145018b1859143', '6493696699375975441988366', 13); + T('g1lj7d5645g04f425gcjc48h08licbefg36', '320008217406229552036847710020507416486827465931', 23); + T('0', '0', 13); + T('3ac7aa3d08329a2154488194b8a4', '33324072746206645734229083957496', 14); + T('4e4b59ed1eh29bacge4fe', '494027070921698549161073914', 20); + T('4w1yb8rmjxi6pyb73n9mllie3m', '3952815466325008300997301039270247882978', 36); + T('36e657d3mn946713ah31', '548520023861409567040008841', 24); + T('16a7ch7e0a912ldfe', '7852157934742461265249', 23); + T('31301312021120333121103330013313023110303031011300311233032200020', '1172174447792103378391730954993204520968', 4); + T('asb258hmcq158giujfa45rmp1oc2c7h', '6009860777245419450358424932959970683463301731', 31); + T('c72aa5983434a402bd4495bda1a2b0b09c43', '162885167490333694639671517686243008655363', 14); + T('191eg78dadib3g89j7jijeddj53e76ghf0jd', '4997116531571833235829685607931752303798040393', 20); + T('30', '24', 8); + T('16on5ubnnlffa686qdtlv84lis', '476230604866451011428299429332274193508', 35); + T('ft9cwj7p33d7', '1113269202350042901', 34); + T('222925790439a6b0311', '58195492412230313149', 12); + T('17', '20', 13); + T('8', '8', 23); + T('10dbaki28p1n', '36498654162609207', 32); + T('100000001011010111010101110111110011000100', '2211226025156', 2); + T('bdh73e61326i8efc123dajd4gh', '13247082642257436461441956203094688', 21); + T('dic', '14763', 33); + T('475ljmi', '638863244', 23); + T('pmwlato5p5kr38kv5ivw2db2', '2166192468219479078300821352145682277', 33); + T('58888742714214050', '11118073401333810', 9); + T('0', '0', 10); + T('4c2593', '1833263', 13); + T('2blc074gcf338l8jlk2c3j67k5ecc1laa19', '11168027403783839957537190770067466250018138023', 22); + T('306', '873', 17); + T('659aalndqj5fq7ak3i21ar8ms261diqc', '13352886232933446314462823844898280803350736370', 29); + T('5lb81ea5k97h88k55k84b5em3', '20812208971366572877903871625478053', 25); + T('28061a7b781b7', '60998561699095', 13); + T('6el', '4441', 26); + T('12104124041124403124230300122242310313212010422204440432', '401595807449332275707879384828100468242', 5); + T('210643566004062304052414653362624656513146316044622', '3888722318739881008495486311537716495435048', 7); + T('7656785', '7656785', 10); + T('3gc5b628c', '291221927885', 23); + T('5d8dl8f9oi7jao90jc3ok85p0d178d6h0e78p', '4790696230811013371387757230147247746151708935785013', 26); + T('45a355325a01', '3334702939489', 12); + T('el2332dj142d8g5e209ic7l1g044', '274326948468708524021808420509292687460', 24); + T('2bb4acc4577310d1dc56ddc5', '652844989883241073588460089', 14); + T('3434042fa72b6bd086b5f583063b090b', '69389940122557978795038540059404601611', 16); + T('10', '12', 12); + T('59lfgd01ajhfgcl50pa7m777oci1fpold8oka', '18134178311410518122324250615259547644252541479219723', 27); + T('22863533366602308470', '3147168928563013941', 9); + T('11101321001230312030213211322212211323102102121300201321020230123221032313033012020', '30864269282351344438300145758376863318773480616328', 4); + T('ka5jkl9jmgi1l20ib7', '2883890885775240798488435', 23); + T('16a', '257', 13); + T('22290a2215173a54a2866671510381', '3498085275681756354531507766449', 11); + T('4ateqc7a602u7gk5nc', '468363582187112718878299310', 34); + T('2jwrhlp1l2vqwimc', '242669198145793186437824', 34); + T('5180a950fe82c6376276a586c25b5c5c5b4bb8a21e0e', '30493736786942864405814520647491453938628818133720590', 16); + T('7gc9dhde97qh7jrkk9m8k', '1339208418660774078243962406520', 29); + T('2', '2', 35); + T('2hqggl57gf4car', '296547907725312545952', 35); + T('1obhfn', '44052773', 30); + T('220b1g837h468i0k8jacj0e99aiacggab3gah6i', '367971859156278151681088478078597463542565116078876', 21); + T('3slhbeqb4fs', '2336752270561078', 30); + T('9fba9dfiic', '5006751007572', 20); + T('b', '11', 12); + T('2110202112212000201220021021210110220212212212112010001001010121202000211210122220021011022122100020', '424779974687314802132686329219551262844631379471', 3); + T('31203310131012230200332011301222023130222203021231301133221212022012002311220', '19353023903212453342031170287295730056309517672', 4); + T('12001011211102022121100010111200221002020222001222102222110', '7918767309016358932950862671', 3); + T('1kn191giko39rmnanmami0d1okcpop', '1618267741799710951160698245596470368688201', 28); + T('g274590g3d339433f5409g57aa', '93153789439900839502721798769381', 17); + T('114355421113441052252531344454145320425502543355542230230341301', '2280710056712985171545633285649256127813531828005', 6); + T('1qljg9b4onpip210ejgjhqnefbi4o5qgqf171h', '181934681040486653100111314188490441438192036830569569', 27); + T('1f3ln0rfhp32cpc2k2beaal9n', '83073842895898744962751209714293987', 28); + T('3044620105315260006022454051154200600403020322442401', '38975248796668312873816449082327954581130266', 7); + T('qarcu5jd9g', '926730400937264', 32); + T('iadt27f', '39809934699', 36); + T('as5j6jwsn2wuwu6dqvfwj9n2h1fso', '35806720670061293860275908093366493122960685', 33); + T('132d1db', '13814306', 15); + T('411012421314204032222021003244034241431110203114102110230332323023140', '1437423683089410133923877953778402432419614657920', 5); + T('102011112011201122022120122011110120022212111021022121002011012101002120201211000012102001', '3610012680809677846077512759850762511638841', 3); + T('sko63peesntu0s4c1', '20855468818550929727982949', 31); + T('h101l8itb07n6mnp5g7kggk8', '340873021541152980574045898573575730', 31); + T('gigfd6gchl594h48', '4483240787334541323255', 23); + T('2', '2', 26); + T('112202120112212021201212101012112122', '82063252134576179', 3); + T('56tlfci3sa3hqhpffc0q', '206645898643826543326651723802', 32); + T('2121101511515344340504024322521', '492478309307736431418289', 6); + T('233422333052445505304550245302554', '20722197983174609053233382', 6); + T('o0o6891a38fja50', '4375044340632128174956', 28); + T('120', '15', 3); + T('21df8f125ccc4e84669f376gb7ge01', '1015491273332046568254634184570102293', 17); + T('35', '23', 6); + T('76106836474581565261076641176', '4019346106874600080591778073', 9); + T('3242036325015165633012605001064', '76034468686471006247354977', 7); + T('13853', '19660', 11); + T('352228197670828676ba38543645b14c8cb97381390186', '455621468378412697751523794288599424284167924062650', 13); + T('310021201233200323033001011', '14678599968550981', 4); + T('37695a9a311a90591393119a455327061a70971a303844', '269193409032346768263122865173174114039542613433', 11); + T('646633456716673131010714325300106141144242503123341513', '4827567010183340607788016828465978158946284585803', 8); + T('22b4ii1ja8al3k7k', '289377107308771432278', 22); + T('ih9d74iag888edgh9353249gjee8de', '4161419813368104831931925475084453352109', 21); + T('162h6a56', '1183359545', 19); + T('2aec2jgh06a44k1e618ufe6f', '46782205842419322443177514531945486', 31); + T('10i0', '7201', 19); + T('6e1b6e52c50', '7566505880656', 16); + T('1303233011232220000220310210110013123101110100121332', '9169532676641029580010283927166', 4); + T('2021221000010221012012111012002211011020001111221121012221010112201220', '1913712624254749235264041459373475', 3); + T('12cb0870cg1d44ceaj86117c6je3bd', '60740372923005851819292324387350353433', 20); + T('fqh3nncclo676i9r13', '63746881387506157315801231', 28); + T('2081ba3de80c6bc3d9a207a9e6e5bdge7', '4802181797263059228848555176663651746850', 17); + T('3ns0n2ko3or9r6mj771nfjtq2fn0k5n3b6lp', '523414838800055605983731383323409728575668144200587581', 33); + T('91mtn4gb7wnu7cfccs83s1itjh13avveqgs', '38564386619239951649280680768419728687062773517031904', 33); + T('2507b59222357', '21588297587059', 12); + T('1106210331', '46860486', 7); + T('1sm2mcchi19gi0cbhlkqdg', '10223546271608775170591367519586', 29); + T('a69782f103d9079c642dab9f5f67ae95g', '24592196044693731193607035015722190314492', 17); + T('dheh2fkd58g6d717k', '19803533608478567457194', 21); + T('977a3cf2b2f06c31b3d', '44708264591227581831997', 16); + T('bd', '332', 29); + T('8f9d8f622523e29d1a5he3gee466b7', '22413217136939225587842352555546632085', 18); + T('34647345400115736740552300416234100512013623645', '1255594995624059221065714883120130755078053', 8); + T('7oil9emi1ohrf04kd6kaedpi7rmd', '23966690311520969626701508915977431159381', 29); + T('95061gh908e', '33129740894198', 18); + T('110323', '110323', 10); + T('111000010011100011011111000001110100100', '483660891044', 2); + T('1122330122230000320332100231301', '1638301738278128497', 4); + T('3031312222103303', '3453658355', 4); + T('b9050a53cb2c53da260601ac128b1473b5', '773309649386529398888490649351437452755', 14); + T('46f36cjc8ig0l46k', '21581257987125141435836', 28); + T('21112102102121201212112112010221211020210222102201', '600976178399514404402164', 3); + T('55031522323232530221104331123', '35916460467127317955419', 6); + T('210111220001111021222122101100100112110120020211111112000111121201101102200211101100012', '257582427859456290317258827836081071349119', 3); + T('cai', '6046', 22); + T('238d459b304a504cc07bde524ffcae', '184595724574603234807440528928406702', 16); + T('2951804f7cc040bcabed937dfc07518ebf0c31156972', '15459035341493840021436449671050677487751991559285106', 16); + T('151441535252450114333525025131221241533434151002030110022341253', '3312988709769295474234430270673909304036864754721', 6); + T('12pf7eg0pst560r56145b38oobrssdgp7p', '17896886417737298981574606954732052710804772615521', 31); + T('102120201012022112102002220002111020022000011', '1267278558139797333142', 3); + T('20723mjbpikg211', '219900549758957593129', 27); + T('1ba7469629c55971709096531a043', '29589979360351359186903406966085', 13); + T('43cd87pke82', '583569798239066', 26); + T('2f3b', '32349', 23); + T('1damenblocm6ab16mkhflkln51l80g0gl3', '20836281970872115708071405659370250984625401153', 25); + T('6460334362676710', '232026545028552', 8); + T('eh5eu5yo4r85a4frk38fd1upg', '325027824752333280420002134397968014004', 36); + T('1312782233174508777', '1312782233174508777', 10); + T('13341105311220530305055542233251', '2125986301582477786880095', 6); + T('28urr93jo6qpp', '7615780104185501875', 35); + T('f3kc6d1oa2', '57803286359002', 25); + T('196d506730f12e3862g428100f99b6351d9683230', '25650422510765543578389928836906473834731647075211', 17); + T('6in', '3911', 24); + T('c662fh1059662042ac1bfa666892d54g4c19', '1062397772598878889201653207165639773092410283', 18); + T('1100110100110100011011000', '26896600', 2); + T('1reie79ejmki9eqggo2e8mom', '8410869246547671114783597667970876', 29); + T('a26h7h373038ek', '25026850135788158392', 26); + T('2003411221003313233000121410241302', '236418010553527903993327', 5); + T('50', '65', 13); + T('jdw2giryepgsnq', '2294207897977458246131', 35); + T('76510257774b970163b3c8c8a', '4066438635725967850597253288', 13); + T('881261b58a1a705b4412aa7', '4789169271296447376594079', 12); + T('8172b1296abb', '32834523435949', 14); + T('m7kj0jj6rfhi3q', '144843484516465224782', 28); + T('16gb3e90d946cg4ba661f59d2ag3eb817ef0', '16410164287267896045565877674991970376204845', 17); + T('30441908a9', '7159171908', 11); + T('1110110001001101110110101111110100001000011011100111000000100111110010011011000010011001111011101010010010111111101000001011011', '157051027737987715731727950696316653659', 2); + T('j7dfe8bgehjc2824', '635190155180670739244', 20); + T('17586g4dc5508hbe66', '3072863740457400701010', 18); + T('mfdhdib7gopble944bpae1cp7ka', '139110764181166732714408251267873085654', 26); + T('4bk1', '54948', 23); + T('4ldem65kinihnm8ca0d920pp4l13cnkh', '1130287125754563991765159720269473592208232147', 27); + T('d', '13', 32); + T('22021020021202211022121010121222010211120', '33506058087887919765', 3); + T('206f4gc65g7egi54j3974j3', '247259714587053476909557142490', 21); + T('4340502440403450033340223225211113442201423010504331313333', '1044228835950034098828612572961883231947980025', 6); + T('2pfsk9mg1br1i1h075eo63s662hr6gf', '214533693113801145357049577189458281793615667', 29); + T('habul6f3kihm3iw1r4', '1130144535004513737852095539', 33); + T('106142331346752221011206', '647409104513791169158', 8); + T('26kb58ddmhgb9tla', '131895300538724358011221', 33); + T('362mijf4bm4mf45jgl0mg37ae6b2h7dfhklhgj', '790707811699113166404310250374840626288935161894479', 23); + T('24aa9ha47hnegimefm9pdj52qko', '35513399551075834816632034861432466181', 27); + T('1a9m96mie3djkfg667h9eje4c0lm50icmc3ikc3', '8093079648301893331997032028152019456512853100012045', 23); + T('cjbdn0gtpput38l6uojrop6umhqebl1dm1p', '6419814410380460676020581102194375113413420245954298', 31); + T('1ueohaa067uco1pdgqrvmhu0vaa8leo', '2785874481951992854286001892766607754475623896', 32); + T('10101101101110101011101100011100010010011011011011000110111000010000001001110111010100111', '420051957077295313153486503', 2); + T('85hcg94l7j', '14860540241390', 23); + T('4a2976868d892ba0b7bd344d', '1085472931427423803725237293', 14); + T('7kkh3nb7lo', '59243621828973', 27); + T('1', '1', 26); + T('1ibd5pfbokd6440j', '2866994109825495814339', 26); + T('86ng8fec', '349615744710', 33); + T('1143620362656535460140621434022160305663163240152242650105202', '627843320628203251128147470398864437340326997590198', 7); + T('11262714046100646006', '168424020893715462', 8); + T('15c8h01dg8f65ed11cdh7c83ig045e9724641af1fc7', '661948366072223304375223910664218120820427365067153516', 19); + T('80a3b23b04454916925a67938b576c75b198719c3a44', '6396600297150246995243740339198009449377618885444', 13); + T('1h8g5ebb0', '21730642290', 18); + T('15121883734821931848157630403646710115517496961539', '15121883734821931848157630403646710115517496961539', 10); + T('157qf44ko15e72hl', '3533762244672772908501', 27); + T('9fe9i2fce0b23165bj', '128270183554062217810239', 20); + T('204d4d06851de5e6c3b5c782368be873d2c2c6772', '223548940289723451071978777163310740220641882557', 15); + T('hk05hcaki071ibakf80d42la0h51le5a19', '15457671916002610271027881255899341664819386332', 23); + T('12758858347410587602318353440470122424758747174736144', '54973361258053823259500795020716385085006902031623', 9); + T('1j0dq', '1489979', 31); + T('24aa49b2669b4253417185039422b', '3970774336620668082561214323011', 12); + T('1j3k0h752f1i35178l4a8892l49hl8g72le7', '3649735432337234577942518835984846875540064046231', 24); + T('u946d', '31756493', 32); + T('11d', '319', 17); + T('a', '10', 20); + T('85857450422153021232718260', '6218664865094656817286525', 9); + T('b3bi9egmaa489d8j912m1j7f', '1582915351549542449793908963699565', 25); + T('8c94c1101a3', '2575764487747', 14); + T('21333351424', '137058856', 6); + T('24ouud1zekrdeh0jduf8dlol67v2rf', '2892087283574736646554249773057595661742288571', 36); + T('6tcd6nql2v4g2eiigj17qoti', '287377925910774326349880592997114802', 32); + T('1ibdb8g6j16hfd23ec0ic3if6e89h483a07c', '6628668718711417889748955044148576508442160152', 20); + T('200221012011220100010', '7335045156', 3); + T('19l7ie1', '425580221', 26); + T('5bjl8kdk9qeo3njnlq745io7offama41ho', '933615638563870486919671786607965571836873833306', 27); + T('10232113020220300130312200101010', '5446860259502720068', 4); + T('2b0a983ec857ac84ef5f', '203257196630153042915167', 16); + T('44eo3qm2rj1egr54tcsdw', '31399246023982509778025476029912', 35); + T('5hl2j3n9lqrf4ht', '15223157365873501989655', 34); + T('1j61dcjc28ng223fdle5pd53a562b', '20497069428386502186259631448700342382939', 27); + T('92m0p9wswvxpbygoscf0iyvma0gw33re', '6667479639141447629959640648792959413993639675134', 35); + T('44ebf64ca6d7048632dc366985bacf6ca72f55bb89cb3', '412586872136786946015831424411703662517991501351918771', 16); + T('2231322212032013010310223312202202203233202032131202213103310320', '231173459396011136566504537253511773496', 4); + T('102222033224112043100201233424410310321401141431030120233342110002', '2981250760563381516328738717816795815564019377', 5); + T('bna8v0dm7nj6ukvl14guf5jd86sdur8fqs9b', '561697417712642337267267807468369856115722296542196011', 32); + T('246765a34371a64810230863090826259630999766341a98', '21334345633150250304537292228376342238910313741910', 11); + T('dd6', '3126', 15); + T('rj1kox5jiucmuo9sln77v', '209599559372534093290729866417476', 35); + T('8pamgcke1q3dcfa43rji8gdg5r5bno', '8266027891125368114649885016554443139962892', 28); + T('15877a7a507508a5380306', '67933623548690544541110', 12); + T('310576032000120564437670443150', '485374511652821184626706024', 8); + T('2k304b20fii7', '1036543616885140', 21); + T('rvv6dkvip7h2', '1413563599986560420', 33); + T('7s2rncsirvsn0zf', '47775999829788212268219', 36); + T('5', '5', 8, 29); + T('2010', '57', 3); + T('3', '3', 35); + T('1', '1', 20); + T('b', '11', 29); + T('a', '10', 13); + T('7996x17', '11234850765', 34); + T('31020102013113030130222221321300302', '968780395378242985010', 4); + T('193629493c71666081307a037a449b05b732ad8a97dc96', '6251429966945048736162286407414968313191335468772060', 14); + T('102', '27', 5); + T('36471522780078332870256412616321566881211129236', '36471522780078332870256412616321566881211129236.0', 10); + T('2u', '100', 35); + + /* + * Base conversion of numbers with fraction digits. + */ + + BigNumber.config({DECIMAL_PLACES : 40}); + + T('111010110111100110100010101.1110000001100101001000101100010001111011', '123456789.87654321', 2); + T('22121022020212200.21220000000000000000102121210212220222', '123456789.87654321', 3); + T('13112330310111.3200121102023010132301212212301102120322', '123456789.87654321', 4); + T('223101104124.4142404432120310240400022100414412423341', '123456789.87654321', 5); + T('20130035113.5132000000001340141333022243243025133004', '123456789.87654321', 6); + T('3026236221.6064403011334606121545601461612144044112', '123456789.87654321', 7); + T('726746425.7006244261075431515424461645053746213677', '123456789.87654321', 8); + T('277266780.7800000000377725827886511007881184436767', '123456789.87654321', 9); + T('123456789.87654321', '123456789.87654321', 10); + T('63762a05.97075184709912960846746215397a86192585a2', '123456789.87654321', 11); + T('35418a99.a628000007789055192b3628390573a7a2093441', '123456789.87654321', 12); + T('1c767471.b519c4868b1097b4ab6aa9a1723b0b21a6834568', '123456789.87654321', 13); + T('12579781.c3b33d92601697558b8c4217cc4256dc8d8251c2', '123456789.87654321', 14); + T('ac89bc9.d23500004b2d0ee1c3a587694b2d0ee1c3a58769', '123456789.87654321', 15); + T('75bcd15.e06522c47b19a6c5263a515f9917be8d99dc09ac', '123456789.87654321', 16); + T('51g2a21.ef57d03a8cgd3agbgc44442b7d2c05fc56078b69', '123456789.87654321', 17); + T('3b60f89.fe00000168e6c74b51df90hacd964c0b952hf19h', '123456789.87654321', 18); + T('2bg64ae.gc83iea83dahi6920iec351gdb575cb1i205e999', '123456789.87654321', 19); + T('1ibc1j9.hac6i58g', '123456789.87654321', 20); + T('194gh7f.i8be0004e152hj60858if8541gfd51d14c1cjh46', '123456789.87654321', 21); + T('11l0805.j659b300hckla2kfh6791k6e489lja79665cd85d', '123456789.87654321', 22); + T('j43jfb.k3fkgh7iaikallm5ld5l47c0lh1b394iiha9mjj5', '123456789.87654321', 23); + T('fc2egl.l0l8000de3dkkk84l18cfhfj5k6ng87104gm68de', '123456789.87654321', 24); + T('cg15le.lmkoh735e402b0lo7mil4jfi1gcend9bka68h736', '123456789.87654321', 25); + T('aa44a1.mke35bnk8b6ae897kbonpl0638c53p7k0ibnicnf', '123456789.87654321', 26); + T('8g86ni.ni000017nbhknqjj30nq3hdckfjimd6cg8362di', '123456789.87654321', 27); + T('74nqb1.of5of5q5no17dm376akr5mnoq4fk7he0jd67r8gq', '123456789.87654321', 28); + T('60fshj.pc50ab4snn27loqe7k2s613d49gjaqrd4946b13h', '123456789.87654321', 29); + T('52ce69.q8qk002l', '123456789.87654321', 30); + T('49l302.r5b31sdanlg0n9b2jbo82q36ktamkp3n44t0m3n8', '123456789.87654321', 31); + T('3lnj8l.s1ii5h3r36jca9hqa5fpi5tuhmcto2dbklfsmr55', '123456789.87654321', 32); + T('353c3r.suib0058kqr7q9iohe4pas21t9v8rffjah1e8oes', '123456789.87654321', 33); + T('2od2i1.tr9m8dl5x4jwgbkmsvo3lb5k6sd50xl474rb0n5w', '123456789.87654321', 34); + T('2c9g1t.unqrmvqxffpa8v182bc5uqn3o6y1hm9yb2kw4hvu', '123456789.87654321', 35); + T('21i3v9.vk00009oa9l2ergih9i3ifctpatt1sllqhw4o9hj', '123456789.87654321', 36); + + T('-0.000000000000000000000010000100100011111', '-0.000000123456789', 2); + T('-0.00000000000000120221110121121000110122', '-0.000000123456789', 3); + T('-0.0000000000020102033202303032333033113213', '-0.000000123456789', 4); + T('-0.0000000001100323001142032114244204230204', '-0.000000123456789', 5); + T('-0.00000000112442331005030241312503143243', '-0.000000123456789', 6); + T('-0.000000004660541461650644523626454412226', '-0.000000123456789', 7); + T('-0.0000000204437054635763657165267673054542', '-0.000000123456789', 8); + T('-0.0000000527417530418033652056622672708124', '-0.000000123456789', 9); + T('-0.000000123456789', '-0.000000123456789', 10); + T('-0.000000245117320941291484571aaa0235019322', '-0.000000123456789', 11); + T('-0.00000045101516b79ab1643486a1288795277265', '-0.000000123456789', 12); + T('-0.000000799274a18803c248320ac075c404ba5975', '-0.000000123456789', 13); + T('-0.000000d02a645405ac4b02291d9cbb648b47158c', '-0.000000123456789', 14); + T('-0.0000016161613d9213b1295d5d28b0123018bd3d', '-0.000000123456789', 15); + T('-0.000002123e2ccefcf5e755beec5961bda3d5a3b9', '-0.000000123456789', 16); + T('-0.000002gb3824a5dgc3c94740391g0b68g0b0d3a6', '-0.000000123456789', 17); + T('-0.0000043a8e79ddh532d9ah5e95b67f4fde164c7f', '-0.000000123456789', 18); + T('-0.000005f6die5i258a658924f283g9hda0546dbbd', '-0.000000123456789', 19); + T('-0.000007i09ha7ehc', '-0.000000123456789', 20); + T('-0.00000ac7a5b9ki452k9b6hc6g5de80gijbgdfhk6', '-0.000000123456789', 21); + T('-0.00000dlkhch59368552ebd4aefei934f6f9gg6ah', '-0.000000123456789', 22); + T('-0.00000i680c15bl2f7jf4eem12mh044d0kf6bbhdf', '-0.000000123456789', 23); + T('-0.00000ne5d1jjel1l33b9mea8f6hc5e688d15bb27', '-0.000000123456789', 24); + T('-0.0000153d06m3b9em4d244h8obma81364m9lf0h6d', '-0.000000123456789', 25); + T('-0.00001c3f328n1m7gim7p3bggi0jca71ij39p0p52', '-0.000000123456789', 26); + T('-0.00001kmaml1ao3b565k28789obc8mnh07mp5jlkq', '-0.000000123456789', 27); + T('-0.000023dm65kb1mq249apf333lel8j10r4bb7apmp', '-0.000000123456789', 28); + T('-0.00002fchnj3o82292e8l6bdfb8oo4jn8cnii16rg', '-0.000000123456789', 29); + T('-0.00002ttttta2se3', '-0.000000123456789', 30); + T('-0.00003ghj5qf0acg3e8d7gu5nejhkdkuijosts68f', '-0.000000123456789', 31); + T('-0.000044hu5j7fptf7amveomb1nmhtb8tpa44tetc7', '-0.000000123456789', 32); + T('-0.00004rehmrkfsfqvq5pm8qifcooiapip4rww68ii', '-0.000000123456789', 33); + T('-0.00005koccwr5vqq0bsl049v1qwqp9h8tshw38asu', '-0.000000123456789', 34); + T('-0.00006gx4anjwlqb0xla3iwgv0548y4t32r88wwxm', '-0.000000123456789', 35); + T('-0.00007gql6532pjh3akr03dh8iwkobdh4sshi00s9', '-0.000000123456789', 36); + + T('1111100111.11111111101111100111011011001000101101', '999.999', 2); + T('1101000.2222220210221200021112101120001001102122', '999.999', 3); + T('33213.3333233213123020231003211120010012021032', '999.999', 4); + T('12444.4444141414141414141414141414141414141414', '999.999', 5); + T('4343.5554412021453552313300510342441202145355', '999.999', 6); + T('2625.6664412312515410253566644123125154102536', '999.999', 7); + T('1747.7773716662132071260101422335136152375747', '999.999', 8); + T('1330.8882385024534603137817105667427164213206', '999.999', 9); + T('999.999', '999.999', 10); + T('829.aa973a4913443083925788751826a12209617036', '999.999', 11); + T('6b3.bba3320237938b1770119a7a5699606ab3b294a9', '999.999', 12); + T('5bb.ccaa5926381c699320b4278283cb62c494684889', '999.999', 13); + T('515.ddb38266d3049bdac14b5d165539a5b770ad942', '999.999', 14); + T('469.eeb9595959595959595959595959595959595959', '999.999', 15); + T('3e7.ffbe76c8b4395810624dd2f1a9fbe76c8b439581', '999.999', 16); + T('37d.ggc18275989641138dge6d54eg08g529aeb6faa1', '999.999', 17); + T('319.hhc307dh7b6deeha40a6b43307dh7b6deeha40a7', '999.999', 18); + T('2eb.iic2ch24i43efhgd61307b0e199g6fb74a55dcac', '999.999', 19); + T('29j.jjc', '999.999', 20); + T('25c.kkbfaii9d8gg7b6ee594cc372aa15087k2j65i0h', '999.999', 21); + T('219.llb7g822a4ceh5a0fag44k937cak18la89ii6f3', '999.999', 22); + T('1ka.mmaj3f2cgc81fe490kebi8f9m173blcfb08mj6j3', '999.999', 23); + T('1hf.nna4590djiena4590djiena4590djiena4590djj', '999.999', 24); + T('1eo.oo99999999999999999999999999999999999999', '999.999', 25); + T('1cb.pp8b0g5lb0g5lb0g5lb0g5lb0g5lb0g5lb0g5lb1', '999.999', 26); + T('1a0.qq78f2dle09cnjl9h6mblfcj9ij58geni8qkbn0n', '999.999', 27); + T('17j.rr619hjdigg3g9nr2pf067h6qc2j7ar95474jjq6', '999.999', 28); + T('15d.ss4hkojk13n4rnf1dpo9ham09782ifbgg63d28cl', '999.999', 29); + T('139.tt3', '999.999', 30); + T('117.uu16eq9rha657cl1g2ngcbdir7m8tmihjp2dsf4t', '999.999', 31); + T('v7.vuv7di5k75c10oidqboqjuv7di5k75c10oidqbor', '999.999', 32); + T('u9.wvu22k10p1i619fhuaq3d5gsfqkr584weg2bahcu', '999.999', 33); + T('td.xwsnmjjt3i7kw38x68nvs0igtcqmabee4ufqd1up', '999.999', 34); + T('sj.yxr4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4', '999.999', 35); + T('rr.zypcdtnwjl0v3qs82axzf9i56mgpcdtnwjl0v3qs', '999.999', 36); + + T('-11111100001000110000100000101.010000000010101111110001111101011011111', '-528769285.2506705498654986754987694357629487612132293856', 2); + T('-1100211222021002121.0202022012211211020000112211222001122022', '-528769285.2506705498654986754987694357629487612132293856', 3); + T('-133201012010011.100002233301331123320132210223310233313', '-528769285.2506705498654986754987694357629487612132293856', 4); + T('-2040331104120.1111313304243240343040303403011030102242', '-528769285.2506705498654986754987694357629487612132293856', 5); + T('-124245205541.1300511413330341000202421140342015422521', '-528769285.2506705498654986754987694357629487612132293856', 6); + T('-16050315262.151660065566343455213220110101053003165', '-528769285.2506705498654986754987694357629487612132293856', 7); + T('-3741060405.2002576175337036445364576675624305775126', '-528769285.2506705498654986754987694357629487612132293856', 8); + T('-1324867077.2226575420048486156768436757465017711084', '-528769285.2506705498654986754987694357629487612132293856', 9); + T('-528769285.2506705498654986754987694357629487612132', '-528769285.2506705498654986754987694357629487612132293856', 10); + T('-251527210.283708196291157004318811823a797729578835', '-528769285.2506705498654986754987694357629487612132293856', 11); + T('-1291008b1.3011aa3020304260b7471b3b999021bb3a506156', '-528769285.2506705498654986754987694357629487612132293856', 12); + T('-85718b45.334952b34b55677529b07439635a477982384a29', '-528769285.2506705498654986754987694357629487612132293856', 13); + T('-50324269.371ba8d021dbbc4126c65231444dc79c599697d2', '-528769285.2506705498654986754987694357629487612132293856', 14); + T('-3164c5aa.3b602e37331cb4ab53c1d9ea705a303460358648', '-528769285.2506705498654986754987694357629487612132293856', 15); + T('-1f846105.402bf1f5be1e92bd2fdbdca317fa561bb1faaa3c', '-528769285.2506705498654986754987694357629487612132293856', 16); + T('-14f6g98a.447945bd7f0c37e8e036c8fbc7a1d008497609c1', '-528769285.2506705498654986754987694357629487612132293856', 17); + T('-f9f0fh7.493g70g118a7h80g41g45g3gg949bgd4f09b38c', '-528769285.2506705498654986754987694357629487612132293856', 18); + T('-b4a85g7.4e96c1g631eg54cf768317heedhbdda82ahibb33', '-528769285.2506705498654986754987694357629487612132293856', 19); + T('-854g345.50575f3gb2e2b9ieh985jejd269643cd6jej3864', '-528769285.2506705498654986754987694357629487612132293856', 20); + T('-639i76g.55b9dhejadf10886ckb3i4j5k98665g2fha9gg01', '-528769285.2506705498654986754987694357629487612132293856', 21); + T('-4ed50bb.5b731gj7dd9h3glc4l0klc9a045ge23kk7bd6j92', '-528769285.2506705498654986754987694357629487612132293856', 22); + T('-3d3c6jl.5hdkkefmkeehafcj40549634532b5d5h71086igg', '-528769285.2506705498654986754987694357629487612132293856', 23); + T('-2i9i25d.6096b81j2ibkf632ij9im7mn99i4eh131a5e1m2g', '-528769285.2506705498654986754987694357629487612132293856', 24); + T('-243g5la.66gi4ehkjfkfj315f5clhm4245dlc3ej08if7c3l', '-528769285.2506705498654986754987694357629487612132293856', 25); + T('-1id2j25.6dbkb1b61h5bnlbjp2j2427877ij0pg9c1o83n6b', '-528769285.2506705498654986754987694357629487612132293856', 26); + T('-19mq72g.6kjpgb04phiekfpckemff1na38d6ch6h415ooqlj', '-528769285.2506705498654986754987694357629487612132293856', 27); + T('-12k7eh9.70ek4bdb4kl74bh5qkdp80knqo3mrdkk9gg8372j', '-528769285.2506705498654986754987694357629487612132293856', 28); + T('-pmhili.77nhesre540gfoa1jc92cjc1a4m9rsn2pbe50ol2', '-528769285.2506705498654986754987694357629487612132293856', 29); + T('-lmo1cp.7fi34apgmi9bi550j3l1bdrd6kqge8q96omh2p3c', '-528769285.2506705498654986754987694357629487612132293856', 30); + T('-ieh95m.7nrmg0mdld46iuei3r1iqfti50kmeh6qjrjqushs', '-528769285.2506705498654986754987694357629487612132293856', 31); + T('-fo8o85.80lv3tdu3q9bqburrihhfuim3eovlahs5v6issil', '-528769285.2506705498654986754987694357629487612132293856', 32); + T('-dgsptm.88wbffuf1iuge976daspjacn1ukmb6oj3hrd5n1e', '-528769285.2506705498654986754987694357629487612132293856', 33); + T('-blnatr.8hqc2odcp1864oww4beqbp7icwpn958xqlrrjxwp', '-528769285.2506705498654986754987694357629487612132293856', 34); + T('-a2csdu.8r2hha0ljcurhoj7k0mxnog67x20nouvourt0a0h', '-528769285.2506705498654986754987694357629487612132293856', 35); + T('-8qtczp.90va9l3p022q7omcbqhd0lglz0rlmrd2cbt4mg5a', '-528769285.2506705498654986754987694357629487612132293856', 36); + + T('316.6', '696.4', 15); + + BigNumber.config({DECIMAL_PLACES : 18}); + T('50960021014244268687a1886463130.16672a1420499a6247', '88623581339673073949500137313245.1455', 11); + + BigNumber.config({DECIMAL_PLACES : 39}); + T('ma.5i9g6fhdj9d8laa7kel9gjlf93c8f746i7mci28', '516.25221568916508446316309948501759661238267291', 23); + + BigNumber.config({DECIMAL_PLACES : 100}); + T('h9rdl18jd.q051dhn7aspg6k8dmp5l63g18ge2cj8c1n08biondk1ni2ksir9chonjaoqc0fnr8sh3a6o01d470fccm00pjj9kkl8gr886b2ic', '8675779666304.89675881218833', 29); + + BigNumber.config({DECIMAL_PLACES : 16}); + T('1669699d2446c13b6032b4859b851db2c71996094896.03cc46a11973cc47', '28095859731039155813921318494826179694928140368916.02', 14); + + BigNumber.config({DECIMAL_PLACES : 44}); + T('433eejca0g5g2hi3h81hfa8j5b.784a9id7lifghgg1kalc2d99j7jc674bh0a6ka4b6hci', '15065394735668576931388972794395685.335131', 22); + + BigNumber.config({DECIMAL_PLACES : 92}); + T('35076567745235671502.6773342626436061433365155137731076310010275236050103305437451411644055625324564421515511562', '524624822785241922.8738874407101262195488876445', 8); + + BigNumber.config({DECIMAL_PLACES : 23}); + T('11006433654634662212602033613520122341643062434012145010.52425140460600403610425', '34628562545096914224971102777355168736669856771.7679078074649', 7); + + BigNumber.config({DECIMAL_PLACES : 60}); + T('1p66mbi9fn3c1lmpqm9alc3n108lp111949qmoqj.arca8c1fkqqd9nibi2aqg5gm8a86rgfo831godj8q1gcqdjcbh62fih9fbd3', '522521559789778545185676538833457746453383246746454589675.392145039', 28); + + BigNumber.config({DECIMAL_PLACES : 44}); + T('5605470434246053632363152113440650264426323520.33525466364076204553563061761202201336001507', '250925107172835956608925073908081234650960.4323', 8); + + BigNumber.config({DECIMAL_PLACES : 47}); + T('5jljm2eeb7a91jaf55dm6de44.iddl2d32kn3cnlif2ggdemk41h1mibm7gh560403846n52c', '7775100815978012670733930388143588.77357345356039222606783162331270073', 24); + + BigNumber.config({DECIMAL_PLACES : 66}); + T('15jhag4hd9gfb34e9k3h28642al6.g515a6bg2ige2kekcji73f69khefeeg3d0k8gb641g73a3kk75dl3lld08l8047j1b', '2231466155455967642494664913445902444.737720562308164842135964809152', 22); + + BigNumber.config({DECIMAL_PLACES : 59}); + T('922957026721a93.35228440098a1382a5360815162596954a2352084859a278208a1929945', '3495784831845804.315740956312801540001007380273089678135993838516', 11); + + BigNumber.config({DECIMAL_PLACES : 31}); + T('2321136.6635426603020156550074200106655', '631390.850962999306313972719936135603917', 8); + + BigNumber.config({DECIMAL_PLACES : 42}); + T('4122015524443344205255.532130505243523353120213333531354112005131', '92831400808748387.9271017366', 6); + + BigNumber.config({DECIMAL_PLACES : 7}); + T('f.8gkgp2r', '15.28520597106195746386586', 30); + + BigNumber.config({DECIMAL_PLACES : 64}); + T('4.3453j4kjj0gld74h3kf2eh7kiabgdfj91lm47df8knn08mlmg34llmen8b70nfgg', '4.1323175881243', 24); + + BigNumber.config({DECIMAL_PLACES : 16}); + T('11fci0nrj42co0h.p63gsr4rg512kr8a', '502434965914740165617.8401320537228150118206441', 30); + + BigNumber.config({DECIMAL_PLACES : 59}); + T('2jpeg4chfcljgn44g7ljm696j7ecfng2hifi79d5fk9e.naaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', '19324647245541042665522682085850732286789183586270685673003472.9', 26); + + BigNumber.config({DECIMAL_PLACES : 72}); + T('4ki4c4d5ha22d8925b4005bh88m7ki.30kg3hdo30h263k596n8ca1bfd4eig7hljakomdo30h263k596n8ca1bfd4eig7hljakomdo', '167542618104881367375225493908762776911143.12132133912', 25); + + BigNumber.config({DECIMAL_PLACES : 78}); + T('4544322.235145104224010425054333530135545110521301445400530023102335504152042532410303', '231674.441212', 6); + + BigNumber.config({DECIMAL_PLACES : 12}); + T('111011.001010010001', '59.160508253119229720226315984803348705', 2); + + BigNumber.config({DECIMAL_PLACES : 28}); + T('454102.5412541254125412541254125413', '80656.8', 7); + + BigNumber.config({DECIMAL_PLACES : 33}); + T('1isk023dlf.55crlo17qlse1p84be9gabpp9h51e244s', '42579766052911.166926038969790620314532268407622', 31); + + BigNumber.config({DECIMAL_PLACES : 54}); + T('429qi6dl4h.ph4ne1d18jgkilepdj3ogaj6dimknhh8n29cph914lcg4bc4moocg8', '31171726864736.9494930209622872734578329709751045672992053779391489601493', 27); + + BigNumber.config({DECIMAL_PLACES : 18}); + T('172299c4276c26163a846222898294acb1.42584081aa022b93ab', '8930913218627080059774919041327808207.322093463032', 13); + + BigNumber.config({DECIMAL_PLACES : 61}); + T('91.6860869813842881163577889544084877062924216598567628502407164', '91.6860869813842881163577889544084877062924216598567628502407164280', 10); + + BigNumber.config({DECIMAL_PLACES : 42}); + T('4521234205002101435221121250354315.053033313232425310135400154551251430143114', '233771706142581818269027271.15323953306272130041055911181', 6); + + BigNumber.config({DECIMAL_PLACES : 74}); + T('1l8itelfm9stl7fmkawlh8km80pd30g1.uv0bkrja2onchcpf3iavufmbsgj6888q93ij858tkgngrwgn09gu8g031v0g7ku6pt57if84m4', '194937846823553447809511256180608590361394349744.9375672', 33); + + BigNumber.config({DECIMAL_PLACES : 22}); + T('14477210981224.2476134315993452402663', '14477210981224.247613431599345240266280695', 10); + + BigNumber.config({DECIMAL_PLACES : 64}); + T('3j51pir33eok5rcga8.ci6c5a89mckjehlco1mngdb09rqhdrdqf9pci83rqri96b1c0sbeaj7979d3adc3', '26569832927198243633766552.435459435', 29); + + BigNumber.config({DECIMAL_PLACES : 51}); + T('1048563153471333165888a4428a560371303035158.922a919092343141a34289759683671530130a320a939a7a275', '56924066996327539534686550864239220405952031.8369533', 11); + + BigNumber.config({DECIMAL_PLACES : 62}); + T('3.5kel2e1gfiac70j7k563b9el2e1gfiac70j7k563b9el2e1gfiac70j7k563ba', '3.27', 22); + + BigNumber.config({DECIMAL_PLACES : 22}); + T('5gfg.df5gbcd10a347d4cg76326', '29460.8178265494875692701718973279612977910871', 17); + + BigNumber.config({DECIMAL_PLACES : 75}); + T('1faem.cpj6cpj6cpj6cpj6cpj6cpj6cpj6cpj6cpj6cpj6cpj6cpj6cpj6cpj6cpj6cpj6cpj6cpj6cpj', '1550806.4', 32); + + BigNumber.config({DECIMAL_PLACES : 93}); + T('1000001001001100110111.101011101111000111000101011111000010001111111011100010001100111111100100011010100001010111111', '2134839.683376639182809009377393376566052153774412236905434', 2); + + BigNumber.config({DECIMAL_PLACES : 70}); + T('68.0418148343760086652557726847074054512880223633116204181483437600866526', '62.052', 9); + + BigNumber.config({DECIMAL_PLACES : 84}); + T('1ameoekdm.p5gmb5gmb5gmb5gmb5gmb5gmb5gmb5gmb5gmb5gmb5gmb5gmb5gmb5gmb5gmb5gmb5gmb5gmb5gmb5gmb5gm', '523588890434.9', 28); + + BigNumber.config({DECIMAL_PLACES : 72}); + T('g837j86d57fcia.f5d06i2iaeaad500b87071eggcg', '1344184021329245170.764127158536574868775285152', 20); + + BigNumber.config({DECIMAL_PLACES : 37}); + T('45hjj171bb9ee1gehmgc5l9k5nj.a0hiel28el28el28el28el28el28el28el28f', '9389077895851446839665690077113206844.4011356', 25); + + BigNumber.config({DECIMAL_PLACES : 29}); + T('5afd883.0kb4ikl7aaic00mb6d7j6g9kcm0be', '808903080.0387285', 23); + + BigNumber.config({DECIMAL_PLACES : 30}); + T('uoa.p77777777777777777777777777777', '39754.7', 36); + + BigNumber.config({DECIMAL_PLACES : 57}); + T('314211431344264.161502550605320604600021123244242566302151242210124322565', '2191226569123.270328', 7); + + BigNumber.config({DECIMAL_PLACES : 83}); + T('350np900cjrpa7h7d2rm58e17o89em3qar381c.sb61e7ka19m19dt39t24790llrnb4drfn650aukk22ralqg7145dpgmpkek9itu5ka53sho1mkqndi7a23f', '47902354964172156474611081338049003753298795073166899865.9148752', 31); + + BigNumber.config({DECIMAL_PLACES : 10}); + T('243.4465610031', '163.575626396226555033529183865411120656777021626883', 8); + + BigNumber.config({DECIMAL_PLACES : 13}); + T('2ef7g1b5a7f2gec76ceg9.5b5d811g8fg79', '11692997210770248710254595.333358969', 17); + + BigNumber.config({DECIMAL_PLACES : 26}); + T('21mc1klprud5o4tgld2uo779vi7uo4lwed232a1qla9', '12289022125709080817960517361047704480115521701286675767213581699', 33); + + BigNumber.config({DECIMAL_PLACES : 54}); + T('1biha8e7fg.9ehdffb8dcagd4g9i98hchibbbh22093e1bi069e343ae8c7d8f50d', '526422264921.5150500126270316229746944036', 19); + + BigNumber.config({DECIMAL_PLACES : 87}); + T('6c21ldjdn0e.d7ki8442k6ec8b5njjgm067jj6cac5l46l7gfh7km77bn9iehd7f2l7c934md3b6ecfk8afh15je0jndbk7nf9a', '412350836548046.555321483698953780254564895313985703', 24); + + BigNumber.config({DECIMAL_PLACES : 76}); + T('r39e056mi.tjxo1e4pd49qkvkendhphptkqsp0fyyomdcv5ophw9lfaogq769ommmk1rpc3xlbawek1iy9d95v', '61010933356888.8448673320184616605284885898', 35); + + BigNumber.config({DECIMAL_PLACES : 93}); + T('4q3je2kkc.v0oitmoa0vse0m2sgqid4w2ntjy10b3gqbqsu5u4c84d0m78gmlgqcbhyhbs18r04wxljbi6ypi2mtkvasu60n4gpp3l2', '10686857113462.886286611976383309575531841252170238', 35); + + BigNumber.config({DECIMAL_PLACES : 36}); + T('32.rhf24b66142ioncpkpn6ije1k8s9cka3f9ro', '89.951866586639896895259517645524', 29); + + BigNumber.config({DECIMAL_PLACES : 14}); + T('34a1765329aa0b27358236536.c1082175680a06', '1827925782415763778360259679.929279897145404964833315', 13); + + BigNumber.config({DECIMAL_PLACES : 61}); + T('a6742646212221a88046886505480aa41030547a37a67236.41964a1417296a0a24a93660a5329032846329a7984251058490591662579', '93546552298402617258257881206314223917463535762053.37910302', 11); + + BigNumber.config({DECIMAL_PLACES : 9}); + T('3pt6cise0p638ff8tq9hiomp2.sjof1dciu', '2380426328731894461017956020638721447.923818782906918215432585338', 31); + + BigNumber.config({DECIMAL_PLACES : 34}); + T('7b16db7c13e5g542iefad5hhg6hh43jg83dgdad74c70c0fa8', '2126074738690043302211139064073553459984418855049352822209926208', 20); + + BigNumber.config({DECIMAL_PLACES : 100}); + T('5c38ll2df8cc.ea8k9i40l7d3kibk457clf53bbeldgdlc376aj7a7472855h5iccb7ja0kk9dklch184b0jllda2843hf3je91ia0ba05eg2gfd8', '3244426171205484.6578633915920657537140922935', 22); + + BigNumber.config({DECIMAL_PLACES : 52}); + T('59k16a247.61737g31dc0g774g83dg8dc9fd8fiihda667i040f6b2244682jb', '207044760664.2887550452070736178915046269946', 21); + + BigNumber.config({DECIMAL_PLACES : 82}); + T('110100110001101011110111011000010000110100000011111011110000111111110101000111000110001111011110111110111000010111001110000001101.1101111001111010101101110101011001000011000000101011010000001111011001101010010101', '561214248546542162784739085096665717773.86906', 2); + + BigNumber.config({DECIMAL_PLACES : 11}); + T('36f.deg45023nic', '1887.5671423143628136523074608843', 24); + + BigNumber.config({DECIMAL_PLACES : 2}); + T('2.a7', '2.61389199970000056196530570', 17); + + BigNumber.config({DECIMAL_PLACES : 61}); + T('40212435243045.4130510342441202145355231330051034244120214535523133005103425', '53056804709.709', 6); + + BigNumber.config({DECIMAL_PLACES : 44}); + T('1200.12140430444103413343343041420032110122444122', '175.2946969442501136', 5); + + BigNumber.config({DECIMAL_PLACES : 45}); + T('1a.cma7ce1fa7198f4l4136e24icdfjfem8175em64fele14', '33.564175901106526786865243352786443610109137364324033383', 23); + + BigNumber.config({DECIMAL_PLACES : 24}); + T('83.82j8j7mk5gj08fc90d7dmj96', '187.3532', 23); + + BigNumber.config({DECIMAL_PLACES : 28}); + T('29542da7aj1.aa6f5b4e5gb561gc34', '25221291260381.525845488058258131', 20); + + BigNumber.config({DECIMAL_PLACES : 21}); + T('23310314004100214404201444.42442021424124041211', '813327917597334624.91907050113787247', 5); + + BigNumber.config({DECIMAL_PLACES : 76}); + T('180ka8gcb2e52gg3ml8590.8lkaji90g4cl8dkinef0h0e13hlf1b54bngb9dfm1ehmalmakidmk6l6n0fe4anbf7gn8754j59a', '128782235162920368437352533016.3712710490503878', 24); + + BigNumber.config({DECIMAL_PLACES : 77}); + T('cj55j1abk1.11a00dib00e885bkdhb71ea8hkdjhih7b6cic84710dihedh58efg803i563e6ae2k9270773geih', '10259507050423.0509665801731862583991348047581595376734117515727774395', 21); + + BigNumber.config({DECIMAL_PLACES : 88}); + T('1120201122111211001102121220012202000221001011102210121000011121101210002.2100011212012221101021000112120122211010210001121201222110102100011212012221101021000112', '35651380254013249383472036570828775.78', 3); + + BigNumber.config({DECIMAL_PLACES : 61}); + T('nde8jl8filiabpp1ebiome1gng72ajlc05pcje.58k83pnpnnln1c250flhhe10i0aecl3kemo51i13ckj0ieji243nkh44bbafk', '531463579683815787587099214787456214450843210757585380.2052977699752', 26); + + BigNumber.config({DECIMAL_PLACES : 49}); + T('2423132320143244255320031342044542022.4021501234514001305003110201140332234405515452435', '28233915554941230658978083038.67734567636065289541', 6); + + BigNumber.config({DECIMAL_PLACES : 20}); + T('b8b057c619.881cda90778727315519', '240240367775.61294728461437827', 14); + + BigNumber.config({DECIMAL_PLACES : 57}); + T('3uke1r.qog7jpuls3wumhw9r6ij66xbtr9fxmcxo7pjkdsets6obc03cdkpohtp4', '177198677.78587988442236198004', 34); + + BigNumber.config({DECIMAL_PLACES : 53}); + T('rxp7iouofqsa.5xr0ytex5w3u84ss4bmqr4d2r58uk0w6vou7okvti3sqaf8xdt7m4', '2699846669670878465.17042631933406076262750289627556', 35); + + BigNumber.config({DECIMAL_PLACES : 10}); + T('71.4dadah84a6', '127.26419', 18); + + BigNumber.config({DECIMAL_PLACES : 62}); + T('pho3b9iei6hp0dcf72fih.ph9881jc7d7c0c0mgpgd1ji1k02ola0l976leng417ng4dma8k5jj95gommail', '511945071604551808598197283361.9872166378092262156654881169655510', 26); + + BigNumber.config({DECIMAL_PLACES : 16}); + T('98.1902712204800298', '107.16547', 11); + + BigNumber.config({DECIMAL_PLACES : 70}); + T('12042214055152101441031134141544140013031204153503340.0001441130201520422300253055330454111450024335001352533025215001340303', '39389800555908783850258185920663768281644.00137621307644652979797336', 6); + + BigNumber.config({DECIMAL_PLACES : 85}); + T('10110111000101011010101011100011110110000011100101000100101000111000001101110001010010110011101100101000001100011111010111011100.000110111100110011011100001111010100110111000100110000100000010010100101100011001101', '243361227524012342673912659288240813532.10859467026399996528383947490', 2); + + BigNumber.config({DECIMAL_PLACES : 43}); + T('20320a9e1c.e13d8f38akka6fadl8ihb6l130aja4facgc892b7ik1', '2422250714258.6387686759191563066716078918648006468135734011652', 22); + + BigNumber.config({DECIMAL_PLACES : 6}); + T('fk3tfaumol70.nbu11t', '397624194336432136.7543900599912174983420474207', 31); + + BigNumber.config({DECIMAL_PLACES : 93}); + T('bndw.ia76eoij11afbtfap0nweobn9p3ukq3ykdaqhg9p3eh2kj95e8c82jarbuo6ng1v0uqvxgmx0oephdvyf26oxydy1cg2a', '500287.522616523131590467026372561556', 35); + + BigNumber.config({DECIMAL_PLACES : 38}); + T('12.00222221021111110122211020211211122011', '5.110848610746726114', 3); + + BigNumber.config({DECIMAL_PLACES : 39}); + T('2781hhhb8a83ai.1ia3900g8i4534743692hfa4d2idid3hbie71b4', '100543014641347157.1039776690679366009661209140071615314125301', 19); + + BigNumber.config({DECIMAL_PLACES : 4}); + T('idrt.8pi8', '788649.2494047472', 35); + + BigNumber.config({DECIMAL_PLACES : 32}); + T('101553444.31404145323333511432344434343404', '1772452.5468497396', 6); + + BigNumber.config({DECIMAL_PLACES : 26}); + T('11913e.k48gaghi0bda65ca2fad6g3fe3', '4362449.9624', 21); + + BigNumber.config({DECIMAL_PLACES : 95}); + T('b.1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h2', '11.1', 19); + + BigNumber.config({DECIMAL_PLACES : 41}); + T('504.30415304153041530415304153041530415304153', '184.52', 6); + + BigNumber.config({DECIMAL_PLACES : 10}); + T('1040tqefd1.kagvh6rc13', '79074558629081.5799860', 35); + + BigNumber.config({DECIMAL_PLACES : 66}); + T('88k7o8ik5jj36le.hi5i7pd4bnbijdamio535d2ch6dbd8fa810ha390f3nnm50k35598nk6j8d608p206', '537866727524277202000.680797912718430834', 26); + + BigNumber.config({DECIMAL_PLACES : 52}); + T('99a841081466974763476a2a94.8685193793416832964036250573858a28991099751a42161366', '1073406972360901510248908534.783223009295755306594680823047214404631', 11); + + BigNumber.config({DECIMAL_PLACES : 23}); + T('2824bb685415692c3454de3ba6ecdee2e64731e30386.251d7e62e78419d5bbd2e91', '949248114155968376205888968663100056112678439830801.156119125437472', 15); + + BigNumber.config({DECIMAL_PLACES : 22}); + T('1.pm8mgslg4329n9f3afrstm', '1.803', 32); + + BigNumber.config({DECIMAL_PLACES : 64}); + T('1lpcq5lrlgmpeong4rhi33osk7e7.19rmrhsmn87lo1pr6fa0r87ae562legcl56ocse5ikm0icck2hjhob5cjl174idm', '5356399442861089801562327577317285912011.0463238125', 29); + + BigNumber.config({DECIMAL_PLACES : 75}); + T('82m1.1a4md6p9e92i4ghlb2gj6kqbihjpjjo7a0cagdb8c4l0o1eep3infb6qlo5ohffh2c943edckm2', '159517.051', 27); + + BigNumber.config({DECIMAL_PLACES : 33}); + T('2a.0ad1489a72438d6051a3cdb85a945c279', '38.055792640673814942897183865707181090111098818987279667501', 14); + + BigNumber.config({DECIMAL_PLACES : 85}); + T('110001011001101010010100100001011011001101010101111001010011100010110001001010010110100000111000000000001101000000110000100011100001101001100011010100110101111010110001.1011100011010100100011101101101100101011000110000110111110001100000110011000111100001', '288798319290142875873517012221913212736305288666801.721993378169914151', 2); + + BigNumber.config({DECIMAL_PLACES : 38}); + T('g578.d61b0da144ckf2jkcl10949664b9ea332i2l3a', '172950.603446775338659784933', 22); + + BigNumber.config({DECIMAL_PLACES : 60}); + T('gded9gk7jid6iknja1a5f2lajbj3nfoa.e2k009337h0ebkh40nl0685da83m99d7dok0nhob24fn21mnf3d0m4hji27l', '358724698418163432084126450455461239444900610.564480037377194308738297', 25); + + BigNumber.config({DECIMAL_PLACES : 21}); + T('1fml4uksb7ix1y.sso3bn1tfwq3hlccisodr', '171143420517125729119.8234191307649657940877', 35); + + BigNumber.config({DECIMAL_PLACES : 36}); + T('14c760d6m2.1nananananananananananananananananan', '4500058801177.0775', 25); + + BigNumber.config({DECIMAL_PLACES : 17}); + T('9fljfli8208i7bh3c7dde.4gk2g45kjjhk7i0jf', '6861754532912253293306011016.216766', 22); + + BigNumber.config({DECIMAL_PLACES : 88}); + T('3001121003203231320200201312003303213331113131100133213110032113.31330121313330323023210010122131021011200033322313113211233321203033223010323212313121', '257061387534308407753785204466907956119.8714885597106', 4); + + BigNumber.config({DECIMAL_PLACES : 53}); + T('1011222022.1122002202122110002010210020010111221010102200200022', '23309.54447401648241096074553786074233187398795698903', 3); + + BigNumber.config({DECIMAL_PLACES : 22}); + T('5.9194l4cb9fa8bah8b2m654', '5.393952', 23); + + BigNumber.config({DECIMAL_PLACES : 27}); + T('33010330211130.020232012002043243340030201', '4405710165.084291592965', 5); + + BigNumber.config({DECIMAL_PLACES : 92}); + T('13jdf.chee8klh511i494ffk6799ec193bj23lefd62576edd4ah8dhe956lg0jlg6k3081fh7b90kkc2jch552h2c92j018i', '275697.58195481441', 22); + + BigNumber.config({DECIMAL_PLACES : 73}); + T('479nerl5qc9.9gg9mhjlia0lpqpfmbo61gkfk3m8nang7qra73jkm205ffji6djibilkpg7beb94ddgk755q4', '1262554037978809.342581555046588836259033201946517724', 28); + + BigNumber.config({DECIMAL_PLACES : 77}); + T('2abe54cdahg4cfg73.a32gh72hhedf8b362afced335ff3a2934a3g88h1807c480g2623738bbhdb29da52fhae3bbf49d', '314766023685470770233.56531937360626278654', 18); + + BigNumber.config({DECIMAL_PLACES : 53}); + T('44fk73cgelq38ai1jl6mef2johb8aqigpghe6.41pe15mojjjf3nnhpfponasg5cgikcfick4ip43bp8e6l7m13mna4', '184105112778080215283996929747816484069365074433262524.140165', 29); + + BigNumber.config({DECIMAL_PLACES : 32}); + T('a.d6rkjt25eclbttos5e86st98ui7pplg2', '10.4002177231432347386440520809', 33); + + BigNumber.config({DECIMAL_PLACES : 89}); + T('1.2b072cjjl73700ahilibdmjn9hikf536njnmd3bdnbbg161m7bma9bjkap2p03h71debo18h91obc8iilpamae4fd', '1.093210794', 26); + + BigNumber.config({DECIMAL_PLACES : 25}); + T('429130757970568370597933312039338574250814304378587454538.54123403', '429130757970568370597933312039338574250814304378587454538.54123403', 10); + + BigNumber.config({DECIMAL_PLACES : 90}); + T('4egk9mo5.nq9mpjg1mdgkn9a91fbo96klk0h7chndjbekikrg28g34n0boclh3jl8che73a1opaef0op0bi470embme8jn16423', '61006052805.855039107767', 28); + + BigNumber.config({DECIMAL_PLACES : 41}); + T('fl8n7g92l609nr89o0c.pdebbgbbmcg2ie112887jb22kh16fc3mcjd20ao0l', '1763744254574742835397196108.9100951', 28); + + BigNumber.config({DECIMAL_PLACES : 71}); + T('69761d43jbifb3.5hjgbjff0b193hgae658f84hgdgja17a37i8f74', '529879890174710223.294978746680768846329827392297854102963', 20); + T('4e8ba596e760723db17586b2141fce3b37f803587c2c09a7f054e80000000000000000000000', '9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999.999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999', 16); + + // Test rounding. + BigNumber.config({DECIMAL_PLACES : 0, ROUNDING_MODE : 0}); + T('1', '0.5', 2); + T('-1', '-0.5', 2); + T('1000', '999.5', 10); + T('-1000', '-999.5', 10); + + BigNumber.config({ROUNDING_MODE : 1}); + T('0', '0.5', 2); + T('0', '-0.5', 2); + T('999', '999.5', 10); + T('-999', '-999.5', 10); + + BigNumber.config({ROUNDING_MODE : 2}); + T('1', '0.5', 2); + T('0', '-0.5', 2); + T('1000', '999.5', 10); + T('-999', '-999.5', 10); + + BigNumber.config({ROUNDING_MODE : 3}); + T('0', '0.5', 2); + T('-1', '-0.5', 2); + T('999', '999.5', 10); + T('-1000', '-999.5', 10); + + BigNumber.config({ROUNDING_MODE : 4}); + T('1', '0.5', 2); + T('-1', '-0.5', 2); + T('1000', '999.5', 10); + T('-1000', '-999.5', 10); + + BigNumber.config({ROUNDING_MODE : 5}); + T('0', '0.5', 2); + T('0', '-0.5', 2); + T('999', '999.5', 10); + T('-999', '-999.5', 10); + + BigNumber.config({ROUNDING_MODE : 6}); + T('0', '0.5', 2); + T('0', '-0.5', 2); + T('1000', '999.5', 10); + T('-1000', '-999.5', 10); + T('10101110010111011110001100000', '365673567.5', 2); + T('10', '1.5', 2); + T('-10', '-1.5', 2); + T('-1110', '-14.5', 2); + T('11011001000000111', '111111.11111101', 2); + + BigNumber.config({ROUNDING_MODE : 7}); + T('1', '0.5', 2); + T('0', '-0.5', 2); + T('1000', '999.5', 10); + T('-999', '-999.5', 10); + + BigNumber.config({ROUNDING_MODE : 8}); + T('0', '0.5', 2); + T('-1', '-0.5', 2); + T('999', '999.5', 10); + T('-1000', '-999.5', 10); + + BigNumber.config({ROUNDING_MODE : 4}); + T('0', '0', 2); + T('0', '0', 10); + T('1', '0.5', 10); + T('10', '9.9', 10); + T('100', '9.414403549937069229622318379677', 3); + T('2e', '85.724', 36); + T('1049a8925138111404333bb594303b3', '245329273960717287023167550190902.7196', 12); + T('10024012', '79882.1397169', 5); + T('bf8pijdqj7eaee8plp', '24913576091923713226797784', 27); + T('92ede36', '221315101.4486109701151', 17); + T('2tphhgbu3tfp', '201793843613197922.7289680244023879849892761206083518171246', 34); + T('334304414323442111042', '361019216753897.578090634736893396795045144615285524664717189351698468', 5); + T('101111111100000110101111100000101000111011101010001100001110', '863594881689232141.62881568577668460977625904', 2); + T('113aa38477', '2650149344.4439337077845022587667990', 11); + T('16234a9a69395843a26073599', '15410678383317464407550663.2765', 11); + T('1h744d4aeb313h3bcf327e3b6ff77f452', '29005210991102584193184888994590829162676.36864180128775308524399848', 18); + T('7fd', '3414.796182310782697496', 21); + T('1h61i9i6j802dh7e3c7hia36', '1564677221233470232427033268065.9552132872311604979708', 20); + T('298a2036a57a567510698a8209', '313334205044060726367000938.043033074655734794248199', 11); + T('1cc6e75ll568fh0kd56dje1af49489aooadc', '12702280403687491014084375085832810818379990225336.732151263602252539155', 25); + T('b359476583b5', '8388678747448.862', 12); + T('8781fe7e4176fc66a66ca5730090c7', '703596669768604729463688604501971142.9176994711280241981325903319', 16); + T('101110011110011', '23794.501525', 2); + T('1001201202222202101000012002121220021201110220122020110022211', '45111254165346649183259916415.393038562469348926338378', 3); + T('221', '25.3631', 3); + T('121201', '450.79905', 3); + T('202001221001121011021210021222001', '4132525698405883.4635374792891809964908659831439118', 3); + T('1000', '7.792303494645702446763290630498884400068339335428470929289382355', 2); + T('10110001101000000001011000001011111010111100011101101011011001001001011011010111110000111101001001110101110101011011011100010', '29513071238598351326634077220532565729.753116233815194468461197227952', 2); + T('110010', '50.3', 2); + + /* + + BigNumber.config({DECIMAL_PLACES : 1000}); + T('0.9tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn3', '0.3', 33); + T('-755788719654700625.3724b27a98ab8461015aa3993106b7425561a7947a368a886a729ba36b9b21b3401602995ab641085846038360478a6a4a4b138161a926592b703882799057b605a209854367054112a0a805489089a2b81929842754b24477344a744498b65462136aa293a42922b87343b4473317594350832086048739518722163986b5aab086006b0b3264730478069bb598131768954235054677799442a1a645a56702707497428a71984310838281214a110605a4996316582806434651aa2413a4a35477a48b9076b7752598932ab2a0437237887a86633a04a10817a64a5a8bb4906786542a7a31891230045250203b18986684b7582a8b5130322b399145b9b6a97143ab27b1768b3a698057060ba2b3373a7292653a64b314947862b78142a6ba28321513a350b833950438b137737a5a21861a2944132837498282314b91930079a7881464a2b0b9180b47aaba43581348189636298868b0364532b7777a2446a916666159b8b430b73345246b481937638714a820046765214436a192052813a993944190b7717b76ba0a82853bba355255173747ab49a904191b6660a08820098bb900192429401b010016224a7201a1a847a6151b636509738288245a83261829041354787a89b02211247204a98648346a695053b91856537472426160045438425446599a19a7208b913449438743351393', '-16541654165416351613.3000065165841541556784990494619761', 12); + T('-0.000000000000000000000000000000000000f4j4ftgo2kfkig1lu51ni9cfe9d119suj2gl2ujs6ks78mesor2qpihm6m2g4oo7t1jd44b7gf0hrdhjd9p0th4jc9idjm9jm9qulcqo0p43atotsgmqaeiqfo6q6ipc0dgje0jjpho9ugphegqbto5se29hksk22dq5q5i97be5cgsuj13c85c4tb7inc1a1i153rfpcbp65103n13466sslre6263di7rbmcsd9q1esffdtmu7mdt77ra9gf1rhknleod4id6jbhqq90hppj08bkqa5b3ob0a688iop5n66kspaa4dlqolfl9us0dng6ou0a2t9kpjnngoblo1sain3rg7ulaadd6s78n0s2tr6rbdel0627p5imf7q3plnud3prlldun19e198jikr2f39gb2p7qmd25hi6npbt3okgpfp299n9048bugt4d6g6c4063di2oltdu5i4j7ogph0mnq0o0n7g33ekbf64k7ui31ocjr93i1jojbja5b6j4593qnlh8q5b949n7pbjpsh8mdcs8uslfpnjj1pgk6jihp2848a01agg1nu4be04j2saiqfa77toh8cd17e3ecq9i4mot7e82m2mpbmbbm980i5aqlgce92ofkbchbshprhmp0c33m1tjuf73jp17molqmn51m1n86dc0hc5hgtf6en3glecgr8nsttn3ta4i0j6iionu70utapfuik1sm37hdu0h4cpl60lqmr2n5q8k9jo5866pehctkringti5eeqoi1i7ar3j4tars7q1kciok8itki5jeruq636tmal83ii9fd2kh83aota9hei3jn72777up8kpoo3g60rd1ujj3f7seic20c0jkpdpamh4bpidupl35ccnljfr6b29sl16cclgtkankajrfgki8c5u3qddal0lgp0rhhdl0bctc5rcqlpqf289iknm8ua0m', '-0.000000000000000000000000000000000000000000000000000001', 31); + T('0.000000000000hpwlejv37aqn2neqd4iy0sm7unmppfy1apey9u9p927prbdsbgd1b45t3p7vyifb6l4dut1s5vei3atsmdfap8nv6tirtwdjf220klsbwsc00lrraupr876e51kdbmsq137te8jbjs06j97obx9ftyncxbcneopuyolubo9r1ue2o84jpl1bkl4rlnun434yav93cxyne0infiidgt1ef1kn544ces10yn4ii2o0l8dxs5e5km9odb0yim3qbte11085r0csniyxr3qv20q6fefqr7stu78yewk04r12kwbncdljuyfulbtyuv9myvkv6f51lcnrdde2iyx72idqv38ntmg5pweqahxa6rax0w76bwqrlmju9nlsngdd39pjr5ypv0wjiipyq72biby5r2yecd1a1xible9do3ilv80hqrtsrllndbbfvcevlxs1s7r8l045400pdp49eghd3dmxaej7sajpclialpo46tqmlxundvl9w9xvjje8kxsc9khjqa8j4r89gj40pvxdu09anqyxyxiwj4p0ynrewrfkwftbfhiovjj5n2be09qg695obvaqkudlyo1khnc81wsghfdilwfx5xtjrwsj412cn8prwedxb5286v6ctvmdi8qmcsarh9grx4vxopnuo6afqeovo7ar83vw1hrgpklwtck2tm7061i460y54tg4ajadt18lsyhrbvp5c3xbqpp8foy36s3epjw2pdo7rg4bfrc675wug8vskgopu37ni5qxpk49l0gk5yg5es5l9l2tkb634osunbu1tkir9mjihi2300lj6r8bf8d50mw1636c2ewpscd6fd4xwsao7rd958avhwh51epte3b574wiyjos8681clhmpayclij79biitko0g07l52qkv4dkl9lh5gdibg37tsjfdw1bjx8cvwabvmrbxqorfoidmp46rusj22d3ixyta3b19qeaf2ril0dy', '1.5e-19', 35); + + BigNumber.config({DECIMAL_PLACES : 8000}); + T('3221311113213312301200121312331120223133103222310312200003.10133120021030102300130322112333011231122301021302213211200122102011112233031000222132211020000222030131132332123112032011231212023103002033233331010100311003202212321120132003300212303030201300012330123122330011010023120011231133131303033221010022110332233211122331110100033103213302033302020221302320001301133313100221130221110131313232030210310233030230201333031103331101332213032210010121132231001111300311120000210222020003220013031331132302223232211202000331120203120223002210103102123033103022323122102020231133012110000113330301003121100102101202202232102133333103113312030101330301302113232310200111011321101012102020322322011321031233202033213210030201210230303023302301220122030220120322011211011100022123210023332223110102130033003120330021302022232222322102021002331133033202210011201331101022101021302331003321111310101133200012320210131131120122333303103103330203000020230111101312103232123002323102110012331121022103300032132101102103320030200001120033320130221133320000331310233101121023130032302213030223101131033310231010131233311202122331223233132210233023201113213330330102303103130222321020110211100311231310123332211301331000320233100223202313100101331122003112132130213011201211301323000002121223132122002222312231332022010323332211130132213331031010202301331120113332201302330020311301100203132020000121122232000131231313113320133322320023011123023010232031130201203313013031131330022010102113231021020120130032110122131213203120023133323223312031122123111323103013302011120122210331110021201303311023203333121113231121322013322233001321103310301003132213320200123011300132232131101313210100120202023133310332112122303233203030001002103331232311130232210000231100122302131223110332003331230110120303211200102032230000122120131120020320022101011012103212313313022112302311320030310021313213230200001231232101120023230000301313230221100101123312210121131001221121013022123110300020300201231231323321302300132211232323233120113130332103333013122303210021002301122021201010312231001300212310202123103311011023331333230203303103212233020310032212330330220330221022010021221113000330133200222130321300010000201200303021321332230023110110013213000002213012131333100002130030202111001023101233230330020032312023113210022000200301310223113233321220021111201110022133203030312232102102210103302220310230132031213123133201112010220120333131023110020231131300122130221310000200111220302221213001230221021203330003331231222102113103221002301233213322000120321022201200230130122030011133201210311201201322331201111300133321213221013323322313031112003133322123110033323023020122123232300123330213213122203013313331030032312303220202321220213202100113320210213201220012321310333122313223031110022230332030123323221320002313331211003333220132010323301022130321122211213211332213001021010310101111123313030222123301101133313212013311210312222000133012130232232010330330110310021302100012101021022230011021231231201003303212003312203332213002132332113333132030122100101323121031000321033132100330022202133012300313031130300333231002000002222131031320203120111210023113300033012202101003200103100131010300231022202332221121132221222211313202002013031001011110210102123121113122213110103310310122032201023312110131121201131201012222020113300212211301202022321210311330113322013330010323131001331201212202033120020112212302020010320221023130233000030211332203222121023200323130010032021323113330132323300032003123103021131131111010033321333332003023113011331101131003233213002332201000212322122033020012323200113113201112021333333032111232112110323323232322022231322211322003012002023201200112103010132230033000202121311320020013200122212031312013001010002230123120123001021030313222223300223233330301132033033130230101231223122311313301332022231030331111010211120120321211113133312313021113002213313131110013312123320201321002231203030002120031201130332031101213220030320112103133110223121123101210303000131333333000322232301013210112100111333301223102233302220201321320121201200313312203123231221332032310101032232113122003233332202031302020000023333232123100112101321110110332220313323022231210130210111230301222133010222221101220223103312100112111100010032101332301102303300103200121020100321002203132330112132023311112003011010130021311030000023102011312101311220012230121333311222103213311212202001331020301121122202212110132033031123311330020132102001102112232232303323122313002330111123010313130000033021003110332132303223132303202300131122210210133000230332103021123130132232222230313021131300013222003333322211231332000000230102223122302201002010313113103211230001312110210013001100013302130313221312010231123013103020110332300323110201002120333312223121233122010022310201120030313023021020010103232330212122033111201323011210233012310232022323131220320212302130031120000333200013032002312120322213020210031023312201320121012222320230020230202230311320323302220121312133003030230110210031232233322121020222121020022023202300320100203232321233313323123133103323011003023213313230233331301032131100030030103232313032310000130332320321112101020111000012310320033023021202322102321113111211030131313303210023003213233232232031223102131000002231303331301312232032323310122133102323110311022320113222232301331100110211023132013211203123203211232202322033202213130101312210200022201123333302331022212311212320023102312022221323211002000020002003130301012122201302221112033331022220312131031300133332333033112310131321121210201132122021120112200210311313223100222322212101202111103102322301323302113220013000202133031132113000003130302130110011200302012303000302020132120232302021111122212222230330201003333000031012030021003230131232010302320011020033300203333112000331200212302001113120312210300330100322200200130000310003102023103033222233202101220122202012301311213301032001010103132022312323232220003010320113003303230301112112211102311032100131131211311333120200223202001210103220210211000210023323110210121020321022001103013003012321320112022300332203031202112000323133300130130022100001333111230311001032331331333023000110112211110023013310023212112121003000000103131202211330332333330110130222202332332313313211030302000102323333012333331210332220002033030120232332032123130011321201320001213123213210233122331031202233201001012131002312210110300120030113220200200220011322010301122020023023102332321000003300322323223321210022110221101030133123020013132121233320100321320033131101023330201233212232312001220302313002001101312201021122220020221321211201210012203003120232232302211201103110303210320001033330120103220001223220003130113212110323012002323311320130033333302122101032110313110131003120013303231121213111110322323332230021332122203320313102010002312133220012323022320332211303331313032110131310113130223201121103110320330132100020133122133312133222013301200132023232220203102131300113011321322231022130101021212313331313312211130203333203123331011310021212311331001201000033123022332000231221322320010113323120132002122231033132120333203320303323110021203021232233102020021322301001121233312100003202222100020113113012200022311210133022301031333003131020211221302322002213311130131302101032233231103213132013102300311233133303323033130321230231100220031131100202111221130100133111002320222202230030102003133102022111200103010113332233031323232003020312002002102330220231320100323032021000333110231010303032032131331021310200120130221022121220002102203020220101210110303232330100323312121333232330303311032322233102223003103101300331132011232012120320123203002022031213220322200323101333332132001112100120000220000313330323131013111013311122302122110211010300213302330233300312130131130013321002110003012123223213013002321132320300331121121010221113121301220111133332323320212323022203200030320123223011203203330131131303100332331232003013200020132210303320022310221123212031133331223112221123322111333111133122001221300212121230130021122112001000313112223110231102032031303223110233103010203120320131203320133302310301233012112201123313233203310102001003211311211320123010311', '75883436516535445385952265101338627.28064184', 4); + T('c77g12a7326d2dgf821eegb03bfac9c0d.c22b2ab88c8g70e53e332a15841b1ae088gd4a118c1946563c14ga7g2d18c4g9gd0340db9db44fc91d3e889d95522d53213741066ced0d4ef5g31df250915fe97143410dfd80gg5d1a70gc5c26185d3e3b5651da5d95c3405bdc36g501f9g2127gddff2a5gfgb6816cbg870a219563e5f0e4c1fc743ce02fgd355c62243e34df7g9b32c0gb4f37gfe5570cc13a9ab067596ddg6cc4fcacb650eg7f67adgf2cd0a1e2239g988eeafg654c9eb2f1c4626gb60g80g8b37732008765b3e09g4ag66fg964423011a55d5g254d16d9ddae1c897cfc408c9790c32g4ae60f5df6a77b02a9c78868c6fd4e09617df91a3gb5858c58e78c12883gg2678cc09f15483ge491213e84d99b49a7fa983f47eg100fa601g96b5de3ab582ag7e80ba63ac5f253geb58bd08ba38a813e069fe513089e6148371b574737fa57dd64d3f5ccb699gg02017915b746f39ae3g3a07f742cdcg829fe591011283b7ea0689ag63bcfagc34f0eg128a30302f08fb9a2a35ad6f366babgc7gdc414bdcf131bce71f886b8ea8gde7e9eb3512969b2g3ac8e10e60749582b6140ca08bg25c315fbf0cg8643e6c368b98e64aeg20c0bd7cc92192620892800b3422d32a8a59a6g3aaeb805bd5e3d69d07244ecfeea325a2d2bf3cdcd525c3f0859709g5098bbf3a8d1a8e83ccb9bce35e30aeg6c46130b2ecd4beeag2ff7fe13a8b5ade5bad19c495cbag08d084c8e7f7ac67aa8g60475beaca83f5f5b3a1d17a041dcb9c1508816e053b6df4e4g0909ba8cbgb23552f7589fe2637fdd595f43e8e8048e704a6645149bec39ab154d218b87geb33b715agd2a0752e43dd87ddge5936fce1562ec8cd281338b9f48854de8c3ea37620a465577g659be796g4egcbb060eg4121bgdc291a195b47601e85ee52dc8bg6caa53e82g8g4ce28g387f207f4309fb54bf5f3c2gb522708fa75a9352ffc394d3cfc8a2742d2ce43c916b185097b5f5258a44eacf4fc2g8cdga1bbg6558ab0433d561608e60cg3711g10bfb08gf1ac05954d1cd0b483g799ac43e9b394g61ea702990ege7fd7652ee17d0gg2dfg31fa55072f4g33ee424ddc74124e7894bb2460602d1c9442b55eae226g7g43e1age5geg587fe8419c0e2c2e56658a304eeg6ae3e77db856g5gfb0236bff6f280203782a248249ce57e9406b2781e22475b96e7837g6d14ed2g95b6815gb6984bde25a0fa768fe02ecb22g874770agg1gff7f047a54a122e35g8e11dd1465b93b0f48272173df09ag76a24e91107g99dedbebb221a62610c91feg7997ga7de89fbe44008603d3a955fe9784e64ee07b741a1b1133f578c31263e314bfb11c2ggab358bf88c211572ec82f0824d3da0726d67565b8cdfgf5c30927efd9353b9dc5g39be86e720049420ab46gfgb7afeag93716f6a5bg1ffg44e5aed7bdd6c7b0ac0320627a4745eb5789e6dfg68g4c05agf34f7588g70bb56cc5389a04cb6g17d1f06d7869ca8edga349b04dff6079bd3b74d8343647bf0g521466813779a8gb0dg3c769b05329884g8d8926767a8e8df62f58caed0912aeg4c17b2c73f92f0f0ae48344gd93g0d8bg422bb9f3a26d356e5b6d0c6169a38d942199gc96a6be7b6b41gc9c2278151660145eefffgg6b014c1g9bf69b855e8b598f916487ga100158a549b99c1dde06bf9b5eagb07087c71e2385392ab5a683dc937929f65b5fd0677002342ad65b04716ee40ea0e91a536eb91ca98agda0e42f70688a6f0g9ea838g759319e37e0bfddde50g14574dbed699125b242c98bagaa6272agfabce194ad5a96dd7e81a87d66b958f72e3f5d2b6cfg73f72e1ed05d5cab08543c8ag05gb17ffa23c7eg700143ad6g7ea7a5192af96b4ag0e43b87114148g39de262d852572886ebcbbb8cd9fa593d6c06c0ccgc18abcadde1010eg2c615d52ff4d76826bfc622640825d3e12eg74918e7f4d2d3bgacf89daeb1c609d1gcfc55807aef8314109b93a2e9cf8cafded0c583355bgac3gcg40fdef4d9da1f96d09d7d67bg8d37fge4e2g3cf498fc1gcafef89a29bd4f7gc5f0aa6fd0c8614gbf16b2d428f438ec27ceg9952ggeccg18be48cd9e5612d1525bg912ee043f3d022d7eg96b06f39e5g864080f54621fag75c894a5d51e02cba7bb4a1e33f43g779259f0b9c65cf6a375c0a9cd4e7c925gece5d1c9c7faa7ebf92d30dbdgbgc7bc0158c20097d7aaa7g938baf81da201dd3fee2e4eeb42a9269c3g30f00aa8eed4c1c33722ge6ae9e362258fa071ca204d45945dcd1f872ddc29bdbg7b5d59g13874b627a4f5ec6b0g95993c78ce55e70246d1c7g75335b73cba41c2ca8d572efcgd694c1d54a255cg416d738d295a95e6934eb7f28c3922c2cgb77b58c98a27f9g44ff0f934e692bfbffc2f8973126dg8cad3cece7f4b8b8f2d4a71c1580727d4b8bc69edc56b92528bd251ecc79f69e81db90d01a6d023c4119g1c63gb6387b9b326ad3787241b846372eg899949e55daab1gb231a8bfcb9e062gf9ag501a9859cf17bb28518d85ea8678294c8417dbc4318da1c3a8e1e4d730208a2cg687227a333c9c7a0274a1cb441g24dg2f20df26gb885b0g7aec3f650ee8f2a750fd5541g57f53b6g33gadce6c64bg8ad2dg442dfa472be93363d871cgeg782e9fc1b104g7583b3e676c973c5d1252b49gd01g9b79e52699081414941c69281abdeee153af0406246423d1f75a720ad287f1aeeca47226eg0029f030498fb100f19d7fd9gg8b9dfe5113gee2gc001da6f78c42bea5f5eag5490gcegg4865fag331gde13d744e0657e95060441ea1fff181da6f8d090e26b0c731b689a11g89gg298g22c9226ae2d4a46e4f41e5b5b68d6fe06436de85b89fb901c0e49ced50c47ab630243dd7ebef32604dabbe1d4d44c25cdb1g4eg211ef0a150e20gdbcd832eebg4gfg33b14g4d9f1fb1a9974bfbbf0e7d511612841bb4gf87f4e013f799cd2727gg6b4158024f21028b14b72634ff5fb1b4a32g6c49411g42596820b6288e454734782b973a6d0bc56300fc29955aff5621c4567gg312197a69a5e7gf5cc82684g2cd8g4e0198cc6d21a71gca0caa7ggaf198590b010g5fdg8468fb0g511ea29a3g947b1f6f676e82acg0f155e3e67e9e698g0dcggdfe5e34ff9abcf86gcba066d0bf9937fe1bbd930747835ebc0b47ag1aadf582b89671430861dg5783f257312g95c83gd41a956c399d904825cbb3b88c86g70d43ce7dbg7255245a04e5725fc310447a7961b983aebcaec1424fd7f7ag2b27gbec5g31f4031daba6cfe55a761g4f8ab5d3a32a31a5g2b0286a31gbb74449ab1b99fgb8dga858b5gf0e446921aagad35ae92e93b8b650g0cd2960ffb90gg93bg382dc30571e37d7b10e9egd22849egg3gbg64b09d8ege7g8c7c53a3e89a6346e4f3ebd29186b4d652321ae226bc06g8f0beg00f82568d0geeb2da85g29f5a5b7c847ad90041dgf2bb4a0667062a26d756dfc5be6agf737ca25270ed362e8f6af4477fe2d21a581e363c0g91d9615fgb517bff84b4a1fg8ae7bab4845f8g321dd9f49c8862fgd78c8437933fad41086cbdg24cba4b4a2dg820e395f183baa080eg703ag4a8978590fc3ec6b34b4039016b27aegg36e7g10a486a9eg3e9da858b3f61b2598507f8905e560b17f2d6e260576g3611d13dd63cfg15gb94gggg7132a81ddg7f1076295b318dc6a5b714ff61728756db8be0f9c8b8a31792622a5g24c7fa764g9g9b8909e2abe41723e39bbbgaf9edd7019f3c89d27e5f4a6d8a7ab4c4ebef48409aa05066072d1633fbd4dbb582d795ee358c8efe4fffec9e4e0db38g765b8418ecae1023cg595ged32ae268c5cbd122f039c79bf0a0aafa414c13bfgf220c4a75daad6dgc207426fe008c48810a5bg9ba76df01bfad40dce31aebdagg6a9670g6f429d25gef650833690599bd27dd0646b8732cg528dadb86b2f8bb873b93bbdb85faab89b8d018270061dbg3g7gc0gd3b5d8e386ag49072df87fe4c45gbeg3af32gbfc14803e05g0eg1685g60f686f30cfd424dc3d056g011eacac67g7c2fe749e055e496ae96e5e8fafe4fcae23g5cc1gf2g8b857g9g05ab38dfd746a404gd91949dbg05c3a9abgbfb063348d8bfd4250dee307d06a57c98g8gd724b5777d2f1176egfd1499164cb9aa7b0g2f851g7ddac4a00db093dbaf387d7e5992a217e2ff7f184c7cbb3a77640c2e33a4638723c4f57721fee1b075ab7d370geccf0388669e80431a84791aba3613d0f9g04e3g3g363f41d31d1c51be0f1d9be014f2f83ebc7a2fc87a633b1b5bbgde8d3gcce3g0252c1800a0g0dfa8g550a2069bga56237d7bf36cg5d73f1cbcf2de6fgbbgg697ecgfc4dd4fb39dg44008925e89504e7gcf7030a208bfb7e00dd88d388ac72ae211d4aad14g66g74eeacdee7350b36ag5gc26cfbfc3680f588gd3fgd9b57724bde85cg4g59692c7fb0749d939e23d4g8ga181dff0ged465g57525cfe9996ded3b1a5d3319f2d14ded68b9d958ec13e26dbcfecc91363b3355a717ceea7055a6de7462f2fdd056418f34gg1f3f7fa7923efc7bgddf1b4f1465c1bace758b6g03cefa6d46804e52309g792162485c0dddbc1cdcga8g300gb26bfgcg4e88g54dgaa6e1149c32339ad96bc3b3993ab6gbg5d6638bgeb52aedad4g4b56b5c8095f406d31cc35960b4dd966d13dfdd4e3bbae781b72fa435038262ga48begfddbef73cdg4gfb0fb0fcg73f91e796d470c15543e253c5c4c8abb59g64cb4fg5e45e01g8fedf6bd5daedf9g57235e8457dd5b3866965fdb265d3a070b1a84b713g227gg6966db142637488g96067g7gfg9g6607f522caf2f9c3f1187007469f6d1dccgb67f56676g9g074c32ag41c88g79g849f554g807g511621bc3g13a57a862a39de2a54e9d549623bdgg3ebeff5a7d7cad9fb868ddeggceec6g05688f11fdg586b5dg3bd752b32c1509bdg8d351ce740dc26dfdg8g45818g5de2gcd041df00b23f809d4db010e4e03ag691151c52627185e7c399d1e5e2ec6013508d803f77057eb38440e5f161f6ee0200f81b54a33g62580002ba5b51cg16279b806740cb4455baab1f15gd83495222604fb59bd1865d569b320baba9g890cf40c90e937d492aga8aeg8ca492b0f4c85adab229874fd788d3c7d6f2f53d80830d28degd7f5ddf333eabc15b42c4f3g79d71b801d02eb7c7ec74ae4d114g66c94333ee0354445f5d35075606bb678afeeb836gg369b21fbfae95388ag831606faef32236255dbg7b515de3faebg2c9c69d71e1878529eb52ge27194ba4b91dca49e98b65ef8544g98f7652e80a62ab2494g5ebd4667g47e8c4711c0e3780ec123a65g6666c83bbad5737598810c3e208b7c991492g1e2889f78f20g7f2c3905bd0e4079910f2e88ga399b6g447g03f5c2e387bce1889f0b40e9f9c4850977ec76b6d9g8795cce18ga92bf395c3fd5b20f6edfe07edege906g219ec32d3fe83g3a5aa2ba673304ac5a2ea06d03c68d0553e315c38f9e1g56d49f8efg9743943ba11139cga4g1c8bf35gec63725508741ce16e33gcdbg4ebeece7cf9f47gf019531d5b3ad3225349d11a90f0a42f474bcc069e727189da2821e9fe6ecf82c93616d5g765d981g726f8ff87c76g7d9919184ee524a7f5e3f0d48750g5b5c4f0108914cbc925e865720ebdb79bb4589299g5d729525c', '29455060024714386814004539395764145766251.71334340573066029478166351919', 17); + T('23.23002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331', '11.69', 4); + T('120061a508.249577ab453213141118532579b5aab698b136731a654722605a56b4186564888369ab19408913065b21300b2a52216a4871491852b940695439b35428b808a49869a0b3b95750b4a45ba57738b898520349070074053a62ba67b85174887927179692101a8b3097a8b38741ba2aa0b1901312b01903248830787b488aa435514b1120b4b9985a8861670b0226677a86463a199180861b5881503242a25abb1a2870b02308931382b26550a6b5a71196ba1744b9a0b488419953a81604003636a75920011839ab69514396b4b9aa567989686b6174481659815011b1924a998086506bb827939ba9ab75625005a8716813460829894b1b848bb541bb80894b451596731308104974692350a3b114b91224bb035a5048919001b5a3313a712142214344235a559131b681425277245a068a3178612425b0902134212bb65876588135198ba5b611b9617a3b878b354236731975420144b8b7888781602168a430953a00460856317b49b12b87067a4963912601102a5a021489b500130964b9320269391888b33949510454b84a66934ab828972a00540194745660bb89771618603a92a5160444883119105843786965783125a13b02b5aaa88a26b9264b36685303b561b53bb782212948b7148344176985318232a38b41b81a19a421968072909b23255a9566639612b67a59b943ba9a5432b103087b69a8aa51102664731292a0832a65545100152192290738220371a58403611a43a989193311132236423573b86509866762584947b8527b74883594436b5409560b00398111018057b51965878457723ab43682392318a29a539a007417bb2366050a7a76a5b43046524b28b812973333b931196718741b6148742743b11575842b15977109881b187b19887a6959a4428b42a769471a356099486a3170a43b33492a78289019818b013649ab02a7427886ab757248939aa84aa12a76713472aa0880775154447862a6211763b40ba71b735b7b31b257773413a0022018631012403b20199a93a5688077a77142a8409369a64a29820569b769bb1400b4994a855671357b4254121611254b901916a2738899936250b3a09a491695720101ab201aa5b144b495511a00b92089118605214032a615a039a73034915553b88275975037a1852510b00b4380828860465a608ab8365500a1483853596461a7836b1a74993aa41129803a126035701689158795a83429977b20386b4430641140977714351832625811443b4b669206393a5a14731497b8a018b032a79602242413b88607609aa35ab8a780932480023a8b535586384b36422b66340732119b8697a86123a955b964813b3a93a1a6bb987361a489a51343710bb1792a67b19567612731724b7060338a96781270a00457501aa9b0b7309160368135550351a84472882871657207a506a65b77b5779680068b3b2566a72a8a1707b584b541b0424922a7990b28b363a755a84b86724568b56387415900450758812974586682177351088b13b429ab35783171225b62ba33a6672b342204710b678b8b8565224a92a3b4075014b05031300a9321b50ab26248313a42a011a229553a7184227a7977a6a6232298700a3a83b01a96430a153097541734043765151b4b2216a96298059a701b689649973263b35340626694376085787021b0947b24bb5755504678825a487719a8255553309339b3877a245401580aab69aa238b7348837933315018030866b13a302490925a44041520156005b6120b47167a755023078a174b0578857b218511708896a1993b356874393627237bb347a72452ab35158077911492909a535a06444a5439840a525987461aa4448a4b41a40136629908687473a445526b72249ab2873b9808725094161a4552041965273aa69424a18b75529015403a5005904ba9588427ba12a36409b76265925ab369b062a966602b5995365ba4a07235b9986789a14a642226049b160132340b07ab06764bab162446a884792913612130784749a90363b82ba56a0611329778888ba4076a279a15a7539266b511b50132a5b1b6988762a00b4502807a2470859035b63b157ab25a6698455223a5655a5895063a020161a8670484b8211bab5831606a098a30521b67a31407716045a862952b6707a497b555392b32498b94678a797b46a1bb276ba7267753b79b67a947657643885735062762a291422b351a772b9b0513b4b1598419768b5410260142991521890716a87750651a296041887b2901b843013688142329b2b164302097840735a84140158582607b3025093487907326181587aa09a08b034843510b646430518051bbb533504685b85bb985895aa4aa7a655a9a389076a17367259343a7107769146a4505524b1773037507578a5b179916105b718aaa69b305008309211a01a23629934b73573396aa4410644abaa274053720bb077a91b1a0898b9677795246288951221bb47080226052832918548499352b4209b78538a398052a56b03002679075321330a59a900192b2146b944976094109a047a367590972a409167760668279bb16b866671b2798991b61407770b3ba67a8889077b5124b657244b949b36062389702383a117583053102175081866232635ab4824239a53554652920a58ab5b51291a5a42a49b488211a2932ba8320000640b0237810a995647467238544155a8717335829293b232a6664840ba6ba66954b5202abbb135813224708976101210a7042a301a4677101b3367765796287b4a1ab791602a769a62207a84153a16857271a9a4849986243b6a6b1735469492993a52349447b2b850ab793201a112053254a8a34ba01377a12543594045735815272561132577824032932a8172281b20b09703857459186b7aa422165103a2423a826127648976b58a22122ba7091480496291124a66671434b18715295545a43b587955755ab780564a3a5a601614553145aa16357282ba9955b0b84255951a9b62a7423a120b008b8739a76a86599774a4967b6209b193ba013b116881b078903a907379608a48a5958a9657694ab9942299a92b1884040667487108a2556968004612386970b020044a1763216658265586b8901a4259172b992519ba2194ab8bb4a84a7a6b936370842254a32b5801612418b4805ba4512b1aa9b3985358a358a0a0843606827b5941774642b846b46ab3526542ba952374736b54ab608a40b9bb18a896178b26999503b9a63486003684255884907311039200b90a30705515a6b3b5933b87429842720b841004078a07691b3006014ba97217b96439539406840bab24a70b35a264718bb6a0502021a4217345660535a40b638a88170222383524b04a2b1440b40b94413b7b69804169199744383bb9b5255b80a0999a13715770075351a6a7579544b30a8970a64599b3968297632a501413499867a6a457a05781229b8179710440559b57a03338950bb4160463b6a81554b3190329955b069054b17b5218233125186098888279248485b3a01b27359890727435188a28485882708318a593a7036514560b65b8248013a51381403b96bb205883992484b49901078ab7654937516138480a39501a7624946822a4641905500782285807092051265b12a9759391425934053b863a94839137573b000b737a9909b3627297009484220a8543277116973311550588830a59303462b4a5703471773a3407266948561528443a2b95208b96307900356228b177bab91a67281b330829683116b0792b803a031087163374539b50b988b75575a109a312992b66a2919731054333205269390a991586734a327272814ba95b5880ab30a8203415623216801207a4343b30a3469b902b0246b5ba8a7a26a8904aa72a3866611897443295064aa71bb573b7b738b20830382b3012100a865ba199a8bb44763932497477042537162a613810514bbb818323aa9172a773952624651918aa9043b3364512b2400491a3800a1a1239507141228a9324228345414b0a31a8956997a6128a80794047662a46308a7b394b00648797a61221855a0746a29b32a971ba55b52a96b153b2575073bb8045077b75b263b43733619a7b12bbb1a483654ba584b1193146521133995438b122a89b50498939145b77aaa01b76594a6413aa84a3b42842a9200503a5138b27007b95a1a5b140198319606467b40961a89574b34055733b2193918b87a99994297757809287245ab5586986066720bbb5ab922527304349a011831678b29bb623400ab52870ab1a414114754210088996b82a82a43b175427216094363394b71a71997561a63485a13ba06519165a85948a652168a684a23aa8b8428a592249b259a64666a34b8937b36536450b013abb126b56027305191a8b3bb2a6491982a903a7ba733b9a20b702b39553a634438687020a585b0b3316a20b749171b41a09b5817532213521b072bb15871825b0a275636a0b9901328404b1189983852468b3a942551382301669bb248286958131579054a30b47628a9807a3b014842099346845673028634726526809503b7126435830587aaa58a6a0aa712a464676380bb4424b0b74925808bb4a8011a38740a69678855693262850a4903aa98402871a53655a08794b680240110b399455b1152478a55b254908b839378846351320b8994a3092556561a2878b791a09486892a0414510938840b1a2881132353445b5095880488b81502b7b3ba93b5a82b4820187a4a1a517854679983b0821b8066a761368a5a850621025b592b57010718605b42277966a1353349473a46809696808214aa7716b368429471a764634747a86308a9317511a02a80567463a052ba29a77410835403815b979347989475919631324110588119b702593aa590a1682bb8b1773bb7aa244869a4a5633900a876a57892505a359373b208088a9805ba791564055396074116523893494b31a9949b8983701425b3651aa67210611108b59b4a73100508b481467a399b05393208769134496817527a214238169177065015370964830190138425556997798060960894533410274065287a08b9bb004233555115084b2116054034406b912099554306202a0a22b88494879241443a5316792b6a4b9bb603b908a1ab327aa685267b24a87a145643134b2a001b25a6a64917148b27476a4b3814831261127b4ab996b79092405578737a304849369b06667593a47066a74168a713a759399647b350648a452011ba895695a471896b91825b756833794946060b540818bb4a5b0462242a01aa444076a535b2077388860a506ba6477789752a4b8144458a372131399b7294706a053363078105261ab5808737621a19754256a7805206ba5ab72516b72a1085a65b096807508bb05776877331857378439790711a6b608358182834361b90169786b86546088836088346b76a87b097826194a47b8a488a60bab29bb708379b086280592a5710601908b0980ba9b1a3530b1b26a77815b82b4b4a2401bb9b460000a480873b5322435295837353644693860767589100b307054615a791650840199b8122b0138b2b41007374a441322243367a341335b9335766186b333b9a515877598b42612738a36a4571', '6021275480.19992468556125044489507', 12); + T('3203001330102013.21130321012302133220331003232330122103203301112100203330232322130110130100232123110222112233321113010300311221303100223100220003133232311223111122202300331320123002102212012310230132322003033131231212020000123100033313033011121012110101000120331113033033223012323213003130323010323001322210131131003300101220322331110202100320100121202012332232311330013101003220231301111311112301312012032112222032203301103200110232000133232210330301001122322320123031012132313230322320230311321133313323002012300020201311130101020130002333021133101231212122032222121110213303112203111320130330002333033320233002012133101310320330031300232120023030123103031130130200212222222300321123121021133202122110030202031112003303322003001201202013001103311132101200300133122302112221330320013331223030231200212122313323322320303210012021201132023003103201132300202322130322310010311113332133232223313213011232113232223011211011211201120033112332323010031010231310330012022210311023112312220131323203230111021202221330013333313320132000132301300013330201232332121312333321222023330202312102122333313302123020000123313301022113213000112231331132331221331020200310000031231022121323101100130020011330231200312023311013011100212230013122120303212313331032031200213201230013320203103121100333112300110131211121012113202202332331201311011201120233322230020302222002230211012233033000133120120013000022221101132223212233331222102321103202202110301223303032100312313221223331003322110021022102133103003320231112202331221100011022033113023101203002133013123321031230330013310031112222033132320302102311331103313210031300111222112133302112020020202320002011122331003011321333312212023301333132332331232221313011132033200001322323000211332013103312011332012032131311331122313012211022322312000231333002000311302013312103103211012113200012131332013302030121132321120211011032200102030323211023010120131332101212110103113002011322302112220332032302313300312231310021302030100221111002133331312100233323020221321123021212120311112012313121121033230223310323103023313312012220111331110123310333212030321201011102003012312011301232320123112311011131000111212122232310002303002111301201323030331301000130230010232313301222103321121101311301110012103313121023321013201310023003131100323212013330312031120200123113221100122101203212223001103003011001010301223310320222313032202022200021110223320121331303110013021303303320003313133203132312232121200300232130033320110333222233120312132113321013300020100023203300310232022103300122121002003132100331203013100011121330331221331002222303113300331003022322032223133000200110103200320223022231213012033011022211022220113102320331121101100213220121021233123333123111313021210102130310113012101020132211220001130102112133323203320201110002102133112021000230231103132112010302131201103000301302331223023221121231230210122000231223103022202122223000311200121002100312312302121013002102312100323132332321302222003011203333101232132213233210011222101200330200212221202321212022000133121301300213322231130012230130330200302333231121131332211003232303121201201132220010213310002300233023130133303201012010333011212100011322222031210022310011023132022301210133132112011321300323232321331110200132320320131220120202021303331033030223032121203002000320101133303010111010011221133310000322233032202212123000120211120112222031021012112022112223202332021133002111302002213100332312110120013301220002101131331313311010020231322210223212133231202012023202200130322012301223331020012223131233211001201110303230332100113010100303032121232321303011230001213031221101132213233323211213131032222102231103001231011122002211233013220321213203002101213323022231231331013131333201220030110310201122310122023022202100011233012031102200300021233112223022323022212121221122203120002333232102130101002123203210020223101333103203302023200220002030201031330011331101000323121100333032101112230000013221031213333301000310201101011213031032210211020011132323200232333013130320113212010220332230031302103232012302111302133302331311121333212130103123312301131230320320332002313000022100123102321212000330122202230311030103233002020020123113120120312001032132131123003311321213201120203301210312021022320123020031232003301002221322022010220033301223033131322011121313020321030023121031221222111020000133113022111032102023213113011310212233320232120113303102122233300201102222232201111220130230213230232332010122332130013320123113332113301223231231321331203211033230213031200031001001222001213110310221321010003221123100001222232213311110032311031010031131002131311302112221213000222220010123230120312113121222322221010332321201330311301221032332322011012131102002102331002223021033221110002121221231023212333023133232330330130303100133001300230301100303033133100021021030212323313010332210213013231022003023311303012010000031102222221213220232130010330310013210200231330320031302201330120113123321223202023032112210231030322032001201032231000033322312001331333211230233022223110122212002200230121022213020222230201302102323232112100133011302320032300000003030200212011333203121001322130313003331320203000202200311020313120120031101012023312300230133003110321222100211311331112023031011112130101213032303131312031022010031300222301332200302310331210013213220223231212010011133301033221132210330320010330311013213133121113023000103020030211203021103333231301300013133310022032132133121033023233000203313023000103030121223110012221213213021102312310200301301221301011010202022023010301301131031102000001223011213013020331301013130223310121220212332012201221121223000002301230022110322032032111220300320302332313112331011330313320023321033312112233300122302100100033321210220010123030313232223222303003103230211213220022022123201012320211203300001102311003331021230013203013220230221031202320301320010120110320220301320013332030131030020321302201201321312221111132111202113111322020203223303102103112133122320330012221020131020300302131010323013101311032233111312021131202230010303013023203112023102302100133123011022013220310331120030113122122112032203200222223333223021102123300102111233202311311112121220233011333111023103300322233201100223001103131003321220302320333331320023221103112222103211210032300312320303123133312330322020210323210102230111123302323232020130310000302133022221210000311313103100031301133012123010010332210221033213313001113100121232010001030231110133000221313201002221101321333022203030212010222220021120302001330202310113112101130220202013302113212220220032200023223031331321130030301023111321233030121133321313033323102211310312331013211233120220103231103011312113201102100000102001311003221003032111013103132002010110010330223323211313102310011212331221113310231000230110311022101031201102003021031233233032222200322030102302010301301301230000103020022120112223010000233232233033021231203302100220021121330233021213232130333201113110332310022330102000123303232330111233121120312231102322301312301332233031033122121211120011333020012121231301003200330122103123210110321232122203313130300233230130121031002022112202203223013003110221303320322331031232220302011113201313232122213103013222122110023321321220012032022203000103110010021223311300333231322100133211301013230310213130312131100313101120233012133112231131213101321212212020323101113212101303013111332322120203011300000333112101120312320132222103011113023123103012232231132332012302020331010231300122310123201302113011230232101003120120313210033023212302321130133002331131111210301102212011330222120231233020101201321121330003103112333030203010232231332303312323322311132303322320110010121330132011212221213030302210230300300011202213303210202321102312202310330030030203212210111010123120010210202033220330321311233111102312230223012220100002210111212233222213320013321112332123130230213210230300000330222003000101111220202121023022032133021133020033013000223023111212101333130121300222223110311202032311123113320321110320021112123221210122020030010021011033210002222203132122111221103033313333103023210330321030211023120003002011113120313221020213012022', '3808937095.590715119594237', 4); + T('54653.68070046573261541121862517647550787228401443358303680700465732615411218625176475507872284014433583036807004657326154112186251764755078722840144335830368070046573261541121862517647550787228401443358303680700465732615411218625176475507872284014433583036807004657326154112186251764755078722840144335830368070046573261541121862517647550787228401443358303680700465732615411218625176475507872284014433583036807004657326154112186251764755078722840144335830368070046573261541121862517647550787228401443358303680700465732615411218625176475507872284014433583036807004657326154112186251764755078722840144335830368070046573261541121862517647550787228401443358303680700465732615411218625176475507872284014433583036807004657326154112186251764755078722840144335830368070046573261541121862517647550787228401443358303680700465732615411218625176475507872284014433583036807004657326154112186251764755078722840144335830368070046573261541121862517647550787228401443358303680700465732615411218625176475507872284014433583036807004657326154112186251764755078722840144335830368070046573261541121862517647550787228401443358303680700465732615411218625176475507872284014433583036807004657326154112186251764755078722840144335830368070046573261541121862517647550787228401443358303680700465732615411218625176475507872284014433583036807004657326154112186251764755078722840144335830368070046573261541121862517647550787228401443358303680700465732615411218625176475507872284014433583036807004657326154112186251764755078722840144335830368070046573261541121862517647550787228401443358303680700465732615411218625176475507872284014433583036807004657326154112186251764755078722840144335830368070046573261541121862517647550787228401443358303680700465732615411218625176475507872284014433583036807004657326154112186251764755078722840144335830368070046573261541121862517647550787228401443358303680700465732615411218625176475507872284014433583036807004657326154112186251764755078722840144335830368070046573261541121862517647550787228401443358303680700465732615411218625176475507872284014433583036807004657326154112186251764755078722840144335830368070046573261541121862517647550787228401443358303680700465732615411218625176475507872284014433583036807004657326154112186251764755078722840144335830368070046573261541121862517647550787228401443358303680700465732615411218625176475507872284014433583036807004657326154112186251764755078722840144335830368070046573261541121862517647550787228401443358303680700465732615411218625176475507872284014433583036807004657326154112186251764755078722840144335830368070046573261541121862517647550787228401443358303680700465732615411218625176475507872284014433583036807004657326154112186251764755078722840144335830368070046573261541121862517647550787228401443358303680700465732615411218625176475507872284014433583036807004657326154112186251764755078722840144335830368070046573261541121862517647550787228401443358303680700465732615411218625176475507872284014433583036807004657326154112186251764755078722840144335830368070046573261541121862517647550787228401443358303680700465732615411218625176475507872284014433583036807004657326154112186251764755078722840144335830368070046573261541121862517647550787228401443358303680700465732615411218625176475507872284014433583036807004657326154112186251764755078722840144335830368070046573261541121862517647550787228401443358303680700465732615411218625176475507872284014433583036807004657326154112186251764755078722840144335830368070046573261541121862517647550787228401443358303680700465732615411218625176475507872284014433583036807004657326154112186251764755078722840144335830368070046573261541121862517647550787228401443358303680700465732615411218625176475507872284014433583036807004657326154112186251764755078722840144335830368070046573261541121862517647550787228401443358303680700465732615411218625176475507872284014433583036807004657326154112186251764755078722840144335830368070046573261541121862517647550787228401443358303680700465732615411218625176475507872284014433583036807004657326154112186251764755078722840144335830368070046573261541121862517647550787228401443358303680700465732615411218625176475507872284014433583036807004657326154112186251764755078722840144335830368070046573261541121862517647550787228401443358303680700465732615411218625176475507872284014433583036807004657326154112186251764755078722840144335830368070046573261541121862517647550787228401443358303680700465732615411218625176475507872284014433583036807004657326154112186251764755078722840144335830368070046573261541121862517647550787228401443358303680700465732615411218625176475507872284014433583036807004657326154112186251764755078722840144335830368070046573261541121862517647550787228401443358303680700465732615411218625176475507872284014433583036807004657326154112186251764755078722840144335830368070046573261541121862517647550787228401443358303680700465732615411218625176475507872284014433583036807004657326154112186251764755078722840144335830368070046573261541121862517647550787228401443358303680700465732615411218625176475507872284014433583036807004657326154112186251764755078722840144335830368070046573261541121862517647550787228401443358303680700465732615411218625176475507872284014433583036807004657326154112186251764755078722840144335830368070046573261541121862517647550787228401443358303680700465732615411218625176475507872284014433583036807004657326154112186251764755078722840144335830368070046573261541121862517647550787228401443358303680700465732615411218625176475507872284014433583036807004657326154112186251764755078722840144335830368070046573261541121862517647550787228401443358303680700465732615411218625176475507872284014433583036807004657326154112186251764755078722840144335830368070046573261541121862517647550787228401443358303680700465732615411218625176475507872284014433583036807004657326154112186251764755078722840144335830368070046573261541121862517647550787228401443358303680700465732615411218625176475507872284014433583036807004657326154112186251764755078722840144335830368070046573261541121862517647550787228401443358303680700465732615411218625176475507872284014433583036807004657326154112186251764755078722840144335830368070046573261541121862517647550787228401443358303680700465732615411218625176475507872284014433583036807004657326154112186251764755078722840144335830368070046573261541121862517647550787228401443358303680700465732615411218625176475507872284014433583036807004657326154112186251764755078722840144335830368070046573261541121862517647550787228401443358303680700465732615411218625176475507872284014433583036807004657326154112186251764755078722840144335830368070046573261541121862517647550787228401443358303680700465732615411218625176475507872284014433583036807004657326154112186251764755078722840144335830368070046573261541121862517647550787228401443358303680700465732615411218625176475507872284014433583036807004657326154112186251764755078722840144335830368070046573261541121862517647550787228401443358303680700465732615411218625176475507872284014433583036807004657326154112186251764755078722840144335830368070046573261541121862517647550787228401443358303680700465732615411218625176475507872284014433583036807004657326154112186251764755078722840144335830368070046573261541121862517647550787228401443358303680700465732615411218625176475507872284014433583036807004657326154112186251764755078722840144335830368070046573261541121862517647550787228401443358303680700465732615411218625176475507872284014433583036807004657326154112186251764755078722840144335830368070046573261541121862517647550787228401443358303680700465732615411218625176475507872284014433583036807004657326154112186251764755078722840144335830368070046573261541121862517647550787228401443358303680700465732615411218625176475507872284014433583036807004657326154112186251764755078722840144335830368070046573261541121862517647550787228401443358303680700465732615411218625176475507872284014433583036807004657326154112186251764755078722840144335830368070046573261541121862517647550787228401443358304', '36255.76650', 9); + T('11010010101101010001100111001000.0000100001111101011001101100101010010010111001010010000010110101100011111100011011111010100001111111110100010010010011101010010101110011100001010011100110100010010110000101010000100000101110110000001000100000110011010101001100011101110110101000000011001010000100001111011000001000010000011001010001101111111110100101010010100001101000101001010000111011111001011101000011011101101000110000110101000011001100101001001001000011100000101100000110011000101011111001010101010111011010101110110011100011011100101000110011000010011111011000110111101011110011000100010001011000111010011011001101101010010011111001000100110010100100000111001011010000001000100111000111100001010101101100011001000100100010000111110001001101111011001010100100111100100111000010110101001011011101001000110000100000000010101111101111011011101101111000111100101000100100011011001010110101001011101001101000110101011000001111111001001111001000001011011100111110001100100101111101100011001101111101011111110011110101010011101011100010100011010001000100001111101011111101001110110010110111010111100010000000111111010010001101010010000010001110111101010100000010101011101011111001001001111110010000100110000011011110101011111110110010111101101101011111101001011001010001010110100111000000000011100111000100010011100011111011011001001100110001111111000010111001000110011011011010111010001101000110011011100000111110101100100100100101011110111101100101001010011100100110111010111010100001111110100111010010001010100001101110110101011001011001101111000111111000101100001001101000011011111001000000101001000111110101010110100100010011100100100000100110011011110001100001011011111110100001110010000000001000101001100101100110011101101100011011100111010010100000011110010010111010000101000010001000011011111101100101011000100001101101101110011001010010001010010000100111101001010010100000100010010100011111100100011100011111101000100100101110110001110011110100101101011001010110110001001111111110111011100011100011100101111000110111000010001110111111011110010001111001101101100001001110000010011101110100010001111010011101110001010010000101111101001110001110111111000001110100110100001001011001111010001100010111001100010101101111101111010010010000011001000101111101000101000001101011101001100110101101000011101001010111000000011011010110010110100000110011001001110001011001001110001001000100111000011010000101000101011001101010000111001111011011010000110110010111010011011110011011010111001101001101110100010111000110100110111001110110110000111100101100000100100111110111110111011001101101010000100010010010100011011011011011110111010000111010101001000001011011100011111010111110100011111101100110101000111010110110000111001011011101101100100011010101110011001001011001100110100111010111100000011000100011111011010110101111011100001010101001000011100011001111011110111010010100000001011000001000011110100011110001011000100000011111110000000101000011011100001000000010011101011110100101110100101100010101100000011110011001101010101000101111100011011000000001100110110011100011011110101011101111111001010011101110001000010101010001010010101110101111000001111101100110110100000100001001010000110110111000001000011111010101011001010000110001001000001001101001011000101001000111101111010010110110111001001100110101100100001101100110101100010010111110101010111011001011100110100111100011010100101111010001111100001101111101101100000010111010101010010011101110100111001101000010100010010010000111011001101001100010101110100001101010110011111110101100001001100111101110101110111011010011011001000010000010010101111110100000010111010110100101011010111000111011001010010111110100000000100101110111101100110101011000110001101101000010100010000011111111101110111100010000000111110001001110011101010101010000011110011100001100110111001110001010011100000101100011111110111100101001110110010000110101011100110111010011100011110000010110111110111101100110011101011111001100100101011111010001001110110000101011010101100000100010000011000111010001101010011100110111011100111001110010001000010100100100000000111000100001011010000011010000001101101000000011011111011000101110100101101101000000110001100010000101100001000000110000100110000010100001100000110000000110000000100001000000110010001010111010110100111110000101100111001100111000111010010110010100111010100100111100000010010011101000101010101100000010011110110000001000011000001111111010001001000001101111011000110101000011010101000100001000000100000001011101111110111001000011001110100101011001010010110000101110100010111011111001110101111011010011101000010000110110101100101100101101100011101100100011001110100110010010110110101110010110001001010000110111100010100100001100001011010001011000000001010100011000010001011110010000001111001011010111110110110001111011110000110101111111010110101011011001101000100111010111111110010010001101110111010100100110011110110111000100001111101010011010100000001001111011110111011001011110100001001010111011111000000110010111110000110111011101001111010000111011011000010010110110110011110101110010100100001100100101000000011100000001000001110100110110010111110111101110010000111101000101111011100011101001100110101001101000010111110000010101000111111000001110000010011010001110101011000111101101100001010100000000111110010000011000100110001101101001011001100111001000110110111011101110001101101001111100000010111010111100101100101001011110010100000001100000010001111101010111100011110001100110110000011001101010111011110000100101110100100000100111001001101011000010010110100001000100110101111101111001010001011100100010101011000010011111111110100101000101000100000011110010101000010001100110010001010101011000100011011111011010100111010111101111111010111000110101100111111001001100011010111000101110000111100101010011100000111100010010100000000100010001111110000001000011011000010110010001110111101111101101110110000101101010101110110110101110011010110101001001010000010000011001101010111011110011010001110011101010110010111111110000011000010010101101001001011101100000110000111000100101110111110100100100000011000101100100111011111011110001110101010101001010010010010110011111110011011110111001110110010011010101001000011111011010000010000110001010101110100101001101110111010100001001011110101100100110110011100010001101101001001100000000111100001001000101000011001000011111000111100101101010001110010111011011100100011110110111011000001111110100001111010001100111111100010111010000010010101100001110001100011001000110010100100011011110010111010011100010011010000001010010101010000101011101111110110100010010000010100001100101101101110111010110011110010101010111100001101001110111111110110100011110111000100101100111001000001110101001011011010100101001111011110000111110111110011100110110011001111100100100000111010110001000010111101110100011011110010111000010111101100000000111100000000001101101111011110001110001001110010100010011111100100001110101110010001111011111010101011101111010000011000100101100110000100001111101101011001010000110111010010011001111011000010101111011101001011010001101100010001100111110111111101000110000010001001001111110110101010011011100100111100101101011101111010101010001000001101010000110101000100100011011000100011111000001000000000001100001011100011110110110000000100110111000010101011101101110010000110100110111001001010010100100100100000101010000100000010110000001100010111100110010100010010000010100101100011111011000111111100011001000001100001110100100101001111111000010111001101011010100100010010011011000100100010011101011111110000111000101000110011100011001001100000110001101011101111100110101001110010110110100111111001111011001010001101101011000011011110111010101110000010111011010001010110001010001001111101101011111101100101101001000101100111000001010011111110110111011101110010100101110110111110110110111101100111000001000100101111110001110000000011101011011001010110110111000010101000010110011011111111011010001000010010010111011101101101010010010100101111110101000010111100001111111010001000101111100110011100000001', '3535083976.0331634754719698597483934067029600647308860151850713734', 2); + + */ + + BigNumber.config({DECIMAL_PLACES : 20}); + + assertException(function () {new BigNumber('2').toString(0)}, "('2').toString(0)"); + assertException(function () {new BigNumber('2').toString(1)}, "('2').toString(1)"); + assertException(function () {new BigNumber('1').toString('-2')}, "('1').toString('-2')"); + assertException(function () {new BigNumber('1').toString('1.9')}, "('1').toString('1.9')"); + assertException(function () {new BigNumber('1.23').toString(36.01)}, "('1.23').toString(36.01)"); + assertException(function () {new BigNumber('1.23').toString(37)}, "('1.23').toString(37)"); + + assertException(function () {new BigNumber('1.23').toString(NaN)}, "('1.23').toString(NaN)"); + assertException(function () {new BigNumber('1.23').toString('NaN')}, "('1.23').toString('NaN')"); + assertException(function () {new BigNumber('1.23').toString([])}, "('1.23').toString([])"); + assertException(function () {new BigNumber('1.23').toString({})}, "('1.23').toString({})"); + assertException(function () {new BigNumber('1.23').toString('')}, "('1.23').toString('')"); + assertException(function () {new BigNumber('1.23').toString(' ')}, "('1.23').toString(' ')"); + assertException(function () {new BigNumber('1.23').toString('hello')}, "('1.23').toString('hello')"); + assertException(function () {new BigNumber('1.23').toString('\t')}, "('1.23').toString('\t')"); + assertException(function () {new BigNumber('1.23').toString(new Date)}, "('1.23').toString(new Date)"); + assertException(function () {new BigNumber('1.23').toString(new RegExp)}, "('1.23').toString(new RegExp)"); + assertException(function () {new BigNumber('1.23').toString(2.01)}, "('1.23').toString(2.01)"); + assertException(function () {new BigNumber('1.23').toString(10.5)}, "('1.23').toString(10.5)"); + assertException(function () {new BigNumber('1.23').toString(true)}, "('1.23').toString(true)"); + assertException(function () {new BigNumber('1.23').toString(false)}, "('1.23').toString(false)"); + assertException(function () {new BigNumber('1.23').toString(function (){})}, "('1.23').toString(function (){})"); + + T('NaN', 'NaN', undefined); + T('NaN', 'NaN', null); + T('NaN', NaN, 2); + T('NaN', '-NaN', 2); + T('NaN', -NaN, 10); + T('NaN', 'NaN', 10); + T('12.345', 12.345, new BigNumber(10)); + T('12.345', 12.345, null); + T('12.345', 12.345, undefined); + T('12.345', 12.345, '1e1'); + T('Infinity', 'Infinity', 2); + T('Infinity', 'Infinity', 10); + T('-Infinity', '-Infinity', 2); + T('-Infinity', '-Infinity', 10); + T('101725686101180', '101725686101180', undefined); + T('101725686101180', '101725686101180', 10); + + BigNumber.config({ERRORS : false}); + + T('2', '2', 0); + T('2', '2', 1); + T('2', '2', '-2'); + T('2', '2', 1.9); + T('1.23', '1.23', 36.01); + T('1.23', '1.23', 37); + + T('NaN', 'NaN', 'NaN'); + T('NaN', 'NaN', undefined); + T('NaN', 'NaN', null); + T('NaN', NaN, 2); + T('NaN', '-NaN', 2); + T('NaN', -NaN, 10); + T('NaN', 'NaN', 10); + T('12.345', 12.345, new BigNumber(10)); + T('12.345', 12.345, null); + T('12.345', 12.345, undefined); + T('12.345', 12.345, NaN); + T('12.345', 12.345, 'NaN'); + T('12.345', 12.345, []); + T('12.345', 12.345, {}); + T('12.345', 12.345, ''); + T('12.345', 12.345, ' '); + T('12.345', 12.345, 'hello'); + T('12.345', 12.345, '\t'); + T('12.345', 12.345, new Date); + T('12.345', 12.345, new RegExp); + T('101', 5, 2.02); + T('12.345', 12.345, 10.5); + T('12.345', 12.345, '1e1'); + T('Infinity', 'Infinity', 2); + T('Infinity', Infinity, 10); + T('-Infinity', -Infinity, 36); + T('-Infinity', '-Infinity', 10); + T('101725686101180', '101725686101180', undefined); + T('101725686101180', '101725686101180', 10); + + log('\n ' + passed + ' of ' + total + ' tests passed in ' + (+new Date() - start) + ' ms \n'); + return [passed, total];; +})(this.BigNumber); +if (typeof module !== 'undefined' && module.exports) module.exports = count; \ No newline at end of file diff --git a/node_modules/mysql/node_modules/bignumber.js/test/browser/bignumber-vs-number.html b/node_modules/mysql/node_modules/bignumber.js/test/browser/bignumber-vs-number.html new file mode 100644 index 0000000..4820356 --- /dev/null +++ b/node_modules/mysql/node_modules/bignumber.js/test/browser/bignumber-vs-number.html @@ -0,0 +1,306 @@ + + + + + + Testing BigNumber against Number + + + + +
      +

      Testing BigNumber against Number

      +
        +
      • + + + [ decimal places ] +
      • +
      • + + + [ decimal places ] +
      • +
      • + + + [ significant digits ] +
      • +
      • + + + [ decimal places [ , rounding mode ] ] +
      • +
      • + + + [ maximum denominator ] +
      • +
      • + + +
      • +
      +
        +
      • + + + Rounds away from zero +
      • +
      • + + + Rounds towards zero +
      • +
      • + + + Rounds towards +Infinity +
      • +
      • + + + Rounds towards -Infinity +
      • +
      • + + + Rounds towards nearest neighbour. If equidistant, rounds up +
      • +
      • + + + Rounds towards nearest neighbour. If equidistant, rounds down +
      • +
      • + + + Rounds towards nearest neighbour. If equidistant, rounds towards even neighbour +
      • +
      • + + + Rounds towards nearest neighbour. If equidistant, rounds towards +Infinity +
      • +
      • + + + Rounds towards nearest neighbour. If equidistant, rounds towards -Infinity +
      • +
      + +
      +
      + + +
                   BigNumber ERRORS:
      + + + + +
      + + +
      + +
      + + +
      + + +
      +
      +
      +
      + + + diff --git a/node_modules/mysql/node_modules/bignumber.js/test/browser/console-errors.html b/node_modules/mysql/node_modules/bignumber.js/test/browser/console-errors.html new file mode 100644 index 0000000..a2b5edb --- /dev/null +++ b/node_modules/mysql/node_modules/bignumber.js/test/browser/console-errors.html @@ -0,0 +1,477 @@ + + + + + BigNumber Errors + + + + + + \ No newline at end of file diff --git a/node_modules/mysql/node_modules/bignumber.js/test/browser/every-test.html b/node_modules/mysql/node_modules/bignumber.js/test/browser/every-test.html new file mode 100644 index 0000000..4f53d70 --- /dev/null +++ b/node_modules/mysql/node_modules/bignumber.js/test/browser/every-test.html @@ -0,0 +1,74 @@ + + + + + Testing bignumber.js + + + + + + + \ No newline at end of file diff --git a/node_modules/mysql/node_modules/bignumber.js/test/browser/quick-test.html b/node_modules/mysql/node_modules/bignumber.js/test/browser/quick-test.html new file mode 100644 index 0000000..3b21f69 --- /dev/null +++ b/node_modules/mysql/node_modules/bignumber.js/test/browser/quick-test.html @@ -0,0 +1,12 @@ + + + + + Testing bignumber.js + + + + + + + \ No newline at end of file diff --git a/node_modules/mysql/node_modules/bignumber.js/test/browser/single-test.html b/node_modules/mysql/node_modules/bignumber.js/test/browser/single-test.html new file mode 100644 index 0000000..23d180c --- /dev/null +++ b/node_modules/mysql/node_modules/bignumber.js/test/browser/single-test.html @@ -0,0 +1,33 @@ + + + + + Testing bignumber.js + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/node_modules/mysql/node_modules/bignumber.js/test/ceil.js b/node_modules/mysql/node_modules/bignumber.js/test/ceil.js new file mode 100644 index 0000000..8ecbeb7 --- /dev/null +++ b/node_modules/mysql/node_modules/bignumber.js/test/ceil.js @@ -0,0 +1,208 @@ +var count = (function ceil(BigNumber) { + var start = +new Date(), + log, + error, + undefined, + passed = 0, + total = 0; + + if (typeof window === 'undefined') { + log = console.log; + error = console.error; + } else { + log = function (str) { document.body.innerHTML += str.replace('\n', '
      ') }; + error = function (str) { document.body.innerHTML += '
      ' + + str.replace('\n', '
      ') + '
      ' }; + } + + if (!BigNumber && typeof require === 'function') BigNumber = require('../bignumber'); + + function assert(expected, actual) { + total++; + if (expected !== actual) { + error('\n Test number: ' + total + ' failed'); + error(' Expected: ' + expected); + error(' Actual: ' + actual); + //process.exit(); + } + else { + passed++; + //log('\n Expected and actual: ' + actual); + } + } + + function T(expected, value) { + assert(String(expected), new BigNumber(String(value)).ceil().toString()); + } + + log('\n Testing ceil...'); + + BigNumber.config({ + DECIMAL_PLACES : 20, + ROUNDING_MODE : 4, + ERRORS : true, + RANGE : 1E9, + EXPONENTIAL_AT : 1E9 + }); + + T('-2075364', '-2075364.364286541923'); + T('60593539780450631', '60593539780450631'); + T('65937898671515', '65937898671515'); + T('-39719494751819198566798', '-39719494751819198566798.578'); + T('92627382695288166557', '92627382695288166556.8683774524284866028260448205069'); + T('-881574', '-881574'); + T('-3633239209', '-3633239209.654526163275621746013315304191073405508491056'); + T('-23970335459820625362', '-23970335459820625362'); + T('131869457416154038', '131869457416154038'); + T('-2685', '-2685'); + T('-4542227860', '-4542227860.9511298545226'); + T('2416872282', '2416872281.963955669484225137349193306323379254936827'); + T('-757684868752087594264588207655', '-757684868752087594264588207655.27838048392835556'); + T('-438798503526', '-438798503526.2317623894721299587561697'); + T('801625782231888715214665', '801625782231888715214665'); + T('-91881984778675238', '-91881984778675238'); + T('327765350218284325239839632047', '327765350218284325239839632046.91682741746683081459605386'); + T('-7469045007691432294', '-7469045007691432294.362757245'); + T('8365540212937142194319515218790', '8365540212937142194319515218789.4106658678537421977827'); + T('-14108', '-14108.495051214515'); + T('49104502', '49104501.10055989379655329194309526150310568683504206945625'); + T('131370407', '131370406.330005158136313262837556068534122953'); + T('3017', '3017'); + T('-689', '-689.6944252229740521128820354989299283'); + T('73441822179', '73441822178.572653'); + T('-2329', '-2329.42655772223486531483602927572548264457'); + T('-834103872107533086', '-834103872107533086'); + T('-1501493189970435', '-1501493189970435.74866616700317'); + T('70592', '70591.2244675522123484658978887'); + T('4446128540401735118', '4446128540401735117.435836700611264749985822486641350492901'); + T('-597273', '-597273'); + T('729117', '729117'); + T('504', '504'); + T('4803729546823170064608098091', '4803729546823170064608098091'); + T('24147026285420507467578', '24147026285420507467578'); + T('-6581532150677269472829', '-6581532150677269472829.38194951340848938896000325718062365494'); + T('-131279182164804751', '-131279182164804751.430589952021038264'); + T('2949426983040960', '2949426983040959.8911208825380208568451907'); + T('25167', '25166.125888418871654557352055849116604612621573251770362'); + T('4560569286496', '4560569286495.98300685103599898554605198'); + T('14', '13.763105480576616251068323541559825687'); + T('176037174185746614410406167888', '176037174185746614410406167887.42317518'); + T('9050999219307', '9050999219306.7846946346757664893036971777'); + T('39900924', '39900924'); + T('115911043168452445', '115911043168452445'); + T('20962819101135667464733349384', '20962819101135667464733349383.8959025798517496777183'); + T('4125789711001606948192', '4125789711001606948191.4707575965791242737346836'); + T('-6935501', '-6935501.294727166142750626019282'); + T('-1', '-1.518418076611593764852321765899'); + T('-35416', '-35416'); + T('6912783515683955988122411164549', '6912783515683955988122411164548.393'); + T('658', '657.0353902852'); + T('1', '0.0009'); + T('1', '0.00000000000000000000000017921822306362413915'); + T('1483059355427939255846407888', '1483059355427939255846407887.011361095342689876'); + T('7722', '7722'); + T('1', '0.00000005'); + T('8551283060956479353', '8551283060956479352.5707396'); + T('1', '0.000000000000000000000000019904267'); + T('321978830777554620127500540', '321978830777554620127500539.339278568133088682532238002577'); + T('2074', '2073.532654804291079327244387978249477171032485250998396'); + T('677676305592', '677676305591.2'); + T('1', '0.0000000000006'); + T('39181479479778357', '39181479479778357'); + T('1', '0.00000000000000000087964700066672916651'); + T('896', '896'); + T('115083055948552475', '115083055948552475'); + T('9105942082143427451223', '9105942082143427451223'); + T('1', '0.0000000000000009'); + T('1', '0.00000000000000000000004'); + T('1', '0.000250427721966583680168028884692015623739'); + T('1', '0.000000000001585613219016120158734661293405081934'); + T('1', '0.00009'); + T('1', '0.000000090358252973411013592234'); + T('276312604693909858428', '276312604693909858427.21965306055697011390137926559'); + T('1', '0.0000252'); + + T(2, new BigNumber('1.000000000000000000000000000000000000001').ceil(NaN)); + + // ---------------------------------------------------------------- v8 start + + T(0, 0); + T(0, '0.000'); + T(0, -0); + T(Infinity, Infinity); + T(-Infinity, -Infinity); + T(NaN, NaN); + T(NaN, 'NaN'); + + T(1, 0.1); + T(1, 0.49999999999999994); + T(1, 0.5); + T(1, 0.7); + T(0, -0.1); + T(0, -0.49999999999999994); + T(0, -0.5); + T(0, -0.7); + T(1, 1); + T(2, 1.1); + T(2, 1.5); + T(2, 1.7); + T(-1, -1); + T(-1, -1.1); + T(-1, -1.5); + T(-1, -1.7); + + BigNumber.config({EXPONENTIAL_AT : 100}); + + T(0, -1e-308); + T(-1e308, -1e308); + T('2.1e+308', '2.1e308'); + T(0, '-1e-999'); + T(1, '1e-999'); + + T(1, Number.MIN_VALUE); + T(0, -Number.MIN_VALUE); + T(Number.MAX_VALUE, Number.MAX_VALUE); + T(-Number.MAX_VALUE, -Number.MAX_VALUE); + T(Infinity, Infinity); + T(-Infinity, -Infinity); + + var two_30 = 1 << 30; + + T(two_30, two_30); + T(two_30 + 1, two_30 + 0.1); + T(two_30 + 1, two_30 + 0.5); + T(two_30 + 1, two_30 + 0.7); + + T(two_30 - 1, two_30 - 1); + T(two_30, two_30 - 1 + 0.1); + T(two_30, two_30 - 1 + 0.5); + T(two_30, two_30 - 1 + 0.7); + + T(-two_30, -two_30); + T(-two_30 + 1, -two_30 + 0.1); + T(-two_30 + 1, -two_30 + 0.5); + T(-two_30 + 1, -two_30 + 0.7); + + T(-two_30 + 1, -two_30 + 1); + T(-two_30 + 2, -two_30 + 1 + 0.1); + T(-two_30 + 2, -two_30 + 1 + 0.5); + T(-two_30 + 2, -two_30 + 1 + 0.7); + + var two_52 = (1 << 30) * (1 << 22); + + T(two_52, two_52); + T(two_52 + 1, '4503599627370496.1'); + T(two_52 + 1, '4503599627370496.5'); + T(two_52 + 1, '4503599627370496.7'); + + T(-two_52, -two_52); + T(-two_52 + 1, '-4503599627370495.1'); + T(-two_52 + 1, '-4503599627370495.5'); + T(-two_52 + 1, '-4503599627370495.7'); + + // ------------------------------------------------------------------ v8 end + + log('\n ' + passed + ' of ' + total + ' tests passed in ' + (+new Date() - start) + ' ms \n'); + return [passed, total];; +})(this.BigNumber); +if (typeof module !== 'undefined' && module.exports) module.exports = count; \ No newline at end of file diff --git a/node_modules/mysql/node_modules/bignumber.js/test/cmp.js b/node_modules/mysql/node_modules/bignumber.js/test/cmp.js new file mode 100644 index 0000000..fc6667d --- /dev/null +++ b/node_modules/mysql/node_modules/bignumber.js/test/cmp.js @@ -0,0 +1,4127 @@ +var count = (function cmp(BigNumber) { + var start = +new Date(), + log, + error, + undefined, + passed = 0, + total = 0, + n = 'null', + N = 'NaN', + I = 'Infinity'; + + if (typeof window === 'undefined') { + log = console.log; + error = console.error; + } else { + log = function (str) { document.body.innerHTML += str.replace('\n', '
      ') }; + error = function (str) { document.body.innerHTML += '
      ' + + str.replace('\n', '
      ') + '
      ' }; + } + + if (!BigNumber && typeof require === 'function') BigNumber = require('../bignumber'); + + function assert(expected, actual) { + total++; + if (expected !== actual) { + error('\n Test number: ' + total + ' failed'); + error(' Expected: ' + expected); + error(' Actual: ' + actual); + //process.exit(); + } + else { + passed++; + //log('\n Expected and actual: ' + actual); + } + } + + function T(a, b, expected) { + assert(String(expected), String(new BigNumber(a).cmp(b))); + assert(String(expected), String(new BigNumber(a).cmp(new BigNumber(b)))); + } + + function isMinusZeroJS(n) { + return n === 0 ? 1 / n === -Infinity : null + } + + log('\n Testing cmp...'); + + BigNumber.config({ + DECIMAL_PLACES : 20, + ROUNDING_MODE : 4, + ERRORS : false, + RANGE : 1E9, + EXPONENTIAL_AT : 1E9 + }); + + T(1, 0, 1); + T(1, -0, 1); + T(-1, 0, -1); + T(-1, -0, -1); + T(1, N, n); + T(-1, N, n); + T(1, I, -1); + T(1, -I, 1); + T(-1, I, -1); + T(-1, -I, 1); + T(0, 1, -1); + T(0, -1, 1); + T(-0, 1, -1); + T(-0, -1, 1); + assert(false, isMinusZeroJS(new BigNumber(0).cmp(0))); + assert(false, isMinusZeroJS(new BigNumber(0).cmp(-0))); + assert(false, isMinusZeroJS(new BigNumber(-0).cmp(0))); + assert(false, isMinusZeroJS(new BigNumber(-0).cmp(-0))); + T(0, N, n); + T(-0, N, n); + T(0, I, -1); + T(0, -I, 1); + T(-0, I, -1); + T(-0, -I, 1); + T(N, 1, n); + T(N, -1, n); + T(N, 0, n); + T(N, -0, n); + T(N, N, n); + T(N, I, n); + T(N, -I, n); + T(I, 1, 1); + T(I, -1, 1); + T(-I, 1, -1); + T(-I, -1, -1); + T(I, 0, 1); + T(I, -0, 1); + T(-I, 0, -1); + T(-I, -0, -1); + T(I, N, n); + T(-I, N, n); + assert(false, isMinusZeroJS(new BigNumber(I).cmp(I))); + T(I, -I, 1); + T(-I, I, -1); + assert(false, isMinusZeroJS(new BigNumber(-I).cmp(-I))); + + T(0, '0.1', '-1'); + T(0, '-0.1', '1'); + T(-0, '0.1', '-1'); + T(-0, '-0.1', '1'); + T('0.1', 0, '1'); + T('0.1', -0, '1'); + T('-0.1', 0, '-1'); + T('-0.1', -0, '-1'); + T(0, '0.000000009', '-1'); + T(0, '-0.000000009', '1'); + T(-0, '0.000000009', '-1'); + T(-0, '-0.000000009', '1'); + T('0.000000009', 0, '1'); + T('0.000000009', -0, '1'); + T('-0.000000009', 0, '-1'); + T('-0.000000009', -0, '-1'); + T(0, '5.5', '-1'); + T(0, '-5.5', '1'); + T(-0, '5.5', '-1'); + T(-0, '-5.5', '1'); + T('5.5', 0, '1'); + T('5.5', -0, '1'); + T('-5.5', 0, '-1'); + T('-5.5', -0, '-1'); + + T(1, '0', '1'); + T(1, '1', '0'); + T(1, '-45', '1'); + T(1, '22', '-1'); + T(1, 0144, '-1'); + T(1, '0144', '-1'); + T(1, '6.1915', '-1'); + T(1, '-1.02', '1'); + T(1, '0.09', '1'); + T(1, '-0.0001', '1'); + T(1, '8e5', '-1'); + T(1, '9E12', '-1'); + T(1, '1e-14', '1'); + T(1, '3.345E-9', '1'); + T(1, '-345.43e+4', '1'); + T(1, '-94.12E+0', '1'); + T(1, '', n); + T(1, ' ', n); + T(1, '\t\t', n); + T(1, 'ertgrt546', n); + T(1, 'qweqwdewee', n); + T(1, true, n); + T(1, false, n); + T(1, 'e 4.3', n); + T(1, '4 .3', n); + T(1, '4.0 01e', n); + T(1, ' 4.001', '-1'); + T(1, '4.001 ', '-1'); + T(1, ' 4.001 ', '-1'); + T(1, ' 4.001', '-1'); + T(1, ' 4.0 01', n); + T(1, '4. 001', n); + T(1, '4. 001 ', n); + T(1, ' 4.001e ', n); + T(1, ' 4 .001 e ', n); + T(1, undefined, n); + T(1, null, n); + T(1, Number.POSITIVE_INFINITY, '-1'); + T(1, Number.NEGATIVE_INFINITY, '1'); + T(1, new Date(2012, 11, 4), n); + T(1, new Object(), n); + T(1, function () {}, n); + T('0', 0, '0'); + T(0, '+0', '0'); + T('0', '0', '0'); + T(3, -0, '1'); + T(9.654, 0, '1'); + T(0, '111.1111111110000', '-1'); + T(N, '0', n); + T(-1, 1, '-1'); + T(-0.01, 0.01, '-1'); + T(54, -54, '1'); + T(9.99, '-9.99', '1'); + T('0.0000023432495704937', '-0.0000023432495704937', '1'); + T(NaN, NaN, n); + T(NaN, N, n); + T(N, NaN, n); + T(N, 4, n); + T(N, '4534534.45435435', n); + T(N, 99999.999, n); + T(Infinity, '354.345341', '1'); + T(3, -I, '1'); + T(-Infinity, -I, '0'); + T(-I, -Infinity, '0'); + T(I, '-999e999', '1'); + T(1.21123e43, -I, '1'); + T('-999.0', I, '-1'); + T('657.342e-45', -I, '1'); + T(I, 123, '1'); + T(-0, I, '-1'); + T(100, 100, '0'); + T(-999.99, '0.01', '-1'); + T('10 ', 4, '1'); + T('03.333', -4, '1'); + T(-1, -0.1, '-1'); + T(43534.5435, '0.054645', '1'); + T('99999', '1', '1'); + T('3e', 8, n); + T('-3..0', 13, n); + T('0 0', -0.4, n); + T(' +3e0', 4, '-1'); + T(9.9806, '+ 1', n); + T(' +2 0', '1e1', n); + T('e3', 4, n); + T(' ', 0, n); + T(323, null, n); + T(undefined, undefined, n); + T('undefined', undefined, n); + T(null, null, n); + + T(0.04, 0.079393068, -1); + T(0.023, 0.04840192819, -1); + T(0.021879, 0.02, 1); + + T('0', '-7502', 1); + T('-1', '-0.000000000000000000295176', -1); + T('2.9', '3.23360', -1); + T('1.14', '4289', -1); + T('-3', '0', -1); + T('0.00000000000000551', '-3958.43', 1); + T('-13', '0', -1); + T('-23.382', '-16.1', -1); + T('-176.85', '0', -1); + T('1.38497', '-0.0000000561', 1); + T('3.90', '18.124', -1); + T('-239.52', '-0.00000000000066862', -1); + T('5.7', '2248.28', -1); + T('-0.00000000012', '0', -1); + T('29', '-5', 1); + T('0', '-54', 1); + T('3', '-1.1', 1); + T('-461.9', '-13803', 1); + T('-1', '0.00054428', -1); + T('-0.000000000000000683', '7', -1); + T('2', '1', 1); + T('118.608', '-4.8', 1); + T('3', '0', 1); + T('83.5', '44.9', 1); + T('-3', '-2.86', -1); + T('1138.06', '47.08', 1); + T('-2.3', '3', -1); + T('-848', '0', -1); + T('5', '2', 1); + T('11.3', '-176.3', 1); + T('-302142', '3.8', -1); + T('-9', '-38', 1); + T('0', '-1', 1); + T('6161', '-3', 1); + T('8', '0', 1); + T('-1334', '-14', -1); + T('3.593', '0.000000000000059975', 1); + T('0.0000000000000000847', '-1186.11', 1); + T('4.62', '14.47', -1); + T('0', '-319', 1); + T('23168', '8.3485', 1); + T('-16', '-1.6', -1); + T('64.3', '2108.4', -1); + T('4', '-1', 1); + T('-0.50346', '-319.6', 1); + T('10910.0', '-0.00000000000000000314208', 1); + T('1', '0', 1); + T('-0.0000000000000552', '0.00000000015', -1); + T('0', '16', -1); + T('38.4', '35.83', 1); + T('-1.1', '-0.000002850', -1); + T('0.000000000000011', '1.2', -1); + T('-50.66', '2.2', -1); + T('-1187', '5', -1); + T('174', '-1.8175', 1); + T('651.1', '-11.332', 1); + T('-1', '-0.000000000000000011', -1); + T('7156', '4.84', 1); + T('1', '3', -1); + T('0', '77487', -1); + T('51.7181', '17', 1); + T('13.132', '0.000000000000029446', 1); + T('5.4', '0.000000000000000006325', 1); + T('4.1', '-2.42', 1); + T('-5.2', '-44.1', 1); + T('-6', '15.018', -1); + T('-27.949', '-1170.9', 1); + T('0', '0.0000000000000000120', -1); + T('-3.7', '-52.1', 1); + T('-17.43', '0', -1); + T('-1.4', '-11737', 1); + T('-7.17', '615.40', -1); + T('-1', '-0.000000000000000389', -1); + T('0', '-11.7', 1); + T('0', '-0.0000039894', 1); + T('-14.15', '-0.0000011139', -1); + T('-16260', '-3.97', -1); + T('-0.00000066', '-1.3', 1); + T('-818', '0', -1); + T('-3', '-30020.5', 1); + T('-3.328', '-28.16', 1); + T('-74', '2', -1); + T('-30332', '-1.61', -1); + T('-0.00000000000000494', '0', -1); + T('-2.1', '11.6037', -1); + T('-0.0000000000000013762', '-5273', 1); + T('-0.00000000000000000002353', '1188', -1); + T('-0.00000000000000033619', '-4', 1); + T('3.2', '-597.81', 1); + T('14265', '0', 1); + T('-18.8703', '1', -1); + T('-4.5', '-146.5', 1); + T('-259.7', '0', -1); + T('-72.57', '4.3', -1); + T('0.0000015', '9.06', -1); + T('490815', '0.0000000000000000000385', 1); + T('0.614', '-0.000000000000000001154', 1); + T('1.2', '0', 1); + T('-1.8', '-436269', 1); + T('0', '-7', 1); + T('-3.18290', '-453.85', 1); + T('5.645', '1', 1); + T('8.426', '1.0', 1); + T('-6702', '-0.000003053', -1); + T('0', '-0.0000000472', 1); + T('-13.789', '0.12167', -1); + T('0', '-22472', 1); + T('769.0', '0.00000019970', 1); + T('0', '-145.1', 1); + T('-307', '-1', -1); + T('1', '-0.000015', 1); + T('3', '-4', 1); + T('7', '3.791', 1); + T('-0.0000000000000021', '0.00000414', -1); + T('203.0', '-14124', 1); + T('-1', '8.4', -1); + T('-0.000301', '-3665.9', 1); + T('2212', '120841', -1); + T('-10.4', '1.90210', -1); + T('-4.709', '-3.2', -1); + T('-0.00000000000062', '-2.20513', 1); + T('3', '-41230', 1); + T('-0.00000000931', '-348.5', 1); + T('4.50', '0', 1); + T('0', '104894', -1); + T('0.00000072', '0', 1); + T('-1', '-73.214', 1); + T('9', '-1.898', 1); + T('1', '-1', 1); + T('0', '3.99', -1); + T('-2', '0.0486', -1); + T('-4', '-0.00268', -1); + T('0.0000000000791', '-4.97', 1); + T('-13795', '3', -1); + T('-13.197', '0', -1); + T('0', '-4.7', 1); + T('0', '0', 0); + T('3.7', '0', 1); + T('10.3925', '7.312', 1); + T('2.263', '7.388', -1); + T('-6.0', '-2', -1); + T('1', '-1', 1); + T('1.987', '32454', -1); + T('-0.361', '-200.6', 1); + T('5.0', '-7', 1); + T('-6.2', '-0.0056', -1); + T('-3.8', '1', -1); + T('-9.3', '-7.64', -1); + T('38364', '-127.311', 1); + T('-1.6', '-3.06', 1); + T('1', '-2', 1); + T('3.952', '5', -1); + T('566', '125.359', 1); + T('1078.97', '496', 1); + T('0.000000000097586', '-0.000000000000000000027457', 1); + T('-37.5', '-28572', 1); + T('412', '-0.0000000000000001572', 1); + T('0.00000024221', '-35.8881', 1); + T('25.8', '0.0000000000000000000242', 1); + T('0.30', '0', 1); + T('-26.440', '-3.64', -1); + T('1.15', '-3229', 1); + T('-137.1', '2', -1); + T('0.00000000077', '53558', -1); + T('0', '2.6', -1); + T('-3', '-6', 1); + T('-0.0000000000000000139', '-0.0005289', 1); + T('-0.00000000000000000697', '-1.309', 1); + T('-0.0000045', '-8.3', 1); + T('-2', '-1.3', -1); + T('-1.42209', '-1.74', 1); + T('-608.88', '25.3', -1); + T('0', '-1', 1); + T('5.6', '-4', 1); + T('7.17', '-4', 1); + T('56.6', '8218.4', -1); + T('68.33', '0', 1); + T('5.0', '1', 1); + T('32.734', '-9', 1); + T('0', '20837.0', -1); + T('-0.0000000000000000013950', '-3364.72', 1); + T('3.66', '-0.0000000000000000536', 1); + T('-1471.14', '6', -1); + T('0', '-0.0000013', 1); + T('1', '-5', 1); + T('-10449.8', '-58.424', -1); + T('0', '0.0000000000000000017122', -1); + T('0.000000000000026585', '4.1', -1); + T('-7', '0.00000000000000000920', -1); + T('0.00000000489', '0.00000000000000000036325', 1); + T('0', '104674', -1); + T('-1.30063', '0.000000004051', -1); + T('0', '2', -1); + T('-3', '0.00150', -1); + T('-407.95', '495.290', -1); + T('24533.8', '-2539', 1); + T('1', '0', 1); + T('-43.4', '0', -1); + T('-1399', '16.89', -1); + T('-232480', '0', -1); + T('3', '-1', 1); + T('6.2', '12.2', -1); + T('-23.38', '0.0853', -1); + T('-18.2', '1', -1); + T('0.002118', '-16.9821', 1); + T('8819.2', '28.744', 1); + T('-2', '-5', 1); + T('-2.10', '9.2620', -1); + T('0', '-5', 1); + T('23963.9', '0', 1); + T('-0.00000045', '0', -1); + T('2', '2', 0); + T('-3.444', '3', -1); + T('0.0000016140', '1.5132', -1); + T('0', '-1', 1); + T('-1', '-7', 1); + T('1', '-869.7', 1); + T('0.000000000000016', '-1609.8', 1); + T('651.3', '2.923', 1); + T('270.901', '5.2', 1); + T('0', '-2.6', 1); + T('0.000000000020617', '0.0000000096018', -1); + T('4.32', '-7', 1); + T('-1.5', '-23.7', 1); + T('1.2497', '-58.42', 1); + T('-6.4', '2.24', -1); + T('0', '1002.3', -1); + T('265.64', '26.7', 1); + T('387.4', '757.85', -1); + T('0', '6.525', -1); + T('1120.24', '-0.000000000000000000232098', 1); + T('67.22', '0', 1); + T('67', '-3.1', 1); + T('0', '0', 0); + T('-1.01', '0.00059917', -1); + T('-0.000000000000091884', '2.7', -1); + T('171', '4', 1); + T('0', '-367347', 1); + T('95.1', '-0.000000114267', 1); + T('0', '0', 0); + T('62.4', '-5', 1); + T('11627.8', '9.844', 1); + T('-1', '2.33', -1); + T('-14', '0', -1); + T('-55', '7', -1); + T('-22.460', '872.15', -1); + T('-0.00000000027029', '2.05', -1); + T('-0.0000000000000004846', '17.73', -1); + T('3.6', '0', 1); + T('-3.233', '0', -1); + T('-3.878', '-383', 1); + T('-0.0000000000174', '20.7', -1); + T('0.0000000000000000000126', '-2.229', 1); + T('-2.307', '14.8000', -1); + T('-563.79', '0.000000000000000069934', -1); + T('-315.71', '-0.00832', -1); + T('7', '0', 1); + T('188.9', '-2.883', 1); + T('0', '14.5720', -1); + T('2', '5389.3', -1); + T('-2413.1', '-28', -1); + T('0', '0', 0); + T('0', '-98.587', 1); + T('3', '0', 1); + T('17930.7', '1880.31', 1); + T('-1', '-0.00000000000000000272', -1); + T('0.00000000000000000002288', '51.0841', -1); + T('-1.004', '-14799', 1); + T('-0.0024973', '-6', 1); + T('-0.00000000000054', '6', -1); + T('0.0009288', '-5.2', 1); + T('-45.4', '-0.000042102', -1); + T('-56.1', '1793.86', -1); + T('-68.425', '0.0000000000000068415', -1); + T('-2.20', '0', -1); + T('136.51', '0', 1); + T('-5.9773', '45', -1); + T('-6996', '60.60', -1); + T('0.00000000773', '-2.6', 1); + T('-3827', '-42.150', -1); + T('-4', '3277', -1); + T('0.0000000000000201', '-0.00000000000000094', 1); + T('7497.2', '-45738', 1); + T('5.20', '2', 1); + T('139673', '0.000013', 1); + T('258285', '0.00000000000338', 1); + T('20.6', '0', 1); + T('5', '45.3', -1); + T('0', '0.00000000000000000010937', -1); + T('2', '-392.465', 1); + T('0', '5.7', -1); + T('-4.3', '-128.0', 1); + T('-9.94', '10.6', -1); + T('10.524', '-4.1', 1); + T('4.3713', '-5.6', 1); + T('-4.1', '6.2', -1); + T('-95', '-0.0000000000000000000622', -1); + T('-2113', '1253.8', -1); + T('406.95', '-2548', 1); + T('978', '771', 1); + T('-4776.4', '-911.1', -1); + T('1.039', '0', 1); + T('-4', '0', -1); + T('-1.06798', '0', -1); + T('-5.2', '-1.0827', -1); + T('1', '2', -1); + T('0.5638', '0.0000000000000000000866', 1); + T('7.3', '-9.5', 1); + T('-2', '61406', -1); + T('1.4', '6.60', -1); + T('-3', '-1.4', -1); + T('0', '9.825', -1); + T('-0.000000000335941', '2912.92', -1); + T('-557.81', '-64.4', -1); + T('3', '0.000013480', 1); + T('-25.4', '-163.15', 1); + T('-151.0', '7', -1); + T('-219.2', '272', -1); + T('0', '-0.00000000000000000020763', 1); + T('-1363.0', '294.3', -1); + T('0.00000000000000000003537', '-3.62', 1); + T('-0.00000017', '436.44', -1); + T('1.6079', '-9.56', 1); + T('76.1', '0.000067', 1); + T('-1.68', '0.0000024', -1); + T('0.0000000000000031', '-2.9629', 1); + T('-1603', '228.1', -1); + T('-51.66', '2.6', -1); + T('0.0000000000000208093', '1', -1); + T('-11215', '23.963', -1); + T('29.34', '-39.5', 1); + T('7', '0.00000000000000718', 1); + T('-44.309', '4', -1); + T('-11871.9', '-6.11', -1); + T('8', '-5.3', 1); + T('-1', '-0.0002202', -1); + T('3416.2', '0', 1); + T('-245.2', '-1.15', -1); + T('-1.70169', '-4.73', 1); + T('0', '1.1', -1); + T('7715.4', '468500', -1); + T('-0.00044', '2', -1); + T('-1.8', '1.1', -1); + T('-13.575', '-2.58', -1); + T('-6', '-0.000000000000000044077', -1); + T('35.2', '2', 1); + T('0', '-5.43', 1); + T('-2', '-629.9', 1); + T('260.5', '-2394.9', 1); + T('-110.50', '0', -1); + T('-97.17', '2.6', -1); + T('4.0764', '-71.47', 1); + T('-0.000000000000016', '0.000000000000000000785', -1); + T('1.5348', '0.018', 1); + T('-2.2', '5229.1', -1); + T('0.000000129738', '60', -1); + T('14550.4', '-5092.49', 1); + T('-134380', '3.51', -1); + T('1.390', '1', 1); + T('-0.000000044', '17.1', -1); + T('34.398', '1', 1); + T('-177.5', '0', -1); + T('-5.3', '3.326', -1); + T('-1.75', '-1938.43', 1); + T('1', '-32.9851', 1); + T('0.01082', '0.0000000000000000001008', 1); + T('197.469', '-143177', 1); + T('-61.5', '-11.6803', -1); + T('7', '0', 1); + T('43.44', '3', 1); + T('-6.8', '-0.0000000000000000015', -1); + T('0.0000005371', '0.000000000002723', 1); + T('943', '49.02', 1); + T('1', '-45.09', 1); + T('0', '-55.76', 1); + T('-760.2', '0.000000103078', -1); + T('1', '-1861', 1); + T('-2531.7', '-185.95', -1); + T('1.2', '0', 1); + T('6.4', '3', 1); + T('0', '9', -1); + T('-122', '43.423', -1); + T('-3.91', '1', -1); + T('1.4', '-1', 1); + T('-8.51', '-3', -1); + T('360.56', '56.278', 1); + T('0', '0', 0); + T('-2', '-0.000000000000007301', -1); + T('-1.4', '6', -1); + T('479.1', '-838', 1); + T('-32.6', '3.8', -1); + T('-0.0086188', '-4.6', 1); + T('-8.2', '-0.0000414', -1); + T('-5', '-0.1236', -1); + T('-107', '-0.000000000000220', -1); + T('-0.000000000000168', '-0.000000000000000089', -1); + T('2', '1', 1); + T('-0.0000000050600', '7', -1); + T('1959.3', '5.1', 1); + T('0.00008180', '16.364', -1); + T('0', '1392.91', -1); + T('-4.6', '1', -1); + T('30.4', '-0.000000000000007179', 1); + T('6.0', '8.90', -1); + T('5', '0', 1); + T('9', '9.05', -1); + T('-0.00000029', '4846', -1); + T('72', '-0.00000001422', 1); + T('1.1613', '7', -1); + T('-0.000000000000000409872', '35.6', -1); + T('0.00000000000444', '-101.737', 1); + T('0', '-2', 1); + T('2.0', '1', 1); + T('-1050', '-0.000000000323', -1); + T('0', '20.06', -1); + T('7.774', '-6.5', 1); + T('71.84', '-6', 1); + T('0.003160', '-1.42658', 1); + T('0', '599.4', -1); + T('-8.9', '127.37', -1); + T('-5', '-16.295', 1); + T('2.76521', '1.28', 1); + T('-31601', '-1', -1); + T('0', '1.69958', -1); + T('76.4', '-0.00000000000000000011', 1); + T('-228.0', '0', -1); + T('4.39', '0.000015545', 1); + T('0.391', '-164.55', 1); + T('4.93', '41.50', -1); + T('572.3', '431.86', 1); + T('-1.21162', '-143876', 1); + T('-0.0000000000002463', '-2', 1); + T('-5', '84.4', -1); + T('-1.3', '-5.06492', 1); + T('-0.0000000000002969', '-1', 1); + T('479.758', '0', 1); + T('39.80', '0.003823', 1); + T('1', '3', -1); + T('0.000000000000670', '0', 1); + T('-16', '-10963', 1); + T('3', '-102.5', 1); + T('-0.0000000000000000033174', '15.945', -1); + T('18.14', '-1829.06', 1); + T('10038', '0', 1); + T('0', '-0.000000000000000000125', 1); + T('353', '0.00000000000000017781', 1); + T('-4.43154', '1165.4', -1); + T('-501.963', '-83511', 1); + T('0', '-7.0', 1); + T('58578', '0.00000000000000000027', 1); + T('135.2', '1', 1); + T('-6.3', '10988', -1); + T('2.6', '6.3', -1); + T('-74', '67.08', -1); + T('1', '-2.59572', 1); + T('30.7', '17.0', 1); + T('5', '-3262.2', 1); + T('1', '-8.5', 1); + T('-1', '-0.000000000000030694', -1); + T('1', '-311', 1); + T('1', '5.76', -1); + T('1.9', '-15.55', 1); + T('-2.5', '102.1', -1); + T('-1', '-290.43', 1); + T('-1.4', '0.00001613', -1); + T('-0.00000114224', '44.99', -1); + T('0.000000000000414', '7.3', -1); + T('0.00000000000000079824', '0', 1); + T('-856', '16.3', -1); + T('0.000000003556', '1', -1); + T('-1267', '-0.0024', -1); + T('-3.30', '-6187', 1); + T('-0.000000000000007860', '4', -1); + T('0.000136', '-1.5', 1); + T('-5', '0.00000035346', -1); + T('0.0000025', '-3', 1); + T('0.00000000000054261', '-12.2', 1); + T('-0.00000039', '5', -1); + T('-0.0000000000000248948', '2.22', -1); + T('-12', '3.199', -1); + T('-1424', '-14', -1); + T('-30.99', '-2', -1); + T('0', '2511', -1); + T('0', '129.1', -1); + T('-2', '-566.76', 1); + T('2.51917', '-54', 1); + T('-3100.0', '-6.4', -1); + T('1358.86', '55.919', 1); + T('0.54071', '4.66', -1); + T('-14298.8', '3.4', -1); + T('0.000000015', '40.9', -1); + T('-1.781', '-580.96', 1); + T('1', '296', -1); + T('20.7', '-68.13', 1); + T('915.0', '3', 1); + T('-4794.2', '-1.5', -1); + T('-2.9', '19401', -1); + T('-1805', '-8.1', -1); + T('0', '2608', -1); + T('9.93', '1908.1', -1); + + T('0', '0', 0); + T('-0.00000000000004475220262613', '390046.9220288808', -1); + T('-52', '-7', -1); + T('-7137400653786386', '-1220454', -1); + T('19.76074721670306', '39433637.5', -1); + T('495810.901671347', '-201199464.42718987', 1); + T('2180987378927.828', '28150984.022786039', 1); + T('364.263', '1334', -1); + T('-4.541827796913', '0.000000000720283699415669', -1); + T('0.000000000000533031300116917190', '-733584.206', 1); + T('-0.0000000000000019761199', '-6724.9979821490', 1); + T('0.00000000012335234299864', '56.021423640836509', -1); + T('17752.992435030', '513735.52129558557', -1); + T('-341665592090.67519', '895755.23903', -1); + T('-0.01174948256069749', '38841.427732372', -1); + T('2067269955.10633', '-215483633', 1); + T('58373', '-0.000000000000000208432238083784077', 1); + T('2821.0921360930698', '-0.0019370832810573843', 1); + T('-1', '-6987341307332550', 1); + T('-0.000000000000000135940520450', '-7', 1); + T('368879186519841.03', '3.86407044811851', 1); + T('54.8552188726690', '-17618.8325331', 1); + T('0.00000000719285162', '3.0', -1); + T('-24541949382.5', '12000388993272705.7', -1); + T('-0.00000000000000016019271145', '-5010014644.83398', 1); + T('0.00000342615147619', '38.8937553143', -1); + T('0.000000000000030', '698637', -1); + T('-940562183996', '-9538.76857523965', -1); + T('0.7992283723', '-301.642', 1); + T('-943394092028892', '0.00000000000249028944', -1); + T('0.0000000065', '19.8', -1); + T('-0.00000024892', '1.081095088', -1); + T('4693767.27', '0', 1); + T('241.51552', '-0.000000000029998424146', 1); + T('4.70', '-3889836.808618', 1); + T('-31', '22.1677904', -1); + T('-8', '0.0000000000000018564862859', -1); + T('-2.82', '-0.1308117625', -1); + T('-0.000000000000000490813322', '9628302045.4', -1); + T('14', '-1', 1); + T('-21665490839.0', '-308.104922674', -1); + T('-5', '-6.6', 1); + T('20.356245251', '-2629.4181', 1); + T('-1.39', '24102492360.03791', -1); + T('26.56', '-81.84491435616642', 1); + T('12733804882', '3.16734', 1); + T('0.0000000000001331522614064615', '-62.298429591', 1); + T('4.5417', '-0.0000000000000000000906964635852953', 1); + T('5.0', '3.99206', 1); + T('28282932454425', '20112043684.32', 1); + T('-119.144720881', '-129.74436439545', 1); + T('740279.3975', '18685368847070828', -1); + T('-194303.7', '0.000000000000006199756267389375', -1); + T('0.000000000000000002405090', '-0.00000000979604845', 1); + T('-0.0001603124275271', '0.000000006060544102736781', -1); + T('-179.52', '-76.6', -1); + T('9736.4996007851800', '99.6', 1); + T('-0.0000000000000000000126060214789203821', '6748323899.81', -1); + T('-0.0000076569074016550', '0.000000000525779058', -1); + T('0.0000000000000000047090003506832525', '0.00000000000000011759', -1); + T('-286334697213252', '8557782748357', -1); + T('-0.000000025274118612780187', '-127000540', 1); + T('0.00000000610055019436568', '-87.3', 1); + T('-1560822.78', '360857.435', -1); + T('243209397988565176', '-2171.0', 1); + T('1089364.8', '-7', 1); + T('5', '-195.43311519499808', 1); + T('0', '-12.6', 1); + T('-8917436.7369', '-2412090', -1); + T('0.0000000000258', '-0.000000000000000001137187844109', 1); + T('65611', '-0.00000000000527362056737', 1); + T('0.0000000000000000000113412508151534071', '-4.9964', 1); + T('20156417.0', '0.0000000000000253800552009', 1); + T('32.967316', '-176195213.7000883', 1); + T('-542212737079077800', '-593.88569405080', -1); + T('-0.000000000000000004199278271388794', '57186245414.80793', -1); + T('0.00000004507194567013278', '1.0', -1); + T('43551631176247', '-2195', 1); + T('-4.6', '0.00008016', -1); + T('-0.000013384535', '3437784.58', -1); + T('0.00000000000000002007911523', '-1.34', 1); + T('2.5', '-39.06', 1); + T('0.0000000000000000051', '2', -1); + T('0.00012813936789257785', '1021.0303931', -1); + T('0.00000000000000000132229', '47.1', -1); + T('-0.00002120044', '0.0000000000000000064902789323', -1); + T('9', '379472788024622.729', -1); + T('20.510820935587124', '0.0000000000028179781', 1); + T('-0.0000000000000000000336381763977', '1.17539', -1); + T('0', '-335.0', 1); + T('2.4', '-0.00000000000023', 1); + T('379.690496326', '-0.000000000000000003740124432080006', 1); + T('9612.15057327', '7', 1); + T('64.55819568', '103', -1); + T('306554.22', '-21168.82471', 1); + T('0', '0.00000000000000378671778', -1); + T('-4869994212.02', '-82.3249644', -1); + T('-28281314', '0.00023', -1); + T('-272266413010184382', '-21443895.1', -1); + T('0', '256.5', -1); + T('-0.0000000000000000059504', '-393', 1); + T('-85483356.741520', '-0.135106007572', -1); + T('1256398743581', '-0.00000000000000113', 1); + T('9265.8054085790753', '1101.60', 1); + T('21755297.7418484298', '-1961304', 1); + T('-4.24', '-20364.5241763', 1); + T('-0.00000163743621', '-15716423.93', 1); + T('0.0000000020933557160', '-8448055.64162653', 1); + T('193', '1919.381696195', -1); + T('-39007.0872890', '58659197064.3566', -1); + T('1.224', '-82293358.63', 1); + T('0.0000000000000001573421585953', '0.00000000159648', -1); + T('0', '-91.479627934421', 1); + T('-186.247902631', '-0.00000000000000008879', -1); + T('34342532998345', '0.000000000000000001681734691290559', 1); + T('-4020.8878086173', '1.08', -1); + T('-0.1630447778870097', '8176.334', -1); + T('-0.0000000000000000582491728505043', '0.00000000000000808314', -1); + T('-0.00000031', '3137213.71057', -1); + T('-28.21073575152', '8530334210.39291', -1); + T('-0.00000041292', '-66921.7723433', 1); + T('-261247.289569419', '-0.0000022547224', -1); + T('-4.07', '-6.1', 1); + T('688.144527235', '45986414948', -1); + T('-1', '-0.0231932902995', -1); + T('0.0000000000000016241364087636498', '3', -1); + T('64634.877977', '-39803483', 1); + T('93.85', '-27.012', 1); + T('-1804.8479', '-2720034', 1); + T('-31207.70845', '-0.05392720639355', -1); + T('-7479301046098815', '37.3', -1); + T('50515.653686861597', '-0.00000000000000204399360', 1); + T('-0.0000000000000000055012280316826870', '149.91618262', -1); + T('2216863.9954067', '0.000000000000000775121457372458', 1); + T('-3.1', '2', -1); + T('-4.67', '0.000000018732162086', -1); + T('-0.00002189591', '-0.000000000255830068339', -1); + T('410611332258005.0', '-2840.2819', 1); + T('-7397921366979', '-0.00000000000053', -1); + T('-0.12413104038561', '-0.00000000000255343979', -1); + T('10521370.1', '-55871447.8', 1); + T('129500.264553199', '-3811409369958.95', 1); + T('0.00000240712277094094', '1354108422.5', -1); + T('-0.000000000000000005719028368733990', '540474.19019760', -1); + T('977162.7422', '-0.000000000001402550', 1); + T('1.54339295432', '-0.000001596789', 1); + T('53798507.25', '-0.00129745384800', 1); + T('-0.00418268966509248', '0.0000324984627', -1); + T('118092.9308827', '-0.0000000000091', 1); + T('0', '-93.6', 1); + T('0', '152.55335', -1); + T('-3405109.0892217', '0', -1); + T('445424.679402140', '85.3554', 1); + T('5036.98', '22371.6657', -1); + T('-1.9', '0.000000102345283335839', -1); + T('-42.2659', '3.721', -1); + T('0.0000016709189598', '6.170585', -1); + T('-3', '0', -1); + T('-0.0000000061', '5497334338493.62', -1); + T('-124932073873228', '0.000000000370', -1); + T('-0.007149648796120', '-0.00000001269559959', -1); + T('1675530.7719', '-1065461.6469931248', 1); + T('1053.3', '10097922.4048112434', -1); + T('-92523142643508', '-4', -1); + T('200.8', '-36.675816237421759', 1); + T('2.0', '34282969.24101', -1); + T('-0.120192312259366', '-99423384.4155', 1); + T('0.00000000000000000746964', '-4.50907217', 1); + T('2521.848164', '-16771705.710', 1); + T('0.00002756245400', '0.0032449553261', -1); + T('-0.00000001332527923', '574.55219962424', -1); + T('-0.000000000000000179221403668', '57235.797', -1); + T('0.000000057866988749115', '0.00000000014', 1); + T('3', '1.2', 1); + T('56.30058910190568', '-1680170716816089', 1); + T('-2', '-24381767.5', 1); + T('11799.81119', '-0.0000092161582', 1); + T('1.13', '-1', 1); + T('1', '-802.5013810814', 1); + T('54624549209148.7', '-0.000002846161', 1); + T('138301402', '-0.00011', 1); + T('5', '-2.4', 1); + T('-4604424', '1.28478944', -1); + T('-146100841048.0', '92.57', -1); + T('-0.0000000000000000020786339367465', '0.0000000517784775175150122', -1); + T('94366206024220.8', '-147.3818299', 1); + T('-3.30342757', '-2.8', -1); + T('1458645603.7314952', '-0.00000000000000071', 1); + T('-22352269.3857581', '1.133', -1); + T('0.00000000000203016463277398240', '11.54042', -1); + T('119.31', '0.0000000000005419744970291', 1); + T('-479.458846', '-61007894', 1); + T('-12.748', '-42.6', 1); + T('-4', '-2102161', 1); + T('-0.0000892951', '-0.00000000700082036664', -1); + T('1440.2349309228', '2068244137965', -1); + T('4.122', '3', 1); + T('0.00000000006657906', '-5.9', 1); + T('-0.817940036224482', '-3055637.756294', 1); + T('-30364497819', '0.000000386', -1); + T('-10441.7700601833655', '1.62504166598260', -1); + T('0.000000000000000000013559973223809', '-0.0000000000000873509044373', 1); + T('-46163.26048', '869724.9', -1); + T('-0.0000000912', '0.0215663057542177284', -1); + T('-7983637956', '1777.3345419909', -1); + T('9901852112330', '0', 1); + T('5', '-0.132564740', 1); + T('-0.000000000001296', '-3398418.84', 1); + T('2479240525029.33616', '-56491017716', 1); + T('0.0000000000000000000125250462975224734', '3113453368428781', -1); + T('18553.70674887', '-2036370511701.586', 1); + T('1987104769376.1', '-3.2', 1); + T('-15.9', '-0.0000000113232545789641887', -1); + T('224.9148', '-18.1', 1); + T('37574545.7', '-6.2', 1); + T('8', '99053.70', -1); + T('-359.3860', '-31.8', -1); + T('1.85', '-41.0', 1); + T('-2450069962976026', '0.000000061710947', -1); + T('-724091.9920619242', '-3301857', 1); + T('-59.1', '-7', -1); + T('-11075495.60081', '8.5630713', -1); + T('-58.7', '-0.00000000015983986', -1); + T('0.00000000040731658521', '18001880087', -1); + T('162453.79', '6668407464.1', -1); + T('-0.00000472188389576600677', '14115', -1); + T('126502', '10.69459', 1); + T('1715058', '94.8763148', 1); + T('-1', '2.2612173', -1); + T('0.5133073103', '-11.97191154', 1); + T('1.74', '-0.1674805636', 1); + T('-7290144.463920', '2527.03', -1); + T('-3', '-4.9427', 1); + T('-926566116.423411', '26.01271418645', -1); + T('-449.272959041948', '68532785212291439', -1); + T('138258577757.4', '-1003304148227.7', 1); + T('-0.000000000000000000010128915955897709', '-3304146563351', 1); + T('-0.0000000051706766331953970', '6', -1); + T('-0.0000000000000000007641943051494263', '-545257.46', 1); + T('-113562.957375112', '-21965305.642892', 1); + T('-11448.06', '210.2157232900', -1); + T('-141.1', '161.66', -1); + T('-29036932102', '37', -1); + T('8', '868324216.74', -1); + T('0.00000000000000472435319983650895', '-154.252', 1); + T('46.1', '2.16', 1); + T('1', '-28907.803', 1); + T('88570165763.081', '3003599203227764', -1); + T('-0.0000000000000000001073793607923634', '49309.7', -1); + T('-1.6', '2392146.237692', -1); + T('-2139.959367', '-0.000010270379848989', -1); + T('-954.845', '21359245.6438920', -1); + T('-0.0765243310465', '3.569', -1); + T('35244', '6.818525', 1); + T('1.0', '0.000000000000002694', 1); + T('0', '0', 0); + T('-16.37618647', '-0.000000000000255699967320', -1); + T('4', '38.09', -1); + T('-512214740.316205024', '0.00000000000000000048545', -1); + T('-0.0000356092', '872.5', -1); + T('0', '266836883083', -1); + T('0.0000030666714898272657', '-5746982.6567787', 1); + T('0.000115493195', '13.9259', -1); + T('-9766.284811588', '-0.00441218036285053563', -1); + T('251093071416.33', '-59740.56', 1); + T('-0.0000000000139253216444', '-0.0000000000000097199551454897', -1); + T('0.000000000000000005459644785124686', '398147250730851493', -1); + T('38.0', '-8781', 1); + T('-827469', '-9', -1); + T('-172850535.5', '-74.381839485246', -1); + T('-404166', '0.000000000000020', -1); + T('-8325567260571.80', '-1308443.50003', -1); + T('0.0000000000000001096141', '-329056750.0', 1); + T('542.65133', '-0.00000000088698', 1); + T('0.000000000000000000133704', '-651984.8', 1); + T('0.000000825879483325', '-381653.3', 1); + T('0', '-22991738843.86', 1); + T('2', '-36.5624759', 1); + T('-1690423000.05', '3376665391', -1); + T('-1695.58', '0', -1); + T('-47561102.1021', '0', -1); + T('201.1', '1716645951967.8', -1); + T('1935050', '0', 1); + T('-5.4755', '157.79589', -1); + T('-4.3', '-7', 1); + T('25090265240.04625', '-607.8', 1); + T('-2926462.61', '154865050635', -1); + T('1503606.9361', '0.000000001129607342663', 1); + T('-0.000000000000000000618066504819', '0.00005276', -1); + T('-95112', '2.67584319409253', -1); + T('45561', '0.00000000344217291134', 1); + T('92088411.754', '-81.226353161780981', 1); + T('107.0', '-0.0000000656279606187', 1); + T('47.9', '-23853019975.85895', 1); + T('-52.6663139391784', '16270104.474', -1); + T('-0.000000000000198761', '-6696522145', 1); + T('-3.7840523387703', '2470.12717031561720', -1); + T('-0.00000000000000022920', '-145705.5690558090', 1); + T('-1.0', '0.00000000000000527026187525810', -1); + T('3.59714', '-2725.47934324', 1); + T('151538195108874.210', '-76712263823045', 1); + T('4673409.1540083779', '71941922241245290', -1); + T('-0.00005452', '4996813423', -1); + T('45.37478482310', '-9.9', 1); + T('0.00000000004284806937', '-805754809.47164', 1); + T('-65142.3', '32395696858721', -1); + T('0', '-8105471469018314', 1); + T('140547537', '1.390913', 1); + T('-4', '-1', -1); + T('-1.7', '-28584565633401.94', 1); + T('-14414.40', '-0.0000000000000000065362929973320', -1); + T('2668644862897', '-65.93', 1); + T('187.5651870279', '0.00000000000004537', 1); + T('-166316028', '304548094.9', -1); + T('21.1', '-3.7459045000441289', 1); + T('83796717308913', '392191976.2', 1); + T('-245830.74', '-0.6276780', -1); + T('0.00000024230706949', '102871132', -1); + T('567804266.88', '0', 1); + T('-127491067191278', '-54422.33919641', -1); + T('-1336839.5677', '4.68601', -1); + T('-32772435.641', '0.0000000000346', -1); + T('0.00000000000000100', '-0.00000000000000000035706589', 1); + T('514103.488', '-3.2441', 1); + T('-80.073950', '128750504.46', -1); + T('-230652915.7', '-3.03863', -1); + T('-18888.4009', '7344873616474480', -1); + T('7', '-8961195435475.363', 1); + T('0.0000000089922', '-274867588598', 1); + T('-556.4765', '-3', -1); + T('1298.69', '2188624222909.504', -1); + T('326246955888254', '0', 1); + T('9924973.51090', '10.913818', 1); + T('-64922057.22328', '0', -1); + T('-0.000015121244906956671', '-13641070311', 1); + T('-0.02954', '-1.951973916', 1); + T('1083.674582984972', '1098', -1); + T('-558.42815252', '-61.1907444466', -1); + T('0.00000000025639686430', '577986', -1); + T('-7035.93', '-0.00027214889', -1); + T('3', '-90736572249838', 1); + T('7.63915', '1232667.0', -1); + T('-0.000135502278681995', '0.0000000000000244953080777', -1); + T('0.00000000000799030040007', '1.68', -1); + T('481721839972013.764', '-47070151004241360', 1); + T('-24.978', '206335.932853155857', -1); + T('-616.2698', '0.0314914227', -1); + T('1207176666.0', '-1301439870', 1); + T('-0.00000000016429476', '9.9', -1); + T('-0.00505710206398253462', '0.0000001380667547928', -1); + T('-1.165016965486953', '-138379.4231296172', 1); + T('-79.6633131', '165.14223157', -1); + T('-73825158.59', '-61', -1); + T('0.000000000934', '-3.82200519751368', 1); + T('0.000000964717', '-0.000000000000005927687371823458', 1); + T('27.727966', '-25.61', 1); + T('2', '-23910', 1); + T('-12', '3883816315.70155728', -1); + T('8.206177344', '153.790', -1); + T('4.9785', '218608289854278.794', -1); + T('21.262085653354', '-0.0000063961966310', 1); + T('0.000000032951144241042674', '14189577.516', -1); + T('7610.88052', '-1307222', 1); + T('0.00000000000000000004157294626', '86', -1); + T('-28.12923', '-177547.975', 1); + T('309.88', '-816', 1); + T('-2278580099.10', '6.352', -1); + T('-19.72742783115382', '-1101.0', 1); + T('-263181.91904236906', '-9.5', -1); + T('31.3', '0.00000001853884573', 1); + T('-167415.77', '-0.0000000000000067', -1); + T('-4.4', '-8608589026778.48', 1); + T('-0.000000000000000100148808054135', '-478.23174', 1); + T('567.51927458', '63184.6562350967', -1); + T('0.0000000000000000031', '0.000000000000000007929', -1); + T('-2', '-28934796077245.37', 1); + T('-49505821', '-1.7522', -1); + T('26.41137', '0.00001060660706229', 1); + T('-0.0000014187070', '2894.13734', -1); + T('0.0000000000000000079', '-23597579.1', 1); + T('-7.595684', '-3303819607.9377', 1); + T('0', '-3.0774669892765', 1); + T('0', '3', -1); + T('-1108203.892', '774.9', -1); + T('0', '213043362334', -1); + T('13304398.0371608', '-42671595698923', 1); + T('-59.334', '-14797425210.4', 1); + T('-1580.918446457', '597.1509', -1); + T('-1954585', '43.7', -1); + T('8', '-0.0000000000031877466746', 1); + T('15.24', '0.0000095965900328103', 1); + T('108.38', '-1', 1); + T('-1333901185', '-327.940', -1); + T('0.0000000000000003002264302838337', '-0.0000000000020925378', 1); + T('0.0026377197741282', '28815020.633', -1); + T('749760.615164', '-216.05', 1); + T('-160307.9', '12.94', -1); + T('-106313763', '309.6', -1); + T('362759', '1.1', 1); + T('3661.3030316', '-16218702.35428', 1); + T('-29.385677982085526', '211.7', -1); + T('-0.0000000000000000023842', '-449178776092589', 1); + T('-6.9471389224004', '-9.14525417', 1); + T('-533061078.7187', '0.0000000000000000010672', -1); + T('-0.0000000000000000000549612286887', '2489771', -1); + T('-0.00000000000000219220742135136', '-438551392682022', 1); + T('-7.39965327', '-11.7759', 1); + T('0.0000000000000003275', '0', 1); + T('3.5', '516.37962208', -1); + T('46.4537129', '75.28061', -1); + T('0.00061329308410045020', '-1895948346907524', 1); + T('211758460425', '2', 1); + T('51956.6527986101', '2568.075045980510', 1); + T('-0.0000027761040', '0', -1); + T('0.00000000000000007928801', '-225.8724', 1); + T('-0.7498337810439', '81437603983.269', -1); + T('-2917265829.6754396', '-40551534', -1); + T('705475472886', '-94431.289335', 1); + T('-0.000000000001041719221', '6.9032947055', -1); + T('-141.60', '4893.455', -1); + T('-0.00000000000000000276', '-2348', 1); + T('-451846573.05392', '994.237', -1); + T('58980583273.66404', '3', 1); + T('3.0', '-24256.552994526', 1); + T('0.000001359135157304725', '-74511.22739626557', 1); + T('-1', '-7.56575', 1); + T('129.886304994', '0.0000024937420', 1); + T('-340542455', '0', -1); + T('50949.95', '116146.9629904', -1); + T('-621306274358.78773', '-460701161', -1); + T('-0.0000000000001649894694', '0', -1); + T('-123393904497', '8243467175', -1); + T('-58.45', '0.0000000000000118', -1); + T('1125.372', '-188514556292761', 1); + T('0.00000000000000087318067062', '-3112845454279', 1); + T('-1357676334012628.9', '0', -1); + T('-0.00000000015751050088824', '-2741149.60746', 1); + T('-1.832', '396956274241425.09', -1); + T('547876802.49698993', '0.00000000000000203534', 1); + T('-0.00000000000000138873470272124956', '2.7', -1); + T('-2122998911772.16', '0', -1); + T('0.00000000000028992', '26193061.4', -1); + T('729909.717271101', '213.5069400843', 1); + T('0.000000000000000831795441', '-3149.30209', 1); + T('871.23', '-39.9', 1); + T('-266.516025843669', '-3', -1); + T('-0.0003377513144795643', '0', -1); + T('5429444.983', '-8.04', 1); + T('-16.86241', '0', -1); + T('-3.81', '397.2', -1); + T('-0.00000102639', '0.00000000003224208', -1); + T('70237963596.634', '-5857585.97', 1); + T('-0.00000000000000003645298330', '-27572.252', 1); + T('-1340.246701091', '1643.0', -1); + T('-0.0000000000000044091801675', '0.000000000000000028992762079', -1); + T('7460313.2', '-16167.854578244', 1); + T('-252.4', '218.3', -1); + T('-1', '-174474956852', 1); + T('2.68344', '-0.0000000000031997142239077', 1); + T('0', '1973.7414', -1); + T('1481958817.6', '53372066', 1); + T('-0.456', '27047501201', -1); + T('0.00008716', '-8953628973228.470', 1); + T('0.00000000000000110677110109', '1022800068.0', -1); + T('-58.061691', '7.580', -1); + T('0.000000000000000000011890', '2.32355850059843026', -1); + T('-0.000002164702426516', '163.9', -1); + T('223.1', '299.35', -1); + T('-129700523752699516', '-0.00000017', -1); + T('-5.27', '-1820.169295', 1); + T('83587.473', '-0.000000015648996536587', 1); + T('-0.0000000000000050132780', '-0.0028014658786123', 1); + T('-1', '169130711.41216', -1); + T('-1097575518.9328', '-10.1053377424', -1); + T('-0.01551135221651', '4', -1); + T('1.06932', '42.19', -1); + T('0', '1.4', -1); + T('-67852.2727000', '-3.311704582173664', -1); + T('-7.042326758390', '-0.0000000019748141455575', -1); + T('-1.003281', '317.6026', -1); + T('-782.20436144498144', '168447196048515', -1); + T('-243917419.22', '-193.49', -1); + T('201.75620', '-199.9', 1); + T('-0.0000000005419064219935', '227564', -1); + T('0', '-208129799136442.8', 1); + T('849606586946.33', '-12.5', 1); + T('32237710821138565', '-6', 1); + T('0.0003909263003590', '-0.00168080', 1); + T('-72141391104', '24.823064699', -1); + T('17.70', '154171341', -1); + T('-0.0000058731658540754', '-28607161539382', 1); + T('0.0000000000778024752', '-1.5315774605115', 1); + T('-0.0264455', '0.00000000000013642701952', -1); + T('-44.04616', '5.10', -1); + T('76789965', '0.000000002292', 1); + T('-0.0001367934293', '0', -1); + T('-9689.56490', '93.264005', -1); + T('-78.8991377137', '20605.8864902063172', -1); + T('0.000000000000000026641956701225', '-2.4', 1); + T('-99702426', '31234686409', -1); + + T('-78249536473266824330849.66777355094653206196949807187125', '-0.0000000000000003657205364898565', -1); + T('-794146002335392753453.706827563775514677616', '-0.000000000000002003697772718678199294529887857336117611280517515976', -1); + T('-415', '392495171560354735.54', -1); + T('-0.00000000003641527559883410541221', '118893973463454526683808886319100407749', -1); + T('-246230199620.751986', '-60621558.218545419613692429476293547415222080017643997', -1); + T('1135.2381823', '-7025657983677893287919132587754823076851573889.74685', 1); + T('-1225393854304.583672953386', '3712805076014395323562.4542406246', -1); + T('0.0000000000002805023524281798', '-1195739.55713460927706968721363067', 1); + T('386896730804748668115534580.29201499', '737595739534741234.44386299', 1); + T('-160941276095561769012497288743700757276588036', '194.232174807028239974132449968549146279604', -1); + T('0.0000000000000009760', '-112424977227983.369213445871607530779963339', 1); + T('-120493.3535480159461699138868088193226718499846079', '-963938726344338862591656029356573.2356831292145', 1); + T('1.731842697869349182975403693663977472678249978539', '-0.0000000000018342058226450839410208095980857226', 1); + T('0.000000000000000000186044372917454007190404393463337172211654339256226', '38603.328332936580263680889352090136846643070031691', -1); + T('2.24833678840107152900324', '-0.000000000000535013632333188', 1); + T('-0.000000000001014445297159531', '-182225871.4', 1); + T('-110739', '39245367522721683497924493692756130948391370303714834', -1); + T('0.000000000000000000011109996302235', '0.00000021747567330836261997878389805423396667433455', -1); + T('913805.7272137617667300113969454560', '12015557861856523.82185', -1); + T('4.44', '17327761911331833939511.3229350', -1); + T('3343815205898708797845323710139050310101815211790183', '0.000002944097410246031171887416698431193651848888', 1); + T('32760398270494573303330410.50750229445655494486793110334706', '-9510914125.45789497493920290055', 1); + T('0.00000031352646', '2982438266661362962075700689156408.44636939397', -1); + T('77053023622996.111620117040477945', '-594', 1); + T('28.651584435', '0.0000000000000517018230', 1); + T('69454425323857571.298955', '0.00000003183', 1); + T('8.585707061691', '27579495297994019790817050261359', -1); + T('0.0000245072088767920273', '597422085664.8946200175189947965015981804000953540032149', -1); + T('6395952035600311.145296483306709937475', '-7839682836938441873082358214760503680131094656590381429', 1); + T('-878403860673101771781740794629505317750999165.91704111', '23574346417573958371843475532943.5863825875041348813273', -1); + T('0.0000767302828677966418632441811470540764577', '-1276636.42385918072718338162162974143519652320393232805716411', 1); + T('-15930445184474597597265919925606183581356435.4578944', '-0.00000000000114252044623272018125497556095987129012517542089248', -1); + T('-48665285374684448074343674590620067.7', '1', -1); + T('105930.422', '11113072169.652252071060557105162', -1); + T('26564763', '-3', 1); + T('4811244033166.822319661770849918367233504118713435759512811', '4.7', 1); + T('-56.8', '4443507757632459.195553180343008573591954189736210531834', -1); + T('612.72379387256827500110', '-452.196955446440438357', 1); + T('-494127587184494770597966464398', '0.000000000000000505582034979983270144354985077988823279257757358354', -1); + T('151593171537726736029059210', '3280207153334176964', 1); + T('-0.0000000727423791233275798', '-33.983207203823', 1); + T('-0.00000000000000000014088202399161', '967411649025173.3', -1); + T('2.4', '-0.000000000001348198764946041705529604570289570284', 1); + T('-1458694234293.393', '-0.0000000277889669157893917', -1); + T('-1', '0', -1); + T('-295498271141109248639464345535.73829013835409617653972', '-239733948637940687.4210093379196529044279897', -1); + T('-114.668973584958627612325023154590', '0.00000000000000000204', -1); + T('11086296933075691303', '61846609604939708809351700530350279982', -1); + T('-199290.9539286389610', '0', -1); + T('-0.00008470578761402', '77227954881772040530.19249809987494428807714982', -1); + T('1675393978448', '-218061932.345257837058901', 1); + T('-148234164778648.90057404374761057399794220096395194121763477', '-1807153054383052.16291022958635252906429', 1); + T('0.00000107324116068524713963632866732786846249794493141690777', '-8697413954500148992019717571067182408306067052176.48379', 1); + T('-3504475807101437909894549201613284414285', '0.00000180507680656754700593791722943439535831913116826463442277', -1); + T('137188855.912293557682373', '-84390113782876.78301756825303169680317158020741023212586877', 1); + T('-8.04', '48917396714819601257978143.0', -1); + T('19441.23908', '-3621875953293954379164.80898', 1); + T('-488683915776821.54128571136', '-2764.655', -1); + T('-497.39163093', '456272554.910083158313064', -1); + T('3888553456.187038805', '1.79351971', 1); + T('-0.09665505758418475963567867363097339048321797943170880174', '42.26560746275599', -1); + T('18902797728391145440494082949463571569467603044', '-160840513303121014911814965287069764.329850142', 1); + T('-0.00000000000363783296932', '-229510691003150718410894.798513190', 1); + T('-0.019578513996', '-0.0000068012586581839285561', -1); + T('-0.00000000000000003337257672564450192788237207780262977502390656214', '-576.230537914969490642', 1); + T('0.0002071041857705517964418488527910814283948842252102023', '4965', -1); + T('-762578569061554379901567768164.24708334695367', '-2902150555266343625933468.2', -1); + T('366547461068.82113690', '473567955790856323671.7615303868255685632986068926885', -1); + T('2212.60505074', '54.4399284220426917738', 1); + T('24229481820388119475112679.2869744056638142529094915709331146', '-39663594276.8672343304', 1); + T('204581808810007220059753337566285703.0558403249497', '0.14724245060761654341919', 1); + T('186.26481926730311740748275435747257', '3169339033932711835137078410077027045.6405', -1); + T('147438798802.4222641736117', '-30953.68649', 1); + T('0.0000000000000000036665066712498278880448755082419497041867983779348', '49969977335002848872793397', -1); + T('-15', '-1610335165763678418286838402407661955', 1); + T('2689653843679875122027095562540366.2198041476017623', '1680374149507467199865152885259.7294203852546004613867', 1); + T('-0.11', '-0.00000000000000000043896646420939540095966', -1); + T('2080671699743.511238240714127', '-0.000036842318404340179848907', 1); + T('568000304', '-90592884500253731464906623327632577358591186.946837858889', 1); + T('-0.000000000000002107518141285', '-3224876873708851754101647.818256157564', 1); + T('2265098771', '0.00303612511166914586857128974318819782', 1); + T('-5664007822465.98050400197979616740857', '4318641.351415884425470426852575673963981647030782942', -1); + T('-2548615100934958409898695557521334.971165846219072', '-554798.735556810907', -1); + T('-0.000008820826897431443', '-1685288868236928715034057139645.0670918901230', 1); + T('0.2773641914039966806939077833931526594995617517107827', '-155510002669979906258854608426737730.80732922', 1); + T('0.00000028631297293946002594331990323448420', '12.530358985140', -1); + T('65.74', '0.000000180226526307592', 1); + T('35366830254177.323', '-195533735162357391160682221146179916675364691505329.522594', 1); + T('623190599276699090316221455590041049805679995441489316.522', '6153742899048073987312064712008701512451.12942', 1); + T('0.001389654081957090114281716350682554539119289983031175', '0.0000000000000000004172245036048453978505043356031', 1); + T('-0.000000000000065125596165975329468700878377195017853327025922232', '5010.27', -1); + T('99858764586308080.815938383', '6906.98277', 1); + T('-0.0000002120213841110365850583078206489619527666932442761000523841', '1560226.624828', -1); + T('-0.00000011209616970611', '437120468783339721.8270432960', -1); + T('39633522.28696180408828', '404609951713', -1); + T('0.00000439899975727851857364404628011452819', '-295058799.554060774457769229721869795967861', 1); + T('-0.00000000000000042342244818730713908050671583102154', '549754666663906751820116493890514432554613796763091771', -1); + T('271354103.271534143867908347243952035', '-3.4348029165', 1); + T('-18391137696458176.709403414422273535748', '-135526005724.36', -1); + T('-16789648705436253610328466585451657189', '87790015500203097.67217621', -1); + T('-0.1934527980285924234435139814', '0.000000044283070912014290453388249787033315196663317475885890', -1); + T('175727618.7', '-4712524302.9633361502507795469472010873256880899968244213838', 1); + T('86148708.7', '0.000000000043067763982519792325233598208451198', 1); + T('-1676718.814', '-126027512979.7359979901775996', 1); + T('204654162545474.954541730442039127578542771572577634608702', '1278262396819307952614391540746000135708145121661', -1); + T('20599411052765018472280152629960269.784440835643761573', '382871.68', 1); + T('9.1', '-0.000009868296529724402614472149967657', 1); + T('-51.7', '-0.00004138549340599259177969843213431710067044689658507', -1); + T('-0.00000000065519676351299476540767970', '-159950069281804382298.104882147944419487737768', 1); + T('132937997125408.196564521', '0.0000000000000416671095818013123525013575750', 1); + T('-1313393782.747301', '135189314585073603701567044403904503', -1); + T('0.26345218007386345905841', '-0.0000000000000000131698402541203188119609481297941368650', 1); + T('24462716218.22576508876165308669350154', '-175901840085494768716509058673018943.44105360844073496986', 1); + T('-639051.389850068275663978184079330600736417788030565545', '-233130008509087611163354733950079542005785536290.28', 1); + T('-2.5', '0', -1); + T('-48', '-1.30483838443', -1); + T('-0.0000007957592304983915492296920988493287302223429001', '222281838853.55743543126434998666514248954378468481403010', -1); + T('-256924767625.92102529834889997062393414595239208331582', '-138645955.7309701679', -1); + T('5825.6936168480383901079880', '-15454778381.1635817748532891601', 1); + T('322234158068890727047790331925494003913674775559', '0.0000000000000001440104086097707578083604', 1); + T('-0.0000000000284163905693832757026', '735321.796040692391355698638806984647971670552494930079886', -1); + T('13.51354661049663', '60174586.03966439546', -1); + T('-0.0000000563225262474012816830760397217', '-19259915510222671.51018', 1); + T('58260242951538386451799849576838755846723438641458498.45', '81583418293233481447477355060230.5984042555029388', 1); + T('15676086441613294586793.0600578779086373855887', '553785093898805279609967970.6227004730416155843290795860965', -1); + T('-529215908', '0.000000000000001261696290245850445593226', -1); + T('0.2765770305056755810402655395163548457323921993', '2485048778003226295.0487979661044', -1); + T('3.106357', '-196188865060.96789451729283131151802962', 1); + T('-3812721623392532238628.52058836531583261604602809206126', '0.000000000129949612553432181149516674241', -1); + T('-725747.78308445614294711222169380088709733492626141', '0', -1); + T('0.00005978057030838911749503353205688236750513118711', '-2301374753039922.5', 1); + T('-21135.6', '0.0000000000000677319833766662844296', -1); + T('-18592472738146.165033667092366', '-0.245177658870876212432221320582908107465202878031116163978799', -1); + T('2.0853471559342294701189635489971894524307297590789015254659', '1820710163171110437504131672398834715.796647407', -1); + T('3017.7628349701943687591214', '-2123676032175089021.800850462329', 1); + T('2245516696370652079582811421413778879168242699149', '-0.000026865223', 1); + T('396591381033578245290535623.59522101830916124323912171677', '-399632909396.27251691705488670319', 1); + T('25071395481877740931640606160951694567581843991.91250540', '0.000000129577260075209456379795979548520957596680350786352443111', 1); + T('-10071840824462229810456841986062182478', '-0.000000000000036', -1); + T('-378.382656390921442297', '2995.111135910', -1); + T('-0.0000000000000011003920232607040692705', '0.00000000000000002355157685511431284976273511723771203290674587231328782173', -1); + T('894.8158182999506884919347710660910', '-0.00000000000000000096323615121853367670285903274497581', 1); + T('2319037.233322076813874258', '-32416.903557641', 1); + T('23396460119.155847859729080972376305599746464844501598782869', '-23349855891702694333726330.5788991', 1); + T('90907619612776583630058641475331.6', '834081.31401857878701092663973283388246447251015444', 1); + T('-0.0000000000000000081501364451042879423837094013790187022253', '-0.00000001399490096609828204621353982853023593', 1); + T('-420605.932784654921007625945921605929', '-0.001003986559391891122940439549512675', -1); + T('29941819100256.1010903984648918366033290553065670117884535', '-1399273749558314.35414647141708136502314', 1); + T('9.87428322502844153862497406397966790245714773688', '282378323960341447353633555973.60816609111820', -1); + T('0.000000011571', '56.055239680', -1); + T('57847056020509197.81010326363252948483107773', '-1.4444', 1); + T('-51735520880178.3819992386025068250767281052153771374742233700', '-0.000000000000000001995850558903648471134005565207297729809954251013177868', -1); + T('-252689605402394270719155.41734356951305987480624879', '-14.7', -1); + T('-0.00000000001151229725364301025243181548204622943024492441630358', '26395005645801030069538169698242312.433651971508113804', -1); + T('-0.00000000000091483130556462719', '2', -1); + T('208.9827699741542594700570327748394160582183088044349', '-0.00000000000052759011609237039384483268124939035873403', 1); + T('12412.9657547118', '4', 1); + T('-2', '91580728825224739577263849484410121433204621.500780779690', -1); + T('459526644.772925035397599290137226147632521530511862018', '-0.000000005846169451429981275734796656', 1); + T('671926163021026323133951152902929830282.91041796493', '548498210972677.51442460018844632588617668956139310271612', 1); + T('2422.5875291768881507425406922241585652688246', '19145241007530705409.9615104357443736565548963', -1); + T('-0.00000078875216605898054012159', '-3150.0', 1); + T('6244534680058004259589682789034535443037697', '-25351939981079.604012', 1); + T('-180.203958489450', '39025034688578315815199.297787915576434930764', -1); + T('-1361080637840651575481575485233.15286726682268248409468726', '-0.0000000000000039297884367828635174097881955958806085', -1); + T('180278536333055.7355327506162313565598247413', '0.000000000005454620478830996984164588529474180472398020083723230733100', 1); + T('-12521213.94690', '213.36136', -1); + T('-0.0000000000000076966493627693824010017610386791', '-2.378265167488246191074961795033182605013037407884326', 1); + T('-253.6948', '126006206', -1); + T('144872743608071550764695060958473194286850377609005.9406', '-4115782212.903943924240904289', 1); + T('646425925574255155103804057996228876', '-3385724693259876271747963.2083760845385', 1); + T('3238426111230801661501493996824.60026008769586', '-1.3137106232306', 1); + T('36812968817.09002256', '-377119042652372085.8701028046507452160688891148413096706', 1); + T('-1057646134026674642687725155011813064632921643903628746215', '-61.1976960', -1); + T('5932283884028162.993577517', '-262866296151760083503.5144635', 1); + T('0.000001968962077757014929052005163485510124163782133996', '0.000000000000116476163076562297013796305385624375676724881414944662', 1); + T('-344797534756.045056309614536498476108', '255603.7453533447251497046857105152628367804406158228236933', -1); + T('-3426067344177324630963454.412', '15385507340701842778819629282390396905481417.2267114635', -1); + T('-6482829869.2939768229599', '-316205.7593667305356109359299', -1); + T('0.000000457660742', '-70087953797661233.02541392030217222494340078655370619', 1); + T('-0.000000000000039160675421718532243743411756', '0.469130640793', -1); + T('646.780847826', '-18577555.4140223083526099991256121668882164928438251290074', 1); + T('-0.00000048407641016681417846220', '5.986261', -1); + T('211851273349866038766', '603496683164932314765.83959539999713388808548959930160200', -1); + T('1102.13614611471685523260263', '-10896812', 1); + T('-1204978038923128204724255296214417.103288933531778085701527', '1716208377705472866612373037267.9534333794', -1); + T('7.39', '71028207488403138793.76246511590301180890', -1); + T('4434283.709', '63814910740714880857390949.18170', -1); + T('-19123084314467.20872238837396740488879369139405423586', '0.0004154673731839293052318786962694250849938501580037', -1); + T('12118.39981', '-26215', 1); + T('1425476489753.2', '0', 1); + T('6771847.279065', '-176720813115222.66664', 1); + T('-915883195.783206257390', '-1162517435079017677181093168848300277', 1); + T('940255279112483580064474520160.01836316454', '-21256974.01257889791261612212', 1); + T('95730426094247272.25144832146486095143107940354301', '-46035913246450150341614859268398866836154116011239252918', 1); + T('182340191187346850984880518.92122432870860784218323791323', '-45046691441.5894152', 1); + T('-0.112180892367092832302160275033223995396405949810852290641240', '-5048973.374988', 1); + T('12547796757213733598419046692214', '3054356083556184826827825111923516899788365822904', -1); + T('-5.1917', '4788005123362165402614828953522.322744', -1); + T('-172.673385473127', '7906028923470497913119471880236309806492091000269715326656', -1); + T('39.36478', '-0.00000000000000000111733659477153687132091026586982038613149571288390834', 1); + T('0.00280064326461873471', '-96485541594534.1717745476897400616', 1); + T('-53804410326123080293766343804563197457587.358960227469', '0.6042327037044788643429', -1); + T('0.783179986173131431415315377310009758807865743500314352155718', '-10150718377702833509077223188001629199784735482233', 1); + T('320.1580863905990337350358843421238167150407', '78483581833243910660574051689573904282.53796879219263412', -1); + T('0.00000000000000005913773611490029218785743338181834029896', '-16301992210.353', 1); + T('-13791710467720660651705727', '9004174340.018826831004190863', -1); + T('-0.0000000000000000052146576165363099836000375759397050145530205395264820', '-4744954283790', 1); + T('0.000000000000000068266442751433', '-21855039931', 1); + T('116.841', '756981691.979269', -1); + T('-7473997292613406', '227497901856345041678511010728961877', -1); + T('-83496362887321946609436668599.7903028365237141516', '1024015979814432311137570785885497044404075269867866.737', -1); + T('-23818785789.2912426283539742079882608148628', '-245331580042569', 1); + T('-0.000000002349831704133945491130166154185575859959455463468', '-185375716299893112855976.016352', 1); + T('129364225959.09296952466', '108542305819621.75909260', -1); + T('171091046088.5982271234876', '0', 1); + T('2370407657610305710129669557444595465119919578698971423945.97', '-821.3', 1); + T('-0.0000000000000000066502835859829587521962052035084744192744097555813815', '29.6874646919', -1); + T('-170.82', '-30241959962614761470726121490564851402310663.74902149607', 1); + T('-0.00000000000006469138000554640183555511490', '0.00000000461742314618775', -1); + T('-0.00000022716576662893621400646809659283', '-0.0000000000000000097981111184009991288395382994924970037037274346', -1); + T('-0.000000068298738368', '0.000000000001713927973365901946623917833165', -1); + T('-0.0000000000000148999', '0.000000684685591706506458136016541069868975745133391', -1); + T('81817616220.930513909829790979437990669', '0.0037959556025699242990945655226111160507570806789539', 1); + T('187587490328.76177037442867202450382678451459221314035', '12011852709039268724852416629919418328793710229665', -1); + T('-2454260049688515674651405402228.478820', '-142484538009893665821574115250696', 1); + T('-188143100145.00617383871359559450074903986323218040691', '39179506.59', -1); + T('8613', '-448853115.602892393', 1); + T('324475356028412945643959548259053230909249689263109070219', '0.0000000000001203', 1); + T('-8591717.842088230805549679866443799042204', '451637831192239', -1); + T('-6070762221984493.7954950487', '0.0000008266057502127693017207185', -1); + T('-0.000000000000000000021548786264742140151119863195875002281801', '0.00000000304649397231813005172496843293480', -1); + T('-40.087', '6007129887259380790745', -1); + T('-1366148121206.5632778067071941207265023330623', '80874576.1341452071', -1); + T('-423812196741.21772334603760090003720411', '-8489477404172873113334318736868836015.8927', 1); + T('-18748128368612368', '1033760369950876702413539809148.635494241886415', -1); + T('-6156774.639', '2141734773.98', -1); + T('482197977761340226097523001111567130628.3114748', '2405937830.20828', 1); + T('1.500824259421505', '198242033184.774', -1); + T('53413278633421327710558227', '-257151492007801487684343487000253.407786', 1); + T('-1594411348210457.2057201773399545926098672210220093884228', '-5.810400317391331894', -1); + T('-42.524', '80197685.59875442876939670048', -1); + T('-60014077957342698615530961389', '-13.78', -1); + T('-1387665403.2451221994775416780152578', '-50.1', -1); + T('-0.000000000283761964988232221224443682313729383881', '-2822338883009.068928', 1); + T('-28385595875309619596283558.250520032588078', '147387993300214796016282545977170456859842677532644', -1); + T('34686252767892826', '-7397737915931657409753002235117.507122010962757', 1); + T('665935851.03885464136023', '-4.27966623847647', 1); + T('3106722949248488343.5712879936594346', '5207020105979502838849125845982284.134451754294609', -1); + T('-0.00000000000000000001162533600824036331509919011567723975', '-0.0000000000004073637073187', 1); + T('980601.882104', '-4736241802290.1', 1); + T('-1.264380690744', '-0.0032883798709792788300566265810', -1); + T('51319085247942607.3131099', '83544328154437955698662922791047991992', -1); + T('-192623899359040.3945129', '10926.94113484257132806109226984967945807602047', -1); + T('962893591125264662170537112845916056.381612', '368.90671614695431830669034995', 1); + T('-3007190292.596872064173502838572330294928926267448', '331482510656348', -1); + T('4.619', '12807796.2864949', -1); + T('233052.5454017603326230828962755508957', '-32914.3881917757', 1); + T('0.000000000005544400247160205560916422655780463306', '-117580.4643568059993825255748662006333620879934324449976194902', 1); + T('-0.0000002279846534365632207677600216066596305', '2322126554056.4607607287069', -1); + T('-87331990126', '743.4', -1); + T('137842568133527537817773506836473835596.037638095', '23.4281795386520220571331254754387057268591122176624659', 1); + T('-0.00000000000081272882678106791203475757923134527272965969323326949974', '-0.000000000000040624141216710146487026358979015670993522638121783791573', -1); + T('1971.17747372189', '-0.0000000010768131828513761981866874629018005', 1); + T('-10275311905140309547900985557569021235914044', '13182550904924724360875252856492836233318627808046410', -1); + T('-9096.750964541599607962155', '13028.7', -1); + T('-0.000000000000000000202605861249781459466292197187493310550840999997429021337', '58400.404430535722017', -1); + T('-258981', '-0.00000000000000000146942477886148939377531194', -1); + T('25.9', '0.00000000000000118094876087922', 1); + T('162.19622926933', '-68764070962981173.301', 1); + T('87010429441884304752446680474543109139856949178.585391743815', '-33889485558163904190.04059458582735001225610494', 1); + T('-3588694.63698027859953463343148736989', '0.20617368370080438', -1); + T('252827102036303.9936197231087853010909954787', '-13509465854837088717675412627', 1); + T('-6887075662100868367.99298907317434', '1438247217765576380817821853526995547277570394769356704993', -1); + T('-2614836293019955922452927776550298690576039936033493782765', '0.00000000000000052031132538502067428026543', -1); + T('-12663020159532609144497566.74', '-42113540319.2', -1); + T('-1080616543853692231052255789606862766.2316765544745171', '622138464929033724077.5684575767378639873400300078414586', -1); + T('91651523225544121200570967593879', '-278740040380.50511089730555', 1); + T('-8.77451376', '21181531848.7359185246892781251068262178642', -1); + T('-0.00000000107896277359728052', '-0.00000000559014447680213165225303053399586003', 1); + T('-0.0000000000000031412406939689928816768809909569850137504174813806298', '267542612', -1); + T('-0.000294657579', '-26086393286300.330271', 1); + T('-271.74195581137236680782195613069', '952766.7883292538644370363183485', -1); + T('-900.09939007562756381827', '-9918431930401851036841237625432853804072200032740725352258', 1); + T('-0.000000000000030671845618853580', '32357.482434378971190374026634088', -1); + T('-139410983097962987.71179096685291702409075212713', '13047.63499478071424425', -1); + T('-62537522199.9961', '-0.00000000004918255915', -1); + T('-58114807161.758057205498543979965130', '-3584702124152.236114809148315', 1); + T('-5632737338122610476176492162', '824643338386766980921.71811030291008509477931405498', -1); + T('-0.01112514633044857786937097571424050679247016367295', '0.386883742497074382567205105882739261935576163102168809328', -1); + T('-775467985328533.575386347563813', '-2875270027971383845747422189517733489695440299684.26529970', 1); + T('-9206.12', '24465276.6921610401', -1); + T('1054.43', '-0.00000000020318289531837407268676153244871958794890914093632739765787', 1); + T('7300988032552205.76041147839581218453548563753012', '-0.007634', 1); + T('-0.000000734659730075211305671182182069971692776321779245044', '-17392730340424661359.57036985935157689014069028076050', 1); + T('3000.6213158910384652830168161716968199806', '196899.54954822827787', -1); + T('-28853.3', '108559143247879763569410860170094.00407203', -1); + T('-10952790675891711060669', '0.0000000000638895380906681108955511361930418302376174544368019503900677', -1); + T('-7687531139650175', '0.004755312112866962666181173910352323', -1); + T('7565776384737032915661040051027778572949', '-160701353.9737519084310852349548363386945597974151833', 1); + T('-11.7', '822380840969.7330218', -1); + T('245133982.2709135080741155484684942868990', '-593165059759410987863660881778696387234.47816', 1); + T('628.75774650481071', '0.0461101478872120341063967140839333563803204295885288367372735', 1); + T('0.0000000063833770468977856889029286', '-3446116885099565994798245412234997574310.71146429262', 1); + T('-2182184538507532.123419582161659811958985', '-16.178', -1); + T('-19295.5', '-111077.6', 1); + T('-1388412775496356558574776724142668543270374', '0.000000000186737893798664765627225688620011182705421230108657158838', -1); + T('-0.000000000000000000173967868179648', '18152994682673.375193707089884990', -1); + T('0.0000863560035782461361163890887831825663', '-1610362290.97396641996627173340421008496869', 1); + T('-11.483483415298114396405743398201182328386755342848', '1655.482227981052539355004148643429722825', -1); + T('6566771449.687708654', '266171391084042797.33757142850317159949', -1); + T('122068558041101739958985067462542912538', '0.000000000000000000268384176192613299035', 1); + T('-4556.5265780925613192416', '4408701630592873935323494393972993090123128329706084', -1); + T('3515021.1', '81864516617484548687.671', -1); + T('-178949.59390232991893024115', '155518413686675002287489205632826353865420.12725', -1); + T('-180770193582924974272749992870971104340648972754', '-1928.19874477272271032797979599489260880606368041405343', -1); + T('625944002374826741962891505936997879124112785.78254', '2.2', 1); + T('-74000022874026102397', '-124816237747723579623236426033.3292987585226390794593838', 1); + T('-7131583.112143898464453392111748674238953953819160850767017', '84543374363987655628953718.746396432167424125377', -1); + T('57930668326368128477331750490208537947030161601033587.572', '5.500178739041619245327', 1); + T('-1.017', '138555579979990641891100613226981', -1); + T('-143314297738305919766.85676159714631636157649174975230082', '29162684.00496065795882', -1); + T('-0.0000000000002178299609737745152878826159216416', '508720821875640011430584245157711563400384026461605542067644', -1); + T('0.0000000037127521912905404', '-7112417145444577.80607898479236664', 1); + T('1.4535281', '-2755278119711443416368353764068870008385673657351.287327', 1); + T('811983.91569425', '-2547.2614436343839512598907421054076705190588578245014517269', 1); + T('-0.000000066783814084373165177389', '153634640417158153571843303.3824378304880', -1); + T('5559062891501876147096510441935756175635', '842776596383.34976492066280841493046933', 1); + T('-4251086773215699216620141628146909108378011971022709', '-1.07986603344764046828530', -1); + T('-2.38', '19960804157.01707538429700', -1); + T('140859852236163731572799808333907582182', '-483673686696369232470123.2999332082319758158129919566', 1); + T('0.000000000000000000029622654937176905639567324602041176', '6.8015236772403026405177389845218159042412678456034', -1); + T('25606.7', '1212600404583', -1); + T('2.426990264', '-505156.72', 1); + T('-3323.26420573', '-0.000021970500979289375257', -1); + T('-255663089355037.16392040629597512015094', '-0.41027975468456748910575155470378618816162355136333', -1); + T('566035648379804767146020274970786348003404586796', '-2605006926602834802308635359877490813262595', 1); + T('-0.0000000289094988182444091497941385745066427', '1.9399', -1); + T('3409063904163491.67712627300938046053186814787275', '-788683478416.8521908', 1); + T('-552.503', '-2.65992687121', -1); + T('0.0000000000000682450781086750734123964535', '3340023490622963858.05775701', -1); + T('-28.423300541592258577722518374987247', '0.00000000018350659919154', -1); + T('-0.0000000000338682164343183039173515869325510437060743440', '1815582615544197484260137.3218056141775424580', -1); + T('3', '84909.6', -1); + T('912649891343940306774308274', '735.6', 1); + T('-26734270259188991826781396067266586047', '185532822.950201471152934184838760', -1); + T('368826381.7105579623244756846366147277999', '5.5', 1); + T('-22848732.37376986942615233017284932480', '-0.00000000000000000001612001293726629147004663156694479784423162610622655555766', -1); + T('2778176016640.434269090024108', '1048566837961106', -1); + T('-0.00000000005687373876856047135405145423769679122686973713754', '0', -1); + T('-22919522347.89673645577646706445', '2', -1); + T('333548957780868457725754851263954857512', '0.0000000002186930669230787434579292', 1); + T('-4020857112014642672533241638057425567305408226516383316', '-610648130878189409.30664242328454522474430938', -1); + T('-575928405847231664243702964453172201881707803819077958636', '17476059949547258392.9269270331051429', -1); + T('-0.00000000000000236', '0.00000000795', -1); + T('2', '8398410026740057242211865329491307671', -1); + T('705216162396.944649', '1147259473068686282007211288799376369558792447024.1997172818', -1); + T('-0.0000000000000192467050834', '6', -1); + T('-949763984221042841274951349558.10112261647', '3', -1); + T('0.00000000000000002489067290965425526486154888600759799385750417414529209', '0.0000000000823737490521166731893020565223077334833777', -1); + T('-0.00000038', '-2632134659727565258235592973628916007.949', 1); + T('-69592.16495307008', '-463465967056256671637919962390996488321070177494218933.43', 1); + T('-6387758166555649.89131479869', '1002182649863740744720129461114521861386424106.91208215022267', -1); + T('431.5946803602483', '0.000000000000000000816082696768067476521004613496804107266986784152470313', 1); + T('-23812703844655313104347040675308650219032315064', '-71724306.2930848005664925', -1); + T('-0.005366575257566691274487675050792258604517208', '-50270812932100741999189180430.012678', 1); + T('-0.0000000000000000078075590970858480352604836633054432965570', '-27324956076689844461004586831.04188455331803393389628', 1); + T('-24102905908901166081092826266887612015', '-459655866683957.36420', -1); + T('18620863003604271884104610', '0.00000029683459505576831', 1); + T('2.21', '11.74', -1); + T('0.000004553511760142', '-0.0000000000000010330082103', 1); + T('-13676169.2900328430847', '-659552074603595567395834543801367207404186168504233', 1); + T('0.0000000000000001438969718407410316532098007489935388', '0.00000000081225083195136102279920779602035', -1); + T('51597', '-3688953.37331140657540657', 1); + T('5.0', '0.00000000000000000044951103341270485292979388', 1); + T('61725.97', '-318781217745116634885912525386954947113588.846293794020809', 1); + T('-504283888.0252594786037412363612838038962476794771680754', '-1144808847766934618876.2356421', 1); + T('9701728689144729082229.639579', '-0.000000049089013163887977', 1); + T('1734710425425226243190199621025858405083851', '-2022478.07568145447065678665660363516370892531', 1); + T('-0.0203968042130858225550603184916550906', '3561783820164476692531301519095829484664197181.88', -1); + T('57745178282004030498957972.6440468982032662924085898763', '0.0000000000000000005401742140193599', 1); + T('-189888759.413694676', '962721078656113954807517895483569422587.81272690880505144016', -1); + T('0', '1089893620428779572280086', -1); + T('0.00000000000000005263900289846965180622155474', '4964254.08251899455', -1); + T('-2429863004900274258713082377.2', '-5', -1); + T('223562834248418274852', '-454450351567026707172759587', 1); + T('-151149364443914860721418508987736982714845.09', '-32162477518638198637106030', -1); + T('-479815101913558893748354066945159343011138914699444', '-8388616248281.177', -1); + T('-896582450010216483769437258211841611193596983', '2151162154931974.5324307514844193735671829753537', -1); + T('-4049.4959556373785645366161076408324898239699112274', '0.013169159788356096', -1); + T('-0.0000000000000000000316327403661051020290330503045336299615133', '-11700.08420553103941618418917556638908321476907300', 1); + T('-91734721044809355559.14146', '12', -1); + T('3', '-291.2', 1); + T('0.000000000208876005726', '1109144943822082911633590', -1); + T('9144991639852325623127064299724.1037', '9195201.269557786877068732018', 1); + T('78715642607677481.98025', '6700913191777637296013511988358756280.5878553149112009', -1); + T('-42024992208847626581242632149881286185298896514143767366037', '2463231358853.71880752761233', -1); + T('1424455191304023789401770179431438298242.5956172095628134529', '-84101775306.4342739228941346432384510922338362929028798837', 1); + T('-2', '8298028707904306800597805656615422.563428', -1); + T('0', '0.0000000000000000061793103234817538282147379532723959171618', -1); + T('-5487921270.538719897462383104213699510', '-1', -1); + T('268682329996669747137239620985539555535419363', '62924806289369.19580487653689872403580775', 1); + T('-0.000387355252629095867081739966073411968600277129031410', '-20830255873882034860249701068781380943483', 1); + T('-1629370894763750572049675488248', '991789483832341479415077040669482846.446', -1); + T('490412212844.567042', '1193114358067372516507866.7675019818106066492829', -1); + T('955981.687631958504371296000429391844', '0.0000000000000000001766202113828052550367604264198057743528417306', 1); + T('6431932.913640551', '-126629077818549423618884827799639161238817.7318896474195', 1); + T('173236', '3919.931871161121317101046368865876703331', 1); + T('-1128657348139042005269644515367191', '7320475389227053819151783370434503694134148', -1); + T('-0.000001531508743186704496242168865663427', '-41287316832998.086030726461470592703928425646406884861688', 1); + T('9833276470.19', '-1340313090673.9396406089183', 1); + T('-0.000000000000071266085262734127620', '-42269405460346073.44093606359227914216172743976226345709', 1); + T('19273064566.607617709592384430851504568825219', '-0.0004352973090210742250757', 1); + T('-0.005788', '699340993798990426136300929857470.932190', -1); + T('-88.750431269011', '-185105834798384460867482551385762166627884659.971162492245', 1); + T('0.000000000338337748871769299443110098647543052118', '1793651380297444523883109428377964622519697401107621959', -1); + T('-0.000004410675006466359214215854792979430946366025336494150', '212402325929778260730054.72532540928129434351789341863557', -1); + T('0.000000000000000001072224833476632886638952280133590418', '-65485.0633', 1); + T('12502158597739959186.705468775503441', '16.66597304878086673769469360979630746', 1); + T('0.000000000000000009677703', '0.0021843733224756870769', -1); + T('-0.0000000000000041999607963521154604945381536827703934336876453', '93664.27886678243967349370590141313752374055497859', -1); + T('-0.0000000000000000234261821391240556018', '-315.990655680030512945994935758', 1); + T('3195453260014685333492830082716203563522.36872', '0.00009325368310030723757358157836689348934835351190017', 1); + T('-33244315391121.22780712', '-1311031062177.74054460725962379', -1); + T('-1707161.9454', '-12005804839001.54244657079130670097736', 1); + T('68352491818706598.773651301473666770317477098618521912', '-0.0021074281045472626934633424986655940198794278022', 1); + T('26.463440708', '-0.000000000000000000161495480948179406780882857906312583977592728907', 1); + T('0.000743978231293810720', '-163654150785', 1); + T('-10.1', '84118013336354653851057751102778.5255011398946', -1); + T('160481384203.203261436811734467630350', '-0.00000112857893416261', 1); + T('-3309055960935586978293.0524313', '21483182429538345732977842.5731059392', -1); + T('-43958548371515045.020150030047077069164032471', '-69176275532496.255925921038380207105737351', -1); + T('-0.04981670073679086136919289630392557877963', '-398950332875156202401821158696058677232947687447245.417278963', 1); + T('0', '-435528753375555685177004', 1); + T('0.0000032297790227357092301516546825411526485804661', '-723817273826.900', 1); + T('-2702619562405304', '0.000021620337383638552928', -1); + T('-0.000000000454', '1', -1); + T('-3144143431608222864766150912095006063169199318202', '58.53291045364400226122849818452051713592021060811', -1); + T('1115', '17.357031896358227163528', 1); + T('626983028701766087311204001', '-2615488710736467295.69042919296588', 1); + T('40365698821085373.12608667821372228818', '-49815765062.89597274348089400519601', 1); + T('0.00022', '-3607024557794704402629081642923', 1); + T('1364091171276057.97761244863798921737454557501095284', '0.000000000000000177865197456638064216228393652693903199280', 1); + T('-2753914199438393', '1.968442310668164769128495107357994123999170779', -1); + T('-775719502.7731', '-0.0000000000000000048612190810399950650839071400159174695292975458830', -1); + T('-16116938624203335.4', '-0.000000000000000006412977', -1); + T('272612865514273474320712548718.9402594608941366', '-0.0015869340307275449870331257080282841124099817091326', 1); + T('606324260201754.1434994221817869056714199', '28395472736102159748126258009090', -1); + T('-425.804232', '-180233.62994', 1); + T('-0.0000000000000001323505962', '-4818224435323036527507513', 1); + T('-0.00000000004875768812254650206225254505968862675405582488', '-0.00000000000250181', -1); + T('0', '589543599579236108105278188597394.7', -1); + T('6194660387650555532806365.67785490665673624067515', '-5562299925991551211.449094280', 1); + T('21071748634936165958428873502220200671957884564', '-21877247994257440926313.112083', 1); + T('29.6', '-1284653117475257.81055939276439345', 1); + T('-0.000001070241', '9392743602622997628985533350323669657', -1); + T('-770440255222043537495200.6997075447934779176467373', '0.00000000000000002163072792311046458436044183497750', -1); + T('72924117389.35377926', '29103179425746323066349616562734447341721864', -1); + T('-44.7154563464707697425999713876377', '6316419259432079567188243897453099488.27986', -1); + T('231.36754477031773', '10395139401326885805822908081481', -1); + T('-0.00000118333338184521046036822', '-320975156502906817', 1); + T('-168714.6721140026', '30811271631788712886661929275491543882895', -1); + T('658.039394580451534505618643867554797997792535540581487878067', '13102965065445154782', -1); + T('-1765398404359286937871993026008756479663.1249', '-1893.842801467346249656722764607268566624', -1); + T('-271426086204740642209831748805289909458935193844', '0.0000002849584520073597479884182004863626528356168604', -1); + T('-1377816279284.24202090550539206', '-4482020235202103266487160771495221696.9569187528465', 1); + T('-5.153338782077', '111841437759.8516773', -1); + T('1935875317534881538626219754702496578459939396459924407.445', '-2.69502254630160152110', 1); + T('170729241284179053792255', '-4451787575715904462656351072032905153914666075264.15', 1); + T('1889745529039666589.126273', '60497049.8677', 1); + T('-5033600800189.350388143929701198516318', '0.0000000000000000000560155992523696741221395', -1); + T('10.5406982381', '0.000000000000000021', 1); + T('-632940973989610.559', '1453966800.2947369036854268970989152864530', -1); + T('6001088411976.9726351889534473754', '-1', 1); + T('-0.0147896392703218629529334742030182', '446.69797286906823912856467855870955584367815853', -1); + T('3.83283725770115471046394373426687880', '-0.000000048688749586070845947492557870516966863282338273', 1); + T('311.472046824904240126119060726132453603437309216724993936', '141057050127502107523.987453975865', -1); + T('8207155.53', '0.0000000000000000542558038634643663795', 1); + T('-52.153', '4992402747992764459141957946.173249', -1); + T('0.00000000000037087971513311066134109646107', '0.00000000000000011416409371', 1); + T('-1.53294577434854835684', '116405244945444933601158446.489942', -1); + T('-148112201957000169.55322721393', '-21184576168032173628662.173748989258024885915978002126587635', 1); + T('142.834', '-183660432602724204651884604531246', 1); + T('8893.1', '22902411.442310886381060', -1); + T('-0.000000000000000000049301490', '-4268821956373353475835160', 1); + T('-35267430686890946642526643.40527', '9442.78', -1); + T('-388257.7548252', '-22789237273726383', 1); + T('-0.00000000001035915929141861402608660878800813727', '-13364427.71449240284234717270638783796', 1); + T('-657250878405514264850.36740512444031797888135499', '-194007658128943.2702175990', -1); + T('40622.00027155142785667332283724715562664685', '0.00000001135895', 1); + T('761530675604.544', '495276273239198618829474956470.233178493', -1); + T('0.00000000000000012', '73036710782920745627417158215393112044826285848.66', -1); + T('-2759374668072424884167545392056988395284630542193729', '0.000000000000000068039371483156100726644177048338315397952004369910331937248', -1); + T('15.9120', '450286871.1411907943653435378050516223461628482', -1); + T('-463242.889', '732474228336471210605174200838.347164418188057', -1); + T('-37054664518639837.961401170232480179055753', '-0.213597333719034786247662894812723740483671041535079', -1); + T('0.00000000000000000001373037051536737485136263054', '0.000000000000214231995904201121132614658821157329422560178904553441143', -1); + T('50637443782578.4742028134098808129659944726779514644', '-23026666.00721461124457795917', 1); + T('-6.49', '2475361689.75199634250718942163511668171643880656258831085', -1); + T('-1002990.83923290495185295078283', '-88091991857.058', 1); + + T('47343984238976282156612318707707241507', '7014.1380688580943680749895193484951393023851901068954289', 1); + T('-0.0684650131341203263401401552553627094627677222266117828967840329153916004', '75230922521264678531581542609391910658509316112860752792749246167142277738299159084963011895369670394282283243922357698845', -1); + T('-295862313165400124619550237.656069', '-0.05242949757418000580437043689552606133616192399732961267572280016078297875290996591091471487276864075033912589320229097078489273', -1); + T('-0.0000000002314229728313932834817367208574480091285711473641947850686', '0.000001669738346220713984568468088', -1); + T('279047626684188128091435590947041377415469191572169057666439886858786324321493442931662682903818854501531', '1014941974886877047600692.608173634828307821277211443446841120485731400366934581079981241944892978588711090656843039207957131', 1); + T('48308709872782035593925640996821550.5973961768548380479859429302524753667536555613596780627951424760211059088558463346485', '-0.00000078577667662550261964917332375091682757798693072266793892607597426884314985327535125926665884881508153537106316323804', 1); + T('-40215116723353583608457914214243065135175415923039250335730569657501143689052902444197762903775444.171803001', '-0.000747392053570593271109057105058728438851585178963059266112875660536041822237424884', -1); + T('2819145676011742129640869014892511895199224936983927037212297.32661697202141330300178285210', '-0.000075196819438137495966275363285091739887328834587350620047101366951164331460643462218485807470864914189909573221028130571976946299969026068777239788983', 1); + T('0.0000000000000000010446946709023771', '14509.94652999103448344', -1); + T('-169686607281341840589884752740664499041142720600502268735857463345287043', '9240364668978345118.8252917399138216489359074021558811', -1); + T('-0.00648413653267434764253188982546409464526518238337229133733999', '2948.7980089962735491284253586450260337878935566878447899493407398914786100293772145150075', -1); + T('1001973818132969045188552394268298635939543267204272678642391489560726393924', '-2059855354.02655908060090748170485280847537851682099516287881930015016266786206643', 1); + T('3328359199438677474383438883220437819298385482514329045164155052810372940115672255269', '-17822566.777845868041139594', 1); + T('-6542320880710197522834989015966.376007802981186176649420394764512', '-46908061275717031191255178167927.915776432317777604650368349154202614657273310196199200481525517060796473584147643855326183999949752634506182391510540', 1); + T('604836.583993358823509315213191546460434278961276333727065449874496855101461036551875374733492090745310221170534047576583343077626', '-4618.54322501862329794473469782199104028963878464891188614915521', 1); + T('-2986655693343577190483562333.92412719013779269947465010977392088784157099123429955850534813434978228194474081909354332', '-103384861271501400520575481696310128926061538534263361845524022957997389715640479561046089692194108884343449310.3422536845368577965862523217', 1); + T('765724.8058196984567185549755236387342642542128601094827801684110', '-2871511540480306286230716009167755118386587513101483870025917810.88436946780861454715514628104283462503253', 1); + T('24448714061097007787870390934284762281809018607186508400198524858281434628378799796164614395462', '136860921422568786599033843935978450.6', 1); + T('31976050073630733902118874888120198698694428091108060659949876943761489391517922167985154033832205584536458188056791991838367292725618452216501378', '-0.000000000000008724016496', 1); + T('227751527822451319233980036203061200794979589033503610838256022189246563024105758517686476756678884039664356839803154355514768438.25760233796425193', '12930579982912105586374957109272.9584159836524371', 1); + T('1514317730700056941559141895152952074535483501882733867310806012120694202376730571677339176140545799', '-1160800067156081508973855089834407714656861906.51850431230507', 1); + T('-0.000000000000000004528520707580758615957670805419571717242606879228', '3281046363579593520467268296573492611708885559390440995276756319312503600477686071166829762632', -1); + T('-15142766.9262153859827204', '0.0000266963695358775794073681141921441505602549064236507947', -1); + T('-1170502802005482729655202039369546711769196.3826548809416965101170', '-2.7922318280801312629836579611849652427387594471800', -1); + T('915561706486714241282431129.3095438633737782096437500430272652', '0.00000002743295589722432883027847254714940643024630751707638612336', 1); + T('281768416547033993113190996753004903757335724486313955505402513939651088167932178912956960256084911825899718067523864582.316462439983238790646058945', '-149073711831044726451905735929139231365157160963186101095501511510907692030494797397977970495144468856267403314717745696.2972152852646707723456012113066', 1); + T('-0.0000000000019747673020255994583864712477644533161788381792300799696139839', '-31965855724497611653259696447953582263.2864030194503056', 1); + T('-1174060959246006.755952234360360526196000440620268', '10622998243184628451912141.109071876810564703814335906300181', -1); + T('0.000000000033846382113152238688078094044310425164545900148933', '-1111767780033233092141350626922156977507571423642452179209671272723.16734621884468521854782887743133173', 1); + T('-165250590789141636082920277183.08120431640165768', '20582.14148', -1); + T('-468339329.835642768092', '738514159142.27', -1); + T('-0.000088399519151094279453456909123490568956224146530747517787318847682582696828096135575460415155822773423264653037725174685656', '50694235979171725.10284160699574514405961006184943457644973589154', -1); + T('43870463394510215993877357948126367526973038358203', '-9722007431984300534876108771208960300602249500573036985', 1); + T('472964469449264925748432818777986783251555850837785.155421757016608709428994296960752', '-9311662.297602125194', 1); + T('149990356612051183091016.9779087859113196930497144865038810481689032713686587351635927000452', '0.00000058376621752446454994221296235106373116337068588954258416259841704699029370833659808532069056542382277544874169614425448766346261208', 1); + T('-0.0004607678264613885284392068473867065453534101118751415631835372760188817535650199460853741749428132718940014704174405734985617847478329957027082025', '70752058498943698615424955949868075492906532507.0176757020599642777622407991179893486322582944963580901150580300804716044265973436522', -1); + T('76888778535419856741284623506934651449268144461453.4100936081838029065930113909', '-0.00000000000000012226026014905656393255160074154788749706679568415031254318647732324163664724545113944076277226550929098290192398236321899151452', 1); + T('3203156318209811351127849964590315886954164800424606142343745.1683686381578999431682489662239045', '-8269184657749537294840577216855405317480047874381981', 1); + T('20111727365475687172481528350050313287788545571058937993235075289638298425.086714092681300133339985321', '-1.09', 1); + T('8792.394469303535648526', '556845927626235935416153911457755895037951239.9178326008028011116088523904503228', -1); + T('48136562376.5855982', '-4664620002491508667225096233.3353226241084544027216354820339730176405177528341220528660597322792739250720990838180005107732410742208527592663761347', 1); + T('89763855544387950417149466000861904435721204626431782465991561650.90098406420', '-0.00000009765299607531302464539006851217800595264295701520065262877011318715659812090110386884067798529550037236942', 1); + T('-30868393537038718005', '-0.00000307', -1); + T('-5185223470716576655809195163610321.9031646', '-2615549017350666281371362184052090206474489835519628225335567276034298501607305275085823412253', 1); + T('-6570190451631686560241.38001587541890402432848708439444609643933707639935590896259', '324626622468660389631964181439480620661269389440074118784879141638091676591242082.35149172529026676393528466386409586', -1); + T('102286341466180974423299.520959571961131384673275163806585575115835', '2745527309114708070695269441663991101771080484480716171439709632411018440.9471846829949932144642406654855468308', -1); + T('-0.00000000003977653756347008076395413408629675698295885109193277602695303170782568202351152991936286417399933347874102607', '597355470921919715241658157756484780639935506634657853524178238394469802448173406793521622383466470180001778292727.40733108770130813735753', -1); + T('197887959303.601932', '0.000000000000000000103458894529722050736055678304440744297638258502459562179105262236341233794829198584326110727749506382519131830616987451966701', 1); + T('-13307726476516464006118797585863798440642787931380742817511702537361080004023468421495571836042024747.479074717', '0.0000000376335065425310597483666155345223642007352033783310467188460822186122860392955355838387349761629994780', -1); + T('-936013007953467845983397438772135456939667638978675074252173994774974753052079960592.47977338457210574236644512980713', '13576615292952511187779127518363704883999332503672973.3702971759282614976225115585', -1); + T('9.23', '-12798427797276', 1); + T('0.000167142048', '49719109889269472002178986135088991291890225419981596673500350553633201288202635.772926153589574093304933356854028686159563673920076130779451', -1); + T('-41507234.121353293309393741599055024405018684', '-615662226549782365482025752065081146308129562731747780117504154.7257', 1); + T('0.000000000341762255281442429237209572068507698445580331776282387508674913040101434213455495104', '-41949136443982932485075657535585958912363078315441820291608', 1); + T('-265613151330300009209671564.4222473758380149118266958', '877381701435580606449.2823863360946489509927889990897436462984330011', -1); + T('-7775.7801922935180522039801358877017608615817227', '-245677467624819356918999869496669189293253534311463142326275828.8385050566807262539312986315538671411353195745005372884107987569771605', 1); + T('-56671611310047491548245067647344781122049835409812386627.47184833607976624521197067809553483420845430755397', '927756335187625067734782189305518713116277817764247.57605072238432753688349923151908068643686860012798840863564716094325436269552536311256667911776199', -1); + T('740145597581078317830455002008118144162252296932312159216520649062910882', '203.1774262154445', 1); + T('0', '0.0000000000000000009031734111110941301911861337773289644877967835', -1); + T('-109614283766506080410697376197915899265557750362042034638637253839764519329034984', '0.0002771704787349519193621964400949845983482306593453116923699372132126053949806228372333859881841496151153670277673003333721', -1); + T('5539849710.1733866507907276', '-3181810546381672360262045367009456644564406098.706843157492761', 1); + T('7919.8414971201383271371184303738534957144878404477288669', '23.71850', 1); + T('-75173119692055.941978185535165359347403243', '-1777369117489847081.5793755856264212166727373899851099330121210857826856', 1); + T('853843518069945548394273175137114345101444889.9227331700075815923961371745037613601267987181194', '-128714814686121222464195889406689437357524546230.015234400775', 1); + T('-12254994213398422679769049305686.002801989668924092053922987716790500288719964943524816679018713', '-103.138354211842234506715721756147981015254031181706983900640592115628103240710219474933960256729509150933435108751279275932464534793849351884639432456', -1); + T('-59175298043142026219772.6138367', '0.000000000000000000070447947045776431902102876458194', -1); + T('18408853293470113069702150408569784461075475098255264356830984000273938318454913474968562276768901135468209464837', '1547252236967174250.6109363062455217002510723246', 1); + T('0.000109934251781192379417653296979431190196397725358849059626366415903680138562279946229803244271813742725286468939793394672457421', '201592.88634560', -1); + T('4295549848243131726044253553835945417165130579767473284081170673527181.25870512635225264560732576630', '102151540455604787176154202447753962845.44365218', 1); + T('-70018315186783814804204234064836070201850.45111825112808417052739', '328359595989649160.27671859944', -1); + T('-187481575498617809778922382731003340929808335610196169', '191210658629716423428208663327712.22840812936979919141196164775880201034911336765', -1); + T('3935126925246231555928598126054809026090453369989273776664805163851.40944096517984980', '867141118109779658944.2878631198762910032', 1); + T('-3.3112', '70293088157175047259886071558256457067098.48990741414498249210048163949091759610703775633271629309548', -1); + T('-425672404160144333420994274930650792419390010238350069166384976005003337185319653781910705867425126832871403392819177542518702296572117055960061', '839737903411111958962035888468571596712972008129364688.4039', -1); + T('-1112579726844536917102467847.17653', '2663046929443819301686222.8815254170857930', -1); + T('-8252839102489352083135451792859801342710108.002349758', '0.00000000000000000754813631507054088229552535842607509562669628676682863560861982957068071893164866381925307374227108742169408306216812315857923', -1); + T('648977871365662014097820749365461557763157639862997561.9226938534796467778911346445390320354152128870864719689734', '4175599249314851119719173611802268614966549291562107396112171800916368481888650992052892917907331', -1); + T('7.978771111691608901034895922046997520765316732991829020429708671577870', '-141461002304237680013302819529217200685047249677913497940481241136261081366014448461680075.314895392687287547792476133', 1); + T('7645457264770121264.11519238056423560881225944703024802644929136702643335901338244883352676085052049326756123902513', '12248781443620567711948542737349180298557346901690131050556844819693354875119397097.3069688913965372036867997744', -1); + T('-31463526490509734316426714529666961013007041330904474383539907327397930.69855820', '0.000000000000001084414212469851737741900907708478145214018350492547421106994594378', -1); + T('162421846200240075972.621793667847764426048313662775180616649900013446891164416772769820233651942815777530072677881008330637209917194592673406865011676', '1636.3384899943980', 1); + T('-9388.77817056401956890804476948', '46543968580057.279028606835157899512662680123283044326771', -1); + T('0.000000000000000143303812564681790621876402521018890314183355148990', '-7628794548804927.34', 1); + T('-1542550905995342000761716058753926543294062017039230714986137143389838208183333', '-53800959573.4262787634955806006145772222341066088520813', -1); + T('0.000000000000001152730387533585619339997779185607646939273677780916', '81948301807320885956271993225479133739996835479108177281833065098631486001558755667729745414069819258092', -1); + T('0.0000000000000001788799320895331948748150602283438995686077438726117754118635774342676674835559', '0.000000077520063644569438264401511693512958609441535842475827179071085391862921498640290404605863569208836853054800018312203', -1); + T('2562546890284566201144784661620724384611158674150768124964079346239943289319722480037060276111920.222136554767961523266727357926098927614671062311740560', '138605604122306326.2813293437333129599840', 1); + T('0.000000116108838430759441302782521474416259839111834957042904031702308600565811558707520', '-32773081443699450674814232178208000165745.1531323897041933349725844322275', 1); + T('0.00000016962435025541763496758773163192785686185', '-489746511467818443870465628849334514883582042615007726260255295320662714496913671884730698683.29565342494', 1); + T('2595681723.354258055254516439280643724110163289153337969294375601861106415452385', '-115227875945154401241354604360157180225326718208937244144045426579478908666999062245014983584623561102791559344419.3439990067153', 1); + T('13988.2256045374464162730896958695884374', '888586900556332788670112482.37398292826916221274855412326388860996499123880558724209443328949082009286758571156655913796044564457627209', -1); + T('-0.0000000000000470209539970879477', '-864491095896332104056.032991', 1); + T('17234844171529654006262682431556684956259672.501251903404554782171218613148856041151461738989660504903649745731468011585476495243619320849285372', '77.057212', 1); + T('132143152930296638008029506374047631241235811666497989329', '-1574290622065771830275216174898081456821450631640123172766526472178.36621512168173889629852301981351392061034796955081897041667393', 1); + T('0', '-1316574314525845529636399894653083761113210297566939806282601610613495358962733006.0', 1); + T('-109413572345091592273384912644432788116678901530150032030387206946515405272708194880210199360', '0.0000000000000000001151002167821514439222568523527362216245718047502081296141262348073695099576990022126977579292159436086696206194791236098302610981584', -1); + T('1710704295541545612797844331135458249843431195009010270413420412760951540267443630154282121567740496794165882981618621038738605039191086840775989345074', '218797555950100963168190026470661147747154206564462260', 1); + T('-0.01986463638088003519038677632588937621107015695', '-1028.291246864751944153983531204139834559', 1); + T('-6129329794341331550700126780841411.10681976024490695157405556642104977194512590697213', '-102763039780830034728404554703096.812100908361472984162806', -1); + T('-226.626', '0.00000000000000000023420336780091', -1); + T('-0.000000010129241772248087133563483455888815190018826890577292551683993175479005119579601450564910', '-1790565914576279812291386964788431643050956024856703305009441744724322410099442946374063091238355862765866', 1); + T('0.0068398345678559403526205622981764242038537974473365', '-0.000000000001407581522035574500483500', 1); + T('13412104116279855792666084150933562672654470809264824', '-42.260038186873416278616781586145', 1); + T('0.00000000000000001437216', '21380203762019351547345259799258194003013715652251954478030855132881874773077307627834740214867166409662357639227437420816938973889', -1); + T('0.35484739402549358280548938093488455603603260', '114404993135858248063275522978544019274645376783367486741696148.0603461877153775553115699756', -1); + T('-1392486513299304175902425517444632375062450839823901184672697507427515176395766963801250797985239359712769304501547503238', '3454044166627774642387359622402929225788813383864157201212.2114062265086063540445467889326266', -1); + T('0.0000000004235328175528436975135029779349501289306568759092284453523973254966515714043412430621851', '395056597915705386266389285222273.34', -1); + T('-204238872345600290518420', '-7070509208.5', -1); + T('72981605063519176291637366098161261831841026794183175316952260221206391640795191543.8421968648832009685372935897352204397516972141864015416063525745', '-36262462150667.754518420039671271875550396516537776640666003', 1); + T('-1141023.82684352', '3434872367397371325216431040190149263337567687305458524226443036', -1); + T('-40333484548205874986507170870398476011.93898153865902627865880451768925350561994301059418337827757770353', '0.00000000000000049632092624546818538381130693253691731101933347881923687', -1); + T('-230663466750273009979493177203432440.865302323651699785239168668412433309395152855727', '1670998446668363695655787373943065972222.36760305066767262349052811349705705205447571695947815663365442810397158464959419047231577852334892259862', -1); + T('1495920643058959437383621501654941246766508238559437227184395050508514977010891589414393139195', '2', 1); + T('0.000000000000000039324000814212786891918567188197481938283669634275484732259078', '-2299270960425972615800224709593358786239089449465769176018404837987624610630628831153594469455213474024413922975.3876555670185953786804983807034', 1); + T('-8082406101601203880115291043102466270919070095098281953735730788166344088077537197510058.919123451989584674149285735070236244024421371', '-0.02226327405613293121833686639574431245399059620617834149317063960558350928186286512729307426425266342626060275759668774073177785043824298828768556', -1); + T('-1260845046.64883107384', '-0.000000000000000000032951467370811927086119928603400891551133309876860179950981702630344524252699073518428054', -1); + T('-41702237.44707624355', '-403554966566407328040246233531173350056173185174578248744654858876543716393251428956136570123.045148101168981528401974150078770666865217717450803901233', 1); + T('24411533732401288279000256393511093097142208723735552385390279631903938583581112236833308264597448368803308517021849284586376379400244500274869616', '-540499000648432033602513088454810109729675397905099895623746885562670714393437069416769033407782176', 1); + T('-12796310936083799962806258894032181490930481696661675693244680395898.81995123483878975', '-2414014872118737871549315707.978848004363088', -1); + T('-314497255487.428261813176560336175', '-6306491139786796925149337414394236828901640814689977446346353525569212758359614726940791393359277514543960143.6', 1); + T('-651088466302570543016523906430706603794205652090045214990130588847786.8819083644743982693765724621734749239800740209128895951504965', '147959.682405388376182159454226557702317868363038056542259510762433258825701331105581616424866472646181109750953466531685333313177399667105119076833', -1); + T('-6703.994577459788708', '7536793319.4553806370980150922073737014018531259247', -1); + T('0.0370921742946192583396225808399487629915725931871147443686211585371265633482', '0.0000000000000000062212476744078005281537', 1); + T('453699458249145242', '-14728948.0513745626843613222', 1); + T('-1.28905599285812487351350473737291244745697', '-563389218829763133702542103957052040974515855646', 1); + T('-308', '516984036404958828482096090056459410969858910697997243496259251361079985076443709267317847242129290643438742396', -1); + T('179805847183633847438194.99249873787321719770175', '-1044247574021452596915714111909132257910423096527567', 1); + T('123554101588320649544216.106518', '0.00000000000000000004397994853294475245700390814883392112100677236773424756659144675174327699038110126243806258189173504', 1); + T('-312827142310757997835070900727109666586292473761969938151984196401897529.7967077459640049698', '14093333248931096650.70140994553674013659186980319834246516116032507700519477099803787321480988634011220877', -1); + T('9288004658713735991395448766.471082786309347191997997975323232039392966794167278477200470135442690910', '-0.000000000000000000036236', 1); + T('-5003663162392390422998559930744815950712475533778862767546033634736239106865398.34200465736653393272456', '0.005995077716475462', -1); + T('0.016952849058784222777545704550635491760401113492836107817192230098750165112382036526736941511441770759965884476270435716500782779545192104844146397', '-214821059260215160489474.303370805896558958575540934636712555791219049338778586728609565132509837009652696', 1); + T('-29821131523003664342065669422390700671001522069654500533110790', '287183970895010462611112222181497807816953448196337091051099725372640836865215266901010504439100294010735018', -1); + T('-128872.71209378812', '0.053283411554461586465632620143914891566173223703579219869905435200516553382946461331422076259227430115354178', -1); + T('0.08775752449855547001537690223228539966158257927867747229093074060191733122415129411764', '1333896222140748443545958875369018385387665379713651837509817389114355723402401.0775181114677961790564570079869', -1); + T('15629811629486124784855833358618453024981468519010609184558364167.768915691712343011342006201865733766347105695', '-3559856665.9588532621138851367041381438359281318430119518966199303131949113094567635577699151940255', 1); + T('-76654490432007487677111411474359324103728780911984821055308809497501614199876134', '9830309069585260103024961490220561448272871874066193433860218963579073519151392.1834947306646', -1); + T('-31109911419411460374391974256048150041603191.62921550390052930006782191882078004773451449319', '0.00001106636466858', -1); + T('59412.47533', '-39255066756843933387643056770701779729.0077716008957107251561', 1); + T('2662712418298080979.1948976333080', '20186609635162532310360175381112691215793931769846124087001563989679.289555957816471233930494954952811347559621424189186664143132', -1); + T('-3.389322169362240007054202653154909275703397214107362913016717989765940692515391', '-0.000000000000000001020953040526246078334443', -1); + T('-0.00000000000000000007374487372528988414726674382189607121675122700289699190268421814598374167900942667245468200111960006664208395924855208365497808516088', '-0.0000131144124959397624156431920723496903533632256118147633612272158310284', 1); + T('877109316442565059709146872571994508553392', '-108721.3420464648885227659186804342432278945435989574916950', 1); + T('-310820553664742286349911323220568418134747887975679788573390691884700762375565019784272806.28132846056923331782638419840233371336', '-0.000129907852986510765050318657102730436310787353175435003200188740238798817208048019233959261195408801763064829045531860468977152903483168', -1); + T('-0.000000000000000941506813198339645372998762911530208153055218698117008973604076971894165172184740572845955636588', '0.0000000000000000035524983724808596360636883393862678354781', -1); + T('-5.708582962403979536402415075748013664386587264597389537125177279692027025', '-5444494016350641630074.4592669873553751386488228125095493679780365124590363918476034336529', 1); + T('1065934250.01120693', '0.0000000001118603899195807698300785911351272000758786456989627596648367020369673309737349439920244363853300300', 1); + T('-5767260025207073188444945197413274423501738050189735884547730160156', '-330580305165737252114656677623101326542624691273133923639274155802687902056877140616096326912578282576033.707651495772456980156560968135871591663460', 1); + T('-0.00846559920865320709178796883143043054766377718918477778902455012013929978343738333', '-0.00000000000000277568352085571198453362669761349413107250675031694958277194', -1); + T('-6918667114.993', '-46052052220603902657877827218788263055315560133469865149768526595441710407900.57985786910904527268305318771593273453522505547552', 1); + T('802546912863329952116633224748510353570844472458722557014878400044036716183048576512202373334873328024319243274271269741459325940236721', '25.780661731282395351556152740', 1); + T('2184816382096491338787830715753.096367163048963598057691886397682046882303288589909079888897521056426702007482', '172169492388519739357027405423396243714.9004204282430309366098112447812547986135720071346255130203678718947804', -1); + T('0.008529045730082055582061059599446072673840302070786925367152757187979559845183911839396122993813579990676569522462800526002564', '29369561465233302592528037897817257355792654406799947375029638', -1); + T('-0.0000000000109017743105447531682', '263922392004884246723806322057980218525495312.37380641189784114661235018695096998668551216502665339669331921962931477127511', -1); + T('18149660819867833.776611203308917195146919391529441', '722175581734659614727875382644495.420521458331848034289', -1); + T('-0.0632388130646494', '-8022179644458769940432045379644096328530320362627149758199672304055490229348414207285963636896546168', 1); + T('-240884.4266125433562152474546222714299798660415870584341961026', '4565819105565625429351609469953039462154313440532798419344406123', -1); + T('-620288745832328944104633174104780618530.142289821594467', '-0.00000000042763677901729875137065795271947506429102070293254358849747074726025655222531640583579591035602665241003765385226723638432242517705', -1); + T('-0.0005997232813686082699072690646851437237510751191877857078487507971064518280118066752636224982626066803761438054710648081819170217128106038864606666', '448789772975807181453965791618344036709371894261789527483851520640967.564734687953462805464508292237645', -1); + T('-5944.46084192814621653509427362663260065275976732261237211575829369239376100996606356674502186726973297493942586399515155362001241057364039180', '-0.00000000000497735100370463438660391749047107856740436707685228398464338395009618984454240220388539', -1); + T('14161446516382225835.7766', '3542370132472105378163771457970216052165648.7425781268389210107209726519645230419709021897835457608593367579978930689174492450922488019354946229559', -1); + T('-82802195741411961169504411985695677333323242354.11983177229539369704405186974555282', '-0.000000000000002144832189233807282719629172', -1); + T('-0.000006784625484274469162301558877626829276531242437512334202379799727636918702695926121552306634079565967137748099137484258', '7394871143261456851628981304387021212671141137347474914493372160821.849982460588305432064962', -1); + T('-2', '-9577480957257851728668158925285617815497407658006869447421603583582482671861877265553874067890434541077880355621667743910295.7200699525124188760662', 1); + T('-197708341652218617334936385971802975665.2650590102', '53802911630665345933342409174160976109848064320688374526798452717190686158796876613968866779882767043999203016678122719894918187.874065', -1); + T('-38072823817863136627991695274477704.5643520430804929832270354210126212790225020895173826266131214755461222609225019501', '306508739886223696721899282220346649.830346314255', -1); + T('0.000000000316191129355863756434416730315412182337261365809876435613199367647273178078857089451964614692088016490008532807028204058', '-157162422306489095125228614960816215001360390504615263163200492537376167.697035893421723100121710027972326561445029491994146118409598263141950351594406', 1); + T('233976544105397.53972383', '1125648.85', 1); + T('-4130737000.0498428402668398062658352051845468818656034782938669910130276648346395651', '-0.000000000006241094763704769356703784', -1); + T('0.0000000000027889130336186175616581318491830441190499146641708159643961020619163561667', '45180.36604064032026790448358284110671357633387319964786520709792147034725656798271314354746304777783951768808251243116293584625182020126910111', -1); + T('-0.001763577869', '9278.2276', -1); + T('-5950168542955097743177295383964350692.905100936503492816358409770353723347472035487019625013276257808231', '-0.0000000000000000029645447547400994864011386152017637251837470928190914231982054201322347159873722936132649422634877469019375233796913', -1); + T('0.0290875288731746531591535288830511501906464467111328224293851702688888742097645060905370035803256633571014353548442220', '-294026438922793701124734905079413788211.878160013300244423789767770679', 1); + T('-0.0000000014982823513781007328958069947012871143374337994272660148270374805416396160092178212524736096877823992919501659712353985693297357433585031', '-9868101235517540617583414816531196163394846626.691831830894', 1); + T('6182476112765412972256430874006641281681083766558867329491.954829670374057358958585899534', '880396637045385811179717244187902683321740830158884405014171018661178832737243379.99039995084170785275378504376555296739303042003359925', -1); + T('-160751704157218639705860194646066334461390616893.68299259975682214519324547685814966600492784129638821897523841634', '105578911150318367.008309279644258340186264525150749881652252235290292605', -1); + T('-143158723385187700800431662230078385359.73820852144937977467', '0.0000000000000000000124340639699407338232687471046541468558241476495226668073022571684081347728341350550106103160149578245741', -1); + T('28458452063254242139803200671296001714734755842622926787079731950.0992735055675190876673437043110150852937949483', '-35838408218375548738650416610', 1); + T('1405901407.569822238040634590968038695131224115356886126732238', '-157848156800682193772.423092237390517494814302283186221330', 1); + T('1343.2952', '0.000000000000000127921933329444723698800231745313808252600125', 1); + T('28853632715587493558858323118072822236165839078014960997892188442420732661028174535.246119951253066921883027355182179886399617487552776484774687', '58109.968599810577067693043679467231728516554760366582163143608751563852471056960486315505049057948977813649161', 1); + T('3.0', '-5100498997359905798.17245204', 1); + T('-0.004911663588685959180762975105547432899694263', '-195.4862', 1); + T('0.0016800213659346405237529123816285', '8.54847928757376802233', -1); + T('-279764958968647619773787889.6654810407333727462942344', '-32911490485080881220995744901356698586892447851187378752704802609678707535904977.2349682793537012076792399816515725811842024374', 1); + T('-5785273759.646965191309783081376893326464784097386953277756864344482261946184327330852', '-7829585551142601892881228597972545207045593119', 1); + T('1749468477458267264460735919943750511749548119353526653455735024376363076831020428466683780580.382746467817800979', '117808811280451.15173068945839587501615962470947002537366415063962231776', 1); + T('0.000000000020999785770461916630781325078925976998406955207235955893836098174359617198083615378801786560', '0.000000016082556089324398313999563719442315635940079534503288230557353323864912025891052353', -1); + T('480604730995226700516.8211623950807854777785418843', '5121637414014031413488780740025020869010447826688359.63388', -1); + T('0.0000000000000000000414327897716676413497790718766565633611669986458582853310823990011501385441729741967983', '317915031341372776103058145461905010362702388394603209158188747796318349497254.0341816356079223623851060840433597178761519084935102204279867720861768', -1); + T('-0.000000000000000412840046822276949148', '-8495.635054982676808368418113257375475710111078926720024154221406272685887058370083', 1); + T('-2197955143857705392850268630353264994616393635646.698149405979940304022731', '-709379519152508448101054642505472310149794092278935824702792668825161997157315768209798490103622850132151927880856147597945372566812892535', 1); + T('-0.00000000261844554473808606144849883800858347445837640490072295304861523742613457798612213017468212453275', '-4257455569092781990677425261987768564734341578600573323744310843721093.038484343063938561039832375679139', 1); + T('0.001067310532886835735948587831914288689553303108', '0.000000000031462310921375409599725025289890661282700997505119039922194159851961328187903443704235399598322794989000459030891087074757277073644206020955', 1); + T('-4063265657389255020751373462844579518406276172065432701779826406527190899149755.03517774122841922794975102464204365891', '-177420797464172487220237833839895154679.55011483488839278508767009813747588375752975369464460567647899844', -1); + T('-0.000000000000000001869682149225241953308274214537693115192334192086388308300459785925708765364103340884259103064347330742062108169', '-26575432925732543046433777343805635906835756.77068203591990998282191321647366170089253841793502621205827556969126543988080649772889793884', 1); + T('0.000000000033068235057345162857793510724468755088654739039376687590493852515005413160754215391838260423538076895754633488993574', '0.017513325024275361448809543357388556724448571616284966015444430', -1); + T('-2026236793445834948507161660525890822744664756812527.8835718009664526661197600010011007494858846013632636703661400114', '-0.000000000000000002859595745866245904331020489118494794587721260255748716684271140711216699026430746445835646820788772706657822185638176542620892759210718', -1); + T('277022415667279674349.93159166888354112279521767856918625662786507898346558797736030', '-735938929386893441493788058350316673108625777978459161969923997224585208026818400417362773709666810793480', 1); + T('74232319.567499431', '-56621962153013901078899971001172502878975414000348449901.28271290391851422', 1); + T('-3941963925114761115410393553297553624.53962931133021347646967837208017011194854908672954262275111689570', '0.0000000000000008697032', -1); + T('884371959410985393786970216012521351503422236180303629436107407710398002848795.2898794903243646', '279245072377995673569.57825740047951807305399484447809098617257475260300', 1); + T('100631006795618153033034251352672.397743863352629831700458457767', '44099488689948413571101738537602860137703950300410932440087945678445341219014875737401922780.17252689064335904983389027581416', -1); + T('-1', '26868582.3096831844134023012215433466422117521756773917584228132667216484693295101611945772014129671', -1); + T('-502223330837595.44379400944709999644635357228899069929988', '-244003493276454121687882461126734836.07592128039798251908581902930717022441921782407196457234418354328582', 1); + T('33870893120776524224787.26155584027957777911183884255850768', '7332984218265663155549396746597908086330161269696624389865650149280363963921535236843118406711207250294131459763.292451119914782794', -1); + T('-0.0002696984347940490398828397266594740044041722095889055402876873310427883943924936554247676452751022', '-0.0000000000198505049352941803865970937898774479162157842482374962457965176036173890229130068136812989525256546479161037', -1); + T('11790148948260649482767435943377652438601227088883805365070340866280933972152574199547632878971', '233346516936414547946433708151846303258806202438283735709824656199864024559', 1); + T('38681768069179772995891498403722822330048951280500540942361519429848268851021582215739737468318', '2282982623239', 1); + T('-8718.002', '-2162383841139137785874392020678.222654167998464572757082745022919124895302054425608160992223227660036361141753054047144372425', 1); + T('-488786545287184792041400596.429764766800072062963773425995630557595146308866924025002119736839163', '150349397895989857.625350343999955836341802520548691205621597531311186198090511440272682715306143508070716574615641968162130759726933914', -1); + T('-931924244656227219809405990301731461381455026788834465108077474984655183700894292742532304542719883873737017900061725370877671670134030687081330954', '-22590847661040395922870788012795560463738.6042785284312011175278095893489415781880229608749971180', -1); + T('150034078673021523537829708913856916052846430.677559', '2166077460871.389181941661', 1); + T('-15221173714267229029000823.870941799216310763467302217336309', '-1673674035036687535894', -1); + T('28462245616076323814547543516628503117353984931675274738003002529627.050280772564006057379343', '1684755069944063046468856794520.544285696374626', 1); + T('0.000000000000000002149636302695318031277254419779385264', '294828031937806482188347305646408178392144292715768037206520083084', -1); + T('-496433201256500626575612612181413775390243576650772463544387954585218643129869625320303924670', '-442160689638185654.4551347636803891464498055343558799035256967658204045507964302065922246141137529665782679', -1); + T('-129579775113494026315929537570278930664181731133208782701.45426943069540180187934763841772148976875003178126761049589822456645625031071378426', '-50960835972632028101013868729008914820797471866095853076604833015003479026669241141140168832519272084406271817729840163461909', 1); + T('-16747439551932269968419783516292565073527286.5978912153712873353897', '-188574355884266969.5316894208093252428', -1); + T('-0.000000010491592994513761160780', '-1050932951471917437885324587810501317003548260421160.74485123595296963899543431', 1); + T('1010839134920617276236285760745178410456.2249870989035696035968471032980500261', '-120594328581364716298488828.9424349293373529319017263005601621047414886', 1); + T('-6745237811374494493983732995517490423110771468604331647114513524140869041111924.07143145225484722086621945039491878138053819409423194', '-78096848334747442570326820068097176668363000702119878505808158486202624573888559517499059469543996762065.34515372475365048555320336061286656', 1); + T('31641216104195523119323298187454596691469623', '-0.000000000000000000258260225806808436156489946400669652403071801164964794360836676150308291521494089553214811075584197298817277602', 1); + T('0.000136955496160497638501494207878559539838907773928113609973212720681874384188247121736519967860967190729707', '1131456362979085.096849571030916258593458603291865925658158837160864', -1); + T('0.032374350209810222548593899', '983665612534486391903069992076771767376905372098300464420498293252673383701.36', -1); + T('0.00000000000000697749637212917655601734843952168313079723929644561400713832738344957256670570318423980784737919478703314324358395035811505647250409924651706', '-502882856311579316783157003.0536395389', 1); + T('-651635600158790804410143491638919845677600042415920405606770304907492557295578675862061924691925913075254252734942878', '-60351457742518762435343004631135543741539510674840042991014451995652190.6417249701705696670', -1); + T('345509817388294075020401571707985302468577790452097230.67244674898512863573831730550161447995018107519203024', '0.0000000000000001056679949312910174815404770839634025694', 1); + T('-0.0000005133332646768106615086635756288330738260842203558000626286730150325018694693726708199958605568678693224332247500950661171742', '422219598091.2132010626485059381682644362524778822675322', -1); + T('6209045587577773276464516075468480344927865681108539547852034571272194268785056443405885354613045847441750653814344012192541949', '15400142567569326379407593600878161357.3158267836117765', 1); + T('-0.0000000000005128844809243836111542045', '49208450703085595317554090353487521994302.58448330950634435909161638725929613848207952792171018392294484488157376401528860', -1); + T('956820321617083079596327657581942071127140318928050899898356414048159721950191.8612258', '17278138380102047215838955529410627.32350998142532', 1); + T('8582364', '774.20922956184858799', 1); + T('23221742968467826352973222392797444267945245449112426217441284967014691005809044233558034646290606716623338692881049684653084513', '-716575979020985.279557138936348127028057421241051031841307264455042608637743866536141586489408312326413837112549345', 1); + T('-64239880442', '-0.0005757706836762797690172810781616112054771449962376286638181876626306753967493356164897064584864421775', -1); + T('99890913975286305568325542267993806860755562436873534002883032609372302026293419920260643846174424961790', '398563986970697552164623501292881320978723925743958528075037214399734729923685025233165645512491551109', 1); + T('13099934563976711709606830808259471671138463230508665866920870667879022883291570961467719262054', '-109826842662920.8298299283611', 1); + T('47185659575228280475715212180191382741276156908324186745372219490089540417870210622287493079401094749070195008965690189496257.6344290361', '-191311112886267605129186105214676155987804385676502850167374976.81421158641221691', 1); + T('-97492338884677999782.8', '46090.6038891563729837049651434308627371886782595339529134134103138942512716921751', -1); + T('7375598828163292955262802188069890697127023128.355980866541558240712761760425090656158086966127126201418096188025050710292147394218656199519', '-33736162847546417083662199915.96497427321380545945697607572725317230293032258054213443', 1); + T('-218160598947993698294987185974447249912.89115498', '0.0000050015875427779244596032970734068655494267635032', -1); + T('-0.0000000000000000020', '0.00000000000000000001471670935923077384861565636336852413366332241046663589863103491999420020658770322413837060604', -1); + T('33129180170998410129893543070459417633301197982910425.64606409078111879170213981476306214296822988445339041520791973076369873', '948494610332137187926756645888688419826755038831255074436327001443802251577207818445858623129.161046', -1); + T('-225952021109392177218450439017431752400942775732240194661463892287355070596511103556052608754481002242937280547960.167872771176417481374193116703938', '0.0000000062277239670560908419969666371220135218008079705746207056768105428331985213283124653402345973621907360434147807551859292787803296246381222933824613', -1); + T('-183573578911405697023556086514609883893306795215626297396579687619875304342323017839805206126604229488822003279.59233204484561014983371', '2633566858032007647133550571239916327299194373140075907964398383480304297038434790716388124909149725536956762553458755051740197984938091354917', -1); + T('0.0000004460397545970448393886895088191903634042039815', '-0.0000000000000000095347818761825827527731028387911543955632717901933911587359863970181690577102483822386465350730573340050175224061', 1); + T('76836306086273960905931260788344443215614886.50168135779713336', '337185798150132901588999178764118776.92309780859993696138620', 1); + T('-0.0000000000000006793099207949304687582058497331137904457143594', '289472321951375436507478434341358.5306354511464450479041413522186381', -1); + T('511444049261329873.821317987544416845423877441515588846906090911', '9490010.05', 1); + T('591713007334383637715463717.1291808137387981846811658128330485888980625856216328030564698865533394807126005192249912613', '4823684942063255528803421209.107961034983048341611839235146', -1); + T('296954671497441320436.6897774425834586892939399251192320626790853969384028690679126272812703387657033030897290641153152475784706776362266597698', '13766678990.5234817', 1); + T('-133060567480374920488783510341269926348673610429669534346754755488082205036746.875386348007223776953779852911928', '5927', -1); + T('73932844006251372722325798853706639310834528653981099571578123750133433908285265618.76202624654621129232002', '-0.00000000000000186827495500328964616880687615273132151323886740951058615687142482475027687476', 1); + T('-146141982259082027635792785584353187175763401213207391', '102024036100851932865259629376529498649159346459236183997.282137015883624412337321294996984015309550913896592804940099660111659498774210', -1); + T('0.0000002414815', '-0.000029758446843941651956375917491305831593454765385140091979237320013919577077698799164529328687158159830988324', 1); + T('-210151030793502383014434760169391310.18854098497872', '-43132900782065', -1); + T('0.000000001881697195168801041002308195919736876762525914212692483270', '37220503866578932861716463156502243937410265932050985593845402005265927199299255.98344413682304736845548607869635917563352646023138638403944588', -1); + T('31521072328186955772400060885593.59297383310829219344810143967971187389', '8299359200986653935603999653552082057380926282505088802016107969552627375549163347904875168992450289735997709999832779519890573966176799923577873', -1); + T('-12805934102.27948320410636171184694060430874642071534941054923893481501134168009876861420438715119150275015992454925505523986465864594', '180018001880206592982896205731793655606255072617295111549612026292885879170444460136951078426.390401726986399145583973049833043477421044648', -1); + T('0.0000000002936016400407713831598517736778340369883558829401128461721111534068980221676584362479994606', '-238280848623349322403710808897808837396452119.946711492325936626002256793789239512952', 1); + T('-46459704414418529966558677894175211345197518419628.95858240822563998829696554747145974856949749820184367731693913940235039725731', '0.00000000047722733462292648206074425', -1); + T('-541280.2703925225439019884062953901365125819982181630864435007257550343992637766901456996336131019366630269083091648294919635719143947548766', '-228034281', 1); + T('-11760472974851709104383782.662777303052700', '-8856003943296025750571072176230995254098814451714178705187395377177217251293203.902574261722648560357498315885671879950820620988638695483994173', 1); + T('0', '-23189877550335243259085364.53351434706336084256915879121464887999578773388400557820325828544547283691169421254622757350946740952577282739', 1); + T('10223905995799236594685978417380096525435726347166557843.918727523', '-0.00000020607225637494236034677211524295904660928630761211510648083699692056857979868128566729857282938350504504013801371138876743028895', 1); + T('-144846563553578036105235976816', '0.0000011270723657297532847257698465013496541743158648293535010828229786356244296523407610311043996299040', -1); + T('113032464106654125041288367328368585073827742426563069634695010033138913322259705750701638755775233614410737200187834799536563007432367297372', '-144536245354049112745081024.13189635154492291842667978940', 1); + T('7986309849142964591151981507150767', '3715212599762263522511060701411.354291876313760173927039871847384807384499566193464909380', 1); + T('-0.262033701867790308', '1000', -1); + T('0', '-1298585670825508993270154522126013719917570633453070690396116462598092540996979333.640039196743651565307879856426743091916875212069013890994736009036', 1); + T('-58083440833403163271255364703914434694411113794265074103509.6210028470686978950076079624502733808613037706942237117077742320080970570', '26461831023083173643510121917518549069675457904421183614.08670353705231338613403357536480', -1); + T('-87806.0709005423990183741480799', '187889864.61083754173871187582049463612826040389116069100443073768518896580280063099139409857625583395994', -1); + T('4275109636212975292229007218589106.56555396510879605313848016743912486618038576223178889446864', '3214123466827664829603412.20512221377304305308306990229', 1); + T('-288739473055433343953882.44471863361121224088386588796752', '459693332791964431347.9722370509420311935824189749201056454335904860013482391961613262946036613056710507279548844104287', -1); + T('-0.01654798720757644256839268748011987903667764384686077', '100.2947610454173899008060779309430287884089908', -1); + T('-0.000000077812076712634332162149408492721454465', '0.15399229905779332095662380969505220763061741414245660138302708596471155210747491437383447979118915119014137110102148592', -1); + T('-0.00061444759912181780360634369163380074336309374788470888402669388105603516553991054356526066819440108624500372932833891457915', '-2586282129839.81183', 1); + T('1498895191248177551510700.45606050', '74541212431266542382401488034545718935193952273089972827104963785323484723329', -1); + T('-0.000000000150375415489340749507967', '-74471913380513166596942427426446874506626967565471102018090995766517502.392226389302441356759681527055387117306583255386245975', 1); + T('4379864196478185231971341731472.903266369426998276391', '42212498773976611477583491576270132689125437393337911684067430376578.9984194168847407989', -1); + T('0.000000000188630716195256390543790417086046414407832502506161382231731603289140796649753995735957193705662041873992884429720334656191370246778667100', '4277485611862341', -1); + T('-46750737.49359475454665387075362911038', '-0.00000000000002083952762905039971040265943804257794973540394987926928714383260058014', -1); + T('0.002544681009249525059932074042166748733358476604959321449600882225721113427484661673735862906019211485741647391857669673771533945502723', '-5', 1); + T('-39295905377158687425.03568106089356864942579967692030891846534', '3835978607575268175581954653485493945307702695323573026257952124899312857138636697340444576247772132369597023211', -1); + T('151889800427285114033292898375825876633959450.898086899995', '9713506827047238971234405766285157635347795138873922.72495033960', -1); + T('355429208933168784293936130635740185914092143011019726030386568363136704968340935328170476421910883336592097125452.6140400243618816', '760.68473869704185430726326613766', 1); + T('4349545620740369674416209302329779414513372709527226', '-512153241030873003118738632455693535388671982041905647243253860149370383998111505079497094180417460533664786733236996564989680995504.330957321847087', 1); + T('-0.0012688202113', '0.0048010468030358831203945427786584092648853082093217561611591674776303185468226054026588077464821415670427004307009969250474179998', -1); + T('0.00000000000000000002201374424729105772', '-0.000000000000000107033257309977239769384301947', 1); + T('-668028580968216191486131.21', '-154531512790783399365338471682080.44013066134495453500823018524005204200450971051972740809812246188229676956238', 1); + T('192599466.2', '-20366857500742765296701334.6', 1); + T('58248290.75313561203877075178536778204022054792568075594303791595851558245836135032032800460252186270586976386928888004344135939', '-99168518734510294278378406838157005789369254297707094', 1); + T('59335044381412481489178159118129258391790720120452482882085288454894585878242302678696', '-85648601004388619627800968402621796697943181866275450369784227.575017140', 1); + T('827495050694857970699868331857360105273936056958', '-1304049.1408', 1); + T('29433574477411346954729176312712201982215509.28557096414206818026607603358233255484946894686133047229727976564507069176749268741739111176858008', '-4633956465133.314261800679223973287025496806457718', 1); + T('12686266978287967082649588107077967578421597532.105327951152521392921904301941867789915864450059477632284', '0.00000000000000000001680216625099082611964698924207784733377923277771980687646000893625476714140746', 1); + T('-3567385737540210557638345348915.22162', '-0.41824899246496739428149857672095872056590112993464366988860723481961972054071505307907398495301014281825421217207829254327015496033753800645844684', -1); + T('-20371368.63017582940071081998', '-6610141547540851.2618872155', 1); + T('-2180877.248385369504597407913625892', '-0.0000613947546197329952823061843887350018748897219554852015448742989981', -1); + T('-25661548932398513068206775462417323701105944198759768081271555328689916551910650501573584882621966781961436302774002', '-0.00000003995848665017188509548766348670502483977228426250447700812058736871198968592250144174490260078313382961664', -1); + T('700915978647576932038.9889078885976161070216182950', '0.00000000000021269845796478757183434520508745974681450900418628307878284', 1); + T('-1303382398497.931396748821703576829828779945840056689872555876833881376022696155060976', '-0.00000000606644551523073444005306613754631773003870840662806994136979597086670031977138946305205049690099933090', -1); + T('405906568852917813232248628119090577947475734689.8857756127121', '-0.0000000000000000017866056928126257148339056150658060966796161201920608159514292519569333482177040033662644', 1); + T('-0.00038993118656334050327105429584540674169988490158156132652011044524474264534283653197157270482671918112238649334367', '76860558547603845673402706122114999956168146955310350.1139970001390673843778536118055735735229745139379062', -1); + T('-1291.525514189182260086081242332267177585013147', '7647914106851593261.11793036077055947', -1); + T('-12612.41363549722', '400197529.089873841323983042909768373129595576', -1); + T('-865231120.42305', '-6101.373', -1); + T('2135123.616487587', '29874778328.687203196134017891857809472541023600394892', -1); + T('-240496804491219672098', '-0.0000000000000025537337241596083729560310417637018287262621849603524145688120537226170023073025335809179309534705621002788486050424760426340206294822698773287401900', -1); + T('0.0000000000000017704907457081494438152952475686979995935351712219723883521', '219880763814382422594281439908041083191286156495561036270640605626481755929973044677878194029641135689892298021934326005001841305991645975944158141', -1); + T('5562146843300977194583992103.3541447154572529507300968518031922002848845481', '-5385385490941349985.1728987920292488505551505952939981174051495333139609581998031404277776446303204611433649401136931468794308049', 1); + T('1752290198851473333381.229247979245303911113358', '0.0534488804706934281687362', 1); + T('-92147522191432001037455421266530384324844131821397435747892093212737588941410897009039880039.78536641975123525885676036525963399053493', '-94653495796270236528544459336546136861980560329213238551234844', -1); + T('815487408558261730721844283383258480879914323551992615511114634084667366.601583324800070891427050782659806100748059136244157137697115166387443377852094', '-0.00022352674800133403772480060128350715370257398919546352741164890695654568500835062253326191042712002', 1); + T('5749689998455617772483267', '1840103850357796786136102.71620', 1); + T('672157900280788714930056355200674066483401.81631034866806625951256911099862832274306021451656220978012049245', '-114154619396981089.1320525887956211286048722734182840690494935795064338674221730292522680013566926250582468937966455149652051562981', 1); + T('-5494699992405395277727109066553255922407802868013721980441109672.2745818896946274305742059294626478254', '-0.00000000000014929679588889355091556', -1); + T('-385449726074149547840530583797934937181715165939491867569145644860713885605.5264721791956556383239054663012165553', '116230758861245831282.35469658891878592281877915896', -1); + T('-0.0000000010121528251165650737286665285385390272407652360958821083299180952068082201020218158477438177846198635084848930173', '0.014883196009565080385727336397121811890988734916589439190153212627665118520225526554901248590753739002351947839892439723714675499975034', -1); + T('576494346991115932783888314153281740149238819119894206393647915824014580263476342693398091833799159.523480555625532', '-61995543200977083040575763967439592100731063156984228486.38535435929903297792354585158311732314673482333', 1); + T('428873250.560664', '129875284926470970222879379103280436892522797190190796664400470658620567525600201123074551979893854516815261154373333287236970841329590591717797034121', -1); + T('0.0000000000000026870297704737006603169618821643992478682185038681614', '7820302396851385.87642732170367565885193676356664350349738707893636875852', -1); + T('-44.520760710306309879865713891315672271920022787764083922278701523625034485320733717004859', '0.01439428796926164016128066457640262141108921179147399710995842215316044506980299877008384374011689600039480155501049825404811115221757434056043236', -1); + T('-0.00001201118968847844', '-70923798469593760582530476230041738134921398772057910273281889901965679.42358', 1); + T('5843135287113736528157843820316744502939564526886546.0047195639475992647092375381054267129062468983623992352021878814209422214992623', '0.00000060757624666484634102563211416190889408777041958621929849193644313556211406046557886739314619795644390894145644323254283691165', 1); + T('33939864110426158794412428792.47956843115029434531711836467014982826884747667863328480197253623707011712168926394003290273416608578508', '1064677018243359674559461311315576643719466298112018077397283377331298.0670918844184768217715685', -1); + T('-18912', '-0.000000000000000096633006285663483174785933757971320277192376117523241919936331742434935280501727980661135723065936406743562787980', -1); + T('-2804344532565505375601200736426512335574579247149602614364873466432310221288307433080611694637316033618692401292292895996797408039558038455193698965', '-893720293743137.926655354747113007920084052973512410160846993', -1); + T('6764.231463798271135956814698363174738947427445137382091391208755942353390328768698827660861776845954371737556198135', '-0.000017597904259456024333678008', 1); + T('1.76481649511603874803028298380964499606482173', '118286517946791234440962575129866748867383839052261404590790296018753.3551', -1); + T('-0.151932239357399305076147843155550323032938508228686222300958284775879980694971306303640', '829380294.1737767149859532540', -1); + T('0.0000000000001950221826994411075608100769821184304540479623634687640815964857394877326312992673017060046339509291259090179143500537', '-0.544207807833617254080709456086651220078670208155499221226255166753832289251475987493675', 1); + T('725592788412654390.288037792170665708343668934945817652577358075211667306339285606349503938607834479670176', '0.00000000015727681596554688195', 1); + T('-0.0000000000000000025828037795917808174174022628073029870391944907806479693726568881606935015683570702939052853748656921760835', '21479058581519114842906568693885000707.948701', -1); + T('-52318803831972225224657668090895711041816508172.8', '-925177002627943141448550433420188042136738.349349239422830476016023577725025812189', -1); + T('-11595020947248091113626696070928546894526698503484940942.1', '-41743727850266539324572111803709486.560814158883502040355649548872806865758563538962184415', -1); + T('-7945674732961469879932607763620399739445214326825952225210024765118220584355530.0066649877944415388056', '119923.63269933110039577637236168360031988884136', -1); + T('-667465135.521', '3600732041889309108089077145627379409284885679028550049780473370754192258840745952520332031.3349195', -1); + T('-0.00155960825045823734495157128817221951179945771390542271382698231', '-0.00000000000000000001547806123481913844128531558529', -1); + T('0.000003897178488116939077117755504046954668782', '16500182036173066151975330357363436305432978597893641854622839540840890764939718449396748745670289759248', -1); + T('0.1066389596341454370563866669022345823619309097241060909463123947382090196267402259296965465474236522387304285231', '0.10554272066931320067690515900139997226174735430579374207101626812245423053687680829616012414687316642', 1); + T('6311170580654312262766895923050966572616839302483216469449041222764.049350942968378224002193794621061821564299153542544', '-0.00000000000000077721943836572688797512479214783933404468328060', 1); + T('-6473241763588535091671209.6136', '7109946613265111655504066906893421227308129623587629974790367852537008848978739884385313982886613060794958166034914293662450242266370.8', -1); + T('-0.00000000000000000008039492192574383888482371', '6604383032.684474135999128100', -1); + T('0.00000000481203569548875502622555282569420051010869127282373043112622263', '0.000079591821964258103100046810525409740211300100386397203145583898461821616', -1); + T('85823943902986661.3551017490436085790271996332709765818729748512879602777843718155761693739465208300732899', '-353619674248164726117917.76326235745255122675778', 1); + T('5705133585416934331.96', '-692026459205441284419325590512301015920380275971289655588744582196610452918836386452075288', 1); + T('765287548279977385673120140382320109443772413316008156351512085669539136561234228', '3378412883764.772985170', 1); + T('0.0000004444949779299910287084862350709993', '-34895239912483248998398456782819190020892134145899514996827417890581872655651586615097978930.28086971201242063913206088020792', 1); + T('-1808406236.0007411517153424954283974901033587835316874236876462017822855632147931437015468125518156654752077876232166', '2013566681929922981330.04601046976892202943272046385', -1); + T('-4048492393774402282450581898756603285777654317041291261832380799275797348666467089872455453070620263470013031356830428683981574', '40099412654259527050657495952587386178575394648007643060458676.1111791491498057728067622099748', -1); + T('18628915136749176154223386824673062457919.8848077693485186034', '1513881720435328747255261588664662813128641748401.955878978503857272440117644', -1); + T('-1102715066055607391570121246263589329875629472981.9918971388267193266893066174800566737394182297234831718246217036454304180215728533097249', '-507466746731417668276962401930968304387149385.36733202', -1); + T('-0.00000000000000118867735895355706324644741565687516380934012845606449840941596028463353814792777039303066705142312804268503326549993460075345403972111834209', '0.000000003436556517', -1); + T('-0.0000000000000003371984563895388548767205601272951518208249335621347968700193296778014696768556195', '-10274945223018984756966657952438916138616218197724933584616138553807445939342840685241904451258371', 1); + T('-117433402658185448482194314232639429126502459349575210459884357.7406396969270334883393802839875697129920877876569071877681298097932152998', '139976394189242376947006070215378416965', -1); + T('-0.00000000000410999246686291289919439285398573971906473918801526723286816999153997225640711464165501375618395618072', '16857754744323811301.760491652997818191680489759', -1); + T('33433452292.54424975454908357494747405074701508', '8269909530911601430300956762711.49', -1); + T('-283803212239.5587338007666372129716405064', '62180632632.44', -1); + T('10816304647050009681046881227640567650727092915763836975846424094420491356952792053535937227598578243148.70549318016888506158632243072', '23601245638793.9051238958897803858851422315671924508733072717037856936727939646826421249728398919007381394104232', 1); + T('42294808022511884510489816637065479125.12', '-363076851403252016896121227284974203057689376244997308943536424206680183580753707981871249845116125872661250598932697938367496845913845', 1); + T('-68057065545315263763372804.6037879238251', '1849186991871166819', -1); + T('-0.000035422370812676577438081958090968761523064683396142544733667226170582703', '-4886104.52695396941765119019781209957215550071392339312212', 1); + T('-0.00000000101152922410408185', '-154628891267599656838.7544', 1); + T('65053724814685425792643437308.22975034850682336796195307601162523736', '-53422542502015829097671319941538573640235158728608612260590736.22285239457330945763643215406922589852086651975032077423269936', 1); + T('-679014.049691213095078512348789233953999083752383', '225334567529.305999982841966497994072752683700827916742714614297486', -1); + T('161888828328851641417083878458443592052215516899370606619738.36510326324072641758387263980815868443516315712557912616842124441627523', '0.000000000000794258834390076366776294050001062371476872317912962468519864454127907974470307426421865511092144225939633222374776858411435618947559', 1); + T('6162233670505318', '2.46634168', 1); + T('-17546683536111282316342996627368376599858018325962648.6584700382630574850314398607683745', '-80802643256926373101335717601', -1); + T('-2352353228663372948015045466172105999.8803110610547393595549', '-0.00413964594253429181906299898033064114461684408903594038085686221908651158875526470347', -1); + T('-0.00000000000000000004356348734944267973648639107', '-229367364784425681697726599493823156989608369042481979275254.0884841218159995757788959686561159388268846646565860174004081151385', 1); + T('0.03415457575710915160220105512218140806602929852687968668616994967273160715684956613423796070943115985374314105903537233', '-3196749067837621585326283843306992801307.802760498691831198070', 1); + T('0.00000000000000247413037298398028929363025202778579193861821082044594455801367855787265239661476744458519065142081672257010', '44289.8', -1); + T('58.3127511093589129668', '-2611133014902015509360439.7129643377015936731377925522222539911964440440574400407593', 1); + T('2406843722253168117192934590291028781069300073383984975.8180911819738336792993187445407442782766628930100725', '89425216383828', 1); + T('-1099207.26554285655755079330147354518979139456850179395304634417125044240102198026939759672286', '-57693881703804010298386947171610472014880394287849824344777180903601511889954253540830976322899406814539377606313895495643102769.83016248376', 1); + T('-103994242142241963043476374672302180239375906114700919981156677510520442173528213340300295792463789876630187002413998412270858178265773895879435145193', '-0.000000000000031367951905170647781165822641814409694938292', -1); + T('13601721526443719522926093787.934046503185812863872716', '336408896287174621976247324108743253861832261859751110841.29596909381766540334693808958727478573401402102365', -1); + T('-0.00000000000000001469446157409381008342426261966534408211838683793750555946023', '1522608331828812962719302028703469509396748384370489182706462020400287150465785830318500446746747.6460778058447560089208164112108681301784', -1); + T('-0.000000000000000000292119887858775237140722034722696650983806428229978415180240', '509639.198703', -1); + T('-581568431970891620674020761220785883553826553712684204299194.373663495926444491785700217246', '-0.00000799487760788026644276369061232209772149143590654545891959237728077188021480038402000022139388923280596639559887', -1); + T('10576907282617366683945326959370318422762465935099101961150731963334451359367980479.1711956', '93657934108538335658469446550891.33274514', 1); + T('-50779400127432260917442015730665305.693827342498804536', '-278.45484183476521400133060414619839700534856688357221666606163711034752645600781353452713349748727451466275731553', -1); + T('3582739', '1784.034', 1); + T('0.000007142491492373590519731802287885445743376047761637981513279821695831401679304444193667604938367015426898382592976966546278775', '-857115157826.2112333616148328187721853506794021', 1); + T('-77650157.77865724663131558543954559605879484270600244615464493178445559943273821677209941465159610044188242984064', '2', -1); + T('13061793010825779761489046240048151130041423831782034351150825980261340689146749636490271350788971', '736646718813268852209165758615425625665840070879918346', 1); + T('-0.00000000000000000027818072125795253670533401340761483641172537202336362918391508577676998124879659850611085', '-757589742121920450871623430335991255479320533949980775000891583727233254637570819240641737.1122814951925898', 1); + T('-44805268190729632531865.6419780191402046529767672', '521251239499704005781275449094278641042506.3156115052302463420952777340591939364886084763948408205859384130509381650790892060575', -1); + T('-9.16848439809259319052148', '31804088022084780543225640840236725226743771098722292010442082451771.032053418236761910351105445438902994094212892937018928', -1); + T('-0.000000000000000000015946937934151918888138620979468427775546067982434246390130160312768937674401605951766202953', '-4384.37908930790756', 1); + T('-92.0', '-259.1103140486780473992', 1); + T('1829937784973143537783010100739888095502819577009050487909478.998339486027387102532064478083066161408101089244606741999372262029117753', '-0.003466165765516931483921623859725455065870694872586558033998887390346792964596358533056448297144859327570003882840488520157483345744424112', 1); + T('-0.00805730350870332416474130775431753596509549127714076482362747443329333536910223003521268991503827851593840825424710029978467616431589134837782', '42859237293.971714652490950575144555590003616042479874429975572476902289269556706761', -1); + T('14687687102617235468391945141416714260880851700178866765733538453531920743076697994482038.87810993130926761650695883946148734827', '0.0000000000043032139506511692634953935', 1); + T('74855288934335940624584700729.917818635680622422883644107796356783278951273', '-0.0000000024412467395238501084489165324313850210206104', 1); + T('31534804.882', '-107747802197986688050315269264964249408206715357274490951874', 1); + T('0.00000000000005436941845644294932431141904956702081385801461562015917', '0.00000000000004007409174643597984346027883186426344264183588051770037027544931312637485537674353258405773358832901037004', 1); + T('-0.00011401428096591141304086733093089782287404551974129345249206250034253148833654960406327854197854792917730041450409869184707008198528552235035954269', '-0.00000000000459090078596662894002343875075543959122946654955353856571293852319559157327916251', -1); + T('0.00273909582639870092043322082487911991953970891824257601379839286759468486558682979434046468763206507018460313471628142789574554733', '-12174288565178653649738825844.058129335942051261437792772494997783050076234522869196457', 1); + T('-9262163133525541289611786411236936499015108574335221070224302067951107010106083554045354391502928018000897936875310.50063711574683', '-3415896484698655068520389216070918253', -1); + T('0.000000000000775402434179186062776610592070356150419892', '-10567486649730728013576719047602414874836411929687810999158959874142512326985312695510176030747379728213278021', 1); + T('-0.000000000000000029154845261288138429108167871851762042605685339365274521502654014100103052239316462201294992571376102', '0.00000000007215519703698252394014310761077946308103265208763107160443064766528615271128170860242303974651987945813780869799910158572025', -1); + T('-0.000000000000000000038919174519392355544992733520', '-88873239905390283257526586315278488079494343890098540.14371840801969124535809059283682022956915824484887795', 1); + T('-2956006733486.050322519495910617171990967860491609473626923225257235851006044563856964764255650517769695833', '-63580.7607041571683406051338311837270934135009599731889857981100051635443210692920253491149463594177586818089', -1); + T('32693297930914576641605085.456147160027786641825068409422582642333463646578713263684862420', '2046994.563394388211', 1); + T('11585457218048617716818642470310899619712965.757545839437764987354930195688915926362652526394444871037', '-24619892752559156706974656.033638967580349721627125116986752963277069337398575115657062385861834385940136798596681542333424665238168009963257109112', 1); + T('-376741557864930127185019858384127899674528918618.823922265376740844074653162948916457933603707043182097866', '-27589133853961983218044564074996941310096508288788452470863.709706352', 1); + T('-0.00000000000000159347', '0.000000000537720125529707861865661334298939870145', -1); + T('43035909785686641666336021702781351129892247747464104619212766477817619033880081924506', '2814152544538521977901831034701910821444771265677717331726406832990136388071257847595368675837635869488930703285050684920041246854650190323367418', -1); + T('-11985135.8193427509854988143005112183287545730', '0.0000000000001803274435994955450298871518541291278942016627972113349919772137870618374138716105', -1); + T('-0.00000000000000000231213881820372179648211424074545784084490603786969584496054481785651900550127851716747246826568016229452975976262745772409454', '0.00000000002542356646873251984661531567832365397400169898925001739523492396893368004710859653', -1); + T('160250738049532782162433853489598402471976041469770348690123392.0031', '-294498471596460898486795650003243213547297862171486734029240994267080719706597441329.5505160068626877140129559069410890749408503304245', 1); + T('-311499170316724006235994246932956222855452383.9355679763714275758718700623828461', '74109.22858001236432975439589074625834100371918658550933564518627770467991656925437210524238209898744184416226015049386723272030', -1); + T('72262463926314177087592711082448174767989257408928002756189090888827037903900202019977026018923895141350914091904436927', '-0.000000000225167954917337837957771388', 1); + T('783592959000310229426414265767534.3977599563867860198103276131050069803106200343268513507092805929256', '2213775192313849109306210671344446709142941975379549548840760877161562324284900199839612761050250.310478020973421299217241488', -1); + T('-6547449797725.304570', '119824690766003830384751081.0046122063442368459687414526624230150574044341335791064835698117488656542711155304626640574856112236102910475124479214', -1); + T('0.000000000000010204', '-149665073272.5623297479580213', 1); + T('-0.000000000000000001372054475', '3261320307772433532065115421441455427066494965386813158814003180399968053382332347948302205942486750609906989182229631672314317782917588042', -1); + T('16267269269026527605638552384753020375945217358682470573450643637648938800818442471696326897638.960256727665082740611435176610395516518637', '9397452437953662194.6', 1); + T('0.0016003186542702358062119951504575476400770454525551608330060208480446269746952107326275127054026286275145379', '-10177150935819421368111549722330892202837757641685140152152703141782.0731751745579486199764500876128838', 1); + T('-259.796667804953618306869', '5.152172124853561796', -1); + T('11221563347439640500149258879687347315134035785708472989483023267.2300609027733075', '-26207420100355721202593.170521021779774357040235570161585294593', 1); + T('-4086883920877948704292008316195463523825565880525701686248.2367', '19607520206368681093521348463825573467158671987138840203949280288889694329944104400821735075790097995474419621575623', -1); + T('59250037050672269038935756873853022223815088087754056875033986973202160304564921006.3856374891863577365895067682971644381098324', '-1150048048247576308790181384139171657779505.0762328070146919', 1); + T('-101.9883', '2427396663212685327845905010715508779301812460773274950351804533445926036597008', -1); + T('-253869543570783673956384102166918285311284645640813929674091406323420328870905030279906889614764088874316164218.650577522882100114108252753', '1065.486621351936129492744089151898837668657292086320399673336494155243434093656438111857434011880854788399689183448380554', -1); + T('417208985560.7855205554', '100923345912048408289435217840834510246434298689324763023522249789499602478530171790094650567004608931483845354824898446196430525102018126501735', -1); + T('173069663315189207453082599256935631042012490932166775088288608134998421563.501634405769076052916216890728266291846276235969642472697992', '0.0047456362403909994510629032945180910020103403215993419', 1); + T('2053482495939016050925647064247292586.8564263585178084561055184838104344', '-169017380666548364.127029030132409556736680020944511137856136807303318576835588339730940135466516396606957131997990393897794390319423272450917805926', 1); + T('0.000000000000000000010910521060181975906059602362732892055045562230211476996524041744413599254422619291991952288398365621', '0.00000030305366252407729760726252843133109114557519273943871397042650558626022634485938707736986954106451995454302535124160648045134106263888189201243', -1); + T('30640237540440782514115131028848069755044326052924.009093719671904737413172221325840495532222917009786084408779725171808758879846845062707492564014763', '-3587259353440149470021751420228565.933221993721894266387366123546111212496288309568577', 1); + T('-3609844484927222015828.334942620349534873041743', '-0.0000000000156030127736053462961395524', -1); + T('-0.000000000000001658158309268354898123357112970860020', '0.00000870156656843154695875521710025973209056456466507288725866658654130737892621348779455441496534083249326857675543779156635545016633454520', -1); + T('7793690039.8772263749770060309947594436823579276762079330052673201071', '0.00000612582504229588881039048444365709157972604156531064474583010238471462911044732', 1); + T('259361929252303788251189384988868.553981647414752277660626862473682638041582155222042965461036805740', '2581973829978432652835452792244347835027216577276451292110130046577998322535113805747137', -1); + T('129390414845041424.1539', '-481050029407533910303222535233605013660232501391088458212583477453819542398563643833919611592686861686523', 1); + T('-6536842573987360158150696168225611012842820808740490760317604719877598626292023302792453130948717075', '1808166007895107209370145108642559246571611053591602829484725216424576199434411727976513436930373936671801214293.1577146813', -1); + T('-0.00000000000000001874341518823681577662776773255511371168611049285', '114237294927073342220706673330602767506662522210660715163883162244.823645258897119432630', -1); + T('209836878319152205282576333546502150812644732572885749428543679539', '100955482773558958290888650903921036366095.20510847158797748', 1); + T('0.034860367', '-2.9421730845742362', 1); + T('2007681510503796232234969506243559879895607457288542877357020897246614400065889179294420464808957608804208.88977640850467103386663519609600376930', '131278041586300435030378871514179235174947880618231459980968177904236853202540068220693506990312468.7907728564640266180384190626761258847873972319', 1); + T('-0.00003161209326226016404711305', '-1063414207851209583249490599634018820893.87666259230007659491410887957198569', 1); + T('0.000000000009292700053546152515763409646834318801540357443458254443063793407983703255255220501557870090370022700786856368829747621804624', '15968290595293544207165427138659653635885728378308439140692.8375150', -1); + T('23176176.07056103153928107006846727836935989686711695293078954554503341971026457151918796526632004382422212027532033604', '1393760072065023828023446698382962763', -1); + T('231996316054324226009622737751152542708306575853606699680576.2979473704180673568018174937666939555099251408550275412841449934741053120999250311960', '-0.00000000002440470984493188283681881091476406696345434062764274153736555369694432713235258794821778157833124213579089653780125672309835719004532812124933848285', 1); + T('-20648.33905752688067', '364742683268206384344442772254773451200307358841591165850201389171780849730182355714994995466053456220045', -1); + T('-13296891.2', '0.0000006969337082421569919274143628120', -1); + T('37172409606574175943929198111868146041321294172740261.9143767823011700625959830227158253292122411741', '-9229020573653817070250688951097965429045889891091810375887510258483.86432451', 1); + T('1453535362884489285626691516310680832482298497424339784442566191993586458847756138332543022653963954995058698.15580', '-33143622616240901719883077121499909963666515277776.03911638745682103192726777541334139680165450417038099168410422389791894570097008374', 1); + T('-553544731407.954683875078093295639829399072864963186386576846602046', '192999508939696196504970050808433364133176232370021073489176763241408536439.77594027675417445364740098352288673457747531121812928831142123844168252470', -1); + T('53331368736012231282471303455408074592413207200872818.19673290825616228139358150102045346527811025445464013057081041192769618884910913', '29864250451413880308678527443574263718752000952673380.023619969863', 1); + T('0.0000000000000553335708975466510638842756141122700181892189479338073653078191086392759442569036578848626338971871999378', '-2433.862079043560961248651748450179913978912939709492727668652481303092796187', 1); + T('-131087743.6305459391', '1366119444020000948783203513489615222.675978339215788988998559226759468849819166123527857680522', -1); + T('0.0000010414667170852575270156859553928180613463762435534732908049457814385044451504107590913084220195837233515638824516134017851098411421001695264', '-66115584400599354704187997780889126098693373365.7243', 1); + T('-82580207676754903853225612109619332832646591973947655468920313639308916718.1330927060723276446644406371829999060475633907079169', '5123330295520469513903522349127462754600115573.1373461391379131781873', -1); + T('-22881636298670205035641935440359796471601928206681810441710383670980611628185637243569.2507827277681252065670282330799224', '736623256360.52046053521393940948105264615756015326648432', -1); + T('10.6557893608099767579084904', '-1549097478049581073829995395668214851867184047164638481948954196550730492470162977527257584557330.12691586584734276203352320', 1); + T('-990750595009217072591203410182612405197518047760914771032204784294635251950209321008567583494561257290737', '305183437080190842418299140880536765514850999.697345630592391581619258378412681359059795654', -1); + T('-1666770629345794574416820151105.98918396166031507208776276918495816721257656112225182497801163182679207902596802205860048306600841687864861095511', '-0.00000001067708997946', -1); + T('-14840.8160635780542830749790687168810848087921446934163740720565540416857197820946', '34080400103214533424.02376392426614849386411125899538938586694', -1); + T('0.0000000000000016877563085857940725171784798859373742', '0', 1); + T('-33190786246688543666606637359744.217563683075', '1411442489270647265365237504971682227816451192966004619718073064881.0785117653978579470036133709733772486485584681564117735482334823573897932', -1); + T('22250091784709109592.36289103127751407973011885', '-0.0000382591424878799273145128194620542054246216992721442791349175343470175713780048283294641587173331569078106987388529', 1); + T('-366783961078432297345344407263954100597261322478589032766.73282236301460555020', '-96792806400556284879273453156295184.53428387344080543516219317', -1); + T('-4428412434012469201409972157335263140259080336552387999530773415365566408064446887607002402436823395664644162540941981862539131750982436.53', '75696312592552260444421580586326708012624152846535337194315378288808695.3800482862544568581804928901090851775492837416229', -1); + T('-5875606174326455206892.166531322577891655817791602124272', '-35009191320796020285350597114063011014625404863861820815440146042482080541906069341', 1); + T('0.00000053938374247898490593751341139618225706260032227451912740608995112652267024567', '175852452557353643.3590476179170', -1); + T('0.000085430888367277502429220363288215723771185373', '8256298205292814781230409657307281433998721428415657164206.36639', -1); + T('-52206181136131234784399813236.07148184351942727', '187209867307553393739457212014673840096167129608946393051576008336453819741553745147502544430776215770796121630485677673.9724596115587907243111403', -1); + T('-116404659080562114.92071212768286143841500510345567940661701355074747251796041', '-0.0000000000049745937887893457305924521492823436496769064269458995595186839321054906563207671851820946083323716587936229045653732369629477947990064968', -1); + T('28632132796102343.642479895418482981865379537641435463355793', '3947054586925956430852945631879967537015686007064533778477126086105171929289441372934106340502853676944.8775856144613230825303', -1); + T('-857090508200151475054556597610222124661175080017618336676970123774256255824922667023873121804008646192330290129442806', '-972101984776814063384288921892937781463259806047634752997185.4385721825546355179576429', -1); + T('524360242934236610220749675664188585635590483292908774530668032546940050829944754444786102305373006086287153988223497918735', '-894112.62957', 1); + T('-4210359748516193705490258816796808454697789142688778195029295009029687568303590578372169555384509849436838285', '31544435847506925886.4380471855572374745797509775141400719180063314074764017605405542023671969250480247374160173575823024192641879318726', -1); + T('0.00000000000000000039648316584476924066746927696080890012966606658194662052', '93186692411262534487106225917322323273998860.702889752659967', -1); + T('-355809833.80952792320528641233', '80686526919845500998309999431837058.761633435885737503460027358262242', -1); + T('135973290.168739239202104579143727871073186846998465022695079917761494935246543420262539585973598640481769703017097113004230499019752720843814876125395', '-5247621701130676973811017481409509202617774437873284817094169357757993693424454590200078960274872983976142587199662655362147649', 1); + T('1722959380210301975884294773508', '9285857700957558240758114686802782724351979408646270147.79', -1); + T('-2.108499091120865886897591323930243793006036956873698734554284782307034333654312298978700143514443242015114382393092579020064541038144909798932', '0.6600963818550654763059005580259719939747091', -1); + T('239620618436021.91', '-4353302761316014755083307438727860990450226754399292536680958540457321480743198864', 1); + T('-247311515425879756100312067126621077462386243210235600848467077095397086040795417.16091213583', '-260.0692816252127916277315158672499008107826181646194964038208702225413806272325838419818326501439852500060857812695956426279373392731287', -1); + T('0.00000000000000092678002317773819293673427756278593549636636017011488156614', '17608242495263943038945700454791334002001731748793496370046578764838341632679102710921093941418183970826750981020832871212156842541461372', -1); + T('-33395325628320096104732838558355526.34337764550949233422721', '205332050719085679752333364390801841584322469575410029598277675558008298194.4403120686536479725405590603499717318334866527066993402595695782', -1); + T('1704446749770125249947219847049678079826076962438747770032889527765979216824', '-81884993441.044414114132150', 1); + T('4721008.67935983797016512145416126232413', '-0.03498350297025037393206835110018120336910941973578256042733733228736114655699947857927341334', 1); + T('181391051825403456208156.71244213486959497601037', '-776380379297651015893862651994364337679290452023660979418305268365.4639038680782187382', 1); + T('0.0000000847', '22156497747243948647802199255699537070266422639.5633433463683691278073207255994132556519453723419', -1); + T('-6.21217206985247294651387216860807591050001764817572516334758', '886061238651128.7', -1); + T('-1161719026145675243574235610276988347246026816878990032451997176103072809623554165635479395356340140107166377591092789264418175', '-0.000000018735947478220650520638945854023532902579986523026188004265750964790', -1); + T('-0.00000000867192138', '2502507910601152855229403992937540857964041297324987261262589402205840', -1); + T('932600538480920158326929132563.6421982462761565925070778172257671442090601464460086', '-20519384614533168439297510042006580413691480074684.20874560931252451163046908065695481258407657', 1); + T('-423970839089252202458.4142517215652507527660399945359115489273265486900307489264302540041681142598257029618492805741704283129188858300', '-0.0000000000000000020864723406154143161822628597022504762643109363924577177440002989153679290543872240996459231393135479147340630', -1); + T('49491330651043321769388801332639.740296423762', '0.5171693040591007989301158138415776204505193432948807746575263122468776152077', 1); + T('0.001245962897188796973717486355827294945060225829760809691400850708544510', '2093451351363855302147446056836441599578148902408761562976800394573.65341921067439897924178668210176520923190465610921336906740229984', -1); + T('2593248239529730040425963884470681420571770726127.898763080708', '7187960966847715724350587626703224781728201547468602127890467264952177647476374.8350740675946710455460463413291', -1); + T('10876110728592679732.62028952680014147540924866973673791348307668059733003935578406', '14807.3566503507754041309056234009138430821972145065785727273499408126157754376928813995906375584967247205063511345989398044710766229497805904317', 1); + T('930802811312871985657541282630.11555878286243010124609615', '-55898805297735194055894340167715838876998587195058346456322370995879163257917874310396332.8301127894058724494250937495', 1); + T('4373687004743801710.4295871291', '-2399.751203123176895978605217344914876835764318218494324419569769709590467191', 1); + T('19885418415499907740390897118745282009388.522241490773186707378554377', '-0.000000000000000000016311844734', 1); + + T('0.091650', '0', 1); + T('-31.95', '-0.0000004826766', -1); + T('8.66569234', '-5157749157', 1); + T('131.57910', '-0.00000000143732', 1); + T('-0.00000000000000069913178493', '-36.2938', 1); + T('-71.52874', '-12.621', -1); + T('0', '85409.76884', -1); + T('-0.0000000000362430662837', '-801785981.0', 1); + T('23.2', '-102599', 1); + T('35.5', '-0.000000000000000012', 1); + T('0.00000306', '-2.632', 1); + T('0', '-0.0000000000000000007729361018', 1); + T('314012.71462', '-53575.055', 1); + T('-101465', '-6', -1); + T('62740.249', '0.00000000000000000007443159314', 1); + T('6.28898', '30', -1); + T('-14.1', '20523313.15', -1); + T('-121.9', '1.9', -1); + T('9.68', '-1872.932', 1); + T('-2553.3', '413.6', -1); + T('13675.5', '-5', 1); + T('-0.000000000000000001038840261', '2.08', -1); + T('-3252618.447', '3.410', -1); + T('-7530437220', '-66.6578547', -1); + T('51.32', '-0.0002497237', 1); + T('-0.00147259804905', '-15.0', 1); + T('4517.34411456', '19.1775057', 1); + T('-14.006', '0.0000000000000748001', -1); + T('-1029.3', '2', -1); + T('1473.3', '-1.01336820638', 1); + T('5258.8', '2311.6', 1); + T('4.9', '4', 1); + T('8614797251', '5.47', 1); + T('73.173', '-1.4031382', 1); + T('502.36012', '-39996872', 1); + T('-493652528', '2187946548', -1); + T('-600552370.92', '0.011235396004', -1); + T('35.61040429', '-54899.96', 1); + T('1.447', '3.951143', -1); + T('-2814441.354', '-0.030752704', -1); + T('-0.00000000000000001062528419', '14428385.05', -1); + T('-0.00000902457', '-906093.03', 1); + T('-4.49514906109', '15640376291', -1); + T('-14.005', '55.971', -1); + T('-5.58', '5257.64', -1); + T('0.00000000013353112755', '0.1701', -1); + T('-2647318.81', '-115.6', -1); + T('-22.4', '0.00000000000000000002689757418', -1); + T('-1621301570', '-1.074', -1); + T('-7', '-21400', 1); + T('0.00000000000002041639', '1.3', -1); + T('287938.5', '0.00000027218', 1); + T('-0.00000055410455610', '2355408.35784', -1); + T('-18.363786016', '-24.12699692', 1); + T('368728547', '12', 1); + T('0', '-16302264', 1); + T('-6.7', '-127.83676', 1); + T('-0.00000000000038760', '77458475215', -1); + T('-0.0000000004193858594', '-0.000000000000000000874962299872', -1); + T('-64715.0554', '-5106.6', -1); + T('-2', '174636', -1); + T('3.6', '-9.29', 1); + T('0.0000000000000001025', '-1', 1); + T('57.19', '4728633003.0', -1); + T('-0.00000000001896809493', '27551629.4916', -1); + T('-24936.227933', '-17253964', 1); + T('0.0000000016330870', '162322.24', -1); + T('780.4', '-0.00000000000000788606669264', 1); + T('2.008', '-82.793645719', 1); + T('0.000023', '-0.0151128375', 1); + T('1.60', '-4935.4', 1); + T('10320469', '-844.9', 1); + T('4013.16757', '-4.73', 1); + T('-22955362593.9', '-3800487406', -1); + T('-0.000000000000000030708244506', '29', -1); + T('1', '0.00000000006442170', 1); + T('-13923', '0.0000000000000000019', -1); + T('-839013', '-3.11884562268', -1); + T('12.22605', '2.4', 1); + T('-2', '-751739624.9', 1); + T('-0.000000014', '-1.1', 1); + T('-0.0000000000096284906554', '-0.0000000000000000000531', -1); + T('-0.00000000000000477', '-0.000000000000010180391', 1); + T('-2919850130', '1.5', -1); + T('0', '-22.424', 1); + T('-3.8812', '-450574', 1); + T('-81939.3196', '-1.528956', -1); + T('0.0000000000000000000662', '-0.00000005609645255', 1); + T('4.43', '-0.00955682817', 1); + T('-1', '3.68', -1); + T('-2.2337', '-18398007347', 1); + T('17.31058', '-742739604', 1); + T('10', '63510.06483', -1); + T('-1679', '0', -1); + T('1', '0.00000191916669633', 1); + T('677.105', '60922901809', -1); + T('0.000000000000000014238616', '6311.5471', -1); + T('-3', '-193.6', 1); + T('-3.17', '0', -1); + T('1896.17', '0.000000420065102', 1); + T('-21.59982', '1.635168485', -1); + T('-1.1865349', '-1', -1); + T('1.2', '-0.000000000000061', 1); + T('0', '1.52', -1); + T('5.49', '20.789347414', -1); + T('-0.000000000000000023', '0', -1); + T('-4.3', '0.0000000000000001390542834', -1); + T('-50.261594', '-0.000000006027', -1); + T('98987.24', '-2', 1); + T('0.00000000000000005238041903', '-0.000000000021', 1); + T('66.97', '0.0000012729936969', 1); + T('-1471', '83268824096', -1); + T('76195', '-0.000000000000000000022355488306', 1); + T('4.00', '-1.2', 1); + T('2', '0.00000000124844398', 1); + T('-56365405', '-1.4293', -1); + T('-0.000000012648228056', '1016.22', -1); + T('-902947', '-1415195', 1); + T('90004.642', '48.208940', 1); + T('20', '-1.9', 1); + T('0.000000000001587', '-0.000000000000000000062640220', 1); + T('-400040.6', '0.00000009705375', -1); + T('6804221.367', '0', 1); + T('5', '0.00000432', 1); + T('0.00000000086378', '85674151.6', -1); + T('498.115979', '15.68', 1); + T('-7.168163', '-1079.98097073', 1); + T('-920.494', '0.000000015113372', -1); + T('-2.9', '-0.0000000000000013597214164', -1); + T('0.00000278', '0.000000000000000004069', 1); + T('452953568', '5', 1); + T('6.3', '0.00000000000000000108', 1); + T('-6.8363624', '-71489', 1); + T('0.0011232588', '-303.3', 1); + T('-14.0845', '-13.736', -1); + T('-17.02168645', '-224637', 1); + T('-4212280773', '-0.000187770', -1); + T('0.00000003418', '-0.000039', 1); + T('-43.737419409', '8835.871', -1); + T('-97593198', '-0.000000000000000000318554271', -1); + T('0.000000000000000000011383807583', '-6821.9588', 1); + T('0.00000000002148347559', '7307610.12', -1); + T('-192642.694', '0', -1); + T('0.000000000007138411375', '-0.0001386', 1); + T('-85.57', '-0.0000000000000000015380232', -1); + T('553283624.5', '-0.0002938', 1); + T('-0.08812', '4.83', -1); + T('4.9', '-436', 1); + T('-0.00024787', '0.0000000000000000804553', -1); + T('505.177864', '-1058821.702', 1); + T('0', '-9.2', 1); + T('0.000000000139878568', '20.792', -1); + T('194.1635', '26817.14', -1); + T('123', '-0.0000000557024116689', 1); + T('-21597132.5743', '74698648', -1); + T('2.0', '-22574256851.6', 1); + T('-99', '148.3755', -1); + T('-3', '-0.0000000004324672314', -1); + T('25.5594537708', '0.0000001987683', 1); + T('12.204523', '127', -1); + T('-16.1', '-0.00000000003079945018', -1); + T('5', '-231057.18', 1); + T('-0.00000000000566786', '-227438', 1); + T('0.00000000004188', '-4437894.422', 1); + T('3716202', '4.050', 1); + T('878941437', '0.0000067945', 1); + T('0.0000000000006517981381', '487.06', -1); + T('-464400975604', '0.000223', -1); + T('-0.000000000000000463803912', '-0.000000033', 1); + T('-44', '875958', -1); + T('173.04', '259.4491902', -1); + T('-1.66', '35146200.24', -1); + T('0.0000103750', '6.221887', -1); + T('-6034.59820', '0.0068365419', -1); + T('524.34546782', '44.572583393', 1); + T('8711891602', '0.000000000000000000080236', 1); + T('-1', '-0.00000000001045149282985', -1); + T('1009', '2742992.1087', -1); + T('-0.000000000443', '-26.86321244', 1); + T('3089348.2545', '-1', 1); + T('0.00000102676', '-908.53218525', 1); + T('-3.48848', '5330516.1', -1); + T('6.4616', '-1', 1); + T('1', '-9.781657', 1); + T('-3.4', '-521472970', 1); + T('-586.97', '-113.11324', -1); + T('10.2837600', '-2', 1); + T('3.74102080', '-11175.7', 1); + T('0.000000000042971203966', '-2084.4542', 1); + T('-0.000000064891438', '-2043792860.5', 1); + T('-33.47', '-1323.71284738', 1); + T('422.5186', '0.00000000073882404523', 1); + T('-218.3', '-121.56', -1); + T('0', '-1754.876', 1); + T('-248.5', '-1.1', -1); + T('22.04', '135695140693', -1); + T('-0.000000000000181', '-49.2', 1); + T('-896738.71440', '-779277.279830', -1); + T('1635.632', '-1.87', 1); + T('-0.0000000000000000003432937', '-0.0000000000000000128', 1); + T('8185.04579', '28.304207', 1); + T('-57.80410102', '-0.000000000065900351', -1); + T('1', '-0.000000000000014', 1); + T('26.13562', '0.00000000000004472101', 1); + T('-26', '-46846563.0', 1); + T('0.0000008802852', '-38865.86', 1); + T('6590981.4', '25733', 1); + T('3.10', '-0.000095648629463', 1); + T('2', '0.3926', 1); + T('1071.137629', '8717.37', -1); + T('188711', '0.00000000000000000003923', 1); + T('2.64', '1912.289', -1); + T('962.2', '37.5', 1); + T('0', '-14.3056421', 1); + T('6.434877', '41.7051341210', -1); + T('1', '-4', 1); + T('-573.491', '-7850309', 1); + T('-8506.2', '-6', -1); + T('-2436719080.97', '-487.145', -1); + T('1', '-0.000000000000013193', 1); + T('67.3', '331.473345666', -1); + T('-0.00000000000000116355724', '0.000000001349568973', -1); + T('-4380819.68', '-171', -1); + T('-263582.40400', '0.0000000000001840687158', -1); + T('31', '-0.0000000000000000073', 1); + T('-3.234555', '1', -1); + T('-0.0000009745557', '-12583.24883', 1); + T('0.000000004423159', '21297.3', -1); + T('-11954925140', '-244009.66219', -1); + T('4122.60', '-0.000000000080630710245', 1); + T('24458437758', '-29.81012', 1); + T('-3', '5826.7', -1); + T('0', '-40662', 1); + T('-242.79', '-404.29025', 1); + T('-4446.1504587', '3.763848', -1); + T('6', '0', 1); + T('6.3', '0.00000000121', 1); + T('-1.0', '-0.00000000000000000006445409', -1); + T('-9374.2957170', '58340751', -1); + T('20347413.9', '-779599.59', 1); + T('3051.205905', '17883.635', -1); + T('-1345.0889662', '420448113', -1); + T('-48.9', '0', -1); + T('-0.0006551466', '-576096.0', 1); + T('47.80', '1421535456.7', -1); + T('22280251557', '1', 1); + T('73.35790', '1788057733', -1); + T('-80114.1', '0', -1); + T('-0.000000000000707301', '9582641.8231', -1); + T('-40590618', '0.0005028', -1); + T('-26.1551', '-59129881', 1); + T('126.31', '0', 1); + T('-1', '-3.330', 1); + T('-7', '-0.0000200526', -1); + T('-3761.76241528', '-26.8', -1); + T('-0.0000003162744266', '0.0000000000000000394784057113', -1); + T('-130448.713110', '-169586.15212', 1); + T('-40.8968', '0.00000000591143', -1); + T('50781.5422696', '0', 1); + T('-0.00000000000000120', '-0.0000000859583', 1); + T('-26886.528', '-97.8', -1); + T('6.812', '-74976701.51', 1); + T('0', '-958435', 1); + T('-78.09589', '-28195701701', 1); + T('0.000000000000000042071654504', '-26576.9776', 1); + T('6.1', '0.00000000000000000089253676', 1); + T('-2744493.46', '-110.8907926', -1); + T('3.82237319650', '24.69679', -1); + T('642337.78548', '-0.0000000000000000000372333883166', 1); + T('2017548', '-21455.8709783', 1); + T('-115732.814', '-0.00000000029824235', -1); + T('5309.7', '0', 1); + T('16741188415.6', '-0.110485391', 1); + T('-1', '-3', 1); + T('-4', '6.970303371', -1); + T('-186.5987098', '37519.7898', -1); + T('-217.59', '-90791.13282', 1); + T('0', '-264309561.7', 1); + T('3303.44786015', '224832', -1); + T('-1', '8628993', -1); + T('-13840', '31.895590', -1); + T('-422.075562', '0.0000000000003673', -1); + T('-5.4', '-2.988', -1); + T('-12.28195', '-8.1', -1); + T('42.1', '8452.3', -1); + T('40.4', '1', 1); + T('-611.849', '-20937.2313506', 1); + T('-8.530', '-88795904.7', 1); + T('-5235577626', '0.778127928170', -1); + T('370711545091', '0.000000000000000210166457', 1); + T('-7.48128', '-43.9398904797', 1); + T('0.002625414898', '6', -1); + T('1', '-2', 1); + T('-6.731', '26328856', -1); + T('0.0000000000000000000284154564', '-1059603.41', 1); + T('0.000000000443838495', '0.0000000000000017', 1); + T('-3', '-18008.5115', 1); + T('-5.44111', '-0.000000000000002315', -1); + T('-0.00000000000005224', '2615.7', -1); + T('-165.123', '715.4', -1); + T('0.00000000000000000002503685', '103.89909', -1); + T('-843660', '-61054040.1', 1); + T('-0.000000000188978', '1.5162', -1); + T('-13262813', '-3.8259288422', -1); + T('-260760', '22527192335', -1); + T('-0.0000000012743953613', '3', -1); + T('-3.1', '0.0002826855', -1); + T('-0.00000034032373868', '4', -1); + T('-34.4487739299', '-3226659.36', 1); + T('-613804.983', '-0.00000000000000000162', -1); + T('1.64349914689', '-35.11364419', 1); + T('0.00000000007506', '1.5', -1); + T('-15402.36', '-25.57717', -1); + T('-0.02114629039', '-29.30', 1); + T('741.6', '272.88495', 1); + T('268', '-3.19964', 1); + T('-71.4', '21611474', -1); + T('0.000000000000007218501', '937651.654', -1); + T('199.3', '106.687430', 1); + T('-347089643', '-1.23588', -1); + T('1.1', '142.884', -1); + T('-0.00000397691', '3080.547000', -1); + T('862056251', '-0.00000000053632884', 1); + T('1', '-51972744.2', 1); + T('-0.0000000003410179', '-100.6', 1); + T('-2.888005719', '530.1', -1); + T('1', '7572161.50', -1); + T('-347802.7', '-9442843753', 1); + T('0.0023038', '780500', -1); + T('8', '0.0000000086715315930', 1); + T('25.2514', '-5.6679', 1); + T('-273.01392594', '744.7', -1); + T('1', '-0.000000000000000013732783740', 1); + T('-12110.11', '404.59869', -1); + T('-12.2', '1.409', -1); + T('-21399326578', '3', -1); + T('0.0000000000000011173', '-641.0', 1); + T('-32312.03841', '-858381873.058', 1); + T('2.914778', '-4083717632.78', 1); + T('-1', '-145434.3590', 1); + T('-0.000000000000029', '10.5027826', -1); + T('-83110.21', '-159304.18856', 1); + T('0.00000017124', '234078.4', -1); + T('-3.3135862481', '-0.0252', -1); + T('50816417030', '-0.0000000000000000000677050476', 1); + T('-0.000000121283558', '0.0000014', -1); + T('-2.6', '-51', 1); + T('-0.00000000000006649625', '0.000000000000000000158653960', -1); + T('0.10516268852', '65.301', -1); + T('-1.275', '-47740', 1); + T('-1.351', '403525711', -1); + T('2', '-4297959683', 1); + T('-164689.3', '-39864948.9721', 1); + T('9.9', '-69.2411393', 1); + T('8', '0.00000000000103945809296', 1); + T('305178.471', '3', 1); + T('0.000000000000032', '-20930.0799164', 1); + T('-77.49', '395.9622', -1); + T('-152.757430953', '-1398.02', 1); + T('-2307.747', '0.00000000000019805243698', -1); + T('-0.01218', '-7.812', 1); + T('0.0000000000000000003810', '0.0000000000000000029679541', -1); + T('10.688', '0.000000000008058682358', 1); + T('-1', '2578212', -1); + T('-3', '-56.08', 1); + T('-1093', '251.7', -1); + T('-4256.966707', '1.5', -1); + T('0.05564369', '-359117.57', 1); + T('-0.0000016653675', '21.04559509', -1); + T('0.00000000000000000560706598', '0.00000035617423088', -1); + T('-1613281026.0', '-12.8755773', -1); + T('-10117916.33', '-43368489.9992', 1); + T('0.0000000000000000023', '-0.00000000000000000072941926625', 1); + T('0.000000000000000000114', '-39574.34967', 1); + T('688605.3502', '790.091519', 1); + T('93.997217', '-1193.847608', 1); + T('70.4', '0', 1); + T('-1', '-1', 0); + T('2799.9505', '-879350400', 1); + T('26.3519', '2.7329', 1); + T('0.000000001075249872', '1', -1); + T('-1576477620.9', '0', -1); + T('-0.0000000000001887095', '0', -1); + T('-8.5', '-1699611.01', 1); + T('43.9', '269.320', -1); + T('6.861', '-13208', 1); + T('-0.00000000018976769', '4969.1', -1); + T('-0.104', '63006.503', -1); + T('4.699718', '0', 1); + T('-2398.0397', '0.000000000000912', -1); + T('-4898751.931', '1', -1); + T('157885566', '-68580.02', 1); + T('-11645818', '-3', -1); + T('-16294097.923', '-1.2097447985', -1); + T('-0.000000748731', '-454.222', 1); + T('0.00000000000010244980', '134106823.540', -1); + T('0.0000000000000015', '-170.73985', 1); + T('53.927', '6', 1); + T('1859944924', '2923512', 1); + T('-8', '2.06', -1); + T('-1173', '-2', -1); + T('2530717.95510', '-161.959593549', 1); + T('28.7750', '28975251191', -1); + T('14.6', '9.60848', 1); + T('-26625.8', '-181290682.303', 1); + T('-3216.90', '-13439', 1); + T('0.00000469235', '-1', 1); + T('-1767948', '0.000000000000000000030839', -1); + T('-0.0000732020', '133715', -1); + T('1790223107', '0.0000000064', 1); + T('-3', '-2', -1); + T('-63662276937', '3719.7312891', -1); + T('-0.0012587205', '-4217797.73', 1); + T('63388492', '-2816203811.9', 1); + T('0.000000000000030042105', '0', 1); + T('-305040732.4', '0.00070', -1); + T('13331390', '-0.00000016537084927', 1); + T('-0.0000022895', '-16976.1986920', 1); + T('876.4955249', '-243.2', 1); + T('-197.5688', '-4.29794', -1); + T('0.0000000000000000011', '6282.72', -1); + T('0.0000000000050984036283', '7.7881', -1); + T('-10495794506.9', '0', -1); + T('124856173.18', '0.00522', 1); + T('53.3', '-199', 1); + T('-1199.8', '-727.8', -1); + T('-43307.7', '-28360017461.6', 1); + T('-1', '2756856880', -1); + T('-689646263237', '464047', -1); + T('47187.7', '0', 1); + T('-0.00000000000000001510', '-3563.630', 1); + T('-4.858', '15', -1); + T('6199564.0', '4', 1); + T('0.00000008126595122', '94923.9', -1); + T('-4.55', '-0.00000050900013', -1); + T('1', '2296100.7', -1); + T('0', '1.503', -1); + T('0.000000000110946', '0', 1); + T('615423.7235', '184.8711374', 1); + T('1.05514', '0.00000000000000164', 1); + T('496.80639073', '-37990.30', 1); + T('836.9842', '7.8', 1); + T('-5860278130.33', '-0.0000000000000000150199', -1); + T('-0.007816', '-1.811145', 1); + T('0.00000000000000000006492937', '1.6', -1); + T('0', '-4.8', 1); + T('0', '3.8982', -1); + T('23', '34.3741', -1); + T('-3.0', '-0.00000000000104944', -1); + T('-0.1919', '5', -1); + T('99770.2091', '-5.7', 1); + T('51124300393', '-0.00000000017998', 1); + T('-70787232160', '-0.000133', -1); + T('1.13', '-3424775', 1); + T('-0.0000068139312402', '-0.0000000350208', -1); + T('1572.7', '-205.1', 1); + T('-0.000007355799843', '585', -1); + T('0.00000000000153614', '-20.5512', 1); + T('-0.00026', '2029254', -1); + T('2227.1', '372.5', 1); + T('6.7923522322', '7', -1); + T('1.3', '5', -1); + T('-8.54164', '-8', -1); + T('29980.875417', '0.441135960', 1); + T('299010.3', '0', 1); + T('9.27543816', '-0.00078113', 1); + T('-13.507', '5.73', -1); + T('-2724', '79823.9184', -1); + T('665153', '0.00000139621298365', 1); + T('-221507.830', '-42.2728486', -1); + T('-25748575.099', '-184839.8', -1); + T('91089', '11.053483070', 1); + T('-1.954', '-3.146', 1); + T('-118', '-0.0000000000000000253942787', -1); + T('5', '0.0000000000000000008808', 1); + T('-0.113849830', '-13.23', 1); + T('3419823', '9382356.3920', -1); + T('-209675697.9', '-1718.23', -1); + T('-0.000000000001298', '0.1258203689', -1); + T('0.00000122345524', '0', 1); + T('1227261.8715', '4', 1); + T('-0.0022031', '2.041487544', -1); + T('542.9563883', '-5854511410', 1); + T('-11659798', '-2.444', -1); + T('0.0000000000000000010320422', '633.8', -1); + T('0', '-2.8', 1); + T('-242.35223', '-2352762', 1); + T('-189681.68721', '0.0000000000009222784269', -1); + T('0.000000000000000007316', '575', -1); + T('32152.149300', '-0.00000000003464314292', 1); + T('1.02326029645', '-4', 1); + T('3', '0.00000000007128', 1); + T('-6654.74794838', '3880.34', -1); + T('0.0002021', '-52.79057', 1); + T('-0.04040990', '-0.16497', 1); + T('291339', '-8', 1); + T('-1.3669473', '0', -1); + T('0', '-8.9', 1); + T('-223743', '0', -1); + T('0.00000000000270179', '2084', -1); + + T('-5.5239e+3', '-2.2807805e+1', -1); + T('8.554e+2', '0e+0', 1); + T('-2.1176736939e+5', '2.13526332e+2', -1); + T('2.528e-2', '-1.5e-1', 1); + T('-2.1536554e-2', '-3.93e-6', -1); + T('4.853430802e-5', '-4.9e-11', 1); + T('-6.9e-3', '1.9596e+1', -1); + T('-9.93182949e+1', '-7.9983535342e-20', -1); + T('1.629795e+5', '1.58117535423e+5', 1); + T('-2.934333546e-15', '-2.093237829e-14', 1); + T('2.2916931e+1', '7.88e+2', -1); + T('7.656115e+0', '5.5885422e-10', 1); + T('0e+0', '-3.3e+0', 1); + T('-2.4327703616e+3', '1.1e+1', -1); + T('1.61903621e+6', '-2.3444006423e+2', 1); + T('4.5332e+4', '3.281123867e+1', 1); + T('-7.9e-4', '0e+0', -1); + T('-2.6e-19', '-5.4489933e+6', 1); + T('5.877152e+1', '1.5125e-2', 1); + T('6.293000381e-1', '7.2e+1', -1); + T('1.072062222225e+10', '7.521052067e+0', 1); + T('-2.9744557e+7', '0e+0', -1); + T('-1.0235e-13', '-3.671886e+0', 1); + T('-2.06364e-4', '6.2113337e-3', -1); + T('-7.02e+0', '-1.1348644434e+3', 1); + T('-3.57688146e+3', '3.81547e+2', -1); + T('2.9527098536e+3', '1.32080504447e-4', 1); + T('-2.6286e+1', '3.8e+0', -1); + T('-3.45054603e+2', '-9.88229e-15', -1); + T('-2.469e+0', '-3e+0', 1); + T('-8.369800004e-4', '1.4e-17', -1); + T('-1e+0', '4e+0', -1); + T('-3.0829216081e+2', '-3.08e+1', -1); + T('-1e+0', '-5.756e+1', 1); + T('-8.511e+0', '3.126324e+6', -1); + T('2.4474011949e+4', '1.12649e+2', 1); + T('-2.57868e+4', '-1.03178e+1', -1); + T('1e+0', '9.5177e+1', -1); + T('-9.8069663157e-6', '1.4532689e+5', -1); + T('3.721e+1', '-2e+0', 1); + T('-9.7657879751e+10', '-5.67e+2', -1); + T('-4.8657905e+6', '-2.17381281e+1', -1); + T('-4.20131e+0', '-1.3179640655e-8', -1); + T('1.6e+0', '0e+0', 1); + T('5.16068325659e-4', '1.269e+1', -1); + T('9.91969e+5', '0e+0', 1); + T('2.32e+0', '3.69e+1', -1); + T('5.685149e+2', '3.694e-13', 1); + T('-9.0148e-5', '0e+0', -1); + T('-3e+0', '-8.7855e-7', -1); + T('1.3669489e+3', '1.33866e-4', 1); + T('-2.6e+1', '1.36976797894e+3', -1); + T('4.6e+0', '0e+0', 1); + T('-7.2e-8', '1.971355e+2', -1); + T('1.19755e-5', '7e+0', -1); + T('-3.46e+0', '-3.7715361e-11', -1); + T('3.25762245146e+6', '-4.02e+0', 1); + T('1.3174225699e+7', '9.6222695655e+10', -1); + T('6.6e-13', '-5.23193346205e+4', 1); + T('-3.873e+3', '-1.23681175e+3', -1); + T('-1.19869e+5', '-8e+2', -1); + T('2.027381656e+3', '1.47629351439e+11', -1); + T('-1.467418e-17', '9.0073930856e+5', -1); + T('7.1e+0', '6.116301582e+2', -1); + T('-1.7883916e+5', '3.533e-17', -1); + T('8.8e-11', '-5.9707897e-1', 1); + T('-5.337e+3', '4.6614e-13', -1); + T('1e+0', '-3.1e+0', 1); + T('-3.05920196e-6', '-4e+0', 1); + T('-1.692375e-10', '2.29981330096e+6', -1); + T('5.19341813e-1', '6.1e+0', -1); + T('5.796e+3', '-9.386773281e-8', 1); + T('9.117497e+0', '0e+0', 1); + T('6.962934e-8', '1.413982e+2', -1); + T('2e+0', '1.4e+1', -1); + T('-2.04e+0', '-1.30300025e+9', 1); + T('1.57647e+1', '3.0862783894e+0', 1); + T('-4e+0', '7.1e+1', -1); + T('1.21e-6', '-2.109584154e+10', 1); + T('6.55669245e+3', '-8.15e-8', 1); + T('-8.3307e+2', '-9.1476874e+7', 1); + T('0e+0', '-3.64676e+5', 1); + T('-1.2803e+2', '7.2908749e+3', -1); + T('3.2263e+3', '-1.43355e+1', 1); + T('4.92751482244e-18', '1.3747248256e+3', -1); + T('8.20054755e-10', '6.2348e+2', -1); + T('-1.06e+1', '-7.2569084631e+4', 1); + T('1.86e+2', '3.76613527e-5', 1); + T('3.33652e+3', '5.1e+1', 1); + T('3.665307673e+8', '3.31344e+5', 1); + T('-7.341261161e+2', '-2.98910916e+7', 1); + T('6.24638573245e+5', '4.47893448327e+2', 1); + T('1.23e-8', '-5e+0', 1); + T('4.469176e+5', '-2.09863e+3', 1); + T('-2.72624816161e+3', '0e+0', -1); + T('-6.78251e-20', '-6.837e-1', 1); + T('6.2456922e-6', '0e+0', 1); + T('6.2e-4', '4.40516e+4', -1); + T('-7.624e+2', '-3e+0', -1); + T('-5.22549619458e+0', '-4.0866914233e+9', 1); + T('-9.51999532e+7', '-2e+0', -1); + T('-1.07321e+2', '-1.3e+0', -1); + T('-5.405555671e-6', '8.0306e+1', -1); + T('2.2e+0', '6.49e-17', 1); + T('3e+0', '2.2e+0', 1); + T('-1.12e+2', '3.4165375e+1', -1); + T('-2.36978379e+4', '-4.2e+0', -1); + T('-8e+0', '-6.42e+0', -1); + T('-3.2e+1', '6.17231707e-19', -1); + T('-4.8454741051e+1', '4.3339e-10', -1); + T('4.29e+0', '3.28376306e+4', -1); + T('-6.33089e+1', '-5.7065758354e-19', -1); + T('0e+0', '-3.31e-7', 1); + T('-2.18973e+2', '1.88333703659e+4', -1); + T('-1.67e+2', '3e+0', -1); + T('0e+0', '9.7605e-12', -1); + T('1.294433816e+0', '-1.1e+1', 1); + T('-1.4246177e+3', '-1.043532436e+8', 1); + T('-1.0531e+1', '2.2268899e-6', -1); + T('-1.5611e+3', '1.59757e+0', -1); + T('3.3638160556e+11', '6.29136402e+6', 1); + T('-7.7326244542e+2', '-9.6e+0', -1); + T('-3.593606997e+8', '-4e+0', -1); + T('9.4433e+2', '-1e+0', 1); + T('-1.0131e-9', '-4.551632556e+9', 1); + T('1.61735e+5', '-6.550194286e+9', 1); + T('3e+0', '-8.14e+3', 1); + T('-3.492e+0', '8.85393125e+2', -1); + T('-9.3678169131e-19', '-1.98802069e+4', 1); + T('-4.39338019e+7', '1.07850051e-15', -1); + T('-1.1677e+0', '2.22825374e+8', -1); + T('-3.476e+0', '6e+0', -1); + T('1.453e+0', '-6.34599e-7', 1); + T('1.789e-9', '0e+0', 1); + T('-2.92933e+4', '5.802095e+4', -1); + T('9e+0', '2.63702e-7', 1); + T('-6.0696e+4', '9.46475e+5', -1); + T('-1.508052e+6', '2.45600810354e+0', -1); + T('6.83354e+1', '1.93e-12', 1); + T('-1.6e+0', '-2e+0', 1); + T('-7.4275644e+5', '-6.1587e-14', -1); + T('0e+0', '3.540869872e-9', -1); + T('-7.86e+0', '8.041734e+6', -1); + T('-8e+0', '1.569e+1', -1); + T('2.0839e-18', '1.2848955034e-14', -1); + T('6.84909e+3', '2.19e+1', 1); + T('5.556062e+3', '1.037e-12', 1); + T('-1.011918e-9', '3.52315476249e+0', -1); + T('-1.2e+2', '-5.8677085e+1', -1); + T('1.5e+0', '-8.2951e-8', 1); + T('5.254e+0', '-2.08338e+3', 1); + T('8.272e+0', '0e+0', 1); + T('-2.3496e+3', '-1.74217696625e-1', -1); + T('2.33e+0', '-6e+0', 1); + T('8.138135061e-6', '1.52e+1', -1); + T('-2.691357e+5', '1e+0', -1); + T('4.277011e-13', '2.1978e+4', -1); + T('-4.164225e+0', '3.94601989492e-6', -1); + T('-1.32e-18', '-3.94e-3', 1); + T('-2.443211e-11', '2.02e-8', -1); + T('-1.2e+0', '-3.2e+1', 1); + T('4.7652754554e+7', '-2.1e-11', 1); + T('2.02136500541e+9', '-2.77170882e+2', 1); + T('-1.65e-2', '-2.4039e+3', 1); + T('1.8172e+1', '-6.3e-5', 1); + T('1.8703827209e-10', '-1.46184e+4', 1); + T('-1.11606903e+6', '-2.8e-6', -1); + T('-7.84180535e+0', '-6.9715e+2', 1); + T('-1.6095371e-5', '-4.007e+2', 1); + T('2e+0', '2.7730114619e+0', -1); + T('1.3694403e+7', '-3.14014263471e-3', 1); + T('3e+0', '2.4553237278e+3', -1); + T('-3e+0', '-2.78756184842e+11', 1); + T('-1.2522e+2', '-7.7e+1', -1); + T('4.491e-18', '-1.196e+3', 1); + T('-3e+0', '-2.78811358e+4', 1); + T('-3.5481789e+3', '1.6004994927e+5', -1); + T('1.9963146e+6', '-6.923e-1', 1); + T('-1.37573e-12', '2.072e+2', -1); + T('6.570067306e-1', '3.73554490286e-16', 1); + T('3.0659071736e-15', '6.946525e+1', -1); + T('-5.346e+0', '1e+0', -1); + T('8.55e-9', '7.9e-11', 1); + T('-7.5096624e+2', '3.40622424e+5', -1); + T('2.219404561e-14', '5.47749e+0', -1); + T('3.000476e+2', '-1.754092582e+1', 1); + T('0e+0', '-1.69774e+3', 1); + T('2.993e+0', '-1e+0', 1); + T('2.7528038851e+1', '-3.945799123e+4', 1); + T('-6.6266e+2', '-4.5e-19', -1); + T('9.204609e-14', '1.25862e+5', -1); + T('-7.0237408e+5', '-4.56413483775e+3', -1); + T('4.8481576e+2', '-6.53713e+3', 1); + T('1e+0', '1.103e+2', -1); + T('6.57977e+2', '-3.852e-16', 1); + T('3.861e+2', '-6.2072117462e+5', 1); + T('-6e+0', '1.3494901111e+6', -1); + T('-5.870696e-1', '-3.801808e+1', 1); + T('-3.83761721e+8', '8.081107501e-5', -1); + T('6.50057174e+5', '2.0206519e-12', 1); + T('5.5207e+4', '-2.48e+2', 1); + T('0e+0', '1.05116516384e+11', -1); + T('-1.75279284e+4', '3.899762267e-1', -1); + T('-1.6197e+0', '4.3274e+4', -1); + T('1.256294e+6', '-5.58921e-15', 1); + T('3e+0', '2.0586937916e-17', 1); + T('-3.28553e-13', '-1.18e+1', 1); + T('-2.81418e+5', '1.72529458e-12', -1); + T('7.8666421e+3', '5.9153e+0', 1); + T('4.84347589e-8', '2e+0', -1); + T('3e+0', '-2.6655512e+2', 1); + T('6.2696e-10', '-2.054382974e+1', 1); + T('6.1413274e-2', '0e+0', 1); + T('-2.9095e-18', '-6.9975956783e+8', 1); + T('4.01e-20', '-7.5588e-6', 1); + T('9.490622e-18', '-2.77e+0', 1); + T('-1.0267e-14', '-8.790091e-9', 1); + T('-4.077591e-14', '-3.0259558246e+0', 1); + T('-2.8261e+2', '-4.99857e+0', -1); + T('9.899113e+1', '1e+0', 1); + T('5.5e+0', '-7.0265e+0', 1); + T('5.286e-7', '-4.3972682e+2', 1); + T('1.5520187e+6', '1.150018e+2', 1); + T('-2.04e-10', '-4.0474e+2', 1); + T('-2.32245517e+7', '-4.96976e+4', -1); + T('-3.6487688611e-10', '-1.1763503e+2', 1); + T('8.3414625e+0', '0e+0', 1); + T('9.905071e+6', '-5.9541e-4', 1); + T('1.984307e+4', '-2.4291e-7', 1); + T('-1e+0', '-1e+0', 0); + T('2.060415969e+9', '-2.03455e+2', 1); + T('3.1982e-19', '-1.993945e+3', 1); + T('3.093739e+1', '-1.99128676855e+0', 1); + T('1.881e+1', '-1.09028754e+5', 1); + T('0e+0', '-4.7092316e-14', 1); + T('-9.455374693e-10', '-9.45812534991e+6', 1); + T('-1.67881e+4', '-2.1683630866e+3', -1); + T('6.3514013642e-17', '-4.5e+0', 1); + T('1.20179765e-20', '4.9098e+3', -1); + T('0e+0', '-7.476983768e+1', 1); + T('-8.5797e+2', '2.1e+0', -1); + T('-2.75e+1', '-1.749e-18', -1); + T('-1e+0', '8.4e+1', -1); + T('7.110682e+4', '8.5646556e+2', 1); + T('-3.1875423048e+6', '7.216e+1', -1); + T('-1.41969e+0', '0e+0', -1); + T('-3.707432e+6', '1.5048071e+2', -1); + T('-2.65447780189e+11', '2e+0', -1); + T('3.808865e+6', '-7.22140745e-10', 1); + T('2.972544e+3', '0e+0', 1); + T('1.142002886e-2', '-3.063e+0', 1); + T('-3.292e-15', '-2.2e-1', 1); + T('-9.29480350675e-6', '9.4830355594e+4', -1); + T('-2.49267401e-19', '3.3296905e+4', -1); + T('3.5057e+4', '1.2204e+3', 1); + T('2e+0', '9.51e+1', -1); + T('3.87279e+5', '-3.916681548e-13', 1); + T('7.775e+2', '1.814199961e+2', 1); + T('2.35095e-7', '9e+1', -1); + T('-8.077537e+2', '1.477341929e-7', -1); + T('-4.05364541e+3', '-5.1772081e+8', 1); + T('-8.0808881e+2', '-9.006e+1', -1); + T('-1.408092e+5', '-3.86832e+2', -1); + T('5e+0', '2e+0', 1); + T('-2.7424908566e+0', '-1.5471519e+0', -1); + T('7.31598e+0', '6.617089e+2', -1); + T('4.634e-7', '-2.8214e+3', 1); + T('-3.67e+2', '1.2e-18', -1); + T('2.5658e-5', '6.99742e+3', -1); + T('3.7635921e+2', '-2.01901e-17', 1); + T('-4.8483140421e+9', '-3.02562e+1', -1); + T('0e+0', '-2.9395143209e+8', 1); + T('-2.8599503512e+7', '5.35e-1', -1); + T('-1.7e+1', '-9.66381e+0', -1); + T('1.72e+1', '1.0349e-1', 1); + T('1.28429e+3', '2.0794611e+0', 1); + T('1.01e+0', '-5.7758e-11', 1); + T('2.227909e+5', '5.70358533e-7', 1); + T('-1.46175e+2', '-1.17142e+3', 1); + T('-9.231e+3', '1e+0', -1); + T('-1.959219085e+3', '3.71e+1', -1); + T('5.1e+0', '2.93e+2', -1); + T('-1.72022209707e+1', '0e+0', -1); + T('1.1e+0', '1e+0', 1); + T('1.71906029185e+5', '-2.14019e+0', 1); + T('2.3e+0', '-1.5055635614e+9', 1); + T('2.7786e+1', '1.061015128e+9', -1); + T('-1.56275984e+4', '1.09e+0', -1); + T('2.19791673e+1', '-3.104e+2', 1); + T('-4.3337886e+7', '4e+0', -1); + T('1e+0', '-4.22059e-7', 1); + T('3.365e+3', '-1.554e+2', 1); + T('1.1204042327e+10', '-1.3423178346e+10', 1); + T('2e+0', '-4.226459262e+1', 1); + T('-2.15204e+5', '5.958e+0', -1); + T('-9.99386226e+4', '0e+0', -1); + T('-1e+0', '-1.66246413e+7', 1); + T('4.9173e+2', '5.850707e-18', 1); + T('4.9e+0', '-4.7875e-8', 1); + T('-3e+0', '0e+0', -1); + T('1e+0', '-8.0083e-2', 1); + T('-7.83025222e+8', '-5e+0', -1); + T('-4.974944e+4', '3.1477230359e+10', -1); + T('7.180136071e+3', '-1.0544157071e-9', 1); + T('1.6665814118e-3', '1.73898e+3', -1); + T('-2.525921789e+1', '-3.93e+0', -1); + T('-1.734618e-16', '-1.6371419e-20', -1); + T('1.6444334e+6', '-2e+1', 1); + T('-1e+0', '2.072822964e+9', -1); + T('-6.473e-9', '-9.162534e-5', 1); + T('-3.1e+0', '-3.24e+0', 1); + T('1.6655834e+7', '-3.0374218803e+6', 1); + T('2.391e+0', '-3.907e+1', 1); + T('-1.7022720963e+3', '2e+0', -1); + T('4.454083713e+9', '2.0091e+4', 1); + T('-1.0366217734e-15', '-6.721993e+5', 1); + T('-5.7809e+4', '3.784169e+1', -1); + T('1.24172537e+5', '6.3e-9', 1); + T('4.2774283e-9', '2.4637e+1', -1); + T('1.6237405102e+10', '1.6962e-1', 1); + T('1.918662e+2', '1.544681756e+8', -1); + T('1.0276881e+4', '1.788601e+0', 1); + T('1.029335e-8', '1.18168265e+6', -1); + T('-2.55327e+2', '2.5825834e+6', -1); + T('0e+0', '1e+0', -1); + T('-8.909e+2', '-1.73e+2', -1); + T('5.67e+2', '2.56525383318e+5', -1); + T('-8.96e-20', '-8.32900609e+3', 1); + T('1.592758866e+9', '-3.872e+0', 1); + T('-5.639641852e+7', '8.2009e+4', -1); + T('2.9e+0', '4.5e+0', -1); + T('1.1865649388e+5', '1.78418807471e+3', 1); + T('2.07011921e-13', '2.63e+0', -1); + T('3e+0', '-2.21e+0', 1); + T('-9.34727321093e+11', '-6.86793197512e+11', -1); + T('3.9e+0', '4.2973482815e+4', -1); + T('1.227147e+5', '-1.359464668e-2', 1); + T('-5e+0', '-3.3986e+4', 1); + T('6.31103133e+7', '1.94315936e+6', 1); + T('-3.96418e+4', '-8.7168221121e+4', 1); + T('-1.64e+1', '-3.33576978e+6', 1); + T('4.952370705e-11', '-6.63267265e+2', 1); + T('1.253e+1', '-6.14622e+2', 1); + T('0e+0', '-1.442321328e+9', 1); + T('-1.180943e-6', '-9.42e-1', 1); + T('-1.037276289e+7', '-1.5944116485e-8', -1); + T('1.55813448081e+11', '1.1285443e+3', 1); + T('-2.28254e+1', '-4.9e+0', -1); + T('-1e+0', '4.594e+0', -1); + T('-1.07058028623e+0', '2.845e+3', -1); + T('7.011e+1', '0e+0', 1); + T('-4.5094e+2', '1.1459094e+3', -1); + T('2.85e+0', '-1.45112e+4', 1); + T('-1.09547404e+5', '-1.36411488349e+2', -1); + T('-3.0552725e+2', '-2.837293625e+9', 1); + T('-1.31e-5', '1.13782957e+2', -1); + T('-2.8209016e-20', '1.18e+0', -1); + T('-1.07667044e-19', '1e+0', -1); + T('1.3162128667e-10', '1.2689615338e+9', -1); + T('1.66716908e+6', '-1.2430993e-4', 1); + T('1.11122e-2', '-3.77323705304e+7', 1); + T('-7e+0', '5.5865954e+4', -1); + T('-3.15283960233e-16', '-3.2047044e-8', 1); + T('2.0846621548e+1', '3.92e-6', 1); + T('-2.8674e+1', '-1.31313084e-17', -1); + T('1.8332852e-17', '1.341e+1', -1); + T('9e+0', '-9.3e-12', 1); + T('-4.02592028644e+5', '-1.99028e+3', -1); + T('-1.541408372e+6', '-9.28e+0', -1); + T('1.5e+1', '9.783799e+2', -1); + T('-8e+0', '2.047e-7', -1); + T('1.81e+2', '1.43604e-20', 1); + T('0e+0', '-4.9101e+4', 1); + T('-1.78049643e+0', '-4.45673358e+0', 1); + T('1.722535667e+1', '-8.19890866e-9', 1); + T('-6.356e+3', '-2.77223e+2', -1); + T('-8.13e+0', '-1.3129112e+7', 1); + T('-6.2012143e-7', '-4.08330939e+4', 1); + T('-2.11991e+0', '4.592978e+2', -1); + T('-4.773043e+3', '-1.0842355e+2', -1); + T('-9.894928e+0', '6.1e-4', -1); + T('-8.7990384e-10', '-7.1295894e+6', 1); + T('-9.44946188e-18', '2e+1', -1); + T('7.76614e+0', '1.065670038e-20', 1); + T('-4.9149e+2', '1.347155498e+9', -1); + T('-2.869032e+1', '-5.892838e+4', 1); + T('-5.6497e+4', '2.2954968e+8', -1); + T('-7.75e+2', '-3.45480796e+0', -1); + T('-3.3e+0', '-6.836e+1', 1); + T('-4.6e+0', '-6.92355437e-8', -1); + T('0e+0', '-9.3e-10', 1); + T('-2.5751542e-13', '-7.26665e+5', 1); + T('-9.1e-19', '-2.22e-1', 1); + T('-3.0422594e+4', '-1.83546441e+8', 1); + T('-2.15991727483e-12', '3.70254e+2', -1); + T('-1.310483e+2', '-1.00310363e+0', -1); + T('1.272382447e+3', '1.54639612e+8', -1); + T('-8.6e-16', '1.800458e+6', -1); + T('3.7121867683e-11', '1.041097e-12', 1); + T('2.1025817638e+1', '1.7e+0', 1); + T('-3.282377e-1', '0e+0', -1); + T('1.6002692836e+7', '5.2967e+3', 1); + T('-6.59716e+5', '-1.499e+1', -1); + T('-1.489486e+3', '-2.496418887e+5', 1); + T('1.191e-18', '1.12654e+1', -1); + T('-1.28e+2', '1.3e+0', -1); + T('3.319e+3', '-7.45877113531e+11', 1); + T('-2.28982321e+8', '2.01314e-19', -1); + T('-5.569624e+5', '-3.737525683e-9', -1); + T('2.510676e-10', '2.3795e-11', 1); + T('-1.26058e-7', '6.52e+1', -1); + T('0e+0', '-1.21538e-11', 1); + T('3.75822101026e+8', '-4.6e+1', 1); + T('0e+0', '5.18418122608e+11', -1); + T('-5.2e+0', '-1.522025e+1', 1); + T('3.91627e+0', '-1e+0', 1); + T('8.625694625e+0', '4.003945628e+5', -1); + T('-1.5e+1', '1.0794745045e+8', -1); + T('-6.683982e-9', '1.3286e-5', -1); + T('2.148885316e+8', '-6.403e+3', 1); + T('-3.393964981e+1', '1.17e+1', -1); + T('-2.171e+0', '2.44e-19', -1); + T('4.974e+2', '4.441821841e+1', 1); + T('3.9772342e+7', '-1.2177e+1', 1); + T('-5.6487205452e+10', '1.616928e+0', -1); + T('2e+0', '-2.4219201896e+8', 1); + T('4.1809266e+0', '3e+0', 1); + T('3.5648124786e-6', '6.165789278e+0', -1); + T('-6.0454e+4', '-3.3e+0', -1); + T('-1.01e-7', '1.01747e-2', -1); + T('-1e+0', '4.6e-9', -1); + T('7.181192e-6', '4.81e+2', -1); + T('-2.14830776492e+11', '1.56e+2', -1); + T('-1.60213948e-3', '5.539e+3', -1); + T('1.678951271e-7', '5.34118751e+7', -1); + T('7.293818e+5', '2.373e-10', 1); + T('9.65991e+0', '5.66e+0', 1); + T('2.315503e-6', '-6.93e+0', 1); + T('2.19017494955e-3', '-7.4e+1', 1); + T('5.43469e+6', '0e+0', 1); + T('-2.330431561e+3', '1.52623e+1', -1); + T('8.463333e+6', '-2.4e+1', 1); + T('-2.12e+2', '1.5278e+3', -1); + T('-9.61324414111e+11', '1e+0', -1); + T('5.1e+0', '-4.03e+1', 1); + T('0e+0', '8.77053e+1', -1); + T('2.7e+0', '-4.654243671e+4', 1); + T('-2.61595754e+2', '3.4371351e-3', -1); + T('1.9236e+4', '0e+0', 1); + T('1.28744e+5', '1.588e+3', 1); + T('-7.12124e+3', '2.63043e+5', -1); + T('-2.87e+2', '-8.99490089e+8', 1); + T('-9.1451e+1', '-5.621833e+6', 1); + T('-1.458423128e+3', '2.45879369e+4', -1); + T('-2.2e+0', '5e+0', -1); + T('6.7158e+2', '2e+0', 1); + T('-1.861834055e+1', '3.46e+0', -1); + T('-1.42e-19', '-4.4399e+2', 1); + T('-7.7995e-19', '-3.37524763e+8', 1); + T('6.245562401e+3', '-1.9e+0', 1); + T('-7.4396248258e+8', '1.3184e+1', -1); + T('4.2194232e+0', '-9.5e+0', 1); + T('-2.09763179071e+0', '-2.9462e+3', 1); + T('8.7009653053e-4', '5.89164955e+7', -1); + T('-7.256717176e+1', '1.1256e+3', -1); + T('-2e+0', '1.74987486218e+6', -1); + T('-2.8e-2', '-9.439e+0', 1); + T('4.3e-18', '8.421e-3', -1); + T('-3.635286e-8', '1.27536e+2', -1); + T('9e+0', '-8.95518866e+6', 1); + T('7.7059164e+7', '-1.8e+0', 1); + T('1.75973e-16', '4.9e-4', -1); + T('-5.956e+3', '1.1918794e+1', -1); + T('2.07e+1', '0e+0', 1); + T('4.152e+0', '1.850529e-20', 1); + T('4.74e+0', '-5.322106e-18', 1); + T('1.46e+0', '-4.00403e+1', 1); + T('2.36505254e-2', '1.22e-13', 1); + T('5.4446e+3', '-6.5681622266e+1', 1); + T('-5.298322e+4', '-2.662708719e+8', 1); + T('-1.7590457129e-9', '-3.93970854954e+8', 1); + T('5.65218e+0', '-2.996191168e+7', 1); + T('2.9632e-6', '2.19966262214e-20', 1); + T('-4.416e+0', '-1.813776e+4', 1); + T('-1.974e+0', '-6.8e+0', 1); + T('-1.287908e+5', '-9.04795615e-3', -1); + T('-1.2376068058e+2', '1e+0', -1); + T('-2.8599877887e+0', '0e+0', -1); + T('1.4818911e-14', '3.170254e+4', -1); + T('2e-13', '-1.7343311e+6', 1); + T('-1e+0', '2.697691e+3', -1); + T('-1.69563735921e+7', '-1.18e+0', -1); + T('-1.221141e-16', '1.56460805e+8', -1); + T('3e+0', '3.23926451e+3', -1); + T('1.3233e+1', '3.15e+0', 1); + T('-1.78284e+6', '0e+0', -1); + T('1.9075e-5', '-6.4991913129e+1', 1); + T('5.55554e+5', '-6.18098e+6', 1); + T('6.271294e+6', '0e+0', 1); + T('2.6978874e+4', '1.3646501e-2', 1); + + T('24920', '2492', 1); + T('52923623235884.48110534', '52923623235884.4811053', 1); + T('-1018638522.07495421826817980', '-1018638522.0749542182681798', 0); + T('0.00000364136900', '0.0000036413690', 0); + T('-135859105.5', '-785094047.8293510', 1); + T('-4.1657902332676', '-4.165790233267', -1); + T('-19727509864588.3074', '-19727509864588.307', -1); + T('-0.0000000004020750915', '-0.000000000402075091', -1); + T('-1387043910095766779', '-138704391009576677', -1); + T('7.140', '7.14', 0); + T('-0.0000000083734544824491024997299767812', '-0.000000008373454482449102499729976781', -1); + T('-0.000000000000000000739', '-0.00000000000000000073', -1); + T('0.000000000000000673058992451447407822', '0.00000000000000067305899245144740782', 1); + T('107795751025937925', '10779575102593792', 1); + T('-0.000000140098925302534364687090608708', '-0.00000014009892530253436468709060870', -1); + T('-96807628344097344020361511087', '-9680762834409734402036151108', -1); + T('5236305598733477493821144', '523630559873347749382114', 1); + T('0.000012299669952207', '0.00001229966995220', 1); + T('-0.000000000026183583081', '-0.00000000002618358308', -1); + T('18157090114632.3949228869562', '18157090114632.394922886956', 1); + T('-8659730.88830', '-8659730.8883', 0); + T('92367.0595855628821', '92367.059585562882', 1); + T('-1191', '-119', -1); + T('0.809', '0.80', 1); + T('0.000000000000000000518579249419024975384099', '0.00000000000000000051857924941902497538409', 1); + T('196.516', '196.51', 1); + T('1902.90', '1902.9', 0); + T('0.012', '0.01', 1); + T('2521110', '252111', 1); + T('-24795', '-2479', -1); + T('3134.367349', '3134.36734', 1); + T('69006142577114620504.8', '36.0', 1); + T('-437609971173626.98792503', '-437609971173626.9879250', -1); + T('-36.11385408453080506', '-36.1138540845308050', -1); + T('1686.321277', '1686.32127', 1); + T('-84595.85616391029195941', '-84595.8561639102919594', -1); + T('-0.00000000000308289301068', '-0.0000000000030828930106', -1); + T('5', '273372254047642077337', -1); + T('52666073577.1290781606630097094', '52666073577.129078160663009709', 1); + T('0.000000000000000043918', '0.00000000000000004391', 1); + T('-139225776437585184717785093.38', '-139225776437585184717785093.3', -1); + T('-5584.1138579', '-5584.113857', -1); + T('-129253519658715.0', '112386803', -1); + T('-2290.5184387881314043589', '-2290.518438788131404358', -1); + T('-74094153218599401.874188', '-74094153218599401.87418', -1); + T('15.351267988724923583838', '15.35126798872492358383', 1); + T('135.603302', '135.60330', 1); + T('-50.57278382', '-50.5727838', -1); + T('216.98487', '216.9848', 1); + T('-21134.0', '-1', -1); + T('36667803450713332911.35544', '36667803450713332911.3554', 1); + T('-9554701478470869.90', '-9554701478470869.9', 0); + T('-5', '-0.000000022007149864827', -1); + T('-156737758.9503928528394581', '-156737758.950392852839458', -1); + T('1364938.01055262931', '1364938.0105526293', 1); + T('-439149.168324', '-439149.16832', -1); + T('15.521233412177260268175125', '15.52123341217726026817512', 1); + T('229652.78244076556531565167292', '229652.7824407655653156516729', 1); + T('-3121052385.065', '-3121052385.06', -1); + T('-717120317616.005596758', '-717120317616.00559675', -1); + T('50773299385872514328347782', '5077329938587251432834778', 1); + T('0.000000000000000000130149421115895602435542', '0.00000000000000000013014942111589560243554', 1); + T('0.00000000000000002742431130831653697264', '0.0000000000000000274243113083165369726', 1); + T('19079804604.0447062', '19079804604.044706', 1); + T('-269212379960084901007498.0473', '-269212379960084901007498.047', -1); + T('-0.358400680', '-0.35840068', 0); + T('-21574492412094843183898085', '-2157449241209484318389808', -1); + T('-71845410882550730027450926946', '-7184541088255073002745092694', -1); + T('1544.607426323', '1544.60742632', 1); + T('127.8549399242576867890', '127.854939924257686789', 0); + T('-95462566651371.86749077', '-95462566651371.8674907', -1); + T('1854469.010632854371428790793', '1854469.01063285437142879079', 1); + T('-0.0000000000511087722639524', '-0.000000000051108772263952', -1); + T('0', '-312658443822318131.65429523', 1); + T('-2343445339.96760', '-2343445339.9676', 0); + T('0.00000000000000147', '0.0000000000000014', 1); + T('1844372.33', '1844372.3', 1); + T('22982.419674718', '22982.41967471', 1); + T('108594857698581658410.0737', '108594857698581658410.073', 1); + T('-3.033420', '-3.03342', 0); + T('55810550.26594153069059591', '55810550.2659415306905959', 1); + T('628859628.7558', '628859628.755', 1); + T('-547.10', '-547.1', 0); + T('-0.0000000000000000009984305906072622822830075391', '-0.000000000000000000998430590607262282283007539', -1); + T('-41958933743619342422791223708', '-4195893374361934242279122370', -1); + T('-2167382.31949', '-2167382.3194', -1); + T('-0.000000242769356', '-0.00000024276935', -1); + T('175535', '17553', 1); + T('13196567561552073746181107', '1319656756155207374618110', 1); + T('-836.283', '-836.28', -1); + T('-151.6480011', '-151.648001', -1); + T('0.00000000000002112201668247567119900', '0.0000000000000211220166824756711990', 0); + T('-291644372.8176', '-291644372.817', -1); + T('2281', '228', 1); + T('0.000000324729973', '0.00000032472997', 1); + T('-76.8', '0.0001732215889415949412350821', -1); + T('0.0000001164790050629621890224', '0.000000116479005062962189022', 1); + T('-14.262813961', '-14.26281396', -1); + T('-4785353721725589457.76', '-4785353721725589457.7', -1); + T('-0.000000000048', '-0.00000000004', -1); + T('-5324145565493', '-532414556549', -1); + T('46', '-0.000000000566010149624486839', 1); + T('-5225949604210842406679429.93784', '-5225949604210842406679429.9378', -1); + T('-1.222170392', '-1.22217039', -1); + T('-0.00000000000000010679843092306603352830', '-0.0000000000000001067984309230660335283', 0); + T('-844323207816052268597', '-84432320781605226859', -1); + T('-273294.449058068769224', '-273294.44905806876922', -1); + T('-0.000061510623375', '-0.00006151062337', -1); + T('-12', '-1', -1); + T('-1146774191544920686.21847', '-1146774191544920686.2184', -1); + T('7308692', '730869', 1); + T('14463865367.0965', '14463865367.096', 1); + T('0.1790976', '0.179097', 1); + T('-0.00000088251244578915638133974523907', '-0.0000008825124457891563813397452390', -1); + T('611.7', '0', 1); + T('-309574907706487960682.9', '0.67178678369791512733235574', -1); + T('-2889196478.141321900', '-2889196478.14132190', 0); + T('163.97', '163.9', 1); + T('-2194652189.27', '-2194652189.2', -1); + T('-1259.4915400', '-1259.491540', 0); + T('-30128337', '-3012833', -1); + T('-403904222820946941.150781058', '-403904222820946941.15078105', -1); + T('-58.2030', '-58.203', 0); + T('126.5713124708539037', '126.571312470853903', 1); + T('-4', '220065464', -1); + T('1450774048.18357046', '1450774048.1835704', 1); + T('13694997566335', '1369499756633', 1); + T('-24.57850991168163044469', '-24.5785099116816304446', -1); + T('-3319659536.191', '-3319659536.19', -1); + T('10865.96', '10865.9', 1); + T('-188510157872663341831', '-18851015787266334183', -1); + T('62342691016946', '6234269101694', 1); + T('-20478.3157551016331897', '-20478.315755101633189', -1); + T('-2575595857296977614.9440249', '-2575595857296977614.944024', -1); + T('0.00026567201697160', '0.0002656720169716', 0); + T('-0.000000010270578723943120849114', '-0.00000001027057872394312084911', -1); + T('0.00000022383', '0.0000002238', 1); + T('2376696496129402852542.91945204', '2376696496129402852542.9194520', 1); + T('0.0000000000000000001100974033101769024', '0.000000000000000000110097403310176902', 1); + T('24448082823953.92815', '24448082823953.9281', 1); + T('49.832437916691637221', '49.83243791669163722', 1); + T('-10536487297762435987902669715', '-1053648729776243598790266971', -1); + T('-296549547862779403135.41', '-296549547862779403135.4', -1); + T('-9.5', '2.21', -1); + T('1.98179', '1.9817', 1); + T('-1199981732936688041', '-119998173293668804', -1); + T('0', '-0.0000000000000000000109460230704099637262', 1); + T('-50936625.15944921283142', '-50936625.1594492128314', -1); + T('-0.000000000003616130540960851987251', '-0.00000000000361613054096085198725', -1); + T('-0.000000000980270326383637798406174532', '-0.00000000098027032638363779840617453', -1); + T('-0.0000000000000000000300003812042071861', '-0.000000000000000000030000381204207186', -1); + T('83049889282.1', '0.00000000000001025185302485201018151409355123', 1); + T('233131790953874220450317498.14', '233131790953874220450317498.1', 1); + T('-3.7412702321747291', '-3.741270232174729', -1); + T('-0.0000009922266', '-0.000000992226', -1); + T('-1', '0.0000002780803', -1); + T('0.0000000000002146830950262', '0.000000000000214683095026', 1); + T('1', '-1.5071', 1); + T('-0.000000000465117016507026272818023', '-0.00000000046511701650702627281802', -1); + T('35.39382', '35.3938', 1); + T('-209.660', '-209.66', 0); + T('-90', '-9', -1); + T('0', '-0.00692', 1); + T('-180091979.9605073632174693529', '-180091979.960507363217469352', -1); + T('-122272534374617365', '-12227253437461736', -1); + T('-8572377', '-857237', -1); + T('-0.08864728209412867534496', '-0.0886472820941286753449', -1); + T('0.00000000000000000006218601802455410039603451124', '0.0000000000000000000621860180245541003960345112', 1); + T('8920721679663873214715343.144', '8920721679663873214715343.14', 1); + T('0.274427890206313529182339245', '0.27442789020631352918233924', 1); + T('-2011471992.5', '0', -1); + T('1599651.4112339122', '1599651.411233912', 1); + T('8257580447850.449229990', '8257580447850.44922999', 0); + T('-834308419.89', '-834308419.8', -1); + T('196710676681449226960408', '19671067668144922696040', 1); + T('-41631749783269189618702.063072', '-41631749783269189618702.06307', -1); + T('0.00000054256828175879255377', '0.0000005425682817587925537', 1); + T('10420033248908625.057365906', '10420033248908625.05736590', 1); + T('33958751985671992.081663881', '33958751985671992.08166388', 1); + T('38573.3', '-73', 1); + T('-220.99', '-220.9', -1); + T('0.00000000000000000006632', '0.0000000000000000000663', 1); + T('136.8915', '136.891', 1); + T('-42909979.8482', '-42909979.848', -1); + T('316479242.2412', '316479242.241', 1); + T('-36.2228569144', '-36.222856914', -1); + T('-0.000000000000000145887', '-0.00000000000000014588', -1); + T('-0.034420', '-0.03442', 0); + T('-7487.2940835', '-7487.294083', -1); + T('0.0000000001322905', '0.000000000132290', 1); + T('4540208843067942284033465362', '454020884306794228403346536', 1); + T('-0.00001872', '-0.0000187', -1); + T('1.679', '1.67', 1); + T('-0.003693', '-0.00369', -1); + T('-73534521830291117736646922', '-7353452183029111773664692', -1); + T('-439971017251.505', '-439971017251.50', -1); + T('-0.00000000070562052512643', '-0.0000000007056205251264', -1); + T('0.00000000000036078093367389488954734882', '0.0000000000003607809336738948895473488', 1); + T('183.3930', '183.393', 0); + T('0.000000000000000000045738234226758', '0.00000000000000000004573823422675', 1); + T('5184478988.786158717', '5184478988.78615871', 1); + T('1228655406.4', '-0.000000000001861', 1); + T('5.4', '29713477480117786223897387069', -1); + T('-31065857257211', '-3106585725721', -1); + T('-0.0000000080362523', '-0.000000008036252', -1); + T('52', '-4818398178.32313312', 1); + T('44618406226893376866220.0165600', '44618406226893376866220.016560', 0); + T('60575775575555146660699.8158363', '60575775575555146660699.815836', 1); + T('0.000000000000000000010650670229091', '0.00000000000000000001065067022909', 1); + T('-1.27', '-1.2', -1); + T('-110508.5720888844', '-110508.572088884', -1); + T('584649.40290077882', '584649.4029007788', 1); + T('-991707393.8949', '-991707393.894', -1); + T('-0.000000000000000005615887181289922', '-0.00000000000000000561588718128992', -1); + T('277763471701101937737505118889', '27776347170110193773750511888', 1); + T('0.000000000006833349812829515208501351867', '0.00000000000683334981282951520850135186', 1); + T('0.0000000000000000000825119426382375328', '0.000000000000000000082511942638237532', 1); + T('164214635502117894.45016275', '164214635502117894.4501627', 1); + T('156755613767148.4684291', '156755613767148.468429', 1); + T('337131.847212007602363066', '337131.84721200760236306', 1); + T('-743114207120.9575', '-743114207120.957', -1); + T('0.00097637', '0.0009763', 1); + T('0.000000000000000016965784141152262443', '0.00000000000000001696578414115226244', 1); + T('-0.679736199868', '-0.67973619986', -1); + T('31059776.87593', '31059776.8759', 1); + T('-0.00000000000315991373636284335', '-0.0000000000031599137363628433', -1); + T('-4717725826066274081763.901', '-4717725826066274081763.90', -1); + T('-0.00000000000000000010531404316238', '-0.0000000000000000001053140431623', -1); + T('-0.0000000000000092308522050', '-0.000000000000009230852205', 0); + T('-31939210155282393', '-3193921015528239', -1); + T('234.1354842403', '234.135484240', 1); + T('0', '25500772861644.63741880315', -1); + T('-2820.544', '-2820.54', -1); + T('-0.0000000000000000000171940410392', '-0.000000000000000000017194041039', -1); + T('-3953375698956251412.549803593', '-3953375698956251412.54980359', -1); + T('-198189130.0782001207250', '-198189130.078200120725', 0); + T('-61352644292414307', '-6135264429241430', -1); + T('92629.915756020804289', '92629.91575602080428', 1); + T('2.2482', '2.248', 1); + T('72.5680804939448786575044940949', '72.568080493944878657504494094', 1); + T('29840260084837.110', '29840260084837.11', 0); + T('-154554841.4372781448', '-154554841.437278144', -1); + T('-4715870743255944543754826804', '-471587074325594454375482680', -1); + T('0', '-673196116754.92594558368787', 1); + T('122070161359937463835761732151', '12207016135993746383576173215', 1); + T('0.00000000000000001992532704', '0.0000000000000000199253270', 1); + T('186651.580960498548', '186651.58096049854', 1); + T('2493953119584326.98694', '2493953119584326.9869', 1); + T('0.0000000000248988460997106039259', '0.000000000024898846099710603925', 1); + T('0.00000000126179033507144813915', '0.0000000012617903350714481391', 1); + T('8.5210960565733', '8.521096056573', 1); + T('-0.115997983788', '-0.11599798378', -1); + T('116478460414160856', '11647846041416085', 1); + T('-0.0000000000410758577068834165', '-0.000000000041075857706883416', -1); + T('-3.877785932990082724610869253', '-3.87778593299008272461086925', -1); + T('-1104.347468121953607708416', '-1104.34746812195360770841', -1); + T('1788566441339035', '178856644133903', 1); + T('-30944694030711', '-3094469403071', -1); + T('-1', '-59318.35091346', 1); + T('22.928', '22.92', 1); + T('-20.365598091573148941340533554', '-20.36559809157314894134053355', -1); + T('164432', '16443', 1); + T('-1505.1453', '-1505.145', -1); + T('14849.5', '-1035048221058', 1); + T('-21813.7768933', '-21813.776893', -1); + T('-3', '-133', 1); + T('-0.0000000000000011616', '-0.000000000000001161', -1); + T('289100821.7784', '289100821.778', 1); + T('6019702.0', '-354753899721763221.19223', 1); + T('37105.701735589966456', '37105.70173558996645', 1); + T('15977.362', '15977.36', 1); + T('-24795509226542636447908722', '-2479550922654263644790872', -1); + T('-13.2', '0', -1); + T('-0.000000000000000037701155411491341477', '-0.00000000000000003770115541149134147', -1); + T('2513229.7', '-0.0000000000000011002329726788604366137233', 1); + T('10760725997292.38254893708', '10760725997292.3825489370', 1); + T('504177973263.4841942', '504177973263.484194', 1); + T('3200.062372584607515', '3200.06237258460751', 1); + T('-10354064661931765.3820', '-10354064661931765.382', 0); + T('13619513905.82', '13619513905.8', 1); + T('2', '-20.2867031651859982183', 1); + T('-0.000000001042392150476', '-0.00000000104239215047', -1); + T('-15943439249924914', '-1594343924992491', -1); + T('-1012088906865956056745.1886775', '-1012088906865956056745.188677', -1); + T('0.0000206', '0.000020', 1); + T('-186827747346939858.7304', '-186827747346939858.730', -1); + T('-30132095587981544870.6', '1489083.55535518931', -1); + T('7012', '701', 1); + T('40130924927125476099322.48103', '40130924927125476099322.4810', 1); + T('0.0000000000000000000981', '0.000000000000000000098', 1); + T('-19372.3055662', '-19372.305566', -1); + T('-19.83638584167', '-19.8363858416', -1); + T('42.6', '5178793.40712651', -1); + T('498949500082608940888', '49894950008260894088', 1); + T('2790925312621021.3331276', '2790925312621021.333127', 1); + T('0.00000000000844831740749858241', '0.0000000000084483174074985824', 1); + T('6.50', '6.5', 0); + T('0.000003462780', '0.00000346278', 0); + T('-751629020.898865', '-751629020.89886', -1); + T('0.00000007309247977705', '0.0000000730924797770', 1); + T('-0.00220406121000', '-0.0022040612100', 0); + T('1120182731416530221572473', '112018273141653022157247', 1); + T('-0.8347609918057479', '-0.834760991805747', -1); + T('-5807.666472', '-5807.66647', -1); + T('-4167388.899763015', '-4167388.89976301', -1); + T('-401150740402834660825.50243454', '-401150740402834660825.5024345', -1); + T('-35794.29921122403049778953976', '-35794.2992112240304977895397', -1); + T('84431862959.2121997678178446917', '84431862959.212199767817844691', 1); + T('-2539996.17345032025783026803138', '-2539996.1734503202578302680313', -1); + T('0.00000000000000099705053162571348', '0.0000000000000009970505316257134', 1); + T('23401.12855330127', '23401.1285533012', 1); + T('8164385.3895774781453', '8164385.389577478145', 1); + T('-0.000000000000000005992633459836508190', '-0.00000000000000000599263345983650819', 0); + T('0.00000001336378654', '0.0000000133637865', 1); + T('0.50994808508176183', '0.5099480850817618', 1); + T('-1600777113482754136', '-160077711348275413', -1); + T('-4525072.832', '-4525072.83', -1); + T('-21', '-2', -1); + T('268678.963124964', '268678.96312496', 1); + T('0.0002563283407958355682202564483', '0.000256328340795835568220256448', 1); + T('-0.001692254617913891380920881908', '-0.00169225461791389138092088190', -1); + T('-1322598467.8998', '-1322598467.899', -1); + T('-12041123394.9989604', '-12041123394.998960', -1); + T('0.0000000000000195012', '0.000000000000019501', 1); + T('-4342560023646872240660', '-434256002364687224066', -1); + T('-35117', '-3511', -1); + T('0.00000000000000000069551761107698717501', '0.0000000000000000006955176110769871750', 1); + T('1185010344.148941', '1185010344.14894', 1); + T('-0.000000000030952985207690202030601829098', '-0.00000000003095298520769020203060182909', -1); + T('0.000000000000000582651473217774254164326212239', '0.00000000000000058265147321777425416432621223', 1); + T('504359.80087', '504359.8008', 1); + T('-1023', '-102', -1); + T('-0.00000000000044602178960376487', '-0.0000000000004460217896037648', -1); + T('-27163960789.700', '-27163960789.70', 0); + T('9.75', '9.7', 1); + T('15749.6', '-64114895', 1); + T('-1.78646', '-1.7864', -1); + T('0', '-0.0000293962545673136560132940521', 1); + T('1568482319330379083.46066570', '1568482319330379083.4606657', 0); + T('1.5', '0.24059486639369', 1); + T('72631883478316528107390894.761', '72631883478316528107390894.76', 1); + T('34.435342', '34.43534', 1); + T('-21658874', '-2165887', -1); + T('4.39', '4.3', 1); + T('0.0001793758139490056488536388', '0.000179375813949005648853638', 1); + T('0.000014078039388936962', '0.00001407803938893696', 1); + T('0.00000000000003559010620', '0.0000000000000355901062', 0); + T('1114593033649166', '111459303364916', 1); + T('-839727705223987847927.8', '0.0000000000000000009297088124606271555053', -1); + T('0.000000001093460554010662', '0.00000000109346055401066', 1); + T('-103.512', '-103.51', -1); + T('67798048.163', '67798048.16', 1); + T('52308232397211107247556311601', '5230823239721110724755631160', 1); + T('0.000000000000000001692', '0.00000000000000000169', 1); + T('0.001001742891829562912794', '0.00100174289182956291279', 1); + T('44854731', '4485473', 1); + T('-142442148181118926872.0291262', '-142442148181118926872.029126', -1); + T('-212.25', '-212.2', -1); + T('0.00064262226396649288736045009', '0.0006426222639664928873604500', 1); + T('-1963634914900782.3083054837942', '-1963634914900782.308305483794', -1); + T('-29235219.36', '-29235219.3', -1); + T('13157328.110', '13157328.11', 0); + T('-0.00000024923670350319764405595266619', '-0.0000002492367035031976440559526661', -1); + T('211241733874.26', '211241733874.2', 1); + T('-0.0000000000001031601613971119366688714', '-0.000000000000103160161397111936668871', -1); + T('-41.38924804686835819982429', '-41.3892480468683581998242', -1); + T('-6', '-0.00000000000947293362099347980476194676305', -1); + T('0', '2025.61', -1); + T('4509184573.49', '4509184573.4', 1); + T('0.00000000000000001080', '0.0000000000000000108', 0); + T('0.000000000000000025970809826510597', '0.00000000000000002597080982651059', 1); + T('-10487551.18', '-10487551.1', -1); + T('-1', '-232678585.74', 1); + T('2144754227667106756.251334', '2144754227667106756.25133', 1); + T('11696039.4573616732', '11696039.457361673', 1); + T('1.8', '-1197.974427959', 1); + T('15.0', '0.14094197085256646250149695458', 1); + T('-9911214476849.9868926', '-9911214476849.986892', -1); + T('746601322434.3', '-2026225456262211.028', 1); + T('33327.320', '33327.32', 0); + T('37.45616', '37.4561', 1); + T('1613310.79', '1613310.7', 1); + T('-324.19116', '-324.1911', -1); + T('-8205973490351098524', '-820597349035109852', -1); + T('-38010778199', '-3801077819', -1); + T('465062636441606050103294707247', '46506263644160605010329470724', 1); + T('-234531342243689027509422607.087', '-234531342243689027509422607.08', -1); + T('-6519.701031489886865549', '-6519.70103148988686554', -1); + T('-27758350575381', '-2775835057538', -1); + T('11205680254917.29959', '11205680254917.2995', 1); + T('2037540', '203754', 1); + T('-0.000000000143432822908384760', '-0.00000000014343282290838476', 0); + T('-1080471500378115463.91037', '-1080471500378115463.9103', -1); + T('11310.5806', '11310.580', 1); + T('268.4', '4405497532754453.71', -1); + T('-0.03269186675484629883', '-0.0326918667548462988', -1); + T('3.0', '-1246100744', 1); + T('-0.000009472607806448155830419', '-0.00000947260780644815583041', -1); + T('-68623184.5', '-1870260073', 1); + T('0.00000000115796390522683677275464134000', '0.0000000011579639052268367727546413400', 0); + T('-0.000000001712702962512851', '-0.00000000171270296251285', -1); + T('6963.3801375810328365724139570', '6963.380137581032836572413957', 0); + T('0.000000000000000136327583962505', '0.00000000000000013632758396250', 1); + T('-179275.62567103827058669819082', '-179275.6256710382705866981908', -1); + T('0.00000218570795745319276132718732', '0.0000021857079574531927613271873', 1); + T('68.31423316364099583801307', '68.3142331636409958380130', 1); + T('19.5833307957304445294855674', '19.583330795730444529485567', 1); + T('4.02', '4.0', 1); + T('-862843', '-86284', -1); + T('-56544409662235409.368186', '-56544409662235409.36818', -1); + T('-0.00000000000003660585469627', '-0.0000000000000366058546962', -1); + T('-1.863', '-1.86', -1); + T('52501888926', '5250188892', 1); + T('-1', '-0.00000000000000000978061879517092', -1); + T('-0.00000000140842797026112010675644120', '-0.0000000014084279702611201067564412', 0); + T('-8681.34675166', '-8681.3467516', -1); + T('70986248658313756946.175', '70986248658313756946.17', 1); + T('9087.12275147312492852', '9087.1227514731249285', 1); + T('-1946391549304989528206958429.3', '0.00000000000000000001852761384', -1); + T('-24991110196476816.5973432', '-24991110196476816.597343', -1); + T('0.000000000000000012941178189261090807423', '0.00000000000000001294117818926109080742', 1); + T('12016926398.4701744866213809', '12016926398.470174486621380', 1); + T('3012709140.5485148192204195', '3012709140.548514819220419', 1); + T('-0.000000000000014627930', '-0.00000000000001462793', 0); + T('332348006.1892716773566', '332348006.189271677356', 1); + T('-0.000000019', '-0.00000001', -1); + T('-0.0000024642005864', '-0.000002464200586', -1); + T('-15853920353685720', '-1585392035368572', -1); + T('-3', '0.00334', -1); + T('-4368864535997.00731830', '-4368864535997.0073183', 0); + T('0.0000000000000000010', '0.000000000000000001', 0); + T('-307303170292.614', '-307303170292.61', -1); + T('25.45464373426403840448612', '25.4546437342640384044861', 1); + T('942241618172218308593287', '94224161817221830859328', 1); + T('0.00000000000000005357021085236752029646', '0.0000000000000000535702108523675202964', 1); + T('0.000000000357348983', '0.00000000035734898', 1); + T('-1578782291785511380364', '-157878229178551138036', -1); + T('-76812604459187.94', '-76812604459187.9', -1); + T('0.000000000000000000024', '0.00000000000000000002', 1); + T('80910090177', '8091009017', 1); + T('26196262061157.296', '26196262061157.29', 1); + T('-2.5419448086543270', '-2.541944808654327', 0); + T('5510.149', '5510.14', 1); + T('240282.7241338', '240282.724133', 1); + T('361596169011252', '36159616901125', 1); + T('-203941370720480263273.3', '7313.9912', -1); + T('-6425057953.0172', '-6425057953.017', -1); + T('3529900444.00198687592090253454', '3529900444.0019868759209025345', 1); + T('-1913233401877.8263043645', '-1913233401877.826304364', -1); + T('0.00000000231115060509654299602960266', '0.0000000023111506050965429960296026', 1); + T('-18819022481403295095312', '-1881902248140329509531', -1); + T('-13790408.0512', '-13790408.051', -1); + T('2996.67', '2996.6', 1); + T('5', '-2364783035602699164.1934942679', 1); + T('-794688606062', '-79468860606', -1); + T('-15183315947.8764211541', '-15183315947.876421154', -1); + T('15976.600931534513375', '15976.60093153451337', 1); + T('62985782290', '6298578229', 1); + T('-0.000000000000000136844163154210', '-0.00000000000000013684416315421', 0); + T('9311325062667667325773987', '931132506266766732577398', 1); + T('-251.776', '-251.77', -1); + T('69.947', '69.94', 1); + T('494.518135609425364940472684', '494.51813560942536494047268', 1); + T('-0.000000000000000000770311595488584', '-0.00000000000000000077031159548858', -1); + T('-31883468122.462112645954460826', '-31883468122.46211264595446082', -1); + T('45164896297917952.745283345624', '45164896297917952.74528334562', 1); + T('9.9', '6607070556969953716001823', -1); + T('0.00000000000015847318576697', '0.0000000000001584731857669', 1); + T('8453134914884811', '845313491488481', 1); + T('4363007389023360.0947505417', '4363007389023360.094750541', 1); + T('0.00000651', '0.0000065', 1); + T('63980', '6398', 1); + T('184865087582523954342727244.41', '184865087582523954342727244.4', 1); + T('210', '21', 1); + T('160857383504.45305139461', '160857383504.4530513946', 1); + T('-68212.03884', '-68212.0388', -1); + T('0.000000000000000000027320749051653154055', '0.00000000000000000002732074905165315405', 1); + T('0.0000000018738126472074437195860615988', '0.000000001873812647207443719586061598', 1); + T('-1119289980974198379.09520', '-1119289980974198379.0952', 0); + T('0.00000000000020615568', '0.0000000000002061556', 1); + T('24740673.0', '-19.6', 1); + T('-0.00000000000000000008590177716950083750561846', '-0.0000000000000000000859017771695008375056184', -1); + T('3', '381552602624', -1); + T('-194022.047372437749', '-194022.04737243774', -1); + T('-19.840941985', '-19.84094198', -1); + T('786400.65729', '786400.6572', 1); + T('-0.0000037430397514518105', '-0.000003743039751451810', -1); + T('279955180857166858.67063', '279955180857166858.6706', 1); + T('7.74', '7.7', 1); + T('0.21829393131', '0.2182939313', 1); + T('124841568240942.234680', '124841568240942.23468', 0); + T('0.000000000000000471099502548165170284259', '0.00000000000000047109950254816517028425', 1); + T('-99.86772739', '-99.8677273', -1); + T('10', '41950771951.66109', -1); + T('-0.00000000000000209702', '-0.0000000000000020970', -1); + T('-0.000002340625428766004404187457', '-0.00000234062542876600440418745', -1); + T('-4763.9', '2.034660667930931', -1); + T('4038', '403', 1); + T('9602830359170510968473768.362', '9602830359170510968473768.36', 1); + T('1673967.68004214151', '1673967.6800421415', 1); + T('-40724652990901152.3', '-1', -1); + T('5.3613955', '5.361395', 1); + T('-50544224094691571.5806233861187', '-50544224094691571.580623386118', -1); + T('971836.46599301', '971836.4659930', 1); + T('0.0000000000000000492654484203', '0.000000000000000049265448420', 1); + T('0.0000000000000273350022839', '0.000000000000027335002283', 1); + T('-0.0000000000000111187728980548441', '-0.000000000000011118772898054844', -1); + T('240.32166914346', '240.3216691434', 1); + T('-301.469168', '-301.46916', -1); + T('0', '361314256851430.8380', -1); + T('4095.137770623652511', '4095.13777062365251', 1); + T('0.0015377038155762591158011773', '0.001537703815576259115801177', 1); + T('-122.105313489953435', '-122.10531348995343', -1); + T('-12529067051281794', '-1252906705128179', -1); + T('-0.0000064280', '-0.000006428', 0); + T('728173692003587479', '72817369200358747', 1); + T('0.00000000005148126849474197', '0.0000000000514812684947419', 1); + T('155032124343881936061774467.7', '71403.71', 1); + T('5336736899935835.270053', '5336736899935835.27005', 1); + T('174556.818526489', '174556.81852648', 1); + T('-0.00000000529718819', '-0.0000000052971881', -1); + T('39710699.39476764508186780', '39710699.3947676450818678', 0); + T('-504505.226304998729', '-504505.22630499872', -1); + T('121.845727307', '121.84572730', 1); + T('-0.0000000000014085632', '-0.000000000001408563', -1); + T('-53304292.806841332223', '-53304292.80684133222', -1); + T('0.00000000000000000029', '0.0000000000000000002', 1); + T('0.000000000000162235692', '0.00000000000016223569', 1); + T('1124.8204793587524', '1124.820479358752', 1); + T('1676932756858', '167693275685', 1); + T('-138785033434702745562559175', '-13878503343470274556255917', -1); + T('-26787241126112270.786851', '-26787241126112270.78685', -1); + T('3.01', '3.0', 1); + T('0.00000000000000165985383', '0.0000000000000016598538', 1); + T('0.000000002121', '0.00000000212', 1); + T('100065.900759', '100065.90075', 1); + T('3.0786', '3.078', 1); + T('1829645.4450108032076981336', '1829645.445010803207698133', 1); + T('-31.80223', '-31.8022', -1); + T('530006.60', '530006.6', 0); + T('0.001298918', '0.00129891', 1); + T('0.36635660', '0.3663566', 0); + T('77511746654159493674.79419', '77511746654159493674.7941', 1); + T('339255.7', '-1473225.1695489201158451', 1); + T('1.11', '1.1', 1); + T('-0.000000000025234359435300648563442278', '-0.00000000002523435943530064856344227', -1); + T('-527785722956482.1568788276023', '-527785722956482.156878827602', -1); + T('15.829063161229710883887068159', '15.82906316122971088388706815', 1); + T('0', '9.020934402455', -1); + T('5.50898793', '5.5089879', 1); + T('176437906524318811079.64601', '176437906524318811079.6460', 1); + T('-397.5475158726300', '-397.547515872630', 0); + T('-0.00000000001556055515635481323709942', '-0.0000000000155605551563548132370994', -1); + T('22.4958236487616739001889', '22.495823648761673900188', 1); + T('225949901218559.6254904852', '225949901218559.625490485', 1); + T('34352062918', '3435206291', 1); + T('0.00000000000127995729371224', '0.0000000000012799572937122', 1); + T('-18289597669354.148272509794', '-18289597669354.14827250979', -1); + T('62072.9263', '62072.926', 1); + T('-0.00000000038775267220204260640135935', '-0.0000000003877526722020426064013593', -1); + T('15', '49854', -1); + T('-622727179956664623.584677020', '-622727179956664623.58467702', 0); + T('124612619885534601636883847056', '12461261988553460163688384705', 1); + T('-44704302', '-4470430', -1); + T('-0.0000000000007320382329813686', '-0.000000000000732038232981368', -1); + T('57035102.20300582807941489', '57035102.2030058280794148', 1); + T('-0.00000000001794738068861544419872319', '-0.0000000000179473806886154441987231', -1); + T('-1.2228', '-1.222', -1); + T('43666858484365456517278', '4366685848436545651727', 1); + T('-0.0000000000314085', '-0.000000000031408', -1); + T('0', '0.00000000000063486', -1); + T('63.6991829', '63.699182', 1); + T('-0.0000000000199308483511083746', '-0.000000000019930848351108374', -1); + T('3.1', '-3709905843220.155177257', 1); + T('-39631940063', '-3963194006', -1); + T('7073142.8', '3', 1); + T('-1999449463', '-199944946', -1); + T('290002.761327072634018931', '290002.76132707263401893', 1); + T('12860083520871521.6822227', '12860083520871521.682222', 1); + T('183820.026930161', '183820.02693016', 1); + T('0.000000781790', '0.00000078179', 0); + T('1.446', '1.44', 1); + T('0.0000008551572300216445253650', '0.000000855157230021644525365', 0); + T('0.4780426111531057579684661647', '0.478042611153105757968466164', 1); + T('-1711959015605354291', '-171195901560535429', -1); + T('863248002669318.08600609171', '863248002669318.0860060917', 1); + T('-1028946422414.8414841087619794', '-1028946422414.841484108761979', -1); + T('0.0000000000000000000419470', '0.000000000000000000041947', 0); + T('-2914967412378208104.4188038431', '-2914967412378208104.418803843', -1); + T('-0.002008', '-0.00200', -1); + T('-0.00000000000002626730784814031567584', '-0.0000000000000262673078481403156758', -1); + T('-19391200616386965', '-1939120061638696', -1); + T('15805.555288168078384', '15805.55528816807838', 1); + T('0.000000000000000065791655', '0.00000000000000006579165', 1); + T('-0.00000000000028926319996', '-0.0000000000002892631999', -1); + T('-10555951879654.4116', '-10555951879654.411', -1); + T('77254637873210650.73', '77254637873210650.7', 1); + T('1154.7950888803119206706', '1154.795088880311920670', 1); + T('-0.00000002121424546283688', '-0.0000000212142454628368', -1); + T('-6884545854992086.64462961512340', '-6884545854992086.6446296151234', 0); + T('-0.0000002787346373194072109221861494', '-0.000000278734637319407210922186149', -1); + T('1589425692.0903352784430490711', '1589425692.090335278443049071', 1); + T('-0.000000069284383167241482592797', '-0.00000006928438316724148259279', -1); + T('-1297741', '-129774', -1); + T('-82630489346849562513.319012060', '-82630489346849562513.31901206', 0); + T('-2788.926', '-2788.92', -1); + T('0', '-4383482151.279035955215656', 1); + T('20802679.3368961001940047753', '20802679.336896100194004775', 1); + T('88377599.6874', '88377599.687', 1); + T('-15439.11', '-15439.1', -1); + T('644', '64', 1); + T('289240770089054460230094', '28924077008905446023009', 1); + T('2374.044', '2374.04', 1); + T('206285132736.429455540', '206285132736.42945554', 0); + T('-2.655584158995322', '-2.65558415899532', -1); + T('6.66', '6.6', 1); + T('-0.00147702317521839535481784', '-0.0014770231752183953548178', -1); + T('0.00025983386631037', '0.0002598338663103', 1); + T('125878687977.170727149556144', '125878687977.17072714955614', 1); + T('0.00000000014242990543328642932285580466', '0.0000000001424299054332864293228558046', 1); + T('531497192.9', '-2.8789608913347', 1); + T('128572050211770604885888', '12857205021177060488588', 1); + T('0.00000000000049823251747441545405900232', '0.0000000000004982325174744154540590023', 1); + T('-3554', '-355', -1); + T('0', '-131462.704889581898753', 1); + T('-110360.109', '-110360.10', -1); + T('46243539.17811357252990972', '46243539.1781135725299097', 1); + T('-394476311386474662807.561867', '-394476311386474662807.56186', -1); + T('52032.8849384149084108910', '52032.884938414908410891', 0); + T('-3670157142977774795911.8817', '-3670157142977774795911.881', -1); + T('-1268380.68072308126212968448547', '-1268380.6807230812621296844854', -1); + T('-143400922253476294484942', '-14340092225347629448494', -1); + T('1.4797498644139485849619679', '1.479749864413948584961967', 1); + T('3220359.45542896240415069', '3220359.4554289624041506', 1); + T('-34.67710018368', '-34.6771001836', -1); + T('18.565971', '18.56597', 1); + T('-0.0000000107587', '-0.000000010758', -1); + T('-16558604266', '-1655860426', -1); + T('6289.6556', '6289.655', 1); + T('1061140593553797', '106114059355379', 1); + T('-6946576.61799943', '-6946576.6179994', -1); + T('-3549420020.8', '-0.000000000197268526037141123595658758051', -1); + T('-0.00000000000000045', '-0.0000000000000004', -1); + T('3.95', '3.9', 1); + T('0.00000000017950293191', '0.0000000001795029319', 1); + T('-0.0000000000000002653486566279708933590491', '-0.000000000000000265348656627970893359049', -1); + T('5834654233963853186742787.19252', '5834654233963853186742787.1925', 1); + T('0.00000000000000146193758453924734921291', '0.0000000000000014619375845392473492129', 1); + T('21.2', '-5466882.34678998616', 1); + T('-226.313', '-226.31', -1); + T('-0.00060919', '-0.0006091', -1); + T('2862921800133731.00223602', '2862921800133731.0022360', 1); + T('0.000001450407700996599075301', '0.00000145040770099659907530', 1); + T('272534713642655203877194515', '27253471364265520387719451', 1); + T('400533357.2054', '400533357.205', 1); + T('-52301.7548455317094', '-52301.754845531709', -1); + T('-60434', '-6043', -1); + T('-4713231.0582649012375636764', '-4713231.058264901237563676', -1); + T('442933.48162982928258413695403', '442933.4816298292825841369540', 1); + T('-143913.618851426974774247273449', '-143913.61885142697477424727344', -1); + T('257.994941295', '257.99494129', 1); + T('-567639505016552', '-56763950501655', -1); + T('0.000000107', '0.00000010', 1); + T('-70142602142.0685215078078', '-70142602142.068521507807', -1); + T('9937222087105.4475', '9937222087105.447', 1); + T('-502191309583350641', '-50219130958335064', -1); + T('30437.61407', '30437.6140', 1); + T('-104085888962140304973.61065995', '-104085888962140304973.6106599', -1); + T('74681549.65066', '74681549.6506', 1); + T('0', '34.0', -1); + T('1283299494621733760436152524.7', '191981915098.416203175', 1); + T('-2079057190454275.24388611959130', '-2079057190454275.2438861195913', 0); + T('-71969837200476.48650', '-71969837200476.4865', 0); + T('-130332745336076.430672680', '-130332745336076.43067268', 0); + T('-262322534.7873', '-262322534.787', -1); + T('-4622120040.36051', '-4622120040.3605', -1); + T('393.81', '393.8', 1); + T('-8778932.1977656', '-8778932.197765', -1); + T('-0.000000004319221300856935220146173063', '-0.00000000431922130085693522014617306', -1); + T('1.3', '-2901258187734.962', 1); + T('-16.56973', '-16.5697', -1); + T('-30104811614630.4940925402114444', '-30104811614630.494092540211444', -1); + T('-0.238917470430091754', '-0.23891747043009175', -1); + T('40.82242337', '40.8224233', 1); + T('-30694613567562.20297241', '-30694613567562.2029724', -1); + T('-0.000000001679207115467275', '-0.00000000167920711546727', -1); + T('-1', '10591891.719', -1); + T('1.85299397', '1.8529939', 1); + T('3.1', '-0.0000000010927840471796860', 1); + T('-0.5778526120297929752108974', '-0.577852612029792975210897', -1); + T('-0.00000002031283434', '-0.0000000203128343', -1); + T('-1609260013071237241578458.130', '-1609260013071237241578458.13', 0); + T('142924542265794697.6840281240', '142924542265794697.684028124', 0); + T('445463969.1', '-0.0000000000003547121196389709462', 1); + T('0.0000000000000000000126560009292128566', '0.000000000000000000012656000929212856', 1); + T('41537.281211574', '41537.28121157', 1); + T('0.000008600441757756', '0.00000860044175775', 1); + T('-4.0918630496265', '-4.091863049626', -1); + T('515782766783.866833275741', '515782766783.86683327574', 1); + T('0.00000392', '0.0000039', 1); + T('7482300.41', '7482300.4', 1); + T('70457460459564179796739', '7045746045956417979673', 1); + T('-13615229017824905947.22', '-13615229017824905947.2', -1); + T('8459428653.6932870235609249397', '8459428653.693287023560924939', 1); + T('-27.974019', '-27.97401', -1); + T('10877384546812', '1087738454681', 1); + T('17.146861043222', '17.14686104322', 1); + T('-0.0000000000012741539', '-0.000000000001274153', -1); + T('-18976303359654085296749.6386', '-18976303359654085296749.638', -1); + T('-14105745484762.813773506', '-14105745484762.81377350', -1); + T('-1674391.840', '-1674391.84', 0); + T('-84922688.1007771598494556708', '-84922688.100777159849455670', -1); + T('-12.57', '-12.5', -1); + T('-0.00000000048', '-0.0000000004', -1); + T('-0.00000032914110816', '-0.0000003291411081', -1); + T('0.000000000027615548', '0.00000000002761554', 1); + T('0.000000000460044976036', '0.00000000046004497603', 1); + T('0.000000000000000469322464666856288338391046819', '0.00000000000000046932246466685628833839104681', 1); + T('112.86854732363', '112.8685473236', 1); + T('118566.37', '118566.3', 1); + T('5014945347.21114863', '5014945347.2111486', 1); + T('655824.126216661', '655824.12621666', 1); + T('-53.0', '-2828707252974182.26', 1); + T('-107852322318138.23', '-107852322318138.2', -1); + T('817.381', '817.38', 1); + T('-8.10721735', '-8.1072173', -1); + T('2', '109155.92', -1); + T('-0.09059', '-0.0905', -1); + T('0.000000038', '0.00000003', 1); + T('135803.4375', '135803.437', 1); + T('-0.104981688246294', '-0.10498168824629', -1); + T('-319117053919238717943917700', '-31911705391923871794391770', -1); + T('-0.00000004966732670', '-0.0000000496673267', 0); + T('0.00000000000000017556177582070698', '0.0000000000000001755617758207069', 1); + T('-6039943363.364348624747813', '-6039943363.36434862474781', -1); + T('-0.0768825', '-0.076882', -1); + T('-0.00000157341483784912166430698733808', '-0.0000015734148378491216643069873380', -1); + T('-588017', '-58801', -1); + T('-2129041.040892', '-2129041.04089', -1); + T('-4859858157015921288139272.0', '-281.9', -1); + T('0.000000000000028619814741904', '0.00000000000002861981474190', 1); + T('398.5406', '398.540', 1); + T('-117104803640', '-11710480364', -1); + T('-78601667654180532972556760.3008', '-78601667654180532972556760.300', -1); + T('2228270436870143.19', '2228270436870143.1', 1); + T('-161233', '-16123', -1); + T('136330282209580168399263.62462', '136330282209580168399263.6246', 1); + T('-86.44928389', '-86.4492838', -1); + T('338.24', '338.2', 1); + T('-14549618702.664447503248196729', '-14549618702.66444750324819672', -1); + T('-30.6085886720119612', '-30.608588672011961', -1); + T('-1990373027501001721683307.30225', '-1990373027501001721683307.3022', -1); + T('1876002848.466', '1876002848.46', 1); + T('-810.41963070149375272', '-810.4196307014937527', -1); + T('2414021.80458', '2414021.8045', 1); + T('-1.3248', '-1.324', -1); + T('0.00000000000000000003281908871647629993048189', '0.0000000000000000000328190887164762999304818', 1); + T('8190932122089709410211260.1941', '8190932122089709410211260.194', 1); + T('18558359008664.901', '18558359008664.90', 1); + T('-1.836260852084759052811977', '-1.83626085208475905281197', -1); + T('52848.0661641241616642195', '52848.066164124161664219', 1); + T('1.795', '1.79', 1); + T('3563.84130546918276031', '3563.8413054691827603', 1); + T('33450019.5', '2459854832688517296246058802', -1); + T('5536285180182881.87923167404513', '5536285180182881.8792316740451', 1); + T('0', '0.000000000000000043296465733471525299', -1); + T('70086.68252172', '70086.6825217', 1); + T('292760.4240', '292760.424', 0); + T('2028140262335.9131026003356', '2028140262335.913102600335', 1); + T('0.0000000000087', '0.000000000008', 1); + T('4', '-3470098.6074792982', 1); + T('13358558600177683796925578', '1335855860017768379692557', 1); + T('-83.8', '21363730.46561184451', -1); + T('365324.84504266484131556038', '365324.8450426648413155603', 1); + T('-3185507140.95393405534321', '-3185507140.9539340553432', -1); + T('-0.0000000000000065472358345', '-0.000000000000006547235834', -1); + T('-1.1306', '-1.130', -1); + T('0.0000000000000000012657157731644007947139831', '0.000000000000000001265715773164400794713983', 1); + T('-4595761438.2546337711', '-4595761438.254633771', -1); + T('8.102560', '8.10256', 0); + T('-4732877234851.04517', '-4732877234851.0451', -1); + T('22849746934084811', '2284974693408481', 1); + T('-21570598205187056339788.8827687', '-21570598205187056339788.882768', -1); + T('-0.00411486610', '-0.0041148661', 0); + T('0.0000000017473355067071', '0.000000001747335506707', 1); + T('1672207932406612', '167220793240661', 1); + T('-2170952508398772659.3116947863', '-2170952508398772659.311694786', -1); + T('104296691.3651', '104296691.365', 1); + T('6413348457044198.6357', '6413348457044198.635', 1); + T('867588124512790019695847208.17', '867588124512790019695847208.1', 1); + T('0.000000000000000006377653', '0.00000000000000000637765', 1); + T('0.0000000000000005421562844800408', '0.000000000000000542156284480040', 1); + T('0.0000000000001734898208084', '0.000000000000173489820808', 1); + T('719191761181325213', '71919176118132521', 1); + T('0.02250426125915164019127', '0.0225042612591516401912', 1); + T('0.000000000000015950471472766126156', '0.00000000000001595047147276612615', 1); + T('-8.165141564', '-8.16514156', -1); + T('0.000016048771130', '0.00001604877113', 0); + T('-2', '-88807525195548174559556063', 1); + T('58675.118464', '58675.11846', 1); + T('0.000000627412133283', '0.00000062741213328', 1); + T('-1292498491535.25344', '-1292498491535.2534', -1); + T('-820304961.0323010898698', '-820304961.032301089869', -1); + T('-0.000611', '-0.00061', -1); + T('-11144524535537715', '-1114452453553771', -1); + T('-55716774643252100979.5446623', '-55716774643252100979.544662', -1); + T('-0.000044176893810056', '-0.00004417689381005', -1); + T('292752046.323027', '292752046.32302', 1); + T('7380730', '738073', 1); + T('86355898012532849.7700967309940', '86355898012532849.770096730994', 0); + T('0.00000004315310515126045613636', '0.0000000431531051512604561363', 1); + T('0.00000000000000000001737', '0.0000000000000000000173', 1); + T('813314317.05965', '813314317.0596', 1); + T('0.0000000000288347370619778500827429666573', '0.000000000028834737061977850082742966657', 1); + T('1.227', '1.22', 1); + T('-1.2630735', '-1.263073', -1); + T('91944402440.06945779449085371', '91944402440.0694577944908537', 1); + T('-4449792517039894', '-444979251703989', -1); + T('9', '-2448498702.514138316389405792', 1); + T('15', '-230.83', 1); + T('31.144613239645410083514841201', '31.14461323964541008351484120', 1); + T('-19284', '-1928', -1); + T('0', '5426339861896942660314675307', -1); + T('1129076194', '112907619', 1); + T('1044840688537574338326', '104484068853757433832', 1); + T('0.00000000000000043539078118147011', '0.0000000000000004353907811814701', 1); + T('-5', '4', -1); + T('-1377061.5292411334', '-1377061.529241133', -1); + T('-4.0', '332202357', -1); + T('-0.00000000000000000227', '-0.0000000000000000022', -1); + T('1826995888603.5824430107', '1826995888603.582443010', 1); + T('10390673669.135717884263351', '10390673669.13571788426335', 1); + T('10', '-735770.95921507778597', 1); + T('104.5944497667', '104.594449766', 1); + T('75938579086.43324', '75938579086.4332', 1); + T('133431773944', '13343177394', 1); + T('-0.029773', '-0.02977', -1); + T('-2.3', '0.000000000000004812124955862392552', -1); + T('-0.000000000000000440816280', '-0.00000000000000044081628', 0); + T('18420.11634', '18420.1163', 1); + T('-9284054922651501226860235.867', '-9284054922651501226860235.86', -1); + T('12396946801121416014189.43309695', '12396946801121416014189.4330969', 1); + T('0.007718643213656733483266', '0.00771864321365673348326', 1); + T('-0.000000037595591491984459', '-0.00000003759559149198445', -1); + T('-715072321926440135536.7648', '-715072321926440135536.764', -1); + T('103992420.52458', '103992420.5245', 1); + T('0.000000991070083580408202601308047', '0.00000099107008358040820260130804', 1); + T('1.86853500870534570128', '1.8685350087053457012', 1); + T('58616551.73241771152', '58616551.7324177115', 1); + T('-1.6', '18525081582051265136724.3660', -1); + T('1993238064975', '199323806497', 1); + T('-1784581450011.6549586151626', '-1784581450011.654958615162', -1); + T('-4555209568014421116848941.3959', '-4555209568014421116848941.395', -1); + T('-7048913007.5566', '-7048913007.556', -1); + T('-0.000000000871843054424826674157106', '-0.00000000087184305442482667415710', -1); + T('-14840053.072', '-14840053.07', -1); + T('-501405456751853073076', '-50140545675185307307', -1); + T('-199545.60412498', '-199545.6041249', -1); + T('0.00000009216303215937061205', '0.0000000921630321593706120', 1); + T('4.71041834808516', '4.7104183480851', 1); + T('361.419249298421346667', '361.41924929842134666', 1); + T('409136581.554547189131', '409136581.55454718913', 1); + T('55122849429299788341942', '5512284942929978834194', 1); + T('13003440939757220210.6', '-131681614', 1); + T('-1609638422403038.78', '-1609638422403038.7', -1); + T('28363.187944820474154448061814', '-28363.187944820474154448061814', 1); + T('-2916651.5496', '311663.7', -1); + T('-0.000000000000028', '-1.0051639273', 1); + T('-15087.357', '-1.94820806', -1); + T('-0.00000000000000003599985370238339034191676', '175367726221406968.13920', -1); + T('313569.577740085324', '-313569.577740085324', 1); + T('4.14321707846', '-4.14321707846', 1); + T('2.025069', '-2.025069', 1); + T('-204173696764981798', '-348359047110101', -1); + T('-12752947190480205615461', '15.198090402942077', -1); + T('-74.2', '4628073528657420.923843246681', -1); + T('719.1719040512', '-719.1719040512', 1); + T('393.313192', '-393.313192', 1); + T('-494455879492.541426667665550', '-13002235405592907201044204', 1); + T('0', '0', 0); + T('-233021.97', '-7.4', -1); + T('-240459748', '0.000000006517712156', -1); + T('81179.0', '-81179.0', 1); + T('-0.0000192016725715', '-1.21890405451046803716074614', 1); + T('-178252184222.7107', '-35038911.288687', -1); + T('36405716.36527673752', '-36405716.36527673752', 1); + T('-8.776', '7.7701605830015406834539038', -1); + T('6.1', '-6.1', 1); + T('4820089993.340', '-4820089993.340', 1); + T('-131045153934', '-141414703667118909', 1); + T('-0.000000000000001331938110449733777894', '-308053367.910427914340992681501', 1); + T('-0.004193089770215420540599206921', '-30.0', 1); + T('1694294619094634.85763668135', '-1694294619094634.85763668135', 1); + T('40.541819234520934594813', '-40.541819234520934594813', 1); + T('-0.10021507', '-2049541544645617700923988306', 1); + T('6609143733354158875894', '-6609143733354158875894', 1); + + log('\n ' + passed + ' of ' + total + ' tests passed in ' + (+new Date() - start) + ' ms \n'); + return [passed, total];; +})(this.BigNumber); +if (typeof module !== 'undefined' && module.exports) module.exports = count; \ No newline at end of file diff --git a/node_modules/mysql/node_modules/bignumber.js/test/config.js b/node_modules/mysql/node_modules/bignumber.js/test/config.js new file mode 100644 index 0000000..390d92e --- /dev/null +++ b/node_modules/mysql/node_modules/bignumber.js/test/config.js @@ -0,0 +1,557 @@ +var count = (function config(BigNumber) { + var start = +new Date(), + log, + error, + obj, + undefined, + passed = 0, + total = 0; + + if (typeof window === 'undefined') { + log = console.log; + error = console.error; + } else { + log = function (str) { document.body.innerHTML += str.replace('\n', '
      ') }; + error = function (str) { document.body.innerHTML += '
      ' + + str.replace('\n', '
      ') + '
      ' }; + } + + if (!BigNumber && typeof require === 'function') BigNumber = require('../bignumber'); + + function assert(expected, actual) { + total++; + if (expected !== actual) { + error('\n Test number: ' + total + ' failed'); + error(' Expected: ' + expected); + error(' Actual: ' + actual); + //process.exit(); + } + else { + passed++; + //log('\n Expected and actual: ' + actual); + } + } + + function assertException(func, message) { + var actual; + total++; + try { + func(); + } catch (e) { + actual = e; + } + if (actual && actual.name == 'BigNumber Error') { + passed++; + //log('\n Expected and actual: ' + actual); + } else { + error('\n Test number: ' + total + ' failed'); + error('\n Expected: ' + message + ' to raise a BigNumber Error.'); + error(' Actual: ' + (actual || 'no exception')); + //process.exit(); + } + } + + log('\n Testing config...'); + + obj = BigNumber.config({ + DECIMAL_PLACES : 100, + ROUNDING_MODE : 0, + EXPONENTIAL_AT : 50, + RANGE : 500, + ERRORS : false + }); + + assert(true, obj.DECIMAL_PLACES === 100 && + obj.ROUNDING_MODE === 0 && + obj.EXPONENTIAL_AT[0] === -50 && + obj.EXPONENTIAL_AT[1] === 50 && + obj.RANGE[0] === -500 && + obj.RANGE[1] === 500 && + obj.ERRORS === false + ); + + obj = BigNumber.config( 99, 8, 32, 333, 1 ); + + assert(true, obj.DECIMAL_PLACES === 99 && + obj.ROUNDING_MODE === 8 && + obj.EXPONENTIAL_AT[0] === -32 && + obj.EXPONENTIAL_AT[1] === 32 && + obj.RANGE[0] === -333 && + obj.RANGE[1] === 333 && + obj.ERRORS === true + ); + + obj = BigNumber.config({ + DECIMAL_PLACES : 40, + ROUNDING_MODE : 4, + EXPONENTIAL_AT : 1E9, + RANGE : 1E9, + ERRORS : true + }); + + obj = BigNumber.config( null, null, null, null, null ); + obj = BigNumber.config( undefined, undefined, undefined, undefined, undefined ); + + assert(true, typeof obj === 'object'); + assert(true, obj.DECIMAL_PLACES === 40); + assert(true, obj.ROUNDING_MODE === 4); + assert(true, typeof obj.EXPONENTIAL_AT === 'object'); + assert(true, obj.EXPONENTIAL_AT.length === 2); + assert(true, obj.EXPONENTIAL_AT[0] === -1e9); + assert(true, obj.EXPONENTIAL_AT[1] === 1e9); + assert(true, typeof obj.RANGE === 'object'); + assert(true, obj.RANGE.length === 2); + assert(true, obj.RANGE[0] === -1e9); + assert(true, obj.RANGE[1] === 1e9); + assert(true, obj.ERRORS === true); + + obj = BigNumber.config({EXPONENTIAL_AT : [-7, 21], RANGE : [-324, 308]}); + + // DECIMAL_PLACES + + assert(0, BigNumber.config(0).DECIMAL_PLACES); + assert(1, BigNumber.config(1).DECIMAL_PLACES); + assert(20, BigNumber.config(20).DECIMAL_PLACES); + assert(300000, BigNumber.config(300000).DECIMAL_PLACES); + assert(4e+8, BigNumber.config(4e8).DECIMAL_PLACES); + assert(123456789, BigNumber.config('123456789').DECIMAL_PLACES); + assert(1e9, BigNumber.config(1e9).DECIMAL_PLACES); + + assert(0, BigNumber.config({DECIMAL_PLACES : 0}).DECIMAL_PLACES); + assert(1, BigNumber.config({DECIMAL_PLACES : 1}).DECIMAL_PLACES); + assert(20, BigNumber.config({DECIMAL_PLACES : 20}).DECIMAL_PLACES); + assert(300000, BigNumber.config({DECIMAL_PLACES : 300000}).DECIMAL_PLACES); + assert(4e+8, BigNumber.config({DECIMAL_PLACES : 4e8}).DECIMAL_PLACES); + assert(123456789, BigNumber.config({DECIMAL_PLACES : '123456789'}).DECIMAL_PLACES); + assert(1e9, BigNumber.config({DECIMAL_PLACES : 1e9}).DECIMAL_PLACES); + + assert(1e9, BigNumber.config(null).DECIMAL_PLACES); + assert(1e9, BigNumber.config(undefined).DECIMAL_PLACES); + assert(1e9, BigNumber.config({DECIMAL_PLACES : null}).DECIMAL_PLACES); + assert(1e9, BigNumber.config({DECIMAL_PLACES : undefined}).DECIMAL_PLACES); + + assertException(function () {BigNumber.config({DECIMAL_PLACES : -1})}, "DECIMAL_PLACES : -1"); + assertException(function () {BigNumber.config({DECIMAL_PLACES : 0.1})}, "DECIMAL_PLACES : 0.1"); + assertException(function () {BigNumber.config({DECIMAL_PLACES : 1.1})}, "DECIMAL_PLACES : 1.1"); + assertException(function () {BigNumber.config({DECIMAL_PLACES : -1.1})}, "DECIMAL_PLACES : -1.1"); + assertException(function () {BigNumber.config({DECIMAL_PLACES : 8.1})}, "DECIMAL_PLACES : 8.1"); + assertException(function () {BigNumber.config({DECIMAL_PLACES : 1e+9 + 1})}, "DECIMAL_PLACES : 1e9 + 1"); + assertException(function () {BigNumber.config({DECIMAL_PLACES : []})}, "DECIMAL_PLACES : []"); + assertException(function () {BigNumber.config({DECIMAL_PLACES : {}})}, "DECIMAL_PLACES : {}"); + assertException(function () {BigNumber.config({DECIMAL_PLACES : ''})}, "DECIMAL_PLACES : ''"); + assertException(function () {BigNumber.config({DECIMAL_PLACES : ' '})}, "DECIMAL_PLACES : ' '"); + assertException(function () {BigNumber.config({DECIMAL_PLACES : 'hi'})}, "DECIMAL_PLACES : 'hi'"); + assertException(function () {BigNumber.config({DECIMAL_PLACES : '1e+9'})}, "DECIMAL_PLACES : '1e+9'"); + assertException(function () {BigNumber.config({DECIMAL_PLACES : NaN})}, "DECIMAL_PLACES : NaN"); + assertException(function () {BigNumber.config({DECIMAL_PLACES : Infinity})}, "DECIMAL_PLACES : Infinity"); + + BigNumber.config({ ERRORS : false }); + + assert(1e9, BigNumber.config(-1).DECIMAL_PLACES); + assert(0, BigNumber.config(0.1).DECIMAL_PLACES); + assert(1, BigNumber.config(1.99).DECIMAL_PLACES); + assert(1, BigNumber.config(-1.1).DECIMAL_PLACES); + assert(8, BigNumber.config(8.7654321).DECIMAL_PLACES); + assert(8, BigNumber.config(1e9 + 1).DECIMAL_PLACES); + assert(8, BigNumber.config([]).DECIMAL_PLACES); + assert(8, BigNumber.config({}).DECIMAL_PLACES); + assert(8, BigNumber.config('').DECIMAL_PLACES); + assert(8, BigNumber.config(' ').DECIMAL_PLACES); + assert(8, BigNumber.config('hi').DECIMAL_PLACES); + assert(1e9, BigNumber.config('1e+9').DECIMAL_PLACES); + assert(1e9, BigNumber.config(NaN).DECIMAL_PLACES); + assert(1e9, BigNumber.config(Infinity).DECIMAL_PLACES); + assert(1e9, BigNumber.config(new Date).DECIMAL_PLACES); + assert(1e9, BigNumber.config(null).DECIMAL_PLACES); + assert(1e9, BigNumber.config(undefined).DECIMAL_PLACES); + + BigNumber.config({ ERRORS : 1 }); + + // ROUNDING_MODE + + assert(0, BigNumber.config(null, 0).ROUNDING_MODE); + assert(1, BigNumber.config(null, 1).ROUNDING_MODE); + assert(2, BigNumber.config(null, 2).ROUNDING_MODE); + assert(3, BigNumber.config(null, 3).ROUNDING_MODE); + assert(4, BigNumber.config(null, 4).ROUNDING_MODE); + assert(5, BigNumber.config(null, 5).ROUNDING_MODE); + assert(6, BigNumber.config(null, 6).ROUNDING_MODE); + assert(7, BigNumber.config(null, 7).ROUNDING_MODE); + assert(8, BigNumber.config(null, 8).ROUNDING_MODE); + + assert(0, BigNumber.config({ROUNDING_MODE : 0}).ROUNDING_MODE); + assert(1, BigNumber.config({ROUNDING_MODE : 1}).ROUNDING_MODE); + assert(2, BigNumber.config({ROUNDING_MODE : 2}).ROUNDING_MODE); + assert(3, BigNumber.config({ROUNDING_MODE : 3}).ROUNDING_MODE); + assert(4, BigNumber.config({ROUNDING_MODE : 4}).ROUNDING_MODE); + assert(5, BigNumber.config({ROUNDING_MODE : 5}).ROUNDING_MODE); + assert(6, BigNumber.config({ROUNDING_MODE : 6}).ROUNDING_MODE); + assert(7, BigNumber.config({ROUNDING_MODE : 7}).ROUNDING_MODE); + assert(8, BigNumber.config({ROUNDING_MODE : 8}).ROUNDING_MODE); + + assert(8, BigNumber.config(null, null).ROUNDING_MODE); + assert(8, BigNumber.config(null, undefined).ROUNDING_MODE); + assert(8, BigNumber.config({ROUNDING_MODE : null}).ROUNDING_MODE); + assert(8, BigNumber.config({ROUNDING_MODE : undefined}).ROUNDING_MODE); + + assertException(function () {BigNumber.config({ROUNDING_MODE : -1})}, "ROUNDING_MODE : -1"); + assertException(function () {BigNumber.config({ROUNDING_MODE : 0.1})}, "ROUNDING_MODE : 0.1"); + assertException(function () {BigNumber.config({ROUNDING_MODE : 1.1})}, "ROUNDING_MODE : 1.1"); + assertException(function () {BigNumber.config({ROUNDING_MODE : -1.1})}, "ROUNDING_MODE : -1.1"); + assertException(function () {BigNumber.config({ROUNDING_MODE : 8.1})}, "ROUNDING_MODE : 8.1"); + assertException(function () {BigNumber.config({ROUNDING_MODE : 9})}, "ROUNDING_MODE : 9"); + assertException(function () {BigNumber.config({ROUNDING_MODE : 11})}, "ROUNDING_MODE : 11"); + assertException(function () {BigNumber.config({ROUNDING_MODE : []})}, "ROUNDING_MODE : []"); + assertException(function () {BigNumber.config({ROUNDING_MODE : {}})}, "ROUNDING_MODE : {}"); + assertException(function () {BigNumber.config({ROUNDING_MODE : ''})}, "ROUNDING_MODE : ''"); + assertException(function () {BigNumber.config({ROUNDING_MODE : ' '})}, "ROUNDING_MODE : ' '"); + assertException(function () {BigNumber.config({ROUNDING_MODE : 'hi'})}, "ROUNDING_MODE : 'hi'"); + assertException(function () {BigNumber.config({ROUNDING_MODE : NaN})}, "ROUNDING_MODE : NaN"); + assertException(function () {BigNumber.config({ROUNDING_MODE : Infinity})}, "ROUNDING_MODE : Infinity"); + + BigNumber.config({ ERRORS : 0 }); + + assert(8, BigNumber.config(0, -1).ROUNDING_MODE); + assert(0, BigNumber.config(0, 0.1).ROUNDING_MODE); + assert(1, BigNumber.config(0, 1.99).ROUNDING_MODE); + assert(1, BigNumber.config(0, -1.1).ROUNDING_MODE); + assert(1, BigNumber.config(0, 8.01).ROUNDING_MODE); + assert(7, BigNumber.config(0, 7.99).ROUNDING_MODE); + assert(7, BigNumber.config(0, 1e9 + 1).ROUNDING_MODE); + assert(7, BigNumber.config(0, []).ROUNDING_MODE); + assert(7, BigNumber.config(0, {}).ROUNDING_MODE); + assert(7, BigNumber.config(0, '').ROUNDING_MODE); + assert(7, BigNumber.config(0, ' ').ROUNDING_MODE); + assert(7, BigNumber.config(0, 'hi').ROUNDING_MODE); + assert(1, BigNumber.config(0, '1e+0').ROUNDING_MODE); + assert(1, BigNumber.config(0, NaN).ROUNDING_MODE); + assert(1, BigNumber.config(0, Infinity).ROUNDING_MODE); + assert(1, BigNumber.config(0, new Date).ROUNDING_MODE); + assert(1, BigNumber.config(0, null).ROUNDING_MODE); + assert(1, BigNumber.config(0, undefined).ROUNDING_MODE); + + BigNumber.config({ ERRORS : true }); + + // EXPONENTIAL_AT + + assert(true, obj.EXPONENTIAL_AT[0] === -7); + assert(true, obj.EXPONENTIAL_AT[1] === 21); + + assertException(function () {BigNumber.config({EXPONENTIAL_AT : [0.1, 1]})}, "EXPONENTIAL_AT : [0.1, 1]"); + assertException(function () {BigNumber.config({EXPONENTIAL_AT : [-1, -0.1]})}, "EXPONENTIAL_AT : [-1, -0.1]"); + assertException(function () {BigNumber.config({EXPONENTIAL_AT : [1, 1]})}, "EXPONENTIAL_AT : [1, 1]"); + assertException(function () {BigNumber.config({EXPONENTIAL_AT : [-1, -1]})}, "EXPONENTIAL_AT : [-1, -1]"); + assertException(function () {BigNumber.config({EXPONENTIAL_AT : 1e9 + 1})}, "EXPONENTIAL_AT : 1e9 + 1"); + assertException(function () {BigNumber.config({EXPONENTIAL_AT : -1e9 - 1})}, "EXPONENTIAL_AT : -1e9 - 1"); + assertException(function () {BigNumber.config({EXPONENTIAL_AT : [-1e9 - 1, 1e9]})}, "EXPONENTIAL_AT : [-1e9 - 1, 1e9]"); + assertException(function () {BigNumber.config({EXPONENTIAL_AT : [-1e9, 1e9 + 1]})}, "EXPONENTIAL_AT : [-1e9, 1e9 + 1]"); + assertException(function () {BigNumber.config({EXPONENTIAL_AT : [1e9 + 1, -1e9 - 1]})}, "EXPONENTIAL_AT : [1e9 + 1, -1e9 - 1]"); + assertException(function () {BigNumber.config({EXPONENTIAL_AT : [-Infinity, Infinity]})}, "EXPONENTIAL_AT : [Infinity, -Infinity]"); + assertException(function () {BigNumber.config({EXPONENTIAL_AT : [Infinity, -Infinity]})}, "EXPONENTIAL_AT : [Infinity, -Infinity]"); + + obj = BigNumber.config(); + + assert(true, obj.EXPONENTIAL_AT[0] === -7); + assert(true, obj.EXPONENTIAL_AT[1] === 21); + + assert(1, BigNumber.config({EXPONENTIAL_AT : 1}).EXPONENTIAL_AT[1]); + assert(-1, BigNumber.config({EXPONENTIAL_AT : 1}).EXPONENTIAL_AT[0]); + + obj = BigNumber.config({EXPONENTIAL_AT : 0}); + assert(true, obj.EXPONENTIAL_AT[0] === 0 && obj.EXPONENTIAL_AT[1] === 0); + + obj = BigNumber.config({EXPONENTIAL_AT : -1}); + assert(true, obj.EXPONENTIAL_AT[0] === -1 && obj.EXPONENTIAL_AT[1] === 1); + + BigNumber.config({ ERRORS : false }); + + assert(1, BigNumber.config(0, 0, -1).EXPONENTIAL_AT[1]); + assert(0, BigNumber.config(0, 0, 0.1).EXPONENTIAL_AT[0]); + assert(1, BigNumber.config(0, 0, 1.99).EXPONENTIAL_AT[1]); + assert(-2, BigNumber.config(0, 0, -2.1).EXPONENTIAL_AT[0]); + assert(8, BigNumber.config(0, 0, 8.01).EXPONENTIAL_AT[1]); + assert(-7, BigNumber.config(0, 0, -7.99).EXPONENTIAL_AT[0]); + assert(7, BigNumber.config(0, 0, 1e9 + 1).EXPONENTIAL_AT[1]); + assert(7, BigNumber.config(0, 0, -1e9 - 1).EXPONENTIAL_AT[1]); + assert(-7, BigNumber.config(0, 0, []).EXPONENTIAL_AT[0]); + assert(7, BigNumber.config(0, 0, {}).EXPONENTIAL_AT[1]); + assert(-7, BigNumber.config(0, 0, '').EXPONENTIAL_AT[0]); + assert(7, BigNumber.config(0, 0, ' ').EXPONENTIAL_AT[1]); + assert(-7, BigNumber.config(0, 0, 'hi').EXPONENTIAL_AT[0]); + assert(13000, BigNumber.config(0, 0, '1.3e+4').EXPONENTIAL_AT[1]); + assert(-13000, BigNumber.config(0, 0, NaN).EXPONENTIAL_AT[0]); + assert(13000, BigNumber.config(0, 0, Infinity).EXPONENTIAL_AT[1]); + assert(-13000, BigNumber.config(0, 0, new Date).EXPONENTIAL_AT[0]); + assert(13000, BigNumber.config(0, 0, null).EXPONENTIAL_AT[1]); + assert(-13000, BigNumber.config(0, 0, undefined).EXPONENTIAL_AT[0]); + assert(-98765, BigNumber.config(0, 0, 98765.4321).EXPONENTIAL_AT[0]); + assert(98765, BigNumber.config(0, 0, -98765.4321).EXPONENTIAL_AT[1]); + assert(1, BigNumber.config(0, 0, [-98765.4321, 1]).EXPONENTIAL_AT[1]); + assert(-1, BigNumber.config(0, 0, [-1, 98765.4321]).EXPONENTIAL_AT[0]); + assert(98765, BigNumber.config(0, 0, [-1, 98765.4321]).EXPONENTIAL_AT[1]); + assert(98765, BigNumber.config(0, 0, [-1, null]).EXPONENTIAL_AT[1]); + assert(98765, BigNumber.config(0, 0, [null, 98765.4321]).EXPONENTIAL_AT[1]); + assert(-1, BigNumber.config(0, 0, [null, 98765.4321]).EXPONENTIAL_AT[0]); + + BigNumber.config({ ERRORS : true }); + + // RANGE + + assert(true, obj.RANGE[0] === -324); + assert(true, obj.RANGE[1] === 308); + + assertException(function () {BigNumber.config({RANGE : [-0.9, 1]})}, "RANGE : [-0.9, 1]"); + assertException(function () {BigNumber.config({RANGE : [-1, 0.9]})}, "RANGE : [-1, 0.9]"); + assertException(function () {BigNumber.config({RANGE : [0, 1]})}, "RANGE : [0, 1]"); + assertException(function () {BigNumber.config({RANGE : [-1, 0]})}, "RANGE : [-1, 0]"); + assertException(function () {BigNumber.config({RANGE : 0})}, "RANGE : 0"); + assertException(function () {BigNumber.config({RANGE : 1e9 + 1})}, "RANGE : 1e9 + 1"); + assertException(function () {BigNumber.config({RANGE : -1e9 - 1})}, "RANGE : -1e9 - 1"); + assertException(function () {BigNumber.config({RANGE : [-1e9 - 1, 1e9 + 1]})}, "RANGE : [-1e9 - 1, 1e9 + 1]"); + assertException(function () {BigNumber.config({RANGE : [1e9 + 1, -1e9 - 1]})}, "RANGE : [1e9 + 1, -1e9 - 1]"); + assertException(function () {BigNumber.config({RANGE : Infinity})}, "RANGE : Infinity"); + assertException(function () {BigNumber.config({RANGE : "-Infinity"})}, "RANGE : '-Infinity'"); + assertException(function () {BigNumber.config({RANGE : [-Infinity, Infinity]})}, "RANGE : [-Infinity, Infinity]"); + assertException(function () {BigNumber.config({RANGE : [Infinity, -Infinity]})}, "RANGE : [Infinity, -Infinity]"); + + obj = BigNumber.config(); + + assert(true, obj.RANGE[0] === -324); + assert(true, obj.RANGE[1] === 308); + + assert(1, BigNumber.config({RANGE : 1}).RANGE[1]); + assert(-1, BigNumber.config({RANGE : 1}).RANGE[0]); + + obj = BigNumber.config({RANGE : 1}); + assert(true, obj.RANGE[0] === -1 && obj.RANGE[1] === 1); + + obj = BigNumber.config({RANGE : -1}); + assert(true, obj.RANGE[0] === -1 && obj.RANGE[1] === 1); + + BigNumber.config({ ERRORS : 0 }); + + assert(1, BigNumber.config(0, 0, 0, -1).RANGE[1]); + assert(-1, BigNumber.config(0, 0, 0, 0.1).RANGE[0]); + assert(1, BigNumber.config(0, 0, 0, 1.99).RANGE[1]); + assert(-2, BigNumber.config(0, 0, 0, -2.1).RANGE[0]); + assert(8, BigNumber.config(0, 0, 0, 8.01).RANGE[1]); + assert(-7, BigNumber.config(0, 0, 0, -7.99).RANGE[0]); + assert(7, BigNumber.config(0, 0, 0, 1e9 + 1).RANGE[1]); + assert(7, BigNumber.config(0, 0, 0, -1e9 - 1).RANGE[1]); + assert(-7, BigNumber.config(0, 0, 0, []).RANGE[0]); + assert(7, BigNumber.config(0, 0, 0, {}).RANGE[1]); + assert(-7, BigNumber.config(0, 0, 0, '').RANGE[0]); + assert(7, BigNumber.config(0, 0, 0, ' ').RANGE[1]); + assert(-7, BigNumber.config(0, 0, 0, 'hi').RANGE[0]); + assert(13000, BigNumber.config(0, 0, 0, '1.3e+4').RANGE[1]); + assert(-13000, BigNumber.config(0, 0, 0, NaN).RANGE[0]); + assert(13000, BigNumber.config(0, 0, 0, Infinity).RANGE[1]); + assert(-13000, BigNumber.config(0, 0, 0, new Date).RANGE[0]); + assert(13000, BigNumber.config(0, 0, 0, null).RANGE[1]); + assert(-13000, BigNumber.config(0, 0, 0, undefined).RANGE[0]); + assert(-98765, BigNumber.config(0, 0, 0, 98765.4321).RANGE[0]); + assert(98765, BigNumber.config(0, 0, 0, -98765.4321).RANGE[1]); + assert(1, BigNumber.config(0, 0, 0, [-98765.4321, 1]).RANGE[1]); + assert(-1, BigNumber.config(0, 0, 0, [-1, 98765.4321]).RANGE[0]); + assert(98765, BigNumber.config(0, 0, 0, [-1, 98765.4321]).RANGE[1]); + assert(98765, BigNumber.config(0, 0, 0, [-1, null]).RANGE[1]); + assert(98765, BigNumber.config(0, 0, 0, [null, 98765.4321]).RANGE[1]); + assert(-1, BigNumber.config(0, 0, 0, [null, 98765.4321]).RANGE[0]); + + BigNumber.config({ ERRORS : true }); + + // ERRORS + + assert(false, BigNumber.config(null, null, null, null, 0).ERRORS); + assert(true, BigNumber.config(null, null, null, null, 1).ERRORS); + assert(false, BigNumber.config(null, null, null, null, false).ERRORS); + assert(true, BigNumber.config(null, null, null, null, true).ERRORS); + + assert(false, BigNumber.config({ERRORS : 0}).ERRORS); + assert(true, BigNumber.config({ERRORS : 1}).ERRORS); + assert(false, BigNumber.config({ERRORS : false}).ERRORS); + assert(true, BigNumber.config({ERRORS : true}).ERRORS); + + assert(true, BigNumber.config(null, null, null, null, null).ERRORS); + assert(true, BigNumber.config(null, null, null, null, undefined).ERRORS); + assert(true, BigNumber.config({ERRORS : null}).ERRORS); + assert(true, BigNumber.config({ERRORS : undefined}).ERRORS); + + assertException(function () {BigNumber.config({ERRORS : 'hiya'})}, "ERRORS : 'hiya'"); + assertException(function () {BigNumber.config({ERRORS : 'true'})}, "ERRORS : 'true'"); + assertException(function () {BigNumber.config({ERRORS : 'false'})}, "ERRORS : 'false'"); + assertException(function () {BigNumber.config({ERRORS : '0'})}, "ERRORS : '0'"); + assertException(function () {BigNumber.config({ERRORS : '1'})}, "ERRORS : '1'"); + assertException(function () {BigNumber.config({ERRORS : -1})}, "ERRORS : -1"); + assertException(function () {BigNumber.config({ERRORS : 0.1})}, "ERRORS : 0.1"); + assertException(function () {BigNumber.config({ERRORS : 1.1})}, "ERRORS : 1.1"); + assertException(function () {BigNumber.config({ERRORS : []})}, "ERRORS : []"); + assertException(function () {BigNumber.config({ERRORS : {}})}, "ERRORS : {}"); + assertException(function () {BigNumber.config({ERRORS : ''})}, "ERRORS : ''"); + assertException(function () {BigNumber.config({ERRORS : ' '})}, "ERRORS : ' '"); + assertException(function () {BigNumber.config({ERRORS : NaN})}, "ERRORS : NaN"); + assertException(function () {BigNumber.config({ERRORS : Infinity})}, "ERRORS : Infinity"); + + assert(true, BigNumber.config().ERRORS); + + BigNumber.config({ ERRORS : false }); + + assert(false, BigNumber.config(null, null, null, null, 0).ERRORS); + assert(false, BigNumber.config(null, null, null, null, 1.1).ERRORS); + assert(false, BigNumber.config(null, null, null, null, false).ERRORS); + assert(true, BigNumber.config(null, null, null, null, 1).ERRORS); + assert(false, BigNumber.config(null, null, null, null, 0).ERRORS); + assert(false, BigNumber.config(null, null, null, null, '1').ERRORS); + assert(false, BigNumber.config(null, null, null, null, 'true').ERRORS); + assert(false, BigNumber.config(null, null, null, null, false).ERRORS); + assert(false, BigNumber.config({ERRORS : null}).ERRORS); + assert(false, BigNumber.config({ERRORS : undefined}).ERRORS); + assert(false, BigNumber.config({ERRORS : NaN}).ERRORS); + assert(false, BigNumber.config({ERRORS : 'd'}).ERRORS); + assert(false, BigNumber.config({ERRORS : []}).ERRORS); + assert(false, BigNumber.config({ERRORS : {}}).ERRORS); + assert(false, BigNumber.config({ERRORS : new Date}).ERRORS); + assert(true, BigNumber.config({ERRORS : Boolean(1)}).ERRORS); + assert(true, BigNumber.config({ERRORS : Boolean(true)}).ERRORS); + assert(false, BigNumber.config({ERRORS : Boolean(0)}).ERRORS); + assert(false, BigNumber.config({ERRORS : Boolean(false)}).ERRORS); + assert(true, BigNumber.config({ERRORS : Boolean('false')}).ERRORS); + + // Test constructor parsing. + + BigNumber.config({ + DECIMAL_PLACES : 40, + ROUNDING_MODE : 4, + EXPONENTIAL_AT : 1E9, + RANGE : 1E9, + ERRORS : true + }); + + assert('NaN', new BigNumber(NaN).toS()); + assert('NaN', new BigNumber('NaN').toS()); + assert('NaN', new BigNumber(' NaN').toS()); + assert('NaN', new BigNumber('NaN ').toS()); + assert('NaN', new BigNumber(' NaN ').toS()); + assert('NaN', new BigNumber('+NaN').toS()); + assert('NaN', new BigNumber(' +NaN').toS()); + assert('NaN', new BigNumber('+NaN ').toS()); + assert('NaN', new BigNumber(' +NaN ').toS()); + assert('NaN', new BigNumber('-NaN').toS()); + assert('NaN', new BigNumber(' -NaN').toS()); + assert('NaN', new BigNumber('-NaN ').toS()); + assert('NaN', new BigNumber(' -NaN ').toS()); + + assertException(function () {new BigNumber('+ NaN')}, "+ NaN"); + assertException(function () {new BigNumber('- NaN')}, "- NaN"); + assertException(function () {new BigNumber(' + NaN')}, " + NaN"); + assertException(function () {new BigNumber(' - NaN')}, " - NaN"); + assertException(function () {new BigNumber('. NaN')}, ". NaN"); + assertException(function () {new BigNumber('.-NaN')}, ".-NaN"); + assertException(function () {new BigNumber('.+NaN')}, ".+NaN"); + assertException(function () {new BigNumber('-.NaN')}, "-.NaN"); + assertException(function () {new BigNumber('+.NaN')}, "+.NaN"); + + assert('Infinity', new BigNumber(Infinity).toS()); + assert('Infinity', new BigNumber('Infinity').toS()); + assert('Infinity', new BigNumber(' Infinity').toS()); + assert('Infinity', new BigNumber('Infinity ').toS()); + assert('Infinity', new BigNumber(' Infinity ').toS()); + assert('Infinity', new BigNumber('+Infinity').toS()); + assert('Infinity', new BigNumber(' +Infinity').toS()); + assert('Infinity', new BigNumber('+Infinity ').toS()); + assert('Infinity', new BigNumber(' +Infinity ').toS()); + assert('-Infinity', new BigNumber('-Infinity').toS()); + assert('-Infinity', new BigNumber(' -Infinity').toS()); + assert('-Infinity', new BigNumber('-Infinity ').toS()); + assert('-Infinity', new BigNumber(' -Infinity ').toS()); + + assertException(function () {new BigNumber('+ Infinity')}, "+ Infinity"); + assertException(function () {new BigNumber(' + Infinity')}, " + Infinity"); + assertException(function () {new BigNumber('- Infinity')}, "- Infinity"); + assertException(function () {new BigNumber(' - Infinity')}, " - Infinity"); + assertException(function () {new BigNumber('.Infinity')}, ".Infinity"); + assertException(function () {new BigNumber('. Infinity')}, ". Infinity"); + assertException(function () {new BigNumber('.-Infinity')}, ".-Infinity"); + assertException(function () {new BigNumber('.+Infinity')}, ".+Infinity"); + assertException(function () {new BigNumber('-.Infinity')}, "-.Infinity"); + assertException(function () {new BigNumber('+.Infinity')}, "+.Infinity"); + + assert('0', new BigNumber(0).toS()); + assert('0', new BigNumber(-0).toS()); + assert('0', new BigNumber('+0').toS()); + assert('0', new BigNumber('-0').toS()); + assert('0', new BigNumber(' +0').toS()); + assert('0', new BigNumber(' -0').toS()); + assert('0', new BigNumber(' +0 ').toS()); + assert('0', new BigNumber(' -0 ').toS()); + assert('0', new BigNumber('+.0').toS()); + assert('0', new BigNumber('-.0').toS()); + assert('0', new BigNumber(' +.0').toS()); + assert('0', new BigNumber(' -.0').toS()); + assert('0', new BigNumber(' +.0 ').toS()); + assert('0', new BigNumber(' -.0 ').toS()); + + assertException(function () {new BigNumber('+-0')}, "+-0"); + assertException(function () {new BigNumber('-+0')}, "-+0"); + assertException(function () {new BigNumber('--0')}, "--0"); + assertException(function () {new BigNumber('++0')}, "++0"); + assertException(function () {new BigNumber('.-0')}, ".-0"); + assertException(function () {new BigNumber('.+0')}, ".+0"); + assertException(function () {new BigNumber('. 0')}, ". 0"); + assertException(function () {new BigNumber('..0')}, "..0"); + assertException(function () {new BigNumber('+.-0')}, "+.-0"); + assertException(function () {new BigNumber('-.+0')}, "-.+0"); + assertException(function () {new BigNumber('+. 0')}, "+. 0"); + assertException(function () {new BigNumber('-. 0')}, "-. 0"); + + assert('2', new BigNumber('+2').toS()); + assert('-2', new BigNumber('-2').toS()); + assert('2', new BigNumber(' +2').toS()); + assert('-2', new BigNumber(' -2').toS()); + assert('2', new BigNumber(' +2 ').toS()); + assert('-2', new BigNumber(' -2 ').toS()); + assert('0.2', new BigNumber('+.2').toS()); + assert('-0.2', new BigNumber('-.2').toS()); + assert('0.2', new BigNumber(' +.2').toS()); + assert('-0.2', new BigNumber(' -.2').toS()); + assert('0.2', new BigNumber(' +.2 ').toS()); + assert('-0.2', new BigNumber(' -.2 ').toS()); + + assertException(function () {new BigNumber('+-2')}, "+-2"); + assertException(function () {new BigNumber('-+2')}, "-+2"); + assertException(function () {new BigNumber('--2')}, "--2"); + assertException(function () {new BigNumber('++2')}, "++2"); + assertException(function () {new BigNumber('.-2')}, ".-2"); + assertException(function () {new BigNumber('.+2')}, ".+2"); + assertException(function () {new BigNumber('. 2')}, ". 2"); + assertException(function () {new BigNumber('..2')}, "..2"); + assertException(function () {new BigNumber('+.-2')}, "+.-2"); + assertException(function () {new BigNumber('-.+2')}, "-.+2"); + assertException(function () {new BigNumber('+. 2')}, "+. 2"); + assertException(function () {new BigNumber('-. 2')}, "-. 2"); + + assertException(function () {new BigNumber('+2..')}, "+2.."); + assertException(function () {new BigNumber('-2..')}, "-2.."); + assertException(function () {new BigNumber('-.2.')}, "-.2."); + assertException(function () {new BigNumber('+.2.')}, "+.2."); + assertException(function () {new BigNumber('.-20.')}, ".-20."); + assertException(function () {new BigNumber('.+20.')}, ".+20."); + assertException(function () {new BigNumber('. 20.')}, ". 20."); + + assertException(function () {new BigNumber(undefined)}, "undefined"); + assertException(function () {new BigNumber([])}, "[]"); + assertException(function () {new BigNumber('')}, "''"); + assertException(function () {new BigNumber(null)}, "null"); + assertException(function () {new BigNumber(' ')}, "' '"); + assertException(function () {new BigNumber('nan')}, "nan"); + assertException(function () {new BigNumber('23er')}, "23er"); + assertException(function () {new BigNumber('e4')}, "e4"); + assertException(function () {new BigNumber('0x434')}, "0x434"); + assertException(function () {new BigNumber('--45')}, "--45"); + assertException(function () {new BigNumber('+-2')}, "+-2"); + assertException(function () {new BigNumber('0 0')}, "0 0"); + + log('\n ' + passed + ' of ' + total + ' tests passed in ' + (+new Date() - start) + ' ms \n'); + return [passed, total];; +})(this.BigNumber); +if (typeof module !== 'undefined' && module.exports) module.exports = count; \ No newline at end of file diff --git a/node_modules/mysql/node_modules/bignumber.js/test/div.js b/node_modules/mysql/node_modules/bignumber.js/test/div.js new file mode 100644 index 0000000..b41cd99 --- /dev/null +++ b/node_modules/mysql/node_modules/bignumber.js/test/div.js @@ -0,0 +1,19930 @@ +var count = (function div(BigNumber) { + var start = +new Date(), + log, + error, + undefined, + passed = 0, + total = 0, + n = 'null', + N = 'NaN', + I = 'Infinity'; + + if (typeof window === 'undefined') { + log = console.log; + error = console.error; + } else { + log = function (str) { document.body.innerHTML += str.replace('\n', '
      ') }; + error = function (str) { document.body.innerHTML += '
      ' + + str.replace('\n', '
      ') + '
      ' }; + } + + if (!BigNumber && typeof require === 'function') BigNumber = require('../bignumber'); + + function assert(expected, actual) { + total++; + if (expected !== actual) { + error('\n Test number: ' + total + ' failed'); + error(' Expected: ' + expected); + error(' Actual: ' + actual); + //process.exit(); + } + else { + passed++; + //log('\n Expected and actual: ' + actual); + } + } + + function T(dividend, divisor, expected) { + assert(String(expected), String(new BigNumber(dividend).div(divisor))); + //assert(String(expected), String(new BigNumber(dividend).div(new BigNumber(divisor)))); + } + + function isMinusZero(n) { + return n.toString() === '0' && n.s == -1; + } + + log('\n Testing div...'); + + BigNumber.config({ + DECIMAL_PLACES : 40, + ROUNDING_MODE : 4, + EXPONENTIAL_AT : [-7, 21], + RANGE : 1E9, + ERRORS : false + }); + + T(1, 0, I); + T(1, -0, -I); + T(-1, 0, -I); + T(-1, -0, I); + T(1, N, N); + T(-1, N, N); + assert(false, isMinusZero(new BigNumber(1).div(I))); + assert(true, isMinusZero(new BigNumber(1).div(-I))); + assert(true, isMinusZero(new BigNumber(-1).div(I))); + assert(false, isMinusZero(new BigNumber(-1).div(-I))); + assert(false, isMinusZero(new BigNumber(0).div(1))); + assert(true, isMinusZero(new BigNumber(0).div(-1))); + assert(true, isMinusZero(new BigNumber(-0).div(1))); + assert(false, isMinusZero(new BigNumber(-0).div(-1))); + T(0, 0, N); + T(0, -0, N); + T(-0, 0, N); + T(-0, -0, N); + T(0, N, N); + T(-0, N, N); + assert(false, isMinusZero(new BigNumber(0).div(I))); + assert(true, isMinusZero(new BigNumber(0).div(-I))); + assert(true, isMinusZero(new BigNumber(-0).div(I))); + assert(false, isMinusZero(new BigNumber(-0).div(-I))); + T(N, 1, N); + T(N, -1, N); + T(N, 0, N); + T(N, -0, N); + T(N, N, N); + T(N, I, N); + T(N, -I, N); + T(I, 1, I); + T(I, -1, -I); + T(-I, 1, -I); + T(-I, -1, I); + T(I, 0, I); + T(I, -0, -I); + T(-I, 0, -I); + T(-I, -0, I); + T(I, N, N); + T(-I, N, N); + T(I, I, N); + T(I, -I, N); + T(-I, I, N); + T(-I, -I, N); + + T(1, '1', '1'); + T(1, '-45', '-0.0222222222222222222222222222222222222222'); + T(1, '22', '0.0454545454545454545454545454545454545455'); + T(1, 0144, '0.01'); + T(1, '0144', '0.0069444444444444444444444444444444444444'); + T(1, '6.1915', '0.1615117499798110312525236210934345473633'); + T(1, '-1.02', '-0.9803921568627450980392156862745098039216'); + T(1, '0.09', '11.1111111111111111111111111111111111111111'); + T(1, '-0.0001', '-10000'); + T(1, '8e5', '0.00000125'); + T(1, '9E12', '1.111111111111111111111111111e-13'); + T(1, '1e-14', '100000000000000'); + T(1, '3.345E-9', '298953662.1823617339312406576980568011958146487294'); + T(1, '-345.43e+4', '-2.894942535390672495150971253220624e-7'); + T(1, '-94.12E+0', '-0.0106247343816404589885252868678283042924'); + T(1, '', N); + T(1, ' ', N); + T(1, '\t\t', N); + T(1, 'ertgrt546', N); + T(1, 'qweqwdewee', N); + T(1, true, N); + T(1, false, N); + T(1, 'e 4.3', N); + T(1, '4 .3', N); + T(1, '4.0 01e', N); + T(1, ' 4.001', '0.2499375156210947263184203949012746813297'); + T(1, '4.001 ', '0.2499375156210947263184203949012746813297'); + T(1, ' 4.001 ', '0.2499375156210947263184203949012746813297'); + T(1, ' 4.001', '0.2499375156210947263184203949012746813297'); + T(1, ' 4.0 01', N); + T(1, '4. 001', N); + T(1, '4. 001 ', N); + T(1, ' 4.001e ', N); + T(1, ' 4 .001 e ', N); + T(1, undefined, N); + T(1, null, N); + T(1, I, '0'); + T(1, -I, '0'); + T(1, Number.POSITIVE_INFINITY, '0'); + T(1, Number.NEGATIVE_INFINITY, '0'); + T(1, new Date(2012, 11, 4), N); + T(1, new Object(), N); + T(1, function () {}, N); + T('0', 0, N); + T(0, '+0', N); + T('0', '0', N); + T(3, -0, -I); + T(9.654, 0, I); + T(0, '0.001', '0'); + T(0, '111.1111111110000', '0'); + T(N, 0, N); + T(0, N, N); + T(N, '0', N); + T(-1, 1, '-1'); + T(-0.01, 0.01, '-1'); + T(54, -54, '-1'); + T(9.99, '-9.99', '-1'); + T('0.0000023432495704937', '-0.0000023432495704937', '-1'); + T(NaN, NaN, N); + T(NaN, N, N); + T(N, NaN, N); + T(N, 4, N); + T(N, '4534534.45435435', N); + T(N, 99999.999, N); + T(Infinity, '354.345341', I); + T(3, -I, '0'); // 78 + T(-Infinity, -I, N); + T(-I, -Infinity, N); + T(I, '-999e999', -I); + T(1.21123e43, -I, '0'); + T('-999.0', I, '0'); + T('657.342e-45', -I, '0'); + T(I, 123, I); + T(-0, I, '0'); + T(100, 100, '1'); + T(-999.99, '0.01', '-99999'); + T('10 ', 4, '2.5'); + T('03.333', -4, '-0.83325'); + T(-1, -0.1, '10'); + T(43534.5435, '0.054645', '796679.3576722481471314850398023606917375789185'); + T('99999', '1', '99999'); + T('3e', 8, N); + T('-3..0', 13, N); + T('0 0', -0.4, N); + T(' +3e0', 4, '0.75'); + T(9.9806, '+ 1', N); + T(' +2 0', '1e1', N); + T('e3', 4, N); + T(' ', 0, N); + T(323, null, N); + T(undefined, undefined, N); + T('undefined', undefined, N); + T(null, null, N); + + BigNumber.config({DECIMAL_PLACES : 0, ROUNDING_MODE : 0}); + T('999.5', 1, '1000'); + T('-999.5', 1, '-1000'); + + BigNumber.config({ROUNDING_MODE : 1}); + T('999.5', 1, '999'); + T('-999.5', 1, '-999'); + + BigNumber.config({ROUNDING_MODE : 2}); + T('999.5', 1, '1000'); + T('-999.5', 1, '-999'); + + BigNumber.config({ROUNDING_MODE : 3}); + T('999.5', 1, '999'); + T('-999.5', 1, '-1000'); + + BigNumber.config({ROUNDING_MODE : 4}); + T('999.5', 1, '1000'); + T('-999.5', 1, '-1000'); + + BigNumber.config({ROUNDING_MODE : 5}); + T('999.5', 1, '999'); + T('-999.5', 1, '-999'); + + BigNumber.config({ROUNDING_MODE : 6}); + T('999.5', 1, '1000'); + T('-999.5', 1, '-1000'); + T('999.4', 1, '999'); + T('-999.4', 1, '-999'); + T('999.500001', 1, '1000'); + T('-999.500001', 1, '-1000'); + + BigNumber.config({ROUNDING_MODE : 7}); + T('999.5', 1, '1000'); + T('-999.5', 1, '-999'); + + BigNumber.config({ROUNDING_MODE : 8}); + T('999.5', 1, '999'); + T('-999.5', 1, '-1000'); + + BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 3 }); + T('-2.8', '3', '-1'); + BigNumber.config({ DECIMAL_PLACES : 9, ROUNDING_MODE : 0 }); + T('-3', '-0.0047', '638.297872341'); + BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 0 }); + T('15', '-3', '-5'); + BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 2 }); + T('3', '0.38', '7.894736842106'); + BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 4 }); + T('-2.9', '-2.2', '1.3181818181818182'); + BigNumber.config({ DECIMAL_PLACES : 9, ROUNDING_MODE : 4 }); + T('-1.20', '0.00035', '-3428.571428571'); + BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 1 }); + T('-6', '-1.0', '6'); + BigNumber.config({ DECIMAL_PLACES : 7, ROUNDING_MODE : 5 }); + T('1.1', '-1.5', '-0.7333333'); + BigNumber.config({ DECIMAL_PLACES : 9, ROUNDING_MODE : 2 }); + T('-1.05', '-2', '0.525'); + BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 0 }); + T('-2', '-1', '2'); + BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 6 }); + T('-5', '1', '-5'); + BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 1 }); + T('0.000033', '-1', '-0.000033'); + BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 6 }); + T('6', '-3', '-2'); + BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 2 }); + T('-1.20', '1', '-1.2'); + BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 1 }); + T('-1', '0.0019', '-526.315'); + BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 1 }); + T('-7', '3', '-2.333333333333'); + BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 0 }); + T('2', '4', '0.5'); + BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 3 }); + T('33', '-2', '-16.5'); + BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 1 }); + T('-2', '-1', '2'); + BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 6 }); + T('-10.2', '12', '-0.85'); + BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 0 }); + T('-1.0', '10', '-0.1'); + BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 3 }); + T('1.3', '-3.0', '-0.434'); + BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 5 }); + T('1.4', '6', '0.233333333333333333'); + BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 4 }); + T('55', '2', '27.5'); + BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 5 }); + T('1', '7', '0.14285714285714286'); + BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 5 }); + T('-1.4', '2', '-0.7'); + BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 4 }); + T('-5', '3', '-2'); + BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 0 }); + T('-1', '2', '-0.5'); + BigNumber.config({ DECIMAL_PLACES : 2, ROUNDING_MODE : 2 }); + T('-8', '-3', '2.67'); + BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 4 }); + T('-16', '7', '-2.285714285714'); + BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 6 }); + T('1', '1', '1'); + BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 4 }); + T('0.000019', '1', '0.000019'); + BigNumber.config({ DECIMAL_PLACES : 6, ROUNDING_MODE : 6 }); + T('26', '-7.7', '-3.376623'); + BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 4 }); + T('-5.7', '-9.1', '1'); + BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 0 }); + T('1', '6.9', '0.144927536232'); + BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 2 }); + T('33', '-5.5', '-6'); + BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 2 }); + T('1.9', '1', '1.9'); + BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 0 }); + T('-5', '0.00014', '-35714.2857142857142858'); + BigNumber.config({ DECIMAL_PLACES : 1, ROUNDING_MODE : 4 }); + T('3.0', '3', '1'); + BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 3 }); + T('-2', '3', '-0.666666666666667'); + BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 1 }); + T('5', '3', '1.66666666666666666'); + BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 5 }); + T('-0.000059', '-4', '0.00001475'); + BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 6 }); + T('1.0', '3', '0.333'); + BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 4 }); + T('2', '4', '0.5'); + BigNumber.config({ DECIMAL_PLACES : 6, ROUNDING_MODE : 4 }); + T('-6.3', '5.2', '-1.211538'); + BigNumber.config({ DECIMAL_PLACES : 19, ROUNDING_MODE : 1 }); + T('3.5', '-1.7', '-2.0588235294117647058'); + BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 2 }); + T('3', '3', '1'); + BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 6 }); + T('3.5', '-6', '-0.5833333333'); + BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 4 }); + T('1', '-5.4', '0'); + BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 3 }); + T('-3.0', '-1.5', '2'); + BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 1 }); + T('-3', '-3', '1'); + BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 6 }); + T('11', '1', '11'); + BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 3 }); + T('-3.0', '-1.1', '2.7272727272727272'); + BigNumber.config({ DECIMAL_PLACES : 1, ROUNDING_MODE : 6 }); + T('-1.2', '-7', '0.2'); + BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 2 }); + T('3', '7', '0.42857142858'); + BigNumber.config({ DECIMAL_PLACES : 19, ROUNDING_MODE : 5 }); + T('1', '2', '0.5'); + BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 1 }); + T('-2', '-0.51', '3.92156862745098'); + BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 1 }); + T('8', '4', '2'); + BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 5 }); + T('1.2', '0.000016', '75000'); + BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 2 }); + T('37', '-2.5', '-14.8'); + BigNumber.config({ DECIMAL_PLACES : 5, ROUNDING_MODE : 6 }); + T('0.015', '26', '0.00058'); + BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 1 }); + T('6', '-91', '-0.06593406'); + BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 4 }); + T('-3', '2', '-1.5'); + BigNumber.config({ DECIMAL_PLACES : 19, ROUNDING_MODE : 4 }); + T('1', '-19', '-0.0526315789473684211'); + BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 3 }); + T('1.8', '3', '0.6'); + BigNumber.config({ DECIMAL_PLACES : 6, ROUNDING_MODE : 4 }); + T('-1', '-8.7', '0.114943'); + BigNumber.config({ DECIMAL_PLACES : 7, ROUNDING_MODE : 1 }); + T('-0.0056', '1', '-0.0056'); + BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 4 }); + T('7', '0.00119', '5882.35294117647059'); + BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 3 }); + T('1.2', '-1.0', '-1.2'); + BigNumber.config({ DECIMAL_PLACES : 19, ROUNDING_MODE : 2 }); + T('-0.000013', '-0.38', '0.0000342105263157895'); + BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 6 }); + T('1', '-3', '-0.333333333333333333'); + BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 3 }); + T('5.8', '-2.1', '-2.761904761904762'); + BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 6 }); + T('-9', '-6.3', '1.429'); + BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 5 }); + T('-12', '-0.00027', '44444.444444444444'); + BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 1 }); + T('-9', '-2', '4.5'); + BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 5 }); + T('1', '3', '0.3333333333333'); + BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 2 }); + T('-1', '2', '-0.5'); + BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 4 }); + T('1', '-0.014', '-71.42857142857143'); + BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 6 }); + T('-4', '-7', '1'); + BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 1 }); + T('1.1', '1.2', '0.9166666666666'); + BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 5 }); + T('-1', '-6.1', '0.16393442622951'); + BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 4 }); + T('5', '2.8', '1.785714285714286'); + BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 6 }); + T('-1', '7', '-0.142857142857'); + BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 3 }); + T('-1', '0.000016', '-62500'); + BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 2 }); + T('-3', '-1.4', '2.14285715'); + BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 5 }); + T('6', '1', '6'); + BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 5 }); + T('-0.60', '-7', '0.0857142857'); + BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 4 }); + T('1', '3', '0.3333'); + BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 4 }); + T('-1', '-0.0061', '163.93442622950819672131'); + BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 1 }); + T('1.9', '-5', '-0.38'); + BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 5 }); + T('-9.5', '-3.1', '3.06451612903'); + BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 2 }); + T('-9', '-3', '3'); + BigNumber.config({ DECIMAL_PLACES : 19, ROUNDING_MODE : 1 }); + T('-0.00090', '-5', '0.00018'); + BigNumber.config({ DECIMAL_PLACES : 2, ROUNDING_MODE : 2 }); + T('6', '-2', '-3'); + BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 6 }); + T('4', '10.7', '0.373831775701'); + BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 5 }); + T('-20', '5.2', '-3.8461538461538462'); + BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 6 }); + T('-2', '1.22', '-1.639344262295082'); + BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 6 }); + T('-2.3', '2.5', '-0.92'); + BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 6 }); + T('0.000123', '-1.5', '-0.0001'); + BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 6 }); + T('-8', '1', '-8'); + BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 1 }); + T('-1.4', '-2.2', '0.6363636363636'); + BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 6 }); + T('7', '-3', '-2.33333333333333'); + BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 5 }); + T('7', '-0.076', '-92.105'); + BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 5 }); + T('-2.9', '8.0', '-0.3625'); + BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 5 }); + T('2', '6.6', '0.30303030303'); + BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 6 }); + T('-8', '10.0', '-0.8'); + BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 0 }); + T('8', '-1.1', '-7.27272727272728'); + BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 5 }); + T('4', '1', '4'); + BigNumber.config({ DECIMAL_PLACES : 2, ROUNDING_MODE : 3 }); + T('-6', '9', '-0.67'); + BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 0 }); + T('1', '0.000033', '30303.03030303030303030304'); + BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 5 }); + T('2.0', '3', '0.66666666667'); + BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 4 }); + T('-2', '-30', '0.06666666667'); + BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 5 }); + T('1.8', '-1', '-1.8'); + BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 6 }); + T('2.6', '-0.00010', '-26000'); + BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 6 }); + T('-6.4', '-3', '2'); + BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 6 }); + T('-1', '8', '-0.125'); + BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 4 }); + T('-1.00', '3', '-0.33333333333333333'); + BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 2 }); + T('-4.0', '4', '-1'); + BigNumber.config({ DECIMAL_PLACES : 5, ROUNDING_MODE : 5 }); + T('1', '2', '0.5'); + BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 5 }); + T('-0.00012', '8', '0'); + BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 0 }); + T('-2.9', '5.3', '-0.5471698113207548'); + BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 5 }); + T('-2', '3', '-0.66666666667'); + BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 1 }); + T('-5', '-6', '0.833333333333'); + BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 5 }); + T('97', '0.032', '3031.25'); + BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 1 }); + T('-8', '1.7', '-4'); + BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 5 }); + T('-1.1', '-5.5', '0'); + BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 5 }); + T('-15', '-3', '5'); + BigNumber.config({ DECIMAL_PLACES : 2, ROUNDING_MODE : 3 }); + T('-6.1', '4', '-1.53'); + BigNumber.config({ DECIMAL_PLACES : 19, ROUNDING_MODE : 5 }); + T('-2.7', '-6.7', '0.4029850746268656716'); + BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 6 }); + T('-4.8', '-4', '1.2'); + BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 2 }); + T('-8', '5', '-1.6'); + BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 1 }); + T('2', '6.1', '0.3278688524590163'); + BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 3 }); + T('5.6', '-15', '-0.373333333334'); + BigNumber.config({ DECIMAL_PLACES : 7, ROUNDING_MODE : 1 }); + T('-3', '-4', '0.75'); + BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 1 }); + T('1.0', '0.00018', '5555.5555'); + BigNumber.config({ DECIMAL_PLACES : 7, ROUNDING_MODE : 2 }); + T('-14', '-0.00012', '116666.6666667'); + BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 5 }); + T('-0.0000113', '-6', '0.00000188333'); + BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 5 }); + T('-2.0', '-7.7', '0.26'); + BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 0 }); + T('-3', '0.0073', '-410.958904109589041096'); + BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 1 }); + T('4.4', '-1', '-4'); + BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 1 }); + T('-3', '-1.4', '2.14285714285714'); + BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 5 }); + T('-2.2', '-7.6', '0.2895'); + BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 3 }); + T('3.8', '9.4', '0.40425531914893617'); + BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 4 }); + T('-1', '7', '-0.14285714285714'); + BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 6 }); + T('-5', '-4.3', '1.1627906977'); + BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 4 }); + T('3', '2', '2'); + BigNumber.config({ DECIMAL_PLACES : 5, ROUNDING_MODE : 2 }); + T('2.7', '1', '2.7'); + BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 2 }); + T('4', '2', '2'); + + BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 2 }); + T('4', '-0.0025', '-1600'); + BigNumber.config({ DECIMAL_PLACES : 26, ROUNDING_MODE : 1 }); + T('205783.0120', '-6.58', '-31274.01398176291793313069908814'); + BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 0 }); + T('2.6', '0.0000014140003', '1838754.9139841059439662070793054287187916438207262049378631673557637'); + BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 1 }); + T('-43506731.7020', '0.0000000000000020852', '-2.0864536592173412622290427776712065988e+22'); + BigNumber.config({ DECIMAL_PLACES : 35, ROUNDING_MODE : 5 }); + T('85374685.72', '-4602612.194', '-18.54918079591738899390748887413215766'); + BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 0 }); + T('-11.889579111', '-7', '1.698511301571428572'); + BigNumber.config({ DECIMAL_PLACES : 24, ROUNDING_MODE : 6 }); + T('21.6', '-3', '-7.2'); + BigNumber.config({ DECIMAL_PLACES : 55, ROUNDING_MODE : 3 }); + T('-180.72', '0.0000000001581', '-1143074003795.0664136622390891840607210626185958254269449715370018976'); + BigNumber.config({ DECIMAL_PLACES : 73, ROUNDING_MODE : 1 }); + T('-0.00119467686529', '20885766', '-5.72005290727665913713674662447142230742219366050543705220100617e-11'); + BigNumber.config({ DECIMAL_PLACES : 2, ROUNDING_MODE : 1 }); + T('-0.000000015740712', '-0.0000000000000000000266', '591756090225.56'); + BigNumber.config({ DECIMAL_PLACES : 5, ROUNDING_MODE : 5 }); + T('-10', '1197', '-0.00835'); + BigNumber.config({ DECIMAL_PLACES : 77, ROUNDING_MODE : 6 }); + T('-0.0000000000000000000759363178177', '3.916', '-1.939129668480592441266598569969356486210418794688457609806e-20'); + BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 4 }); + T('-52073715', '157.5445101', '-330533.351920334544'); + BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 5 }); + T('-325.0', '-90', '3.6111111111111111111111111111111111'); + BigNumber.config({ DECIMAL_PLACES : 9, ROUNDING_MODE : 6 }); + T('-0.00000000000000031', '-0.0000000000000032', '0.096875'); + BigNumber.config({ DECIMAL_PLACES : 88, ROUNDING_MODE : 2 }); + T('-0.00000000879', '-5.6', '1.5696428571428571428571428571428571428571428571428571428571428571428571428571429e-9'); + BigNumber.config({ DECIMAL_PLACES : 94, ROUNDING_MODE : 2 }); + T('-0.00000251681', '127.91', '-1.96764131029630208740520678602142131185990149323743256977562348526307560003127198811664e-8'); + BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 4 }); + T('2961036591.4', '0.000013043', '227021129448746.45403664801042704899179636586674844744307291267'); + BigNumber.config({ DECIMAL_PLACES : 82, ROUNDING_MODE : 2 }); + T('4', '3.38', '1.1834319526627218934911242603550295857988165680473372781065088757396449704142011835'); + BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 2 }); + T('-0.0000000000001136', '0.00000000000000144185989652', '-78.7871278438211'); + BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 3 }); + T('11.8853', '-3', '-3.961766666666666667'); + BigNumber.config({ DECIMAL_PLACES : 85, ROUNDING_MODE : 5 }); + T('-1.20', '-9568301.017', '1.25414114571433324713095196302601858245865008826571702745166676229370972349291e-7'); + BigNumber.config({ DECIMAL_PLACES : 99, ROUNDING_MODE : 3 }); + T('0', '-6988.9', '0'); + BigNumber.config({ DECIMAL_PLACES : 22, ROUNDING_MODE : 3 }); + T('5', '-3936814629.28', '-1.2700623399468e-9'); + BigNumber.config({ DECIMAL_PLACES : 89, ROUNDING_MODE : 2 }); + T('2102712', '0.00000000000000304964', '689495153526317860468.77664248894951535263178604687766424889495153526317860468776642488949515352631786046877665'); + BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 0 }); + T('0.00000000000000000006318187', '89048', '1e-16'); + BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 4 }); + T('-18.472', '-2304.31', '0.00801628253143023'); + BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 5 }); + T('0.933711', '-41.4', '-0.022553405797101'); + BigNumber.config({ DECIMAL_PLACES : 91, ROUNDING_MODE : 6 }); + T('-0.00000000159747', '-54.285323180', '2.9427290958609339534561098287634805235030747771261587614997044952657496548775267e-11'); + BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 2 }); + T('36.0', '0.15278', '235.6329362482000261814373609111140202'); + BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 4 }); + T('3273788', '2.0', '1636894'); + BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 4 }); + T('-144.7', '0.000484419582', '-298707.99071042'); + BigNumber.config({ DECIMAL_PLACES : 1, ROUNDING_MODE : 2 }); + T('-0.000136434', '5.30860461610', '0'); + BigNumber.config({ DECIMAL_PLACES : 5, ROUNDING_MODE : 6 }); + T('0.00000000000027963249176', '690.93615', '0'); + BigNumber.config({ DECIMAL_PLACES : 58, ROUNDING_MODE : 4 }); + T('0.000000000000000041166', '-954146.63778', '-4.31443117546170598004200620115714474e-23'); + BigNumber.config({ DECIMAL_PLACES : 67, ROUNDING_MODE : 1 }); + T('80606.45399', '29030.6863', '2.7765948471566102796543256368003948980014296113970960445396015319141'); + BigNumber.config({ DECIMAL_PLACES : 96, ROUNDING_MODE : 1 }); + T('-307761.1715', '3', '-102587.057166666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666'); + BigNumber.config({ DECIMAL_PLACES : 42, ROUNDING_MODE : 4 }); + T('-1.09', '-1.1', '0.990909090909090909090909090909090909090909'); + BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 1 }); + T('-0.000000122', '1489.273', '-8.1919164585673681051090028490411093197822024e-11'); + BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 3 }); + T('1663.22977564', '10487', '0.158599196685420043863831410317535996948603032325736626299227615142557452083'); + BigNumber.config({ DECIMAL_PLACES : 42, ROUNDING_MODE : 4 }); + T('-98', '-4242.281285', '0.023100778429405819091036534132130279051027'); + BigNumber.config({ DECIMAL_PLACES : 72, ROUNDING_MODE : 4 }); + T('0.00880312', '32.53937', '0.000270537505796823970470233443364146263434110740312427683756630813688157'); + BigNumber.config({ DECIMAL_PLACES : 43, ROUNDING_MODE : 3 }); + T('5.82', '805.9', '0.0072217396699342350167514579972701327708152'); + BigNumber.config({ DECIMAL_PLACES : 40, ROUNDING_MODE : 2 }); + T('5', '20.1', '0.2487562189054726368159203980099502487563'); + BigNumber.config({ DECIMAL_PLACES : 70, ROUNDING_MODE : 6 }); + T('-0.000000190702099115', '-0.00000000000005357223', '3559719.2634131526725693516958319636871565734709942072599927238421846542509057'); + BigNumber.config({ DECIMAL_PLACES : 45, ROUNDING_MODE : 6 }); + T('35.8812641704', '2402312', '0.00001493613825781164145206784131286860324554'); + BigNumber.config({ DECIMAL_PLACES : 31, ROUNDING_MODE : 3 }); + T('-1425073364', '-10284292.72', '138.5679504462801793918600169910371'); + BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 3 }); + T('138823.37071', '-25036.2', '-5.5449058047946573361772153921122215032632747781212803860010704499884167725135'); + BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 3 }); + T('-1.0', '2.7', '-0.37037037037037037037037037037037037037037037037037037037037037037037037037037037037037037037038'); + BigNumber.config({ DECIMAL_PLACES : 92, ROUNDING_MODE : 5 }); + T('29638493.73', '41.59351', '712574.96013200136271259626802354501940326748091228655624399094954958117263967383373031032966441159'); + BigNumber.config({ DECIMAL_PLACES : 7, ROUNDING_MODE : 5 }); + T('-1392357420', '65060.9365', '-21400.8204447'); + BigNumber.config({ DECIMAL_PLACES : 62, ROUNDING_MODE : 6 }); + T('-1.11047040', '0.000000226215484', '-4908905.35150104932693289907599782161684387616897170487233314232371468'); + BigNumber.config({ DECIMAL_PLACES : 22, ROUNDING_MODE : 2 }); + T('-220.431900', '1674.3721017', '-0.1316504854423901203011'); + BigNumber.config({ DECIMAL_PLACES : 27, ROUNDING_MODE : 3 }); + T('5.6685641929', '-924503127242', '-6.131471085241861e-12'); + BigNumber.config({ DECIMAL_PLACES : 42, ROUNDING_MODE : 2 }); + T('-760.5', '-5.9896920', '126.968131249486618009740734582011896438080623'); + BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 5 }); + T('-0.00000065', '-32268321', '2e-14'); + BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 6 }); + T('-1.11', '104938.6447517', '-0.0000105776094462285121510625524763430267264835898746917817157441798492755443580876965212689285842'); + BigNumber.config({ DECIMAL_PLACES : 62, ROUNDING_MODE : 6 }); + T('0.0000000000000000000389', '0.000000004345746504', '8.95128143443131675128191048301422047234994450564482e-12'); + BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 0 }); + T('-30614604.60', '-178450189969', '0.000171558262870542789273504424217640996351681502199029'); + BigNumber.config({ DECIMAL_PLACES : 43, ROUNDING_MODE : 2 }); + T('5.09', '-261.708521', '-0.019449118357135952787719892391276018101069'); + BigNumber.config({ DECIMAL_PLACES : 26, ROUNDING_MODE : 0 }); + T('-17657942.918', '0.000000000000120', '-147149524316666666666.66666666666666666666666667'); + BigNumber.config({ DECIMAL_PLACES : 48, ROUNDING_MODE : 2 }); + T('-5228', '799347.8', '-0.006540332005667620527635154559754840133418769651'); + BigNumber.config({ DECIMAL_PLACES : 85, ROUNDING_MODE : 2 }); + T('949309450.95', '-1', '-949309450.95'); + BigNumber.config({ DECIMAL_PLACES : 29, ROUNDING_MODE : 1 }); + T('-122597442444', '-0.0000000000088102620620', '1.391530031470702919937729316547088199429316816614801e+22'); + BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 4 }); + T('-429572333.64', '-153.40', '2800341.158'); + BigNumber.config({ DECIMAL_PLACES : 73, ROUNDING_MODE : 6 }); + T('-6', '0.0023', '-2608.6956521739130434782608695652173913043478260869565217391304347826086956522'); + BigNumber.config({ DECIMAL_PLACES : 52, ROUNDING_MODE : 6 }); + T('13023138.990', '0.0000912303', '142750149785.7619672411468558143511530708547489156563115543848919'); + BigNumber.config({ DECIMAL_PLACES : 60, ROUNDING_MODE : 0 }); + T('-1', '-356.9405623', '0.002801586890423296674455874806582608445675102249369656467312'); + BigNumber.config({ DECIMAL_PLACES : 33, ROUNDING_MODE : 3 }); + T('-0.1761', '-1', '0.1761'); + BigNumber.config({ DECIMAL_PLACES : 99, ROUNDING_MODE : 6 }); + T('-0.00000000000000001080427993', '0.00000000000000000542', '-1.993409581180811808118081180811808118081180811808118081180811808118081180811808118081180811808118081'); + BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 1 }); + T('-3', '-0.00000000000028491', '10529640939243.9717805622828261556280930820259029167105401705801832157523428'); + BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 1 }); + T('-2.11', '-1', '2.11'); + BigNumber.config({ DECIMAL_PLACES : 59, ROUNDING_MODE : 5 }); + T('-125.8754715', '54.73', '-2.29993552896035081308240453133564772519641878311712040928193'); + BigNumber.config({ DECIMAL_PLACES : 66, ROUNDING_MODE : 6 }); + T('-0.00000138983610179', '65323.63269', '-2.127616062605718506314134992421224454104988018234477033e-11'); + BigNumber.config({ DECIMAL_PLACES : 96, ROUNDING_MODE : 6 }); + T('0.0000000627720', '2089419.6460', '3.0042792083520018744956320756256543784790276639334327384801473241244712599969494113e-14'); + BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 0 }); + T('-217', '13400814874', '-1.6193045127503341107643153014427650841973716232087e-8'); + BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 2 }); + T('-209172.068', '-95.8169', '2183.03940119123035706645'); + BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 5 }); + T('722260.251', '312846', '2.309'); + BigNumber.config({ DECIMAL_PLACES : 52, ROUNDING_MODE : 6 }); + T('0.000000000000000000043026447166', '999.3474', '4.30545445617810182925377101096e-23'); + BigNumber.config({ DECIMAL_PLACES : 72, ROUNDING_MODE : 5 }); + T('0.000001001769', '0.0000000000000545377150533', '18368371.300868872296239200828462479512442900146931227723210727885333446839709498'); + BigNumber.config({ DECIMAL_PLACES : 1, ROUNDING_MODE : 4 }); + T('-21639.9', '1', '-21639.9'); + BigNumber.config({ DECIMAL_PLACES : 99, ROUNDING_MODE : 2 }); + T('-4064.98760', '-1050752806.1', '0.00000386864310654349629150136228220537701973975247040741640708905074224574083676101638345175007951'); + BigNumber.config({ DECIMAL_PLACES : 99, ROUNDING_MODE : 4 }); + T('-0.00000000000000612', '-38134.257', '1.60485623202256176120069679081462108990349543194194133636850457057548020405904329e-19'); + BigNumber.config({ DECIMAL_PLACES : 49, ROUNDING_MODE : 4 }); + T('-265049816341', '-2', '132524908170.5'); + BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 4 }); + T('18', '1', '18'); + BigNumber.config({ DECIMAL_PLACES : 22, ROUNDING_MODE : 5 }); + T('-0.0000000922', '-282.900786', '3.259093101283e-10'); + BigNumber.config({ DECIMAL_PLACES : 52, ROUNDING_MODE : 0 }); + T('-260074626.109', '-8.200', '31716417.8181707317073170731707317073170731707317073170731708'); + BigNumber.config({ DECIMAL_PLACES : 56, ROUNDING_MODE : 4 }); + T('-0.0000000000000003606626', '121920.32', '-2.9581828525384447809848268114781851e-21'); + BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 3 }); + T('0.051829', '-21845698', '-2.372503731e-9'); + BigNumber.config({ DECIMAL_PLACES : 37, ROUNDING_MODE : 4 }); + T('0', '-108765478', '0'); + BigNumber.config({ DECIMAL_PLACES : 93, ROUNDING_MODE : 0 }); + T('4.06', '-81.9529', '-0.049540650788440677511106989502506927759725403249915500244652721258186104457560379193414754085'); + BigNumber.config({ DECIMAL_PLACES : 86, ROUNDING_MODE : 4 }); + T('11', '8.168', '1.34671890303623898139079333986287952987267384916748285994123408423114593535749265426053'); + BigNumber.config({ DECIMAL_PLACES : 23, ROUNDING_MODE : 4 }); + T('3.0', '-187113.5', '-0.00001603304945928540699'); + BigNumber.config({ DECIMAL_PLACES : 86, ROUNDING_MODE : 3 }); + T('0', '29.1292', '0'); + BigNumber.config({ DECIMAL_PLACES : 31, ROUNDING_MODE : 2 }); + T('-539', '1.63309627', '-330.0479034221295478190027339906911'); + BigNumber.config({ DECIMAL_PLACES : 59, ROUNDING_MODE : 3 }); + T('4.6', '9576522.7', '4.8034136649621265973712984567978938743600534670063487e-7'); + BigNumber.config({ DECIMAL_PLACES : 5, ROUNDING_MODE : 0 }); + T('888.495', '2', '444.2475'); + BigNumber.config({ DECIMAL_PLACES : 9, ROUNDING_MODE : 6 }); + T('0.0000000660515321', '0.000000000000000000157532', '419289617982.37818348'); + BigNumber.config({ DECIMAL_PLACES : 100, ROUNDING_MODE : 5 }); + T('1194135', '19.3', '61872.2797927461139896373056994818652849740932642487046632124352331606217616580310880829015544041450777202'); + BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 6 }); + T('-199941187483', '1605', '-124573948.587538940809968847'); + BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 1 }); + T('0', '-0.000000000013210', '0'); + BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 1 }); + T('-15579.9582254', '1.82', '-8560.41660736263736263736263736263736263736263736263736263736263736263736'); + BigNumber.config({ DECIMAL_PLACES : 7, ROUNDING_MODE : 5 }); + T('0.00021763543', '0.000000000000000006304245', '34522045066459.1874205'); + BigNumber.config({ DECIMAL_PLACES : 63, ROUNDING_MODE : 1 }); + T('-9.6', '-6245', '0.001537229783827061649319455564451561248999199359487590072057646'); + BigNumber.config({ DECIMAL_PLACES : 35, ROUNDING_MODE : 4 }); + T('-1558.3541291', '-0.0000000000905501700', '17209842114045.72735755217245864916653386735773108'); + BigNumber.config({ DECIMAL_PLACES : 5, ROUNDING_MODE : 1 }); + T('-2196.0533764', '-6.3', '348.5799'); + BigNumber.config({ DECIMAL_PLACES : 38, ROUNDING_MODE : 6 }); + T('134631.169', '-0.0051', '-26398268.43137254901960784313725490196078431373'); + BigNumber.config({ DECIMAL_PLACES : 62, ROUNDING_MODE : 0 }); + T('0', '3', '0'); + BigNumber.config({ DECIMAL_PLACES : 31, ROUNDING_MODE : 0 }); + T('-81.21601', '0.000000000000000331', '-245365589123867069.4864048338368580060422960725076'); + BigNumber.config({ DECIMAL_PLACES : 35, ROUNDING_MODE : 2 }); + T('-0.18606', '-2.1', '0.0886'); + BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 4 }); + T('-0.000000000000000000461', '-19253159', '2.394412262424052073740210632447381751742662e-26'); + BigNumber.config({ DECIMAL_PLACES : 39, ROUNDING_MODE : 3 }); + T('-929', '-424621853.40', '0.000002187828988454978092279223234156793'); + BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 6 }); + T('2.0', '-1186150187', '-1.68612712110123370068650505553560225506249488118151769932655e-9'); + BigNumber.config({ DECIMAL_PLACES : 19, ROUNDING_MODE : 5 }); + T('0.000000000000000000522', '128362.3152', '0'); + BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 1 }); + T('-6.08', '-930214.3174', '0.0000065361281655972929233694893030249977100599720354293484668310696547444906054936625511027637511'); + BigNumber.config({ DECIMAL_PLACES : 26, ROUNDING_MODE : 5 }); + T('-13468.73594', '-17.44', '772.28990481651376146788990826'); + BigNumber.config({ DECIMAL_PLACES : 9, ROUNDING_MODE : 0 }); + T('-4.94229', '-2', '2.471145'); + BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 3 }); + T('-24.40246', '35.4837273223', '-0.687708474883474291'); + BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 1 }); + T('1', '29.98403894', '0.0333510772848536061833169430909230269296068356826913859390818947489000292767095'); + BigNumber.config({ DECIMAL_PLACES : 35, ROUNDING_MODE : 2 }); + T('-430', '1689585.07', '-0.00025450035493033801488314524464873'); + BigNumber.config({ DECIMAL_PLACES : 35, ROUNDING_MODE : 1 }); + T('3083081101.8', '-1', '-3083081101.8'); + BigNumber.config({ DECIMAL_PLACES : 63, ROUNDING_MODE : 3 }); + T('2.4', '4.3', '0.558139534883720930232558139534883720930232558139534883720930232'); + BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 1 }); + T('467216723', '1.1', '424742475.45454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454'); + BigNumber.config({ DECIMAL_PLACES : 9, ROUNDING_MODE : 1 }); + T('0', '-16208070.9330', '0'); + BigNumber.config({ DECIMAL_PLACES : 24, ROUNDING_MODE : 4 }); + T('-14.01', '264360777.70', '-5.2995758757748578e-8'); + BigNumber.config({ DECIMAL_PLACES : 67, ROUNDING_MODE : 1 }); + T('1', '-1', '-1'); + BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 6 }); + T('510', '1087.241548591', '0.46907699642359095636184954255459240447481123022295185773956042018'); + BigNumber.config({ DECIMAL_PLACES : 21, ROUNDING_MODE : 6 }); + T('-522.4', '-0.0000000430', '12148837209.302325581395348837209'); + BigNumber.config({ DECIMAL_PLACES : 50, ROUNDING_MODE : 6 }); + T('-0.0001750931579', '-1641610', '1.0665941234519770225571237991971296471147e-10'); + BigNumber.config({ DECIMAL_PLACES : 1, ROUNDING_MODE : 3 }); + T('-61755625405', '-5.209793', '11853757990.9'); + BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 0 }); + T('0.0000052665303263', '0.00000029854211122', '17.64082897644887901654'); + BigNumber.config({ DECIMAL_PLACES : 1, ROUNDING_MODE : 4 }); + T('-17926303.14', '11.395', '-1573172.7'); + BigNumber.config({ DECIMAL_PLACES : 98, ROUNDING_MODE : 1 }); + T('0', '-3.40233', '0'); + BigNumber.config({ DECIMAL_PLACES : 100, ROUNDING_MODE : 0 }); + T('-0.0000000965828945324', '1.2', '-8.04857454436666666666666666666666666666666666666666666666666666666666666666666666666666666667e-8'); + BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 6 }); + T('-22442925.654', '20806718.15', '-1.07863842304222302353'); + BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 5 }); + T('0', '0.0000000000005381', '0'); + BigNumber.config({ DECIMAL_PLACES : 71, ROUNDING_MODE : 2 }); + T('-95.4860600', '92963', '-0.00102714047524283854866990092832632337596678248335359228940546238826199'); + BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 5 }); + T('-25.24782827', '96008.9585', '-0.00026297'); + BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 3 }); + T('38', '14576527.63', '0.000002606930879875127022964384831341344632706602978531177'); + BigNumber.config({ DECIMAL_PLACES : 56, ROUNDING_MODE : 3 }); + T('546214273620', '-2', '-273107136810'); + BigNumber.config({ DECIMAL_PLACES : 22, ROUNDING_MODE : 4 }); + T('13', '3015907', '0.0000043104777435113218'); + BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 0 }); + T('-1.271', '-6.28', '0.202388535031847133757961783439490445859872611464968152867'); + BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 4 }); + T('-6', '6964.78469', '-0.00086147673863'); + BigNumber.config({ DECIMAL_PLACES : 78, ROUNDING_MODE : 4 }); + T('-142.72', '-26745.79', '0.005336166925710551081123421667484863972984159376111156185702497477173042934982'); + BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 0 }); + T('-28.0', '2363923123', '-1.1845e-8'); + BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 5 }); + T('-91504451.175', '-18397.6177841', '4973.71193645'); + BigNumber.config({ DECIMAL_PLACES : 100, ROUNDING_MODE : 2 }); + T('-1151830', '5.2289', '-220281.5123639771271204268584214653177532559429325479546367304786857656486067815410506989997896307062670925'); + BigNumber.config({ DECIMAL_PLACES : 96, ROUNDING_MODE : 6 }); + T('0.0000000129422662', '-776', '-1.6678178092783505154639175257731958762886597938144329896907216494845360824742268041237e-11'); + BigNumber.config({ DECIMAL_PLACES : 37, ROUNDING_MODE : 1 }); + T('30323', '-0.00000000000000071420145253', '-42457208526506439363.7659352409214288776209918638766283439'); + BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 0 }); + T('-0.000000000000000000036513', '62054611', '-1e-8'); + BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 5 }); + T('-0.000000000000302978047', '-0.00000000000030', '1'); + BigNumber.config({ DECIMAL_PLACES : 19, ROUNDING_MODE : 3 }); + T('36.98', '-0.61069704476', '-60.5537562647497361045'); + BigNumber.config({ DECIMAL_PLACES : 53, ROUNDING_MODE : 5 }); + T('-2209843.27987', '30200516.420', '-0.07317236729126104129049856823607256713261196611021395'); + BigNumber.config({ DECIMAL_PLACES : 99, ROUNDING_MODE : 2 }); + T('-11.0', '-2.17', '5.069124423963133640552995391705069124423963133640552995391705069124423963133640552995391705069124424'); + BigNumber.config({ DECIMAL_PLACES : 35, ROUNDING_MODE : 3 }); + T('-0.000000470683', '0.000029822775', '-0.01578266945312768513325805529498848'); + BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 2 }); + T('-198.608', '-3.933769477', '50.4879610158203482344016367484769113225797699685593447396612662'); + BigNumber.config({ DECIMAL_PLACES : 80, ROUNDING_MODE : 0 }); + T('-38294.7981', '34.2598', '-1117.77646396067694499092230544253031249452711340988563856181297030338764382745958821'); + BigNumber.config({ DECIMAL_PLACES : 74, ROUNDING_MODE : 5 }); + T('0', '27.783', '0'); + BigNumber.config({ DECIMAL_PLACES : 26, ROUNDING_MODE : 4 }); + T('-7', '-251.5', '0.02783300198807157057654076'); + BigNumber.config({ DECIMAL_PLACES : 74, ROUNDING_MODE : 1 }); + T('54335.16', '-0.000000411', '-132202335766.42335766423357664233576642335766423357664233576642335766423357664233576642'); + BigNumber.config({ DECIMAL_PLACES : 24, ROUNDING_MODE : 4 }); + T('-40946555.55', '2.60', '-15748675.211538461538461538461538'); + BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 5 }); + T('-198237302872', '7', '-28319614696'); + BigNumber.config({ DECIMAL_PLACES : 85, ROUNDING_MODE : 1 }); + T('0.00000000000000000005371334', '8', '6.7141675e-21'); + BigNumber.config({ DECIMAL_PLACES : 52, ROUNDING_MODE : 2 }); + T('1.5258', '-1190852944', '-1.2812665137938307855415605371337940782720187e-9'); + BigNumber.config({ DECIMAL_PLACES : 52, ROUNDING_MODE : 3 }); + T('1', '-0.00000000000000000005562070', '-17978917920846015961.6833301270929707824604868331394606684202104612131815'); + BigNumber.config({ DECIMAL_PLACES : 86, ROUNDING_MODE : 4 }); + T('-5.2', '-23421458', '2.2201862924161254179820914650146886671188446082220842101290192950413249252032047e-7'); + BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 0 }); + T('-1416968', '195116', '-7.2622'); + BigNumber.config({ DECIMAL_PLACES : 66, ROUNDING_MODE : 1 }); + T('-2235863915', '4049', '-552201.510249444307236354655470486539886391701654729562855025932328970116'); + BigNumber.config({ DECIMAL_PLACES : 9, ROUNDING_MODE : 1 }); + T('0.000000026', '-135677754', '0'); + BigNumber.config({ DECIMAL_PLACES : 1, ROUNDING_MODE : 1 }); + T('0.000000000000000000040315579', '-2031.1', '0'); + BigNumber.config({ DECIMAL_PLACES : 23, ROUNDING_MODE : 0 }); + T('19.54706', '26', '0.75181'); + BigNumber.config({ DECIMAL_PLACES : 27, ROUNDING_MODE : 5 }); + T('-7', '777276.6629', '-0.000009005802353415800720292'); + BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 3 }); + T('-116803.539531', '6', '-19467.2565885'); + BigNumber.config({ DECIMAL_PLACES : 29, ROUNDING_MODE : 0 }); + T('1920.573', '-2543.47', '-0.75509952938308688523945633328'); + BigNumber.config({ DECIMAL_PLACES : 9, ROUNDING_MODE : 6 }); + T('-1', '29009.081658', '-0.000034472'); + BigNumber.config({ DECIMAL_PLACES : 74, ROUNDING_MODE : 4 }); + T('0.339269187032', '124035.423', '0.00000273526045081492566845198730043432834505671819251182785098414990691812'); + BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 3 }); + T('537169.20', '-4.69236435329', '-114477.299620471646505593344002922087290682432367736916573868681887835934263932376920317895'); + BigNumber.config({ DECIMAL_PLACES : 21, ROUNDING_MODE : 5 }); + T('0', '1', '0'); + BigNumber.config({ DECIMAL_PLACES : 42, ROUNDING_MODE : 2 }); + T('-131935099', '99727829.3', '-1.322951676839515848160549504710817966234426'); + BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 4 }); + T('0.0000000000000000242440379', '161792.78', '1.49846228614156948165424934289404014196430767800639806e-22'); + BigNumber.config({ DECIMAL_PLACES : 31, ROUNDING_MODE : 2 }); + T('-1212.57', '8355.383', '-0.1451244066250463922479675677344'); + BigNumber.config({ DECIMAL_PLACES : 64, ROUNDING_MODE : 2 }); + T('-9.5', '-2058275.01670', '0.0000046155153820169283114828179899366894939001277535158647490181'); + BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 3 }); + T('-7.632', '2211501.37', '-0.0001'); + BigNumber.config({ DECIMAL_PLACES : 85, ROUNDING_MODE : 1 }); + T('-0.000000000000000042828921', '-95402.2642', '4.489298169088947052474672818090202098159427121856506210677544904e-22'); + BigNumber.config({ DECIMAL_PLACES : 35, ROUNDING_MODE : 2 }); + T('-0.00001354439488', '-136.072', '9.953844200129343288847080958e-8'); + BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 5 }); + T('-146339.03', '-225012.7', '0.6503589797375881450247030500945057767850436886451298082286022077864938290149844875422587258408081'); + BigNumber.config({ DECIMAL_PLACES : 93, ROUNDING_MODE : 4 }); + T('0.000000000000632992', '0.000048002', '1.3186783884004833131952835298529227948835465188950460397483438190075413524436481813258e-8'); + BigNumber.config({ DECIMAL_PLACES : 70, ROUNDING_MODE : 2 }); + T('-5', '1657832.833', '-0.0000030159856292338251693920939494386283517404556072029489115565127669'); + BigNumber.config({ DECIMAL_PLACES : 50, ROUNDING_MODE : 4 }); + T('37.5', '-119757494', '-3.1313280486647457736548829253224019534009287e-7'); + BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 6 }); + T('-318.60', '-0.00000000000001136', '28045774647887323.943661971830985915'); + BigNumber.config({ DECIMAL_PLACES : 19, ROUNDING_MODE : 0 }); + T('811.332688', '-34.233242365', '-23.7001414984139788186'); + BigNumber.config({ DECIMAL_PLACES : 31, ROUNDING_MODE : 6 }); + T('-133201997.7', '-16558085765', '0.0080445287933921992220095255679'); + BigNumber.config({ DECIMAL_PLACES : 21, ROUNDING_MODE : 1 }); + T('0.0000000000000033574327', '-25435.385', '-1.31e-19'); + BigNumber.config({ DECIMAL_PLACES : 92, ROUNDING_MODE : 3 }); + T('-340.749462705', '0.000000000000004888', '-69711428540302782.32405891980360065466448445171849427168576104746317512274959083469721767594108019639934533552'); + BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 5 }); + T('-11047200.46', '0.27', '-40915557.2592592592592592592592592592592593'); + BigNumber.config({ DECIMAL_PLACES : 27, ROUNDING_MODE : 2 }); + T('0.00000462644', '-26293112', '-1.75956349328295e-13'); + BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 0 }); + T('-4432656.421', '308.63692', '-14362.04204279902741383'); + BigNumber.config({ DECIMAL_PLACES : 53, ROUNDING_MODE : 4 }); + T('7', '0.000000000000000000157', '44585987261146496815.28662420382165605095541401273885350318471337579617834'); + BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 4 }); + T('-562908.8975', '-41412.2282', '13.59281840091859630967647377158034688894136828889588703657341480601616'); + BigNumber.config({ DECIMAL_PLACES : 45, ROUNDING_MODE : 6 }); + T('51.0770', '-0.00000000049300', '-103604462474.645030425963488843813387423935091277890466531'); + BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 1 }); + T('-46603.49', '-7', '6657.64142857142857142857142857142857142857142857142857142857142857142857'); + BigNumber.config({ DECIMAL_PLACES : 37, ROUNDING_MODE : 5 }); + T('82292411.5750', '0.00000000000000000001936', '4.25064109375e+27'); + BigNumber.config({ DECIMAL_PLACES : 42, ROUNDING_MODE : 4 }); + T('0', '435', '0'); + BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 6 }); + T('-1.25603776', '35257646', '-3.562454963669440665437505385356696814075e-8'); + BigNumber.config({ DECIMAL_PLACES : 62, ROUNDING_MODE : 5 }); + T('0.0000137705283114', '2102089', '6.55087787025192558450189311679952656619201185106815e-12'); + BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 0 }); + T('-1.452', '-0.00000000000003591683', '40426730309996.7342'); + BigNumber.config({ DECIMAL_PLACES : 99, ROUNDING_MODE : 2 }); + T('2', '-136175936.0', '-1.4686882710319685263628369699621524907308145838630402364188633151748632004996829983235804599e-8'); + BigNumber.config({ DECIMAL_PLACES : 22, ROUNDING_MODE : 3 }); + T('9.219390', '650720', '0.0000141679831571182689'); + BigNumber.config({ DECIMAL_PLACES : 98, ROUNDING_MODE : 6 }); + T('-999.439', '0.000000323', '-3094238390.0928792569659442724458204334365325077399380804953560371517027863777089783281733746130030959752322'); + BigNumber.config({ DECIMAL_PLACES : 40, ROUNDING_MODE : 1 }); + T('732035039.9', '-0.000000000000000035', '-2.09152868542857142857142857142857142857142857142857142857142857142e+25'); + BigNumber.config({ DECIMAL_PLACES : 59, ROUNDING_MODE : 0 }); + T('239310308', '3.1', '77196873.5483870967741935483870967741935483870967741935483870967742'); + BigNumber.config({ DECIMAL_PLACES : 58, ROUNDING_MODE : 1 }); + T('-2746.62', '0.00000053794792', '-5105735886.1058520311780367140372993727719962185186997284049355558433'); + BigNumber.config({ DECIMAL_PLACES : 37, ROUNDING_MODE : 4 }); + T('27804.01396', '-9810.75291', '-2.8340346775689002649644755959917453471'); + BigNumber.config({ DECIMAL_PLACES : 32, ROUNDING_MODE : 6 }); + T('27.71', '0.0000000000011523', '24047557059793.456565130608348520350603141543'); + BigNumber.config({ DECIMAL_PLACES : 70, ROUNDING_MODE : 3 }); + T('-283504594', '78447408821.3', '-0.0036139446574432038958112757577688127075463618032118161382991188901351'); + BigNumber.config({ DECIMAL_PLACES : 70, ROUNDING_MODE : 1 }); + T('2774774', '-79.4027727', '-34945.5554969555867914924839897939735295918702849025321253044857462515285691'); + BigNumber.config({ DECIMAL_PLACES : 56, ROUNDING_MODE : 5 }); + T('2.50', '29.54', '0.0846310088016249153689911983750846310088016249153689912'); + BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 0 }); + T('-26269.730773', '-1.551888', '16927.5944997319394183085377295268730733145690926149309744002144484653531698163785016'); + BigNumber.config({ DECIMAL_PLACES : 2, ROUNDING_MODE : 6 }); + T('-7339052664.8', '-14235', '515563.94'); + BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 4 }); + T('0.00000000000000233553653', '-0.108', '0'); + BigNumber.config({ DECIMAL_PLACES : 49, ROUNDING_MODE : 6 }); + T('-0.0000000000000000008666', '47471219.4', '-1.82552715298482515913632e-26'); + BigNumber.config({ DECIMAL_PLACES : 99, ROUNDING_MODE : 5 }); + T('-1069.7', '-1004', '1.06543824701195219123505976095617529880478087649402390438247011952191235059760956175298804780876494'); + BigNumber.config({ DECIMAL_PLACES : 24, ROUNDING_MODE : 5 }); + T('-370.147', '0.0000000000000000017022491', '-217445848554127595074.069946637069744962708454'); + BigNumber.config({ DECIMAL_PLACES : 23, ROUNDING_MODE : 1 }); + T('5720.76', '-1091.4373472', '-5.24149188652576099056178'); + BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 0 }); + T('1.82075', '-1.83', '-0.99494535519125683061'); + BigNumber.config({ DECIMAL_PLACES : 90, ROUNDING_MODE : 3 }); + T('-0.0000202', '-120999', '1.6694352845891288357755022768783213084405656245092934652352498780981661005462855e-10'); + BigNumber.config({ DECIMAL_PLACES : 23, ROUNDING_MODE : 0 }); + T('-2.383099', '0.000007206', '-330710.38023868998057174576742'); + BigNumber.config({ DECIMAL_PLACES : 45, ROUNDING_MODE : 6 }); + T('3.507', '-4', '-0.87675'); + BigNumber.config({ DECIMAL_PLACES : 83, ROUNDING_MODE : 2 }); + T('-5.4058497', '0.0000252', '-214517.84523809523809523809523809523809523809523809523809523809523809523809523809523809523'); + BigNumber.config({ DECIMAL_PLACES : 70, ROUNDING_MODE : 4 }); + T('53.7606', '1.5', '35.8404'); + BigNumber.config({ DECIMAL_PLACES : 41, ROUNDING_MODE : 1 }); + T('-472.386625', '-2133245.7', '0.0002214403268221752421673696564816701611'); + BigNumber.config({ DECIMAL_PLACES : 55, ROUNDING_MODE : 4 }); + T('-21.439', '-0.000118', '181686.4406779661016949152542372881355932203389830508474576271'); + BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 1 }); + T('0', '7.07557', '0'); + BigNumber.config({ DECIMAL_PLACES : 93, ROUNDING_MODE : 3 }); + T('3.282', '-1.4', '-2.344285714285714285714285714285714285714285714285714285714285714285714285714285714285714285715'); + BigNumber.config({ DECIMAL_PLACES : 80, ROUNDING_MODE : 0 }); + T('0.0000000000000000001520', '-393665.3', '-3.8611480361616835418310935711123129216621327813246430407e-25'); + BigNumber.config({ DECIMAL_PLACES : 21, ROUNDING_MODE : 6 }); + T('-1.49', '-50637.5', '0.000029424833374475438'); + BigNumber.config({ DECIMAL_PLACES : 49, ROUNDING_MODE : 5 }); + T('-27957', '-0.00000000000000088964279', '31424972263305815135.0835991151010171172184737202220230436532847076746'); + BigNumber.config({ DECIMAL_PLACES : 74, ROUNDING_MODE : 2 }); + T('-47', '-0.0000000000027870669', '16863606682710.05622434108058188341298875889918537656918102683505731419651246979396152996'); + BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 2 }); + T('0.0000000000013548773', '-40894', '-3.31314447107155083875385142e-17'); + BigNumber.config({ DECIMAL_PLACES : 37, ROUNDING_MODE : 4 }); + T('-18409.7', '0.000000000000000003349', '-5.49707375335921170498656315318005374738727978501045088086e+21'); + BigNumber.config({ DECIMAL_PLACES : 71, ROUNDING_MODE : 0 }); + T('-0.000000576194', '6781238.273', '-8.496884739976751440717293314904877992922281732659595045025e-14'); + BigNumber.config({ DECIMAL_PLACES : 53, ROUNDING_MODE : 0 }); + T('-1175147973.37', '-227632.0', '5162.49021829092570464609545230898994868911225135306108105'); + BigNumber.config({ DECIMAL_PLACES : 43, ROUNDING_MODE : 4 }); + T('2.634685', '-21.564121', '-0.1221791048195286976918743870895549139239202'); + BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 3 }); + T('-10.499', '6', '-1.749833333333333333333333333333333333333333333333333333333333333333334'); + BigNumber.config({ DECIMAL_PLACES : 42, ROUNDING_MODE : 2 }); + T('10164.877', '1', '10164.877'); + BigNumber.config({ DECIMAL_PLACES : 5, ROUNDING_MODE : 3 }); + T('-12826.3', '0.00000000003228296', '-397308673058480.38718'); + BigNumber.config({ DECIMAL_PLACES : 88, ROUNDING_MODE : 6 }); + T('-6', '-0.00000000018569207', '32311557515.6225034273138319800086239547009196461647500617554643017335096754535613717914825334221327'); + BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 1 }); + T('-0.0000000000000025251098436', '-1196.32', '0'); + BigNumber.config({ DECIMAL_PLACES : 35, ROUNDING_MODE : 0 }); + T('-38919054533', '2048.5', '-18998806.21576763485477178423236514522821577'); + BigNumber.config({ DECIMAL_PLACES : 53, ROUNDING_MODE : 1 }); + T('-53882', '-0.00047938018', '112399306.95507686613159517775641037140918091357051933185890163'); + BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 5 }); + T('6.743484', '-35154451448', '-1.9e-10'); + BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 2 }); + T('135.562', '9.5', '14.2696842105263157894736842105263157894736842105263157894736842105263157894736843'); + BigNumber.config({ DECIMAL_PLACES : 88, ROUNDING_MODE : 6 }); + T('-0.000000000000027', '-3', '9e-15'); + BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 6 }); + T('440895409.37', '-4.244', '-103886759.983506126295947219604147031102733270499528746465598492'); + BigNumber.config({ DECIMAL_PLACES : 36, ROUNDING_MODE : 3 }); + T('-56.521', '1468243.7', '-0.000038495653003653276360048403408781'); + BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 2 }); + T('-1', '-9.113', '0.1097333479644464'); + BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 5 }); + T('-8.3', '-2599.30', '0.003193167391'); + BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 1 }); + T('522007.492', '0.00000000000003658', '14270297758337889557.135046473482'); + BigNumber.config({ DECIMAL_PLACES : 72, ROUNDING_MODE : 6 }); + T('-199.8732', '15499', '-0.012895877153364733208594102845344860958771533647332085941028453448609588'); + BigNumber.config({ DECIMAL_PLACES : 87, ROUNDING_MODE : 0 }); + T('-6', '20461.253171', '-0.000293237171245399473680164650751928277384589524758585960805127657740372523930782655776'); + BigNumber.config({ DECIMAL_PLACES : 87, ROUNDING_MODE : 1 }); + T('-4.031987', '-718944.2373', '0.00000560820546408738840864202306333723776827329748735159657979777508955909117765453713'); + BigNumber.config({ DECIMAL_PLACES : 32, ROUNDING_MODE : 3 }); + T('-13.301223979', '-1088989.879', '0.00001221427695105327971555922972'); + BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 5 }); + T('-120.71282', '-1.6332383817', '73.91010482765707587215956253570819447023775512830883651036597482626990604723675408589'); + BigNumber.config({ DECIMAL_PLACES : 19, ROUNDING_MODE : 5 }); + T('32618.98', '-0.05105766719', '-638865.4592975343494145252'); + BigNumber.config({ DECIMAL_PLACES : 24, ROUNDING_MODE : 3 }); + T('-0.3666', '0.0000000099345', '-36901706.175449192208968745281595'); + BigNumber.config({ DECIMAL_PLACES : 43, ROUNDING_MODE : 4 }); + T('-27', '277.0', '-0.097472924187725631768953068592057761732852'); + BigNumber.config({ DECIMAL_PLACES : 49, ROUNDING_MODE : 4 }); + T('39.944', '-1', '-39.944'); + BigNumber.config({ DECIMAL_PLACES : 59, ROUNDING_MODE : 4 }); + T('960310', '-1.3', '-738700'); + BigNumber.config({ DECIMAL_PLACES : 78, ROUNDING_MODE : 2 }); + T('1083.46', '5.7', '190.080701754385964912280701754385964912280701754385964912280701754385964912280702'); + BigNumber.config({ DECIMAL_PLACES : 91, ROUNDING_MODE : 3 }); + T('0.0000000011317252', '-0.0000000000242784677', '-46.6143586153915306607261709518842492683341790964839185464740017344669573195511016537505783366'); + BigNumber.config({ DECIMAL_PLACES : 99, ROUNDING_MODE : 1 }); + T('0.00000000000000000003202048434', '-37461279.158', '-8.54762172026950196221059857488382671526926186870065554209444969428504959e-28'); + BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 6 }); + T('-105350.008', '8302.589', '-12.6888140555'); + BigNumber.config({ DECIMAL_PLACES : 5, ROUNDING_MODE : 3 }); + T('7205.714', '1068.943458', '6.74096'); + BigNumber.config({ DECIMAL_PLACES : 27, ROUNDING_MODE : 5 }); + T('0.0000000000000001024647', '2.42438', '4.2264290252e-17'); + BigNumber.config({ DECIMAL_PLACES : 39, ROUNDING_MODE : 5 }); + T('-3323840.9', '117167158', '-0.02836836667148656110614204707431753188'); + BigNumber.config({ DECIMAL_PLACES : 21, ROUNDING_MODE : 4 }); + T('-1289.2', '-1324714.0', '0.000973191194476694592'); + BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 6 }); + T('1.703004195', '-1', '-1.703004195'); + BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 0 }); + T('4.735795', '-115.173571', '-0.041118764998612398672608666444839154982873631659818900639974078775416280182'); + BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 5 }); + T('0.00000053', '-50426083392', '-1.05104335762091621934229636709676268327383326911704322753205032418314690276868053e-17'); + BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 5 }); + T('2.5', '-0.000000000007057964178', '-354209788679.9447567272705418369721853241176935'); + BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 2 }); + T('-1', '-6.8', '0.147058823529411764705882352941176470588235294117647058823529411764705882352941177'); + BigNumber.config({ DECIMAL_PLACES : 31, ROUNDING_MODE : 3 }); + T('-5', '-0.0007996', '6253.1265632816408204102051025512756'); + BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 5 }); + T('0.000000000000013077699', '-2.3', '-5.6859560869565217391304347826086956521739130434782608695652173913043478260869565217e-15'); + BigNumber.config({ DECIMAL_PLACES : 94, ROUNDING_MODE : 5 }); + T('72500883354', '0.0749', '967969070146.8624833110814419225634178905206942590120160213618157543391188251001335113484646194926568758344'); + BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 2 }); + T('-0.754', '-1024768.17707', '7.35776165645408862461994055098044302504855104243406011526606548002844102407955e-7'); + BigNumber.config({ DECIMAL_PLACES : 31, ROUNDING_MODE : 2 }); + T('0.0000097840146', '1.7', '0.0000057553027058823529411764706'); + BigNumber.config({ DECIMAL_PLACES : 2, ROUNDING_MODE : 4 }); + T('147.9', '2', '73.95'); + BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 4 }); + T('87333.5', '-3756', '-23.251730564430245'); + BigNumber.config({ DECIMAL_PLACES : 70, ROUNDING_MODE : 1 }); + T('-1508.641', '-0.0000000000000000145261483022', '103856918476559596968.42478791638561659073463014971310830350197937413978111299417764800135'); + BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 5 }); + T('-0.000000007182', '2.6', '0'); + BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 0 }); + T('-6', '-1.1', '5.454545454545454545454545454545454545454545454545454545454545454545455'); + BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 3 }); + T('2', '6577.20806', '0'); + BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 1 }); + T('-0.00000000021318134', '4229870.2971', '0'); + BigNumber.config({ DECIMAL_PLACES : 94, ROUNDING_MODE : 4 }); + T('69960189968', '-598702452', '-116.8530206186628412204999621414612145266443639018201315133414552977311006569921313768061868569063'); + BigNumber.config({ DECIMAL_PLACES : 86, ROUNDING_MODE : 2 }); + T('1', '3', '0.33333333333333333333333333333333333333333333333333333333333333333333333333333333333334'); + BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 5 }); + T('144.0', '-3.2702', '-44.034004036450370007950584062136872362546633233441379732126475444926915784967'); + BigNumber.config({ DECIMAL_PLACES : 87, ROUNDING_MODE : 2 }); + T('3', '1542.4268', '0.001944986951730869821504657465754614740874575052767496000458498257421357045922697919928'); + BigNumber.config({ DECIMAL_PLACES : 50, ROUNDING_MODE : 3 }); + T('-434863226.9', '0.00000000000000042892', '-1.01385625967546395598246759302434020330131493052317448475240138021076191365e+24'); + BigNumber.config({ DECIMAL_PLACES : 88, ROUNDING_MODE : 5 }); + T('-9', '5.6297132122', '-1.5986604753677935495031822750866200864270021687056053835551719260986336749084605528602738'); + BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 4 }); + T('-8.408363', '-4.6268', '1.81731715224345119737183366473588657387395176'); + BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 4 }); + T('-1.061', '-199699007.68', '5.3129958547423464092398037898953269350567060364072811601063635290268259e-9'); + BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 4 }); + T('-10.70', '14.8787', '-0.719148850369992001989421118780538622325875244477004039331393199674703'); + BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 5 }); + T('-316352', '-77.54', '4079.855558421459891668816094918751612071189063709053391797781790043848336342533'); + BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 1 }); + T('984.409', '138.1693670', '7.12465448292891144243282232016015532589072366525'); + BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 5 }); + T('20.7946994', '-4.1047432', '-5.06601713841684420111835498016051284280098204438221616397342469560581'); + BigNumber.config({ DECIMAL_PLACES : 49, ROUNDING_MODE : 0 }); + T('1', '-5760.0', '-0.0001736111111111111111111111111111111111111111112'); + BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 2 }); + T('658.3', '-5.3', '-124.20754716981132075'); + BigNumber.config({ DECIMAL_PLACES : 74, ROUNDING_MODE : 3 }); + T('2.2', '0.000000000000017779128', '123740601901285.59735888059301896020997205262260331327835650882315488138675867567858221168'); + BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 5 }); + T('37440.0', '-0.00000307068092966', '-12192735376.17128134113831086'); + BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 0 }); + T('-1.5488', '1', '-1.5488'); + BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 4 }); + T('-7.4', '3', '-2.4667'); + BigNumber.config({ DECIMAL_PLACES : 1, ROUNDING_MODE : 6 }); + T('-46.88587390', '6.0', '-7.8'); + BigNumber.config({ DECIMAL_PLACES : 24, ROUNDING_MODE : 1 }); + T('-0.0000000056373', '42', '-1.34221428571428e-10'); + BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 1 }); + T('7.8', '-42', '-0.18571428'); + BigNumber.config({ DECIMAL_PLACES : 46, ROUNDING_MODE : 3 }); + T('4.067698401', '-4.73189072461', '-0.8596348981273775315827220919851782113743168705'); + BigNumber.config({ DECIMAL_PLACES : 91, ROUNDING_MODE : 3 }); + T('-0.00000323175293', '-7279', '4.439830924577551861519439483445528231899986261849155103723038878966891056463799972e-10'); + BigNumber.config({ DECIMAL_PLACES : 74, ROUNDING_MODE : 3 }); + T('-1.043726', '-0.0000000000000029332638', '355824116467124.43660880415869858005952277459667964401974346800993487186525807873127538'); + BigNumber.config({ DECIMAL_PLACES : 58, ROUNDING_MODE : 1 }); + T('-535379', '-9.279', '57697.9200344864748356503933613535941372992779394331285698889966'); + BigNumber.config({ DECIMAL_PLACES : 19, ROUNDING_MODE : 5 }); + T('-623.1', '0.0012', '-519250'); + BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 1 }); + T('14228125', '-2', '-7114062.5'); + BigNumber.config({ DECIMAL_PLACES : 86, ROUNDING_MODE : 2 }); + T('-1', '-1456807028', '6.8643271262417330952085439829440471370378369701275219273585217767085072025065e-10'); + BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 5 }); + T('890.53', '-177.9', '-5.0057897695334458'); + BigNumber.config({ DECIMAL_PLACES : 1, ROUNDING_MODE : 6 }); + T('-3', '13.036', '-0.2'); + BigNumber.config({ DECIMAL_PLACES : 90, ROUNDING_MODE : 0 }); + T('-2.42526431019', '124099556443', '-1.9542892655736000808165273709623777756599439032855593040517987695705627269145163e-11'); + BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 0 }); + T('0.01089604198', '-1.19', '-0.0091563378'); + BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 3 }); + T('1', '-32436.94', '-0.00003082904860939411'); + BigNumber.config({ DECIMAL_PLACES : 87, ROUNDING_MODE : 1 }); + T('-25350502.180', '-0.0011028', '22987397696.771853463910047152702212549873050417120058034095030830612985128763148349655422560754443'); + BigNumber.config({ DECIMAL_PLACES : 99, ROUNDING_MODE : 1 }); + T('-7.31', '-10.6390251', '0.68709303073267493278120003683420203604933688895987283646882269316198906232489290771576429498225359'); + BigNumber.config({ DECIMAL_PLACES : 37, ROUNDING_MODE : 5 }); + T('-117.1', '-0.000000000050050339264', '2339644480376.7234659598410509587549955833202481606'); + BigNumber.config({ DECIMAL_PLACES : 25, ROUNDING_MODE : 4 }); + T('-0.0000000000000000057347087', '-78280.17115', '7.33e-23'); + BigNumber.config({ DECIMAL_PLACES : 60, ROUNDING_MODE : 5 }); + T('9752917.6', '0.00000021079938541', '46266347413825.697642957848128386533325804158946764929280160750920284194011'); + BigNumber.config({ DECIMAL_PLACES : 24, ROUNDING_MODE : 6 }); + T('94.919967', '-7', '-13.559995285714285714285714'); + BigNumber.config({ DECIMAL_PLACES : 27, ROUNDING_MODE : 3 }); + T('-4.2', '26059052', '-1.61172401820296455911e-7'); + BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 3 }); + T('43.2', '99230.61840', '0.000435349498940540715203282457826545198674283380259575203856635443481222928668153'); + BigNumber.config({ DECIMAL_PLACES : 27, ROUNDING_MODE : 4 }); + T('-0.0515', '2437300.243', '-2.1129936760113801047e-8'); + BigNumber.config({ DECIMAL_PLACES : 55, ROUNDING_MODE : 0 }); + T('0', '1851.051', '0'); + BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 6 }); + T('1.5', '254.258', '0.005899519385820701806826137230686940037284962518386835419141187297941'); + BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 2 }); + T('-0.00000000000000021226', '1971.308560', '-1.0767467067661898652740593e-19'); + BigNumber.config({ DECIMAL_PLACES : 85, ROUNDING_MODE : 3 }); + T('237.83', '0.00015086', '1576494.7633567546069203234787219939016306509346413893676256131512660745061646559724247646824'); + BigNumber.config({ DECIMAL_PLACES : 23, ROUNDING_MODE : 2 }); + T('-1.1', '-49.9', '0.02204408817635270541083'); + BigNumber.config({ DECIMAL_PLACES : 28, ROUNDING_MODE : 1 }); + T('-0.0000036459608843', '-35.02', '1.041108190833809251856e-7'); + BigNumber.config({ DECIMAL_PLACES : 70, ROUNDING_MODE : 0 }); + T('-6', '7759857', '-7.732101248773012183085332629196646278404357193695708567825412247e-7'); + BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 2 }); + T('-82.15846', '-8468.52', '0.009701631453902216680128286878935162224331996618063132637107782705832896422'); + BigNumber.config({ DECIMAL_PLACES : 58, ROUNDING_MODE : 5 }); + T('-6.3', '-0.00000000000000059361951', '10612858731681510.939557899638440117980623648976766279127180304434401086312'); + BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 4 }); + T('314.53458', '-2.69', '-116.9274'); + BigNumber.config({ DECIMAL_PLACES : 35, ROUNDING_MODE : 1 }); + T('-0.0000000000000000065388', '-0.0000029308929', '2.23099247331760229109702e-12'); + BigNumber.config({ DECIMAL_PLACES : 78, ROUNDING_MODE : 2 }); + T('-128.87', '-5770447', '0.00002233275862337874344916433683560389689048352753261575749677624627693487177'); + BigNumber.config({ DECIMAL_PLACES : 74, ROUNDING_MODE : 1 }); + T('2.76200', '203486645550', '1.357337230919820428481184916756322243083927037589322529377161871e-11'); + BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 5 }); + T('862.947141', '38.87', '22.20085261126833033187548237715461795729354257782351427836377669153589'); + BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 3 }); + T('-476024', '699486.3', '-0.680533700231155349289900316846806006064736364386264605897213426481690920895'); + BigNumber.config({ DECIMAL_PLACES : 27, ROUNDING_MODE : 4 }); + T('0.00002744058', '8354.10383', '3.284682661168217729e-9'); + BigNumber.config({ DECIMAL_PLACES : 87, ROUNDING_MODE : 6 }); + T('0', '-528.932', '0'); + BigNumber.config({ DECIMAL_PLACES : 56, ROUNDING_MODE : 1 }); + T('2.4', '5', '0.48'); + BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 5 }); + T('-87.9458', '242.4', '-0.36281270627'); + BigNumber.config({ DECIMAL_PLACES : 24, ROUNDING_MODE : 0 }); + T('-2.1', '17429886.8', '-1.2048271019178392e-7'); + BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 5 }); + T('-610022032', '-186142.5270', '3277.1771278252819679406200389661627404'); + BigNumber.config({ DECIMAL_PLACES : 88, ROUNDING_MODE : 1 }); + T('61.0', '1', '61'); + BigNumber.config({ DECIMAL_PLACES : 74, ROUNDING_MODE : 4 }); + T('-2.68', '-2.30906614401', '1.16064236918992025908292941365354439403337618554579882928834021816012412931'); + BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 2 }); + T('6', '20.04948435', '0.299259566742922243783292112447769760223284744976496116220565044107979764577'); + BigNumber.config({ DECIMAL_PLACES : 55, ROUNDING_MODE : 5 }); + T('-562.5474', '-2', '281.2737'); + BigNumber.config({ DECIMAL_PLACES : 85, ROUNDING_MODE : 4 }); + T('-708276.119', '-437.0985', '1620.4039112465496907447634800851524313169686008988820597645610771942708565689426982705271'); + BigNumber.config({ DECIMAL_PLACES : 48, ROUNDING_MODE : 4 }); + T('3.1', '40741823.67', '7.6088886572906813623740765652378564722211e-8'); + BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 1 }); + T('0.478356', '-3484.06', '-0.00013729843917728167712381531890954805600362795'); + BigNumber.config({ DECIMAL_PLACES : 71, ROUNDING_MODE : 2 }); + T('-0.000000000005449', '-2196.4', '2.48087780003642323802586049899836095428883627754507375706e-15'); + BigNumber.config({ DECIMAL_PLACES : 30, ROUNDING_MODE : 5 }); + T('-1599645.6', '0.0000048', '-333259500000'); + BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 2 }); + T('124.7', '-0.00000006670188426', '-1869512404.08631898519623619400283490582159455175786963'); + BigNumber.config({ DECIMAL_PLACES : 6, ROUNDING_MODE : 6 }); + T('1.5', '154', '0.00974'); + BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 6 }); + T('1.5188', '6', '0.2531333333333333'); + BigNumber.config({ DECIMAL_PLACES : 70, ROUNDING_MODE : 0 }); + T('71100982.8', '2.2', '32318628.5454545454545454545454545454545454545454545454545454545454545454545455'); + BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 6 }); + T('6579.42', '0.00000000000000001643', '400451612903225806451.6129032258064516'); + BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 1 }); + T('0', '-1788.49', '0'); + BigNumber.config({ DECIMAL_PLACES : 2, ROUNDING_MODE : 4 }); + T('1.764', '1412.9430637', '0'); + BigNumber.config({ DECIMAL_PLACES : 60, ROUNDING_MODE : 1 }); + T('3226472.9', '-6.057428', '-532647.338111158729414530391446666803138229624850679199158454710481'); + BigNumber.config({ DECIMAL_PLACES : 96, ROUNDING_MODE : 1 }); + T('451001810', '-1.2637722', '-356869545.001860303621174765515494010708575485360415429299679166862508923681024159259081660444817507459018'); + BigNumber.config({ DECIMAL_PLACES : 25, ROUNDING_MODE : 2 }); + T('-7', '-0.0000000000000000008861615', '7899237328635920201.9045061199341203606791765'); + BigNumber.config({ DECIMAL_PLACES : 99, ROUNDING_MODE : 5 }); + T('-350', '-0.00000000000056801180312', '616184378700415.622447814038304873596796394684045733884009646070539211086666969611545138343920264274384397408505739'); + BigNumber.config({ DECIMAL_PLACES : 62, ROUNDING_MODE : 6 }); + T('0', '161224.6', '0'); + BigNumber.config({ DECIMAL_PLACES : 40, ROUNDING_MODE : 0 }); + T('-18239292.2', '9.50', '-1919925.4947368421052631578947368421052631578948'); + BigNumber.config({ DECIMAL_PLACES : 28, ROUNDING_MODE : 4 }); + T('4556.782', '8.837', '515.648070612198709969446644789'); + BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 3 }); + T('11.7', '-637.470651', '-0.018353786141599168304298922147554680129109190942188176126715518390194876595189321116'); + BigNumber.config({ DECIMAL_PLACES : 90, ROUNDING_MODE : 0 }); + T('-0.10117999', '9.6714', '-0.010461772856049796306636060963252476373637736005128523274810265318361354095580784581342929'); + BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 6 }); + T('366.6', '-422196.5149', '-0.00086831602597864078'); + BigNumber.config({ DECIMAL_PLACES : 74, ROUNDING_MODE : 3 }); + T('0.0000000000000447155', '-0.00000000000000033', '-135.50151515151515151515151515151515151515151515151515151515151515151515151516'); + BigNumber.config({ DECIMAL_PLACES : 48, ROUNDING_MODE : 0 }); + T('-66.96560', '-2.5010587', '26.774901364770047180420035723271908812056270410607'); + BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 3 }); + T('-203481271278', '-5.0', '40696254255.6'); + BigNumber.config({ DECIMAL_PLACES : 66, ROUNDING_MODE : 4 }); + T('0.00000000000025348951382', '-30.8628936590', '-8.213407226839189622080277407859891430797869373561451e-15'); + BigNumber.config({ DECIMAL_PLACES : 73, ROUNDING_MODE : 2 }); + T('-9599430918.0', '3', '-3199810306'); + BigNumber.config({ DECIMAL_PLACES : 19, ROUNDING_MODE : 6 }); + T('-0.0000000051', '63575.8', '-8.02192e-14'); + BigNumber.config({ DECIMAL_PLACES : 55, ROUNDING_MODE : 1 }); + T('-0.000000000000000204846', '-0.0085956665', '2.38313108122563852378404862496701099327201e-14'); + BigNumber.config({ DECIMAL_PLACES : 63, ROUNDING_MODE : 4 }); + T('-4194153144.00', '0.000000000000000106309', '-3.9452474804579104309136573573262846983792529324892530265546661148162432155320810091337516e+25'); + BigNumber.config({ DECIMAL_PLACES : 7, ROUNDING_MODE : 0 }); + T('4.5', '-0.00000000000000000610', '-737704918032786885.2459017'); + BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 3 }); + T('-0.000654724', '0.458008516280', '-0.001429501803411313633838267283495849148405708330642484532798740211232999739364585'); + BigNumber.config({ DECIMAL_PLACES : 41, ROUNDING_MODE : 4 }); + T('-2.59275', '2565235.42598', '-0.00000101072594497227815802799752975209378'); + BigNumber.config({ DECIMAL_PLACES : 87, ROUNDING_MODE : 6 }); + T('-33.5', '1115627188.1', '-3.0027952309994443026249155643000593882711955395379629687244621929450089564377837e-8'); + BigNumber.config({ DECIMAL_PLACES : 19, ROUNDING_MODE : 6 }); + T('-44943.972', '-4', '11235.993'); + BigNumber.config({ DECIMAL_PLACES : 78, ROUNDING_MODE : 2 }); + T('1', '-3.2', '-0.3125'); + BigNumber.config({ DECIMAL_PLACES : 36, ROUNDING_MODE : 4 }); + T('-667305176.87', '-33285.052326', '20048.193715734283625893795748272305119524'); + BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 6 }); + T('-30', '1215.69862', '-0.024677168754209822167931719787590118346930425897826551781394635456606835664582724'); + BigNumber.config({ DECIMAL_PLACES : 98, ROUNDING_MODE : 6 }); + T('-68.0', '-19.9', '3.41708542713567839195979899497487437185929648241206030150753768844221105527638190954773869346733668'); + BigNumber.config({ DECIMAL_PLACES : 22, ROUNDING_MODE : 1 }); + T('-83', '48.2', '-1.7219917012448132780082'); + BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 4 }); + T('476', '-0.00000000000000000329', '-144680851063829787234.04255319149'); + BigNumber.config({ DECIMAL_PLACES : 21, ROUNDING_MODE : 1 }); + T('-613857939.8', '-1.122', '547110463.279857397504456327985'); + BigNumber.config({ DECIMAL_PLACES : 71, ROUNDING_MODE : 4 }); + T('-17.46689', '-310.8342', '0.05619359131009393432254237146362916307150242798250642947268994209774857'); + BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 0 }); + T('-1', '36.33648', '-0.027520552348493855211071628292008471926834960348388176290053411887997956875'); + BigNumber.config({ DECIMAL_PLACES : 38, ROUNDING_MODE : 2 }); + T('-9', '-577.05236390', '0.01559650486339511900230169042376571746'); + BigNumber.config({ DECIMAL_PLACES : 96, ROUNDING_MODE : 1 }); + T('-918904792', '-53.804758', '17078504.321123421835667395809121565048206331492095922074400929375056384418641934975341771818767403432982'); + BigNumber.config({ DECIMAL_PLACES : 89, ROUNDING_MODE : 0 }); + T('-356269745137', '-1.24', '287314310594.35483870967741935483870967741935483870967741935483870967741935483870967741935483870967742'); + BigNumber.config({ DECIMAL_PLACES : 66, ROUNDING_MODE : 2 }); + T('0.0000000000178448365', '1.1664', '1.5299071073388203017832647462277091906721536351165980796e-11'); + BigNumber.config({ DECIMAL_PLACES : 7, ROUNDING_MODE : 3 }); + T('-3659760', '13', '-281520'); + BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 1 }); + T('-44616.5788', '0.00000003071474', '-1452611313004.76578997'); + BigNumber.config({ DECIMAL_PLACES : 39, ROUNDING_MODE : 2 }); + T('989.3', '-138.07', '-7.165206054899688563771999710291880929963'); + BigNumber.config({ DECIMAL_PLACES : 56, ROUNDING_MODE : 1 }); + T('353786', '-1', '-353786'); + BigNumber.config({ DECIMAL_PLACES : 89, ROUNDING_MODE : 6 }); + T('49133.4', '695.8696375', '70.60719041646647501558795917432164153016375858186512700088886979208084790163013830302374703'); + BigNumber.config({ DECIMAL_PLACES : 74, ROUNDING_MODE : 2 }); + T('102819', '18022', '5.70519365220286316724003995117079125513261569193208300965486627455332371546'); + BigNumber.config({ DECIMAL_PLACES : 59, ROUNDING_MODE : 3 }); + T('-0.000000000000000161022', '-49.609553207', '3.24578613574934387939124984589180398179351e-18'); + BigNumber.config({ DECIMAL_PLACES : 56, ROUNDING_MODE : 3 }); + T('5', '1.5252870117', '3.27807157711733106472895038289271495800805683868395586364'); + BigNumber.config({ DECIMAL_PLACES : 93, ROUNDING_MODE : 6 }); + T('2508047', '1', '2508047'); + BigNumber.config({ DECIMAL_PLACES : 72, ROUNDING_MODE : 0 }); + T('-6', '1.25901', '-4.765649200562346605666356899468630114137298353468201205709247742273691234'); + BigNumber.config({ DECIMAL_PLACES : 49, ROUNDING_MODE : 2 }); + T('-412715.83', '0.003302680365', '-124963903.3718602072471521173076038800987633570165364761236'); + BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 5 }); + T('-0.000089', '1294.94310595', '0'); + BigNumber.config({ DECIMAL_PLACES : 89, ROUNDING_MODE : 5 }); + T('19.32290', '-0.002176792', '-8876.77830495518175369994009533294866941811620035354778959128846486021631832531541828525646915'); + BigNumber.config({ DECIMAL_PLACES : 82, ROUNDING_MODE : 0 }); + T('0.00000000000034', '-3.7', '-9.18918918918918918918918918918918918918918918918918918918918918918919e-14'); + BigNumber.config({ DECIMAL_PLACES : 99, ROUNDING_MODE : 5 }); + T('16.8', '-94145.0351', '-0.000178448071979103229417140022926179778969565650520427709734849310178864652629993018081098999983272'); + BigNumber.config({ DECIMAL_PLACES : 71, ROUNDING_MODE : 5 }); + T('0.0000000000000059', '1.1', '5.36363636363636363636363636363636363636363636363636363636e-15'); + BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 4 }); + T('-1', '32148056', '0'); + BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 5 }); + T('9231.60239', '-0.00000000002086', '-442550450143815.915627996165'); + BigNumber.config({ DECIMAL_PLACES : 70, ROUNDING_MODE : 5 }); + T('-7', '2', '-3.5'); + BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 4 }); + T('-123714.68', '8.55', '-14469.55321637426900584795321637426900584795321637426900584795321637426900584795321637426900584795322'); + BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 0 }); + T('562244347.5', '-5.1529', '-109112217.877311805003008014904228686758912457063013060606649'); + BigNumber.config({ DECIMAL_PLACES : 93, ROUNDING_MODE : 1 }); + T('-5655445.0353', '-0.00000000000000068487962242', '8.257575273325650774295087253736487071929080450563889329391036373477855825500529424848002911618005152327977771285257e+21'); + BigNumber.config({ DECIMAL_PLACES : 78, ROUNDING_MODE : 6 }); + T('-2065.04620', '2876.71929082', '-0.71784765603993461664702558251675610043142582662148826560355133649661309292113'); + BigNumber.config({ DECIMAL_PLACES : 93, ROUNDING_MODE : 1 }); + T('0.118710', '69.35180', '0.001711707554814727231304739026240126427864885987097667255932794822917357588411548078059978255'); + BigNumber.config({ DECIMAL_PLACES : 92, ROUNDING_MODE : 3 }); + T('-4949594439.5', '24.7', '-200388438.84615384615384615384615384615384615384615384615384615384615384615384615384615384615384615385'); + BigNumber.config({ DECIMAL_PLACES : 30, ROUNDING_MODE : 2 }); + T('-2', '9749.6070256', '-0.000205136473167431906425945496'); + BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 1 }); + T('-366.794', '-6.9', '53.15855072463768115942'); + BigNumber.config({ DECIMAL_PLACES : 38, ROUNDING_MODE : 2 }); + T('15.6072462699', '-1042705.4842', '-0.0000149680293298489970673542564647422'); + BigNumber.config({ DECIMAL_PLACES : 60, ROUNDING_MODE : 0 }); + T('-2398.175827', '2703681898.73', '-8.87003692308068744785119619980849787608401428534425524e-7'); + BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 0 }); + T('2.873749', '-215659509.56', '-1.3325398939574589283880035176316664530951277750834e-8'); + BigNumber.config({ DECIMAL_PLACES : 41, ROUNDING_MODE : 3 }); + T('12090808.8357', '0.0000002724963', '44370543143888.55922080409899143584701884025581264773136'); + BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 0 }); + T('-0.0120', '0.00000006131063428', '-195724.6102722915754509790075523583377940548684860221282969248707633'); + BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 1 }); + T('13133', '-7.63333495', '-1720.479984963845979272794782836039443022214032413185274936743081082797237922855723761997'); + BigNumber.config({ DECIMAL_PLACES : 1, ROUNDING_MODE : 0 }); + T('-16.79', '48320.907', '-0.1'); + BigNumber.config({ DECIMAL_PLACES : 90, ROUNDING_MODE : 2 }); + T('-3', '-1437919.8', '0.000002086347235777683845788895875833965148821234675257966403967731719112568030567490620827'); + BigNumber.config({ DECIMAL_PLACES : 37, ROUNDING_MODE : 5 }); + T('4', '-0.42', '-9.5238095238095238095238095238095238095'); + BigNumber.config({ DECIMAL_PLACES : 93, ROUNDING_MODE : 6 }); + T('-6.3', '-16188.078180', '0.00038917528874943943469390879850569142729455239139449226455366674044565307381039594163857689'); + BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 0 }); + T('0.000000000000000007370776507', '93.3983', '7.8917673094692301680009165049042648527863997524580211846e-20'); + BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 2 }); + T('-5653.9964743', '820039.02', '-0.006'); + BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 4 }); + T('154710952.627', '-0.000594907', '-260059055662.4816988201517211933966149330903821941916971896447680057555215'); + BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 3 }); + T('-1.522', '-1.7', '0.895294117647058823529411764705882352941176470588235'); + BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 3 }); + T('0.00000000000000000125', '2.5', '5e-19'); + BigNumber.config({ DECIMAL_PLACES : 35, ROUNDING_MODE : 4 }); + T('0', '-128.316591', '0'); + BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 2 }); + T('-1', '4512938.19', '-2.2158513099422e-7'); + BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 6 }); + T('-0.0000000024299067', '1.8', '-1.34994816666666666666666666666666666667e-9'); + BigNumber.config({ DECIMAL_PLACES : 49, ROUNDING_MODE : 3 }); + T('12082101.169', '-0.0000000005771', '-20935888353838156.2987350545832611332524692427655518974181251083002'); + BigNumber.config({ DECIMAL_PLACES : 91, ROUNDING_MODE : 1 }); + T('-2665958.79092', '745824', '-3.5745146186231604239069807354013815591882267130046767065688419788046509632299309220405886643'); + BigNumber.config({ DECIMAL_PLACES : 77, ROUNDING_MODE : 1 }); + T('-306944.315', '-4781.65', '64.19213346857256386393818033523992764004057176915918145410057197829201217153074'); + BigNumber.config({ DECIMAL_PLACES : 66, ROUNDING_MODE : 3 }); + T('119308.0', '-4.129', '-28895.131993218697021070477113102446112860256720755630903366432550254299'); + BigNumber.config({ DECIMAL_PLACES : 96, ROUNDING_MODE : 1 }); + T('-53856.0273', '748.12415', '-71.9880882070175117325112416167824551580108729279759248515102740634692784613355951682618453100331'); + BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 3 }); + T('-8085542.2278', '2.51254505002', '-3218068.558705301076621847627555001669501965732558690115964'); + BigNumber.config({ DECIMAL_PLACES : 83, ROUNDING_MODE : 2 }); + T('-0.00000000488258276861', '-380.24', '1.284079204873237954975804754891647380601725226172943404165790027351146645e-11'); + BigNumber.config({ DECIMAL_PLACES : 52, ROUNDING_MODE : 3 }); + T('-61.48', '-0.000000930247', '66089973.9531543772782927545049863100875358910052921428394824'); + BigNumber.config({ DECIMAL_PLACES : 1, ROUNDING_MODE : 0 }); + T('-1.8', '-2.64409', '0.7'); + BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 1 }); + T('-1179.4999', '69.50', '-16.971221582733'); + BigNumber.config({ DECIMAL_PLACES : 31, ROUNDING_MODE : 5 }); + T('1240.137064', '-1419.8', '-0.8734589829553458233554021693196'); + BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 6 }); + T('-1445877051', '294.7427', '-4905556.782'); + BigNumber.config({ DECIMAL_PLACES : 55, ROUNDING_MODE : 1 }); + T('4.5', '-0.000000001750598', '-2570550177.7107022857332180203564724739774637009753238607607229072'); + BigNumber.config({ DECIMAL_PLACES : 6, ROUNDING_MODE : 3 }); + T('131619545056', '-3141.2', '-41901039.429518'); + BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 6 }); + T('8170', '-2571', '-3.1777518475301439128743679502139245429793854531310774017891870867366783352781019'); + BigNumber.config({ DECIMAL_PLACES : 24, ROUNDING_MODE : 1 }); + T('-67705880.846', '-0.00000000614547821', '11017186707427931.796376835579081810787186'); + BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 0 }); + T('6.359090', '-5.6', '-1.1355517857142858'); + BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 5 }); + T('-9744080.9', '6', '-1624013.4833333333333333333333333333333333333333333333333333333333333'); + BigNumber.config({ DECIMAL_PLACES : 90, ROUNDING_MODE : 3 }); + T('-1671665.19505', '-2', '835832.597525'); + BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 3 }); + T('2240.3', '240', '9.334583333333333333333333333333333333333333333333333333333'); + BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 1 }); + T('5586', '64.7872', '86.220734959992097204386051565741381013533537488886693667'); + BigNumber.config({ DECIMAL_PLACES : 83, ROUNDING_MODE : 4 }); + T('-804808.4', '-3.995009183', '201453.4543311461519611731015137443802967098211048092101469394795130812594179711551366414'); + BigNumber.config({ DECIMAL_PLACES : 63, ROUNDING_MODE : 6 }); + T('1.2', '505814736781', '2.372410119240076265539049927193109705807743251996028e-12'); + BigNumber.config({ DECIMAL_PLACES : 22, ROUNDING_MODE : 5 }); + T('0', '14', '0'); + BigNumber.config({ DECIMAL_PLACES : 26, ROUNDING_MODE : 2 }); + T('-199014.0', '-103205852.14', '0.00192832088368433871641497'); + BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 4 }); + T('528', '7536.724615', '0'); + BigNumber.config({ DECIMAL_PLACES : 2, ROUNDING_MODE : 0 }); + T('89.62', '-0.0000000000000509219417901', '-1759948596803578.52'); + BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 5 }); + T('-0.00000000308815', '74280356099', '0'); + BigNumber.config({ DECIMAL_PLACES : 42, ROUNDING_MODE : 3 }); + T('319', '3.5833458', '89.022946096913113995305727959606912623392361'); + BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 0 }); + T('5.067968', '-72', '-0.070388444444445'); + BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 0 }); + T('458459056', '55.4', '8275434.223826714801444043321299638989169675090252707581227436823104693140794223826714801445'); + BigNumber.config({ DECIMAL_PLACES : 67, ROUNDING_MODE : 2 }); + T('32.7', '34.79', '0.9399252658810002874389192296636964645012934751365334866340902558207'); + BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 0 }); + T('-861.001', '12043.6083098', '-0.071490285789134739566918624565712377017111948520635871601517334161816780874067081'); + BigNumber.config({ DECIMAL_PLACES : 5, ROUNDING_MODE : 1 }); + T('2695651.6', '-0.334', '-8070813.17365'); + BigNumber.config({ DECIMAL_PLACES : 66, ROUNDING_MODE : 4 }); + T('5', '-117770.96972', '-0.000042455284285146667297051784859838547315648272646319516099506224'); + BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 3 }); + T('0.000000000000000000016437417353', '32.45148', '5.065228874923424139669438805256339618408775192995820221e-22'); + BigNumber.config({ DECIMAL_PLACES : 24, ROUNDING_MODE : 3 }); + T('0.0000000053734', '-94.1', '-5.7103081827843e-11'); + BigNumber.config({ DECIMAL_PLACES : 64, ROUNDING_MODE : 5 }); + T('-1186721.11639', '82957.90', '-14.3051007365181616217382551872696873956549044756436698614598489113'); + BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 0 }); + T('-21133261.89', '20730.04723', '-1019.4507352311517140716133332224926146490019357278618221459787769137658641021823'); + BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 2 }); + T('-2.1', '-0.000000000000041693733659', '50367281020578.36383801033672737310656882469053909202456729781931857090054905317636523351783614846255139023361'); + BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 4 }); + T('0', '14298618731', '0'); + BigNumber.config({ DECIMAL_PLACES : 27, ROUNDING_MODE : 0 }); + T('126540726', '3211409575.2', '0.039403484057968315420622216'); + BigNumber.config({ DECIMAL_PLACES : 77, ROUNDING_MODE : 0 }); + T('9.06', '0.00000000000000000045431', '19942330127005788998.70132728753494310052607250555787898131231978164689309062094164777354669718915'); + BigNumber.config({ DECIMAL_PLACES : 48, ROUNDING_MODE : 0 }); + T('1197886', '-1.33', '-900666.165413533834586466165413533834586466165413533835'); + BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 3 }); + T('-4', '-1', '4'); + BigNumber.config({ DECIMAL_PLACES : 49, ROUNDING_MODE : 4 }); + T('535', '236221.2', '0.0022648263576681517154260498210998843456895486095'); + BigNumber.config({ DECIMAL_PLACES : 58, ROUNDING_MODE : 6 }); + T('-0.0000058900204967', '7', '-8.414314995285714285714285714285714285714285714285714e-7'); + BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 0 }); + T('-0.059141575', '1002077673', '-5.901895291504014978687186058081148366230488801640030153630615817542518982e-11'); + BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 2 }); + T('-16440', '1478098', '-0.011122401897573773863438012905774853900079697016030060253'); + BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 2 }); + T('-3.729', '76.0564', '-0.049029404494559300729458664885532315492187376736211'); + BigNumber.config({ DECIMAL_PLACES : 52, ROUNDING_MODE : 0 }); + T('1296.760949', '308.368135', '4.2052365397611526884903331532617661678953955472733913'); + BigNumber.config({ DECIMAL_PLACES : 52, ROUNDING_MODE : 6 }); + T('-0.00000000000000023', '-2.7651', '8.31796318397164659505985316986727424e-17'); + BigNumber.config({ DECIMAL_PLACES : 71, ROUNDING_MODE : 3 }); + T('52121221723', '2.2157', '23523591516.45078304824660378210046486437694633750056415579726497269485941237532156'); + BigNumber.config({ DECIMAL_PLACES : 45, ROUNDING_MODE : 4 }); + T('148.848', '-11638', '-0.012789826430658188692215157243512631036260526'); + BigNumber.config({ DECIMAL_PLACES : 48, ROUNDING_MODE : 3 }); + T('0.000000000000000035252', '1.49244280', '2.3620335734140028683176333458139e-17'); + BigNumber.config({ DECIMAL_PLACES : 29, ROUNDING_MODE : 2 }); + T('-12.3048', '-74515.7391134', '0.00016513021472247941673732625'); + BigNumber.config({ DECIMAL_PLACES : 2, ROUNDING_MODE : 1 }); + T('0.00000000019260', '-187496.8', '0'); + BigNumber.config({ DECIMAL_PLACES : 89, ROUNDING_MODE : 5 }); + T('-60916544144', '-208.0', '292868000.69230769230769230769230769230769230769230769230769230769230769230769230769230769230769231'); + BigNumber.config({ DECIMAL_PLACES : 43, ROUNDING_MODE : 3 }); + T('0.000000000000000000407', '6', '6.78333333333333333333333e-20'); + BigNumber.config({ DECIMAL_PLACES : 64, ROUNDING_MODE : 5 }); + T('-701.8', '-647126995.96', '0.0000010844857414098351564619217435003698559038553759178271323991'); + BigNumber.config({ DECIMAL_PLACES : 96, ROUNDING_MODE : 4 }); + T('-156.7', '35526492', '-0.000004410792937281845896859166393349503801275960486050804002826960793089281091980598591045803228'); + BigNumber.config({ DECIMAL_PLACES : 100, ROUNDING_MODE : 2 }); + T('6.38848', '0.0575', '111.104'); + BigNumber.config({ DECIMAL_PLACES : 40, ROUNDING_MODE : 2 }); + T('113.51390', '2', '56.75695'); + BigNumber.config({ DECIMAL_PLACES : 29, ROUNDING_MODE : 0 }); + T('-1.4', '-1.04962451', '1.33381031660550685882897303913'); + BigNumber.config({ DECIMAL_PLACES : 43, ROUNDING_MODE : 3 }); + T('-0.00000000000000000914', '-24', '3.808333333333333333333333e-19'); + BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 6 }); + T('6089.85229', '-1', '-6089.85229'); + BigNumber.config({ DECIMAL_PLACES : 91, ROUNDING_MODE : 6 }); + T('15588.7', '-1.9450218850', '-8014.6656036212158096102862102243132343983882731478879992139522892823388462798710360012221661969'); + BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 6 }); + T('0', '-6', '0'); + BigNumber.config({ DECIMAL_PLACES : 62, ROUNDING_MODE : 6 }); + T('4', '-2', '-2'); + BigNumber.config({ DECIMAL_PLACES : 87, ROUNDING_MODE : 0 }); + T('1.048670', '-2', '-0.524335'); + BigNumber.config({ DECIMAL_PLACES : 72, ROUNDING_MODE : 2 }); + T('5199', '-254400.9', '-0.02043624845666819574930749065746229671357294726551674935112257857578334'); + BigNumber.config({ DECIMAL_PLACES : 7, ROUNDING_MODE : 4 }); + T('24786509', '-1425028.34387', '-17.3936954'); + BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 5 }); + T('22279280.31', '-149.356', '-149168.967500468678861244275422480516350196845121722595677'); + BigNumber.config({ DECIMAL_PLACES : 80, ROUNDING_MODE : 4 }); + T('3231', '-918986.0554', '-0.00351583136764101110646732888391115841952088884764594655458794897400790310185592'); + BigNumber.config({ DECIMAL_PLACES : 42, ROUNDING_MODE : 0 }); + T('0.00024718', '-4', '-0.000061795'); + BigNumber.config({ DECIMAL_PLACES : 43, ROUNDING_MODE : 1 }); + T('-899.2063', '10.4', '-86.4621442307692307692307692307692307692307692'); + BigNumber.config({ DECIMAL_PLACES : 78, ROUNDING_MODE : 6 }); + T('-0.000000000551809177986', '-4', '1.379522944965e-10'); + BigNumber.config({ DECIMAL_PLACES : 43, ROUNDING_MODE : 3 }); + T('0', '452738786', '0'); + BigNumber.config({ DECIMAL_PLACES : 60, ROUNDING_MODE : 4 }); + T('4.5584794351', '24609.412535', '0.000185233167537698802691065538676012933926787049977826705565'); + BigNumber.config({ DECIMAL_PLACES : 82, ROUNDING_MODE : 4 }); + T('0', '0.000000000000000055428089', '0'); + BigNumber.config({ DECIMAL_PLACES : 45, ROUNDING_MODE : 4 }); + T('1133', '8082.63993', '0.140176973094482510245882003554746994649308843'); + BigNumber.config({ DECIMAL_PLACES : 87, ROUNDING_MODE : 3 }); + T('-29.8847017', '523280.841023', '-0.000057110253915614816403990719053878399996228405389080061266854519886506500326103761351'); + BigNumber.config({ DECIMAL_PLACES : 70, ROUNDING_MODE : 2 }); + T('15361.8', '-1', '-15361.8'); + BigNumber.config({ DECIMAL_PLACES : 21, ROUNDING_MODE : 4 }); + T('-544.88204', '-167354266.6', '0.000003255859865839835'); + BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 1 }); + T('2.1586213', '-9', '-0.2398468111111111111111111111111111'); + BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 3 }); + T('19.7', '-98.9', '-0.1991911021233569261880687563195146612740141557128412537917087967644084934278'); + BigNumber.config({ DECIMAL_PLACES : 40, ROUNDING_MODE : 3 }); + T('-2', '2', '-1'); + BigNumber.config({ DECIMAL_PLACES : 62, ROUNDING_MODE : 2 }); + T('-1836', '751541.921', '-0.0024429774955960174575544402665463554361061383826651500921397'); + BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 4 }); + T('-132.571758', '6265.4', '-0.0211593446547706'); + BigNumber.config({ DECIMAL_PLACES : 53, ROUNDING_MODE : 1 }); + T('-9.0', '0.18807851', '-47.85235697581823675655448355051302777760202375061350709'); + BigNumber.config({ DECIMAL_PLACES : 45, ROUNDING_MODE : 6 }); + T('-300.347779', '285.54536', '-1.051839115858860392618531780730038828156759402'); + BigNumber.config({ DECIMAL_PLACES : 1, ROUNDING_MODE : 2 }); + T('1', '46872.2687', '0.1'); + BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 3 }); + T('6.05281', '1', '6.05281'); + BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 4 }); + T('237492.20101', '13.91', '17073.4867728253'); + BigNumber.config({ DECIMAL_PLACES : 80, ROUNDING_MODE : 1 }); + T('348.349', '0.00000000000241', '144543153526970.95435684647302904564315352697095435684647302904564315352697095435684647302904564'); + BigNumber.config({ DECIMAL_PLACES : 2, ROUNDING_MODE : 0 }); + T('0.0000000000000199530424', '-129346.4', '-0.01'); + BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 1 }); + T('11730.2668', '305.6706', '38.375515342332563223286766866031603955368949450814046231466159977439766'); + BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 6 }); + T('-0.000000000062959532237', '5', '-1e-11'); + BigNumber.config({ DECIMAL_PLACES : 93, ROUNDING_MODE : 2 }); + T('6', '0.009295308411', '645.486920358623483224627779378368384941154589948548615188062531946902606113001192381845758210637'); + BigNumber.config({ DECIMAL_PLACES : 60, ROUNDING_MODE : 4 }); + T('-0.00000000000043868779', '310573.82060', '-1.412507303907636573022858321368765104472556e-18'); + BigNumber.config({ DECIMAL_PLACES : 56, ROUNDING_MODE : 3 }); + T('3.84887407', '3.8156', '1.00872053412307369745256316175699758884579096341335569766'); + BigNumber.config({ DECIMAL_PLACES : 9, ROUNDING_MODE : 3 }); + T('0.0073521', '-18.0', '-0.00040845'); + BigNumber.config({ DECIMAL_PLACES : 7, ROUNDING_MODE : 2 }); + T('0', '-747006.3486', '0'); + BigNumber.config({ DECIMAL_PLACES : 42, ROUNDING_MODE : 2 }); + T('-4.64129872300', '3', '-1.547099574333333333333333333333333333333333'); + BigNumber.config({ DECIMAL_PLACES : 22, ROUNDING_MODE : 5 }); + T('-0.000251830', '-350.0261672', '7.194604963808546e-7'); + BigNumber.config({ DECIMAL_PLACES : 49, ROUNDING_MODE : 3 }); + T('0.939', '-113.4826537', '-0.0082743923356103189187229942262092166778436905728'); + BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 1 }); + T('-0.0000000000000000002287625269', '-2572865.5574', '8.891351755323552375523747216843208381160942e-26'); + BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 4 }); + T('-5.2', '-1.1', '4.72727273'); + BigNumber.config({ DECIMAL_PLACES : 62, ROUNDING_MODE : 3 }); + T('1.20', '11524063.4', '1.0412993736219812883014857415657744472318678843783521704e-7'); + BigNumber.config({ DECIMAL_PLACES : 80, ROUNDING_MODE : 6 }); + T('4.65133898', '7915.0870', '0.00058765481415428535403337954465945857575538967543881703384940683532600462888153'); + BigNumber.config({ DECIMAL_PLACES : 89, ROUNDING_MODE : 0 }); + T('-3610.654', '-7.6', '475.08605263157894736842105263157894736842105263157894736842105263157894736842105263157894737'); + BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 4 }); + T('88.4', '-11.7', '-7.55555555555555555555555555555555555555555555555555555555555555556'); + BigNumber.config({ DECIMAL_PLACES : 33, ROUNDING_MODE : 2 }); + T('0.000000000340016366031', '-6', '-5.66693943385e-11'); + BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 3 }); + T('-3.100003841', '-492', '0.0063008208150406504065040650406504065040650406504065040650406504'); + BigNumber.config({ DECIMAL_PLACES : 9, ROUNDING_MODE : 6 }); + T('-791.9', '-0.012153', '65160.865629886'); + BigNumber.config({ DECIMAL_PLACES : 67, ROUNDING_MODE : 5 }); + T('-9', '5', '-1.8'); + BigNumber.config({ DECIMAL_PLACES : 60, ROUNDING_MODE : 2 }); + T('553.7', '22399299.800', '0.000024719522705794580239512665480730786057874898393029232102'); + BigNumber.config({ DECIMAL_PLACES : 5, ROUNDING_MODE : 0 }); + T('-0.0000002749949', '30.759829', '-0.00001'); + BigNumber.config({ DECIMAL_PLACES : 86, ROUNDING_MODE : 3 }); + T('3624426532', '-289449190.4', '-12.52180573381904335773882337312628392827593136014520357076113625225741864780147611012285'); + BigNumber.config({ DECIMAL_PLACES : 24, ROUNDING_MODE : 4 }); + T('-0.00000000000006713', '-6617623375', '1e-23'); + BigNumber.config({ DECIMAL_PLACES : 78, ROUNDING_MODE : 6 }); + T('0', '-14.1532', '0'); + BigNumber.config({ DECIMAL_PLACES : 70, ROUNDING_MODE : 0 }); + T('-48768176.4', '999478.49486', '-48.7936225249459791063262817624562091721081695550589547579092771436841158'); + BigNumber.config({ DECIMAL_PLACES : 93, ROUNDING_MODE : 5 }); + T('278.7307', '6.329298290', '44.038167776099552419735932527837931936053530509145904071460661083805547739479347559711868154029'); + BigNumber.config({ DECIMAL_PLACES : 45, ROUNDING_MODE : 5 }); + T('488540.330', '-9732', '-50.199376284422523633374434854089601315248664201'); + BigNumber.config({ DECIMAL_PLACES : 70, ROUNDING_MODE : 3 }); + T('1064.6514', '0.244140', '4360.8232981076431555664782501843204718604079626443843696239862374047677562'); + BigNumber.config({ DECIMAL_PLACES : 58, ROUNDING_MODE : 6 }); + T('0.82', '5.96631903', '0.1374381751758252860306734217663851609356531509512658427184'); + BigNumber.config({ DECIMAL_PLACES : 80, ROUNDING_MODE : 1 }); + T('7518.490', '7841504214', '9.5880711083170757574243139978244995431433941457293974234928594530498329207e-7'); + BigNumber.config({ DECIMAL_PLACES : 85, ROUNDING_MODE : 1 }); + T('34.8855774', '-1.6026335', '-21.7676576709522170851913428740881804854322588414631292806496307483900717163343958553218'); + BigNumber.config({ DECIMAL_PLACES : 19, ROUNDING_MODE : 0 }); + T('88.6', '30', '2.9533333333333333334'); + BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 4 }); + T('0.0000000000000000000779', '1654403.81', '4.708644862223812214262248344314439169479e-26'); + BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 2 }); + T('-0.00000000000000000022908', '27985.1293', '0'); + BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 0 }); + T('-0.000000000261917837552', '116.30006027', '-3e-12'); + BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 3 }); + T('-60.00570', '-2.342', '25.621562766865926558497011101622544833475661827497865072587532023911187'); + BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 1 }); + T('3932', '-127472', '-0.0308459897075436174218651939249403'); + BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 4 }); + T('-1110229465.54', '-0.4365', '2543481020.71019473081328751432'); + BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 5 }); + T('-2', '0.671', '-2.98062593'); + BigNumber.config({ DECIMAL_PLACES : 86, ROUNDING_MODE : 1 }); + T('7', '108.5443', '0.06448979817457019852723726625902972334797865940450120365601878679949108336411953460476'); + BigNumber.config({ DECIMAL_PLACES : 33, ROUNDING_MODE : 4 }); + T('0.00028', '1', '0.00028'); + BigNumber.config({ DECIMAL_PLACES : 43, ROUNDING_MODE : 4 }); + T('0.00000006557969267', '1.5680', '4.18237835905612244897959183673469388e-8'); + BigNumber.config({ DECIMAL_PLACES : 25, ROUNDING_MODE : 1 }); + T('5006041.51764', '16388224716', '0.0003054657599826873157454'); + BigNumber.config({ DECIMAL_PLACES : 37, ROUNDING_MODE : 6 }); + T('30.9', '0.000000000000000000181748', '170015626031648216211.4576226423399432180821797213724497656'); + BigNumber.config({ DECIMAL_PLACES : 62, ROUNDING_MODE : 4 }); + T('-1320.44658751', '0.00000000000131', '-1007974494282442.74809160305343511450381679389312977099236641221374045801526718'); + BigNumber.config({ DECIMAL_PLACES : 70, ROUNDING_MODE : 2 }); + T('15.2', '110597411', '1.374354052465116023375990239048181697490188084059219071592914594e-7'); + BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 0 }); + T('23.02209072', '12.7', '1.812763048819'); + BigNumber.config({ DECIMAL_PLACES : 23, ROUNDING_MODE : 3 }); + T('-1606170.4', '4000198.6443', '-0.40152265995306987110066'); + BigNumber.config({ DECIMAL_PLACES : 50, ROUNDING_MODE : 6 }); + T('399.1459', '57.99276455', '6.88268447102337700160562530037206167299365279181194'); + BigNumber.config({ DECIMAL_PLACES : 39, ROUNDING_MODE : 3 }); + T('1.45', '-9.142', '-0.158608619558083570334718879894990155328'); + BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 4 }); + T('-0.000000000000712649', '-66196.4', '1.07656760790617012405508456653231897807131506e-17'); + BigNumber.config({ DECIMAL_PLACES : 45, ROUNDING_MODE : 6 }); + T('2167.8637', '3693.62', '0.586921150524417779847412565450696065106859937'); + BigNumber.config({ DECIMAL_PLACES : 6, ROUNDING_MODE : 6 }); + T('1.2', '2.3', '0.521739'); + BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 2 }); + T('4194384.4', '-123.91', '-33850.249374546041481720603663949640868372205633120813493664756678234202243563877'); + BigNumber.config({ DECIMAL_PLACES : 66, ROUNDING_MODE : 6 }); + T('-2', '12477.22', '-0.000160292116352841418200528643399731670997225343465932315050948849'); + BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 0 }); + T('-266654.50', '208840.1304', '-1.27683553677765755695007936080085879892746898'); + BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 3 }); + T('-1.52428704063', '282318.753228', '-0.00000539917034629'); + BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 3 }); + T('-413.229833', '9394258', '-0.0000439874903371825640726494843978098110569243467658648506353561931128568110436'); + BigNumber.config({ DECIMAL_PLACES : 40, ROUNDING_MODE : 1 }); + T('-6.19', '180017.0', '-0.0000343856413560941466639261847492181293'); + BigNumber.config({ DECIMAL_PLACES : 88, ROUNDING_MODE : 5 }); + T('-6', '-37.31569', '0.1607902734747769637919063000041001519736068125766936106501045538753269737207056870715777'); + BigNumber.config({ DECIMAL_PLACES : 100, ROUNDING_MODE : 4 }); + T('-2878081', '-0.00000000000000000001927', '1.49355526725480020757654385054488842760768033212247016087182148417228853139595225739491437467566165023352361183186299948105864e+26'); + BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 4 }); + T('0.00002684173572', '486.39', '5.51856241287855424659224079442422747178190341084315055819404181829396164e-8'); + BigNumber.config({ DECIMAL_PLACES : 31, ROUNDING_MODE : 6 }); + T('-11800.21', '-0.0000000000000286822600', '411411443868091287.0882559463584808170625327292898'); + BigNumber.config({ DECIMAL_PLACES : 6, ROUNDING_MODE : 5 }); + T('1', '-4.5', '-0.222222'); + BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 3 }); + T('0', '1', '0'); + BigNumber.config({ DECIMAL_PLACES : 32, ROUNDING_MODE : 0 }); + T('0.000008990064003', '0.000000000000963602', '9329644.39986633485609203799909091097777'); + BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 1 }); + T('43641.85475', '3089.54530', '14.12565620902208490032497662358276475182286532584584534170772637643474591552355616860513422476763'); + BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 3 }); + T('-14.451799345', '2167.1652870', '-0.006668526591714461'); + BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 6 }); + T('-46.697270', '0.0000000000014693303913', '-31781327247089.9309302267203'); + BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 4 }); + T('0.000000000000000000219884', '-335817.508212', '-6.54772293352817905519097009170681577613920908334084735788028e-25'); + BigNumber.config({ DECIMAL_PLACES : 1, ROUNDING_MODE : 4 }); + T('-103885.126', '7124.95', '-14.6'); + BigNumber.config({ DECIMAL_PLACES : 28, ROUNDING_MODE : 0 }); + T('1.10', '166668008', '6.5999468836274805661e-9'); + BigNumber.config({ DECIMAL_PLACES : 92, ROUNDING_MODE : 5 }); + T('-1091.8', '-1.8585', '587.46300780199085283831046542910949690610707559860102232983588915792305622814097390368576809255'); + BigNumber.config({ DECIMAL_PLACES : 49, ROUNDING_MODE : 6 }); + T('39.33', '4192569.2612', '0.000009380882592442358576342080442670970561090942'); + BigNumber.config({ DECIMAL_PLACES : 49, ROUNDING_MODE : 5 }); + T('-4.730032885', '-22.21', '0.2129686125619090499774876181900045024763619990995'); + BigNumber.config({ DECIMAL_PLACES : 46, ROUNDING_MODE : 6 }); + T('0.00000000000398', '-13253058.2889', '-3.003080431128428129341704642e-19'); + BigNumber.config({ DECIMAL_PLACES : 85, ROUNDING_MODE : 1 }); + T('2084.0452', '19846.7649', '0.1050067963469451890368288687694385899638484658021015807971807032389444992115566401454'); + BigNumber.config({ DECIMAL_PLACES : 38, ROUNDING_MODE : 1 }); + T('0.000000000000000000598111', '16442.86', '3.637511965679936e-23'); + BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 6 }); + T('-0.0000000000000000000124802906', '4649.0', '-2.684510776511077651107765110776511077651107765110777e-24'); + BigNumber.config({ DECIMAL_PLACES : 67, ROUNDING_MODE : 6 }); + T('0.003816', '0.000000058238', '65524.2281671760706068202891582815343933514200350286754352828050413819156'); + BigNumber.config({ DECIMAL_PLACES : 77, ROUNDING_MODE : 2 }); + T('382.2', '194.1072', '1.96901505971957763545092608620391206508568461138999480699324909122381859096417'); + BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 4 }); + T('-1.919', '-1', '1.919'); + BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 6 }); + T('-284013947424', '13.19061586', '-21531515316.52594119286254463'); + BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 5 }); + T('228766.33934', '-0.1852617', '-1234828.026192137932449070692971078209905231356508117975815'); + BigNumber.config({ DECIMAL_PLACES : 42, ROUNDING_MODE : 5 }); + T('1', '0.0000000392', '25510204.081632653061224489795918367346938775510204'); + BigNumber.config({ DECIMAL_PLACES : 88, ROUNDING_MODE : 6 }); + T('0.0000011513', '25070.6', '4.59223153813630308010179253787304651663701706381179548953754597018021108389907e-11'); + BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 1 }); + T('-0.00000000000002764193', '-3.1', '8.916751612903225806451612903225806451612903225806451612903225806451e-15'); + BigNumber.config({ DECIMAL_PLACES : 59, ROUNDING_MODE : 6 }); + T('-0.000000000000010416', '7274678.41', '-1.4318158704695236143091581693712286039e-21'); + BigNumber.config({ DECIMAL_PLACES : 66, ROUNDING_MODE : 4 }); + T('-2', '-30146.8', '0.000066342032985258800270675494579855905104356017885812092825772553'); + BigNumber.config({ DECIMAL_PLACES : 87, ROUNDING_MODE : 1 }); + T('173618', '1.882', '92251.8597236981934112646121147715196599362380446333687566418703506907545164718384697130712'); + BigNumber.config({ DECIMAL_PLACES : 26, ROUNDING_MODE : 0 }); + T('0.00000000010005555', '38138588465', '2.62348e-21'); + BigNumber.config({ DECIMAL_PLACES : 78, ROUNDING_MODE : 3 }); + T('-169823368', '0.0000000000000000000871132', '-1.949456201815568708301382568887378721020465325576376484849597994333809342326995220012581330957880091650864e+27'); + BigNumber.config({ DECIMAL_PLACES : 9, ROUNDING_MODE : 5 }); + T('0', '-31042328.715', '0'); + BigNumber.config({ DECIMAL_PLACES : 71, ROUNDING_MODE : 1 }); + T('-0.000000000000018273631043', '-911.9377622', '2.003824361754234635640796145550819696059297587008070933e-17'); + BigNumber.config({ DECIMAL_PLACES : 39, ROUNDING_MODE : 2 }); + T('-409295.290', '-1011.729490', '404.550123373393020302294440384454939630158'); + BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 2 }); + T('-452668878', '-3235.300506', '139915.5587434634425887855995037513217017992825671693570958814667832898982027359162'); + BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 3 }); + T('2082.12', '163146746', '0.0000127622527'); + BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 1 }); + T('-8.14', '-32.560', '0.25'); + BigNumber.config({ DECIMAL_PLACES : 23, ROUNDING_MODE : 2 }); + T('0', '1.9', '0'); + BigNumber.config({ DECIMAL_PLACES : 27, ROUNDING_MODE : 3 }); + T('0', '-3', '0'); + BigNumber.config({ DECIMAL_PLACES : 87, ROUNDING_MODE : 6 }); + T('9.18', '0.0037', '2481.081081081081081081081081081081081081081081081081081081081081081081081081081081081081081'); + BigNumber.config({ DECIMAL_PLACES : 26, ROUNDING_MODE : 1 }); + T('0.00000000000000095721408982', '73.85199', '1.296124978e-17'); + BigNumber.config({ DECIMAL_PLACES : 89, ROUNDING_MODE : 0 }); + T('0', '1', '0'); + BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 2 }); + T('48086750', '6', '8014458.33333334'); + BigNumber.config({ DECIMAL_PLACES : 42, ROUNDING_MODE : 6 }); + T('28.094', '-10.8', '-2.601296296296296296296296296296296296296296'); + BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 6 }); + T('-28.17324441', '-2', '14.086622205'); + BigNumber.config({ DECIMAL_PLACES : 23, ROUNDING_MODE : 1 }); + T('-2227168', '2500.06', '-890.84581970032719214738846'); + BigNumber.config({ DECIMAL_PLACES : 78, ROUNDING_MODE : 3 }); + T('519.344', '0.0578325140597', '8980.138741052925991755093307758001485580365939320088236568632175956463851725330634'); + BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 3 }); + T('-0.00000000000000000101887', '-28.546850', '3.569115331463891812932074817361635346807090799e-20'); + BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 5 }); + T('-0.000000000000000000078301', '-1441708004.6', '5.43113e-29'); + BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 0 }); + T('-14.74038220', '-842882140.2', '1.748807039202703467129413023953879714676626149730346368538e-8'); + BigNumber.config({ DECIMAL_PLACES : 83, ROUNDING_MODE : 1 }); + T('-2415313', '-0.000000015', '161020866666666.66666666666666666666666666666666666666666666666666666666666666666666666666666666666'); + BigNumber.config({ DECIMAL_PLACES : 71, ROUNDING_MODE : 6 }); + T('-0.0000000000000000002200', '26498.8187', '-8.30225688513427958960298860416747558637396919131e-24'); + BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 3 }); + T('-85.27', '16086959.782', '-0.00000530056649332897548982011870364480780673092379587823849263354'); + BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 1 }); + T('1.31592063', '5629293355', '2.3376302264140931415360569710441036342118290618023760817133680893416505915954348056888e-10'); + BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 1 }); + T('-0.000000000001025528', '3.7', '-2.771697297297297297297297297297297297297297297297297297297297297e-13'); + BigNumber.config({ DECIMAL_PLACES : 42, ROUNDING_MODE : 3 }); + T('0', '-4.919962890', '0'); + BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 0 }); + T('28372.374', '968909.546', '0.02928278921096'); + BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 2 }); + T('-0.000006032019416', '2079.86', '-2.9002045406902387660707932264671660592539882492090813804775321415864529e-9'); + BigNumber.config({ DECIMAL_PLACES : 33, ROUNDING_MODE : 3 }); + T('-978638556.295', '0.0000000121699875730', '-80414096598272672.697987150196081798414832284397765'); + BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 2 }); + T('3.18', '1.5436526', '2.060049003253712'); + BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 2 }); + T('-227.3', '-5', '45.46'); + BigNumber.config({ DECIMAL_PLACES : 71, ROUNDING_MODE : 5 }); + T('-194', '735', '-0.26394557823129251700680272108843537414965986394557823129251700680272109'); + BigNumber.config({ DECIMAL_PLACES : 91, ROUNDING_MODE : 6 }); + T('32.421', '-17148246.867', '-0.0000018906305846570712306272748271836504346727398906415568574051366320349346531249700838588'); + BigNumber.config({ DECIMAL_PLACES : 21, ROUNDING_MODE : 0 }); + T('6.11', '343.74', '0.01777506254727410252'); + BigNumber.config({ DECIMAL_PLACES : 39, ROUNDING_MODE : 6 }); + T('34882581', '3', '11627527'); + BigNumber.config({ DECIMAL_PLACES : 41, ROUNDING_MODE : 6 }); + T('2591.34', '-0.0016', '-1619587.5'); + BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 1 }); + T('0.0000000000000000111931173', '-543.829', '0'); + BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 0 }); + T('51757672566', '114261.91', '452973.9837711447323085'); + BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 6 }); + T('1.177', '19.3', '0'); + BigNumber.config({ DECIMAL_PLACES : 52, ROUNDING_MODE : 1 }); + T('1', '6', '0.1666666666666666666666666666666666666666666666666666'); + BigNumber.config({ DECIMAL_PLACES : 40, ROUNDING_MODE : 4 }); + T('-7396187255', '0.0000001129387', '-65488510625675698.4098453408796099122798473862369586333117'); + BigNumber.config({ DECIMAL_PLACES : 19, ROUNDING_MODE : 0 }); + T('354.973', '341214610.926', '0.0000010403218052025'); + BigNumber.config({ DECIMAL_PLACES : 77, ROUNDING_MODE : 4 }); + T('0.0000000000001788646', '-0.0000000000008673', '-0.20623152311772166493716130520004612014297244321457396517929205580537299665629'); + BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 2 }); + T('-3405900332', '0.0000002821190', '-12072566300036509.41623924655907613453897114338275692172452050375905203123504620390686199795121916638014454893147'); + BigNumber.config({ DECIMAL_PLACES : 94, ROUNDING_MODE : 0 }); + T('0.000000146660215100', '6', '2.44433691833333333333333333333333333333333333333333333333333333333333333333333333333334e-8'); + BigNumber.config({ DECIMAL_PLACES : 67, ROUNDING_MODE : 3 }); + T('42.6946', '-147', '-0.2904394557823129251700680272108843537414965986394557823129251700681'); + BigNumber.config({ DECIMAL_PLACES : 33, ROUNDING_MODE : 1 }); + T('-33383.045130', '-3771.65', '8.85104533294446727559556162422282'); + BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 6 }); + T('-0.00000002620221', '-0.0194', '0'); + BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 1 }); + T('-40998905.3742', '21.0', '-1952328.827342857142857142857142857142857142857142857142857142857'); + BigNumber.config({ DECIMAL_PLACES : 29, ROUNDING_MODE : 4 }); + T('759.18436065', '169.2597', '4.48532261755160856364509685412'); + BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 4 }); + T('-7.910517857', '5.48', '-1.443525156386861313868613138686131386861313868613138686131386861313868613138686131'); + BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 1 }); + T('315514.15', '0.0000000000000000001821015', '1.732627957485248611351361740567760287531953333717734340463972015606680889503930500297910780526244978761844356e+24'); + BigNumber.config({ DECIMAL_PLACES : 71, ROUNDING_MODE : 2 }); + T('-102.1', '-20933481932.7', '4.87735391217982360935950019733431654039206201664805567083460586e-9'); + BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 5 }); + T('1.3', '353424', '0.00000367830141699488433156774865317578885418081398'); + BigNumber.config({ DECIMAL_PLACES : 19, ROUNDING_MODE : 4 }); + T('-6', '0.0000007385', '-8124576.844955991875423155'); + BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 1 }); + T('-882563.951', '-3391251493.78', '0.0002602472723178266294366199720356264423507358482323050873711187871051023068603836514842931325595'); + BigNumber.config({ DECIMAL_PLACES : 33, ROUNDING_MODE : 3 }); + T('-0.000000000000063741', '2062.9', '-3.0898734790828446e-17'); + BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 5 }); + T('-0.00000000000022392247', '-2', '1.11961235e-13'); + BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 3 }); + T('-20368.0', '-0.00000093', '21901075268.817204301075268817204301075268817204301075268817204301075268817204301075268817204'); + BigNumber.config({ DECIMAL_PLACES : 99, ROUNDING_MODE : 6 }); + T('676.6', '-1', '-676.6'); + BigNumber.config({ DECIMAL_PLACES : 78, ROUNDING_MODE : 4 }); + T('-151.10', '152.2171096', '-0.992661077306384485440262229233657712286503698004787235823324292054485312602467'); + BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 0 }); + T('5.4', '1', '5.4'); + BigNumber.config({ DECIMAL_PLACES : 21, ROUNDING_MODE : 6 }); + T('-664.94103', '-508795.875286', '0.001306891549830723405'); + BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 4 }); + T('4160277.46', '51.3855092', '80962.0752'); + BigNumber.config({ DECIMAL_PLACES : 63, ROUNDING_MODE : 6 }); + T('0.068041425273', '1.0', '0.068041425273'); + BigNumber.config({ DECIMAL_PLACES : 78, ROUNDING_MODE : 6 }); + T('0', '20.9954635648', '0'); + BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 6 }); + T('-597760.09', '-296891', '2.013399159961'); + BigNumber.config({ DECIMAL_PLACES : 32, ROUNDING_MODE : 4 }); + T('-0.000000000000466465', '-1', '4.66465e-13'); + BigNumber.config({ DECIMAL_PLACES : 70, ROUNDING_MODE : 3 }); + T('-0.012274783756', '1777103227', '-6.9071866898365606310386830443811917066537407171114207874882e-12'); + BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 3 }); + T('43.3085', '-5812.536', '-0.00745087858380576051485960689103688992205811714542499177639501932'); + BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 6 }); + T('0.00000000000000000006065480716', '-0.0000000000000005628236', '-0.00010776877011'); + BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 2 }); + T('15316689.77', '-4.476', '-3421959.28731009830205540661304736371760500446827524'); + BigNumber.config({ DECIMAL_PLACES : 27, ROUNDING_MODE : 2 }); + T('-4782', '7903.4519', '-0.605052078573414231824451288'); + BigNumber.config({ DECIMAL_PLACES : 53, ROUNDING_MODE : 0 }); + T('334.247', '-12.37', '-27.02077607113985448666127728375101050929668552950687147'); + BigNumber.config({ DECIMAL_PLACES : 23, ROUNDING_MODE : 0 }); + T('-0.000000000010968817327', '1577.163203', '-6.95477634e-15'); + BigNumber.config({ DECIMAL_PLACES : 90, ROUNDING_MODE : 3 }); + T('181.28266', '-0.000000000015', '-12085510666666.666666666666666666666666666666666666666666666666666666666666666666666666666666666666666667'); + BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 1 }); + T('-12944.4', '25199', '-0.51368705107345529584'); + BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 1 }); + T('-0.233040', '0.00000000000048', '-485500000000'); + BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 0 }); + T('2499418471.4', '0.0000000000212061576116', '117862864040621426727.904325767922700957'); + BigNumber.config({ DECIMAL_PLACES : 58, ROUNDING_MODE : 4 }); + T('2.051', '-0.210803', '-9.7294630531823550898231998595845410169684492156183735525585'); + BigNumber.config({ DECIMAL_PLACES : 98, ROUNDING_MODE : 5 }); + T('-3', '-0.00000000000035117', '8542870974172.05342141982515590739527863997494091180909530996383517954267164051598940683999202665375743941680667'); + BigNumber.config({ DECIMAL_PLACES : 67, ROUNDING_MODE : 6 }); + T('-29.5', '170.1809179', '-0.1733449341090902648139965168209966506473990524880110544990778898602'); + BigNumber.config({ DECIMAL_PLACES : 26, ROUNDING_MODE : 5 }); + T('-920.3951776', '0.0000000000000003848321529', '-2391679517067712249.36283124174471753189103134'); + BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 2 }); + T('1.67', '-704.1', '-0.00237182218434'); + BigNumber.config({ DECIMAL_PLACES : 52, ROUNDING_MODE : 2 }); + T('-4019.527', '-0.000000000000001282423', '3134322294593905443.0558403896374285239737590483015354528108120331591059'); + BigNumber.config({ DECIMAL_PLACES : 43, ROUNDING_MODE : 2 }); + T('0.004972447', '-313000.2188', '-1.5886401035320937609517095966962947e-8'); + BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 1 }); + T('-240823248', '-53004225588', '0.0045434726'); + BigNumber.config({ DECIMAL_PLACES : 66, ROUNDING_MODE : 6 }); + T('-0.004435905718', '3114765775', '-1.424153865309503087756253517971186774068107898097088857e-12'); + BigNumber.config({ DECIMAL_PLACES : 29, ROUNDING_MODE : 1 }); + T('7', '310.0', '0.02258064516129032258064516129'); + BigNumber.config({ DECIMAL_PLACES : 88, ROUNDING_MODE : 2 }); + T('485.18', '-2499.59190', '-0.1941036854856186723920812833486938407825693466201422720244852769766136624142525025785209'); + BigNumber.config({ DECIMAL_PLACES : 6, ROUNDING_MODE : 2 }); + T('-1803189.79', '-95.9631755078', '18790.434774'); + BigNumber.config({ DECIMAL_PLACES : 31, ROUNDING_MODE : 3 }); + T('3', '3.13', '0.9584664536741214057507987220447'); + BigNumber.config({ DECIMAL_PLACES : 36, ROUNDING_MODE : 0 }); + T('2705932.0278', '-240850308.662', '-0.011234912019969217738265785640050126'); + BigNumber.config({ DECIMAL_PLACES : 89, ROUNDING_MODE : 5 }); + T('-48.6894', '-0.0000000000000056217500046', '8660897400304152.96991166386595034397058361146178954725410558680679758094698823811870931732181920937779724'); + BigNumber.config({ DECIMAL_PLACES : 98, ROUNDING_MODE : 5 }); + T('0.00000000967966715067', '0.00000490602307318', '0.00197301704584030946968780069075231515440216586853537004220763341534383076987989340045682642632728'); + BigNumber.config({ DECIMAL_PLACES : 56, ROUNDING_MODE : 4 }); + T('1', '16.30642', '0.06132553926612953671008106009780197002162338514523727464'); + BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 3 }); + T('-313225923', '-14.5', '21601787.7931034482758620689655172413793103'); + BigNumber.config({ DECIMAL_PLACES : 93, ROUNDING_MODE : 4 }); + T('164.1993451', '22.23', '7.386385294646873594242015294646873594242015294646873594242015294646873594242015294646873594242'); + BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 4 }); + T('-2', '-2.1', '0.952380952380952380952380952380952380952380952380952'); + BigNumber.config({ DECIMAL_PLACES : 99, ROUNDING_MODE : 6 }); + T('0.0082502485', '-20143.76', '-4.09568447002942846817078837317362796220765140172440497702514327017398936444834529402653725025e-7'); + BigNumber.config({ DECIMAL_PLACES : 80, ROUNDING_MODE : 4 }); + T('-5.25629381', '3', '-1.75209793666666666666666666666666666666666666666666666666666666666666666666666667'); + BigNumber.config({ DECIMAL_PLACES : 67, ROUNDING_MODE : 5 }); + T('1455.634', '0.0000000001833490847', '7939139714723.6481404698280449065148782823457421928433548378657381974920761630614'); + BigNumber.config({ DECIMAL_PLACES : 50, ROUNDING_MODE : 3 }); + T('0.0000456078822', '-19467.42', '-2.34277999858224664593459225721744329757102e-9'); + BigNumber.config({ DECIMAL_PLACES : 92, ROUNDING_MODE : 5 }); + T('-5', '-0.00000000000000410202', '1218911658158663.29271919688348667241992969317555740830127595672376048873481845529763384868918240281617349501'); + BigNumber.config({ DECIMAL_PLACES : 72, ROUNDING_MODE : 6 }); + T('-17274806.55', '-32647573.58', '0.529129875691055874174401661613469284966077408561889211002124342252573614'); + BigNumber.config({ DECIMAL_PLACES : 82, ROUNDING_MODE : 6 }); + T('6562.207011', '109008.582', '0.0601989943415647769824214390753197761989051467525740312813169150296808741168654042'); + BigNumber.config({ DECIMAL_PLACES : 36, ROUNDING_MODE : 0 }); + T('-3', '-2.5615783', '1.171152956753264188723022833227467613'); + BigNumber.config({ DECIMAL_PLACES : 62, ROUNDING_MODE : 3 }); + T('14.4897748', '-0.0000000091438787', '-1584642062.2355806185399200450898369856984213931009386640266783066577644'); + BigNumber.config({ DECIMAL_PLACES : 85, ROUNDING_MODE : 3 }); + T('-200.932', '243005.6', '-0.0008268616031893915201954193648212222269774852925200077693682779326896170294017915637'); + BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 5 }); + T('-3.4', '-4950', '0.000686868687'); + BigNumber.config({ DECIMAL_PLACES : 83, ROUNDING_MODE : 1 }); + T('-3915.2', '-4.4033', '889.15131832943474212522426362046646833057025412758612858537914745758862671178434356051'); + BigNumber.config({ DECIMAL_PLACES : 36, ROUNDING_MODE : 1 }); + T('-3.5', '70451.876', '-0.000049679301655501693098988591872273'); + BigNumber.config({ DECIMAL_PLACES : 60, ROUNDING_MODE : 0 }); + T('32.99649107', '-0.0000000000000252114', '-1308792493475173.929254226262722419223049890129068595952624606328882965642527'); + BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 4 }); + T('-0.0000000002421731', '2.6696132', '-9.071467731729825129722912667647882e-11'); + BigNumber.config({ DECIMAL_PLACES : 5, ROUNDING_MODE : 1 }); + T('-2361092', '0.000224', '-10540589285.71428'); + BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 2 }); + T('3.3', '48.72', '0.067733990147783252'); + BigNumber.config({ DECIMAL_PLACES : 91, ROUNDING_MODE : 3 }); + T('0.00000000086515675836', '-1.04', '-8.31881498423076923076923076923076923076923076923076923076923076923076923076923077e-10'); + BigNumber.config({ DECIMAL_PLACES : 23, ROUNDING_MODE : 5 }); + T('9.36', '0.000000000000000187263', '49983178737924736.86740039409814004902196'); + BigNumber.config({ DECIMAL_PLACES : 77, ROUNDING_MODE : 3 }); + T('-0.00000000000000000254409418513', '-207.4', '1.226660648567984570877531340405014464802314368370298939247e-20'); + BigNumber.config({ DECIMAL_PLACES : 89, ROUNDING_MODE : 6 }); + T('3', '-0.00000000000000001866618', '-160718475874549586.47136157478391400918666808098925436270302761464852476510994750934577937210505845330967557'); + BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 3 }); + T('4.8', '3', '1.6'); + BigNumber.config({ DECIMAL_PLACES : 43, ROUNDING_MODE : 4 }); + T('-3.017', '-52.7192', '0.0572277272796248804989453557717112551025053'); + BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 0 }); + T('88891546', '1.23', '72269549.59349593495934959349593495934959349593495934959349593495934959349593495935'); + BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 3 }); + T('-0.00014', '-2.13121465', '0.00006569023913194290401485368918611740961897010233108147975615689391024034111252003640271523095'); + BigNumber.config({ DECIMAL_PLACES : 42, ROUNDING_MODE : 6 }); + T('0', '-0.0000000011147297', '0'); + BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 3 }); + T('-108', '-158517876.371', '6.8e-7'); + BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 4 }); + T('0.0174163902', '-0.003287849617', '-5.2971979345'); + BigNumber.config({ DECIMAL_PLACES : 59, ROUNDING_MODE : 2 }); + T('3447053', '-26.180', '-131667.4178762414056531703590527119938884644766997708174178762414'); + BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 1 }); + T('0.0000000000000004912253', '996.32', '4.930396860446442909908463144371286333708045607836839569616e-19'); + BigNumber.config({ DECIMAL_PLACES : 27, ROUNDING_MODE : 3 }); + T('-5.8942', '-1696.19', '0.003474964479215182261421185'); + BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 0 }); + T('4.35', '-7.700', '-0.564935064935064936'); + BigNumber.config({ DECIMAL_PLACES : 100, ROUNDING_MODE : 6 }); + T('-1.951064679', '12.39', '-0.1574709184019370460048426150121065375302663438256658595641646489104116222760290556900726392251815981'); + BigNumber.config({ DECIMAL_PLACES : 67, ROUNDING_MODE : 3 }); + T('79287223.425', '-115.6806', '-685397.7540313587585126633160616386844466574343494069014164864290122976541'); + BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 2 }); + T('0.00000000000179581623', '82.118', '2.1868728293431403589955917094912199517767115614116271706568596410044083e-14'); + BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 6 }); + T('1.5', '7', '0.21428571428571'); + BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 0 }); + T('0.00000000096155', '-0.000614553582', '-0.00000157'); + BigNumber.config({ DECIMAL_PLACES : 59, ROUNDING_MODE : 5 }); + T('0', '-64986', '0'); + BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 0 }); + T('0.1502692', '110.97', '0.00135414256105253672163647832747589438587005497'); + BigNumber.config({ DECIMAL_PLACES : 88, ROUNDING_MODE : 2 }); + T('-24676310', '-1132905', '21.7814468115155286630388249676716052978846416954643151897114056341882152519408070403078811'); + BigNumber.config({ DECIMAL_PLACES : 93, ROUNDING_MODE : 3 }); + T('-0.0000000000000000036333', '1162397966', '-3.125693700671874713173749651932890598330589301805436916946566646006e-27'); + BigNumber.config({ DECIMAL_PLACES : 78, ROUNDING_MODE : 5 }); + T('-36.3', '80465', '-0.000451127819548872180451127819548872180451127819548872180451127819548872180451'); + BigNumber.config({ DECIMAL_PLACES : 19, ROUNDING_MODE : 4 }); + T('55895210725', '-7357125995.55', '-7.5974246952965791117'); + BigNumber.config({ DECIMAL_PLACES : 21, ROUNDING_MODE : 3 }); + T('-13.757', '2', '-6.8785'); + BigNumber.config({ DECIMAL_PLACES : 30, ROUNDING_MODE : 4 }); + T('-3486.72', '-699656', '0.004983477594703682952765358976'); + BigNumber.config({ DECIMAL_PLACES : 56, ROUNDING_MODE : 0 }); + T('954.556', '-0.00035661', '-2676750.51176355121841787947617845825972350747314993971004739071'); + BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 2 }); + T('-1.94', '2.0', '-0.97'); + BigNumber.config({ DECIMAL_PLACES : 94, ROUNDING_MODE : 5 }); + T('4', '-1945.59', '-0.002055931619714328301440694082514815557234566378322257001732122389609321593963784764518732107'); + BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 2 }); + T('-0.00000000027649996', '36.4', '-7.5961e-12'); + BigNumber.config({ DECIMAL_PLACES : 96, ROUNDING_MODE : 6 }); + T('-0.000195337037', '10.9367', '-0.000017860692622088929933160825477520641509779000978357274132050801430047454899558367697751606975'); + BigNumber.config({ DECIMAL_PLACES : 36, ROUNDING_MODE : 6 }); + T('35.30643', '504.6056', '0.069968367374440553176579887341717967'); + BigNumber.config({ DECIMAL_PLACES : 50, ROUNDING_MODE : 0 }); + T('-0.00001921615', '8.9', '-0.00000215911797752808988764044943820224719101123596'); + BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 6 }); + T('1.14982', '-38016.754', '-0.0000302450861533312391689201029630251967329982985922469866838184'); + BigNumber.config({ DECIMAL_PLACES : 46, ROUNDING_MODE : 6 }); + T('-78517.1', '5.896466904', '-13315.9570431466632717659022071227757034486019392741'); + BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 0 }); + T('569.7', '-5625972.0812', '-0.000101262500378154205050056870161348499938944204657'); + BigNumber.config({ DECIMAL_PLACES : 100, ROUNDING_MODE : 3 }); + T('-6', '4057.45596', '-0.0014787591188050750894656660672664454502175299026535829608856678754930959250633493012700500142951645'); + BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 5 }); + T('19.5', '-1.15066407', '-17'); + BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 1 }); + T('-5.4', '-307.105', '0.0175835626251607756304846876475472'); + BigNumber.config({ DECIMAL_PLACES : 6, ROUNDING_MODE : 1 }); + T('1', '-40.4', '-0.024752'); + BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 5 }); + T('-12687.3498', '0.000000000000000001143', '-1.11000435695538057742782152230971128608923884514435695538057742782152230971128608924e+22'); + BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 4 }); + T('-1.0', '371.3', '-0.0027'); + BigNumber.config({ DECIMAL_PLACES : 64, ROUNDING_MODE : 5 }); + T('1.95110622', '3211.707', '0.0006074981995555634433651637587114889371913440422803200914653796'); + BigNumber.config({ DECIMAL_PLACES : 55, ROUNDING_MODE : 4 }); + T('-2.54012', '157.29832', '-0.0161484242171181484964365798693844918369121806259596415'); + BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 1 }); + T('-7', '10.922426', '-0.6408832616'); + BigNumber.config({ DECIMAL_PLACES : 72, ROUNDING_MODE : 4 }); + T('-0.000000000000010173970450', '-1979.1', '5.140705598504370673538477085543934111464807235612146935e-18'); + BigNumber.config({ DECIMAL_PLACES : 45, ROUNDING_MODE : 6 }); + T('-31.3', '0.000000004292064', '-7292528722.777665943471485979705801218248376538653664065'); + BigNumber.config({ DECIMAL_PLACES : 1, ROUNDING_MODE : 3 }); + T('-1.3', '-41.81181', '0'); + BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 6 }); + T('-56.8', '-237.603', '0.23905422069586663468053854538873667420024157944133702015546941747'); + BigNumber.config({ DECIMAL_PLACES : 29, ROUNDING_MODE : 1 }); + T('6828531.173', '2.6', '2626358.14346153846153846153846153846'); + BigNumber.config({ DECIMAL_PLACES : 9, ROUNDING_MODE : 1 }); + T('408927964.6', '-0.00000000000000106192518', '-3.8508171037059315233489425309606e+23'); + BigNumber.config({ DECIMAL_PLACES : 74, ROUNDING_MODE : 6 }); + T('0.00000000000000000009999762926', '-0.022865151', '-4.37336404469841463106891356195286005327495978487087183461e-18'); + BigNumber.config({ DECIMAL_PLACES : 77, ROUNDING_MODE : 4 }); + T('-174424', '-424', '411.37735849056603773584905660377358490566037735849056603773584905660377358490566'); + BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 4 }); + T('-3.015', '-0.0000077', '391558.4415584416'); + BigNumber.config({ DECIMAL_PLACES : 70, ROUNDING_MODE : 5 }); + T('-7707.041590', '-1016', '7.5856708562992125984251968503937007874015748031496062992125984251968504'); + BigNumber.config({ DECIMAL_PLACES : 91, ROUNDING_MODE : 3 }); + T('1', '-9.89309', '-0.1010806532640459148759386602163732463770166853834342960591685711946419167317794541442562435'); + BigNumber.config({ DECIMAL_PLACES : 98, ROUNDING_MODE : 2 }); + T('-818075.66703', '-641.16', '1275.93060551188470896500093580385551188470896500093580385551188470896500093580385551188470896500093581'); + BigNumber.config({ DECIMAL_PLACES : 38, ROUNDING_MODE : 3 }); + T('-3.3', '0.05674113', '-58.15886994143401796897594390524122448743'); + BigNumber.config({ DECIMAL_PLACES : 31, ROUNDING_MODE : 6 }); + T('-16182136', '0.00000484', '-3343416528925.6198347107438016528925619834711'); + BigNumber.config({ DECIMAL_PLACES : 6, ROUNDING_MODE : 2 }); + T('-195748.38639', '1', '-195748.38639'); + BigNumber.config({ DECIMAL_PLACES : 27, ROUNDING_MODE : 3 }); + T('83', '-30943580134', '-2.682301131303218581e-9'); + BigNumber.config({ DECIMAL_PLACES : 28, ROUNDING_MODE : 2 }); + T('485298.09014', '-791982.15', '-0.6127639242121807922059859556'); + BigNumber.config({ DECIMAL_PLACES : 40, ROUNDING_MODE : 6 }); + T('-0.0000000000000000006453151', '8.7', '-7.41741494252873563218e-20'); + BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 4 }); + T('1.5', '10.67319', '0.14053905158626427525'); + BigNumber.config({ DECIMAL_PLACES : 41, ROUNDING_MODE : 0 }); + T('-6.853998', '198.445', '-0.0345385270477966187104739348434074932601'); + BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 5 }); + T('-4', '0.000000000002985501551', '-1339808381161.3467823651450516'); + BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 4 }); + T('-1972.820043', '-2978.3', '0.6624'); + BigNumber.config({ DECIMAL_PLACES : 89, ROUNDING_MODE : 2 }); + T('17.5470679', '-1.2', '-14.62255658333333333333333333333333333333333333333333333333333333333333333333333333333333333'); + BigNumber.config({ DECIMAL_PLACES : 98, ROUNDING_MODE : 4 }); + T('1.68', '-0.0000000000000773997', '-21705510486474.75377811541905201182950321512874080907290338334644707925224516374094473234392381365819247361423881'); + BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 5 }); + T('3877.04631', '-5317.71941', '-0.7290806474'); + BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 2 }); + T('120233739', '40.99694', '2932749.10273791165877258156340448823741479242109289132310850517136156991229101489037962345482370147626'); + BigNumber.config({ DECIMAL_PLACES : 87, ROUNDING_MODE : 4 }); + T('-22.151457', '2918.4174', '-0.007590229211215640367275770765346999370275136106301997788253318390988211624560626591659'); + BigNumber.config({ DECIMAL_PLACES : 36, ROUNDING_MODE : 3 }); + T('-37.28', '199844', '-0.000186545505494285542723324192870439'); + BigNumber.config({ DECIMAL_PLACES : 72, ROUNDING_MODE : 1 }); + T('-1.24', '28', '-0.044285714285714285714285714285714285714285714285714285714285714285714285'); + BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 6 }); + T('127814', '3.31', '38614.5015105740181269'); + BigNumber.config({ DECIMAL_PLACES : 32, ROUNDING_MODE : 4 }); + T('-6.0817', '61.6', '-0.0987288961038961038961038961039'); + BigNumber.config({ DECIMAL_PLACES : 9, ROUNDING_MODE : 0 }); + T('-83950', '2899.1', '-28.957262599'); + BigNumber.config({ DECIMAL_PLACES : 32, ROUNDING_MODE : 5 }); + T('-2', '1.3', '-1.53846153846153846153846153846154'); + BigNumber.config({ DECIMAL_PLACES : 48, ROUNDING_MODE : 1 }); + T('63317.4', '-44382', '-1.426645937542246856833851561443828579153710963904'); + BigNumber.config({ DECIMAL_PLACES : 71, ROUNDING_MODE : 3 }); + T('-12376.1101', '-0.0000000000000000000476577', '2.596875237369826911495938746519450162303258445120096018062138961804703122475486647488233800624e+23'); + BigNumber.config({ DECIMAL_PLACES : 41, ROUNDING_MODE : 5 }); + T('0', '255407', '0'); + BigNumber.config({ DECIMAL_PLACES : 94, ROUNDING_MODE : 2 }); + T('-3243324.741', '447', '-7255.7600469798657718120805369127516778523489932885906040268456375838926174496644295302013422818791'); + BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 0 }); + T('-20.5351', '1', '-20.5351'); + BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 5 }); + T('24373177.7', '-0.03429773005', '-710635300.48397474047994614'); + BigNumber.config({ DECIMAL_PLACES : 83, ROUNDING_MODE : 6 }); + T('0', '-1.9528', '0'); + BigNumber.config({ DECIMAL_PLACES : 5, ROUNDING_MODE : 5 }); + T('2.5715743812', '333604.7', '0.00001'); + BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 6 }); + T('7258484263', '878748.686', '8260.02289236993521945363'); + BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 0 }); + T('-1.55', '4028.651', '-0.0003847441736701'); + BigNumber.config({ DECIMAL_PLACES : 24, ROUNDING_MODE : 2 }); + T('39876720.9679', '-0.000000000000000095693', '-4.16715130342867294368449102860188310534730858056e+23'); + BigNumber.config({ DECIMAL_PLACES : 46, ROUNDING_MODE : 2 }); + T('328.9', '-1.747153', '-188.2491115546262977541176989078804203180831901957'); + BigNumber.config({ DECIMAL_PLACES : 19, ROUNDING_MODE : 1 }); + T('-8430.0', '6.36', '-1325.4716981132075471698'); + BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 5 }); + T('-0.0000000000000000124', '0.0000000000022', '-0.00000563636364'); + BigNumber.config({ DECIMAL_PLACES : 89, ROUNDING_MODE : 4 }); + T('-204018', '-0.29422194903', '693415.29642031411160079894872824743451805690052191956958432904987815891500214089245237027923579'); + BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 2 }); + T('0.000000009608', '1107603', '8.674588277568767870798472015695154310705189494791906487e-15'); + BigNumber.config({ DECIMAL_PLACES : 86, ROUNDING_MODE : 4 }); + T('0.00000000000000000324', '0.0000000000353302327762', '9.170616057142444364532751561033571427601773401756984940156302665962620077892902e-8'); + BigNumber.config({ DECIMAL_PLACES : 30, ROUNDING_MODE : 5 }); + T('-0.000000000000000000161', '-307', '5.24429967e-22'); + BigNumber.config({ DECIMAL_PLACES : 66, ROUNDING_MODE : 3 }); + T('-2113052.7', '55.1505', '-38314.298147795577555960508064296787880436260777327494764326706013544755'); + BigNumber.config({ DECIMAL_PLACES : 87, ROUNDING_MODE : 3 }); + T('0.06681', '3.1', '0.021551612903225806451612903225806451612903225806451612903225806451612903225806451612903'); + BigNumber.config({ DECIMAL_PLACES : 59, ROUNDING_MODE : 5 }); + T('-593781.5', '-5.5', '107960.27272727272727272727272727272727272727272727272727272727273'); + BigNumber.config({ DECIMAL_PLACES : 9, ROUNDING_MODE : 5 }); + T('264.178', '163429.93', '0.00161646'); + BigNumber.config({ DECIMAL_PLACES : 89, ROUNDING_MODE : 5 }); + T('-1444588.448', '8.56410', '-168679.53993998201795868801158323700096916196681496012423955815555633399890239488095655118459616'); + BigNumber.config({ DECIMAL_PLACES : 5, ROUNDING_MODE : 2 }); + T('0.0750627414', '-503.1171', '-0.00014'); + BigNumber.config({ DECIMAL_PLACES : 72, ROUNDING_MODE : 3 }); + T('-684826102', '-242.1', '2828691.045022717885171416769929781082197439074762494836844279223461379595208591'); + BigNumber.config({ DECIMAL_PLACES : 82, ROUNDING_MODE : 3 }); + T('9.9723088', '-7.28030', '-1.3697661909536694916418279466505501146930758347870280070876200156586953834320014286'); + BigNumber.config({ DECIMAL_PLACES : 37, ROUNDING_MODE : 2 }); + T('-10.8542689947', '-362382465', '2.99525226605542296313923467572e-8'); + BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 3 }); + T('83184510942', '995417544', '83.567455128156752680260174317361639750243341099883206398459860779789511123987'); + BigNumber.config({ DECIMAL_PLACES : 41, ROUNDING_MODE : 0 }); + T('-5.2584', '4.3', '-1.22288372093023255813953488372093023255814'); + BigNumber.config({ DECIMAL_PLACES : 60, ROUNDING_MODE : 5 }); + T('171.7711052', '21.73462', '7.903110576582429322435818983722742794675039177128470615083217'); + BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 2 }); + T('97.3120746', '297', '0.328'); + BigNumber.config({ DECIMAL_PLACES : 67, ROUNDING_MODE : 1 }); + T('17', '5.175316085', '3.2848235201077578240325006158536884805558692749874812718806140320992'); + BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 4 }); + T('0.0000000075223031425', '-0.0000000000000000003063', '-24558612936.6634'); + BigNumber.config({ DECIMAL_PLACES : 93, ROUNDING_MODE : 6 }); + T('0.000000000284782805877571308685061', '1.24044', '2.2958208851501991929078472155041759375705394859888426687304504853116636032375608655e-10'); + BigNumber.config({ DECIMAL_PLACES : 24, ROUNDING_MODE : 1 }); + T('-84292190777045518365167.53', '349338169.15546007599011690336', '-241291099054035.477498848257293223533254'); + BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 4 }); + T('-53.485123', '-0.00000000000000085526923975258', '62536006808186693.121901065461235'); + BigNumber.config({ DECIMAL_PLACES : 86, ROUNDING_MODE : 1 }); + T('-6856519792.8354', '-134.87', '50837990.60454808333951212278490398161192259212575072291836583376584859494327871283458144880255'); + BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 0 }); + T('-3437325217.6304210', '-0.0058928082634501029868', '583308511656.536837957106657941719405129449764251342894994497244'); + BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 2 }); + T('86694.653049907973', '276.86811', '314'); + BigNumber.config({ DECIMAL_PLACES : 90, ROUNDING_MODE : 3 }); + T('0', '7.096', '0'); + BigNumber.config({ DECIMAL_PLACES : 90, ROUNDING_MODE : 3 }); + T('-840920065282020550638.16675056', '-544817290763.11054598', '1543490046.184413528395333281622062666508477839510087529697756635981129506986226793475391075218794203'); + BigNumber.config({ DECIMAL_PLACES : 46, ROUNDING_MODE : 2 }); + T('-0.0000000001115427500598203903347530296', '0.0000000000000095', '-11741.3421115600410878687399578947368421052631578947'); + BigNumber.config({ DECIMAL_PLACES : 50, ROUNDING_MODE : 1 }); + T('-0.0000000000000000213', '7771.784441655282162', '-2.74068332181680990957923803724e-21'); + BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 6 }); + T('-5219548154409821711366036884', '-6403861732570.160', '815062593850692.094058492748177219666225497517519616292585346465537888171756816076114357577457239'); + BigNumber.config({ DECIMAL_PLACES : 62, ROUNDING_MODE : 4 }); + T('15551916902370673557.1333290108', '-0.06428889318052242422', '-241906745208710958468.15960770779005223663662075254467552461782847066116561447264673'); + BigNumber.config({ DECIMAL_PLACES : 74, ROUNDING_MODE : 0 }); + T('-54.39064538374', '0.326659783', '-166.50548434283384067514671679066167750438994199662466560813211585339233510726'); + BigNumber.config({ DECIMAL_PLACES : 29, ROUNDING_MODE : 2 }); + T('-10447694007.1229', '1058379152566659776344755.133', '-9.87140948665357e-15'); + BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 2 }); + T('0.0000000000020938452', '3240378916002', '6.4617294899060738552899e-25'); + BigNumber.config({ DECIMAL_PLACES : 71, ROUNDING_MODE : 2 }); + T('967351926269', '-22.0795261933451129685', '-43812168694.11649935062312079317354092546372626572951823800772019323767497831806178'); + BigNumber.config({ DECIMAL_PLACES : 25, ROUNDING_MODE : 5 }); + T('101006.8704166269166570296717065', '13094210020176391', '7.7138575187804e-12'); + BigNumber.config({ DECIMAL_PLACES : 87, ROUNDING_MODE : 2 }); + T('-292.3', '515823027211.36173935', '-5.66667218367954385822955695056628604396993663929021069625557355703596272535737e-10'); + BigNumber.config({ DECIMAL_PLACES : 63, ROUNDING_MODE : 1 }); + T('-627958027100087658205.09', '-8', '78494753387510957275.63625'); + BigNumber.config({ DECIMAL_PLACES : 71, ROUNDING_MODE : 5 }); + T('0.000000000000000039913330066487843180', '0.0000000000030114338098911573487587', '0.00001325392905379196627854118842244752137640431316713004600325949087886'); + BigNumber.config({ DECIMAL_PLACES : 28, ROUNDING_MODE : 1 }); + T('-200.842293509', '-5.0712235735', '39.6043066526418054796494962696'); + BigNumber.config({ DECIMAL_PLACES : 64, ROUNDING_MODE : 2 }); + T('-1848.560227815723699279797', '0.0000000000000174', '-106239093552627798.8091837356321839080459770114942528735632183908045977011494252873'); + BigNumber.config({ DECIMAL_PLACES : 92, ROUNDING_MODE : 2 }); + T('0', '0.0000000000000001799287214643564056307642336', '0'); + BigNumber.config({ DECIMAL_PLACES : 77, ROUNDING_MODE : 5 }); + T('-0.00000000109284603', '-605755688.5436', '1.80410361911333678248513635920011348723615833110992485011324e-18'); + BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 6 }); + T('-17.51', '0.0000000000000001106572088912592375729', '-158236414739203737'); + BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 1 }); + T('-257713780238786025994484911880', '160744975929777785647.053', '-1603246252.3206'); + BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 3 }); + T('-0.000000000000000031476825065154718639426657718', '-1479127042283890059221502.51', '0'); + BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 6 }); + T('-0.001011298', '406.176', '-0.000002489802450169384700228472386354683683920271015520365555818167493894272'); + BigNumber.config({ DECIMAL_PLACES : 53, ROUNDING_MODE : 6 }); + T('1875610846688.7314242171152', '36953885.844016673120045591563', '50755.44300282071230784749159999461116882607517590500292489'); + BigNumber.config({ DECIMAL_PLACES : 32, ROUNDING_MODE : 2 }); + T('2.48', '23018825528599.058245083750', '1.0773790334866552714e-13'); + BigNumber.config({ DECIMAL_PLACES : 9, ROUNDING_MODE : 2 }); + T('-37644856116561190.7', '11750087617.41953', '-3203793.651781167'); + BigNumber.config({ DECIMAL_PLACES : 93, ROUNDING_MODE : 5 }); + T('27225239.0927654530532507312', '-44107483349801146865010.14182', '-6.17247619340498933213826538373174836183684847796124222440343623092216708649906e-16'); + BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 6 }); + T('-3', '623420854802547.7395328963607', '-4.812158555315207709041269638943960261014145138167945466267018280432446e-15'); + BigNumber.config({ DECIMAL_PLACES : 38, ROUNDING_MODE : 0 }); + T('1297926420.969', '1984.469459560495780721378788', '654042.02353230179159722311951514776953828174'); + BigNumber.config({ DECIMAL_PLACES : 67, ROUNDING_MODE : 6 }); + T('9.5116', '-0.000000000000927738069901', '-10252462746316.9575566575367529211085824463253401492796438490216152723506753495226'); + BigNumber.config({ DECIMAL_PLACES : 7, ROUNDING_MODE : 3 }); + T('-104895021573748233134.79927065', '-281760209801594479975768', '0.0003722'); + BigNumber.config({ DECIMAL_PLACES : 92, ROUNDING_MODE : 0 }); + T('1801.699799792', '-0.0000645512712544182335729718690', '-27911143.57284918766656202322530814542242474992155368042065229882647438143751747966584995520735334412'); + BigNumber.config({ DECIMAL_PLACES : 26, ROUNDING_MODE : 6 }); + T('0.00000000000000000006333905001032218284869562345', '0.000061374114666884348377', '1.03201570164e-15'); + BigNumber.config({ DECIMAL_PLACES : 1, ROUNDING_MODE : 6 }); + T('-6403029110376.2', '0.0569350772698624979926156', '-112461937656235'); + BigNumber.config({ DECIMAL_PLACES : 56, ROUNDING_MODE : 1 }); + T('104.057972667266', '-2385710236.97709671', '-4.361718831332867232565124691108468632809332107733e-8'); + BigNumber.config({ DECIMAL_PLACES : 55, ROUNDING_MODE : 4 }); + T('61883558331.753531', '-11.27304021045', '-5489518104.8310345601815283907266673560612625269587707664948134834'); + BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 2 }); + T('11229912272987228870975202743', '-0.0000115', '-9.765141106945416409543654559130434782608695652173913e+32'); + BigNumber.config({ DECIMAL_PLACES : 24, ROUNDING_MODE : 5 }); + T('-0.000000000000000000099738249', '-28909.3', '3e-24'); + BigNumber.config({ DECIMAL_PLACES : 72, ROUNDING_MODE : 5 }); + T('0.00000000616807049939585972341098818', '9633721886.43686961447465', '6.40258310558016696529879116138216691930162803193995828e-19'); + BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 1 }); + T('1438380887105946.4988', '-92.050294038', '-15626032509055.94351991829755854016819083134714103584295603268760522109653448361970130831359811065984506029851'); + BigNumber.config({ DECIMAL_PLACES : 93, ROUNDING_MODE : 2 }); + T('23564842', '-0.0001500845176938138', '-157010478909.453151573339526987486151490294503777115844769550097564216584170372135812878426610459291382975'); + BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 3 }); + T('106510201620140041204712613', '174', '6.12127595518046213820187431034482758e+23'); + BigNumber.config({ DECIMAL_PLACES : 39, ROUNDING_MODE : 6 }); + T('0.001994938909681532', '0.00000000610636188569105720740544007', '326698.441236547297677127656717647999474522122'); + BigNumber.config({ DECIMAL_PLACES : 40, ROUNDING_MODE : 5 }); + T('0', '-992965188415144990460', '0'); + BigNumber.config({ DECIMAL_PLACES : 46, ROUNDING_MODE : 6 }); + T('75.042978019471810179662566', '-20828.92196301', '-0.0036028258280836779532074590076790296057591125'); + BigNumber.config({ DECIMAL_PLACES : 41, ROUNDING_MODE : 6 }); + T('191.42', '-1125370.65655092338112856', '-0.00017009506946508710923505448696387180328'); + BigNumber.config({ DECIMAL_PLACES : 30, ROUNDING_MODE : 1 }); + T('24906102321.8', '-6749284', '-3690.1843694531153230476003084179'); + BigNumber.config({ DECIMAL_PLACES : 27, ROUNDING_MODE : 2 }); + T('-0.0000000004002', '4.29973341406068', '-9.3075537820855276e-11'); + BigNumber.config({ DECIMAL_PLACES : 66, ROUNDING_MODE : 4 }); + T('-37140.99', '-136171', '0.272752568461713580718361471972740157595963898333712758223116522608'); + BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 1 }); + T('49.43436363755592884987', '2425.3765', '0.02038214010796094084768694674826774317307024'); + BigNumber.config({ DECIMAL_PLACES : 70, ROUNDING_MODE : 1 }); + T('0.00000155445336543701798594470695', '-1', '-0.00000155445336543701798594470695'); + BigNumber.config({ DECIMAL_PLACES : 94, ROUNDING_MODE : 0 }); + T('0.000000000000000001927823363427027547788', '-0.00084297395450372616', '-2.2869311123164791404649867246710586063142709924183025467353162662660376821183153e-15'); + BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 5 }); + T('-3538.75692804245271578524253541', '0.0058', '-610130.5048349056406526280233465517241379310344827586206896551724137931034482758620689655172413793103448'); + BigNumber.config({ DECIMAL_PLACES : 36, ROUNDING_MODE : 5 }); + T('-4761336477329468956921492815', '-0.0000000042', '1.133651542221302132600355432142857142857142857142857142857142857142857143e+36'); + BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 3 }); + T('-0.0000190146484048071649632', '-0.000000000000000000028002986729751222355', '679022155326218.32213770008814117'); + BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 4 }); + T('135.311547037', '1538152658057363639166.70980', '8.7970167543639e-20'); + BigNumber.config({ DECIMAL_PLACES : 22, ROUNDING_MODE : 5 }); + T('61273.682559', '4140445022016191223', '1.47988156e-14'); + BigNumber.config({ DECIMAL_PLACES : 64, ROUNDING_MODE : 6 }); + T('25719205020.698', '75895083.76', '338.8784061696119537954114249468218783081820002197201606988515694603'); + BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 1 }); + T('-605282280.963', '-0.0000000000000000026582609673', '2.27698592579413374889379695553866247374289540846165213148596947387453744974529e+26'); + BigNumber.config({ DECIMAL_PLACES : 5, ROUNDING_MODE : 0 }); + T('128.674096168', '-485', '-0.26531'); + BigNumber.config({ DECIMAL_PLACES : 2, ROUNDING_MODE : 3 }); + T('-284.31', '-61299436947911204745164', '0'); + BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 2 }); + T('-27156117968975435649284.5062362', '-0.2140549424', '1.268651761295441858916148354077901450034446857042063794925951684075667481527864034967501e+23'); + BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 5 }); + T('-0.0000000000220', '-83511', '0'); + BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 2 }); + T('-0.0000002831893855', '-0.000000000000000000066075384352033402787278372', '4285853018897.87848847386430278968565272453378873459172661159371765293738317683359'); + BigNumber.config({ DECIMAL_PLACES : 66, ROUNDING_MODE : 3 }); + T('0', '358618735187.21952', '0'); + BigNumber.config({ DECIMAL_PLACES : 73, ROUNDING_MODE : 5 }); + T('-22.5', '26023716139474.0432', '-8.645959662106405118389466343739935401549502009592919388435931e-13'); + BigNumber.config({ DECIMAL_PLACES : 24, ROUNDING_MODE : 0 }); + T('2827855856', '-929954533', '-3.04085388656307565952797'); + BigNumber.config({ DECIMAL_PLACES : 87, ROUNDING_MODE : 4 }); + T('-0.00011271354', '0.00012965', '-0.869367836482838411106826070188970304666409564211338218279984573852680293096799074431161'); + BigNumber.config({ DECIMAL_PLACES : 58, ROUNDING_MODE : 2 }); + T('-46.929552978589019', '12836.0093', '-0.0036560859284036993491427277167834398499539884253589626177'); + BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 4 }); + T('257018142', '-35258.20163', '-7289.59873498800454843278'); + BigNumber.config({ DECIMAL_PLACES : 90, ROUNDING_MODE : 0 }); + T('2.276215213739273117992982952', '0.000000000021024983352672653', '108262402664.396178117533515828712401635259526311697113483063175627111769126355709999130060314825174257'); + BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 5 }); + T('1532964471.105', '0.000000000000000606585', '2.5272047134449417641385790944385370558124582704814659116199708202477806078290758920843739954004797349093696678948539776e+24'); + BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 0 }); + T('0.000000000016313152031948', '-448338202', '-3.638581757962262604604012753747002803923454196303352262629629763291953425821e-20'); + BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 2 }); + T('-1821467900801658117.0', '-237300948.35414499609', '7675771687.533764014843389674196771695447410998228097939296421430055693563019117'); + BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 4 }); + T('0.0000000000157495', '-8.2', '-1.920670731707317073170731707317073170731707317073170731707317073170732e-12'); + BigNumber.config({ DECIMAL_PLACES : 40, ROUNDING_MODE : 4 }); + T('0.00000000000000001492782607274397', '0.07101109108235816', '2.102182327466392982546211e-16'); + BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 2 }); + T('-66468973917463.27', '-0.00000000000000000297284353275010458135', '2.235871924815849751854275641050067610508414796931327584614931310634047270900177e+31'); + BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 1 }); + T('0', '0.0113746976908751', '0'); + BigNumber.config({ DECIMAL_PLACES : 50, ROUNDING_MODE : 6 }); + T('-60504544572803.0828', '173.5', '-348729363532.00624092219020172910662824207492795389048991354467'); + BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 6 }); + T('0.0000000000186102590', '7154.18', '2.6013126591726794685065234590127729523159886947211280677869441e-15'); + BigNumber.config({ DECIMAL_PLACES : 45, ROUNDING_MODE : 3 }); + T('18949862124.7312829930', '-0.00000000065813745923580420948429601', '-28793167534841278323.131970933871205340608343780765524418553425987'); + BigNumber.config({ DECIMAL_PLACES : 93, ROUNDING_MODE : 3 }); + T('146263360394541.66340850', '-0.0000000000000000000291369755255564556', '-5.019853905778655370286501102407539701468694254631132201471781980780954741005684575459066532134590172341544956728846419833634251e+33'); + BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 3 }); + T('1509441.774', '-0.000000003373555732147098593804', '-447433477863226.58699906317'); + BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 6 }); + T('30331911230457034530206902', '-2957.122237268398', '-1.025723957169783101652769031300142e+22'); + BigNumber.config({ DECIMAL_PLACES : 19, ROUNDING_MODE : 0 }); + T('-1.6', '-19.96058946599105182772', '0.0801579533874030967'); + BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 6 }); + T('-2.29043873913', '2.96790', '-0.7717371674012'); + BigNumber.config({ DECIMAL_PLACES : 91, ROUNDING_MODE : 1 }); + T('11772568498.701289348100', '-7504.3638391070401237093495', '-1568763.0225698294210989777699927096257870906945103707762203285405938572993792606917235071621002759'); + BigNumber.config({ DECIMAL_PLACES : 100, ROUNDING_MODE : 6 }); + T('-0.0000000000148347123', '-3335.62734', '4.447353012761911227169639399825761111551508029071377020191949859722639160284613808208e-15'); + BigNumber.config({ DECIMAL_PLACES : 50, ROUNDING_MODE : 6 }); + T('416489358120.40', '-0.00000007008686246187412466064277', '-5942474002841288879.77683608851079051337076828663883240711678573463442'); + BigNumber.config({ DECIMAL_PLACES : 39, ROUNDING_MODE : 5 }); + T('0.000000246512839458083', '677119453035840597070.5162050', '3.64061080143e-28'); + BigNumber.config({ DECIMAL_PLACES : 96, ROUNDING_MODE : 4 }); + T('-0.00000000000067665303968572', '110049103753289780506640.8', '-6.148646527850457868998800682412162492283509753692942914693977e-36'); + BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 0 }); + T('-259.30262051760', '-0.00000000014084763600931', '1841015070359.151428675425551331452862418678960652787235110730227954405294936895404'); + BigNumber.config({ DECIMAL_PLACES : 74, ROUNDING_MODE : 5 }); + T('-3.151376403158403871974624', '-139.0275', '0.02266728814916763857491952311593030155904407401413389437341533149916383449'); + BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 2 }); + T('-0.00000000000000001080911612', '-1556.8799', '6.9428066480914809164149399064115350194963657761912142357e-21'); + BigNumber.config({ DECIMAL_PLACES : 46, ROUNDING_MODE : 3 }); + T('-283.731555', '0.030718518473446161287514838', '-9236.4986692071265067750541533842080035308332697354'); + BigNumber.config({ DECIMAL_PLACES : 80, ROUNDING_MODE : 1 }); + T('4.55747', '-6093895748449378.261959467', '-7.4787462538388036117112195183416415665502531749799195367174376685e-16'); + BigNumber.config({ DECIMAL_PLACES : 33, ROUNDING_MODE : 1 }); + T('-6209057913039233089.554638932', '0.00077770788', '-7.983791951599144256522949120690406274397013953362540186e+21'); + BigNumber.config({ DECIMAL_PLACES : 100, ROUNDING_MODE : 6 }); + T('-65413356684972913334784193', '-10749246466905288418818944221', '0.0060853899746709817665388011109517624593413536255210794771752430033562011174757753794349810049054864'); + BigNumber.config({ DECIMAL_PLACES : 59, ROUNDING_MODE : 1 }); + T('4.48141', '11142539383020069527.9939', '4.0218928970797681683108653744109241673829e-19'); + BigNumber.config({ DECIMAL_PLACES : 88, ROUNDING_MODE : 6 }); + T('-157010536651.8385557386023265', '31176833.11', '-5036.1284642947673571006367843369451195679829586129506660466580019486783595256574153050659224'); + BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 5 }); + T('0.0000000000000311954391035431138869624', '24096242.8724', '1.29461838796763546050032301e-21'); + BigNumber.config({ DECIMAL_PLACES : 93, ROUNDING_MODE : 3 }); + T('-12073.3603645', '0.000000000000000003231096498355190416486576184', '-3.736613985576109687026022157020994949604856807112675513970122687511460575831414034729237467633748036752626463635751e+21'); + BigNumber.config({ DECIMAL_PLACES : 72, ROUNDING_MODE : 4 }); + T('-11229937324', '6', '-1871656220.666666666666666666666666666666666666666666666666666666666666666666666667'); + BigNumber.config({ DECIMAL_PLACES : 85, ROUNDING_MODE : 3 }); + T('-36173.069316352495643', '-3847.08178', '9.4027294934064270510516675317466217211530138046610488223101927404309039669024140162676'); + BigNumber.config({ DECIMAL_PLACES : 63, ROUNDING_MODE : 3 }); + T('-2502682902.58827454', '-150084564633685530705.4', '1.6675151829880867049650894318382222851766631493251569e-11'); + BigNumber.config({ DECIMAL_PLACES : 96, ROUNDING_MODE : 4 }); + T('-0.07688246602306', '-6403753', '1.2005845013550647565575998949366098286426725078247084170797968004075110329833146281563327e-8'); + BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 6 }); + T('-33960220.713826767270362074', '0.16733662760657090', '-202945530.8115294687'); + BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 6 }); + T('2.8', '51255410606449547593.80', '5.4628379070046346857585963850812976524e-20'); + BigNumber.config({ DECIMAL_PLACES : 55, ROUNDING_MODE : 4 }); + T('9', '-40332245.1457930390012', '-2.231465163287288183909357572411828628922732061041e-7'); + BigNumber.config({ DECIMAL_PLACES : 67, ROUNDING_MODE : 2 }); + T('28.20588', '-0.000000196910070', '-143242445.6504433724491591516878745713715911024763741133198520522591861350717'); + BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 1 }); + T('0.00000000000007527724346240', '-2548.46', '-2.9e-17'); + BigNumber.config({ DECIMAL_PLACES : 72, ROUNDING_MODE : 6 }); + T('182357.1162144822274482841', '-96.6', '-1887.754826236876060541243271221532091097308488612836438923395445134575569358'); + BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 2 }); + T('1131000923219021023017192.4', '-0.000000014817218356012837761464311', '-7.633017858308472878065579194067412216888064519989e+31'); + BigNumber.config({ DECIMAL_PLACES : 82, ROUNDING_MODE : 0 }); + T('4453786.636962392155535677', '-250963.38370093135464105', '-17.7467587951790260682885114754120226687355539896097812099137476157310503575581592474'); + BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 1 }); + T('0.02105880647636941373891522', '-3', '-0.007019602158789804579638406666666666666666666666666'); + BigNumber.config({ DECIMAL_PLACES : 35, ROUNDING_MODE : 4 }); + T('-7615.1336008111570321673', '0.00335325681', '-2270966.4163214379730633574706734137669581'); + BigNumber.config({ DECIMAL_PLACES : 26, ROUNDING_MODE : 2 }); + T('-7620249639404', '-0.0000000000000002537522482549', '3.003027437908366061360597250587446069936925235724720585e+28'); + BigNumber.config({ DECIMAL_PLACES : 39, ROUNDING_MODE : 1 }); + T('4036527.94508226109659', '273093013735095.5684', '1.4780780694001038799691151063431e-8'); + BigNumber.config({ DECIMAL_PLACES : 59, ROUNDING_MODE : 4 }); + T('3581132452.090', '7363910', '486.30855783001150204171425234691896017197385628015551520863237'); + BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 6 }); + T('1772.045', '6242.573', '0.28386452188865072142528409359409974060375425325422706310362730239598319475'); + BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 5 }); + T('-171.1', '25.4098814519375642105786397119', '-7'); + BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 6 }); + T('0.00000000120698418896873172829603934', '21.2635246123591424034', '6e-11'); + BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 6 }); + T('-0.001184391777561431496802559296412', '46745128538963675598448912367.2', '-2.53e-32'); + BigNumber.config({ DECIMAL_PLACES : 33, ROUNDING_MODE : 4 }); + T('382477039554', '24271.0171155624320604387966', '15758591.316255880898891009542620046581391'); + BigNumber.config({ DECIMAL_PLACES : 83, ROUNDING_MODE : 4 }); + T('0', '-3179701885690718286932', '0'); + BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 5 }); + T('22521535008035260.265331029', '-2540337', '-8865569807.484306320512211175'); + BigNumber.config({ DECIMAL_PLACES : 93, ROUNDING_MODE : 6 }); + T('2170680047.145934907', '-16635439470', '-0.130485284206677763650328138881443088199941615368698161600175627942097282026298040444855166787'); + BigNumber.config({ DECIMAL_PLACES : 7, ROUNDING_MODE : 6 }); + T('0.0000000000000000766292', '-1.957255933', '0'); + BigNumber.config({ DECIMAL_PLACES : 21, ROUNDING_MODE : 5 }); + T('0', '4882483440602156078', '0'); + BigNumber.config({ DECIMAL_PLACES : 64, ROUNDING_MODE : 6 }); + T('7.8', '-187381241311437016433382.48235', '-4.16263652936102018237350522975003750680024e-23'); + BigNumber.config({ DECIMAL_PLACES : 80, ROUNDING_MODE : 0 }); + T('-27718.0722643084293', '0.289733680', '-95667.41520802286189165167128654148872164257879857115679475026859148718920078604599921'); + BigNumber.config({ DECIMAL_PLACES : 86, ROUNDING_MODE : 3 }); + T('11440284945540031728.983', '-5825677608914.4676', '-1963768.97479429291268951429185159439402414197554120618367860332859433241104754409651622089284'); + BigNumber.config({ DECIMAL_PLACES : 63, ROUNDING_MODE : 1 }); + T('78.672496610303544707', '-1480.9216470187259083', '-0.053124010151840767416622387121575177625203747374376939509920643'); + BigNumber.config({ DECIMAL_PLACES : 72, ROUNDING_MODE : 1 }); + T('-0.9359034339029049964', '-9.050', '0.103414744077669060375690607734806629834254143646408839779005524861878453'); + BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 5 }); + T('11675.6028651', '278671', '0.0418974448905698834826731163271384535886403680325545176929066892500475471075210552945947012785686'); + BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 2 }); + T('-718522471082238904716566210', '159968809108512620.67494', '-4491641058.56935624444165047282107830437431356909913096346865381177604838282981'); + BigNumber.config({ DECIMAL_PLACES : 60, ROUNDING_MODE : 3 }); + T('-0.0000000000000007240115', '6894090690193', '-1.05019143573194176430303605992882e-28'); + BigNumber.config({ DECIMAL_PLACES : 40, ROUNDING_MODE : 6 }); + T('0.01403241861365534490176', '98.781', '0.0001420558469103911167305453477895546714'); + BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 4 }); + T('-100163956276268.45400638712953', '-0.000003822500209599644154', '26203780453620770552.762045992882479543453412936816289906209431'); + BigNumber.config({ DECIMAL_PLACES : 89, ROUNDING_MODE : 4 }); + T('-108012944.1175122414', '-0.0000000000000052661', '2.051099373682843876872828089098194109492793528417614553464613281175822715102257837868631435027819448928049220486e+22'); + BigNumber.config({ DECIMAL_PLACES : 86, ROUNDING_MODE : 2 }); + T('-0.0000000095661227651529585795', '439.658', '-2.175810008041013373917908920115180435702295875430448212019342306974966906095e-11'); + BigNumber.config({ DECIMAL_PLACES : 33, ROUNDING_MODE : 0 }); + T('-2294287466562757501742320.27601', '-832584777918371.546177', '2755620241.219080420608405722438221977774013'); + BigNumber.config({ DECIMAL_PLACES : 82, ROUNDING_MODE : 2 }); + T('-0.0000002759', '-183126.762211952', '1.5066066623330111887480084015381767263333164079000147488698351688626521e-12'); + BigNumber.config({ DECIMAL_PLACES : 91, ROUNDING_MODE : 5 }); + T('1653901506.2955747033592190', '-322190268156088.641', '-0.0000051333068368605218558546015330570362016912647522618795650532856646842031492231821113536'); + BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 3 }); + T('248330241832030242304149.24', '3330.8', '74555734908139258527.72584364'); + BigNumber.config({ DECIMAL_PLACES : 72, ROUNDING_MODE : 6 }); + T('-18342746626779219566723384.683', '-3', '6.114248875593073188907794894333333333333333333333333333333333333333333333333333333333333333333333e+24'); + BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 6 }); + T('0.0002199161', '14860579112610491.754079911', '0'); + BigNumber.config({ DECIMAL_PLACES : 37, ROUNDING_MODE : 1 }); + T('-0.000000000568242490987', '348596.86613', '-1.6300849095272387267e-15'); + BigNumber.config({ DECIMAL_PLACES : 41, ROUNDING_MODE : 0 }); + T('0.000000002049503091568392', '2.22227599162281', '9.2225407613378789315422863796067e-10'); + BigNumber.config({ DECIMAL_PLACES : 40, ROUNDING_MODE : 6 }); + T('26041624909507628.488792197140', '-246901903760748416.0953516', '-0.1054735687042022440675400298081862682581'); + BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 6 }); + T('-320580.6238', '0.0009850386145294971077', '-325449803.76543418'); + BigNumber.config({ DECIMAL_PLACES : 66, ROUNDING_MODE : 1 }); + T('-58275174168.25149350192684', '16653.838', '-3499203.857288121422937273678295657733670761058201719027169592979107878916'); + BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 2 }); + T('46770480873406.409882', '0.0000070956746212439754972487', '6591407212131559214.2696047445573145755811032180453546396659194926912322518859416'); + BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 6 }); + T('3.754240463072038', '-115117.4885688923668289', '-0.000032612251272536256054753760718128290585012986196327512602851762942681368'); + BigNumber.config({ DECIMAL_PLACES : 23, ROUNDING_MODE : 3 }); + T('4', '0.0056705434513331', '705.39976182699589005149617'); + BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 4 }); + T('-9050', '-1110617973.258696', '0.000008148616552140008896135150388571481487341383070838106781751554751750807288566249'); + BigNumber.config({ DECIMAL_PLACES : 63, ROUNDING_MODE : 0 }); + T('0.000000000000000014', '-4770178679', '-2.934900544005387350396984993106586313e-27'); + BigNumber.config({ DECIMAL_PLACES : 43, ROUNDING_MODE : 1 }); + T('-2.1611115285091044', '1', '-2.1611115285091044'); + BigNumber.config({ DECIMAL_PLACES : 80, ROUNDING_MODE : 4 }); + T('-1.486211747365416', '-1386302473893.3388076342', '1.07206888493208023054074800312104610361989162636431378141145313364812e-12'); + BigNumber.config({ DECIMAL_PLACES : 43, ROUNDING_MODE : 2 }); + T('-0.00000000000000000014428', '-3', '4.80933333333333333333334e-20'); + BigNumber.config({ DECIMAL_PLACES : 33, ROUNDING_MODE : 2 }); + T('-32608018749047.9996725803', '332.159913589', '-98169638824.61663098063583714993775277959765'); + BigNumber.config({ DECIMAL_PLACES : 90, ROUNDING_MODE : 3 }); + T('-0.000000000000000000661438157030', '-33292.064829009268', '1.9867742070886854266568898631488887980727035276739897454831283052178e-23'); + BigNumber.config({ DECIMAL_PLACES : 58, ROUNDING_MODE : 3 }); + T('178992107258447203.67', '7', '25570301036921029.0957142857142857142857142857142857142857142857142857142857'); + BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 4 }); + T('122641090582555142454291285', '-19338960887519151968841287700.2', '-0.0063416587528084004561775821574233856070818007325775576443265439169'); + BigNumber.config({ DECIMAL_PLACES : 2, ROUNDING_MODE : 5 }); + T('-7', '-4906.459444175730287072723974', '0'); + BigNumber.config({ DECIMAL_PLACES : 80, ROUNDING_MODE : 4 }); + T('-7691.6200805', '0.00000005979', '-128643921734.40374644589396220103696270279310921558789095166415788593410269275798628533199532'); + BigNumber.config({ DECIMAL_PLACES : 59, ROUNDING_MODE : 5 }); + T('-3547231646.3828711', '7.78154', '-455852138.05787428966502774515070281718014686039010273030788250140718'); + BigNumber.config({ DECIMAL_PLACES : 56, ROUNDING_MODE : 4 }); + T('127.6570', '-0.000251316107215474764266674', '-507953.9127611456689859414656378008562846463183737483733030129'); + BigNumber.config({ DECIMAL_PLACES : 2, ROUNDING_MODE : 3 }); + T('0.0000000000000000751948126794197435', '-9.471515838720393536', '-0.01'); + BigNumber.config({ DECIMAL_PLACES : 64, ROUNDING_MODE : 0 }); + T('1.4', '1771.9512519134307055', '0.000790089455614661281192204203464890374305788190624271762375083'); + BigNumber.config({ DECIMAL_PLACES : 93, ROUNDING_MODE : 0 }); + T('10.10', '80325048.161', '1.25739109172471374349282788225230454835680854762207952658609299828415947260000796901359e-7'); + BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 2 }); + T('3857345278902280', '-2452638478359688.015970', '-1.572732921275'); + BigNumber.config({ DECIMAL_PLACES : 25, ROUNDING_MODE : 2 }); + T('-0.021', '0.00000002882977', '-728413.7195683489670573161006834'); + BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 5 }); + T('-36206966.8939129954925798651759', '-22.7013433495627012494', '1594926.18284241116152432797478154892604082831306502511561248383742079121'); + BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 2 }); + T('5.5110610412115985840905338', '-4901879566436940738.477642', '-1.1242750798990880390037343298118832909837831e-18'); + BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 1 }); + T('-292125.918633265', '-2390686440.2576276060503', '0.00012219332226679824515550937357789383313825356191649299186874000273523091107167169375245388194'); + BigNumber.config({ DECIMAL_PLACES : 60, ROUNDING_MODE : 0 }); + T('0', '-102275090.1', '0'); + BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 6 }); + T('2.666778067490', '216.21210', '0.0123340833722534492750405735849196229073210981254055624083943'); + BigNumber.config({ DECIMAL_PLACES : 27, ROUNDING_MODE : 6 }); + T('2363.828945', '-0.41511719893859553946529868', '-5694.365232382625093743741062342'); + BigNumber.config({ DECIMAL_PLACES : 6, ROUNDING_MODE : 1 }); + T('-16329.50', '21363731.3167546173519', '-0.000764'); + BigNumber.config({ DECIMAL_PLACES : 82, ROUNDING_MODE : 2 }); + T('1.1396176388245', '-5485.281', '-0.0002077592084752813939705185568433048370721572878399484000910801105722751487116156'); + BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 5 }); + T('0', '-33143947602683866.435849148873', '0'); + BigNumber.config({ DECIMAL_PLACES : 70, ROUNDING_MODE : 3 }); + T('-0.000000000000000000055196335', '-72.89889049', '7.571628954705645205218266690247949204418680309602e-22'); + BigNumber.config({ DECIMAL_PLACES : 5, ROUNDING_MODE : 2 }); + T('-12.471836599', '0.000000000000000027069', '-460742421182902951.71598'); + BigNumber.config({ DECIMAL_PLACES : 42, ROUNDING_MODE : 1 }); + T('0.000000000004406', '-3.8', '-1.15947368421052631578947368421e-12'); + BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 1 }); + T('-47.9653', '16753400954657', '-2.863e-12'); + BigNumber.config({ DECIMAL_PLACES : 89, ROUNDING_MODE : 2 }); + T('-48292622.6', '894.910689010519453168902686', '-53963.6225078459557881137025384011498164613577179194959550666717656710800958124435690706757022'); + BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 5 }); + T('104.4', '16728461156682781', '6.2408609508169669877e-15'); + BigNumber.config({ DECIMAL_PLACES : 92, ROUNDING_MODE : 6 }); + T('0.00000000000242526901875700822786120839', '-0.000020180224165103702340737812', '-1.2018047960789563562387101610719677162023172609323952542918769865608172696005280649776e-7'); + BigNumber.config({ DECIMAL_PLACES : 29, ROUNDING_MODE : 4 }); + T('-1816974287.73852', '-2748150389.1808717035915', '0.66116261136643872080726488469'); + BigNumber.config({ DECIMAL_PLACES : 37, ROUNDING_MODE : 4 }); + T('-7.6', '5009220859436611651783', '-1.5172020186897437e-21'); + BigNumber.config({ DECIMAL_PLACES : 89, ROUNDING_MODE : 1 }); + T('-0.00000000000000000498398533825394', '25882849761072773.5995635665', '-1.9255937364940943765693045003752394728474718216467301581e-34'); + BigNumber.config({ DECIMAL_PLACES : 52, ROUNDING_MODE : 2 }); + T('-82059240599', '377376698042.4017333228', '-0.2174464958347266361200674350905444260783111107023398'); + BigNumber.config({ DECIMAL_PLACES : 50, ROUNDING_MODE : 5 }); + T('90627979', '174273716385155737169698170.541', '5.200324000648872237330439812746e-19'); + BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 4 }); + T('1803768.648947634', '12779000526.591068884', '0.000141151'); + BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 4 }); + T('-0.0000017977320993875685730', '0.000000002321196536', '-774.48508625017548837148531743285351861304001188'); + BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 0 }); + T('21', '96592.00', '0.0002174093092595660096074209044228'); + BigNumber.config({ DECIMAL_PLACES : 22, ROUNDING_MODE : 0 }); + T('-9084159902.2773', '-0.0000000000000000003819750', '2.37820797232208914195955232672295307284508148439034e+28'); + BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 6 }); + T('-475115003.43806', '-0.000000000000000001181287678509513467781749', '4.0220093046050820583944191642895006512408869334056873162428415838264772935e+26'); + BigNumber.config({ DECIMAL_PLACES : 5, ROUNDING_MODE : 3 }); + T('214.229235', '-96718.991049', '-0.00222'); + BigNumber.config({ DECIMAL_PLACES : 74, ROUNDING_MODE : 1 }); + T('-18918149257957412463884', '-12933208565390138378746.1679', '1.46275761055792844404673151942791058773622292664668166595152619195819218153'); + BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 3 }); + T('1159.3', '-0.000973', '-1191469.6813977389517'); + BigNumber.config({ DECIMAL_PLACES : 1, ROUNDING_MODE : 6 }); + T('-15.0171621', '0.01112357298508184819314643', '-1350'); + BigNumber.config({ DECIMAL_PLACES : 66, ROUNDING_MODE : 6 }); + T('1257949.03', '0.000000000000022102066080572533260', '56915449687562150843.321252993243314644749883359919608357053897347202786399238773645987'); + BigNumber.config({ DECIMAL_PLACES : 99, ROUNDING_MODE : 2 }); + T('-12509289.1748544943125636400748', '0.00000000019570', '-63920741823477232.051934798542667347981604496678589678078691875319366377107818088911599386816555952989269289729177312'); + BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 2 }); + T('5103106614703706.7', '-0.000006855059817629', '-744429188142190173489.2713016971254171088888271678386913354383444543485128480265142256148634497157227198749636248722828'); + BigNumber.config({ DECIMAL_PLACES : 78, ROUNDING_MODE : 3 }); + T('38002724.5614025131', '-1.71', '-22223815.532983925789473684210526315789473684210526315789473684210526315789473684210527'); + BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 1 }); + T('-12309000072530.8782101', '0.000000000000000005004668128957057438', '-2.459503758363294183324008531673735403936497133985113056082719930636152213430809622794608640259961200476256210907e+30'); + BigNumber.config({ DECIMAL_PLACES : 74, ROUNDING_MODE : 5 }); + T('365159985032.3763673086467605', '0.0002248991250864720416537834309', '1623661207627975.73236893711916990791838169197927385941853797750513823629941899829442490537'); + BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 3 }); + T('-0.000132733440397044287025245800804', '35.06', '-0.00000378589390750268930477027383924700513405590416428978893325727324586423274386765544780376498'); + BigNumber.config({ DECIMAL_PLACES : 48, ROUNDING_MODE : 0 }); + T('-9', '-15069582487318433', '5.97229552150751792890065332726072e-16'); + BigNumber.config({ DECIMAL_PLACES : 72, ROUNDING_MODE : 6 }); + T('-688440865278.1976957', '-191734448.78467510638', '3590.595584893261972185203469698709886249651463039636148228569063563654046627'); + BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 6 }); + T('-6.884105', '198.528', '-0.03467573843'); + BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 6 }); + T('98494481', '0.000000000090907', '1083464210676845567.448'); + BigNumber.config({ DECIMAL_PLACES : 38, ROUNDING_MODE : 4 }); + T('4.1', '0.42104952', '9.73757196065678925367258464040049255964'); + BigNumber.config({ DECIMAL_PLACES : 29, ROUNDING_MODE : 0 }); + T('18686.30172522661238', '-22626731230.8', '-8.258506955609394854491e-7'); + BigNumber.config({ DECIMAL_PLACES : 30, ROUNDING_MODE : 1 }); + T('-217561642539525707', '4687.6', '-46412160282346.127442614557556105469749978667'); + BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 2 }); + T('-3', '0.00000000072', '-4166666666.66666666666666666666666666666666666666666666666666666666666666666'); + BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 2 }); + T('10.3369964842', '421357.91', '0.00002453257964043'); + BigNumber.config({ DECIMAL_PLACES : 25, ROUNDING_MODE : 3 }); + T('-966.95', '166.35184', '-5.8126799198614214306255946'); + BigNumber.config({ DECIMAL_PLACES : 64, ROUNDING_MODE : 2 }); + T('88.312171688114496097823009', '-1', '-88.312171688114496097823009'); + BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 1 }); + T('-0.08100046091599871990126157625', '836052437639404688.1260', '-9.6884426465765284782792330904408446819277826640674697982217950846e-20'); + BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 0 }); + T('1307029672025726.8946196', '3588333885571316791', '0.000364244162808062686280269617983867361116163528210105586323320774998223691317505'); + BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 6 }); + T('-306094430745053063639434225', '-12.142338824106155973001689520', '2.5208852691325375368534545536856115462837e+25'); + BigNumber.config({ DECIMAL_PLACES : 85, ROUNDING_MODE : 1 }); + T('0.000000000000000162919', '0.002409301029588780599', '6.76208568373903066167611260640812687570871901190402134288403285417264259e-14'); + BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 4 }); + T('1428742', '241634.827979485972105568060292', '5.913'); + BigNumber.config({ DECIMAL_PLACES : 98, ROUNDING_MODE : 6 }); + T('0.000000000000000002510050622', '1523.2', '1.6478798726365546218487394957983193277310924369747899159663865546218487394958e-21'); + BigNumber.config({ DECIMAL_PLACES : 30, ROUNDING_MODE : 4 }); + T('-0.000000000000000000035749559428282832870653983656', '-24286992018217719702.563900', '0'); + BigNumber.config({ DECIMAL_PLACES : 27, ROUNDING_MODE : 4 }); + T('-138402.4665046532', '0.000000000347385397352979926188763', '-398411872114537.407536113851520690910631203'); + BigNumber.config({ DECIMAL_PLACES : 32, ROUNDING_MODE : 1 }); + T('36438.4910796968134561', '-1', '-36438.4910796968134561'); + BigNumber.config({ DECIMAL_PLACES : 21, ROUNDING_MODE : 0 }); + T('-50687824864.112', '19163378634568526756727650.450', '-2.645036e-15'); + BigNumber.config({ DECIMAL_PLACES : 27, ROUNDING_MODE : 2 }); + T('488334449.2020317740855741', '78.13', '6250280.931806371100544913605529247'); + BigNumber.config({ DECIMAL_PLACES : 2, ROUNDING_MODE : 6 }); + T('0.000667304', '0.00000000000004928708049', '13539126143.52'); + BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 6 }); + T('507.3946759', '120.660', '4.20516058262887452345433449361843195756671639'); + BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 4 }); + T('-0.0000000000000209691683203167478229886865505', '1076.27788', '-1.948304309693398866748862901e-17'); + BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 0 }); + T('-113.257633861192413018879', '0.0000000000023303326777400552', '-48601487222429.156054866043674'); + BigNumber.config({ DECIMAL_PLACES : 19, ROUNDING_MODE : 6 }); + T('-2077566313336500634596', '-38810801724.61887469', '53530620884.304922435225040116'); + BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 1 }); + T('13917443811993', '-1164251924.0598120192232144558', '-11953.97965370079'); + BigNumber.config({ DECIMAL_PLACES : 73, ROUNDING_MODE : 4 }); + T('-1439867048.03', '-6', '239977841.3383333333333333333333333333333333333333333333333333333333333333333333333'); + BigNumber.config({ DECIMAL_PLACES : 83, ROUNDING_MODE : 5 }); + T('-14.1843451280640557', '9395.3328084', '-0.00150972247788629551108132302742026195917932779804177309147038474588667770603633192'); + BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 3 }); + T('-3831836247.8565953325900323625', '3169.1996790786465189454871796', '-1209086.405363574724665960371338376916663187706990416314468'); + BigNumber.config({ DECIMAL_PLACES : 29, ROUNDING_MODE : 5 }); + T('-0.000000206244605375083882357269', '1445859182.857448', '-1.4264501537936e-16'); + BigNumber.config({ DECIMAL_PLACES : 25, ROUNDING_MODE : 0 }); + T('0', '1.21', '0'); + BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 2 }); + T('83335008717067160822.171945907', '0.000000000000000000120693306315870', '6.90469183924489231374137123999663300649220373696042103284760306718607591350537867610533460388107985601192585e+38'); + BigNumber.config({ DECIMAL_PLACES : 58, ROUNDING_MODE : 3 }); + T('10846307850991.30628627477717', '-1.310684754730377', '-8275298703098.531994827629365416255194325218938141649862829575721253963'); + BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 6 }); + T('-678310684269746238023205.639', '0.00000000000000087620', '-7.741505184544010933841653035836566993837023510614e+38'); + BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 4 }); + T('273969047512527019958734', '250143298211591.665974', '1095248401.501372969143862693'); + BigNumber.config({ DECIMAL_PLACES : 53, ROUNDING_MODE : 2 }); + T('-37913913.68389085010', '4349730843058434231425100.95', '-8.71638155367617422094891802420120647e-18'); + BigNumber.config({ DECIMAL_PLACES : 24, ROUNDING_MODE : 5 }); + T('0.00098741424750804361', '73915637811812314022106790436', '0'); + BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 5 }); + T('0.000000024440295818881073037', '-4', '-6.110073955e-9'); + BigNumber.config({ DECIMAL_PLACES : 78, ROUNDING_MODE : 2 }); + T('-99.1590286313793831503558794957', '16787996379118410.56015892', '-5.906543365396325479029718112268663527602296600354973223720357251e-15'); + BigNumber.config({ DECIMAL_PLACES : 82, ROUNDING_MODE : 0 }); + T('14723174275120', '265178680875168135247.4552', '5.55217117248233043623251282398647489648930220277513034207786907942086015047e-8'); + BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 0 }); + T('-1.9457690461029591399869', '-0.099', '19.6542327889187791917868686868686869'); + BigNumber.config({ DECIMAL_PLACES : 53, ROUNDING_MODE : 1 }); + T('0.000250', '1395491087969', '1.7914840313588129521412774522257497935e-16'); + BigNumber.config({ DECIMAL_PLACES : 66, ROUNDING_MODE : 1 }); + T('503.15', '0.000055143785802', '9124328.202757369327995707928780047309382227895227961374562427617199890268'); + BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 3 }); + T('0.000000000000025660757724442223488803162730', '-3790245.532665333', '-6.7702098724979855589219544271270126505188e-21'); + BigNumber.config({ DECIMAL_PLACES : 58, ROUNDING_MODE : 2 }); + T('14.463', '-0.000000002111666808880372710015801068', '-6849091882.8564768623016676014845618727081781903335062812202548971724'); + BigNumber.config({ DECIMAL_PLACES : 80, ROUNDING_MODE : 3 }); + T('-0.049977764242150', '-3554330936225373958.9794672159', '1.406108917230575984432591142761469848719374481586786332741084e-20'); + BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 6 }); + T('5999976195382498.2106', '1645742458.4628816934', '3645756.45753616711261372450729345569328619981313857117469084254846554829522'); + BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 4 }); + T('-0.0000000000000000234', '92.7', '-2.524271844660194174757281553398058252427184466e-19'); + BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 1 }); + T('-261323770210', '-330138315587204.04966262', '0.00079155844042274'); + BigNumber.config({ DECIMAL_PLACES : 27, ROUNDING_MODE : 6 }); + T('-266747620889317710970', '16715859169459882384', '-15.957757132619870995789063025'); + BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 3 }); + T('3.1999829102086268', '0.002585180334233347790', '1237.818061600566349853496904836550436749744609638869515041'); + BigNumber.config({ DECIMAL_PLACES : 43, ROUNDING_MODE : 4 }); + T('-171766371.918350352954', '216943045727495078.512735', '-7.917579074376427781751348437342336e-10'); + BigNumber.config({ DECIMAL_PLACES : 60, ROUNDING_MODE : 5 }); + T('15.52', '0.00000000000025530580488751', '60789843798648.64227787529457012617431943426961714858379045883500607718007'); + BigNumber.config({ DECIMAL_PLACES : 90, ROUNDING_MODE : 6 }); + T('-0.5622727159023', '-817.5', '0.000687795371134311926605504587155963302752293577981651376146788990825688073394495412844037'); + BigNumber.config({ DECIMAL_PLACES : 73, ROUNDING_MODE : 1 }); + T('38.73768595163933', '9365314625538049210738174', '4.1362930665464750235406947353030673158822890826879e-24'); + BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 1 }); + T('0.0000009208543785903092638599', '-34569.1445969401454', '-2.66380435306408421772788564135897283463549176971345853940568337909378e-11'); + BigNumber.config({ DECIMAL_PLACES : 9, ROUNDING_MODE : 6 }); + T('-30396165240.0206', '-225.46', '134818438.92495609'); + BigNumber.config({ DECIMAL_PLACES : 92, ROUNDING_MODE : 5 }); + T('1940492058391889114.99304514', '95.6', '20298034083597166.4748226479079497907949790794979079497907949790794979079497907949790794979079497907949790795'); + BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 4 }); + T('-1040764761.50', '15098783841.213396', '-0.06893037031626'); + BigNumber.config({ DECIMAL_PLACES : 83, ROUNDING_MODE : 5 }); + T('-63112243829712286.712176382', '4.53086863642258227476029', '-13929391667277191.1049048030718148987048324130822940316106043476213962789837629470215414269675882887'); + BigNumber.config({ DECIMAL_PLACES : 100, ROUNDING_MODE : 5 }); + T('112250343.6965919520', '-0.000007472612227381', '-15021566793642.3131422877563285057056713294011180360286844613050561843696715073443827925933925429718296877346761445'); + BigNumber.config({ DECIMAL_PLACES : 72, ROUNDING_MODE : 1 }); + T('-858308', '-797915.1043309205', '1.075688372536475592165307888197163680941989658239175669621943724756050703'); + BigNumber.config({ DECIMAL_PLACES : 67, ROUNDING_MODE : 5 }); + T('7702738480378783', '-27211551328852834116.7', '-0.0002830687007620711698741765472408358310483607997205237758794286665'); + BigNumber.config({ DECIMAL_PLACES : 86, ROUNDING_MODE : 5 }); + T('-10364330957928.845576', '-18586324921402.274691', '0.55763207636568597276102172540430891397353156072928592967369650601783246460086442630704'); + BigNumber.config({ DECIMAL_PLACES : 40, ROUNDING_MODE : 3 }); + T('-418215482375364', '12.1', '-34563263006228.429752066115702479338842975206611570248'); + BigNumber.config({ DECIMAL_PLACES : 29, ROUNDING_MODE : 2 }); + T('-0.00000000032235960011619131724', '-0.0000000001199449855652686582449445704134', '2.68756212356020288555782622224'); + BigNumber.config({ DECIMAL_PLACES : 88, ROUNDING_MODE : 5 }); + T('1731992042675229309286.24145774', '-0.00000000543884846850764546877', '-3.184482988823674786228835511596539162161550426544230885758694842325199901058255160684745968156272681580975692287458054e+29'); + BigNumber.config({ DECIMAL_PLACES : 50, ROUNDING_MODE : 4 }); + T('0.000000000004136224738967149777156268381', '-147.937118080566990703203', '-2.795934375789684904194318639235567496e-14'); + BigNumber.config({ DECIMAL_PLACES : 93, ROUNDING_MODE : 0 }); + T('-0.00000000000000000811468340227542368342231', '32479961852.044142528631352', '-2.49836605081010033691506373017657135694584426440346612866842162464e-28'); + BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 3 }); + T('-1788.32930998675528964704109632', '-4402.9030009101454', '0.406'); + BigNumber.config({ DECIMAL_PLACES : 25, ROUNDING_MODE : 6 }); + T('-534035137285426204832193876', '-0.000000000006958343802621144', '7.67474491680419827675194262635906350252120322866880525282383045e+37'); + BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 3 }); + T('43433765.655395', '52829486770946303169.008082', '8.2215005880544534379454896415484632e-13'); + BigNumber.config({ DECIMAL_PLACES : 19, ROUNDING_MODE : 2 }); + T('-256531.89844052843379160703785', '-43565278723435678939.0029', '5.8885e-15'); + BigNumber.config({ DECIMAL_PLACES : 23, ROUNDING_MODE : 5 }); + T('1382.605599', '496725559.747272963', '0.00000278343961140926681'); + BigNumber.config({ DECIMAL_PLACES : 59, ROUNDING_MODE : 0 }); + T('0.000000000000000009124024133', '-85809.060510899400', '-1.0632937918998744386039106970980125782e-22'); + BigNumber.config({ DECIMAL_PLACES : 21, ROUNDING_MODE : 3 }); + T('-28158922704444951.3318876655', '-3', '9386307568148317.110629221833333333333'); + BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 0 }); + T('-31357452346869.9832', '-685465.0410716072806884188251', '45746245.932320593614463966989994270901457798084302915769968731'); + BigNumber.config({ DECIMAL_PLACES : 5, ROUNDING_MODE : 0 }); + T('0.00006296856775186224879239176', '8361.092', '0.00001'); + BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 4 }); + T('0.0000000000000000001083906851243582424', '-176733018789786191849', '-6.133018372377985414924780432053129391963905924345013316934e-40'); + BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 5 }); + T('34646285.1404977758582763', '318004872839520750922158.9481', '0'); + BigNumber.config({ DECIMAL_PLACES : 94, ROUNDING_MODE : 5 }); + T('102.519957707', '-25322.3195', '-0.0040486005915453361213612362801124912747428212490565882007767890299306901960541173963151361391'); + BigNumber.config({ DECIMAL_PLACES : 90, ROUNDING_MODE : 4 }); + T('239446310.05585430497014', '-1062112156216.1340241041011', '-0.00022544352651880230281011078789940688440856622557785580563571076003266177694135980618363'); + BigNumber.config({ DECIMAL_PLACES : 98, ROUNDING_MODE : 0 }); + T('0.00000000000000032758850033', '-0.00000000102209384660285940028552883', '-3.2050726204722612547170391904987164753223354245592595297271256917659439684641850986207697359e-7'); + BigNumber.config({ DECIMAL_PLACES : 90, ROUNDING_MODE : 3 }); + T('0.000000000000000001751216', '0.000003645903', '4.8032435311636102222138109543781060549334417289763331608109157045593368775856e-13'); + BigNumber.config({ DECIMAL_PLACES : 82, ROUNDING_MODE : 2 }); + T('0.7321592', '-18.3014143396156', '-0.0400056075674519784435921655940016725753412040906758225360442708922820561490546102'); + BigNumber.config({ DECIMAL_PLACES : 25, ROUNDING_MODE : 3 }); + T('0.0000002141074381007', '624724950524740', '3.427e-22'); + BigNumber.config({ DECIMAL_PLACES : 46, ROUNDING_MODE : 4 }); + T('41477386487845172040', '32686.589605629763268149', '1268942003074598.1820532054446071416406551993937513639812513532'); + BigNumber.config({ DECIMAL_PLACES : 70, ROUNDING_MODE : 4 }); + T('73524957186494', '-0.00000000000092742192013327752873', '-7.92788649808146747219837992301661356413777463599126495012475971409076175396083145685072884002449e+25'); + BigNumber.config({ DECIMAL_PLACES : 55, ROUNDING_MODE : 0 }); + T('6.51927747', '3.248487618329', '2.0068654204547875474372132567239346142207846063341103567'); + BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 6 }); + T('-248.8', '76427387571599.004618', '-3.255377527681660051014924449347117991757530529525972422912e-12'); + BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 1 }); + T('-136982892001549.59241931', '-0.0000000061294841700339234293707', '2.23481924745376192219348229128691204934976563208655459056668279537751074405701910375123806e+22'); + BigNumber.config({ DECIMAL_PLACES : 27, ROUNDING_MODE : 6 }); + T('-566673274360829.4823', '-1616580392609110718613', '3.50538257764116733275e-7'); + BigNumber.config({ DECIMAL_PLACES : 92, ROUNDING_MODE : 0 }); + T('-7399.84843', '571', '-12.95945434325744308231173380035026269702276707530647985989492119089316987740805604203152364274'); + BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 0 }); + T('-14347857328982549.68152091943', '0.000000000000000002193037540912918441895905604', '-6.54245860424706572344549418130099037034313425103219343931227823220414273319099409854830572833303708795e+33'); + BigNumber.config({ DECIMAL_PLACES : 80, ROUNDING_MODE : 0 }); + T('447725486095370.54', '-261084333206951673012381772353', '-1.71486921714477400876618519816379556942618938130370368557234921262e-15'); + BigNumber.config({ DECIMAL_PLACES : 91, ROUNDING_MODE : 2 }); + T('1778.78635', '4.6', '386.6926847826086956521739130434782608695652173913043478260869565217391304347826086956521739131'); + BigNumber.config({ DECIMAL_PLACES : 22, ROUNDING_MODE : 0 }); + T('6', '-0.00000000000000000008656623', '-69311092789878916986.4507210259705199129037'); + BigNumber.config({ DECIMAL_PLACES : 67, ROUNDING_MODE : 5 }); + T('8660818485', '-3639713019.9791331', '-2.3795333416285807841757890660196384859105526936081479610725605676155'); + BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 2 }); + T('0.000000000000028486886133242758360857', '-90759541920385101577876.2228', '-3.13872079238033749299151843632992877736e-37'); + BigNumber.config({ DECIMAL_PLACES : 71, ROUNDING_MODE : 2 }); + T('-264065747359816523.15595967100', '-7', '37723678194259503.30799423871428571428571428571428571428571428571428571428571428571428572'); + BigNumber.config({ DECIMAL_PLACES : 6, ROUNDING_MODE : 4 }); + T('733652736.1234', '9128591006429.34', '0.00008'); + BigNumber.config({ DECIMAL_PLACES : 71, ROUNDING_MODE : 3 }); + T('-912789', '-27424659551921110017.6547018', '3.328351253629541266789534424994247149545228473927555683575e-14'); + BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 1 }); + T('40880374.90874231446467', '-168.2', '-243046.224189906744736'); + BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 1 }); + T('61496.883952847393249', '0.00000000000528222910', '11642222021920138.4599164773069'); + BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 3 }); + T('-1719909488824413777944662563', '-246077321', '6989305157562300419.97516123397653536710926725344185618795809305807583950412073935086443825516127103805718040956728'); + BigNumber.config({ DECIMAL_PLACES : 72, ROUNDING_MODE : 3 }); + T('-293612812289214043747.58', '0.0000000000000000001354445823693525495644225', '-2.167770811892220004074067777411843143084716317536069982839371579007784821146737197752377313721918329436356512944e+39'); + BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 6 }); + T('-252024.7609680', '8093.410735', '-31.139499676955416497838225678534032784387038772967945756926'); + BigNumber.config({ DECIMAL_PLACES : 7, ROUNDING_MODE : 3 }); + T('13815446674716621.06', '-128.60', '-107429600892042.1544324'); + BigNumber.config({ DECIMAL_PLACES : 7, ROUNDING_MODE : 0 }); + T('0.00522362886930946079174276', '3510421.9', '1e-7'); + BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 6 }); + T('0.0000000000017192602049124017803', '9145.69189439399893224784', '2e-16'); + BigNumber.config({ DECIMAL_PLACES : 22, ROUNDING_MODE : 0 }); + T('1411430645669589892', '1.425722', '989976058214427421.3345939811548113867921'); + BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 6 }); + T('-42753742073377897547.969800322', '0.00000000000000004474405195762283308535569936', '-9.55517889034056160615372279164249929677188173410104884054706502204169530968066421766387e+35'); + BigNumber.config({ DECIMAL_PLACES : 91, ROUNDING_MODE : 5 }); + T('260.52011203584432', '-3676.612144', '-0.0708587421876949335344413745699687815642486764304176219899903589068926276168009088749830338'); + BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 1 }); + T('-7.55456238', '-0.000000000003719260', '2031200394702.171937428413178965708232282765926555282502433279738'); + BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 5 }); + T('-21222.41838531276', '-289985647', '0.000073184375'); + BigNumber.config({ DECIMAL_PLACES : 9, ROUNDING_MODE : 0 }); + T('5525891.1', '-10.91656063', '-506193.41450953'); + BigNumber.config({ DECIMAL_PLACES : 58, ROUNDING_MODE : 4 }); + T('32312.39417353723751', '-0.0021138482494108150925', '-15286051.9588118724318989155766929639454507451602078022076670388352'); + BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 0 }); + T('2446253233428.940231', '-31.3104706187216162148542', '-78128919338.767159502811844194454831716599966285174816279870865962312'); + BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 6 }); + T('146.08985841078', '-712729739', '-2.049723063552143991567047548159064539890063433988405526600314905619505796993269562447709229e-7'); + BigNumber.config({ DECIMAL_PLACES : 1, ROUNDING_MODE : 6 }); + T('-254679551.3351240205748', '-963077196919.166915969572427', '0'); + BigNumber.config({ DECIMAL_PLACES : 31, ROUNDING_MODE : 1 }); + T('-4015380412427088083628.66', '2039551492.85975991919183', '-1968756575396.3470364088815587613164748499818'); + BigNumber.config({ DECIMAL_PLACES : 36, ROUNDING_MODE : 1 }); + T('-19505548357651893634645.49', '0.0000259205709359478093574', '-7.52512296347636581817777703374439950046132124649587214448460528e+26'); + BigNumber.config({ DECIMAL_PLACES : 93, ROUNDING_MODE : 2 }); + T('751007.690', '-1728265.8743523486981728681294', '-0.434544071687715892515560844698898014769657263304930643624836329871222288884130814653288174932'); + BigNumber.config({ DECIMAL_PLACES : 9, ROUNDING_MODE : 1 }); + T('0.000000000000000390405721683', '-53757', '0'); + BigNumber.config({ DECIMAL_PLACES : 46, ROUNDING_MODE : 5 }); + T('0.0000015791374698', '3467564978984453', '4.554024162115290937032043e-22'); + BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 3 }); + T('-0.0000000000000291746896274500185363981690735', '14754.92402', '-0.0001'); + BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 5 }); + T('11384156820601', '-0.0000000000000062413', '-1.82400410501033438546456667681412526236521238e+27'); + BigNumber.config({ DECIMAL_PLACES : 32, ROUNDING_MODE : 5 }); + T('432.391547', '0.0018473682', '234058.130371628135636415090397247284'); + BigNumber.config({ DECIMAL_PLACES : 26, ROUNDING_MODE : 4 }); + T('13.68132091', '74.24170', '0.1842808140169204099582849'); + BigNumber.config({ DECIMAL_PLACES : 59, ROUNDING_MODE : 6 }); + T('8873.080150772034073915', '-42784423325262745958341254', '-2.0739043467562135419772762901090863875e-22'); + BigNumber.config({ DECIMAL_PLACES : 46, ROUNDING_MODE : 5 }); + T('-425055.3393', '-5158.9808434788878162409044364', '82.3913389477464651275793694820442509540900451341'); + BigNumber.config({ DECIMAL_PLACES : 82, ROUNDING_MODE : 2 }); + T('-17740546137492505779638198852', '-1499.49537', '1.18310109470311374016701357684085413348091898409796357023763267771877148243545426885846269735397715832893836e+25'); + BigNumber.config({ DECIMAL_PLACES : 92, ROUNDING_MODE : 3 }); + T('-120967541287515870777090.3056', '-36031769380240000848665141166', '0.0000033572467677331178762017280440971752536610800072303035796168388021794690621689726518441'); + BigNumber.config({ DECIMAL_PLACES : 49, ROUNDING_MODE : 0 }); + T('-380753599.97235919717688693', '341731.9117', '-1114.1880138680627559807927940725589544056619632342051'); + BigNumber.config({ DECIMAL_PLACES : 83, ROUNDING_MODE : 0 }); + T('3973.86864569059095517125776255', '3790.450615450233881655060', '1.04838950532496793358231611052252426985338442899310394506730907098751686558696776453'); + BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 2 }); + T('819', '-0.000000000000001868873556286311654157', '-438231894953587272'); + BigNumber.config({ DECIMAL_PLACES : 39, ROUNDING_MODE : 5 }); + T('0', '-2.70218161827305518', '0'); + BigNumber.config({ DECIMAL_PLACES : 40, ROUNDING_MODE : 2 }); + T('2.7', '1525317024104608.786', '1.7701238216920533733865373e-15'); + BigNumber.config({ DECIMAL_PLACES : 90, ROUNDING_MODE : 5 }); + T('0.0000000013774085200391251247', '-427044616459807710', '-3.225444056543359111984888087221769479019208413821296679755113045e-27'); + BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 6 }); + T('0', '381052750392378', '0'); + BigNumber.config({ DECIMAL_PLACES : 70, ROUNDING_MODE : 5 }); + T('-0.012', '14229.9130446715011177656231', '-8.432939795435707899418891005245670460221309831396126407817938984e-7'); + BigNumber.config({ DECIMAL_PLACES : 28, ROUNDING_MODE : 1 }); + T('-618727765534332776069474843103', '0.00000000000106194', '-5.826390996989780741562374927990281936832589411831176902649867224136956e+41'); + BigNumber.config({ DECIMAL_PLACES : 7, ROUNDING_MODE : 4 }); + T('1343044.4', '4.8', '279800.9166667'); + BigNumber.config({ DECIMAL_PLACES : 49, ROUNDING_MODE : 2 }); + T('-29698.6587975512709624472801340', '1.09369018', '-27154.54462391833029208260801427329264307740241390848'); + BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 2 }); + T('-206050982842545845299.0294', '-10252.57709396842301448856240', '20097481926155459.46507056716149702202267712679553829986963187484665742387256996692'); + BigNumber.config({ DECIMAL_PLACES : 9, ROUNDING_MODE : 0 }); + T('450787174.91797094382', '34776465.949216', '12.962420494'); + BigNumber.config({ DECIMAL_PLACES : 55, ROUNDING_MODE : 5 }); + T('-8912.5034568999175', '0.000000000001027649820', '-8672704732143014.9231184607223499538004103382220219724263660163926268191'); + BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 3 }); + T('-291963929613551.38551581848913', '5127.96119843765', '-56935674494.28143813'); + BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 2 }); + T('353517668823.2', '-809912559.8', '-436.488685779237374903591413597436101891650155886371278'); + BigNumber.config({ DECIMAL_PLACES : 78, ROUNDING_MODE : 3 }); + T('-0.0000000000345575618967481574', '-8651.8104189', '3.994257874774588630231688258982315644045347356149059273049115794e-15'); + BigNumber.config({ DECIMAL_PLACES : 43, ROUNDING_MODE : 4 }); + T('0.00002262033686410', '0.00000000000000000016918722881770681', '133700025836303.5440032071856005751361649815034573256386641'); + BigNumber.config({ DECIMAL_PLACES : 33, ROUNDING_MODE : 4 }); + T('-9', '-0.00000000000000000309370135915883', '2909136647387024607.211131551769362614690719452830247'); + BigNumber.config({ DECIMAL_PLACES : 22, ROUNDING_MODE : 6 }); + T('-72.68302213970591', '24447071019007557295898.538296', '-3e-21'); + BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 5 }); + T('145.61599228290', '214774372.717934495176385', '6.77995193e-7'); + BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 0 }); + T('-0.0000000000127239336', '0.390324864377574104115012', '-3.259832e-11'); + BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 4 }); + T('-393350.90682', '0.0000000000009567676207', '-411124810570212056.9264787202'); + BigNumber.config({ DECIMAL_PLACES : 53, ROUNDING_MODE : 3 }); + T('-0.0000000003668467144', '-0.0000000290881995629295142832857', '0.01261153044575215164761048554983138702158579139495482'); + BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 0 }); + T('4.787447258776', '-0.0082432922249843941', '-580.76883945298487'); + BigNumber.config({ DECIMAL_PLACES : 78, ROUNDING_MODE : 4 }); + T('2696690009318863222773086253', '-0.000000001462', '-1.844521210204420809010318914500683994528043775649794801641586867305061559507523939808481532147742818057455540355677e+36'); + BigNumber.config({ DECIMAL_PLACES : 41, ROUNDING_MODE : 3 }); + T('76881164209637856397179639', '33.7', '2.28134018426225093166705160237388724035608308605341246290801186943e+24'); + BigNumber.config({ DECIMAL_PLACES : 91, ROUNDING_MODE : 1 }); + T('597716745962233128726', '-39.60', '-15093857221268513351.6666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666'); + BigNumber.config({ DECIMAL_PLACES : 74, ROUNDING_MODE : 1 }); + T('-91356.9', '4.8', '-19032.6875'); + BigNumber.config({ DECIMAL_PLACES : 77, ROUNDING_MODE : 4 }); + T('6', '0.0000000000000052', '1153846153846153.84615384615384615384615384615384615384615384615384615384615384615384615384615'); + BigNumber.config({ DECIMAL_PLACES : 100, ROUNDING_MODE : 6 }); + T('-6595759.2090163406115', '0.000000000000107279', '-61482295780314326303.3771754024552801573467314199423931990417509484614882689063097157878056283149544645270742643014942347'); + BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 0 }); + T('-8366642360683555547365541560', '-39.620862', '2.111676005606227231342301830788032829775384493149088982465853468811456e+26'); + BigNumber.config({ DECIMAL_PLACES : 92, ROUNDING_MODE : 0 }); + T('10769162802333.3620', '32525723925789', '0.3310967905558193239276674624674343930721042133996441026370693086124554971148047279865860532'); + BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 3 }); + T('-722856872353934530.245543', '28233', '-25603261160837.83268676878121348'); + BigNumber.config({ DECIMAL_PLACES : 53, ROUNDING_MODE : 4 }); + T('-1', '-504284034426003', '1.98300943859593228789356646092126130439e-15'); + BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 2 }); + T('-161.18599049116514632266705', '-10286701.34', '0.0000156693564987'); + BigNumber.config({ DECIMAL_PLACES : 53, ROUNDING_MODE : 3 }); + T('-9.497250', '95.217589970243492', '-0.09974260011168095598895157145158668001901445580253863'); + BigNumber.config({ DECIMAL_PLACES : 6, ROUNDING_MODE : 5 }); + T('98023548.73', '-3247574706953067067089963.0', '0'); + BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 1 }); + T('0', '-150978667633376', '0'); + BigNumber.config({ DECIMAL_PLACES : 30, ROUNDING_MODE : 4 }); + T('13.945', '-0.000333489074233133', '-41815.462866562865851280031427636914'); + BigNumber.config({ DECIMAL_PLACES : 5, ROUNDING_MODE : 2 }); + T('-23264894.70087300543163', '2129233469499.5357015', '-0.00001'); + BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 2 }); + T('-17520127173088.05', '-32144915.483903564124', '545035.720559327104969763059381957684855487085216377818567655'); + BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 2 }); + T('-2507754348349292581124766.52', '9', '-2.78639372038810286791640724444444444444444444444444444444444444444444444444444444e+23'); + BigNumber.config({ DECIMAL_PLACES : 88, ROUNDING_MODE : 0 }); + T('10132.85840', '-0.00000000415470652290632786510493', '-2438886680475.2783550885887106154489894064656314634276650796020629292987020657942917264533220964319659'); + BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 3 }); + T('-2408133581684757559117', '-143220715840651400750035', '0.016814142895110702260709558133521323305519171571563617498137562792145'); + BigNumber.config({ DECIMAL_PLACES : 19, ROUNDING_MODE : 4 }); + T('0.000000000000000003198370', '-542480.91706', '0'); + BigNumber.config({ DECIMAL_PLACES : 88, ROUNDING_MODE : 3 }); + T('-0.000000000008512648221547079532', '47947101838.0139888013', '-1.775424977782073370220761947962681790318209412034329729757695848925e-22'); + BigNumber.config({ DECIMAL_PLACES : 19, ROUNDING_MODE : 5 }); + T('0.00000000000000000011093', '22917.451210427999', '0'); + BigNumber.config({ DECIMAL_PLACES : 92, ROUNDING_MODE : 4 }); + T('-5452.9', '-117854011174594916759393320.1', '4.626825973637670289155725075691610989628825159024940840150731975804822e-23'); + BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 3 }); + T('-2163', '-5618.908218854533', '0.38495022'); + BigNumber.config({ DECIMAL_PLACES : 56, ROUNDING_MODE : 4 }); + T('0.000000000336304373477542493153710230', '-4186031524', '-8.03396657548779828906300969366517365e-20'); + BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 4 }); + T('11553.4617260458525853', '-402113198056590396003', '-2.8731864017106707904343853526999954587484204677438247997511e-17'); + BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 2 }); + T('-181.366', '-26923110833809265.90276', '6.736442943742065990244083064716388108845247447476821880350726856024e-15'); + BigNumber.config({ DECIMAL_PLACES : 29, ROUNDING_MODE : 3 }); + T('176664198.97382887749', '-6.703640', '-26353473.4821423700392622515528876849'); + BigNumber.config({ DECIMAL_PLACES : 49, ROUNDING_MODE : 5 }); + T('-0.00000000000000001081719221524', '13557.51', '-7.978745518343707657232043347e-22'); + BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 2 }); + T('-279668700083542629396.8738', '-8989194394.50111', '31111653370.6982896042912274454917770704503039799571441076351113468002914069592993132748827192761700465839897'); + BigNumber.config({ DECIMAL_PLACES : 100, ROUNDING_MODE : 5 }); + T('-10962559713.5256', '90423573495954484891232.735334', '-1.212356390008857658041919479438436425645429346797893680515762015192882468075426906336431e-13'); + BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 1 }); + T('8417526.02327013', '2777508574.8209', '0.0030306030734'); + BigNumber.config({ DECIMAL_PLACES : 86, ROUNDING_MODE : 4 }); + T('123573743499355386610.311970', '-6801791452477806600081', '-0.01816782304525656027864123540300829519018882095471454248744787831024859664366597147763'); + BigNumber.config({ DECIMAL_PLACES : 48, ROUNDING_MODE : 5 }); + T('445.696', '4617891890.5', '9.6515035554836794202772382984178914701251e-8'); + BigNumber.config({ DECIMAL_PLACES : 40, ROUNDING_MODE : 2 }); + T('-11900.9568454100155485', '-3476642741.8436463943548629222', '0.0000034231175674665373261181070448471272'); + BigNumber.config({ DECIMAL_PLACES : 89, ROUNDING_MODE : 6 }); + T('11348547.8754874465167814538', '0.00004569466684935670458', '248356069930.44994350575754262658581065466587206841915638415295657073357911004031792129581118795515446'); + BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 4 }); + T('11.57', '-17254134620', '0'); + BigNumber.config({ DECIMAL_PLACES : 31, ROUNDING_MODE : 1 }); + T('-0.000000000000000492', '7', '-7.02857142857142e-17'); + BigNumber.config({ DECIMAL_PLACES : 5, ROUNDING_MODE : 2 }); + T('244775175978.4297', '58.3', '4198545042.51166'); + BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 6 }); + T('16084427.989905', '13774842831298.8', '0.00000116766689732084835945526952707448756700157'); + BigNumber.config({ DECIMAL_PLACES : 99, ROUNDING_MODE : 4 }); + T('-0.00000000000000000072736713853935309030799267119', '-164.42446530', '4.423716003650906142298962800336988536948582675427438352144058941330794767072902e-21'); + BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 4 }); + T('-437.5396', '-1.77', '247.19751412429378531'); + BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 0 }); + T('0.03983775', '3560454489296722751770', '1.11889507701217477177168362112653150044898592883858932108625090095410893684e-23'); + BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 3 }); + T('109362613295.86670', '29.64', '3689696804.85380229419703103913'); + BigNumber.config({ DECIMAL_PLACES : 91, ROUNDING_MODE : 4 }); + T('-0.0000032765290989360868917898696', '23134769823577489.12274739', '-1.416279100212553826140199909818514674618878864071375130080526341123427e-22'); + BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 2 }); + T('-370', '1895716488790', '-1.9517686436127588143580679436793115682e-10'); + BigNumber.config({ DECIMAL_PLACES : 9, ROUNDING_MODE : 0 }); + T('-0.119463366506755', '249.81', '-0.000478217'); + BigNumber.config({ DECIMAL_PLACES : 96, ROUNDING_MODE : 3 }); + T('-7086162368075.3800108071', '-0.00000004820534953852057358915222439', '146999501837713569169.304265988413248513013633283530691155318444527059289806808714865906466809802032523276035908798809'); + BigNumber.config({ DECIMAL_PLACES : 24, ROUNDING_MODE : 2 }); + T('0', '0.00000000000000000014803456360474978130174416', '0'); + BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 4 }); + T('-1', '0.00000000000000019619313938607223639', '-5097018188960128.66621016506236792382745133518116907519744902661'); + BigNumber.config({ DECIMAL_PLACES : 90, ROUNDING_MODE : 0 }); + T('-0.0084827970779245676518357807346', '-1.5', '0.005655198051949711767890520489733333333333333333333333333333333333333333333333333333333334'); + BigNumber.config({ DECIMAL_PLACES : 2, ROUNDING_MODE : 2 }); + T('-0.000000000000000000050067235497272278048443611', '292.7081119936176', '0'); + BigNumber.config({ DECIMAL_PLACES : 55, ROUNDING_MODE : 0 }); + T('0', '4466725625238.749354', '0'); + BigNumber.config({ DECIMAL_PLACES : 31, ROUNDING_MODE : 1 }); + T('-16824641.958', '1.96', '-8584000.9989795918367346938775510204081'); + BigNumber.config({ DECIMAL_PLACES : 28, ROUNDING_MODE : 0 }); + T('-0.0000000000000106859863094897', '-2729188667932820575989818.84774', '1e-28'); + BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 1 }); + T('-2.38', '-1873114498229', '1.2706110610164259521028e-12'); + BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 3 }); + T('-4.68', '1082905.925', '-0.00000433'); + BigNumber.config({ DECIMAL_PLACES : 72, ROUNDING_MODE : 6 }); + T('-8113', '-5949.882', '1.363556453724628488430526857507426197696021534544718701984341874343054198'); + BigNumber.config({ DECIMAL_PLACES : 39, ROUNDING_MODE : 5 }); + T('-21706.47947', '310050075109339875387268468833', '-7.0009592683844e-26'); + BigNumber.config({ DECIMAL_PLACES : 52, ROUNDING_MODE : 2 }); + T('0.0000000000000000000208693317205862612', '-766835343696143996876', '-2.72148798202e-41'); + BigNumber.config({ DECIMAL_PLACES : 82, ROUNDING_MODE : 1 }); + T('0.0000000000000000001002743971335117', '0.0000250220203710886', '4.0074460673596356044798592209348131568198528485765879099969546704184e-15'); + BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 6 }); + T('-1.33127239316243150282262', '-758441.1309619468855071', '0.00000175527452140412090223529987373882800883'); + BigNumber.config({ DECIMAL_PLACES : 86, ROUNDING_MODE : 3 }); + T('-0.457998904018211230990', '106823865246041', '-4.28742119528562117351521105182951354172417051826989560351852664958994121e-15'); + BigNumber.config({ DECIMAL_PLACES : 64, ROUNDING_MODE : 6 }); + T('827.7662', '0.00000000000058611', '1412305198682841.1049120472266298135162341539983962054904369486956373377011141253'); + BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 3 }); + T('0.00000000000766056111585', '-4326', '-1.771e-15'); + BigNumber.config({ DECIMAL_PLACES : 74, ROUNDING_MODE : 5 }); + T('-0.00000000015729606511275867583378', '-47360157670.0547277528812936', '3.32127410150526447699433470761724988139876005238577631e-21'); + BigNumber.config({ DECIMAL_PLACES : 30, ROUNDING_MODE : 3 }); + T('-0.00000000091092387', '-0.00000016666487527350474711378008', '0.005465601966251928706607718464'); + BigNumber.config({ DECIMAL_PLACES : 49, ROUNDING_MODE : 0 }); + T('0.000000007557770', '-0.00075816935781574087888658416', '-0.0000099684456013543837066710559181684089709649944'); + BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 2 }); + T('0.0000020087', '-35211882697672804165890828224', '-5.7046083483992675229381e-35'); + BigNumber.config({ DECIMAL_PLACES : 28, ROUNDING_MODE : 0 }); + T('1', '-3979309282849145379656834.598', '-2.513e-25'); + BigNumber.config({ DECIMAL_PLACES : 28, ROUNDING_MODE : 4 }); + T('288.417899033564961844', '-0.00083', '-347491.4446187529660771084337349398'); + BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 6 }); + T('-354425.55865449782', '0.000000000002663912762955191297607172533', '-133046983964038871.4593608883168'); + BigNumber.config({ DECIMAL_PLACES : 72, ROUNDING_MODE : 4 }); + T('34662.291247', '50631846734.64123571', '6.84594647093620534765634464165957567554562755943960923814340077924e-7'); + BigNumber.config({ DECIMAL_PLACES : 59, ROUNDING_MODE : 0 }); + T('166199629396.7152205', '340428867.221111275338763271634', '488.20662816695633016681543159573660494212645642258549253064269'); + BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 2 }); + T('31.12250528447262923010751', '0.00000000087826137', '35436495726.17844871180832'); + BigNumber.config({ DECIMAL_PLACES : 73, ROUNDING_MODE : 3 }); + T('3210014362437665134887.25538', '-10.7036', '-299900441200873083344.5995160506745394073022160768339624051720916327217011099069471953361485856'); + BigNumber.config({ DECIMAL_PLACES : 28, ROUNDING_MODE : 6 }); + T('-0.2186034305808468153', '-0.00002470', '8850.3413190626241012145748987854'); + BigNumber.config({ DECIMAL_PLACES : 40, ROUNDING_MODE : 0 }); + T('12478396.1599469824217', '-0.00005802658288439887441', '-215046200201.1485876879095422103548422559818198858685'); + BigNumber.config({ DECIMAL_PLACES : 52, ROUNDING_MODE : 5 }); + T('-1695.7431718249008647067456', '-1894577221.3806', '8.950509658240235260983971505096809376850495951e-7'); + BigNumber.config({ DECIMAL_PLACES : 49, ROUNDING_MODE : 1 }); + T('-241284189093.86476', '7121957475722720030', '-3.38789145984587319969970007799531782077092e-8'); + BigNumber.config({ DECIMAL_PLACES : 70, ROUNDING_MODE : 4 }); + T('229.159577781024488884284523270', '15827811.765113481403465788789', '0.0000144782855129804781782160081696446522432203755884279917332806673499'); + BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 5 }); + T('-2', '-36690762702.360403462057', '5.451e-11'); + BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 6 }); + T('28914.0854970944316513046232987', '588918251974184326.432567676575', '4.9096942402732497225323883923686358553855e-14'); + BigNumber.config({ DECIMAL_PLACES : 6, ROUNDING_MODE : 1 }); + T('985.3', '110692260427.6595868463953548', '0'); + BigNumber.config({ DECIMAL_PLACES : 28, ROUNDING_MODE : 2 }); + T('-11584428432173903', '5836', '-1984994590845.4254626456477039067854694996'); + BigNumber.config({ DECIMAL_PLACES : 82, ROUNDING_MODE : 0 }); + T('-285.080308', '0.000000000000001579060969526758', '-180537872508772162.1425399144383005516174655559047556185290795696279787560640447736969020751579144736'); + BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 2 }); + T('-7314926838', '-4.59806', '1590872419.672644550092865251867091773487079333458023601257921819202011283019360338925546861068'); + BigNumber.config({ DECIMAL_PLACES : 23, ROUNDING_MODE : 4 }); + T('-11150536667.220697', '-0.0000148263718447037736405151712457', '752074532057811.16038727959854897547701'); + BigNumber.config({ DECIMAL_PLACES : 42, ROUNDING_MODE : 5 }); + T('0.000034439', '-43.80', '-7.86278538812785388127853881278538813e-7'); + BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 1 }); + T('-3325765.67', '-975143369337176063355701369091', '0'); + BigNumber.config({ DECIMAL_PLACES : 26, ROUNDING_MODE : 6 }); + T('-11714479722402747456', '13985398070045191101720', '-0.00083762218735078839171923'); + BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 2 }); + T('-17.66', '-2011513929495288742', '1e-15'); + BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 6 }); + T('-364544.23838', '-86661350.88886', '0.00420653768538'); + BigNumber.config({ DECIMAL_PLACES : 92, ROUNDING_MODE : 3 }); + T('-8212024.05936522', '-0.00000000031142169355553117630542302718', '26369466961687087.73998920742887087815127142165724721398021346806585408574886791929503494691927452789154395683'); + BigNumber.config({ DECIMAL_PLACES : 22, ROUNDING_MODE : 5 }); + T('355562161525907.6', '0.000000000000000000176', '2.020239554124475e+33'); + BigNumber.config({ DECIMAL_PLACES : 46, ROUNDING_MODE : 5 }); + T('45053830577655388757.9', '-28567382886349292167417518095', '-1.577107387011780519755115682384135459e-9'); + BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 0 }); + T('450487189350.5587956', '-4158900812972.723005705813121', '-0.10831882'); + BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 6 }); + T('0.000000000013200962', '982953804', '0'); + BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 3 }); + T('-77306', '-0.000000000000000839093964', '92130325466147674493.341963785119'); + BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 0 }); + T('1278794.9358822362652680550', '-516402.818101142', '-2.477'); + BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 2 }); + T('0.00000000000000525450', '-4.00247921699212', '0'); + BigNumber.config({ DECIMAL_PLACES : 25, ROUNDING_MODE : 4 }); + T('0.0000000000000731186280459695', '-0.00000000000025477319298719825567', '-0.2869949824338211924404096'); + BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 5 }); + T('0.00000000000000303133058001014485268638', '382508.56435663', '7.92486982640184371531271251696217534903553010456e-21'); + BigNumber.config({ DECIMAL_PLACES : 19, ROUNDING_MODE : 1 }); + T('-234982095594308.19612', '458878.61539585853455391812', '-512078984.9655498972330178178'); + BigNumber.config({ DECIMAL_PLACES : 89, ROUNDING_MODE : 2 }); + T('17317538.5', '29.5966544', '585118.11051184217632382124920173409870272364298040389321841728165059088570497346483864743847535'); + BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 2 }); + T('1.13183693', '-10708432517497979855.1615193', '-1.05695854939603537631931016638241905193e-19'); + BigNumber.config({ DECIMAL_PLACES : 35, ROUNDING_MODE : 0 }); + T('6.8787514260155610450174866', '-0.214871', '-32.01340071957388872866737065495111021'); + BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 2 }); + T('9', '-54745011062627.6303', '-1e-13'); + BigNumber.config({ DECIMAL_PLACES : 55, ROUNDING_MODE : 4 }); + T('244.7949772420', '212561.689969', '0.0011516420352025847324194690336955993342194615565994197'); + BigNumber.config({ DECIMAL_PLACES : 99, ROUNDING_MODE : 0 }); + T('0.000000031041', '-0.00000000000010832', '-286567.577548005908419497784342688330871491875923190546528803545051698670605612998522895125553914327917283'); + BigNumber.config({ DECIMAL_PLACES : 82, ROUNDING_MODE : 6 }); + T('-5', '-1', '5'); + BigNumber.config({ DECIMAL_PLACES : 62, ROUNDING_MODE : 0 }); + T('-3647714057342.344419212889', '66.08', '-55201483918.61901360794323547215496368038740920096852300242130750605326877'); + BigNumber.config({ DECIMAL_PLACES : 52, ROUNDING_MODE : 1 }); + T('-296586646905.87', '10.62697', '-27908862724.3579308118871136363422499545966536086956112607827066'); + BigNumber.config({ DECIMAL_PLACES : 82, ROUNDING_MODE : 5 }); + T('0.00000104208542089884', '-466141.347', '-2.2355567203070702929941977449170583874422965530238620947735837730781689e-12'); + BigNumber.config({ DECIMAL_PLACES : 77, ROUNDING_MODE : 4 }); + T('-51285337112', '2983965.1', '-17186.97618547884491008289607676711768512305991782544641691687345807094057500873586'); + BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 2 }); + T('71220.93', '-0.01857651073264191243878809311', '-3833923.9820131231147816074654911721048995993360368248376218174400380729521529188040354'); + BigNumber.config({ DECIMAL_PLACES : 6, ROUNDING_MODE : 4 }); + T('-6', '28767.1596', '-0.000209'); + BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 1 }); + T('-820.65708906', '-1070782820906061.717912385913', '7.6640853125154414557334549413445715745754921798313010156e-13'); + BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 3 }); + T('116589557442731987886', '-5381447.7', '-21665091615167.4183'); + BigNumber.config({ DECIMAL_PLACES : 19, ROUNDING_MODE : 3 }); + T('-967636609359503330.8', '-0.0000000000000053167817155', '1.819966779035811877125764991357580589392545656786236e+32'); + BigNumber.config({ DECIMAL_PLACES : 38, ROUNDING_MODE : 4 }); + T('1378098.0860848883965', '3829.144881526811', '359.89708635297016136624615649284086100158'); + BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 5 }); + T('0', '4353.34549', '0'); + BigNumber.config({ DECIMAL_PLACES : 2, ROUNDING_MODE : 6 }); + T('-35.0', '714.58398198933532', '-0.05'); + BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 5 }); + T('-188.0', '4324', '-0.04347826086956521739130434782608695652173913'); + BigNumber.config({ DECIMAL_PLACES : 55, ROUNDING_MODE : 1 }); + T('-112.292782', '1353.2574746268109064176431', '-0.0829796133444354975314836744657495573860198495844430986'); + BigNumber.config({ DECIMAL_PLACES : 36, ROUNDING_MODE : 2 }); + T('-335.4292', '2', '-167.7146'); + BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 0 }); + T('-3.01549', '-2884.17173068256673060268', '0.00104553066931501876'); + BigNumber.config({ DECIMAL_PLACES : 25, ROUNDING_MODE : 2 }); + T('-0.000000000000303585323552205201200045', '-521.9394865', '5.81648508e-16'); + BigNumber.config({ DECIMAL_PLACES : 72, ROUNDING_MODE : 3 }); + T('-0.0005968274879156986', '-114765522638442814.5', '5.20040752827783749460320576045391710563725197474603e-21'); + BigNumber.config({ DECIMAL_PLACES : 71, ROUNDING_MODE : 3 }); + T('-10104', '921.19008301', '-10.96842029278588727172841387099769273274951557709344646106993048837381014'); + BigNumber.config({ DECIMAL_PLACES : 100, ROUNDING_MODE : 2 }); + T('0.0000000000000000273049586458', '253618203.43011359797', '1.07661667327140760880141928555493830956376043549264221372598231047482040857e-25'); + BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 4 }); + T('92922740.3', '2.31571', '40127105.855223667903148494414240125058837246460048969862374822408678115998980874116'); + BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 6 }); + T('98.0', '9012340616560.8575896792', '1.08739787109152962034444607422571496238389650882032713766511857928951409622559135329911e-11'); + BigNumber.config({ DECIMAL_PLACES : 92, ROUNDING_MODE : 2 }); + T('-9.22766448843', '30584691562.115512085', '-3.017086005163470678943551372474647314661738810411606251930458348221431623446733989e-10'); + BigNumber.config({ DECIMAL_PLACES : 96, ROUNDING_MODE : 3 }); + T('-0.00000321', '0.0000000000029905245023738090', '-1073390.302420855083982977706400817540115916694852349782290443838748321172953000874847743245801381481218'); + BigNumber.config({ DECIMAL_PLACES : 59, ROUNDING_MODE : 5 }); + T('1', '-478284675.8535330846', '-2.09080501735797565380343933829251104375905448306653e-9'); + BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 2 }); + T('-24889740.944', '-797087273.4207924200426425', '0.031225866694851106957198464945590008419112817133210984653981131991133256272684495'); + BigNumber.config({ DECIMAL_PLACES : 23, ROUNDING_MODE : 3 }); + T('13.1614510', '799327655434', '1.646565198955e-11'); + BigNumber.config({ DECIMAL_PLACES : 70, ROUNDING_MODE : 3 }); + T('-0.02997028136511', '164423.0141282', '-1.822754650498152611447305273290121442270888131882025599486482581e-7'); + BigNumber.config({ DECIMAL_PLACES : 60, ROUNDING_MODE : 3 }); + T('-83.962', '-0.0000093242194811805', '9004721.539370062771492551878267567604243603287981636648318973068259'); + BigNumber.config({ DECIMAL_PLACES : 66, ROUNDING_MODE : 5 }); + T('-2', '-9831.560685', '0.00020342650206608575696341745155998088618826442202853574717064364'); + BigNumber.config({ DECIMAL_PLACES : 85, ROUNDING_MODE : 4 }); + T('-2408978781037.3510487', '-2.0209735274300618771100862158', '1191989280582.358613546376064132210477642527787115330582198045845612173066304486493037517120331381'); + BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 6 }); + T('156581443947360795736793.8', '153828658191028.8630776013', '1017895142.4832260054950889143026772449424156367352661475671925661398188827146377323678301'); + BigNumber.config({ DECIMAL_PLACES : 21, ROUNDING_MODE : 0 }); + T('-106669940.5101239779778850', '287.16715', '-371455.929099564410406569833'); + BigNumber.config({ DECIMAL_PLACES : 78, ROUNDING_MODE : 1 }); + T('-0.000000000005329131775399', '-2016075515213211958295433.2776', '2.643319526072123676104268301908366260560799e-36'); + BigNumber.config({ DECIMAL_PLACES : 41, ROUNDING_MODE : 4 }); + T('20917.248494281423675636484', '0.000000000000879328552700456560582', '23787750812871521.03901071061542842588654768064339450389481'); + BigNumber.config({ DECIMAL_PLACES : 32, ROUNDING_MODE : 5 }); + T('8.14215847559786034216', '53135.171299627387188786', '0.00015323482123892122654505696856'); + BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 3 }); + T('120005559', '8', '15000694.875'); + BigNumber.config({ DECIMAL_PLACES : 73, ROUNDING_MODE : 3 }); + T('0.00082521538', '2962689307305357254627', '2.785359159886241279024189699621126135113985187557e-25'); + BigNumber.config({ DECIMAL_PLACES : 72, ROUNDING_MODE : 0 }); + T('-0.0000000018', '-959.7', '1.875586120662707095967489840575179743669896842763363551109722e-12'); + BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 0 }); + T('-0.000001066091437051389158134313065', '-54550697597988.2164086050344167', '1e-16'); + BigNumber.config({ DECIMAL_PLACES : 82, ROUNDING_MODE : 2 }); + T('-881450466.662', '-12.73', '69241984.8124116260801256873527101335428122545168892380204241948153967007069913589945011784'); + BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 4 }); + T('0.0031693408972666078125263', '-1', '-0.0031693408972666078125263'); + BigNumber.config({ DECIMAL_PLACES : 72, ROUNDING_MODE : 0 }); + T('-4.535', '506.69530', '-0.008950152093378407101861809256963701853954437706448036916861080021859291'); + BigNumber.config({ DECIMAL_PLACES : 90, ROUNDING_MODE : 0 }); + T('1834.4', '-0.000296642697475565684977543', '-6183870.412488743761227431114731471038972851587971972838707653417369269946548018381567775282756274'); + BigNumber.config({ DECIMAL_PLACES : 86, ROUNDING_MODE : 5 }); + T('26.460334800691560145438110', '55', '0.48109699637621018446251109090909090909090909090909090909090909090909090909090909090909'); + BigNumber.config({ DECIMAL_PLACES : 70, ROUNDING_MODE : 2 }); + T('0.00013879', '-1859.266086', '-7.46477338800875648306748063816402016596563683031649725901578134e-8'); + BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 1 }); + T('-8860443753.946', '791167.32', '-11199.20341748443300211136122255403572533809915202260882059688714139507'); + BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 0 }); + T('1659086344364514178134748909.31', '-0.00000000000019569851052023168146429', '-8.47776684632964899225070525498158826632514866528309592706027956562821436539535748195784066e+39'); + BigNumber.config({ DECIMAL_PLACES : 99, ROUNDING_MODE : 1 }); + T('-5840566934230352003627', '12181689.4', '-479454593073958.362756072240686090715791850677131859888005353346145896643859594712700522474329381604492394954676811'); + BigNumber.config({ DECIMAL_PLACES : 90, ROUNDING_MODE : 6 }); + T('-115.78', '-0.00029632151', '390724.250831470182505481967880090783824636962736859703502455829143149277283312979877836070692269'); + BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 0 }); + T('-17678362127870710507151.66721', '2.8', '-6.313700759953825181125595432142857142857142857142857142857142857142857142857142857142857143e+21'); + BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 2 }); + T('-1', '49.4', '-0.02024291497975708502024291497975708502024291497975708502024291497975'); + BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 0 }); + T('0.000000000000002295093364019182289319365862', '3', '7.65031121339727429773121954e-16'); + BigNumber.config({ DECIMAL_PLACES : 19, ROUNDING_MODE : 4 }); + T('356272.49131846480991666', '-0.00000000000152684414', '-233339135269212750.1086391175460777549'); + BigNumber.config({ DECIMAL_PLACES : 39, ROUNDING_MODE : 3 }); + T('0.00000000000034718503647815561', '7634618013.74749176089', '4.547510246786244e-23'); + BigNumber.config({ DECIMAL_PLACES : 45, ROUNDING_MODE : 4 }); + T('4419292534230334167380586901', '-98750790116226', '-44751971392117.384988619855226602933570788116660146013546402'); + BigNumber.config({ DECIMAL_PLACES : 1, ROUNDING_MODE : 1 }); + T('-0.000000002640314227681740808806945', '-0.00000001727726621556096', '0.1'); + BigNumber.config({ DECIMAL_PLACES : 86, ROUNDING_MODE : 3 }); + T('224239562441972', '208159', '1077251343.64582842922957931196825503581396912936745468608131284258667653092107475535528129939133'); + BigNumber.config({ DECIMAL_PLACES : 25, ROUNDING_MODE : 4 }); + T('5.07573926', '-0.0000006299941666685128408282015638', '-8056803.5841365606359821934824012'); + BigNumber.config({ DECIMAL_PLACES : 55, ROUNDING_MODE : 2 }); + T('-333956334181076018958.8736898', '216131081.6161449', '-1545156447114.7754744584147365985158699131343315862971072549909074858'); + BigNumber.config({ DECIMAL_PLACES : 67, ROUNDING_MODE : 6 }); + T('-351329370559483', '0.0000249515526800', '-14080461246850270161.2234898401521039130780056930709612256482629440918624227275943614744'); + BigNumber.config({ DECIMAL_PLACES : 25, ROUNDING_MODE : 5 }); + T('563922094480019', '-0.00000003973759974770161962', '-1.41911463717089669561746511053964737252150859296e+22'); + BigNumber.config({ DECIMAL_PLACES : 52, ROUNDING_MODE : 5 }); + T('-169945484449570746983136.2', '-1257007944836', '135198417120.3812776146603667877407888246796159806670569777738337'); + BigNumber.config({ DECIMAL_PLACES : 41, ROUNDING_MODE : 4 }); + T('30369.73135366606', '7670136648490.82036957156012', '3.95947722256573126000846098351557e-9'); + BigNumber.config({ DECIMAL_PLACES : 26, ROUNDING_MODE : 2 }); + T('1.4444343508', '-0.000000000000000030201076', '-47827247969575653.52969543204354705772734719'); + BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 4 }); + T('-1301765052865.662576', '-8034253087206065409336236.5863', '0'); + BigNumber.config({ DECIMAL_PLACES : 85, ROUNDING_MODE : 1 }); + T('-43294281189.9655444155109481', '-5416370820072684.408611244392', '0.0000079932269462644659624737902334378948915704774581638949755139014111418431575371608'); + BigNumber.config({ DECIMAL_PLACES : 19, ROUNDING_MODE : 3 }); + T('2.513163425', '-41516.26124951', '-0.0000605344351673686'); + BigNumber.config({ DECIMAL_PLACES : 32, ROUNDING_MODE : 1 }); + T('0', '-63301017633243.7', '0'); + BigNumber.config({ DECIMAL_PLACES : 27, ROUNDING_MODE : 5 }); + T('792995397863538032966206.36', '2000057.03848', '396486391441214770.533170799574005957026350136'); + BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 0 }); + T('-0.00000000001223160894758355959512224993', '-259896322713293214', '1'); + BigNumber.config({ DECIMAL_PLACES : 55, ROUNDING_MODE : 6 }); + T('-1976.5', '5864021.5672288', '-0.0003370553769866245326081455571391585055073452007206643'); + BigNumber.config({ DECIMAL_PLACES : 30, ROUNDING_MODE : 5 }); + T('-1158971.274333232717401185', '-926364306311.6293418018796388', '0.000001251096643552406361650562'); + BigNumber.config({ DECIMAL_PLACES : 43, ROUNDING_MODE : 1 }); + T('-218013221', '-727851107224011227.52723485', '2.995299709462445366963421695946644e-10'); + BigNumber.config({ DECIMAL_PLACES : 35, ROUNDING_MODE : 1 }); + T('-986608546070844210107181.936', '672917810.5511805859535416', '-1466165006485297.99312049307790578350867921850442274'); + BigNumber.config({ DECIMAL_PLACES : 43, ROUNDING_MODE : 1 }); + T('-2.30', '-3574.267', '0.0006434885810153522386548067058224805253776'); + BigNumber.config({ DECIMAL_PLACES : 32, ROUNDING_MODE : 2 }); + T('-0.00096359384288029908705847', '-13117636.77133', '7.345788419651446874734e-11'); + BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 1 }); + T('3268.604363654077832', '-34', '-96.13542246041405388235294117647058823529411764'); + BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 5 }); + T('-26.01868784433545', '44235870867281485', '0'); + BigNumber.config({ DECIMAL_PLACES : 85, ROUNDING_MODE : 6 }); + T('74.5', '882526.6667', '0.0000844167126173933662961121716323543699668242557366793730222815033720498907163504071'); + BigNumber.config({ DECIMAL_PLACES : 7, ROUNDING_MODE : 1 }); + T('2346320493.483661205767414081', '18891988723810961.6890741589393', '1e-7'); + BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 5 }); + T('-6643382332752.800366', '708198923.142517034076', '-9380.6727399045969877466366411125785225'); + BigNumber.config({ DECIMAL_PLACES : 21, ROUNDING_MODE : 2 }); + T('358420023453.511025368037013', '-0.0000000088425110441501727725645', '-40533737720421213147.897212111279513473931'); + BigNumber.config({ DECIMAL_PLACES : 77, ROUNDING_MODE : 3 }); + T('-13903.808110199', '-196395', '0.07079512263651824129942208304692074645484864685964510298123679319738282542834'); + BigNumber.config({ DECIMAL_PLACES : 59, ROUNDING_MODE : 2 }); + T('0.000000000000000010395', '-14.28', '-7.2794117647058823529411764705882352941176e-19'); + BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 5 }); + T('-9218614451113493670', '-0.00000000000000016185263657703762427', '5.69568383072071498871273113548441534234149560125375183394529211322856118223136764911798578479761381095302917255374908882905519623669e+34'); + BigNumber.config({ DECIMAL_PLACES : 73, ROUNDING_MODE : 4 }); + T('2523532.104758902674236', '1425317605896', '0.0000017705051101031829994014197506080252923384113662616153652501841038691'); + BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 5 }); + T('-141.4', '119718482665189185033519.71586', '-1.1811041775015e-21'); + BigNumber.config({ DECIMAL_PLACES : 35, ROUNDING_MODE : 5 }); + T('12804.1563', '-719.1', '-17.80580767626199415936587400917813934'); + BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 4 }); + T('582037664817572050755.6736884', '-0.0000117163', '-4.967759999467170102811243211594103940663861457968812679770917439806082124902913035685327279089815044e+25'); + BigNumber.config({ DECIMAL_PLACES : 35, ROUNDING_MODE : 4 }); + T('-2199756650967975683604832991', '0.000000000000001016247473465', '-2.16458757183196701804046535386679737451306727219918382855096114932607863474941e+42'); + BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 6 }); + T('-23276.4098074440', '19.9177283480510', '-1168.62773709440893442'); + BigNumber.config({ DECIMAL_PLACES : 82, ROUNDING_MODE : 2 }); + T('2694302819292998.54846048', '148762428626556504299', '0.0000181114468496383624671273269368124102810066837334214790130527562697435433035728'); + BigNumber.config({ DECIMAL_PLACES : 42, ROUNDING_MODE : 4 }); + T('0', '0.0000000000000000250169442196', '0'); + BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 4 }); + T('-15110061623729716511396098221', '1847662722830329', '-8177932821301.647568672180256'); + BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 5 }); + T('134.34076196', '-163212229.78', '-8.2310475226692904997820562218410493429630295196130001674191942407270750051019859303585087e-7'); + BigNumber.config({ DECIMAL_PLACES : 58, ROUNDING_MODE : 6 }); + T('2', '0.000044476120196283495', '44967.9511426251522555540285522370682163173896901934503803808051'); + BigNumber.config({ DECIMAL_PLACES : 43, ROUNDING_MODE : 3 }); + T('138578679.416762928716', '-1580628094199.05509158679944901', '-0.0000876731724087090263704240893373141841606'); + BigNumber.config({ DECIMAL_PLACES : 7, ROUNDING_MODE : 1 }); + T('-117845035.56', '-11550621722901664817131.4', '0'); + BigNumber.config({ DECIMAL_PLACES : 37, ROUNDING_MODE : 4 }); + T('1', '793231057244556757901601', '1.2606667261286e-24'); + BigNumber.config({ DECIMAL_PLACES : 59, ROUNDING_MODE : 3 }); + T('-421328249052153697.5361', '1050100.2774141333085293229950', '-401226681026.76099441905787096642316278349483887468600450047044679974507'); + BigNumber.config({ DECIMAL_PLACES : 98, ROUNDING_MODE : 0 }); + T('-3.94', '-144029804399824449190817665', '2.735544921704276279115462111554858005441023992356721225944181878910114911e-26'); + BigNumber.config({ DECIMAL_PLACES : 64, ROUNDING_MODE : 2 }); + T('-14.478', '-19.64', '0.7371690427698574338085539714867617107942973523421588594704684318'); + BigNumber.config({ DECIMAL_PLACES : 26, ROUNDING_MODE : 0 }); + T('-1984442538', '155.66814357', '-12747903.92234392340804093524399959'); + BigNumber.config({ DECIMAL_PLACES : 35, ROUNDING_MODE : 2 }); + T('-803229', '-138327801322951487005370', '5.80670691153917331e-18'); + BigNumber.config({ DECIMAL_PLACES : 82, ROUNDING_MODE : 3 }); + T('0.00000000000000772350713715705705', '248.94', '3.10255769950873987707881417208966015907447577729573391178597252349e-17'); + BigNumber.config({ DECIMAL_PLACES : 29, ROUNDING_MODE : 6 }); + T('-87.75566506588633454483790799', '-628869755.12856397361489120', '1.3954505579290558769803e-7'); + BigNumber.config({ DECIMAL_PLACES : 27, ROUNDING_MODE : 1 }); + T('1', '0.000000000000049923605672579949133019843826', '20030604491158.381896360582775803425921567'); + BigNumber.config({ DECIMAL_PLACES : 41, ROUNDING_MODE : 2 }); + T('1384139740647242862.472516', '0.0000000000000020621146911147203403326', '6.7122345163983892089985173449973034403706234889005061761009869711932945762e+32'); + BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 2 }); + T('0.0000000209', '683423294485412305.7719468', '3.05813398060081945804588598305083677e-26'); + BigNumber.config({ DECIMAL_PLACES : 28, ROUNDING_MODE : 0 }); + T('-0.274823236543517396592093', '-1', '0.274823236543517396592093'); + BigNumber.config({ DECIMAL_PLACES : 71, ROUNDING_MODE : 3 }); + T('-195781256144.5', '-0.0000000117909502309315138914787608320', '16604366256326128362.6867641014711305994021480467714341195589509594749613047046221518632201'); + BigNumber.config({ DECIMAL_PLACES : 26, ROUNDING_MODE : 6 }); + T('-845550065.67484199282', '-0.000000000000011583020213752768186815111', '7.299910127678981990504260833115313467866001228054e+22'); + BigNumber.config({ DECIMAL_PLACES : 86, ROUNDING_MODE : 5 }); + T('-1892049706.8', '-0.0000000026', '727711425692307692.30769230769230769230769230769230769230769230769230769230769230769230769230769230769231'); + BigNumber.config({ DECIMAL_PLACES : 74, ROUNDING_MODE : 2 }); + T('-3196321897906842652526.8238', '0.011866359391009549', '-2.6935994373544003968420629837142065656629591155372486394808649203789817375905652024750602543824104e+23'); + BigNumber.config({ DECIMAL_PLACES : 83, ROUNDING_MODE : 5 }); + T('-0.0000000000000072978357474268980751421', '2705850830.813896301', '-2.69705767380819467082224402367733736475401295543613580526331e-24'); + BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 2 }); + T('0.493510204780969111410170', '-31.4747', '-0.0156795840716819893886254674389271'); + BigNumber.config({ DECIMAL_PLACES : 71, ROUNDING_MODE : 4 }); + T('-0.00000000000000000001149', '-1.3', '8.83846153846153846153846153846153846153846153846154e-21'); + BigNumber.config({ DECIMAL_PLACES : 31, ROUNDING_MODE : 4 }); + T('3.975', '2722413048.230589336001894463', '1.4601017294504665890474e-9'); + BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 3 }); + T('-1', '-1164067380456083.3133', '0'); + BigNumber.config({ DECIMAL_PLACES : 48, ROUNDING_MODE : 4 }); + T('-0.00406774079216508895885', '-1191447019986923326048554451.230', '3.414118063100895806e-30'); + BigNumber.config({ DECIMAL_PLACES : 90, ROUNDING_MODE : 4 }); + T('133014612766098', '-4136121831945', '-32.159258883229810827917034044352936476180523568820718624394026197132984123578474447315752109'); + BigNumber.config({ DECIMAL_PLACES : 2, ROUNDING_MODE : 0 }); + T('2880602052.52426903109739740980', '-750.32658', '-3839131.03'); + BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 5 }); + T('35212520694460536686618361133', '0.00000000000000007896', '4.459539095043127746532213922619047619047619047619047619047619047619047619047619047619047619047619047619047619047619047619047619047619047619048e+44'); + BigNumber.config({ DECIMAL_PLACES : 40, ROUNDING_MODE : 3 }); + T('-5828.32331837104557852500935', '-0.00000000000000020286', '28730766629059674546.6085445627526372867987774820072956718919'); + BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 2 }); + T('59023.32246338', '-2.3', '-25662.314114513'); + BigNumber.config({ DECIMAL_PLACES : 99, ROUNDING_MODE : 6 }); + T('-26.91186149360', '7.514915', '-3.581126532182998743166090368287598728661601628228662599643508941884239542296885593516360464489618312'); + BigNumber.config({ DECIMAL_PLACES : 67, ROUNDING_MODE : 1 }); + T('4', '-1548.43', '-0.0025832617554555259198026388018831978197270783955361236865728512105'); + BigNumber.config({ DECIMAL_PLACES : 85, ROUNDING_MODE : 0 }); + T('0.00000000000045058186273986975043', '-0.000552882519115919330', '-8.149685460491094720267563440652111891472395108327682983855341550524023695063e-10'); + BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 0 }); + T('20370364868298257638938931', '693.4', '2.9377509184162471356992978079030862417075281222959330833573694837034900490337467551197000288433804441881e+22'); + BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 0 }); + T('35404', '-27851923.45390315508813', '-0.001271150987420888540308934579814363714714944137046733052073548329971'); + BigNumber.config({ DECIMAL_PLACES : 85, ROUNDING_MODE : 1 }); + T('1133.287750112481', '-0.000000000000009504538918', '-119236478475165627.1770341968733890348198793076897367910803897872997272733141119639529261802324075664329'); + BigNumber.config({ DECIMAL_PLACES : 5, ROUNDING_MODE : 0 }); + T('49.33107184109863469290973', '-284326074250012.86', '-0.00001'); + BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 5 }); + T('-0.000003132745516946287732321013676', '-4020613067.0389', '7.79e-16'); + BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 2 }); + T('-0.0000000000000000000624856143521758410959879', '-6127645959575.9138624', '1.019732777715838962191676539977427242664581e-32'); + BigNumber.config({ DECIMAL_PLACES : 39, ROUNDING_MODE : 0 }); + T('7045', '-49228682.23', '-0.000143107629147683565772343445480848087'); + BigNumber.config({ DECIMAL_PLACES : 99, ROUNDING_MODE : 3 }); + T('0.001656631748068514997575', '1111754928456906141389839', '1.490105153271402275923753726417383852409982894833468785852753708390198627e-27'); + BigNumber.config({ DECIMAL_PLACES : 87, ROUNDING_MODE : 0 }); + T('-4921879.72798194704141569501', '-2', '2460939.863990973520707847505'); + BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 5 }); + T('-3842875.81600287154215788709256', '1.074', '-3578096.66294495'); + BigNumber.config({ DECIMAL_PLACES : 64, ROUNDING_MODE : 6 }); + T('-0.000000050117920097154940536079551056', '-1397910398799177', '3.58520260956688483527691792989860753545766e-23'); + BigNumber.config({ DECIMAL_PLACES : 83, ROUNDING_MODE : 2 }); + T('0', '0.0080931215100', '0'); + BigNumber.config({ DECIMAL_PLACES : 72, ROUNDING_MODE : 3 }); + T('0', '-23751811450190359074914845183.1', '0'); + BigNumber.config({ DECIMAL_PLACES : 66, ROUNDING_MODE : 5 }); + T('-13915159.169438739755867165361', '32.9', '-422953.16624433859440325730580547112462006079027355623100303951367781155'); + BigNumber.config({ DECIMAL_PLACES : 42, ROUNDING_MODE : 4 }); + T('995743797116.35115542864', '-14201957555.706732240338', '-70.113137094698206269394712623561325492522134'); + BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 1 }); + T('65802.5484', '249400', '0.26384341780272654370489174017642341619887730553'); + BigNumber.config({ DECIMAL_PLACES : 73, ROUNDING_MODE : 1 }); + T('170', '-10981.3', '-0.0154808629215120249879340333111744511123455328604081483977306876235054137'); + BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 1 }); + T('201942537975663838827', '84508089664.467591327407', '2389623748.18150606'); + BigNumber.config({ DECIMAL_PLACES : 6, ROUNDING_MODE : 1 }); + T('23137876052.8', '-486750238185.362429540889', '-0.047535'); + BigNumber.config({ DECIMAL_PLACES : 90, ROUNDING_MODE : 4 }); + T('-0.00000000413170142764279266714159', '4.41397', '-9.36051089527747734384599351604111491469130963735594034395340249254072864110993052e-10'); + BigNumber.config({ DECIMAL_PLACES : 29, ROUNDING_MODE : 6 }); + T('2571974844.0088', '-2.56205', '-1003873790.13243301262660759938330633672'); + BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 5 }); + T('-2288.26338054', '-9', '254.25148672666667'); + BigNumber.config({ DECIMAL_PLACES : 63, ROUNDING_MODE : 5 }); + T('1943.0954931552832430914361473', '10715986.655209780472398', '0.00018132679291930719773879837496526569531146097023540738852483'); + BigNumber.config({ DECIMAL_PLACES : 31, ROUNDING_MODE : 2 }); + T('0.0000005591951101822447394', '327861916054130937525016856.154', '1e-31'); + BigNumber.config({ DECIMAL_PLACES : 6, ROUNDING_MODE : 4 }); + T('0.0000000000778429607078534448233979411', '0.00000000000750103048859169', '10.377636'); + BigNumber.config({ DECIMAL_PLACES : 80, ROUNDING_MODE : 3 }); + T('-24266547.905', '-1170740261.1', '0.02072752489283978550278627639143040657833578966852189004299375589313625254294246'); + BigNumber.config({ DECIMAL_PLACES : 92, ROUNDING_MODE : 3 }); + T('301.0', '-1089916139863550590', '-2.7616803622862486062850164540557338539790749327672777897590219388059732611421e-16'); + BigNumber.config({ DECIMAL_PLACES : 24, ROUNDING_MODE : 5 }); + T('-18403001013809.814080', '-282780.004832288', '65078862.364134692779334796303606'); + BigNumber.config({ DECIMAL_PLACES : 31, ROUNDING_MODE : 2 }); + T('-62444881822127582837603.59424', '-27.3651008519838850', '2.2819167435153275687231640005567034402782244595814686e+21'); + BigNumber.config({ DECIMAL_PLACES : 89, ROUNDING_MODE : 6 }); + T('-1', '2.040593173', '-0.49005358502196655148762472116728972316325592254639969826067824446259675886899578488396717'); + BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 2 }); + T('55642.6031364', '-0.000000000000000862582262902', '-64507010553637696390.073458125613230811714588454907783871949338725796446379199'); + BigNumber.config({ DECIMAL_PLACES : 94, ROUNDING_MODE : 1 }); + T('-111.0747736416', '-25663.8', '0.0043280719784911042012484511257101442498772590185397330091412807144694082715731886938021649171'); + BigNumber.config({ DECIMAL_PLACES : 37, ROUNDING_MODE : 0 }); + T('0.000000000891240067824482', '-2', '-4.45620033912241e-10'); + BigNumber.config({ DECIMAL_PLACES : 53, ROUNDING_MODE : 6 }); + T('-1.1771580965', '-384394400500325112421125611', '3.06237056254674652913427814e-27'); + BigNumber.config({ DECIMAL_PLACES : 64, ROUNDING_MODE : 6 }); + T('-105012166625.1026618687564906', '-0.0000000000000003275', '3.206478370232142347137602766412213740458015267175572519083969465648854961832061068702290076e+26'); + BigNumber.config({ DECIMAL_PLACES : 77, ROUNDING_MODE : 0 }); + T('50808964142001.14', '-219110914192.4', '-231.88696158415042981934463247576107829874493853519991170237890107319026305334199'); + BigNumber.config({ DECIMAL_PLACES : 43, ROUNDING_MODE : 0 }); + T('6572664354129149393.4019651217', '9.026', '728192372493812252.7589148151672944826058054509195656990915135'); + BigNumber.config({ DECIMAL_PLACES : 56, ROUNDING_MODE : 0 }); + T('33.31', '-4.40618812712408', '-7.5598224676215640005099392658811743777115996670683109744'); + BigNumber.config({ DECIMAL_PLACES : 42, ROUNDING_MODE : 2 }); + T('18.4', '0.000000000000000009063796984004646283347', '2030054295398654285.716267915678865377862968128412680743328636'); + BigNumber.config({ DECIMAL_PLACES : 29, ROUNDING_MODE : 1 }); + T('-826206.5', '0.00000000001348675401954832170', '-61260589375505647.34524063429409961187895088582'); + BigNumber.config({ DECIMAL_PLACES : 28, ROUNDING_MODE : 0 }); + T('163649.52737', '90914229.30812336259', '0.0018000430583353974223210959'); + BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 6 }); + T('361495398.724177091515', '9621300075383.51524', '0.0000375724066281933838311981786550364827931583670196281658447763588'); + BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 0 }); + T('-4830845132049.060', '-0.000000000134', '3.605108307499298507462686567164179104477611940298507462686567164179104477612e+22'); + BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 4 }); + T('2', '-55', '-0.0363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636'); + BigNumber.config({ DECIMAL_PLACES : 96, ROUNDING_MODE : 3 }); + T('62932082345602320.61003434', '-0.0000000000000000000128306583754', '-4.904820976783304950188966278975096902493124109775290494872199712982469624424632235618240214096005335685792340778902786715996472419024e+36'); + BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 6 }); + T('0', '-20042656659491873502.8780627967', '0'); + BigNumber.config({ DECIMAL_PLACES : 73, ROUNDING_MODE : 1 }); + T('422300.832', '0.0000000000000000058894360480', '7.17047996715083780123593932265753673398237739044042337141615566788136044634744287489035316883705e+22'); + BigNumber.config({ DECIMAL_PLACES : 1, ROUNDING_MODE : 3 }); + T('-23732871163291602553.19952', '-234088.2', '101384312251927.2'); + BigNumber.config({ DECIMAL_PLACES : 6, ROUNDING_MODE : 3 }); + T('0.00000000000016146202', '4151.9', '0'); + BigNumber.config({ DECIMAL_PLACES : 29, ROUNDING_MODE : 6 }); + T('0.0000000000000000042', '-0.0000000000000051003065', '-0.00082347992223604601017605511'); + BigNumber.config({ DECIMAL_PLACES : 83, ROUNDING_MODE : 4 }); + T('21099.156363620443872', '0.013005585', '1622315.05646385332701297173483545722856757308494773591499344320151688678363949026514378246'); + BigNumber.config({ DECIMAL_PLACES : 55, ROUNDING_MODE : 2 }); + T('-39719382.4097', '0.00000001206', '-3293481128499170.812603648424543946932006633499170812603648424543946932'); + BigNumber.config({ DECIMAL_PLACES : 2, ROUNDING_MODE : 1 }); + T('-25684646695530101.09663290', '1986420121012', '-12930.11'); + BigNumber.config({ DECIMAL_PLACES : 56, ROUNDING_MODE : 3 }); + T('-1', '-467714', '0.00000213805872819714611920960244936007902265059416652056'); + BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 6 }); + T('0.000000000000000000033286877570123', '-916.5099', '0'); + BigNumber.config({ DECIMAL_PLACES : 7, ROUNDING_MODE : 0 }); + T('-1.043852662559036', '42240709131514578739126498.6', '-1e-7'); + BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 5 }); + T('-7.1', '0.0000000000000096810955853', '-733388069298768.68674779946344013503105681395776477666217263849082719375430604653757358662'); + BigNumber.config({ DECIMAL_PLACES : 83, ROUNDING_MODE : 5 }); + T('0', '-178045896984030995126538.3213', '0'); + BigNumber.config({ DECIMAL_PLACES : 38, ROUNDING_MODE : 3 }); + T('-377840682286.889417008650', '10024.5862044', '-37691399.38375184600838106190987946490963690396'); + BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 6 }); + T('-4.526', '0.000000000100219845842383081', '-45160716043.3881820432324'); + BigNumber.config({ DECIMAL_PLACES : 82, ROUNDING_MODE : 3 }); + T('-154', '-0.000000000000000000357470393647111044759003621989', '430804907866093922870.601661067205523043745373628598982920969630143060439226956593292728945988714384628'); + BigNumber.config({ DECIMAL_PLACES : 38, ROUNDING_MODE : 1 }); + T('45.2153662086445686333586366039', '2.0', '22.60768310432228431667931830195'); + BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 4 }); + T('-4859389835978.26', '-1108.719806029077', '4382883582.9878'); + BigNumber.config({ DECIMAL_PLACES : 24, ROUNDING_MODE : 4 }); + T('-1692359.9586057645036945384', '0.0000001662465868', '-10179817770585.137232390616515201742476'); + BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 4 }); + T('-15.899462279', '308886629788805392480384693745', '0'); + BigNumber.config({ DECIMAL_PLACES : 99, ROUNDING_MODE : 2 }); + T('0.00000000000005787864', '-7.80284811', '-7.417629971013238139272199673767582796123401663908590423657497031555058682284153804962e-15'); + BigNumber.config({ DECIMAL_PLACES : 87, ROUNDING_MODE : 4 }); + T('-124433586765045.99829685196779', '4.3', '-28938043433731.627510895806462790697674418604651162790697674418604651162790697674418604651162790697674'); + BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 3 }); + T('0.001131144301861439425560554607', '-50.0404909', '-0.000022604581'); + BigNumber.config({ DECIMAL_PLACES : 56, ROUNDING_MODE : 5 }); + T('9664584701747956.26', '-220.524899', '-43825367319397.14553502640987492301266171308846172513154625682426908174'); + BigNumber.config({ DECIMAL_PLACES : 78, ROUNDING_MODE : 3 }); + T('-70.094740430880', '0.000073254285972', '-956868.796150334825353555082222759529759627536786988423176163041831198316113183505074'); + BigNumber.config({ DECIMAL_PLACES : 45, ROUNDING_MODE : 2 }); + T('-10.183', '11933032273454430', '-8.53345550958790588136189212586e-16'); + BigNumber.config({ DECIMAL_PLACES : 93, ROUNDING_MODE : 4 }); + T('-29736253', '8700.333', '-3417.829294579874126656991174935488101432439425019709015735374726461619342615966538292269962540514'); + BigNumber.config({ DECIMAL_PLACES : 5, ROUNDING_MODE : 0 }); + T('0.00000000048212885', '29110460.881250', '0.00001'); + BigNumber.config({ DECIMAL_PLACES : 33, ROUNDING_MODE : 5 }); + T('-18982193.25771004623685', '0.000000000918', '-20677770433235344.484586056644880174291938997821351'); + BigNumber.config({ DECIMAL_PLACES : 53, ROUNDING_MODE : 6 }); + T('-46898.939287762958868723', '-154.84896130729768720', '302.8689304198304373897050660480649147739932698320575588'); + BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 6 }); + T('-736.040064754', '6785462.05675008', '-0.0001084730942'); + BigNumber.config({ DECIMAL_PLACES : 25, ROUNDING_MODE : 5 }); + T('0.14750193785287', '0.00000000000000000019221833596519455301', '767366636029866259.8568751222788549790355404'); + BigNumber.config({ DECIMAL_PLACES : 45, ROUNDING_MODE : 4 }); + T('97.7', '3', '32.566666666666666666666666666666666666666666667'); + BigNumber.config({ DECIMAL_PLACES : 6, ROUNDING_MODE : 0 }); + T('25725.8309417978', '-802068.425741749136043585041290', '-0.032075'); + BigNumber.config({ DECIMAL_PLACES : 55, ROUNDING_MODE : 1 }); + T('246905186178997605977402', '755699748736449.29666038698706', '326723922.5523494590494444506845130782237605736040767460536008488'); + BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 6 }); + T('1761946694.171', '-15994035825084456785', '-1.101627327486429467069944745236433100004619177818181e-10'); + BigNumber.config({ DECIMAL_PLACES : 33, ROUNDING_MODE : 6 }); + T('-0.0000000000034592824941049711', '155800958967233410222261.80', '0'); + BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 0 }); + T('-165628.0818075039162', '-1660.013', '99.775171524261506506274348453897650199124946611863882993687398833623593'); + BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 4 }); + T('6.1', '0.0000000115108583928302174187348', '529934414.2570213992514206144659067334355751837511402020097748572764397262506'); + BigNumber.config({ DECIMAL_PLACES : 71, ROUNDING_MODE : 1 }); + T('79.6765487483545', '-64638113.02', '-0.00000123265585930241160991119539337072064793391457825078693796312186961'); + BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 2 }); + T('-1325.4526431089831', '0.00000000000000000316328834358410214940938364', '-419011009792172419912.147033054074431563097584718398200111548374447345258856'); + BigNumber.config({ DECIMAL_PLACES : 27, ROUNDING_MODE : 2 }); + T('-0.15736742596443911', '-0.000000000006199441964683651494199', '25384127613.568093276217026453299470655'); + BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 1 }); + T('-7703543907102', '3.007202183901463022383421', '-2561698028932.537507540384252365699669732703188900300993841196283805'); + BigNumber.config({ DECIMAL_PLACES : 29, ROUNDING_MODE : 5 }); + T('15404621.4720', '0.0000000000000000038004912839753', '4.05332372079191356879942794920756510024545207139489987e+24'); + BigNumber.config({ DECIMAL_PLACES : 41, ROUNDING_MODE : 2 }); + T('-0.397391835935851010817', '-133797678838627077699', '2.97009514204759817547e-21'); + BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 2 }); + T('-110', '-0.0000162146328953462154', '6783995.709922686856592619329903740238927539692022340187216'); + BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 3 }); + T('81535305762924867262.3842', '4209656.737600', '19368635222597.648614128703679984342103855817243962262202288120357645000969449115304037325'); + BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 5 }); + T('0.0000000000000866345606234415543799', '7747124882046092', '0'); + BigNumber.config({ DECIMAL_PLACES : 55, ROUNDING_MODE : 1 }); + T('0.0000000000000000137029072682227285152819136219', '0.000000881683373', '1.55417553374035652992652200348344325644893385e-11'); + BigNumber.config({ DECIMAL_PLACES : 66, ROUNDING_MODE : 0 }); + T('-24.2536052715', '-0.000000000000000000210129343932237', '115422267150471659440.946101553035975211241209548721277513006464856778199802926435411352'); + BigNumber.config({ DECIMAL_PLACES : 38, ROUNDING_MODE : 2 }); + T('1669686.51135304', '0.00000000000000287487030352847584', '580786726032039799848.79613536481530428690282575927510569109'); + BigNumber.config({ DECIMAL_PLACES : 37, ROUNDING_MODE : 5 }); + T('-22067077.00922301', '-911395.20440', '24.2124129057168539123816350859877313614'); + BigNumber.config({ DECIMAL_PLACES : 42, ROUNDING_MODE : 2 }); + T('-6653', '-2008644586121049283021.103530', '3.312183771071116973243223e-18'); + BigNumber.config({ DECIMAL_PLACES : 30, ROUNDING_MODE : 4 }); + T('-93244887.6182', '48608417700077241.66115982087', '-1.918286832407050936334e-9'); + BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 6 }); + T('-860835344594.186', '15989403620777', '-0.0538378644389'); + BigNumber.config({ DECIMAL_PLACES : 48, ROUNDING_MODE : 1 }); + T('-1.7825', '-2847048972405282.254', '6.26086877070500246829279599429901e-16'); + BigNumber.config({ DECIMAL_PLACES : 70, ROUNDING_MODE : 3 }); + T('13980.0140745', '422163', '0.0331152044932881375203416689762011355803327150887216549058065249678441'); + BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 4 }); + T('27453298.7243917949', '-3967376.02404', '-6.919762220178'); + BigNumber.config({ DECIMAL_PLACES : 23, ROUNDING_MODE : 0 }); + T('3177824.7003906950471237', '-10425515321.383134386331312240', '-0.00030481224212225307571'); + BigNumber.config({ DECIMAL_PLACES : 88, ROUNDING_MODE : 1 }); + T('18582522299066378696330.2034149', '1343770.7', '13828640778569125.444043543600779507991951305382681732828376150782272600526265381437472925998460898127932'); + BigNumber.config({ DECIMAL_PLACES : 35, ROUNDING_MODE : 6 }); + T('5845735489', '-0.000394103143', '-14833009055702.96352597218439336323689253094842738'); + BigNumber.config({ DECIMAL_PLACES : 86, ROUNDING_MODE : 3 }); + T('0.13188581154124472618789', '-0.6528213060657947', '-0.20202436764211950142170611086000503933889563714424658073703470623916956321490786383609'); + BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 6 }); + T('86791429156.659202979', '1491123.2804929570339922361', '58205.4015'); + BigNumber.config({ DECIMAL_PLACES : 96, ROUNDING_MODE : 5 }); + T('0.0000000000000000127782', '2113.149485585', '6.046992930300200288847233555284598510151547499992100517443810274167788460839e-21'); + BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 4 }); + T('-2617586.6', '111536', '-23'); + BigNumber.config({ DECIMAL_PLACES : 37, ROUNDING_MODE : 5 }); + T('37030054236.0757694124', '-0.00000000000000000003975', '-9.315736914736042619471698113207547169811320754716981132075471698113e+29'); + BigNumber.config({ DECIMAL_PLACES : 32, ROUNDING_MODE : 4 }); + T('-0.000000000000000000541322608970996545', '0.000000000000000000052998971144844978', '-10.21383240613434202029666132622942'); + BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 4 }); + T('0.0000000000000000000126149038', '-1.610067534458280489205530', '-7.835015320797944458056437926214003215e-21'); + BigNumber.config({ DECIMAL_PLACES : 25, ROUNDING_MODE : 4 }); + T('794375853290', '124881.67103676996495', '6361028.3774638570420370064288497'); + BigNumber.config({ DECIMAL_PLACES : 5, ROUNDING_MODE : 2 }); + T('1.145363030413104437791030', '-659980800709.9', '0'); + BigNumber.config({ DECIMAL_PLACES : 49, ROUNDING_MODE : 0 }); + T('10.534261958', '0.000000000000000047061071046', '223842375956621359.2120633522395843009390738718377786577670997275586'); + BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 4 }); + T('-2.9049167569', '-34.0141849962616', '0.08540309747887'); + BigNumber.config({ DECIMAL_PLACES : 93, ROUNDING_MODE : 1 }); + T('-444.536278', '-737781.991', '0.000602530670879441403985150946846573271805437712290269226698974819514129343935151705268446976'); + BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 4 }); + T('-336.064', '36023.656491885578', '-0.00932898080670127'); + BigNumber.config({ DECIMAL_PLACES : 32, ROUNDING_MODE : 0 }); + T('-6.1', '58264633665667035361818.929', '-1.0469472846e-22'); + BigNumber.config({ DECIMAL_PLACES : 59, ROUNDING_MODE : 1 }); + T('-1.41464728421911929360176', '-5.825', '0.24285790287023507186296309012875536480686695278969957081545'); + BigNumber.config({ DECIMAL_PLACES : 26, ROUNDING_MODE : 1 }); + T('-0.0000000000000000002694415597171509704', '0.152740958144576121156786735', '-1.76404261e-18'); + BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 6 }); + T('-0.000342706198824227354729023378107', '-42567218609718459777456.2648', '8.050941781429538853063759206e-27'); + BigNumber.config({ DECIMAL_PLACES : 53, ROUNDING_MODE : 3 }); + T('12107227564675.217', '-4.648', '-2604825207546.30314113597246127366609294320137693631669535283993116'); + BigNumber.config({ DECIMAL_PLACES : 49, ROUNDING_MODE : 3 }); + T('0', '31.84853', '0'); + BigNumber.config({ DECIMAL_PLACES : 99, ROUNDING_MODE : 3 }); + T('0.084673856129762004577481829345', '-389.2532447720', '-0.000217528966725399062481477362098232061131300035630881916280084131121011417375828435705626251981234'); + BigNumber.config({ DECIMAL_PLACES : 29, ROUNDING_MODE : 5 }); + T('-15487575914223598308.2456153', '-7066', '2191844878888140.15118109472120011321822813473'); + BigNumber.config({ DECIMAL_PLACES : 26, ROUNDING_MODE : 1 }); + T('-218422676784436096400', '5056.70078975', '-43194700629149697.33799247084471021622601829'); + BigNumber.config({ DECIMAL_PLACES : 99, ROUNDING_MODE : 4 }); + T('-807346069698272071.114596', '4066662191536774681.039', '-0.198527940525391748518053704773212430736489129165543508955173628964823411161850001256383681063525766'); + BigNumber.config({ DECIMAL_PLACES : 67, ROUNDING_MODE : 1 }); + T('-1028.70188', '5', '-205.740376'); + BigNumber.config({ DECIMAL_PLACES : 49, ROUNDING_MODE : 2 }); + T('5952962.53716704950370407994371', '-2479', '-2401.3564086998989526841790817708753529649052037111738'); + BigNumber.config({ DECIMAL_PLACES : 41, ROUNDING_MODE : 2 }); + T('0.000000000000000019365709603030', '-6244211876.5', '-3.10138572906415e-27'); + BigNumber.config({ DECIMAL_PLACES : 38, ROUNDING_MODE : 6 }); + T('9.102028098037924220', '5930265240759.7093', '1.53484333811549539763766345e-12'); + BigNumber.config({ DECIMAL_PLACES : 88, ROUNDING_MODE : 6 }); + T('-2.09', '175217506055601', '-1.19280318904709755363024245374548870321951211092053728421809180676381661004e-14'); + BigNumber.config({ DECIMAL_PLACES : 67, ROUNDING_MODE : 6 }); + T('6530.35228348105626633386855', '4250507986361021.989', '1.5363698420131360200509150201873482089117026298378797097e-12'); + BigNumber.config({ DECIMAL_PLACES : 31, ROUNDING_MODE : 6 }); + T('-2001.714686985807', '1.6278003', '-1229.7053188808277034965529862600468'); + BigNumber.config({ DECIMAL_PLACES : 40, ROUNDING_MODE : 3 }); + T('-3999125495.505055323146302', '-1650754579.289701310', '2.4226045141282165250267914990506233922905'); + BigNumber.config({ DECIMAL_PLACES : 24, ROUNDING_MODE : 5 }); + T('-0.0000000003546152003', '87098.1809880', '-4.071442093e-15'); + BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 4 }); + T('7686.41', '-0.12', '-64053.4166666666666666666666666666666667'); + BigNumber.config({ DECIMAL_PLACES : 90, ROUNDING_MODE : 3 }); + T('17008982.901597', '12852.5038922', '1323.39838557991080691469809971694660818521000751025938677832443348808714084164407050402246911'); + BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 6 }); + T('0.0000000006190975331411008971', '-1599829.22', '-3.8697726319881874460325208961991580576331766211896042e-16'); + BigNumber.config({ DECIMAL_PLACES : 80, ROUNDING_MODE : 4 }); + T('-163115836589544710.033', '29.71879', '-5488643265406993.69096117304910462370776199165578410157344898631471873518403676596523613511855631'); + BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 6 }); + T('5257289988298610268609597984', '-816870426253', '-6435892179882063.140206566873'); + BigNumber.config({ DECIMAL_PLACES : 64, ROUNDING_MODE : 4 }); + T('306.600916918', '1151648641074631.3993', '2.662278285084443950868295801066532613014293687419597e-13'); + BigNumber.config({ DECIMAL_PLACES : 93, ROUNDING_MODE : 1 }); + T('-2045214.233517', '413457455140479.7471701', '-4.94661351026334979189093049432828253867506308947112481537775099643873515231581237375e-9'); + BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 2 }); + T('-1', '-3661602.26438', '2.73104484813e-7'); + BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 0 }); + T('-24275661716096386654.29800073', '245.785', '-98767873206649659.88281628549342'); + BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 5 }); + T('-5552632008878974768445187975', '1', '-5.552632008878974768445187975e+27'); + BigNumber.config({ DECIMAL_PLACES : 86, ROUNDING_MODE : 1 }); + T('818159648.6768', '244115702596473698.05040388596', '3.35152405181090749628008186404258507666653773605447977668859045018011860933977e-9'); + BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 6 }); + T('-15796333282922929455499903149', '-0.0000020', '7.8981666414614647277499515745e+33'); + BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 1 }); + T('0.000000002082360', '19', '1.09597894e-10'); + BigNumber.config({ DECIMAL_PLACES : 41, ROUNDING_MODE : 0 }); + T('-99', '78208258243999', '-1.26585097562374586835550833861e-12'); + BigNumber.config({ DECIMAL_PLACES : 48, ROUNDING_MODE : 6 }); + T('-87591825036885332284936.419874', '-32.76607', '2.673247815099135547379848113429532440112592080771358908773618563349221e+21'); + BigNumber.config({ DECIMAL_PLACES : 48, ROUNDING_MODE : 6 }); + T('-13.99194714219043', '-175351498463913.6829', '7.9793712997952459641116235509868042e-14'); + BigNumber.config({ DECIMAL_PLACES : 91, ROUNDING_MODE : 6 }); + T('1384130089.28691', '526.0', '2631426.0252602851711026615969581749049429657794676806083650190114068441064638783269961977186311787'); + BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 0 }); + T('-0.00000000000212499939513233', '0.00000000007240682698871396301175', '-0.029348052988'); + BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 0 }); + T('0.000000000000555321932980958774807', '-1090.914228795737465940464197624', '-5.09042707779125620188873691494753470313655439031236863103412e-16'); + BigNumber.config({ DECIMAL_PLACES : 82, ROUNDING_MODE : 5 }); + T('-424555921771720.35307', '-228881328.337904694108', '1854917.2396663790355361642607437525602863521420340515962001637218134916730345661451066457'); + BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 3 }); + T('909122084896', '40615.8', '22383458.7745655631552253064078511318255457235854027250478877678144958365956105751948749'); + BigNumber.config({ DECIMAL_PLACES : 59, ROUNDING_MODE : 0 }); + T('-275033147844970356791032348', '18663383.93413520', '-14736510207130049635.24362147911622458165648356299629041443063427770606019649246'); + BigNumber.config({ DECIMAL_PLACES : 66, ROUNDING_MODE : 2 }); + T('0.000000000000000000912924219932977059801557750', '-31362811384.8107', '-2.9108494411796090256457433013559775679e-29'); + BigNumber.config({ DECIMAL_PLACES : 49, ROUNDING_MODE : 3 }); + T('19195717211692613843523452327.2', '-0.00000000000009529771716949034797917020320', '-2.014289301133242718243099752615590254660068282237752019352055064398393473285901006691203161e+41'); + BigNumber.config({ DECIMAL_PLACES : 22, ROUNDING_MODE : 0 }); + T('22839435968756335976825925.7886', '-1400.9085784802758', '-1.63033022422725535268845225997557667897899183e+22'); + BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 2 }); + T('-1', '480.136', '-0.002082743222753553159938017561690854257960244597364080177283103120782444973924054'); + BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 1 }); + T('-3.1', '0.00000000003102547924589', '-99917876382.5433082369631082122258715714197495324277761342970442563578079746707084557250348277224401986293001'); + BigNumber.config({ DECIMAL_PLACES : 42, ROUNDING_MODE : 0 }); + T('-64842062381.1794872', '1', '-64842062381.1794872'); + BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 5 }); + T('-0.00000000000029', '-405.209557011440027214', '7.156790726725446209851753467534831083526943237697522179267126899e-16'); + BigNumber.config({ DECIMAL_PLACES : 32, ROUNDING_MODE : 1 }); + T('-402440.646366', '-13820.8377666858638', '29.11839739093488649489320061497376'); + BigNumber.config({ DECIMAL_PLACES : 64, ROUNDING_MODE : 3 }); + T('-15766532924534.894137', '-44.667', '352979446225.0631145364586831441556406295475406899948507846956365997268677099'); + BigNumber.config({ DECIMAL_PLACES : 96, ROUNDING_MODE : 3 }); + T('-0.18545932128668082353226624341', '149853395295', '-1.237605066749320753401793941047987517338820934854681298464202408981526840619457317049e-12'); + BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 4 }); + T('180176.7022950027042', '572424114259497094664651363', '0'); + BigNumber.config({ DECIMAL_PLACES : 59, ROUNDING_MODE : 5 }); + T('1189180.09948269121395358871663', '2396918591.035796963342618', '0.0004961286978748838588079275731640643086904538376747322163'); + BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 5 }); + T('-162130238.50', '-541003.9284094244115796', '300'); + BigNumber.config({ DECIMAL_PLACES : 31, ROUNDING_MODE : 4 }); + T('23880963761.43070', '2036.1', '11728777.4477828692107460340847699032464'); + BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 2 }); + T('4102911461', '-3676443725.1', '-1.11600007175096906802915991681528703620194031295278590690374878764'); + BigNumber.config({ DECIMAL_PLACES : 29, ROUNDING_MODE : 5 }); + T('-1650239242655225', '-0.0000000000000050625712483330699174451284', '3.2596859613552932393129153402861586036955044336911362958043e+29'); + BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 5 }); + T('-16182.764285316648602695', '5542940763.334796638593552', '-0.000002919526831742762543598887894075115469395923637093427826391782604223422627269491199365903503'); + BigNumber.config({ DECIMAL_PLACES : 45, ROUNDING_MODE : 4 }); + T('-2407603954205383635721882', '2143107365549', '-1123417329858.612809923082676425885742146282404083703459326'); + BigNumber.config({ DECIMAL_PLACES : 90, ROUNDING_MODE : 0 }); + T('-12339.440719898219344670280', '98703186807633789228.5882162235', '-1.25015626333798134296491858057012493610869357932089916422218620688080594916e-16'); + BigNumber.config({ DECIMAL_PLACES : 37, ROUNDING_MODE : 1 }); + T('-0.0002227041381338091297915124768', '178788347', '-1.2456300529128396147178008e-12'); + BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 4 }); + T('-15846657355.062117827825383', '0.00000000100360520510159352655225199069', '-15789732132226220625.46707498843739636961'); + BigNumber.config({ DECIMAL_PLACES : 32, ROUNDING_MODE : 3 }); + T('-503475.661298', '-907234523646711946016951524', '5.5495646183e-22'); + BigNumber.config({ DECIMAL_PLACES : 99, ROUNDING_MODE : 3 }); + T('0.00000000000000017380472101435825', '807.54409555459', '2.15226291630546689744062968270283888865515459033941399292092451455048343022735791e-19'); + BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 5 }); + T('-163520122.133733234791861936', '-398865478.903', '0.409963084756'); + BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 3 }); + T('1', '27', '0.037037037037037037037037037037037037037037037037037037'); + BigNumber.config({ DECIMAL_PLACES : 96, ROUNDING_MODE : 0 }); + T('2.0', '-6', '-0.333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333334'); + BigNumber.config({ DECIMAL_PLACES : 53, ROUNDING_MODE : 5 }); + T('-0.0000000000136948538993685388021127209', '-21662.0815699657428', '6.3220396687806380279671599940823081571e-16'); + BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 5 }); + T('-1261219515900192.23821', '1616867.52132244271879742628786', '-780038871.007'); + BigNumber.config({ DECIMAL_PLACES : 48, ROUNDING_MODE : 6 }); + T('144', '939194785.95867158250614059106', '1.53322827333430905374910110906343649177622e-7'); + BigNumber.config({ DECIMAL_PLACES : 30, ROUNDING_MODE : 2 }); + T('307988608.8312845502416975', '45749.22883141104530', '6732.10492719435955626955333667896'); + BigNumber.config({ DECIMAL_PLACES : 64, ROUNDING_MODE : 1 }); + T('33316333.3281046085467801626', '-871263729.395801928', '-0.038239091338289261517183131434824955795926259835680146638135598'); + BigNumber.config({ DECIMAL_PLACES : 33, ROUNDING_MODE : 3 }); + T('-1157431127.9', '0.019931884955614253042634360160', '-58069326131.344346791615062099778998406644548'); + BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 2 }); + T('-2232799206839243.258989787', '-7.404699948336398', '301538107204584.658047021668487234427606847211714'); + BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 2 }); + T('-0.000000000000000000098180915239949553085671', '-21813.4373', '4.50093737587837901574874675986989e-24'); + BigNumber.config({ DECIMAL_PLACES : 49, ROUNDING_MODE : 2 }); + T('4242921222328373135613', '8.2', '517429417357118675074.7560975609756097560975609756097560975609756097561'); + BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 6 }); + T('957.39281054', '40494.8188794629', '0.0236423531955972'); + BigNumber.config({ DECIMAL_PLACES : 59, ROUNDING_MODE : 2 }); + T('-8326808.497519433892', '0.0000000000000000000490705229500531361459202464', '-1.696906410798790393843617961526811289554079132589725760670291352160736862358530128911e+26'); + BigNumber.config({ DECIMAL_PLACES : 41, ROUNDING_MODE : 3 }); + T('896679849158361750330.3', '-137738441622013773066', '-6.51001883424134568586497747769574199893376'); + BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 6 }); + T('-21050443445135200327662101', '-768532967305.3', '27390423496007.17132845013217685972688586659598916714817323805142988800752181030550845753599047354108117059851'); + BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 3 }); + T('-0.00000000000004529233557356', '467.75', '-1e-15'); + BigNumber.config({ DECIMAL_PLACES : 73, ROUNDING_MODE : 0 }); + T('275310.274', '11028656591', '0.0000249631740482942017103558936990751025189845808301675860930793941700674'); + BigNumber.config({ DECIMAL_PLACES : 86, ROUNDING_MODE : 5 }); + T('541913418635146823954958', '10555.952', '51337237857385750139.34868214633791438233140885824414510410808991931755657850660935176666206894461058557295'); + BigNumber.config({ DECIMAL_PLACES : 94, ROUNDING_MODE : 0 }); + T('1977', '0.00000000000101254320724972684330834154', '1952509271549935.9654343768254088247606354930480506393749154718487737952702538576473345627569697789893884941849'); + BigNumber.config({ DECIMAL_PLACES : 41, ROUNDING_MODE : 3 }); + T('-0.00000000000997082', '-8', '1.2463525e-12'); + BigNumber.config({ DECIMAL_PLACES : 93, ROUNDING_MODE : 2 }); + T('-0.000013245144369', '-63328467267444968862608997.2325', '2.09149927994686876280205149202082357406793140080026504433216336e-31'); + BigNumber.config({ DECIMAL_PLACES : 91, ROUNDING_MODE : 0 }); + T('1709.084890702122', '7.79419809', '219.2765530163888867751371199753533592831741847608084079371916502060573110222298699621579671707'); + BigNumber.config({ DECIMAL_PLACES : 63, ROUNDING_MODE : 3 }); + T('-6.5', '1.5', '-4.333333333333333333333333333333333333333333333333333333333333334'); + BigNumber.config({ DECIMAL_PLACES : 40, ROUNDING_MODE : 3 }); + T('-4048995142031910647.396', '0.00012553', '-3.22551990921047609925595475185214689715605831275392336493268542e+22'); + BigNumber.config({ DECIMAL_PLACES : 1, ROUNDING_MODE : 4 }); + T('-12609.0384427562421280659598750', '-8.75296', '1440.5'); + BigNumber.config({ DECIMAL_PLACES : 93, ROUNDING_MODE : 0 }); + T('2.01', '-0.0000000000000595060042074436702083417336851', '-33778104021116.022665217883058809681921245023337809066415008588705222492653348391126863560929443112237651681'); + BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 4 }); + T('-4445.9329936', '-1265484694121428880022659075467', '0'); + BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 4 }); + T('-507.372723086674', '97275886.743106276492', '0'); + BigNumber.config({ DECIMAL_PLACES : 91, ROUNDING_MODE : 0 }); + T('-1.4613460', '-2.61346193', '0.5591610052647677175079416595901972828814078037861450692721588640091650388035306104497186994'); + BigNumber.config({ DECIMAL_PLACES : 80, ROUNDING_MODE : 2 }); + T('28.1', '637.1296149', '0.04410405566285033786458824989081511301131640427847894094178606670822954395366311'); + BigNumber.config({ DECIMAL_PLACES : 91, ROUNDING_MODE : 1 }); + T('1614056018629639286992.0668255', '0.000000001995043946297100388', '8.090328143524891175220309357127449514597010377716670384132155189530961665299646362389627746812176231253071694777762390848e+29'); + BigNumber.config({ DECIMAL_PLACES : 80, ROUNDING_MODE : 3 }); + T('-0.00000000000000000336992256387394267526736', '0.00278761238', '-1.20889209276432567546114858336222484418726824566620700687231127881e-15'); + BigNumber.config({ DECIMAL_PLACES : 30, ROUNDING_MODE : 0 }); + T('14136588337891570845225315527', '-0.4708849', '-3.0021324399851366746364802793633858295307409517697424572332e+28'); + BigNumber.config({ DECIMAL_PLACES : 22, ROUNDING_MODE : 0 }); + T('520122.35441667105', '-0.00106639226761502159262351', '-487740177.9927763757352981916504'); + BigNumber.config({ DECIMAL_PLACES : 73, ROUNDING_MODE : 4 }); + T('-3.1416022', '6863044.0864', '-4.57756377556350939777055021541818198861453841527227290404602113733e-7'); + BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 3 }); + T('-73888251352624360026', '1.019027898110', '-72508565751404401485.13531259242827482906938998131567061577668036745404703294988183569388'); + BigNumber.config({ DECIMAL_PLACES : 35, ROUNDING_MODE : 5 }); + T('-0.0000000001071532', '-34215005684429.9803651097097', '3.13176040327e-24'); + BigNumber.config({ DECIMAL_PLACES : 98, ROUNDING_MODE : 5 }); + T('0.0000000000000165091645065684622887738078', '-0.000000000000004445', '-3.71409775175893414820558105736782902137232845894263217097862767154105736782902137232845894263217098'); + BigNumber.config({ DECIMAL_PLACES : 96, ROUNDING_MODE : 0 }); + T('-497352.791066', '8.24', '-60358.34843033980582524271844660194174757281553398058252427184466019417475728155339805825242718446602'); + BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 1 }); + T('-0.000000000000000000411700018405971704865', '3592139.1', '0'); + BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 3 }); + T('10972491284.0775448', '-85621859.211271', '-128.1505842685'); + BigNumber.config({ DECIMAL_PLACES : 56, ROUNDING_MODE : 6 }); + T('-794448.75096', '27118343480723', '-2.929562240867447206618714738309475429809780153439e-8'); + BigNumber.config({ DECIMAL_PLACES : 96, ROUNDING_MODE : 1 }); + T('0.0000000000014196195975477079', '-0.0056327275608126093185', '-2.52030580606122107857192332768599843864183422831534835001654001071604463649295551424182e-10'); + BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 2 }); + T('2388.932', '-174847412808.37863028', '-1.3662953e-8'); + BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 0 }); + T('-904270784525.592260', '-1487101457806.47398128', '0.60807605276604524'); + BigNumber.config({ DECIMAL_PLACES : 21, ROUNDING_MODE : 4 }); + T('0.000000000006956553632', '-3809761.043588211608466', '-1.826e-18'); + BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 3 }); + T('-222097736193251.4', '0.000853', '-260372492606390855.8030480656506447831184056271981243'); + BigNumber.config({ DECIMAL_PLACES : 85, ROUNDING_MODE : 4 }); + T('-8.020357521213419800', '-7461230.62753277', '0.0000010749376237771567387552680998629257106913482717513873708676896190549587473106921'); + BigNumber.config({ DECIMAL_PLACES : 58, ROUNDING_MODE : 1 }); + T('0.000000001487977619', '-14831757.761039625', '-1.003237541344324731681695588913489457056492e-16'); + BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 4 }); + T('-1.3671417', '-30337609.555293895810840851705', '4.50642525907725825415613547e-8'); + BigNumber.config({ DECIMAL_PLACES : 80, ROUNDING_MODE : 1 }); + T('-0.00248871', '-5094.80', '4.8848041139985867943785820836931773573054879484965062416581612624636884666e-7'); + BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 2 }); + T('-1631801844.1464211', '-5209700932.1295226557917', '0.3132237081178101556075382344313959958552079808832159382810898881498933311621493119008109764054131'); + BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 4 }); + T('5220265', '302.896899850306429208090', '17234.4616'); + BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 4 }); + T('36129471206013106712004', '71316.2431811639', '506609288352918314.2438496347901928758057680753991964'); + BigNumber.config({ DECIMAL_PLACES : 80, ROUNDING_MODE : 4 }); + T('-0.04095799045794223557935162', '-0.000000000000000002045837039', '20020162738847664.1903987055539862087715384255490546918385321109635067077304977857525239575056887'); + BigNumber.config({ DECIMAL_PLACES : 66, ROUNDING_MODE : 1 }); + T('-0.000000450', '-13.2', '3.409090909090909090909090909090909090909090909090909090909e-8'); + BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 2 }); + T('2416468777927017', '73368843.3148534680959960', '32935898.51971681121112106262843095746474481157602212900505'); + BigNumber.config({ DECIMAL_PLACES : 72, ROUNDING_MODE : 5 }); + T('-488930153.09447753670035', '0.0000000000002014703934348232568468356', '-2.426808945765269674922705980722179029088081494676722957929097356899777219475532993398117558416e+21'); + BigNumber.config({ DECIMAL_PLACES : 21, ROUNDING_MODE : 5 }); + T('-0.00013449517476975725317177', '-4009.66', '3.3542787859758e-8'); + BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 3 }); + T('-2370941814.13', '3869939744', '-0.6127'); + BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 1 }); + T('151634267.9959408', '-179885280374841901657094', '-8.4294983825228990180837395136e-16'); + BigNumber.config({ DECIMAL_PLACES : 36, ROUNDING_MODE : 1 }); + T('-5834723.5', '222042932132762145245.30724696', '-2.6277456543905430404066e-14'); + BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 5 }); + T('-5182977179047885.6995271', '-1', '5182977179047885.6995271'); + BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 3 }); + T('-275.960627353502935065449', '7', '-39.4229467647861335807784285714285714285714285714285714285714285714285714285714285714285714285714286'); + BigNumber.config({ DECIMAL_PLACES : 5, ROUNDING_MODE : 2 }); + T('435232.77562', '-0.00001546518685876415454550044', '-28142742767.66029'); + BigNumber.config({ DECIMAL_PLACES : 1, ROUNDING_MODE : 4 }); + T('17152565.5962872563', '9', '1905840.6'); + BigNumber.config({ DECIMAL_PLACES : 62, ROUNDING_MODE : 6 }); + T('-3', '-11463015244953733454402.43478205', '2.6171124576674228049372733594758776085978e-22'); + BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 4 }); + T('96048852.6731', '-2147476359.33', '-0.045'); + BigNumber.config({ DECIMAL_PLACES : 23, ROUNDING_MODE : 2 }); + T('802308719785992.83478970621274', '-0.000000000000023838730872', '-3.365568092084767400824349609025612561141715464054675e+28'); + BigNumber.config({ DECIMAL_PLACES : 59, ROUNDING_MODE : 1 }); + T('-2469405771867598621970691794', '13208274832082.460244615114', '-186958993756663.37116178820599078371359019473821063140433284377352248576527'); + BigNumber.config({ DECIMAL_PLACES : 45, ROUNDING_MODE : 1 }); + T('63.875123211938', '150998.71801786282', '0.000423017652404053601423846679595081615559116'); + BigNumber.config({ DECIMAL_PLACES : 71, ROUNDING_MODE : 6 }); + T('5968.9052418179', '12.4', '481.36332595305645161290322580645161290322580645161290322580645161290322581'); + BigNumber.config({ DECIMAL_PLACES : 6, ROUNDING_MODE : 5 }); + T('-10092373627843.309', '125661719213560584', '-0.00008'); + BigNumber.config({ DECIMAL_PLACES : 7, ROUNDING_MODE : 2 }); + T('-9.640758704116', '-114294011941961818265', '1e-7'); + BigNumber.config({ DECIMAL_PLACES : 66, ROUNDING_MODE : 1 }); + T('-874445.630645176011', '121870243724375', '-7.175218526869000257915855129395306454293973034671008927176e-9'); + BigNumber.config({ DECIMAL_PLACES : 6, ROUNDING_MODE : 6 }); + T('95.70', '-18563880782489325261705682133', '0'); + BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 3 }); + T('1.430642138666652442526502557', '-392019049568.976', '-0.001'); + BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 2 }); + T('-113338383169.0552034434911870', '0.00003773', '-3003932763558314'); + BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 4 }); + T('-274727599727.7349315563', '2.473802773', '-111054770706.14268066240056720964796169706613874832130766634887267142698768411478'); + BigNumber.config({ DECIMAL_PLACES : 53, ROUNDING_MODE : 2 }); + T('-0.000000000723177006176790642200537', '-0.0000043772648152855214738319769525', '0.00016521207573538569355249974275710762198470322975315'); + BigNumber.config({ DECIMAL_PLACES : 77, ROUNDING_MODE : 6 }); + T('0.0000000000000012036205956083601262', '70088335.8944243480092127517', '1.717290873365007784367132876526666300424035651543339613e-23'); + BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 0 }); + T('0', '2694365.37496980120960923', '0'); + BigNumber.config({ DECIMAL_PLACES : 28, ROUNDING_MODE : 5 }); + T('-0.0000128808548871', '-113150287338.889039', '1.138384637815e-16'); + BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 3 }); + T('64959579', '-2844.3362', '-22838.221093554271116051611620314082421058382620169865995447373626226041773824064820467'); + BigNumber.config({ DECIMAL_PLACES : 28, ROUNDING_MODE : 6 }); + T('8.3', '0.0002226690599953', '37275.0484516133167657984570860417'); + BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 4 }); + T('-20396012735836189340289863', '0.0000000000000038055713585863487623676850269', '-5.3595139373270543140990778099093060551778324027594486634088540722918075417253512422242403145808377511038296551680862e+39'); + BigNumber.config({ DECIMAL_PLACES : 9, ROUNDING_MODE : 2 }); + T('-6499564679968251157540869.3', '396.03513', '-1.6411586214506402897997632937259e+22'); + BigNumber.config({ DECIMAL_PLACES : 86, ROUNDING_MODE : 6 }); + T('3049042776', '1223454.64540264', '2492.15840362971309031446140883774670563743674081366740871606642562100290557804812625322511'); + BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 3 }); + T('-82746934.447', '-0.000014525734132830', '5696575036436.984038815209622'); + BigNumber.config({ DECIMAL_PLACES : 31, ROUNDING_MODE : 5 }); + T('0.000001758411398963638209852', '-1.243591206900', '-0.0000014139786363936843705034081'); + BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 2 }); + T('-182.6601', '1.1', '-166.0546363636363636363636363636363636'); + BigNumber.config({ DECIMAL_PLACES : 88, ROUNDING_MODE : 6 }); + T('32957180677.86684', '-793.4', '-41539174.0331066801109150491555331484749180741114192084698764809679858835391983866901941013360222'); + BigNumber.config({ DECIMAL_PLACES : 78, ROUNDING_MODE : 3 }); + T('-2105395842137873185470341604', '914113.92100030522648107434', '-2.303209472878348370484730710269503799585183184090941166581925825770069246561308502688099882363764773e+21'); + BigNumber.config({ DECIMAL_PLACES : 6, ROUNDING_MODE : 6 }); + T('384433.68', '-837936819000580187.4041483', '0'); + BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 3 }); + T('-44924.680363662327413', '1427815449.49888665769', '-0.0000314639265035473042299610791394'); + BigNumber.config({ DECIMAL_PLACES : 36, ROUNDING_MODE : 1 }); + T('4.2', '469161809505184788566', '8.952135307922127e-21'); + BigNumber.config({ DECIMAL_PLACES : 85, ROUNDING_MODE : 1 }); + T('-2.446', '0.000000000000001926000337', '-1269989393568834.0432517795556335876175913670154253976124823492177820942925411336519407888348671664848'); + BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 1 }); + T('-1798391642460647981.97', '-85.801', '20960031263745737.019032412209647'); + BigNumber.config({ DECIMAL_PLACES : 25, ROUNDING_MODE : 1 }); + T('497190320699.5', '513392304.6658800203726', '968.4413190086197216716997847'); + BigNumber.config({ DECIMAL_PLACES : 83, ROUNDING_MODE : 5 }); + T('-214020470807', '558884.0577', '-382942.52243974859760971134961755055980728147365080941724632772612365035081586654462196158'); + BigNumber.config({ DECIMAL_PLACES : 26, ROUNDING_MODE : 1 }); + T('0.0000000000000005509', '-0.0119736313841', '-4.600943375721e-14'); + BigNumber.config({ DECIMAL_PLACES : 38, ROUNDING_MODE : 0 }); + T('223526700163168.46486200', '-1', '-223526700163168.464862'); + BigNumber.config({ DECIMAL_PLACES : 89, ROUNDING_MODE : 2 }); + T('-25286459726182070311791.909', '433.7360740475', '-58299185240038067511.28129774424559013541570090517247178984773028120836638467521748428037638736196547396310559'); + BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 4 }); + T('-3.84', '-230672031462873433.0153', '1.66470116712786066303352770626517164690855571283072395514036e-17'); + BigNumber.config({ DECIMAL_PLACES : 62, ROUNDING_MODE : 6 }); + T('632950152864580.65806833710', '1011836402.79441682522548', '625545.93916224456910414210535241390621121167829557801534106250932338'); + BigNumber.config({ DECIMAL_PLACES : 73, ROUNDING_MODE : 1 }); + T('0.0000049339291', '-0.000224984438551534164275604594713', '-0.0219300905065478611457684694214449309434783552017018631671257490485809082'); + BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 3 }); + T('-338.94738367925637130', '-0.00000000000000108308163937159066800236', '312947215942018297'); + BigNumber.config({ DECIMAL_PLACES : 23, ROUNDING_MODE : 2 }); + T('0.000000235260614812120582298055', '-0.0000001110910457371282365718838359', '-2.11772797034255549563416'); + BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 1 }); + T('-0.0000000000000000107107322284477584466235196', '-2391721641165.67102534484', '0'); + BigNumber.config({ DECIMAL_PLACES : 59, ROUNDING_MODE : 2 }); + T('-0.0000000000000005398629480878534175959', '-0.000000000000000136008', '3.96934700964541363446194341509322981001117581318745956120229'); + BigNumber.config({ DECIMAL_PLACES : 49, ROUNDING_MODE : 1 }); + T('9252954275750', '779920382572.108232331', '11.8639728907129951645131952586665510691059605616223'); + BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 2 }); + T('18551323.658736281693135', '0.000000000000000001083710261119958768495433103', '1.71183427197269901846890303728930083400789583517718237462254164308070293413156940798718e+25'); + BigNumber.config({ DECIMAL_PLACES : 99, ROUNDING_MODE : 3 }); + T('99120792392919606582512779054', '4537894940425.523', '21842901542278753.061995238086054191528706471608646417028260674251502929926905209213308388020971982838402146645258077'); + BigNumber.config({ DECIMAL_PLACES : 78, ROUNDING_MODE : 5 }); + T('-0.018317364097', '9108893695511350715.938', '-2.01093181118431183740457551868150570844544523605691148485e-21'); + BigNumber.config({ DECIMAL_PLACES : 55, ROUNDING_MODE : 6 }); + T('0', '3.99909', '0'); + BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 3 }); + T('47249329.6203246', '0.0000000000000000931583884570847', '5.071935056292967267476182009888681080061574005814478713655830342537044378983434440124388626884310855e+23'); + BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 5 }); + T('-6632917305.13784346', '64275', '-103195.913'); + BigNumber.config({ DECIMAL_PLACES : 88, ROUNDING_MODE : 2 }); + T('0', '-1.1479982', '0'); + BigNumber.config({ DECIMAL_PLACES : 100, ROUNDING_MODE : 3 }); + T('23.0967232', '384787.39531594', '0.0000600246356329728956379107568015799360998008653288367583039130337974343366992013749911280684891016'); + BigNumber.config({ DECIMAL_PLACES : 28, ROUNDING_MODE : 3 }); + T('-4415.59578', '-5372410.269367', '0.0008219021926112623725445542'); + BigNumber.config({ DECIMAL_PLACES : 88, ROUNDING_MODE : 0 }); + T('19316731927846138142235063', '159905027625861', '120801279450.9664076025188136923298399099407554218077763806134954509770172738601456973870831070721922'); + BigNumber.config({ DECIMAL_PLACES : 60, ROUNDING_MODE : 1 }); + T('46.5509916352', '-224.72783911451', '-0.207143858182518974872177506176201666620231893723310558999073'); + BigNumber.config({ DECIMAL_PLACES : 33, ROUNDING_MODE : 5 }); + T('-0.00000000190', '10283106', '-1.84769076580558442e-16'); + BigNumber.config({ DECIMAL_PLACES : 58, ROUNDING_MODE : 6 }); + T('6320896863', '-96.36193239591436266848', '-65595372.6314853240033007239640504363062001768345687037728328017566'); + BigNumber.config({ DECIMAL_PLACES : 62, ROUNDING_MODE : 3 }); + T('301.78', '27385431970323599.982109011039', '1.101972758096442823253204778745779442886349569482e-14'); + BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 1 }); + T('0', '0.000000006392962922861835147', '0'); + BigNumber.config({ DECIMAL_PLACES : 45, ROUNDING_MODE : 6 }); + T('2679177081032425767', '-27531764737796501802392', '-0.000097312217598400597951764759122021435057787'); + BigNumber.config({ DECIMAL_PLACES : 77, ROUNDING_MODE : 0 }); + T('-22441668653796507212372.4', '19207705157', '-1168368030973.12908281291981516644435235069659185939366926320421547899336072675222604157553'); + BigNumber.config({ DECIMAL_PLACES : 82, ROUNDING_MODE : 1 }); + T('133549443521931581.906855', '146203567577896984.3', '0.9134485959159422766611615024730449619301718162748067575802409439785938547408037424'); + BigNumber.config({ DECIMAL_PLACES : 2, ROUNDING_MODE : 4 }); + T('-1973.3', '-7209198961380.383', '0'); + BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 0 }); + T('-4358138915031470322954690950878.886329', '18029764583.0320924329653395024835', '-241719124781747737817.71414364474833657361287091699324842760959752'); + BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 4 }); + T('-0.0000214327748810414114303341654806744', '-0.000000017085379167844184125664', '1254.45122818107041'); + BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 2 }); + T('1540.1', '-1425597386989588797745164.9723', '-1.08031903962184199768125145492905743065463781105236977988615625182125023686e-21'); + BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 6 }); + T('-0.00000000000000077789825931627563318456329252077008249901827', '-11488403098437.659253590452', '0'); + BigNumber.config({ DECIMAL_PLACES : 59, ROUNDING_MODE : 5 }); + T('-0.00000000000000615479882', '-1.4311', '4.30074685207183285584515407728320872056460066e-15'); + BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 6 }); + T('185.078', '-21444991541014268320202.565818494950093203880961480246', '-8.630360130757435548395346186973954342934428993977502062613538763e-21'); + BigNumber.config({ DECIMAL_PLACES : 74, ROUNDING_MODE : 1 }); + T('-8403047783.120864544336509023524769', '-0.000000000000000078190', '1.07469596919310200081039890312377145415014707763141066632561708658396214349661081979792812380099757e+26'); + BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 0 }); + T('4473003396718403421919082.611713344497', '-38417.45740577489', '-116431531360168154589.5997046763279826'); + BigNumber.config({ DECIMAL_PLACES : 32, ROUNDING_MODE : 0 }); + T('-277824796039913334543271479781483132162831479540.0755025060', '0.095719943083002968965774929987', '-2.90247556665385023432767761396065649281824544931592998896986675081931625237505184e+48'); + BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 4 }); + T('0.00000000000480152428506069103957', '8069769.20434799655998859066255015933021758352308471341', '0'); + BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 5 }); + T('-5340545366390612877073.2853', '-1040.695', '5131710411206561842.877389917314871311959796097800027865993398642253494059258476306698889'); + BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 1 }); + T('128346487385118982217601527756330318.32681', '-79533315369210789756297.5093144498895602545561685358154358', '-1613744966990.3351'); + BigNumber.config({ DECIMAL_PLACES : 45, ROUNDING_MODE : 2 }); + T('0.000000006632234145795642791822618250723750481', '183815.968207832561239237830808792285843424648628102963133314', '3.6080837864406153478491135463736e-14'); + BigNumber.config({ DECIMAL_PLACES : 30, ROUNDING_MODE : 0 }); + T('119187872518674.60527655439323732477', '988901492413169302830866500425857795341646.4908639', '1.21e-28'); + BigNumber.config({ DECIMAL_PLACES : 59, ROUNDING_MODE : 4 }); + T('-2106863123095.357296277145943882664823531441361779337', '-0.000001780807017292321314224', '1183094576019133877.30319497876236979272050322057698912933377664141368828772347'); + BigNumber.config({ DECIMAL_PLACES : 1, ROUNDING_MODE : 0 }); + T('2', '-12532644992723.506915213853468150635', '-0.1'); + BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 5 }); + T('-2045474499442314493533914694359611192421769290', '-79.7801143293890064538106805679656', '2.56389015813783140881031622900806078899721203732113311997893479064590200658081902329139876513933329019112731810687326191885e+43'); + BigNumber.config({ DECIMAL_PLACES : 99, ROUNDING_MODE : 0 }); + T('167818325272.44229267', '3604.93', '46552450.469896029234964340500370326192186810839600214151176305781249566565786298208286984768081488406154905'); + BigNumber.config({ DECIMAL_PLACES : 25, ROUNDING_MODE : 4 }); + T('-15043187989467552228909212', '-0.0000001256248795877713296556543872376', '1.197468848434374731008452641095000047995170305648878285566e+32'); + BigNumber.config({ DECIMAL_PLACES : 87, ROUNDING_MODE : 1 }); + T('7998870000070061263277', '-26543843297186440621735904979552147897363942278950', '-3.01345585509763575250102538326648638249839863370004343453062e-28'); + BigNumber.config({ DECIMAL_PLACES : 88, ROUNDING_MODE : 1 }); + T('186931322330723238889.9', '-8437975.1', '-22153575960507.7809354877096046419952104385802228783538363368718639617696904557113471453595543319391876'); + BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 0 }); + T('0.000033260133387301381636134255123645581044625132783663', '0.00000000091', '36549.5971289026172'); + BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 1 }); + T('1.7465938', '193', '0.00904970880829015544041450777202072538860103626'); + BigNumber.config({ DECIMAL_PLACES : 100, ROUNDING_MODE : 1 }); + T('-0.000000022616261038169584', '79255422813879639941760997747.1367068030864', '-2.853591620005704086326498760681941494986556861849305029108030768e-37'); + BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 4 }); + T('63925969210016.171616618421', '-0.000000000000000001998952851878522909618298952831777425008911426', '-3.19797283612474997830213615498823898997462341033957771240421614362e+31'); + BigNumber.config({ DECIMAL_PLACES : 19, ROUNDING_MODE : 2 }); + T('-0.000000000000000000107951584872217583243487104532878733600748082262', '4.7584', '0'); + BigNumber.config({ DECIMAL_PLACES : 91, ROUNDING_MODE : 2 }); + T('287879454865962605748634828463.143352997052678922433', '0.0000011099839415495924789496834394776605568026699033157532725166', '2.593546123415701393690678024535080924566944608085602841986648129658557077697497509144729455581093725286069074168844031180128663e+35'); + BigNumber.config({ DECIMAL_PLACES : 2, ROUNDING_MODE : 0 }); + T('421290769878188.44965397506247576163716334347466036131', '-695290179.98023799179742953756', '-605920.79'); + BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 2 }); + T('-50.588764102894', '-1469737395263449361661861746995530.7961293255083413748731405', '3.4420274170016610853e-32'); + BigNumber.config({ DECIMAL_PLACES : 62, ROUNDING_MODE : 1 }); + T('71825729291974748475', '-3487925170402093447966915709296985344.79514361227346', '-2.059268068635043752814904577559487216735436672e-17'); + BigNumber.config({ DECIMAL_PLACES : 96, ROUNDING_MODE : 5 }); + T('-195599191873495.035306732143', '94922439367019975.93898951447276490022725129864755659', '-0.002060621210093494209086288239396527883002832627329896345270729976350454248118360433421084167526'); + BigNumber.config({ DECIMAL_PLACES : 46, ROUNDING_MODE : 4 }); + T('-8298636455267829969272001790569', '12441338.5', '-6.670211935209246150863913710384939691175511380869510141533404946742668e+23'); + BigNumber.config({ DECIMAL_PLACES : 72, ROUNDING_MODE : 1 }); + T('193672718244911748316310.95', '32025627598640491403990244863864935493862070264684993094', '6.04742928607379673691357771393506072163e-33'); + BigNumber.config({ DECIMAL_PLACES : 45, ROUNDING_MODE : 2 }); + T('34211916252046207724173639367665.73', '2213017876522886287744383245.8137737', '15459.394438241176844242330642075713842374671533599'); + BigNumber.config({ DECIMAL_PLACES : 30, ROUNDING_MODE : 3 }); + T('-51102698466952108661987108352168504578549351669673607306504.8', '-426105160328610268743577', '1.1992978077886207989099912552560016492808203461057166111391637632e+35'); + BigNumber.config({ DECIMAL_PLACES : 85, ROUNDING_MODE : 4 }); + T('-0.000101118126658365675783246638377813', '48187783117573989816933123531631999309', '-2.0984183151079239767283259802182599811803883e-42'); + BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 5 }); + T('-18339345307912384963.705031044423259760626683581224957714636', '1.25501030272431063608661224912151589098512453059762475047532', '-14612904187401724640.7077'); + BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 5 }); + T('11733626597810620260900194913480892214.83238408124932480450', '0.000000000000000000012593148030063312136', '9.31746896788572839054694954351994165865763815272869861443498428106859e+56'); + BigNumber.config({ DECIMAL_PLACES : 46, ROUNDING_MODE : 6 }); + T('647049772487082769486131722793669960.55', '0.0000000000000001061070889473924760124131290400487265681320705654955', '6.0980824081215514832347135028491060346583271458502108696485040787360284799746369844016534098242406e+51'); + BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 6 }); + T('0.000000436698220827227894615051167309259870460497230915', '-0.0000000005841497117', '-747.5792799012827016260447592193168764693190396639204572597240913779945977503081938095562360610508541'); + BigNumber.config({ DECIMAL_PLACES : 36, ROUNDING_MODE : 6 }); + T('-37513654565218568136965757801.924083043009620922', '-15865721697985590918663290533489768.90', '0.000002364446778994083275827835226151'); + BigNumber.config({ DECIMAL_PLACES : 87, ROUNDING_MODE : 1 }); + T('-0.98347293041966760043529713', '1156.5', '-0.000850387315537974578845911915261565067012537829658452226545611759619541720709035884133'); + BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 1 }); + T('125176113754065635.8920', '4', '31294028438516408.973'); + BigNumber.config({ DECIMAL_PLACES : 88, ROUNDING_MODE : 4 }); + T('7760475.985296', '613572764342975.528571424937', '1.26480124873307466949099359027788016239202160901478534560952858567398389820628355e-8'); + BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 5 }); + T('342098206914085968453220098514855365282100070', '-5165030720317219514520097.3608', '-66233528015313605114.67568754858297559280470661979590349532852678391'); + BigNumber.config({ DECIMAL_PLACES : 90, ROUNDING_MODE : 4 }); + T('-139498.75765393143263357632022519885624816', '-5831567121073581992795421673.6', '2.3921315618545077972373650801742926030882156512774998442153565319318e-23'); + BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 1 }); + T('-38429863125.34', '3781400327394870', '-0.000010162865551930489712339099696515327376718924337987713498883079662540061533572931830509691604'); + BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 4 }); + T('444068824966018.962300196359416176247976643926867420059834210', '1891413422', '234781.4707249227516057017593777952200535055349033153153939128597343748785134718156821877517584836087729'); + BigNumber.config({ DECIMAL_PLACES : 33, ROUNDING_MODE : 0 }); + T('0', '0.000002513915127705055306056640528958850699699738670', '0'); + BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 1 }); + T('0.0000838632325862484536350098267314013808462051735760', '337423.030731', '2.4854033349343543578311333157652438e-10'); + BigNumber.config({ DECIMAL_PLACES : 86, ROUNDING_MODE : 3 }); + T('0.0004131749462', '0.00313847736137418425513550014648', '0.13164821619713423520927479472893363477634355087719536919245876347954531603582571976295'); + BigNumber.config({ DECIMAL_PLACES : 48, ROUNDING_MODE : 1 }); + T('43858700.0293363960939216', '-2599614823572595448893772454340010230040671331440', '-1.687123e-41'); + BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 2 }); + T('-904125891989.3', '-4990657690680025.468181105292963130180267545', '0.0001811636758172656972061239309710892703790054'); + BigNumber.config({ DECIMAL_PLACES : 88, ROUNDING_MODE : 3 }); + T('0.000000093168465371689914647', '-0.0000000000005411225', '-172176.2916376419658155038831318232008463887567048126810472674856432693151735512753581675129015'); + BigNumber.config({ DECIMAL_PLACES : 1, ROUNDING_MODE : 5 }); + T('0.000000000000000000028554140680060', '-101.2780662948661400', '0'); + BigNumber.config({ DECIMAL_PLACES : 67, ROUNDING_MODE : 2 }); + T('-246157.99057958574881562217581994144426', '-5.345', '46053.8803703621606764494248493809998615528531337698783910196445275958841'); + BigNumber.config({ DECIMAL_PLACES : 89, ROUNDING_MODE : 6 }); + T('-1886816427992533234539229418864549307215.4784746048900326', '122.037427', '-1.546096533150058329678836492402080311981240373582188054980870745496789275965315132381478347621996324127679289731337911606412351e+37'); + BigNumber.config({ DECIMAL_PLACES : 94, ROUNDING_MODE : 2 }); + T('-53819387.67776846439676506538154669384035465454678811', '5665364.9440479410496592303761', '-9.4997212376073610606159188035294123164780013803617164013005984101222925367506692183964840995107'); + BigNumber.config({ DECIMAL_PLACES : 96, ROUNDING_MODE : 6 }); + T('0.00005686363033975136662906365093969614774037009988694265', '-48200077251340376', '-1.179741477243588224057499806813833527192369820508921489528640410001657395306e-21'); + BigNumber.config({ DECIMAL_PLACES : 6, ROUNDING_MODE : 5 }); + T('0.0000000000122869862436239838756718951003949613429845', '7.6', '0'); + BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 4 }); + T('-1347317275008.10206071427330257630227482457494766279', '69000.23', '-19526272.23138389626692944795367062218234018854231051113887591389188122996'); + BigNumber.config({ DECIMAL_PLACES : 1, ROUNDING_MODE : 6 }); + T('-9727252508944082022316065757779070333921212.85', '188085887081717930385302.7678711814739', '-51717078085278505960.5'); + BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 4 }); + T('-0.0000000014742345745628408588118699794934331774364407395001734612', '-7481382.0977534045', '1.9705377366109144191110042861992342302928651539163664891404646115927920142340563e-16'); + BigNumber.config({ DECIMAL_PLACES : 30, ROUNDING_MODE : 6 }); + T('-104698165188516.36027213667980567646491', '-2172843537871425077764953721938488541.89', '4.8184862e-23'); + BigNumber.config({ DECIMAL_PLACES : 94, ROUNDING_MODE : 2 }); + T('0.0000000000002645228752463466030700107177183293746878390282', '-452775.4895417327493755177358', '-5.842252536993067001665276434092777724611662996157773525922966398679141919241e-19'); + BigNumber.config({ DECIMAL_PLACES : 24, ROUNDING_MODE : 1 }); + T('1602367518942292542112439723694.951758582993078837518540', '1638319886465.5249043202490238215560676918', '978055343269503244.018485844692995577857027'); + BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 1 }); + T('-12949514164.3046335907044971050036463576514259298838238', '-212.231913361', '61015866.837509520363054731'); + BigNumber.config({ DECIMAL_PLACES : 46, ROUNDING_MODE : 5 }); + T('733141709040640273329828977521564929309588005225.7', '50303.79', '1.45742837476190218138599293914348189134374965628971494990735290521847359811258754062069677e+43'); + BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 1 }); + T('12077750.6291575370577220', '0.000000000000000000252514056706', '4.78300130563407046138669704097973813017484016848774090044181510548497361876603267245915583108702662972e+25'); + BigNumber.config({ DECIMAL_PLACES : 36, ROUNDING_MODE : 6 }); + T('-1679818566679125024187586427946214017262.883222815', '349473839348.02797698', '-4.806707620269843131722151256967209072971614676290512684832283825e+27'); + BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 0 }); + T('0.08029436596716315538113734732561036194186232269297000990', '0.000000000000000006851154249897162642328142839821636418768119346', '11719830416658388.88002685923929076'); + BigNumber.config({ DECIMAL_PLACES : 52, ROUNDING_MODE : 5 }); + T('-1026768618795574006.2846223162551677285190094', '-27738938919837948725957689635733986', '3.70154252029180503021913367026524596e-17'); + BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 1 }); + T('-0.00000031340912183197', '0.00001876658699629442685518077130407260330656', '-0.0167003793440892836404270533895010391668087118954482824834223019831457212942'); + BigNumber.config({ DECIMAL_PLACES : 98, ROUNDING_MODE : 4 }); + T('-67756988833335965947898002.397023603751040399832629502236', '0.0136674856433809637223379039', '-4.95753137053047104805901743778895648014262824267606598269739554490371038184499242988205724609842894078111956417934304762162392e+27'); + BigNumber.config({ DECIMAL_PLACES : 85, ROUNDING_MODE : 4 }); + T('0.000000366237795258926865181761033018233240088862403534465', '199511031389040045529', '1.8356769182590963269880941397590613649631186609371410182487e-27'); + BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 5 }); + T('-95114948561513352172', '1492872272.5581130', '-63712716961.732447911884465826'); + BigNumber.config({ DECIMAL_PLACES : 64, ROUNDING_MODE : 6 }); + T('1.9', '-13680157281285098755672610111559871101171', '-1.388872920780861164025823e-40'); + BigNumber.config({ DECIMAL_PLACES : 67, ROUNDING_MODE : 4 }); + T('-23438535109854009568518651705670252727680354016246612', '1', '-2.3438535109854009568518651705670252727680354016246612e+52'); + BigNumber.config({ DECIMAL_PLACES : 1, ROUNDING_MODE : 4 }); + T('-0.0000000000239', '-10701397.52331632160190', '0'); + BigNumber.config({ DECIMAL_PLACES : 53, ROUNDING_MODE : 0 }); + T('21975460381002361.83687232309627337826198946029615', '0.000000056642789', '3.8796571936107104183857053889548726603115288507686300545688172240247562668569e+23'); + BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 2 }); + T('16850767091655686029451426.7130603982866', '-30034629512168694102403019.8476595706860421725434916421523', '-0.561044613013405267938804354742942797338932661092870945282555616957947634505421502503'); + BigNumber.config({ DECIMAL_PLACES : 43, ROUNDING_MODE : 1 }); + T('-0.0000000000000960007504494707406733732011306869108413764', '10.407', '-9.2246325021111502520777554656e-15'); + BigNumber.config({ DECIMAL_PLACES : 26, ROUNDING_MODE : 6 }); + T('0.00000000000000000757362633437637', '209261111569596898740570182929.88161793119', '0'); + BigNumber.config({ DECIMAL_PLACES : 29, ROUNDING_MODE : 1 }); + T('-2612640565385626022001698972052921169.999233419551243289', '560104404385.626664333997', '-4.66455993726992250681589081531779854598501528974818146e+24'); + BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 5 }); + T('157481998763563933.576298867885808342438534417952771481891', '-17365225068071338577270941492358476226826704', '0'); + BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 4 }); + T('2546388402471796199060769918930023442003.845194', '-162325117491540253127.367180925181780016674989346', '-15686964789072177633.7308021600152706'); + BigNumber.config({ DECIMAL_PLACES : 48, ROUNDING_MODE : 5 }); + T('-6.7', '107334.87832289565536386490138297725435040159', '-0.000062421461734408280638263949652154880714318776'); + BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 6 }); + T('-38.5560487133305685938268557071730315816087', '-222170.78', '0.0001735423925'); + BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 2 }); + T('-7228207240915961811063423227702494933547823017955', '-210608526491.7123296', '3.432058217833074998553556902534721687588631411359151918877469887845134363144530332419641020364369812269208316728796232274038864052587e+37'); + BigNumber.config({ DECIMAL_PLACES : 53, ROUNDING_MODE : 5 }); + T('7087077732911514990421.718491155248900', '0.000000000054212903555214315260270041468711838687704671209666463489976', '1.3072676924034378532462856132938590938744655957106487796637555435091072405316658044229e+32'); + BigNumber.config({ DECIMAL_PLACES : 86, ROUNDING_MODE : 2 }); + T('-288036.80', '-3672.50405', '78.43062827936159798108323393135536501314409714537959461201955652029845957555853478228295'); + BigNumber.config({ DECIMAL_PLACES : 60, ROUNDING_MODE : 6 }); + T('2782501838850655112.13235120', '0.00000000000042475914269995684999136', '6.550775625837842096570379023636036657744290078928999172875994347834566697861822510732512112e+30'); + BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 0 }); + T('2085966385769.6822146429426148124599816822567195055374861885', '-22668740650478182.1330389830836733875708845803617129', '-0.00009201951'); + BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 2 }); + T('455749240058.432717871764', '213.285963473032811', '2136799030.9219583556592241253006390014049940692494738'); + BigNumber.config({ DECIMAL_PLACES : 83, ROUNDING_MODE : 6 }); + T('50.3693', '3241719836350468739346937.216525', '1.553783255270628371879735301438597473641575332591253120094778e-23'); + BigNumber.config({ DECIMAL_PLACES : 28, ROUNDING_MODE : 1 }); + T('0.0000003390997721026708632209297630764385534425751', '80609843.11345', '4.2066794699677e-15'); + BigNumber.config({ DECIMAL_PLACES : 67, ROUNDING_MODE : 0 }); + T('-2219589450028777558675949700.28245589983487', '1199614667413307000681332845525', '-0.0018502520103516335631572514110011223624779207645650784747900292773'); + BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 3 }); + T('69265035793457102886394984752176.561556505', '749235603622.5025904992719110654932593467136994978363', '92447603208610777141'); + BigNumber.config({ DECIMAL_PLACES : 98, ROUNDING_MODE : 0 }); + T('986426', '18586275440565367354374527', '5.307281725993803316392399815614888085176102744474073229243384378909257740310466e-20'); + BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 6 }); + T('0', '-290816038635.723038753', '0'); + BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 0 }); + T('-0.00000000000000000132916584702643508382547848857588943508525233140219000', '20155284063.95184432', '-6.5946272094655146379665613405234206222864897459e-29'); + BigNumber.config({ DECIMAL_PLACES : 67, ROUNDING_MODE : 6 }); + T('952063481.98599187118379776', '-4232866339274352925.490937701343567028706315', '-2.249216974210448711950095436068575112528955438753532238294e-10'); + BigNumber.config({ DECIMAL_PLACES : 89, ROUNDING_MODE : 2 }); + T('285292430610904911895206', '77527243764697.175429459855502609228198', '3679899049.12388672411083524731437191683055664146980717875672125221546893380027765641035958262393785'); + BigNumber.config({ DECIMAL_PLACES : 37, ROUNDING_MODE : 0 }); + T('0.0000000049141233322', '-119732610266833732648839394753', '-1e-37'); + BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 2 }); + T('-104156583', '333240.6552807296694373304883172766968807443129', '-312.55665042506915864071589114922215519462865919862581560781657669877652'); + BigNumber.config({ DECIMAL_PLACES : 6, ROUNDING_MODE : 3 }); + T('-775.5672039409328626401114303362741', '-0.00000016693416752333222447217245221195848', '4645946455.704058'); + BigNumber.config({ DECIMAL_PLACES : 22, ROUNDING_MODE : 4 }); + T('-1042543329667310875144385693.47870820', '-133302423882869890929240172948256058069482.13942800', '7.820888e-15'); + BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 0 }); + T('-0.0000005594168136250496551943633409366356584941233836', '-155333163.57129', '1e-10'); + BigNumber.config({ DECIMAL_PLACES : 43, ROUNDING_MODE : 5 }); + T('677741.0', '0.000000000000048545611388960621791794106024302515629563001129689242', '13960911823104977636.4886632915329065906279945487485181517422914'); + BigNumber.config({ DECIMAL_PLACES : 88, ROUNDING_MODE : 4 }); + T('-14246783475672473094374', '-149283577.5840', '95434365294842.8731861493515746127832964917135851376288115043275931248129565860364757588485313212481351'); + BigNumber.config({ DECIMAL_PLACES : 91, ROUNDING_MODE : 3 }); + T('0', '0.0000000000000001207848168046516341108', '0'); + BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 2 }); + T('-11.7', '-74647750.91858573128961021604743782694040686036489112681', '1.6e-7'); + BigNumber.config({ DECIMAL_PLACES : 58, ROUNDING_MODE : 4 }); + T('-7.34', '9698682311027857455398833030730471.224716275', '-7.568038383579257100616746e-34'); + BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 6 }); + T('-37882578334427751786191262.1476669652295625176504114442012', '2720147194985163.7780019', '-13926664852.647568168691796876660485205133557051303933672373585206310547581627923'); + BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 4 }); + T('1784297', '-60643972817184956177051299.216334', '-2.94224952144687939890351676962907764881403e-20'); + BigNumber.config({ DECIMAL_PLACES : 36, ROUNDING_MODE : 1 }); + T('0.0000000000000610073339077686555597847598696588553729496062', '0.0000048710639217445150719', '1.2524437143070704396881275046e-8'); + BigNumber.config({ DECIMAL_PLACES : 72, ROUNDING_MODE : 6 }); + T('-19575885010043762585.63479', '3734076.4363074380470778410612747870', '-5242497132544.508926971018355016520670701306627656808444557852280137119362113687811956'); + BigNumber.config({ DECIMAL_PLACES : 62, ROUNDING_MODE : 0 }); + T('301294982924.2953454775741211743365342540', '-19106697449406581306347.7847967800301', '-1.5769076980577457698713369968322206617602949168949e-11'); + BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 3 }); + T('0', '-69919.3263764630460591434529218712320080435258723093898298', '0'); + BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 4 }); + T('0.0000000000000230003592864206349802178664690183622903390185298', '2840738519640.265058610', '8.09661259823845717370098303790512562658009194223844875415776022496483e-27'); + BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 4 }); + T('-44.02944567871767', '1636041557975908022265540917066623362361723537410', '0'); + BigNumber.config({ DECIMAL_PLACES : 72, ROUNDING_MODE : 2 }); + T('-6', '-18722872007463096014328377948433835478279841645621014', '3.2046365523453607822e-52'); + BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 5 }); + T('-4593464186153780906583342.5527540561004903434686', '25781719737565225271673922242095', '-1.78167485835356404293325963720725819910427821e-7'); + BigNumber.config({ DECIMAL_PLACES : 88, ROUNDING_MODE : 2 }); + T('-3363720.8930635', '0.228577321666', '-14715899.4975827498416165644249692124660543400874306751620873636105386668495482448943430783335128'); + BigNumber.config({ DECIMAL_PLACES : 19, ROUNDING_MODE : 1 }); + T('38128866863866491251', '-0.00024252108819812315909452383049', '-1.572187686735011354247874527909662003073945e+23'); + BigNumber.config({ DECIMAL_PLACES : 85, ROUNDING_MODE : 0 }); + T('-33176721817409588820003', '0.00000000000000028786703467057093436292344521684978816952674271926', '-1.152501600448149311646257647082077178772297210692101489433777607983496766321758013882645200002485188315714675666279583461034e+38'); + BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 5 }); + T('-883', '-12752496287481.24135354', '6.924134538794696151120500756281595757849e-11'); + BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 3 }); + T('-29.1419953', '1889484740363126046982459976594.076085275754965390', '-1.542324988261055e-29'); + BigNumber.config({ DECIMAL_PLACES : 94, ROUNDING_MODE : 5 }); + T('-3341584032814423339321004883614949822747200.2985143717692', '0.001227', '-2.7233773698569057370179338904767317218803588414950055168704156479217603911980440097799511002444987775061124694376528117359413202933985330073e+45'); + BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 2 }); + T('-3874880850169314237450658694725279481210339682732447536', '-2680406.51', '1.44563178596716444978737896541121274966995199647252294429026737440657835143073130351410764183e+48'); + BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 4 }); + T('0.00000000060223997248190123283043885606751', '786.6994', '7.655e-13'); + BigNumber.config({ DECIMAL_PLACES : 64, ROUNDING_MODE : 3 }); + T('-0.00000000001441891961132955720389216634310873951090606763736348', '0.000267', '-5.4003444237189352823566166079058949479048942462035505618e-8'); + BigNumber.config({ DECIMAL_PLACES : 5, ROUNDING_MODE : 0 }); + T('1313524088747.8', '5535335650070248.726249801889459975', '0.00024'); + BigNumber.config({ DECIMAL_PLACES : 70, ROUNDING_MODE : 6 }); + T('30060859029542.3848692854', '-55375941130.729183', '-542.850530676778540030474685565763103760275544100911084559401425971353455'); + BigNumber.config({ DECIMAL_PLACES : 31, ROUNDING_MODE : 0 }); + T('-0.000827100719268175671086830191340355899274', '154.278743238288983774258', '-0.000005361080223415414479471738'); + BigNumber.config({ DECIMAL_PLACES : 45, ROUNDING_MODE : 1 }); + T('0.4765257815828847644182356988704735378797', '0.0000016095806197307715196711016292844', '296055.864329797556126269465789748940552603559236172'); + BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 2 }); + T('2383839881.66464', '1.676805832', '1421655290.1783084924289552447119589932342267759956121144979414646978637178308668955058835'); + BigNumber.config({ DECIMAL_PLACES : 53, ROUNDING_MODE : 0 }); + T('0.000000000000000050606645897867672442972574275031289410912', '2693549667313129709978520437039434348086562053.82187', '1e-53'); + BigNumber.config({ DECIMAL_PLACES : 66, ROUNDING_MODE : 4 }); + T('-0.7258504577695793943509193554861614365708806', '2.524314960434057069225409849542066825947300924443437', '-0.287543539196380268036218735171571647050319839346168576535269068687'); + BigNumber.config({ DECIMAL_PLACES : 9, ROUNDING_MODE : 5 }); + T('-0.000000000000028885584156185150', '77.5', '0'); + BigNumber.config({ DECIMAL_PLACES : 26, ROUNDING_MODE : 2 }); + T('-0.06711879785767251358135011891', '2385212433376839016587.586621319136168265', '-2.813e-23'); + BigNumber.config({ DECIMAL_PLACES : 32, ROUNDING_MODE : 5 }); + T('0.000000000000000000083432058951516992373882110712631865853005711342023601', '955440228312237.9699983760968458', '0'); + BigNumber.config({ DECIMAL_PLACES : 94, ROUNDING_MODE : 6 }); + T('-159860539866213251269608', '476291877008672', '-335635662.8843002896752642873393704929807001077300996436388197649030326733847717933186739168519148601668'); + BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 0 }); + T('3.4055961543833163031955623902412873943633179220658580', '-5638173.314118741444977300', '-6.040247372061527821806277144762792364021425249203651092590971694125336372532672131595112108e-7'); + BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 0 }); + T('-3493556180375848730.848130393358438160491', '718685222018.797305232950026805146', '-4861038.00849334051793473'); + BigNumber.config({ DECIMAL_PLACES : 88, ROUNDING_MODE : 0 }); + T('23.485', '-0.000000000000066598986405042017256663698275584502078182', '-352632994399776.9064690649941293302469561880937591761458806724536981375061501064450685308282170615944879'); + BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 4 }); + T('-822.90', '76092.60', '-0.01081446'); + BigNumber.config({ DECIMAL_PLACES : 43, ROUNDING_MODE : 5 }); + T('0.000000000015084', '-0.000001912385433146559342084020', '-0.0000078875313200756892604204464311476238462'); + BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 3 }); + T('9483186004328519.899267358722553159293541088', '-320.45595501616058746075866630772838', '-29592790696775.42118699025'); + BigNumber.config({ DECIMAL_PLACES : 88, ROUNDING_MODE : 3 }); + T('0.0000000534', '-38740477182.330224274977499027165728234634799426529061021', '-1.3784032589138080220562463869113934987094771722083508684729812045379072e-18'); + BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 1 }); + T('-0.0001954657197300273066647138944844914845862509008372575236777', '168060.67886884789467094219584088427984858277529', '-1.163066e-9'); + BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 6 }); + T('1150344439.958156697', '-0.0001115798448123750060997401563155120021006060102', '-10309607813960.45854166944088515213012733315983456349573700908178034971170409565162'); + BigNumber.config({ DECIMAL_PLACES : 88, ROUNDING_MODE : 6 }); + T('0.0059295', '-6327267465345.7543737378793777186620446106878506104333', '-9.371344000353526516217144486032579896762423824055952274964299224467874251e-16'); + BigNumber.config({ DECIMAL_PLACES : 53, ROUNDING_MODE : 3 }); + T('609963081962334114.937377417886308919172152824323657593', '-0.0000000034870603144043430699562858194', '-1.7492186167319779613825396256986094509717728289296461637619523489196444381147883e+26'); + BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 0 }); + T('-0.0000031852353441801206076222381975926616222634740191', '2.9856013', '-0.0000010668656073334777177455804959'); + BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 1 }); + T('-1488864252921831.25831536732717807799329136', '6474156.733', '-229970375.18922099569679468'); + BigNumber.config({ DECIMAL_PLACES : 96, ROUNDING_MODE : 2 }); + T('625084489642715799565494363.417748488859', '0.000230873', '2.707481990716609562683788764462490151983991198624351916421582428434680538651119879760734256495995633963261186886296795207754913e+30'); + BigNumber.config({ DECIMAL_PLACES : 56, ROUNDING_MODE : 4 }); + T('256770123819.9', '22412746815438521661854347587580733.8915585015437419311582674', '1.14564326244487630922539542203993e-23'); + BigNumber.config({ DECIMAL_PLACES : 30, ROUNDING_MODE : 6 }); + T('-0.049911992', '-62810718780308357014459144405688282702', '0'); + BigNumber.config({ DECIMAL_PLACES : 98, ROUNDING_MODE : 0 }); + T('443180719833539342827985492522430618.63430974702278297928', '-0.00000000000000525611979007928380995849101', '-8.431708894268834058898041333257166278406932019074937028707916277144897108740020410537475905778879362684282621457193747163618998932277384997601111814e+49'); + BigNumber.config({ DECIMAL_PLACES : 100, ROUNDING_MODE : 5 }); + T('-0.00000000000000003450293376086498436791378576700539008489930', '2033.857978436912', '-1.69642787877360271584343942176475323384052341883641062769887571758013322426814447e-20'); + BigNumber.config({ DECIMAL_PLACES : 59, ROUNDING_MODE : 6 }); + T('10723887443064792481210151761395366824', '-226.3479643498394316073', '-4.737788331283660546772318293399771486485754243656984350212254100827492754718091434214376133324e+34'); + BigNumber.config({ DECIMAL_PLACES : 43, ROUNDING_MODE : 5 }); + T('0.000000000000000372899189091300451367945878036123625876735470022169309329', '23254426481409060097', '1.60356218e-35'); + BigNumber.config({ DECIMAL_PLACES : 56, ROUNDING_MODE : 5 }); + T('57446960.7020586268901672397015', '13924561060097769201834626.56987437985184', '4.12558503310231250724824967455819889067e-18'); + BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 2 }); + T('0.00000000000000545056475271835430103855248600970440971406246221470171825', '0.00000004298708852646016198291685535720397', '1.268e-7'); + BigNumber.config({ DECIMAL_PLACES : 19, ROUNDING_MODE : 1 }); + T('22261699938052229573323683185837366581633512', '0.000000000000014887331841', '1.4953451817835535257028387472374987937661241254520108738671058685914865810775e+57'); + BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 1 }); + T('-12758219415.0261496467012388529078170409549623267451973', '6.0183243288', '-2119895625.095037773880704794379976991736989807066377406164093'); + BigNumber.config({ DECIMAL_PLACES : 94, ROUNDING_MODE : 6 }); + T('3298265783586490569932640', '-5219021966096084567874.4', '-631.9700903756970309117387678067401491846779965274936773895436458197783981034864011295595793733798'); + BigNumber.config({ DECIMAL_PLACES : 25, ROUNDING_MODE : 4 }); + T('-3.1', '-4507.08745151922', '0.0006878056024750688990088'); + BigNumber.config({ DECIMAL_PLACES : 49, ROUNDING_MODE : 6 }); + T('-42971.695', '0.000000000000000000017659192036373461', '-2.4333896427135056197903261465912904582316910976355800931381818188432390339e+24'); + BigNumber.config({ DECIMAL_PLACES : 23, ROUNDING_MODE : 6 }); + T('179160.757624028179', '-7163360.4386559665142872334563278482982880917873', '-0.02501071377858007321212'); + BigNumber.config({ DECIMAL_PLACES : 60, ROUNDING_MODE : 4 }); + T('1677504.411824', '-14646872.6189014099162', '-0.114529869650072875358731469381513318575548167143459977572541'); + BigNumber.config({ DECIMAL_PLACES : 70, ROUNDING_MODE : 5 }); + T('-0.00000000000000782882328973611235818109', '-4788.62', '1.6348808821197155669443576646298933722032652413430174e-18'); + BigNumber.config({ DECIMAL_PLACES : 72, ROUNDING_MODE : 5 }); + T('-398596073931934968473113250377', '-1127648875665298404515191860194593', '0.000353475343729464002040920603210655494527390322158152328576373824293514'); + BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 3 }); + T('0.0000000000000000001826692980', '-1085386369186475721916.07909005', '-1e-10'); + BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 6 }); + T('9.94377259201165', '-0.00000000000000000003785930736782844700997577207618252837298333870663517930597', '-262650673859435951327.9002827234361612178385404817872748226720771470032061529620073091462587522075'); + BigNumber.config({ DECIMAL_PLACES : 86, ROUNDING_MODE : 6 }); + T('0.00031338426831763587995996978365091836671439981903', '-1.9710177424701826837705881355', '-0.00015899616810393918561267830219250011019280978988464367850746121454599170133872951957'); + BigNumber.config({ DECIMAL_PLACES : 38, ROUNDING_MODE : 6 }); + T('365.622', '0.000030469303056299', '11999683.72510620954999349701386067517253866452'); + BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 2 }); + T('15.5497', '3270.25410', '0.004754890453313704277597266830121855057073393776955'); + BigNumber.config({ DECIMAL_PLACES : 80, ROUNDING_MODE : 4 }); + T('-870200101503721383.51965', '-884576667833211780595521295660709623938837953807417017', '9.8374751804758078968275622511295837083002249e-37'); + BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 6 }); + T('-8627201481634031472775639.02', '-35.88954583151', '2.40382018823419996015933836240912383462062392472807889733222073668766587140736811419758426482048485e+23'); + BigNumber.config({ DECIMAL_PLACES : 29, ROUNDING_MODE : 4 }); + T('27166159113573153158218.135032422640', '-0.0000000000000004254856686581243705034381532416', '-6.384741276774007537705363563056955219895020671530279717600122039908e+37'); + BigNumber.config({ DECIMAL_PLACES : 78, ROUNDING_MODE : 1 }); + T('1.15', '-22864397113383806966051253809220365902.8247924106561', '-5.0296537201361012708975757086664320480315e-38'); + BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 2 }); + T('0.0000002333144399314152774599452', '11886.0084271', '1.96293348908839995365465846851990744875382286779903338135333939066e-11'); + BigNumber.config({ DECIMAL_PLACES : 48, ROUNDING_MODE : 2 }); + T('-1.4', '-526030357.89775934608923525372', '2.661443353944427117747712072585784816383e-9'); + BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 4 }); + T('-78185011.374385749', '-1177.93747', '66374.5006552731097008061047586846863781'); + BigNumber.config({ DECIMAL_PLACES : 6, ROUNDING_MODE : 6 }); + T('0', '2', '0'); + BigNumber.config({ DECIMAL_PLACES : 2, ROUNDING_MODE : 2 }); + T('-0.000019691624801077', '789724640172607638117.14615891967744780537294852202576', '0'); + BigNumber.config({ DECIMAL_PLACES : 7, ROUNDING_MODE : 2 }); + T('-10398074866566369874729479404758795484097', '39097018415729345107193924086732344183', '-265.9556991'); + BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 5 }); + T('13471.08', '342569337268989267429289.929240095140092421818', '0'); + BigNumber.config({ DECIMAL_PLACES : 94, ROUNDING_MODE : 3 }); + T('504855661348378460.56691121741008042', '2674583057855000818082.15776502', '0.0001887605097421313958154576626856770256389188979522609360577817944863888582115807348244806395'); + BigNumber.config({ DECIMAL_PLACES : 36, ROUNDING_MODE : 0 }); + T('1252955516184.1', '9179631108025347.69919', '0.000136493013873803284442700977622413'); + BigNumber.config({ DECIMAL_PLACES : 19, ROUNDING_MODE : 6 }); + T('100572331', '21381655.21', '4.7036737807353315749'); + BigNumber.config({ DECIMAL_PLACES : 22, ROUNDING_MODE : 5 }); + T('-0.680', '0.0001023962933734199876112', '-6640.8653828920167158084148'); + BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 3 }); + T('1408586402592570871877536736630', '-71282669808626854262807002933.430075394538', '-19.76057304'); + BigNumber.config({ DECIMAL_PLACES : 53, ROUNDING_MODE : 1 }); + T('-0.0304672086581822723', '-2304150208926492958299207311692957050618117750642287631', '0'); + BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 0 }); + T('-3257773.73321142551666', '-136126208859759763315457882399157905817562572941969190802199', '2.4e-53'); + BigNumber.config({ DECIMAL_PLACES : 83, ROUNDING_MODE : 3 }); + T('-3388911005216920030200707342267.687215707301269933121655158', '-2.24042737441029', '1.51261810310138977469895800853862078119029023683878514951826991960514629682667166245531906432205873462930761431097e+30'); + BigNumber.config({ DECIMAL_PLACES : 66, ROUNDING_MODE : 5 }); + T('0.000000138115063695530081270314206', '-2205711745203109613847465751461780.624840399490493415533725', '-6.2617005143984471794719823e-41'); + BigNumber.config({ DECIMAL_PLACES : 83, ROUNDING_MODE : 3 }); + T('23898689430389996578244006638947272744264', '92111697653220', '2.5945335977155944600896827812182218409815327692208641481173354255626639178513525332308175610201313823414824115e+26'); + BigNumber.config({ DECIMAL_PLACES : 7, ROUNDING_MODE : 6 }); + T('0.00053276620201795190372807960271', '-0.000000000000000794688709486483208304658286', '-670408671544.1295421'); + BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 1 }); + T('1026342337656.16111542877485828326751384551678666163', '0.00000004973324483282952402954896455', '20636946998050285431.20023096195027233273768104632097760012933667433149392'); + BigNumber.config({ DECIMAL_PLACES : 7, ROUNDING_MODE : 2 }); + T('540050869173895773.424426904326491781543129896', '0.00000000000895989186388639422064025633565887849312514138243985430933', '6.02742619417781935328562300720637989e+28'); + BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 4 }); + T('-5938.622', '-0.000000000000000441470800918077672', '13451902113684776033.876762578582838722193971530567149367030921794691694'); + BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 1 }); + T('-643016680179.5574', '-41351.26558819809954910396212183376711', '15550108.83060077939716915940438899056254498339925880611745634521459682866865543956545201310119290772247'); + BigNumber.config({ DECIMAL_PLACES : 41, ROUNDING_MODE : 1 }); + T('377183841614474999303.1509', '-0.00000000000001682510837897453705285405430455679857552360', '-2.241791453098881851047931346403699546189986296210130328376566971094795027618e+34'); + BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 4 }); + T('-0.00000000000000002874771492599091839043765095450703', '-0.0000000000000000000246053412697581', '1168.352619490960748177930651375650333524830229500802060304699'); + BigNumber.config({ DECIMAL_PLACES : 45, ROUNDING_MODE : 4 }); + T('-75466375201925192885078218', '328284.032518165', '-229881345806087593488.150042339594309939217861167079783424739050426'); + BigNumber.config({ DECIMAL_PLACES : 26, ROUNDING_MODE : 0 }); + T('-0.0000000000000001458387757541566650923346531455358076529363209321880949', '1039660724', '-1.5e-25'); + BigNumber.config({ DECIMAL_PLACES : 63, ROUNDING_MODE : 0 }); + T('0.00000000000000000007201433211365864812050676168861631569', '21.058', '3.419808724174121384770954586789643636147783e-21'); + BigNumber.config({ DECIMAL_PLACES : 40, ROUNDING_MODE : 4 }); + T('35406333.65425365444', '-47699.2054027416103', '-742.2835109160665875778372905140836839307704'); + BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 3 }); + T('1.6467243', '3179202137271953.999867', '0'); + BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 1 }); + T('12368559.7655645946606078', '-0.0000000000005370318077131559312937260277689894299333665170817913498754', '-23031335552047964835.06745434814525'); + BigNumber.config({ DECIMAL_PLACES : 90, ROUNDING_MODE : 1 }); + T('952970053130035362789358', '39364146300133649626004.62', '24.209087271042883694639401133946545862495050075765185744384807962419660137722883439104580538'); + BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 1 }); + T('-1175.74452217080906238136', '0.000000000000008317103', '-141364670146661531.3506830443'); + BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 4 }); + T('-281353421116', '-0.0000000000006597704686962552218738218482173745099707', '4.264413678168571358888074134658601474658911119122815649281448043676121e+23'); + BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 6 }); + T('-7219523920097563556181232937078301106', '215954011203925463555412484', '-33430839648.91100857455429422938'); + BigNumber.config({ DECIMAL_PLACES : 71, ROUNDING_MODE : 1 }); + T('0.000000717658856646399090862400533683857748886352', '69542205782774637283441456525902695.499720262', '1.031975975694692007919534912528e-41'); + BigNumber.config({ DECIMAL_PLACES : 89, ROUNDING_MODE : 1 }); + T('-38203019.354', '0.0048211569639252', '-7924035587.27873807137229096192908092256676321999293319188756273871716857316078129027130891822842835'); + BigNumber.config({ DECIMAL_PLACES : 25, ROUNDING_MODE : 3 }); + T('10128234086168280925890886.599484735363522626588600146237', '-4119282794.3125357366762010270654', '-2458737258862698.433468855443166152443838'); + BigNumber.config({ DECIMAL_PLACES : 48, ROUNDING_MODE : 4 }); + T('14640184250369871388.37100702916569398015738844', '58551322848286248848067253369539620977', '2.50040196159263685407381621606e-19'); + BigNumber.config({ DECIMAL_PLACES : 60, ROUNDING_MODE : 6 }); + T('-1083681003608604033643548194.9', '119169682', '-9093596503921224138.565278666263454491722147920139620746827200562639749261057859'); + BigNumber.config({ DECIMAL_PLACES : 31, ROUNDING_MODE : 1 }); + T('592117874017678.813255527048431677933', '466.7', '1268733391938.4589956192994395364858217270194'); + BigNumber.config({ DECIMAL_PLACES : 40, ROUNDING_MODE : 4 }); + T('-23896667170068568476530969283941478707269695211', '-133610708633921647146034.10074', '1.788529333793353026151379363557258505368398116073368544502305595e+23'); + BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 0 }); + T('282898292487160910703267277995106619021883676929.924460161023', '-11447661789031355856845201.0', '-2.4712320970053602157884087934365549564e+22'); + BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 0 }); + T('-717.80255046097476806353285702027141354262687', '160415502.003776', '-0.00000447464578856025090122480400689234232245586'); + BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 4 }); + T('-6430550635897275', '-1177462571585965733785194717063572810797712495968311.99218059', '0'); + BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 2 }); + T('225', '-61761439784620984627142813719', '-3.64304978615518802502665622300028500429e-27'); + BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 0 }); + T('-195.523689600', '-167064836731283986153984192206479814829949537.24391580755046', '1.1703461567708036255855243452084423e-42'); + BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 6 }); + T('3.436', '-12508626406010003696850920561737979.2585', '-2.746904327040345120515529643732939778083475753e-34'); + BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 5 }); + T('2590425', '0.0000000001145676379294', '22610442589348811.10849144035124033620032882004378247455089405529415837571660141344'); + BigNumber.config({ DECIMAL_PLACES : 35, ROUNDING_MODE : 5 }); + T('-55461828684169485010301146336919649775052817.0180', '46.0169344557709809833971869110406', '-1.2052482274210689062878457286003185728949114298659930715269275094725859608915e+42'); + BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 2 }); + T('0.00017260', '-3404498403684126500.46767062597658852674782', '-5.069762988087276476469338e-23'); + BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 1 }); + T('7409154644117.49516751325896622', '-1082845369464899121.7012509556893606955212655145085607', '-0.00000684230163700918514622437948547615875283398408647133872349516'); + BigNumber.config({ DECIMAL_PLACES : 28, ROUNDING_MODE : 4 }); + T('6636.7313333', '-12060593132402143291632525325373854980073972080517646055224', '0'); + BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 3 }); + T('106818808701039.84547715905', '12221056300516916667535058613.36168150545', '8.7405545048116427685652075086113386323829650372286739937901999493e-15'); + BigNumber.config({ DECIMAL_PLACES : 90, ROUNDING_MODE : 3 }); + T('369.557916130845', '-419464295167825002212185870265208.5005939460325871225', '-8.81023534989997714325878006177572415183918733223705657924136e-31'); + BigNumber.config({ DECIMAL_PLACES : 53, ROUNDING_MODE : 4 }); + T('-0.0000000000645439495204991350846523292148771', '0.00000000000129208540625636', '-49.95331516629876957887408926096711789426284229436361094'); + BigNumber.config({ DECIMAL_PLACES : 32, ROUNDING_MODE : 0 }); + T('67393774679548074617110386542143925801365009043.0', '-1092320671375326.10154520928644392601845845626436644', '-6.169779300678571750101964970468279947291743116391085444593294149e+31'); + BigNumber.config({ DECIMAL_PLACES : 71, ROUNDING_MODE : 5 }); + T('-121027988050756830025641308.712901770', '0.00000000007126382432444039853374141746443519712', '-1.69830891336615348258214639706015061247339987062220111730020833449231165027849749453333526080981186093370789e+36'); + BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 3 }); + T('-716900765010107.762871173192', '11385355.31333073338140850097242124430921', '-62966920.6872017890686108666849470147304940347940883377290971407447194424453008882402'); + BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 5 }); + T('20886435275525736755660378681250732329264655953691.380', '-1.29409561', '-1.613979300611779121610680580336002556199433823416755119044102158726896538965926945691439290177330869702896218000461e+49'); + BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 3 }); + T('-55753655909319131271843349202.87719779740851081114209443', '-0.595620028839275438430986238238468911051966405926660', '9.360607973168734289980188482140775761596e+28'); + BigNumber.config({ DECIMAL_PLACES : 58, ROUNDING_MODE : 2 }); + T('-264635918573859707596403359325208407', '0.00000000000000000354626821691974030', '-7.4623774172310156461112574889518111124548438729507108888796896579264628217596211584397426491359004312721032482e+52'); + BigNumber.config({ DECIMAL_PLACES : 67, ROUNDING_MODE : 2 }); + T('-14325912003785042.56288723129905052462976120195637437110865304', '-9245328333014.38783626694493499457870739360469', '1549.5298260666702253568344292668269177984299048155412204879714419131073'); + BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 4 }); + T('-1129590318587195938445234016303521870520137985828073222338910', '-3061584375691766.89717249492522249842483359655', '3.689561285835750655025466114301838115877292367779690786e+44'); + BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 1 }); + T('-0.2515867523530108605600496137267476237074174916179436763', '-33624.2135287940460156', '0.000007482308906275678793492493465395099190398868342150883'); + BigNumber.config({ DECIMAL_PLACES : 49, ROUNDING_MODE : 2 }); + T('0.0000865195295746708088866771125640918227', '-350793020221.171183114818319924648199147182195572787046780985', '-2.466398263001960150194250624144808e-16'); + BigNumber.config({ DECIMAL_PLACES : 53, ROUNDING_MODE : 0 }); + T('11728121459652509661793201047042821273705', '38.140', '3.0750187361438148038262194669750449065823282642894598846355532249606712113266911379129522811e+38'); + BigNumber.config({ DECIMAL_PLACES : 89, ROUNDING_MODE : 1 }); + T('-250471697245291579519203881749031751382007763935', '0.0067942570593290', '-3.686520763905687928813971718511538060840167627146529024295604290147707552102703598244620157839912540181483995022963667591995499351069442766e+49'); + BigNumber.config({ DECIMAL_PLACES : 45, ROUNDING_MODE : 5 }); + T('0.000000000000000000570863031266464054061282093562606904320', '-3701611.051635016263', '-1.54220155306244720675e-25'); + BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 5 }); + T('-7646.952831750430', '191750.7388509', '-0.0398796524987'); + BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 4 }); + T('0.88174753004373804938093158577997676', '1138199379359199839', '0'); + BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 3 }); + T('1577.95001', '-131.311990094895031933441386427065', '-12.016800665801084250425314522453251647826917908228222400546877896536593396343582303'); + BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 4 }); + T('-1577.76928710083314023631795412877045181025', '-33367026224254432.0', '4.72852832762769686802691755643196033870527710791847216953468737e-14'); + BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 3 }); + T('-0.0005968434298289396315631121', '69959148634528.0708204079', '-8.5313135090722049543462336e-18'); + BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 5 }); + T('-2', '-13666674315974256724.2733065', '0'); + BigNumber.config({ DECIMAL_PLACES : 55, ROUNDING_MODE : 0 }); + T('800659435665671863047228213619069079180548770985658357864820', '-404584339130828240814444028615465729390.83425', '-1.9789679387633612011626363783680693252755797440294456093699415572840030090901e+21'); + BigNumber.config({ DECIMAL_PLACES : 99, ROUNDING_MODE : 3 }); + T('-14164987398.154', '-10823347.03684348814847738', '1308.743713930202596887849021949283595813370541890702664984146957681092855895340482521234041212666913913'); + BigNumber.config({ DECIMAL_PLACES : 94, ROUNDING_MODE : 5 }); + T('-66639967214576506023448799662784.8120851681881705', '-754.9709298123252579', '8.82682558799214006575456582142314590967082981674293456802399068140421957405080507458976823739558557208552135632511198767926e+28'); + BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 4 }); + T('28.538637614', '97', '0.294212758907216494845360824742268041237113402061855670103'); + BigNumber.config({ DECIMAL_PLACES : 30, ROUNDING_MODE : 0 }); + T('-3374783162858941545005351458815794090250914130.81', '-31524083082565114', '1.07054126015973420268121365922315423006570122477926323459308e+29'); + BigNumber.config({ DECIMAL_PLACES : 48, ROUNDING_MODE : 1 }); + T('-555139115732.219118946044638930', '-187131353148221858197483269569454572.4282311604652091469672', '2.966574581932873225848648e-24'); + BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 3 }); + T('-3580670709933895504879211497822.62573263710180580083', '-16595562728719812263924018677556.884214647588798', '0.215'); + BigNumber.config({ DECIMAL_PLACES : 64, ROUNDING_MODE : 1 }); + T('-7800204268422.6630976051925', '-368074375459785921822.4', '2.1191924210097251919466525090900679934161001895850112367e-8'); + BigNumber.config({ DECIMAL_PLACES : 42, ROUNDING_MODE : 2 }); + T('-518296340.3117302473040625440596494724', '11318311159193499699635581642435247210015192537544895.6872939', '0'); + BigNumber.config({ DECIMAL_PLACES : 91, ROUNDING_MODE : 5 }); + T('-1642590470351481064495.9285537066231805276894804805113655417', '-0.000001970263561317', '8.336907318397089832301582143621967064206762358861678195376140345756393710412443238500950733156861452806046652283634865e+26'); + BigNumber.config({ DECIMAL_PLACES : 70, ROUNDING_MODE : 2 }); + T('1273137748195148939370227531002272006611943859', '1305.704918253306118685731152141683286137', '9.750577870980806367967702943834873454117411899323816774306697929812313456716692452636273616285899185762960612454e+41'); + BigNumber.config({ DECIMAL_PLACES : 86, ROUNDING_MODE : 2 }); + T('-17.88551460012634842908254237071', '515674786038.35182387039160670', '-3.468370974181422339678383601951010161757125234050160394413900135489260200473e-11'); + BigNumber.config({ DECIMAL_PLACES : 7, ROUNDING_MODE : 5 }); + T('356106374867687954731276514387594223575481513688128770487472', '-88625132888658790915827758922430992.3664431409', '-4.0181195024561513310161914962555e+24'); + BigNumber.config({ DECIMAL_PLACES : 86, ROUNDING_MODE : 3 }); + T('-1173401490784017510110594353623515417366834463178905259508', '-847245245690376328994.832121515569214422', '1.38496084428054043151887091880271091841030165137578406435475089911317967522337044269861929440531213953107883004374787689544e+36'); + BigNumber.config({ DECIMAL_PLACES : 41, ROUNDING_MODE : 0 }); + T('0.000000000000000000073121300058313275464', '-3580.489098392922289651469472184041861461942', '-2.042215408256186679e-23'); + BigNumber.config({ DECIMAL_PLACES : 66, ROUNDING_MODE : 4 }); + T('-33244142', '738.68547495917336', '-45004.461475078254309842614491013773999662579782180750564018294685172971'); + BigNumber.config({ DECIMAL_PLACES : 36, ROUNDING_MODE : 1 }); + T('-0.0000000000000000902384628927888', '0.0000001599435367663604175894053775880663491414991446307487060448', '-5.64189492849628538037347343e-10'); + BigNumber.config({ DECIMAL_PLACES : 5, ROUNDING_MODE : 0 }); + T('-34177.885715656428595242211188483316451607937004', '-1809517072277078470860', '0.00001'); + BigNumber.config({ DECIMAL_PLACES : 53, ROUNDING_MODE : 5 }); + T('0.0000000000001879718896', '4517764177408901714386060344044.0591654085629581', '4.160728232e-44'); + BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 2 }); + T('115.5', '6807122973315026560401587219858615', '1e-17'); + BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 0 }); + T('376994297172407832139945598036890904929033426', '-10204965.7433858333140800676996804381461', '-3.6942240341840438564156278379508523898040066862017183222916327870947875811464180204029594420804792899910987594442175569245e+37'); + BigNumber.config({ DECIMAL_PLACES : 52, ROUNDING_MODE : 1 }); + T('148025607.8094158167800', '-3', '-49341869.26980527226'); + BigNumber.config({ DECIMAL_PLACES : 24, ROUNDING_MODE : 1 }); + T('0.00000000001546123044543608773', '-1.817180', '-8.508364854024e-12'); + BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 2 }); + T('1074121926068050591788300835971345971788', '-1241.280697206', '-8.65333625573806747854467478207570701695396166666360710889818738200113442939310149245398367179674217040520941323e+35'); + BigNumber.config({ DECIMAL_PLACES : 62, ROUNDING_MODE : 5 }); + T('27481425', '-0.0000000000000007927277614420371368617342782703302176992806993667584', '-3.466691383433957558203400370807477727711306952957414523938106880283577564127713146679e+22'); + BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 1 }); + T('-1.543237126110417', '-2306376.61505288494472138', '6.6911757431e-7'); + BigNumber.config({ DECIMAL_PLACES : 2, ROUNDING_MODE : 2 }); + T('-679730843323816689711820822622001556354.34', '0.000000000000001265121816937578415255', '-5.3728489559148505645776337439770904080651370050996160957e+53'); + BigNumber.config({ DECIMAL_PLACES : 72, ROUNDING_MODE : 0 }); + T('-1530724682451909893676509078079154.73796521841838721716', '-13062681299838756592125432251864.48745668', '117.18303825347135171318882550486022006997620174963871497285797580025764747'); + BigNumber.config({ DECIMAL_PLACES : 9, ROUNDING_MODE : 4 }); + T('0.0000000000000000002215783376893165306592038353870192152649', '-42051797263719797554394741006664.19360556448944', '0'); + BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 3 }); + T('-0.0000000000000000056478638069700252282277439647000544', '30458350475672388144010698070285', '-1e-12'); + BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 2 }); + T('-14776555475031', '-3007838302135524661203586405082215746332704522551', '1e-11'); + BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 6 }); + T('0.000000699367831101856240231002717990963392410922923601341', '337615.7416', '2.071491e-12'); + BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 0 }); + T('3708413174148246392059623903.146227235281104189453143244294', '-0.0000000000000008364936396763804174385604833163', '-4.433283169472685579224523369601497080227942160571944829626681007102694489193316457249257447974620118e+42'); + BigNumber.config({ DECIMAL_PLACES : 99, ROUNDING_MODE : 5 }); + T('20964219130028366790348745', '-5140671536036869364980193050.55', '-0.004078109053081116657293014769115691847406069818077643317121119583764646360828077134385840930539901'); + BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 0 }); + T('-35874739427124479026757362234424342.5147902', '12.231229356', '-2.933044453910613024625663166611323784483058302974398087151690232763876560242633389794477172585528940677318455e+33'); + BigNumber.config({ DECIMAL_PLACES : 73, ROUNDING_MODE : 2 }); + T('1247354405068407468295934441.96903978322639871', '44455128617130727159614005', '28.0587289671622058453323341248094867383557419293146599023247495460194952166'); + BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 0 }); + T('-0.000000000000000041', '12641', '-3.24341428684439522189701e-21'); + BigNumber.config({ DECIMAL_PLACES : 96, ROUNDING_MODE : 6 }); + T('520036441848903948696.8384700224744368744720010219', '21186194968377.84', '24546004.727375615939845100895692057616489867939937362153778422978015915361795535164155540919289791292695'); + BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 5 }); + T('7685267837631132.61807033', '18.95', '405555031009558.44950239208443271767810026385224274406332453825857519788918205805'); + BigNumber.config({ DECIMAL_PLACES : 71, ROUNDING_MODE : 5 }); + T('8487131435696960347200653554092310144755975718046565506850', '-20330', '-4.174683441070811779242820243036060081040814421075536402779144121987211018199704869650762420068863748155435317265125430398426e+53'); + BigNumber.config({ DECIMAL_PLACES : 9, ROUNDING_MODE : 5 }); + T('-48593426924187279257266827298265477.13166189800', '1298.04450401437', '-3.7435871246252220784764543701337077298448e+31'); + BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 2 }); + T('25742557689900465549015734223240765339.6081311899470726150', '0.00000035176595320', '7.318092457704194195737682956418866218917553613300365481476619494509964985434525560559565831227807410214138939016e+43'); + BigNumber.config({ DECIMAL_PLACES : 85, ROUNDING_MODE : 3 }); + T('-80349767.383', '-76465355.365309107874047', '1.0507996333651144806823215162643809043930020540937357346717534770956776631114957608428'); + BigNumber.config({ DECIMAL_PLACES : 94, ROUNDING_MODE : 0 }); + T('-720918157553221.5534128617682451021902484', '886.1600033145472386747549', '-813530462734.4231341729303684657319385070909227361625790329315655024971349661169585714350764283432901044316'); + BigNumber.config({ DECIMAL_PLACES : 72, ROUNDING_MODE : 1 }); + T('-425033.0667115', '140765.1648264', '-3.01944779616232565360740871838743735719031853660839525144745445829071485'); + BigNumber.config({ DECIMAL_PLACES : 55, ROUNDING_MODE : 5 }); + T('-8135821509630428945348107453152546376154.882392', '-3112550578769.74862526932115118119930087124', '2.6138760812832007336319028765302859550106848231577886768202032565043118641039398178e+27'); + BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 3 }); + T('-531742441771349578541245193675455292168000590280167.44', '-0.00764379118981424237664876316390882401565448382139252376814404', '6.9565275733843255185695016972840382847570250634685453690143785219241992913608419252525424964938194838191792911e+52'); + BigNumber.config({ DECIMAL_PLACES : 30, ROUNDING_MODE : 6 }); + T('0.000000000000000000074590513117417027422364725169776', '-46895045444034069521.111915218063471055105338207453369993829', '0'); + BigNumber.config({ DECIMAL_PLACES : 9, ROUNDING_MODE : 5 }); + T('0.006792814170816870077685', '-1697052154906429529139107604360', '0'); + BigNumber.config({ DECIMAL_PLACES : 72, ROUNDING_MODE : 2 }); + T('-523239316422658564260578461873', '2253.4675656873', '-2.32192965361395090311713280107388393931550533255997992805879404589752364696433161106599503406402106e+26'); + BigNumber.config({ DECIMAL_PLACES : 85, ROUNDING_MODE : 2 }); + T('0.0000000000000000008950208541030132360488918888049', '-630175132180377.8', '-1.4202732040635768535863976870227615952476933245990586e-33'); + BigNumber.config({ DECIMAL_PLACES : 48, ROUNDING_MODE : 4 }); + T('-8041797', '-347.1', '23168.530682800345721694036300777873811581676750216076'); + BigNumber.config({ DECIMAL_PLACES : 62, ROUNDING_MODE : 1 }); + T('283238368357281391325815972970092712804079971', '15751079791938020080106094367.62', '17982155642577162.80712894052764518565601791527146014173446447120250703284587996'); + BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 2 }); + T('-0.000013912807863280215627728387074361954', '-4095279098.581868309703264', '1e-8'); + BigNumber.config({ DECIMAL_PLACES : 19, ROUNDING_MODE : 4 }); + T('0.003567219', '-81547060553.4545313968434', '-4.37443e-14'); + BigNumber.config({ DECIMAL_PLACES : 37, ROUNDING_MODE : 3 }); + T('0.000003592650064486776188', '-102623211740139453848094112274', '-3.51e-35'); + BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 2 }); + T('0.000000000000000066660315006768198273280034892', '8134114032937925625529010132696268541', '1e-8'); + BigNumber.config({ DECIMAL_PLACES : 22, ROUNDING_MODE : 1 }); + T('-2.29306986997868829082421602792545127020056551566', '-189003.758266302914163168893013258129906795171402950623', '0.0000121324035617735911'); + BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 2 }); + T('0.0000000000008282395016874', '177001696701294272338204603', '1e-12'); + BigNumber.config({ DECIMAL_PLACES : 29, ROUNDING_MODE : 3 }); + T('0.00000000000000000045143442524680428467594742039178125242589041162296749748826', '48.8838659', '9.23483478e-21'); + BigNumber.config({ DECIMAL_PLACES : 83, ROUNDING_MODE : 6 }); + T('-3733417243902664198.13023941405535293221232879525416', '-959.079', '3892710865218260.64185561295164981501233196514078001916421900594215909221242462821102328379622533702'); + BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 4 }); + T('594177346114900.121022415301944560506449496999111928', '12525605832754558641574079217732126761911651638148', '4.743701454832002187217678631516e-35'); + BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 6 }); + T('4992278162383072561186288289113199.716281380410535688', '4.2', '1.18863765771025537171102102121742850387651914536564e+33'); + BigNumber.config({ DECIMAL_PLACES : 63, ROUNDING_MODE : 4 }); + T('2822.14', '94329104.5496367223916', '0.000029918019613076763237578118406028698168774402148318896814669'); + BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 3 }); + T('-0.0000000000000000001110503896009121755680689190900384427', '2328987821070715531750813', '-1e-12'); + BigNumber.config({ DECIMAL_PLACES : 23, ROUNDING_MODE : 6 }); + T('153752792737', '2483.2', '61917200.68339239690721649484536'); + BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 4 }); + T('11.60161405461718555', '284550672.49642250544934058', '4.07716978942056307283464697962903921909474830617156492e-8'); + BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 3 }); + T('189.688', '-24754517032224622831526449966562258743085549225563672714', '-1e-20'); + BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 3 }); + T('-0.0007441266572355504', '3.34684614329', '-0.00022233667918300622134004329574327475866716300378990045760849570887894150933041769117684202718'); + BigNumber.config({ DECIMAL_PLACES : 94, ROUNDING_MODE : 1 }); + T('-13535294945545412124035063763.77', '154.5024977570741433787379018192789895664', '-8.76056707304958572975370146622824195219447623315167572318757036142049924888057525660130840269890650882880343977076154563e+25'); + BigNumber.config({ DECIMAL_PLACES : 89, ROUNDING_MODE : 6 }); + T('11983453407535022649614764881696589382224754704463.8684062208', '5802376340', '2.06526648830486280550612559572387015872616678711740859025714281745468443710081721448629786740099660615946879446981889492538500183e+39'); + BigNumber.config({ DECIMAL_PLACES : 52, ROUNDING_MODE : 3 }); + T('3178038020148431820455312016467389665739054.4576778458', '21054959864871703366821506201711538207350457986704613695', '1.509401129493816267960052581506929546499e-13'); + BigNumber.config({ DECIMAL_PLACES : 26, ROUNDING_MODE : 0 }); + T('-903599029877560268530347275265207.87', '-8225110328731212019948660254554280832763', '1.0985859079861698683e-7'); + BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 5 }); + T('-0.000000176707618136247054976126963225805867552', '-59785395331783158900858443125.5141498726544387028', '0'); + BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 0 }); + T('-304719819875', '-15834235671935165309709902051659343938622588678', '1'); + BigNumber.config({ DECIMAL_PLACES : 40, ROUNDING_MODE : 0 }); + T('851777284247449228622262256799930786281959157570022219812934', '-265201007359497920383609044818696905113.345687881993778', '-3.2118176802126827969944145846417028592839421242620132655414958e+21'); + BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 4 }); + T('1094076851200232612485495', '45170230412955.87341467888498221131321290', '24221192612.876862966820444934376959326917921982087707316670750434'); + BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 5 }); + T('-266009630563.5751817996772', '3', '-88669876854.525'); + BigNumber.config({ DECIMAL_PLACES : 89, ROUNDING_MODE : 6 }); + T('-9854650515088757094838236690274767247758517272568094336', '-0.00000000000000000022781292734166224423171119487999190', '4.32576440243413112255272208081733670067732321142244280276402802126595381401029065133890157642846933655514108837510716979328849339257369661938462709437434111231587e+73'); + BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 4 }); + T('-6132.53', '9148419661.3', '-6.7033763502805478804013771877489723352e-7'); + BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 0 }); + T('-1358616615337255527426604965418371026149417529691141', '-411131303075406997.6936', '3.304580811955510499674020126518173701108868436644291184112191274708277758126412610036977470571487191443315381609149755e+33'); + BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 2 }); + T('-1666.62', '-41.9029412763736208', '39.7733416613334504072586922905645360163057171834688429688965737440585'); + BigNumber.config({ DECIMAL_PLACES : 48, ROUNDING_MODE : 4 }); + T('-0.45978697415761062736019244197731022477008535480011010689', '-564466415549217929918544.45405143594', '8.14551515363840256607739e-25'); + BigNumber.config({ DECIMAL_PLACES : 7, ROUNDING_MODE : 6 }); + T('-2929430205196483609917236829698354', '-0.00000012825995', '2.2839789078324789694033381657316676016168726091e+40'); + BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 5 }); + T('-0.00000000000004940541829384556296990127644311117691929920190835131349', '1.83587', '-2.6911e-14'); + BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 1 }); + T('1663533737152073150809636816464535', '-78.59384606968353399', '-2.1166208556292523684841659407900603043163901831451164886205587911132360575237341769309937351851240893561863173992069e+31'); + BigNumber.config({ DECIMAL_PLACES : 82, ROUNDING_MODE : 0 }); + T('-45109676317097561400.602', '-145051085.8603397643566869612956643715100627722122277', '310991648559.8096681714427995304888806425341985867939466056887318610557801235490219056919231184'); + BigNumber.config({ DECIMAL_PLACES : 32, ROUNDING_MODE : 3 }); + T('-0.144741146637846045233543788664754684233', '38.70763164', '-0.00373934390985245113367891367752'); + BigNumber.config({ DECIMAL_PLACES : 73, ROUNDING_MODE : 2 }); + T('-213267319781136840828.81841', '3597329340433289539097389.10090419', '-0.0000592849026593292991850793512666592236518565710292148200766842011917685'); + BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 6 }); + T('12555.00260521758264', '259293850', '0.00004841997836'); + BigNumber.config({ DECIMAL_PLACES : 26, ROUNDING_MODE : 5 }); + T('0', '-247824935559712858127074692451936153866797521949546499987', '0'); + BigNumber.config({ DECIMAL_PLACES : 71, ROUNDING_MODE : 3 }); + T('-0.000000000017234737', '6363218480232.8367', '-2.70849367400148788714459129576630236022401201401e-24'); + BigNumber.config({ DECIMAL_PLACES : 64, ROUNDING_MODE : 4 }); + T('8780588588869959337251863409776071.80424', '-0.0000000000014222373755692', '-6.1737855717340015690565505752294571901679865271128752812921622101855544823960081829660763501280574499788473773e+45'); + BigNumber.config({ DECIMAL_PLACES : 77, ROUNDING_MODE : 6 }); + T('1202044426514841285067064.0', '145353362935017823272770950937196467165.223443222', '8.26980815746403762433534151431755002946643158949517393353190134e-15'); + BigNumber.config({ DECIMAL_PLACES : 92, ROUNDING_MODE : 0 }); + T('0.000015383640', '3.18383325016056515707686799850106296', '0.00000483179827311125089585459680057859870112712042013390296318998786813132002765219573826189'); + BigNumber.config({ DECIMAL_PLACES : 24, ROUNDING_MODE : 6 }); + T('45364.765582867720679', '2505216730726952225381.591530531927253863209', '1.810812e-17'); + BigNumber.config({ DECIMAL_PLACES : 77, ROUNDING_MODE : 1 }); + T('16706416155831105738957243800950347579146352.7664272078404', '-15801636784314764426537155863046169373', '-1057258.58554187599826669137387590751139542741145195067853557546643523667385366401064'); + BigNumber.config({ DECIMAL_PLACES : 50, ROUNDING_MODE : 2 }); + T('-924707.21688529226667444411037974980141732477682106', '-224402928790739496518320930648809901676927004.4', '4.1207448667e-39'); + BigNumber.config({ DECIMAL_PLACES : 86, ROUNDING_MODE : 0 }); + T('-0.0000000006242159873954031688369074037997865246112334124', '-10264.3', '6.081427738817095845180941747608570721931679826193700495893533899048157206e-14'); + BigNumber.config({ DECIMAL_PLACES : 46, ROUNDING_MODE : 6 }); + T('257245.160', '0.00000000001291022197451592060663879005489083638559539086089039557', '19925696127284877.2140183030202499640385557595126820061218721467'); + BigNumber.config({ DECIMAL_PLACES : 39, ROUNDING_MODE : 1 }); + T('-0.001204285809516927', '-16890909222793486497', '7.129786760630979e-23'); + BigNumber.config({ DECIMAL_PLACES : 30, ROUNDING_MODE : 4 }); + T('-167715187686647891294529344766156.262451454123628', '-2801176082730364487.3454119660', '59873132831825.557950786942831650585385474196'); + BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 6 }); + T('-9402008294809.218468841889988', '772569013.18863540085189714799950812258588705943569080948', '-12169.797305232540922377133862643439160080727303691466952493558'); + BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 1 }); + T('-0.0000000000000000000519557604552289148573453', '65086901.35412863036802', '-7.982521e-28'); + BigNumber.config({ DECIMAL_PLACES : 30, ROUNDING_MODE : 5 }); + T('71566340268678504341888350.28557064701580670', '-24.1035117', '-2.969125045321860894729640174612840626696179710610383797e+24'); + BigNumber.config({ DECIMAL_PLACES : 5, ROUNDING_MODE : 4 }); + T('455763207112884674.0643198', '-0.00000001156426434172901828270543736814', '-3.941134460825907916686687297851e+25'); + BigNumber.config({ DECIMAL_PLACES : 92, ROUNDING_MODE : 2 }); + T('-216340160216652.167517103015371520320504576122', '27153293.0739938991521690277527954349191', '-7967363.65004111527420646201345855398721703089346456189966028029972695571949603659856337560035292534'); + BigNumber.config({ DECIMAL_PLACES : 98, ROUNDING_MODE : 5 }); + T('72929941665984.598885280816971615', '-3288295196863.2055', '-22.17864799229535715800361709629244268816136234234377026368285173191990763390155503877219155599773926'); + BigNumber.config({ DECIMAL_PLACES : 27, ROUNDING_MODE : 5 }); + T('-208849615990706743659818282970.370397342055437315746876', '-0.00000000000000000005533218', '3.774469323108302323527073810762026678545024564652013999809875555237476636561e+48'); + BigNumber.config({ DECIMAL_PLACES : 37, ROUNDING_MODE : 6 }); + T('-8601734511522478.1611637791900687131738653313091', '0.000000001308739965094750507087269496807181975342111768527447736197871', '-6.5725313973274495964673955593556821550145738948627060769657084e+24'); + BigNumber.config({ DECIMAL_PLACES : 70, ROUNDING_MODE : 6 }); + T('4690.08177', '-153.7', '-30.5145202992843201040988939492517891997397527651268705270006506180871828'); + BigNumber.config({ DECIMAL_PLACES : 55, ROUNDING_MODE : 1 }); + T('0.000045534097599795625379088782042993008874734445184308', '-221381645', '-2.056814493351317602644464135361945154700356e-13'); + BigNumber.config({ DECIMAL_PLACES : 87, ROUNDING_MODE : 1 }); + T('-9257746648135675560285366734014321238513113635818328', '0.000000001688971424354875053059621839175', '-5.48129264630501027446190896008315133533114168046699834517239592613977291740331082888161684360902575877236308292547167194915292314747658072690018895e+60'); + BigNumber.config({ DECIMAL_PLACES : 70, ROUNDING_MODE : 1 }); + T('-71879677346223956249925412.237057479235032358135', '9592996.68319302', '-7492932575715107271.0488585740293462533529381937739815092394884015917462763001313062945993'); + BigNumber.config({ DECIMAL_PLACES : 90, ROUNDING_MODE : 0 }); + T('673013280310051', '2646188524609059034750626867043201451715480110745', '2.54333080977093353608292839140221555847523612798053459934e-34'); + BigNumber.config({ DECIMAL_PLACES : 43, ROUNDING_MODE : 1 }); + T('-37391146770901318922073915062043253418156240674231966776', '-0.377392359145418812898258331304876547646153600428657770920', '9.90776465521750671579002459833852973105457673647834347457894970963595573594856679877267498369712253e+55'); + BigNumber.config({ DECIMAL_PLACES : 5, ROUNDING_MODE : 4 }); + T('0', '-1057817.28862', '0'); + BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 6 }); + T('-30053.49699', '62926872710082113.39973602372340789682800332318148184', '0'); + BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 2 }); + T('-0.00000000000701586226100438349070826401693', '0.0000000018882719221498357441465404661', '-0.0037154936101664227048530258989385614409631'); + BigNumber.config({ DECIMAL_PLACES : 36, ROUNDING_MODE : 1 }); + T('-0.678525953823435944174324400605592707', '-357.1', '0.001900100682787555150306145059102751'); + BigNumber.config({ DECIMAL_PLACES : 46, ROUNDING_MODE : 5 }); + T('0.0000000000000000000182701198320864627982069694892636234489800419636', '0.000006393172701188154407', '2.8577547777946009287133771085218e-15'); + BigNumber.config({ DECIMAL_PLACES : 80, ROUNDING_MODE : 0 }); + T('-1201914011702159323537662546733.597189', '-467840137859313195848152555257.565526023266744467', '2.56906989041541697746110123591885306583844485308307293725182957185042538622400828'); + BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 4 }); + T('139592236802245692289252849780094006877123.13881106202', '2585.280319726769945535609082460957', '5.39950100331861698546584074153230136879729906298113565752375135954626108427452520233190320530079426389174890693149e+37'); + BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 1 }); + T('-895170083971138589203712544185399054442917192623318', '-0.000003502258111551637847481643025927160261055601386124983284', '2.5559797577984424918470954298386752245726802584457072713106972242e+56'); + BigNumber.config({ DECIMAL_PLACES : 96, ROUNDING_MODE : 2 }); + T('-40431597.91947608248641454794200778208342384', '622.71751234426812499766084332865810899688349864558797', '-64927.671244170109105137167388159585218336945661028432501409483756970130666640456046333483019400746287'); + BigNumber.config({ DECIMAL_PLACES : 77, ROUNDING_MODE : 2 }); + T('-934892.2', '402750149113355843063.43422390460', '-2.32127089725017179438360028145743823591884001301945711774186712e-15'); + BigNumber.config({ DECIMAL_PLACES : 52, ROUNDING_MODE : 5 }); + T('0.000000000125664321461616615334255735', '70176889041819143010970.595', '1.7906795695479166985e-33'); + BigNumber.config({ DECIMAL_PLACES : 64, ROUNDING_MODE : 5 }); + T('0.0000000203691205662848665373766215358980302867', '1477998213.71936537', '1.3781559664423552161765365475672187634849224776e-17'); + BigNumber.config({ DECIMAL_PLACES : 89, ROUNDING_MODE : 3 }); + T('-358.68', '-1021.561810787167533220092752870382468653', '0.35110944459015949765358525681071494213733010418104923396023358754079290260322039254304644'); + BigNumber.config({ DECIMAL_PLACES : 19, ROUNDING_MODE : 2 }); + T('-4018349366961177732739424469495558461051683311650730286763', '-78811777801.816737857103576753', '5.09866606113857811769781968152402700905594792768193148709782334248e+46'); + BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 2 }); + T('-205165177654170172389930120190188.2', '-695951097838436.715746744416134608039318216994160606437072', '294798267136003209'); + BigNumber.config({ DECIMAL_PLACES : 1, ROUNDING_MODE : 6 }); + T('-2850331473521261308881655118.3443917118829', '-10.21794123974453070428905176282599189446170574143919', '2.78953598053038460036427044e+26'); + BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 4 }); + T('256298451255.4030365797651583126559', '1585630833.04858776372324316577636838105', '161.638160606800839009380115889267188434054850962509811728493475273761907712360672665'); + BigNumber.config({ DECIMAL_PLACES : 7, ROUNDING_MODE : 1 }); + T('88177649804448.285235381356775207514183788131857377525288', '0.000000000000000054700486157782', '1.6120085212789947923120646579744342366e+30'); + BigNumber.config({ DECIMAL_PLACES : 72, ROUNDING_MODE : 3 }); + T('0', '-1226962614687715.42416', '0'); + BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 4 }); + T('-0.000000009887749657448858208654042781460188', '5612199856791342.72760075529307883872859967029721', '-1.7618313513e-24'); + BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 6 }); + T('-4.56750916876632', '15.1', '-0.302484050911676821192052980132450331125827814569536423841059602649007'); + BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 6 }); + T('1437120172642436393061', '-442400520395.57', '-3248459498.5499638861626808'); + BigNumber.config({ DECIMAL_PLACES : 83, ROUNDING_MODE : 1 }); + T('55010429541901600090701044137.30499490824202', '7395954439610224303938.810922', '7437908.11464229570123270141116154029911783556110156028784363032923437377057701338835849933'); + BigNumber.config({ DECIMAL_PLACES : 5, ROUNDING_MODE : 5 }); + T('2903034043437699745091431259427608784719433889138614787', '111.58823605', '2.601559220039037210940329457271323884073023564152499914887e+52'); + BigNumber.config({ DECIMAL_PLACES : 85, ROUNDING_MODE : 6 }); + T('-0.000000000000037294965843016026197169517880341', '-0.00000000003048586785128866853988246544783596458432673705774418496903', '0.0012233526047197482089158865473243921886439502680292026576442563596556356293748369172'); + BigNumber.config({ DECIMAL_PLACES : 53, ROUNDING_MODE : 6 }); + T('564.485354582604471454113173530455452', '-149680535746472408203037263530852928547.25902816623', '-3.77126759847202086e-36'); + BigNumber.config({ DECIMAL_PLACES : 70, ROUNDING_MODE : 0 }); + T('-17594.033117785589933523841128115761783130970606611590731742', '-15658681997037879581936246931621466507046570872509317157848', '1.1235960421901293e-54'); + BigNumber.config({ DECIMAL_PLACES : 9, ROUNDING_MODE : 0 }); + T('200377596526456574076692.972653', '-134.5', '-1.489796256702279361165003514149e+21'); + BigNumber.config({ DECIMAL_PLACES : 27, ROUNDING_MODE : 5 }); + T('-5710158133006294602665096578072464239642825934.499206731193', '-9899685915451947007218189521838324652009113852873361284.1', '5.76801949251095073e-10'); + BigNumber.config({ DECIMAL_PLACES : 1, ROUNDING_MODE : 6 }); + T('54.87', '0.000000000068307861606255', '803275036134'); + BigNumber.config({ DECIMAL_PLACES : 7, ROUNDING_MODE : 3 }); + T('-0.000000000000803640804839014385575545425103776', '835249350518300716158.81198', '-1e-7'); + BigNumber.config({ DECIMAL_PLACES : 48, ROUNDING_MODE : 4 }); + T('-27336772967.54933294246518821832363091371263937122844912', '0.000000000047862010055429464271603859678895514941565034144690478771', '-571158063271691838284.862854228326127036693245640710336784243541044182'); + BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 2 }); + T('0.000000000000000002115895823295045763032853731145322', '-199597862.47', '-1.0600794002055355593272019127677194307781306171219339511396e-26'); + BigNumber.config({ DECIMAL_PLACES : 73, ROUNDING_MODE : 2 }); + T('-1922125922582145324357704373604380121775097229.4', '-16990531167665931.726252472819341581808', '1.13129242612501366569849895414679665469000630822922545993744661151457530778018934023458067301534794686e+29'); + BigNumber.config({ DECIMAL_PLACES : 83, ROUNDING_MODE : 5 }); + T('-132.7', '-287895268270367424616830747.09442', '4.6093150747923767680017946568686046974956967041646188609957e-25'); + BigNumber.config({ DECIMAL_PLACES : 64, ROUNDING_MODE : 0 }); + T('1416266269343299776.5', '93299724.865279602420587443098855770369720926599948666', '15179747543.6108884643590326209280626064215759779663643277777203988692050799'); + BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 5 }); + T('-5339406761374017811732.88602378178403752697', '-4469140141720.249671766568242947740083901645002693987054', '1194727977.207442727694694005819478968302727811400860478354037090596908702789500682137'); + BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 2 }); + T('-6253463320645931839729398669009255185.754728521636100793', '199410057481802.1825874081306302190884190828', '-3.13598190563513181927085047490496e+22'); + BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 1 }); + T('-441350317401498959949158769', '-53783384178114902570547941319277531964', '0'); + BigNumber.config({ DECIMAL_PLACES : 30, ROUNDING_MODE : 6 }); + T('-12785562225540639653048.208552733869', '38158938422157746834376495468984.246171889621891362547016', '-3.35060742101684059309e-10'); + BigNumber.config({ DECIMAL_PLACES : 87, ROUNDING_MODE : 1 }); + T('0.0000025066276135990015625295257554586577026423831403', '0.00000888935644847151206', '0.281980774213414040251090628974510781472480770773981315600178785347302293772593658066861'); + BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 4 }); + T('0.00000000033896123924390456808086427417238299552671988101458027', '-24979399853350728356760719683594094225', '0'); + BigNumber.config({ DECIMAL_PLACES : 80, ROUNDING_MODE : 5 }); + T('-2503641852531763566974549316971734178103665141733944323232', '169.462750272899828875916', '-1.477399516117815163317850508929472217352089090657168712935496345603131554460603439227889964028002932438517295526484687083036502252141876e+55'); + BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 5 }); + T('-170847', '39094697925.3308', '0'); + BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 0 }); + T('6270077.92756774838684263325366473390232', '206.78349109', '30321.9463725891599988009142072790115709231785753'); + BigNumber.config({ DECIMAL_PLACES : 66, ROUNDING_MODE : 1 }); + T('84703267403711289741402809502578155102366055.073857', '-1046146334785502790186313678991043560880897482200177', '-8.0966939889034235764686891744655459841256967972765598470867e-8'); + BigNumber.config({ DECIMAL_PLACES : 66, ROUNDING_MODE : 1 }); + T('3545.1407579067497', '0.3459', '10249.033703112893032668401272043943336224342295461115929459381324082104'); + BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 3 }); + T('-3494.20', '-0.000000000480840756554490261421396556146719241216698163415392140095709', '7266854883596.01476020367444703'); + BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 5 }); + T('-16650762529824305578738973542416', '0.000000000000000094', '-1.771357715938755912631805696001702127659574468085106382978723e+47'); + BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 4 }); + T('-135.0', '4225705320433704.8397098115330815', '-3.194732944277910240197793697326411481943087817037607196e-14'); + BigNumber.config({ DECIMAL_PLACES : 21, ROUNDING_MODE : 2 }); + T('-2995506074584621266599631960111312877166732494844124', '82804233.3084102547261584', '-3.6175760041490220642358349515453623086913834013850308361387469586e+43'); + BigNumber.config({ DECIMAL_PLACES : 48, ROUNDING_MODE : 6 }); + T('-347688783540526823654.9899', '491590298897394420180889810517081629.2708', '-7.07273484282278380762870567598523e-16'); + BigNumber.config({ DECIMAL_PLACES : 22, ROUNDING_MODE : 4 }); + T('68.97874788835555463770500278854830624641240124220', '6732686000571465869842107.60409913862949426908699447', '0'); + BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 1 }); + T('1060728314557064738109126481120466266837.162', '0.00000000000000000288998199547', '3.670363054924699191863531381976240623202494002767940365212921691005181091181007474458305920000929354440342526567553585e+56'); + BigNumber.config({ DECIMAL_PLACES : 93, ROUNDING_MODE : 2 }); + T('2214963945079.9484628235968014462503635218584005808416855', '0.0000000000000216336715767932185892098107689', '1.02385022219528158743570987586401555916180399907739137473573213383859451514006190585854291485826227631266698113764870495e+26'); + BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 4 }); + T('-0.00101149645199419076694756', '-10063665763193914407065501.293496469025780457740', '1.0050974225451335469535999549511283458e-28'); + BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 3 }); + T('-0.000000000000000000019185475868122708030208927', '15879740999105202756056360329717870685504695114554.8046794', '-1.208173097358e-69'); + BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 6 }); + T('801572915782.4912832617616401', '-2849.6523834657892042113', '-281287963.55420954745'); + BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 4 }); + T('1833387173877945422672', '-0.0000093322172642483', '-1.9645783225618277278491678904374735968217783e+26'); + BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 1 }); + T('7350501756971752135823797362779270090656932', '0.00000005112', '1.4378915800022989311079415811383548690643450704225352112676056338028e+50'); + BigNumber.config({ DECIMAL_PLACES : 35, ROUNDING_MODE : 3 }); + T('-28190035525877869816543636286.9356251154376570729358300191', '-1810804.076774988385639', '1.5567689452126620516791203797362577944674444340957666224e+22'); + BigNumber.config({ DECIMAL_PLACES : 1, ROUNDING_MODE : 2 }); + T('1844473405308469535530560487879620652080615603320173696.775', '-0.00078849996389950871004348158085', '-2.3392181227081712107359969447747777792439216175540029824692e+57'); + BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 2 }); + T('-231693111992827834475921395.7005408572831597652167', '-0.000000004116', '5.6290843535672457355666033940850548417e+34'); + BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 3 }); + T('-3', '-11931468133051028511674830403083922434836101044', '2.5143594791e-46'); + BigNumber.config({ DECIMAL_PLACES : 89, ROUNDING_MODE : 5 }); + T('14659907264763.6879596805197248324', '5122294726480220154273.78922188259848198827666718053671', '2.86198043017279269220526604594116030762403468944452992719931176615831789682673637e-9'); + BigNumber.config({ DECIMAL_PLACES : 60, ROUNDING_MODE : 5 }); + T('-5', '-5510812943513', '9.07307152547375337530703852788484844697714007432e-13'); + BigNumber.config({ DECIMAL_PLACES : 23, ROUNDING_MODE : 0 }); + T('-0.000000000004786329685610511015691956495', '-69867798220438028219748793388549983833832.353842034', '1e-23'); + BigNumber.config({ DECIMAL_PLACES : 87, ROUNDING_MODE : 6 }); + T('-332231721', '-0.000000000000000000011894726310054691678991438851056154637779', '2.7931010124979698348379903328288146229762553558696709423192367676245866471114772369087445551509132881686983022776263e+28'); + BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 2 }); + T('-0.000000000000002075858352050927127738375993195590601282117912490', '5863967368300060684657653.554829374819243602226788567474', '-3.54002371035142e-40'); + BigNumber.config({ DECIMAL_PLACES : 35, ROUNDING_MODE : 2 }); + T('-92.0002753297975338659777545', '-110761204179480957979884152503734.5112', '8.3062e-31'); + BigNumber.config({ DECIMAL_PLACES : 71, ROUNDING_MODE : 3 }); + T('739235053', '6945061467493074831466926760549620.8163260376607', '1.0644039026292996846558102516170156946325522444e-25'); + BigNumber.config({ DECIMAL_PLACES : 35, ROUNDING_MODE : 1 }); + T('233077970564414552492254389124', '-6.515', '-3.577559026314881849459008275118956254796623177283192632386799693e+28'); + BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 0 }); + T('-97801384199.048951866736152086672526808991949760886076422217', '32622656062133512.2589818437558403820526385273270', '-1'); + BigNumber.config({ DECIMAL_PLACES : 19, ROUNDING_MODE : 2 }); + T('-232.0155758670362061964340213', '3073.895743315', '-0.0754793250134183938'); + BigNumber.config({ DECIMAL_PLACES : 62, ROUNDING_MODE : 6 }); + T('0.000000000000000020232521680689204838655364975887876983246569651572', '0.223057095793266', '9.070557297778650701453174445089199332424409847e-17'); + BigNumber.config({ DECIMAL_PLACES : 7, ROUNDING_MODE : 2 }); + T('0.00003846089235782156159638', '-0.0121713956386476574058', '-0.0031599'); + BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 1 }); + T('-43168211675418986572265954868784979849387435.3022223821157', '0.00000000000000229608704789', '-1.88007731305695129798182639705239036242954603787717035880274202020075225920706589365891377490252735193307793473195819918257532974424203375e+58'); + BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 4 }); + T('-6342771513789412966690370629471313.3491415', '-553339916.277586362091095605737495125123674158237', '1.1462703714668440334977516e+25'); + BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 2 }); + T('1455694.8185707586702590872957830299613527235225093277', '-1444311.07240551629454597', '-1.00788178'); + BigNumber.config({ DECIMAL_PLACES : 52, ROUNDING_MODE : 2 }); + T('-180415510015366169187018315.93', '422', '-4.275249052496828653720813173696682464454976303317535545023696682464454976303e+23'); + BigNumber.config({ DECIMAL_PLACES : 22, ROUNDING_MODE : 2 }); + T('-89238.062538', '-0.000000000000000007569681094769494144933559664120779522', '1.17888800625513545335286163213398750962453703e+22'); + BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 1 }); + T('49439.6679315611533062489413231', '-208785626399956', '0'); + BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 3 }); + T('-624543459250761.7424759511364533556458', '4477531294244125365082.7698', '-1.39483884803577698495727079613753595389155245e-7'); + BigNumber.config({ DECIMAL_PLACES : 52, ROUNDING_MODE : 3 }); + T('-356908235519.71444083032467453390227880319955148184157', '1.5306788853374988708482675402655598', '-233169895357.2616012348273715319952073899926462999398380558436985'); + BigNumber.config({ DECIMAL_PLACES : 64, ROUNDING_MODE : 0 }); + T('44066683550405105669624884328870069022314879447', '-40770501792465902237453034227.3256094462036', '-1080847220736152781.3481128021472592814155077674569111667555300023690897393571703604'); + BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 0 }); + T('-2786342133225766496.3702338301569', '-165650538939124201836345652088473601.4574844690271527', '1.682060409262981146172971109824e-17'); + BigNumber.config({ DECIMAL_PLACES : 56, ROUNDING_MODE : 5 }); + T('-27919.220476', '-4179806.6616764499018', '0.00667954829872491564251784270468808686308419116657243607'); + BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 3 }); + T('4717013884021421661239642619803336709657446', '-4396945714.850835', '-1.072793295602796604728660784784714449361778834434e+33'); + BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 0 }); + T('4857571399.040444595942662244', '235459.415989501', '20630.1853702764679928756592238265024244813146438562020490437565058468946493729797'); + BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 6 }); + T('1896453874608071174280167452575.78153057727', '84295814589973288303632462340.69692148823798850938', '22.4976042266474303187971208456534528011604059650531484706610682'); + BigNumber.config({ DECIMAL_PLACES : 32, ROUNDING_MODE : 2 }); + T('1349.21861774471', '600801146756400414339331720940860929.19297368', '1e-32'); + BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 6 }); + T('-380710280449994245527205.803445644072373925', '-6282699867838372405.6862362783503435232742435', '60596.604717484545128564924856036354467001617319065528212815689140862146569868287761955'); + BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 0 }); + T('-16408382343680930801622921026173292010.95184', '10.28420', '-1.5954942867389715098522900202420501362237062678673e+36'); + BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 4 }); + T('-572210837.06281547085212132889004786845500563257764747902', '11174933632587.888635200676212120616579965146776824585413', '-0.000051204853279321267251539617856120070847316696999394'); + BigNumber.config({ DECIMAL_PLACES : 5, ROUNDING_MODE : 0 }); + T('51359578790378880398.04793830026219449183', '-455536654230074.23174939755093407387209616', '-112745.21669'); + BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 5 }); + T('-56161288675323037889788006369690.5728858', '-1344804.735014362693770845939698743390913699834', '4.176166785635479476729192379832848688266908371343918271530172573425201796828236768822077194256e+25'); + BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 3 }); + T('-0.06647', '2488734728502626956945778696723078815802336866604', '-2.67083507289e-50'); + BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 6 }); + T('-15709.702083869748710483750', '0.17343238577', '-90581.1334724035302676200393250232343845822654394774978825455616633532285173730041343'); + BigNumber.config({ DECIMAL_PLACES : 77, ROUNDING_MODE : 5 }); + T('-0.000008986079351526333799928', '57158779759798.7587388', '-1.5721258202657563972830928281622437814997897501794197664807e-19'); + BigNumber.config({ DECIMAL_PLACES : 86, ROUNDING_MODE : 6 }); + T('-0.00000000001388422828798892162774186257473892', '-69686337968148273523849327314060722575577', '1.99238885164765353309613753258918e-52'); + BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 6 }); + T('99883611200513084646975210060.60952323092198205344133', '6184477507904180826.367614', '16150695199.85400049006270290779814055968601439594063052012683068413'); + BigNumber.config({ DECIMAL_PLACES : 67, ROUNDING_MODE : 0 }); + T('-0.0000000000000000000150207809788679934221011249575790605', '-28817046896.758970', '5.212463661763124150056312253142344531e-31'); + BigNumber.config({ DECIMAL_PLACES : 40, ROUNDING_MODE : 5 }); + T('-527083357783510.481321402212159156076', '4756796954943078601565972017123.3001236870', '-1.10806360409347708706496e-16'); + BigNumber.config({ DECIMAL_PLACES : 63, ROUNDING_MODE : 2 }); + T('-11916867.623189151', '-7.4112922348688463778178290807622357293427', '1607933.845480057142567124343022113195564935260597336976958134855837379'); + BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 5 }); + T('960299171557437856346556589204892.36952339465963106510841074', '23606941669264716370', '40678677696217.99646471'); + BigNumber.config({ DECIMAL_PLACES : 59, ROUNDING_MODE : 2 }); + T('1047.5896930595555356981255029478888260642', '-103799285857826471881446418054582493405323846656553543983', '-1.009245e-53'); + BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 0 }); + T('-399488979125776633057389835971328054031.4924', '19142186348378884.30958', '-2.0869558568455196441280685191066041366482575030706546217893406693976412457e+22'); + BigNumber.config({ DECIMAL_PLACES : 100, ROUNDING_MODE : 5 }); + T('-832487933142277526.9', '-65167.578', '12774572244226.6847311710740577162465666592672816534627080969619585984920292725931904358943645258689834997397018499'); + BigNumber.config({ DECIMAL_PLACES : 27, ROUNDING_MODE : 4 }); + T('-0.00000004156549255089827512480694974', '-168623120040090001730204587.75804171', '0'); + BigNumber.config({ DECIMAL_PLACES : 25, ROUNDING_MODE : 6 }); + T('-0.0000007632302681012970461950055613', '-391242138.5231094072110969254393', '1.9507874867e-15'); + BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 5 }); + T('-936321317324817171462176644.2', '55757247.767120980969192424103202722050525215437039061', '-16792818060810895262.02308790888001520822277412773933215635853015603'); + BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 3 }); + T('65299.6202353082208802901933150582868420', '-0.00000000000000005406664881119624429', '-1.2077615622772948225517086563246e+21'); + BigNumber.config({ DECIMAL_PLACES : 66, ROUNDING_MODE : 3 }); + T('2.8', '0.0000898339717307499317300278617758244559235559513474777516251', '31168.609670205279151887942612009240993041965427036466080808192563385626'); + BigNumber.config({ DECIMAL_PLACES : 60, ROUNDING_MODE : 0 }); + T('-1298869866494.475594214516700374497540945560324132893', '-0.04110811957006315804911437246309620418497699', '31596431071986.395539936717651006392482754034827777746817636445878750215482'); + BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 1 }); + T('1.3918628657223935652424680689538914172564804555523212063755', '-934909861878189027772780342196426148', '0'); + BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 1 }); + T('31720163278713.406', '385.764105', '82226839842.22276460895707235384173444545857888981143022625186964971766878102875849478011957592581093049079'); + BigNumber.config({ DECIMAL_PLACES : 64, ROUNDING_MODE : 6 }); + T('1.7896331', '1387.88263921082', '0.0012894700527543337354754038117822982353769870061886577135541986'); + BigNumber.config({ DECIMAL_PLACES : 45, ROUNDING_MODE : 4 }); + T('-0.000005151738661445534791677035190155609582464704943', '6124729.17021146886074923028312971419', '-8.41137382286515115853084495840961e-13'); + BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 2 }); + T('760605159957971964.526993692017563512354923347040', '-1981158411651079799305483187381.02492550046373', '-3e-13'); + BigNumber.config({ DECIMAL_PLACES : 25, ROUNDING_MODE : 5 }); + T('2', '2061430867494832196328135394348457', '0'); + BigNumber.config({ DECIMAL_PLACES : 64, ROUNDING_MODE : 1 }); + T('4057584984469066272218033679335984', '-1', '-4.057584984469066272218033679335984e+33'); + BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 4 }); + T('-214768779586268.327071212443153527207616306729529743416124443', '1587502.626505197089431660056901151238655', '-135287196.380311139858555320270185719711243345481870709141810842'); + BigNumber.config({ DECIMAL_PLACES : 36, ROUNDING_MODE : 5 }); + T('34257185.91', '32478274032798474.1', '1.054772364917085061474363969e-9'); + BigNumber.config({ DECIMAL_PLACES : 5, ROUNDING_MODE : 2 }); + T('-759.891819055675897396308244822485318435449', '0.0000000000000001474661347453780982630566940489', '-5152992043683388943.4636'); + BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 0 }); + T('-45.5', '-0.0000000000000014249435430510', '31931089636420433.55576127403712595722405163120316926606027532097875260074783441252582'); + BigNumber.config({ DECIMAL_PLACES : 72, ROUNDING_MODE : 3 }); + T('325882101178204344924705970016340527784218384', '-0.000000037', '-8.807624356167684997965026216657852102276172540540540540540540540540540540540540540540540540540540540540540540540540540540541e+51'); + BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 5 }); + T('0.00000001296293682348577', '4826180903855555093518758503.18506167', '2.685961649951807003241893e-36'); + BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 5 }); + T('652938', '40167425703568058483130738057612236723', '1.625541066083306e-32'); + BigNumber.config({ DECIMAL_PLACES : 73, ROUNDING_MODE : 0 }); + T('-0.2047789134812762376372728712574', '0.00122069219604562311', '-167.7563878467055174827544832568728645393736350593536991176006909249142121508'); + BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 4 }); + T('-0.0000000000000000000735510585292195036412154236560427242', '806566752154265322458.0530216714607132789553', '0'); + BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 5 }); + T('5.96738586777695317673351', '-0.0000000131103553092425065356339650240811875296230', '-455165838.5314759501070905001449000422673614835145139226419992986266304'); + BigNumber.config({ DECIMAL_PLACES : 31, ROUNDING_MODE : 2 }); + T('253439307973073.79909502258403781082034844541589896004090', '-0.00000000000000000003330', '-7.6107900292214354082589364575919165269803428197885898168168168168e+33'); + BigNumber.config({ DECIMAL_PLACES : 21, ROUNDING_MODE : 5 }); + T('1089680054292535889217177656211145', '0.0000213360854160840823096708397596', '5.1072164037695827703326822383250037106898722602484772580409e+37'); + BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 4 }); + T('-185936.62007', '20370869194.97455053229846832075003348284556795690420198297', '-0.00000913'); + BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 6 }); + T('1.37768166764465755636653', '0.20408', '6.7507'); + BigNumber.config({ DECIMAL_PLACES : 92, ROUNDING_MODE : 2 }); + T('0.0000000000000000009669444244397709515925799260593182719648592', '9.2', '1.051026548304098860426717310934041599961803478260869565217391304347826087e-19'); + BigNumber.config({ DECIMAL_PLACES : 85, ROUNDING_MODE : 0 }); + T('1.750', '2071244345460032170734902551.6508094475326625249707908886', '8.449027290458661764009243351093569120947924832533049268705e-28'); + BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 6 }); + T('-3988397945262857491438843500707054899997', '-214129.9', '1.86260673790201998480307677755748024913708921547154320811806291414697340259347246694646567340665642677645672089698823004167096701582e+34'); + BigNumber.config({ DECIMAL_PLACES : 55, ROUNDING_MODE : 4 }); + T('295783124913117715560874760916674521', '-0.0000000000002618293341251230605645364205924110442350', '-1.1296790938320486652761249195950932668596773743409194389158746961537211233107766329625433757095606824354e+48'); + BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 5 }); + T('-50710.475561047970', '132.1', '-383.87945163548803936412'); + BigNumber.config({ DECIMAL_PLACES : 49, ROUNDING_MODE : 6 }); + T('8611662468.1272', '949040009695874.96070863580584058121657006', '0.0000090740773625411789903522765473543117649192826'); + BigNumber.config({ DECIMAL_PLACES : 71, ROUNDING_MODE : 4 }); + T('2133393570885427035909375926083046680565861276', '70694057333404.94022299835665', '3.017783462086477634294527605965005751852951438132300383829730062196242995632168889854093270927747631448e+31'); + BigNumber.config({ DECIMAL_PLACES : 99, ROUNDING_MODE : 3 }); + T('2613005310836623', '-677508480', '-3856786.133269686897498316183437290703726689885859436032446413069250439492654025525997844336944682965444212'); + BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 4 }); + T('-71368779920225744729992101649423801013.9826397267764457', '-83273287.6391659199300973471958', '8.57042899872958433994977444944486516265889892525299612767160815191262755920396329859133752045133245e+29'); + BigNumber.config({ DECIMAL_PLACES : 90, ROUNDING_MODE : 5 }); + T('211208409622743840484103493394505.246103663548399', '-767386956806589826985766327524128477304930268638194243742361', '-2.75230648305084820188844632852158236744385890645776827212232048e-28'); + BigNumber.config({ DECIMAL_PLACES : 74, ROUNDING_MODE : 0 }); + T('-100744.08431499', '-0.06551885488328366094728119464062698894646878061872889', '1537634.99826816460387156938259580438652967442179025881429425178830102616497580229'); + BigNumber.config({ DECIMAL_PLACES : 27, ROUNDING_MODE : 0 }); + T('-0.00000000000000000336004973090925295770216060', '0.00000000000000000001515260842039336040123784515497940557955604703549', '-221.747281899470240379958517263'); + BigNumber.config({ DECIMAL_PLACES : 70, ROUNDING_MODE : 6 }); + T('-17532870057814109047.600859829217332735092564821487411138', '23019.6449040', '-761648154475550.4212707754733494707749247114459957879434541949961262530168523576109808'); + BigNumber.config({ DECIMAL_PLACES : 70, ROUNDING_MODE : 2 }); + T('-0.000000000000000026988260097683516148610380', '-45420382420145149189834745476421586567446848185762.708375835', '5.942e-67'); + BigNumber.config({ DECIMAL_PLACES : 19, ROUNDING_MODE : 3 }); + T('-0.0000000000000000023799691081599249086032764017749602896732817654250', '991105482710213.567', '-1e-19'); + BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 2 }); + T('601453', '2041.66764295913', '294.589083621990798160301139631085149923553179452222733024041143164011323620273068508'); + BigNumber.config({ DECIMAL_PLACES : 33, ROUNDING_MODE : 0 }); + T('-402521315714183175054571726943679054.7675', '3', '-1.34173771904727725018190575647893018255833333333333333333333333333334e+35'); + BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 3 }); + T('2206957.4504253', '5483536757267773.0781508858951720347886184285', '4.02469710356229758887237979439122257676387502e-10'); + BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 2 }); + T('-0.0000000000000005289549144694566634009672940013915898308679385505', '-18.89', '2.9e-17'); + BigNumber.config({ DECIMAL_PLACES : 2, ROUNDING_MODE : 5 }); + T('-2211019241730.118931085998956737464', '1883345', '-1173985.25'); + BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 5 }); + T('676660413361215098841.6447', '-0.00000000011016974787223439675745714624897538289345097697566', '-6.141980229871714946783543386659759345952836e+30'); + BigNumber.config({ DECIMAL_PLACES : 83, ROUNDING_MODE : 3 }); + T('-0.00000000000000000001122585876532469760883703742146468722976677', '-0.0000000000054744422221837600557', '2.05059407145349178334038027799621311225211509668637086903391590926456766746e-9'); + BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 5 }); + T('-58.2', '-1364461667135886369603850.1784667971192', '4.265418472485667689287105862913268192243368105085866387266e-23'); + BigNumber.config({ DECIMAL_PLACES : 86, ROUNDING_MODE : 1 }); + T('-47225932306386643219733.96765155309', '-0.08091271579981112281034023212381984889369879198108909359', '5.8366514879107400140856446166707928594799801466940076002029905146259292256804324968441972873664122924704057077e+23'); + BigNumber.config({ DECIMAL_PLACES : 1, ROUNDING_MODE : 0 }); + T('0.0000010981334284061199519633859544035268395486390675316144836610', '-8233507251008518719.119447816686546693006964245267741540211', '-0.1'); + BigNumber.config({ DECIMAL_PLACES : 32, ROUNDING_MODE : 6 }); + T('-12629847025632238433603053865614665972.1494239645227896998674', '-2591992428721377159251056998048.128872', '4872640.40036664294743635414136385753534'); + BigNumber.config({ DECIMAL_PLACES : 53, ROUNDING_MODE : 5 }); + T('-4252.07', '3415694163747861025', '-1.2448626241567330165894468829708493576e-15'); + BigNumber.config({ DECIMAL_PLACES : 86, ROUNDING_MODE : 0 }); + T('67828346273094326856933', '-0.00000000000000000001981766141', '-3.42262110901077943368359324492061750287013305067865724525969686551426453097323353653966782551867203386638141175104474650523358599e+42'); + BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 2 }); + T('-13.806931363138', '0.0000000000270109174387398904696405526860183322846580991144310044469', '-511161140470.3963666869121585635945898573137993'); + BigNumber.config({ DECIMAL_PLACES : 22, ROUNDING_MODE : 6 }); + T('9.63', '1171334609000199324775253397721344579658013052', '0'); + BigNumber.config({ DECIMAL_PLACES : 5, ROUNDING_MODE : 4 }); + T('0.0000000001168642599645515450579400931900955126185213013465768', '0.0000000000121793918568216690573762516759087773884128915423497231', '9.59525'); + BigNumber.config({ DECIMAL_PLACES : 62, ROUNDING_MODE : 1 }); + T('53506114651950883942285065699033', '65910628177729867715794374064.1138413', '811.79797752298971851967012659297691173513982414824506104066132362'); + BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 2 }); + T('-0.00000000000000000406627260678849033336293998551088992', '-3303171.983301811542274853533900179067748154', '1.231020554589438136806289366857685e-24'); + BigNumber.config({ DECIMAL_PLACES : 2, ROUNDING_MODE : 0 }); + T('0.000001084617', '78817036436563311090367542.130181882621560', '0.01'); + BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 2 }); + T('-5744.73419', '122155848887.064230599', '-4.7027909366101111765684860860155074448700724899701e-8'); + BigNumber.config({ DECIMAL_PLACES : 21, ROUNDING_MODE : 2 }); + T('426.344', '-127873488954305077741949807322665432845121236', '0'); + BigNumber.config({ DECIMAL_PLACES : 28, ROUNDING_MODE : 1 }); + T('40030987601502826523314779745936856', '570996.314388459918349916072985491785987', '7.01072609275529678246947361074571833074130496873796082431e+28'); + BigNumber.config({ DECIMAL_PLACES : 40, ROUNDING_MODE : 3 }); + T('470581.007268845392131980979824886', '183334837116430.861534072111318027730101341054073', '2.5667844402643043142954711637004e-9'); + BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 3 }); + T('48323137770242813929658748393131737173669293941681.2', '-302.5177156686213980269795794973417845274346400597970242478', '-1.59736555141703139979090089819188708015873544578179904997943129115168986035033030299897874617620575984889131116122934e+47'); + BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 1 }); + T('8.7', '0.000000000000000000166761710281741', '52170249305440090476.62082302362'); + BigNumber.config({ DECIMAL_PLACES : 9, ROUNDING_MODE : 5 }); + T('-3387155.337280447827589', '21.94263', '-154364.14583304'); + BigNumber.config({ DECIMAL_PLACES : 52, ROUNDING_MODE : 3 }); + T('1621091487090991767', '-625690863595514294116971833.8982', '-2.5908824651449069100905040391792376372343161e-9'); + BigNumber.config({ DECIMAL_PLACES : 85, ROUNDING_MODE : 5 }); + T('0', '0.015395', '0'); + BigNumber.config({ DECIMAL_PLACES : 72, ROUNDING_MODE : 1 }); + T('0.00000000000000178239599595974964583290109935985132141544888408370628', '-29516.521811036968024710638888599116696', '-6.0386383171111545590219859100069758779882121614779757e-20'); + BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 2 }); + T('74.969990492713749079688', '0.00000000000000052282880601480435829451617959658965518187770782597', '143392999066296488.15598221416532487350857268505818468778132959087203234559315393563482665694193790662836704381101'); + BigNumber.config({ DECIMAL_PLACES : 7, ROUNDING_MODE : 4 }); + T('9596615571258.492610962809423', '-167633520.5824796874157222071297', '-57247.5930704'); + BigNumber.config({ DECIMAL_PLACES : 96, ROUNDING_MODE : 1 }); + T('-2232071124436735511943814137.0522431130665912245715784551', '3564396711.368', '-626212878414444584.725490318710279686312169391968867215929674014486509260688453315113231564206302732269601343632478'); + BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 0 }); + T('-1382227618.75131191316862730899075392511410652', '754635905531929458984619.180888454231', '-1.831648359982293967304909354245656965e-15'); + BigNumber.config({ DECIMAL_PLACES : 30, ROUNDING_MODE : 4 }); + T('-71067330303000363858876867.973933654727826106685', '-11661754495838287260.07549715908674', '6094051.313493355982412064832079563681'); + BigNumber.config({ DECIMAL_PLACES : 49, ROUNDING_MODE : 0 }); + T('-1252371590193744774917140670', '-213356828779653985738.357', '5869845.3541749151279418641211276959015930731289804820486'); + BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 6 }); + T('13352367841149988', '-0.000000000142031141374476971294', '-9.401014250772902375534890054877166473120970323e+25'); + BigNumber.config({ DECIMAL_PLACES : 25, ROUNDING_MODE : 6 }); + T('-10321.73245286387727432273304720136578247', '0.0000000012116081638922756022964368396', '-8519035081197.7404251464625469036910252'); + BigNumber.config({ DECIMAL_PLACES : 98, ROUNDING_MODE : 6 }); + T('-0.00000000000000039871298374', '-34669636664769580398726661099025.86943584', '1.150035079961372033160736089419637803806556114650312e-47'); + BigNumber.config({ DECIMAL_PLACES : 77, ROUNDING_MODE : 2 }); + T('-303137413399920257.30569152070980396', '4040056.76913163224875', '-75032958872.27754452352532363389769842427145464424631624396469616635312022963616794108317'); + BigNumber.config({ DECIMAL_PLACES : 5, ROUNDING_MODE : 0 }); + T('3158137570873460228072670005805543345755314.88870', '0.0000000000083', '3.8049850251487472627381566335006546334401384201204819277109e+53'); + BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 0 }); + T('-2432289038390.2', '-318696105128138999338893487.9', '1e-11'); + BigNumber.config({ DECIMAL_PLACES : 5, ROUNDING_MODE : 0 }); + T('0.00000000001159', '-1319597700477306095503339987.9244', '-0.00001'); + BigNumber.config({ DECIMAL_PLACES : 2, ROUNDING_MODE : 0 }); + T('23648504.6466', '-270134.1', '-87.55'); + BigNumber.config({ DECIMAL_PLACES : 83, ROUNDING_MODE : 1 }); + T('-346539606072077.2439', '862203.062816695290396772865420408873422969589343', '-401923422.70274641808047258150883287943664547849847021654039885668554386812303515806801631981'); + BigNumber.config({ DECIMAL_PLACES : 46, ROUNDING_MODE : 4 }); + T('0.000000000000000000012', '21194406', '5.661871344731246537e-28'); + BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 1 }); + T('0.000000000000000000111480007578139775', '40759282340479757739197.929065157327869698454301', '2.73508268980055839501863e-42'); + BigNumber.config({ DECIMAL_PLACES : 91, ROUNDING_MODE : 6 }); + T('-18128041192.156711945350321873109876', '-33986859592609750.47129863121', '5.333838256741600071709984030510568296793370390855043571400753611875916969218330361484e-7'); + BigNumber.config({ DECIMAL_PLACES : 31, ROUNDING_MODE : 0 }); + T('37278526076638974862118765.098259276278986122514405', '422484277198516023929200423121333952607119189697795', '8.82365e-26'); + BigNumber.config({ DECIMAL_PLACES : 21, ROUNDING_MODE : 6 }); + T('8768.0457926837864490653237778856176282232936793297952', '2911070376371882980749989481391259968018315772791348.594263', '0'); + BigNumber.config({ DECIMAL_PLACES : 88, ROUNDING_MODE : 3 }); + T('-15955789117760043118300438387.88821275514711148675', '990985099985142384569.56827257552943577101744765232273140', '-16100937.4590992989250162977644764748579171495897739589653639122908862455819077118275788475438161'); + BigNumber.config({ DECIMAL_PLACES : 25, ROUNDING_MODE : 1 }); + T('-212339967169681140.0656347177691098032583634264120432109692', '11427913738903003526979637293.05945166976', '-1.85808164133083e-11'); + BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 4 }); + T('9531.020434', '-334535567052877548087656305116448', '0'); + BigNumber.config({ DECIMAL_PLACES : 19, ROUNDING_MODE : 5 }); + T('3841583091234025971151324407364910092214432429401407480438', '-22416824307585236203987598514653148538792.945067', '-171370531281459881.5845028347181699363'); + BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 4 }); + T('3216714522.970', '244060566972964907041409673187177473756.579577073127866342', '0'); + BigNumber.config({ DECIMAL_PLACES : 53, ROUNDING_MODE : 5 }); + T('-0.0000149274144207078807596236297196457', '365070321314504.979770', '-4.088914806045830298008984522180321e-20'); + BigNumber.config({ DECIMAL_PLACES : 2, ROUNDING_MODE : 6 }); + T('27022766.473594173737137389937884830415185959525864', '-539299052785656617700079811116319917441', '0'); + BigNumber.config({ DECIMAL_PLACES : 41, ROUNDING_MODE : 0 }); + T('-28599579971171430131634037723710371659862', '-0.00000000000000003644973478672098783210762417899790764846187', '7.8463067395460310450266452407524485868916851065079313125316782921027252528619835701517998070723638e+56'); + BigNumber.config({ DECIMAL_PLACES : 5, ROUNDING_MODE : 2 }); + T('0.000000000000000107501465095829712656', '-36.9', '0'); + BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 1 }); + T('3504221306553522426085327256227', '-25730.57184190476446062096107175383931', '-1.361890177989186277274384722436967581e+26'); + BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 5 }); + T('-5613976985159967030036081584308829303811752101719', '5826360651980204533629650242959093732650762454761251564090', '-9.635477994744361231994675869384292734433202261344614e-10'); + BigNumber.config({ DECIMAL_PLACES : 90, ROUNDING_MODE : 4 }); + T('31450598647096365977207660693799877880.7722033791', '107521368334565489758', '292505565491262148.019571293699173528327044279742920906207753129416525762209451256122138367129671204843851546'); + BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 5 }); + T('1500908.503777', '-1015794940302252137891895242750618498147131.9366486805297', '-1.47757036802172020799761083929871197843150569793966301441245e-36'); + BigNumber.config({ DECIMAL_PLACES : 90, ROUNDING_MODE : 1 }); + T('-73296034', '-5', '14659206.8'); + BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 2 }); + T('162689268248656604911961.73925878415346621140', '16.8530012184832', '9.6534300413050659945667091905274e+21'); + BigNumber.config({ DECIMAL_PLACES : 87, ROUNDING_MODE : 1 }); + T('-0.0000000000000000006349044078849485', '309418015201986203793355024.150967286295740', '-2.051930969405536238876578741356000088614244e-45'); + BigNumber.config({ DECIMAL_PLACES : 73, ROUNDING_MODE : 2 }); + T('0.00087604094095', '1392643254462374770962.4', '6.290490677658813987746781212472635606387062383544e-25'); + BigNumber.config({ DECIMAL_PLACES : 1, ROUNDING_MODE : 6 }); + T('0.01471018444847', '-0.0000000000031444004384214340642523517788169191904279950', '-4678216002.2'); + BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 5 }); + T('187743709993796.4707441185609022061433785613916665', '-148037593060997360064291511624701384112069161633.117310780564', '-1.268216444970424611070255845307078487869328514291e-33'); + BigNumber.config({ DECIMAL_PLACES : 46, ROUNDING_MODE : 5 }); + T('0.000011258', '0.00000002533815962089606530705098', '444.3100907263867470311330952968235026076982471394'); + BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 2 }); + T('757411567322940237009357511826689969429965.236585820277', '732371310539520997815.583055808555097036195690159014046186', '1.0341906576938037911928068192477326e+21'); + BigNumber.config({ DECIMAL_PLACES : 87, ROUNDING_MODE : 2 }); + T('-568.38271', '-0.00000000000000000009831306318615957356693126102654593877784118926', '5.781354904218022750361120979397811789718111958564428281983974648837588268358968369893867421753377610560567601e+21'); + BigNumber.config({ DECIMAL_PLACES : 9, ROUNDING_MODE : 4 }); + T('4961441143214745081236647304879610502095528582', '152849955322703', '3.2459552459403407242938276150370472621615e+31'); + BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 3 }); + T('3.07144121980414068036287438221', '-9172805577814.461', '-3.34842071354133190529054610280498225047720875195151670690172482e-13'); + BigNumber.config({ DECIMAL_PLACES : 24, ROUNDING_MODE : 6 }); + T('44314348083704254263362409818654768380209.012579280', '-9.417687525064823672162', '-4.705438353710852226448547042633572616984454390342684398583290673e+39'); + BigNumber.config({ DECIMAL_PLACES : 5, ROUNDING_MODE : 0 }); + T('2085098969276295556177971788779802383262842.2573', '0.00000000000095273487', '2.18854062649800521752496766364791747704462864605763825984453e+54'); + BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 4 }); + T('109753.2295760718524527484177', '-2410159320462121517944570628199834932322126563296852', '0'); + BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 4 }); + T('0.000000000069254571', '0.000000199024731561379031663465058346103053493401562136877453001348', '0.00034796967420424309603498770442174869249118067854495112595546767'); + BigNumber.config({ DECIMAL_PLACES : 24, ROUNDING_MODE : 1 }); + T('0.05513850425913127663195321149816649956181', '1583707666489.2', '3.4816087227e-14'); + BigNumber.config({ DECIMAL_PLACES : 41, ROUNDING_MODE : 6 }); + T('-0.00000000000000000001911867896259825309', '0.0000000000000026470470353798680890064052204548929047195017581076193006', '-0.00000722264421714539010209156219178435935'); + BigNumber.config({ DECIMAL_PLACES : 96, ROUNDING_MODE : 1 }); + T('-6073252477791750891.3306202701', '0.00000000000000000318941067336920340144282050435242157283523553432927425299128', '-1.904192686285876887623788577946073103761642119860783779636402053198955991467191518914690989817783177670381359194515048092874262743002e+36'); + BigNumber.config({ DECIMAL_PLACES : 2, ROUNDING_MODE : 3 }); + T('378672312.587170', '-0.0000000000000000001053', '-3.59612832466448243114909781577e+27'); + BigNumber.config({ DECIMAL_PLACES : 27, ROUNDING_MODE : 0 }); + T('609789798178485116999338276095741737992.379075331', '17.0', '3.5869988128146183352902251535043631646610533843e+37'); + BigNumber.config({ DECIMAL_PLACES : 31, ROUNDING_MODE : 1 }); + T('-124.716', '5216585338728473.111922771500014302179232803666', '-2.39075931671423873e-14'); + BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 4 }); + T('0.00008981163034929156059932182280362293647', '17.15462944126793230', '0.0000052354165187174924421618028002824702737088914242483722088492099572847282013733240288959490404'); + BigNumber.config({ DECIMAL_PLACES : 98, ROUNDING_MODE : 0 }); + T('51.131', '0.00000000000000000163392086120629508806283832967421051655309', '31293437285726849899.9548981381946366968329515395443936573946414878412107077307898590483457854490120470465228429287396'); + BigNumber.config({ DECIMAL_PLACES : 7, ROUNDING_MODE : 6 }); + T('0.000000000000000224443342970341249514955', '-195.075348122424284622226008810924357674021585884736420502', '0'); + BigNumber.config({ DECIMAL_PLACES : 35, ROUNDING_MODE : 4 }); + T('-0.0000000000000523354375249977172294108', '-59305406992817199156555859872622215551484.43155864914470', '0'); + BigNumber.config({ DECIMAL_PLACES : 56, ROUNDING_MODE : 2 }); + T('6', '0.0030', '2000'); + BigNumber.config({ DECIMAL_PLACES : 29, ROUNDING_MODE : 5 }); + T('0.000000000000000000034611171122223173101604291856002430473572402', '-0.00000000000000001306934614', '-0.0026482710574396932379054957'); + BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 2 }); + T('1588463948.87932840027706', '0.0000000000022448099935370064122298031327392982562438924009101', '707616214046020578248.81130758203250848509051455636434814147439890491'); + BigNumber.config({ DECIMAL_PLACES : 90, ROUNDING_MODE : 1 }); + T('331.68', '-33750.2034498218032862327555741660509773034307606364769', '-0.009827496314003737584808993904721204561638977989420994442365465662925539835282246204506787'); + BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 6 }); + T('0.327498818868821216689791032955550931752264897623', '21042718581930356317251390092870285676850.926244716344', '1.5563522250877247306423254201e-41'); + BigNumber.config({ DECIMAL_PLACES : 55, ROUNDING_MODE : 3 }); + T('3958539212848304459958011955905583053', '-21696668207847236', '-182449174911407951863.4531483205530341836363930866093940294762697819985445794'); + BigNumber.config({ DECIMAL_PLACES : 33, ROUNDING_MODE : 5 }); + T('1247355676807195054228866279313', '16.258834134091449785731551775353859635', '7.6718642094499587743177888766100455319156336611325707079731669e+28'); + BigNumber.config({ DECIMAL_PLACES : 67, ROUNDING_MODE : 0 }); + T('0.0000000000012350636190251876598396', '-951304829839431745267098098582', '-1.2982837680259132276449985e-42'); + BigNumber.config({ DECIMAL_PLACES : 27, ROUNDING_MODE : 5 }); + T('-104.734641992', '1733564860345817076999292.62701', '-6.0416e-23'); + BigNumber.config({ DECIMAL_PLACES : 63, ROUNDING_MODE : 4 }); + T('0.0000028957367658033897750603780262704357073704233855043345', '6356266743779871175690.8320757525027414064', '4.5557193908470029595714225575995705e-28'); + BigNumber.config({ DECIMAL_PLACES : 29, ROUNDING_MODE : 4 }); + T('-18558028455212231571697031', '-8', '2.319753556901528946462128875e+24'); + BigNumber.config({ DECIMAL_PLACES : 63, ROUNDING_MODE : 5 }); + T('-13821411732239834470835288846455021839518308', '43191343517856916199296009474.4583', '-320004209327860.943280120415530700855745713808556291320032098976026114433405693'); + BigNumber.config({ DECIMAL_PLACES : 80, ROUNDING_MODE : 5 }); + T('1105537642062114566378066835007', '-67031135832125199.608799899', '-16492897342972.91956535243888467391305299684032312977820150518076720770163876179182196342933551'); + BigNumber.config({ DECIMAL_PLACES : 87, ROUNDING_MODE : 4 }); + T('0.0000000000000000001255914148577465716438366888116166812811129178359847494921', '14253616998215507072480525.5466822973429', '8.811196124707861086162541630740460525710456e-45'); + BigNumber.config({ DECIMAL_PLACES : 71, ROUNDING_MODE : 6 }); + T('10307.48645', '-233.40', '-44.16232412167952013710368466152527849185946872322193658954584404455869751'); + BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 2 }); + T('51547410618891864439338459879661143474.873695893', '0.000000000000000676829184531107024516', '7.6160147636959276036734477149740626732082461515375015431101882226904527697230136479333303806794331563205180614e+52'); + BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 3 }); + T('204708594426498174030950107.254', '4440698384508500810481273876415279950855610099962910', '0'); + BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 3 }); + T('-6.13262', '23040527189197.48966', '-3e-13'); + BigNumber.config({ DECIMAL_PLACES : 86, ROUNDING_MODE : 3 }); + T('84389016596253.6582867036429852020414930676618', '-0.000000000000068476172931286069798457953929796189460178155', '-1.23238512001737718906979098515503064223947711793583508345578763371912048018025047351275887045048034847634525910066e+27'); + BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 6 }); + T('-38248107466844304398754595001002', '0.0000035010431864427607738252', '-1.092477454004397498727080290040187638747725994106560343172688418173937260394324598159119517021792374783673726682471104291825439097915e+37'); + BigNumber.config({ DECIMAL_PLACES : 100, ROUNDING_MODE : 1 }); + T('-6.04', '-52596312949208048443865032.445961', '1.148369469516388467461983778327576939930189067065907333733000607931365766262e-25'); + BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 0 }); + T('-813956145912449846600403054832', '10796.36780196', '-7.539166512692186931160646370173229289e+25'); + BigNumber.config({ DECIMAL_PLACES : 88, ROUNDING_MODE : 6 }); + T('-2421788107883639375.690813214146289140632086497030390', '1731175528149788838817994796202724767.68013543816827528061235', '-1.3989269536821316086138504672469213952044063942010898714620955200178235e-18'); + BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 0 }); + T('6809195547555535.498930321150996302023166384162374', '11654400.3394158857916', '584259622.9105349102'); + BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 2 }); + T('7650.2', '167313423904874555768.53143200344236', '4.572376693665353260468390163017986446812909378918e-17'); + BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 0 }); + T('0.0000000000215178880', '-415105913902008739133981.125527139819700224156205940189343', '-5.1837102964231878130039665575920669505879406859e-35'); + BigNumber.config({ DECIMAL_PLACES : 91, ROUNDING_MODE : 1 }); + T('22142223705380302372371177782.1735702866136041227753', '586007244566197651865789605.262', '37.784897560048902907217450655951502520247844259884569454602755728879103478107373423844615729'); + BigNumber.config({ DECIMAL_PLACES : 85, ROUNDING_MODE : 6 }); + T('-692051984878.44837389610506', '-0.000000000003543', '1.953293776117551154095695907423087778718600056449336720293536550945526390064916737228337567033587355348574654e+23'); + BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 4 }); + T('-2098291.044481392971917438527834118527', '-5693120152498224716798827599', '0'); + BigNumber.config({ DECIMAL_PLACES : 7, ROUNDING_MODE : 1 }); + T('0.0000000146185660337188726116266948236882286', '20.7', '0'); + BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 3 }); + T('10704495556869164920.51', '90619.2588', '118126055086086.898346050034123651'); + BigNumber.config({ DECIMAL_PLACES : 27, ROUNDING_MODE : 3 }); + T('0.000000000000002487958710561768110187226959259', '4063693787689666341932152579391331936357.573517570229', '0'); + BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 6 }); + T('51618848316969818775925143304056624489535103456.6', '5', '1.032376966339396375518502866081132489790702069132e+46'); + BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 2 }); + T('2654107.13441542394', '-6123874494540609.39129700002676534532585907120017117261', '-4.3e-10'); + BigNumber.config({ DECIMAL_PLACES : 90, ROUNDING_MODE : 2 }); + T('-1714194716329674533705519065.5334413206217103223746696', '5.98522507452367335745', '-2.86404386633045136335500224142654677487187643840811577337806125077173786775401349379930631210035469203499993508952054e+26'); + BigNumber.config({ DECIMAL_PLACES : 99, ROUNDING_MODE : 5 }); + T('5702848846892587648420853565547712298213651451', '20315551290068.9958657451780294280', '2.80713467504096443336245665418400813749841454239681391965351719619477522552050607483391155099224061119513736999774116474859166959586e+32'); + BigNumber.config({ DECIMAL_PLACES : 90, ROUNDING_MODE : 4 }); + T('5822711428013.7278457962610451325840881631471620796996', '7317134960.07267345871391728', '795.763841966350301550416023965287902186366947585252329405753890743811409560180259233344579873'); + BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 0 }); + T('6998999857049233887139.178', '536565672053559187736681540252526377121.4733799', '1.3044069387186968841309942400771742644732909128490501807562862836e-17'); + BigNumber.config({ DECIMAL_PLACES : 24, ROUNDING_MODE : 3 }); + T('-736427.362', '26561785052330377.2389583235', '-2.7725070455512e-11'); + BigNumber.config({ DECIMAL_PLACES : 58, ROUNDING_MODE : 2 }); + T('1706905651154879542863', '88.56507646747069', '19272897616498006457.7522807926014250674708948336033069877118029704230360991538'); + BigNumber.config({ DECIMAL_PLACES : 5, ROUNDING_MODE : 6 }); + T('257245103.59464744281', '0.0000000029115137887165463109918224', '88354417070456755.53515'); + BigNumber.config({ DECIMAL_PLACES : 35, ROUNDING_MODE : 3 }); + T('-0.00731213642756679', '22000291.2308', '-3.3236543784156522957658811e-10'); + BigNumber.config({ DECIMAL_PLACES : 21, ROUNDING_MODE : 3 }); + T('-1.00153755', '-0.000000000004817370897527122943915648885377070823386522456337944', '207901274638.021808115928034265486'); + BigNumber.config({ DECIMAL_PLACES : 48, ROUNDING_MODE : 5 }); + T('-18876185760828306319586606769243165085658142.582', '110420998917509223452862481780135937729683.9442', '-170.947427988130159944154589178595087116373885300937'); + BigNumber.config({ DECIMAL_PLACES : 50, ROUNDING_MODE : 6 }); + T('10139455414077721510362752985718.349777032029', '-1592.15854283316275020881903273194474638353703333947', '-6.3683704488593777697061166680042965589526026607894963695742224646320751612955e+27'); + BigNumber.config({ DECIMAL_PLACES : 92, ROUNDING_MODE : 1 }); + T('64058.2040554083', '0.0005021239538086', '127574483.49063637011849827272068476023898087743836443210535013094588197053638633850291146474453448271'); + BigNumber.config({ DECIMAL_PLACES : 21, ROUNDING_MODE : 6 }); + T('-1428475428.20735903897201934602', '-0.0000000000242430554', '58923077336504335133.104523863770075780135'); + BigNumber.config({ DECIMAL_PLACES : 33, ROUNDING_MODE : 5 }); + T('-51554046121.3034', '-0.000018880638', '2730524578740580.694360010503882337026958516973844'); + BigNumber.config({ DECIMAL_PLACES : 42, ROUNDING_MODE : 3 }); + T('-2762810286803588.45192428', '-8640345932207758420293371601.59940312431169954302570739', '3.19756906549879589027267406125e-13'); + BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 4 }); + T('0', '-0.000000000011202663303958747975051152590316', '0'); + BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 0 }); + T('0.0000000000000000728863062144561648570757530722', '322752261571.8626880286', '1e-8'); + BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 4 }); + T('-734510557070.068348834319420815381', '-246514712290287800069556.88175493105500884097', '2.97958101667024372312554181557200100600882497777415203837744586470161731601583448849e-12'); + BigNumber.config({ DECIMAL_PLACES : 40, ROUNDING_MODE : 5 }); + T('1377663375802999968849430.3093839', '566468290791214461291218484296464177560', '2.432022053482903606051085e-15'); + BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 1 }); + T('42.717407896393966477614218353439273979669938970221536036678', '110923.68743842532496727427151897458876838975677629026416375', '0.0003851062'); + BigNumber.config({ DECIMAL_PLACES : 77, ROUNDING_MODE : 1 }); + T('0', '-32462950625688705502194075615292.71', '0'); + BigNumber.config({ DECIMAL_PLACES : 72, ROUNDING_MODE : 2 }); + T('-2179016107.7151039', '-8998016829991.427774977530562439090670', '0.000242166262731604582217366864917233636794614427746718291884330094957283'); + BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 6 }); + T('-20294295265203512774.769698852042811556484427715976', '0.000021624092225657109443305144', '-9.38503917455744803550043940290482273316338e+23'); + BigNumber.config({ DECIMAL_PLACES : 31, ROUNDING_MODE : 6 }); + T('0.0000000008493664', '-0.0847262743', '-1.00248288623261226063377e-8'); + BigNumber.config({ DECIMAL_PLACES : 45, ROUNDING_MODE : 5 }); + T('-21440281347750189310337', '-0.000000000000000000387132410079674043729097884456491866784968', '5.5382295022361103568950998795402234908365568150385575865160019717068179574792611353491e+40'); + BigNumber.config({ DECIMAL_PLACES : 24, ROUNDING_MODE : 2 }); + T('206821560851854169617748462848949473773944', '13211894344505757704466014.438', '15654194278193127.234892190339874212443694'); + BigNumber.config({ DECIMAL_PLACES : 9, ROUNDING_MODE : 3 }); + T('87335372170833177344.8303029843663', '37000975631892503811354619634411655865.6169807323644717989', '0'); + BigNumber.config({ DECIMAL_PLACES : 78, ROUNDING_MODE : 2 }); + T('-153953834712343763790686290606.3999', '32832548130942465220.147', '-4689061418.515142415435868663051072079842174369411856550042224630514916748907728876061295'); + BigNumber.config({ DECIMAL_PLACES : 5, ROUNDING_MODE : 0 }); + T('8591618553304102854549436621158504457632.5171957714', '-1542797194645238675645482061085323571995441155624030', '-0.00001'); + BigNumber.config({ DECIMAL_PLACES : 31, ROUNDING_MODE : 3 }); + T('37700127.5951420458769322687632041', '-57762387264539495550418.0153494', '-6.526760644861067e-16'); + BigNumber.config({ DECIMAL_PLACES : 67, ROUNDING_MODE : 0 }); + T('0.010041502557250876166548957814077913236106', '-18220674406719803170800673691038472842823530', '-5.511048786178605911409e-46'); + BigNumber.config({ DECIMAL_PLACES : 31, ROUNDING_MODE : 2 }); + T('80.29', '-8524769191419139053935120.494218774674499753866', '-9.4184368e-24'); + BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 2 }); + T('109702701616263639000350650001761093468367469818592253226', '-2021844707442628.03807051', '-5.425871789877639160770322751829476922008624495250501167900874909467126706972380441248639983205158035489570536069623734497094883214019663e+40'); + BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 4 }); + T('-3005.5299969285543736815073486739041595222490', '11869355000843396498.275115952278894077', '-2.53217634548380388605943229997686131910154e-16'); + BigNumber.config({ DECIMAL_PLACES : 82, ROUNDING_MODE : 6 }); + T('-2.9854066005', '-2.07', '1.4422254108695652173913043478260869565217391304347826086956521739130434782608695652'); + BigNumber.config({ DECIMAL_PLACES : 45, ROUNDING_MODE : 3 }); + T('60997727678079129329650246720589441117', '-164345597279206048954528559846381714544641.400997176', '-0.000371155228298877666235893044021252300333269'); + BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 1 }); + T('0', '0.000000000104418206', '0'); + BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 0 }); + T('-272327.1', '694.45577474495', '-392.14462592'); + BigNumber.config({ DECIMAL_PLACES : 100, ROUNDING_MODE : 0 }); + T('6237855.72', '0.000000000000000056118290958004531753653601257', '1.111554827047036507995706512423927767064027042762859524443941584662214168498358135819148727524390167927840316489194652889418e+23'); + BigNumber.config({ DECIMAL_PLACES : 27, ROUNDING_MODE : 0 }); + T('0.000000000000006937403050062051741264875394222559344579302', '1509646995595711435.959', '1e-27'); + BigNumber.config({ DECIMAL_PLACES : 25, ROUNDING_MODE : 5 }); + T('-164471871725054325379243876510073498031765815264104734195', '-0.00402430947386126023272568404053794601387820869747399428664192', '4.0869588383630498731416861920107609850137223086980649346785688450001052069390464103e+58'); + BigNumber.config({ DECIMAL_PLACES : 56, ROUNDING_MODE : 6 }); + T('-133380508526066123553.924166134978708537056649683776', '332452693837394951885538.01', '-0.00040120146715160475560382614621874425251758726814333122'); + BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 1 }); + T('-1002134.167299', '-251.640', '3982.4120461731044349'); + BigNumber.config({ DECIMAL_PLACES : 87, ROUNDING_MODE : 4 }); + T('3091342449638972957936252157062677150123597', '-16288785543666.3129808', '-1.89783482712804340336650119939870960656049694756418219750511012425980687183218750107631468549277698312382362559693096e+29'); + BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 5 }); + T('-2121799566979', '-20804629779048036144946756642230281', '1.0198689375937973728019325041709023668770063207827995907217465870058272029e-22'); + BigNumber.config({ DECIMAL_PLACES : 31, ROUNDING_MODE : 4 }); + T('-2.95', '-1', '2.95'); + BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 2 }); + T('-0.0000000000000000000128531295816420791177802740270342784459', '2133.1090', '0'); + BigNumber.config({ DECIMAL_PLACES : 28, ROUNDING_MODE : 3 }); + T('-22.4694657270600021059023860420', '-11079.1', '0.0020280948567176036055187141'); + BigNumber.config({ DECIMAL_PLACES : 25, ROUNDING_MODE : 3 }); + T('-0.0000000000000000014765999000906441441566319', '13980667685799243617101573702.2033564634481522785621111348', '-1e-25'); + BigNumber.config({ DECIMAL_PLACES : 98, ROUNDING_MODE : 6 }); + T('-36625617695236881.773942648961', '1311498943574337365145309982488.6557', '-2.792653236564417936966141384470842862580855171690821248973320554198267761643707277475e-14'); + BigNumber.config({ DECIMAL_PLACES : 49, ROUNDING_MODE : 2 }); + T('-2104684780739', '-45.6', '46155367998.6622807017543859649122807017543859649122807017544'); + BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 4 }); + T('14570972898277952428626.0983801671394340', '114423093266432345.2524483', '127342.938233191046005191826845887793763656551737627592531031804176335098511683913206903'); + BigNumber.config({ DECIMAL_PLACES : 58, ROUNDING_MODE : 1 }); + T('81260582666910888471517.696291', '157183273101224011686.118', '516.9798354725703896250771557514765169801823622101619483914412'); + BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 5 }); + T('-2.525060632104990744774590726583480995133091410643517095', '8737246559917825.103222789941919016', '0'); + BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 3 }); + T('-6908481234802683425254138906190088906940533878.111', '15381.89870114390985717228404934058434081488126127180', '-4.4913058972940177512058867064538945149459323054127e+41'); + BigNumber.config({ DECIMAL_PLACES : 1, ROUNDING_MODE : 3 }); + T('417982.58607482343146733674248486', '116386843556506317108.22539086', '0'); + BigNumber.config({ DECIMAL_PLACES : 27, ROUNDING_MODE : 1 }); + T('-5780608294791.624458881861849817493', '682392959.70758196837', '-8471.084310818098502691272384981'); + BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 0 }); + T('40159.97604002006812174866', '-313664.679534078486903276', '-0.12803475'); + BigNumber.config({ DECIMAL_PLACES : 62, ROUNDING_MODE : 0 }); + T('-4.047', '-1.81', '2.23591160220994475138121546961325966850828729281767955801104973'); + BigNumber.config({ DECIMAL_PLACES : 87, ROUNDING_MODE : 4 }); + T('5061613769913356854864601678.89379478', '921818732154416225536544128239745673153253611567047', '5.490899233609274193409593992073909981216429810581822729779521522e-24'); + BigNumber.config({ DECIMAL_PLACES : 29, ROUNDING_MODE : 0 }); + T('-25506.3998849214929', '0.000000000013985173677629659', '-1823817170445362.78619963707679912302299395613'); + BigNumber.config({ DECIMAL_PLACES : 100, ROUNDING_MODE : 5 }); + T('11.4581525319001337207', '0.00000000000000000009416824099681963524706645466971745', '121677461643221226049.4121814719193701493831141147430299424294358706877279967065063044082706631899843825377434102964830059'); + BigNumber.config({ DECIMAL_PLACES : 56, ROUNDING_MODE : 6 }); + T('-13.1', '71689907220027014271360598291.258402249236137629239531728', '-1.827314402820211048849800495e-28'); + BigNumber.config({ DECIMAL_PLACES : 60, ROUNDING_MODE : 3 }); + T('-1125106278543860.42641857171081224001205', '0.000000000305408269978069643760450306647132844200436249835', '-3.683941756471265763378768331539492008773195171551609918202663377907462939251038817895e+24'); + BigNumber.config({ DECIMAL_PLACES : 35, ROUNDING_MODE : 0 }); + T('-0.00000000000000000049608590807042330411', '27990', '-1.772368374672e-23'); + BigNumber.config({ DECIMAL_PLACES : 40, ROUNDING_MODE : 6 }); + T('-25928884865429476681995775592751670033286619073442', '-219192400010954.9422554036825930132777', '1.182928097148148648508822522228604781132162339640607517123442344178576719677e+35'); + BigNumber.config({ DECIMAL_PLACES : 60, ROUNDING_MODE : 6 }); + T('-4.46763325', '0.0000000000000179609090310047', '-248742045421410.882061859008635736643114865517174911865521227799944534457085'); + BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 2 }); + T('-1287033681371878104057667.7055777252542186915675', '195707186672724900856206502221720418737', '-6.57632e-15'); + BigNumber.config({ DECIMAL_PLACES : 40, ROUNDING_MODE : 3 }); + T('0.00000000000000193175636808677074413', '1096214462030958100.02309399230397185919335500330064378', '1.7622066e-33'); + BigNumber.config({ DECIMAL_PLACES : 70, ROUNDING_MODE : 2 }); + T('4.1855102693159094752', '-1769.223', '-0.002365733584356471442661552557252534021997227031301311366628175193291'); + BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 3 }); + T('-0.0000008679493116849', '0.00000000000001377', '-63031903.53557734205'); + BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 3 }); + T('619020164695232324.022470822521', '-0.0000000000004062829882447739486123366057322303105417101432919615', '-1.5236182232722239291358561175494240320173964254115460755085158141082760696213303513827725096088371826207242532e+30'); + BigNumber.config({ DECIMAL_PLACES : 52, ROUNDING_MODE : 3 }); + T('42561960553952288419610167869608672152477976.7637409739', '264520977464840304990428792028340802894082649682880151.87', '1.609020235818898502867215862305232329970845e-10'); + BigNumber.config({ DECIMAL_PLACES : 33, ROUNDING_MODE : 4 }); + T('-8432160850933490778.69395', '-903254.8849', '9335306115578.905936669072754216997426392772559'); + BigNumber.config({ DECIMAL_PLACES : 9, ROUNDING_MODE : 6 }); + T('-68334918980853445275646478865113316249836762.819', '70067642250.1174035246005', '-9.75270706796744613698328349792670077865167e+32'); + BigNumber.config({ DECIMAL_PLACES : 93, ROUNDING_MODE : 2 }); + T('-125210874454495603116740976.379', '-77140850018624120914', '1623146.159580377099547403143409912506569866772423197071869436970879279367977438726091333988946827384'); + BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 2 }); + T('-71924.8159', '11792', '-6.09945860753052917232'); + BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 4 }); + T('26738605472616.34809488607216342324130569467943599370', '-17848616068000574690442.240120938', '-1.498077238635546584508183889182860823798452319e-9'); + BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 3 }); + T('307728725034195445693818971152253110685320114730380.6360569', '-0.04791701101144421929437607982012423', '-6.42211854492967670147798513527529587291182927874576501544632945181254387470070916840287404357386e+51'); + BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 4 }); + T('1063469210609337404733995767077620', '157322.98262357845381312530739737044008643142255', '6.759782918391938594011489608657438980256117690815000289918435942612008089111174784431469936177200692245e+27'); + BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 5 }); + T('4721242310773063039516988216828059', '171400453736307845213676552.5264455791334235426375810', '27545098.0896263513314335'); + BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 2 }); + T('-3554846810422675439500939761.48523775084025501057', '3315590942268820.06130581', '-1072160852264.283056864970073195051461622948996967853643073530490983'); + BigNumber.config({ DECIMAL_PLACES : 63, ROUNDING_MODE : 1 }); + T('-315298.27020265072220508757446517308919757747772180364', '24674904266140137236693349157364359', '-1.2778094974630368249191962362594215e-29'); + BigNumber.config({ DECIMAL_PLACES : 45, ROUNDING_MODE : 0 }); + T('0.00000753194455756794779974643789264996726', '5991522948863651', '1.257100176674855652252945e-21'); + BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 6 }); + T('-3.3', '-776998301627358692703026', '4.24711353047802405395217647701160391118416266e-24'); + BigNumber.config({ DECIMAL_PLACES : 38, ROUNDING_MODE : 0 }); + T('10977918093.74255295043893514908080', '4088067972470992.747117265605094792327745422289731492', '0.00000268535605759682552653099970835593'); + BigNumber.config({ DECIMAL_PLACES : 28, ROUNDING_MODE : 2 }); + T('6856439', '-17246005.9309043907638765902', '-0.3975667773437002568945641473'); + BigNumber.config({ DECIMAL_PLACES : 28, ROUNDING_MODE : 3 }); + T('298153651523492269765657502906019847', '0.000000000000000000583575767236932787472350570065527', '5.109082115166741717506899313404018033667092958887247086907247281013218226491031783e+53'); + BigNumber.config({ DECIMAL_PLACES : 78, ROUNDING_MODE : 3 }); + T('112673834429924858801595684285086.239309381981428', '-267459587411.5959056', '-421274240046329341201.64843123511725546164313842329550287026178410911552652826352283112794653674395'); + BigNumber.config({ DECIMAL_PLACES : 36, ROUNDING_MODE : 0 }); + T('0.00304013112747436879592085927', '-466567742.705324788338', '-6.515947951837847345154447e-12'); + BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 3 }); + T('408039980934080654190.10495', '7740827823125488053793915672307134647697764525', '5.271270596086294571867592375848040651671580781285931860265302318308353e-26'); + BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 6 }); + T('-14.35994958840514231708055641', '-138375506625046841270057381331164746.7022255338810', '0'); + BigNumber.config({ DECIMAL_PLACES : 35, ROUNDING_MODE : 0 }); + T('-2.30545415622', '4.1764147639455207766144357157533380499118421354269', '-0.55201752855647971419990305582933793'); + BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 1 }); + T('7', '1517830154233.256354618065521871308', '4.611846e-12'); + BigNumber.config({ DECIMAL_PLACES : 24, ROUNDING_MODE : 2 }); + T('-21565167379464493382078.1', '-0.00000000000000000015054398271503612276516', '1.43248285255512869987845415014282003732353935506369813229992050816e+41'); + BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 6 }); + T('-131265273607.6', '8527358545951160003249799367499710', '-1.539342727296549809434811171262223366509053565931192709376536462468975683e-23'); + BigNumber.config({ DECIMAL_PLACES : 82, ROUNDING_MODE : 3 }); + T('-7400030128880533683116353483202129315391542218419503647458', '188653216.4064145408994610', '-3.92255709700633529926085692361021860510356981553906056412282862405749365644716719294480094765319042816975315928831243535386869738152e+49'); + BigNumber.config({ DECIMAL_PLACES : 62, ROUNDING_MODE : 5 }); + T('0.000000000000000002980505992129620520127442706896038555653286379104580', '207.911145544', '1.433547963160473961381177693472099296632254e-20'); + BigNumber.config({ DECIMAL_PLACES : 88, ROUNDING_MODE : 1 }); + T('54641030767.2', '-0.000000000403625437861745840964628129162180522645168390994640836', '-135375587467101709281.226161911575732696130284100795168990520198665934091307492071006553764178017574533458784'); + BigNumber.config({ DECIMAL_PLACES : 40, ROUNDING_MODE : 6 }); + T('851736532738029.60209470571380221276333463072', '-0.00000000000000000114929416269306152351105287227218987361', '-7.410953264934490688278940003920834703403777176356982558393641846764034783e+32'); + BigNumber.config({ DECIMAL_PLACES : 23, ROUNDING_MODE : 3 }); + T('-219483098', '-0.00000000000000000018804816235407398287255832650176', '1.16716427989728235020019911955583225548719003865002e+27'); + BigNumber.config({ DECIMAL_PLACES : 99, ROUNDING_MODE : 0 }); + T('217289940219309246936943195754200410.51455750668', '-63355238534381491744596342895551077252.71', '-0.003429707554512493626949130409168057711026740378896565331657739651625001466882133520579718359906689'); + BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 2 }); + T('-176541.53078', '5636726158518564799096514888456095728041', '-3.1319870047829032e-35'); + BigNumber.config({ DECIMAL_PLACES : 83, ROUNDING_MODE : 1 }); + T('310106593797778297794006050555480612566516210.801605287605694', '-62617459184350755065823836651746823705452786558', '-0.00495239822626465799890522013613597052253609868931450749761349632061009409030943676'); + BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 2 }); + T('-3.93331852', '0.00000000000000000017547329228603830', '-22415482542997560447.66801836373937215965155736854780121152633001674'); + BigNumber.config({ DECIMAL_PLACES : 26, ROUNDING_MODE : 3 }); + T('-3', '33.42273262067', '-0.08975926756343902112491292'); + BigNumber.config({ DECIMAL_PLACES : 33, ROUNDING_MODE : 3 }); + T('-1085841368229.94743889887943410676813741370545796101970', '149610498943278043790373953905696078398598966574.065396393', '-1e-33'); + BigNumber.config({ DECIMAL_PLACES : 26, ROUNDING_MODE : 4 }); + T('-6855.326', '-6.61', '1037.11437216338880484114977307'); + BigNumber.config({ DECIMAL_PLACES : 71, ROUNDING_MODE : 4 }); + T('482589.39032468525307515', '345620881.1', '0.00139629697369197885849365714148108512532809465139691758051015511979146'); + BigNumber.config({ DECIMAL_PLACES : 37, ROUNDING_MODE : 2 }); + T('0.00000000000000018873012642883182832958209507253635128', '-316826894495349657610523346282389288091344754546005352412', '0'); + BigNumber.config({ DECIMAL_PLACES : 74, ROUNDING_MODE : 2 }); + T('-0.003915504234894627513', '-2561178368548558.3', '1.5287901393269916111965312123266261603335417944432306248e-18'); + BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 1 }); + T('-0.0000012845584111321936644262379417469638861846223574683905234', '951434782049434793413124934712308714591814021.8202740667', '-1.350127654956228395192441e-51'); + BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 3 }); + T('8415663741.6', '-1168289085861655174422234758990445457837305401386032655', '-7.21e-45'); + BigNumber.config({ DECIMAL_PLACES : 85, ROUNDING_MODE : 3 }); + T('15858062669861942257032429298168.061284122274275', '-0.0000632521476327715811032330323136282408108535316', '-2.507118455792277110934258995900949920340359411372602248666188373364931628696825287100597787416097233309978475814394363763e+35'); + BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 0 }); + T('0', '-0.00000000000000000159599025962211', '0'); + BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 0 }); + T('8012431158360693111.3422024194980884319325209488819277405', '2948627644398253137185410152161559.235676341420', '1'); + BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 1 }); + T('-16692108859470873479799641256137360063087170548211631950768', '37848415114043098758799686016767986.0657242693524879935887', '-4.410253060577300514678904143e+23'); + BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 5 }); + T('-4243226161', '-241235.3', '17589.5740009857595'); + BigNumber.config({ DECIMAL_PLACES : 45, ROUNDING_MODE : 2 }); + T('5671433914958075722313198736271285623794662361', '-1529262.981377059120344780400627536817216209608491794503', '-3.708606030501768874471207730787071653798986595411035303838097501627810686978706206155e+39'); + BigNumber.config({ DECIMAL_PLACES : 59, ROUNDING_MODE : 4 }); + T('15076573039121823.4228488681', '-161804219260400857597665.80520571234560198305156', '-9.317787328436859431009430461085894566148816536724215e-8'); + BigNumber.config({ DECIMAL_PLACES : 52, ROUNDING_MODE : 1 }); + T('294.8050', '-1.964', '-150.1043788187372708757637474541751527494908350305498981'); + BigNumber.config({ DECIMAL_PLACES : 99, ROUNDING_MODE : 4 }); + T('-84259403135132485171174.02638116507', '-114.25883199713512140486366465931939269178', '737443238849537430255.562897456860924998387708483089712271920400180306835801578116806671059372285530053918368188248465511'); + BigNumber.config({ DECIMAL_PLACES : 23, ROUNDING_MODE : 2 }); + T('0.00000000000000000046329876', '17951420713085087388514.79177201848797', '1e-23'); + BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 1 }); + T('-0.0002610697214141198547803066285872786447209856526772883974', '-178463559138028170694183028.197759979905991059847', '0'); + BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 0 }); + T('10467906625915426931.86040412', '-47739824225253084453503246028.8', '-1e-8'); + BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 4 }); + T('0.00000016666446981689100983647498315835174605580766', '580387622169032702425477961127755252936733664151030131299360', '0'); + BigNumber.config({ DECIMAL_PLACES : 45, ROUNDING_MODE : 1 }); + T('-224.769', '-24801326309696', '9.062781449398827959722015515861155e-12'); + BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 3 }); + T('-7', '0.000000012707354813051516957', '-550862087.58493263467522230046127695732435950160199797173188670287711444397512'); + BigNumber.config({ DECIMAL_PLACES : 98, ROUNDING_MODE : 1 }); + T('-4.3656189571419062523183949678080584000285054747999', '-3293692576993760246104014415046803314.10507195460869', '1.32544821809888565170762281523897677163949595277716403402859734e-36'); + BigNumber.config({ DECIMAL_PLACES : 1, ROUNDING_MODE : 3 }); + T('14.1957398777937590270133873552634805598', '-0.000000000000012563918029887170815634048090532307766027871798898663876504', '-1129881605724010.2'); + BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 1 }); + T('16935191410004228.460802414832644503742366518153', '1643218550169899824827110750524231685.35', '1.030611016912705990838456e-20'); + BigNumber.config({ DECIMAL_PLACES : 30, ROUNDING_MODE : 1 }); + T('2050277235517443724707910505052.4731518708963', '-0.0000000000042732754158552556793926871242449077002300282150840251359349', '-4.79790567186529005222705249614533112509378367129076106364835811006606986e+41'); + BigNumber.config({ DECIMAL_PLACES : 42, ROUNDING_MODE : 4 }); + T('72300288767.4686', '-9079012869267363449548957.7441533', '-7.963452614127962619893834937e-15'); + BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 6 }); + T('-192278.89137554', '683.9', '-281.15059420315835648486620851001608422283959643222693376224594238923819271823365989179704635180582'); + BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 6 }); + T('-37071737652639279645773001054327733919457032661726466338296', '214460775018254857803.123699146008820945', '-1.72860224204093922691043082274757832113184495522998e+38'); + BigNumber.config({ DECIMAL_PLACES : 2, ROUNDING_MODE : 5 }); + T('3508739066826554438413966431669941507968277256138700398.3075', '26272394523500608871817279308.076254831783976099304629', '1.3355231338688956416143598722e+26'); + BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 2 }); + T('-0.000000000000005888147537781712378940578659229857732339205517', '-0.0000000000357908539645432479549', '0.00016451542462817163'); + BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 4 }); + T('8.9', '2351287825342227.207075229251', '0'); + BigNumber.config({ DECIMAL_PLACES : 22, ROUNDING_MODE : 1 }); + T('-64917.2734106506408', '-79744.96255', '0.8140611185308110825616'); + BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 0 }); + T('1471910.39014886', '-0.00000000000000002292836897845593599690424193', '-6.41960355545526809487536529467727428238048655970053407194427902647011729951927080268452364187789104659194714727650982884e+22'); + BigNumber.config({ DECIMAL_PLACES : 21, ROUNDING_MODE : 2 }); + T('3358.2557686025', '-13824816.20862637369171939065', '-0.000242915039008404617'); + BigNumber.config({ DECIMAL_PLACES : 73, ROUNDING_MODE : 6 }); + T('0', '-176919225043114407825860493712084027468392984564250681392777', '0'); + BigNumber.config({ DECIMAL_PLACES : 55, ROUNDING_MODE : 3 }); + T('-94.74', '-329651568302571800500603522925.308423', '2.873943554639563322615843605e-28'); + BigNumber.config({ DECIMAL_PLACES : 64, ROUNDING_MODE : 5 }); + T('0.0000000000000000110731296084', '0.000000000000000295624180561344759822516282345296563007307492621010', '0.0374567790340216195083300376735558825475464199235127102791290477'); + BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 6 }); + T('83646713.06305786000482933881370', '-0.06053394237208041753996944641', '-1381815057.5574862847330003528953448813081937401796458491197415668944330729137829413685834'); + BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 1 }); + T('-38.86923', '110300320411935711291231863077329191512675361', '0'); + BigNumber.config({ DECIMAL_PLACES : 40, ROUNDING_MODE : 6 }); + T('-289778228389644.735858', '19872423685993.5061287641581109971172568923761866135070070', '-14.5819268433717224346668613163636009356892'); + BigNumber.config({ DECIMAL_PLACES : 55, ROUNDING_MODE : 5 }); + T('2349185036898629126357558810676316514842302299.0', '1207399206492272243854506147853098478', '1945657264.1980319963362423395380699788180442632737552157456700012'); + BigNumber.config({ DECIMAL_PLACES : 89, ROUNDING_MODE : 5 }); + T('-0.00000000002296696350413542311429801774342', '-214365998434669728.291424303429733970843831227714', '1.0713902238155014381665505340351475808957657678046297897617544e-28'); + BigNumber.config({ DECIMAL_PLACES : 67, ROUNDING_MODE : 0 }); + T('1.2', '0.00044989117011003817105772781526543396707216835596267685462', '2667.3117405404820335329558172000325992151689227771625583656817424662783'); + BigNumber.config({ DECIMAL_PLACES : 88, ROUNDING_MODE : 1 }); + T('9595745885499426.7169802725', '-0.000000000327743137731955836', '-2.92782511081812216573540637169470332617972314738093221280858903756193467761589986022579484529723405084138308540303e+25'); + BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 5 }); + T('-688719.8', '0.000000044444185325676', '-15496285846016.33736365698488460633918072624981148372653014620199623652720088517243'); + BigNumber.config({ DECIMAL_PLACES : 48, ROUNDING_MODE : 1 }); + T('713224612262773653680241404914834356988249073', '380979.615840832555552739491029492', '1.87208076917361364947269850626183178839836232939369106393408135378988816660528694640277e+39'); + BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 1 }); + T('-3275063595', '-0.000000000000000072', '4.5486994375e+25'); + BigNumber.config({ DECIMAL_PLACES : 25, ROUNDING_MODE : 5 }); + T('-2.6', '170162024025946751328594.69323995086202421', '-1.53e-23'); + BigNumber.config({ DECIMAL_PLACES : 58, ROUNDING_MODE : 4 }); + T('-0.0162866737821637854634366877470516190361196456175', '287.485', '-0.0000566522558817461274968665765067798982072791471468076595'); + BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 6 }); + T('0.00000000000000685125450752007', '-25463715301672573', '-2.69059500012162339283072238861321781124021695474267719e-31'); + BigNumber.config({ DECIMAL_PLACES : 33, ROUNDING_MODE : 1 }); + T('-0.00000006417176012350484981296579048552883728704381828848778164396', '0.000000000052422588311249876007', '-1224.124221843002820600268753483592272'); + BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 3 }); + T('-16621167342820978706536182564384834520748084784088309400267', '25771141077830118867510', '-6.44952712517627078574684074824441580996230842092e+35'); + BigNumber.config({ DECIMAL_PLACES : 55, ROUNDING_MODE : 5 }); + T('-7888.596835206861517863152770552325131999866', '-0.0000000000069530421297744953074562967729205968985', '1134553291634191.2930516886628897927997661960306833620003034495097750648'); + BigNumber.config({ DECIMAL_PLACES : 35, ROUNDING_MODE : 3 }); + T('1.2802', '0.000000000000000320733183354699837542267', '3991479729692399.14388544644270182793510362289414907'); + BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 5 }); + T('-1143167591244810954376007417870910708549794020221806675.867', '-83.1001483252906', '1.375650482319176190320461611356383156139441669005066072939373e+52'); + BigNumber.config({ DECIMAL_PLACES : 46, ROUNDING_MODE : 5 }); + T('-361334608750433443027647', '0.113122', '-3.194202796542082380329617581018723148459185657962200102544155867116918e+24'); + BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 0 }); + T('-0.00000000000000000002494217', '4.8', '-1e-11'); + BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 3 }); + T('0.000000000000004645660102106500861269', '-0.4071388488567123873955', '-2e-14'); + BigNumber.config({ DECIMAL_PLACES : 74, ROUNDING_MODE : 3 }); + T('-0.0000000000000000140510767340573128875519317863769472177687242606399626', '-956282191.599509427461617089251166031', '1.469344180775238969387615485222865453266870409511e-26'); + BigNumber.config({ DECIMAL_PLACES : 30, ROUNDING_MODE : 4 }); + T('-2906876362334903297.024', '-19.60375223', '148281631405566040.304111719534827032447144941293'); + BigNumber.config({ DECIMAL_PLACES : 43, ROUNDING_MODE : 5 }); + T('-914878775966528731607.022587027744', '1671043826055263405', '-547.489396568509031642388212363936459110501972'); + BigNumber.config({ DECIMAL_PLACES : 55, ROUNDING_MODE : 3 }); + T('70450801694587804894143.61391892280709936158771890305892', '-108591331528118593575781087160101701786013931909', '-6.487700325909099293397426242451e-25'); + BigNumber.config({ DECIMAL_PLACES : 48, ROUNDING_MODE : 5 }); + T('-891918043949231447159022241220674070858767357271692794630', '4.0980', '-2.1764715567331172453856082021002295530960648054458096501464128843338213762811127379209370424597364568082e+56'); + BigNumber.config({ DECIMAL_PLACES : 9, ROUNDING_MODE : 0 }); + T('0.000000000000000005733565055241296218580315962162371319238205673524041', '-70690401.6714', '-1e-9'); + BigNumber.config({ DECIMAL_PLACES : 77, ROUNDING_MODE : 4 }); + T('1.5', '-253064781747908408661311723771677219591548.42553453449777', '-5.92733603482697001046428303053562006e-42'); + BigNumber.config({ DECIMAL_PLACES : 66, ROUNDING_MODE : 1 }); + T('-199265060704729205211360524527945335218.86764046022', '7109171105669220246688089204413433520955053246149', '-2.8029295925347042674352163178171548898777443107245580741e-11'); + BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 2 }); + T('-0.0000000607986152676359078812147626961003363', '532.239727', '-1.142316369548940263176084988035858e-10'); + BigNumber.config({ DECIMAL_PLACES : 23, ROUNDING_MODE : 5 }); + T('-9344541484.76898', '-2373.199483667610410542181360631', '3937528.87149952439694531588665'); + BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 1 }); + T('48', '-3550719.914288', '-0.000013518385329929660293949126688380820429236008649140673816900638235114992003924'); + BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 4 }); + T('-1.021086528836383939047778', '-0.000119076372102297630912420193554175995', '8575.0557'); + BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 3 }); + T('-6705971596222771.022777582265649902', '1537909959592.9', '-4360.444871556660007578271067790611195272808960542501804095769354694463194903891490920167'); + BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 3 }); + T('529745345068548744372662151971878714.04526189296', '-409.8616', '-1.2924981141647540154351179812206820888935725936755236401751225291659428450969790778155357808588e+33'); + BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 5 }); + T('0.0000000000000000001302317170194506400686998546015573602071', '-24.78978867731652441155280376758014', '0'); + BigNumber.config({ DECIMAL_PLACES : 40, ROUNDING_MODE : 1 }); + T('-2146274113875.49496314', '9729696205365623186698890257059.75517088857939198406881714', '-2.205900439822460138471e-19'); + BigNumber.config({ DECIMAL_PLACES : 64, ROUNDING_MODE : 1 }); + T('-351.2', '-3', '117.0666666666666666666666666666666666666666666666666666666666666666'); + BigNumber.config({ DECIMAL_PLACES : 39, ROUNDING_MODE : 4 }); + T('-548554848.30501', '-27614851500', '0.019864486626155132501798896148328011107'); + BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 0 }); + T('0.0000001111574933510049', '215750993474963291939983019990989913881.71402092789336', '5.1521196524132859469e-46'); + BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 0 }); + T('-0.0000000001048421705472715553356589700382964723258539804228872585', '-29109', '1e-13'); + BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 2 }); + T('-49680877924193', '417064263753223072731709638223877170625145.512441832', '-1.19120438363880478031774493e-28'); + BigNumber.config({ DECIMAL_PLACES : 52, ROUNDING_MODE : 6 }); + T('0.000000000000000035480345932478838641527', '9562537233485133001.244440733051688169050', '3.7103485263552569e-36'); + BigNumber.config({ DECIMAL_PLACES : 2, ROUNDING_MODE : 4 }); + T('-279.7217286066255', '-3147.195', '0.09'); + BigNumber.config({ DECIMAL_PLACES : 27, ROUNDING_MODE : 1 }); + T('111829376038647492442232803887249585787639546', '-785143155.00968401893972952268461155222573094239818435', '-1.42431829565231553100788064745240767226374600650422274265871991e+35'); + BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 5 }); + T('-960689828.193588938349683105430160033541668181958553575', '9684405008594.22166376', '-0.000099199674873267376107866212657265407443705080626617764172227837998739700676364'); + BigNumber.config({ DECIMAL_PLACES : 100, ROUNDING_MODE : 0 }); + T('50376720', '-0.0000000000000000001570607389244761570', '-3.207467400508285297088827902284001067549518139205000192129304697371527353270951720777532405603810353446983929799951617047558699e+26'); + BigNumber.config({ DECIMAL_PLACES : 48, ROUNDING_MODE : 2 }); + T('404', '-6183.77113262816412790095', '-0.06533230149290728824615010987067121839540402798'); + BigNumber.config({ DECIMAL_PLACES : 78, ROUNDING_MODE : 5 }); + T('49337215720677521.3443833806616883904146777', '1571453293327845', '31.395916079819832887132998326286413259879389138684913919250570049327770165026557'); + BigNumber.config({ DECIMAL_PLACES : 62, ROUNDING_MODE : 0 }); + T('0.00000000000000003218259158136497095066393123', '0.0000000000000008461224058775031', '0.03803538513790897970897588277140181040692134848067786983140446'); + BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 1 }); + T('0.00030', '11022951460.37551699698035372674421839175342441352404496550888', '0'); + BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 6 }); + T('5719176664843253317578321046372.25184848', '20017755600840139934572319136465973644724390561613964532', '2.85705189876692318995459448300938593640135107e-25'); + BigNumber.config({ DECIMAL_PLACES : 31, ROUNDING_MODE : 3 }); + T('-53063085311888565757232761359792949.5308110327468742', '0.00006630772089294890911071543105161542606', '-8.00255001940976627814140218779213334551277226050833965949950813384147e+38'); + BigNumber.config({ DECIMAL_PLACES : 23, ROUNDING_MODE : 6 }); + T('0.000000214165487233603125515625830085104756776', '0.0000000000000000133131666', '16086742821.47142404990453811981176'); + BigNumber.config({ DECIMAL_PLACES : 21, ROUNDING_MODE : 6 }); + T('-1.3809', '-104175880995529544230786200013858153463.6469561', '0'); + BigNumber.config({ DECIMAL_PLACES : 96, ROUNDING_MODE : 5 }); + T('-80.67336', '-2.4', '33.6139'); + BigNumber.config({ DECIMAL_PLACES : 45, ROUNDING_MODE : 2 }); + T('0.0000000000007711074021569872054857920506375960354991911113', '-5035148688719256503890304372097300573538350546.1866353673298', '0'); + BigNumber.config({ DECIMAL_PLACES : 31, ROUNDING_MODE : 6 }); + T('0.00000000926040147909616485250107541245568393863', '-0.0026523052948041324107443300384238377', '-0.0000034914538297070464119113675'); + BigNumber.config({ DECIMAL_PLACES : 94, ROUNDING_MODE : 6 }); + T('-0.00000000000000000007299155404265500', '-14921050856070539136258836028715661812605', '4.8918507648513796522067331050373811e-60'); + BigNumber.config({ DECIMAL_PLACES : 9, ROUNDING_MODE : 6 }); + T('4185278545255683361119', '1291.04892', '3241766040326096520.896357669'); + BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 3 }); + T('2739.863031800302191994479658708940460984249926450286934595', '0.000000000000000002501528355313917315261103710668929184662215159415032', '1.0952756245917013434979529e+21'); + BigNumber.config({ DECIMAL_PLACES : 26, ROUNDING_MODE : 2 }); + T('6.0', '0.000000000000000000446', '13452914798206278026.9058295964125560538116592'); + BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 2 }); + T('-85532865547198467812607', '-0.0643871', '1.32841618192461638763986885571799321e+24'); + BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 1 }); + T('-0.00000076', '567905990280637889298798417785362163', '-1.33824966280851596454298604e-42'); + BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 0 }); + T('101398028158543389230299115547369007286824902001700116.2553', '-52.2912983373674988296405356', '-1.9390994559812658653832384200571004042037835706815005616110831197380767996466795759350907618753752320858682762688914411513987920202e+51'); + BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 6 }); + T('209146073148637058825542155473422546.08331', '-6475219366.0774934458548879804017034412490751', '-3.2299457566536760101397850799376230370553508534555202198732360787918707517850145708654685805035127577e+25'); + BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 5 }); + T('114628368289852.820180317085131197751245220', '0.0000000000438542841932421628941970348155178396469330199902031464', '2.613846523745490051969847204505399588223338833211389607553540441069773718251499138e+24'); + BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 5 }); + T('517935605107341851096345074856072992.7156008827474683881', '127863800225.0482905517', '4.050682086687105904243568694437970615324e+24'); + BigNumber.config({ DECIMAL_PLACES : 94, ROUNDING_MODE : 5 }); + T('-27286.7821863357398984', '-248871877396', '1.096418867083063497845949282782980272286610399834378561244933632043150788431238808799716e-7'); + BigNumber.config({ DECIMAL_PLACES : 92, ROUNDING_MODE : 3 }); + T('0.00000000000000013', '10860.2671042', '1.197023965918158619058617241555118620007835884254365096244425387638340255e-20'); + BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 2 }); + T('-34576748.1602107548', '-0.00000000000000000008931227430020711652680604102', '3.87144414708187212666840381667854701596189258690906315001487272148181857244354283721918201250906497585496589e+26'); + BigNumber.config({ DECIMAL_PLACES : 33, ROUNDING_MODE : 6 }); + T('0.000000000000115930341935456194307', '0.0000000981174908550652891749896427792341965557406130630062531', '0.000001181546133366814704555871801'); + BigNumber.config({ DECIMAL_PLACES : 63, ROUNDING_MODE : 3 }); + T('0.00000000000000504719252613475311161395980979664810884', '-0.000043082057015271834248968602242413955837904', '-1.17153006977953996190998594253150683389023987586146099e-10'); + BigNumber.config({ DECIMAL_PLACES : 1, ROUNDING_MODE : 3 }); + T('26641.49783545436873820701305448661911594248101355910145979', '-135.010709152353975219390385818328987', '-197.4'); + BigNumber.config({ DECIMAL_PLACES : 1, ROUNDING_MODE : 3 }); + T('0.0000000032140124045405954', '-0.005727093', '-0.1'); + BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 5 }); + T('-0.000000099134380264803867304756248610297405939983585', '-0.00000011736539996855192079409890', '0.844664443621092260838038656775263676785023896530963481'); + BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 6 }); + T('4.108835145', '2.16307342640344721563818985739931434776831645', '1.899535676803991'); + BigNumber.config({ DECIMAL_PLACES : 30, ROUNDING_MODE : 2 }); + T('4656898732572132613.4410483143447805', '-0.0000000009501781415852752916737394036430371199560948203715', '-4.901079627871224417824715320394975940766906006571005665754e+27'); + BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 3 }); + T('-73.263441606903292174252398', '41834794533354231988607405203742026051715713499', '-1.751256159474895662739518935572654737e-45'); + BigNumber.config({ DECIMAL_PLACES : 80, ROUNDING_MODE : 4 }); + T('5904.9925', '-0.000000000000001969995137425189849707027492804513926489', '-2997465520507783916.33831653542548149707564847473062713070397506965140542636523575676815465298609254'); + BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 1 }); + T('880022438074316975848739277453909252022061607980.53194460', '5242501764328018092315439.6288940', '1.678630695105007602278206462360343332224278913580415169255108606490213582659658913697707617099644772083987778310417840744e+23'); + BigNumber.config({ DECIMAL_PLACES : 55, ROUNDING_MODE : 6 }); + T('-709221917884584205726767929753430.745157457926918049', '2.076632660276337510040', '-3.415249752405454532590867318577044409344398629076630420528864457538549690273648046774419e+32'); + BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 4 }); + T('146127526244109040849597787', '2.8374023987494239474733725457373001365241', '5.15004591201143277102110410621545875865437570800644910341093887982827771307526737146399470946988638685e+25'); + BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 6 }); + T('904680341646808206060972295', '0.31148361458275280949052429518', '2.90442353720169443586293613e+27'); + BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 1 }); + T('2203.4076345788', '724154063664.87046', '3.04273323196941940848187357605107963583858770536700794093631e-9'); + BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 2 }); + T('1695969273341.94745291649760098', '15417764236218795258.43748711', '1.10000986353e-7'); + BigNumber.config({ DECIMAL_PLACES : 89, ROUNDING_MODE : 6 }); + T('-73659.540208377', '-7102156144000910331.562', '1.037143350763924834327534486604821120969035141662779199421366204045278117756e-14'); + BigNumber.config({ DECIMAL_PLACES : 6, ROUNDING_MODE : 4 }); + T('-2784953382351286.3086364024258778406', '4107211058684934182', '-0.000678'); + BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 3 }); + T('0.000000000000000000019553789848042961164455254267', '33692178941832704881943898861492602275813376012710964549', '0'); + BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 2 }); + T('0.0483051225529222178571395836923582375668787163795829', '-564324922583504501767854.4731149680171842712', '0'); + BigNumber.config({ DECIMAL_PLACES : 49, ROUNDING_MODE : 2 }); + T('-858453249829127994094226059212202311366908614011', '29034593154.1283532140920733437', '-2.95665672073337373881597003673065506153688282989555301421030066565454579780325802308201e+37'); + BigNumber.config({ DECIMAL_PLACES : 80, ROUNDING_MODE : 0 }); + T('257334687865074235664067782848438082936550966405972.9', '176273197.015992281231', '1.45986282782247206172160069403941119085726865919459578203280519328395117540850944210193286328940285732489888274735976297331e+42'); + BigNumber.config({ DECIMAL_PLACES : 94, ROUNDING_MODE : 4 }); + T('0.00000000000000000133217566057607597276199009470313325350804245', '-0.0000000000000101200408354784046322638106120605309413493311442431555996402', '-0.0001316373799506610430010703195442828939530157166299880802038865535054498692020690474160903264'); + BigNumber.config({ DECIMAL_PLACES : 72, ROUNDING_MODE : 4 }); + T('-1867285.33115732', '19603126380430.651403412416051145200210569', '-9.5254465788752341381720655515657815792150430965485531082566262974e-8'); + BigNumber.config({ DECIMAL_PLACES : 6, ROUNDING_MODE : 6 }); + T('2359244379735388.679109363378009469', '-32.80437753596009375903638080174562243194634612123402', '-71918583949632.626233'); + BigNumber.config({ DECIMAL_PLACES : 53, ROUNDING_MODE : 4 }); + T('0', '25.3', '0'); + BigNumber.config({ DECIMAL_PLACES : 29, ROUNDING_MODE : 4 }); + T('-0.000034397239481491218241448049401692260200746', '6242147450743749254584513236399823155746667146550', '0'); + BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 5 }); + T('0.00000000008090115235821457237042557042', '0.000002260746735132616032831452512375486215969231', '0.000035785146164755552882292240073664970094847240235802197408557921086'); + BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 0 }); + T('0.000000000000000000753854880082021663', '-0.0000000847084338839566150950878853790084567', '-0.0001'); + BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 6 }); + T('316033663553049202534769174666', '-36485934550866303347893992823469.719631', '-0.00866179439949539297322773053625108376549649093'); + BigNumber.config({ DECIMAL_PLACES : 35, ROUNDING_MODE : 5 }); + T('10350911', '-1554504392304.57922084867', '-0.00000665865664403469343653105181196'); + BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 5 }); + T('-0.000000000001772239', '-35562461.9776179842035639740470021156474995631481053688188', '0'); + BigNumber.config({ DECIMAL_PLACES : 64, ROUNDING_MODE : 6 }); + T('-0.0049554685787730540321344924794239555857558650835', '240110', '-2.06383265119031028784077817642911814824699724438798883845e-8'); + BigNumber.config({ DECIMAL_PLACES : 78, ROUNDING_MODE : 2 }); + T('-166.74225666994937800532899', '6131671721.783', '-2.7193604653946343511577077632404311198418677432590846226466038070643979e-8'); + BigNumber.config({ DECIMAL_PLACES : 66, ROUNDING_MODE : 0 }); + T('36259960930.792501556', '-120492187706.163067280', '-0.3009320489658420990850285700429899529669080813568870895438293314'); + BigNumber.config({ DECIMAL_PLACES : 87, ROUNDING_MODE : 3 }); + T('-570058350623765908', '-3.4747', '164059731954921549.486286585892307249546723458140271102541226580712003914006964630040003453535557026505885'); + BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 3 }); + T('-2609.47', '-1109610', '0.002351700146898459'); + BigNumber.config({ DECIMAL_PLACES : 41, ROUNDING_MODE : 0 }); + T('454946353192200382741.398543517963735540199082579799572681', '-9933180406199232073881.485077659037299291573620027', '-0.04580067355952494109598732785954730693081'); + BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 3 }); + T('-250668891074943688181903895734299909.55191304408', '-3', '8.3556297024981229393967965244766636517304348026e+34'); + BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 5 }); + T('8.89309', '-42069038047408448018408161.5775583', '-2.11392758493269976782067132153016897036258530108627831048883e-25'); + BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 3 }); + T('0.0000000000000000000173745082126754244569538931516859447571118122', '0.123310867245083651940795939037593765653669051123530055393', '0'); + BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 5 }); + T('0.0000000008775456040', '361131497699701998764610751966.50423036', '0'); + BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 2 }); + T('-5153091518.7406040817400744299613233833', '418492316246282598198213462451341163504999408.4406', '-1.2313467460912738294189675806054139004135565214069e-35'); + BigNumber.config({ DECIMAL_PLACES : 86, ROUNDING_MODE : 5 }); + T('0.0000219673332856121664698', '-254444683189579351762035.301650774', '-8.633441662148995949718645766516727344425906188881263491056e-29'); + BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 1 }); + T('0.0000000000000124622659253523913966', '5850.420189065839038762899001934149661715', '0'); + BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 0 }); + T('-688730416.557', '-0.0000000000003951648906503041270453814', '1.7428937460096442372912826654274612114e+21'); + BigNumber.config({ DECIMAL_PLACES : 91, ROUNDING_MODE : 1 }); + T('-9931679467.75', '-1502870206.88709372530814748081674179420111', '6.6084745191147023911621614637629767474400210980963073076390839554208942588543709811596179927'); + BigNumber.config({ DECIMAL_PLACES : 22, ROUNDING_MODE : 4 }); + T('-108428301296313798056110.5721', '-0.00000000000000000204108406597952289572874685216396019', '5.31228983183888130868233422038052762615048646618698180513643611e+40'); + BigNumber.config({ DECIMAL_PLACES : 96, ROUNDING_MODE : 5 }); + T('-365370146.51147866658932522008385261549678', '125512291743327891715725307.614734016887918162081', '-2.911030795761893012183859646040100496262923971339613128613262618010840457978133e-18'); + BigNumber.config({ DECIMAL_PLACES : 64, ROUNDING_MODE : 3 }); + T('55091794759768865373533577657924816002194789011.09983520679', '-73.60810429054803563072034723276752733800453478', '-7.484474065832335746328690987160521918973730100422535780658416323279822817020347204019596161981598133613537277e+44'); + BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 4 }); + T('-380352779968328863604.7159023137659034062381486362120851020', '-8.31574', '45738897556721213458.419323152691871'); + BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 6 }); + T('0.307701303956069746120229064754446779950609104168219710688', '56234631729368940685764364261340863038476403298.3879528464', '0'); + BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 2 }); + T('-1', '19309036609717.9975597446909', '-5.17892228500262130489913347375e-14'); + BigNumber.config({ DECIMAL_PLACES : 83, ROUNDING_MODE : 6 }); + T('-44654585420706993.31742542473', '-0.0000000006027289838445011151208026441190957324081397995183071725019', '7.40873371243542049803459654582339018756502925344373225030046922681306937066090383255310952621481032745967895e+25'); + BigNumber.config({ DECIMAL_PLACES : 83, ROUNDING_MODE : 2 }); + T('-54925165836485672710857725560837377208296587799017133333', '-2825.605707071196726650040560595682826678276353136983797', '1.943836880674226514803730943918030498268112825893215789880695267023603689423771097277245357710607361173152416757068727241872149202600201e+52'); + BigNumber.config({ DECIMAL_PLACES : 32, ROUNDING_MODE : 3 }); + T('13374123411670978.062911770758751538931', '-787.9274745092872469065678639698824', '-16973800056915.43910091242974365104264145175506'); + BigNumber.config({ DECIMAL_PLACES : 7, ROUNDING_MODE : 0 }); + T('1', '-6449.1757131107317276427416', '-0.0001551'); + BigNumber.config({ DECIMAL_PLACES : 62, ROUNDING_MODE : 5 }); + T('15126486128137.793045187069', '-0.0000000000000000022510496179161314088799917337142144133422767760895', '-6.71974798233939632384744366781417676196601258305334434426205837476671258054663726653497745279e+30'); + BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 5 }); + T('-6783497223986906248522.10842171360686239', '995239063638516604728939933320055232395', '-6.81594751635548551852626892275416128903090281787135e-18'); + BigNumber.config({ DECIMAL_PLACES : 9, ROUNDING_MODE : 3 }); + T('12991.8369610336087353450639391088888468', '8032379664056113843191371.0433152382963207479', '0'); + BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 5 }); + T('207320924234.5712', '303336074981166.6737735336493520369939370482505115', '0.000683469396930263576853474725388888959253945256305'); + BigNumber.config({ DECIMAL_PLACES : 58, ROUNDING_MODE : 5 }); + T('-122.45739844454730332010332354973634641363705433251529879062', '9447912296854805543914573195864219175336', '-1.29613182888364839866e-38'); + BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 2 }); + T('349590.7', '7207227.0', '0.04850557641656076601999631758511283188388543887961347686148916913537'); + BigNumber.config({ DECIMAL_PLACES : 83, ROUNDING_MODE : 1 }); + T('-0.0000000000000000001888860109365319078', '-0.000002321644201149817244536824228879826140826', '8.135872449490074464564492664223720373248532002695337135382540057507505e-14'); + BigNumber.config({ DECIMAL_PLACES : 2, ROUNDING_MODE : 4 }); + T('500826035582651297779424569682263507887877', '33.50', '1.49500309129149641128186438711123435190411e+40'); + BigNumber.config({ DECIMAL_PLACES : 60, ROUNDING_MODE : 0 }); + T('-27.315', '-20.342583461', '1.342749806206632625696665932435276540218000583283928648889323'); + BigNumber.config({ DECIMAL_PLACES : 45, ROUNDING_MODE : 4 }); + T('-4.90239', '-1203284257311414630620587028501239894112650148935741214512974', '0'); + BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 6 }); + T('1540.7100926644385965642886366140301649420536640800072', '-74261873930837283483541410115094', '0'); + BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 6 }); + T('155.7220256964369725', '-0.000000020746714034683094342180099017091', '-7505864564.19606322718679'); + BigNumber.config({ DECIMAL_PLACES : 53, ROUNDING_MODE : 3 }); + T('32283641211618963310071449025.8495', '-576447533321496.2747620144597', '-56004474553998.53948365650714366827469487780203947325964417173665506'); + BigNumber.config({ DECIMAL_PLACES : 59, ROUNDING_MODE : 1 }); + T('-6433147.186', '59931478302051899030586452865719', '-1.0734170703377669987152475363845462e-25'); + BigNumber.config({ DECIMAL_PLACES : 93, ROUNDING_MODE : 6 }); + T('0.00000000466577741427532463', '-18573976984136355921', '-2.51199698280032716540277156996073220430913119443365130462967571657e-28'); + BigNumber.config({ DECIMAL_PLACES : 92, ROUNDING_MODE : 5 }); + T('-228072032680546.770883', '667966.49336024786', '-341442325.24780685952619124738397467667467644134322751996736273482306290614526993858625428910843656185'); + BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 0 }); + T('53808201.2', '48235479867479092736228179549920990039221992991677076129.821', '1e-10'); + BigNumber.config({ DECIMAL_PLACES : 59, ROUNDING_MODE : 4 }); + T('-0.00000000000004030778700864994296078948854865', '-72221323.757995430943875648364307870759083262', '5.5811476322029579127873718839080941865e-22'); + BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 5 }); + T('746358785365811820360.654028722178793304905563959742', '0.00000000006840313334942773374783021640222512135814698', '1.091117831624968857486483033762341569518050806597252386832902689378185612786696e+31'); + BigNumber.config({ DECIMAL_PLACES : 72, ROUNDING_MODE : 3 }); + T('-1.9928460955491', '0.000002915414882846452686', '-683554.888628198725265418444707421403141297633390196771552126781196548031150391'); + BigNumber.config({ DECIMAL_PLACES : 53, ROUNDING_MODE : 6 }); + T('-0.00000000000000002640606620253759119845156292542123235528407885509361011', '2225877810.7054042845879699', '-1.186321462729763623968610113e-26'); + BigNumber.config({ DECIMAL_PLACES : 1, ROUNDING_MODE : 3 }); + T('491006992221852923.2372757', '-5771788.05147488482793524714404816081', '-85070170256.3'); + BigNumber.config({ DECIMAL_PLACES : 100, ROUNDING_MODE : 1 }); + T('0.0000981386485829161211029033509485910521986286585709653', '-0.00000000035935692266885312474359284336230032101002204910280529', '-273095.1941987513659486714742389901737409321797571382330304242394579590130429502291583079670345125880776264'); + BigNumber.config({ DECIMAL_PLACES : 9, ROUNDING_MODE : 0 }); + T('-3923683972442238455.688548446964266542022', '19713681370671230635254350180084405861128341616369.4584429555', '-1e-9'); + BigNumber.config({ DECIMAL_PLACES : 64, ROUNDING_MODE : 0 }); + T('-12019045506661.95195991748896', '-186454790035745012458002110.71958138495746529141878', '6.44609103598668391198203675729393100331753335263482e-14'); + BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 6 }); + T('-65488790684370436924148606100053700570184631958478581922', '460.84', '-1.42107435735549077606433048563609279945717888982029732492839163267077511e+53'); + BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 1 }); + T('23908388557585898.944763203126346515', '-0.00000000000000210805209717029661834691580082360216713215139691', '-1.1341460009303786507920438774534305298096762e+31'); + BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 3 }); + T('-0.0000000000001369312765059911255372554888849748138390660848424486', '-26311153142729071623.17111628', '0'); + BigNumber.config({ DECIMAL_PLACES : 29, ROUNDING_MODE : 3 }); + T('2833029876644.131673912415342', '-45.65379979003026165930', '-62054634875.3822709505913533021000904804'); + BigNumber.config({ DECIMAL_PLACES : 91, ROUNDING_MODE : 3 }); + T('19656492438.7641125283751890529465696420484811555300946', '-1005436.06768996539408355729', '-19550.2161404710578624949538334409283518604168677743645083066149816019041732132891539115571943493'); + BigNumber.config({ DECIMAL_PLACES : 53, ROUNDING_MODE : 3 }); + T('0.000063991196310882687246812203176', '-764595382.4375863', '-8.36928887889357219598670551030780707299e-14'); + BigNumber.config({ DECIMAL_PLACES : 96, ROUNDING_MODE : 3 }); + T('-9810.22806', '-55098903081097.965527877279202077917868239272912209454994647', '1.78047610958074809297040708909727550678747899737824375163321547306442698717870558649741e-10'); + BigNumber.config({ DECIMAL_PLACES : 41, ROUNDING_MODE : 3 }); + T('-257974616398835703621139090661778182291833909045.657', '-0.00000000000510402729238806919217601232779156465287463125660636', '5.054334579745844122489589261660803166075894965367213510821807688904375456262367095936903170827544723e+58'); + BigNumber.config({ DECIMAL_PLACES : 100, ROUNDING_MODE : 6 }); + T('-479439506286434445997467789.002', '0.0000000000007160566', '-6.695553204682904200554366638084196137567896169101716260977135047704329518085581502914713725144073806456081823699411471104379178964344438694e+38'); + BigNumber.config({ DECIMAL_PLACES : 77, ROUNDING_MODE : 6 }); + T('1.1', '-0.0000000000000106915112901957396962988796099221567390946735312', '-102885361119032.33566720201763022927171653367059674347435084890560649723342406596400208115045'); + BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 4 }); + T('3', '414020.51', '0.00000724602'); + BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 1 }); + T('-0.000000000000000000061882221', '-4050.56', '1.5277448303444462000316005688102385842945173013114236e-23'); + BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 3 }); + T('3.493977827604', '-2260.9669858838401134240638110470714575857000205587', '-0.00154534668105211656336476613115631570453524176333962186796661763534818999'); + BigNumber.config({ DECIMAL_PLACES : 7, ROUNDING_MODE : 4 }); + T('3726948435765826.84326915', '-0.0000000000000001199875176686771574119495523565369900549966411022', '-3.10611345928256491693925279371396690965e+31'); + BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 3 }); + T('0.00000000000000000839371334481157616928404090451838851429883790182523489', '0.000000000000000001174084780027432860197437306718', '7'); + BigNumber.config({ DECIMAL_PLACES : 72, ROUNDING_MODE : 1 }); + T('0', '-12107750456.14393218963304300', '0'); + BigNumber.config({ DECIMAL_PLACES : 27, ROUNDING_MODE : 4 }); + T('32452469555159529657043699375492918544407971123035001805', '-3477672163570311948206.46815498316391271788119679886142737565', '-9.331664409057631447563529641108012734742022362851228519678586e+33'); + BigNumber.config({ DECIMAL_PLACES : 45, ROUNDING_MODE : 1 }); + T('-0.0000000025249569', '41860562832054775078467864.9889979', '-6.0318274031e-35'); + BigNumber.config({ DECIMAL_PLACES : 93, ROUNDING_MODE : 0 }); + T('-57420834404667479679602871688255.649313755187824928', '-526.869920757904877517805158954329176436765', '1.08984840740324172059414548358126843066175829927983359182059463499020186860098749851485099825966999174869239633061771228495e+29'); + BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 6 }); + T('-555674591960483912078.5951', '0.000000000000461167689042817244270167028412844448806527289735424240146', '-1.20492958453750680639966040339288280102588876934e+33'); + BigNumber.config({ DECIMAL_PLACES : 62, ROUNDING_MODE : 3 }); + T('-10269864203446021737948535841920170109700177003', '-8868278165.7332530984614728126275155317340', '1.15804488893102754123887900813714712918932223002003560913873793494119808283875232529043328266724198e+36'); + BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 1 }); + T('682458542873211261451752430521.50', '-0.0000000000047317422583988520', '-1.44229864097488822202187839202570736463468686e+41'); + BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 4 }); + T('-26794151020408.4608794932680594008286263653818575932035677696', '-0.000000000000010618255426571737851651013858255943564445', '2.5234042640712168480007125119498330722733482066532969571905761e+27'); + BigNumber.config({ DECIMAL_PLACES : 63, ROUNDING_MODE : 1 }); + T('0.00000000000000698022055022659864002062387583190', '1.4', '4.985871821590427600014731339879928571428571428571e-15'); + BigNumber.config({ DECIMAL_PLACES : 46, ROUNDING_MODE : 6 }); + T('-0.0000003324810418286578', '-153279272.1421553773097635827640004423163164355773643413303', '2.1691193935231230363867783229324e-15'); + BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 6 }); + T('-9404703133195.13', '-45525021.3371016485784', '206583.16804633'); + BigNumber.config({ DECIMAL_PLACES : 80, ROUNDING_MODE : 3 }); + T('0.0000000000000001830187412365033410994083139636', '-2.404', '-7.61309239752509738350284167901830282861896838602329450915141431e-17'); + BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 2 }); + T('-13.1217336639451305439590042', '-0.0000000004897887830525073032777704194170244636961721242635', '26790596514.208918842869983534986205269964226588243435750012963390544818454757631234642456690595'); + BigNumber.config({ DECIMAL_PLACES : 72, ROUNDING_MODE : 5 }); + T('-4005965010496578889385402.4457424061322459174', '-495851632.0429975', '8078959010362204.171060091563633796500721355364945604379286889945542443933241987931947409'); + BigNumber.config({ DECIMAL_PLACES : 86, ROUNDING_MODE : 5 }); + T('1468007492719556720149.7243', '602653117999682820388399772457357438149080226', '2.43590790269557576647632180273158488611240246727647613867086194e-24'); + BigNumber.config({ DECIMAL_PLACES : 92, ROUNDING_MODE : 5 }); + T('-3067720546455460115054583624.90563917', '0.0000007922540348', '-3.87214253472358600483404395141067089709695726500072852642542326122085910517851994409306351947909322278910027205834307225922632e+33'); + BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 4 }); + T('-162209.617275', '1770288709185568423.68896278566909349', '-9.16289057447728252989e-14'); + BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 4 }); + T('0.00000000000000276328664329193085095978498036928931806454342774', '-9294328798787592994233339.072', '0'); + BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 4 }); + T('6.909024540243', '756611909', '9.13153025753e-9'); + BigNumber.config({ DECIMAL_PLACES : 49, ROUNDING_MODE : 4 }); + T('-12059873714133.493148039435702897368991609', '-2224844545756841788321221865009881', '5.4205466791528110588556926535e-21'); + BigNumber.config({ DECIMAL_PLACES : 29, ROUNDING_MODE : 1 }); + T('104754143837318182.4', '-11549180444', '-9070266.4440349774831174159114211862'); + BigNumber.config({ DECIMAL_PLACES : 67, ROUNDING_MODE : 4 }); + T('-334030072820632119710072', '-1.0', '3.34030072820632119710072e+23'); + BigNumber.config({ DECIMAL_PLACES : 64, ROUNDING_MODE : 6 }); + T('67796811842755861918265.1423594922053348', '0.00000000000000000013716284029732259235206650049087658840821899770489301325723', '4.942797312726634332534530226132606387503176112095456172429358696109437734575169459831901881448319263110745e+41'); + BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 0 }); + T('2022854952999872055850234034154.369917295566462391873', '13.75836', '1.47027331237143965985061739491797708251242623567916016153088013396945566186667597010108762963027570146442e+29'); + BigNumber.config({ DECIMAL_PLACES : 83, ROUNDING_MODE : 4 }); + T('-0.038747', '16439037192115022080201430.915947', '-2.35701151759574969347678116027526521525307302208203579637e-27'); + BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 3 }); + T('5835060438169234262736748.328559855177221323', '1140114664918923170677.221356634518134', '5117.959287528489228206379959134811856240476081634542669211680204610408031'); + BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 6 }); + T('-0.0000000000000267595746177751020908523341076736116122831657874402545134', '4068716223280464463190.66605189736073370652', '-6.5769085749115693384978725140734e-36'); + BigNumber.config({ DECIMAL_PLACES : 41, ROUNDING_MODE : 2 }); + T('0.000000013615410894818066521708546825107702688528499647', '3', '4.53847029827268884056951560836924e-9'); + BigNumber.config({ DECIMAL_PLACES : 45, ROUNDING_MODE : 4 }); + T('6.2', '78756', '0.000078724160698867387881558230484026613845294'); + BigNumber.config({ DECIMAL_PLACES : 35, ROUNDING_MODE : 2 }); + T('-148428436744.287221266701376626964', '14647.3443717355154907539131930670153547426932766', '-10133470.81746125599475440250281824581067466'); + BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 1 }); + T('-1131485176.36', '243.935512969657494', '-4638460.23313851'); + BigNumber.config({ DECIMAL_PLACES : 62, ROUNDING_MODE : 2 }); + T('-1384271134192800808858028587220494947', '-4', '3.4606778354820020221450714680512373675e+35'); + BigNumber.config({ DECIMAL_PLACES : 60, ROUNDING_MODE : 5 }); + T('-0.000000262795322', '0.00000000000000260448783427139897456119386569682623768617148230930', '-100900959.69809609139671503315458646839423292725929534450987089464573'); + BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 5 }); + T('-3100575428627.4279', '0.0006563910304', '-4723671234108667.52148720403964861979'); + BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 5 }); + T('-60.4901', '-7153802399007784077376399639542532364448308688190006085969', '8e-57'); + BigNumber.config({ DECIMAL_PLACES : 31, ROUNDING_MODE : 5 }); + T('-1.22360', '-0.00000017357767807793899723685184287804837922756376495441002', '7049293.512559749372859153421040296683'); + BigNumber.config({ DECIMAL_PLACES : 33, ROUNDING_MODE : 5 }); + T('1565440', '0.00000000000000000318507005', '4.91493114884553324031287789102158051437518619095991311086e+23'); + BigNumber.config({ DECIMAL_PLACES : 92, ROUNDING_MODE : 0 }); + T('0.00000000000000025', '1.64792487', '1.5170594518668803147560968601681458936899228907201333759833359393380597502604e-16'); + BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 5 }); + T('-1.294', '-0.000000000000012346068350', '104810694653249.672'); + BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 0 }); + T('-29168.554', '-8', '3646.06925'); + BigNumber.config({ DECIMAL_PLACES : 90, ROUNDING_MODE : 1 }); + T('43520', '-485.75606652', '-89.592293333115077284037786596164402751883515478364755925148502250351267522446834227135819652'); + BigNumber.config({ DECIMAL_PLACES : 1, ROUNDING_MODE : 3 }); + T('1148978.24', '-15564548', '-0.1'); + BigNumber.config({ DECIMAL_PLACES : 83, ROUNDING_MODE : 2 }); + T('74159102.0', '-2754521', '-26.92268528720601512930923380144860031925695974000561259108207924354179910046066085537'); + BigNumber.config({ DECIMAL_PLACES : 62, ROUNDING_MODE : 0 }); + T('-0.0000000000026876', '-10255741', '2.6205809994616673724502208080332761913546764e-19'); + BigNumber.config({ DECIMAL_PLACES : 6, ROUNDING_MODE : 1 }); + T('0', '320295', '0'); + BigNumber.config({ DECIMAL_PLACES : 93, ROUNDING_MODE : 5 }); + T('0.0000000000000000000443996740', '7513.561355', '5.909271502847799663705547793453800844087204502504525032922952686795488e-24'); + BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 6 }); + T('-0.0000000000989', '146556533.88', '0'); + BigNumber.config({ DECIMAL_PLACES : 63, ROUNDING_MODE : 5 }); + T('0.00001391471605', '744.27894259', '1.869556594141772197897753236770100087428835180475907168e-8'); + BigNumber.config({ DECIMAL_PLACES : 25, ROUNDING_MODE : 3 }); + T('-40310.2', '87709217', '-0.0004595890988286898057704'); + BigNumber.config({ DECIMAL_PLACES : 7, ROUNDING_MODE : 3 }); + T('1044345208', '-78177.473', '-13358.6462689'); + BigNumber.config({ DECIMAL_PLACES : 83, ROUNDING_MODE : 5 }); + T('-4682.4005', '-9097023696.17', '5.1471785238631063197511178523858062911980363528445549978499721443800782131606e-7'); + BigNumber.config({ DECIMAL_PLACES : 86, ROUNDING_MODE : 6 }); + T('394883813', '-1.18', '-334647299.15254237288135593220338983050847457627118644067796610169491525423728813559322033898305'); + BigNumber.config({ DECIMAL_PLACES : 92, ROUNDING_MODE : 4 }); + T('25.579', '2', '12.7895'); + BigNumber.config({ DECIMAL_PLACES : 29, ROUNDING_MODE : 3 }); + T('0.0000000000030', '-30142812', '-9.952621541e-20'); + BigNumber.config({ DECIMAL_PLACES : 82, ROUNDING_MODE : 1 }); + T('-1.89', '1.5', '-1.26'); + BigNumber.config({ DECIMAL_PLACES : 7, ROUNDING_MODE : 0 }); + T('1843613.37', '-36', '-51211.4825'); + BigNumber.config({ DECIMAL_PLACES : 92, ROUNDING_MODE : 5 }); + T('-2', '-6556.35592955', '0.00030504750222388725256420745657319634802955829712150804993051660367510469671127160930692062'); + BigNumber.config({ DECIMAL_PLACES : 21, ROUNDING_MODE : 4 }); + T('10', '-0.123889533771', '-80.717068630544761887592'); + BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 5 }); + T('0', '3.8', '0'); + BigNumber.config({ DECIMAL_PLACES : 86, ROUNDING_MODE : 4 }); + T('0', '-141.14989', '0'); + BigNumber.config({ DECIMAL_PLACES : 23, ROUNDING_MODE : 6 }); + T('342.75', '7034856', '0.00004872167959088288374'); + BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 3 }); + T('-88980', '79214827', '-0.001123274560708186612589585028065516068096696089483348868514223984860813998874226'); + BigNumber.config({ DECIMAL_PLACES : 23, ROUNDING_MODE : 5 }); + T('-10.16', '-417.5', '0.02433532934131736526946'); + BigNumber.config({ DECIMAL_PLACES : 50, ROUNDING_MODE : 6 }); + T('-559.8', '-3.38112', '165.56643952299829642248722316865417376490630323679727'); + BigNumber.config({ DECIMAL_PLACES : 60, ROUNDING_MODE : 5 }); + T('-1.9', '65.8', '-0.028875379939209726443768996960486322188449848024316109422492'); + BigNumber.config({ DECIMAL_PLACES : 42, ROUNDING_MODE : 0 }); + T('0.0000000001462574', '-0.00015154345556', '-9.65118549392539666857785356415690803e-7'); + BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 6 }); + T('-115.231696', '-2', '57.615848'); + BigNumber.config({ DECIMAL_PLACES : 6, ROUNDING_MODE : 4 }); + T('0.000233315045345', '-0.000000000000133029473', '-1753859803.270814'); + BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 3 }); + T('0', '-3532615.6', '0'); + BigNumber.config({ DECIMAL_PLACES : 91, ROUNDING_MODE : 4 }); + T('-4.2', '1.17', '-3.5897435897435897435897435897435897435897435897435897435897435897435897435897435897435897436'); + BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 6 }); + T('0', '11.3930229', '0'); + BigNumber.config({ DECIMAL_PLACES : 80, ROUNDING_MODE : 0 }); + T('-0.0000000000000020730', '0.000000000000000852834', '-2.43071922554682388366317477961713533935091706006092627639141966666432154440371749'); + BigNumber.config({ DECIMAL_PLACES : 86, ROUNDING_MODE : 6 }); + T('-136440751.770', '-303', '450299.51079207920792079207920792079207920792079207920792079207920792079207920792079207920792'); + BigNumber.config({ DECIMAL_PLACES : 46, ROUNDING_MODE : 5 }); + T('-85.113', '1', '-85.113'); + BigNumber.config({ DECIMAL_PLACES : 2, ROUNDING_MODE : 6 }); + T('-10.47', '-0.00000690102', '1517167.03'); + BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 0 }); + T('-1.4292444', '-1144.70690499', '0.00124857'); + BigNumber.config({ DECIMAL_PLACES : 40, ROUNDING_MODE : 0 }); + T('-0.0000000000000000000465276721', '714.1', '-6.51556814171684639e-23'); + BigNumber.config({ DECIMAL_PLACES : 73, ROUNDING_MODE : 3 }); + T('3.20', '8.38866', '0.3814673618909337128933584148123776622249560716491072471646246241950442621'); + BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 1 }); + T('-303854.8', '-0.685651', '443162.48353754315'); + BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 2 }); + T('0', '3.73', '0'); + BigNumber.config({ DECIMAL_PLACES : 41, ROUNDING_MODE : 3 }); + T('21.0', '-0.000000000000000002895581456', '-7252429371822859194.32963795027149807800122891794068735049946'); + BigNumber.config({ DECIMAL_PLACES : 71, ROUNDING_MODE : 4 }); + T('27606161012', '1508', '18306472.81962864721485411140583554376657824933687002652519893899204244031830239'); + BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 0 }); + T('4.28', '10.7', '0.4'); + BigNumber.config({ DECIMAL_PLACES : 59, ROUNDING_MODE : 0 }); + T('0.0000000000000347360853426', '-4.659453482', '-7.45496987506999646015566767278652273494250114e-15'); + BigNumber.config({ DECIMAL_PLACES : 80, ROUNDING_MODE : 6 }); + T('-1169747921', '4.12', '-283919398.30097087378640776699029126213592233009708737864077669902912621359223300970873786'); + BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 4 }); + T('-0.004024373', '-7', '0.00057491042857143'); + BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 0 }); + T('1.8735138997', '118.931177', '0.01575292490126453553890246961904698883119604542381683484053975182639'); + BigNumber.config({ DECIMAL_PLACES : 29, ROUNDING_MODE : 6 }); + T('-2.2', '764.12', '-0.00287912893262838297649583835'); + BigNumber.config({ DECIMAL_PLACES : 28, ROUNDING_MODE : 0 }); + T('-0.00000000000000000009903285', '-2.0', '4.9516425e-20'); + BigNumber.config({ DECIMAL_PLACES : 48, ROUNDING_MODE : 6 }); + T('13.43', '1.49', '9.013422818791946308724832214765100671140939597315'); + BigNumber.config({ DECIMAL_PLACES : 30, ROUNDING_MODE : 3 }); + T('0.00000000002818631', '1.2282333', '2.2948661300747993072e-11'); + BigNumber.config({ DECIMAL_PLACES : 56, ROUNDING_MODE : 4 }); + T('3080315675', '145441.14', '21179.12218647351086494509050190338167041319945649490921207026'); + BigNumber.config({ DECIMAL_PLACES : 56, ROUNDING_MODE : 4 }); + T('-275.0', '-16890338.700', '0.00001628149706672252818707537226592146432208609292127457'); + BigNumber.config({ DECIMAL_PLACES : 88, ROUNDING_MODE : 0 }); + T('-2.95', '-6976.96721', '0.0004228198171508964279624298248636888749259293136336812452928240148630424765891941177692'); + BigNumber.config({ DECIMAL_PLACES : 100, ROUNDING_MODE : 4 }); + T('-2267', '-3.5', '647.7142857142857142857142857142857142857142857142857142857142857142857142857142857142857142857142857143'); + BigNumber.config({ DECIMAL_PLACES : 28, ROUNDING_MODE : 0 }); + T('3', '2', '1.5'); + BigNumber.config({ DECIMAL_PLACES : 74, ROUNDING_MODE : 2 }); + T('1', '1.5', '0.66666666666666666666666666666666666666666666666666666666666666666666666667'); + BigNumber.config({ DECIMAL_PLACES : 48, ROUNDING_MODE : 3 }); + T('-0.0000000000000121', '-0.000001452', '8.333333333333333333333333333333333333333e-9'); + BigNumber.config({ DECIMAL_PLACES : 46, ROUNDING_MODE : 4 }); + T('2951740.2', '-6528832211.10', '-0.0004521084482737351136335745064281668900369882'); + BigNumber.config({ DECIMAL_PLACES : 94, ROUNDING_MODE : 3 }); + T('1.2913929', '-582958', '-0.0000022152417498344649185704630522267470383801234394244525334586711221048514644279690818206458'); + BigNumber.config({ DECIMAL_PLACES : 93, ROUNDING_MODE : 2 }); + T('0.0000000000126439856', '1.3', '9.72614276923076923076923076923076923076923076923076923076923076923076923076923077e-12'); + BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 5 }); + T('2.1612', '-63497969.006', '-3.40357342735763028004650382313363403892805131714420176332151331360017074e-8'); + BigNumber.config({ DECIMAL_PLACES : 33, ROUNDING_MODE : 5 }); + T('-0.00000000002762629214', '69.16', '-3.99454773568536726431e-13'); + BigNumber.config({ DECIMAL_PLACES : 83, ROUNDING_MODE : 0 }); + T('-211.50', '-3.98', '53.14070351758793969849246231155778894472361809045226130653266331658291457286432160805'); + BigNumber.config({ DECIMAL_PLACES : 42, ROUNDING_MODE : 4 }); + T('-17667309622.8', '-0.000000050947899018', '346772093910253341.548302901600133653621272866125786431541286'); + BigNumber.config({ DECIMAL_PLACES : 2, ROUNDING_MODE : 6 }); + T('-0.000000000000000181', '7', '0'); + BigNumber.config({ DECIMAL_PLACES : 92, ROUNDING_MODE : 1 }); + T('0.05964073855', '112.04372', '0.00053229880755476522914448038676330989367364810807781105447052275665249243777339774152446919'); + BigNumber.config({ DECIMAL_PLACES : 19, ROUNDING_MODE : 5 }); + T('-7.77', '30279', '-0.0002566134945011394'); + BigNumber.config({ DECIMAL_PLACES : 72, ROUNDING_MODE : 4 }); + T('2819.841', '3566.03200', '0.790750335386782844349125302296782530274546050063487932805987158836488287'); + BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 2 }); + T('651.8', '-48389.208224', '-0.013469945550312'); + BigNumber.config({ DECIMAL_PLACES : 1, ROUNDING_MODE : 0 }); + T('-164.881', '-496055826492', '0.1'); + BigNumber.config({ DECIMAL_PLACES : 9, ROUNDING_MODE : 0 }); + T('0.0000000000000000015713402282', '-119.9', '-1e-9'); + BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 4 }); + T('-322.159598', '4.16', '-77.44221105769230769230769230769230769230769230769230769230769230769230769230769230769230769230769'); + BigNumber.config({ DECIMAL_PLACES : 50, ROUNDING_MODE : 5 }); + T('-2.47', '0.0000000000093', '-265591397849.46236559139784946236559139784946236559139784946237'); + BigNumber.config({ DECIMAL_PLACES : 62, ROUNDING_MODE : 1 }); + T('-1', '-51334.1413', '0.00001948021286955860699280850734713663165921117687031418211333'); + BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 1 }); + T('8.36631', '-0.0000000000146683885', '-570363267921.353460197757920033274275493862192155600460132345144'); + BigNumber.config({ DECIMAL_PLACES : 19, ROUNDING_MODE : 0 }); + T('-2.7140570863', '0.000000000000000481895', '-5632050729515765.8826092821050228785'); + BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 3 }); + T('1.9', '-1620.0524', '-0.0011728015711096752179127045520256011472221515797884068441243011645796148322116000692323285345586'); + BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 6 }); + T('-4.72', '-1', '4.72'); + BigNumber.config({ DECIMAL_PLACES : 25, ROUNDING_MODE : 6 }); + T('-730000.67163', '57682668.476', '-0.0126554594459119211293404'); + BigNumber.config({ DECIMAL_PLACES : 98, ROUNDING_MODE : 2 }); + T('-9854.20', '100.05', '-98.49275362318840579710144927536231884057971014492753623188405797101449275362318840579710144927536231'); + BigNumber.config({ DECIMAL_PLACES : 92, ROUNDING_MODE : 0 }); + T('109901.8', '-0.00000001677866616', '-6550091583680.45150974027127314868752356176565110226854886062051549871232434128124997511721158173397974086'); + BigNumber.config({ DECIMAL_PLACES : 91, ROUNDING_MODE : 0 }); + T('23253.75', '-0.000000000000000339', '-68595132743362831858.4070796460176991150442477876106194690265486725663716814159292035398230088495575221238938054'); + BigNumber.config({ DECIMAL_PLACES : 59, ROUNDING_MODE : 6 }); + T('-1', '2051.814989', '-0.00048737337691804921306187026787530695829223226324720059836'); + BigNumber.config({ DECIMAL_PLACES : 90, ROUNDING_MODE : 6 }); + T('-2485.45799', '-22032614981', '1.12808125233584591726316065650854664658109744508497295743671308155194236133508913333e-7'); + BigNumber.config({ DECIMAL_PLACES : 53, ROUNDING_MODE : 2 }); + T('5', '879097.79', '0.00000568764937971235259276445229147942687923262780584'); + BigNumber.config({ DECIMAL_PLACES : 39, ROUNDING_MODE : 0 }); + T('-1624053653', '-45901.775', '35381.064305247455027610588043708549397054907'); + BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 2 }); + T('736', '-31820', '-0.023130106851037083595223130106851037083595223130106851037083595223130106851037'); + BigNumber.config({ DECIMAL_PLACES : 58, ROUNDING_MODE : 1 }); + T('-33307.60', '-26398.486', '1.2617238731039348241410511193710124133634027345356093527484'); + BigNumber.config({ DECIMAL_PLACES : 58, ROUNDING_MODE : 6 }); + T('-5', '85111326221', '-5.8746587816256136023628558422155102937812556824e-11'); + BigNumber.config({ DECIMAL_PLACES : 7, ROUNDING_MODE : 1 }); + T('-1.649825', '-3', '0.5499416'); + BigNumber.config({ DECIMAL_PLACES : 72, ROUNDING_MODE : 0 }); + T('0.000000000116045', '-786270', '-1.47589250511910666819285995904714665445712032762282676435e-16'); + BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 3 }); + T('-32.1', '3.29', '-9.756838905775075987841945288753799392097264437689969604863221884498480243161094225'); + BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 5 }); + T('5.004', '0.00000000000000028911148288', '17308202186064620.13937977834220293976031506424543437352660297'); + BigNumber.config({ DECIMAL_PLACES : 48, ROUNDING_MODE : 5 }); + T('0.0000000000000000000942', '-2143.2', '-4.3952967525195968645016797e-23'); + BigNumber.config({ DECIMAL_PLACES : 42, ROUNDING_MODE : 5 }); + T('-2.7', '79.3695', '-0.034018105191540831175703513314308393022509'); + BigNumber.config({ DECIMAL_PLACES : 88, ROUNDING_MODE : 2 }); + T('-0.000000000000002036873550', '-215.2', '9.4650257899628252788104089219330855018587360594795539033457249070631971e-18'); + BigNumber.config({ DECIMAL_PLACES : 98, ROUNDING_MODE : 4 }); + T('4330632.78', '-0.000000001568875959', '-2760341093352173.67557354481712725384429196929264692748089971847162456264013667635020468817063440003927040863018285'); + BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 1 }); + T('427991.031', '1293.75', '330.81432347826'); + BigNumber.config({ DECIMAL_PLACES : 96, ROUNDING_MODE : 5 }); + T('-8.92547', '-7', '1.275067142857142857142857142857142857142857142857142857142857142857142857142857142857142857142857'); + BigNumber.config({ DECIMAL_PLACES : 42, ROUNDING_MODE : 2 }); + T('-5.4', '-1.0', '5.4'); + BigNumber.config({ DECIMAL_PLACES : 5, ROUNDING_MODE : 6 }); + T('1.383447013', '222.81', '0.00621'); + BigNumber.config({ DECIMAL_PLACES : 78, ROUNDING_MODE : 4 }); + T('-2209000304', '-16.558357', '133406974.133967518637265762539121484094104264088520376749939622632849382339081105691827'); + BigNumber.config({ DECIMAL_PLACES : 73, ROUNDING_MODE : 6 }); + T('5', '-3', '-1.6666666666666666666666666666666666666666666666666666666666666666666666667'); + BigNumber.config({ DECIMAL_PLACES : 27, ROUNDING_MODE : 0 }); + T('-1511.465', '1829195341.20', '-8.26300486315714874072e-7'); + BigNumber.config({ DECIMAL_PLACES : 73, ROUNDING_MODE : 6 }); + T('0', '-716.3', '0'); + BigNumber.config({ DECIMAL_PLACES : 48, ROUNDING_MODE : 4 }); + T('3', '-52345222089.7', '-5.731182102655194878948627237808030249e-11'); + BigNumber.config({ DECIMAL_PLACES : 42, ROUNDING_MODE : 6 }); + T('0.00012', '0.0000000000000101949523', '11770530794.930742343934262448682570098930232366070021'); + BigNumber.config({ DECIMAL_PLACES : 56, ROUNDING_MODE : 3 }); + T('-8374228864', '77.675', '-107811121.51915030576118442227228838107499195365304151915030576119'); + BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 6 }); + T('52.243', '7', '7.46328571'); + BigNumber.config({ DECIMAL_PLACES : 52, ROUNDING_MODE : 2 }); + T('0', '-241759.4', '0'); + BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 0 }); + T('-396.127118241', '-0.0000690786761', '5734434.13518169610665135488895103477525968393595199'); + BigNumber.config({ DECIMAL_PLACES : 90, ROUNDING_MODE : 3 }); + T('-6844.1', '0.0000224093', '-305413377.481670556420771733164355870107500011156082519311178840927650573645763142980816000499792497'); + BigNumber.config({ DECIMAL_PLACES : 59, ROUNDING_MODE : 2 }); + T('1.63871', '7842081035.3', '2.0896366571877829368596501781675487298187215660485e-10'); + BigNumber.config({ DECIMAL_PLACES : 99, ROUNDING_MODE : 1 }); + T('-371', '-32445244', '0.000011434649713221450885066544729945627778296258151117618348008108676883428585095553604096797669328'); + BigNumber.config({ DECIMAL_PLACES : 58, ROUNDING_MODE : 4 }); + T('-9', '0.19', '-47.3684210526315789473684210526315789473684210526315789473684'); + BigNumber.config({ DECIMAL_PLACES : 24, ROUNDING_MODE : 0 }); + T('352830191.6', '-0.000381293058187', '-925351731494.04473608489781199248613'); + BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 5 }); + T('0', '-1.020', '0'); + BigNumber.config({ DECIMAL_PLACES : 62, ROUNDING_MODE : 1 }); + T('219.352562291', '21384681', '0.00001025746244664580219831195985574907570517418520294971900679'); + BigNumber.config({ DECIMAL_PLACES : 32, ROUNDING_MODE : 5 }); + T('161914.41633', '-695267', '-0.23288091672695525603832772158034'); + BigNumber.config({ DECIMAL_PLACES : 93, ROUNDING_MODE : 2 }); + T('0', '-1.09', '0'); + BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 3 }); + T('-0.00000000000000900280', '78.30556', '-1.14970124726775467795645673180806062814e-16'); + BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 3 }); + T('-32.37', '1.14707749', '-28.21954078'); + BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 5 }); + T('21.571', '1', '21.571'); + BigNumber.config({ DECIMAL_PLACES : 80, ROUNDING_MODE : 2 }); + T('-0.00000000000000776386', '-1.5', '5.17590666666666666666666666666666666666666666666666666666666666667e-15'); + BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 2 }); + T('111482', '-1.911', '-58336.996336996336996336996336996336996336996336996336996336996336996336996336996336996336'); + BigNumber.config({ DECIMAL_PLACES : 46, ROUNDING_MODE : 5 }); + T('-10.7659', '96.707', '-0.1113249299430237728396083013639136773966724229'); + BigNumber.config({ DECIMAL_PLACES : 32, ROUNDING_MODE : 6 }); + T('386.5281', '412647.720', '0.00093670237654530115906129325033'); + BigNumber.config({ DECIMAL_PLACES : 30, ROUNDING_MODE : 1 }); + T('-5.7240', '1.16', '-4.934482758620689655172413793103'); + BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 4 }); + T('-285', '5', '-57'); + BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 6 }); + T('512168', '-7', '-73166.8571'); + BigNumber.config({ DECIMAL_PLACES : 7, ROUNDING_MODE : 5 }); + T('-0.000000000000000000285654941', '-63506.19980', '0'); + BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 6 }); + T('-70.1', '4272.202', '-0.0164084001646'); + BigNumber.config({ DECIMAL_PLACES : 26, ROUNDING_MODE : 1 }); + T('-11.1381428', '-34', '0.32759243529411764705882352'); + BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 4 }); + T('-2.0946', '-7.7', '0.272025974025974'); + BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 3 }); + T('233298875909', '-118661.20', '-1966092.336071099904602346849686333864818491638378846665970005359797473816209510776'); + BigNumber.config({ DECIMAL_PLACES : 52, ROUNDING_MODE : 6 }); + T('-0.0000000000000002412', '310.1', '-7.778136085133827797484682360528862e-19'); + BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 3 }); + T('-0.00000001472', '-796413753.5', '1.84828550929840264e-17'); + BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 6 }); + T('-1041.2', '-0.000000645681', '1612561001.485253553999575642'); + BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 4 }); + T('8.37456', '-2808724.72451', '-0.0000029816236268796314943861290758029707760497802718151357226'); + BigNumber.config({ DECIMAL_PLACES : 82, ROUNDING_MODE : 6 }); + T('0', '-105271966383', '0'); + BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 0 }); + T('-29', '30.9036', '-0.93840199847266986'); + BigNumber.config({ DECIMAL_PLACES : 63, ROUNDING_MODE : 0 }); + T('0.00000000000000002126401186', '-67.1', '-3.16900325782414307004470938897168405365126677e-19'); + BigNumber.config({ DECIMAL_PLACES : 58, ROUNDING_MODE : 3 }); + T('-7', '-10.381', '0.6743088334457181389076196898179366149696561024949426837491'); + BigNumber.config({ DECIMAL_PLACES : 5, ROUNDING_MODE : 1 }); + T('2.5', '2.3', '1.08695'); + BigNumber.config({ DECIMAL_PLACES : 2, ROUNDING_MODE : 1 }); + T('-0.219855997', '101.7824524', '0'); + BigNumber.config({ DECIMAL_PLACES : 26, ROUNDING_MODE : 2 }); + T('-5.21850', '-798', '0.00653947368421052631578948'); + BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 0 }); + T('-494.272', '1866', '-0.2648831725616291532690246516613076098606645230439442658092175777063236870311'); + BigNumber.config({ DECIMAL_PLACES : 27, ROUNDING_MODE : 2 }); + T('-6.5449', '-26.022998995', '0.251504448094453765320141189'); + BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 6 }); + T('0.00000000000000232033499669', '0.000000000000354', '0.006554618634718'); + BigNumber.config({ DECIMAL_PLACES : 62, ROUNDING_MODE : 3 }); + T('0.0000000005015', '639650467', '7.8402193990737757094453899617023182756466274e-19'); + BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 3 }); + T('0.0000000000103187470', '-0.000000000000000012571', '-820837.403547848222098481'); + BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 5 }); + T('6', '0.00000000000000012', '50000000000000000'); + BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 4 }); + T('1.090', '15002564.0', '7.265424763393777223679898982600574141860018060912787974108958975279158949097e-8'); + BigNumber.config({ DECIMAL_PLACES : 92, ROUNDING_MODE : 5 }); + T('-264.50930', '589878.7702', '-0.00044841298477366358352796335303677284299051045929640408679349348789294671924099023965856909'); + BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 3 }); + T('-21198985599', '-30720.1', '690068.8994827490795928398670577244214699821940683786836631391173856855934713754186'); + BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 5 }); + T('-813123', '-0.0000000001663', '4889494888755261.57546603'); + BigNumber.config({ DECIMAL_PLACES : 46, ROUNDING_MODE : 6 }); + T('-44239.76530', '-0.00000005206822', '849650041810.5324130534902095750536507681653031350025024862'); + BigNumber.config({ DECIMAL_PLACES : 33, ROUNDING_MODE : 3 }); + T('-316.68', '-8624321.244', '0.000036719411422703725065462090757'); + BigNumber.config({ DECIMAL_PLACES : 7, ROUNDING_MODE : 6 }); + T('-0.000000000000000007135328753', '41264989.38', '0'); + BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 6 }); + T('176180337.2', '5.6', '31460774.5'); + BigNumber.config({ DECIMAL_PLACES : 71, ROUNDING_MODE : 3 }); + T('1.6', '-0.00523482', '-305.64565734829468826053235832368639227327778223511028077374198157720800334'); + BigNumber.config({ DECIMAL_PLACES : 62, ROUNDING_MODE : 2 }); + T('-0.00000000000021866724', '-28126.0189548', '7.77455353178172209997205217413586893583984552e-18'); + BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 4 }); + T('2.135', '0.048050825667', '44.432'); + BigNumber.config({ DECIMAL_PLACES : 53, ROUNDING_MODE : 4 }); + T('-1.362', '-11.2026409', '0.1215784753039794393480915736574221530210791635747246'); + BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 0 }); + T('-3.2', '-1.4', '2.28571428571428571428571428571428571428571429'); + BigNumber.config({ DECIMAL_PLACES : 82, ROUNDING_MODE : 5 }); + T('3', '-8.154', '-0.3679175864606328182487122884473877851361295069904341427520235467255334805003679176'); + BigNumber.config({ DECIMAL_PLACES : 26, ROUNDING_MODE : 3 }); + T('4885365', '32646', '149.64666421613673956993199779'); + BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 6 }); + T('0.08525779', '-0.0000000000000015', '-56838526666666.66666666666666666666666666666666666666666667'); + BigNumber.config({ DECIMAL_PLACES : 24, ROUNDING_MODE : 1 }); + T('-0.0000102', '-17150', '5.94752186588921e-10'); + BigNumber.config({ DECIMAL_PLACES : 26, ROUNDING_MODE : 2 }); + T('0', '-1.0', '0'); + BigNumber.config({ DECIMAL_PLACES : 67, ROUNDING_MODE : 1 }); + T('-2', '-123843217', '1.61494512856525682791331236170972528919367461198944791623105e-8'); + BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 2 }); + T('0.000021', '2', '0.0000105'); + BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 5 }); + T('116116.0', '-5', '-23223.2'); + BigNumber.config({ DECIMAL_PLACES : 73, ROUNDING_MODE : 5 }); + T('3141195.729', '-0.00000000000000867781', '-361980237986312214717.7686536119136049302761871946954358300078015075232115015193925656357998159'); + BigNumber.config({ DECIMAL_PLACES : 6, ROUNDING_MODE : 5 }); + T('1.93448', '411691', '0.000005'); + BigNumber.config({ DECIMAL_PLACES : 67, ROUNDING_MODE : 5 }); + T('-2376.356', '2951222.65', '-0.0008052106810714535550206623685271594130656323066644937819245864083'); + BigNumber.config({ DECIMAL_PLACES : 64, ROUNDING_MODE : 6 }); + T('-0.000000000000001025074', '-0.000027628974509', '3.7101413216262778086592935152937492617525944238077548e-11'); + BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 3 }); + T('-0.000000478862541855', '653620457.66', '-7.326308964828859515351663358155728873732633102e-16'); + BigNumber.config({ DECIMAL_PLACES : 33, ROUNDING_MODE : 1 }); + T('0.00000000000000318051', '5.368931740', '5.92391588126244272e-16'); + BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 4 }); + T('-11799683', '-54', '218512.648148148148148148148148148148148148148148148148148148148148148148148148148148148'); + BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 1 }); + T('325.3661', '1084482292.48', '0'); + BigNumber.config({ DECIMAL_PLACES : 96, ROUNDING_MODE : 2 }); + T('0.0000000000000000037', '3.458751534', '1.069750158006001479954818864996851780218104559574298695489931656941044670021678e-18'); + BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 4 }); + T('0.0000000000000000066858340', '-1', '-6.685834e-18'); + BigNumber.config({ DECIMAL_PLACES : 38, ROUNDING_MODE : 5 }); + T('-5', '-2357875.2242', '0.00000212055326282010644149165490858123'); + BigNumber.config({ DECIMAL_PLACES : 90, ROUNDING_MODE : 6 }); + T('-70.0', '-0.0000000000000000160541', '4360256881419699640.59025420297618676848904641182003351168860291140580910795373144554973495867099370254327555'); + BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 3 }); + T('2238692.91', '-304048.2', '-7.36295399874098909317667396156267328666967935'); + BigNumber.config({ DECIMAL_PLACES : 52, ROUNDING_MODE : 2 }); + T('48.36165096', '-17.2', '-2.811723893023255813953488372093023255813953488372093'); + BigNumber.config({ DECIMAL_PLACES : 90, ROUNDING_MODE : 1 }); + T('0.0000000234101105561', '-0.00000056848429', '-0.041179872457161481102670400970974941101714525831487797138598148420249220959122722634956192'); + BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 2 }); + T('0.000031224', '-71558987.88', '-4.36339318442579403346362701517851596533788202595243302091264849231123585e-13'); + BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 4 }); + T('520778', '-14.1', '-36934.6099290780141844'); + BigNumber.config({ DECIMAL_PLACES : 77, ROUNDING_MODE : 3 }); + T('-1', '-1', '1'); + BigNumber.config({ DECIMAL_PLACES : 52, ROUNDING_MODE : 1 }); + T('0', '349262', '0'); + BigNumber.config({ DECIMAL_PLACES : 30, ROUNDING_MODE : 5 }); + T('-12.1', '-9.25', '1.308108108108108108108108108108'); + BigNumber.config({ DECIMAL_PLACES : 23, ROUNDING_MODE : 5 }); + T('-0.0767', '-98934421979', '7.7526101094e-13'); + BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 2 }); + T('0.000000000000024', '4', '6e-15'); + BigNumber.config({ DECIMAL_PLACES : 35, ROUNDING_MODE : 0 }); + T('0', '6.94', '0'); + BigNumber.config({ DECIMAL_PLACES : 99, ROUNDING_MODE : 5 }); + T('-1.2283864', '0.0000000000000084', '-146236476190476.19047619047619047619047619047619047619047619047619047619047619047619047619047619047619047619047619'); + BigNumber.config({ DECIMAL_PLACES : 39, ROUNDING_MODE : 3 }); + T('632.884', '1.4', '452.06'); + BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 1 }); + T('-18.23', '208221530', '-8e-8'); + BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 0 }); + T('-0.000062913', '400.8777994', '-1.569381e-7'); + BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 2 }); + T('9768.95198', '5', '1953.790396'); + BigNumber.config({ DECIMAL_PLACES : 86, ROUNDING_MODE : 5 }); + T('-10', '-0.0000000000000000277023144493', '360980668900489159.96729444430868143982879657940927594970630669325877985206687832887720379010476659480245'); + BigNumber.config({ DECIMAL_PLACES : 35, ROUNDING_MODE : 1 }); + T('-5892110.9', '1.5', '-3928073.93333333333333333333333333333333333'); + BigNumber.config({ DECIMAL_PLACES : 98, ROUNDING_MODE : 3 }); + T('-5.03', '6044.396507', '-0.00083217571748887915899922281521495823338116425127501980405733829201949805176803236479006191047685'); + BigNumber.config({ DECIMAL_PLACES : 49, ROUNDING_MODE : 1 }); + T('-0.13389091', '-117.19', '0.0011425113917569758511818414540489802884205136957'); + BigNumber.config({ DECIMAL_PLACES : 27, ROUNDING_MODE : 5 }); + T('-19.20906', '-0.00001042226563602', '1843079.103032289899499099103753645'); + BigNumber.config({ DECIMAL_PLACES : 58, ROUNDING_MODE : 1 }); + T('-0.000000006355', '260160366.550', '-2.44272411062222190738222574202473193740201e-17'); + BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 5 }); + T('-1.10', '-0.00000000000000017597992', '6250713149545698.1682910187'); + BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 2 }); + T('-13228586', '-20693329673.3', '0.000639268123'); + BigNumber.config({ DECIMAL_PLACES : 2, ROUNDING_MODE : 0 }); + T('1.26', '2.9', '0.44'); + BigNumber.config({ DECIMAL_PLACES : 45, ROUNDING_MODE : 2 }); + T('-197.26', '-9.309', '21.190245998496079063272102266623697497045869589'); + BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 1 }); + T('-47.49', '-0.000000045', '1055333333.333333333333333333'); + BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 4 }); + T('-0.063686480', '18267', '-0.00000348642251053812886626156456998959872995018339081403624021459462418569'); + BigNumber.config({ DECIMAL_PLACES : 1, ROUNDING_MODE : 0 }); + T('-21.023531339', '541241.4', '-0.1'); + BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 5 }); + T('2693.21', '-0.00000000000000000011874', '-2.2681573185110325080007e+22'); + BigNumber.config({ DECIMAL_PLACES : 42, ROUNDING_MODE : 3 }); + T('0.0000000000000006163225', '793', '7.7720365699873896595208e-19'); + BigNumber.config({ DECIMAL_PLACES : 22, ROUNDING_MODE : 5 }); + T('59804615', '0.000058386725465', '1024284450338.8009961589305922895534'); + BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 2 }); + T('-1.88', '-6237933.024', '0.0001'); + BigNumber.config({ DECIMAL_PLACES : 32, ROUNDING_MODE : 1 }); + T('-46.3', '-7840795.2', '0.00000590501330783387889024317329'); + BigNumber.config({ DECIMAL_PLACES : 86, ROUNDING_MODE : 2 }); + T('698', '1.6957655', '411.61351613769710493579448337638665251769775950743189432737014640290771336013145685532582'); + BigNumber.config({ DECIMAL_PLACES : 22, ROUNDING_MODE : 0 }); + T('-119345', '-0.00004408673767', '2707049927.1986617829506548743461'); + BigNumber.config({ DECIMAL_PLACES : 6, ROUNDING_MODE : 5 }); + T('-24.8', '8989.322', '-0.002759'); + BigNumber.config({ DECIMAL_PLACES : 86, ROUNDING_MODE : 0 }); + T('9.726', '2.529', '3.84578884934756820877817319098457888493475682087781731909845788849347568208778173190985'); + BigNumber.config({ DECIMAL_PLACES : 42, ROUNDING_MODE : 3 }); + T('0', '-592.8', '0'); + BigNumber.config({ DECIMAL_PLACES : 98, ROUNDING_MODE : 2 }); + T('0.00000000000000005825980', '2.8891214', '2.016523085530431500732367978721835641797537479733458067909503560494204224163096781e-17'); + BigNumber.config({ DECIMAL_PLACES : 53, ROUNDING_MODE : 6 }); + T('-2424545.2084', '871.2930285', '-2782.69781702953221781689029088794092193290170460717740036'); + BigNumber.config({ DECIMAL_PLACES : 93, ROUNDING_MODE : 2 }); + T('0.03141', '7784326.563', '4.035031128999154759638261594344677032275733419792809892166390604700020214195630990771e-9'); + BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 3 }); + T('0', '7', '0'); + BigNumber.config({ DECIMAL_PLACES : 53, ROUNDING_MODE : 3 }); + T('-4', '-1', '4'); + BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 4 }); + T('1599.3', '63', '25.385714285714285714285714285714285714285714285714285714286'); + BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 4 }); + T('0', '703.9', '0'); + BigNumber.config({ DECIMAL_PLACES : 90, ROUNDING_MODE : 0 }); + T('2', '0.0000000000000000001711184', '11687813817801007957.063647158926217168930985796968648608215130576255972472860896315066059523698211296973323734'); + BigNumber.config({ DECIMAL_PLACES : 96, ROUNDING_MODE : 3 }); + T('-4.2', '-30.1', '0.13953488372093023255813953488372093023255813953488372093023255813953488372093023255813953488372'); + BigNumber.config({ DECIMAL_PLACES : 48, ROUNDING_MODE : 6 }); + T('-0.00000000011', '1', '-1.1e-10'); + BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 5 }); + T('69561.2', '10940288', '0.00635826040411'); + BigNumber.config({ DECIMAL_PLACES : 35, ROUNDING_MODE : 1 }); + T('9940.98', '43061', '0.2308580850421495088363019901999489'); + BigNumber.config({ DECIMAL_PLACES : 21, ROUNDING_MODE : 3 }); + T('30459876832', '228', '133595951.017543859649122807017'); + BigNumber.config({ DECIMAL_PLACES : 32, ROUNDING_MODE : 4 }); + T('117805414517', '-0.000000000000000400355774890', '-2.9425181777224944477183434889855598655680977380992961852266e+26'); + BigNumber.config({ DECIMAL_PLACES : 91, ROUNDING_MODE : 2 }); + T('36555877196', '0.00000000000012', '3.046323099666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666667e+23'); + BigNumber.config({ DECIMAL_PLACES : 32, ROUNDING_MODE : 2 }); + T('-0.000000000000178916341', '47.6', '-3.75874665966386554e-15'); + BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 1 }); + T('3.293', '-0.000000234257318', '-14057191.587927255275756209246790744868000238950912944371710086768772790269886040443782422'); + BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 0 }); + T('0.3088049717', '1229.0', '1'); + BigNumber.config({ DECIMAL_PLACES : 63, ROUNDING_MODE : 6 }); + T('-1', '76968695', '-1.29922951142669107225996231324956204597206695527317957e-8'); + BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 1 }); + T('1079641.41691', '22.7138', '47532.3995504935325661'); + BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 5 }); + T('0', '1.1', '0'); + BigNumber.config({ DECIMAL_PLACES : 36, ROUNDING_MODE : 5 }); + T('678740.294', '4.6', '147552.237826086956521739130434782608695652'); + BigNumber.config({ DECIMAL_PLACES : 1, ROUNDING_MODE : 1 }); + T('-0.00000000427', '11048.19', '0'); + BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 0 }); + T('-0.000029833', '-46.65726057', '6.3940745e-7'); + BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 1 }); + T('-0.0000000000000016492401761', '53.1', '-3.10591370263653483992467043314500941619585687382297551789077e-17'); + BigNumber.config({ DECIMAL_PLACES : 29, ROUNDING_MODE : 5 }); + T('-115.81587', '-1.2', '96.513225'); + BigNumber.config({ DECIMAL_PLACES : 77, ROUNDING_MODE : 5 }); + T('61515421', '-324783.60', '-189.40433260792724755806635556721460073722934286090800151239163553824762087740883'); + BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 2 }); + T('2438034', '-9.7', '-251343.71134020618556701030927835051546391752577319587628865979381443298969072164948453608247422680412'); + BigNumber.config({ DECIMAL_PLACES : 22, ROUNDING_MODE : 5 }); + T('-215251219372', '-0.000000000000000000347192993', '6.199757014451037610658231227610057211033633965072561e+29'); + BigNumber.config({ DECIMAL_PLACES : 59, ROUNDING_MODE : 1 }); + T('-39.9', '-0.000000000000045976', '867844092570036.54080389768574908647990255785627283800243605359317904993909'); + BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 4 }); + T('-0.00000000000000084628779457', '917.5', '-9.22384517242506811989100817438692e-19'); + BigNumber.config({ DECIMAL_PLACES : 66, ROUNDING_MODE : 5 }); + T('-6294.4404575', '-0.0000000342498', '183780356600.622485386775981173612692628862066347832688074090943596750929932438'); + BigNumber.config({ DECIMAL_PLACES : 39, ROUNDING_MODE : 1 }); + T('-146382323610', '6', '-24397053935'); + BigNumber.config({ DECIMAL_PLACES : 39, ROUNDING_MODE : 2 }); + T('-147.42', '-860.2860220', '0.171361612568430177283526757104510992509'); + BigNumber.config({ DECIMAL_PLACES : 88, ROUNDING_MODE : 3 }); + T('29.2', '2566652156', '1.1376687694801133777007218269899444839302953835868361431364913010051058901648845e-8'); + BigNumber.config({ DECIMAL_PLACES : 92, ROUNDING_MODE : 4 }); + T('3493', '-5', '-698.6'); + BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 2 }); + T('36.33598029', '-0.2664688060', '-136.36110295776984867789740462153757689746243693530116241823817831795290890446666391412434219411033'); + BigNumber.config({ DECIMAL_PLACES : 55, ROUNDING_MODE : 6 }); + T('-206.53', '0.00000000000003011551082', '-6857927837732091.3064293159480932224811586310658502056250361155255343598'); + BigNumber.config({ DECIMAL_PLACES : 2, ROUNDING_MODE : 5 }); + T('-2185167.14998', '2', '-1092583.57'); + BigNumber.config({ DECIMAL_PLACES : 91, ROUNDING_MODE : 1 }); + T('0.00000015544', '22.360', '6.9516994633273703041144901610017889087656529516994633273703041144901610017889087656e-9'); + BigNumber.config({ DECIMAL_PLACES : 39, ROUNDING_MODE : 2 }); + T('-1', '-243969', '0.000004098881415261775061585693264308171'); + BigNumber.config({ DECIMAL_PLACES : 32, ROUNDING_MODE : 5 }); + T('0.0000000000000015909805', '1', '1.5909805e-15'); + BigNumber.config({ DECIMAL_PLACES : 46, ROUNDING_MODE : 4 }); + T('3740375.9865', '-9436', '-396.394233414582450190758796100042390843577787198'); + BigNumber.config({ DECIMAL_PLACES : 37, ROUNDING_MODE : 0 }); + T('179.506', '312', '0.5753397435897435897435897435897435898'); + BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 2 }); + T('74542005.0369', '49234198.2063', '1.51402902357738847367808769587778211275856571'); + BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 5 }); + T('52693.3621208', '34', '1549.80476825882352941176470588235294117647058824'); + BigNumber.config({ DECIMAL_PLACES : 55, ROUNDING_MODE : 0 }); + T('0', '9.6', '0'); + BigNumber.config({ DECIMAL_PLACES : 70, ROUNDING_MODE : 4 }); + T('11.2', '1.31715041933', '8.5032049761614526410948365863433733808854270153846483990095181591608779'); + BigNumber.config({ DECIMAL_PLACES : 24, ROUNDING_MODE : 2 }); + T('-1.006', '13234.8943280', '-0.000076011184907739446214'); + BigNumber.config({ DECIMAL_PLACES : 100, ROUNDING_MODE : 4 }); + T('-38581.7829', '-0.0000000000000000056', '6.8896040892857142857142857142857142857142857142857142857142857142857142857142857142857142857142857142857142857142857142857e+21'); + BigNumber.config({ DECIMAL_PLACES : 46, ROUNDING_MODE : 0 }); + T('0.00000017788', '-1773.0821', '-1.003224836571301464269477425777407601e-10'); + BigNumber.config({ DECIMAL_PLACES : 60, ROUNDING_MODE : 4 }); + T('0.0000000000000217830374553', '-0.00000000000000002371157929', '-918.666664454807809640418092961196428177686345918631554802691508'); + BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 5 }); + T('2.3', '-0.000000197', '-11675126.90355329949238578680203045685279187817258883248730964467005076142132'); + BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 3 }); + T('27.6', '5111.79861782', '0.0053992737319081'); + BigNumber.config({ DECIMAL_PLACES : 48, ROUNDING_MODE : 0 }); + T('-41484045.3618', '2', '-20742022.6809'); + BigNumber.config({ DECIMAL_PLACES : 52, ROUNDING_MODE : 5 }); + T('-1.3', '278.24', '-0.0046722254169062679700977573317998849913743530764807'); + BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 1 }); + T('-3', '14.13', '0'); + BigNumber.config({ DECIMAL_PLACES : 53, ROUNDING_MODE : 3 }); + T('3942.3337', '39.4', '100.05923096446700507614213197969543147208121827411167512'); + BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 6 }); + T('806322064.23', '11.937959', '67542706.775086093024779193830369161093617426563451926748952647600816856549767'); + BigNumber.config({ DECIMAL_PLACES : 25, ROUNDING_MODE : 0 }); + T('122', '-3582', '-0.0340591848129536571747628'); + BigNumber.config({ DECIMAL_PLACES : 43, ROUNDING_MODE : 2 }); + T('-1.18', '0.00000000000343', '-344023323615.160349854227405247813411078717201166180758'); + BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 0 }); + T('-6.9', '-1.6822', '4.10177148971584829390084413268339079776483176792295803114968493639282'); + BigNumber.config({ DECIMAL_PLACES : 78, ROUNDING_MODE : 0 }); + T('-20047', '22.44', '-893.360071301247771836007130124777183600713012477718360071301247771836007130124778'); + BigNumber.config({ DECIMAL_PLACES : 83, ROUNDING_MODE : 1 }); + T('-0.000000000000003783719', '11.7', '-3.2339478632478632478632478632478632478632478632478632478632478632478e-16'); + BigNumber.config({ DECIMAL_PLACES : 86, ROUNDING_MODE : 3 }); + T('12.30', '-40.5769', '-0.30312813448045562869514428159864356320960940830866823241795208603910106489160088621852'); + BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 0 }); + T('-6.73', '-0.000000000000034239868273', '196554494495732.9567586213476318416909932952533237101218564025052083178614511371312482735964175243951879674335686'); + BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 3 }); + T('-0.0000000183', '-13836.03071', '1.322633e-12'); + BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 0 }); + T('0.000014732663289', '-11907.468', '-1'); + BigNumber.config({ DECIMAL_PLACES : 96, ROUNDING_MODE : 0 }); + T('1', '-3.0', '-0.333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333334'); + BigNumber.config({ DECIMAL_PLACES : 80, ROUNDING_MODE : 0 }); + T('-2', '-2152240.45', '9.2926420001073764783112407352068863866953155721982643714367509448119516572e-7'); + BigNumber.config({ DECIMAL_PLACES : 21, ROUNDING_MODE : 1 }); + T('-0.0000488540655', '7.117', '-0.000006864418364479415'); + BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 3 }); + T('19.7779357', '15.5318', '1.2733833618769234731325409804401292831481219176141850912321817175085952690608944'); + BigNumber.config({ DECIMAL_PLACES : 93, ROUNDING_MODE : 4 }); + T('0', '-7790934', '0'); + BigNumber.config({ DECIMAL_PLACES : 80, ROUNDING_MODE : 2 }); + T('-5433809', '-24.9847486', '217485.03805237407912121237033379635446882183157128104943189222244165386559062675539589'); + BigNumber.config({ DECIMAL_PLACES : 87, ROUNDING_MODE : 5 }); + T('6.4506726', '-0.0000006634', '-9723654.808561953572505275851673198673500150738619234247814290021103406692794694000602954476937'); + BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 2 }); + T('0', '2', '0'); + BigNumber.config({ DECIMAL_PLACES : 49, ROUNDING_MODE : 0 }); + T('2732.745', '2.9', '942.325862068965517241379310344827586206896551724138'); + BigNumber.config({ DECIMAL_PLACES : 72, ROUNDING_MODE : 2 }); + T('102.610852', '0.0000021', '48862310.476190476190476190476190476190476190476190476190476190476190476190476191'); + BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 1 }); + T('-45983380565.6', '-21990.85', '2091023.337688174854541775329284679764538433030101155707942166855760464011168281353381'); + BigNumber.config({ DECIMAL_PLACES : 74, ROUNDING_MODE : 3 }); + T('0.000000000000000067586178898', '-80', '-8.44827236225e-19'); + BigNumber.config({ DECIMAL_PLACES : 9, ROUNDING_MODE : 4 }); + T('-166379189.9', '0.00000000002611', '-6372240134048257372.654155496'); + BigNumber.config({ DECIMAL_PLACES : 33, ROUNDING_MODE : 2 }); + T('-20635674995', '0.0000000006175', '-33418097157894736842.105263157894736842105263157894736'); + BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 4 }); + T('0.000000000000000002728336', '5540100.5', '4.924704885768768996158102186052401035e-25'); + BigNumber.config({ DECIMAL_PLACES : 99, ROUNDING_MODE : 3 }); + T('48.99', '-0.000000000000000055715', '-879296419276675940.052050614735708516557480032307278111819079242573813156241586646325047114780579736157228753477519519'); + BigNumber.config({ DECIMAL_PLACES : 39, ROUNDING_MODE : 1 }); + T('285265.038', '359018944.70', '0.000794568203743037741707227518347724673'); + BigNumber.config({ DECIMAL_PLACES : 70, ROUNDING_MODE : 3 }); + T('-3', '26715362', '-1.122949410155849656837889750473903366909271152679870106195828453e-7'); + BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 1 }); + T('35', '-5.48580575', '-6.3801'); + BigNumber.config({ DECIMAL_PLACES : 62, ROUNDING_MODE : 5 }); + T('-194676582', '-0.000000000024805310', '7848181780433302385.65855455948746457915664025162354350741837130840130601068884041'); + BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 3 }); + T('-256.3169164', '7938.868', '-0.032286330544859'); + BigNumber.config({ DECIMAL_PLACES : 42, ROUNDING_MODE : 4 }); + T('3094.61', '468.530210', '6.604931622232000792435561412358020627954812'); + BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 0 }); + T('-16.54', '-183.3', '0.091'); + BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 3 }); + T('-29526831086', '-0.0032601', '9057032326002.269869022422625072850526057482899297567559277322781509769'); + BigNumber.config({ DECIMAL_PLACES : 67, ROUNDING_MODE : 5 }); + T('32.4', '0.000001833940816', '17666873.2803861648717457848432552689312085194356675466456274126569196767362'); + BigNumber.config({ DECIMAL_PLACES : 46, ROUNDING_MODE : 0 }); + T('-0.0000000000000616896835', '-70.8235095584', '8.710339812958805083264135380603e-16'); + BigNumber.config({ DECIMAL_PLACES : 94, ROUNDING_MODE : 1 }); + T('1', '-52.2', '-0.0191570881226053639846743295019157088122605363984674329501915708812260536398467432950191570881'); + BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 5 }); + T('-1', '717', '-0.0013947'); + BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 1 }); + T('3068126.8849', '4022', '762.83612255096966683242168075584286424664346096469418199900546991546494281452013923421183490800596'); + BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 5 }); + T('0.000855562', '0.00000000000606', '141181848.184818481848184818481848184818481848184818481848184818481848184818481848184818481848'); + BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 1 }); + T('-1.3', '0.857190837559', '-1.51658177273800091850428574583107013319652621945040908472429380581341'); + BigNumber.config({ DECIMAL_PLACES : 25, ROUNDING_MODE : 4 }); + T('16070', '-2228', '-7.2127468581687612208258528'); + BigNumber.config({ DECIMAL_PLACES : 23, ROUNDING_MODE : 4 }); + T('2.8', '-0.0056', '-500'); + BigNumber.config({ DECIMAL_PLACES : 9, ROUNDING_MODE : 1 }); + T('7', '-3534', '-0.001980758'); + BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 5 }); + T('2317042.797', '9', '257449.19966666666666667'); + BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 2 }); + T('9.192', '-2575227269', '-3.5693937038688603603785464575243281178535858382136446691998740247884506227632680445960282e-9'); + BigNumber.config({ DECIMAL_PLACES : 67, ROUNDING_MODE : 1 }); + T('0.003172163', '-4799.9', '-6.608810600220837934123627575574491135231983999666659722077543e-7'); + BigNumber.config({ DECIMAL_PLACES : 24, ROUNDING_MODE : 4 }); + T('0', '174602409.27', '0'); + BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 4 }); + T('-160.15373', '-1570.58626986', '0.10197066730646759914875956726708577391128728531899124518938954835414'); + BigNumber.config({ DECIMAL_PLACES : 2, ROUNDING_MODE : 5 }); + T('-4.0', '14.3', '-0.28'); + BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 3 }); + T('-1621865.6', '-0.000000000000000000021', '7.7231695238095238095238095238095238095238095238095238095238e+25'); + BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 5 }); + T('-1.1', '-32.701912', '0.0336371769332631070623638153022979206842706934077738329183932731517349811228163050527443166014269'); + BigNumber.config({ DECIMAL_PLACES : 19, ROUNDING_MODE : 4 }); + T('1', '2', '0.5'); + BigNumber.config({ DECIMAL_PLACES : 72, ROUNDING_MODE : 4 }); + T('-3.04', '3059.4705628', '-0.000993635969884220518312221493880228681506044526796517148042029855480066'); + BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 1 }); + T('-0.00000047745', '0.820', '-5.8225609e-7'); + BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 4 }); + T('7871755256', '-15.0', '-524783683.7333333333333333333333333333333333333333333333333333333333333333333333333333'); + BigNumber.config({ DECIMAL_PLACES : 48, ROUNDING_MODE : 6 }); + T('-782997903.71', '2', '-391498951.855'); + BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 2 }); + T('-11', '0.0000000000000022091766', '-4979230723338279.06741362370034156617447423623806263383380033990944861538004702747620991458989743056304326236299'); + BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 0 }); + T('0.00000000000000001791715', '2098052450.48', '8.53989612886029129450365274644980714458e-27'); + BigNumber.config({ DECIMAL_PLACES : 39, ROUNDING_MODE : 2 }); + T('-14.358261', '-46.3', '0.310113628509719222462203023758099352052'); + BigNumber.config({ DECIMAL_PLACES : 32, ROUNDING_MODE : 3 }); + T('0.007315', '-118203872186', '-6.188460551012629583e-14'); + BigNumber.config({ DECIMAL_PLACES : 43, ROUNDING_MODE : 4 }); + T('-105.225331', '57', '-1.8460584385964912280701754385964912280701754'); + BigNumber.config({ DECIMAL_PLACES : 98, ROUNDING_MODE : 6 }); + T('3584', '160.004614', '22.39935405862733433424613617704799437846211109887118630216501131648616083033705515517196272852481617'); + BigNumber.config({ DECIMAL_PLACES : 9, ROUNDING_MODE : 4 }); + T('-1626627.5', '-65167101663', '0.000024961'); + BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 2 }); + T('-56643985.906', '-22360018221', '0.002533271008375176940782690608166119347278147282866'); + BigNumber.config({ DECIMAL_PLACES : 96, ROUNDING_MODE : 4 }); + T('8.80', '8020.1258054', '0.001097239646050802084840822414763065058191412494523012660172454107274570159574968404896488109146'); + BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 2 }); + T('-23.0', '-1953.512250', '0.011773665611771822777154328057067469118762884645335600019912851839040169827447972236'); + BigNumber.config({ DECIMAL_PLACES : 23, ROUNDING_MODE : 5 }); + T('-164004', '7.1', '-23099.15492957746478873239437'); + BigNumber.config({ DECIMAL_PLACES : 37, ROUNDING_MODE : 2 }); + T('0.000000000000306300993', '1', '3.06300993e-13'); + BigNumber.config({ DECIMAL_PLACES : 56, ROUNDING_MODE : 6 }); + T('0.000012616277', '4.9', '0.00000257475040816326530612244897959183673469387755102041'); + BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 0 }); + T('-1424554.476', '-1', '1424554.476'); + BigNumber.config({ DECIMAL_PLACES : 6, ROUNDING_MODE : 0 }); + T('0', '9', '0'); + BigNumber.config({ DECIMAL_PLACES : 88, ROUNDING_MODE : 3 }); + T('-352', '-1.840340', '191.2690046404468739472054076964039253616179618983448710564352239260136713868089592140582718'); + BigNumber.config({ DECIMAL_PLACES : 49, ROUNDING_MODE : 4 }); + T('-1.45800767', '-5.2640370', '0.2769751941333239109071611768686276331264388909121'); + BigNumber.config({ DECIMAL_PLACES : 85, ROUNDING_MODE : 1 }); + T('0.0000000000000317829012497', '0.0000000000000000000411245727', '772844.53461810680406169910186082006391278565187377618637238752391948865161096251341719108'); + BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 6 }); + T('-4.3', '8.43', '-0.51008303677342823250296559905100830367734282325029655990510083037'); + BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 5 }); + T('-3.89', '-2489.03', '0.001562857820114663141866510246963676612977746350988135940506944472344648316814180625'); + BigNumber.config({ DECIMAL_PLACES : 71, ROUNDING_MODE : 3 }); + T('8.3', '-955494.70778', '-0.00000868659965609255046166133355661190473328568036540381307940099954742'); + BigNumber.config({ DECIMAL_PLACES : 46, ROUNDING_MODE : 4 }); + T('-7.20242138', '-1368431.52', '0.0000052632676715894413189196343562738163178235'); + BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 3 }); + T('355695.465', '-1', '-355695.465'); + BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 6 }); + T('-309', '0.0000000000007297626', '-423425371483822.2731611622738682415349868573697802545649777064486450799205111360872700245257841'); + BigNumber.config({ DECIMAL_PLACES : 60, ROUNDING_MODE : 4 }); + T('-40640.908302', '0.00000000000000290351316', '-13997149681250282330.389024308744651944336288112432733041237533085608608021600977'); + BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 3 }); + T('-0.000000158322', '3.09268248', '-5.11924521912123355126970551467669581133333804122044886e-8'); + BigNumber.config({ DECIMAL_PLACES : 2, ROUNDING_MODE : 3 }); + T('7978.2', '0.0076056771525', '1048979.57'); + BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 4 }); + T('-7742.6895', '475.0762115', '-16'); + BigNumber.config({ DECIMAL_PLACES : 63, ROUNDING_MODE : 2 }); + T('21578.902630', '32.5630', '662.681651874827257930780333507354973436108466664619353253692841569'); + BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 0 }); + T('3.13693', '-24541106.36', '-1.278235e-7'); + BigNumber.config({ DECIMAL_PLACES : 19, ROUNDING_MODE : 3 }); + T('63409', '-3.1', '-20454.5161290322580645162'); + BigNumber.config({ DECIMAL_PLACES : 9, ROUNDING_MODE : 3 }); + T('0.00002566', '0.0000000001944451620', '131965.227296321'); + BigNumber.config({ DECIMAL_PLACES : 96, ROUNDING_MODE : 5 }); + T('-0.000000245', '-0.253', '9.68379446640316205533596837944664031620553359683794466403162055335968379446640316205533597e-7'); + BigNumber.config({ DECIMAL_PLACES : 56, ROUNDING_MODE : 3 }); + T('-0.0000000000000000000171175545', '133490374.369', '-1.2823062772063923029449392375e-28'); + BigNumber.config({ DECIMAL_PLACES : 99, ROUNDING_MODE : 6 }); + T('-1954781', '0.00049611053', '-3940212678.009475025656077084273941937898395343473157080540096578881323079354917139130265991330601267423209098'); + BigNumber.config({ DECIMAL_PLACES : 49, ROUNDING_MODE : 6 }); + T('-6.2', '1', '-6.2'); + BigNumber.config({ DECIMAL_PLACES : 63, ROUNDING_MODE : 3 }); + T('-12286.3140300', '7', '-1755.187718571428571428571428571428571428571428571428571428571428572'); + BigNumber.config({ DECIMAL_PLACES : 99, ROUNDING_MODE : 1 }); + T('19.849636679', '519.354', '0.03821985905374754021341897819213869537925961868012954555081890194356835607312160876781540144102096'); + BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 5 }); + T('7.6', '-42', '-0.180952380952381'); + BigNumber.config({ DECIMAL_PLACES : 52, ROUNDING_MODE : 4 }); + T('433249', '-30893585.3', '-0.0140239145373651403289860306372404111995379183134176'); + BigNumber.config({ DECIMAL_PLACES : 1, ROUNDING_MODE : 3 }); + T('-8969', '57.600315', '-155.8'); + BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 0 }); + T('0.0000108950356', '-81.23', '-1.3412576141819524806106118429151791211e-7'); + BigNumber.config({ DECIMAL_PLACES : 92, ROUNDING_MODE : 4 }); + T('17257554596.7', '608', '28384135.84983552631578947368421052631578947368421052631578947368421052631578947368421052631578947368'); + BigNumber.config({ DECIMAL_PLACES : 60, ROUNDING_MODE : 0 }); + T('2.9', '-22840.8', '-0.000126965780533081153024412454905257258940142201674197050892'); + BigNumber.config({ DECIMAL_PLACES : 23, ROUNDING_MODE : 5 }); + T('-13734.55427', '-827538', '0.01659688651155596480162'); + BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 2 }); + T('-17.55380', '-357081.491', '0.00004915908676991605818068010699552052671360667080893307908810092876'); + BigNumber.config({ DECIMAL_PLACES : 48, ROUNDING_MODE : 5 }); + T('9609', '-0.00006559', '-146500991.004726330233267266351577984448848909894801036743'); + BigNumber.config({ DECIMAL_PLACES : 53, ROUNDING_MODE : 6 }); + T('-1986505519.2', '-1', '1986505519.2'); + BigNumber.config({ DECIMAL_PLACES : 100, ROUNDING_MODE : 4 }); + T('2', '-452173479694', '-4.4230811620209633602979431439702536337489266551571568427190599366243954435520300874941211e-12'); + BigNumber.config({ DECIMAL_PLACES : 2, ROUNDING_MODE : 0 }); + T('-3', '-1', '3'); + BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 2 }); + T('-0.000000000000000045', '-52784.4850', '8.52523236704876442386432301082411e-22'); + BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 2 }); + T('-18291.6313', '-45', '406.480695555555555555555555555555555555555555555555555555555555555555555555556'); + BigNumber.config({ DECIMAL_PLACES : 28, ROUNDING_MODE : 6 }); + T('-4.207', '-213213497', '1.97313962727228286115e-8'); + BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 4 }); + T('1.641', '-1.6', '-1.025625'); + BigNumber.config({ DECIMAL_PLACES : 94, ROUNDING_MODE : 4 }); + T('5790881110', '24095.79849', '240327.4210814501213070196122809624309735833950361028272360855056270849482855216224876389228137174715'); + BigNumber.config({ DECIMAL_PLACES : 9, ROUNDING_MODE : 0 }); + T('0', '-0.000000000743462591', '0'); + BigNumber.config({ DECIMAL_PLACES : 26, ROUNDING_MODE : 5 }); + T('96.5', '-2791122983', '-3.457389752718037075e-8'); + BigNumber.config({ DECIMAL_PLACES : 53, ROUNDING_MODE : 1 }); + T('0.000000020126701423', '0.0000000000045', '4472.60031622222222222222222222222222222222222222222222222'); + BigNumber.config({ DECIMAL_PLACES : 43, ROUNDING_MODE : 2 }); + T('2.3', '10.69', '0.215154349859681945743685687558465855940131'); + BigNumber.config({ DECIMAL_PLACES : 94, ROUNDING_MODE : 3 }); + T('1.66', '-0.0000000000000000391535668164', '-42397159057924873.1803926502001743692152496396540277885915094781888235162703821490195813464452711347436564423093'); + BigNumber.config({ DECIMAL_PLACES : 28, ROUNDING_MODE : 4 }); + T('5.5', '8', '0.6875'); + BigNumber.config({ DECIMAL_PLACES : 74, ROUNDING_MODE : 2 }); + T('-21.2', '-8', '2.65'); + BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 0 }); + T('0', '3', '0'); + BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 2 }); + T('-16289', '60495201941.0', '-2.6e-7'); + BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 0 }); + T('-13.34453', '1.6800901', '-7.94274664198068901185716170817267478690577368439942595935777491934'); + BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 1 }); + T('2.6', '-837.2419', '-0.003105434642'); + BigNumber.config({ DECIMAL_PLACES : 99, ROUNDING_MODE : 5 }); + T('53.3', '1', '53.3'); + BigNumber.config({ DECIMAL_PLACES : 46, ROUNDING_MODE : 5 }); + T('3315.66598', '-1', '-3315.66598'); + BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 0 }); + T('-0.00000000232', '-1.4301592', '1.7e-9'); + BigNumber.config({ DECIMAL_PLACES : 89, ROUNDING_MODE : 5 }); + T('30.1580564592', '0.0000000000000042', '7180489633142857.14285714285714285714285714285714285714285714285714285714285714285714285714285714285714286'); + BigNumber.config({ DECIMAL_PLACES : 9, ROUNDING_MODE : 4 }); + T('-3640656264', '0.000614500900', '-5924574339923.668134579'); + BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 0 }); + T('8', '206.213627', '0.0387947203897'); + BigNumber.config({ DECIMAL_PLACES : 53, ROUNDING_MODE : 1 }); + T('86.96253', '3.52672', '24.65818947917611831957172670356591960802105072135014971'); + BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 4 }); + T('193776850', '-211004.2379', '-918.35525166956848121200697457650446555320109994814469079438332930279027348388626842835558043547712'); + BigNumber.config({ DECIMAL_PLACES : 88, ROUNDING_MODE : 1 }); + T('9.1', '571.3', '0.015928583931384561526343427271136005601260283563801855417468930509364607036583231227026'); + BigNumber.config({ DECIMAL_PLACES : 40, ROUNDING_MODE : 0 }); + T('-0.0000001420', '2864706.57', '-4.95687766024846307382888434e-14'); + BigNumber.config({ DECIMAL_PLACES : 1, ROUNDING_MODE : 6 }); + T('183.9357', '-14954.475716', '0'); + BigNumber.config({ DECIMAL_PLACES : 32, ROUNDING_MODE : 0 }); + T('-538.13', '-221752.405754', '0.00242671549907319613376373579869'); + BigNumber.config({ DECIMAL_PLACES : 66, ROUNDING_MODE : 2 }); + T('-0.020915', '-84.2', '0.000248396674584323040380047505938242280285035629453681710213776723'); + BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 5 }); + T('-76.09', '0.0212', '-3589.150943396226415094339622641509434'); + BigNumber.config({ DECIMAL_PLACES : 52, ROUNDING_MODE : 6 }); + T('5.5438330', '-1029137.3', '-0.000005386874035174898431919628216759804546973469915'); + BigNumber.config({ DECIMAL_PLACES : 88, ROUNDING_MODE : 5 }); + T('6', '-22', '-0.2727272727272727272727272727272727272727272727272727272727272727272727272727272727272727'); + BigNumber.config({ DECIMAL_PLACES : 93, ROUNDING_MODE : 0 }); + T('-24.077', '1951789.43472', '-0.000012335859376887159257283511523895190685203526266580589086262045958945040026054148206461197'); + BigNumber.config({ DECIMAL_PLACES : 26, ROUNDING_MODE : 2 }); + T('-173648245', '-0.00000077', '225517201298701.2987012987012987012987013'); + BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 1 }); + T('0.003909285793', '-5380.4971', '-7.26565913956165871737018499647551152847940388258921280712148325e-7'); + BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 4 }); + T('-99509.037', '1.016538634', '-97890.06897695538'); + BigNumber.config({ DECIMAL_PLACES : 46, ROUNDING_MODE : 1 }); + T('197708682', '-118627.91', '-1666.6287216895248344171283132274689826365481782491'); + BigNumber.config({ DECIMAL_PLACES : 67, ROUNDING_MODE : 4 }); + T('16225844', '0.0000001233', '131596463909164.6390916463909164639091646390916463909164639091646390916463909164639'); + BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 2 }); + T('-2123.68659', '1893.270', '-1.12170297421920803688855789190131360027888256825492402034575100223422966613319811754266427926286'); + BigNumber.config({ DECIMAL_PLACES : 87, ROUNDING_MODE : 3 }); + T('0', '-0.0000000000000000000121761598463', '0'); + BigNumber.config({ DECIMAL_PLACES : 19, ROUNDING_MODE : 2 }); + T('-0.10981880570', '-0.00000000000000101', '108731490792079.2079207920792079208'); + BigNumber.config({ DECIMAL_PLACES : 60, ROUNDING_MODE : 1 }); + T('1', '-4', '-0.25'); + BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 5 }); + T('-18179003', '-147331727447', '0.00012338824308253344062211089157949279630698091288089992960061977328564784516043454247492639188'); + BigNumber.config({ DECIMAL_PLACES : 50, ROUNDING_MODE : 6 }); + T('-4886160', '2', '-2443080'); + BigNumber.config({ DECIMAL_PLACES : 83, ROUNDING_MODE : 3 }); + T('-2955.153579', '-1.4', '2110.823985'); + BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 4 }); + T('2.5', '-0.000000000000054366301', '-45984368147466.9391246610653169138728051408169189218887634087888377765483806'); + BigNumber.config({ DECIMAL_PLACES : 72, ROUNDING_MODE : 4 }); + T('-799.2', '-18.646', '42.861739783331545639815510028960634988737530837713182452000429046444277593'); + BigNumber.config({ DECIMAL_PLACES : 6, ROUNDING_MODE : 0 }); + T('0', '-7730750.2', '0'); + BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 5 }); + T('-17.8487823412', '7', '-2.54982604874285714285714285714285714285714285714285714285714285714'); + BigNumber.config({ DECIMAL_PLACES : 29, ROUNDING_MODE : 3 }); + T('1843.40', '-5.5', '-335.16363636363636363636363636364'); + BigNumber.config({ DECIMAL_PLACES : 32, ROUNDING_MODE : 0 }); + T('93758166.45', '-59380379', '-1.57894186647074111803833384088034'); + BigNumber.config({ DECIMAL_PLACES : 78, ROUNDING_MODE : 0 }); + T('0.000000000000000000028', '0.00000370007', '7.567424400078917425886537281727102460223725497085190280183888413e-15'); + BigNumber.config({ DECIMAL_PLACES : 89, ROUNDING_MODE : 3 }); + T('1', '-0.00000000000000151725384', '-659085496201479.37803208987100009580466772784704239074458364857392616650091984608191863267915670590756258'); + BigNumber.config({ DECIMAL_PLACES : 80, ROUNDING_MODE : 3 }); + T('1.18', '147.003', '0.00802704706706665850356795439548852744501812888172350224145085474446099739461099'); + BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 2 }); + T('-1', '0.0001050274026', '-9521.324675699444556196'); + BigNumber.config({ DECIMAL_PLACES : 49, ROUNDING_MODE : 3 }); + T('151068', '-0.0000000000007817', '-193255724702571318.9203019061020851989254189586798004349494691057951'); + BigNumber.config({ DECIMAL_PLACES : 98, ROUNDING_MODE : 3 }); + T('1165746.4', '54210098.36', '0.02150422956731193062531827510965615595315440781649967107715094726863727461423480804029295622181933'); + BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 3 }); + T('-344.953', '-15.8', '21.8324683544303797468354430379746835443037974683544303797468354430379746835443037'); + BigNumber.config({ DECIMAL_PLACES : 80, ROUNDING_MODE : 1 }); + T('-247522439806', '2', '-123761219903'); + BigNumber.config({ DECIMAL_PLACES : 27, ROUNDING_MODE : 3 }); + T('16.4131', '0.0000000006580318', '24942715534.41642182034363688806528803'); + BigNumber.config({ DECIMAL_PLACES : 6, ROUNDING_MODE : 3 }); + T('24.14', '6.521', '3.701886'); + BigNumber.config({ DECIMAL_PLACES : 93, ROUNDING_MODE : 5 }); + T('25194.6', '-436989173', '-0.000057654975355647999086695907680989615731280372019651846156838306838325259834297999872870992'); + BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 4 }); + T('346.01', '-0.0000000000000000011604272172', '-298174667804577239969.27293028679920556'); + BigNumber.config({ DECIMAL_PLACES : 74, ROUNDING_MODE : 5 }); + T('-7253986.6', '0.000000000000000001040', '-6.97498711538461538461538461538461538461538461538461538461538461538461538461538461538461538461538462e+24'); + BigNumber.config({ DECIMAL_PLACES : 66, ROUNDING_MODE : 4 }); + T('0.0000000000013848905844', '-0.0000000038192393595', '-0.000362609005103389095401366660533338065060857833359370520490154684'); + BigNumber.config({ DECIMAL_PLACES : 49, ROUNDING_MODE : 4 }); + T('-315.3003', '-1.30', '242.5386923076923076923076923076923076923076923076923'); + BigNumber.config({ DECIMAL_PLACES : 62, ROUNDING_MODE : 2 }); + T('-0.00000000000097624807', '23974440745.1', '-4.072036884528911513157680911262659441396e-23'); + BigNumber.config({ DECIMAL_PLACES : 37, ROUNDING_MODE : 1 }); + T('-0.00000972384040183', '-6489.7', '1.4983497545079125383299690278e-9'); + BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 4 }); + T('-340.6133115', '-0.000000000001381520', '246549678252938.79205512768545'); + BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 5 }); + T('-2398.15210', '-14', '171.296578571428571429'); + BigNumber.config({ DECIMAL_PLACES : 98, ROUNDING_MODE : 2 }); + T('-4506.7756', '4067', '-1.10813267764937300221293336611753134988935333169412343250553233341529382837472338332923530858126383'); + BigNumber.config({ DECIMAL_PLACES : 74, ROUNDING_MODE : 5 }); + T('-0.0000000000002056', '8555298162', '-2.403189182969822016590051370789384301063474729660743e-23'); + BigNumber.config({ DECIMAL_PLACES : 22, ROUNDING_MODE : 6 }); + T('-1890.634', '0.00000000000000129874859126', '-1455735169010480840.6735549493465249989787'); + BigNumber.config({ DECIMAL_PLACES : 19, ROUNDING_MODE : 1 }); + T('-215', '4.3', '-50'); + BigNumber.config({ DECIMAL_PLACES : 9, ROUNDING_MODE : 4 }); + T('-9045.91', '-93.909595', '96.325726887'); + BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 2 }); + T('0', '0.029309783', '0'); + BigNumber.config({ DECIMAL_PLACES : 90, ROUNDING_MODE : 5 }); + T('-0.000000000000000072', '-11.4', '6.315789473684210526315789473684210526315789473684210526315789473684210526e-18'); + BigNumber.config({ DECIMAL_PLACES : 70, ROUNDING_MODE : 4 }); + T('-5', '7930.738', '-0.0006304583507865220109402176695283591514434091757917106831671907456784'); + BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 3 }); + T('2.52', '1.4', '1.8'); + BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 6 }); + T('-2362.497', '7646.45', '-0.3089665138724506143373722446363998979918785841795866055489802457349488978545599591967514336718346'); + BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 0 }); + T('1.6', '131684.99', '0.000012150207855883954579789237938203890967376008457759688480820783'); + BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 3 }); + T('-3', '-0.00000000031029503961', '9668217718.7576214892621950412493092576898122'); + BigNumber.config({ DECIMAL_PLACES : 60, ROUNDING_MODE : 3 }); + T('-0.0000000000000004155575', '-30.947327569', '1.3427896126845691837127043142521241072142153e-17'); + BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 1 }); + T('-274.3080', '1', '-274.308'); + BigNumber.config({ DECIMAL_PLACES : 99, ROUNDING_MODE : 4 }); + T('2.7', '-8.06', '-0.334987593052109181141439205955334987593052109181141439205955334987593052109181141439205955334987593'); + BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 4 }); + T('1355257.02789', '-0.00000000000000037743272', '-3.5907247996146174078389388180229843347974706591415815777709998221669811774665429112770085222076135847e+21'); + BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 2 }); + T('-1.8560488417', '-79.0', '1'); + BigNumber.config({ DECIMAL_PLACES : 9, ROUNDING_MODE : 3 }); + T('0', '-55610.94717', '0'); + BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 6 }); + T('-1', '0.00000000000000102635', '-974326496809080.7229502606323378964290933891947191503872947824816095873727286013543138305646'); + BigNumber.config({ DECIMAL_PLACES : 36, ROUNDING_MODE : 1 }); + T('-1048642006.2', '-0.0000000000000000000117799', '8.901960171138974015059550590412482279136495216427983259620200511e+28'); + BigNumber.config({ DECIMAL_PLACES : 19, ROUNDING_MODE : 6 }); + T('-10.606', '-308371.8482', '0.000034393541634583'); + BigNumber.config({ DECIMAL_PLACES : 70, ROUNDING_MODE : 3 }); + T('-1563.76', '-1.0', '1563.76'); + BigNumber.config({ DECIMAL_PLACES : 41, ROUNDING_MODE : 2 }); + T('3620.41', '-0.00839', '-431514.8986889153754469606674612634088200238379'); + BigNumber.config({ DECIMAL_PLACES : 100, ROUNDING_MODE : 3 }); + T('-34.639108', '-421919490.29', '8.20988572397812942949457600417220109644629519729125192293329929449180744079249773972322457888e-8'); + BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 1 }); + T('-8', '67714.5152', '-0.0001'); + BigNumber.config({ DECIMAL_PLACES : 70, ROUNDING_MODE : 4 }); + T('-78539595.81', '-27567.48437', '2848.9939363299256311503623788941319348973299154898550505644124538593145487'); + BigNumber.config({ DECIMAL_PLACES : 96, ROUNDING_MODE : 1 }); + T('-12631.2256', '-10622.81721', '1.189065513441137334603538753727646980757941517850894094411326126922972818431844220729088493842209'); + BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 3 }); + T('1.4621430288', '583933', '0.00000250395683888391305166859896597726108988531218478832331791489'); + BigNumber.config({ DECIMAL_PLACES : 62, ROUNDING_MODE : 5 }); + T('-17.4045', '663.99681', '-0.02621172231234062705813300518717853478844273363301248390033681'); + BigNumber.config({ DECIMAL_PLACES : 29, ROUNDING_MODE : 4 }); + T('889993.2', '-0.0000000090576728', '-98258484232285.36142307988868840570173830965'); + BigNumber.config({ DECIMAL_PLACES : 72, ROUNDING_MODE : 6 }); + T('-1429240.257', '-490.4', '2914.437718189233278955954323001631321370309951060358890701468189233278955954'); + BigNumber.config({ DECIMAL_PLACES : 43, ROUNDING_MODE : 5 }); + T('49.299562', '-7459284.2', '-0.000006609154535230069394594189077820630564'); + BigNumber.config({ DECIMAL_PLACES : 1, ROUNDING_MODE : 2 }); + T('-9308.8', '-0.000000090', '103431111111.2'); + BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 5 }); + T('-3180', '112.741', '-28.20624262690592'); + BigNumber.config({ DECIMAL_PLACES : 21, ROUNDING_MODE : 1 }); + T('-15.5696', '-7.6', '2.048631578947368421052'); + BigNumber.config({ DECIMAL_PLACES : 40, ROUNDING_MODE : 1 }); + T('-0.00007028933030', '0.000801688', '-0.0876766651116144934188861502230294079492'); + BigNumber.config({ DECIMAL_PLACES : 80, ROUNDING_MODE : 5 }); + T('-172.12151767', '-0.000000000008024', '21450837197158.52442671984047856430707876370887337986041874376869391824526420737786640079760718'); + BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 2 }); + T('-167.292', '-31.31291781', '5.34258739524344569535980907682777199484496076095'); + BigNumber.config({ DECIMAL_PLACES : 2, ROUNDING_MODE : 6 }); + T('-29.5080', '1.2916', '-22.85'); + BigNumber.config({ DECIMAL_PLACES : 78, ROUNDING_MODE : 2 }); + T('-66.6420', '-18434630213', '3.615044035600151476713540519121667721407198047385101621620469442285526e-9'); + BigNumber.config({ DECIMAL_PLACES : 72, ROUNDING_MODE : 0 }); + T('-161.612097', '-12126', '0.013327733547748639287481444829292429490351311232063334982681840672934191'); + BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 4 }); + T('2', '42059.8', '0.000047551343563212378565756375446388237699656203786037974502969581405522613'); + BigNumber.config({ DECIMAL_PLACES : 77, ROUNDING_MODE : 3 }); + T('-538162', '422869947.0', '-0.00127264186972360085924952240694465809366206863596291462159641247808986529847'); + BigNumber.config({ DECIMAL_PLACES : 45, ROUNDING_MODE : 0 }); + T('36', '3.274', '10.995723885155772755039706780696395846059865608'); + BigNumber.config({ DECIMAL_PLACES : 83, ROUNDING_MODE : 5 }); + T('-4.7855', '40.6', '-0.11786945812807881773399014778325123152709359605911330049261083743842364532019704433'); + BigNumber.config({ DECIMAL_PLACES : 77, ROUNDING_MODE : 2 }); + T('353.14338096', '19.9', '17.74589854070351758793969849246231155778894472361809045226130653266331658291458'); + BigNumber.config({ DECIMAL_PLACES : 40, ROUNDING_MODE : 5 }); + T('27145.87391', '-0.00000000000000013462451', '-201641394349364762776.1096400647994930492226118408898944181858'); + BigNumber.config({ DECIMAL_PLACES : 90, ROUNDING_MODE : 2 }); + T('1', '-571.2813795', '-0.001750450891424512112949062082987075548468843451950808769533858052168493617075786381376359'); + BigNumber.config({ DECIMAL_PLACES : 67, ROUNDING_MODE : 3 }); + T('89', '2.2', '40.4545454545454545454545454545454545454545454545454545454545454545454'); + BigNumber.config({ DECIMAL_PLACES : 92, ROUNDING_MODE : 0 }); + T('-0.0000000000000000005676736475', '-99940906931', '5.68009301628537769948086484010175807156744441931224083180018186e-30'); + BigNumber.config({ DECIMAL_PLACES : 22, ROUNDING_MODE : 4 }); + T('-2', '0.000000000000278785654264', '-7173970286527.2681655161538703269695'); + BigNumber.config({ DECIMAL_PLACES : 23, ROUNDING_MODE : 4 }); + T('-404537.8', '-65334.7', '6.19177558020469979964705'); + BigNumber.config({ DECIMAL_PLACES : 64, ROUNDING_MODE : 4 }); + T('16203134.062', '10', '1620313.4062'); + BigNumber.config({ DECIMAL_PLACES : 91, ROUNDING_MODE : 2 }); + T('11129875.4', '2037.690514', '5462.0048155163566708344601932028231447123476180642415259337071242802085302341452623555767311189'); + BigNumber.config({ DECIMAL_PLACES : 89, ROUNDING_MODE : 2 }); + T('-0.00000000000000010', '-41381717', '2.416526119493785141877994090965341046626943971416169126090152325e-24'); + BigNumber.config({ DECIMAL_PLACES : 96, ROUNDING_MODE : 1 }); + T('0.000011380', '-939.665917947', '-1.2110687194937580380915434840947927246809264549787460761281687158465110383410384423797682e-8'); + BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 3 }); + T('-102081', '15.22005110', '-6707.0077051186773'); + BigNumber.config({ DECIMAL_PLACES : 94, ROUNDING_MODE : 0 }); + T('49804.0200', '-7', '-7114.86'); + BigNumber.config({ DECIMAL_PLACES : 100, ROUNDING_MODE : 2 }); + T('14.12', '0.224636', '62.8572446090564290674691500917039121066970565715201481507861607222350825335208960273509143681333357076'); + BigNumber.config({ DECIMAL_PLACES : 9, ROUNDING_MODE : 6 }); + T('71855082', '-4598.44013', '-15625.96879999'); + BigNumber.config({ DECIMAL_PLACES : 25, ROUNDING_MODE : 1 }); + T('8.656024', '4', '2.164006'); + BigNumber.config({ DECIMAL_PLACES : 92, ROUNDING_MODE : 4 }); + T('-6', '-1812116344', '3.31104568416165667561574622606019605549123616314560429791035536292254753815078442888e-9'); + BigNumber.config({ DECIMAL_PLACES : 60, ROUNDING_MODE : 0 }); + T('1515436', '127663', '11.87059680565238166109209402881022692557749700383039721767466'); + BigNumber.config({ DECIMAL_PLACES : 6, ROUNDING_MODE : 6 }); + T('-5.5', '-188266070.4', '0'); + BigNumber.config({ DECIMAL_PLACES : 100, ROUNDING_MODE : 5 }); + T('-72175.13', '-8', '9021.89125'); + BigNumber.config({ DECIMAL_PLACES : 72, ROUNDING_MODE : 2 }); + T('0.00000000718317730486', '0.0000000440347595048', '0.163125162613344106476974134238442341342990115832326674658114845878539402'); + BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 4 }); + T('3.1', '2.32', '1.33620689655172413793103448275862068965517241379'); + BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 0 }); + T('2575460.6269', '0.0000000000000000066369929', '3.88046313398949093346174892e+23'); + BigNumber.config({ DECIMAL_PLACES : 60, ROUNDING_MODE : 2 }); + T('-102052425223.2', '-5.0', '20410485044.64'); + BigNumber.config({ DECIMAL_PLACES : 27, ROUNDING_MODE : 3 }); + T('-6.27', '4', '-1.5675'); + BigNumber.config({ DECIMAL_PLACES : 24, ROUNDING_MODE : 4 }); + T('-1.313021', '2081.6', '-0.000630774884704073789393'); + BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 5 }); + T('-3.366795', '1777.602', '-0.0018940094577'); + BigNumber.config({ DECIMAL_PLACES : 70, ROUNDING_MODE : 4 }); + T('-57628.4', '-446564.474', '0.1290483308799884515667943617028523410933042559941747627689702875916636'); + BigNumber.config({ DECIMAL_PLACES : 63, ROUNDING_MODE : 1 }); + T('-615.29440145', '-84.0341', '7.321960983100907845743573144711492120460622532995533955858395579'); + BigNumber.config({ DECIMAL_PLACES : 94, ROUNDING_MODE : 0 }); + T('-5582198049', '-471953164.3', '11.8278644392171945863569666080105144026470509671291974003192418049012750310317179920219469116504'); + BigNumber.config({ DECIMAL_PLACES : 1, ROUNDING_MODE : 5 }); + T('1023670813', '-46.346047', '-22087553.9'); + BigNumber.config({ DECIMAL_PLACES : 63, ROUNDING_MODE : 2 }); + T('-1.489', '-2651742.7', '5.61517525814250379571140141160754397476044715801423720334e-7'); + BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 1 }); + T('-4.9', '-0.00000000000473', '1035940803382.663'); + BigNumber.config({ DECIMAL_PLACES : 31, ROUNDING_MODE : 2 }); + T('16249004.8', '4798211827.3', '0.0033864709155917927600328225718'); + BigNumber.config({ DECIMAL_PLACES : 28, ROUNDING_MODE : 2 }); + T('808.0', '8607051.1', '0.0000938765194504305894036112'); + BigNumber.config({ DECIMAL_PLACES : 62, ROUNDING_MODE : 3 }); + T('-0.0000000000002115738944', '-43.9', '4.81945089749430523917995444191343963553530751708e-15'); + BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 4 }); + T('231.525', '-254.160', '-0.910941926346'); + BigNumber.config({ DECIMAL_PLACES : 27, ROUNDING_MODE : 4 }); + T('0.004330', '33883.93892', '1.27789157282544174767e-7'); + BigNumber.config({ DECIMAL_PLACES : 48, ROUNDING_MODE : 1 }); + T('-0.064056046', '0.00000000006905', '-927676263.577118030412744388124547429398986241853729181752'); + BigNumber.config({ DECIMAL_PLACES : 30, ROUNDING_MODE : 1 }); + T('3.74', '2.304', '1.623263888888888888888888888888'); + BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 1 }); + T('-0.00000000000000008849245494', '4748.9', '0'); + BigNumber.config({ DECIMAL_PLACES : 58, ROUNDING_MODE : 2 }); + T('-0.00000000000001435592', '-493380', '2.90970854108395151809963922331671328388e-20'); + BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 4 }); + T('35.32695347', '-0.00000000000703246216', '-5023411810295.4712521339752221290302683974911000445397348572437963889449495'); + BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 3 }); + T('-103.47554767', '364.6', '-0.28380567106418'); + BigNumber.config({ DECIMAL_PLACES : 46, ROUNDING_MODE : 4 }); + T('-54.0643414821', '36523221', '-0.0000014802730975479955615086632145614977386578'); + BigNumber.config({ DECIMAL_PLACES : 82, ROUNDING_MODE : 1 }); + T('-151.46', '-12485.2', '0.0121311632973440553615480729183353090058629417230000320379329125684810816006151283'); + BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 5 }); + T('1703565.3599', '-2025802.6', '-0.8409'); + BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 6 }); + T('-2534.536', '-2.4', '1056.05666666666666666666666666666666666666666666667'); + BigNumber.config({ DECIMAL_PLACES : 59, ROUNDING_MODE : 1 }); + T('0.00096', '3.1', '0.00030967741935483870967741935483870967741935483870967741935'); + BigNumber.config({ DECIMAL_PLACES : 55, ROUNDING_MODE : 6 }); + T('-2.15', '71252.588329', '-0.0000301743424403425365704233152672395461211624948435212'); + BigNumber.config({ DECIMAL_PLACES : 80, ROUNDING_MODE : 6 }); + T('0.00008312', '0.0539653', '0.00154024901186503178894585965425931107582094419932808675204251620949017238855339'); + BigNumber.config({ DECIMAL_PLACES : 30, ROUNDING_MODE : 1 }); + T('-430', '0.000000000000118546277487', '-3627275432981474.940271820633284192902916707002'); + BigNumber.config({ DECIMAL_PLACES : 90, ROUNDING_MODE : 6 }); + T('-808820928', '-0.0017', '475777016470.588235294117647058823529411764705882352941176470588235294117647058823529411764705882352941'); + BigNumber.config({ DECIMAL_PLACES : 73, ROUNDING_MODE : 5 }); + T('916.17962481', '-282479.3', '-0.0032433513705606039097378108767615892562747075626426431954483036456122626'); + BigNumber.config({ DECIMAL_PLACES : 40, ROUNDING_MODE : 3 }); + T('0.0000012273818', '208020665.891', '5.900287813919081346067702e-15'); + BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 0 }); + T('-511248315191', '-180948.231', '2825384.433799742424671728346435174599745050837219845492714432781605916887908122185510618'); + BigNumber.config({ DECIMAL_PLACES : 7, ROUNDING_MODE : 6 }); + T('-1', '22081167', '0'); + BigNumber.config({ DECIMAL_PLACES : 52, ROUNDING_MODE : 6 }); + T('-1.699677', '-85162.06', '0.000019958148029768185504202223384450775380492205097'); + BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 5 }); + T('-998641097.19', '-16.9172897211', '59030797.11074819395941497103146162421254509397656638'); + BigNumber.config({ DECIMAL_PLACES : 80, ROUNDING_MODE : 1 }); + T('212.16740294', '1572.3589', '0.13493573441788639985438439023050017397427521159450301073120138156752888923769248'); + BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 0 }); + T('-211336.5909', '9.62149', '-21965.058520042114059256934217049542222670293270584909405923614741583684023992126'); + BigNumber.config({ DECIMAL_PLACES : 27, ROUNDING_MODE : 3 }); + T('1.36768', '-4526', '-0.000302182942996022978347327'); + BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 6 }); + T('-4.6661', '8.66', '-1'); + BigNumber.config({ DECIMAL_PLACES : 43, ROUNDING_MODE : 0 }); + T('0.0000000352', '2181349.67771', '1.6136798404991751871451949779e-14'); + BigNumber.config({ DECIMAL_PLACES : 93, ROUNDING_MODE : 2 }); + T('0', '2.2', '0'); + BigNumber.config({ DECIMAL_PLACES : 28, ROUNDING_MODE : 1 }); + T('-5', '0.000000000043501390', '-114938855976.7860291360804792674440977633'); + BigNumber.config({ DECIMAL_PLACES : 80, ROUNDING_MODE : 1 }); + T('-236277460749', '681.9', '-346498695.92168939727232732072151341838979322481302243730752309722833260008798944126704795'); + BigNumber.config({ DECIMAL_PLACES : 90, ROUNDING_MODE : 4 }); + T('311', '2.40', '129.583333333333333333333333333333333333333333333333333333333333333333333333333333333333333333'); + BigNumber.config({ DECIMAL_PLACES : 90, ROUNDING_MODE : 4 }); + T('-100.925767', '-500.2', '0.201770825669732107157137145141943222710915633746501399440223910435825669732107157137145142'); + BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 6 }); + T('-273471796', '-308.40', '886743.82619974059662775616083009079118028534370946822308690012970168612191958495460441'); + BigNumber.config({ DECIMAL_PLACES : 66, ROUNDING_MODE : 0 }); + T('-206.253', '37617.8137197', '-0.005482854520383457743277778061233467488667495061608281272505660236'); + BigNumber.config({ DECIMAL_PLACES : 77, ROUNDING_MODE : 4 }); + T('36648083.4', '-0.6364', '-57586554.6825895663104965430546825895663104965430546825895663104965430546825895663105'); + BigNumber.config({ DECIMAL_PLACES : 77, ROUNDING_MODE : 1 }); + T('0', '2.50230', '0'); + BigNumber.config({ DECIMAL_PLACES : 85, ROUNDING_MODE : 4 }); + T('-159', '0.0000000000000347', '-4582132564841498.5590778097982708933717579250720461095100864553314121037463976945244956772334293948127'); + BigNumber.config({ DECIMAL_PLACES : 70, ROUNDING_MODE : 5 }); + T('1', '4.076946653', '0.2452816004507086691085040302586466048615230678614425323460321471123257'); + BigNumber.config({ DECIMAL_PLACES : 88, ROUNDING_MODE : 5 }); + T('6.3', '5.7303908215', '1.0994014538001262921365301506250850747492947414494248906788983485042041996785995305782827'); + BigNumber.config({ DECIMAL_PLACES : 5, ROUNDING_MODE : 3 }); + T('-0.00000000042', '-5', '0'); + BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 6 }); + T('-0.000000000000000000922546501', '319.02', '0'); + BigNumber.config({ DECIMAL_PLACES : 59, ROUNDING_MODE : 1 }); + T('656909.320', '13246.7992', '49.59004134372324448007032521486398012283601309514829816398213'); + BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 6 }); + T('2', '-0.0079292', '-252.23225546082833072693336023810724915502194420623'); + BigNumber.config({ DECIMAL_PLACES : 92, ROUNDING_MODE : 6 }); + T('17098545635', '-5046745176', '-3.38803427530140071411443897321119666534159877304651135411319606520192570150880944736647824756'); + BigNumber.config({ DECIMAL_PLACES : 88, ROUNDING_MODE : 2 }); + T('29', '1969.07179352', '0.0147277514692129710661135122185059778805012273628863880491832723208506691523957308755955'); + BigNumber.config({ DECIMAL_PLACES : 33, ROUNDING_MODE : 4 }); + T('0', '-63049974183', '0'); + BigNumber.config({ DECIMAL_PLACES : 93, ROUNDING_MODE : 5 }); + T('-8.136797', '-268.885', '0.030261252952005504211837774513267753872473362218048608141026833032709150752180300128307640813'); + BigNumber.config({ DECIMAL_PLACES : 87, ROUNDING_MODE : 6 }); + T('-218.6', '-11670862', '0.000018730407402640867486908850434526601377001972947670874696316347498582366923711376246'); + BigNumber.config({ DECIMAL_PLACES : 7, ROUNDING_MODE : 1 }); + T('-16720419', '-24.4844', '682900.9083334'); + BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 3 }); + T('-5', '-1', '5'); + BigNumber.config({ DECIMAL_PLACES : 66, ROUNDING_MODE : 4 }); + T('189666', '1148004.40', '0.165213652491227385539637304526010527485783155534943942723564474143'); + BigNumber.config({ DECIMAL_PLACES : 35, ROUNDING_MODE : 4 }); + T('-4.624690795', '37651159', '-1.2282997171481494102213427215e-7'); + BigNumber.config({ DECIMAL_PLACES : 53, ROUNDING_MODE : 0 }); + T('-903888809', '1.166952', '-774572398.00780152054240448621708519287854170522866407530044081'); + BigNumber.config({ DECIMAL_PLACES : 22, ROUNDING_MODE : 1 }); + T('926476.5835', '0.00563907060931', '164295971.3911729543425435735936'); + BigNumber.config({ DECIMAL_PLACES : 98, ROUNDING_MODE : 4 }); + T('-1.15128', '-0.00000000026989', '4265737893.21575456667531216421505057616065804587053984956834265811997480455000185260661751083774871243840083'); + BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 6 }); + T('0.000004894020116', '-1.1790', '-0.00000415099246480067854113655640373197625106022052586938083121289228159457167090754877014418999'); + BigNumber.config({ DECIMAL_PLACES : 99, ROUNDING_MODE : 3 }); + T('7748609', '-123.269089', '-62859.302870324611549615654253760243170126778498379265218711886481127478763147182826994040655236772294148'); + BigNumber.config({ DECIMAL_PLACES : 32, ROUNDING_MODE : 3 }); + T('10712886249.5', '-0.000000000000000000275092754', '-3.894281508229038995334642656563756673867171361409250350519956e+28'); + BigNumber.config({ DECIMAL_PLACES : 58, ROUNDING_MODE : 6 }); + T('0', '-396.6', '0'); + BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 6 }); + T('0.0000008557', '-6.2', '-1.3801612903225806451612903225806451612903225806451612903225806451612903225806451612903226e-7'); + BigNumber.config({ DECIMAL_PLACES : 92, ROUNDING_MODE : 3 }); + T('0.000000000000000944', '7600017284', '1.2421024383554546663580982456092003803395560804095666054014200318231e-25'); + BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 3 }); + T('-107898.743', '-2441.7', '44.190008191'); + BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 3 }); + T('0', '13879311.683', '0'); + BigNumber.config({ DECIMAL_PLACES : 46, ROUNDING_MODE : 5 }); + T('-92630.816', '-131044.0', '0.7068680443209914227282439485974176612435517841'); + BigNumber.config({ DECIMAL_PLACES : 30, ROUNDING_MODE : 5 }); + T('-73.4429', '16619210', '-0.00000441915710794917447941268'); + BigNumber.config({ DECIMAL_PLACES : 56, ROUNDING_MODE : 5 }); + T('26097.0', '-0.00001000', '-2609700000'); + BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 2 }); + T('10397870028', '-1.9683', '-5282665258'); + BigNumber.config({ DECIMAL_PLACES : 23, ROUNDING_MODE : 1 }); + T('-0.000011017', '6', '-0.00000183616666666666666'); + BigNumber.config({ DECIMAL_PLACES : 35, ROUNDING_MODE : 3 }); + T('-0.00009577512', '0.0000000000000000006721', '-142501294450230.62044338640083320934384764171998215'); + BigNumber.config({ DECIMAL_PLACES : 66, ROUNDING_MODE : 4 }); + T('0.00000000001915129223', '0.000000000000000368382', '51987.589594497016683768479458822635199331129099684566564055789913730855'); + BigNumber.config({ DECIMAL_PLACES : 25, ROUNDING_MODE : 1 }); + T('36.0', '-2.9', '-12.4137931034482758620689655'); + BigNumber.config({ DECIMAL_PLACES : 53, ROUNDING_MODE : 1 }); + T('-6264.93', '-30.685', '204.16913801531693009613817826299494867198957145184943783'); + BigNumber.config({ DECIMAL_PLACES : 30, ROUNDING_MODE : 1 }); + T('-1354.9273761', '-1', '1354.9273761'); + BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 0 }); + T('0.0000000005858', '-3.244', '-1.80579531442663378545006165228113440197287299630086313193588162762022195e-10'); + BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 4 }); + T('-0.0000000000000000431435', '0.000000033279193', '-1.296411e-9'); + BigNumber.config({ DECIMAL_PLACES : 80, ROUNDING_MODE : 3 }); + T('-3', '64.431247157', '-0.04656125920843782992862548044748846114594540751456464935737391596490900127246159'); + BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 5 }); + T('5.4794', '-384.98124', '-0.0142329013226722'); + BigNumber.config({ DECIMAL_PLACES : 94, ROUNDING_MODE : 4 }); + T('0', '-8.386', '0'); + BigNumber.config({ DECIMAL_PLACES : 82, ROUNDING_MODE : 1 }); + T('4830.7056843', '-21348.245121', '-0.2262811606724571297843306227793429691152364392040840292167263615709914444915746103'); + BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 2 }); + T('2', '1.7', '1.176470588235294117647058823529411764705882352941177'); + BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 4 }); + T('0.00000000000023428329582', '1', '2.3428329582e-13'); + BigNumber.config({ DECIMAL_PLACES : 23, ROUNDING_MODE : 6 }); + T('5.711', '47494.99695', '0.00012024424395715220695'); + BigNumber.config({ DECIMAL_PLACES : 6, ROUNDING_MODE : 5 }); + T('3.34147426764', '0.000000000000361719', '9237762649017.60759'); + BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 0 }); + T('-19.9', '0.013696', '-1452.9789719626168224299065420560747663551401869158878504672897197'); + BigNumber.config({ DECIMAL_PLACES : 88, ROUNDING_MODE : 3 }); + T('-1483166687.75', '-1.819', '815374759.6206706981858163826278174821330401319406267179769103903243540406816932380428807036833424'); + BigNumber.config({ DECIMAL_PLACES : 96, ROUNDING_MODE : 5 }); + T('-5648.6465', '-2803396092', '0.000002014929861720018406874486004669796051067620593658157956795781964013667462870958443213810402'); + BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 6 }); + T('-2032', '-75185.56', '0.027026466252'); + BigNumber.config({ DECIMAL_PLACES : 43, ROUNDING_MODE : 1 }); + T('45.49507152', '-17965.8272947', '-0.0025323115253045570066297003831901140467329'); + BigNumber.config({ DECIMAL_PLACES : 52, ROUNDING_MODE : 2 }); + T('3217.36', '528742465142', '6.0849283197557059817291008593275512266174569e-9'); + BigNumber.config({ DECIMAL_PLACES : 73, ROUNDING_MODE : 5 }); + T('-0.00477', '-103', '0.0000463106796116504854368932038834951456310679611650485436893203883495146'); + BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 3 }); + T('-1.8', '-1.57443061', '1.1432704550885'); + BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 6 }); + T('-35.079', '-3475909.119', '0.000010092036011025523017996950109557798251514066700200167'); + BigNumber.config({ DECIMAL_PLACES : 45, ROUNDING_MODE : 0 }); + T('28633605453', '-4499.466765', '-6363777.520423578459302165775637193755336028134880557'); + BigNumber.config({ DECIMAL_PLACES : 46, ROUNDING_MODE : 3 }); + T('-0.00001962946', '1.17', '-0.0000167773162393162393162393162393162393162394'); + BigNumber.config({ DECIMAL_PLACES : 40, ROUNDING_MODE : 5 }); + T('20.9', '-81191', '-0.000257417694079393036173960167998916136'); + BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 6 }); + T('13859.720', '0.002234750963', '6201908.055738915907114434030115238393120227061291571753536816800109820559008'); + BigNumber.config({ DECIMAL_PLACES : 9, ROUNDING_MODE : 1 }); + T('66862279', '8', '8357784.875'); + BigNumber.config({ DECIMAL_PLACES : 78, ROUNDING_MODE : 6 }); + T('-0.33207744', '86.5469', '-0.003836965159930627209062369651599306272090623696515993062720906236965159930627'); + BigNumber.config({ DECIMAL_PLACES : 56, ROUNDING_MODE : 4 }); + T('-0.00000000072', '0.011', '-6.545454545454545454545454545454545454545454545455e-8'); + BigNumber.config({ DECIMAL_PLACES : 93, ROUNDING_MODE : 6 }); + T('100.7246', '2', '50.3623'); + BigNumber.config({ DECIMAL_PLACES : 45, ROUNDING_MODE : 2 }); + T('-290.44553', '0.00000000000000000288851173', '-100551964869465840805.15400918936202485146217495194315863138281249'); + BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 0 }); + T('5', '3', '1.6667'); + BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 3 }); + T('-7', '51.074', '-0.137056036339429063711477464071739045306809727062693346908407408857736'); + BigNumber.config({ DECIMAL_PLACES : 80, ROUNDING_MODE : 1 }); + T('-0.000125563936', '14842', '-8.46004150384045276916857566365718905807842608812828459776310470287023312e-9'); + BigNumber.config({ DECIMAL_PLACES : 64, ROUNDING_MODE : 3 }); + T('-0.00000000000215831568', '1', '-2.15831568e-12'); + BigNumber.config({ DECIMAL_PLACES : 43, ROUNDING_MODE : 4 }); + T('83.467991', '-160369', '-0.0005204745992055821262214018918868359845107'); + BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 3 }); + T('-653.190854', '-1', '653.190854'); + BigNumber.config({ DECIMAL_PLACES : 90, ROUNDING_MODE : 3 }); + T('0.0000000000000018012391', '-347451712', '-5.184142249959614531989987719502156316904260929357573578454550829786e-24'); + BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 0 }); + T('-0.0000000000899441471', '79.7', '-1'); + BigNumber.config({ DECIMAL_PLACES : 92, ROUNDING_MODE : 1 }); + T('18523658.1', '40.5', '457374.27407407407407407407407407407407407407407407407407407407407407407407407407407407407407407407'); + BigNumber.config({ DECIMAL_PLACES : 74, ROUNDING_MODE : 6 }); + T('-9.141003204', '-1097.67920', '0.00832757257676013173976513356543514717232502902487356961851878035039745674'); + BigNumber.config({ DECIMAL_PLACES : 42, ROUNDING_MODE : 0 }); + T('26.8', '4890416541', '5.480105789622553135397633606196328e-9'); + BigNumber.config({ DECIMAL_PLACES : 46, ROUNDING_MODE : 6 }); + T('-1.5', '-0.00324588908', '462.1230002104692992158561376348695193244249738811'); + BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 4 }); + T('-2544699.37', '-229680', '11.0793250174155346569139672587948450017415534656913967258794845001741553465691396725879484500174155'); + BigNumber.config({ DECIMAL_PLACES : 7, ROUNDING_MODE : 6 }); + T('-47.19', '-0.00000000000000161461381', '29226803157344479.7923536'); + BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 1 }); + T('-13.76945', '104171642.7', '-1.32180405752591631157986913457783074779140446443204643829620630528849287311e-7'); + BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 6 }); + T('225855509.5', '4', '56463877.375'); + BigNumber.config({ DECIMAL_PLACES : 83, ROUNDING_MODE : 2 }); + T('0.0000000000000120918545', '34.696', '3.4850860329721005303204980401198985473829836292367996310813926677427e-16'); + BigNumber.config({ DECIMAL_PLACES : 6, ROUNDING_MODE : 5 }); + T('5387.3366', '52.3632', '102.884022'); + BigNumber.config({ DECIMAL_PLACES : 1, ROUNDING_MODE : 6 }); + T('3.8', '-26369.6', '0'); + BigNumber.config({ DECIMAL_PLACES : 25, ROUNDING_MODE : 4 }); + T('8', '-1', '-8'); + BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 5 }); + T('0', '-6.402', '0'); + BigNumber.config({ DECIMAL_PLACES : 25, ROUNDING_MODE : 6 }); + T('0', '-3', '0'); + BigNumber.config({ DECIMAL_PLACES : 38, ROUNDING_MODE : 2 }); + T('-9916091.06', '95.15076964', '-104214.51237354384472638302455668922952917903'); + BigNumber.config({ DECIMAL_PLACES : 62, ROUNDING_MODE : 2 }); + T('0.000000000000000000106526', '-0.00000000436617', '-2.439804222006930559277352920293987636761738548888385e-11'); + BigNumber.config({ DECIMAL_PLACES : 46, ROUNDING_MODE : 6 }); + T('16.0', '-31.1', '-0.514469453376205787781350482315112540192926045'); + BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 4 }); + T('-0.001435007', '-0.000000364478', '3937.156700815961457207293718688096400880162863053462760440959399469926854295732527066'); + BigNumber.config({ DECIMAL_PLACES : 23, ROUNDING_MODE : 2 }); + T('-27334994', '1.8', '-15186107.77777777777777777777777'); + BigNumber.config({ DECIMAL_PLACES : 48, ROUNDING_MODE : 1 }); + T('0.000000000000000000449195', '-0.000000056604', '-7.935746590346971945445551551127128824e-12'); + BigNumber.config({ DECIMAL_PLACES : 78, ROUNDING_MODE : 4 }); + T('-1.01546', '-244.337', '0.004155981288138922881102739249479202904185612494219049918759745760977666092323'); + BigNumber.config({ DECIMAL_PLACES : 77, ROUNDING_MODE : 1 }); + T('-24376.6', '1', '-24376.6'); + BigNumber.config({ DECIMAL_PLACES : 49, ROUNDING_MODE : 6 }); + T('-0.00015178729927', '-17287059', '8.7804003717462872082521382034966155897e-12'); + BigNumber.config({ DECIMAL_PLACES : 48, ROUNDING_MODE : 5 }); + T('6.847', '-331569.11', '-0.000020650295197884989949757382405134181528550715'); + BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 5 }); + T('12', '1', '12'); + BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 6 }); + T('-41177.8', '0.000000000000001601174', '-25717254964170040232.9790516208731843010191272154056960705082645608784554333257971963072095849670304414136127616361495'); + BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 0 }); + T('9.7', '-96483.25', '-0.0001005355851922483954468780850562144206377790963716500014251178313334179766954367727040703956387'); + BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 2 }); + T('-1935', '-0.000000000879301578', '2200610175636.46405738623614752571273106483609654115735022597673536757828950467321918078031698926394966619747'); + BigNumber.config({ DECIMAL_PLACES : 33, ROUNDING_MODE : 3 }); + T('61.519', '-7', '-8.788428571428571428571428571428572'); + BigNumber.config({ DECIMAL_PLACES : 80, ROUNDING_MODE : 2 }); + T('0', '7467389320.2', '0'); + BigNumber.config({ DECIMAL_PLACES : 82, ROUNDING_MODE : 2 }); + T('-9417.3', '0.0002750016', '-34244528.0318369056761851567409062347273615862598617608043007749773092229281575089017663897'); + BigNumber.config({ DECIMAL_PLACES : 89, ROUNDING_MODE : 0 }); + T('-2', '5.2', '-0.38461538461538461538461538461538461538461538461538461538461538461538461538461538461538462'); + BigNumber.config({ DECIMAL_PLACES : 71, ROUNDING_MODE : 4 }); + T('228504', '-16257', '-14.05572983945377375899612474626314818232146152426646982838162022513378852'); + BigNumber.config({ DECIMAL_PLACES : 29, ROUNDING_MODE : 2 }); + T('0', '4.8', '0'); + BigNumber.config({ DECIMAL_PLACES : 35, ROUNDING_MODE : 0 }); + T('-7', '-1.846', '3.79198266522210184182015167930660889'); + BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 3 }); + T('89.4', '-0.0000000000000115477', '-7741801397680923.473938533214406331996847857149042666505018315335521359231708478744685088805563012548'); + BigNumber.config({ DECIMAL_PLACES : 87, ROUNDING_MODE : 2 }); + T('-0.0000374074', '-9751265', '3.836158693256721051063631231435100984333827457258109588858471182969594201368e-12'); + BigNumber.config({ DECIMAL_PLACES : 1, ROUNDING_MODE : 0 }); + T('0.000000021799764755', '-1355736924.87', '-0.1'); + BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 4 }); + T('29.054', '-12.2428480', '-2.37314062871645551753970971460235396208463912971883666284184856334'); + BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 4 }); + T('2', '662578.45207', '0.00000301851'); + BigNumber.config({ DECIMAL_PLACES : 60, ROUNDING_MODE : 5 }); + T('45.3', '6.868840', '6.595000029116997921046348437290721577442479370606972938662132'); + BigNumber.config({ DECIMAL_PLACES : 22, ROUNDING_MODE : 4 }); + T('-204303.3533', '1', '-204303.3533'); + BigNumber.config({ DECIMAL_PLACES : 89, ROUNDING_MODE : 5 }); + T('1.04', '-1', '-1.04'); + BigNumber.config({ DECIMAL_PLACES : 91, ROUNDING_MODE : 0 }); + T('10911.805832', '-0.00000000014725661492', '-74100615703600.474968734260240185072970846205025612577078788658603235533346049294068615820929261926021734'); + BigNumber.config({ DECIMAL_PLACES : 35, ROUNDING_MODE : 4 }); + T('109994.8', '-33.89433', '-3245.22715156192790947630473887520420082'); + BigNumber.config({ DECIMAL_PLACES : 53, ROUNDING_MODE : 2 }); + T('0', '-0.0000000000000001972885', '0'); + BigNumber.config({ DECIMAL_PLACES : 70, ROUNDING_MODE : 6 }); + T('0.0000000001829998084', '0.0000000000000000927080191434', '1973937.2072758604029349566645268001499078182061383370648849962471476338865469'); + BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 1 }); + T('-122741857.9', '-9.19018', '13355762.117825766198268151439906508904069343581953781101131860311767560591849'); + BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 3 }); + T('-302441205691', '-0.00000000003062798189', '9.87466973100655702392411203035356111084601e+21'); + BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 5 }); + T('73905087.2', '-0.00000000212', '-34860890188679245.283018867924528301886792452830188679245283018867925'); + BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 2 }); + T('930.90', '-3.49755383', '-266.15744753240867203464885628365010753815903385252543775716526999099825148366622851949'); + BigNumber.config({ DECIMAL_PLACES : 58, ROUNDING_MODE : 0 }); + T('0', '697494057', '0'); + BigNumber.config({ DECIMAL_PLACES : 29, ROUNDING_MODE : 6 }); + T('-2', '4722857.909', '-4.2347240559339046589979e-7'); + BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 2 }); + T('-93.2', '0.000000000000000000012', '-7.766666666666666666666666666666666666666666666666666666666666666666666666666666e+21'); + BigNumber.config({ DECIMAL_PLACES : 56, ROUNDING_MODE : 1 }); + T('0.00779751', '-0.000000000000230916455685', '-33767667084.91669875510630609997966719831173559786573510087001576351'); + BigNumber.config({ DECIMAL_PLACES : 91, ROUNDING_MODE : 4 }); + T('-79577437', '0.00000000000000000921603', '-8.6346764279196139769510298903106869226771180215342180960782462730698576285016433323242220348675080267750864526265648e+24'); + BigNumber.config({ DECIMAL_PLACES : 82, ROUNDING_MODE : 6 }); + T('-9', '-4.7', '1.9148936170212765957446808510638297872340425531914893617021276595744680851063829787'); + BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 1 }); + T('0', '-93.161757', '0'); + BigNumber.config({ DECIMAL_PLACES : 86, ROUNDING_MODE : 0 }); + T('0.00000000000000955711816', '-0.000002757595', '-3.46574393991866100714571936778243360609516625900467617616074876840145126459832e-9'); + BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 3 }); + T('-4848.3', '3', '-1616.1'); + BigNumber.config({ DECIMAL_PLACES : 26, ROUNDING_MODE : 6 }); + T('-6.5', '-0.56', '11.60714285714285714285714286'); + BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 1 }); + T('6.76843', '-0.0000000000000000000149', '-454257046979865771812.0805369127'); + BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 0 }); + T('791937322.74', '-1.48513147', '-533243917.280939444371211122473891149852208033811309647892655'); + BigNumber.config({ DECIMAL_PLACES : 50, ROUNDING_MODE : 4 }); + T('-7.681', '-318681.61501', '0.00002410242586400528860555682546652222703633147375'); + BigNumber.config({ DECIMAL_PLACES : 89, ROUNDING_MODE : 1 }); + T('-60629466.21', '-6', '10104911.035'); + BigNumber.config({ DECIMAL_PLACES : 33, ROUNDING_MODE : 1 }); + T('-5', '378.6', '-0.013206550449022715266772319070258'); + BigNumber.config({ DECIMAL_PLACES : 24, ROUNDING_MODE : 4 }); + T('169365429578', '0.000000000000003750', '4.5164114554133333333333333333333333333333333333333e+25'); + BigNumber.config({ DECIMAL_PLACES : 59, ROUNDING_MODE : 0 }); + T('-72.26816939', '-99300810870', '7.277701839173309864433335618742666970127229938903e-10'); + BigNumber.config({ DECIMAL_PLACES : 91, ROUNDING_MODE : 6 }); + T('-615.3', '-237.99', '2.5854027480146224631287028866759107525526282616916677171309718895751922349678557922601789991'); + BigNumber.config({ DECIMAL_PLACES : 7, ROUNDING_MODE : 0 }); + T('10000.265176', '6', '1666.7108627'); + BigNumber.config({ DECIMAL_PLACES : 19, ROUNDING_MODE : 4 }); + T('15.089279', '-3526', '-0.0042794325014180374'); + BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 5 }); + T('11.93', '-476103.58589', '-0.000025057572245961'); + BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 3 }); + T('0.00000000000000057027', '11902546551', '0'); + BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 3 }); + T('-503944526.66', '46.8', '-10768045.441452991453'); + BigNumber.config({ DECIMAL_PLACES : 22, ROUNDING_MODE : 5 }); + T('31910346.2914', '-15.345731', '-2079428.2326074919467831151217'); + BigNumber.config({ DECIMAL_PLACES : 87, ROUNDING_MODE : 5 }); + T('0', '-0.0000000000007322481773', '0'); + BigNumber.config({ DECIMAL_PLACES : 73, ROUNDING_MODE : 3 }); + T('-4.69', '-4', '1.1725'); + BigNumber.config({ DECIMAL_PLACES : 43, ROUNDING_MODE : 5 }); + T('-16.9850', '28555184.76', '-5.948131711545612846526719514036161327e-7'); + BigNumber.config({ DECIMAL_PLACES : 93, ROUNDING_MODE : 0 }); + T('-51521013', '-35.308', '1459188.08768551036592273705675767531437634530418035572674747932479891242777840715985045881953098448'); + BigNumber.config({ DECIMAL_PLACES : 100, ROUNDING_MODE : 0 }); + T('39364.463651', '-2', '-19682.2318255'); + BigNumber.config({ DECIMAL_PLACES : 49, ROUNDING_MODE : 0 }); + T('0.00000029202905324', '-2189.5379715', '-1.333747379772262606773430875848137808831e-10'); + BigNumber.config({ DECIMAL_PLACES : 80, ROUNDING_MODE : 1 }); + T('-4.5507392', '-241.78', '0.01882181818181818181818181818181818181818181818181818181818181818181818181818181'); + BigNumber.config({ DECIMAL_PLACES : 72, ROUNDING_MODE : 3 }); + T('16.2836', '-57', '-0.285677192982456140350877192982456140350877192982456140350877192982456141'); + BigNumber.config({ DECIMAL_PLACES : 60, ROUNDING_MODE : 0 }); + T('3.1', '0.00100', '3100'); + BigNumber.config({ DECIMAL_PLACES : 24, ROUNDING_MODE : 0 }); + T('36.9', '0.000000000000000000146420913', '252013180658148197723.640747957909537143782187'); + BigNumber.config({ DECIMAL_PLACES : 19, ROUNDING_MODE : 5 }); + T('0', '-1.6', '0'); + BigNumber.config({ DECIMAL_PLACES : 74, ROUNDING_MODE : 6 }); + T('-178325.79522', '-7.7356', '23052.61327111019184032266404674491959253322302083871968560939035110398676250065'); + BigNumber.config({ DECIMAL_PLACES : 88, ROUNDING_MODE : 1 }); + T('-0.0000000000468001021084', '59.857', '-7.818651470738593648194864426884073709006465409225320346826603404781395659655e-13'); + BigNumber.config({ DECIMAL_PLACES : 56, ROUNDING_MODE : 5 }); + T('0.00000000000059958', '0.00000000000000988455', '60.65830007435846851905246065830007435846851905246065830007'); + BigNumber.config({ DECIMAL_PLACES : 70, ROUNDING_MODE : 0 }); + T('-0.00000243467', '-6', '4.057783333333333333333333333333333333333333333333333333333333334e-7'); + BigNumber.config({ DECIMAL_PLACES : 22, ROUNDING_MODE : 0 }); + T('0.0042', '3', '0.0014'); + BigNumber.config({ DECIMAL_PLACES : 7, ROUNDING_MODE : 0 }); + T('-1960.96871613', '939803.491', '-0.0020866'); + BigNumber.config({ DECIMAL_PLACES : 56, ROUNDING_MODE : 3 }); + T('102512.0', '-0.000000000000000000016', '-6.407e+24'); + BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 1 }); + T('-270.92449', '-1773880.4', '0'); + BigNumber.config({ DECIMAL_PLACES : 83, ROUNDING_MODE : 5 }); + T('205674.52799', '1.33', '154642.5022481203007518796992481203007518796992481203007518796992481203007518796992481203'); + BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 2 }); + T('0.0000441990616', '6.96', '0.0000063504398851'); + BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 1 }); + T('0', '-13844.13', '0'); + BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 5 }); + T('-344.0', '-1375921.3', '0.00025001429950971759794691745814240974392939479896124872839747447765'); + BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 5 }); + T('7', '6055.93', '0.00115589182834015584724394106272694697593928596'); + BigNumber.config({ DECIMAL_PLACES : 19, ROUNDING_MODE : 5 }); + T('0.0000000086955', '-1.409328', '-6.1699618542e-9'); + BigNumber.config({ DECIMAL_PLACES : 100, ROUNDING_MODE : 0 }); + T('-112561144099', '12726026.1', '-8844.9562506397814161327234744552346941988434237141789297446121063668099816328366637563316014258370882958'); + BigNumber.config({ DECIMAL_PLACES : 45, ROUNDING_MODE : 6 }); + T('-880056994.8', '62', '-14194467.658064516129032258064516129032258064516129032'); + BigNumber.config({ DECIMAL_PLACES : 21, ROUNDING_MODE : 5 }); + T('2.4', '14.5', '0.165517241379310344828'); + BigNumber.config({ DECIMAL_PLACES : 7, ROUNDING_MODE : 4 }); + T('2.2053382305', '15285423607.9', '0'); + BigNumber.config({ DECIMAL_PLACES : 86, ROUNDING_MODE : 0 }); + T('4.2', '-13879644.5293', '-3.0260140964948912756879101350430288789629484996093098033920986060278064645953483e-7'); + BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 2 }); + T('0', '-3.067', '0'); + BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 6 }); + T('-0.000198747592', '11443941', '-1.7367058428560580660106514005970495653552e-11'); + BigNumber.config({ DECIMAL_PLACES : 52, ROUNDING_MODE : 5 }); + T('-7866052296', '5559461.4595', '-1414.8946536104681130041027492799727717943360625252302822'); + BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 4 }); + T('-2303.7', '-191766.627641', '0.0120130391212421'); + BigNumber.config({ DECIMAL_PLACES : 22, ROUNDING_MODE : 0 }); + T('0.000000000097', '40.3996', '2.4010138715e-12'); + BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 0 }); + T('2775578.4', '450.4', '6162.47424511545294'); + BigNumber.config({ DECIMAL_PLACES : 92, ROUNDING_MODE : 2 }); + T('-0.0000000004032838', '0.000000000000214', '-1884.50373831775700934579439252336448598130841121495327102803738317757009345794392523364485981308'); + BigNumber.config({ DECIMAL_PLACES : 6, ROUNDING_MODE : 1 }); + T('-0.0007736003596', '6.140', '-0.000125'); + BigNumber.config({ DECIMAL_PLACES : 70, ROUNDING_MODE : 2 }); + T('-8', '718737.77', '-0.0000111306241774381774871800601212316976190078336915562403239223117493'); + BigNumber.config({ DECIMAL_PLACES : 88, ROUNDING_MODE : 0 }); + T('20.597', '211523', '0.0000973747535728975099634555107482401440978049668357578135711010150196432539251050713162'); + BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 6 }); + T('-0.0000000001384248666', '43747263.81', '-3.164194844303795099454015430456700830177017646946637689613255837588348591166438e-18'); + BigNumber.config({ DECIMAL_PLACES : 82, ROUNDING_MODE : 0 }); + T('3', '10761.278', '0.0002787772976406705597606529633376258842118937917968479208510364661148982490741342'); + BigNumber.config({ DECIMAL_PLACES : 36, ROUNDING_MODE : 1 }); + T('-58712', '-6076444.1169', '0.00966222989473536254188076428485783'); + BigNumber.config({ DECIMAL_PLACES : 2, ROUNDING_MODE : 6 }); + T('0', '2222570', '0'); + BigNumber.config({ DECIMAL_PLACES : 46, ROUNDING_MODE : 3 }); + T('-753067', '29', '-25967.8275862068965517241379310344827586206896551725'); + BigNumber.config({ DECIMAL_PLACES : 29, ROUNDING_MODE : 3 }); + T('2068746.523', '26663971.323', '0.07758583663100199022067482591'); + BigNumber.config({ DECIMAL_PLACES : 82, ROUNDING_MODE : 1 }); + T('-170411.0', '-0.000000000000000923174', '184592503688362107251.7206940403434238832549443550186638705162840374620602399980935338300255423137999987'); + BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 0 }); + T('0.00000038326528', '5.184', '7.393234567902e-8'); + BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 3 }); + T('-0.00000000000001092', '-0.00000000000000000227083393', '4808.806'); + BigNumber.config({ DECIMAL_PLACES : 7, ROUNDING_MODE : 4 }); + T('-0.00000000000029', '621.83', '0'); + BigNumber.config({ DECIMAL_PLACES : 99, ROUNDING_MODE : 0 }); + T('2950.6', '-2657.941', '-1.110107410209632192738665004226956128823025040811665872192046399826030750870692765565526097080409235'); + BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 3 }); + T('0.47939552', '-3881.69149183', '-0.001'); + BigNumber.config({ DECIMAL_PLACES : 48, ROUNDING_MODE : 5 }); + T('0', '1417.60582117', '0'); + BigNumber.config({ DECIMAL_PLACES : 60, ROUNDING_MODE : 0 }); + T('-0.000000186729799', '-111357.44676', '1.676850578322293423244072949863671964096673942096e-12'); + BigNumber.config({ DECIMAL_PLACES : 30, ROUNDING_MODE : 1 }); + T('-26651082640.7', '-4.9', '5438996457.285714285714285714285714285714'); + BigNumber.config({ DECIMAL_PLACES : 63, ROUNDING_MODE : 2 }); + T('0.0000000000000018629', '-237', '-7.860337552742616033755274261603375527426160337e-18'); + BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 1 }); + T('-0.0000000017', '0.00000000000177', '-960.451977401129'); + BigNumber.config({ DECIMAL_PLACES : 89, ROUNDING_MODE : 2 }); + T('-11.7760', '-36788.11', '0.00032010342472065023182762039147974712481831765752576036116016832612493547507605038693209'); + BigNumber.config({ DECIMAL_PLACES : 60, ROUNDING_MODE : 5 }); + T('3.2055791071', '-345', '-0.009291533643768115942028985507246376811594202898550724637681'); + BigNumber.config({ DECIMAL_PLACES : 37, ROUNDING_MODE : 4 }); + T('0.00000000000000000024877145', '-397.8', '-6.253681498240322e-22'); + BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 1 }); + T('-4.035', '-17306', '0.00023315613082168034'); + BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 1 }); + T('0.24', '5', '0.048'); + BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 6 }); + T('7.3', '0.000000000000010341641502', '705884070588622.8853342822055213802943137450095685979813613539047236642452315400325506274738781793056976149665026'); + BigNumber.config({ DECIMAL_PLACES : 24, ROUNDING_MODE : 0 }); + T('-0.0000000000000000008919436032', '305.8173', '-2.917e-21'); + BigNumber.config({ DECIMAL_PLACES : 70, ROUNDING_MODE : 0 }); + T('-0.00000000000289', '0.1070651024', '-2.69929223922359971515798036541176464610563899297218623871601e-11'); + BigNumber.config({ DECIMAL_PLACES : 29, ROUNDING_MODE : 3 }); + T('0.00000000000000175906577', '-981337', '-1.79251957e-21'); + BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 2 }); + T('-2812463.8', '-299.652460965', '9385.7523844214359162388132599663797325'); + BigNumber.config({ DECIMAL_PLACES : 7, ROUNDING_MODE : 6 }); + T('-473960479', '765598.68', '-619.0717035'); + BigNumber.config({ DECIMAL_PLACES : 58, ROUNDING_MODE : 6 }); + T('3674759.55', '50.2', '73202.381474103585657370517928286852589641434262948207171314741'); + BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 0 }); + T('-0.0000219', '2314833250.79', '-1e-14'); + BigNumber.config({ DECIMAL_PLACES : 42, ROUNDING_MODE : 4 }); + T('8.7298024', '-466.52', '-0.018712600531595644345365686358569836234245'); + BigNumber.config({ DECIMAL_PLACES : 49, ROUNDING_MODE : 5 }); + T('82.70455184', '6362544', '0.0000129986608878461194138696722568834101579493989'); + BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 4 }); + T('-10.20008', '-5', '2.040016'); + BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 3 }); + T('14643850.501', '2.4', '6101604.3754166666666666'); + BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 3 }); + T('0.00000000000000000786002', '0.0000000053443', '0'); + BigNumber.config({ DECIMAL_PLACES : 7, ROUNDING_MODE : 2 }); + T('399.150', '0.009672', '41268.6104219'); + BigNumber.config({ DECIMAL_PLACES : 63, ROUNDING_MODE : 0 }); + T('3.552', '689368375511', '5.152542713272929982489453159129746031190798066507624e-12'); + BigNumber.config({ DECIMAL_PLACES : 99, ROUNDING_MODE : 4 }); + T('0.000000000008575422', '5', '1.7150844e-12'); + BigNumber.config({ DECIMAL_PLACES : 88, ROUNDING_MODE : 0 }); + T('0', '-80802828.4', '0'); + BigNumber.config({ DECIMAL_PLACES : 82, ROUNDING_MODE : 5 }); + T('37009.867', '-2368.6', '-15.6252077176391117115595710546314278476737313180781896478932702862450392637000759943'); + BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 1 }); + T('-44.3025265', '-848426.1538', '0.000052217304124318002607052588010400393199194185425640281576147705973'); + BigNumber.config({ DECIMAL_PLACES : 87, ROUNDING_MODE : 5 }); + T('0.0000000000000092', '4.6', '2e-15'); + BigNumber.config({ DECIMAL_PLACES : 67, ROUNDING_MODE : 0 }); + T('32161496195.4', '-1134104527', '-28.3584937981646906872808911730937830918295946454678070427982693344809'); + BigNumber.config({ DECIMAL_PLACES : 29, ROUNDING_MODE : 0 }); + T('24.54073', '6', '4.09012166666666666666666666667'); + BigNumber.config({ DECIMAL_PLACES : 33, ROUNDING_MODE : 1 }); + T('0.0000000000001885095', '617379873', '3.05337942236e-22'); + BigNumber.config({ DECIMAL_PLACES : 89, ROUNDING_MODE : 2 }); + T('-1.683046172', '-94685.625215', '0.00001777509699258313124716266890417659687626323078718026501653490718834030988871682870474'); + BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 5 }); + T('-30785853314', '1.526001', '-20174202581.7807458841770090583164755462152383910626533010135642112947501345018777838284509643178477602570378'); + BigNumber.config({ DECIMAL_PLACES : 83, ROUNDING_MODE : 6 }); + T('-0.0000000000000253748445', '3', '-8.4582815e-15'); + BigNumber.config({ DECIMAL_PLACES : 30, ROUNDING_MODE : 5 }); + T('0', '-2631.4486', '0'); + BigNumber.config({ DECIMAL_PLACES : 63, ROUNDING_MODE : 6 }); + T('0', '650.53', '0'); + BigNumber.config({ DECIMAL_PLACES : 39, ROUNDING_MODE : 4 }); + T('1.7034706', '-183997774.362', '-9.258104376026669843725095916495e-9'); + BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 0 }); + T('-4106.133278', '2', '-2053.066639'); + BigNumber.config({ DECIMAL_PLACES : 64, ROUNDING_MODE : 4 }); + T('-14.82528089', '1236.4941006', '-0.0119897708228499735714792459237067548043908556598575655185782615'); + BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 5 }); + T('0', '-24146874.220', '0'); + BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 4 }); + T('-0.0000000001425', '-58741317.18', '2.425890443745749182398568747926738267941576995464983204518601841812e-18'); + BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 1 }); + T('5891398', '0.009468', '622243134.76975073933248838191803971271651880016899028'); + BigNumber.config({ DECIMAL_PLACES : 32, ROUNDING_MODE : 4 }); + T('6173', '29807783.1', '0.00020709356275475582080439923759'); + BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 3 }); + T('-0.00000003589532', '8.8', '-4.07901363636363636363636363636363636363636363636363636363637e-9'); + BigNumber.config({ DECIMAL_PLACES : 91, ROUNDING_MODE : 6 }); + T('0', '-0.0000000000000006638389', '0'); + BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 0 }); + T('901.626592', '8167935.7', '1'); + BigNumber.config({ DECIMAL_PLACES : 80, ROUNDING_MODE : 6 }); + T('9358.84', '2594.09', '3.60775454976504284739542575623821841185155488051686718656638744222444094075379035'); + BigNumber.config({ DECIMAL_PLACES : 7, ROUNDING_MODE : 2 }); + T('-2', '-1.4', '1.4285715'); + BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 1 }); + T('3529307', '233817.80047', '15.09426139885713210259076901665458558831853166649'); + BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 0 }); + T('1.31', '0.0000000000835735480', '15674816151.158258830892281849754661606564794879834466283518320892634593'); + BigNumber.config({ DECIMAL_PLACES : 33, ROUNDING_MODE : 1 }); + T('172119', '1313.7', '131.018497373829641470655400776432975'); + BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 1 }); + T('-2.0', '-0.0000000000000000000158', '126582278481012658227.848101265822'); + BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 2 }); + T('-4.2', '-1408.340483', '0.002982233380846441236611104361756815308418567983463981699658348882384573192'); + BigNumber.config({ DECIMAL_PLACES : 74, ROUNDING_MODE : 5 }); + T('702263', '-19', '-36961.21052631578947368421052631578947368421052631578947368421052631578947368421'); + BigNumber.config({ DECIMAL_PLACES : 89, ROUNDING_MODE : 4 }); + T('0', '-16.6', '0'); + BigNumber.config({ DECIMAL_PLACES : 33, ROUNDING_MODE : 1 }); + T('1.39', '2479563.189', '5.60582608326502301530981471e-7'); + BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 0 }); + T('130384.6', '7738.439', '16.8489536455608166'); + BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 0 }); + T('-77.37646245', '-15575006446', '4.96798911244572591812845789688349257e-9'); + BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 6 }); + T('-0.000000000000105997475333', '1566533913.92', '-6.7663696515677920855567403738e-23'); + BigNumber.config({ DECIMAL_PLACES : 1, ROUNDING_MODE : 5 }); + T('-0.078', '-9.3', '0'); + BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 3 }); + T('1459231246.57', '-0.00000000000000000248564', '-5.870645976770570154970148533174554641862860269387361001593151059686841215944384544825477543007032394071546965771390869152412e+26'); + BigNumber.config({ DECIMAL_PLACES : 78, ROUNDING_MODE : 4 }); + T('-6980419.8336', '40', '-174510.49584'); + BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 2 }); + T('-817230113.72', '2.9678', '-275365628.991'); + BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 0 }); + T('-15.129', '-0.00000000000000000012903362315', '117248509579652146658.3339909882'); + BigNumber.config({ DECIMAL_PLACES : 56, ROUNDING_MODE : 5 }); + T('-88.78607', '-8.02', '11.07058229426433915211970074812967581047381546134663341646'); + BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 3 }); + T('0.0007810', '160509488837', '4.865755947881176168373644971512582227188e-15'); + BigNumber.config({ DECIMAL_PLACES : 82, ROUNDING_MODE : 0 }); + T('439.43430', '4', '109.858575'); + BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 1 }); + T('6', '-2.062276', '-2.90940688831174876689638050387048096375072977'); + BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 5 }); + T('7.22', '67307.673', '0.00010726860219934'); + BigNumber.config({ DECIMAL_PLACES : 31, ROUNDING_MODE : 6 }); + T('2.7', '18020.888185', '0.0001498261335558028712112560061'); + BigNumber.config({ DECIMAL_PLACES : 89, ROUNDING_MODE : 6 }); + T('-1.8', '61', '-0.02950819672131147540983606557377049180327868852459016393442622950819672131147540983606557'); + BigNumber.config({ DECIMAL_PLACES : 100, ROUNDING_MODE : 1 }); + T('358020', '99441.0', '3.6003258213412978550095031224545207711105077382568558240564756991582948683138745587836003258213412978'); + BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 1 }); + T('0', '-1.22', '0'); + BigNumber.config({ DECIMAL_PLACES : 93, ROUNDING_MODE : 5 }); + T('0', '490.85100', '0'); + BigNumber.config({ DECIMAL_PLACES : 37, ROUNDING_MODE : 2 }); + T('8206.27628159', '4114304', '0.0019945721758990098932893631583859628'); + BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 3 }); + T('-0.182715262', '853.02', '-0.000214198098520550514642095144310801622470750978875055685'); + BigNumber.config({ DECIMAL_PLACES : 55, ROUNDING_MODE : 2 }); + T('-8363.1', '0.00000000000000091', '-9190219780219780219.7802197802197802197802197802197802197802197802197802197'); + BigNumber.config({ DECIMAL_PLACES : 38, ROUNDING_MODE : 6 }); + T('1169.5', '-15463.00667', '-0.07563212155039444214376711511823980866'); + BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 1 }); + T('908786', '-200681.3', '-4.528503652308411'); + BigNumber.config({ DECIMAL_PLACES : 19, ROUNDING_MODE : 4 }); + T('-0.0000000000000035169', '15994.995', '-2e-19'); + BigNumber.config({ DECIMAL_PLACES : 38, ROUNDING_MODE : 6 }); + T('0.00000000026', '-8587343224', '-3.027711752260573206e-20'); + BigNumber.config({ DECIMAL_PLACES : 31, ROUNDING_MODE : 0 }); + T('-6703488.435', '11.1', '-603917.8770270270270270270270270270271'); + BigNumber.config({ DECIMAL_PLACES : 35, ROUNDING_MODE : 4 }); + T('-170483104.5', '-10', '17048310.45'); + BigNumber.config({ DECIMAL_PLACES : 1, ROUNDING_MODE : 6 }); + T('-13213.36', '0.000000000000002009', '-6577083125933300149.3'); + BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 0 }); + T('8.76590183928', '-0.000000000000000131359888', '-66731952750142417.90461940710547'); + BigNumber.config({ DECIMAL_PLACES : 29, ROUNDING_MODE : 1 }); + T('0.0000063876', '-1929.4276714', '-3.31061904765009062676e-9'); + BigNumber.config({ DECIMAL_PLACES : 1, ROUNDING_MODE : 2 }); + T('-0.000022982731', '-1326798.381', '0.1'); + BigNumber.config({ DECIMAL_PLACES : 27, ROUNDING_MODE : 4 }); + T('-0.000000000000000000899452', '-0.00000000000000010457', '0.008601434445825762647030697'); + BigNumber.config({ DECIMAL_PLACES : 94, ROUNDING_MODE : 1 }); + T('-128.5', '93543.2', '-0.0013736968587775487689110485850387842194836182640747804223075541567960044129343447733239829298'); + BigNumber.config({ DECIMAL_PLACES : 83, ROUNDING_MODE : 0 }); + T('38279', '72312.99', '0.52935164207703207957519112402902991564862689262330322670933673189284525505030285707'); + BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 5 }); + T('-2.28', '2.6', '-0.87692307692308'); + BigNumber.config({ DECIMAL_PLACES : 7, ROUNDING_MODE : 5 }); + T('1.55', '-184.292', '-0.0084106'); + BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 3 }); + T('1.0', '-1923', '-0.000520020800832033281331253250130005200208008320333'); + BigNumber.config({ DECIMAL_PLACES : 45, ROUNDING_MODE : 2 }); + T('-0.117024182', '-21025', '0.00000556595395957193816884661117717003567182'); + BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 2 }); + T('-478713.598', '12517', '-38.24507453862746664536230726212351202364783893904290165375089877766'); + BigNumber.config({ DECIMAL_PLACES : 53, ROUNDING_MODE : 2 }); + T('-13.57330521', '-726098987.961', '1.869346388722558733493483109779855307113324826e-8'); + BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 1 }); + T('90.9813', '161525.59', '0'); + BigNumber.config({ DECIMAL_PLACES : 38, ROUNDING_MODE : 4 }); + T('-6', '40925001', '-1.4660964821967872401518084263455e-7'); + BigNumber.config({ DECIMAL_PLACES : 29, ROUNDING_MODE : 6 }); + T('0.00000000000000000041', '-4.5', '-9.111111111e-20'); + BigNumber.config({ DECIMAL_PLACES : 86, ROUNDING_MODE : 1 }); + T('-3', '-0.0000000006696', '4480286738.35125448028673835125448028673835125448028673835125448028673835125448028673835125448028'); + BigNumber.config({ DECIMAL_PLACES : 26, ROUNDING_MODE : 6 }); + T('10.2', '-0.00000000675155509', '-1510763055.92286887493944746883491696'); + BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 1 }); + T('-1033130.9', '-8332.83', '123.983196585073'); + BigNumber.config({ DECIMAL_PLACES : 78, ROUNDING_MODE : 2 }); + T('-4.03', '3.53', '-1.141643059490084985835694050991501416430594900849858356940509915014164305949008'); + BigNumber.config({ DECIMAL_PLACES : 40, ROUNDING_MODE : 6 }); + T('100.9', '0.0000000000000000100', '10090000000000000000'); + BigNumber.config({ DECIMAL_PLACES : 64, ROUNDING_MODE : 5 }); + T('-16.7', '-495.59', '0.0336972093867915010391654391735103613874371960693315038640811962'); + BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 1 }); + T('-96.6', '-495003.5298', '0.0001951501235'); + BigNumber.config({ DECIMAL_PLACES : 90, ROUNDING_MODE : 4 }); + T('2.1', '-129939161', '-1.6161409569206007109742689503743986772394197619915369470486268569950209236767351453e-8'); + BigNumber.config({ DECIMAL_PLACES : 21, ROUNDING_MODE : 3 }); + T('0.000000013437161974', '103.31', '1.30066421198e-10'); + BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 0 }); + T('-0.007308316', '2784', '-0.00000262511350574712643678160919540229885057471264367816091954022989'); + BigNumber.config({ DECIMAL_PLACES : 31, ROUNDING_MODE : 5 }); + T('1', '-0.000000000000017670059', '-56592906679032.5940620798153531915201867747018'); + BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 4 }); + T('0.00000000000000089362492', '64229.8', '0'); + BigNumber.config({ DECIMAL_PLACES : 63, ROUNDING_MODE : 0 }); + T('0.0000000001502918671', '0.00000000000482694', '31.136054539729103738600438372965066895382996266785996925588468057'); + BigNumber.config({ DECIMAL_PLACES : 37, ROUNDING_MODE : 3 }); + T('-17086.184193', '-5.4439535869', '3138.5616942280988938605383244950971020189'); + BigNumber.config({ DECIMAL_PLACES : 24, ROUNDING_MODE : 6 }); + T('0.0254426530', '-458197.07198', '-5.5527751170593589e-8'); + BigNumber.config({ DECIMAL_PLACES : 31, ROUNDING_MODE : 1 }); + T('85008.0462', '-84385.98078', '-1.0073716678321458030223299373021'); + BigNumber.config({ DECIMAL_PLACES : 21, ROUNDING_MODE : 3 }); + T('0.000000000000000001936', '1', '1.936e-18'); + BigNumber.config({ DECIMAL_PLACES : 6, ROUNDING_MODE : 0 }); + T('-0.0000000010049430843', '0.000000000871553', '-1.153049'); + BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 2 }); + T('248.283056', '-8249.702', '-0.0300960029828956245934701641344135824542510747660945813557871544935804953924396299405723988575587'); + BigNumber.config({ DECIMAL_PLACES : 9, ROUNDING_MODE : 6 }); + T('48518.8', '2042', '23.76043095'); + BigNumber.config({ DECIMAL_PLACES : 74, ROUNDING_MODE : 2 }); + T('2192632.42', '-3.847', '-569959.03821159344944112295295035092279698466337405770730439303353262282297894463'); + BigNumber.config({ DECIMAL_PLACES : 91, ROUNDING_MODE : 2 }); + T('-45908816104', '12341.507108', '-3719871.139096215476570951062162609905454668559592908350979009135129689867371423467481423906497498'); + BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 6 }); + T('-2.17011', '-87.7089375', '0.0247421763603053565664274521624435366122181106115896113779738809400125272296224'); + BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 3 }); + T('192.7', '-103777225', '-0.000001856862139067603705919097374207105653480327692323628811620276028772209'); + BigNumber.config({ DECIMAL_PLACES : 42, ROUNDING_MODE : 0 }); + T('-5', '-6389', '0.000782595085302864298012208483330724683049'); + BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 5 }); + T('168756033.40', '312791485989', '0.001'); + BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 3 }); + T('-0.000000000000000999', '27.8637832', '-3.58529921378371907516133702906502660414038823e-17'); + BigNumber.config({ DECIMAL_PLACES : 93, ROUNDING_MODE : 2 }); + T('-111914.7041', '0.000000831', '-134674734175.691937424789410348977135980746089049338146811070998796630565583634175691937424789410348977135'); + BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 4 }); + T('-8305.7958', '37623.0', '-0.220763782792440794'); + BigNumber.config({ DECIMAL_PLACES : 59, ROUNDING_MODE : 1 }); + T('575781866', '39425376.5337', '14.60434665748426061683343511539359013125051608769944423598665'); + BigNumber.config({ DECIMAL_PLACES : 73, ROUNDING_MODE : 6 }); + T('8.5', '104.7', '0.0811843361986628462273161413562559694364851957975167144221585482330468004'); + BigNumber.config({ DECIMAL_PLACES : 74, ROUNDING_MODE : 2 }); + T('0.00000143', '-1135.09', '-1.25981199728655877507510417676131408082178505669153987789514487837e-9'); + BigNumber.config({ DECIMAL_PLACES : 22, ROUNDING_MODE : 1 }); + T('0.000000000000000000010446', '0.0000000000000000704440', '0.0001482880018170461643'); + BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 6 }); + T('-4.5', '-96852.6', '0.0000464623561990075640715891984314308547215046369431486609549'); + BigNumber.config({ DECIMAL_PLACES : 100, ROUNDING_MODE : 1 }); + T('-1227.44993882', '1.94852', '-629.9396151027446472194280787469464003448771375197585860037361689897973846817071418307228050007184940364'); + BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 3 }); + T('81549.77863', '-344.6631181', '-236.6072096125449'); + BigNumber.config({ DECIMAL_PLACES : 66, ROUNDING_MODE : 6 }); + T('-1', '4.1', '-0.243902439024390243902439024390243902439024390243902439024390243902'); + BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 1 }); + T('14.132', '1773988', '0.000007966232015098185557061265352415010699057716286'); + BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 6 }); + T('-1.3227014', '31.6', '-0.041857639240506'); + BigNumber.config({ DECIMAL_PLACES : 86, ROUNDING_MODE : 1 }); + T('1.1978', '0.000000000009367527', '127867258882.73393821015941560670174743024493017207209544205210190480369045106568681360619510357429'); + BigNumber.config({ DECIMAL_PLACES : 42, ROUNDING_MODE : 4 }); + T('-1023459.1258', '-6', '170576.520966666666666666666666666666666666666667'); + BigNumber.config({ DECIMAL_PLACES : 77, ROUNDING_MODE : 2 }); + T('-3.53665238783', '140942000.890', '-2.509296281801920713458660761318783062722843965437335008448665709871347e-8'); + BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 2 }); + T('-4', '0.00000000059523', '-6720091393.24294810409421568133326613241940090385229239117652'); + BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 4 }); + T('0.0004846', '-92789.337', '-5.223e-9'); + BigNumber.config({ DECIMAL_PLACES : 27, ROUNDING_MODE : 0 }); + T('-5296416.381', '3271.11', '-1619.149579500536515127892366812'); + BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 2 }); + T('9', '113372725.7', '7.93841723785952867851002015734371639968430255355499493e-8'); + BigNumber.config({ DECIMAL_PLACES : 30, ROUNDING_MODE : 3 }); + T('-188.1', '-65.559116130', '2.869166198443072267820093931458'); + BigNumber.config({ DECIMAL_PLACES : 85, ROUNDING_MODE : 3 }); + T('264105.994294', '4.228', '62465.9399938505203405865657521286660359508041627246925260170293282876064333017975402081362'); + BigNumber.config({ DECIMAL_PLACES : 67, ROUNDING_MODE : 6 }); + T('-1632935027.5', '5', '-326587005.5'); + BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 6 }); + T('-0.000000000000000000159617451', '-14742180', '0'); + BigNumber.config({ DECIMAL_PLACES : 60, ROUNDING_MODE : 2 }); + T('9420.387558', '-2.7899', '-3376.604020932649915767590236209183124843184343524857521774974013'); + BigNumber.config({ DECIMAL_PLACES : 33, ROUNDING_MODE : 2 }); + T('-12.7', '-0.0034855', '3643.666618849519437670348587003299384'); + BigNumber.config({ DECIMAL_PLACES : 40, ROUNDING_MODE : 5 }); + T('-9951.6613', '0.00000248255061', '-4008643876.1463960648117461742300593017920387935213'); + BigNumber.config({ DECIMAL_PLACES : 94, ROUNDING_MODE : 1 }); + T('-4029471522.6', '-0.0000194', '207704717659793.8144329896907216494845360824742268041237113402061855670103092783505154639175257731958762886597'); + BigNumber.config({ DECIMAL_PLACES : 46, ROUNDING_MODE : 6 }); + T('1', '-66871334.88', '-1.49540905949386365831134729099339313204e-8'); + BigNumber.config({ DECIMAL_PLACES : 71, ROUNDING_MODE : 5 }); + T('909516', '-1.17640904', '-773129.04701922385771534023573977296196227801853681777215856824765644439454495'); + BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 1 }); + T('13196.6012', '-3.68', '-3586'); + BigNumber.config({ DECIMAL_PLACES : 5, ROUNDING_MODE : 0 }); + T('2', '-0.0000000000000000021855345112', '-915107947163858997.31383'); + BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 0 }); + T('-1872907', '7', '-267558.14285714285715'); + BigNumber.config({ DECIMAL_PLACES : 63, ROUNDING_MODE : 4 }); + T('-2', '-88.0', '0.022727272727272727272727272727272727272727272727272727272727273'); + BigNumber.config({ DECIMAL_PLACES : 90, ROUNDING_MODE : 6 }); + T('9.7', '-267.844331', '-0.036215065533718538922520633822935009216230154223424650342888907363135492309523624003824819'); + BigNumber.config({ DECIMAL_PLACES : 80, ROUNDING_MODE : 5 }); + T('-2749.160035', '-0.000000001363677066', '2015990518241.94864035353660483133768563355746865658588409523050525512027640127519751072795412'); + BigNumber.config({ DECIMAL_PLACES : 96, ROUNDING_MODE : 0 }); + T('-133043843', '-2161.2339', '61559.206062795887108748386743332130779551440498874277328335447634797880969755286551816534064175099234'); + BigNumber.config({ DECIMAL_PLACES : 45, ROUNDING_MODE : 4 }); + T('1.5', '0.00000000000361964685787', '414405067372.423947871882454568264051104256736485079886692'); + BigNumber.config({ DECIMAL_PLACES : 60, ROUNDING_MODE : 0 }); + T('-1199.8951', '-289851.54', '0.004139688545384302598495767867923006377678724770618779531067'); + BigNumber.config({ DECIMAL_PLACES : 93, ROUNDING_MODE : 2 }); + T('-932.59698', '-4.168240', '223.738791432355142698117190948697771721398000115156516899218854960366965433852177417807036063183'); + BigNumber.config({ DECIMAL_PLACES : 71, ROUNDING_MODE : 0 }); + T('76943694944091384167086915802330', '-3170514344.13111437411632629436402363000882134793762203080559731', '-2.426852131627177782103584719976324063198598249615667667537013034965147477765909459742787670213e+22'); + BigNumber.config({ DECIMAL_PLACES : 37, ROUNDING_MODE : 3 }); + T('-100106813802380591049673190434.29485007726830983381860757169221843019100', '-78094528555018220969404221099599857932226474465981358723152985003774326996070488958663.442862362122064587341729645', '0'); + BigNumber.config({ DECIMAL_PLACES : 66, ROUNDING_MODE : 6 }); + T('2765444538823009380150927888.62817583856680697300833760', '-373748288687906995883.519458069547968158219485', '-7399216.591817636693983101292832142580414091203843524104084009183630806757'); + BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 0 }); + T('0.0000172463179744500990608615554398722487', '128351898662310623329971900021427807014001736937674026359996931286121280901491747367836548202.528608641660908590739943216651336106395324584507151', '1e-12'); + BigNumber.config({ DECIMAL_PLACES : 89, ROUNDING_MODE : 5 }); + T('1618182994977486168089504.303412002229357379185662538096814339710756228978272205292369429799229740090454', '-1', '-1.618182994977486168089504303412002229357379185662538096814339710756228978272205292369429799229740090454e+24'); + BigNumber.config({ DECIMAL_PLACES : 7, ROUNDING_MODE : 1 }); + T('0.0000000000000001522032939763705088667535980533375348092536476465289413241', '1496543943364674787461682993652979296106902960456836.034677750383049103427390868675285804492754316540692799996989618573', '0'); + BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 2 }); + T('289251150440844894569227868596141248263971687018908.7582', '969818345137713519457348076418917350.37856042901482781836418515983', '298252917044760.00160068480697641721380359737601457865036690355925562692260445875'); + BigNumber.config({ DECIMAL_PLACES : 35, ROUNDING_MODE : 1 }); + T('-2213024.10057343', '-0.00000000000890742736591171593701106620816057819688709922018889419831412741863646672006726805124790913781880723722136288', '248447055436293962.98257200988127959945635068362403073'); + BigNumber.config({ DECIMAL_PLACES : 62, ROUNDING_MODE : 3 }); + T('-15000278752002677229489373453133974451779691958658411412581239029394262255826590548325824084926.364426980013744537479550093154967968151133218', '19930817564922229.5291352024629512480065750746678111999803194282693935048894', '-7.5261733258764132558180496549931107141952632304821423841286112570949320236190648553080458511753045259342783429114610461572193346219434419429e+77'); + BigNumber.config({ DECIMAL_PLACES : 48, ROUNDING_MODE : 1 }); + T('2096800095471614267703827121104.6754238308397', '2.973744016791308902667556831639027', '7.05104435227776125703251584926381124242257216881232643916317132478678635644883e+29'); + BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 2 }); + T('-576734896916364067204534325671000853418944286761094369396994587390.20170231389237709680027328398585710017952537281946222360187352', '482009602275141687123306632546133845144058354871522511369929211612892', '-0.001196521592503775676990724935172199634474240903524148649627067119770277994733693557'); + BigNumber.config({ DECIMAL_PLACES : 90, ROUNDING_MODE : 4 }); + T('-75918192392719163505045309838518111893013980009840517848891803953427.331330077457915525677681132397253540608104431728701657413', '-60979444819.8751292844264416314741570622847181849330960883', '1.24498005216300401626112591056125561055479097283160657526274169782872486314816546784862028914263938033873610945100941389665795564937849448482476657e+57'); + BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 2 }); + T('294.95', '0.00000000019352898985320522149531968704', '1524061073349.9110789035044962295678018844264382'); + BigNumber.config({ DECIMAL_PLACES : 91, ROUNDING_MODE : 4 }); + T('-0.28285407443755989683129372477710347255628834145187398883521459316293173768845235732814560306340433698915', '0.13871292707912833655802036597064044560547677333278215519941645627237614443', '-2.0391327642895655512488938334656344761249691410161901311361129106689190000978968816312793966'); + BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 6 }); + T('242992584878322186712025587579252842.56039954525291656310959074824986645465943491015032457106137684405819694', '87473659275731441930066028841855978813198.22321903332667067910515', '0.00000277789436145994'); + BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 1 }); + T('2.269347201823999184', '-7.241321231807619199976531960675934417862803419339662663862610722343621731', '-0.3133885556'); + BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 3 }); + T('3417885238696572270129533944698388854525514341906650023562052290280297627647749736866679.81692498536029901538050463542979536148441', '3298004280850374294213354990796411195649603604998968859911.9799801664027118', '1.0363495458578626394360904317930653776117e+30'); + BigNumber.config({ DECIMAL_PLACES : 89, ROUNDING_MODE : 5 }); + T('-11601794306', '-81767908348879851406690153959787322235864066.27197447304998889596792931520034109538966807267862795165181056608451', '1.4188689108321717760383402370309730605641516497841200518e-34'); + BigNumber.config({ DECIMAL_PLACES : 63, ROUNDING_MODE : 1 }); + T('-0.00000000006616495227868586', '235258142311710116186006815624097650601046483181302591778203830815439582160063948086684271928090450039326479.93618472866635377602947742', '0'); + BigNumber.config({ DECIMAL_PLACES : 94, ROUNDING_MODE : 2 }); + T('0.0000000000000007067996790061306734918199720686295541286585430436464239709795110073573528404300274616929677689236', '-971695691184134545850288955136758986951477249164414605379951990283064015944899942693392909033092608070796379272686752559239639568070', '0'); + BigNumber.config({ DECIMAL_PLACES : 92, ROUNDING_MODE : 1 }); + T('-4496428489.8107752661458715428395066220930608392696841546473410', '10562602494277713859668354432350036023079132.087319618829217004735542670195303530490537681062066586195417639', '-4.2569324105936144046817190246976033493852315745693034949779e-34'); + BigNumber.config({ DECIMAL_PLACES : 87, ROUNDING_MODE : 0 }); + T('35920122558051508748063125686822913942860176999279879579817.4020267319839180494015750914006655283919319821515593314026309161089242741254532628', '-3950.5538090611987650712194288974', '-9.092427111273163634904721539148569267471666846523573342584757998200405808139310245590083081928179492591002169976154857060760636871413767504456e+54'); + BigNumber.config({ DECIMAL_PLACES : 43, ROUNDING_MODE : 2 }); + T('-243088505742038547731796747307.96086361844657478672072692415024978317837834142', '-8232283011028479.1700368570722455752415600074197665455778628677608248', '29528686685866.1250710377075976261763077799873288950475673'); + BigNumber.config({ DECIMAL_PLACES : 28, ROUNDING_MODE : 0 }); + T('-1162784776.475576897828', '295.56', '-3934175.0455933715584923534984436325'); + BigNumber.config({ DECIMAL_PLACES : 6, ROUNDING_MODE : 1 }); + T('23003353363599076353472193017303616218.849544590304416073580685', '72774733771332685416379.473364778', '316089831889711.742249'); + BigNumber.config({ DECIMAL_PLACES : 48, ROUNDING_MODE : 6 }); + T('-567752330920072378093754598619213748233796179.54236418430788356845643', '-516520833.596513462515354879978446982223512087368936146936784699018442590224803283390144545006111713728220298', '1.099185732677685220775424804772784445315257767579090407441376702516440306426402195129e+36'); + BigNumber.config({ DECIMAL_PLACES : 94, ROUNDING_MODE : 3 }); + T('5129631143957037743474086115152.0138944779473626911495605637223009720022208294444131290756814960940058345929700', '-0.001628420094254817289714854197741233263679962156674346005003765993855502866127511748662568192380989025289687', '-3.1500662280296980938785103011087640202801405120334662125500878292149054795017318453511463392253496963668008164268072237026849994e+33'); + BigNumber.config({ DECIMAL_PLACES : 29, ROUNDING_MODE : 5 }); + T('-8052237465249088503330516428019461935931483233368828144163108905362304793799154588586652106494205591271530372984422846128124216637054101172159.8198', '-24948480627686294479961182555344635149376544700047', '3.2275462323397798259929627015697611798773642903722190156638697307068475254156318133306212183904140821509558932647674966629e+92'); + BigNumber.config({ DECIMAL_PLACES : 6, ROUNDING_MODE : 2 }); + T('-12397061088902295.897360560', '634103874676968188199675493521107.0366802278632285774300608544418732486752517833267525055540644', '0'); + BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 6 }); + T('0.0000000000000335809635072419405931374425439253273613830562335226929106905186893650025407202550455008965953735437464348179712812728248580871044244477117', '19646313.80579117165029', '1.7092755332729762558466647740958821730919210007978474484e-21'); + BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 6 }); + T('0.0000000582449227209204919890209314208406523857981092654', '36223019307853521430962039853003183168570769.95', '1.608e-51'); + BigNumber.config({ DECIMAL_PLACES : 7, ROUNDING_MODE : 3 }); + T('-772946745603673867.340258837457273595019679255997676192580433280245108013129', '-1696902776617312106444048777217345449275764437258316904173651389899152.0177594787711491431721464369846363398155263812514418858122974236900857586', '0'); + BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 4 }); + T('0.00000000000000000003116524543476809140307229914816902649111431106585959830341459426429296249727811891222585676328199187921592070560172826', '-3150132884709031864614.11492430581197981118226227987562414450886655921687736229752913126421963646080717789305641758399', '0'); + BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 0 }); + T('119359.6666412324178632889818329515821650909368467852407575', '-224637567294185974886852529049358455101868576658680255021071380843.728422713272676496', '-1e-57'); + BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 0 }); + T('0.0000000000000000128654230542111067189423898238246405929981191833566220411470745683627400928267331464973925678552845736018633685886179568342056880782221550361374348', '-2887131640135059115551339664820433789010005472214094930355978045276915703595155257443084452714940719251528954510676362728841175644799114073678579', '-1e-11'); + BigNumber.config({ DECIMAL_PLACES : 60, ROUNDING_MODE : 2 }); + T('-0.000774747', '-0.00000000000092798776373720020193054530221803748143507437902179574930854083957227391839348385502561988739064', '834867689.289277159219024232798273768579767988713805739979498226428144'); + BigNumber.config({ DECIMAL_PLACES : 71, ROUNDING_MODE : 1 }); + T('-827868461536829883533615801499842330245604823727789265080484494296581973230327572709857581087284918649127281', '49303677512716864518400823500434096286826505119302.9743946395242917733813874643090568032061657164233181387246372366819', '-1.679121118953648692303782747314078964567544504528672079427533110600711645262450980541570282263724901434251183336538506148689706453e+58'); + BigNumber.config({ DECIMAL_PLACES : 30, ROUNDING_MODE : 0 }); + T('-0.0000000000069385090826146798419962983124409745984969407476180725103074040574177183775134748722769', '50.2643657525834508627402118587581506961727676928022152870922843242765047348968567892276415345576593488544742272811011442', '-1.38040318995929228e-13'); + BigNumber.config({ DECIMAL_PLACES : 59, ROUNDING_MODE : 6 }); + T('-36465830.99057', '4246.9295268361765684367203054099354321276927054849374739', '-8586.39889363453836551650372642855884118816685562303698224837571'); + BigNumber.config({ DECIMAL_PLACES : 64, ROUNDING_MODE : 5 }); + T('1476708674658145763017333981.841951672822642013473098', '1507399190942938621889136186496523930356618676890447430300602059037448422589737696344109263118154130274452931568.00767568326234', '0'); + BigNumber.config({ DECIMAL_PLACES : 46, ROUNDING_MODE : 1 }); + T('31151456263.8', '719445144017520697175948798073.23266041169', '4.32992793444184626238433952e-20'); + BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 1 }); + T('0.00000000000000001944284988655185994709008040377222083156202951329463977687875625', '36570102195549551310626600317527912852058509458312802954769714868502228113301386469182240406317883836444017.7959365986203099011251100198700', '0'); + BigNumber.config({ DECIMAL_PLACES : 88, ROUNDING_MODE : 5 }); + T('-3.41', '-180189999778582206969329154333161380.21867908917048900452072652645219508769542874832226452800919404132628121507168368', '1.89244686397148236887940388896859740933131345108857683e-35'); + BigNumber.config({ DECIMAL_PLACES : 86, ROUNDING_MODE : 0 }); + T('0.043254', '-33900799706350726803823554324197.2289101658777904906663', '-1.27589910487855286067700916396919354333975443789157114e-33'); + BigNumber.config({ DECIMAL_PLACES : 71, ROUNDING_MODE : 2 }); + T('45767308681814684662405180145407351015025789138220579904890513', '11703616727219168124423089130009645431065621809814113.44438980735', '3910526954.91756783366082309176987991868244379431829011307706609785215151070062077'); + BigNumber.config({ DECIMAL_PLACES : 24, ROUNDING_MODE : 0 }); + T('0', '409946135037084139112508529443331984520338808007410045687712390.37341052002741668352098872558939749', '0'); + BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 2 }); + T('83991645554946550648660501622076948829205475727077980602090363500.3529373353607961673548760361397', '-62417534038612853524431031149788470754766910341134390055001497443989592787068960019605873895837530483.711068197247897385515638370383789971173', '0'); + BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 5 }); + T('399.15978890', '0.000000000000000508936472472487791935715900753504990212713895672381439601328142012887053703220389114369591028834', '784301794997759517.3613143903819238439194126203801675984212192753757427861426142820114480649605235'); + BigNumber.config({ DECIMAL_PLACES : 82, ROUNDING_MODE : 2 }); + T('-1096651136061566062469896114565053904890092964982004245212697461541271120220336327715857955687292684162607855553175728010418531321461909990074196341', '10154.984', '-1.079914193918538977973669002890653402201414561541410843397387392773116255249970189727387020685894418112926475859711574149618090310592227412740577770481962354642803966997880055744056317567807098465147754048652366168179093142835e+143'); + BigNumber.config({ DECIMAL_PLACES : 43, ROUNDING_MODE : 2 }); + T('530291710465271519400057929362823808769925622.725711326079625482029469223470276638323050654170531083472274717560', '0.00000000000000010530294239590880893716635789973366225869274314505', '5.0358679292315218085087477235739742436851272590298887703889366505136434193799912706129762097494055328994e+60'); + BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 2 }); + T('250890059887771999498847058254721688658828501929057517825850189564527881369512022170292724566387372942161149167967', '-5938359923718710898348182592.6693', '-4.2249049082673318364687888913057932494050497269933317856958173693850003558331497456054093e+85'); + BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 4 }); + T('-1378616154058662492767568271138278820747355923137795.2894351872685597640513128546176', '-37903646936042996172994267.048159645793972584', '3.637159654808100213648289387294782958927162e+25'); + BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 6 }); + T('-405032149949645531698438.280211765368612513947036412222426700623121403877400357070475693933100669', '176191874946088045557632944491735936258291661871674031465169621', '-2.2988128713289362888558334108185818798e-39'); + BigNumber.config({ DECIMAL_PLACES : 70, ROUNDING_MODE : 5 }); + T('-2580695182601869673918196714341800309674884455224565088301569943.2288274', '-0.000000000000002540862334586134935858336175389092350190923138909786692053890433753196878414040354336771350453861966', '1.0156769012919477433312399525282475220324945569172607675511111700657141391184536754311230324749217531787797433524338875588150029457904343196733453131e+78'); + BigNumber.config({ DECIMAL_PLACES : 94, ROUNDING_MODE : 3 }); + T('1683784432854764760318037677647356479258132056087368331404.7901349274121272631991953907393965668110904782111', '6098763.78830840832873090895083360527456728317690850679', '2.760861858730537673264019978069684088098674051042009367085739711554244066456823360955119091386170307547779216190046166314369772727903423469613814e+50'); + BigNumber.config({ DECIMAL_PLACES : 31, ROUNDING_MODE : 5 }); + T('-2530637191334289339737358351191006220110627855345270379.24464258326802980441960151480838549544839800106528099664769831900729044019049792251953842', '0.0000000000005630735131653553549064876725', '-4.4943282398565391204427516201011048233046420457279955876277507634918635719590037824058731199609495e+66'); + BigNumber.config({ DECIMAL_PLACES : 6, ROUNDING_MODE : 1 }); + T('-6016514303387087370402318550.6923153806838045524779637206539897873368973099362667678596187646318534447942829547334688115', '42063250650445111261623586421695502971901833122937548372402100380934529958016372546.6', '0'); + BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 6 }); + T('-0.000000026315944617863612115639219149412047957937278455665071240177388414490625437453442371901796371717069144110689088162500312', '-2.72299972943683965188220367', '1e-8'); + BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 6 }); + T('-0.0000000025474072806440830689586180541261721100964401394173677164038', '836486791609582458507489170248190.24332716383034253743391258375515097987391331247574', '-3.05e-42'); + BigNumber.config({ DECIMAL_PLACES : 48, ROUNDING_MODE : 5 }); + T('-53013010047301437313195229107041695663054443105621563368715814088060231437445919515771354548001642958971257675436953938693573030623638', '-0.00796582379779070199223958039275317264241408196576173862276559143700498102322472', '6.655056826891456110588198397760479231210742064163853251683197496717259792361971893844369531103744582917298501592030438072823956184780768158137980361044298970332381029403854666621122182e+135'); + BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 5 }); + T('-0.000021687139718147001344084346966546200647538067256875719646483903526067224', '379125104172643148686301251195225058433045909719144509494703160390891.0170200088661', '0'); + BigNumber.config({ DECIMAL_PLACES : 50, ROUNDING_MODE : 1 }); + T('4750140431498572971884.02444080212658169679978723632529229252457007826396773526300081724651204250517439743049309878', '22950611345566180502757288198630366770990837912160599255293.240692976132843', '2.0697228322051e-37'); + BigNumber.config({ DECIMAL_PLACES : 52, ROUNDING_MODE : 0 }); + T('-0.000000000036570892794447705585614624821983128340381593076828081186793139782426772027967459744045422188551482237816591716314', '2560596797097993138941873567696297135779266794271386064153376725986803756424263745.682976536715541668128630255613888292075729181635435292', '-1e-52'); + BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 6 }); + T('3215201509569438794539395241433586240904044490694071836228405661637343', '19209955897019.37898330988372930240098575251229', '1.673716236937488322770450732532987109445543659818411514193939316406168e+56'); + BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 6 }); + T('0.00000282494954542178986719684575203456013530718295572798942815487088262092660380952260355573509586164313188435614251378', '-2393493491867465608168880873625388541785217835882244163382042684.14580574857237744565825651728634720874755475134164710774169412', '0'); + BigNumber.config({ DECIMAL_PLACES : 27, ROUNDING_MODE : 5 }); + T('-138911208177979510918803338057536699138', '47484983457487684526753652269251469092668812125.2717610240593097820889181874231447310274090873968404783764276108027743740', '-2.925371308223026314e-9'); + BigNumber.config({ DECIMAL_PLACES : 30, ROUNDING_MODE : 3 }); + T('731241406311509903674243319413234680513560211005222568707790678525996236175934378681980527062623332869973136034551326117781889599187427211146.193394487', '-2687825772761.8689341190319351155213905676762471173107963898510595496404265593416492000662004897007501358729657', '-2.7205684747941253212498747243949969403982533754958137154056312955596826856387360980498258942150169615667959998506179760995692747353769627150318824922188291195e+128'); + BigNumber.config({ DECIMAL_PLACES : 30, ROUNDING_MODE : 6 }); + T('206939904334186501184151978408304545220002459073583245265171036400836008.478', '-10084745301004162428994304777972806212660507886355223903181084400320349971431386594095351596008397278869696036276954123347146', '0'); + BigNumber.config({ DECIMAL_PLACES : 77, ROUNDING_MODE : 5 }); + T('-39897603831431975.898726350018069055698508506479008835931923112170261', '2387737702875316321155641022232111227438399324663798098137222136357169394335629586576077266281484468887573', '0'); + BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 0 }); + T('244402366994683.389936331', '46893212566947754952628148221078712047972256.355523427887089555207033604948598651391255670650506432106005809409641579984514266497954', '5.211892161275129331004143444134219900562480265421439944e-30'); + BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 6 }); + T('921553120546680443171008695023439170379233255684062899262992193.794917224650781623583', '34776592716492405622044088435.4067262371762', '2.64992355076132660490737878527388874952228235144501129356105179745782042120074057971014066235636686580551171373518e+34'); + BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 2 }); + T('0.000000000000001096563555410145551886745', '-13045975821369490557686183610', '-8.4053777994e-44'); + BigNumber.config({ DECIMAL_PLACES : 86, ROUNDING_MODE : 0 }); + T('-221260119049855126902502314167490585.20799122411762790676886491913916461096538682265', '1593466127202707486930181372092240602166083899835008909740648436940251311560988478236191', '-1.3885461088418119708264230587238319e-52'); + BigNumber.config({ DECIMAL_PLACES : 35, ROUNDING_MODE : 3 }); + T('21144017850052012114002430609072631261540111692934004274597.9268271743256176148636873010674646547207', '69525139905449724584797389144221440768597505', '304120464609013.16850543564659082427975287876469553'); + BigNumber.config({ DECIMAL_PLACES : 49, ROUNDING_MODE : 2 }); + T('-0.00000000000583266788198021', '0.0000000000000061025691356020273372684847905447', '-955.7725201264448788049473037983438124250855924615229'); + BigNumber.config({ DECIMAL_PLACES : 23, ROUNDING_MODE : 0 }); + T('-156663038406770648005174622303705622.7579041672395005235498789260', '-0.00000000000000000279640660545545434058450137348238079234837546590841727943835550147521988427900118849', '5.602298253091657872084698931378902499954041862670597788676126142104438506469e+52'); + BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 0 }); + T('-10566951247364.13067143255962777017389679088649800105253368256681791614050139262091025457535223660042444759101038199584', '1487798968.81452848476368061577537587057227379428626', '-7102.4052770945457887313'); + BigNumber.config({ DECIMAL_PLACES : 98, ROUNDING_MODE : 3 }); + T('-4668.1', '119725391676743966273773855042970.28053142529825905284', '-3.899005828775045144018056878422920342348377535725165495259672533200529e-29'); + BigNumber.config({ DECIMAL_PLACES : 49, ROUNDING_MODE : 0 }); + T('55145840802614703675780118424602174215345069858293299936255447790771825169501037382715931054297849423823668684444190452788350', '-5109708972121238121337032349.891448492221030161628519862566339', '-1.07923643212348215319627390227472765176959299472361859473063017742967902546478586994945026310016152356068340783023191816582426745086395041456559937e+97'); + BigNumber.config({ DECIMAL_PLACES : 33, ROUNDING_MODE : 0 }); + T('-197225815302194313889667990513694164420673065787.084932500684', '81738452500743439114379636892702094715301199582161638069266331867043759961814861.28757610773710532695', '-3e-33'); + BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 5 }); + T('338100639769773661810919487422094307.5336058', '-880545986717635548339964965154416822474394118319503023985079917', '-3.8396704416323949e-28'); + BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 4 }); + T('-1662797505.65535176968783183655568367434611', '-581.960249598597596154667772484', '2857235.53593609354275465707353881349082806891990385315'); + BigNumber.config({ DECIMAL_PLACES : 91, ROUNDING_MODE : 3 }); + T('0.000160610077675684146304552027076418779474569051481519903465057107576282597616429863413312032', '-34060940888951667885141940759531275369588062486617036626790624.473751149557296807287327702821902987273566077309855776874103947410793018863211877420', '-4.715374076110186525798803e-66'); + BigNumber.config({ DECIMAL_PLACES : 35, ROUNDING_MODE : 0 }); + T('-207405485962595796054501054613781720814263441017518647041343154889940476237161034783864767115064779.34235138081465997406408488906217129281505944644784', '-0.00000000093303413425827094526096475567364786774471842617364847706513764924856542906038903595215249479094234074185548433373674778967214814', '2.2229142359028033154511990611173655293296336332206588038453748114511470584621308854680838501629883581745482679024467353488331250486413881244065e+107'); + BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 6 }); + T('1477.22889187002425723777429417396550491538475837092', '1761.3', '0.8387'); + BigNumber.config({ DECIMAL_PLACES : 2, ROUNDING_MODE : 4 }); + T('34098317161560739433890908142909751278554.6930022877561086429320566396040491171871835072970338682888', '-37724261420227885.58215329250987023415665188141548153119211386522822083124724793770295346648801201311871412682289433', '-9.038829622593246661590439e+23'); + BigNumber.config({ DECIMAL_PLACES : 27, ROUNDING_MODE : 6 }); + T('50623519047580605172184984056336202404.3760583038771349760555077386002334157410700615188634691157835559775', '-0.00000000000000006139710831330702021319614773510605739787476066740813000994936327277523', '-8.24526112683528770106542983732390678768189877193258726520495343940809472671727076e+53'); + BigNumber.config({ DECIMAL_PLACES : 80, ROUNDING_MODE : 4 }); + T('10728.59', '5824163674089127623690504744435273553136', '1.84208250323217471512375284637258221177216212e-36'); + BigNumber.config({ DECIMAL_PLACES : 71, ROUNDING_MODE : 3 }); + T('-1.4', '-3813346210311479709541381781490830445870609120466', '3.6713162739179822524861e-49'); + BigNumber.config({ DECIMAL_PLACES : 40, ROUNDING_MODE : 2 }); + T('-4799217929592734484537517487908.36992727', '3.3934141944923', '-1.4142741364676708625668237899363022984645293725867854343852978917115114e+30'); + BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 2 }); + T('0.000000000003576650362579233331081232620172381206846121159501556354149447107365', '-54512905937178594044728031220880675540771601222564092923', '0'); + BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 2 }); + T('-8125372282301887408375220913379041960349929890.62455', '-1790460199295669106247191209704778284796248830123278272533504949.777383', '5e-18'); + BigNumber.config({ DECIMAL_PLACES : 94, ROUNDING_MODE : 1 }); + T('-765746835279349140819409189902608939522965225756855681984520198', '-0.2458823151440970935522013071618517432598781582118744011898171590155937054619264848359000725442111657566195240237628055', '3.1142818662277121288437132157877831416359946632925686448321076827434830094251546601195911606253987567029621850150409881252598708742138280652195860931073145758e+63'); + BigNumber.config({ DECIMAL_PLACES : 23, ROUNDING_MODE : 6 }); + T('81965007161658.0547343638301154851084560488552', '-0.000000000000004261559354294540140114492951839225329005337277856986267793697637058674710822403261836354253969282946127380963265117', '-1.923357164533182185195153252080481961629834669817308e+28'); + BigNumber.config({ DECIMAL_PLACES : 25, ROUNDING_MODE : 5 }); + T('-0.000000000000000000065889933115566879895515836698319434467360644777858211720588117831158517205383027852887070850900716340952465033158953134', '-0.00000000000000007908737871894736179930044739134129252658812997987977029914237397560831585918570996834124936441532405901393160446609993', '0.0008331282966112682229331'); + BigNumber.config({ DECIMAL_PLACES : 90, ROUNDING_MODE : 4 }); + T('0.0000000000458887', '-0.00000000000007920739464409770182', '-579.348685892163588470293269827812483800348640005621965767695626614309958240238636967681609128'); + BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 2 }); + T('-0.0000000037666515796183731842937900251875355', '-3275441302599371054338586817042216323073127784053613466464433018.537786728515034048117509170969225078859247721', '1.1499677e-72'); + BigNumber.config({ DECIMAL_PLACES : 78, ROUNDING_MODE : 2 }); + T('83.39662443568', '-0.00000000000000002003152279999036168607346445798938073488008467463259124348624491238949667009462878406718904207439173283600253638482948274209051576357898888377243147402', '-4163269326469784259.074364130103393795783206135919553720762453192372920347086091930230269553807323'); + BigNumber.config({ DECIMAL_PLACES : 21, ROUNDING_MODE : 6 }); + T('-0.00000330', '109434048584872145809570196046154298805745503330569166951015891452732202220587810005.98717361588303691003203719491658892592695834034237414897181323', '0'); + BigNumber.config({ DECIMAL_PLACES : 83, ROUNDING_MODE : 2 }); + T('661510957981362354.675586031673491649623307368815700089', '-6132046439808977110693422347539910465597.524926496445313468843607211615349406925814780881225164808283588825422222481814130200680430', '-1.0787768234872817780707108935091697973540974676747895321936128e-22'); + BigNumber.config({ DECIMAL_PLACES : 96, ROUNDING_MODE : 1 }); + T('240645477863953208383256180378821461697005668395222275831882459357397472109203767724881575267577033502461473493422161508786793834549218188', '179.633068890179035550126501837996890817635942524483', '1.339650206672552513732915483211084687492828115679933306207775936177308128834624497824175070285464372582119837653218399512382664275446656108624090174313226738623291795409543341109107394925580009120035261319741987854221053573864750278e+135'); + BigNumber.config({ DECIMAL_PLACES : 36, ROUNDING_MODE : 2 }); + T('-766365170984667044870484337547371150484988429808969008514795576128048891668669105924989237341486385915120644587680287103858354', '2445751367297732436141052279257892687788556037231498276997324552712597131221011195516437849402580435388649388861322697306622577156219766103731', '-3.13345494244335396303e-16'); + BigNumber.config({ DECIMAL_PLACES : 5, ROUNDING_MODE : 4 }); + T('-18058842314368683976478687652768663959807272264111648002186418.202272100393867', '-0.0000000231279891873873831524846024981', '7.8082198015800234109110710756825533282836360892482051132376093488274557258e+68'); + BigNumber.config({ DECIMAL_PLACES : 62, ROUNDING_MODE : 5 }); + T('-11711339209668773344982626987099295880675887894380080989641832695807303807116201', '0.000000000000604980060637221761498279329982314575639688591904703076944583644618268838055262788114307046405084556659222251998944445759115019204243245798541095876396', '-1.935822347158564545902799821915818258071805920079266430341870600078973567248346441460842317610956938785440088712560444671603373719507540064391699452526437e+91'); + BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 3 }); + T('-0.000028154022631163645234323579837517742974', '763714225', '-3.68646042060610370775e-14'); + BigNumber.config({ DECIMAL_PLACES : 71, ROUNDING_MODE : 2 }); + T('21062233519542444965824728279914.653213795455323072654677744778683570844371223391434996821852872307725640641729538169125085230104549811712864738905143', '0.000000171703083251092985870323746701708482113299956795635958844911266243301132752', '1.2266660051026411667366702282614551559014534199266716754244013766513719984823303199747701978506983918117786457e+38'); + BigNumber.config({ DECIMAL_PLACES : 39, ROUNDING_MODE : 0 }); + T('-121257486105813564310134681312053320611077676259088875416194.47153110485053263404554085813496448318', '-4084791526573552732873599473516219634802268496638841468581734356', '0.00002968511007648119281280433886543605'); + BigNumber.config({ DECIMAL_PLACES : 74, ROUNDING_MODE : 2 }); + T('0.000000164578657788588019000116202176232404908041728145', '63119865.4177618888922134116051365657910248178312341961601', '2.60739874363350103433523981000588299516706471965550343854536e-15'); + BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 4 }); + T('0.00000000000000006596271466668487', '-539419239.136', '-1.2228469042435127550630100260688526099356201e-25'); + BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 6 }); + T('-0.00000000000000199788581510442427115087092276680447460565666179306750837088275882162058969391398191642075728411841395624008869134397568404721265572447381', '-0.002028577018227795', '9.848705753601688878231692808052534233554172889775981022319906806336915094632912895e-13'); + BigNumber.config({ DECIMAL_PLACES : 50, ROUNDING_MODE : 2 }); + T('-9887034207993526508563691608159867317275531523.01396873087646480937106267730699598450248258523176444512402264482606024599663403761737647463303159', '8772920062368017041328549154681563574802.98973126923491698447317067300819744100491915062397666591201700', '-1126994.6765392940225916166969206228895948211119254973175'); + BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 5 }); + T('34648817936384012285095138.9033284237027691083719295724088752091659041134562734817206655068482823303472564684527417382649419001003061975214289', '0.00000000000073129840984615009847770183025645601294694470', '4.7379862269457688865194244036393170482427099288471334761305588440042180924511828827769256776661666757793969933190342816957e+37'); + BigNumber.config({ DECIMAL_PLACES : 29, ROUNDING_MODE : 5 }); + T('-410236615838101179461003106082923506552161864023253078619.42383715734657498731871501341149044489675184080204634673208', '-16700539039984360840000288381875688192758730134701984438502896.059622768667942635184286', '0.00002456427393486607747670324'); + BigNumber.config({ DECIMAL_PLACES : 45, ROUNDING_MODE : 5 }); + T('-0.0000000000008261580047417753196019777820265960458240724510855824773446269060589966697084218488066759878381989061', '1472567393186391365433240354050309702841455502933514845209507757008252424524630725988331270495257462495809930443112514286386727777534106903540357537840', '0'); + BigNumber.config({ DECIMAL_PLACES : 9, ROUNDING_MODE : 0 }); + T('-0.0000000000010133051516043563571444092178778617007841179', '2841.631237610061318204026527525461909600878371', '-1e-9'); + BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 5 }); + T('0.000434746683110784676350512124273115131526691635488621245898351568418905144524240538757666', '-72.754939209315378716529155446322462548155056', '-0.0000059754937305359013925521167107'); + BigNumber.config({ DECIMAL_PLACES : 27, ROUNDING_MODE : 4 }); + T('0.00000000000000000854651118154424773615696011872928173942382083706149187646457857355809608100811648271879534541972313644107157431654992339085547463379527', '22', '3.88477781e-19'); + BigNumber.config({ DECIMAL_PLACES : 19, ROUNDING_MODE : 5 }); + T('-0.00000394892074850948987873089825542954517462502155991604329884199934813459956719272328729708509121706336173939287967480', '322144987032878601907718372304451697.01159', '0'); + BigNumber.config({ DECIMAL_PLACES : 88, ROUNDING_MODE : 4 }); + T('208859709030919022668026840603676129671468435.33607886149686015823', '0.01889073200221273425874122349502352549427956172837681307889380375053438909209797825161457166530112944290616595', '1.1056199887143314002138931452389730341497907319575118366203107346836990822658147120643404038323533401588660264603730440281486699288371e+46'); + BigNumber.config({ DECIMAL_PLACES : 63, ROUNDING_MODE : 6 }); + T('-2587030969033635395116299220693238227817249983119048917425686389.9938', '9002647902.166073', '-2.87363339891498524938146402047434581585175314551744655959347825635385293396011197036576520825766337679980778948659204e+53'); + BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 3 }); + T('10942687.37267270972749191', '1223028609417510798257150450863710728400112574753822913624040596375380.636103063240116883753619541538711824386875697240375421870207137471575150', '0'); + BigNumber.config({ DECIMAL_PLACES : 89, ROUNDING_MODE : 1 }); + T('-0.000000000000727175557022683250030094239938027469890979345925006324236384264240507152468370259771726832762008917826728798232836587230180549086738583336336196136', '-99692702089561102666910827430004445013.4633346742701326', '7.29417040346051916273494433969764735713e-51'); + BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 6 }); + T('-0.000435854665924446274149989727822707565279192689899987869618794982461629756411792802473', '-21479980655764289345477008567297503725301337815770106747360860697561555706454247768461577', '0'); + BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 1 }); + T('0.0003661424946181228662544929843135642461', '-35541723023331275234931465000.3434160778574144692609693947', '0'); + BigNumber.config({ DECIMAL_PLACES : 39, ROUNDING_MODE : 2 }); + T('29511043086232682578298902433029441912767122483715484336528860737562383987162415257', '0.00000000000000046991515004893762897688645593294701223251163738620756601403640138', '6.2800790915464974417238635529785551698938085918374781178739742809295933496204542846776626640063091485312691640142866673025483528632260971e+97'); + BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 0 }); + T('-629.54486', '-3804390832054237197732585520105512857086714514451063674129724348813938242029720919803496627174331383149317667508624916115174380162610.4', '1e-12'); + BigNumber.config({ DECIMAL_PLACES : 38, ROUNDING_MODE : 4 }); + T('-0.00092138581743579282981369074351185363008543791080560303477', '-0.000230991881481976', '3.98882337995799814468394510251061380533'); + BigNumber.config({ DECIMAL_PLACES : 41, ROUNDING_MODE : 1 }); + T('-23033476615970509548342', '6667695578819.681810038616467102328949290169', '-3454488337.64061930527858389624314516095365835459827'); + BigNumber.config({ DECIMAL_PLACES : 89, ROUNDING_MODE : 0 }); + T('-17609583262089829349614527901463987025975160200151.4820645710897030443374385465092892', '16870249287558515727103701322636559681739080746456750537410713485304497780078664815867842085135794504652737821295544703167229966788.07959249777', '-1.04382473e-81'); + BigNumber.config({ DECIMAL_PLACES : 9, ROUNDING_MODE : 6 }); + T('1349754860300394469926085895424254955915398031581010550799071969866756394839212719635286006491', '13412861067171333299.84177303429285692571286631558385009295979180821715177980990983167100956466924033094092553925260547177604110713037231783105431476', '1.00631390539337565310018357332892955002994225647946004870372436649442631607699915701e+74'); + BigNumber.config({ DECIMAL_PLACES : 59, ROUNDING_MODE : 3 }); + T('-6186799896.21170397141881093515171173147157756732289393211637798253167', '893.091', '-6927401.45876702818796607617269876387901297579678094833798165918427'); + BigNumber.config({ DECIMAL_PLACES : 58, ROUNDING_MODE : 3 }); + T('214744420800036091723235327386836286091072499.82497486682144788792915901591597911', '-715116823112325737.2466174071298635872411470704596237300360657750552662790180883559706657', '-3.002927827448208186141147717660718139667684913298399093948689796248917476883191412928e+26'); + BigNumber.config({ DECIMAL_PLACES : 38, ROUNDING_MODE : 2 }); + T('10784824161.537439230227463899676', '-11262180156432062747048177456745766565363391724436692706657204194840723282194660736622526420015840791431252480525869816968701138773587059519556961', '0'); + BigNumber.config({ DECIMAL_PLACES : 96, ROUNDING_MODE : 3 }); + T('1065475535010405771216088743120999368', '78256467309231123490607919376895818.6878352116648506364836670768071490932035482239738554', '13.615175481921126856133686342327097687306334430228791860260596510008956841778876892927993075408915'); + BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 5 }); + T('-4720967076711694069198987.566', '-26730767756103443137829904940659855284477689929810503207977148998370094841105845647981234', '0'); + BigNumber.config({ DECIMAL_PLACES : 92, ROUNDING_MODE : 0 }); + T('-4142076414964352827467635184212322570640153530421111422699654544405985173134941479224380826617774348813350115902374014129112579647', '-1123920.836060533', '3.68538092903659423188259410965646827940853170201720041177477321176740140646972165385369647666630547277380365846243405462714106940736106225684761023365016040126731384881104356605229898933571882395330993973105263208971e+123'); + BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 1 }); + T('-9012546797305778913749072705664218779598777693194018397051301720249575705315186211819737108442078207855.95097311271066311789437126035831079152248451', '-221696431298318943617594310436493479484437358300747895944247886573964283577260576.230554488', '4.0652647155958609721257535779485826311570413278384982152932483257957600446920806933441382642212114e+22'); + BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 4 }); + T('0.00000000002538387070543995416405436499183653403597088747366207520144542550245681558184831091988077404423487890839376340304725844427690', '14562891408915478681.421127181921914449589980053944489651677113447812731103604100978570606466', '0'); + BigNumber.config({ DECIMAL_PLACES : 40, ROUNDING_MODE : 4 }); + T('0.0000001139087102258881402161089659878951562048252365503155737106113169695', '112999330291096081712666114036319726856888730969', '0'); + BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 0 }); + T('0.0017737339683220256362258495322853553726', '344311488386394946670123243419052980555279569441.2581092289564252509313088826893414', '5.151538732078254393229534399097e-51'); + BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 3 }); + T('-230601295798682631284071108851165376367326185083060912813945409971432014125737.67610944055117004937', '2759980627394.674745824644987752843648703444381939763379508829430416469000302357857891571669', '-8.35517805849101902114638182220772719501729983601164872340485404304496519183873969e+64'); + BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 5 }); + T('-842570312246603784256854878768113013090390680.4800826', '1835117010332854583781870084893679257611413400275028539694753574598984870187.174117913536', '0'); + BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 6 }); + T('-0.00000000000100684943301409650686603204274713', '-31144152.5321601643531272794334628', '0'); + BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 2 }); + T('-0.026503227279838553113169386052389485374661223774285251294146269277263514377060436706297988370', '-71045451218274393350706888.0027862323455368609062085008505902080395372345116114084151338799957479745433746186733925305567951229335217540', '1e-18'); + BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 5 }); + T('-110419631346006605487521542409376009922843127021.32729252503643353043', '244333847708274713267176368482599559622993490167843827', '-4.51921141428769337154851414365744921974137172e-7'); + BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 4 }); + T('138893.800038647216078219578724974257662781528220275806760809453342527939336259698744105819334031462550443269', '0.000000000000000006348171111337101567342719021981976900938596754527204884080611802666618593', '2.187934093184711195124371794142911460872e+22'); + BigNumber.config({ DECIMAL_PLACES : 25, ROUNDING_MODE : 4 }); + T('-0.583518556009536368891167105653', '-10441784574938354731049901890211616945183846927326453960214418739234414890916007304010255785348300872046501133.6', '0'); + BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 5 }); + T('-7.7538588120693509533017285566489706570750381485420112364801121058765556097495024175321672371025233059644071513855874611523627', '-305644204.4597562604754745015566044566739234835770195994902485', '2.536891e-8'); + BigNumber.config({ DECIMAL_PLACES : 2, ROUNDING_MODE : 2 }); + T('31789997685790129513765060203181448380957005660036613335.44368544620228705185948716548766405754804498731108711764', '-52434089730.1286441452387', '-6.06284915966102621783408308497372568922152725e+44'); + BigNumber.config({ DECIMAL_PLACES : 94, ROUNDING_MODE : 2 }); + T('569876777333896496210397829911575985990203658453376498274111925946243606155.0604438014870819666635730795627745086491091661201979151197', '199620035528203630659934347139027630264446304681', '2.8548075138148172480690662079981736361263912869268405656928082643654167528071203766793714948500869935874115843576114943669e+27'); + BigNumber.config({ DECIMAL_PLACES : 52, ROUNDING_MODE : 4 }); + T('464203469483216305594181907657494380404.0131577756200', '2048.0377607488', '2.266576712499163303328179649892198707410967454841685911989506281906764109714566510065582e+35'); + BigNumber.config({ DECIMAL_PLACES : 82, ROUNDING_MODE : 4 }); + T('1047446033974859.93', '-610168529437812151818980787637.081958441810504970300511542324279', '-1.7166503735286706929530210967953340945869136079522966136115448125308e-15'); + BigNumber.config({ DECIMAL_PLACES : 39, ROUNDING_MODE : 5 }); + T('-118.33066509', '-9606875158.2747354159409455217', '1.2317289768055087728278381056836e-8'); + BigNumber.config({ DECIMAL_PLACES : 56, ROUNDING_MODE : 2 }); + T('-38916180536707971109723954801032296697.305', '-2761.28', '1.409352928232847487749303033413210420432009792559972186811913315563796500173832425541777727e+34'); + BigNumber.config({ DECIMAL_PLACES : 60, ROUNDING_MODE : 1 }); + T('0.000000000000000025459344835883054040696405051913272865874831295085304164847010428416894706100600297496207917376', '-0.000000000000082408868083455992459669242206585971307278856656421299962183', '-0.000308939382714251228962409534148751406407122642268738288023'); + BigNumber.config({ DECIMAL_PLACES : 21, ROUNDING_MODE : 4 }); + T('1608.221', '7042457108573780622242600547019826545691513759236748675875889745320169815672519884725638137576300515921692993080878948', '0'); + BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 1 }); + T('0.000000000005815702621450130899297250913060333774296826828362981337889656145076977693211768352238805403527766702548620501917360720005422693391397563666452561', '-0.0000410389771294771', '-1.417116e-7'); + BigNumber.config({ DECIMAL_PLACES : 35, ROUNDING_MODE : 2 }); + T('-11283729679337191958753450479886227801706907034479328160816332391375318739208071063224069992461362595601882', '12969.8423904513102281564841724235620506702074460180022088158788721958927648069337750397204515848010713511642997', '-8.6999744018821135539847925790643947979489690032352266720739413327073294318035168762931945901643780530767800577835469292594593782001806376e+101'); + BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 2 }); + T('963562926172000437989222165501001948619777097693976.019152224055600155732251799412248644709320568223', '412176.45445765048731626271608246638', '2.337743739971451343920642558467838059208364280737481450784483438693973819066391311731602887641315626777957478045350411084e+45'); + BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 1 }); + T('188017317881037467142744350440647251727837092834115555212.61169097805664040953502697463903428907436616545320956525738548268521889', '0.03430362603533945933717', '5.48097503416527374671169477464124580416386360623089291577202404593e+57'); + BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 6 }); + T('-77688889373197281303709368144116728208944181866527.194329986257499976867357688522213395034508535505986832056929680', '408619346377674.710100303477364202860289496630069330695596842055267', '-1.901253331784045075849928931814210121717387026383480878918888601880392000146415858910823265784124031638153758876778e+35'); + BigNumber.config({ DECIMAL_PLACES : 64, ROUNDING_MODE : 2 }); + T('-0.000598131376898130173273368371', '-33834310680426732.864137084262872986652328820914', '1.76782492348558845634046504235670092482442601e-20'); + BigNumber.config({ DECIMAL_PLACES : 60, ROUNDING_MODE : 2 }); + T('10.07882789313470526436392', '-0.00000025401734936054768178518709450341982916789030441578045976075113', '-39677714.60692236908709650312064312268828912885512989366573740586526'); + BigNumber.config({ DECIMAL_PLACES : 38, ROUNDING_MODE : 2 }); + T('-25761367516448895365422437716902', '-7294379443336532687174200876161368710123746577153289824016319241010661.65837654623', '1e-38'); + BigNumber.config({ DECIMAL_PLACES : 1, ROUNDING_MODE : 4 }); + T('35771326681716.57241202022647225590857673709935880130954808350655811207', '349118337811509482840869951583553281668788032940835136131494252501238463766250167', '0'); + BigNumber.config({ DECIMAL_PLACES : 67, ROUNDING_MODE : 1 }); + T('-0.09624422709388953184652715019078120429546513', '5170531470626723240558594459627185589778150939979586184270820777476797.5956769453369948985727876109875514210900', '0'); + BigNumber.config({ DECIMAL_PLACES : 38, ROUNDING_MODE : 4 }); + T('0.000057884266097199895462680021752066848854688228217', '-4761853299294789852.955408629409', '-1.215582725023728e-23'); + BigNumber.config({ DECIMAL_PLACES : 70, ROUNDING_MODE : 5 }); + T('20728450374669601887839.552320873488315014522133858670895309037684623025097732', '1132688096327184110103004437024774873963.26815201444568485699742053281035020679063787648576003176844763889605228900976272254054879', '1.83002279637995401752873042212819846136694755879267663e-17'); + BigNumber.config({ DECIMAL_PLACES : 82, ROUNDING_MODE : 2 }); + T('0.000000000086774370372564903480577294114866314088427466069062376707737298079241239', '0.000338137223353011131111513637077704972150', '2.566247203194589454868423478287602357042300504761582701917771480785000084144e-7'); + BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 3 }); + T('2983534726729756.75814502398727035291', '232407189512289916975300.944276368684577331714804764466', '1.2837531975e-8'); + BigNumber.config({ DECIMAL_PLACES : 56, ROUNDING_MODE : 2 }); + T('-57415411067167602331063928.20050398168346262738205597292826088263171232118273941933890', '6310863991456586.974151639438526476457', '-9097868555.69925941317721185720709058423706826912790945475135548324'); + BigNumber.config({ DECIMAL_PLACES : 39, ROUNDING_MODE : 5 }); + T('-0.00000015775728458726498306773317209748308498729981829072132370543723712809732386345160025746366490983542448171', '19242719862', '-8.19828411568781289925e-18'); + BigNumber.config({ DECIMAL_PLACES : 9, ROUNDING_MODE : 5 }); + T('11552994563085256986187084346.142302277913480048628672763423906524750187841526866411217768', '-20.5', '-5.63560710394402779814004114445965965e+26'); + BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 2 }); + T('812144110944150119838381673295335582060267859298353045809434439357', '0.0000000000000000031349423794202464326668987343219568331222224557022625230990', '2.590618941756569628392306103273989328011790305545243608100444916082914443451931168413483853055477086e+83'); + BigNumber.config({ DECIMAL_PLACES : 90, ROUNDING_MODE : 1 }); + T('9614489376768900692760895.527073066530251785421855330349', '-32601067987574457100555933941600938282851621206745972.05932516695823657436199460272778', '-2.94913325552198439358718281779388167358864451629725021092083494e-28'); + BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 0 }); + T('-11583534251297278', '-7883365928383773610465677991775637448155254748377729591041178141612700383829044484308620681465778556959039879269907314046', '1e-95'); + BigNumber.config({ DECIMAL_PLACES : 89, ROUNDING_MODE : 5 }); + T('223612641244955642904353401755577586252256232079489239167850500206850757881664490453712619388439.9866968252386670188226025069540843', '-60481932676102623838187954032557013742871278087143283642052995554284640962756152740.025029', '-3697180816665.74394403322603085612547303191221613672256862205285142592077737141641318238108646439426145'); + BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 4 }); + T('-350.349', '3', '-116.783'); + BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 4 }); + T('-0.0000000078925715817074841568218505489212637237837850245467046523569515632845796706869299872723194727515353882743977331', '2', '-3.94628579085374207841092527446063186e-9'); + BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 3 }); + T('95368714741420394016083342043033.00784372549234384294358546454', '3585012151550330759303021666823107542630331906734992426474705980905403008440453961.7841322904181', '0'); + BigNumber.config({ DECIMAL_PLACES : 91, ROUNDING_MODE : 1 }); + T('-2485620832769956808425209188746139311251888822574439855533201630539287597598325860653.28414365674', '241.3782617750', '-1.02976167550950407386792492314364679132750326251886020962427722766265976338801806778951983513045579433475477474984812144647817260966767934212413813791538146476073653049654371e+82'); + BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 0 }); + T('-39833308190442209260.09353105836552704367203454209099943130776671246082562477353686588645', '-4562390593', '8730797457.7095155912474'); + BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 5 }); + T('0.00000000000000509749647074186006528231614714908640308021420659866055767456046470814261818879186939103185920091216299799980890886608080876743163190', '923912437853859095256023537649611274', '0'); + BigNumber.config({ DECIMAL_PLACES : 36, ROUNDING_MODE : 6 }); + T('-0.00000000000000000061303283331263000157056558184702117427444976518223689103457982927186788642884636448192218746034798482034003261983960690948357701483527632814588196145', '1.349016634998595471349205316201900685818511461958790386', '-4.54429409844355448e-19'); + BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 2 }); + T('-0.000000001125145029887940635965123902335679328124477202368746008308468242235158851466733207', '-149242808842832237.51452433265921089167595693212751981437458634433350017668814156835361282628', '7.5390234116595331363755680397164907341667188430847036e-27'); + BigNumber.config({ DECIMAL_PLACES : 98, ROUNDING_MODE : 0 }); + T('-1067698823499635663628797160629920191921919332668840833079974729.4592792194147191454910492415227008133926462', '2986573924530388563776047596678868501.078041067258658328747831898425248466411204698171209735', '-3.574995464636026175354026069188351714579231839156305431953167715148767959230683015424161196084094280821534908951785386901092e+26'); + BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 3 }); + T('-131558573136380341351526263881272015691105162167477.43641577', '-21028836019557051563771351115247425946031595498611415211335954724493007138746037794.5902422656034786549274717494663973261907892978493002913117916917673', '0'); + BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 0 }); + T('484912688854430445901238078539.9327388805215', '7675343013.208368630074287849959404386587228380884784634212253665072295641059597176646', '63177982797635540171.37420635'); + BigNumber.config({ DECIMAL_PLACES : 92, ROUNDING_MODE : 2 }); + T('-12489030880907701606924229137856109508824645513538011.4866636311446461213479265402263844866290245240119778', '0.000000000012635859212', '-9.8838002793250032983386085687388628280520964651738883956976705389443692924287230705055806133213539416395010717059895016500441837939654942081353731372992445e+62'); + BigNumber.config({ DECIMAL_PLACES : 1, ROUNDING_MODE : 2 }); + T('0.0000000000000068486422494524596969719924543', '-0.0000000000000000860530227743174154892543321017696403856276705035877305470475366175730095253824587965', '-79.5'); + BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 5 }); + T('-7583869705359432525760481762644610763035183738780200118821468808036843413330936716113850064916779065729143081765539679358825051304836745850.6', '-0.0000006055982309374903162654476366299493807077266080677782248313129886619903156891521074690993808095640197564654707619837534400871511071579', '1.2522939001356226686471860751979813853162302842384027385533502758473626983036115201672725792177064268800542320082925102987771543970384192138191248037631285529883852e+145'); + BigNumber.config({ DECIMAL_PLACES : 90, ROUNDING_MODE : 6 }); + T('-2324158705657062571504768932244003687791982053032086887435609400349623234.8847490173933459569044283100698303779486', '7947361216056610348892930352280110458365416285971299474457628074690297636141245156892456233813439323211882813717047908148127893604121840938', '-2.92444075772144595364474e-67'); + BigNumber.config({ DECIMAL_PLACES : 33, ROUNDING_MODE : 0 }); + T('330860553574997611420845241615411032271.580685318332472617576015516495972857272447322507213797761155935319903525405236867', '0.00000000278434864148915656819429165228781824741971614143838388587', '1.18828708677101248141214779984169455306527259694791290514596002265144928984957405e+47'); + BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 5 }); + T('-0.0000000000000000121020668919213362550711754611616886638', '-0.000000000000000049375156639', '0.24510437466364'); + BigNumber.config({ DECIMAL_PLACES : 87, ROUNDING_MODE : 2 }); + T('-394802176170946185383623287716098305655356865182282630086828.5964628406385145629597276869513411714693556446431818475220471434691425179044277034838', '-0.00000000026746586998637309623288792', '1.476084317565679106389290357424595824168694787489557585159991218711391385243481240043321664965214926198007610749846626169138875626812596915597784301572627506e+69'); + BigNumber.config({ DECIMAL_PLACES : 25, ROUNDING_MODE : 0 }); + T('10.4', '-61109341288178920361559650208577059902457327675126037235513424500323768453228146026659.5878105570337704702103', '-1e-25'); + BigNumber.config({ DECIMAL_PLACES : 62, ROUNDING_MODE : 5 }); + T('-16361357720439859515991210103353300934432258144405930670633090423823', '385748.287755599110761', '-4.241459583822190406083003028241023712304490745393782567275050213693077008095405973640051052432256215016050136707300274703155e+61'); + BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 1 }); + T('-86705405.255842516299401932228291720865', '56640479994980166550590540661976482821130455927516362968094944322340974875957471148423417325066529533995371.3462406278132009081978405932425088209056', '0'); + BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 1 }); + T('-0.000000000000000094914', '-137839741941703276714729.323085324892718177', '0'); + BigNumber.config({ DECIMAL_PLACES : 85, ROUNDING_MODE : 3 }); + T('60455124150058896265786012923520033281598.78998030686', '0.0021523827516723502651678484010701159886163599243977186686131893032242096226863503971597799739241221486460582591097338509479887173743585631534', '2.80875342004514303962666735157334054635296243757109157067891469696250405517688687660013099745158145798413670468674921462694333819e+43'); + BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 3 }); + T('-5919427358277736121036355510363929980734158554498206', '-0.00050337563645548537163555889565612', '1.1759463370057649309214690061769196099262493416877295782378711895907257439993109937747833453695247307759245320841939666397716819524e+55'); + BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 4 }); + T('0.0000000729423656823523161763149207076345620182644168427894042787797012912731740507538998522001444213', '-7257094262641984828367782787823231874022685970775.12563012911815916459640884557517', '0'); + BigNumber.config({ DECIMAL_PLACES : 50, ROUNDING_MODE : 6 }); + T('41454575815121550945249311651184611690694.79913841331976343412188746472269', '-3200381443148112294922788210421014186475008201856838957.897657078709224585556728313319365060099241381051762595', '-1.29530109305795805322575761019374322e-14'); + BigNumber.config({ DECIMAL_PLACES : 21, ROUNDING_MODE : 5 }); + T('0.0038649725946740304936644001354450316452925391', '873644820559845353883954013774352313795619130308608659936964087919658936.3765726', '0'); + BigNumber.config({ DECIMAL_PLACES : 27, ROUNDING_MODE : 1 }); + T('-39380858140905900403039619284673213946855305695.49283157048331780783', '0.0000025661629', '-1.5346203524688904357178423585140761697885705422478374841473749701482318211365303e+52'); + BigNumber.config({ DECIMAL_PLACES : 31, ROUNDING_MODE : 4 }); + T('1819197663957471386300657897690721503401952356057608245592494045176595405462249961528464032031032015078641', '-6657150166644585302700536.2593980027370484802132928884784544640921459772735357204016065961305999', '-2.732697353099373860882510376433695374553785919029713342177411174901743822440081364060822427039104225620224778168e+80'); + BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 4 }); + T('-437210.0040882405119137212856092357997132509560463755042436533856183328172199610437076429802232051886233820671923098242562931012214927104557786295', '-0.000000078910911692107846719217617946420187723860855364977370954912695662426156352492348548312315002258612', '5540551930183.407030727075237'); + BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 0 }); + T('372890080685858653791897049490719597078914761123261687954344045467510', '83858134146406399034530033386323890867261870710050374409850683224382501969089447382261002756360912920886906350.392630718449167908115', '1e-18'); + BigNumber.config({ DECIMAL_PLACES : 21, ROUNDING_MODE : 0 }); + T('12012.987358266093130258964056', '0.00000000000001474962686582364625240831800934374536576500883104176098826397051575455266411752404100168850259065089232372355634', '814460424493949790.091156618252295069546'); + BigNumber.config({ DECIMAL_PLACES : 7, ROUNDING_MODE : 3 }); + T('-41414660318908334595689654490453470.7564694125513827283706590498180415906833323210401065562381722595732070094746258542216964188761695276', '2145398530225886920232708565246589418530838144185820004.68', '-1e-7'); + BigNumber.config({ DECIMAL_PLACES : 31, ROUNDING_MODE : 5 }); + T('-1130924704242056012035837690878098284338180004218796434072.66974326603183473779429828776647877764258010306835905546', '-265757117331641918530768430756590909287777877780654167947006623461453966259037320614699138149641422190822683223340030806919', '0'); + BigNumber.config({ DECIMAL_PLACES : 72, ROUNDING_MODE : 1 }); + T('-4588.1925442043', '863447601549324043065532673831998405845285228974578665227645766290170863.2030322709793216613222988785114827410963651195713781145023', '-5.313e-69'); + BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 5 }); + T('-0.000004509022482841480424627317183136893777310912377293389091294708900407185726477457642860649845324817864813234873826655348443838', '-89614218054668846271654743413464030769218741689857702835170614842564565478.587308139851769991297516306392988850870848647896160655995714431207976872', '0'); + BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 4 }); + T('-2410.41', '2892050006077318614173832.836587226318414081034320363', '0'); + BigNumber.config({ DECIMAL_PLACES : 59, ROUNDING_MODE : 6 }); + T('-0.0000000000000045621481849548325001418900905909585251735259336553615288352493594048801397', '0.00000000000495380040070865399628832449529636589128087028242937324760231897728877786675113319670285338494203209262776532652', '-0.00092093903991412439006804009722438948506568506335922341009'); + BigNumber.config({ DECIMAL_PLACES : 32, ROUNDING_MODE : 1 }); + T('1889965641287467460605353585809007676852655515492287271970671.92', '-872540642268987950148.40330774513868729000074986271252895505805', '-2.16604883455368767186597041313318871847793456249174819460223460987219195e+39'); + BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 1 }); + T('453168756013294702791780936116383819338712265758', '-0.00000000000000000001703576853626528442876796272592863047189717967103246543141068505181358950127191381821131519024957914097587584926194882458231864219623435762974766946', '-2.660101627047827526234592323586601021537755776148906617805742448861452674889193803229068376798406303532428574864840806318986515350355248e+67'); + BigNumber.config({ DECIMAL_PLACES : 77, ROUNDING_MODE : 0 }); + T('0.281191748267215900387851412002796180529424194708369219618787534241641927302840921591590699686487262437912311492191253047679223717038629398067060', '-736823256514559562094254.92461890400692007068515177306', '-3.8162713484011694793905318647490767069533087178909746e-25'); + BigNumber.config({ DECIMAL_PLACES : 99, ROUNDING_MODE : 1 }); + T('3840619393321571903696669805269490076853531507895686473256344089016810829967129561480080890216396664625065300119841824271269406520025', '102172.78', '3.7589457713899650216982153223877142981266943190698016372426629568235403108020840398784107569710804234014825671963137581959396685888599683790535992071469524466301102896485737199281452457298313699597877242842956803172038580138467e+127'); + BigNumber.config({ DECIMAL_PLACES : 88, ROUNDING_MODE : 3 }); + T('1892247491641900606228794628270696213035658424492967998934163234332192991517343447153747403277987998711948422992.8183708552424749795191945092', '-244505466618807008712853320517611846387936179619142959452870395575986399.050340202551610512633848260213360590087334138150506', '-7.7390805114062494814637570263377044612370608350798535119814354463968478114343712347541731534774816203430823292900983341989240167e+39'); + BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 2 }); + T('2295381812038943850502.324', '-253779137094126721187776702581.895891744352896517020905474133325281', '-9.0448010751474278262007767239558082785217770867577559e-9'); + BigNumber.config({ DECIMAL_PLACES : 26, ROUNDING_MODE : 1 }); + T('-5695943614.77072609944987', '-176532479661877276147.9912373264637178949262666646514566005927690534500079605735234199101141069403355519979895408614', '3.226569765337512e-11'); + BigNumber.config({ DECIMAL_PLACES : 24, ROUNDING_MODE : 5 }); + T('-27584738609667485013722216661.8421350233359390210635886470920620796816370800366533139814805753573380984948', '4313107568442504734715067084549266805421558688193581510035', '0'); + BigNumber.config({ DECIMAL_PLACES : 96, ROUNDING_MODE : 4 }); + T('-2555742210398264587305957454082174995014909.3900530099814369606374837', '-0.00001440', '1.77482097944323929674024823200151041320479818753681248710900044269701388888888888888888888888888888888888888888888888888888888888888888888888889e+47'); + BigNumber.config({ DECIMAL_PLACES : 31, ROUNDING_MODE : 0 }); + T('0.000000000000314944695132472241453869823257342603122172592363685042887405988618869983581296798806139236459037902793571160951361312344558248775', '-4325.4336', '-7.28122829425638e-17'); + BigNumber.config({ DECIMAL_PLACES : 35, ROUNDING_MODE : 5 }); + T('2372983283183260603073328946737270500842645483514847068961453233913956606640900074365120698178842980420863', '4.264390312970053218050821223418104420963791650352392308523490460052', '5.5646484234003674193443140692245726820653101384942591564293156359613261141751452349867413237846987898668588317611130126820465847686933141838e+104'); + BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 4 }); + T('-4929737321564416946794444595100034584584275413658668225267555783372750233317098821588418499', '28424.5505500279699822525350080435474958567777045000729250347252638401490401918318893925377023852720881450800154637429835312060509335334460', '-1.734323753998483556086516853465012393861506598300167231474336706569606213704384969174734553709154637e+86'); + BigNumber.config({ DECIMAL_PLACES : 32, ROUNDING_MODE : 6 }); + T('-21761034747572684690940063300423799039711372853154062067483292390919972513.128461864192183766012455023397983865176796343513765704515560', '-0.000000000000000370518717601007734760218875634135874385738169288508545052430993920619674833347596206435018730919635286496687530863892283219235', '5.873126974115787328556301649295695597865740591759543814911655466898584785840651110993004783773323892447812676985881696237e+88'); + BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 1 }); + T('-0.0000000000529128815853925126111888246377363492558042670403782845160556805724033452691946651390343077935752291223303254497743198268934438129373549547732', '190796845584739495286083824726789854300125556149509941677391175737424747877187365711691200873797144752399737466401564047525537368619366814232389026', '0'); + BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 5 }); + T('0.1738288617078757424969996650252925445723904180162162644658038108320637527055349684164347129085119473', '40150435051330116187710586057442183955103686265758761407957348994528421914113', '0'); + BigNumber.config({ DECIMAL_PLACES : 100, ROUNDING_MODE : 3 }); + T('-2818021876.06049744914273', '-0.000000001255994176045901959662683145025352204805973683344595325551280381851348919327804825422941616667063462747364903546976156151893968477515151694091036435671', '2243658394127385772.2399616417668729072667716977061852452476766052844368573039742148337572714669721107189733096726223487'); + BigNumber.config({ DECIMAL_PLACES : 74, ROUNDING_MODE : 4 }); + T('-0.0000000000000000000798739998076872124738417560415802504246249107273298126348402299690351215611460652085120914256051181363877348346676552311861855515', '46182994916067780015766084495323699010504604.09567815372129601618556544089749998205672086702635417005840603957254140819968739', '-1.7295110452e-63'); + BigNumber.config({ DECIMAL_PLACES : 48, ROUNDING_MODE : 1 }); + T('-0.00000000000018278570237602871909777071990589057201', '2533783600.22686301', '-7.213942909712690186846064e-23'); + BigNumber.config({ DECIMAL_PLACES : 96, ROUNDING_MODE : 3 }); + T('-23635856566188883656725779.261087946565827087612147083445053753', '-0.000015983055409', '1.478807146778682837808197406411678327043900671754661965274912036688916918213256505141106590528994893256707723148455738423073873e+30'); + BigNumber.config({ DECIMAL_PLACES : 78, ROUNDING_MODE : 4 }); + T('9675925041663.288671218488108323029451158936618138578', '0.00000000000000019145059354550346438348756476', '5.0540062908520263838834301351259547717147667612660420461717525400109588153798536731552786867471188611602627e+28'); + BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 5 }); + T('27530734744572553145811394409155751285114981369827827050606790395212699176195816502875540648483743', '10018638440069269682362497.5296', '2.74795172111053878923517565227297764074667648991325127688577578258955262100838901555647e+72'); + BigNumber.config({ DECIMAL_PLACES : 19, ROUNDING_MODE : 0 }); + T('1753543712820093784913450707262591849304835890313674574592777278930623364571260530603857542.4236', '-418723139520592512428', '-4.1878357017187384892049546833395312659786498094293034760966309470263223675167624157719477e+69'); + BigNumber.config({ DECIMAL_PLACES : 87, ROUNDING_MODE : 5 }); + T('-183691591904659333.339525462569802158358640667215860831779055844371698407987', '5571790194707557578583124091999072068420790617488114407485574879343772879636.5578258978128192695105710627695803', '-3.2968145871526416609414243846e-59'); + BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 2 }); + T('-1339912.18', '3181724877175664388202135340557380053309.6372658165999319399125323931357918678887932697638825057102937395296864993629927588640544725548279185663', '-4.21127605850511403837900068294021511687794e-34'); + BigNumber.config({ DECIMAL_PLACES : 50, ROUNDING_MODE : 0 }); + T('28291.7789788', '164513902542210734619823233869308585615437864478107318378622012226.0637862143099668913711386819475125439510804551009962207503163661950620', '1e-50'); + BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 2 }); + T('4352123217.5125039454242550283437', '-8.5571089855709125117416994669008071143304642667730834779287190411862924930833429021927127165224334637039644012852088175', '-508597380.8269942628609'); + BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 0 }); + T('0.00000017280194538643380427938241203330369357202306777699418921781472580047363492702741507862927802298171165219765', '70198248850625050655990271091780809131279636646410342739025918526822476835014657892897365995822005281543632450103200002855646347949575', '1e-8'); + BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 0 }); + T('0.000000000000000462366653119210200754101536012131893385', '0.000000000000000060263928158724437406735', '7.67236169'); + BigNumber.config({ DECIMAL_PLACES : 70, ROUNDING_MODE : 5 }); + T('-18261.2123919216000349573172534364099590430911319328288424188440187724443811421013387223457238536215926225022443140045861926293507393814035703', '-140319509983436944302669669.22959469450941740188', '1.301402235090267903971468121955525131756831209565e-22'); + BigNumber.config({ DECIMAL_PLACES : 38, ROUNDING_MODE : 5 }); + T('-472475346818122468757665022906424104282086514700546139294778422104033911157201097185232.9356094878445129096993717075115024401337423343569832676', '-0.0000000000000004866153002299724920226970875', '9.709422342347897066545280432474293134156576409161562172783895377093807646331921987845386179891007510935026172502905186314192871935707338193e+101'); + BigNumber.config({ DECIMAL_PLACES : 90, ROUNDING_MODE : 0 }); + T('-18391179105879192585113220019333608029947244529.44652382528440055358228582356376', '-131856.225044', '1.39479035591547649867005698253422296192664877953007294083780114392748319544889397068851823484029819348329500170913447525741073725321e+41'); + BigNumber.config({ DECIMAL_PLACES : 52, ROUNDING_MODE : 2 }); + T('6450896314113636045.47096019696529028907229538', '-431908.8200970344', '-14935782771614.5072603449252406146201767873137666360901845966631813'); + BigNumber.config({ DECIMAL_PLACES : 27, ROUNDING_MODE : 0 }); + T('0.12205908631751491295961258226918082044380232821819630409', '256278517003835644401361472618.144928103006342169734856778810127134997704942359589946928195523242347769590471009525560528282944606865058637605240700', '1e-27'); + BigNumber.config({ DECIMAL_PLACES : 91, ROUNDING_MODE : 0 }); + T('0.0000000000000000406425098059398281508518444917684297358996203687406103075406950878391785627772387778578061805193849419781', '6197978318930058354121079353391.356270123951020905563904056655371685259878584579853787609139742190928595107285545069512308177337377747424', '6.5573817323316877872201363880688482034050776e-48'); + BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 6 }); + T('0.0000000038480677023934917705398182426209', '-6669689628206425960506958408211403952828561513641383982126683688644654333164720823552653985031621158.891769852084720550', '0'); + BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 6 }); + T('-6', '-6793365827756549193323796860313499.15', '8.83214617338140399504359557075447443839092597350907e-34'); + BigNumber.config({ DECIMAL_PLACES : 7, ROUNDING_MODE : 6 }); + T('1408518677090.220167896131480891051094648589004373065909215871954', '1911711346095095923944902803491781359370106605817791906518095.504218912499767051381623040172453209730092773055639822964346295', '0'); + BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 5 }); + T('-132797007578088940349926211760241414803647402421376896348997.23792892159645', '-1701611827927775516564614973063779810105086000983882827308815123378.912703618670806447441030040099430523', '7.80418926329451182750361401585051547668455844772811334047553570784185e-8'); + BigNumber.config({ DECIMAL_PLACES : 91, ROUNDING_MODE : 5 }); + T('-590884861242163293617093.7024642253223740276992787995660007437880', '-0.000001042308695399276450393851409116010874384694561153002962237741039042501567066057521316448629055624780547030086947926312392019625361821', '5.669000593109447774561219009958841393772088394420613441914214578498439067447745711711104172222799598120242237250785925636e+29'); + BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 1 }); + T('-1447472364909393408577030447805951858384942637', '-54508619973776022181790674.1711738879483079027661870', '26554925910906737257.865651374015548'); + BigNumber.config({ DECIMAL_PLACES : 92, ROUNDING_MODE : 3 }); + T('-1698282253323721125622279589.08132160264778', '-36588616017.336159354547769118704090', '46415591464816625.89950467791588764198225854888984659204128685329179391195181112277308784235988205647130513265'); + BigNumber.config({ DECIMAL_PLACES : 30, ROUNDING_MODE : 6 }); + T('-0.0000000001728346681414185953835115837332393528661230771657299247831783196382015218634433005619336173179480399892092671637927785667244664', '1383965881.8', '-1.2488361918e-19'); + BigNumber.config({ DECIMAL_PLACES : 35, ROUNDING_MODE : 5 }); + T('-4200.655301241575', '-0.000000000003291749081743256944461923783605118923797595707726863855985331722143509605373389325015410154615732', '1276116495190750.09745770589788051603719885202408563'); + BigNumber.config({ DECIMAL_PLACES : 1, ROUNDING_MODE : 2 }); + T('877038807529.783172486', '-0.000029209862891093207595413365024177509128219463737317144089467908137420440648512427860174664', '-30025433902232162.7'); + BigNumber.config({ DECIMAL_PLACES : 78, ROUNDING_MODE : 1 }); + T('-4.6408633251187', '286479092605471083193073918698008180482239006030252783557309183848433607004260792891230391548122.7823829749544423447444227336', '0'); + BigNumber.config({ DECIMAL_PLACES : 56, ROUNDING_MODE : 6 }); + T('-420332834811837519083151310779822.674520517011425285434915490010798556682722514686372849111363615703534', '-119372093809512401458364321778161263935763724902835.69976360734010871610858783314726459546649469292009', '3.52119847610767522253039707960588498792e-18'); + BigNumber.config({ DECIMAL_PLACES : 36, ROUNDING_MODE : 4 }); + T('-503265559715361658183921070977047895861177537026026456.109010394162', '0.0000193627364272292518121424322', '-2.5991448140957699129320512332375913453644658627723198493046925506570999856031259401970274657799e+58'); + BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 6 }); + T('-718740639593637440650569998843587880832228790327991524480269330285905900765.7553786602112662963770525293', '-0.0000000223532388156215347002372187473397195850067720560979370528409860479426378092382492968866513342888989186813893183200510613958831588511668595170632436', '3.215375836683435729143752908778275268383734423571405894740894706182122467630835805745819338225351859e+82'); + BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 0 }); + T('15919129.761571574442700544984542588386223768822496273633714907581964890531644168371312042732204', '-11391106082802056.177820844865101395010096479188135272401778080252913008122776891526790', '-1.39751e-9'); + BigNumber.config({ DECIMAL_PLACES : 28, ROUNDING_MODE : 1 }); + T('0.0000085600717551026795869429429343722866818966395448334155574126290636650121748943963191466064495151249911159090570604721962959493346606872796618273', '-20281610814854557999097269', '0'); + BigNumber.config({ DECIMAL_PLACES : 64, ROUNDING_MODE : 5 }); + T('131977712013758710275585422995136772245460579344.8993481134', '-212818196441274972834262534532930203096181143190471914219945641669731308697988948532275323902939404240614', '-6.20143e-58'); + BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 0 }); + T('0.00000000070676459140821697142817934837622264413789864469815713676245717459192837442971756953392484226804353805992171088', '294614725303407521512.865852425148708127118528745039606260252144109322440114', '1'); + BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 6 }); + T('-19539376265352952757542646.875375665421754785138638245258349740095637', '-4019709446983400741462046003126425681656527577169108611440961983729973333374593190790505052551972072130345000734988733070851.872292165009202108', '0'); + BigNumber.config({ DECIMAL_PLACES : 38, ROUNDING_MODE : 1 }); + T('0.0000000000000000007561234954961080050633722714187119744', '199373925591174867153218862608600168609366436830371491017392311675346692689691839738870943992670941223084334019596882033', '0'); + BigNumber.config({ DECIMAL_PLACES : 35, ROUNDING_MODE : 2 }); + T('-128298154020104176451531500186484300024132654695151917200818949908639571998471784180307267585182706454784622128226532979088995574532696165', '0.000000000443354899283588936652619267294663168843825983520909084201176620380223190447785', '-2.8938025547348048479226089027796572991789582389568685480052735464004698133602112614940908387407001993590568619301937067062832523941619422261651454208578361981242657638225443184931394e+146'); + BigNumber.config({ DECIMAL_PLACES : 66, ROUNDING_MODE : 4 }); + T('-843919557133465751446790586000226211580634781.8357483272722173434588169966498670918397654653934539459854951483221431386642465994284', '70034415.278623319628438752687950698005396341384886586801532577403985022211340601119987996696748996231070239588849449239144047229936071714710', '-1.205006929487503312130170074289300991689357468539547863091483694640727735272757699346713785308038760543e+37'); + BigNumber.config({ DECIMAL_PLACES : 64, ROUNDING_MODE : 2 }); + T('100901.9733615553273', '-201226503873.0056976868225638569100371875796147830855791027270519481558676022991', '-5.014348081365797167297948455069034074781065192103055317568e-7'); + BigNumber.config({ DECIMAL_PLACES : 23, ROUNDING_MODE : 1 }); + T('2185509476186193976476236444601120840637672231.456972175916243', '17078841521730582448797416.1348671910989474552473005821932271105320514992112534243771176204', '127965908776975314465.14597896958267934913124'); + BigNumber.config({ DECIMAL_PLACES : 9, ROUNDING_MODE : 6 }); + T('15647.411671367548270936100581196549646878636254953620208916953892648092855965022422928937005171', '657859080531868266652575163546476845742007642976608029557287829321150761791174807914502468723877871807128210385430721558259', '0'); + BigNumber.config({ DECIMAL_PLACES : 21, ROUNDING_MODE : 4 }); + T('6218218196156610.479944398920633145718283090445629229605963564515717383573301858136594053085442738204555751890652557571914754051153724128880885', '-0.00227638385362701198988915503005665906945025452190948795341724419090807930977738985287537088037219', '-2731621113130365931.381125250298985420736'); + BigNumber.config({ DECIMAL_PLACES : 9, ROUNDING_MODE : 3 }); + T('18324964603109953.1163476979058181', '321600514724219251804651628897079178363374739602892807118446489711142934604331244130586732142939.4647', '0'); + BigNumber.config({ DECIMAL_PLACES : 74, ROUNDING_MODE : 4 }); + T('-0.0000000000276771889943352608976901953339522239882950165675081930010870226838224396', '0.185461366631453934267511690392859410170948689453367173967962195436705541199337', '-1.4923425561365003136538631417892207196116550900382828714295993797e-10'); + BigNumber.config({ DECIMAL_PLACES : 40, ROUNDING_MODE : 6 }); + T('-2466348.4', '-0.000000058622601163072624633393966377309533289471872220745058713', '42071630242732.9833712403637446802055286788851079998534'); + BigNumber.config({ DECIMAL_PLACES : 82, ROUNDING_MODE : 5 }); + T('7500046826932982536787796.8043713713985004174711286749227848244678', '1733234.96442639227196567268762930', '4327195666408158002.8338323040764618434874465533058375322047867728565960041098650697742959068730580953'); + BigNumber.config({ DECIMAL_PLACES : 86, ROUNDING_MODE : 2 }); + T('2183260098757326474321869599229.9638303553687602348196802744272160921854211920592502212331209', '1243856652233713967422651273546182917195982.51197260', '1.75523449172107949421864358033410249400625452303716723173804599075162589353e-12'); + BigNumber.config({ DECIMAL_PLACES : 52, ROUNDING_MODE : 5 }); + T('12929676.38209541477994771901774848256324688104514698097696', '-138214486183191079184253392392467034619894009052172102200211912574644783047595398295251.512899180092115', '0'); + BigNumber.config({ DECIMAL_PLACES : 38, ROUNDING_MODE : 4 }); + T('-424059582917507499884433612600401977628239624.18274777', '-5277.72913180397245831', '8.034887208630965636246243719527896316953239535951297778143391326854211891017316e+40'); + BigNumber.config({ DECIMAL_PLACES : 53, ROUNDING_MODE : 4 }); + T('426152213.40873786736352916197808', '-2757276145.138176463942019897552966', '-0.15455550731114091362818891934919369745035508020805219'); + BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 6 }); + T('0.0000000000000038217663585091307293590381', '74567612397014152796.99581455716974', '5.1252363266792252220034125739415901045092179113e-35'); + BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 2 }); + T('-305636263804921543022341715022100896164734554367656410607052185540656585843997.765306320759234861824222722689967858185363762', '1623413941844.8092848033119', '-1.88267610574788896420488400269727736260775847848662788465722368125250685169287203525838917354839721585720330490870890824159789959047770663722e+65'); + BigNumber.config({ DECIMAL_PLACES : 83, ROUNDING_MODE : 6 }); + T('87942.865445', '104793948401400040302571994912565224194061969756796544296236980540194230254746.80', '8.391979383e-73'); + BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 6 }); + T('776840698021740039806762816816872348656324347091831898695969961991462149507117612390142161282.1653768037952714605661541111885036281', '-16172748219127975263940729848368583364374580459090634000636139706780939015861371915.09500704', '-48033932606.639'); + BigNumber.config({ DECIMAL_PLACES : 60, ROUNDING_MODE : 1 }); + T('47095012065726011307417335907012751959524942794714112221907715739961716166309275.16497012213523813719418727309317419958331373001', '0.00000000000067248144935870176704051772559991208784645061252866075217397512891140598198919813862137173221677873526377828856026', '7.0031689514464986423359090219717723853721214893756358432888292505514066899200923039123867705876470436047631369105377740265789600367951175515936768289179e+91'); + BigNumber.config({ DECIMAL_PLACES : 85, ROUNDING_MODE : 5 }); + T('4710530214890381370276579800620538761177847584623583448617839732450139121804', '-147616758473374826828851587343791481465215900415842328993525561197826639880872', '-0.0319105382316060339224807086317037923016040448952462317561753805309673424747818626928'); + BigNumber.config({ DECIMAL_PLACES : 58, ROUNDING_MODE : 5 }); + T('0.000000278200129486982077688649271481571260509854740782714876539836790025938358311', '0.000000000000000252909979128753340269124880782612176600424812163698540567255360265224242218771207153316039138784961398652914905155828749095593663889994006049007679', '1099996648.7892272327941351901883441557717512310930206254292705843067'); + BigNumber.config({ DECIMAL_PLACES : 31, ROUNDING_MODE : 4 }); + T('-3165462945043449825822697770173873801013', '-0.000000000000000000559089342606676757512810461453126381542470013180847602350714641444372036204185074951205986112031426110205407', '5.6618195050632096057165840473322988023200165281880374735653572833787186852205013065308132e+57'); + BigNumber.config({ DECIMAL_PLACES : 33, ROUNDING_MODE : 4 }); + T('-262429733692810207972645037144400.18269806103689', '110033413673906528545769691721255999.406368311361429', '-0.002385000382434223681365443460195'); + BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 5 }); + T('5213379032418921.8', '0.0000000000000264675185669630528861090418602094343870859301566265134428963592318723379747899679393693690958264490140098', '1.969727165479841778395949688752678132716083506911032610296299084980225536183461145035291112e+29'); + BigNumber.config({ DECIMAL_PLACES : 2, ROUNDING_MODE : 1 }); + T('-2236796860017822677036286909688240244682842748105504673512925531404527284134033477894225886620573808344252929159403', '-0.000000000136393998351376511719645635269388412449720942729207758590290341887036848011273', '1.639952554404494102088386417346975718433527554531410172228983218567080475972061304927175860610465118785193152751004073154230056e+124'); + BigNumber.config({ DECIMAL_PLACES : 29, ROUNDING_MODE : 0 }); + T('-353294560586778145181637320.920664427927685483540489865359547', '-11440419371887358998629655429786795668646167348160026994881761059011238817402656120075565.452943242502601569758041', '1e-29'); + BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 1 }); + T('-0.000000000000001477376383378754834999381638465885543873270974437045233067902339463097874724054585824664003739542997850789686186258897', '-750257596591194896760725709388346524334189578568310794940856716941291827.154063498104', '0'); + BigNumber.config({ DECIMAL_PLACES : 94, ROUNDING_MODE : 2 }); + T('22866110851600356915197767841862317221498636583609951091122365228465381622784182673719955.762216878558951', '3244540191694802958857712.162', '7.0475659109206846830966960354624130300913036527250327266345842026204020975929256857716622957477137929033200652171298089486537004211007879488390083991205634127e+63'); + BigNumber.config({ DECIMAL_PLACES : 55, ROUNDING_MODE : 0 }); + T('0.0301241657700865517241455145898807840960061286158190134771938997287189891336704261487445150480999772482991', '5214673821583031951476391179363041242596704869859858115848572474453289.7076117703318753', '1e-55'); + BigNumber.config({ DECIMAL_PLACES : 27, ROUNDING_MODE : 5 }); + T('-2109247614259596462261104154037710034.8118633945841888040142011292353494685949644320160729063575699923835624', '5564588430118519605437541058812832442564871117702632074340959538752166301566932366470175090929575395276087470139854820', '0'); + BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 1 }); + T('-12495599787027704660395044587542386281629884014618025485933557.5356936686795029718495623556234410602257435149070394722171923443103572129665', '8.3418405831175531566609189025648844027', '-1.497942769646862329558576775763500083835492309824060671140650026458127671289048e+60'); + BigNumber.config({ DECIMAL_PLACES : 19, ROUNDING_MODE : 6 }); + T('-6180031466962071416984693901620893946222715098068634438275786.202095455277150189161450660984327458412445725163', '8244204.49927', '-7.496213209545317539468486112883412138142866524178365171000800452704094992e+53'); + BigNumber.config({ DECIMAL_PLACES : 74, ROUNDING_MODE : 6 }); + T('-137253440641025747708581049786105390865287089352987718766633682921586.811574722902566767075663921435484548776831982025538', '-6523941909150.6993143270831567220247575410360173605953571356142335551628703309802', '2.103842164022176182023934114545642548562175441928005779467112545165684329700005415352595605350561965332552757982929548425958227572e+55'); + BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 1 }); + T('-4165494587924624849546177349771071835027598328578240377.4240162018756639096756752853356052697859975974337308943842128108922477811014882670', '-172424234368962791956594727', '2.4158405592865049774748458477501160510327372601190215397634596612506304490787184143867728540352248333915351590364e+28'); + BigNumber.config({ DECIMAL_PLACES : 23, ROUNDING_MODE : 0 }); + T('-2916194358790793748898617610079310564.2186861795', '-115837440673706918264621131113267068002459561', '2.51748859594126e-8'); + BigNumber.config({ DECIMAL_PLACES : 1, ROUNDING_MODE : 4 }); + T('193251171594020881589793807041776404775969357399045403556625230079459931.346633134861296746184020663851437287163504617087610577194728060332714220386', '31730278802310092089786310690.457828758669228337957197427153110050322113084658820753290356126127083760756700405541415', '6.0904340865719534107289036145051050895212278e+42'); + BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 3 }); + T('0.000000000000000000276239841509500540675216476212', '0.0000000000000000002047828473753414442566556610560196982396419464842721556757755317854235892376563808430565208641170660276', '1.34894032898755103925760363733943868773491371994767801808902220616653851248892194'); + BigNumber.config({ DECIMAL_PLACES : 22, ROUNDING_MODE : 3 }); + T('224651620300431636505792537643599012708467099084801373094962622700759738677436409866260582748022310704030786577703815641', '-0.0066805684041666466359904650227745786004054235142965354005566220331912860200763605067655193391533215030524905', '-3.36276206917239592778149757849243713734324410400943767318036544487399178832022185895841600254358259100728250836619547719389983155856391854740459e+121'); + BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 3 }); + T('42323448156024821152475613027193905826841455573105120602956661894.72517130154846768153348728741130739577095', '16128690281486824.08571036282540824142003942384354643373591662239551428402612976639671736835787340626002', '2.624109423479067021808258190546466725373963253821247012578250624167785203029270785095406864296817560595583925953580754373213850245877904131849442e+48'); + BigNumber.config({ DECIMAL_PLACES : 74, ROUNDING_MODE : 1 }); + T('-17260355744028898102536840251428727.47167067', '584813681248.65268', '-2.951428172332735296210773054759418636496212202657535000383311484056900119295387196738446790702384e+22'); + BigNumber.config({ DECIMAL_PLACES : 53, ROUNDING_MODE : 1 }); + T('6351.102', '-722457543832900.8959669257551893317038692505171023051335267221678929', '-8.79096917765587492179148479688691152233917e-12'); + BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 4 }); + T('391260775279904506743696126065386641.59', '0.00000000001211721537826195346423931590711810292741787138412158', '3.2289660872234610718256524076193001098974866804053393534890149668394152381149166140221132895885314238326241867228211778809596955e+46'); + BigNumber.config({ DECIMAL_PLACES : 98, ROUNDING_MODE : 4 }); + T('-216805576094.3459931437568298361', '189836620399483756266459271154782254859777972784322384879244638098502745619017524990605375423805.391793092702277561096789473723751120401', '-1.14206403189285e-84'); + BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 1 }); + T('-101635158639251759816081198995530080536806974830945335098720636320332879027548146875327300652940771.33881663612345434488400915938302448892654931', '-22870.4438146458357541', '4.44395217963222760435076883637477124931022534160832120922225388368844186768410598943777557078009307922192e+93'); + BigNumber.config({ DECIMAL_PLACES : 28, ROUNDING_MODE : 2 }); + T('0.18218115325918652080364187814856610785', '-0.000000000007500258887274874455316113171960391907638358845596334587266282124798879070171140855266399060309474525609221663629927361079959195487451564950409729473', '-24289981985.592469487742089854303512889'); + BigNumber.config({ DECIMAL_PLACES : 71, ROUNDING_MODE : 6 }); + T('-16512932730081.3826300879467559316857426018', '2998167170026065614480429332151694554768142821397043829992688178659454700940895488489009003609801879265966117001.524753950', '0'); + BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 3 }); + T('65474243896431235221407155339193508007673819185311743.4929500841614637675', '1529079623512331186190745074117513973129237085479934070925384733161', '4.28193816003089399970159121184642628971634901538631146521985635e-14'); + BigNumber.config({ DECIMAL_PLACES : 70, ROUNDING_MODE : 4 }); + T('0.0000000000151377175539751752889574872158236224600095494349763057043523648238554292274543641471058359', '2302258641188299400222169194354367203323152593379218803549050.6822267840859875402431199757840123770587', '0'); + BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 4 }); + T('-138012747.387969833778248240153500672517982002657538729811077629341411108511165', '-0.001167923728331321995156', '118169315375.71924426365139520957072649480751778080726907344125768775443144630784'); + BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 6 }); + T('-2136879710630007092.831760313', '-12298.06630126523380017449215', '173757374393904.78726879348213705478299093879933824375736159'); + BigNumber.config({ DECIMAL_PLACES : 70, ROUNDING_MODE : 0 }); + T('-5522342293.36236639957030059768955363363752219815573866587', '-149888210623104707936695808130558228', '3.68430730502770973586717827530357582250469108e-26'); + BigNumber.config({ DECIMAL_PLACES : 63, ROUNDING_MODE : 3 }); + T('12070.634461810887', '0.0000000000000002170518561169756999134341773912905638576608788683698885269302555876693467937968126587531469', '55611754157521063233.894395304456955302199815766485498922427745701707936648911812149'); + BigNumber.config({ DECIMAL_PLACES : 70, ROUNDING_MODE : 4 }); + T('-2794613797196490246184890667417633192277951134708479902', '-0.00000000000055205', '5.0622476174196001198893047140976962091802393527913774150892129336110859523593877366180599583371071460918395072910062494339280862240739063e+66'); + BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 0 }); + T('-128399182252646', '0.00000000000004384918822899140', '-2.928199755537398742704957490883343090005134e+27'); + BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 1 }); + T('1664173189394725629403489840805310542525504230268679885491575546', '159061.358657019355995297593905911963566606708503108682009776024201484457881481319453646694970757989247313791259204388464904626025769', '1.046246054633009319037426165868548680330954199316448547207790019679e+58'); + BigNumber.config({ DECIMAL_PLACES : 52, ROUNDING_MODE : 0 }); + T('-5496103887001714123841940726282631687942749309284260662935217418127390919', '-0.000000007339252011667030488716008717202577100006089170051776558272379465113872814464160200450895', '7.488643090964435337146734997991813537601962498849148092015498704386560923558302953709572716175492692383364303721239607490582899235482e+80'); + BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 0 }); + T('-0.00000000000000000603190124983089384094465950250297812148627842353213834389603743882587401977996871804237119069462599161650353808957273964000758388009', '66788687461109134007614298445509100076155808825659873241790965563.06996512177773338', '-9.1e-83'); + BigNumber.config({ DECIMAL_PLACES : 31, ROUNDING_MODE : 1 }); + T('24097795042803693912303347503674593023831164126744932918807129120748045585536768104874424890756691468811871628918125864', '-15.4057104716018806266376902241538417152751548380294763345892341696102303929964485772895', '-1.5642118607398450762022724835594933407291033309911318100172674173373431537337675741460926956370922433277124703376970506670995965626718654049750834794e+117'); + BigNumber.config({ DECIMAL_PLACES : 91, ROUNDING_MODE : 2 }); + T('-23143914572846690460428694056056827835103733729201347085682.308830442829417669669924', '-0.0774311952961774201982867710899774700743693779812149334972367752131408074834460856251764984838809211962487092302927716073627998787103534217040352', '2.988965168924525984775056195638973797379606793876425146799465499304310477199305787549502376231360786464086479911412221475401723286892697363101427429481e+59'); + BigNumber.config({ DECIMAL_PLACES : 87, ROUNDING_MODE : 4 }); + T('-5727778678002877810.45076524', '2.583704665523832219756485515353', '-2216885991047123607.997005418357098898392502671610881062456959608308446729212866225064625107778214916480465'); + BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 1 }); + T('-0.00000013250095007649612402266873643120113209217614680', '0.00015890369', '-0.0008'); + BigNumber.config({ DECIMAL_PLACES : 98, ROUNDING_MODE : 5 }); + T('-0.0000000000000004774820408646375541748977713421637649627137243928356160113440521759916440485963369649386109947525', '35468804410', '-1.346202807811636507808913120740186136324051314118810513385850132679991409e-26'); + BigNumber.config({ DECIMAL_PLACES : 87, ROUNDING_MODE : 6 }); + T('0.0000000000052518667918689286398325836253575966191256561666116790606153644659683456893044628665340335722703201936579', '0.000000000000000011272257625878610370791190193812022718920399732384785698873', '465910.819835398728447831810232764270036767345693331370229970563773777510712840455109132787683'); + BigNumber.config({ DECIMAL_PLACES : 21, ROUNDING_MODE : 2 }); + T('-0.00000000003830276111906255993970801935061062576870925900747891436201795529213200339740471374458939163', '-0.3504438911421781941823943397315623033180425382039257701257425602048412142481828164193', '1.09297842215e-10'); + BigNumber.config({ DECIMAL_PLACES : 39, ROUNDING_MODE : 5 }); + T('-2.31', '0.00000000052946', '-4362935821.40293884334982812677067200543950440071'); + BigNumber.config({ DECIMAL_PLACES : 86, ROUNDING_MODE : 6 }); + T('12860033851084408135641782273271604741.8559086833177152223624717900', '9.543', '1.34758816421297371221227939571116050946829180376377608952766130042963428691187257675783296657235670124698732054909357644347e+36'); + BigNumber.config({ DECIMAL_PLACES : 50, ROUNDING_MODE : 1 }); + T('-0.000000000000008921227585895644291500450248495227316599941600725625147897184043668351138336583927985640057798252088782407315089474562798', '0.0002620485518132748289137743426953465691588558655478950066741046970927911736988499887', '-3.404417816532162819930437617419212728487e-11'); + BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 0 }); + T('-3056.440815582082124272599611849059840816357258009892', '302.3482139292620457592248865327186477257473960864801952575203547892864175', '-10.109008999461703'); + BigNumber.config({ DECIMAL_PLACES : 74, ROUNDING_MODE : 0 }); + T('-363289907705301330185166342887.7847', '81582297388203841077960836800056398595444981404938864424325392220121106294894259978964856232971907601192942535015535832951975168528.252', '-1e-74'); + BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 2 }); + T('2296516224651979830297464.96956839247', '68045824807116579941624973733395808321854798672516523570524572686043511663861855683892323399666954637758699354872406770699870692899336', '1e-79'); + BigNumber.config({ DECIMAL_PLACES : 26, ROUNDING_MODE : 1 }); + T('1109420413960762331029.455835780280393628978489105963', '0.0527574753126000904825740856791060169906867869935640611893325419321672632064534436917408156809749496179791161907245616', '2.102868659630114970998941026066197338658552286853e+22'); + BigNumber.config({ DECIMAL_PLACES : 22, ROUNDING_MODE : 0 }); + T('14291471321399196708748924587453402129076677581537443839514.573203083365312707541768208100608749831043311867206549317352', '638388488420920295891589359021608', '2.2386793591390922648023566830716199778412530029e+25'); + BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 2 }); + T('-57911300960614165692638274958417991410207402319875633999887568371029868356080110249', '-1.4810200486324264339038329783179927289228434911039171470629063157559084909999560995832114991931104344335048303411052183180236470833601835780733623', '3.9102307233510746487570180875868531324897993346810427093406827425659614992815954340589420570161650813e+82'); + BigNumber.config({ DECIMAL_PLACES : 71, ROUNDING_MODE : 2 }); + T('0.0000000000000426285056506080950064133048850537137499693259922650165245373450531748781558436899315472239295724725841163665769432778350314366433266150', '-5779195907704654032548969461228542570066713638682962217178649788187658662', '0'); + BigNumber.config({ DECIMAL_PLACES : 89, ROUNDING_MODE : 6 }); + T('-0.000000000001398031380745122555139341299781437884251788646184279', '0.00000020146216689857977364011615129682178851026745397012075427830879338861', '-0.00000693942392394161282059818741243869455460096745989016115912589356045542051718796348936'); + BigNumber.config({ DECIMAL_PLACES : 24, ROUNDING_MODE : 3 }); + T('-0.0000000018281405235993306573729847264951062317741802688456526747584219244685755244146239709408859742677', '-0.000039977411760397363452116441068400613873854122773419085299', '0.000045729336720350989782'); + BigNumber.config({ DECIMAL_PLACES : 53, ROUNDING_MODE : 2 }); + T('93.874830678659540224', '0.46388617207938526711279072582642076655074168793377847', '202.36608963328756896829965459129398111962414293407503586'); + BigNumber.config({ DECIMAL_PLACES : 55, ROUNDING_MODE : 1 }); + T('-6067609112729336.5641389158174028843', '0.0000000007132038331186246087595345637228616705970872979896242214523505385786974090998151199635608250797124420975179730066666021352180478401103585117451', '-8.5075385618687962529929035371789625929642334291459295164276298211538189129665534e+24'); + BigNumber.config({ DECIMAL_PLACES : 96, ROUNDING_MODE : 5 }); + T('0.00000000000000433771844284352802326548983713676100075889655381535915309063548269887629783063924332916', '0.60476927774613064820958465516606346665521900423', '7.172517855089210536653893878745196319021954130581531446479671815157566119078637208e-15'); + BigNumber.config({ DECIMAL_PLACES : 56, ROUNDING_MODE : 1 }); + T('26762355160537621016082743064295.080067862585415820836397592379007572501818714958250145285385957435', '-5871.665530424', '-4.55788140892369243973252976993880089852606673167328454816855114006281555607073627955e+27'); + BigNumber.config({ DECIMAL_PLACES : 87, ROUNDING_MODE : 0 }); + T('5400782777118266253220.3604549383146344518474984883630457317782760', '212080883610.0053405387143231717032886408372941339512826', '25465674629.353880655491465646635526501057360762443680100871194655924059751770000081549139011336011'); + BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 4 }); + T('20.77041654716778297414458217600899840770494097528715266455063312827520464248564409990015045356357538488', '0.0000000000004484442840189590379525674891037241309254709670584590669581148534191', '46316604508866.17770208200452'); + BigNumber.config({ DECIMAL_PLACES : 83, ROUNDING_MODE : 6 }); + T('-92171139886.2', '-592514313065668557458.16374560297863802699287438060780939136308560270752159071394275940584781865057712029', '1.5555934743467478405847657874615348589160126124969369199300225288497841912e-10'); + BigNumber.config({ DECIMAL_PLACES : 58, ROUNDING_MODE : 2 }); + T('-1.73141', '0.0000000000000065059890886460822933200792819554410184307914670072084454675279458029847045326173763458710374392', '-266125561603164.6481065129861199786500770384274172169619885156974022934989'); + BigNumber.config({ DECIMAL_PLACES : 31, ROUNDING_MODE : 0 }); + T('0.001859328353159714363321469660024984845786586153722037720449296018893801641919319381453625004345627219334745099168087651782771195701785834366016', '0.0000000000029762686563045156688993', '624717916.247637951532404712362243884526'); + BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 5 }); + T('67162649430668510155429.787732014861061501618925863', '-236.614826553838478207932465774710561701685', '-283848017509530683827.9556713847709'); + BigNumber.config({ DECIMAL_PLACES : 26, ROUNDING_MODE : 4 }); + T('-0.000000217646930938741115111466517044242535716684253500115893355171981150347876580196232672533925973269540234380973583815450', '-132285417864115507435251390828437786854099674431111764370942550850977334692494917177761883791402633834197328087', '0'); + BigNumber.config({ DECIMAL_PLACES : 63, ROUNDING_MODE : 4 }); + T('-0.000000000000000000046680932882216251617394884793706741937714919553715649951530456939224676411667594694333115693147475611796139019549919', '-3644474484546523437086163830771009643582875859529700136548813411552777987975614101', '0'); + BigNumber.config({ DECIMAL_PLACES : 37, ROUNDING_MODE : 0 }); + T('43.86754082995769124119405561033228740811050643940714559', '-87769101040835904261149660962349618325876095974465061347561.07734541439622400299392053847494492509159707970719758153633707200', '-1e-37'); + BigNumber.config({ DECIMAL_PLACES : 56, ROUNDING_MODE : 6 }); + T('-69097286533891955501666445951695889917944041836679579490274884686479808450601762828719379232555211.464168189127859822639025310124291164355646968878', '-58821105741403076530530664065722948506417551033305709063129798777107826508171796269342.01217334150981725', '1174702271624.51431865906695984974463725771232026205875331837518080884'); + BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 1 }); + T('9041636265152378637157327151399645223627585778021483146050449875915960587780957.011514048616324401939780019262', '375428654351101566466264093976.530146667443907343822845172341997674633876621072243523265376455244592144', '2.40835007140840768388739392208756303107845733097464640610139246515054013647374065111574787070276398115296145362274543291398075e+49'); + BigNumber.config({ DECIMAL_PLACES : 90, ROUNDING_MODE : 2 }); + T('4360624497214267907387005.48284527700915574059974152280230117285400903188809898048729116969500966813507856427810907', '-8119801838999011.02575801936508385856521986', '-537035827.18858996800046363321799539681458780089399070149208302130584117879861378917309001785362625'); + BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 6 }); + T('447538448932939821135533209385574726.999129182629528513369697885680276177980080472433938883828696128997303875333052874470109', '-6368301359731239874931361545116070401531720301695926947100905984400301695842082221435827011552438929050651858585139063', '0'); + BigNumber.config({ DECIMAL_PLACES : 89, ROUNDING_MODE : 4 }); + T('-2063834.517626562523135232310567316793', '-0.00000000000000070107213975625877203258839288362815899327451913231793067497874753297109809930914797490313679024856727952374866847', '2.9438261779224236904702214889776893449887784437556784352025548527885572862188847200352206246068587691771714286e+21'); + BigNumber.config({ DECIMAL_PLACES : 52, ROUNDING_MODE : 2 }); + T('33027008169690105634816068559724706808923415773327.015527858161928614391285425483366275198184587804406704994844593736881', '1955751768.2230', '1.68871166097415889595880934015019445864504426875448780412584825158719987844520908736012871751e+40'); + BigNumber.config({ DECIMAL_PLACES : 83, ROUNDING_MODE : 5 }); + T('3374245896870844425548461008173716930805794726086165400744655538619069411443360465712914030117090495412392208057262216', '1438668236215834660636686862218.430303427456916257331950800032119083925643', '2.34539542330218431284055647074890096403960687735631018435380799106468168265649361938388230442569966738108031238185858529671402260720524113238085600314009172748923207492215e+87'); + BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 1 }); + T('-4397991762183334515646102.4647946033986239732551193534808541946505424403119697025954989227216087600038', '-0.000000000000000001309310777068216172367884926521215644215562451382653727249946321416245076207309362533728642519049131116066668568201', '3.3590128785399858616894844930849641709373058417350705338336537223329422059258815134387660076274443568160804503424980334109854992673514690137e+42'); + BigNumber.config({ DECIMAL_PLACES : 23, ROUNDING_MODE : 3 }); + T('3778149113705545526018562196775435279458', '-0.0006964468917648584', '-5.42489191692905607968787881365542888273387455388666683403075199311e+42'); + BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 6 }); + T('-49586497931839593912557000362055451669722521481472795709900395803665510112669010598789.93256203887798759539', '0.000000007730636239396951030874083637860149480910614389067389278444', '-6.414284205889335880923458303359224556138242167330384329448398345627090947349457268582143476335216106813906433026801672417197666018496833222575399337393674433139347850478041119759e+93'); + BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 0 }); + T('-30.61', '-1218773636243305682928698105414537557722577755117520364308947828946', '2.51154103516309388992739424407303e-65'); + BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 0 }); + T('7837.85425197', '-4924201364768546154091768054816877908044319654750206853683883187450708815915970.26120', '-1e-57'); + BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 3 }); + T('328612846507912440195895320949.97880973689', '-74093433362687796234732796000026611813849885047953975898959442905406582392244924227468980782203235995581849287944526627.9467766', '-1e-69'); + BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 0 }); + T('-0.000000000000000262386736781607554119176572519838669441588659442395142995275179459235189042024362526997735063369741519818929464815095248173849714455', '0.00000000000000103533440318658130846004063466103711293231818809309123094434209882633604277459619235001', '-0.25343187280749706110681147629427095838017850949849764966606755516172'); + BigNumber.config({ DECIMAL_PLACES : 49, ROUNDING_MODE : 5 }); + T('-0.000000000000322432448564741584339199183214950196731593789971512714485477682494095134481209913223923119930846635502812', '326622415640382004330091150077429.9604314115936583647', '-9.872e-46'); + BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 3 }); + T('-1522584539163.51961939035517', '-18701310931279048588339319679178119484886874', '8.1415925587168700943027845074751571624847931e-32'); + BigNumber.config({ DECIMAL_PLACES : 24, ROUNDING_MODE : 0 }); + T('-90558127980337144935926146713051405660023043.709734425117178325791783664294624970951', '227135242088470738342348340673455214034602753816278843099968.5147421782261587205588136', '-3.98696949e-16'); + BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 3 }); + T('-142360756712.9628518058827179348092374075157599015252566070459583192544507613919918737005236747495977670122253720', '452664.7791873838', '-314494.8828767426713618550484858325223775720701584135560211010457708'); + BigNumber.config({ DECIMAL_PLACES : 94, ROUNDING_MODE : 4 }); + T('-332430460212660418334640685435602340486744367646333583929761668829129441741273860735150261087380331642775562434.493628257286898761531415430936915752', '-12773822173744527946945352241777487614384940699496786026430373.94891373254810706379263055687667186587167044988100388564148365146145721007864602228580', '2.60243532195040335686018540229438057542066541716911101476582563056311201664783530252883873795758810590583577899737316941873834280768183214833003e+49'); + BigNumber.config({ DECIMAL_PLACES : 91, ROUNDING_MODE : 6 }); + T('-1456234373638105442126887571003692582872067748502.83060615310841144160798623533155017503004909109', '-2577402016398059729629852253016480016715321902659900317234011361788515601490353326785.9736500332116358015946986445909693', '5.650008669090764573237722103893029526602580293053061797e-37'); + BigNumber.config({ DECIMAL_PLACES : 67, ROUNDING_MODE : 5 }); + T('-1', '0.000001505173689176735670136790476340231206410120652137741696393873992345105366801675965982936861911208213462', '-664375.1529745091180083851734560063139843083140854426978539692950873529056'); + BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 3 }); + T('9398596543542648604069684434464332961225347551100554373590714483735425042927783468545519.30', '-240475881254266057645992650522163857746548650866202234477713142554822191906958234727013391569735402429880449813542023581766.26252785778572365938', '-1e-15'); + BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 0 }); + T('23619943335582180681563953221208403530666785379061989956504046069219190202869927837503698514687381277', '6471793226090782771143276213019502359606942573956983356423480330897279844876426842310422683095354515904769089', '3.649675215264804421572736003455667285562991725200480593830141860993925734727e-9'); + BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 4 }); + T('15280144164041863971453423592085478238323177732723827062915112531134543514121698538407599390583581.978317', '-7.93', '-1.92687820479720857143170537100699599474441081118837667880392339610776084667360637306527104547081739953556116e+96'); + BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 4 }); + T('0.00000000000012183457923138078266692462295149758615914063', '0.0000000002143248855015892192235420872657900272424743646164899393878249562420', '0.001'); + BigNumber.config({ DECIMAL_PLACES : 37, ROUNDING_MODE : 6 }); + T('-733440663', '1038507994476889827158389690702181172393885088789796311046631163736129461192.247844400116002721704647439830896', '0'); + BigNumber.config({ DECIMAL_PLACES : 49, ROUNDING_MODE : 3 }); + T('-0.0000000000691051292899636275946254155870639156043778701438855762023283310983413001370155778120594530140708378895345280', '-10027311689094384145668140987547', '6.8916905e-42'); + BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 0 }); + T('11359120624522154.53023', '-2550066103468355693910845303600708535551713199276185341634363815744.004717047270320163183448760067867802013667339034541657861414156903356182450297949', '-4.45444163548253378e-51'); + BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 0 }); + T('-52708994559929466242780826241190188267288957045778695793224196458877.89252001756041056', '-1522917728921740097150220037765480825123518302856603628725087304924959086265252527519267055328761803397973987775137611395540037908247690091091996', '3.4610533162056374751e-77'); + BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 5 }); + T('-11165328701081.4257112898', '-24959530845518955496605684781380264355964682863741574790385933551049268928275747739569707770147273583424324.041182416708196547861', '0'); + BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 5 }); + T('-4773610.84', '22', '-216982.310909090909090909090909090909090909090909090909090909090909090909090909091'); + BigNumber.config({ DECIMAL_PLACES : 62, ROUNDING_MODE : 1 }); + T('-6836773211644461696107713553277748809321479076423818938386143460001184753786637479647627545709037633619234477587974458.12414165847', '-0.00000000000000515154630003858448134268186053972', '1.32713030485492386268968038852626076949228451353445518063130642075005837958980212169859615469571874484247092297182951469771823174308362479399401805152010109664594972766438102187936770325839048e+132'); + BigNumber.config({ DECIMAL_PLACES : 70, ROUNDING_MODE : 3 }); + T('-2778.0429380436', '-228574120304150509.93633862948886848632880765855966', '1.21537947268352914851929108947295372671956410842896564239e-14'); + BigNumber.config({ DECIMAL_PLACES : 29, ROUNDING_MODE : 6 }); + T('-40155867.4692', '0.021958056331393069602794177925507490', '-1828753276.84581176220235398719333810712'); + BigNumber.config({ DECIMAL_PLACES : 71, ROUNDING_MODE : 6 }); + T('-0.00000000051364856828450921948681529991843102776822771569870399038842327218548974035030728793', '45297873834227276911847741.460307540547555645664226582603209420807095413867035', '-1.133935270702251049987351810993966712e-35'); + BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 2 }); + T('-34755259101316819628107054698802052991490868848405157436437774467957274927694958294973057545663400', '0.00000000016806976065534297209525672681893628545526073', '-2.067906740974581308588601710681711152047271605697020136705387772142288905538099935023745554546254066549719693916540022e+107'); + BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 2 }); + T('483701128655610710462059386841552.23428026777405745634056109804544166892563233022827515', '-0.147748426679463517910246778', '-3.27381576593697406393008840795433400914034e+33'); + BigNumber.config({ DECIMAL_PLACES : 96, ROUNDING_MODE : 3 }); + T('-1768719208173205132370941848398177.82555203735963819962601112417663490', '-651791921152437137591780698038712686697839014597685.556625352529548108696424', '2.713625546395116826835505296902051157787896068444841552527408183059190079795466e-18'); + BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 4 }); + T('0.0000000000000000000116409211334756117796421454726040182728029706782586560372354', '-195750459249224092174322.9524725753284699693145539754539744261301487720930697298545585583', '-5.94681676769642296321783820617365e-44'); + BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 5 }); + T('-1001663574341113191015107704016663769094751976791065070936063655062457138070317805959215957410832028469518206846767458394047588', '0.000000000000001927638461729248159701611055290267930819901123886819050275079158796663198260911909162569824451599603350160262664574539026827892407612679905597', '-5.1963249033874311854914483288632911031720642484893401316699761274458777624492546940478687383187802093971235833254047331529086538329373017559921977388196364330715192133449754987426594465068690278313031907606982151272535658547549332601211e+140'); + BigNumber.config({ DECIMAL_PLACES : 88, ROUNDING_MODE : 6 }); + T('45107984107407546633731040234669943746223757421086812276151175', '6570739.55512198111283137872024497742259916654387981139', '6.8649782462074999939174187484334558889424532842877095510401752511100114530695303139647748256181475528007192674225442277871479186150732365801782e+54'); + BigNumber.config({ DECIMAL_PLACES : 7, ROUNDING_MODE : 5 }); + T('-1939019173017959289673537548091.42574322', '-28364816051020445350371723077313', '0.06836'); + BigNumber.config({ DECIMAL_PLACES : 73, ROUNDING_MODE : 0 }); + T('0.00000000000000000003958711472302434', '-10336921715770888655018287383263237433033131293696708328095462.26581633038219092238605955538842322', '-1e-73'); + BigNumber.config({ DECIMAL_PLACES : 41, ROUNDING_MODE : 0 }); + T('0.00000000360620216751902973550311438153812255550584486477376375794853593093274243571181897148522432', '-0.00000000021361331', '-16.88191699065488819729030172107778562817947'); + BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 4 }); + T('-790158223.981507618099539817069435823662655715183365767487593453916243957788511546656932240172412405293980469406614365235479450821540090', '-6.390823560', '123639499.129202624723931482951069896797879319826405247759272117022'); + BigNumber.config({ DECIMAL_PLACES : 37, ROUNDING_MODE : 1 }); + T('2816568668914919894184461316328112686403162283419526.037898686935349578022761207496388884025302185306760500150819738851518852348581120296091201', '-24359069157465989851999751295699220564079490972064971615148408960511.069800945647793749994706', '-1.156271058925767323491e-16'); + BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 1 }); + T('-0.0000000000000000024890937874691414832780758414290817480213020179263215656654817118841152359625327670686290364905590966774686272638666774', '895259242907016.0502793593420537333', '0'); + BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 6 }); + T('19.8064649721071437008269', '-0.000000610471699350340626524661977449179143416264680806880502799487146825848660614272804299271821502010143241929387462842', '-32444526.082347526'); + BigNumber.config({ DECIMAL_PLACES : 90, ROUNDING_MODE : 5 }); + T('-45289296066158223218975737417', '-928257556134713226122051113853071323481509785437.9580004683247946082155141', '4.8789579752783204416317411498894373813729502066779191802429763220593603e-20'); + BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 1 }); + T('-0.00078535502903380947391345955437624724068791174093701655373526043250494899077637070000824976392144327726121891764125927532007759185560467741', '0.00033304165069526690096299415595923020128400941162386700917975599797630916234477195385920220999258987846764383579764299409515938262', '-2.35812856258152917551026948879551194972598994164'); + BigNumber.config({ DECIMAL_PLACES : 36, ROUNDING_MODE : 6 }); + T('-0.00000000000000000008825251516501312058940920752063296903840000436871599720760748237461134319724333864621583004595932821349886876529856620', '-1.069022355834988402', '8.2554414959901509e-20'); + BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 5 }); + T('772501446257033183307692089313828879302168968892627034487', '-81384567655316761750463795931268411572976483902961095936051873255429098175748058407202432776421996767418992938712067148960006', '0'); + BigNumber.config({ DECIMAL_PLACES : 50, ROUNDING_MODE : 3 }); + T('-0.00265017197393737674878379337531359823824938425704924996611013433756744890535609162913776080524748014471110688967245', '-7', '0.00037859599627676810696911333933051403403562632243'); + BigNumber.config({ DECIMAL_PLACES : 21, ROUNDING_MODE : 4 }); + T('-277310922478082.727664976536472274', '154529797348502559260809623214894553999958281920.68284', '0'); + BigNumber.config({ DECIMAL_PLACES : 98, ROUNDING_MODE : 5 }); + T('0.0000009313320140538311704253939589245127674', '3863.515', '2.4105821099538404029113228728878049325549402551821333681893301824892617215152523026311532e-10'); + BigNumber.config({ DECIMAL_PLACES : 58, ROUNDING_MODE : 1 }); + T('-2568129441898937556137786104568163040208787348887340706590516102430677178523003610340952122154266048038803517.9730399', '2008033988816.448818286257251013236779556387322447708', '-1.2789272772283169601264070833637617968495425557009005099026629460069620253257540859429895418421573577447732149647655339979825739828772894437610209251266094e+96'); + BigNumber.config({ DECIMAL_PLACES : 77, ROUNDING_MODE : 4 }); + T('-19864358680856516816965874962516514095825848944861003560824471282641009178302723950309966162223203662500825173538382807849542795490864', '-212016590736544138965692245918445194436743.36955', '9.369247289491768092776264587159160494552988464730248092984466747489758038653366618968029715883528381407847681571034553201507075708328995885146302574046779291068619982154e+91'); + BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 1 }); + T('1511027826251489127749427412.594728420145970907761608905', '-0.000000000005054254929588544894407021979291751880822369870454217947279389954476649584113736749761735972913677160254565233609609842627', '-2.98961537813546413033570359173078020590873199079297173668655504760939876822597828916836670706313129157434826e+38'); + BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 6 }); + T('22285404622935267793795197992056404.53391687803083721925751604043871437161875065851355130686038100493717842376997', '-4433819880661.57', '-5.026231381237359578736427609583397447404830026960320692274017472790674094608582126881777430863932037366e+21'); + BigNumber.config({ DECIMAL_PLACES : 22, ROUNDING_MODE : 6 }); + T('123562606073560146296123.7046584273217991', '123660907906476375.21060629614283', '999205.0694550085812041263906'); + BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 6 }); + T('78898068989628943401506603.08270675806502466782931937791', '1194290107270593798187109116843401631571498310092606492.3812296137492117', '0'); + BigNumber.config({ DECIMAL_PLACES : 93, ROUNDING_MODE : 6 }); + T('169618.404758790672300669003011659982169103226788460655085196350560268581341040077434921194540955861041765539534830329925806180771926', '-33241831203.2932498831181596750871234634196372764398718354398950105612738023294', '-0.000005102558993259874037640634199954927858349496975542935252463143304542819421369658162930206'); + BigNumber.config({ DECIMAL_PLACES : 99, ROUNDING_MODE : 0 }); + T('0.0000000000004256523277467355704328266207146459724948242380197393426799174232335053760581798310771934582472', '-3751.6999327899249360004425625782491517752048297958012648165386626140051399995905192389910930599494479093645321707694003235782006873', '-1.13455856111126203084455485321856616400159860094794231149790756129248740961379556119e-16'); + BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 3 }); + T('23813599381691561229007340870372803387640938880462859216356795005078604814.9882719216101924236603961', '38308651070420356711.31559427577116814710341917692560657321003533709179197980154442215370094187551437840068447305431970852934823060423749792', '6.2162458651745622955827942872136467555275870267453834906201072823776003e+53'); + BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 6 }); + T('123318241287275162822.18921655260382872027152248806374505432037854629660201486592877056393401883557841579361303737894282226111043730914426777', '-456456870233698104500134908313823656919763409036810694906752062765896775554992772273526763414.821049', '-2.702e-73'); + BigNumber.config({ DECIMAL_PLACES : 40, ROUNDING_MODE : 6 }); + T('-0.00044924439041557164526403710647109171619023074888798', '2896537554.9643121132126596022879137094956679374358705958834082310239566109418666114233785128708983990494959155411325221335148', '-1.550970363376168035694279112e-13'); + BigNumber.config({ DECIMAL_PLACES : 58, ROUNDING_MODE : 0 }); + T('17745.2955392961297211454125402462484113848245919170', '-0.000000000099224718451726955927686055622403272238198795216324565595298085034868448575767391976853193092154', '-178839464764309.2591447558517793515299087235428648310893153237708280103884'); + BigNumber.config({ DECIMAL_PLACES : 62, ROUNDING_MODE : 0 }); + T('-0.0000000000694814101631245596793089297088211135109252430430852936684424089336464000093052558120735468149', '-3798.732284911850396016', '1.829068356280255116529398511883463143917963805234e-14'); + BigNumber.config({ DECIMAL_PLACES : 29, ROUNDING_MODE : 5 }); + T('108362353608827313268923', '-7587475', '-14281741107394398.43543774444067361012721623465'); + BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 0 }); + T('-2437306615589890757396045177852340188890781157666797.758328182028601588889289381762106826', '-0.0000000067236341318004956925274693470194553548248404304579053109249950576333554557142672086384285660967276155604', '3.62498400093226659476203739344917752015130930481260759192617567062207360357352316987495367303747021613308511833497156590706629890507591201133e+59'); + BigNumber.config({ DECIMAL_PLACES : 90, ROUNDING_MODE : 6 }); + T('244988517990808930085467508261590051387045702050595134044233866221490340947152783388022914260519574142338054725747610963833396.1981754822453301022423008', '0.00000000000004844724052', '5.056810570865697060045216962577790413790232155220285269701339559834446086778954141927729225815554750244793812783861956144977072022831533714979526398437687530030657770887628668597697047947365733679974720673729716071762759708981666e+138'); + BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 2 }); + T('-8661.23764355576609715813061378733799386150386113736711466', '0.00000002746550005875609134264398274317779051', '-315349716008.339'); + BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 3 }); + T('0.004084047591682', '0.0000000000032831619542706580584142574696305103978401516228210867372723583222083349', '1243937292.331731969037188'); + BigNumber.config({ DECIMAL_PLACES : 88, ROUNDING_MODE : 3 }); + T('277.3055135528460243580', '-12816393.20060667602565', '-0.0000216367826121095837692489281740042365093693285056386368353765783488626148054053296096'); + BigNumber.config({ DECIMAL_PLACES : 92, ROUNDING_MODE : 2 }); + T('108943826822403564658955722844387181692.08070', '17956512383891224117968085143785415430720528657689150267073648.4996172245174500838100977991267032167366120333319840181577617438967264566242034311425', '6.06709279025346830003806908834554369487376222264450832057860002548116e-24'); + BigNumber.config({ DECIMAL_PLACES : 28, ROUNDING_MODE : 5 }); + T('1218602407652272553917425396824889774408764317377422710850106480274990119689727903314661655850713934024851930707956995544036054851232204314825162118384', '761190693432782933.64337194443708884826858807341264891408761000973550405990790742592204569', '1.6009160623820493873575601067919584360157853271743142286601103008698951935875610296249851613091888583864370374493428467326933214038637700347112962807200988021831e+132'); + BigNumber.config({ DECIMAL_PLACES : 22, ROUNDING_MODE : 6 }); + T('0.357993343189568044894696414183551838912685603488527040312180940359257', '-0.00004871334604822953683966094899017750718162', '-7348.9787138647836935789771'); + BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 1 }); + T('-70384419738273212082980167906205025390385278922361099370019370514471617614918759874825.0968041227010334018165511719334774882361', '-9485535443.3721609', '7.4201841486400220783041528838155943601598191710271697019152285206166947685907647495910649208911100666143546691486096311978840081494730449273473635655991898192730622510614237e+75'); + BigNumber.config({ DECIMAL_PLACES : 30, ROUNDING_MODE : 6 }); + T('728833029216775114.848868091419422053', '174273372885738292445587123518930875630273224225600720393234457013207634849211187407006878404245995795992915047839719297487000353613183952930220', '0'); + BigNumber.config({ DECIMAL_PLACES : 5, ROUNDING_MODE : 1 }); + T('14288725.298447668461069196056326124584479502434011463528734406498090064700828497758', '-23577164346464368715591356951222880586046465914352944685473402841563781393590871752173710073876024828233931511264641696246181697614580.9306164364', '0'); + BigNumber.config({ DECIMAL_PLACES : 27, ROUNDING_MODE : 6 }); + T('-1072383742631234330836349556630563550044561408769132023979982507867022584644999221.360492835541094441894060082118312853118651940513', '360947434543926891199091335810194343170924006386178839455975948816.1722627808116794053224391', '-2971024697782486.807471809419726509097566494'); + BigNumber.config({ DECIMAL_PLACES : 48, ROUNDING_MODE : 1 }); + T('-5868052.81873921557294337625030742481039656', '-58837964.45893536843884565909543056590172465704349797267166369942', '0.099732424000403528902172910358489624611810837087'); + BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 2 }); + T('1612040', '0.00000794103475470686100081692084019937802726640263203606721720379054195533340757393430931', '203001252329.805170830142123506823342889353430474297766213449310326943'); + BigNumber.config({ DECIMAL_PLACES : 43, ROUNDING_MODE : 1 }); + T('21317146000144010768999844337.09405418305272761083343833305157341739156', '-0.0000000000000000757193290849889312911825751507888440033946174186910125790903709584028592109335626795542286954334597472983510498121', '-2.815284585553737269426231370641010660565418051037612422994606767099732969097097789353525e+44'); + BigNumber.config({ DECIMAL_PLACES : 96, ROUNDING_MODE : 6 }); + T('-0.014774874400113761275608315008410716240020003723449012821995398453187269704996948301479566757073214153779919007657996441', '-0.0000000000806493262726523159219918774844701743368445047223735259792392263754101924782666797204608953839743505777878942483435511937557', '183198981.10697335278713668584937529398989758670399283382712218949276209266326354897355313149339935535891'); + BigNumber.config({ DECIMAL_PLACES : 46, ROUNDING_MODE : 1 }); + T('-5020395207847045587727077822854380739791994932.504221342', '-74.560660543522053645514753840038270581853127300632212275', '6.73330301964877823929748011165377224591701723616789060326824962023526688646477888047535705e+43'); + BigNumber.config({ DECIMAL_PLACES : 100, ROUNDING_MODE : 1 }); + T('3609662930524403234872562856716221223809358860565279701563424303123905958311859287738683872033007265471771790.27931527380155673054427138450665409', '-16794861609975881587529093087945512128074521.8600898019055683338112609046', '-2.14926625437646992547969446513122412619322996353514537842439113690086159828370263502283952142780682828700756036392817917120126832820988735967571618352760750529351143e+65'); + BigNumber.config({ DECIMAL_PLACES : 36, ROUNDING_MODE : 4 }); + T('-209988405242950665631125009649210907924178901.5873429339493463688159064579862138303938474730301184064145339310589283537311', '122569030859976508852246994830123364416.839524872412501134762656285560330488', '-1713225.631055551867872200381862880712944424'); + BigNumber.config({ DECIMAL_PLACES : 46, ROUNDING_MODE : 4 }); + T('47420894138604525437802946544789192269386517706561870968888268715.94284369', '144391219557916288080545064326186839709918688878883756325748745387822257762330379166.90133558573313654585654061826370302276458556690373825246863081918', '3.284195138997609633701571208e-19'); + BigNumber.config({ DECIMAL_PLACES : 37, ROUNDING_MODE : 3 }); + T('-1308.3407640554295633138303751449390044619045210832648462939047683491785368189241638500544435394779', '139897.170891202872445332860351471360991118381599841632343765791145944598307655379', '-0.0093521602740123868377384615892236251'); + BigNumber.config({ DECIMAL_PLACES : 1, ROUNDING_MODE : 1 }); + T('22694078.88024570233564612', '-103651966799102889200282761567605028300454815274784159102379155983367521850058760610422.44835166114776390493475081358376300414537311', '0'); + BigNumber.config({ DECIMAL_PLACES : 1, ROUNDING_MODE : 0 }); + T('0.0000000016040003695568230879054824', '0.0000000002071223092570452784024285221', '7.8'); + BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 4 }); + T('-0.00000000000160486518', '2000593113460475653267471363183237276024632954073910660524421220510512507287858956989710464053183389648090530044356759951939404939121570506069293.9', '0'); + BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 6 }); + T('9906428975181302.54887731911260593747588310831803790859593036337074878585870011073458494582', '-397802766783631216105934288942707453764433787034150600083769514863762243976304563720310383139730329806133430388364738219.0637920060892298', '0'); + BigNumber.config({ DECIMAL_PLACES : 27, ROUNDING_MODE : 5 }); + T('2372448042620504597371648108873793114912985466259613.353350132438952846988122884875738349', '-1764.80', '-1.344315527323495352091822364502375971732199380246834402396947211555330342318e+48'); + BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 0 }); + T('-0.0001157332635650475407713018168116431237125041538776377390530686807857574178284175634791546302355710141408674979023683725384881981444027014280402', '0.00000281561515149383689194302008444442670960906950880195369760891106615998656', '-41.1041'); + BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 1 }); + T('-2278482554690743451116787903639276368232226.66013929334144203016049308412938167233648262684966359705041443467563802410865800730861965740644319', '-0.0000285627859101525846417950839372511981150657031908402772381658512315358472462141610401734401821536946991257108968597050239867948233205', '7.977101960074774858211228278423949748026430860250159654207880264e+46'); + BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 5 }); + T('59269537807238301464926245600012460478807876003104742707188939016142085932.461535987165237904369', '-258026813793798647883605234869509408101831192264071908426636279960581099948371251263586124700908939249794338905998034191710232991039.1707483647', '0'); + BigNumber.config({ DECIMAL_PLACES : 67, ROUNDING_MODE : 0 }); + T('-1223654840276336417110.720248945988622443849428748592681708133806032494842645', '0.000005831237077411969651152036899437660106177539656797108710536978889806840010886384299730740491464098643257049074427503358368686702426868', '-2.098448106348337933778408317445108689803477267456922732635079970475386825568124960925254029599e+26'); + BigNumber.config({ DECIMAL_PLACES : 42, ROUNDING_MODE : 3 }); + T('-160773012905405114202302264705.237006267046611946082538479652779007371207354482', '1.00882982', '-1.59365841213342716418020102444272519885511128077164232198898302795382484e+29'); + BigNumber.config({ DECIMAL_PLACES : 32, ROUNDING_MODE : 4 }); + T('0.00000000000000000004323777444337428413401949854456498464107873509686060294293240239522287718342572817672581228188853960600088276', '-1720809525311020427781913988340982076898548107102852062.676036648142132007995157885488336157', '0'); + BigNumber.config({ DECIMAL_PLACES : 58, ROUNDING_MODE : 1 }); + T('275964569992834158046.85755492921522352968031279303278320854591089076622628406831', '0.0000000000000000011567413250188073652649295282698546264', '2.385706847538686076052372330461031480699214143842428420048025129597251853556690269292568001621528e+38'); + BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 1 }); + T('-461277.6333138647416813912224020971', '0.0000000000099173109876618658838716685018082208815532263892509632703426084173504611870016955196', '-46512369521107142.338455538950483324289471901187887073378652573449823154471'); + BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 4 }); + T('0.0000002108442322507065273331916223534695254104558598616968253642258920245687870102832329146234616963726682601037919994780108', '-122733644498769014232860259898669330756311954767551860271513349667053602485734694104734533969504443767273932914.6142703760252739736307212317412780386', '0'); + BigNumber.config({ DECIMAL_PLACES : 73, ROUNDING_MODE : 0 }); + T('-0.0000000000000060594249199960178678557214', '19', '-3.18917101052421993045037968421052631578947368421052631579e-16'); + BigNumber.config({ DECIMAL_PLACES : 90, ROUNDING_MODE : 2 }); + T('-195811421292774532695127684610', '5364891515549654383840359386200881808248648273.38684679459888274463788963963832393300317472688786484183567033543759756562080', '-3.6498673034717063995885765222443344626881916521520475459963682437300164065e-17'); + BigNumber.config({ DECIMAL_PLACES : 46, ROUNDING_MODE : 3 }); + T('321599344772386898451916.7627715300945560317184253492986616105408473681672', '5198578201870724452821312525638369209544427519', '6.18629425746944383858562e-23'); + BigNumber.config({ DECIMAL_PLACES : 99, ROUNDING_MODE : 5 }); + T('-59021937615669339998841043645954574650537447011352862778879088165342870591133705', '-31043943961314907903.917022666104157063875271758', '1.901238376451746005226788041162920350756241738370907016373353852151918648648524831189935921563308495877744181071742471860065257227400576969614987717462942965288e+60'); + BigNumber.config({ DECIMAL_PLACES : 56, ROUNDING_MODE : 6 }); + T('74561832673.7829007984960603332233266617918423177170', '0.00000000000000006873561532223891756546085942022131897875653674106575946797061921115929939619806214882799422660', '1.08476271470372583117204400816138572483447652824576914007705772365515600352921907957e+27'); + BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 6 }); + T('-0.00000000000001181612138264114852893', '-2014138394172789635968869539481440379570926693879119877148890105101899856887', '0'); + BigNumber.config({ DECIMAL_PLACES : 38, ROUNDING_MODE : 1 }); + T('0.000000000000000001366669157340155864638406598347121179240648516312903388337468824794236443', '0.09279854219071497335086066371807349978611087519054983041812503112761286510457945850068199743095099213533450370544152422434530999', '1.472726968632163443775e-17'); + BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 3 }); + T('-78371120871915218416109307836350714728084542.8509580566711220007561197751135664622126109003299', '43007007872.5122600819455753207310134111591735810929769934012081040632613037822382277069049207138502026056395', '-1.8222872212880862983930187423262228886865683284215449750904200136563208402080615970986029585126e+33'); + BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 5 }); + T('-0.0000000000000517794840657346263669444830486376125575898943952169421632193391568427990119566089652988965287', '-2481869359091334705649978843485179', '2.0863098162706e-47'); + BigNumber.config({ DECIMAL_PLACES : 1, ROUNDING_MODE : 2 }); + T('-3800753242813048078685520378088479159769007810051420138798.318437359569382034181747551050841109869610287520897097665424309018', '2120739344587363.708696', '-1.7921831141170099205343015684935713366086039e+42'); + BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 0 }); + T('0.00000000156378007339816589413849870302278061173107221245900492549184494264768908538501760700913700705661694518521990', '-147905231008539027703441521999592678242939864307282268778051433970041755560991878988691539683117377228346311196265663176368', '-1e-79'); + BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 2 }); + T('741656271869496797735790303832261133537103891264692918629895512112118849942429341763013083975.14426416177529688110423', '-0.000000000000000437337826800047678192062342330646339091550872169853273984551870245339880543712828', '-1.695842953480867168862390919936147283150013042613258578865996738907912123224955139261119258615822423702514014472e+108'); + BigNumber.config({ DECIMAL_PLACES : 99, ROUNDING_MODE : 2 }); + T('-0.0000000000000000003945300955779', '847727675538094603.20881447452191164062072672479536794', '-4.65397210640164923961095649499515968287606288438807723038872665e-37'); + BigNumber.config({ DECIMAL_PLACES : 66, ROUNDING_MODE : 5 }); + T('30406270810174239529374782771.278433634', '29987421017195.34213074507456021388181141951276966130667', '1013967516337557.710497632723045632319445155498074564685828152439862518088518960613'); + BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 2 }); + T('1321582320879431980643741421114187366478053138649637668992881959.2129046722412557062278480288961369942243087270503235048', '5353687452618.583059658211501436312520038528750985790285597473822087079065473605352932561835681782367558615873020688109276602501572923764050812', '2.46854589957996657645910450288106599408003631101543652425393688899855419319127475552578960011427121170083197322297744165290631533010105e+50'); + BigNumber.config({ DECIMAL_PLACES : 41, ROUNDING_MODE : 3 }); + T('-71114384870614983561285', '1133992198.158', '-62711529220509.29484829183226353193172706639273290971086'); + BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 5 }); + T('-39227358344309744601.6190052074465462527776360266851581447664962', '-1444964189776599171579507378211841602075962.41427204488178093029', '2.7147633568949932545095387341963803e-23'); + BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 3 }); + T('-115837657853606995844720884404547510799589826002075856641765645.884897817702221155047697110251074014', '-0.000000000000000005854147', '1.97872820504177629712272145548356593709706684854473002884563106947771925956456431735822674509324781219193846686801680928066890018306680717105327215e+79'); + BigNumber.config({ DECIMAL_PLACES : 66, ROUNDING_MODE : 3 }); + T('-0.010373063953923606543561967610595048856094941146349335325081365967597094701818986463775428252905398466576085651939530455129876', '-775977129938895143191026019050875712630.081238325561355555977712789958391927923556', '1.3367744426617883252061067e-41'); + BigNumber.config({ DECIMAL_PLACES : 77, ROUNDING_MODE : 5 }); + T('7.07270032357039696248182238248680345100011862565879980707827264424914118160062052198454592559803381016252310534580195317268199231287552134562708919', '-0.0000000042430', '-1666910281.3034166774644879525069063047372421931790713662687420797193356543956211458837'); + BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 1 }); + T('46.866633682813410785775987851527123392474653581600', '14744446532935759609287921364976802650424701828423320583228334739180.71031053744910344739840934476919166750128785863253737834003504018235025403581', '3.1785956548537e-66'); + BigNumber.config({ DECIMAL_PLACES : 25, ROUNDING_MODE : 4 }); + T('927926535231817963312783236933887609006699734378688849483896193306043550581226971475691162837812939291919734222589466', '69.511710136713279793', '1.33492117142105042044272745057547679402654942069096851346518705353507990873911816934880681475837540541622519330139834175120161949722916325495e+115'); + BigNumber.config({ DECIMAL_PLACES : 91, ROUNDING_MODE : 3 }); + T('787903250684746738646483568711405989.8072', '451387626240172731.019210241194149882', '1745513622620931050.6672583063048538001140979597440641826636496534946948935720003329273468561267262176104913662'); + BigNumber.config({ DECIMAL_PLACES : 87, ROUNDING_MODE : 3 }); + T('-35722157.881486131645169672', '100206671548947719359824357693430577834853556935970147502331389167925089539796326', '-3.56484826102991e-73'); + BigNumber.config({ DECIMAL_PLACES : 37, ROUNDING_MODE : 3 }); + T('0.0000000000000000059667', '-4900078900071412352023154638895657134937627488698766471691.9372614175301411259218255283959138249', '-1e-37'); + BigNumber.config({ DECIMAL_PLACES : 71, ROUNDING_MODE : 4 }); + T('-0.00000000008650', '-22396792171036667264820309801315647978357144334162083.12866630502374705743738714172542142604509322806665229821313430180867933237369724', '3.86216023e-63'); + BigNumber.config({ DECIMAL_PLACES : 67, ROUNDING_MODE : 4 }); + T('-0.0000000000108218545232858599713247632273393827652613606236609120082718375337518468', '-63988964186730552742407129236660184331567940737451910.3304633376739900323747684284915260758624361563', '1.691e-64'); + BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 4 }); + T('-611570462009056827.435569946920300837761877488706885146112946472249255617564245022342854093878918337418143372753709154', '-0.00003825691236243693776344', '1.59858813543336415108781383220135731029245763562744870737466231608092674465245313558622952768650754e+22'); + BigNumber.config({ DECIMAL_PLACES : 31, ROUNDING_MODE : 6 }); + T('-0.00000000000002350727657', '-915612530549.4986498012664321383', '2.56738e-26'); + BigNumber.config({ DECIMAL_PLACES : 30, ROUNDING_MODE : 2 }); + T('0', '2081391145458817054585942415346886612310280066727237054540620444.4205926710227810347374001861892887965917226', '0'); + BigNumber.config({ DECIMAL_PLACES : 45, ROUNDING_MODE : 0 }); + T('64396.051084014341723823184970', '86155258221040764790041031697500330477136224068314716800965714827382301059502', '1e-45'); + BigNumber.config({ DECIMAL_PLACES : 93, ROUNDING_MODE : 4 }); + T('161926311334485920669832025449.009880427298015253186', '-86582605145623002508536223281526203729561742002210759062959789469031200041674589645110030900182321286311210186122668939505495973', '0'); + BigNumber.config({ DECIMAL_PLACES : 53, ROUNDING_MODE : 4 }); + T('42087279734600054895122284961359726', '-1582252444748.4434081621928924796519078616601687577335016738990864202624769180498313201555599178778167228264', '-2.659959848650533084475129893774578626283565245686747443405755946430798508683e+22'); + BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 3 }); + T('-24393115207688675596870569.60246572272274488061', '688252683.929', '-35442092384495610.853541920910354488'); + BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 1 }); + T('-1567344498539073681247622389927625227296212807940565689018967154193560163921622741787409136074905827768114983650967330722209873040961151534', '258.33717', '-6.067049888868387314328876444406452340157681559879926256910560544553306688006308739030504731761619234925098016870616530800464652612557269764935491087093661357364873200399307618024924558862e+135'); + BigNumber.config({ DECIMAL_PLACES : 36, ROUNDING_MODE : 4 }); + T('-0.0129422056645921791719601465787390482811787325920494010286599323572427445323507748474706026834212758691218654442246584732314391687165342190568', '0.00003154136776197801492301730977304527456305458680388423929845888122232881776610108874270552996290271983429445948093446850212726414607906194786215098186', '-410.324807797128661323887265083889695306'); + BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 1 }); + T('-406970415760561057780064386617119757.263519308742495691905858945535446149666597', '818672923102846493332563572860615696408176367551324730.55063831266', '-4.97109901006748024156434129695480500183959174647946e-19'); + BigNumber.config({ DECIMAL_PLACES : 30, ROUNDING_MODE : 5 }); + T('-78183.4852518372967216919908152105019548353604155968802880295485344023361930011504010144273262654014301571795708830431176358087718130912170253094607', '10607986437598718347213922016340671665645380719280718296850684653.76305', '0'); + BigNumber.config({ DECIMAL_PLACES : 67, ROUNDING_MODE : 1 }); + T('0.000000000000004145660464', '-5669081450251908.97', '-7.31275516215380030908528456273152405e-31'); + BigNumber.config({ DECIMAL_PLACES : 27, ROUNDING_MODE : 2 }); + T('8085929460048766432605442731895337580721930731531160363205580.26505446576581110416693140843978', '-1243721289394947316887845245824193097361966.249653947607831559997614092106', '-6501399894812812831.198713198187909917407983439'); + BigNumber.config({ DECIMAL_PLACES : 88, ROUNDING_MODE : 1 }); + T('-2.9', '-1699646950681199591783028036599109.904466', '1.7062366974727970760023478564214356178487652157693874893e-33'); + BigNumber.config({ DECIMAL_PLACES : 21, ROUNDING_MODE : 6 }); + T('32574896572752', '2109.25', '15443829120.659950219272253170558'); + BigNumber.config({ DECIMAL_PLACES : 48, ROUNDING_MODE : 2 }); + T('620515750041051508976194269482692426.792374124676375501721806655902069776290778032909930175761860106409778247875', '-0.00000000000000000025502027337128501334086671256562706677428', '-2.433201650355225687343826966938669897350496730043906032795984741439204415735680231346983110085327281725e+54'); + BigNumber.config({ DECIMAL_PLACES : 74, ROUNDING_MODE : 5 }); + T('-253.813', '-1869585213725782328284740947349296462812912473332034597003.3796368114407427121179229153285713', '1.3575898982116549522e-55'); + BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 4 }); + T('-7749.189083081911855387', '-1189424888787048603763869473895462110995036714135783822648383660167677227173.24822876013469206546', '6.51507224721384284654098e-72'); + BigNumber.config({ DECIMAL_PLACES : 5, ROUNDING_MODE : 3 }); + T('-0.000000238652049254131502728658064452379793668878410887660555167523377063582772456856506170027418975766063658718364642', '3959898526590884727868890244043572810183271778744890639631359016535003209034837033601678211117581133648954265931607133', '-0.00001'); + BigNumber.config({ DECIMAL_PLACES : 62, ROUNDING_MODE : 5 }); + T('-3453361.707350403941292074070462462215003897171541056568419329951886979682783151212845680167855795597', '806968173732110495460370343360332907753082343769580247019418335040085295622247944.113181040401', '0'); + BigNumber.config({ DECIMAL_PLACES : 42, ROUNDING_MODE : 2 }); + T('-724857600294781667694752928854814757656504767543457037538172015151996311767.09336880355830077089902713137225902023265589', '35576495139923912764190751090614238451172063111222.28063124953341132555160276949186755806110953', '-2.0374620868185159744695260524883428541795538598441228267669481351163e+25'); + BigNumber.config({ DECIMAL_PLACES : 55, ROUNDING_MODE : 5 }); + T('90459314193271192639929240904675200094595891741', '-0.000000000019889929160726332308405810144349653373871391299062112473', '-4.5479957953740563425543786103581716954987416312106136180058330915250854154594112110449049208323220551385018515955e+57'); + BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 0 }); + T('44600.84022950209680023', '-0.00000000000000000115311776106711337183380070428186718210460174435684789414208726423071388959408295974956801272167126248976268399', '-3.8678478239922152849528900064954332217596446721701658710556060137824772796869614416953897607521919019343e+22'); + BigNumber.config({ DECIMAL_PLACES : 35, ROUNDING_MODE : 0 }); + T('-10715501213702182653755677059471903986745712416039481030034888018947251957554262751035425774219408354219229431010174855261565', '-2381854567973257344135529417942273596912976138767390831640225026922807713902.0071335774919922551743584084296711', '4.49880582877908634337568444276962272138025492001094392161322382200062887587834825326e+48'); + BigNumber.config({ DECIMAL_PLACES : 33, ROUNDING_MODE : 3 }); + T('2777668415334837530456350437716178428331624492107076073.41625457761506567113771425576298699683994847170140889', '184494.12575792230943', '1.5055592712905453936018666314097684118462644696286316455992236418268694912929902592e+49'); + BigNumber.config({ DECIMAL_PLACES : 80, ROUNDING_MODE : 2 }); + T('-428671235661827622145886760609974763913477446573786520227211838324915172681321030', '-54033836316293132277076121712987415255211481254501215369680720161566364356486560208721024943916240198460611516.16193777087396874626696220631068', '7.93338516911056208275506907306087670605307211111003e-30'); + BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 0 }); + T('-978985672242747393376284400.086508828304570555143389028101128064378740092651676', '-0.00000000017031419270073073837437059', '5.7481156251198730821256455176555394133620762834287734861999760249384322e+36'); + BigNumber.config({ DECIMAL_PLACES : 96, ROUNDING_MODE : 4 }); + T('-0.0000000000000000001378730557', '-1699779642968351661661031.311690625306919991313407575', '8.1112311393040415341897777811568499173559964608262755e-44'); + BigNumber.config({ DECIMAL_PLACES : 41, ROUNDING_MODE : 1 }); + T('25035.81', '-15426707.4618102211736741817027124267128929389864672346971215453628022333618070343283714435933840549370440817800415731266379926224', '-0.00162288745423984430491332103031999704602'); + BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 4 }); + T('-2606249681620290829340667099634910134015377448379297907355930709477129127287931080970.3823', '0.00000000000033908909007639111913931032300995225563862871453348017661978845392733842725731860200639', '-7.68603224902678592253345758414787292010555942627904562046643516437873453392526609764369131977904478093051086927914850258545236259386289331867081963276534886186775e+96'); + BigNumber.config({ DECIMAL_PLACES : 66, ROUNDING_MODE : 5 }); + T('-18.676019163851617971086645663075862553105101236104859133581502931178', '0.0000000000006375599116277133928718524563585300723831600550472104160406441918422002752', '-29292963411346.031950995103512983839156509002886050570463618693933772717951886862'); + BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 2 }); + T('0.0000000000000000002964729033966907', '13895575541.08962049977303092171871262', '1e-17'); + BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 6 }); + T('-58980089059039419671272933750401215.5085969954169088', '-0.0000000000125213936688911194374', '4.710345399136598676040815418635405786309422752100955873790600841e+45'); + BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 4 }); + T('39690352436779.4736', '-0.248929065534135392063186265360632', '-159444427879944.680634442270293792464789705288807312174022895428661121490808590177215482036142766'); + BigNumber.config({ DECIMAL_PLACES : 58, ROUNDING_MODE : 6 }); + T('-17123758708.9649564601228520', '5545507646642530171986596252367364902598174165564195515271857107056083463857906774263438570754254091969296', '0'); + BigNumber.config({ DECIMAL_PLACES : 5, ROUNDING_MODE : 3 }); + T('23365731929760087456.804640391878252648454186223486144064', '-117757934162037809278172617398911796345898781763536011679981980116.750540814266830722899218955991265238892913561', '-0.00001'); + BigNumber.config({ DECIMAL_PLACES : 100, ROUNDING_MODE : 3 }); + T('444807234941979522201.4377324457637171347360541790112723107359368409461559006408932036173841116665180019', '10596400391', '41977201552.3096254622677679871528475857812698783110065579944483659655019448236790586952995509611182643258803601'); + BigNumber.config({ DECIMAL_PLACES : 99, ROUNDING_MODE : 0 }); + T('0.000000000000000316569832379940145341666909905669974831156007789376490451096259060196030786124754300574665663045', '8171371376785690519385585.66701351562686282609022822813906461874031199730400050192', '3.8741334567083008327580963619961298167968009906262279841008e-41'); + BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 5 }); + T('-472774357119430324036326668012132089659224779691780449119591400743359784143595980403408625527315308155508917631466423744737135', '-0.000000610999707968028327893541028926736631403178652', '7.73771821743929709056982083941520742372719279283796163835376988970165864888874811606092407408406612567500206742994576505018921387373967309708278272562624909756996817913608228003053914858831348442647458554996e+131'); + BigNumber.config({ DECIMAL_PLACES : 19, ROUNDING_MODE : 2 }); + T('-0.000000000000000011185187492603045638053', '-0.00000000000000000041164932486862498504970881233015226828321374130173621404210045031592096096', '27.1716405612294404297'); + BigNumber.config({ DECIMAL_PLACES : 39, ROUNDING_MODE : 0 }); + T('-54591088934771685301979038853788129815502105752730536628129386943849491450034859339399639788058404794249160.9775031630212873970742766620803112572621', '-2192151722.637650', '2.4902970159878517012397056375294605095675718386007277829874517342203381243325672186112045450193551435639746702061290325559872583574490985e+97'); + BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 3 }); + T('-3231763423467127269100.18505608', '-3.13326711', '1.0314356580556986949957755296770724408491301592222056037858834193041396971737912252236931054371550212327732250060225474e+21'); + BigNumber.config({ DECIMAL_PLACES : 30, ROUNDING_MODE : 5 }); + T('1955114107801948058.5092090650976512', '-22524335.791647136092584364897400645950764607967220096', '-86800078185.967077384347495790490734197197'); + BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 6 }); + T('-30.790', '-213014.6489630208957', '0.0001445440496693028350771572054962468560063314976370719645271743152409028882684'); + BigNumber.config({ DECIMAL_PLACES : 83, ROUNDING_MODE : 6 }); + T('34179925021617590935187180066109531776226514967114162257854629299928499', '0.000000003063508106169776354847939', '1.115711917092063862544394218888964553782373466442043171279573403322669964006576523132474048453129637844536324535553852396281087914037409662317072309775853147240349e+79'); + BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 5 }); + T('304537523646.1753115318713779438263463839108727690259207871526017494105154110757369332548256496615515146708977376629630738464401627358793118283', '1645972458153509472825876526525124262646183411615223661149854250942320470406467.99248631705447915', '0'); + BigNumber.config({ DECIMAL_PLACES : 89, ROUNDING_MODE : 3 }); + T('10730', '600087011262096100947134546613401985681628488732289866802893293.4789959830436760144858111835538414084803511922254436397019080617747577133132694693548', '1.788074029036687096006233786675e-59'); + BigNumber.config({ DECIMAL_PLACES : 53, ROUNDING_MODE : 4 }); + T('-15944715365282477655012697051418033363146962116842560336620509095388747479936979318196.9150740135476751963209781689565411283717995989206', '-1137392888500286967783149313346277.16933385670644329340911202', '1.401865224100920229505756531471088159424213471155142253519954330647372862437731950075994514683169998514756e+52'); + BigNumber.config({ DECIMAL_PLACES : 94, ROUNDING_MODE : 0 }); + T('-77616949049052624869493746.7161905624535278878167162906431', '3378695176523.7711316772863751051858448279547509', '-22972462738976.6966249948641494590524792517967393648725860242712522790826048944088891928847068057083265738944'); + BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 5 }); + T('-616684354616574331148.6921559', '2964745499577529510416017186535082094815367092403859067055344008400002.66303665626590704', '0'); + BigNumber.config({ DECIMAL_PLACES : 42, ROUNDING_MODE : 6 }); + T('-1830435241775442899837854942212586718896268738896751218940459076163231291718573878', '260711614318.2277418681340041036233554343169895542755968880936961527552712599392668923941074322045', '-7.020919442204793990907303359587024014267306822240973218186509927227632239199091884881925114776171913063759715175e+69'); + BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 5 }); + T('-7.139876352757289461542505822558172659517318708717430099678198183806433553136298542230251443427747760829103651954310325030796995376', '-574567782248709473337780865800359181439010460721072288856336.06275720688321566', '0'); + BigNumber.config({ DECIMAL_PLACES : 37, ROUNDING_MODE : 2 }); + T('0.00000000132628378738601974691', '0.0000000000002978470409072811377360391343289749273535256379495688261910048831854626823170399869004467475206207549926', '4452.9023466071223660735776959961287235709'); + BigNumber.config({ DECIMAL_PLACES : 43, ROUNDING_MODE : 4 }); + T('-21847487066.7605217478921936229274321792356598452089386602086133607661585870779419', '2304935.749886714939313409', '-9478.5666228806168427849323830261036170085281053'); + BigNumber.config({ DECIMAL_PLACES : 100, ROUNDING_MODE : 1 }); + T('-2442312258500177154631833803193441592681917803929450596619096717808766254347447296555677450630527111828582774828661145181840466593999746747.51896', '-61343.55195783684341328877097596738024920167710546025', '3.98136752853640979247682810971631609686625145909735333930926456883544863739349358178072866001923197043975305147205378033628453560140556665797994093620519482465738244274740136379187291999268888231119420014170199550896828313558969806741e+133'); + BigNumber.config({ DECIMAL_PLACES : 30, ROUNDING_MODE : 6 }); + T('9275485496', '84678132215204827584759285347242680917856', '0'); + BigNumber.config({ DECIMAL_PLACES : 5, ROUNDING_MODE : 3 }); + T('-19794976320208680629831215516378854942', '-52750113072939297803954990926911853555613103143494221215262490371480858.0906154181519291193065190739944573225307343060444', '0'); + BigNumber.config({ DECIMAL_PLACES : 56, ROUNDING_MODE : 3 }); + T('18848799841030076029.711579280668537234365244317138', '743933756033367782502360177590134864044887', '2.533666430399838950967086928619016e-23'); + BigNumber.config({ DECIMAL_PLACES : 27, ROUNDING_MODE : 4 }); + T('-594784739002268205667736419524886418.55764520', '540342359808684924587533359548099389095421413554428744755.1538583364878', '-1.100755e-21'); + BigNumber.config({ DECIMAL_PLACES : 2, ROUNDING_MODE : 6 }); + T('-1726.075138495709002661567448098686057504327383296796313150002411931406077373073513344429353556354725453809', '207446120536', '0'); + BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 2 }); + T('-0.0003059309163364787587041720955829015320065042366262609333245079352877246189593335615545342001672654994603853127687340113897933341007388519584605192', '19221450817116751204809732739853558613080514439575062008086842670295721483726006065798', '0'); + BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 3 }); + T('3080212117568931.9406', '4807128.444773379988516521143439853225061609533551472005759', '640759270.93604856109428814416757191472828207863181401'); + BigNumber.config({ DECIMAL_PLACES : 40, ROUNDING_MODE : 0 }); + T('0.000005619525024600401578782145633650268269238119434994207418753350684434625741830141462900912224038939300796144023025797602584566889341737912', '-0.0000069522639073796584507616524', '-0.8083014539530659823420212243849918237162'); + BigNumber.config({ DECIMAL_PLACES : 31, ROUNDING_MODE : 5 }); + T('3.864084', '102777249767124272827613.3573725', '3.75966861e-23'); + BigNumber.config({ DECIMAL_PLACES : 29, ROUNDING_MODE : 1 }); + T('-0.00000000000411953726181119004487833370002571174457065444710109901614680047196797796656796232677318573024328647057612847991371591299583195680200706', '377302087299171244933.05643480446431808131642449619462015572621321620129', '0'); + BigNumber.config({ DECIMAL_PLACES : 73, ROUNDING_MODE : 0 }); + T('-0.0000003193716624856563111935912371', '-5900693350171710730666551514921044468319047071273346378968698377579186138999581.30001230345108893279944871641', '1e-73'); + BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 0 }); + T('-179140388919344089254559094470262868418890624293750229460657170016298574966364977731008988659834641373781925948643291802091117038363735399985614', '-2342120530200004205488612809319553814303876.5177054493274516', '7.64864090508811200171925277947156369591644992014204322002567749382687218201510689321037413380175604998297096738437747e+100'); + BigNumber.config({ DECIMAL_PLACES : 59, ROUNDING_MODE : 6 }); + T('5122342360245340.2307953867169401811656978279121415427296587169957180771857874129658501373773578101964297176290109172', '-173381699.14828534877', '-29543731.46305618857056463280272225752453363229341936621254410075321'); + BigNumber.config({ DECIMAL_PLACES : 45, ROUNDING_MODE : 6 }); + T('174745315127421168141969852.302663004789400219681591352365728', '0.00000000000054859224166677445926266873407403088122175847297895300263721834565064', '3.18534062013886177412996818235873849681823288208176164339043124338500898204261604483e+38'); + BigNumber.config({ DECIMAL_PLACES : 94, ROUNDING_MODE : 6 }); + T('0.0000000000000000003438865298049905811857297760239525241590283770344974582124294742221853527597457038851486391', '-0.000001408257562047358432010666435253252367692495164316050607062209445651913855651914611164162643579923894622459642391547666557661182253651721761070', '-2.44192922568113280448908287037936546425898689105833556608787796260451693810871813e-13'); + BigNumber.config({ DECIMAL_PLACES : 5, ROUNDING_MODE : 4 }); + T('0.333646134598859999543235659901387624660147', '26910.5148946258', '0.00001'); + BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 6 }); + T('0.00000000000000015741890085344004822612249961739147736218583594913176676336253154215235', '62123145933223032.424807076475104916', '2.5339814732282174972275675581954338603635890679015484811821792961e-33'); + BigNumber.config({ DECIMAL_PLACES : 49, ROUNDING_MODE : 0 }); + T('-0.00001111772731670302871436022591511635045245989853584437206248415827174517169914210538893490462', '-2989189.6', '3.7193115206553069481976740167690769607e-12'); + BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 3 }); + T('6144637543780035324041015542995572258526302.8252871899307509340889062293501037871784543277116702587456051549850203393161254', '-21341451922355.6', '-2.87920314238011329822491105116231108390047570221e+29'); + BigNumber.config({ DECIMAL_PLACES : 93, ROUNDING_MODE : 3 }); + T('17595014339836146135415402521949745038609937060624032692727913036850044940221238920872909675776808297288.7193819', '1047196892822332476619839790751710405870401699', '1.6802011599189607148737162149648470300229147254640276162383230992448471244724389879879553601659802830372798231756267150860965026188138336217927443534513e+58'); + BigNumber.config({ DECIMAL_PLACES : 19, ROUNDING_MODE : 0 }); + T('-861013991813852618661450041364763949463695247908562946826280097460259583454703930312.069436995804002', '-0.00000000660203117661869333391008179789075205463628255825253006598363232603233429020945770285962300076652626', '1.304165292134883401534205906114798959117533361222113075961516083831659756781081432844245620956768431433575470252e+92'); + BigNumber.config({ DECIMAL_PLACES : 28, ROUNDING_MODE : 1 }); + T('18964485733678635745669304324510.902018555784104664269930761786760150966793464250656714301947', '-0.000000000000860215048722322553274488581158728716058099505080456408033247509564134988530705172526450476527006322758428608526775577840014111509567748', '-2.2046214794598847316603626888696975599518688754676585469606709377707177e+43'); + BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 5 }); + T('-0.0000000000000000045434184846937299216855854', '0.000000000000128896028168154367112959974017842928472622282602167727915227416370640935480721242519522231389', '-0.00003524870819732712'); + BigNumber.config({ DECIMAL_PLACES : 91, ROUNDING_MODE : 5 }); + T('-227.96443', '-3328395901354856091398502.9371246353045885377841478141934677904755836332251199452045365605447632170806766', '6.84907795695833089133170482400915385505896729289772851240872190258238e-23'); + BigNumber.config({ DECIMAL_PLACES : 64, ROUNDING_MODE : 6 }); + T('114008071806506716387885.38507236728281799424116444188215400334013368403508847006385630841', '-0.092161198210375125931229751981334900000406137583559552739482677605716216810182233366016217607914141', '-1.2370506679639952849967075598921609673812502409262589476568309350924370850875602067261353e+24'); + BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 2 }); + T('-0.00000000000313461925140003543282334451012255842223674671', '19900672650541044585807033236451300959160004287619.0648430649265053', '0'); + BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 6 }); + T('3134463.4599489676245689666482931402073621138180301351868682447', '-336216719580496.76450216809998', '-9.322747137e-9'); + BigNumber.config({ DECIMAL_PLACES : 38, ROUNDING_MODE : 6 }); + T('0.088282583111744550504636202154743748642063399', '0.000000000000000000550996644346331159832365099069695862403708163738892236086493022930354750458616053625423159680048909673004643337040164590864054509233', '160223449666336220.64193808051820590117106550792750292994'); + BigNumber.config({ DECIMAL_PLACES : 82, ROUNDING_MODE : 2 }); + T('26556317805978922234443810', '624803506430721758008370872058372614424539594328229548210393601746497748101', '4.25034711435690189965542552901251e-50'); + BigNumber.config({ DECIMAL_PLACES : 25, ROUNDING_MODE : 5 }); + T('170125016.39083', '-351725053753483997156877582904.929166310992204939591082080976355143002732995877138789215733131507530240637133709062658643626820354805857', '-4.837e-22'); + BigNumber.config({ DECIMAL_PLACES : 46, ROUNDING_MODE : 0 }); + T('0.00000000000000060672902231713', '-302299787979.930507332617490784681098721426', '-2.0070441543194544283e-27'); + BigNumber.config({ DECIMAL_PLACES : 27, ROUNDING_MODE : 1 }); + T('0.000000000000000000737973423458099877024435030273911792718652674094341316578909012531335052924748', '96417848024254236645960941993928926.52250382680747393523941801', '0'); + BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 4 }); + T('-242859957233290455808872183680612124624710994232560919295721829.560013320945976377903570349006502732418839412155469', '8645849305546729917012.6166017448611858420073279623841460173130', '-2.80897744860628166749205149100563693174029572744220253953e+40'); + BigNumber.config({ DECIMAL_PLACES : 21, ROUNDING_MODE : 5 }); + T('195917418.5428342557982429', '-21867750879399792910325752536547917341411054205106', '0'); + BigNumber.config({ DECIMAL_PLACES : 56, ROUNDING_MODE : 0 }); + T('0.000000000067', '29554560673814924103706759848299150511394.639506674963', '2.267e-51'); + BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 0 }); + T('-445586580996158504033858168624533127598605610225961613540082052766034223414816798644', '-3.745', '1.1898173057307303178474183407864703006638334051427546422966142931002248956336897160053404539385847797063e+83'); + BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 5 }); + T('1173951598490.437863081165954920089348336351184472248', '-7591038.2297423708983385790992056156', '-154649.67544107337739455436720295321871040946156129707750914127'); + BigNumber.config({ DECIMAL_PLACES : 23, ROUNDING_MODE : 5 }); + T('-25848403775018429509421533550444829754070452453812121903169467045390.16089260751648127767043200260198750554242867590127133018718650', '-60764778736329651.1347128739950', '4.2538464407448510615791123884099536854965211831513714291799033426530933441e+50'); + BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 0 }); + T('4.17214688', '-251219516428004386511040705610.96384233764396213404273184885321515253613560740334', '-1.66075746793966643415893578323122980582414069211921e-29'); + BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 4 }); + T('738385014447825.2744649613568248193081196823091559906213393391515924596507031', '528744046652952500045873047514118006519343831570.6055160188912265483205', '1.4e-33'); + BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 1 }); + T('-24721813728700698141804102457096980045.40077868084852547588922466', '-47549165347852161039888817749.7398279014650027', '519921086.89700491048524453452992996114180195745096554852'); + BigNumber.config({ DECIMAL_PLACES : 7, ROUNDING_MODE : 6 }); + T('-2380649854558566804310287486793735744438489385384174596945829539944405989796377753690487014587', '1846210304.96632772276', '-1.2894792365499154261619289250592786417884611467624141065080783828418902110954692888923809688e+84'); + BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 1 }); + T('81379907744436270679953689228755.9789616404508106358141594775005145024091926647', '-29729588870688562494924450.87029786825008317879507669951862227147246427970218894287270952528817811236641140349341304337560139234485857703022584735', '-2737337.139050434604615498118226220078861478940583254360625857665497809765444'); + BigNumber.config({ DECIMAL_PLACES : 55, ROUNDING_MODE : 2 }); + T('-7709844161214836750776020358.1274071795526616454682187697436077137192366756444845181440101779945305669742181078575280047406690188175382988464771965448', '68329325585523340776034875809953930863439150253064542777137685289943715986380923062138742429709226.765893490', '0'); + BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 3 }); + T('-48889782335266.086377', '0.00000000005213840929633658919173773558172137649863371740047717294985055200995827641435326516992288634783610601433819227055942786241582560435309996523457837', '-9.37692250206437316476205308e+23'); + BigNumber.config({ DECIMAL_PLACES : 27, ROUNDING_MODE : 4 }); + T('-0.07242273692298414', '-1786429774361846114108686636547373632377616190672350167658470002491036392680741614785076789310542626932592607813720533873534644187068', '0'); + BigNumber.config({ DECIMAL_PLACES : 82, ROUNDING_MODE : 1 }); + T('254974601967092218788476192946586504128676814334312654261585473166410687842163972307817871765635884357606460617712028784428411968638179161986126066', '2.6', '9.80671546027277764571062280563794246648756978208894824083021050640041107085246047337761045252445709067717156221969341478570815263992996776869715638461538461538461538461538461538461538461538461538461538461538461538461538461538461e+145'); + BigNumber.config({ DECIMAL_PLACES : 100, ROUNDING_MODE : 4 }); + T('10596945659336642172981413532963922636047011774616658548152', '-7', '-1.5138493799052345961402019332805603765781445392309512211645714285714285714285714285714285714285714285714285714285714285714285714285714285714285714285714285714e+57'); + BigNumber.config({ DECIMAL_PLACES : 87, ROUNDING_MODE : 1 }); + T('-11448.03560573913408027230411238283731632036730013355696241879027857826220399937671363883127461428783892', '-29804998339189975833666.7', '3.84097844108461125189805266746392343944172935238361545336748001974929e-19'); + BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 3 }); + T('-0.00000001118626577241983092169798799781615911598627213942989996546499679308452345843584760', '-479705453526334356888471993672585986608943898326919381025096414969.578', '2.331902981337638528284e-74'); + BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 4 }); + T('0.00000000000000000011023215294540131868482738585488798510803328353366743199871644564131839025', '9512617014966774607479593080377169504319326736213932454132662404835550339069903337929.267907379699416441528929275593487733629226173', '0'); + BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 6 }); + T('0.922318702393468161912', '-32856722913699753279344300924099688774532365173499801898301087134616100249271607979170323503344120562205518024520829362642880218.77477287729539110', '0'); + BigNumber.config({ DECIMAL_PLACES : 46, ROUNDING_MODE : 2 }); + T('990692197960318254345', '0.0000000019958514844476048474683772034868524380391155636316290667434779936180379', '4.963757101568676040392331432075075194536862716171906745009359584710099259584e+29'); + BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 0 }); + T('0.00000267577961293328590073330190603567586341977186329292283763326749435838585647273148748215125445518770966989536299055', '-0.000000000534924956459176991809287804932124460735595310705292913481', '-5002.158864759358209231'); + BigNumber.config({ DECIMAL_PLACES : 48, ROUNDING_MODE : 2 }); + T('-63.951', '-216987286235939383658727229.045550401204225424540632964306866889027056674906447443646897344466142216395389523166083598078', '2.94722336544931916265034e-25'); + BigNumber.config({ DECIMAL_PLACES : 86, ROUNDING_MODE : 0 }); + T('11510789089121773842747277991574245143192006347968441716186024266177181695494787551.6929006029617554949340615133422', '-3.3', '-3.48811790579447692204462969441643792217939586302073991399576492914460051378629925808875775847325924088910954949763636363636363636363636363636363636363636363636363636364e+81'); + BigNumber.config({ DECIMAL_PLACES : 87, ROUNDING_MODE : 6 }); + T('-1076837418780017750394539423290227716329', '26829833853133634906257281252196280791658739654971532905910450901148784990323817887790641264728864411617819849939207835877874123191782272043204768', '0'); + BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 5 }); + T('-2535671051453184672175486679554799383311689468486426700142900252467439606395321615032170668.747374421788445865648420951070', '-2307678829387103212120719168615890.54676473', '1.09879720659682697294120796567016077464429761317598727017821612650108853106909408362925385398123039506e+57'); + BigNumber.config({ DECIMAL_PLACES : 28, ROUNDING_MODE : 3 }); + T('-4193824453980527155063464781349417.7109221225817851', '-7205240544019522682059877113650053149717497163473051082147335294423284132906750379765359943362406856556', '0'); + BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 1 }); + T('0.00000000000002128789105780', '-0.000000000000000016728489676192358971910290882587685072991599967864946424620907043629', '-1272.553079797543642747971299307201473084777079061726229515761106118100904782849'); + BigNumber.config({ DECIMAL_PLACES : 1, ROUNDING_MODE : 1 }); + T('-16578303926910104271772733073671801041619099273970.7007444012126329543881758056281271923657016113802926145816768678539250147490504399773', '2015', '-8.2274461175732527403338625675790575888928532377e+45'); + BigNumber.config({ DECIMAL_PLACES : 37, ROUNDING_MODE : 3 }); + T('-14487.591832004633901826097169041931482452603200325693594573981988040294642062553194913546730', '-0.00000000066944947318505386532993382047344447', '21641053451094.2445851912759442973222376073188132058'); + BigNumber.config({ DECIMAL_PLACES : 64, ROUNDING_MODE : 4 }); + T('-8229686739239381708662.33742735636146287063045609345953036', '-2647244213404262439882911637252785489226846626705592856444818166118.7', '3.1087750414444368927e-45'); + BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 3 }); + T('-29162473874916196402533253712288473659347188759.49669762440', '-342112791962012114732057946746742.191015086162490635163887048014672922771760017567924296835526832702720786302676', '85242278453459.2038768349559818828137934016217733'); + BigNumber.config({ DECIMAL_PLACES : 73, ROUNDING_MODE : 5 }); + T('42022948694867103603050802418471699.1269555229356577653143747225594108213237028987180', '-0.000000002589549669491921474956130959610694089747921144409250333417143147530431052981800286455172670362396763146881330017477403135680204127703', '-1.62278983060062911397750404176294133187723113887495920654288635923375022321120285877424175386244553506331367297632269e+43'); + BigNumber.config({ DECIMAL_PLACES : 88, ROUNDING_MODE : 0 }); + T('-37576455182.53312629439138776368260835830547508779050377503250764898041507099064344909409375764836587845407908603082292960740372745757708380884582', '15038952368828403397463320963862224104336906303009770585448088037198731970025090722789.7309099945900396936924597893781107548630293', '-2.4986085640127e-75'); + BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 0 }); + T('-0.0025704619610525559048889484855316342846745707345232655654692885805316949824786950649707239599785246562460', '-0.0000001639379851158592830936587952150943293166731179544000508788937965215435683602082130899079539094330583016631933626587077980930603716999951112886316', '15679.47757340034936962097683761989900805628460355961239705163'); + BigNumber.config({ DECIMAL_PLACES : 90, ROUNDING_MODE : 6 }); + T('621373835929896923161801956794.974604713304611881031233924255943294696036229565470839021148054348533973666104715286', '-0.0000221383907720096686562557702482112891193705479203958187839941824986391636718743', '-2.806770565797046570282244463495974404992490502007941326057620478345027487811424868013719227888450907836431924130958601787532e+34'); + BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 5 }); + T('-43815643032.093360955997667723954809856085692571904587', '-1443751908.07452438952296212150242732791674974781', '30.348457229420098337290930523241306667023389446013778578'); + BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 2 }); + T('-3648429077136707350006880.75508', '0.0000023813463506255787368356136470956577201394502017369806001746304788424813592215178160715343676417785000441442827533703991799529845172346996453662553', '-1.532086702204518249148905726541046045137e+30'); + BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 5 }); + T('-0.04102112755155243972860649114120550483844385123706738747864642737382503804224115885148147411378510728916810716421199', '-14345529964500998791249238442530092529872.23503597601326051620033137282158705769490871091028249206709104185199335720933172264039161327827', '2.85951e-42'); + BigNumber.config({ DECIMAL_PLACES : 39, ROUNDING_MODE : 2 }); + T('1483258325481.3703925', '5298367435599816838756.10465279563065128', '2.79946293553620614777007967985e-10'); + BigNumber.config({ DECIMAL_PLACES : 86, ROUNDING_MODE : 4 }); + T('15515711874492474279222649369110669742122491321521.384973179583240063940459149', '-0.00000000003851323858035178818868749158219136', '-4.0286697370623331350755811339199681973498641888036843097290579232484043908475099653101953714524328611085687323672558113562209907437467488034062014e+59'); + BigNumber.config({ DECIMAL_PLACES : 36, ROUNDING_MODE : 0 }); + T('1809441079505642251898574656526689262311176960954786766599586418966862504429126490564103686114541927452962102425362715821995439860.987664807608101612802', '8886507515234135658487361057354722120364139720518634483728476753617706207706378.0739530020162157090529669348095124438355675820458749525', '2.03616671274256873060301686909046894475972477482978706249459495430864061921907781920236e+50'); + BigNumber.config({ DECIMAL_PLACES : 55, ROUNDING_MODE : 3 }); + T('0.00011338640403965278766556287752138008589690261166663786562173105522347361014923788385015003240560715164368513988676785124410986436194123266260627', '1194173291180361867938', '9.49497069454448895061719689639e-26'); + BigNumber.config({ DECIMAL_PLACES : 49, ROUNDING_MODE : 4 }); + T('-3607506.157514134444092621724996152494529158024654713067567207423189505690130453507527458454805514268983007962623628550027832', '-1049845587607603619455497940480584252205596763467473908071260521.99', '0'); + BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 4 }); + T('-2562573.457663482', '-64955620770904.9955952239222783363137640723336', '3.945114259936860102647311789451947576470640755487579267426703618724419529e-8'); + BigNumber.config({ DECIMAL_PLACES : 7, ROUNDING_MODE : 0 }); + T('1406524264866972950639758682647075849863477030298985657607215488204258.6812436400728750049833307611664374', '1360927253153346699297527569240275447559659.061092022245761564304848418732594389246', '1.0335043710881499017374911911396637e+27'); + BigNumber.config({ DECIMAL_PLACES : 29, ROUNDING_MODE : 2 }); + T('3.8499', '0.00000000000668010879682', '576322948786.80822940219928296661780715815'); + BigNumber.config({ DECIMAL_PLACES : 87, ROUNDING_MODE : 2 }); + T('812797217.913702325057604386169507459762507442451919184136830102450280614819341527456349446992755422236', '87740481081428271910312490106725838669473203724.90802817767034615465582676442943074383785527274486301804761', '9.263651257614819909298611813847881172603160519276e-39'); + BigNumber.config({ DECIMAL_PLACES : 56, ROUNDING_MODE : 2 }); + T('-14.4360070704007068204479133257569394125619', '794798851202363424.12766171785375637418589837', '-1.816309503789803631186015016110470706601e-17'); + BigNumber.config({ DECIMAL_PLACES : 85, ROUNDING_MODE : 6 }); + T('19912764824549679482731359446005915742994499830671769692141318634.353931', '2646191434.953476294', '7.5250658593790563887921238049035942881469707461572214800574841389995694907774044341260962759243376018518474121027832608631849532874480500276e+54'); + BigNumber.config({ DECIMAL_PLACES : 71, ROUNDING_MODE : 0 }); + T('-0.0000024659852564404444572628539348324013952275357810649510888727', '-10040524471155732557131859445425415047777281318160212640055', '2.4560324e-64'); + BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 0 }); + T('177136493414989385164933402829.64366090452307132831344136120524494110951165735859018503268061065574916376715783557023', '60187891777818635280359606466814.5298388', '0.002943058614994'); + BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 6 }); + T('-7393488401877396900086660', '4643522408356425475242044229446831856950172592312146157564105615175310306207', '0'); + BigNumber.config({ DECIMAL_PLACES : 52, ROUNDING_MODE : 1 }); + T('-24615528727.48934232611976802942607567911562025748187690514666465255067247750309129790993101081569116851641927920873', '420661451213815587302170651860471630012019395170556532739885724741635518501.278606598', '0'); + BigNumber.config({ DECIMAL_PLACES : 71, ROUNDING_MODE : 3 }); + T('1.91990063974867928918337381079148017337147001769888528317', '10078919218839044941769446643483607730880380733282185589593952094100268332736334083148.63627', '0'); + BigNumber.config({ DECIMAL_PLACES : 42, ROUNDING_MODE : 1 }); + T('237808077297578935819226799575402626259299593170.0910215981753307316735307961018153198874086067557017494183455119371304622833616995466406661936201146266', '63055475889159143979275262398175229543347025173856257439969', '3.771410396070997743720096841561e-12'); + BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 5 }); + T('-4904079.8300344081', '-2720512536102937838958.994730305103198126564638420242641023343997346756526', '1.802630851706852482478134226173805253512179970696278185071576e-15'); + BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 6 }); + T('-77889533745496738869229447644691273683680615077311174351663178838229431603707097369489978602526412919913781623378681628510061710888909916512637', '-318540594041982429254619641933716670156719361.47', '2.44519961356106458727374569781174504459604486259603208121953147086565777602048587638350292884194304991881592575e+98'); + BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 3 }); + T('14938358488121669556367959655370514636497247545078914567687389702166565327568594244021707269351169822', '20039203490.062718824493588703801945499927733204130', '7.45456699191137131792448342334165752468308824781653798839660824653749117672120923041575637442535087400245776884709209254088706501844782272751475e+89'); + BigNumber.config({ DECIMAL_PLACES : 74, ROUNDING_MODE : 3 }); + T('48407.441100399893527', '-49914762867435341373609229012871802878249769536300098081350', '-9.6980208498558584478e-55'); + BigNumber.config({ DECIMAL_PLACES : 7, ROUNDING_MODE : 2 }); + T('180759825156221312434054874665347131160072363893777191871968586225.5657480309810428', '99628.17982080675982529333128191115209263398377929', '1.8143443499754743617602178758840533560819368250726775194861051560387e+60'); + BigNumber.config({ DECIMAL_PLACES : 32, ROUNDING_MODE : 2 }); + T('124.635963997546839885349003747702526642207986139957268624399953842642619921009173610970240559859680382383501844241469647750263340', '-4901973690204727768135111108893445830.3560228505490541617954169857232989892975669919037', '0'); + BigNumber.config({ DECIMAL_PLACES : 73, ROUNDING_MODE : 0 }); + T('0.0000000000014107925075310771591595606797625202818785', '12386394840432336963994.943755767352425361629457315680330718156042295375708947556653121969360110805455673853', '1.138985577083246445675665789069355266675e-34'); + BigNumber.config({ DECIMAL_PLACES : 87, ROUNDING_MODE : 5 }); + T('9654625784529107951076400463831.0872923536217679265793513418784115088017810854222268497016908434175871293339894417742419307', '9598314040263728069176699.289649494001504772215073860394143265011510137892369266453693446307858079047419515709091577', '1005866.837032957991474180272580014087774352588529848202663465642879021736593180124870412868019'); + BigNumber.config({ DECIMAL_PLACES : 64, ROUNDING_MODE : 6 }); + T('305112099545450647851161993868110882113552656790670653094321170385003482454988168963700802006692063568727922463910455736702339', '-13912342973908647095916614853904635361452200346181547010', '-2.19310363551028792881568403878783264015797115276059035942137691575167395810185293868248322264575508137759030028125512759614112610711722e+70'); + BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 3 }); + T('9591317249950356059905450.0654567438881311397254557514865420468428527233233343654118556442146884475779577627527', '167400348511026.156411559469772317845282601856890283690919584627900184214866552631440483460616938973350076', '57295682686.81713587288932313674148715326928262035243294822467450010618535314143'); + BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 4 }); + T('-1134159886712762259916', '5391492078578729.9905053192078034900355415036138560079058188424664', '-210361.0410963902'); + BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 5 }); + T('0.00000000015155872936389446115086395444549864431108799133925534531833041920912063350103994949352660099057234865771387382603864541362945437298342151575604', '-622159863431038059284262654920095960874083417068435366133209240250136536455236664687427878038827741144480740332157803741', '0'); + BigNumber.config({ DECIMAL_PLACES : 100, ROUNDING_MODE : 4 }); + T('-17179571683888479010516907983936833492365898013', '643476582358418286773845.204359506070957148049161813771020', '-2.66980526640508087899147870788071473464567607445862283728735350208490313645231744512865423954721325399938916370550532299286e+22'); + BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 5 }); + T('0.000000000000491253980431211194628211603829815779547378344214049628399550111067969369495996507232841888591232316180093349726878502552172395323628992306897115057', '-2461317363809255772941739237350560508540968577481675200105985067118684968609180345403471054855329464172680700029391770335329021626461730', '0'); + BigNumber.config({ DECIMAL_PLACES : 74, ROUNDING_MODE : 6 }); + T('0.000000000000002727798649835142592267521965189153594719932631321976839730535108261624538480157874684', '558597754.84705249026', '4.88329683777914696940924735055866083084342614872979e-24'); + BigNumber.config({ DECIMAL_PLACES : 38, ROUNDING_MODE : 3 }); + T('-0.0000024695353690719742170166999884925860383022208953944079760760718103780990393208319641197541882950879886135590160617494388826084', '-19570', '1.2618985023362157470703627943e-10'); + BigNumber.config({ DECIMAL_PLACES : 24, ROUNDING_MODE : 6 }); + T('0.00000000102941670501711766403028451056161724837846810205454548884791390579294602029552939970405798284307096', '20.21', '5.0936007175513e-11'); + BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 1 }); + T('-0.00000000000000151716614076504814328783108682909811751320774837258276317548888490554882197937101195183442708090549911467547044574', '-0.00000020612950877125844270441932140528002337207503037258962381', '0'); + BigNumber.config({ DECIMAL_PLACES : 70, ROUNDING_MODE : 3 }); + T('-19023576472120.882634755212040837', '4969543365948128059514362544.8953383', '-3.8280330950470369916153263106827902688133956281641084095e-15'); + BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 3 }); + T('8015238463394289363558971679414816161212655906736576586294568265577767998859345177411864246.36494068479930419778282085399344281', '-29378933132528128568860352313616963906152072539954868687102763084161250224427.95910623401937244440593318573897458404308423', '-272822652450911.46785512'); + BigNumber.config({ DECIMAL_PLACES : 23, ROUNDING_MODE : 3 }); + T('-0.00000018318044998712501785746962041819300124984449527091314836844439518496634538990915126201633478731094683459903373857950606912', '-50260274422193098.4', '0'); + BigNumber.config({ DECIMAL_PLACES : 52, ROUNDING_MODE : 0 }); + T('0.000000000000000036252201669267818816776342223191339936664870703543979984168233662004415270348005127497058056162419795842866210204395036776840289942792064495234730329', '-0.000000000000000000179357830194059685645082549154616146217418239903075662373840804948063674789835931643935119', '-202.1222136220316981945903839685168646072941300843510375'); + BigNumber.config({ DECIMAL_PLACES : 90, ROUNDING_MODE : 4 }); + T('-15506570654579796521.6790299986404', '46237357.2351996389438346207980862758109085552721319697903907757349293013499894765305689197502226168047624', '-335368878798.612068489270224488944266921938533586240305257228015010387166812348642052419150264631141293'); + BigNumber.config({ DECIMAL_PLACES : 73, ROUNDING_MODE : 4 }); + T('87303051951341802985849174960942.48597277207212', '-9790069486471041695911133718356799467162093870.77074889053617528930', '-8.9175109606715699974377398786681160043722188142272519517213e-15'); + BigNumber.config({ DECIMAL_PLACES : 53, ROUNDING_MODE : 6 }); + T('35127196371069787906060832446215347331792852844200192936928233943480174200', '2184057692.451489741162559775349505027286458', '1.608345626238534014016197707074111572037505787153919166460397078040153304043718501523011310281155674900096563938183838e+64'); + BigNumber.config({ DECIMAL_PLACES : 98, ROUNDING_MODE : 1 }); + T('-1796807569032560044825646.4933720663', '31919477195377684793.4892949188374533179325727172274534682789622643294909528', '-56291.88592389473362473590361682233454869146948381216614543943476730342346322360148922436785128008717351'); + BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 5 }); + T('-1867145331240446.087650013540', '-0.00047142351608451', '3960653780592759476.70824175988578916982166828788059612408306509163140722302497479905554685933786921'); + BigNumber.config({ DECIMAL_PLACES : 32, ROUNDING_MODE : 4 }); + T('-0.000000886198008813381153171572516080682289250189118704', '1676630.001919031433124112364037338782527148402428443521503521055117443828166058373828898575321636896507000025367376195681548902071870055', '-5.2855907850811429311e-13'); + BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 1 }); + T('-0.00696731522879746863342805456414992288137602555612523782621801699385593834422373877830117876938169998381', '1506871780355070817620232129801244762594678082853.179820986414123157031119020247899457342741288883124549493377298953978878279235', '0'); + BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 6 }); + T('0.000000000000026434094823195651047980957065649061963909889572510258818902856974563655611705651078469733111978752', '-5829010583471183110.4852999750745072899', '-4.534919682278928791967808836144339886747533e-33'); + BigNumber.config({ DECIMAL_PLACES : 58, ROUNDING_MODE : 0 }); + T('-0.00000000009774366677344691632363185045504747838493202785984732', '303777905886959208857921976715266674582800967574973181037568112324955188454105325264.647926672180', '-1e-58'); + BigNumber.config({ DECIMAL_PLACES : 91, ROUNDING_MODE : 5 }); + T('11729879984042237752390640528185467775033789', '-642441140275916528357087522523498004204346.17673939464', '-18.2582951941783683540161358951084876460655385807847498645257448131090813546626822820609780242'); + BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 1 }); + T('0.0000000094627011794347618529524997222170576314794185732745500031818009896922860311058011263671330388964339345488041698159291689162802654', '0.00000064402079018526723251400695114040196576445422066519624238599940859942799204247280522505080098899034173142881793573499053489', '0.01469316103399798'); + BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 0 }); + T('16189723838.0710', '-10341660196826579284206836275245254', '-1.56548595969522819699492533334627666171180039e-24'); + BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 3 }); + T('3277924795654216922713743886215213934558234408140793494048978796379635435165013745039489920249982941', '-0.54336735219777618442798665488056187857763074465503032864685931626951307213110815707731128151986180054979480494732', '-6.03261271108005362564469759900983422465897159205493476850675475134859937498517293647602955946712704041955397379463380294821897465280042707212449897288998004817421217878e+99'); + BigNumber.config({ DECIMAL_PLACES : 31, ROUNDING_MODE : 5 }); + T('-2738644792905685920749846986139017784488537398665640730199038259627285642508874157110249240094.08654233854806396870983593', '0.07048893791651941015', '-3.88521216782849523903601264082805246827857943249490151440012419399068263560000616742255426701819991440598148799889467166221774e+94'); + BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 0 }); + T('-1021492542122916481066194044577113755476618195682639369591088612908207031655730855760.261897889905155831270857', '183374554200722282407413873055918925009662.3033597426494437840028349983737706403409956', '-5.5705250195443582915852472906193737439842541509498802273574427448473176103922133808156e+42'); + BigNumber.config({ DECIMAL_PLACES : 55, ROUNDING_MODE : 3 }); + T('-0.0000000000020947631992437788260334128526352108784946954262421715067727671602313406673460244799969353876741630755', '0.0061599517660707198340969727429459623695874102739196597068259959714844228339373452774105407166290813820782551809253247300937', '-3.400616236610528233193564938520924106947596863e-10'); + BigNumber.config({ DECIMAL_PLACES : 83, ROUNDING_MODE : 1 }); + T('-0.0000000000000028364', '4339706650281920237449218962507595352433911428075316457722836609039165542220916550034260996', '0'); + BigNumber.config({ DECIMAL_PLACES : 26, ROUNDING_MODE : 4 }); + T('-0.0000000000000003965078289242872199294090729766510245471592367757563323807071211599581999702793982', '-7', '5.664397556e-17'); + BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 0 }); + T('-41276579348139205664214817.061117397441511425496021813583663543794498584294575611567172200905096831', '-15546273984390733433793478381454318749597894128472412011914574903190265845285785437910787598246818563648418017.01917873031659900', '0.0001'); + BigNumber.config({ DECIMAL_PLACES : 78, ROUNDING_MODE : 4 }); + T('180137628272858932211726828049207473719', '-407.572', '-4.41977437784879560449998596687720142009264620729588882455124493341053850607990735379270411117544875506658946149392e+35'); + BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 6 }); + T('20359545447084534827352882996697649022', '810959908914768942946403650700500307542126770380805304862862857933904161563272040920256887.419445309474077045303', '2.51054894616551287888852631e-53'); + BigNumber.config({ DECIMAL_PLACES : 42, ROUNDING_MODE : 5 }); + T('28908998.73515783', '-3723.0255452473490444394049082', '-7764.920864446334129042781339351349873376126336'); + BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 1 }); + T('11353771731770213109935979314204766077.803429457229492', '14676941568007005489652401648364649.3704053248573450123647291147308307652519058222332972283634934609881798030115404111740716259266007518901366', '773.5788603614337'); + BigNumber.config({ DECIMAL_PLACES : 74, ROUNDING_MODE : 2 }); + T('2765022680224928913934.856366328820914512549419399744601258906300255803783271856072003411006086986', '-30143729465582', '-91727955.67257268853455784760512905058366719627007010404874350870901551402319849087'); + BigNumber.config({ DECIMAL_PLACES : 40, ROUNDING_MODE : 6 }); + T('-27973803353732467597874093314681240300146817936274.7', '2711805085115170134405647647869391029436491912213838402534819182816577170039191806230633438', '0'); + BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 3 }); + T('0.000000000000000003186937962056', '-40287888691067864531255656654498186477826119257.83486205924350399940026473132675064210251730473941889097', '-1e-13'); + BigNumber.config({ DECIMAL_PLACES : 36, ROUNDING_MODE : 6 }); + T('-4853119707399881662896013751041882676424871.34255119620658968812561471551918847065999919327264257586536', '0.0000000000000000789787666480410402195930327956520638436124171894371726007897667552693325038787239588213130213', '-6.1448410925777056667540794754946487747565056729325715792347269833451509500111345747271066474343e+58'); + BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 4 }); + T('0.00018632202618906250236563803490223248286137802628984042368050529522909420866005529457506429136800674003703919089708163008', '-1060413927490185650862162264.58587819883181633855751353684185941850759798616987753412241670431421648686406805818216488438279040756757650735508', '-1.75706883282883844492e-31'); + BigNumber.config({ DECIMAL_PLACES : 74, ROUNDING_MODE : 0 }); + T('-296582197552258351073088798547782213145621017034908997551219368985808845357104758012233532715885021.06854', '-514.52972472839968458051708733863739311617381978335602510446807660384466862964082668954528387294081831892060089004743575941830665737716796', '5.7641411817133132081079568811889594648454414358403776418817860520037551325103997146756972692460525581477037712081162821534951403163113421454367610771414410931943153871696e+95'); + BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 2 }); + T('-8.785756028885638309942', '246947608177624323.263', '-3.5577408883289224383160281388273242173e-17'); + BigNumber.config({ DECIMAL_PLACES : 78, ROUNDING_MODE : 2 }); + T('0.000000000000000000063225585970325864485396075291771611465795264', '181237332716316048045378472203695275160865853026681059427519806.128226535863849358551920805', '1e-78'); + BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 2 }); + T('-11691010859512', '-4034859089160127161470.5773065004370792550445178779530908274730755343554226624691455824126275628788101015', '2.89750164780736690697856634400408978e-9'); + BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 0 }); + T('17264790298661.24778339612120219726129732910714646561221181455417055130204095335327479350715774222457892429326697', '-5015531732.061071723293298831498173782290062679330257', '-3442.2651916045'); + BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 1 }); + T('1778308318430766333341410656754788654176198566926863100735.785026985865888502589345119640126859619824416787029438709834800499047327', '-0.0000045139150996358534708356166705107677927082820813299926711361781861773080211743798815762556302066561', '-3.9396140139503864622623283819637870320019602693311774326400218864636615597136804e+62'); + BigNumber.config({ DECIMAL_PLACES : 2, ROUNDING_MODE : 4 }); + T('-2979525352792790601198298192688649786141341801230834442555941134313501985214547248972630509147162876124367050537418867965756714363', '2393739131031912074274211806414.55564866983450529413395930977988062148062512555673551', '-1.24471598185736853893414811397455283846630654230489745594456593361104535938282880638009772610705876945e+99'); + BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 4 }); + T('10760437822305315859349467186067685011962223758508.2292898340272957', '1.3', '8.277259863311781430268820912359757701509402891160176376795405612076923076923076923076923076923076923076923076923076923076923076923e+48'); + BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 0 }); + T('-130518920372713990312225179896', '0.0020846050392103976518667096210508344925578933815526902355', '-6.2610862929771902834996819889289388566333471712217742449678778762921696831584778992829913092129129392e+31'); + BigNumber.config({ DECIMAL_PLACES : 9, ROUNDING_MODE : 0 }); + T('1680290348239783460061677586576479477632276448', '1877861105146962.868326502', '8.94789472785998532406201969642850131006e+29'); + BigNumber.config({ DECIMAL_PLACES : 86, ROUNDING_MODE : 0 }); + T('98212340272764478744036769743.53998661159918447', '-1.2847611573829504844252349018435944786279389740735941066061131438086743', '-7.644404542305927958394180943795163441854807258471249766705603049665551139607897850853477407663496394813688800957599e+28'); + BigNumber.config({ DECIMAL_PLACES : 41, ROUNDING_MODE : 4 }); + T('-4431446791145757147387577.2991245746222262915497590341158402040826616731440394107005242509097835958746301836678363344980328789760128354932814748534502', '-6841473917438138930486.423986', '647.73276118915008474176790489779406139826138'); + BigNumber.config({ DECIMAL_PLACES : 9, ROUNDING_MODE : 2 }); + T('-0.0000002933887640674863470860654803397102517051207073431749289429108077', '5806535990808146428.630716856942036', '0'); + BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 1 }); + T('-0.00000000000001013', '-80382710505730005224826.82791298310513883887498469801317728041502291077554033850826919518584870075231296208018469022107', '1.26022125109576798417096730794451e-37'); + BigNumber.config({ DECIMAL_PLACES : 23, ROUNDING_MODE : 0 }); + T('-35322105230793066143717772.4724214458026', '10987517620163601004566319950522202204012434627922114545224282.322402022609687901968441581170778347', '-1e-23'); + BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 4 }); + T('4068944423230418685355265614343228850013418408713106622.555979248442241363299377756681660955324620808272691427', '0.0000000000000000000253599045776991074682670099070661463705', '1.604479390197923272303517472845245208647420620622818342987962920172750468047384281772486395946256298141734032492716380712631097003768968808547509013483e+74'); + BigNumber.config({ DECIMAL_PLACES : 32, ROUNDING_MODE : 1 }); + T('-678745033872819590083932457185.28205218134760913393462346391518927873560028807493242245873888505764916957404997931370614312848474046307949', '-0.00000009109974910356490384074814252070846305493', '7.45056973868503250802841453952887682821722695744750483500736625069335e+36'); + BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 2 }); + T('-28572733163749836041333377030383051825005531243253823754744624351600443418642018015', '16183335809283440758996327657609', '-1.76556511589899264660470022054852754988618384672249007081146582068834188443575378733749175348905663865558480287081232429e+51'); + BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 2 }); + T('1598794110', '-51767803619804258370774453270228164567580041461709925160228565195668850468842561401214442136634964740940140592975009300449359120696952748.5023659', '0'); + BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 3 }); + T('2571550152173393501524176098.3132351998625568672957719726318367033934862940482388662', '-5237440273565.1207228524099679581472775379477956505205110714835', '-490993694983549.98991681993164368998534323741524989204756100064018596814230660552'); + BigNumber.config({ DECIMAL_PLACES : 32, ROUNDING_MODE : 1 }); + T('456912203930126460719485395721.22003648609684663992', '524305770799388126062304932995736997191627321086276395583819883638111833622261358604755.224661770965322643572815974062105794498422593010687236', '0'); + BigNumber.config({ DECIMAL_PLACES : 86, ROUNDING_MODE : 5 }); + T('-0.000000005648452498863216040118255040511384505604423060351742890041607', '1232794216550095854019195950450', '-4.58182916745836744846893637910381661110173368619e-39'); + BigNumber.config({ DECIMAL_PLACES : 59, ROUNDING_MODE : 4 }); + T('4544417.73193287626082515217201228429174646210', '58863320549389442176353896248682433.6871043363476740', '7.720287760728464513638913975135e-29'); + BigNumber.config({ DECIMAL_PLACES : 86, ROUNDING_MODE : 3 }); + T('302008786430477451865913173921469918.53981539706766348678537', '-1036387133038666959306417848321396092934291038310964313295788481128308560831899639810737318.04874620326477804842185662604869006953286', '-2.9140538009671497136586147729651e-55'); + BigNumber.config({ DECIMAL_PLACES : 55, ROUNDING_MODE : 4 }); + T('-211813072139414419237378700885656074457716799267611690735376412291752663699064535170948683056877853428140.0', '5078436005033133716156804205372383900390695294047690451360304263387981919977197326.4265641830646742373766008824737575346807071215634501435369', '-4.17083275105742850356678471870739792069246340665612254152335879755994125516033e+22'); + BigNumber.config({ DECIMAL_PLACES : 78, ROUNDING_MODE : 2 }); + T('-736668226198969993047756194703946262763078078728962850215087025295', '-311409300431151235535387264151286378806946020073530456668535824508403904628.872991645815365337057086066602882613894892', '2.365594814217304576715789902252463013970450697280445921986656073155597e-9'); + BigNumber.config({ DECIMAL_PLACES : 2, ROUNDING_MODE : 1 }); + T('-12038519896178.343050583830622798587165301678714', '40340462361494993145172207379228147634247889779962825870865259393574788283.813082482302180257936546709351060751528560844883', '0'); + BigNumber.config({ DECIMAL_PLACES : 59, ROUNDING_MODE : 1 }); + T('0.0000000000000000268509610166701800334912706135203400873603368954922062436317253116942166789935714', '-486998463662879616958481229259078824081826501329210169074798.43828397140', '0'); + BigNumber.config({ DECIMAL_PLACES : 46, ROUNDING_MODE : 1 }); + T('-64909823269900045761346114378555621.369886684266321123849', '-2715516319.9228794823292737397897142541381156835304385138078896200673726', '2.39033081089136968459642354284372461779770166025252776375238847685969761e+25'); + BigNumber.config({ DECIMAL_PLACES : 6, ROUNDING_MODE : 0 }); + T('-15480951193336067629393671.418465', '-0.00424708358273824697058394287931995107788656965461947522851981137664770296921298466356688037954760782850606341865212940941984', '3.645078061627161024601523640016341e+27'); + BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 4 }); + T('24684896.01518271685680962063108620101646702283705428496221148607065462671230839758975796837001445596441348271619831917', '-0.0000000000000012485922867340065887180882914038664278123625622790446817239268277611161569655245749385870285984733170601212773880677779079333429006', '-1.9770181409459127030130282324344514639776814627422747067000085599690053740763589018259832855036376e+22'); + BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 5 }); + T('-0.000000000014807613715736006881724155523216287303286101406215339189727852651201006329891411214269372813', '47138481795.674594971801063274107203438644606484339365703302891787822073636', '-3.141300515345563502246717814357829328909e-22'); + BigNumber.config({ DECIMAL_PLACES : 27, ROUNDING_MODE : 0 }); + T('-408933410930331366351505306747613637.4', '502301608967263078078817020044251410495859611955292180874725849617629549750600278.3033594011017317450703182714619757255669621249363839878', '-1e-27'); + BigNumber.config({ DECIMAL_PLACES : 41, ROUNDING_MODE : 4 }); + T('-115835252133107207748230083386149347695375947320217160', '-1145645316426674131036122720039891961130160258839262814.833163686', '0.10110917442965964049616495551603037176187'); + BigNumber.config({ DECIMAL_PLACES : 89, ROUNDING_MODE : 3 }); + T('324410114528078358164225634288515521712.1960331540300033585581775465', '0.00000000000000000016880505004767778581153232729174744246812547975061933315858340411987958904970545075748755970918513886980214608665646', '1.92180337280461116882324890306010466157811443930093788648147283137848170478431669854800995664511056948150066785236743353315873955132013676480239319e+57'); + BigNumber.config({ DECIMAL_PLACES : 90, ROUNDING_MODE : 3 }); + T('-7348240073236898148127361553814999208471464251945186075790063614750080486706532516500107114083265070307972262437836405550898.6921976', '-28201182611399638209563658840984116442017737602945387683718986735940565751787618797824404568.7303145140391777544083084880689164015722', '2.60564961919949834024024286204035087946016558710246303922541253929369674984466140038019986841816135896968210977328511278536e+32'); + BigNumber.config({ DECIMAL_PLACES : 71, ROUNDING_MODE : 1 }); + T('0.007297026672050746404702116781', '-49010133555716180456644577253738369084643566864099762865278837386925212233307.48376173767127842352706140893647414334624473813072778322', '0'); + BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 5 }); + T('4852490500852643734640383257370930860500.926230004246358888434335013807764035654376140471319113288921733192', '41022016177492389242191788983456656934790212440217758123.250284', '0'); + BigNumber.config({ DECIMAL_PLACES : 39, ROUNDING_MODE : 4 }); + T('21154142945164.4737436207974497074070105471573040015764205565068333127130276476', '-4290761302747137287019137676906342923979101397205720416062341096.63', '0'); + BigNumber.config({ DECIMAL_PLACES : 53, ROUNDING_MODE : 3 }); + T('21404795109738399287315622682393563132970611482057057408015049430283263228.74111310068413183505876746078406010224917', '0.000000000000000000012615672770675627482534560056344943179462367364576860545296973446303598607717168976051891074817048788685311', '1.69668280866420045489481749515215838710659927672039090183748525662324101909299067643564687435794574199998889731079365486197322604330597129209311012e+93'); + BigNumber.config({ DECIMAL_PLACES : 28, ROUNDING_MODE : 0 }); + T('-3450790382821963036098567395961031863812208976201226121960.15676705645150163038246850982390947156903372055044602536001863326103241130492192695297810072', '-763049.4310', '4.5223680703091475552107021962526460016614690014770827107269761754877076916795218e+51'); + BigNumber.config({ DECIMAL_PLACES : 74, ROUNDING_MODE : 1 }); + T('42313230199651672735489325884062025582352.7419585331025893934481865894655211677073719001789932289247216', '95185821534871.759', '4.4453290960093282636970055658666540868060568467528026933472524977781314079115242997821941498675915753e+26'); + BigNumber.config({ DECIMAL_PLACES : 78, ROUNDING_MODE : 5 }); + T('1752257597609747491.69', '6539528305.78203897191908488589585858704158645216539398937460932', '267948621.930492772271645037284811611672582511391898595308741494002372333430228827163423'); + BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 1 }); + T('790.3855380044418360414190826995162992', '0.00000000001009614138409195528319486359546033', '78285902300240.9089208169716490416659656953882740186474378912910833288707621998'); + BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 4 }); + T('-221096887211673464233.029434021207971903959700430242372811681549616265238747082824532995430363024140803', '741831053553803245328361052525454080331736054300671.7822498155210741048673906237917851738792555483456802791272418274661789835762', '0'); + BigNumber.config({ DECIMAL_PLACES : 37, ROUNDING_MODE : 4 }); + T('-0.000651139662592009486341738951403411968137306774317479717873592038049661141163082842698', '-505300425801028665383762175122150001868137480355285515208663655910011.666858266721037287776934243433208679', '0'); + BigNumber.config({ DECIMAL_PLACES : 37, ROUNDING_MODE : 5 }); + T('-3671341436129243736752381349616365042217.5945187056827841332382473006446185297629388254060464214310637055889519874', '-227247.573154384146163133510159381', '1.61556904004209596931865096874520063691595870755179037257644188612979896e+34'); + BigNumber.config({ DECIMAL_PLACES : 36, ROUNDING_MODE : 1 }); + T('-0.00000000000001540173930826297206570050485142539798943714098329265886679382', '-2811614151582023531974.44462398314990697512312968266966793', '5e-36'); + BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 4 }); + T('95284078615312471887522819461623.26477693383735687249490580589167', '0.0000000000001907980575072794816854101364273354819844880911577900320625777457203327253927566347670488701269315396762013441731474428043', '4.99397529829029400445512070483471174259050367099609006118704282973842856741652045471476316647819741755371043523320670978724437e+44'); + BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 4 }); + T('37696516976809.67', '-5588437953273115926044870421.35647', '0'); + BigNumber.config({ DECIMAL_PLACES : 85, ROUNDING_MODE : 3 }); + T('378929565.44023', '394795362320270792098898494652903896531440802470264311764198716459375.817', '9.598126057337777349449592e-61'); + BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 4 }); + T('15352006644304724464768062425561135603919740274357285270804381610637327574316835765230776715422094.5858877396272023484675903979294931153616243148725', '-405339297.6969596', '-3.78744590804077814687449048795712353471016256174527167078862900257992553642086103146670463435e+88'); + BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 0 }); + T('12391997349857348619953349.479939998811972166535711907181601637950135', '-0.0000000396579276389002618774584094439147848379360880516760322791085994648217599228277203973654235245715501926', '-3.12472135778020349928209979108857544599794304107991572220480753813907523425877732021587353067795034086798779299951e+32'); + BigNumber.config({ DECIMAL_PLACES : 62, ROUNDING_MODE : 4 }); + T('0.0000000000011729289882247307770578706071888573569106820969659193408240506544694', '-1255499908017820757805258295311505070506457152583896428367804075279506733427340869856179', '0'); + BigNumber.config({ DECIMAL_PLACES : 1, ROUNDING_MODE : 4 }); + T('17.57024622423931', '-32794563963723474099591095718112355996227112378370191106069881991104995.8038681166412740013882364843563458', '0'); + BigNumber.config({ DECIMAL_PLACES : 50, ROUNDING_MODE : 0 }); + T('-1306895671944468591070288992511351404563473756459932471509002653.277237767592929758', '-322376962163459308964.9329202915815135482520368155925183149799359954660406', '4.05393630851889150655852349978721479028532515056978951425002051162114902278959544833608646256e+42'); + BigNumber.config({ DECIMAL_PLACES : 66, ROUNDING_MODE : 4 }); + T('-32077490814252754358984388552327268106030042358073061263106246354805512173487060806485134928542905180083273866767283944301153567', '-2542480028804156750343727594232002464916104443196105627017424.46223250537045772824884122578939553140601', '1.2616614663966602655440794143610549039105196941635092999427352633032831829099547154979022790412911086871644372733806163239451594689228e+67'); + BigNumber.config({ DECIMAL_PLACES : 52, ROUNDING_MODE : 4 }); + T('153825947194693152969349223214523690589243544635139206926681835035412', '-23.641', '-6.5067445198888859595342508021878808252292011604897934489523216037989932743961761346812740577809737320756313184721458483e+66'); + BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 6 }); + T('37106919766560282593678657.7096099958827461744354258881970168052165335487652453945420045841831351550299435322743323901', '-0.00000000612984026535971794707958117104425939246', '-6.0534888610809068134667815813473264511557573757042390207722922555568709364037060533844141625398223231686451724e+33'); + BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 6 }); + T('-641144573.3', '-0.000000692650658567215776814444016562883106433269355122817556680783206508598080653325521680878424076700131284', '925639159322018.3806'); + BigNumber.config({ DECIMAL_PLACES : 33, ROUNDING_MODE : 1 }); + T('-0.000000001391455855279603850130715155412806189081748706188733572987679735751435531762129652831698896587955285725611545928297431036277318359077533', '-5879.778740003149453115553595686947102674472974724003724756870496314835', '2.36651057260508161353e-13'); + BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 6 }); + T('18.4467637908568967309576906800818709287266942905204278027881957919506414846183259700', '327100340291470052.018885253570111280696645646468831427010411192851281152509330141749901256', '0'); + BigNumber.config({ DECIMAL_PLACES : 98, ROUNDING_MODE : 1 }); + T('0.0000000108233917338259594156939274553', '-0.0000000000000000004565264148381930450416004239178145878360488986541233507680378267783546624295898380997488887836168755720265634033974417939239163234566951897892', '-23708139073.75348961340655697764781672842871945294433941227257145619495165558942758765095741331331454732289173'); + BigNumber.config({ DECIMAL_PLACES : 2, ROUNDING_MODE : 3 }); + T('-6754599027838025126815716047495508066346043054422120219372348926712625080840725656799.23189671095732920949609178286055102546857205616253000915', '107595207784639024394558987050103336772457004049998529168426054849379721.85220030402155', '-62777879860206.52'); + BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 5 }); + T('-767567474494048891607.1575508751572148699', '0.000000004875311703403470460827491267679111088375437277', '-1.574396717974376118930413375427055257405913586777089372054019979803905250184355319308435849646064170819910667818190892995390347e+29'); + BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 6 }); + T('-281313529988951591674.56365585621460813819037925750341565101965593423141074', '694790235093351991667165454140550441260.28362494255687291896654159682', '-4.0488987291416713079187223486286600048369859121398223177830254033691257405204e-19'); + BigNumber.config({ DECIMAL_PLACES : 38, ROUNDING_MODE : 0 }); + T('-22032516111912199200839884249875193102620746223509928608444522784451947328020683449560083423.3320014349559756171162999598598768265058038942598886', '-297286286479698401818930.7927086368819048356427445406005784385378018400774911418686083165798471', '7.411211722144739301662341736378327510690297157739590972291891536186909176131100719408304758388950100264204e+67'); + BigNumber.config({ DECIMAL_PLACES : 39, ROUNDING_MODE : 2 }); + T('-504095727490029865108405982465023657063', '0.0001418108435423937783007517785233764245161030889541884080802903629541241457204582638467882030562326189604752419580188697572669326', '-3.554705090935676477791525324089215907953481197167887910898400870765471810521830909e+42'); + BigNumber.config({ DECIMAL_PLACES : 87, ROUNDING_MODE : 2 }); + T('-70222200877721976565100755417575500277629999832398082509168582124795779398759382301433050650013056058674778167124529942105', '0.0000000000000010124346565650714258010', '-6.9359736376437089721359719899145571672143372111083474721223434403202326101970030123813824892397458056643609341113695530397807616524250937342611151136157870513639717824741934190318511787690333719478482297694861249299259683014e+136'); + BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 3 }); + T('-0.0016821113685730833060380092942912079806011286446462149294640213475147323465279094621352205833715636184306521853469706773604977393588', '8818078.5109322786143396929032251482432725328678286150251496', '-1'); + BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 2 }); + T('68547944749882829549489008458779589815540451393182', '-211789487168159696858830149083691311508860082075074910244285500485575116345894739232630326.13876985196084241793739829236577541073416634745446063670192', '-3.23660752317966262199779983900851713515143928e-40'); + BigNumber.config({ DECIMAL_PLACES : 70, ROUNDING_MODE : 5 }); + T('-19.21616495486753037639761208089923695156492819521502781212915545358345288921278241726325489623906100082702841188492596712483469308850895965598096581', '7291143776818.0662432529008780776517831079', '-2.635548762042609445001785268618088938599105073054726315027e-12'); + BigNumber.config({ DECIMAL_PLACES : 48, ROUNDING_MODE : 1 }); + T('-94427654720186260692998219276328393584213089956492863260951740894504293965.2367915578312852891464633412219127621602825904441021', '-4450034212444858370097948816155700281600827527767526525517795.2803430536196384191292137870675323639390335877446605450463807155101063378', '21219534550119.223474139679249593535623337505741605175031723732'); + BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 3 }); + T('-81339455827944255393951311490306552895', '-0.000000041862345870128785373777175927993230340289266744242636189306537061752041960893730298132985829504898420874', '1.943021924291745922388131837480037009278159092124366742577117398514961073879058349548510345118513679005293459532526878367e+45'); + BigNumber.config({ DECIMAL_PLACES : 88, ROUNDING_MODE : 3 }); + T('0.000000000884045464206287253425139994499348390288621', '-0.0000000036751322066576242171170006304801483172830300278718127470112736591597470668463955371955632851604', '-0.2405479352837455735885044998438611520131695520747394681512821220924441741246997083961404'); + BigNumber.config({ DECIMAL_PLACES : 46, ROUNDING_MODE : 2 }); + T('-49.3990403355615170766063344213815145105583203699819922', '-39262928148055071996.247714340202110107307994666794816646669962799497898937', '1.2581598639124562447879179724e-18'); + BigNumber.config({ DECIMAL_PLACES : 32, ROUNDING_MODE : 5 }); + T('30185936135911346753544000929543531356504696.9321307586198575820635046392369468170677443210', '0.00000000000889546501605943055462900338069432634169148894284443468891730291115009150304068070437440901803462', '3.39340732400331601441220953053085097561845467363670953317010393027311226659246041870152e+54'); + BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 3 }); + T('65110764894005495791149102013197168751.46013107633104474', '122849867324792.4401485739882105228893993200368676056606566637252742726987458948922404', '5.300027286302606764232334083567823916748792625109725207432062806860743132346277174305e+23'); + BigNumber.config({ DECIMAL_PLACES : 72, ROUNDING_MODE : 3 }); + T('175732730964798637504787501648379401015078431281552342604541041523143130739596109605795217820445856365840690677006305370064088804787156156975', '0.000000000000000000044627078377391111797717707506386678729832320747307962147931472220466', '3.937804968514990885003457302559977315967418595600261882422669439995898759557598799552704733122198387306415523922855107365186616672946780150539751697306600548161005852808900873665263768623778598109224110276816147685618926161299826634e+159'); + BigNumber.config({ DECIMAL_PLACES : 100, ROUNDING_MODE : 6 }); + T('157404058876.132092550077030439261897362752853871830997192658734129732225056949295101038459', '9913222631494173169793541281586950606405', '1.58781926652248828880468116471553557806107509380640024881172932536875611e-29'); + BigNumber.config({ DECIMAL_PLACES : 30, ROUNDING_MODE : 3 }); + T('-500496066549058122523524538057773915826826913208646429765183500446544788213209101442562920.4215012300087556197473', '-3469701195497062066968643121', '1.4424759895710792261194716054180048222637307437625373952868356782579138408616912264789487837e+62'); + BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 6 }); + T('-139994010285559455656361067601490015580658433314557659656116377008140532040106593085759989858103974008161.97612211191350004439596548', '3100374.4', '-4.5153904730202731533443531078533616965956896468554784756355999136149663743871254092976638517626765983e+97'); + BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 6 }); + T('50.5825100008643335639002030', '-5113880152155098174745734107355881365.414192017256590724083', '0'); + BigNumber.config({ DECIMAL_PLACES : 45, ROUNDING_MODE : 2 }); + T('-85897819669896341477399212217868091056217064017.413943752402392352766779573867742413386438726379529922858959655464746614585', '-0.00000000956809058284455081136304901312313622213572227631594575563416175500319040573483454557180486339394375060900551570428', '8.977529939349644138129189595049487029809806737572203060359215020586723120622012130285548298605448267e+54'); + BigNumber.config({ DECIMAL_PLACES : 71, ROUNDING_MODE : 5 }); + T('-13406027181869131942219323628000052135440457119214139194062030510132615800506.105170187274525350527283076087883835545916891745544', '2432350930516151.718929383717436', '-5.51155140225770596842962683948996664881832225682187833028819954624461026110479445009418193371175496859534625381201886800812973958975e+60'); + BigNumber.config({ DECIMAL_PLACES : 83, ROUNDING_MODE : 2 }); + T('21.770063074003', '40284326517215758067539078.04686946078901278456139861931375323993', '5.4041025272445420756576743176730573932148771470344031142746e-25'); + BigNumber.config({ DECIMAL_PLACES : 94, ROUNDING_MODE : 0 }); + T('-169598834344610711289485636044177213069669025186093189522692330815495446385394933456802329829.89814856505555574078439109464846', '4073519161665461297.0705210797840162689150775433601758807115568150837151937266265880060497431564361229138188944851274622581', '-4.16344756496174436727634644468101079646812205801424950112551927499646520315786067377323933470114041655458820971891011661939688688329899108494027255245390225880835574143e+73'); + BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 1 }); + T('6450825612664309385413262471232615420425386423840857373618549230654350482950448030796.355111967920589725979910671875290527521454517933967', '536453462509631523673841120977259976874895472096249453886631000037443998100180512286931180065863.3189583482454504212885227485664083196417293852676554', '1.2024949e-11'); + BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 3 }); + T('-17520315251457681139169240125154352407.730053852981236520933835994797692974179310', '-2151609422402119268361091388577166717650764365388264909600751367254886131216642181208237', '8.142888e-51'); + BigNumber.config({ DECIMAL_PLACES : 82, ROUNDING_MODE : 4 }); + T('-0.0000000001714226329930445076430282571879111331855606207358607692264215328802202739969631292443117775558920847040670700105818', '-47421716329510804539274769917188268913032796877737499941241566424898458543604931480945.6047437099021683973588923557', '0'); + BigNumber.config({ DECIMAL_PLACES : 41, ROUNDING_MODE : 6 }); + T('0.009285228717006832804766101423935067607438919314783568187443629529274565217625420900069661204469159210493915283768314424133122124990655979854', '26010741084328545870244893269433803874392121409768666543901152710348.7987991180143214803077412711160363271863', '0'); + BigNumber.config({ DECIMAL_PLACES : 88, ROUNDING_MODE : 6 }); + T('-38096329876334489238903761051687.505909434494982846476648545901', '16745736743363870967810665450.021', '-2274.9867897828738483201764635987308032940474942543283340120073308886436858862021063712926662'); + BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 2 }); + T('-1852217789725050122438170820.28325931905146699020306554945621134740056415276362', '-0.0000000000000022219735130576607077241455597715090688027', '8.335913001844071298418070909327002279799405145610418355663896072274220673173691352497252427009443461242778791749718486195e+41'); + BigNumber.config({ DECIMAL_PLACES : 48, ROUNDING_MODE : 4 }); + T('-5.052912753102736', '107023920349655873.54567', '-4.7212929003109380284034549969485e-17'); + BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 0 }); + T('-266.97485346716564956157280050094877184640708568130912395456679351152029', '-1753853035.61160', '1.5222190688e-7'); + BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 3 }); + T('954586193559726460107731285168494722.9037565484058748268362752807954096508569225053466442585', '175025134902024857.946659604982714683517822925827863152370160381284460535905875321378737938766', '5453994902469764616.58150337495'); + BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 5 }); + T('-267237149648929650770841208112045365329816.439542499886044710089179505546406746998352250053357569589659024098206947838778804412901042009', '2865956990464.2419103294110091444804788397357697927936776876529534305', '-9.3245345459856762702231422155008533916528403844303985372147870486165483887045103066371e+28'); + BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 3 }); + T('0.000000000000011798785370557154', '-0.000007172072059991226804827454975003309679226745300089619652718388564816837765575110301627043075680798604465594161926', '-1.7e-9'); + BigNumber.config({ DECIMAL_PLACES : 41, ROUNDING_MODE : 0 }); + T('84607', '2382032689860148308531395739.145192996759100481488003531576684203267158718171003088620851830764617037937929195251940479071065144531602276588713499264237', '3.551882405315242237e-23'); + BigNumber.config({ DECIMAL_PLACES : 82, ROUNDING_MODE : 5 }); + T('0.00000000000000000047538803909839962706', '0.00000000000024039', '0.0000019775699450825725989433836682058321893589583593327509463788011148550272473897'); + BigNumber.config({ DECIMAL_PLACES : 37, ROUNDING_MODE : 6 }); + T('19679924297334293397819794933736106194546137901961386201611155750965635026795564258383470442575.260572732334661986776494114890517593816154', '-0.028543668858124904602163953705481332784469412744477052870101191010922069308523653503847377589791', '-6.894672298488509801002555119667337674521780487655722074777233542267155675228661637040428771077684735646741948664238280164160260869674e+95'); + BigNumber.config({ DECIMAL_PLACES : 88, ROUNDING_MODE : 5 }); + T('199552146833565065.60343239349268850658366323254334', '0.0000000000000506642066169812124424066588866', '3.9387204529258495649874909100478672979187554902310346669093354173798682952241546650577690501640693752238250721462665745e+30'); + BigNumber.config({ DECIMAL_PLACES : 64, ROUNDING_MODE : 1 }); + T('-387161866735686167691534321080543.0837014138', '-322.7859891874614323881383732336514774516575971614318648517427391578', '1.1994382646851432963916978216940809600824844920678376351532980676778233546372312577779858407685e+30'); + BigNumber.config({ DECIMAL_PLACES : 88, ROUNDING_MODE : 6 }); + T('2760024313.5778704057669856497022953922822386', '5872891.20345055160524909866', '469.9600619123080229602253503600815885043009784997903363248726938530266220060896484204883406'); + BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 3 }); + T('-4528131.806393258706983', '3168972957516567936169681971345116655042036400321964003489252924457666024659.040760470145109369158157885488664797', '-0.0001'); + BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 0 }); + T('273292204162.856672176868803568506201360158581697337', '-203923668506156435403094859695837035346323412975048716798801109398063980603468004686', '-1.3401692e-72'); + BigNumber.config({ DECIMAL_PLACES : 96, ROUNDING_MODE : 3 }); + T('-0.00000010004256187631071099217302483879302028757550203011673627029202998985108084948622165168409499', '117972776380484.93915178837827763865573', '-8.48013965134245625178836063051441323435647271026797907086855220052226306901e-22'); + BigNumber.config({ DECIMAL_PLACES : 5, ROUNDING_MODE : 3 }); + T('674605103234322783.3237', '-1547968573115392911964985462870966980028921979919547094140583060509734631.576774388506268665328912809339946759987978943451323455847', '-0.00001'); + BigNumber.config({ DECIMAL_PLACES : 77, ROUNDING_MODE : 0 }); + T('-15486548575410436752622064418.0181922761103719158776264635687475932616828979736848925661001354060303348716362733980966953827228197', '-26502027044661430625285256551247785723966919.24648766263790801109567144985787101364907', '5.8435336094527334313380874442292552757714007922160676702287943e-16'); + BigNumber.config({ DECIMAL_PLACES : 40, ROUNDING_MODE : 5 }); + T('627040165425499495171153029889504.31671937321473687047233822601663676265664744306887293941652655644769', '-299694032178944026.84069784469535597844847667649446020292184', '-2092267773457366.2599983671489917243335863920764461348071'); + BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 0 }); + T('-5407835010747849549162812758879087690424595044353151941744462471604631573009700167584742.679971019552971807722846633879079646240318162581665', '23785912294.196714', '-2.27354534224329622818940004179260458785011107401324434849239099642317816441985626899544554395e+77'); + BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 6 }); + T('-3437992854142703284538293514293287579724965437595255626789898452286905464879603.686908794794846726361032049594', '0.0000000000074777328304945359092709244468056835524', '-4.59764066472448901851878980248313723924655316906084357740049123168021045989767328444918153657822331149e+89'); + BigNumber.config({ DECIMAL_PLACES : 94, ROUNDING_MODE : 3 }); + T('-33240294219', '-226069762860245268437272123400574797895866315054579499385790733208804786814838316285516673786443254579', '1.47e-91'); + BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 1 }); + T('0.000000000000000000559929373520986063303443207', '36933.4273431237036497606164370219728463', '1.516050401494174305838357e-23'); + BigNumber.config({ DECIMAL_PLACES : 62, ROUNDING_MODE : 2 }); + T('-0.000000035811883955605972145313778465', '5527078033940442210732762483079568725277452988799329891469839611510732047337136057081786294644193232432266432240833609588710665413078739225994547', '0'); + BigNumber.config({ DECIMAL_PLACES : 40, ROUNDING_MODE : 2 }); + T('-7739007094817715141415534.4', '-0.0010310442772165592938636050348144881712', '7.5059890887617268105018254498699286018459975922907203293975111378837e+27'); + BigNumber.config({ DECIMAL_PLACES : 53, ROUNDING_MODE : 2 }); + T('664736881718687667849986931928276145068978792429084590393781571627859660480521515527094764276561967727571596730811078810632063149488381786440881', '62937288793949374018170767795206877739598679449526233914308932715137189098568527056769931656294739322689322329056.946645', '1.056189255140894676319184795924484581774417112174941320662584460123968687363680482001e+31'); + BigNumber.config({ DECIMAL_PLACES : 26, ROUNDING_MODE : 2 }); + T('1479520195156023160509166908192716104626988.6', '2567', '5.7636158751695487359141679321882201193104347487339306583560576549e+38'); + BigNumber.config({ DECIMAL_PLACES : 26, ROUNDING_MODE : 2 }); + T('4144933797043719944241370197349096775202783978960.7117056182390516050247135310919420201434961226284796322442627509451846774324333806928133', '-0.000001436549536960041433102142293970410560736641737553385170498154902239727624354281411916039988931974674024884950365465641053670732852912317910923743', '-2.88533996942077883558047681601227555314984906258385914674338622914140371267219866e+54'); + BigNumber.config({ DECIMAL_PLACES : 67, ROUNDING_MODE : 3 }); + T('41.7256544', '417768338427947272756830602167.8630664876', '9.98774932466464204745666911992458172855e-29'); + BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 0 }); + T('-0.6477113172989271633442504679000622043976951893186690203208872837111958128235', '-0.00002712595585889323017717655462257053054998647101877672740855721465714609886151470803531089253836693185401695482758345567991720762267657', '23877.916806628414276926998089074622687649042325041355101856950977903586156136500718471'); + BigNumber.config({ DECIMAL_PLACES : 27, ROUNDING_MODE : 1 }); + T('-21917091964871342451992206772564762844369711509423475', '1879669887488887416581267987281341214.4429304654218', '-11660075054003819.59818915298550278545677359'); + BigNumber.config({ DECIMAL_PLACES : 73, ROUNDING_MODE : 0 }); + T('-319.941085435931955099871648217609532586578785076603616857456171814802275189049894025923049360257324887671288005110624870117659723756', '-1209259540630640.7050906072352737775129200512204839', '2.645760274664275483725949459220661851854853412747262139035971e-13'); + BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 4 }); + T('0.00001042424466361432633821283150526031692563832637225253937116119282386305414197932321951800953816212514', '18954988639424361425607124230156398503821983407305007.278', '0'); + BigNumber.config({ DECIMAL_PLACES : 50, ROUNDING_MODE : 1 }); + T('4064061441012260075188848967395.41163501510560019', '-178.0811111', '-2.282140658213952526933020111527938257015460411842634780146539640497559766180052e+28'); + BigNumber.config({ DECIMAL_PLACES : 29, ROUNDING_MODE : 1 }); + T('-10076.89199988877284010331336055060877115259816336517467218371386440933122838419234529824881687047023444626634100506929123', '100519630764850777276127225937170937041300592.5914818239675539', '0'); + BigNumber.config({ DECIMAL_PLACES : 91, ROUNDING_MODE : 2 }); + T('-422609553944352857434436099933780797900138739284126565812881817586613739212989790522.7001416029294745327091', '-0.0000000000000223093898794034569593357582034154446629578960334147394270717104933058850702702132394868082939876147817328216231591836904251475523241182', '1.8943124676597083462180954817109145444459795027300602126169075731888263640006849874136104374769000225600307547924918475955454550867487558013232495157156648486742206063763750307325894278109e+97'); + BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 2 }); + T('886675680842288459.5356266771584490143609421165282813737701213', '12759521004999265123255659902105793387283770693576146370411779987827655324263758528791529730160060932010958838163', '1e-79'); + BigNumber.config({ DECIMAL_PLACES : 94, ROUNDING_MODE : 1 }); + T('-11177657150.65646', '22.5757', '-495118962.0103234894156105901478137997935833661857661113498141807341522079049597576154892207107642287946'); + BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 3 }); + T('-327878164464081720402874194688.12136244531891652019031713687558058155067131079890467794666951656', '-0.000000000000001665773016162063861285566461795871095629939669512108146362381274207388415', '1.9683243832314684068694981732003714767530521361138727e+44'); + BigNumber.config({ DECIMAL_PLACES : 58, ROUNDING_MODE : 6 }); + T('-63094305154421569864857062196205834006893528165294358709622717600166658284820486095.20979871251009575334824980244215983875178120163105', '2278599435786497009442063983727216254769084513168684321.9495220026945639870449781267261382539211632677463356802966665042258410858909072740', '-2.76899503104825033690325751380556830457514694175768561291465961820072546587796850359413e+28'); + BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 2 }); + T('-0.0000000000000000464315768550899871500193684502284909370813260407289530945283911817805543721614906648675621468311473606607374316', '-14657114581570295624445573315579518326047.7216185748486577279127938474270096670527475557629714', '1e-10'); + BigNumber.config({ DECIMAL_PLACES : 26, ROUNDING_MODE : 5 }); + T('1415848354602977301022564605988276509146139307061146005729375907494474657847229204078089112651532247961.2498603051', '20795855.976728151580671182795037498', '6.808319677667508066571933391558937430285632750111632425581199108274540329768069465268012060040463006349928435431691118523e+94'); + BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 1 }); + T('209217270216491723249057454930875024026196514659170035978197086188701765103863307225136265641715805608441566738879373033369122705449646277801782103367', '93106124.64158412311457273725223321043451262597909109831281377', '2.24708386287027041878070444131306874150351695153291788748025452289178038734621019319316274325504310951050759884886886403662534783223656676396335186772970019e+141'); + BigNumber.config({ DECIMAL_PLACES : 23, ROUNDING_MODE : 1 }); + T('-0.00000273732923294441935493666908942841033515730542834279103731869694419', '-0.000407328055840682087718999158109736', '0.00672020793484225121288'); + BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 1 }); + T('73.16779', '-0.000000090700563689158672612164381048472768963053510275398964035070908', '-806696089.0205102044317056193127811340361540554326111841171123845420023017343855213762056939934454003594181'); + BigNumber.config({ DECIMAL_PLACES : 59, ROUNDING_MODE : 3 }); + T('-0.0037095970887334179057042966617363226689978735352342006055636068569109547526674', '-1.746', '0.00212462605311192319914335433089136464432867900070687319906'); + BigNumber.config({ DECIMAL_PLACES : 85, ROUNDING_MODE : 5 }); + T('588.861433890458300987619308938508241304189748563107484117213', '0.00000000000004293063193126322253506919708910593505519175028839767667711868920297535260471779185028676340081594977910156663986146041705819', '13716579686814109.4801527962530600690169654844007549458818514715312002107436724472149246597821861495065'); + BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 6 }); + T('0.00000000001663472681569937736021764468636408343947938441762572896949579084480124706652852698', '-127027.21905243629769199', '0'); + BigNumber.config({ DECIMAL_PLACES : 70, ROUNDING_MODE : 6 }); + T('0.000077881388218281005687336778116246367234713307125149611494456661038547296704075668396994096946267492966671812957606989', '15691751660415623132113012675219564855125381001352467351543756776971649081573575472.9720306430671202626044375403', '0'); + BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 0 }); + T('5018470142843172752988238446296281104766400309565140338441746808488124.521663', '414014171618758740750133.4674670147070027117433150268900290176025747146917972092888324395268942570587534672207640945924', '1.21214936271901007471005718838156413163402153170883868246954488e+46'); + BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 4 }); + T('-1832914338931696283253701994430445171212271.95823483324541134507191539703991467075728062389781178462788555134423060709657917771', '-12031.4', '1.52344227515642093459921704409332677095954914493311937548e+38'); + BigNumber.config({ DECIMAL_PLACES : 52, ROUNDING_MODE : 3 }); + T('-105.5668573855974034', '-0.0000000000000000000505080467178606893826007693521151808014830274', '2.0900997810368061695852459723885371044945030594418173202307869811934383649e+21'); + BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 2 }); + T('108718250076038260153655912870515978342.00377869107800089604074247785733113514358982948124392501830228193022809726014441184715572080686', '-15899622644794646191471360921732059006346455.85705357407498455317820', '-0.000006837788'); + BigNumber.config({ DECIMAL_PLACES : 33, ROUNDING_MODE : 4 }); + T('0.19980713409898847304465279726012318707675751396900400173162554118780539343821', '-47368350449574490517752260479972114089188459037.897173178741491196402302380732406318', '0'); + BigNumber.config({ DECIMAL_PLACES : 87, ROUNDING_MODE : 0 }); + T('-174074481522451307041170611922566358145', '15533147612724894801435359564263920589962105182625817145924486476064075469456376251836463637221004382078005938389749352027440867705', '-1e-87'); + BigNumber.config({ DECIMAL_PLACES : 49, ROUNDING_MODE : 5 }); + T('532164888257576692409296532357256109132835857046340194756990817306212087277.733837988', '2807856120005059255374873.6034089884', '1.895271215879173418261611419721318714981393843995758414176773287420225360469468444791198118615652714e+50'); + BigNumber.config({ DECIMAL_PLACES : 6, ROUNDING_MODE : 5 }); + T('0.00000000000000078936739235676687781048697471069755245617', '0.000226', '0'); + BigNumber.config({ DECIMAL_PLACES : 55, ROUNDING_MODE : 3 }); + T('-4.757', '-0.00015390799666060423372811043004740375083032283821397005011836280302139314159964357942698276528052695369075098060467955891231827', '30908.0756244918840088857418083632668135191730355459469328351'); + BigNumber.config({ DECIMAL_PLACES : 85, ROUNDING_MODE : 4 }); + T('0.0000000000000024086600463806299424374121416890201561074038886878296571892378709973569307557556598815096869720271879070921871793621514095998237208', '-0.00018267383650436296642734825224979356749023139391700542706611803293888182378140451160391086957687806217665', '-1.31855775981532073973356030848385469374644265678625171094991413730337640548e-11'); + BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 4 }); + T('-0.00000000000000566339', '-96726469543567045686080198731796552602525901758368736232549164989040575593444074453855788545532851.5949763831974132484492570065944329423352571', '0'); + BigNumber.config({ DECIMAL_PLACES : 78, ROUNDING_MODE : 4 }); + T('16233126225250017239357792388796845628839602788760722792.453362213405880166713109524605579504406984411465580205725967962502654508133808950000768194', '-784330484460898350357646319220780944579454673767199974320.7460455944153056585632904028918800511788168812967069164912', '-0.020696793694570845174286957594940800138344900939750553472711294668787393104488'); + BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 1 }); + T('-0.001027227256904838404076883669167087383248041', '-0.0000000147801674790446518333269676210150733391205337179850941245838314675715834402855498818739028333287912525977435496', '69500.380043815001799615692643077023293588724619925816701350653879436495088501077999309'); + BigNumber.config({ DECIMAL_PLACES : 92, ROUNDING_MODE : 3 }); + T('-0.0000001990043750371168', '2415439288627895583143324072485704.15761799024842376407789705776116715405499594097624', '-8.23884814551320804683528445216952331803735569672513e-41'); + BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 6 }); + T('-56876.55', '-286884694441389260975558562.68761178612544125809046971858121051871389394063721121229978222388403502505799617452213418492118893453300399160186065', '1.9825578395092777601362722054536146763450825e-22'); + BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 2 }); + T('23183117357670318840207286779.242191940176', '2441594243119571302087603432924028052316961487487341075546889771795605508900', '9.495073730207423539895e-48'); + BigNumber.config({ DECIMAL_PLACES : 58, ROUNDING_MODE : 0 }); + T('-31031314146924995', '80943698506460330141829058227002559323342352405399480229766085802.73623295758518488008784968699935295906439393184586098019102870553480600201153317', '-3.833691161e-49'); + BigNumber.config({ DECIMAL_PLACES : 98, ROUNDING_MODE : 6 }); + T('9554004513125108404454.332182829', '-0.0000000000000428070507696677372446142868295574463706781408788400262', '-2.2318763711455904495917325800934504534278861298096679501991840956753990995597092670470281864283769126772933167094010772479607488715139e+35'); + BigNumber.config({ DECIMAL_PLACES : 26, ROUNDING_MODE : 3 }); + T('-188318292118020514853926201588010679957912685912520050100632462422877619868161685230958711843756798778233311', '132996437.39', '-1.41596493720951478829628672046649534660826666157452061731976640598400934255402677919024453233706878302895050954417148241176658e+99'); + BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 2 }); + T('-0.0000000000253046119541707155341319133738179042090207530859028', '183617314322876.3843388', '-1.37811687571437713828216455135235670426253451409492363018493e-25'); + BigNumber.config({ DECIMAL_PLACES : 86, ROUNDING_MODE : 6 }); + T('-42983.951863855905', '-2813978704145178281459185721082321712134272674268203694186397209647978.65393904624792638717190430063059680799351572965675889514606153', '1.527515179860376253681e-65'); + BigNumber.config({ DECIMAL_PLACES : 58, ROUNDING_MODE : 3 }); + T('-0.0000000000000000052576336175273095418683503744328917024741423886898192072968825295608281835403325939628995766411924797296362311459317663462998083', '0.00000000000000000635138682360814339656226767395782178622304745960310840815806579774726400528516117064673477214645140209682965', '-0.8277930101792341563711820383870995947773403726418026909269'); + BigNumber.config({ DECIMAL_PLACES : 98, ROUNDING_MODE : 5 }); + T('14.510662', '-6460977193611710.382458732290006019458367086538', '-2.24589277522097021144960364847064895052756482295594419405304216930508553877595513258e-15'); + BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 3 }); + T('0.00000305075352127112867790436342132153304812674804825099', '1145593318925749490712370981825229018726.0929629635595122268970069928215193250755895206273738836343252203924372011249888557339544475354757', '0'); + BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 5 }); + T('-0.00010409292164615733255094982837667284444963881640472653539261289047143443796793765346308903423063400761614619592811443', '-910008186461205239.127162051', '1.143867969484414533732048839930898965202065938776741991472557932224816704971e-22'); + BigNumber.config({ DECIMAL_PLACES : 28, ROUNDING_MODE : 5 }); + T('-69224654862065764827457960920931035032846898.270747371880524018589045953231029264548773980415492085057935536963', '27722.7974739183517122996227898377773462139628445426903600322572140365864846885180318665848321733332850952117877469580659938958717', '-2.4970299237366799314615107853411874721389361788061682389441515126234e+39'); + BigNumber.config({ DECIMAL_PLACES : 70, ROUNDING_MODE : 6 }); + T('748328219291816002567179573245615631918010310524147605072502032845081519883', '53976076527955807214798385812228741.42671549665780851140356826764262550967043918485146793472932279132292584518392976084673452210', '1.38640721487830756717514342962081532673049970583869580500187134917531707860796097770789341042590001302971710208e+40'); + BigNumber.config({ DECIMAL_PLACES : 89, ROUNDING_MODE : 6 }); + T('-66096336983025155007.5220511215740675352418119840246737832194293904729678484038594073569399935657025712484320547254202112738396447702225', '-47395071000079000864207822463847460164969086692962555384461096.91095392786373863613723947638365443737557314257197', '1.39458250801892419961095624497744143748492803636e-42'); + BigNumber.config({ DECIMAL_PLACES : 29, ROUNDING_MODE : 5 }); + T('258659989403036381662678196509125919573150803197965079', '-0.0024128949479267778078540054019202956570751016107942978992781301281505845332707173003934035748317893220323526695673189852303394867', '-1.0719902647451924184519408522873337172855140546829120811209098609498644614493683652023e+56'); + BigNumber.config({ DECIMAL_PLACES : 67, ROUNDING_MODE : 2 }); + T('-255669456502609829675.1754570053733971644767575667708240795171306472406606028703384242193104814321565455014432265673237865614999', '-160209080640356763214498353032787518205.81824768012172641778084256321801379237119003770288489188251214191941127578937229900265229222', '1.5958487214376195646051132916531607859987846926501e-18'); + BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 4 }); + T('79332245721730794305433305.57125077116744904', '63.16069259007087721', '1.25603824892512581959792292319223137051e+24'); + BigNumber.config({ DECIMAL_PLACES : 36, ROUNDING_MODE : 2 }); + T('5646984399916039752736634417752740757912946759288778', '27102250627116511555658883115535676464038667691892505474.49934453626777172121212764261264232359174493', '0.00020835850415559525403700740238114'); + BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 0 }); + T('-0.000001833204', '-70032493828.0462760607863944502271405984706585431640042645892591362349650922351', '2.6176477514868209438502651278222355064223158661452876524235e-17'); + BigNumber.config({ DECIMAL_PLACES : 55, ROUNDING_MODE : 0 }); + T('1643290537424155577796064755302208.463709290498773494124727961655077611185', '0.0000000000000021758574682770342707923991356114108943145438806402313572809257501515087667155834891', '7.55238135485687397818640667440855290096077122043429316369443181871884343547076279457111380079552675248e+47'); + BigNumber.config({ DECIMAL_PLACES : 1, ROUNDING_MODE : 2 }); + T('0.00000000000000001669225353724326249448998648071682103917420867656893815385345849552816287588317523521565176863936380610879001200667158874656768007418618', '97251151442885135849001043061692210364802177672125457972893459880', '0.1'); + BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 0 }); + T('2232749647333352791881113926645372.34182416259209', '-1919220460056572909075401113153052783819875527740981924724295791352984029662689499.76611798540319163843370902120280294536', '-1.16336277869168714e-48'); + BigNumber.config({ DECIMAL_PLACES : 48, ROUNDING_MODE : 0 }); + T('9191674.4793132900722157785788553450700110648470547649053246813005103102798867779412063404788356', '27987515814537513427.54295693583755847320485566632537666454854542018912274848528', '3.28420519356665172912117731679711366e-13'); + BigNumber.config({ DECIMAL_PLACES : 56, ROUNDING_MODE : 4 }); + T('268544456176590551228416255234754012.978423972942', '42755282940.90691715500064', '6.28096547852933553492632311532241190003741515146399629261029875555487046371736315e+24'); + BigNumber.config({ DECIMAL_PLACES : 28, ROUNDING_MODE : 1 }); + T('0.00000000022793719926001557870302579145905527347886600946741374898155679045335596131204096937048478565755124577951330735710', '35792534427563863196938393781453935443.7999401092216381109498', '0'); + BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 0 }); + T('-3442643999906587666844868172078592801320762633923948733756859111208732345488468033455180794679714351516847250384856323399581196946136110965', '0.000000036014507575334065020', '-9.559047816231745969792741298249599865990162294983728442351441090864464819322143517836559818831355892530917986753014028183477511513031345894970186973963363057009372137e+145'); + BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 2 }); + T('81741616723017006497822269553968297189299929736044754049602310386728770988752923740377486132998273316651271846247370444225', '81126403311021362988339148734237367331633947754186757315875171456.00', '1.007583393160387577305293909526638721713866926529770426708181568314812209839363396126767228220188033476873315883402864084678038379973e+57'); + BigNumber.config({ DECIMAL_PLACES : 72, ROUNDING_MODE : 2 }); + T('-0.00000025775621672283396732767630591013281284', '-0.00000000000113112177508646706263827769038192496', '227876.628670799078731022374792437747137208249884441244875762679381641243743018'); + BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 4 }); + T('-1238055996867338715989439845494196.602994794912408122120948795262806329177848717052374938', '-349378147055192824558611337219704719883737450677311892640541798481423792746924344638864749321302858195330089126865026761152814882033404.742', '0'); + BigNumber.config({ DECIMAL_PLACES : 86, ROUNDING_MODE : 1 }); + T('-0.00000000058946410475204713', '-0.000011832888717583602387597691727694768559040334127243145271303547', '0.00004981573974207219321950980265928387761714878244676413448555988336825599553422671373'); + BigNumber.config({ DECIMAL_PLACES : 42, ROUNDING_MODE : 0 }); + T('-513.63491785227008061291411777776338954398572267897385330505688506258027422', '7463219701943872073370450.8', '-6.882216233276485231e-23'); + BigNumber.config({ DECIMAL_PLACES : 64, ROUNDING_MODE : 1 }); + T('-959552258348866338791129314756377976624367468137765850396480512899835638462382059570865324.45799673346664713198692357941260320331283378490142926303', '-2.22', '4.322307470039938463023105021425126020830484090710656983767930238287547921001720989057951911972958258858770864805962069426140555463215247303735419054054054e+89'); + BigNumber.config({ DECIMAL_PLACES : 63, ROUNDING_MODE : 4 }); + T('-77883119700103963752264584100183435.0736204991947993893718715649695', '2333460567880718719594262823561329375619353258748990.918298159216358793650603321367179889345579967711807431663116', '-3.3376659872525077302924522309136969705216916179e-17'); + BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 2 }); + T('-23085170097384093274972665451689092687328238951119453595497082490949759588867071346163017183648834094422009033630029341272143696439695402896', '-18086866658375839947851624913063503607', '1.27634988046387741564665512404914275394621578213783045249404842019782171899530433736356246229042901270714260617530954223288074096395550492077535596e+102'); + BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 4 }); + T('-1449068720600143437592.86874345113339256703842757704', '638423709046022938156322320162140640541195697853560467728060213175.52059634523456808011795512606785071804714042267000908673888494366196867266', '0'); + BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 0 }); + T('-3', '2.190000177676247587968922', '-1.3698629025607'); + BigNumber.config({ DECIMAL_PLACES : 38, ROUNDING_MODE : 4 }); + T('-0.000000000000000000212636955011389414839466', '-0.00000000000547133250917031259091402456004843035767087076198801752343779161394408952098079493807626900940806528936571596926583827387986856031746662474220', '3.88638333815383938463911113305e-8'); + BigNumber.config({ DECIMAL_PLACES : 77, ROUNDING_MODE : 4 }); + T('4105803267451796098700354366317990626490793344.9427541580688128905741135112842298255240509063197472146451', '0.00000000000000000002415371770318597612543137459331265437239426595378149520249777367302756992574408286672', '1.6998638958632126100530099316755376351587863359383119895961776609478443848995573253450009639527748020320992925483242261075260845703161199802713e+65'); + BigNumber.config({ DECIMAL_PLACES : 83, ROUNDING_MODE : 0 }); + T('1536560320642901878970181558216997347019834883976330464476424777280620033456797921497798356588806450402450622059908047462407498', '-6368600156760249976930924897417348481170030471234872668542819714438402228393329736938892817571664495264216294', '-241271281415249111.58830548698631847070138657104720205374313339216470189795216775425226632343021943837'); + BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 2 }); + T('6844820358486326194744159322308790843106744280320377008954541441044086', '-6232776150615393168477614896815395922933568579837.418', '-1.098197688009459932217399879700623500892903624890944427014883279240052795368e+21'); + BigNumber.config({ DECIMAL_PLACES : 55, ROUNDING_MODE : 5 }); + T('1204688342277055965926379717661660411720688849872516698942674329382163376498291205040236943207092922171959399494914.39011443079158181256672596', '3034517350117681138346738557210062717172939593791401204645.3', '3.969950418079953101894124164568887836138078905589854545003614622505225873033172829206408652910629734844182990422e+56'); + BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 5 }); + T('-0.000000000000161196500013731342135880240572358905856843574326480831737185683677379073538753176666026540859531189671616672113637670083', '128440423109099451950325153756824777809528912713046540.743', '0'); + BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 5 }); + T('-8021209952320152857.4878831448334373766839169468808096800382793135409190492245466152537276074399945804162378509725564895492004776', '-12294.73904503469', '652409939156827.4442134394077978312360046849763214154626418660528098970087455'); + BigNumber.config({ DECIMAL_PLACES : 58, ROUNDING_MODE : 4 }); + T('-0.00517388086766833111733245112786346947323639422972973966551869774864327198718901177259417949555417334912135153898206114320954172867814126447584055', '-0.03517476661743945594675386610533927084329952861306622597741716386233453296240601914139672354527111013300704519530092', '0.1470906949842603766410501906977565055631364274063897751633'); + BigNumber.config({ DECIMAL_PLACES : 25, ROUNDING_MODE : 1 }); + T('2573184278501499.8946176652926360190865431824560912727401079791346260554669708241862345911576291903764866699897164309950153863449330050713632041175', '0.000000043241501321629753526820632045775520519389477498990882842872887482968503164029794600119774116937359114105067670589634593793488348204314020725411100465', '5.95072835090110994658531253952277104918859305783e+22'); + BigNumber.config({ DECIMAL_PLACES : 32, ROUNDING_MODE : 0 }); + T('-6940702240308624593019484948231957948843766.184509559555320218721368728491521296608512372180710521266142766421504400057555709716770169544671', '-23375842193663737842275569.6936158276446636235603347421129063536999054607538810111679250798539565263876614', '296917740238252174.47986428376657061330786593813063'); + BigNumber.config({ DECIMAL_PLACES : 83, ROUNDING_MODE : 2 }); + T('65648425.01180871514246724305614457967515067023467295347850669937619354644479642108771771127641', '0.00000000000000166331728135031480258375999655996342572341481785346', '3.946837187822276959776576071102153502915106781806411650618747392665080222989322793033450482203813683884929e+22'); + BigNumber.config({ DECIMAL_PLACES : 26, ROUNDING_MODE : 5 }); + T('1153.8', '1.032', '1118.02325581395348837209302326'); + BigNumber.config({ DECIMAL_PLACES : 93, ROUNDING_MODE : 1 }); + T('599854675229234875531510843632464421316765301', '10692666448967456551.17357142627520572161147276567490382868418740', '5.6099634089601680710080397632397697057201190308769900155756132849191067585240528670316228985292264623266972777421914641e+25'); + BigNumber.config({ DECIMAL_PLACES : 27, ROUNDING_MODE : 2 }); + T('-91003154193327422318054977979559798038617.24475602943727257350', '-97164.43555398453386646402573925477261096177733241758254990430', '9.36589130317811548377193954259236823396468645893594190648495337e+35'); + BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 0 }); + T('0.000000008923846499877102966022022724927927305505623352384958714910299624734808349340038032388088533376134576612671621098639464445', '2323043673890365404072353101065788418599089133008528.48664319918012059564599954103135', '3.84144585836928106349595541556116685e-60'); + BigNumber.config({ DECIMAL_PLACES : 60, ROUNDING_MODE : 4 }); + T('-46799039556564983375609015238952166942332338.336', '70591564515825593103568139941828658075146291678283188216481741557727018642248891354.59565', '-6.62955126119542587893e-40'); + BigNumber.config({ DECIMAL_PLACES : 62, ROUNDING_MODE : 6 }); + T('-36.1179461029742312522673847078996883965738928503', '-100569467167841102140550919449278060898188922968819.602233099844893563645024785643324195812', '3.5913430905124e-49'); + BigNumber.config({ DECIMAL_PLACES : 89, ROUNDING_MODE : 3 }); + T('0.00000002479295909306169487242742853847942399677274865352201616277394801303697463391770681143478578', '-975102087.940198171467818631687898893644299737144418720321072409833167062645', '-2.542601374737515379702975646189299020480969558649620454043232922284568672e-17'); + BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 6 }); + T('-22704.6514007298851360157029855944029770', '-0.0000237259788727499103563872516086869904668403642073415041045581124411757882484640913456570', '956953199.802725341519292592452059918169329599946179917320348608125261079184320112813'); + BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 6 }); + T('0.000000000006696949688432960159969756123681564135755842', '-2108422300081693781235179093528225050930052974845697.955570499448273929659693052830371912141313813942220496005', '0'); + BigNumber.config({ DECIMAL_PLACES : 49, ROUNDING_MODE : 3 }); + T('388544724722977238072599.85105881568', '1119502301548081', '347069161.1671419201048623305561411516977843187446263880418'); + BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 3 }); + T('2499833150241992476861383217158', '24842.806938577597611681288280499261519959074131335827532312007098774218994152805597', '1.00626034587101419900384153906414128379e+26'); + BigNumber.config({ DECIMAL_PLACES : 6, ROUNDING_MODE : 6 }); + T('0.000000000000000075207971460109815781578029738530719182', '-0.000001252114075716431179907851124948371096085525196590897471', '0'); + BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 4 }); + T('-2431215342181996772981861978777959489747291159041531887.4260610078297188041001258499984761128614584389853180540573473285885761798543658353', '-0.0000000000000000000602452416497034439753397868859220924283164668346443307865392234488622501612643356251294446058052370612921519704379', '4.035530899383427708420533850950801617603263881782841628213157245563085253796113721165322376257920697853813979429237609632e+73'); + BigNumber.config({ DECIMAL_PLACES : 40, ROUNDING_MODE : 0 }); + T('-407831746738950597449364836360790405890616752952418.9819287191146342464653389498070582', '-0.0016562936145919801805083922955297251024054241416693402898660748687576109090725423948840534145442012567640833878946340376579461613517664', '2.462315516681007978854774489192771647323890746368098663553118408304656288381857357663609206216e+53'); + BigNumber.config({ DECIMAL_PLACES : 74, ROUNDING_MODE : 2 }); + T('-3374732972793083645750776092246840863415276871396777646.420558762189352107316007310937411', '-0.000104684541074035590084725187308919085090334423139351523445490833599909272825834065737033457170315371799582109616299652457425059891608379866921', '3.22371664256175704755746904789107482221884721469026471438546648065568416093642164068502446507190361997825460584330769561155220142746e+58'); + BigNumber.config({ DECIMAL_PLACES : 5, ROUNDING_MODE : 0 }); + T('-2473283609019884187026789617880425.5292', '-0.000000000000000000012629560700156750844742128651038940562337604172', '1.9583290881916322023307410267121451340090794305482720970277e+53'); + BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 2 }); + T('-1404482098715017500566440471472979845183069261054584897287814242487239267004568787170554993685910209103145003498', '-1617536252667148116081061850408841416455174665207754497642731794305747363754.714903728875245403788805437786097579', '8.682847734628348531930390594592919060197228137041571171563249190604755150351229996013258337462929641275023754412046e+35'); + BigNumber.config({ DECIMAL_PLACES : 38, ROUNDING_MODE : 5 }); + T('2168165259874', '0.00000000000075588149586060819104186427987769944909836644183903985432252629601447845760197250954050695394086860163', '2.86839309038176336264134620990047211480103555575604119209136497e+24'); + BigNumber.config({ DECIMAL_PLACES : 73, ROUNDING_MODE : 2 }); + T('-49999037754203038494748194130135480756653249820.50', '-477838183854181143128032706335056029040474575.159731344891403379', '104.6359195301582024018051689988803119224761424364673522247848762110933344858'); + BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 3 }); + T('3384425457979559561425092835866696982506431871523977204902603949.76146368711218894575822938101642716816585813052249478551420475924034476', '30321929004931437310276217291757920766818622486697561816.3163126783639034538589498855266374840067252586426724325300151111694988282999082345719', '111616429.72744676420247993931734393915595006879474992'); + BigNumber.config({ DECIMAL_PLACES : 89, ROUNDING_MODE : 0 }); + T('-224818432373113057932269131568462251173627386571177801533800760.32409', '-1695376460710.3108459', '1.3260679122495366951431400279524987016153243439210812707665894116283984110338827213610756814616975001334055919534976385903817839190792064322e+50'); + BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 3 }); + T('-237.578', '84.91553751340315592695506241570789130308896653823', '-2.7978154170254229823460689077145936'); + BigNumber.config({ DECIMAL_PLACES : 94, ROUNDING_MODE : 3 }); + T('-103772.11', '-0.00000000000000000012359388598271456139794552736048812520958193178449264362833512730122738103677292334672889946035166832053771059016318012811', '8.396217108548009367707120637040570491415491600095837475920856749568873747971260965596560371476662507942284833617000732e+23'); + BigNumber.config({ DECIMAL_PLACES : 63, ROUNDING_MODE : 0 }); + T('22909648747874321834002861748166913834938225445334337582075.91577617352530837700404418138563', '344997348755274633375686780004807427237266721270788600978798421.31667232973698994105219242156804410304', '0.000066405289288542853704464526792983880279517370745526436521714'); + BigNumber.config({ DECIMAL_PLACES : 66, ROUNDING_MODE : 2 }); + T('22.7093', '0.000000000000000000031482402641136721681302175040141334303861664544258583558677552712724221091570109031291009573901616627307034449943797019159196295837', '721333128823107034407.245588580283601865156902265694027404835211281464004207920098622691'); + BigNumber.config({ DECIMAL_PLACES : 73, ROUNDING_MODE : 5 }); + T('-53.3482008111094893315', '-179875603511294433120572352881730127395532524029934609151628237104587157.20139982', '2.966e-70'); + BigNumber.config({ DECIMAL_PLACES : 50, ROUNDING_MODE : 1 }); + T('-0.0000000000016965884607882112341570473022123635213887877', '-254193932392350141293665499056643496334844702171.0011957979', '0'); + BigNumber.config({ DECIMAL_PLACES : 53, ROUNDING_MODE : 0 }); + T('-3608818103.6257', '0.00000000066687566458790594', '-5411530657451355102.96900423991961831653534633882826719471593894648307767'); + BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 6 }); + T('2318242408326881364050125597979239', '112310944635701210834391077699249659690575868442.76453626831', '2.06e-14'); + BigNumber.config({ DECIMAL_PLACES : 72, ROUNDING_MODE : 6 }); + T('-0.00000000000000618702564082704832709012756540185267449760034770120968177308119606015', '0.0000000636992736953289541753851889023710808159676823930954566680270109511630825121023467230722909747266089629998915475752295286219924691553386019', '-9.712866853740501579238837122769674331721942058210092878959040848e-8'); + BigNumber.config({ DECIMAL_PLACES : 58, ROUNDING_MODE : 1 }); + T('-598192155524599.543469895866422907968312515845807798812410543694536906451748175', '5694882.75800932980130397772', '-105040293.3551699886292866504040483598198656759423392804848834787366'); + BigNumber.config({ DECIMAL_PLACES : 26, ROUNDING_MODE : 5 }); + T('-2049743760490918742562713287128097078960201454.7049014175851231280129287812874', '0.0000000000000005771177413168', '-3.55169077944831902790783522124802412003623956082372578582048268563797255797286310356936e+60'); + BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 1 }); + T('-0.00000000009884649504038136938680320284773210466871053456420299408286245343032575711592101304225442', '-1098525608842646403217112781968194558531214', '0'); + BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 0 }); + T('-92318581224219215407076957352744169354858712728142497119299358628912215021294586712890999326827690277362149690350438983927874511888748137479592656043', '-290760936622051110642', '3.1750682294788645045471768037259286560603641852570628867381214349882098982439068147409937961868755790796593059293749776446591995499123894524476912116518548983598710420846017432939463458659085485919e+128'); + BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 3 }); + T('-9269786200775977340361260306515894998.021', '33193', '-2.79269309817611464476282960459009279005242069110957129515259241406320609767119573404031e+32'); + BigNumber.config({ DECIMAL_PLACES : 35, ROUNDING_MODE : 0 }); + T('0.0000000000000523838637138708498596608193031525072735103662301710366353432022220335881062938126235613172748770850903840988895888', '-0.000000005390098997912356392648612061230099204506807958291145755415705955992896925483127908', '-0.00000971853461952362777213043286495'); + BigNumber.config({ DECIMAL_PLACES : 32, ROUNDING_MODE : 4 }); + T('11958219415768809322523664.23510148866112269670', '-197354727314347918145898028040.448589287170209', '-0.00006059251571269269954205910357'); + BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 3 }); + T('1970642653364229432816602515045582440712477643422054228961879708118806395724379583117602361343660652032', '-31644394765386367730800662519558297968988.94299193490', '-6.2274619817339032278732958869917127861770080996927559003305288e+61'); + BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 0 }); + T('12.908', '-6090845987261539127416937275863176894837056503709934034705496307351876662575410450246138356839229866026764921029348319480510482423385605152870', '-1e-81'); + BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 5 }); + T('-3739413063818.436', '-0.000000000112265754744654239729057667928492728400303558521884186145185975438813258745093576284952622933', '3.330858169816469071325141276282506e+22'); + + BigNumber.config({ DECIMAL_PLACES : 1, ROUNDING_MODE : 2 }); + T('-770817.6149120', '1', '-770817.6'); + BigNumber.config({ DECIMAL_PLACES : 59, ROUNDING_MODE : 0 }); + T('-0.0187466210691', '1', '-0.0187466210691'); + BigNumber.config({ DECIMAL_PLACES : 167, ROUNDING_MODE : 5 }); + T('741750111.2', '1', '741750111.2'); + BigNumber.config({ DECIMAL_PLACES : 108, ROUNDING_MODE : 4 }); + T('-658788.8898', '1', '-658788.8898'); + BigNumber.config({ DECIMAL_PLACES : 175, ROUNDING_MODE : 0 }); + T('9.61', '1', '9.61'); + BigNumber.config({ DECIMAL_PLACES : 80, ROUNDING_MODE : 3 }); + T('-0.0200812135393285', '1', '-0.0200812135393285'); + BigNumber.config({ DECIMAL_PLACES : 83, ROUNDING_MODE : 2 }); + T('0', '1', '0'); + BigNumber.config({ DECIMAL_PLACES : 227, ROUNDING_MODE : 4 }); + T('0.019711206', '1', '0.019711206'); + BigNumber.config({ DECIMAL_PLACES : 9, ROUNDING_MODE : 4 }); + T('-37901147', '1', '-37901147'); + BigNumber.config({ DECIMAL_PLACES : 45, ROUNDING_MODE : 5 }); + T('18.9', '1', '18.9'); + BigNumber.config({ DECIMAL_PLACES : 77, ROUNDING_MODE : 3 }); + T('15.5', '1', '15.5'); + BigNumber.config({ DECIMAL_PLACES : 290, ROUNDING_MODE : 4 }); + T('-7897.752568795', '1', '-7897.752568795'); + BigNumber.config({ DECIMAL_PLACES : 111, ROUNDING_MODE : 5 }); + T('-1251.5193', '1', '-1251.5193'); + BigNumber.config({ DECIMAL_PLACES : 183, ROUNDING_MODE : 6 }); + T('-322.51', '1', '-322.51'); + BigNumber.config({ DECIMAL_PLACES : 279, ROUNDING_MODE : 0 }); + T('-1', '1', '-1'); + BigNumber.config({ DECIMAL_PLACES : 31, ROUNDING_MODE : 0 }); + T('-30817.8', '1', '-30817.8'); + BigNumber.config({ DECIMAL_PLACES : 62, ROUNDING_MODE : 3 }); + T('5945.68390922', '1', '5945.68390922'); + BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 1 }); + T('-34433584302.1', '1', '-34433584302.1'); + BigNumber.config({ DECIMAL_PLACES : 124, ROUNDING_MODE : 2 }); + T('674578813.88', '1', '674578813.88'); + BigNumber.config({ DECIMAL_PLACES : 124, ROUNDING_MODE : 0 }); + T('-27788.40581695', '1', '-27788.40581695'); + BigNumber.config({ DECIMAL_PLACES : 166, ROUNDING_MODE : 0 }); + T('-0.00000001312054398836', '1', '-1.312054398836e-8'); + BigNumber.config({ DECIMAL_PLACES : 259, ROUNDING_MODE : 6 }); + T('7285863936.63', '1', '7285863936.63'); + BigNumber.config({ DECIMAL_PLACES : 152, ROUNDING_MODE : 1 }); + T('-160424.958593708', '1', '-160424.958593708'); + BigNumber.config({ DECIMAL_PLACES : 152, ROUNDING_MODE : 0 }); + T('-1', '1', '-1'); + BigNumber.config({ DECIMAL_PLACES : 181, ROUNDING_MODE : 4 }); + T('8462674971.041', '1', '8462674971.041'); + BigNumber.config({ DECIMAL_PLACES : 230, ROUNDING_MODE : 4 }); + T('0', '1', '0'); + BigNumber.config({ DECIMAL_PLACES : 286, ROUNDING_MODE : 0 }); + T('-2', '1', '-2'); + BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 3 }); + T('572.2', '1', '572.2'); + BigNumber.config({ DECIMAL_PLACES : 193, ROUNDING_MODE : 2 }); + T('-0.00000078870910606', '1', '-7.8870910606e-7'); + BigNumber.config({ DECIMAL_PLACES : 194, ROUNDING_MODE : 3 }); + T('-1.13508762818546', '1', '-1.13508762818546'); + BigNumber.config({ DECIMAL_PLACES : 127, ROUNDING_MODE : 5 }); + T('-66055.885279477', '1', '-66055.885279477'); + BigNumber.config({ DECIMAL_PLACES : 210, ROUNDING_MODE : 5 }); + T('7', '1', '7'); + + BigNumber.config({ DECIMAL_PLACES : 31, ROUNDING_MODE : 5 }); + T('-3627799291965346540712456501882577638718153439964273.69768754745407377945437075521783565726672078877524231088948196974675990545252844538838313048', '2902582598160223924761958365823830027858536030974673247874848195750710639118580059329', '0'); + BigNumber.config({ DECIMAL_PLACES : 26, ROUNDING_MODE : 4 }); + T('-36001492.432242546296733753651918782904968060628', '0.0000000268571386752795633902', '-1340481309923749.60424676488025244368284003'); + BigNumber.config({ DECIMAL_PLACES : 73, ROUNDING_MODE : 1 }); + T('0.028761002817864251956109170412427462717070528743863157542939339484227653369339502297446', '-0.000000094653664305603408767633117494180308734767461188738807756952982012636', '-303855.1442129602517346583444983127341880783118168865288269447897099302126198776'); + BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 0 }); + T('-85322335566464', '6469888.5944307193591905163370', '-13187605.060141139610979582454208887767681099267106809857522822603509317013524918783027403'); + BigNumber.config({ DECIMAL_PLACES : 26, ROUNDING_MODE : 5 }); + T('16809851622.475024268444162553728588984396380486399687835621352324230348800918507804359930399204804510891779303641052273377163383820147883', '-57215392073691534065404484981855847094198821321.61', '0'); + BigNumber.config({ DECIMAL_PLACES : 31, ROUNDING_MODE : 2 }); + T('-6811137700468.4120764694970441135733', '0.0000000023059798665870351445075811611361310997931893558813170397607609131', '-2.9536848084234293518878460220105623971538070065410169e+21'); + BigNumber.config({ DECIMAL_PLACES : 7, ROUNDING_MODE : 2 }); + T('-638779241138332540350253234404280665291777745188393412936839021876823463401783663308918096038128976596374.561', '-68051131834015582432107963260604318921316821583135690566786271984905882370557171397765996', '9386754105668476.6600599'); + BigNumber.config({ DECIMAL_PLACES : 31, ROUNDING_MODE : 4 }); + T('-14657920224077.8196317636342', '-0.00000000000465223224472437622998002168098960600459077322855753439284117569067355580658376103876790291367613451291596099691519239625284134126680082838843170451', '3.1507283929558497932940390469545446644371974034666360324e+24'); + BigNumber.config({ DECIMAL_PLACES : 80, ROUNDING_MODE : 0 }); + T('0.000000000000000799413784708489070154804455019351539040017795947686353303982626226154902676475791766853951996180403160495135659', '0.00015899044548165972', '5.02806179507626533025725613512141576199220345614439279312943689111263e-12'); + BigNumber.config({ DECIMAL_PLACES : 27, ROUNDING_MODE : 2 }); + T('112.4', '-247122773803885104678938490543776215767287187710036178178642833042340408207332559624129671164074382472407914940407329096987525835763247', '0'); + BigNumber.config({ DECIMAL_PLACES : 39, ROUNDING_MODE : 5 }); + T('-6749239072680037611477387165520399718627171261275656871594447516707739157447375453.0850906452508074838041592952394', '-0.0000000000000000000425367400205957', '1.58668460944871412110921030222520659939459453295210959028883529105346640505416908988034240818782790363642220342859700167068855612092040209711e+101'); + BigNumber.config({ DECIMAL_PLACES : 59, ROUNDING_MODE : 0 }); + T('-78585520044519312578903851346721582390295041942545224540.4077480063430', '15608189483426918496442359748.328547440633', '-5.03489018556335172543283965718069901158499515404324025173365767509373422432477748944903e+27'); + BigNumber.config({ DECIMAL_PLACES : 66, ROUNDING_MODE : 6 }); + T('0.0002433958238870374223584900446577514807866249098', '-974085668642024438754153215750261556218494099322336875511140345748788013.37160781313866594498158089317715605416277197000420491691481779975851730965', '0'); + BigNumber.config({ DECIMAL_PLACES : 2, ROUNDING_MODE : 2 }); + T('35355658849855129861180132974521949639236227942273180070920909591997.5412718864453961655409496833643232', '-6829894701612572880956944.30', '-5.17660379764090344784461795557673945820085318e+42'); + BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 2 }); + T('0.0000000000000004863277441095313650020277658', '-1915156649006139193824415428828548.226120476308930617348969557716204059468127709020706212182973396317634270963094', '-2.53936274279134646909595038496863193e-49'); + BigNumber.config({ DECIMAL_PLACES : 45, ROUNDING_MODE : 6 }); + T('3110214615781612992890984598602049585353025840029996756.8', '-12363633.735703916761979890620833004650965570622978', '-2.51561529746702304379852124316472359173133213146019874592196121688793016060937069742986516173e+47'); + BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 3 }); + T('-2492672185265151812046174378926367157329542788.012959590780989023454605', '2952729318474530090870658399786053537408219.3906284777551455998495603485592436', '-844.19258130743328424729732809565777445198353443'); + BigNumber.config({ DECIMAL_PLACES : 96, ROUNDING_MODE : 4 }); + T('-0.0000000000000000007320310887201006223680530966667619613517348866729624512960684347441584440958295121362771380217317647500564562116357111207761629175246399818', '-138414223976457986589511933703538109754713884281537728200.91943242818721', '5.288698427732450616331e-75'); + BigNumber.config({ DECIMAL_PLACES : 35, ROUNDING_MODE : 1 }); + T('10999864907092520920895380713856004127397682.532596580677990930328362005963039243358204558185910', '196343713.6849006266166504', '5.602351458394789894333113940137448028976772623932537000358638579200945e+34'); + BigNumber.config({ DECIMAL_PLACES : 64, ROUNDING_MODE : 5 }); + T('221045710673710276492009437067143592662773.856846445724783089474622164404197148759178814745808223790625805135636', '-0.0000000389477677414362297767674108298752973871495647000802842813777875775407282', '-5.6754397874911185057037157523236644823930384830352417175752110746497657133548282615982344419113556016327559255673e+48'); + BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 5 }); + T('240678363889896535476608890834256839099354200642282132.3567674776854817276669811640194672649868976944164254551737266436840749954620074', '-0.0000000000003270561052230022070885151941886998875327220508415003856939907938256551789027282736470999947552147075245018856709429461672576524075', '-7.358932001155909554704741657237282173970051372138657023587316029170115689537846892416866064347805401735668699561439620407617493743577191366190959232502857112108757e+65'); + BigNumber.config({ DECIMAL_PLACES : 9, ROUNDING_MODE : 4 }); + T('-7.178031909440888369704885323707', '1516020040884738327154002675958432784538802896161509426211008572828005010593393496212499875624324908766875671036834866713', '0'); + BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 2 }); + T('54965252469790288.652938530020939781427224341939297915034220301430902042349180160604051708024915967324883143322801228723358372853', '623946023243580345168323881734.4620771717220859', '0.0001'); + BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 4 }); + T('-2795638.1', '-2161096419.94539189', '0.001293620254144256162867799066739494523291287326399017485930407237805526109189927'); + BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 5 }); + T('0.000000000000000003852018722689322934971027565056757680249879397479902038546745253385039422647290', '-17246108988600613193981252482413.01314088520161996158451216439550151353590714427134854025418012751181842007418232652053551313400069601766742100', '0'); + BigNumber.config({ DECIMAL_PLACES : 63, ROUNDING_MODE : 0 }); + T('221801304731867898722038636258624536262037365890856604315282884653157', '2094327674927908258391134166024509186528722409321102998398672460295465253591729278.96582716180542732018913846048640937', '1.05905731651806982574099150484324282372652447760899e-13'); + BigNumber.config({ DECIMAL_PLACES : 21, ROUNDING_MODE : 4 }); + T('1532838983776695487599528998729549071388657144993487023435228991.9', '990.589', '1.547401580046513223546323448705314788866681484443585607588241936766913422216479287e+60'); + BigNumber.config({ DECIMAL_PLACES : 37, ROUNDING_MODE : 6 }); + T('465700444880360273077764592.7986182609', '-2503537671301153955344095007925259354071482854', '-1.860169512202001663e-19'); + BigNumber.config({ DECIMAL_PLACES : 96, ROUNDING_MODE : 6 }); + T('-737.9477460', '-2208882228473942560046621538408466604050799418518411.359689327180780337087341150988044640763423839783525726874628300323581490779705', '3.34081978879348533408762709794460530393880741912e-49'); + BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 2 }); + T('-1780.935', '0.0000000063599557312757408886184969827919637733185077905549489709055686000144560690972584654631309913966808095690705362617488552800127402759644403578323745', '-280023175513.9532999919255525243358694199755546'); + BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 2 }); + T('-3174812496720.2024472161401049345990356687496259647362835882746075189931008133652106507076289350917733050877266685', '-11577402298228661788066668885649046899568558593977323012221669916977009075263.68987879858', '2.74224943985e-64'); + BigNumber.config({ DECIMAL_PLACES : 24, ROUNDING_MODE : 6 }); + T('0.000000000000037393089998235', '30.48028567299956', '1.226795917e-15'); + BigNumber.config({ DECIMAL_PLACES : 71, ROUNDING_MODE : 6 }); + T('-0.000000000000000014361552929811982736615965481580567217525637319317240063009008734218786729641811914528272953', '38894055.24', '-3.6924802109711773877287179688750211220005551983e-25'); + BigNumber.config({ DECIMAL_PLACES : 73, ROUNDING_MODE : 3 }); + T('-1106712834746496271590139438978918.284493457211966539186940267648623517601413699972073', '12.651903442803950284122677894500273050579262355162185398259009250085918287743090096911728314267336', '-8.74740184154632998685570715135187099129190523606826573808969334655308536685525947172863935518914297815606e+31'); + BigNumber.config({ DECIMAL_PLACES : 19, ROUNDING_MODE : 1 }); + T('1965816920105.701', '193318595333060825523082692725318850724848310012764635800422866840602225944616048379730199886885832561560510098980592365407100269336056728309672617390', '0'); + BigNumber.config({ DECIMAL_PLACES : 25, ROUNDING_MODE : 3 }); + T('-93640040324023752251529412531185332867956555140665056973180546778724498284012702822548570943019087150145776861957801211909463864512251577824034', '-143231624126283297491786421936221797175607422617226.013004717269172628467439784881071187990876523911857290645231919390', '6.537665190577184298014654831331041237300337917886585974164714424079643658287946824279228245192047128164615398717555388e+92'); + BigNumber.config({ DECIMAL_PLACES : 62, ROUNDING_MODE : 6 }); + T('-12131310205530178549986982444919200922452750101913903755227517798481860220928943578277008850211909085315660306919866449158279174719742979917858572', '10099444477949939699307890962009803302145119975370786040785982897958245734502493657340584708838245922196599201528769240812710', '-1.20118589017607848240663555410549241113804583900945574602316648957593596767104398128e+21'); + BigNumber.config({ DECIMAL_PLACES : 60, ROUNDING_MODE : 2 }); + T('-155911155981121697946504715907032', '0.00007713234002563812643249182407072677029361418001885804605134796432669022', '-2.021346116678142665492634136637705651399478440912868181711281002264263231182256160625624195021327e+36'); + BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 4 }); + T('-314519720816.294641993510410042', '-73900264788779898482484025551.2789786937107751050093524120030925959202365579923494746768958358324131625416622963', '0'); + BigNumber.config({ DECIMAL_PLACES : 46, ROUNDING_MODE : 4 }); + T('-0.000000000000000000022056684946133452223154877758058559745782371622496016852274708161609469345202799864210511471961718727568797250983', '2192.4', '-1.00605204096576592880655e-23'); + BigNumber.config({ DECIMAL_PLACES : 23, ROUNDING_MODE : 4 }); + T('-36718441550169372371365706865920954220515130374010754420775299383130574258014428968818638300100167261047519525107435192917209537633068.6987406', '486669343803413216.6570235994569604541241883174903', '-7.544843746106501830550929477783142021319040138888657861453606554546672602582819541534595959892887319664966162568994848849103211961019778178e+115'); + BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 6 }); + T('-174897603.6829025255536616965100335620728022186021824024738814468540609170297407222690674769997151788917219289220320647', '-3090631934656302827461849613845387320538781882390263576900269.96203524879585780492687738568481060148212201875530310065841371200747460299396388019057826', '5.7e-53'); + BigNumber.config({ DECIMAL_PLACES : 36, ROUNDING_MODE : 1 }); + T('-0.0000000000000000000516635551329299730054951454997484763051286676348350719016083089595328539668314795616230172195369791117989547921474840417479838289', '37158674757939157993806627436353261.1693133803498125', '0'); + BigNumber.config({ DECIMAL_PLACES : 100, ROUNDING_MODE : 3 }); + T('-116211456037739778354514403171070990290045964305800566666581525149565486.32', '691105844361415778213381366158312468', '-1.681529059345744224343857153033090610271694090791790398037247261895639783202993203557556001605441340067039008803140995633541845972971384e+35'); + BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 0 }); + T('-266123221842708273091923489090.44699490158783091683586819391224186615489948199901610194471068906250718585', '-32022496369765241675524333697024321255620899023355408645576679616065845108442066436105122545172230348409185.3287445324413516115', '1e-16'); + BigNumber.config({ DECIMAL_PLACES : 73, ROUNDING_MODE : 3 }); + T('-1797688265425.7165515', '0.00000001738534543188409980783340157189761914309185224423152375400233581685255509123238', '-103402504854969448367.9442019148179289847567704024747005025133086683014233516225496372066135892'); + BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 4 }); + T('-10984212754657202637672673959837294920049108', '66798422529499247294838021394095462563622966883604447314209247', '-1.64438205854433154292727033196794337117905605306943236068e-19'); + BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 6 }); + T('-53728320914823485656962471346789246888085720599563024297225728806563759597.08997812964997715166804294389691757990554791437598952982626', '161986897.212190847247930402167370789598105972372356016401292522857077503612014300986685393882', '-3.316831289412461645528953055028515828986318158340012081483263853064100616867908460183631017188747235206664340288823720112312483935290441934775455091087550590435261e+65'); + BigNumber.config({ DECIMAL_PLACES : 62, ROUNDING_MODE : 1 }); + T('43499319623237565178359324186732885047347808350193390861109947292568223373928330829578849395492942843044863204487853834423629319010077404', '41.61584639', '1.04525855885728544900944700422643224407931616142707006135481718584285228504584382741371535986902567099380489626244638381422162201060732538906317315441244351440427353999563818555319307059754840660829e+135'); + BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 0 }); + T('-0.0000000029566841246534331279657636450833574893146205734156302396324472852389800000520273047202036875', '178293878201991423271468500825009131886066263126087140735726743237756163465204105131686', '-1e-12'); + BigNumber.config({ DECIMAL_PLACES : 48, ROUNDING_MODE : 4 }); + T('-53285984.2730196558626413', '0.00000022251203859045276846118178068673238976534040397169920739300651950103910444091385416803551627124476836809100670767957171883776738529248470267338926312', '-239474612747114.418096957880031470643644150387920667074980777785'); + BigNumber.config({ DECIMAL_PLACES : 41, ROUNDING_MODE : 0 }); + T('-0.0000000000021241416901713887978056248575347198323545756122975232381823836383371939553270979083264153498307676759237644777281660799420859049004048904361204700', '36679048355616055800277781408267813021767139312403514628691728644295598845421524239970510639806879.6945149256633616388109328661753190177005', '-1e-41'); + BigNumber.config({ DECIMAL_PLACES : 21, ROUNDING_MODE : 0 }); + T('137574367839771834643.393381075516790041905084899117844552825342262', '2611019781396503523904141094448721642995445153136976323137569094666196747752629789123.3341477720667223549496535765203833491631689201904030781304366462', '1e-21'); + BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 2 }); + T('-46528959.7394442732924916035177731048000767876497850170219980388259', '1037248701397072471510989839316688758413582838330610129126886393101433389394585975632286834135743.787548166373358914448', '0'); + BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 3 }); + T('-0.00000000056695591361167840304172988714223322951491340767159863538777178312445969763826386935046712059795678046539270261679031967257607760440924899096022660', '-779029210176534831045360217249568.30980168036216148309578587927769139848738105890895104989746513915926410335893309428593918260725239773017045566033087', '0'); + BigNumber.config({ DECIMAL_PLACES : 56, ROUNDING_MODE : 0 }); + T('-13536625136815780.744306114543699', '2.3', '-5885489189919904.67143744110595608695652173913043478260869565217391304348'); + BigNumber.config({ DECIMAL_PLACES : 39, ROUNDING_MODE : 2 }); + T('3828596461558459272689391034.819361202105624858791543660878267672483858601126237474504353490573335717987597176461232833', '3961994280872253514567880', '966.330638093595121842939810134710239620276'); + BigNumber.config({ DECIMAL_PLACES : 36, ROUNDING_MODE : 1 }); + T('12599638221152309.759580', '11336877437079.7', '1111.3852373443218654215797135397663113'); + BigNumber.config({ DECIMAL_PLACES : 56, ROUNDING_MODE : 2 }); + T('-88.37874582921555583012595131704636995244428718407695437048798589292198100811998511949731349', '9771661424624630602696201302125658718468318947410559134582776640149515206573413089145551182999199848.976786489964321075171160128096611871174701344', '0'); + BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 4 }); + T('-2927120046541815610111604317174084416389151672310745506669425625751707198319307905481195306939915434378276670663938336984100459602882414666739238', '28375670960860533566126717597042623586721711867346949078603553.961690252700453027034899981369000418', '-1.031559764905395713608499094713689979147866827815838375742327221955329968696830466391247813620712877131843983043022446116077328828325714886717168694179208257626570794495812884425806e+83'); + BigNumber.config({ DECIMAL_PLACES : 87, ROUNDING_MODE : 3 }); + T('-19470574904101509325332331844986037767740399660560019057.7119', '-492073026322248393605882095057847550345748645576816340124093551078296738464192541723849045789', '3.9568466188086958171880465233173766690032026629745e-38'); + BigNumber.config({ DECIMAL_PLACES : 63, ROUNDING_MODE : 4 }); + T('211872876026497009829063883393233809481191362190883849253684099737680426913907201054617907234117865033184.403186292426187511', '0.0000000000235411610950606792007241228964067314935178706017234354189703612990579977911087014870100085875178570060549626', '9.000103060802358048215024300287481951213931206246371042229672906316070218904715481032206444135472089495320677006553492015303007635540926239602846226244158732372969514391243502512e+114'); + BigNumber.config({ DECIMAL_PLACES : 38, ROUNDING_MODE : 3 }); + T('-5844455100853651376654250475252964203821845263432078985483833480198.51472537564940283680797304546064130915324997343772', '0.000058497152341298204924493051718564688435050872861886324684792417903238087063888341977808292118', '-9.991007881468350499077540958997813363816099982733021160139526414847479777982598244125723450988545976629726106e+70'); + BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 2 }); + T('-208539893283563850007.12643120990936066514350129267100171', '0.00000000003593389363501178150231050905656637424998749048521394992496271441393538046117383924866658559', '-5.8034315847246614933801374673895793847064415344319377921323484677322966821185e+30'); + BigNumber.config({ DECIMAL_PLACES : 74, ROUNDING_MODE : 6 }); + T('8043645587396641021732938502681359817543439337253058801052675740727721571730611228132672600646378605923337', '-1323168.0924182', '-6.0790806802907468246561587887883818559253301923676419145425764182242811472128643594651107453686007508486594959358274782215931402672682865301655132211915388078279766064418822e+99'); + BigNumber.config({ DECIMAL_PLACES : 94, ROUNDING_MODE : 3 }); + T('5345077442239697454774886011336423018078704256068877803956836.23670510981228', '0.00000000000000011060002574332742516535915190923257434052767174581226361318129403016189732388821484995223249750300118960318109112292', '4.83279945580136505083168821214294440490791659361794451962055705475361639771415302893151132245139970562331724322926429058741027119693014735827818262705360391630191471509021e+76'); + BigNumber.config({ DECIMAL_PLACES : 74, ROUNDING_MODE : 6 }); + T('37380113626925218715479908638517128519818838419387968758726972455361593237513712458449673118747923669546576138252264740929482975939', '-0.0000000000000006801939143670958029711273998707649', '-5.495508389207880808350127256226214657608101009599899937862259967580635635162812932348658262637085316678783747639804163466588837613458273577204072680194370104490392648318243300970515044257684662231363345437817216189655097e+145'); + BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 1 }); + T('-0.9240980589910997704959111664719986817089775045950366247068688279255379005723485652', '2755.6517853', '-0.0003353464555720329641810317761965302698250818448919198516365858150087574131'); + BigNumber.config({ DECIMAL_PLACES : 85, ROUNDING_MODE : 0 }); + T('-14735206357348664992865735695185105417857687409468279761627208898647639982660985611846182127951822610594979835', '-1101.435920065550795028', '1.33781785112580264818549467778872109422330749864153338258575618875337349603120233840090224841974504016817513947058883351448908524776104006557258225856439835456989256889447413801105919735883507e+106'); + BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 6 }); + T('-11526.519029803437218611745', '-1980641645745226278812446291533504566961012681.6852819482283250153725775125045633888369820790039112495797481', '5.8195883412653009499001562175289054617e-42'); + BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 3 }); + T('-6932745342923694183863.4407712889787388', '34870883.827073144167437289748257172399669498831227487', '-198811861990754.361'); + BigNumber.config({ DECIMAL_PLACES : 59, ROUNDING_MODE : 3 }); + T('33243257027', '12751607507856865851589951449477366328020361795144300426079667590.64133288964626', '2.60698e-54'); + BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 5 }); + T('-1069197506689172.41', '1533236526211500507519256343794194823892728051.876524428551329407055560589140164359', '0'); + BigNumber.config({ DECIMAL_PLACES : 46, ROUNDING_MODE : 5 }); + T('28.66476546644904598250037221', '13561.3771956', '0.0021137060825761378236596338190565475019637983'); + BigNumber.config({ DECIMAL_PLACES : 40, ROUNDING_MODE : 4 }); + T('-10.096692387169004444076101', '-7410.64884007451703882184197', '0.0013624572699449996017890531485487416503'); + BigNumber.config({ DECIMAL_PLACES : 6, ROUNDING_MODE : 3 }); + T('44.7', '-0.0000000000000000301026373988561927150', '-1484919723402656472.793582'); + BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 4 }); + T('3.56894291995338299991755', '1743568375310759.8', '0'); + BigNumber.config({ DECIMAL_PLACES : 67, ROUNDING_MODE : 3 }); + T('3', '-826.135811839846027331161', '-0.0036313641861364767959206955234182098243004715472601430821909469785'); + BigNumber.config({ DECIMAL_PLACES : 6, ROUNDING_MODE : 2 }); + T('-1808754472.784798621211119', '-4.80680493504930', '376290383.576019'); + BigNumber.config({ DECIMAL_PLACES : 21, ROUNDING_MODE : 2 }); + T('-13719.54124584038123510031', '-82799.7597925792605642', '0.165695423274283022702'); + BigNumber.config({ DECIMAL_PLACES : 38, ROUNDING_MODE : 0 }); + T('211', '-3', '-70.33333333333333333333333333333333333334'); + BigNumber.config({ DECIMAL_PLACES : 41, ROUNDING_MODE : 2 }); + T('3928.421774', '9', '436.49130822222222222222222222222222222222223'); + BigNumber.config({ DECIMAL_PLACES : 66, ROUNDING_MODE : 5 }); + T('-2004652978881980253.113402793', '10322816999041770.04392455520279', '-194.196310858563604831647952256897110242003406104346850039990186256351'); + BigNumber.config({ DECIMAL_PLACES : 45, ROUNDING_MODE : 2 }); + T('-2018773348883.71465054', '-95.6599547821640', '21103641053.153823906720595724139611921871346297547041415'); + BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 6 }); + T('-4', '3.4', '-1.17647058823529411764705882352941176470588235294'); + BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 4 }); + T('-0.0000000000028137592443635124', '-13000014', '0'); + BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 3 }); + T('2493563679699245721581.10118959', '-2.3', '-1.084158121608367705035261386778260869565217391304347826086956521739130434782608695652173914e+21'); + BigNumber.config({ DECIMAL_PLACES : 37, ROUNDING_MODE : 1 }); + T('4263', '-377673230.165946', '-0.0000112875355188051814813466004829001'); + BigNumber.config({ DECIMAL_PLACES : 39, ROUNDING_MODE : 5 }); + T('581039154', '126.1997353157348695726852159', '4604123.396505687590451186522030874068448145555'); + BigNumber.config({ DECIMAL_PLACES : 53, ROUNDING_MODE : 5 }); + T('36718233569568035.5623632966', '-0.0000000000000000004253531230970461102986', '-8.632411889259977432652492553440731066395804170439188684436466736195285017185879275448308e+34'); + BigNumber.config({ DECIMAL_PLACES : 48, ROUNDING_MODE : 0 }); + T('1589.0', '29956064269104627619425204', '5.3044351411638043170732068e-23'); + BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 0 }); + T('-1', '6430.54347880709805273799', '-0.00015550785144298652946840350151154071856470065693057863326908156052'); + BigNumber.config({ DECIMAL_PLACES : 67, ROUNDING_MODE : 2 }); + T('0', '-0.00142730507727', '0'); + BigNumber.config({ DECIMAL_PLACES : 98, ROUNDING_MODE : 0 }); + T('-144192.00037156754667924551', '-7.162', '20132.92381619206180944505864283719631387880480312761798380340686958950013962580284836637810667411337616'); + BigNumber.config({ DECIMAL_PLACES : 90, ROUNDING_MODE : 1 }); + T('0.0000002125446846991632617065', '30187422146964858.751132393', '7.040835870794392858896523523804956400228144991244039904910599480948e-24'); + BigNumber.config({ DECIMAL_PLACES : 23, ROUNDING_MODE : 2 }); + T('-0.000000000000766736698720', '56374815559565768750.730069', '0'); + BigNumber.config({ DECIMAL_PLACES : 100, ROUNDING_MODE : 2 }); + T('25544518.93', '0.0000000000000000469', '5.446592522388059701492537313432835820895522388059701492537313432835820895522388059701492537313432835820895522388059701492538e+23'); + BigNumber.config({ DECIMAL_PLACES : 42, ROUNDING_MODE : 5 }); + T('-1', '0.000000000113429652580411765983', '-8816036876.169455829162161705581854144993945032508218'); + BigNumber.config({ DECIMAL_PLACES : 87, ROUNDING_MODE : 1 }); + T('0.00000000000000035422355864762072645518', '-1.6', '-2.213897241547629540344875e-16'); + BigNumber.config({ DECIMAL_PLACES : 87, ROUNDING_MODE : 6 }); + T('0.00000000000000026', '-0.000000000000260917323134327', '-0.000996484238289326852105214922572476320767735966922488817544716433433861636109648679809'); + BigNumber.config({ DECIMAL_PLACES : 92, ROUNDING_MODE : 4 }); + T('0.0000422503149', '-73.0', '-5.787714369863013698630136986301369863013698630136986301369863013698630136986301369863e-7'); + BigNumber.config({ DECIMAL_PLACES : 31, ROUNDING_MODE : 3 }); + T('-0.000000000648027233537154668482004765', '-134504033.997745367898', '4.8179018448473e-18'); + BigNumber.config({ DECIMAL_PLACES : 2, ROUNDING_MODE : 0 }); + T('243894540410762058029407888', '-0.00000000000000002232190341731310376303022675', '-1.092624297539048035018341587483106663186005083e+43'); + BigNumber.config({ DECIMAL_PLACES : 63, ROUNDING_MODE : 6 }); + T('-30848889531', '-0.000000000276330963520701001', '111637469568946777225.042184589341630228759558909484344277094396913777361082423533527'); + BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 3 }); + T('0.0733847676285075658223', '3200754441.76241498', '2.292733446558933402859704013400566526564506089725566867031e-11'); + BigNumber.config({ DECIMAL_PLACES : 46, ROUNDING_MODE : 3 }); + T('55459.7094802769', '0.00026', '213306574.924141923076923076923076923076923076923076923'); + BigNumber.config({ DECIMAL_PLACES : 45, ROUNDING_MODE : 0 }); + T('-3824411944005565', '-1944006272447294.9050169336', '1.967283747079191009528212074542465311767640289'); + BigNumber.config({ DECIMAL_PLACES : 70, ROUNDING_MODE : 4 }); + T('-49988911.88240', '-0.0000000000000000000602946', '8.290777595738258484176029030792143906751185014910124621442052853821071870449426648489251110381361e+26'); + BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 2 }); + T('905.265', '-0.0003762667212876294', '-2405913.0100639133708110280512999354206013620719162208025088154429338195961215800157338592084057296053077'); + BigNumber.config({ DECIMAL_PLACES : 98, ROUNDING_MODE : 0 }); + T('491681428.2', '9889159450842871336.20055172', '4.971923353486762549830247141081325652241006265772730475626693624654733935080926456805817e-11'); + BigNumber.config({ DECIMAL_PLACES : 41, ROUNDING_MODE : 4 }); + T('11.516921', '-967562944223487787311', '-1.190301992108930994314e-20'); + BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 5 }); + T('-147.2', '2762717260.3346237541', '-5.328087753075787159592127888919297641410658444033425936501613e-8'); + BigNumber.config({ DECIMAL_PLACES : 22, ROUNDING_MODE : 3 }); + T('-463636264923890408.70', '-1523796614007631384233641.36636', '3.042638765973583e-7'); + BigNumber.config({ DECIMAL_PLACES : 33, ROUNDING_MODE : 3 }); + T('-37055587088693300137.079346', '-929484432460697135181725', '0.0000398668184152295421171433434'); + BigNumber.config({ DECIMAL_PLACES : 49, ROUNDING_MODE : 0 }); + T('0.000000015003766126680', '-3126735711697635910537.847162', '-4.7985399183398926661e-30'); + BigNumber.config({ DECIMAL_PLACES : 31, ROUNDING_MODE : 1 }); + T('21403298.27', '490950349594', '0.0000435956472741079271932239552'); + BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 6 }); + T('12747419090.74910385808', '5609552870700.213864971009786', '0.0022724483367170588812509767026961008324355580443991349489495630841'); + BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 4 }); + T('-0.00000000031650284413470156532719022', '24884.25268228752104', '0'); + BigNumber.config({ DECIMAL_PLACES : 100, ROUNDING_MODE : 1 }); + T('-0.0000000000000000025560659549131481713245589909', '-1839.19039965941103767929', '1.3897777823255771365831427167461403931142788015230608260379260680349248504469029e-21'); + BigNumber.config({ DECIMAL_PLACES : 91, ROUNDING_MODE : 5 }); + T('0', '0.436', '0'); + BigNumber.config({ DECIMAL_PLACES : 25, ROUNDING_MODE : 4 }); + T('1.647', '491019608.868', '3.3542448616196921e-9'); + BigNumber.config({ DECIMAL_PLACES : 96, ROUNDING_MODE : 0 }); + T('-0.000047732386384257731', '-148.74', '3.20911566386027504370041683474519295414817802877504370041683474519295414817802877504370042e-7'); + BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 5 }); + T('0.0000000000000600', '881.6632103841255050511', '6.8053196836759278403754559818100822e-17'); + BigNumber.config({ DECIMAL_PLACES : 50, ROUNDING_MODE : 2 }); + T('0.0000000000000000006637245', '13014712642.3817540382848', '5.099801418885075542945e-29'); + BigNumber.config({ DECIMAL_PLACES : 87, ROUNDING_MODE : 6 }); + T('143776841518863171', '-0.00000000000034609861', '-4.15421609231147073950975994962822878716560000053164039000329992657294983068553785870448887385014346055882743938208824e+29'); + BigNumber.config({ DECIMAL_PLACES : 21, ROUNDING_MODE : 6 }); + T('645.46862418407791010997', '-0.000000000000000167', '-3865081581940586288.083652694610778443114'); + BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 4 }); + T('-7', '34.6', '-0.2023121387283236994219653179190751445086705202312138728323699422'); + BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 4 }); + T('-1121235833199899', '-32.8', '34184019304874.96951219512195121951219512195121951219512195121951219512195121951'); + BigNumber.config({ DECIMAL_PLACES : 41, ROUNDING_MODE : 2 }); + T('0.0000000000188990009740969592', '3378889801717.569696743', '5.59325757368297407e-24'); + BigNumber.config({ DECIMAL_PLACES : 33, ROUNDING_MODE : 5 }); + T('-0.0000038752364', '21865.820957', '-1.77228031255757803194199e-10'); + BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 5 }); + T('3932331.838871822', '-23243490297748.2880832875437', '-1.69179920420676512721486683805551646729696968236e-7'); + BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 3 }); + T('206040930636923340359166692', '538.2', '3.82833390258125864658429379412857673727238e+23'); + BigNumber.config({ DECIMAL_PLACES : 60, ROUNDING_MODE : 1 }); + T('0.0075', '22087187408224417.09296328', '3.3956337950060989374730469091936150605677e-19'); + BigNumber.config({ DECIMAL_PLACES : 50, ROUNDING_MODE : 4 }); + T('4706.821112', '-4484.0913', '-1.04967111441285773998401861264510827422269479660238'); + BigNumber.config({ DECIMAL_PLACES : 2, ROUNDING_MODE : 5 }); + T('-0.0000000000000003941356879017724141765125', '-2978880330505.199022894078127', '0'); + BigNumber.config({ DECIMAL_PLACES : 33, ROUNDING_MODE : 4 }); + T('-3717638164756266179.31373', '-0.0000000000561', '6.6268059977830056672259001782531194295900178253119429590017825e+28'); + BigNumber.config({ DECIMAL_PLACES : 42, ROUNDING_MODE : 2 }); + T('-166897.9202', '-288870139993051017637902283', '5.7776106663019878573e-22'); + BigNumber.config({ DECIMAL_PLACES : 1, ROUNDING_MODE : 0 }); + T('-109773551.005', '0.000000000000000291', '-3.772286976116838487972509e+23'); + BigNumber.config({ DECIMAL_PLACES : 33, ROUNDING_MODE : 5 }); + T('-69483831516149064933', '45666797733.7', '-1521539388.886757599986395999920494858843131'); + BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 0 }); + T('-2615008789.04', '-0.000000448699711223001786', '5827970742197229'); + BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 4 }); + T('-15.73379275132695121', '6940.2776264951217530', '-0.00226703'); + BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 5 }); + T('-6.2', '0.0000000000000061493836805438314318105727', '-1008231120724556'); + BigNumber.config({ DECIMAL_PLACES : 29, ROUNDING_MODE : 1 }); + T('690', '0.000014578939930754707820', '47328544.0009547235807333066257912877'); + BigNumber.config({ DECIMAL_PLACES : 53, ROUNDING_MODE : 6 }); + T('-29256.628612', '-755504.1526726314415', '0.03872464301950333628903545496047362726515935622535422'); + BigNumber.config({ DECIMAL_PLACES : 28, ROUNDING_MODE : 6 }); + T('-322915.4117033386', '9.11', '-35446.2581452621953896816684961581'); + BigNumber.config({ DECIMAL_PLACES : 96, ROUNDING_MODE : 4 }); + T('-4882625292842289459782.0713', '-13.38', '364919678089857209251.275881913303437967115097159940209267563527653213751868460388639760837070254110612855007473841555'); + BigNumber.config({ DECIMAL_PLACES : 58, ROUNDING_MODE : 4 }); + T('0.000000000129351956271', '-1.23277829937087117', '-1.049271846665476808964426796136761445163472822311e-10'); + BigNumber.config({ DECIMAL_PLACES : 41, ROUNDING_MODE : 2 }); + T('-48182353470928.914851766197711', '2272941918553283127', '-0.00002119823347778141066704688834669339833'); + BigNumber.config({ DECIMAL_PLACES : 88, ROUNDING_MODE : 4 }); + T('3196.64592323932531030', '0.0000000003245910077253889108961189213', '9848226990760.5008268589452525184898665826000345443245395549409514626098519146023853166565543551373496'); + BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 2 }); + T('406.7745', '-6.090912', '-66.783841237568364146452944977697921'); + BigNumber.config({ DECIMAL_PLACES : 77, ROUNDING_MODE : 5 }); + T('-1914.2', '-165340.870423515601', '0.01157729480373990431549028002660588664420183544300321207365966680648027280245'); + BigNumber.config({ DECIMAL_PLACES : 99, ROUNDING_MODE : 3 }); + T('79689754768065472164971.285', '3449964290146359.9564723427', '23098718.730414668928941553485511848664319501601702219791827719624588756164690478609945244772535870938469521'); + BigNumber.config({ DECIMAL_PLACES : 77, ROUNDING_MODE : 1 }); + T('9001.46330089645627336', '-5365000999.299', '-0.00000167781204552852879566574147623862228074948620117785436144852086837922548'); + BigNumber.config({ DECIMAL_PLACES : 96, ROUNDING_MODE : 0 }); + T('-9587016002791929.4856188', '-3031413369917389888311716631', '3.162556482045597308235495224067632584707461093481480654259077736452205618657579410106e-12'); + BigNumber.config({ DECIMAL_PLACES : 100, ROUNDING_MODE : 2 }); + T('4296083.76674', '-194.0', '-22144.7616842268041237113402061855670103092783505154639175257731958762886597938144329896907216494845360824'); + BigNumber.config({ DECIMAL_PLACES : 91, ROUNDING_MODE : 3 }); + T('18.755207714630171', '0.0094306822594364919143130833', '1988.7434650725730232507495283304038983882113409878102620841865180583795237557817888781235508759'); + BigNumber.config({ DECIMAL_PLACES : 70, ROUNDING_MODE : 3 }); + T('357139.77763854332', '31461893637685', '1.13515029245017195115729683926708304080654495656947213475032038e-8'); + BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 2 }); + T('495109692881305.22330433373579', '18890', '26210147849.72499858679'); + BigNumber.config({ DECIMAL_PLACES : 43, ROUNDING_MODE : 0 }); + T('725835.2', '-56469.3051', '-12.8536237291150940690431836038301098201401455'); + BigNumber.config({ DECIMAL_PLACES : 53, ROUNDING_MODE : 1 }); + T('-0.0000000000000008539291084466621', '-66462.10331086', '1.284836118490894791666770536323048e-20'); + BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 0 }); + T('-437950623250185.1796', '4525961511', '-96764.107'); + BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 0 }); + T('0', '-419919711657396843.359722150078', '0'); + BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 6 }); + T('1418494254750712738754757', '4591733826207580942881672', '0.308923449929649'); + BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 6 }); + T('-0.00000000000000001121505882526814442165', '-0.00000034022765195967647788365', '3.296339601049636215256616888976508295137995323068555837387e-11'); + BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 5 }); + T('7633721603085398572526346', '45335909347835.3783', '168381349638.6806344236154879430718880607974785'); + BigNumber.config({ DECIMAL_PLACES : 29, ROUNDING_MODE : 0 }); + T('14896648161672846137148209', '4.125', '3.61130864525402330597532339393939393939393939393939394e+24'); + BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 6 }); + T('-7914781164126.1', '-119014.0', '66502942.20953921387399801704001209941687532559194716587964441158183070899222'); + BigNumber.config({ DECIMAL_PLACES : 77, ROUNDING_MODE : 2 }); + T('91019909259953143323', '-5522.06153359199', '-16482958168114892.84740240589841073937417129944138279714524430633829860712832274184766934216152'); + BigNumber.config({ DECIMAL_PLACES : 99, ROUNDING_MODE : 0 }); + T('-1137517608314921022353199', '-0.000000000000000000107056140182953206696174', '1.0625430791461044518578148113716784804459024574335198467207328302373884979194708111129803963870744434655116384071360289838829502244352737346538e+43'); + BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 5 }); + T('-1173767.2326305257', '-233061127762110315635636', '0'); + BigNumber.config({ DECIMAL_PLACES : 31, ROUNDING_MODE : 2 }); + T('5.8876889668', '3.1', '1.8992545054193548387096774193549'); + BigNumber.config({ DECIMAL_PLACES : 52, ROUNDING_MODE : 4 }); + T('-2.14761558914686180054', '-301574070805882062973', '7.1213535812541532012972515757551e-21'); + BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 3 }); + T('0.000000053624403845025055012694', '-0.000000006053504014848', '-8.8585'); + BigNumber.config({ DECIMAL_PLACES : 90, ROUNDING_MODE : 3 }); + T('-504313761620588', '-0.00000000000377', '1.33770228546575066312997347480106100795755968169761273209549071618037135278514588859416445623342175066312997347480106e+26'); + BigNumber.config({ DECIMAL_PLACES : 5, ROUNDING_MODE : 6 }); + T('53662399.4035417690', '-65017.90', '-825.34809'); + BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 3 }); + T('704021459384072.011987216647', '261808795961066517287.30237', '0.000002689067251540191817460319532140345637081639220151448601586269279206225927743'); + BigNumber.config({ DECIMAL_PLACES : 82, ROUNDING_MODE : 3 }); + T('-3.00', '6046001143510655285.0', '-4.961957381069941064583069603421034150719179715307203065064584517e-19'); + BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 3 }); + T('973187354320146232724757050', '-568184.017437886808358801', '-1.71280311387240648806239296872607262685395385114971208588734369281880271e+21'); + BigNumber.config({ DECIMAL_PLACES : 36, ROUNDING_MODE : 3 }); + T('-7', '-228023476845.9625107669', '3.0698593394086058293957362e-11'); + BigNumber.config({ DECIMAL_PLACES : 82, ROUNDING_MODE : 6 }); + T('-0.35128712', '84029956765557847990155625003', '-4.1804986402656983115928354008537100293091431728296533e-30'); + BigNumber.config({ DECIMAL_PLACES : 6, ROUNDING_MODE : 5 }); + T('1.580', '26596811565693', '0'); + BigNumber.config({ DECIMAL_PLACES : 82, ROUNDING_MODE : 1 }); + T('89476761206818481.30255306413', '6431672239.9', '13911896.917217546364625511259955397093741757541639618090079161404687487019778350630314121'); + BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 1 }); + T('-285.84043874171354004290', '-3.80', '75.22116808992461580076315789473684210526315789473684210526315789473684'); + BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 4 }); + T('5023551710351214.645250', '59', '85144944243240.9261906779661016949152542372881355932203389830508474576271186'); + BigNumber.config({ DECIMAL_PLACES : 30, ROUNDING_MODE : 6 }); + T('55.8578416393', '-691700380830418738.5565', '-8.0754389020634e-17'); + BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 6 }); + T('-3911724.737800850440974979', '5777887024710204784553820488', '-6.770164804316e-22'); + BigNumber.config({ DECIMAL_PLACES : 98, ROUNDING_MODE : 2 }); + T('50', '-1.7', '-29.41176470588235294117647058823529411764705882352941176470588235294117647058823529411764705882352941'); + BigNumber.config({ DECIMAL_PLACES : 2, ROUNDING_MODE : 1 }); + T('53803800627864394248948141885', '0.0000000000000001263391910050269947733', '4.2586785778708650076551456104714784704241888012e+44'); + BigNumber.config({ DECIMAL_PLACES : 45, ROUNDING_MODE : 0 }); + T('-4427033.670465245740417', '0.0000236581313971487858', '-187125246544.145067202651826613329029261197764651089163179'); + BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 5 }); + T('0.00000487987924778308703036015', '-14382977', '-3.392815859875940168965124535761963604613982209663548791046526737823470064646561000549e-13'); + BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 4 }); + T('0.0000000000000000013173879240462', '8815.9760593357349633294', '1.4943188538393812027029e-22'); + BigNumber.config({ DECIMAL_PLACES : 94, ROUNDING_MODE : 1 }); + T('34082970570302.46', '-0.15378396401309', '-221628898624315.1965897283937656884389168635185823292768143062677620972948453464654511988959215787053869058463'); + BigNumber.config({ DECIMAL_PLACES : 46, ROUNDING_MODE : 3 }); + T('-9422972.687', '-4.8', '1963119.3097916666666666666666666666666666666666666666'); + BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 1 }); + T('17603175301812980820940043.5084', '203586376416168.590708', '86465389343.286908319080296673397986841425082701014310790406348979937008055804195811226'); + BigNumber.config({ DECIMAL_PLACES : 50, ROUNDING_MODE : 0 }); + T('1118292325.2750', '118787658708800084.56755', '9.41421303720126381391248975149497111817115e-9'); + BigNumber.config({ DECIMAL_PLACES : 26, ROUNDING_MODE : 0 }); + T('-0.000000026208118477668289226', '0.0000005384213204675190936272', '-0.04867585565688854465822983'); + BigNumber.config({ DECIMAL_PLACES : 71, ROUNDING_MODE : 5 }); + T('31749974', '0.0000000004175827007223264109812', '76032780919993846.10794696063811129544098498574186417516454488089632546613360229415793309'); + BigNumber.config({ DECIMAL_PLACES : 77, ROUNDING_MODE : 5 }); + T('-0.000000031738815698', '0.0000000001049015889731270620336856856', '-302.55800706823061140814796512005417608408899124716685671684150270243619123677554'); + BigNumber.config({ DECIMAL_PLACES : 32, ROUNDING_MODE : 6 }); + T('-0.003598212372110673145921', '-50235787946648897670', '7.162647426e-23'); + BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 5 }); + T('3715826298925020920', '1321522734797', '2811776.294938892222593957205879302040757927871951336015423'); + BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 2 }); + T('-0.0000000420723296', '19531.99', '-2.154021663947196368623985574434555823548e-12'); + BigNumber.config({ DECIMAL_PLACES : 26, ROUNDING_MODE : 6 }); + T('922.0412414065612641312654', '279432164508408308430442379', '3.3e-24'); + BigNumber.config({ DECIMAL_PLACES : 26, ROUNDING_MODE : 5 }); + T('-4639753615932249995340108', '76003590732624477.33', '-61046505.45070418182476591842813719'); + BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 2 }); + T('0.00492075860196', '14', '0.000351482757282857142857142857142857142857142857143'); + BigNumber.config({ DECIMAL_PLACES : 59, ROUNDING_MODE : 2 }); + T('0.0000000016012749138112683', '-34037956761326454044211', '-4.704380245381294320617370852e-32'); + BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 2 }); + T('-33029000879564897264715723.4560', '1.4', '-2.35921434854034980462255167542857142857142e+25'); + BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 6 }); + T('-15.036556', '-2069699249431016.1324294', '0'); + BigNumber.config({ DECIMAL_PLACES : 22, ROUNDING_MODE : 6 }); + T('-0.000197817958547740627072816814714', '555.517400440320', '-3.560967818306755e-7'); + BigNumber.config({ DECIMAL_PLACES : 60, ROUNDING_MODE : 1 }); + T('-0.000000000105900350', '1', '-1.0590035e-10'); + BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 6 }); + T('5646.1', '2.4', '2352.541666666666666666666666666666666666666666666666666666666666666666667'); + BigNumber.config({ DECIMAL_PLACES : 43, ROUNDING_MODE : 5 }); + T('-8043002.78244', '4.763038409266', '-1688628.5793524502308694794819969125421740476382083'); + BigNumber.config({ DECIMAL_PLACES : 32, ROUNDING_MODE : 1 }); + T('75.921737052807005487819999', '1.658', '45.79115624415380306864897406513872'); + BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 5 }); + T('2508.200950', '16.71', '150'); + BigNumber.config({ DECIMAL_PLACES : 60, ROUNDING_MODE : 6 }); + T('-65726540475412104681231', '-2069320713111227459943487969.92', '0.000031762374995315313595244296992084961374019662798752859038'); + BigNumber.config({ DECIMAL_PLACES : 96, ROUNDING_MODE : 2 }); + T('5088562922.2405271423822', '-38730', '-131385.564736393677830679060160082623289439710818486961012135295636457526465272398657371546604699199586'); + BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 6 }); + T('64320.654498', '-62061861429.158163', '-0.000001036395831785035719284619257911539667175955615207'); + BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 3 }); + T('2.204900879951290506663426', '53104454625924734.643', '4.1520073889901010464572015511640417e-17'); + BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 1 }); + T('-452538835226053697.9513964592', '-1.47441386143616894803945', '306927957653120064.86755228873937747952745849883789748764499494386053150512496291850412'); + BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 4 }); + T('525553312.763821648302342614504', '6', '87592218.7939702747'); + BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 4 }); + T('397688', '-68.03', '-5845.773923269145965015434367190945171247978832867852418050859914743495517'); + BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 3 }); + T('-0.000000000059202582311012372084', '0.0000210309', '-0.001'); + BigNumber.config({ DECIMAL_PLACES : 35, ROUNDING_MODE : 0 }); + T('0.000000466389968406448397778096', '7134.82908265011410', '6.536806460305781678007928e-11'); + BigNumber.config({ DECIMAL_PLACES : 100, ROUNDING_MODE : 1 }); + T('-252296.9378333427567934319534', '2406.8709161566', '-104.8236264519835084047570650788548743295593201143617169663331272407432390421138849167950000780307334885'); + BigNumber.config({ DECIMAL_PLACES : 46, ROUNDING_MODE : 0 }); + T('522.9', '-912873877159409564322', '-5.728064008437927742351620614e-19'); + BigNumber.config({ DECIMAL_PLACES : 27, ROUNDING_MODE : 1 }); + T('7093.173057', '614703552193.1495338', '1.1539176944224349223e-8'); + BigNumber.config({ DECIMAL_PLACES : 50, ROUNDING_MODE : 1 }); + T('0.0001341235', '-0.234609357848', '-0.00057168861988402299887104885146311779013688748127'); + BigNumber.config({ DECIMAL_PLACES : 100, ROUNDING_MODE : 2 }); + T('149.469751611688514266726302', '23047796109300906.73', '6.4852079957167878439324712165596730871967775320908715873906582105380758688019048047119e-15'); + BigNumber.config({ DECIMAL_PLACES : 45, ROUNDING_MODE : 1 }); + T('5917.3544', '-8.23', '-718.99810449574726609963547995139732685297691373'); + BigNumber.config({ DECIMAL_PLACES : 73, ROUNDING_MODE : 2 }); + T('1.99', '-420666718873240.2935832610537', '-4.7305857837535459160671048752049702182468640700531401206877e-15'); + BigNumber.config({ DECIMAL_PLACES : 9, ROUNDING_MODE : 3 }); + T('-0.000000000002700385943990773294175301648', '-242', '0'); + BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 2 }); + T('0.00104', '-9205109310.92', '-1.129807332940903148676935060015840240444187292197548894851554458807026366305859299241e-13'); + BigNumber.config({ DECIMAL_PLACES : 88, ROUNDING_MODE : 0 }); + T('3044202687.526990830', '-225715777273711234248.5778', '-1.34868848083910365863654079744878054936819021293833286108835021122610654896355e-11'); + BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 5 }); + T('43549623346172485962556947.75', '4010974.58356981', '10857616381954945829.173'); + BigNumber.config({ DECIMAL_PLACES : 43, ROUNDING_MODE : 0 }); + T('-5500861681629397.60268386296', '-24688659063.6', '222809.2529229201600939986565500250719740754417828'); + BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 3 }); + T('0', '0.000000000000000001611281945098345849', '0'); + BigNumber.config({ DECIMAL_PLACES : 7, ROUNDING_MODE : 6 }); + T('286037.7278439472555897310', '1766.08071636693189589823', '161.9618657'); + BigNumber.config({ DECIMAL_PLACES : 74, ROUNDING_MODE : 4 }); + T('1.30', '22016412865861919.05', '5.904685781105360772902691452716470778294132411902331064455e-17'); + BigNumber.config({ DECIMAL_PLACES : 85, ROUNDING_MODE : 3 }); + T('342975419362.63241869', '0.000000000132776429612170725496026', '2.5831046998660533379821777956012147966560751819092431647637200684436601466266722365014710913251120473656227e+21'); + BigNumber.config({ DECIMAL_PLACES : 63, ROUNDING_MODE : 5 }); + T('263838.7497999996', '129.28310', '2040.782977821537385783602033057685033852065737903871426350389184665'); + BigNumber.config({ DECIMAL_PLACES : 55, ROUNDING_MODE : 4 }); + T('-16986431229246565059.38639', '908.214', '-18703115377264130.5456493623749468737544235169244253006450021690923064388'); + BigNumber.config({ DECIMAL_PLACES : 100, ROUNDING_MODE : 4 }); + T('6549.3303050232', '-321113733064601735028025274431', '-2.03956717843194959702044897190339858252408113861632671271582153247826949622e-26'); + BigNumber.config({ DECIMAL_PLACES : 83, ROUNDING_MODE : 3 }); + T('293406476316171018592023.8', '70.3117518813163', '4.17293650727734053819019473775029265657801285573865240005155183520385557372804241537981968667505121686394e+21'); + BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 4 }); + T('-9647374130', '7946137.265686351', '-1214.09608309436924121296'); + BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 0 }); + T('67.235726', '-5573105471252449696.7', '-1.206431967721042366696605205e-17'); + BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 0 }); + T('202151625', '35175155404.094130', '0.005747000195952824'); + BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 1 }); + T('14835331211045.5493152', '0.0000000000526993611934416', '2.81508748400005203302285837296595379515264240755406139468921221479492486503e+23'); + BigNumber.config({ DECIMAL_PLACES : 25, ROUNDING_MODE : 3 }); + T('8.069344', '-1033236.93413135539256239', '-0.0000078097711506837641217'); + BigNumber.config({ DECIMAL_PLACES : 41, ROUNDING_MODE : 5 }); + T('-862630169598821067434895771.20', '-264324327', '3263529238452656941.54172866275755239130902998572658807904579'); + BigNumber.config({ DECIMAL_PLACES : 23, ROUNDING_MODE : 0 }); + T('-0.00000000120003533', '-12.69445', '9.453228221782e-11'); + BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 5 }); + T('365895428531107702.61163381', '98087842.582662', '3730283171.666'); + BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 3 }); + T('713857126359238153466129958.2', '155931649939351528.34', '4578013037.35891749636140441'); + BigNumber.config({ DECIMAL_PLACES : 2, ROUNDING_MODE : 2 }); + T('0.00076074305474025948675149820', '-8885880406', '0'); + BigNumber.config({ DECIMAL_PLACES : 55, ROUNDING_MODE : 1 }); + T('-5.5062225112792408403541', '9514589.0213163653965887', '-5.787136468998470961850846060990378991351091119514e-7'); + BigNumber.config({ DECIMAL_PLACES : 94, ROUNDING_MODE : 0 }); + T('0.00000506877891572040497122', '-3.902263937071', '-0.0000012989328752388233797415850039254655020843332436413852802139307588062849466157864782046595'); + BigNumber.config({ DECIMAL_PLACES : 25, ROUNDING_MODE : 5 }); + T('-684.64', '-163036108473143.9045182524546', '4.1993151481089e-12'); + BigNumber.config({ DECIMAL_PLACES : 87, ROUNDING_MODE : 5 }); + T('-115.2432253756119374', '0.00000000004559', '-2527818060443.341465233603860495722746216275499012941434525115156832638736565036192147400745777582803'); + BigNumber.config({ DECIMAL_PLACES : 78, ROUNDING_MODE : 0 }); + T('-0.000475387045386359848022134', '-1153538800396479.29', '4.12111881475478780474633380955501014884339769086551346373265e-19'); + BigNumber.config({ DECIMAL_PLACES : 85, ROUNDING_MODE : 0 }); + T('-1.19867', '11243158.062340655763654254507', '-1.066132836836107775099490457235780480587763022452727371256982516966577648609949e-7'); + BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 1 }); + T('-5360', '0.0000299063979378797693010823945', '-179225863.68086026271'); + BigNumber.config({ DECIMAL_PLACES : 37, ROUNDING_MODE : 3 }); + T('1848.7', '-0.00001905117238', '-97038647.4451710357155458167136693558173557401'); + BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 2 }); + T('8391182377.4232316885', '-0.000011565465464', '-725537800751953.5219373856408759235044653625191958811075137200375111508784840032271441314815377498930206480792963'); + BigNumber.config({ DECIMAL_PLACES : 78, ROUNDING_MODE : 6 }); + T('-103265.04277385519', '877.661', '-117.65937278044163976751843821247611549333968354524127197175219133583467876549146'); + BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 1 }); + T('-0.000003172790', '0.00000000000734552178620800', '-431935.27871052691777125857143344101398079282329855'); + BigNumber.config({ DECIMAL_PLACES : 2, ROUNDING_MODE : 2 }); + T('845.149698634', '134608.469693066', '0.01'); + BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 1 }); + T('1213867.736088558497', '394513337588257389235052561.4', '0'); + BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 1 }); + T('903382849144828905627453.7', '-145214841100.492', '-6221009108288.50653300185138436076207033700018325051347599'); + BigNumber.config({ DECIMAL_PLACES : 42, ROUNDING_MODE : 2 }); + T('-1851.2013658186151007551518', '902158.47437813188', '-0.002051969158849468552481150467195438558033'); + BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 0 }); + T('0.00000000000009286532571046638105826044092', '5.8170675953588773257319281514', '2e-14'); + BigNumber.config({ DECIMAL_PLACES : 85, ROUNDING_MODE : 5 }); + T('-1.8', '-14023648062663978059.5676', '1.283546187095389865277054852377378944975885409409388208510620959318e-19'); + BigNumber.config({ DECIMAL_PLACES : 22, ROUNDING_MODE : 2 }); + T('30310353.7', '-325658', '-93.074187337636416117522'); + BigNumber.config({ DECIMAL_PLACES : 83, ROUNDING_MODE : 2 }); + T('43.01', '-0.000004044336362136732681', '-10634624.85530670587485242332285837151141452123361995240726115365877739982920896502305890948'); + BigNumber.config({ DECIMAL_PLACES : 52, ROUNDING_MODE : 4 }); + T('-1560062512144707718870.67', '0.00000000000000000109417237569969976616828176251', '-1.4257922670978429728476419788183802901064679946982495391739203862934972237293303746615318547e+39'); + BigNumber.config({ DECIMAL_PLACES : 45, ROUNDING_MODE : 3 }); + T('-1704748', '-4.91256432071590973654', '347017.950037052435135205091406149748637297580526596'); + BigNumber.config({ DECIMAL_PLACES : 19, ROUNDING_MODE : 4 }); + T('-103112743.806', '1448819.007144005', '-71.1702036607469319471'); + BigNumber.config({ DECIMAL_PLACES : 55, ROUNDING_MODE : 1 }); + T('-22.09025670434107593424', '0.00000000000000000014868299631332127983', '-148572851315089453888.8890409270305198846110678875706559456425503395067262158'); + BigNumber.config({ DECIMAL_PLACES : 90, ROUNDING_MODE : 2 }); + T('-12.6729146', '0.000000000000000000767442393', '-16513180292869226472.351000291952858017318310952363560661418921641457979765264283491308252500979575153597229023'); + BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 0 }); + T('-470.0', '8.5221', '-55.15072576009'); + BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 4 }); + T('0.0019934', '-3670467', '-5.4309e-10'); + BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 4 }); + T('745572843740672989124', '-0.001095304349461769722226', '-6.80699245015365759160157081e+23'); + BigNumber.config({ DECIMAL_PLACES : 74, ROUNDING_MODE : 2 }); + T('49048', '-1523712469872472779.163', '-3.218980022136661765426723332882842415809493840139805314497885e-14'); + BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 1 }); + T('-14698377.2089310141307668788', '21760428853932061359.601', '-6.7546358151278116387319138742166820347476156445131447537598812600522255302845616957e-13'); + BigNumber.config({ DECIMAL_PLACES : 83, ROUNDING_MODE : 5 }); + T('-877816.2827087289083455', '-39.96', '21967.37444216038309172922922922922922922922922922922922922922922922922922922922922922923'); + BigNumber.config({ DECIMAL_PLACES : 63, ROUNDING_MODE : 3 }); + T('-0.0000000000000000003890854543', '-0.0032469533', '1.19830936373492036365290501714330169146565797543e-16'); + BigNumber.config({ DECIMAL_PLACES : 6, ROUNDING_MODE : 3 }); + T('-8068590451.8882868', '17.046084578176', '-473339810.962716'); + BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 5 }); + T('-2.90097482360513435000', '0.00000277734770479378', '-1044512.654500540381425199131650498389768221612690731735719'); + BigNumber.config({ DECIMAL_PLACES : 56, ROUNDING_MODE : 6 }); + T('-19375401136.648943378', '-19.234', '1007351624.0329075271914318394509722366642404076115212644275761672'); + BigNumber.config({ DECIMAL_PLACES : 38, ROUNDING_MODE : 6 }); + T('-0.0000000003693', '-3.88', '9.518041237113402061855670103e-11'); + BigNumber.config({ DECIMAL_PLACES : 80, ROUNDING_MODE : 1 }); + T('277800', '285535042428019089.423986180', '9.7291035677356825087203059416983111252168571123895407726511593161081e-13'); + BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 3 }); + T('348909203.36249206', '-4474831.4', '-77.971474715783048273058958154266996517455383905637204565965'); + BigNumber.config({ DECIMAL_PLACES : 40, ROUNDING_MODE : 5 }); + T('-27508947.295331', '-4798670.394836815486650664', '5.7326186280536307976693760690453135065084'); + BigNumber.config({ DECIMAL_PLACES : 21, ROUNDING_MODE : 6 }); + T('284476418915134.1', '-0.0001080492748979789624084', '-2632839685261554383.430387221295092399884'); + BigNumber.config({ DECIMAL_PLACES : 100, ROUNDING_MODE : 5 }); + T('1376238677546543815969.34113', '-3148.1', '-437164854212554815.9109752326800292239763666973730186461675296210412629840221085734252406213271497093484959181728661732'); + BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 4 }); + T('264911.6783682', '-6423503007202402040674.17300', '-4.12409985752580403094885811084792477341436221996458658046257e-17'); + BigNumber.config({ DECIMAL_PLACES : 43, ROUNDING_MODE : 5 }); + T('-721557029276.24813685590673828', '328593538.3318233192391474709', '-2195.8953695175796385889646124916770635080959054'); + BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 3 }); + T('5193929913.1695128898908851', '-95.98868603988046371325', '-54109813.6400324141378'); + BigNumber.config({ DECIMAL_PLACES : 86, ROUNDING_MODE : 6 }); + T('-24621657592.547626830', '-60.67', '405829200.47053942360309873083896489203889896159551672985000824130542277896818856106807318279215'); + BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 6 }); + T('-1272153012554733.962', '-449', '2833302923284.48543875278396436525612472160356347438752783964365256124721603563474387527839643652561247216036'); + BigNumber.config({ DECIMAL_PLACES : 33, ROUNDING_MODE : 3 }); + T('2.715306', '-0.0000000043675376914528829954781', '-621701789.846887398302716883846832678856864'); + BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 1 }); + T('-1547473749939.752847843', '-3.12', '495985176262.741297385576923076923076923076923076923076923076923076923076923076923076923'); + BigNumber.config({ DECIMAL_PLACES : 37, ROUNDING_MODE : 3 }); + T('-47438.43', '-6408314287110301.7992', '7.4026378661573712114249169e-12'); + BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 6 }); + T('14319188785', '-112.66', '-127100912.3468844310314'); + BigNumber.config({ DECIMAL_PLACES : 28, ROUNDING_MODE : 2 }); + T('-10415265.16446510215382885', '-306712043709.953782146', '0.000033957796500206664839577'); + BigNumber.config({ DECIMAL_PLACES : 63, ROUNDING_MODE : 6 }); + T('1020648162585306.6', '-2.1914898184005', '-465732559656720.572478372067308602018356676157574623601966177717104294492460074'); + BigNumber.config({ DECIMAL_PLACES : 9, ROUNDING_MODE : 5 }); + T('3', '-41094051.07508828237681', '-7.3e-8'); + BigNumber.config({ DECIMAL_PLACES : 71, ROUNDING_MODE : 4 }); + T('-1.500', '-46509992746526152636592.9583253', '3.225113381923792099892011542084055429665680469192e-23'); + BigNumber.config({ DECIMAL_PLACES : 40, ROUNDING_MODE : 3 }); + T('26.35176', '129.279716', '0.2038352250093123657542688289940240895949'); + BigNumber.config({ DECIMAL_PLACES : 60, ROUNDING_MODE : 1 }); + T('-327986.31492440227273268', '-4385770.7548116758221', '0.074784190342043070123660027229907124036893230965876429396666'); + BigNumber.config({ DECIMAL_PLACES : 100, ROUNDING_MODE : 5 }); + T('-0.31396142411336445', '3760338356.14', '-8.34928653696065027314938490119187724335547457472740082316628740223841701645175613491967214e-11'); + BigNumber.config({ DECIMAL_PLACES : 50, ROUNDING_MODE : 6 }); + T('29084829.399916', '-441225.25610969', '-65.91832402423812982677791123384997461876705508459707'); + BigNumber.config({ DECIMAL_PLACES : 78, ROUNDING_MODE : 4 }); + T('106668039.3316', '16509842', '6.46087584191296318886637437232894173063558088563173408927838316078373130403065'); + BigNumber.config({ DECIMAL_PLACES : 29, ROUNDING_MODE : 1 }); + T('33660.9012992698241', '231215262368.74297832866772', '1.4558252320552823585058e-7'); + BigNumber.config({ DECIMAL_PLACES : 27, ROUNDING_MODE : 6 }); + T('30183289889874653144216.021691', '-0.0000000000000001850', '-1.63152918323646773752519036167567567567567567567567567567567567568e+38'); + BigNumber.config({ DECIMAL_PLACES : 94, ROUNDING_MODE : 3 }); + T('4830163975203099.03869950', '-165327631.1366', '-29215709.0862339470497822764604891788203097047531376913682467957161830239082624908242430677144850454563'); + BigNumber.config({ DECIMAL_PLACES : 36, ROUNDING_MODE : 4 }); + T('641.583800', '5.0', '128.31676'); + BigNumber.config({ DECIMAL_PLACES : 74, ROUNDING_MODE : 0 }); + T('-1', '0.00000059794', '-1672408.60286985316252466802689233033414723885339666187242867177308760076261832291'); + BigNumber.config({ DECIMAL_PLACES : 49, ROUNDING_MODE : 1 }); + T('114468080072.82454', '15882189820058955342014753', '7.2073235095234260194407547081109103e-15'); + BigNumber.config({ DECIMAL_PLACES : 2, ROUNDING_MODE : 2 }); + T('1205.63063736256589', '-13323156977', '0'); + BigNumber.config({ DECIMAL_PLACES : 49, ROUNDING_MODE : 1 }); + T('-0.0000000000000000032005131', '-20405770.066', '1.568435344340510908116982e-25'); + BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 0 }); + T('-46655578', '-17435198', '2.675941965213129'); + BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 6 }); + T('-1826391.95321290281351', '-21019556', '0.08689012999194192367859720728639558323686761'); + BigNumber.config({ DECIMAL_PLACES : 35, ROUNDING_MODE : 3 }); + T('433', '34259436007990415554844288', '1.263885371314e-23'); + BigNumber.config({ DECIMAL_PLACES : 99, ROUNDING_MODE : 0 }); + T('-0.00051660223042684501971002', '710667.3449091584106', '-7.26925521662853510559568125138211960288020929323343966226839411644763293707228331684697909e-10'); + BigNumber.config({ DECIMAL_PLACES : 78, ROUNDING_MODE : 1 }); + T('6632516058123153544978.8173136', '4798337824752', '1382252834.28557935015374641580975576914925105981861839059550113290901610933603575423857'); + BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 2 }); + T('-410294', '-487431396', '0.0008417472'); + BigNumber.config({ DECIMAL_PLACES : 62, ROUNDING_MODE : 4 }); + T('-10467.4881368', '-4862.011612840367', '2.1529130266073011054275331072440845263173777913371721864220333'); + BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 6 }); + T('24178718956171512.95123', '4.4', '5495163399129889.307097727272727272727272727272727272727272727272727272727272727272727272727272727273'); + BigNumber.config({ DECIMAL_PLACES : 29, ROUNDING_MODE : 3 }); + T('0.000000000000000000053539203975686828042162', '-175327185.4193', '-3.1e-28'); + BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 3 }); + T('-0.16317738810100647624', '6260323849071065.14632897136', '-1e-11'); + BigNumber.config({ DECIMAL_PLACES : 37, ROUNDING_MODE : 3 }); + T('0', '-0.00000000000000008058624768587745533362074523', '0'); + BigNumber.config({ DECIMAL_PLACES : 39, ROUNDING_MODE : 1 }); + T('1786661973243896004484674.8427', '396.91748100', '4.501343626243299685973455129077572675616169195631874928683224e+21'); + BigNumber.config({ DECIMAL_PLACES : 98, ROUNDING_MODE : 5 }); + T('699824037892.29566', '10830178822298.096957295230378', '0.06461795778029428029688562942713791286349020898535266704475778004693770130354368139085380837514233'); + BigNumber.config({ DECIMAL_PLACES : 25, ROUNDING_MODE : 3 }); + T('27.3', '-24', '-1.1375'); + BigNumber.config({ DECIMAL_PLACES : 100, ROUNDING_MODE : 5 }); + T('-7743258.888321', '427071695122.89611752', '-0.000018131051476246310744180936426415946345485474108798530074610022052497467343665750650673516727527'); + BigNumber.config({ DECIMAL_PLACES : 67, ROUNDING_MODE : 2 }); + T('3415642986.56132818693046', '-503.857', '-6778992.8224899687548857314674600134561988818255973421030173243598878253155'); + BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 2 }); + T('1006977044129157.219131', '3684285614569777143694463103', '2.74e-13'); + BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 4 }); + T('-229620369743438063605.676', '-18871110490850755947707048.164', '0.000012167824985962774368145291902717428271724819608759746787960261966985276'); + BigNumber.config({ DECIMAL_PLACES : 7, ROUNDING_MODE : 3 }); + T('0.0000006359069', '0.00003461733', '0.0183696'); + BigNumber.config({ DECIMAL_PLACES : 48, ROUNDING_MODE : 5 }); + T('-7666.2423', '-10.8758', '704.889966715092223100829364276650913036282388422001'); + BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 5 }); + T('2014', '566568.530511420021', '0.0035547332609'); + BigNumber.config({ DECIMAL_PLACES : 48, ROUNDING_MODE : 6 }); + T('1164559012.7176849', '-466', '-2499053.675359838841201716738197424892703862660944206009'); + BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 5 }); + T('104977760.2379348', '0.0000000000025883', '40558575218457984004.9453309121817409110226789784800834524591430668778735077077618514082602480393'); + BigNumber.config({ DECIMAL_PLACES : 26, ROUNDING_MODE : 2 }); + T('-378.651', '643.2196', '-0.58868075537499168246738749'); + BigNumber.config({ DECIMAL_PLACES : 37, ROUNDING_MODE : 6 }); + T('0.00000000000003804587158049396', '-123.01687', '-3.092736108510479904098e-16'); + BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 3 }); + T('-227517081435932.55145705', '-8166', '27861508870.430143455431055596375214303208425177565515552289982855743325985794758755816'); + BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 4 }); + T('-784864.156117905419381933', '21083.34', '-37.226746621640850993340381552448520964894556555080931'); + BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 3 }); + T('-35583.60392955878258', '0.000000000000002884675637890853264', '-12335391703025555319.5290377003260258830568498949507101804961452297199748848871811'); + BigNumber.config({ DECIMAL_PLACES : 99, ROUNDING_MODE : 3 }); + T('-46867057274705.55865435', '-1138818.46884253076', '41154107.135564961256231603510856158997572290958926194322513203845887459961432163465955478890762330211878911'); + BigNumber.config({ DECIMAL_PLACES : 91, ROUNDING_MODE : 5 }); + T('-1.2', '-6', '0.2'); + BigNumber.config({ DECIMAL_PLACES : 39, ROUNDING_MODE : 1 }); + T('-8207827251.758670330228', '0.0249', '-329631616536.49278434650602409638554216867469879518'); + BigNumber.config({ DECIMAL_PLACES : 27, ROUNDING_MODE : 4 }); + T('-204', '0.0000029', '-70344827.586206896551724137931034483'); + BigNumber.config({ DECIMAL_PLACES : 42, ROUNDING_MODE : 2 }); + T('0.000505328', '4.108179912269881792084', '0.000123005323717868153287233442170341302966'); + BigNumber.config({ DECIMAL_PLACES : 63, ROUNDING_MODE : 0 }); + T('-0.0000000000000001499619618858708257385374', '-460819196825', '3.25424728221164261039327199908041722e-28'); + BigNumber.config({ DECIMAL_PLACES : 26, ROUNDING_MODE : 3 }); + T('-596982512215274295078785.735', '0.00000000000000061723389213118', '-9.6719010382598740585504450410175347589618746831863556822631733606e+38'); + BigNumber.config({ DECIMAL_PLACES : 21, ROUNDING_MODE : 1 }); + T('0.00000000000065119748298572231', '-604761812.462268448884', '-1e-21'); + BigNumber.config({ DECIMAL_PLACES : 30, ROUNDING_MODE : 3 }); + T('-2', '-2467866762.2323039904896202', '8.10416522726252839662e-10'); + BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 5 }); + T('-0.0000000000000163504', '3442474120384657.4416341533', '-4.7496072383466540718483367624878967622316129367226e-30'); + BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 5 }); + T('-1456836486847167.3820074310958', '18.348653631347632487368279', '-79397459678362.7216974369636088610616179608860365968652475007985815597289323599403276228111689'); + BigNumber.config({ DECIMAL_PLACES : 55, ROUNDING_MODE : 6 }); + T('-0.0000000000061111053071278970', '-27010.1591677120452845', '2.262521027433675639966055892145185675275e-16'); + BigNumber.config({ DECIMAL_PLACES : 52, ROUNDING_MODE : 4 }); + T('1.478', '-1', '-1.478'); + BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 5 }); + T('-423.50102515043', '-345239290652.31866', '0'); + BigNumber.config({ DECIMAL_PLACES : 78, ROUNDING_MODE : 2 }); + T('-1619830981494', '0.0000000345300706937655922072', '-46910734584347684213.071410576712370812560889045558568021991524352862470136820101002794892044733275'); + BigNumber.config({ DECIMAL_PLACES : 23, ROUNDING_MODE : 3 }); + T('-12592503.5826583', '66', '-190795.50882815606060606060607'); + BigNumber.config({ DECIMAL_PLACES : 66, ROUNDING_MODE : 1 }); + T('-0.001131684507013295031968373268', '-1041308839.16589692192831', '1.086790454904608603556308528336041092853580165784500403e-12'); + BigNumber.config({ DECIMAL_PLACES : 21, ROUNDING_MODE : 3 }); + T('2002612.9276540289151', '32.61', '61411.006674456575133394664'); + BigNumber.config({ DECIMAL_PLACES : 48, ROUNDING_MODE : 5 }); + T('60179824375164.647', '-2389940381984.057698243', '-25.180470956018216552468050930430455353105359149977'); + BigNumber.config({ DECIMAL_PLACES : 27, ROUNDING_MODE : 1 }); + T('-0.000000000000000010257504915', '0.13', '-7.8903883961e-17'); + BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 2 }); + T('0.00000000000000001106225394185', '0.00000000002142311562290', '5.16369987287242537734434196204470693651936467886e-7'); + BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 1 }); + T('-38408325908633', '-0.000000000000000000034', '1.12965664437155882352941176470588235294117647058823529411764705882352941176470588235294117647058823529411764705882352941176470588e+33'); + BigNumber.config({ DECIMAL_PLACES : 56, ROUNDING_MODE : 1 }); + T('226', '-11732125147230.8', '-1.926334719105379310085744898952893012241720872e-11'); + BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 4 }); + T('0.0346521063872886074127', '1235370579840.8907669333112461', '2.804997e-14'); + BigNumber.config({ DECIMAL_PLACES : 63, ROUNDING_MODE : 5 }); + T('-0.00024553564076967669613', '-48318029780838', '5.081656720759988483909641930985285304028270561e-18'); + BigNumber.config({ DECIMAL_PLACES : 53, ROUNDING_MODE : 3 }); + T('-0.000000000000000039307110614795850218136427', '10043496.0989154139669730335', '-3.91368804524557754442045244867e-24'); + BigNumber.config({ DECIMAL_PLACES : 86, ROUNDING_MODE : 1 }); + T('-789085778', '40255761.13304', '-19.60180992211711531081325177406048749094552564053148240778982120019150023089919500667671'); + BigNumber.config({ DECIMAL_PLACES : 33, ROUNDING_MODE : 0 }); + T('0.00000000000000000002198907053365', '0.0000000000000304933802714365', '7.2110964209000519571252202e-7'); + BigNumber.config({ DECIMAL_PLACES : 45, ROUNDING_MODE : 5 }); + T('0.00000004737622612955945552644133460', '-0.00000000000000000718366077', '-6594997682.436423779855258198669088880153231400429839618'); + BigNumber.config({ DECIMAL_PLACES : 96, ROUNDING_MODE : 4 }); + T('23337903.63240600072819', '0.0000000000000000520391013613738286985', '4.48468613443978996424855994720818598234971037446297964712585838232770537436719897126681773615112190118163077747630026671e+23'); + BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 2 }); + T('-1.5', '254470968.25381', '0'); + BigNumber.config({ DECIMAL_PLACES : 71, ROUNDING_MODE : 4 }); + T('-5828.58448682', '-43.8218293651656', '133.00641646542484859664930706784050010755559914955615164289099278883875166'); + BigNumber.config({ DECIMAL_PLACES : 71, ROUNDING_MODE : 5 }); + T('0.0000000003645684417429705143', '1', '3.645684417429705143e-10'); + BigNumber.config({ DECIMAL_PLACES : 32, ROUNDING_MODE : 3 }); + T('0.000000000000048179713841546694173307306', '36474207385148', '1.32092e-27'); + BigNumber.config({ DECIMAL_PLACES : 67, ROUNDING_MODE : 0 }); + T('507886502424730178045.8', '444000', '1143888518974617.5181211711711711711711711711711711711711711711711711711711711711712'); + BigNumber.config({ DECIMAL_PLACES : 49, ROUNDING_MODE : 3 }); + T('21211770845.2670443890', '15.78678731521718919', '1343640756.1417267463530524445250781593586116124781790172841'); + BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 1 }); + T('6', '12828787846358101348991', '0'); + BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 2 }); + T('-677.33593594269800456', '3910.1', '-0.173227266807165546804429554231349581852126544078156568885706247922048029462'); + BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 5 }); + T('5057789983', '-2057580884840423118', '-2.4581245e-9'); + BigNumber.config({ DECIMAL_PLACES : 41, ROUNDING_MODE : 6 }); + T('61.8', '-1393023442879678', '-4.436393394230764374853836563e-14'); + BigNumber.config({ DECIMAL_PLACES : 58, ROUNDING_MODE : 5 }); + T('15130648492041', '-0.0000000000000049033748412962540', '-3.0857621498994085612562086024076826592956600727994442798897726436952885803687419900663e+27'); + BigNumber.config({ DECIMAL_PLACES : 88, ROUNDING_MODE : 1 }); + T('-10940965618.4208627065777054', '0.0000075', '-1458795415789448.3608770273866666666666666666666666666666666666666666666666666666666666666666666666666666'); + BigNumber.config({ DECIMAL_PLACES : 25, ROUNDING_MODE : 1 }); + T('-1741.3655', '168841165413015.1911413231958', '-1.03136311321964e-11'); + BigNumber.config({ DECIMAL_PLACES : 19, ROUNDING_MODE : 3 }); + T('3.7680', '28080825399761145000104.7', '0'); + BigNumber.config({ DECIMAL_PLACES : 77, ROUNDING_MODE : 4 }); + T('-135733.9312513', '-106.1', '1279.30189680772855796418473138548539114043355325164938737040527803958529688972667'); + BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 1 }); + T('-0.000014995192150239849808540784149', '-0.00004634419097', '0.323561418084667663118357466689853837360018111456526306'); + BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 5 }); + T('-2727467849220.6430', '0.00000000000047071402182077', '-5.794320378795002290140887837e+24'); + BigNumber.config({ DECIMAL_PLACES : 27, ROUNDING_MODE : 4 }); + T('3254886067375040047.294976', '130247729806.1422490', '24989963.911229303180155633881696971'); + BigNumber.config({ DECIMAL_PLACES : 1, ROUNDING_MODE : 5 }); + T('0.0001517750011829757', '432077080925300787814407817.6', '0'); + BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 4 }); + T('6043586055628194917.630', '-0.000000000000166204696467716687', '-3.636230614459255444865064142597998778455504280761986176898912590297958063490881820084729136663144758e+31'); + BigNumber.config({ DECIMAL_PLACES : 46, ROUNDING_MODE : 2 }); + T('-246902424152.817893492257113', '13190015922447327.3986', '-0.0000187188874982803392436242509391433373124566'); + BigNumber.config({ DECIMAL_PLACES : 86, ROUNDING_MODE : 2 }); + T('2.79212748799125', '8083944027095884508070529', '3.4539173930850526941492139280556318060780640828790362133181298e-25'); + BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 1 }); + T('-155493993094499.12419', '7', '-22213427584928.4463128571428'); + BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 2 }); + T('-0.00000000000000414742783414239816978844774', '2.42728', '-1.708e-15'); + BigNumber.config({ DECIMAL_PLACES : 55, ROUNDING_MODE : 5 }); + T('-17629052489392655', '434332523231244065392.661', '-0.0000405888381515623389231388156237036804908819597794848'); + BigNumber.config({ DECIMAL_PLACES : 38, ROUNDING_MODE : 6 }); + T('384.4654474606', '-1.564602804294462821742184415', '-245.72718801559969519149234022478471772421'); + BigNumber.config({ DECIMAL_PLACES : 37, ROUNDING_MODE : 6 }); + T('-287.92', '-8593.271084374839516354559324', '0.033505285376546011804383803592571414'); + BigNumber.config({ DECIMAL_PLACES : 72, ROUNDING_MODE : 0 }); + T('5562575760.416226299', '4443122744661918354065.75470594', '1.2519518546047928825867310877506335902491501374251192290179e-12'); + BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 5 }); + T('26264157570226149.7', '177.88484626156', '147646964439048.44868754299487257196861575311417400679233039774168318512463589000043453173906867748773381582099'); + BigNumber.config({ DECIMAL_PLACES : 74, ROUNDING_MODE : 1 }); + T('3124.127', '8774950118672.1981065667', '3.5602789277994602551065899974055122314322157851087771961638791254e-10'); + BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 1 }); + T('13361719.6', '66313281.36', '0.20149386858813707782'); + BigNumber.config({ DECIMAL_PLACES : 26, ROUNDING_MODE : 2 }); + T('9618552.8', '-99199767586577412901.538436', '-9.696144491069e-14'); + BigNumber.config({ DECIMAL_PLACES : 53, ROUNDING_MODE : 5 }); + T('7398643406.2', '-0.000321637234', '-23003068749807.74147560291480432268609796588413641189315786741282572'); + BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 3 }); + T('213492069.623808509436', '2873695523.80684948', '0.0742918196639672996323466832204954120547650487609529149428439626218125680802'); + BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 3 }); + T('-0.0127546845805340602341642508', '0.000027127613126094468205620217590', '-471'); + BigNumber.config({ DECIMAL_PLACES : 48, ROUNDING_MODE : 4 }); + T('-3', '3544311799306681630.95675230', '-8.46426660483663754346120595708e-19'); + BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 2 }); + T('-27.59814248907', '-0.0000000000333355', '827890461792.083514571552849065'); + BigNumber.config({ DECIMAL_PLACES : 56, ROUNDING_MODE : 2 }); + T('0.00000000000000011151816004735', '141371580601581560607539', '7.8883011403568065e-40'); + BigNumber.config({ DECIMAL_PLACES : 59, ROUNDING_MODE : 5 }); + T('-0.00000000000007814196915071266536731774', '-1861949.4113867779275', '4.196782612504633540604394141091970482497e-20'); + BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 1 }); + T('-1773.7', '-680582251640777140', '0'); + BigNumber.config({ DECIMAL_PLACES : 46, ROUNDING_MODE : 6 }); + T('-253466754.5702558294508004364', '0.0000000016915460330', '-149843249681314365.6556938858074813031115423389722199774151815826'); + BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 5 }); + T('3035622320.74860494450562642361', '-171.9', '-17659233.97759514220189427820599185573007562536358347876672484002326934264107038976148923792902850494474'); + BigNumber.config({ DECIMAL_PLACES : 91, ROUNDING_MODE : 1 }); + T('7', '323935.73706', '0.0000216092242971742464529918327992952813108183958145713828762453493281146656576304826180452'); + BigNumber.config({ DECIMAL_PLACES : 78, ROUNDING_MODE : 4 }); + T('0.00000000005148472716539298157457', '312510049836876.427842', '1.6474582878940024381560607237302547675904884227203911e-25'); + BigNumber.config({ DECIMAL_PLACES : 78, ROUNDING_MODE : 6 }); + T('1295.04', '2.7', '479.644444444444444444444444444444444444444444444444444444444444444444444444444444'); + BigNumber.config({ DECIMAL_PLACES : 94, ROUNDING_MODE : 4 }); + T('-8.3', '79850188565363554', '-1.039446512165191466917812606438347257466854212445764877244764116930149631716572e-16'); + BigNumber.config({ DECIMAL_PLACES : 30, ROUNDING_MODE : 4 }); + T('-2539862220.0207', '-44236.550550726180875', '57415.467264072333635960729236763378'); + BigNumber.config({ DECIMAL_PLACES : 91, ROUNDING_MODE : 1 }); + T('16839944980983150.90655868', '44432765.7621', '378998351.6026631957333525953564219350038387962931060748756882525145122694635411377580328146268455715'); + BigNumber.config({ DECIMAL_PLACES : 72, ROUNDING_MODE : 6 }); + T('-0.0000027046395062488122194', '0.0000000000000013619006519452', '-1985930106.124687565841353954068087337021798551917276386357928512080934434020694783'); + BigNumber.config({ DECIMAL_PLACES : 59, ROUNDING_MODE : 4 }); + T('-1.1198910236', '-0.0030109339351', '371.9414134414762104887739355035442205574814705936920043848889'); + BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 0 }); + T('2009385673', '20.9', '96142855.1674641148325358851674641148325358851674641148325358851674641148325358851674641148325358851674642'); + BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 2 }); + T('16.7003690316461037', '93843.32', '0.001'); + BigNumber.config({ DECIMAL_PLACES : 62, ROUNDING_MODE : 1 }); + T('-1935073101337397', '-0.000000000001658979394', '1.16642383162560064926279608750824544599497297915202435600595530965347240473319586029770783e+27'); + BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 5 }); + T('-330.366065140860', '1534019.623575', '-0.000215359739'); + BigNumber.config({ DECIMAL_PLACES : 30, ROUNDING_MODE : 3 }); + T('-0.00000000000000269032', '-25.2161338454486377449', '1.06690423539514e-16'); + BigNumber.config({ DECIMAL_PLACES : 98, ROUNDING_MODE : 4 }); + T('3.227', '-1630.742200259200945873', '-0.00197885355483354713384065004992007650246834325039707920127279577862987539580196966597908560236055'); + BigNumber.config({ DECIMAL_PLACES : 64, ROUNDING_MODE : 2 }); + T('30126844.5139992367407931165139', '-464.64', '-64839.1109547159881645857362988550275482093663911845730027548209366391'); + BigNumber.config({ DECIMAL_PLACES : 33, ROUNDING_MODE : 0 }); + T('-7977466949919.20197939320571750', '25201187.5848772923514999213774', '-316551.23089144869109015446556078962824'); + BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 6 }); + T('0.00000000000000426441195921089884284213238', '-18690382297316625066', '-2.28160766932153106668e-34'); + BigNumber.config({ DECIMAL_PLACES : 94, ROUNDING_MODE : 4 }); + T('962013664.0107040', '9.3', '103442329.4635165591397849462365591397849462365591397849462365591397849462365591397849462365591397849462'); + BigNumber.config({ DECIMAL_PLACES : 63, ROUNDING_MODE : 6 }); + T('1006973806184.623056', '-1.066971', '-943768674298.1984102660709616287602943285243928841552394582420703093148736'); + BigNumber.config({ DECIMAL_PLACES : 80, ROUNDING_MODE : 5 }); + T('-25210.15', '-1', '25210.15'); + BigNumber.config({ DECIMAL_PLACES : 25, ROUNDING_MODE : 2 }); + T('-0.000000000000001376148315', '-0.0000000029456', '4.671877766838674634e-7'); + BigNumber.config({ DECIMAL_PLACES : 58, ROUNDING_MODE : 4 }); + T('37242.4', '316145754497658724540554.1', '1.178013605122627241684395290884998159939e-19'); + BigNumber.config({ DECIMAL_PLACES : 33, ROUNDING_MODE : 0 }); + T('86328906834.10816309', '-0.00247371887769057820998', '-34898430703938.096391606813152501754497939669327'); + BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 5 }); + T('0.00000002765836017', '43.4221', '6e-10'); + BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 1 }); + T('910.80105073607989', '4268684621919.65', '2.13368082068917954228345323193625136056867444933e-10'); + BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 1 }); + T('980986779253.7448670475747006', '1260.3', '778375608.3898634190649644533841148932793779'); + BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 5 }); + T('-0.00000000000031260', '1.981416', '-1.57765961312515897721629380200826075897237127e-13'); + BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 3 }); + T('0.0000000000000017052396538958004912455', '2649918125.767736006', '0'); + BigNumber.config({ DECIMAL_PLACES : 73, ROUNDING_MODE : 2 }); + T('-1752732913576622160', '-205825254612177219.70', '8.5156358333149142698669189920154989458330771987368756031356343736501194705'); + BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 4 }); + T('6922377660970977.67946', '-4388778700989588504770506415', '-2e-12'); + BigNumber.config({ DECIMAL_PLACES : 86, ROUNDING_MODE : 1 }); + T('-0.0008967346570245', '679037.25394626927', '-1.32059714222315208715715586429957141837846338692429127615686697655109811863574e-9'); + BigNumber.config({ DECIMAL_PLACES : 49, ROUNDING_MODE : 0 }); + T('10604413834153', '-11598666613031363424932579883', '-9.142787001256421998531972726183529e-16'); + BigNumber.config({ DECIMAL_PLACES : 91, ROUNDING_MODE : 1 }); + T('-0.000012348', '-0.3832284502169', '0.0000322209898378141479427691532588808859523574928660271955209972049087057765552158694511685'); + BigNumber.config({ DECIMAL_PLACES : 36, ROUNDING_MODE : 1 }); + T('-2225005.8', '6610854707.4', '-0.000336568552551819466114802969538939'); + BigNumber.config({ DECIMAL_PLACES : 77, ROUNDING_MODE : 0 }); + T('-105884473', '-0.0000000000000106268', '9.96390945533933074867316595776715474084390409154213874355403319908156735800052696954868822223058682e+21'); + BigNumber.config({ DECIMAL_PLACES : 98, ROUNDING_MODE : 4 }); + T('-8.45166', '0.000000000000000003351828', '-2521507666861187387.8969923277686086517565937154293120052699601530866142296084405285712751370297043881726627977330579'); + BigNumber.config({ DECIMAL_PLACES : 43, ROUNDING_MODE : 4 }); + T('-0.0000000000000102799919001671062777', '-18.142', '5.666404971980545848142431926e-16'); + BigNumber.config({ DECIMAL_PLACES : 98, ROUNDING_MODE : 4 }); + T('-265.4142', '-569510.1041779800093296', '0.000466039492632169853045073207505280730820703997180116748757530048956809346930242922759289414621'); + BigNumber.config({ DECIMAL_PLACES : 25, ROUNDING_MODE : 2 }); + T('882686.635528258', '534854.79223598628', '1.6503294881927558448557149'); + BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 5 }); + T('-95518761105458384136', '-1.2396', '77056115767552746156.8247821878025169409486931268151016456921587608906098741529525653436592449177154'); + BigNumber.config({ DECIMAL_PLACES : 26, ROUNDING_MODE : 4 }); + T('1.69', '35776.574327736085709825', '0.00004723761376700098130499'); + BigNumber.config({ DECIMAL_PLACES : 46, ROUNDING_MODE : 0 }); + T('8323545844568', '-150063.7704', '-55466724.7289689583862408404473888922092550594743686382'); + BigNumber.config({ DECIMAL_PLACES : 72, ROUNDING_MODE : 3 }); + T('0.0000000000006622282463026677511277066', '20.5189951491', '3.2273912123406992083565695120075562063187485370445576465444e-14'); + BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 6 }); + T('43639749.88168014571993635', '0.0001944531891408009166056131595', '224422906482'); + BigNumber.config({ DECIMAL_PLACES : 89, ROUNDING_MODE : 0 }); + T('-534009631180.1639', '-0.00000000000816145981853309725394', '6.54306512626002613848073235507820758076881810664755420270658726351886723388988603806097401394694319021680507457e+22'); + BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 2 }); + T('-494.78', '0.0000000000502244061846267416152229571707', '-9851385762156.5648051354480419191043985260796743999792172888696167729874567795594797311767'); + BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 1 }); + T('32938895612.90205187310670102', '-266.600409', '-123551556.940417341494426218'); + BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 6 }); + T('0.000000261644056205', '-0.00000000000056', '-467221.5289375'); + BigNumber.config({ DECIMAL_PLACES : 25, ROUNDING_MODE : 5 }); + T('-770099.9', '-104231373347875873118.705', '7.388369502e-15'); + BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 0 }); + T('-4.39', '18262248.4620253', '-2.40386611e-7'); + BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 6 }); + T('-0.0000000000000000001405023348228197256122144708', '-2', '0'); + BigNumber.config({ DECIMAL_PLACES : 50, ROUNDING_MODE : 0 }); + T('0.000000029157741696510063602171886', '0.000000000000000000034197750520731428541', '852621627227.61543233059837438165351588654888496179313105145195'); + BigNumber.config({ DECIMAL_PLACES : 80, ROUNDING_MODE : 1 }); + T('9896848222760313471057816756', '6329344480963', '1563645058746197.88106164640236766422840046452141444395927046942264430801623765173551797916657179'); + BigNumber.config({ DECIMAL_PLACES : 30, ROUNDING_MODE : 0 }); + T('221029107103276915937628459.115', '2579105924.031', '85699895085278482.416445655901680672758226699008'); + BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 6 }); + T('-0.0006470642268843603568', '-527435284.19454490670', '1.227e-12'); + BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 2 }); + T('183.45894620', '-585362564798551263285', '-3.134107939805412881505758209697476944638229116718813831659e-19'); + BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 6 }); + T('-0.0088', '-4058596', '0'); + BigNumber.config({ DECIMAL_PLACES : 66, ROUNDING_MODE : 6 }); + T('0.0228', '67.4', '0.000338278931750741839762611275964391691394658753709198813056379822'); + BigNumber.config({ DECIMAL_PLACES : 7, ROUNDING_MODE : 3 }); + T('55.431323569482853085983', '38.1', '1.4548903'); + BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 0 }); + T('-0.058875222931656', '0.00200804', '-29.31974608656002868468755602478038286089918527519372124061273679808'); + BigNumber.config({ DECIMAL_PLACES : 93, ROUNDING_MODE : 1 }); + T('0.0000000000004341979552550051945', '-7', '-6.2028279322143599214285714285714285714285714285714285714285714285714285714285714e-14'); + BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 6 }); + T('0', '27317835842.70343824', '0'); + BigNumber.config({ DECIMAL_PLACES : 7, ROUNDING_MODE : 6 }); + T('-525.27647489', '-619.8870361', '0.8473745'); + BigNumber.config({ DECIMAL_PLACES : 46, ROUNDING_MODE : 6 }); + T('-0.00006609858451732327857498', '109329.9017282701215411803', '-6.045791999484780576837103178476487168e-10'); + BigNumber.config({ DECIMAL_PLACES : 58, ROUNDING_MODE : 5 }); + T('-734.32240155005644367008108', '1020431102461134.464', '-7.196197761700671525612683557342740515746394888e-13'); + BigNumber.config({ DECIMAL_PLACES : 59, ROUNDING_MODE : 2 }); + T('-783284249205713.7722', '4233309885107498641823', '-1.85028800268379933984683953559449871104453089752776e-7'); + BigNumber.config({ DECIMAL_PLACES : 85, ROUNDING_MODE : 6 }); + T('-0.00013146956713094358376', '1649552.9140934', '-7.97001211708323486024554763937270450633303503661265062490767630606217887777e-11'); + BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 2 }); + T('0.00002432214054499571092367773', '-5.252', '-0.0000046310244754371117524138861386138613861386138613861386138613861386138613'); + BigNumber.config({ DECIMAL_PLACES : 26, ROUNDING_MODE : 6 }); + T('0.000604917865', '0.00000000000000778053428052857257990576', '77747599739.24371047489910403748467035'); + BigNumber.config({ DECIMAL_PLACES : 93, ROUNDING_MODE : 0 }); + T('0.00000002729181865511587518', '3314925238926460', '8.233011814153112751033242807836060726342149614257168374901160828951724e-24'); + BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 1 }); + T('0.0000000000000551834247709145', '1273.7053272329239235620', '0'); + BigNumber.config({ DECIMAL_PLACES : 94, ROUNDING_MODE : 4 }); + T('923198613722607072044', '6507.0', '141877764518611813.7458122022437375134470570155217458122022437375134470570155217458122022437375134470570155217458'); + BigNumber.config({ DECIMAL_PLACES : 55, ROUNDING_MODE : 4 }); + T('-140335830907892435742395', '-42744.018650766016', '3283168858185435867.2081298364009743668600863110327906457706897393160602911'); + BigNumber.config({ DECIMAL_PLACES : 49, ROUNDING_MODE : 2 }); + T('0.0000000034057477562160254', '-56.23', '-6.0568162123706658367419526942913035746e-11'); + BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 3 }); + T('-50863101304', '-1.5', '33908734202.666666666666666666666666666666666666666666666666666'); + BigNumber.config({ DECIMAL_PLACES : 92, ROUNDING_MODE : 6 }); + T('0.0000000000000015', '-0.000000000000000000140806553', '-10652.91329161363676021527208325311393710490164474092338585974759285528422814242175220353558402925'); + BigNumber.config({ DECIMAL_PLACES : 78, ROUNDING_MODE : 3 }); + T('98.0949085616362', '20494774', '0.000004786337656694150420980489953194897391891220659471531620695109885085827245'); + BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 5 }); + T('-3009', '-205469071446121021512734996939', '0'); + BigNumber.config({ DECIMAL_PLACES : 40, ROUNDING_MODE : 3 }); + T('-10.33', '3', '-3.4433333333333333333333333333333333333334'); + BigNumber.config({ DECIMAL_PLACES : 72, ROUNDING_MODE : 5 }); + T('-1.0', '-0.0026695218361', '374.598921228880372371343271066191673171757053454131886207424456287256065124'); + BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 3 }); + T('0.000000000000000000096299113359374660689872154', '-0.000000041247', '-2.3347e-12'); + BigNumber.config({ DECIMAL_PLACES : 32, ROUNDING_MODE : 3 }); + T('8556123431827', '4608076357009950869947910.5', '1.85676685214018981902e-12'); + BigNumber.config({ DECIMAL_PLACES : 94, ROUNDING_MODE : 3 }); + T('5279', '-1.3', '-4060.7692307692307692307692307692307692307692307692307692307692307692307692307692307692307692307693'); + BigNumber.config({ DECIMAL_PLACES : 100, ROUNDING_MODE : 2 }); + T('-2', '3460.2', '-0.0005780012716027975261545575400265880584937286862031096468412230506907115195653430437546962603317727'); + BigNumber.config({ DECIMAL_PLACES : 58, ROUNDING_MODE : 5 }); + T('-9840946810698489631.31', '0.000000001340199962655292', '-7.3428944074889845947016437140958301917208345973724709410330506874828356015861442719287e+27'); + BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 2 }); + T('0.0000000084', '-4479933315301219812670', '0'); + BigNumber.config({ DECIMAL_PLACES : 25, ROUNDING_MODE : 0 }); + T('-0.0000000000005699', '-22418743580046824.54672034', '1e-25'); + BigNumber.config({ DECIMAL_PLACES : 37, ROUNDING_MODE : 1 }); + T('-11393.31', '363.1954', '-31.3696428974596043892626393395951600708'); + BigNumber.config({ DECIMAL_PLACES : 62, ROUNDING_MODE : 4 }); + T('-698013.4', '-4.748519', '146996.02128579458142633524263038644259399614911512410501042535577935'); + BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 5 }); + T('-75.98013345303526819', '-113870220948852.52747420278', '6.6725200688917185714557430189134938e-13'); + BigNumber.config({ DECIMAL_PLACES : 7, ROUNDING_MODE : 2 }); + T('47640719793996101556544272.0', '0.0000001618025948413210981769785058', '2.944373039302434525226651249791802071388e+32'); + BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 4 }); + T('144.183772508248322848066195', '13889798338085.6', '1.0380551898503722365962133982817630259181003e-11'); + BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 0 }); + T('-49.15', '-0.0050647233410506314951440754823', '9704.38002046'); + BigNumber.config({ DECIMAL_PLACES : 93, ROUNDING_MODE : 4 }); + T('0.00000000000000002719269323045919967229425', '16885.056050', '1.610459162820439655709301006436398533601551177557388090518064937071973771e-21'); + BigNumber.config({ DECIMAL_PLACES : 49, ROUNDING_MODE : 2 }); + T('0.00000000001283006158894564713881', '1490290.79', '8.6090994288072109328475417874656e-18'); + BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 2 }); + T('-3.9', '27.810820298880595815042028907', '-0.14023318830897546800743113515138209017795825036'); + BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 4 }); + T('-94.18025276', '-0.00000000000000058354337', '161393749979543080.062755232743026452344064846456913733764124507146743865841539764216668'); + BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 1 }); + T('-539194507864', '2199020327889191', '-0.000245197600506751705168663020061920219134073106013610032805600382847009212741981'); + BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 6 }); + T('0.0000000000000764476069279609', '-28649374142186508.40', '-2.668386630317029683579821472979771636953091090656555471e-30'); + BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 1 }); + T('10985.707500957', '-2.3', '-4776.3945656334782608695652173913043478260869565217391304347826086956521739130434'); + BigNumber.config({ DECIMAL_PLACES : 42, ROUNDING_MODE : 2 }); + T('-248952580924183', '-54333112891.780', '4581.967932152968478312557734782930587065915921'); + BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 2 }); + T('-5497496711.36315630050', '-212.837', '25829610.03661561'); + BigNumber.config({ DECIMAL_PLACES : 71, ROUNDING_MODE : 0 }); + T('0.0000000006315637381937849956470745', '-633237604453.9132585685602', '-9.9735665372941368623730877601909949270062103558673e-22'); + BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 4 }); + T('-7209257842336642543480.6172684', '0.00000001186587', '-6.0756251689396921957518641856012243518595770895855086900496971566349538634756659225155846136861435360407622871310742490858235e+29'); + BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 3 }); + T('-51.2235746', '-2470965700588586130998460', '2.0730184392198767054399446176223631735502262760322125e-23'); + BigNumber.config({ DECIMAL_PLACES : 78, ROUNDING_MODE : 6 }); + T('-5548065325827168241016699205', '19.2', '-2.8896173572016501255295308359375e+26'); + BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 5 }); + T('0.608330875132290749638579785', '-0.0000000000000000013969514468857994362', '-435470306780119398.23061608733868406207780517187821743248822329021800536250361694733'); + BigNumber.config({ DECIMAL_PLACES : 77, ROUNDING_MODE : 6 }); + T('554050694986108208197843.837', '-2840731954.122951', '-195038005673846.16055268929386425534558903896534424031411869009769261494138091259712787228192'); + BigNumber.config({ DECIMAL_PLACES : 72, ROUNDING_MODE : 6 }); + T('41.2600702526', '32422630.698541066068', '0.000001272570095752797619026707957116103877804433827479818600005179141764'); + BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 0 }); + T('-29508937775900336.96745703', '454.55302087085945968891517', '-64918582477717.06655285685'); + BigNumber.config({ DECIMAL_PLACES : 87, ROUNDING_MODE : 2 }); + T('121835792112.031458', '13349.97', '9126297.071231729958943727963433625693540884361537891096384486257272488252782590522675331854679'); + BigNumber.config({ DECIMAL_PLACES : 25, ROUNDING_MODE : 6 }); + T('-21234198779772116', '789117.741758', '-26908783893.8540070263844982722300123'); + BigNumber.config({ DECIMAL_PLACES : 39, ROUNDING_MODE : 2 }); + T('-4989566.19348002', '-0.0000000058782019556554347130250', '848825241310320.11668156337771690850186479657900594611'); + BigNumber.config({ DECIMAL_PLACES : 33, ROUNDING_MODE : 3 }); + T('3.0724536', '-0.000000000000000007041585830794818488792', '-436329780510989954.551091499054526001846286342348634'); + BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 0 }); + T('-1.28569', '-1001851216730.820102348', '1.28331430708382561543184857731880253016036120026369611231e-12'); + BigNumber.config({ DECIMAL_PLACES : 43, ROUNDING_MODE : 6 }); + T('-2334384.1', '-38916.4332004820517912', '59.9845337308837529352697890139267681024424027'); + BigNumber.config({ DECIMAL_PLACES : 77, ROUNDING_MODE : 3 }); + T('-0.000000000000000129624500411481739', '-5960733230894', '2.174640189224513503489449892371786582406678648715e-29'); + BigNumber.config({ DECIMAL_PLACES : 5, ROUNDING_MODE : 2 }); + T('-177489857688.6', '0.014425006442433703003409982', '-12304317394721.03457'); + BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 6 }); + T('0', '1182.8710995356238232492063', '0'); + BigNumber.config({ DECIMAL_PLACES : 25, ROUNDING_MODE : 2 }); + T('998432143981659996.993382568', '-434340863870260542987.88', '-0.0022987294704094337996759'); + BigNumber.config({ DECIMAL_PLACES : 49, ROUNDING_MODE : 4 }); + T('-3567956347.2603722232', '2.4', '-1486648478.025155093'); + BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 3 }); + T('-1.726189', '-87.695294132959800168957840', '0.019683941049138'); + BigNumber.config({ DECIMAL_PLACES : 6, ROUNDING_MODE : 5 }); + T('-0.0000000000000076501231125108051749049281', '1390866687485864.9523', '0'); + BigNumber.config({ DECIMAL_PLACES : 26, ROUNDING_MODE : 2 }); + T('-3501189.4337841', '-332814638322740159026312', '1.051993822e-17'); + BigNumber.config({ DECIMAL_PLACES : 21, ROUNDING_MODE : 1 }); + T('5', '-76468.92634638', '-0.00006538603637968689'); + BigNumber.config({ DECIMAL_PLACES : 29, ROUNDING_MODE : 0 }); + T('-166180752313186081244', '-0.000000019463969232913111', '8.5378655465699341944431399221283885177159544860608042644e+27'); + BigNumber.config({ DECIMAL_PLACES : 91, ROUNDING_MODE : 2 }); + T('1.2378513', '-1794652768216408.5', '-6.89744178886605376390792751059537065240428823174398413219990197564881671489e-16'); + BigNumber.config({ DECIMAL_PLACES : 31, ROUNDING_MODE : 3 }); + T('-0.02515333417248128530602182941', '-9159180545', '2.7462428597078479476e-12'); + BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 4 }); + T('24', '5320413068307816737991980355', '0'); + BigNumber.config({ DECIMAL_PLACES : 87, ROUNDING_MODE : 1 }); + T('0.00000000000055468552191490367', '5455.5911167119423159', '1.01672854517222302495377290574484970750900740427457643959007255083056105e-16'); + BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 1 }); + T('-4.30542', '48312907914855.521', '-8e-14'); + BigNumber.config({ DECIMAL_PLACES : 74, ROUNDING_MODE : 4 }); + T('-45806055225642.7438221194666', '8301114504507.38', '-5.51806088215874465568385836791718635727978846176910667636148904452549733057'); + BigNumber.config({ DECIMAL_PLACES : 67, ROUNDING_MODE : 2 }); + T('-0.0000000000000000083149159157', '380096.3712', '-2.18758097833163422739880132799331497537853894e-23'); + BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 0 }); + T('233827872456283396852', '0.00000000000126085991008017285690', '1.854511120441724976283342150744787908987129181188673584057999195838106954460750818521245082619954462967485194e+32'); + BigNumber.config({ DECIMAL_PLACES : 94, ROUNDING_MODE : 5 }); + T('0.00000000203028823562624013804059359544', '16.11', '1.260265819755580470540405707908131595282433271260086902545003103662321539416511483551e-10'); + BigNumber.config({ DECIMAL_PLACES : 85, ROUNDING_MODE : 2 }); + T('-2.83009547324126026828144052', '-1073136930546', '2.6372174814646808617440131982856733797578118336233519974395530395156599824e-12'); + BigNumber.config({ DECIMAL_PLACES : 56, ROUNDING_MODE : 3 }); + T('-0.00000000000000003964312', '84.4068521', '-4.6966708286944869965124549408471542798e-19'); + BigNumber.config({ DECIMAL_PLACES : 53, ROUNDING_MODE : 0 }); + T('-0.000000000000243095170', '253804.416083019328507441', '-9.578051231405038351889375026857344e-19'); + BigNumber.config({ DECIMAL_PLACES : 38, ROUNDING_MODE : 2 }); + T('67.127246696253374606', '-305571635070725418.59', '-2.1967761072036867437957e-16'); + BigNumber.config({ DECIMAL_PLACES : 43, ROUNDING_MODE : 3 }); + T('-0.2584532150', '-4405295.213841671', '5.86687616729808034079509881452356786e-8'); + BigNumber.config({ DECIMAL_PLACES : 71, ROUNDING_MODE : 3 }); + T('-22.4366', '87219275575596656.6', '-2.5724359497291678704993282533069081903125857440676861487e-16'); + BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 4 }); + T('3.572518998981', '0.0362382837285606476215341', '98.5841113707428129124708369537235554273561188433169663353586226990901081970303'); + BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 1 }); + T('0', '-620.908', '0'); + BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 5 }); + T('956649237392.54526837482487285', '-252.26108413', '-3792298129.1063765966810636367576289619904599908134867175717310669911929867515550346334746'); + BigNumber.config({ DECIMAL_PLACES : 74, ROUNDING_MODE : 6 }); + T('-59667102295.65250210', '19489263897530983028.9', '-3.06153698822927267569035561030547666864105216155187107713349341031e-9'); + BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 0 }); + T('-1.3356004155738307', '-1072483976.807', '1.24533367814e-9'); + BigNumber.config({ DECIMAL_PLACES : 40, ROUNDING_MODE : 3 }); + T('-777418.242914108353702', '-36608', '21.2362937858967535429960664335664335664335'); + BigNumber.config({ DECIMAL_PLACES : 39, ROUNDING_MODE : 6 }); + T('-1.3', '18589084334848', '-6.9933514560636904777010729e-14'); + BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 0 }); + T('8.298506', '-14835308451533207540987920', '-1e-15'); + BigNumber.config({ DECIMAL_PLACES : 9, ROUNDING_MODE : 5 }); + T('-194552786577474447109419.065219', '-30974490016275218', '6281065.046599597'); + BigNumber.config({ DECIMAL_PLACES : 100, ROUNDING_MODE : 6 }); + T('-1089462.83769175220337676', '-37527420511', '0.0000290311143920059718750105488698559487303846147369966245852958939600377054010303010458357160065347'); + BigNumber.config({ DECIMAL_PLACES : 59, ROUNDING_MODE : 1 }); + T('-7031172930206.977', '-0.000000944770240264', '7442204073068850183.83921952438557552951943962609032640434583738502675415596593'); + BigNumber.config({ DECIMAL_PLACES : 100, ROUNDING_MODE : 2 }); + T('76357519096720', '-0.000000000122402795947736068', '-6.238216905545472540943255902322080472226793380593928735266890562147246785044889660533610115945649499822663700873023421142242e+23'); + BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 6 }); + T('-0.00000000000000000163631470899168095', '-62696.72', '2.6098888570114687817799719028363844232999748631e-23'); + BigNumber.config({ DECIMAL_PLACES : 43, ROUNDING_MODE : 4 }); + T('-0.00000000015610167379594', '8307382086265.32', '-1.87907179632467487195e-23'); + BigNumber.config({ DECIMAL_PLACES : 67, ROUNDING_MODE : 6 }); + T('-41155.97286243387', '-51286550749616883.0453954314', '8.024710623133748231167952577192199879705499807762591984e-13'); + BigNumber.config({ DECIMAL_PLACES : 73, ROUNDING_MODE : 6 }); + T('0.00000062', '-83696.33363', '-7.4077318935003867743495564155693590326269588112661512769301935e-12'); + BigNumber.config({ DECIMAL_PLACES : 24, ROUNDING_MODE : 3 }); + T('-2454', '-57996', '0.042313262983654045106559'); + BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 4 }); + T('-0.00000005445430299887755', '18702365804889.09828730546915', '0'); + BigNumber.config({ DECIMAL_PLACES : 93, ROUNDING_MODE : 1 }); + T('-2.82500727732799102592455401', '127386323.4', '-2.2176692143451806584791927592440429911960234814344284623572078068154685434621782953506e-8'); + BigNumber.config({ DECIMAL_PLACES : 67, ROUNDING_MODE : 1 }); + T('-10414867049350.37506', '-774.5', '13447213749.9682053712072304712717882504841833440929632020658489347966429954809'); + BigNumber.config({ DECIMAL_PLACES : 50, ROUNDING_MODE : 4 }); + T('-0.00000000017156347571', '-1', '1.7156347571e-10'); + BigNumber.config({ DECIMAL_PLACES : 26, ROUNDING_MODE : 0 }); + T('-146886024132', '60.846634517415', '-2414036952.03486638986274256171950379'); + BigNumber.config({ DECIMAL_PLACES : 62, ROUNDING_MODE : 2 }); + T('1597035367262802184.9', '-5100462308.96744', '-313115806.08192221728777946889341283425748564273596394348484989186886406'); + BigNumber.config({ DECIMAL_PLACES : 39, ROUNDING_MODE : 3 }); + T('357978994284047', '-1.85390296204564701262050526', '-193094785224919.879005988841865468690729521149775159443'); + BigNumber.config({ DECIMAL_PLACES : 6, ROUNDING_MODE : 2 }); + T('0.00000003446220246575602525654', '-0.0000000000000000000436359188998647477', '-789766855714.429404'); + BigNumber.config({ DECIMAL_PLACES : 93, ROUNDING_MODE : 3 }); + T('13.341320967', '252', '0.052941749869047619047619047619047619047619047619047619047619047619047619047619047619047619047'); + BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 0 }); + T('0.0000000000000001024979524445496413574468', '776847686.16529646052', '1.31940860827562900232013736775142099759115524e-25'); + BigNumber.config({ DECIMAL_PLACES : 80, ROUNDING_MODE : 3 }); + T('35539521061792.894', '-589.6', '-60277342370.74778493894165535956580732700135685210312075983717774762550881953867028493894166'); + BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 5 }); + T('-0.04843032565810874317879', '-0.0000000000000000230470', '2101372224502483.75835423265500932876296264155855425868876643380917256042'); + BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 3 }); + T('-0.00015760545760472', '0.0000000000000000020881', '-75477926155222.4510320386954647765911594272304966237249173890139361141707772616254010823236435036636176428332'); + BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 6 }); + T('3741994818.43', '276730971.190268761', '13.522139579588868'); + BigNumber.config({ DECIMAL_PLACES : 40, ROUNDING_MODE : 5 }); + T('-0.000000000000000793120', '1', '-7.9312e-16'); + BigNumber.config({ DECIMAL_PLACES : 42, ROUNDING_MODE : 1 }); + T('19505793668996.2029018489250', '0.0000000000000000027031057958951928489759383', '7.216067420896647128431761647720817838984379537149604615544851269905951848e+30'); + BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 3 }); + T('3', '0.000000000000000002268109065118827699', '1322687716449309311.392732396838212'); + BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 2 }); + T('-2822.5667173146', '-0.000000000018395023355040495122590372880', '153441866467713.780883476041'); + BigNumber.config({ DECIMAL_PLACES : 92, ROUNDING_MODE : 4 }); + T('1.039074254', '-0.000000000000062746', '-16560007873011.82545500908424441398654894335893921524878079877601759474707551078953240047174321869123131355'); + BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 2 }); + T('4251433992377.3033810', '-30360213576311282.08153307', '-0.00014003307261627788209840535004431934847487826'); + BigNumber.config({ DECIMAL_PLACES : 63, ROUNDING_MODE : 5 }); + T('-83.847', '-52544439413789508586255433619', '1.595734980436304717448092703632869706e-27'); + BigNumber.config({ DECIMAL_PLACES : 35, ROUNDING_MODE : 2 }); + T('0.000000000000000000060379', '-0.000000000751974225833533', '-8.029397541261779523413113e-11'); + BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 1 }); + T('1011.642321995', '-0.0000000157', '-64435816687.579617834394904'); + BigNumber.config({ DECIMAL_PLACES : 90, ROUNDING_MODE : 0 }); + T('2.45111', '-10841006815.8245891', '-2.26096158930748128285706408217049424480420881500218093692115118582618759959848353e-10'); + BigNumber.config({ DECIMAL_PLACES : 93, ROUNDING_MODE : 3 }); + T('-1.6453946770', '-502189.190381561', '0.000003276443835339898124338106783579765302296772201509039455867238791380277419994145965885115'); + BigNumber.config({ DECIMAL_PLACES : 53, ROUNDING_MODE : 2 }); + T('164.71063415565168270', '38688858306.9', '4.25731441463280949903434122419329819182248246e-9'); + BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 2 }); + T('-253123055870543795901570.532335', '721689950179663019087825751933', '-3.5073656742418181837455443362691936683987e-7'); + BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 3 }); + T('-3', '4.193811123766', '-0.71533979749331923242174048379644845283890017598329558'); + BigNumber.config({ DECIMAL_PLACES : 62, ROUNDING_MODE : 5 }); + T('-35764692914053196', '5.0', '-7152938582810639.2'); + BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 4 }); + T('1', '-7833230747484274.456179967818', '-1.2766e-16'); + BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 0 }); + T('-130921316754051.5231492', '-13743800862464217321', '0.0000095258450019900660069760935022508907014851641735532551961'); + BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 5 }); + T('-0.000122083426444', '0.0000000000000000051793456353047282', '-23571206681366.26271248245922921459993806882663221841053754120075248348191554068065707391940769657618571878843'); + BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 3 }); + T('-13.013082361464', '-19', '0.684899071656'); + BigNumber.config({ DECIMAL_PLACES : 37, ROUNDING_MODE : 6 }); + T('239735.962', '-2117596123151685.940495888490', '-1.132113717903833858667987356e-10'); + BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 1 }); + T('-11.1939672361', '-6495.3', '0.0017'); + BigNumber.config({ DECIMAL_PLACES : 23, ROUNDING_MODE : 6 }); + T('-3.02785696172038664440868369240', '-9759.1722', '0.00031025756075094019187'); + BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 6 }); + T('0.00686', '-0.00030702330', '-22.343581089773968294914425061550703155102560619992033177937961060284349754562601601'); + BigNumber.config({ DECIMAL_PLACES : 36, ROUNDING_MODE : 5 }); + T('-0.00000721285235008372', '-2966404137461530', '2.431513716892279e-21'); + BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 4 }); + T('-3.6', '-111843172425284814877820055', '3.21879281670495086474816711397358889e-26'); + BigNumber.config({ DECIMAL_PLACES : 71, ROUNDING_MODE : 5 }); + T('0.00000014798600456383948117017592', '-806120083076757.711', '-1.8357811406833347103770610957283504911572088180974e-22'); + BigNumber.config({ DECIMAL_PLACES : 30, ROUNDING_MODE : 1 }); + T('1378.3718188', '0.0000000014240198803', '967944224563.505905992652453842290645441911'); + BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 4 }); + T('0.00000000267701455033', '52.8369968257752', '5.066553e-11'); + BigNumber.config({ DECIMAL_PLACES : 56, ROUNDING_MODE : 1 }); + T('-42281.583633647', '301.008944', '-140.46620366751294938266020427618921516165978111268348225559'); + BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 3 }); + T('173072565057820.81884340', '-22454475637400280', '-0.00770771'); + BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 2 }); + T('-148.308309396608', '-1', '148.308309396608'); + BigNumber.config({ DECIMAL_PLACES : 96, ROUNDING_MODE : 0 }); + T('-4.5', '-237294.549210115502960438352084', '0.000018963773145987509672643934563265116870186716351801954670293442297143720469368694764456905957'); + BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 2 }); + T('0.010105711', '-58.2', '-0.0001736376460481'); + BigNumber.config({ DECIMAL_PLACES : 35, ROUNDING_MODE : 3 }); + T('0.00017', '-2042316.522', '-8.323881150093344835605262e-11'); + BigNumber.config({ DECIMAL_PLACES : 59, ROUNDING_MODE : 0 }); + T('74771', '-1250.843139741359215801621670', '-59.77648005925078317905100978646789953648061773213365672669249'); + BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 5 }); + T('-67817.820861392699', '-0.0000000000000000812716176', '834458853706791471565.345095333749084871174017336157955345040406824632957718'); + BigNumber.config({ DECIMAL_PLACES : 66, ROUNDING_MODE : 6 }); + T('6120230832613', '1', '6120230832613'); + BigNumber.config({ DECIMAL_PLACES : 94, ROUNDING_MODE : 2 }); + T('8941060662864547952.8', '7665854.8236635996797444792', '1166348811519.9542509005070975483058276516898971541382367391466160168477257504036493054809998209085999366077'); + BigNumber.config({ DECIMAL_PLACES : 35, ROUNDING_MODE : 2 }); + T('-116.953733437', '-178.5', '0.6552029884425770308123249299719888'); + BigNumber.config({ DECIMAL_PLACES : 63, ROUNDING_MODE : 6 }); + T('1.7545566', '-1.8', '-0.974753666666666666666666666666666666666666666666666666666666667'); + BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 4 }); + T('78506.12699118476818330', '29343.15987453266', '2.675'); + BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 4 }); + T('0.000000000007170364785', '1217317394.9', '5.8903001099306808237904692739390674092798e-21'); + BigNumber.config({ DECIMAL_PLACES : 26, ROUNDING_MODE : 5 }); + T('-358.72597358844265031347081211', '-0.00000000006346267365643402622986', '5652550592659.65847839264302852377853927'); + BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 0 }); + T('-1047517545182138713.714', '-48750265694381704341698147', '2.14874222788669109758607218005930509171320140363946801313938343353364880699695125962791e-8'); + BigNumber.config({ DECIMAL_PLACES : 89, ROUNDING_MODE : 1 }); + T('-19980949.4', '2166.303', '-9223.5247793129585288853867626089240517139107502505420525198921849805867415592370965649772908'); + BigNumber.config({ DECIMAL_PLACES : 55, ROUNDING_MODE : 0 }); + T('-77347.56665998993', '-61011519988736362016915678575', '1.2677534779377639866583728733529e-24'); + BigNumber.config({ DECIMAL_PLACES : 62, ROUNDING_MODE : 6 }); + T('1.00725666', '44890598391792.6558241348538145', '2.243803148287184888604262977643616586199053928157e-14'); + BigNumber.config({ DECIMAL_PLACES : 66, ROUNDING_MODE : 1 }); + T('-0.00000000000000069917314913823617496', '-0.65465', '1.068010615043513594989689146872374551286947223707324e-15'); + BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 6 }); + T('-0.0000000000000013275084047200776', '10892.626', '-1.2e-19'); + BigNumber.config({ DECIMAL_PLACES : 78, ROUNDING_MODE : 1 }); + T('0', '442484646.9644917', '0'); + BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 6 }); + T('13934130015777.759', '-468599827.881745750969665', '-29735.6703666867935099330274301949766831'); + BigNumber.config({ DECIMAL_PLACES : 38, ROUNDING_MODE : 6 }); + T('-504805212729013492748392', '1.1', '-4.5891382975364862977126545454545454545454545454545454545454545e+23'); + BigNumber.config({ DECIMAL_PLACES : 7, ROUNDING_MODE : 0 }); + T('112.8', '437508', '0.0002579'); + BigNumber.config({ DECIMAL_PLACES : 26, ROUNDING_MODE : 5 }); + T('968026520286705', '-0.000000000004158357327526631313450', '-2.3279060553040111015228875482714428199539764540780806e+26'); + BigNumber.config({ DECIMAL_PLACES : 27, ROUNDING_MODE : 3 }); + T('4.082', '0.00000000000000002899730037408421', '140771725206813061.411657268233204678443287205'); + BigNumber.config({ DECIMAL_PLACES : 82, ROUNDING_MODE : 0 }); + T('7983402611108711956214129.366', '-6304037314790', '-1266395202385.4184544456598352850309175890175536966493489539721043482329295052925801401464962347'); + BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 1 }); + T('-31319770.3170', '-1767017197.60054', '0.0177246550625141'); + BigNumber.config({ DECIMAL_PLACES : 62, ROUNDING_MODE : 6 }); + T('35966943458239770.89', '-86.1354', '-417562854044211.44953178368011293846664669810554081132728239492705670374782029'); + BigNumber.config({ DECIMAL_PLACES : 19, ROUNDING_MODE : 5 }); + T('-0.1746', '-3', '0.0582'); + BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 2 }); + T('3.1737080818', '-154.74071034759696', '-0.02'); + BigNumber.config({ DECIMAL_PLACES : 38, ROUNDING_MODE : 4 }); + T('-1', '-151793425935557285.74160344', '6.58790058816211312844e-18'); + BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 1 }); + T('-0.000000000000000000500696640746446603578239852374', '0.0000010519078635126583383791103703', '-4.75989065310776976547223588231620465207273332539646650682e-13'); + BigNumber.config({ DECIMAL_PLACES : 41, ROUNDING_MODE : 1 }); + T('-337408141555794467703412', '5', '-6.74816283111588935406824e+22'); + BigNumber.config({ DECIMAL_PLACES : 58, ROUNDING_MODE : 4 }); + T('-2390151555250111.5101748841', '14895139724394489980239711', '-1.604651986805900738738324857172310183686390366703e-10'); + BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 3 }); + T('-2060873', '-7221697220', '0.00028537239061'); + BigNumber.config({ DECIMAL_PLACES : 94, ROUNDING_MODE : 5 }); + T('0.000003306351834', '230229062766143314184', '1.43611401370227903719665743401327961340582045683781850026652503851636e-26'); + BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 2 }); + T('1', '-2.00', '-0.5'); + BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 4 }); + T('-909114859099118221.52', '1036707955444474.3', '-876.925'); + BigNumber.config({ DECIMAL_PLACES : 74, ROUNDING_MODE : 4 }); + T('197782531157200.01287194570123', '813.946', '242992202378.53618406128379675064439164268882702292289660493447968292736864607725819649'); + BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 3 }); + T('0.00000000008452451909296', '58', '0'); + BigNumber.config({ DECIMAL_PLACES : 64, ROUNDING_MODE : 1 }); + T('-6137.8543112978414470200306898', '0.00000055601458262650773045979675', '-11039016786.7608409116128147797862018931350388082314771512335152754772845202'); + BigNumber.config({ DECIMAL_PLACES : 56, ROUNDING_MODE : 3 }); + T('1615966037605689.47637174016', '22863276.1852274648', '70679548.48263634212893741417946789662468271367679521697865762414'); + BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 3 }); + T('0.00000130888943456524437277141723179', '-0.00000000000000000002344964776537404390495', '-55817018987294.2152070206760779214763469358747746513558103351411085850215223'); + BigNumber.config({ DECIMAL_PLACES : 41, ROUNDING_MODE : 0 }); + T('-72741.239', '-0.011694513184', '6220116.89204146353630721598406639583296740674315'); + BigNumber.config({ DECIMAL_PLACES : 80, ROUNDING_MODE : 0 }); + T('-62284855.6062803049', '341872719741819544129', '-1.8218726446882774353698764702650666206826659826324725196666055243467e-13'); + BigNumber.config({ DECIMAL_PLACES : 78, ROUNDING_MODE : 2 }); + T('-0.000000191763', '5181.004', '-3.7012710277776276567244495468445884234021050746148815943782324815807e-11'); + BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 0 }); + T('6554.0872023548', '-38.934724', '-168.335268085'); + BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 4 }); + T('-0.000000000000000000354411206386009672609701', '1.571', '-2.25595930226613413500764481222151496e-19'); + BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 1 }); + T('3729560374040.937001', '-0.0042566551', '-876171615135305.8886542158419177'); + BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 2 }); + T('358.8', '-7338649.72444145235', '-0.00004889182798914801941000704346106583259887447309571581025317301009141101768963144'); + BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 2 }); + T('232510', '-7811879', '-0.0297636458526815379500885766407800223224143640729714323532148923453627481941284'); + BigNumber.config({ DECIMAL_PLACES : 26, ROUNDING_MODE : 1 }); + T('7.6083', '-4.09', '-1.86022004889975550122249388'); + BigNumber.config({ DECIMAL_PLACES : 62, ROUNDING_MODE : 5 }); + T('-2.0', '9658.6063706', '-0.00020706921094619145074780442983839265230320846056159082541253'); + BigNumber.config({ DECIMAL_PLACES : 85, ROUNDING_MODE : 3 }); + T('-42502549943849636.0', '1005909889', '-42252840.3474614175902589222880181864878753567955031805040739588553741715924218337215293048979'); + BigNumber.config({ DECIMAL_PLACES : 56, ROUNDING_MODE : 4 }); + T('0.000000000003947406983189274583637576', '-4.758472', '-8.2955347497879037296795610019350749568348831e-13'); + BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 6 }); + T('-0.00000060783743822161435027278947747', '5', '-1.21567e-7'); + BigNumber.config({ DECIMAL_PLACES : 87, ROUNDING_MODE : 6 }); + T('55.062', '0.00000000000000092390575762187489545047', '59596987621041665.999708408735627809281012767259065689121245799870507035879298918578047617775711407910273'); + BigNumber.config({ DECIMAL_PLACES : 80, ROUNDING_MODE : 6 }); + T('120.5', '-72963.576389705129', '-0.00165150895779009637027322974274505457157008990450575477856221236714119651890204'); + BigNumber.config({ DECIMAL_PLACES : 73, ROUNDING_MODE : 4 }); + T('480898006334101303.0441566199', '0.0000003493', '1.3767477994105390868713330085886057829945605496707701116518751789292871457200114514743773260807329e+24'); + BigNumber.config({ DECIMAL_PLACES : 32, ROUNDING_MODE : 0 }); + T('0.0000000014271644', '-34.7', '-4.112865706051873198848e-11'); + BigNumber.config({ DECIMAL_PLACES : 29, ROUNDING_MODE : 3 }); + T('-908168.55', '-0.000000000168092101', '5402803252485968.98672829367514419966706228509'); + BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 5 }); + T('-3931.3591709457711', '-0.000600', '6552265.2849096185'); + BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 5 }); + T('-0.0000000000000000003854837', '203153327235594.07', '-1.897501287551938289621998275022661405168283841714e-33'); + BigNumber.config({ DECIMAL_PLACES : 1, ROUNDING_MODE : 2 }); + T('-464.6660989580066682583', '0.0000000025287048776334050', '-183756555803.7'); + BigNumber.config({ DECIMAL_PLACES : 2, ROUNDING_MODE : 3 }); + T('0.00000001598491495112256503271480', '15845.41034728929139', '0'); + BigNumber.config({ DECIMAL_PLACES : 59, ROUNDING_MODE : 3 }); + T('-376478.1141996546346', '-6.04226', '62307.49987581710065439090671371308086709277654387596693952262895'); + BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 0 }); + T('-167220290541503805543.7759', '42212184.8388', '-3961422304485.89858655510848710351023338606730785989993238'); + BigNumber.config({ DECIMAL_PLACES : 64, ROUNDING_MODE : 6 }); + T('-4.1', '-12.32618', '0.3326253551384127118052794945392652062520586264357651762346485286'); + BigNumber.config({ DECIMAL_PLACES : 29, ROUNDING_MODE : 5 }); + T('1396.22658466738050270446461434', '-149201.6902', '-0.00935798101747898632521298753'); + BigNumber.config({ DECIMAL_PLACES : 49, ROUNDING_MODE : 0 }); + T('-0.0000254634', '-16910781436593647508202009', '1.5057494590344083722e-30'); + BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 1 }); + T('-66473969681.2438255944722', '-0.0004003', '166060378918920.37370590107419435423'); + BigNumber.config({ DECIMAL_PLACES : 94, ROUNDING_MODE : 6 }); + T('6', '137056187895.95934', '4.3777665876382445796889579864300748217253498127475115041805154412475968297585454338e-11'); + BigNumber.config({ DECIMAL_PLACES : 93, ROUNDING_MODE : 5 }); + T('12868623290.812478961603', '-36.75684007199992660969', '-350101457.731546011544686690663319393081017964364798328515129174553990948059802265406973292412642650085'); + BigNumber.config({ DECIMAL_PLACES : 59, ROUNDING_MODE : 0 }); + T('8.0', '-143.2', '-0.05586592178770949720670391061452513966480446927374301675978'); + BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 6 }); + T('405.8940851589920143275', '0.0000031595641466437612', '128465214.2891771800155255184936477227590071373152600189283713412231665928420004315342'); + BigNumber.config({ DECIMAL_PLACES : 40, ROUNDING_MODE : 0 }); + T('-14403263998864', '10940603451138682.0975641', '-0.0013164963032605783027414142495158631633'); + BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 2 }); + T('-12.2', '-66130.6039611', '0.0001844835'); + BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 1 }); + T('0.00000000000033214', '286610831148.287475471847134', '0'); + BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 6 }); + T('875086261927331070.4107', '3251.015177076', '269173231825510.45494302877117092'); + BigNumber.config({ DECIMAL_PLACES : 5, ROUNDING_MODE : 5 }); + T('-32517.76957877', '-14838063424.73286421609961', '0'); + BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 2 }); + T('-2.1', '-53837150', '3.900652244778930534027154111984011040703306174268140122573353158553155209739e-8'); + BigNumber.config({ DECIMAL_PLACES : 2, ROUNDING_MODE : 5 }); + T('1822846523', '6.097110380', '298968922.88'); + BigNumber.config({ DECIMAL_PLACES : 38, ROUNDING_MODE : 4 }); + T('0.0000000000000000001738767135828308076615318932', '42', '4.13992175197216209e-21'); + BigNumber.config({ DECIMAL_PLACES : 7, ROUNDING_MODE : 3 }); + T('-65144.180447124765622379367086', '117535240.5467065104543', '-0.0005543'); + BigNumber.config({ DECIMAL_PLACES : 40, ROUNDING_MODE : 3 }); + T('-60595315535', '0.00000786477671092226653', '-7704645378024249.5202802823297289694303782144532071537437'); + BigNumber.config({ DECIMAL_PLACES : 72, ROUNDING_MODE : 0 }); + T('7', '105.15540244011511302', '0.066568144266162889689357612294978262491909834788419868590726910520285755'); + BigNumber.config({ DECIMAL_PLACES : 42, ROUNDING_MODE : 2 }); + T('0.00000000000000000125943445406265325', '-1.05014763', '-1.199292764258919719696934e-18'); + BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 3 }); + T('-207260494748141.8', '276513', '-749550635.0447964471833150701775323402516337387392274504272855164133332'); + BigNumber.config({ DECIMAL_PLACES : 1, ROUNDING_MODE : 1 }); + T('0.000000000000007406675259867548048659529', '-3.9', '0'); + BigNumber.config({ DECIMAL_PLACES : 92, ROUNDING_MODE : 1 }); + T('-3', '-33805144702182391429', '8.874388873141921791142106887133754461004198094372124469735641818469357576e-20'); + BigNumber.config({ DECIMAL_PLACES : 58, ROUNDING_MODE : 3 }); + T('4580747.41942959797145', '-199398645845444290963175', '-2.29728110740540187798940427340107312524125e-17'); + BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 4 }); + T('-11921156770183281402.5719', '0.0000000000000000000138107', '-8.63182660559079655815556054363645579152396330381515781242080415909403578384875495087142577856299825497621409486847154742337e+38'); + BigNumber.config({ DECIMAL_PLACES : 85, ROUNDING_MODE : 0 }); + T('-1074776287618563612.8', '0.00000000000000987368099173690', '-1.088526445727813061987063599938594859673165781329712410974746563427097586832555160507624921930388017640329804919138993e+32'); + BigNumber.config({ DECIMAL_PLACES : 40, ROUNDING_MODE : 3 }); + T('20.2', '-15.1', '-1.337748344370860927152317880794701986755'); + BigNumber.config({ DECIMAL_PLACES : 63, ROUNDING_MODE : 6 }); + T('-0.0000000000000000851106468662433872', '144621243746567181134', '-5.88507225227508292021159593e-37'); + BigNumber.config({ DECIMAL_PLACES : 77, ROUNDING_MODE : 2 }); + T('-3771.4', '-538627092842309059307110304', '7.00187578775234832011214088670320479524277077178383611e-24'); + BigNumber.config({ DECIMAL_PLACES : 28, ROUNDING_MODE : 2 }); + T('681048142', '-15.778877', '-43162016.0294043739614676000072755494'); + BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 4 }); + T('0.0000000000000000000241220235004242', '-7084', '-3.405141657315669113495200451722191e-24'); + BigNumber.config({ DECIMAL_PLACES : 25, ROUNDING_MODE : 3 }); + T('-17.771348422082', '-642.401', '0.0276639488762968924394575'); + BigNumber.config({ DECIMAL_PLACES : 91, ROUNDING_MODE : 1 }); + T('48142861548200777', '-1854644.538', '-25957999261.7435875466935432777793024185424797557622332910890119042315374397635650869935055986453399837'); + BigNumber.config({ DECIMAL_PLACES : 78, ROUNDING_MODE : 1 }); + T('12339.593347848', '-8', '-1542.449168481'); + BigNumber.config({ DECIMAL_PLACES : 55, ROUNDING_MODE : 1 }); + T('-45173807850681', '473007.8', '-95503304.2809886010336404600516101425811582811107977500582442826'); + BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 6 }); + T('-0.0000000000000001369861', '-1214.9774052', '1.12747858037286239403392651667725022150889296225078e-19'); + BigNumber.config({ DECIMAL_PLACES : 40, ROUNDING_MODE : 4 }); + T('8.30', '69753.3968', '0.0001189906209700170472558262567651759147'); + BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 1 }); + T('-194205904343783801732.0', '-4.1', '47367293742386293105.365853658536'); + BigNumber.config({ DECIMAL_PLACES : 98, ROUNDING_MODE : 5 }); + T('0.0000000000020', '-426481958.84912', '-4.68953013955639869740954138570056513052759933250542067428558653599743312131825e-21'); + BigNumber.config({ DECIMAL_PLACES : 100, ROUNDING_MODE : 3 }); + T('3432.29261', '0.0000689627576', '49770234.3909751079907512283122506690480718247844543849853243107552300083777392335598830520083495037037208036'); + BigNumber.config({ DECIMAL_PLACES : 100, ROUNDING_MODE : 0 }); + T('-0.000000000000424', '3.34', '-1.269461077844311377245508982035928143712574850299401197604790419161676646706586826347306e-13'); + BigNumber.config({ DECIMAL_PLACES : 49, ROUNDING_MODE : 1 }); + T('-2.066599', '-9.6', '0.2152707291666666666666666666666666666666666666666'); + BigNumber.config({ DECIMAL_PLACES : 91, ROUNDING_MODE : 4 }); + T('425561826519', '-79795578713362.785801', '-0.0053331504499476015817508373855477129269136193267837599742419662810065857350796356860281621'); + BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 0 }); + T('-14', '8.0553176', '-1.738'); + BigNumber.config({ DECIMAL_PLACES : 21, ROUNDING_MODE : 1 }); + T('-140.3861908135416725', '293950969537344578630', '-4.77e-19'); + BigNumber.config({ DECIMAL_PLACES : 63, ROUNDING_MODE : 2 }); + T('-267236083264', '0.060922691', '-4386478648226.48756602035192437576337525865362710258481523739652275044777651'); + BigNumber.config({ DECIMAL_PLACES : 100, ROUNDING_MODE : 0 }); + T('24989737425588.62175', '1827822896000508', '0.0136718592814813259924746054206314214484193217141450026920820529751326751719870307396634288513608'); + BigNumber.config({ DECIMAL_PLACES : 41, ROUNDING_MODE : 6 }); + T('21446276399.799358210142', '-0.0000000210072221265056367', '-1020900158557363445.99546688234348152913192810846078726356781'); + BigNumber.config({ DECIMAL_PLACES : 91, ROUNDING_MODE : 5 }); + T('-1748.969178739', '-2207390888.747795', '7.923241813012793132648873360471548592079799470743165609540929876762878230566521879007e-7'); + BigNumber.config({ DECIMAL_PLACES : 82, ROUNDING_MODE : 5 }); + T('1887616762070.549', '0.056', '33707442179831.2321428571428571428571428571428571428571428571428571428571428571428571428571428571'); + BigNumber.config({ DECIMAL_PLACES : 1, ROUNDING_MODE : 3 }); + T('-0.0005749256442', '687007.3852166546834', '-0.1'); + BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 0 }); + T('0.0000000000000000046995089597839284719', '0.00000018312', '2.5663548273175668806793359545653123634775011e-11'); + BigNumber.config({ DECIMAL_PLACES : 74, ROUNDING_MODE : 4 }); + T('-9959.1697726779267095204465', '6143.24618', '-1.62115752500706828413645739653558861611500648017332100469397109526221200531'); + BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 3 }); + T('-5289707829.72', '-0.000003040633883722975865559', '1739672723518834.3150238413181745523044517377463696'); + BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 4 }); + T('728675880125731956239091835787', '-306184298095375170.5', '-2379860380360.6949390200137058611643432190458095828381998338996234775199077352612506687236762070249610395377'); + BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 0 }); + T('0.0000000000007281192369822181091925810616', '-1370285311893397378.91', '-5.31363235570361877202435312121036820107e-31'); + BigNumber.config({ DECIMAL_PLACES : 35, ROUNDING_MODE : 1 }); + T('1', '24770215340909710.0476889854', '4.037106606612464094e-17'); + BigNumber.config({ DECIMAL_PLACES : 87, ROUNDING_MODE : 2 }); + T('0.000000000000000212873933075169748138', '9858498.115', '2.1592937442598450822749891046664768774467630965307538632115465998e-23'); + BigNumber.config({ DECIMAL_PLACES : 42, ROUNDING_MODE : 5 }); + T('-1637.6', '-369935221702679655391147.04', '4.426720960666335798413e-21'); + BigNumber.config({ DECIMAL_PLACES : 27, ROUNDING_MODE : 4 }); + T('-4468679873.88672609693', '539.53', '-8282541.978920034283413341241450892'); + BigNumber.config({ DECIMAL_PLACES : 50, ROUNDING_MODE : 0 }); + T('-179.2', '0.0000007655816638410681', '-234070391.78670983961863301569260757607010287281281593333929'); + BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 5 }); + T('-219680.333923311818378846', '-166364130', '0.00132047896336375'); + BigNumber.config({ DECIMAL_PLACES : 91, ROUNDING_MODE : 1 }); + T('-0.0001871978372671329473471531', '-3', '0.0000623992790890443157823843666666666666666666666666666666666666666666666666666666666666666'); + BigNumber.config({ DECIMAL_PLACES : 90, ROUNDING_MODE : 2 }); + T('-401320638224', '644367549.141339409', '-622.813235642895395647640582425328355316646002650582340426262307784707012517064871019261165052'); + BigNumber.config({ DECIMAL_PLACES : 86, ROUNDING_MODE : 6 }); + T('4873861628995229209.679696263', '11.3', '431315188406657452.18404391707964601769911504424778761061946902654867256637168141592920353982300884955752'); + BigNumber.config({ DECIMAL_PLACES : 50, ROUNDING_MODE : 5 }); + T('209442.3', '158149615372619.95680722', '1.32433012566314603912819065693378117517811e-9'); + BigNumber.config({ DECIMAL_PLACES : 27, ROUNDING_MODE : 1 }); + T('-0.0000047763583896869', '0.000000000000031', '-154076077.086674193548387096774193548'); + BigNumber.config({ DECIMAL_PLACES : 58, ROUNDING_MODE : 5 }); + T('-0.00000007062563491432162547958465462', '1678294912481632682476209.39', '-4.20817785891337228664197163e-32'); + BigNumber.config({ DECIMAL_PLACES : 98, ROUNDING_MODE : 3 }); + T('0.00000000000000002858071968937038', '-2.88', '-9.92386100325360416666666666666666666666666666666666666666666666666666666666666667e-18'); + BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 4 }); + T('-15537801.13', '9673381.312387317833325771976', '-1.6062430114383020650447665999331371841520357527309569579958513422263988998184828601088618924812317'); + BigNumber.config({ DECIMAL_PLACES : 45, ROUNDING_MODE : 1 }); + T('164420550135149389227725890786', '-15391746.8', '-1.0682384025128933983485610014452680575540652734750028502287992419417e+22'); + BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 5 }); + T('1609313.77506384424142919639', '0.0000000000053685372834216378966', '299767644351376825.93162778894'); + BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 6 }); + T('-89.457432402492322024345', '-5.06', '17.67933446689571581508794466403162055335968379'); + BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 2 }); + T('-0.000000028628393568561339370307241016', '-0.0000000000000379', '755366.58492246278022'); + BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 0 }); + T('111763009.2499833', '-1601833.0823050590361736215681', '-69.77194470797'); + BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 4 }); + T('-3', '-1152346002.8380362303171', '2.603e-9'); + BigNumber.config({ DECIMAL_PLACES : 45, ROUNDING_MODE : 3 }); + T('-0.576489682551979324775037271601', '5459327', '-1.0559720686303995433412163653157248137e-7'); + BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 2 }); + T('0.00000344431255', '-283415783536.257346006', '0'); + BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 2 }); + T('12276870.853890295703', '-25421.870298715077667', '-482.9255562094'); + BigNumber.config({ DECIMAL_PLACES : 67, ROUNDING_MODE : 5 }); + T('-1.06344616778', '-908115415.12', '1.1710473691711028996236867667808035039095813383267480812456e-9'); + BigNumber.config({ DECIMAL_PLACES : 28, ROUNDING_MODE : 6 }); + T('23.2378944663779563', '-0.0066688655545191427302132980', '-3484.5348547521468539685861979249'); + BigNumber.config({ DECIMAL_PLACES : 74, ROUNDING_MODE : 6 }); + T('-4633127441615.055', '0.000000000000000000330562768231669865040542542505', '-1.401587803248307270887186423812142740668131751793115327680250246636587862964172169120846474218246693691205e+31'); + BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 4 }); + T('-388346637546565.620781165398457', '401421569938655130.99', '-0.001'); + BigNumber.config({ DECIMAL_PLACES : 52, ROUNDING_MODE : 5 }); + T('-0.0000000000020', '100.0680659261421', '-1.99863960744095248390643549023035102721e-14'); + BigNumber.config({ DECIMAL_PLACES : 67, ROUNDING_MODE : 2 }); + T('4332077715.94645857919', '-18136684.20002200638019792766', '-238.8572061006169030996048913019246422521488028407800616438387217410426'); + BigNumber.config({ DECIMAL_PLACES : 2, ROUNDING_MODE : 6 }); + T('-1.033', '149230209.393876280357', '0'); + BigNumber.config({ DECIMAL_PLACES : 49, ROUNDING_MODE : 6 }); + T('483.01441958764904654509', '-34.074616461', '-14.1751975444971405850005232726543058124665299369164'); + BigNumber.config({ DECIMAL_PLACES : 55, ROUNDING_MODE : 1 }); + T('0.0000000000000403', '0.0096466', '4.1776377169158045321667737855824850206290299e-12'); + BigNumber.config({ DECIMAL_PLACES : 24, ROUNDING_MODE : 2 }); + T('-2.418', '-252533196343121', '9.574978795e-15'); + BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 4 }); + T('-184519506518001195547.617786', '7944.825953', '-23225116271845558.395408411787016525470762568887706381199814812356028461886180730534626477046501'); + BigNumber.config({ DECIMAL_PLACES : 5, ROUNDING_MODE : 2 }); + T('-2.6', '18838675108065593678670.65917', '0'); + BigNumber.config({ DECIMAL_PLACES : 6, ROUNDING_MODE : 1 }); + T('-2741783705391098549.43113406124', '0.000259901002941710438610', '-1.0549338688031207307464801041e+22'); + BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 5 }); + T('682.9', '281397927443588576240', '2e-18'); + BigNumber.config({ DECIMAL_PLACES : 6, ROUNDING_MODE : 0 }); + T('-850018004663.26329901717460497', '-2267827508109509.016187085', '0.000375'); + BigNumber.config({ DECIMAL_PLACES : 90, ROUNDING_MODE : 0 }); + T('0.0000000444531854698111342391368331682', '4.344829467704764', '1.0231284288654566289500698235746505516089188728211808317481780953622470478425618084e-8'); + BigNumber.config({ DECIMAL_PLACES : 24, ROUNDING_MODE : 0 }); + T('-1.4712311051264', '0.000000000017313', '-84978403807.913128862704326228845377'); + BigNumber.config({ DECIMAL_PLACES : 67, ROUNDING_MODE : 2 }); + T('0.51697085407', '-1117.24070346677865353580050330', '-0.0004627211060838083923081019471245413295285971182727067902125212404'); + BigNumber.config({ DECIMAL_PLACES : 46, ROUNDING_MODE : 2 }); + T('0.0000000000000000000250264', '4160.2267', '6.0156337153453680781387e-24'); + BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 3 }); + T('3169656920942359', '-0.0033438053832729141674557', '-947919079500943088.70924699289'); + BigNumber.config({ DECIMAL_PLACES : 96, ROUNDING_MODE : 1 }); + T('39', '219292934629915523529759119729', '1.7784430704900464425561021192412728476325490159712828579054247923564e-28'); + BigNumber.config({ DECIMAL_PLACES : 87, ROUNDING_MODE : 2 }); + T('134805.132733741256', '96353.06742654718840121401', '1.39907463596327352679301491137258398946955291434938512429695494829240923996386862656333'); + BigNumber.config({ DECIMAL_PLACES : 77, ROUNDING_MODE : 1 }); + T('-1010315990560397955586700120', '5820.541', '-1.7357767784135494545725219013146716087044142460297075478035460964882817593759755321713222190170982388e+23'); + BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 5 }); + T('-214138675511540759696445678551', '23110893.120537394364820827', '-9.265703164074059939660599846596097069029593680212763791197148166552525577946368777388857952201748274782919e+21'); + BigNumber.config({ DECIMAL_PLACES : 40, ROUNDING_MODE : 0 }); + T('-2.28881', '-0.0119610613466593161348', '191.3550924675473610818148277270442402773776'); + BigNumber.config({ DECIMAL_PLACES : 38, ROUNDING_MODE : 0 }); + T('-0.0161582566012842558193575308452', '-8.23472647543961990370020', '0.00196220926699591798771447904701588328'); + BigNumber.config({ DECIMAL_PLACES : 94, ROUNDING_MODE : 5 }); + T('-179000423547519.2023', '-513.817074', '348373833033.6589832746585606845754604098656324526887948453032528070486034490944144841710729137817635075319'); + BigNumber.config({ DECIMAL_PLACES : 1, ROUNDING_MODE : 5 }); + T('226948030083297747864723826069', '111940411.24367524', '2.0274003602619475687096e+21'); + BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 5 }); + T('556603251322736.618248', '3399677831.62463', '163722.352202046266598735202475258318227942521970482638506688967937552453909908915341059'); + BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 6 }); + T('-0.000000063249491783918312083725', '0.0000000002279936166021383', '-277.4178186501257928732090476304116713303274593662213996987721312414328162894997658'); + BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 2 }); + T('-0.000000000001036022', '4609298841620961439.36555', '0'); + BigNumber.config({ DECIMAL_PLACES : 48, ROUNDING_MODE : 5 }); + T('-99.76442277', '-150.6295233', '0.662316527227567744682625573973385866779809426642'); + BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 5 }); + T('9356790068617', '-10.9549716416570764', '-854113581913.541908584220019292914535890315334066826070885177252273694217'); + BigNumber.config({ DECIMAL_PLACES : 60, ROUNDING_MODE : 2 }); + T('53359751342466.32896', '-2511127.77', '-21249317.529735386168741226576455725309429396338522432094325491052173'); + BigNumber.config({ DECIMAL_PLACES : 100, ROUNDING_MODE : 6 }); + T('-1.2937049565170074827034', '31844.056894911021375', '-0.000040626260679861856889123161868912398713347049981238434464715739281931810450534141335814528867102'); + BigNumber.config({ DECIMAL_PLACES : 32, ROUNDING_MODE : 2 }); + T('-0.00000000000449280401429153396355299', '-0.00000000000044269813', '10.14868532264081161479717567363567'); + BigNumber.config({ DECIMAL_PLACES : 53, ROUNDING_MODE : 3 }); + T('357856299251.255875863839110', '-41.81', '-8559107851.02262319693468332934704616120545324085147093996651519'); + BigNumber.config({ DECIMAL_PLACES : 49, ROUNDING_MODE : 3 }); + T('165.2195393', '-3306', '-0.0499756622202056866303690260133091349062310949789'); + BigNumber.config({ DECIMAL_PLACES : 35, ROUNDING_MODE : 3 }); + T('0.0000000000004460853243656367992315561', '1774106.9664', '2.5144218066559348e-19'); + BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 1 }); + T('-55757052.3958980146175417', '88055591318378830858', '-6.3320286152300798105944625052701644533073133076425193458944567692978853725246750721e-13'); + BigNumber.config({ DECIMAL_PLACES : 22, ROUNDING_MODE : 1 }); + T('-0.00000000000000000017501811482480412', '304243.050989991239479', '0'); + BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 5 }); + T('40.5285753', '8.0', '5.0660719125'); + BigNumber.config({ DECIMAL_PLACES : 36, ROUNDING_MODE : 0 }); + T('343914072241', '-17.29445983972872982947654', '-19885794377.397243002401340809473068975113518371'); + BigNumber.config({ DECIMAL_PLACES : 89, ROUNDING_MODE : 0 }); + T('-20930690196036875509134599645', '-0.0000000000000000123346086295836262', '1.69690752455949008439548907337338602597713354108285134991008814289369090897467648957705439201566775045786379691526479255661937282585766e+45'); + BigNumber.config({ DECIMAL_PLACES : 94, ROUNDING_MODE : 5 }); + T('-3.1249', '8', '-0.3906125'); + BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 2 }); + T('-6401747968.386', '-0.0000000000000000205542332869117827903841838', '3.1145642257852591903963836968051918026316129813344744834582282680135500872934734806400478973820414088979144e+26'); + BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 2 }); + T('-59270232988727537945508164.513', '-1744971.2', '33966310153845254262.9403651550237619967596026799754632053526155618'); + BigNumber.config({ DECIMAL_PLACES : 31, ROUNDING_MODE : 3 }); + T('0', '-1916860348382691.3', '0'); + BigNumber.config({ DECIMAL_PLACES : 86, ROUNDING_MODE : 2 }); + T('0.00000000000359530750316701120586642522', '15933168241950.7994941', '2.2564925246322603057614614761000621705069850864008968471755048e-25'); + BigNumber.config({ DECIMAL_PLACES : 78, ROUNDING_MODE : 6 }); + T('-286654.36656907', '-4.9195037345256', '58268.960049221874337564835121675287798459768123662033157876089818660624923780569193'); + BigNumber.config({ DECIMAL_PLACES : 78, ROUNDING_MODE : 3 }); + T('3967522531561598762', '-2.603298589257357', '-1524036677134839892.498635318772582298767052624610095249311495599985876774458020002005927160414468'); + BigNumber.config({ DECIMAL_PLACES : 53, ROUNDING_MODE : 1 }); + T('1285.2887756282824121', '0.00000000002859924093606470276', '44941359755023.62480204313935956776874801357605356836723534864865307'); + BigNumber.config({ DECIMAL_PLACES : 29, ROUNDING_MODE : 5 }); + T('-525236154.822171572778825', '-22.4', '23448042.62598980235619754464285714286'); + BigNumber.config({ DECIMAL_PLACES : 36, ROUNDING_MODE : 3 }); + T('-0.0006790321081124', '-37401.9', '1.8155016405915207516195701287e-8'); + BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 5 }); + T('-674534675.7886', '75.74167566469', '-8905726.865283246111402727'); + BigNumber.config({ DECIMAL_PLACES : 72, ROUNDING_MODE : 2 }); + T('-2', '616116112.1605491183018635', '-3.24614136933791931945060578786471986907825936137392901089505558e-9'); + BigNumber.config({ DECIMAL_PLACES : 2, ROUNDING_MODE : 5 }); + T('-2491734141496.31813218981475473', '-28413221701601.8197178637', '0.09'); + BigNumber.config({ DECIMAL_PLACES : 9, ROUNDING_MODE : 5 }); + T('-0.000002215891039369097', '-248.5383893034218', '9e-9'); + BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 2 }); + T('-43263395762254640.270560', '5.5', '-7866071956773570.9582'); + BigNumber.config({ DECIMAL_PLACES : 67, ROUNDING_MODE : 0 }); + T('2670851932.7', '0.000000000000000000067581497161355428580573', '3.9520461145203087972642466099835435695433146040211992748405392726712672155711875985311059242282e+28'); + BigNumber.config({ DECIMAL_PLACES : 21, ROUNDING_MODE : 5 }); + T('-30251', '64.59', '-468.354234401610156370955'); + BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 0 }); + T('-10.9', '-16.01856788583404017289157', '0.680460330641628313590394440806331853148322515656735505804471216653727'); + BigNumber.config({ DECIMAL_PLACES : 9, ROUNDING_MODE : 0 }); + T('-1440859822060.4', '0.00000000002310', '-6.2374884071878787878787878787879e+22'); + BigNumber.config({ DECIMAL_PLACES : 23, ROUNDING_MODE : 3 }); + T('-0.0000068536779319811155121801496', '2109618699981048', '-3.25e-21'); + BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 5 }); + T('-0.0000000000000003024503216376523', '-172121734.50504768238966356', '1.757188437052280407219407663806098e-24'); + BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 2 }); + T('-62776449.44174200', '0.000000000076815783306459991438658086918', '-817233734261259262.239270651053433855593374339919643384216403627421848938502260263157818313916'); + BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 6 }); + T('0.3182941364219034896875', '-1166370.2', '-2.7289289148669e-7'); + BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 3 }); + T('-0.0000196301560737', '3.8618108426775101', '-0.00000508314800320199522813287909164458508020625832554720190545073'); + BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 3 }); + T('4960786698', '-49940646.8534064974425840165', '-99.33364925291551720975367361333950760050129314565632011714845156519'); + BigNumber.config({ DECIMAL_PLACES : 99, ROUNDING_MODE : 0 }); + T('434429870.9218843047071635', '157.49995', '2758285.770388398883346715348163602591619870355514398575999547936364424242674362753765953576493198886729806'); + BigNumber.config({ DECIMAL_PLACES : 7, ROUNDING_MODE : 3 }); + T('257045.6411120298008987345', '-0.000000000029005991404382415113743', '-8861811945279472.9262243'); + BigNumber.config({ DECIMAL_PLACES : 48, ROUNDING_MODE : 3 }); + T('-12237.76553742096579866570204', '1168.658674994713016767363726', '-10.471633676510662234490086039663251446847408070052'); + BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 4 }); + T('-0.617857977787326595470565960803', '0.0001000334366187952019963329124333', '-6176.51456024492671160985799354725620484043082324296'); + BigNumber.config({ DECIMAL_PLACES : 72, ROUNDING_MODE : 5 }); + T('-1700.567', '-551439.92', '0.003083866325818413726739261096657637698772334074036569568630432123956496'); + BigNumber.config({ DECIMAL_PLACES : 9, ROUNDING_MODE : 5 }); + T('-164.3', '-9', '18.255555556'); + BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 3 }); + T('-0.000000000000000034044058622', '220768334120836848545819009.7', '-1.542071636205131317651186500274991513e-43'); + BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 3 }); + T('2', '-0.000000000016652759804630464', '-120100213026'); + BigNumber.config({ DECIMAL_PLACES : 93, ROUNDING_MODE : 2 }); + T('-0.000000002541892', '-9045137640110758211.42226', '2.81023031504568060023693859241363201800114987035634458167242259869e-28'); + BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 0 }); + T('-122704155075.94535066173086314', '297930944.5700352', '-411.85434850692741315153485298486551223024886855233016737260686347412'); + BigNumber.config({ DECIMAL_PLACES : 92, ROUNDING_MODE : 0 }); + T('-0.000000078354399312162277905', '227793.9800316789', '-3.439704565558127225698153407872459000046222286398594593287353606705099291160152e-13'); + BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 6 }); + T('13026606.4', '82714.884182636809176406303', '157.4880570616152199992784118588164179365063681591'); + BigNumber.config({ DECIMAL_PLACES : 100, ROUNDING_MODE : 5 }); + T('-1285910115249173', '1617.307272371111698558', '-795093262249.3671622683559000592943810834076119341107228166013329322926295571433128608008075796230056665620344393'); + BigNumber.config({ DECIMAL_PLACES : 66, ROUNDING_MODE : 3 }); + T('331.6', '-28353.5364332930309060087', '-0.011695190149565670153895216856810268914825899885062520249777120581'); + BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 1 }); + T('-105.9185366619230190858937495507', '-59433131284249066.41118418', '1e-15'); + BigNumber.config({ DECIMAL_PLACES : 48, ROUNDING_MODE : 2 }); + T('-0.00000000000073014656012387866406506', '-41.684601938810999358984', '1.751597775110492449719062255076518e-14'); + BigNumber.config({ DECIMAL_PLACES : 5, ROUNDING_MODE : 6 }); + T('0.0000000000000000022300089630621', '-419.1360828229', '0'); + BigNumber.config({ DECIMAL_PLACES : 71, ROUNDING_MODE : 5 }); + T('1130760492380.9356450677', '-229824210.05546399356665486097', '-4920.11042747866585496276384081135570263713611480062010574772859033361792653'); + BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 0 }); + T('-6.2611', '9157537', '-6.83710041247990589609411351545726760372357763883455e-7'); + BigNumber.config({ DECIMAL_PLACES : 88, ROUNDING_MODE : 4 }); + T('-19.04877', '200438675451598.0641778', '-9.5035401511620432778216303144836011206859589559490268245486790460075227481e-14'); + BigNumber.config({ DECIMAL_PLACES : 45, ROUNDING_MODE : 2 }); + T('0.0000000134636658966203491923', '457.245', '2.9445189989218797783026604992946889e-11'); + BigNumber.config({ DECIMAL_PLACES : 96, ROUNDING_MODE : 4 }); + T('3952117806001695548132', '105103967647.0759963457', '37601984915.282538236635442731746402464993193389008265715020195723349787877331156219110117874945153473094823'); + BigNumber.config({ DECIMAL_PLACES : 58, ROUNDING_MODE : 4 }); + T('-555.10', '-0.000000000000000538447959', '1030925998922766833.2567679024297313753955561005292992483977453427397985549798'); + BigNumber.config({ DECIMAL_PLACES : 43, ROUNDING_MODE : 3 }); + T('-0.00000000000000002066326455046243', '-397327.6', '5.20056108623272835816e-23'); + BigNumber.config({ DECIMAL_PLACES : 27, ROUNDING_MODE : 2 }); + T('-1775.59', '10.507470', '-168.9835897699446203510454943'); + BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 0 }); + T('159489624838596149.7403499', '3176277939036815595', '0.0502127420520889'); + BigNumber.config({ DECIMAL_PLACES : 91, ROUNDING_MODE : 6 }); + T('0.000036052516423310979994119280567', '-358332155519058774683271', '-1.006120044434400151705042743428452514742291605495317647674204486e-28'); + BigNumber.config({ DECIMAL_PLACES : 87, ROUNDING_MODE : 6 }); + T('46758', '-0.000000005103526281844419083580283411', '-9161900501294.49237862035133479136014813799931538266394606991141604284156389978703764576062167309479'); + BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 6 }); + T('-0.000000000000000001097284289107548509079464', '-161.15853', '0'); + BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 2 }); + T('22277707083244.2519652', '-0.000000634651864129688541271613', '-35102247928939971782.61068893072514165936361175429836333320824549127627620588515332608195'); + BigNumber.config({ DECIMAL_PLACES : 55, ROUNDING_MODE : 4 }); + T('8435.925', '256954063266056432.856652', '3.28304790855369344579195264342821100926493e-14'); + BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 2 }); + T('-158618479554019427.7963038', '15884869.8362750', '-9985507038.3891443654601'); + BigNumber.config({ DECIMAL_PLACES : 19, ROUNDING_MODE : 6 }); + T('8263779425.6987122562225390', '529225363240624053', '1.5614858999e-8'); + BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 0 }); + T('-30.102314488', '-2903263.197983', '0.000010368441451989'); + BigNumber.config({ DECIMAL_PLACES : 52, ROUNDING_MODE : 2 }); + T('0.017525494377364', '-8', '-0.0021906867971705'); + BigNumber.config({ DECIMAL_PLACES : 21, ROUNDING_MODE : 0 }); + T('19.79023', '-2827056513675068250', '-7.001e-18'); + BigNumber.config({ DECIMAL_PLACES : 53, ROUNDING_MODE : 6 }); + T('-0.00000000000000227368298735978', '0.000000927130760915485605', '-2.45238652756452114275525189681918961497198801e-9'); + BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 2 }); + T('17662001639199304074239945', '8.80894832', '2.0050068404986742020345903221282605959e+24'); + BigNumber.config({ DECIMAL_PLACES : 7, ROUNDING_MODE : 5 }); + T('7', '1.181856080838791289', '5.922887'); + BigNumber.config({ DECIMAL_PLACES : 21, ROUNDING_MODE : 0 }); + T('22.441720084515', '-1381983133.2014379', '-1.6238780015012e-8'); + BigNumber.config({ DECIMAL_PLACES : 42, ROUNDING_MODE : 0 }); + T('0.0000000864273040060855342975053506395', '879056.4149', '9.8318267793901897726206275865e-14'); + BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 1 }); + T('0.0000000000000001344423906812106089491', '0.0000000002227485960538881686', '6.03561113e-7'); + BigNumber.config({ DECIMAL_PLACES : 90, ROUNDING_MODE : 4 }); + T('1411.393', '-1271776.5', '-0.001109780688666601403627131024987487974498663876868301938272959124500256137772635364783042'); + BigNumber.config({ DECIMAL_PLACES : 32, ROUNDING_MODE : 1 }); + T('-155277765869632648881792.431913', '-1', '1.55277765869632648881792431913e+23'); + BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 0 }); + T('-152686469974611487615994311687', '-1933.794345', '7.895693271075911002107843669746588280565068e+25'); + BigNumber.config({ DECIMAL_PLACES : 59, ROUNDING_MODE : 4 }); + T('758726', '14635', '51.84325247693884523402801503245644004099760847283908438674411'); + BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 4 }); + T('-3.0192872066759212', '6136438.214992262', '-4.9e-7'); + BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 2 }); + T('0.0000000000000000000504744446657', '-29.75477709062572163044393565', '-1.696347598638271587024025181442e-21'); + BigNumber.config({ DECIMAL_PLACES : 43, ROUNDING_MODE : 1 }); + T('-1288750759514799390.105312', '5', '-257750151902959878.0210624'); + BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 0 }); + T('439817986945.4458085', '-2407', '-182724547.962378815330286663896967179061071873701703365184877440797673452430411300374'); + BigNumber.config({ DECIMAL_PLACES : 74, ROUNDING_MODE : 0 }); + T('-0.000000000000000000685343541036523881', '0.150414815775863514565983011', '-4.5563566162110628738965304458260327549194937340930838731e-18'); + BigNumber.config({ DECIMAL_PLACES : 29, ROUNDING_MODE : 5 }); + T('-297981142584715048.58464547696', '140960611730478162479362', '-0.00000211393196245817856906'); + BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 3 }); + T('-3612.15791360', '28.5', '-126.742382933333333333333333333333333333333333333333333333333333333333333333334'); + BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 5 }); + T('-0.01222472', '5', '0'); + BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 0 }); + T('7536867975772246', '-0.00000000000000114381534851634', '-6.589234866928853684878125702812328913259067484491e+30'); + BigNumber.config({ DECIMAL_PLACES : 37, ROUNDING_MODE : 1 }); + T('325.4476805', '74513.6119692044311954954', '0.0043676272280895947550504036961048974'); + BigNumber.config({ DECIMAL_PLACES : 92, ROUNDING_MODE : 6 }); + T('235.005', '342491671689116749', '6.8616267029499181999423386276736744860589500446065169360201815384769794878163e-16'); + BigNumber.config({ DECIMAL_PLACES : 100, ROUNDING_MODE : 1 }); + T('0.00000000000000000217276284142833543', '-79911278782135', '-2.71896892972019267609882426457309422367294575576129030645265373133756e-32'); + BigNumber.config({ DECIMAL_PLACES : 88, ROUNDING_MODE : 4 }); + T('-0.000000001945777094292394', '0.064410386141132194563', '-3.02090580551546972718801107566976993411551848363338412612882804877260800482475969e-8'); + BigNumber.config({ DECIMAL_PLACES : 55, ROUNDING_MODE : 4 }); + T('-192.89072453322062982', '-334338882933096761058.872337286', '5.769317730591904683898446209699667225e-19'); + BigNumber.config({ DECIMAL_PLACES : 48, ROUNDING_MODE : 1 }); + T('531.7', '0.0000000001088942', '4882721026464.21939827832887334678981984348110367677984686053'); + BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 2 }); + T('1170194087', '1908311.7851705051264004435508', '613.20906577928234653196650443134207034891718661419179868075798779120233331273647204376813041396405'); + BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 5 }); + T('0.00000000000000395459875', '-0.167', '-2.3680232035928143712574850299401197604790419e-14'); + BigNumber.config({ DECIMAL_PLACES : 50, ROUNDING_MODE : 1 }); + T('0.000003889986089150080', '887.03227284813628', '4.38539409243801241101366379951623694240025e-9'); + BigNumber.config({ DECIMAL_PLACES : 53, ROUNDING_MODE : 4 }); + T('0.0000000000000560044015241818176716657397', '176547271136065.503677462929', '3.1722043146744001433625334e-28'); + BigNumber.config({ DECIMAL_PLACES : 48, ROUNDING_MODE : 4 }); + T('66952.0131463229', '3777.04679928', '17.726021599490277841310571011654822791285369408112'); + BigNumber.config({ DECIMAL_PLACES : 96, ROUNDING_MODE : 6 }); + T('0.0000062074425828486761101', '950092578565480052', '6.533513389001660656215172227181728690216460407720924304900769914841550077e-24'); + BigNumber.config({ DECIMAL_PLACES : 2, ROUNDING_MODE : 1 }); + T('-5302963245', '48600562889', '-0.1'); + BigNumber.config({ DECIMAL_PLACES : 58, ROUNDING_MODE : 6 }); + T('98828421.68031429338289345112', '1.57717162', '62661805.7458542738569525180271757616333471686486471269372701494591'); + BigNumber.config({ DECIMAL_PLACES : 25, ROUNDING_MODE : 4 }); + T('-22117311927.3540903162740', '-0.000000000000000116033960992561', '1.906106775823333579624070391760766140219141009217898e+26'); + BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 4 }); + T('1631.55664890810', '0.58', '2813.028705013965517241379310344827586206896551724137931034482758620689655172414'); + BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 6 }); + T('38924.47442500084940314073618', '-248176004575545850537.387772064', '0'); + BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 5 }); + T('-1.7', '-49465', '0.00003436773'); + BigNumber.config({ DECIMAL_PLACES : 23, ROUNDING_MODE : 2 }); + T('-35869043124810001695165403', '-0.000000000000000000294761423155287080103', '1.216883903627828763511390880008878233917053875596703451124430601838e+44'); + BigNumber.config({ DECIMAL_PLACES : 55, ROUNDING_MODE : 2 }); + T('38369826032107.3366', '-0.000000148589149580774368496', '-258227644080089183909.2257764243564993353523357572867146099830505925874631318'); + BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 6 }); + T('504879645444545886653820', '-0.0000000000655042437033101618837230', '-7.70758682034874828339733688726527971016278336825669005531564758824777324938304919355876842577550332162114596886482492042805561365e+33'); + BigNumber.config({ DECIMAL_PLACES : 77, ROUNDING_MODE : 5 }); + T('36.77626', '373337972354453.09678819426', '9.850661524749490301351472673809888625949320411140152909393418231e-14'); + BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 0 }); + T('743.0', '0.000000000003863741140306753299573774', '192300667415056.46927480046001044'); + BigNumber.config({ DECIMAL_PLACES : 73, ROUNDING_MODE : 5 }); + T('-1.8', '40881', '-0.0000440302340940779335143465179423203933367579070962060614955602847288471'); + BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 4 }); + T('-0.00000076973840830008', '12659447038097991.1750917', '-6.080347790733589194468242112049861504078992e-23'); + BigNumber.config({ DECIMAL_PLACES : 52, ROUNDING_MODE : 6 }); + T('163373374216.57858619780', '14434433023287908624.8', '1.13183090706090664437052047265425181009950836e-8'); + BigNumber.config({ DECIMAL_PLACES : 26, ROUNDING_MODE : 4 }); + T('-0.0000000000003358622556795248989092', '-25122710746307732252', '0'); + BigNumber.config({ DECIMAL_PLACES : 32, ROUNDING_MODE : 5 }); + T('-0.000000142077636052', '-8197817443.0', '1.733115393699308e-17'); + BigNumber.config({ DECIMAL_PLACES : 64, ROUNDING_MODE : 6 }); + T('-186.2345348677', '1350048231963.03111424433134052', '-1.379465788395623270691451262396792731080110034909682107e-10'); + BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 1 }); + T('39.448', '-4940066138770334.89', '-7.9853181904603542759566033849464102633606642198925134507667121e-15'); + BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 4 }); + T('-5102.02', '-2230117688975780358.4836323519', '2.3e-15'); + BigNumber.config({ DECIMAL_PLACES : 27, ROUNDING_MODE : 0 }); + T('-0.0000000000000000001012697436141962154', '-13388043549631439', '1e-27'); + BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 0 }); + T('106760734619617567333', '0.00028100235731097821648761', '3.799282527066780329996423436016902152808e+23'); + BigNumber.config({ DECIMAL_PLACES : 1, ROUNDING_MODE : 6 }); + T('23.7', '-0.0000000049170', '-4820012202.6'); + BigNumber.config({ DECIMAL_PLACES : 87, ROUNDING_MODE : 6 }); + T('1.0', '1279292333.18013773', '7.81682164477717970744296838656904509907798355232108387059921801345669686529795e-10'); + BigNumber.config({ DECIMAL_PLACES : 55, ROUNDING_MODE : 6 }); + T('597145249532385642.51', '862329.1435747784096027606207', '692479494612.6080072815557484172016013671196692425240831772477297841'); + BigNumber.config({ DECIMAL_PLACES : 63, ROUNDING_MODE : 1 }); + T('4112111934612991443958', '10887.997707', '377673842819536464.837905388805754641035579711111708080377170123516816056581485832'); + BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 3 }); + T('-1469277', '0.000000000000000267227074', '-5.4982340599216380298352553903277030979278693894616381572175579784254944167820360896516046873304461657953115933155785e+21'); + BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 1 }); + T('-2801233344017', '-219534.01153', '12759905.96853008'); + BigNumber.config({ DECIMAL_PLACES : 53, ROUNDING_MODE : 1 }); + T('-87.770012652947444054739333', '-1546591879469182.2196063', '5.675059711491028263467484661270226724199e-14'); + BigNumber.config({ DECIMAL_PLACES : 29, ROUNDING_MODE : 2 }); + T('217767204358757.914155177', '3.0', '72589068119585.971385059'); + BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 2 }); + T('27421361743819677932126.9024813', '-175867.30094046307966067', '-155920751596129398.148630935136929046113850742976778700859018743825821'); + BigNumber.config({ DECIMAL_PLACES : 37, ROUNDING_MODE : 4 }); + T('4.454340437984504303453423', '-441173094358179511112016', '-1.00965822597697e-23'); + BigNumber.config({ DECIMAL_PLACES : 31, ROUNDING_MODE : 4 }); + T('19728713.62', '2478819.33120125077', '7.9589155093603964335778685317333'); + BigNumber.config({ DECIMAL_PLACES : 38, ROUNDING_MODE : 1 }); + T('-1120416668960295880.350225688934', '38555924.0', '-29059520631.90849427834295162875619321170982700349'); + BigNumber.config({ DECIMAL_PLACES : 85, ROUNDING_MODE : 3 }); + T('-38743746841.2910335460252', '26858385765897939', '-0.0000014425195608919998313993014674161354104614344377991575109970896012905928399344639'); + BigNumber.config({ DECIMAL_PLACES : 92, ROUNDING_MODE : 0 }); + T('15', '285026249585564801389', '5.262673182491216179599354884524479018951326176134286918303336507405554389e-20'); + BigNumber.config({ DECIMAL_PLACES : 92, ROUNDING_MODE : 2 }); + T('-4.2', '-458.33060', '0.00916369101255731125087436885078151011518759602784540242349081645432358214790808207001670847'); + BigNumber.config({ DECIMAL_PLACES : 86, ROUNDING_MODE : 0 }); + T('-1.6', '-50437548861791', '3.172239801708685145552089878150280259837211447999607534786786680997266549e-14'); + BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 3 }); + T('-8.026', '-149937.06210387328634074', '0.000053529126737455704519743771206938187495268193696700988193976327724966217'); + BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 0 }); + T('561831.58', '-171.7371143376721672238815790', '-3271.462794555393'); + BigNumber.config({ DECIMAL_PLACES : 67, ROUNDING_MODE : 5 }); + T('498543482.202883430', '0.0000000000000000002018825187426992473911723', '2.4694732625080864925739696523432984202460157979090892828512008635943874044826603643324923000564e+27'); + BigNumber.config({ DECIMAL_PLACES : 56, ROUNDING_MODE : 5 }); + T('-1573662164485796782591', '0.0000000000000012717', '-1.23744764054871178940866556577809231737044900526853817724306047023669104348509868679720059763e+36'); + BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 2 }); + T('-8.755', '0.00000000000178', '-4918539325842.696629213483146067415730337078651685393258426966292134'); + BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 5 }); + T('-130.72832', '-5.732694', '22.803994073292591580851864760268034540130695969469153595150901129556191'); + BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 1 }); + T('0.00000001382571888', '-2.1', '-6.583675657142857142857142857142857142857142857142e-9'); + BigNumber.config({ DECIMAL_PLACES : 91, ROUNDING_MODE : 1 }); + T('0.00000000000000117973743502524272807', '616457987975752652412292723', '1.9137353364486627983539871950537570451010962116434e-42'); + BigNumber.config({ DECIMAL_PLACES : 48, ROUNDING_MODE : 3 }); + T('-4.989', '-983417176.219033559', '5.073126767198964388356632047378424801286e-9'); + BigNumber.config({ DECIMAL_PLACES : 89, ROUNDING_MODE : 3 }); + T('1332207.5', '7022394593146857662165215.6', '1.8970843667772513370874478944195723674667926480514644114408178277993533e-19'); + BigNumber.config({ DECIMAL_PLACES : 30, ROUNDING_MODE : 2 }); + T('4575507719802.39', '-0.0000000000041064303129709269964750071922', '-1.114229968873401897618592082481401867013344062753280408e+24'); + BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 2 }); + T('149810634239754073748.905583612', '788.0', '190115018070753900.69658069'); + BigNumber.config({ DECIMAL_PLACES : 71, ROUNDING_MODE : 2 }); + T('0', '2020', '0'); + BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 0 }); + T('2023025', '809029355333.449', '0.000002500558214190128322397542547791559225908993583651'); + BigNumber.config({ DECIMAL_PLACES : 29, ROUNDING_MODE : 4 }); + T('270046217678654471111180.3', '25440455374', '10614834275122.29841075722483645822809240726'); + BigNumber.config({ DECIMAL_PLACES : 93, ROUNDING_MODE : 1 }); + T('-0.00000030939', '1161284757366711658.286050869', '-2.66420443424713373199316316676927976387246206522913702255534422176284e-25'); + BigNumber.config({ DECIMAL_PLACES : 19, ROUNDING_MODE : 4 }); + T('343.67011844890596207778', '399', '0.8613286176664309827'); + BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 4 }); + T('-122295994', '0.000000000472961570529772', '-258574906758310732.3008002674034180847656531468244458024370134308192069827746196764390903573275736191797922791483525'); + BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 5 }); + T('-42003654.2804947407997', '60077.942232', '-699'); + BigNumber.config({ DECIMAL_PLACES : 29, ROUNDING_MODE : 5 }); + T('0.0000000000000033763310745', '1.4059', '2.40154425954904e-15'); + BigNumber.config({ DECIMAL_PLACES : 32, ROUNDING_MODE : 3 }); + T('-1.91058737', '-313.1567413782311', '0.00610105776931811347706950267962'); + BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 4 }); + T('-0.0000000000000000002878187632313', '0.5606618799', '0'); + BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 5 }); + T('0.0000000008278370435046068492319062071', '-0.000000880731236552972862445603389339', '-0.00093994286695747890058381231279310103363840897673733064301301511'); + BigNumber.config({ DECIMAL_PLACES : 63, ROUNDING_MODE : 0 }); + T('1324.249659895494', '68.98', '19.197588574883937373151638155987242679037402145549434618730066686'); + BigNumber.config({ DECIMAL_PLACES : 71, ROUNDING_MODE : 2 }); + T('0.0000506866917672316080', '34045600152707123076.514', '1.48878831742965396924694051950785690106414308555e-24'); + BigNumber.config({ DECIMAL_PLACES : 1, ROUNDING_MODE : 3 }); + T('-58286144583364.7624865', '78910342.026185396114169682', '-738637.6'); + BigNumber.config({ DECIMAL_PLACES : 52, ROUNDING_MODE : 0 }); + T('29036909800547801473341.853', '-401697350838892483423640302.35', '-0.0000722855396977550525555470543751203687329457517323'); + BigNumber.config({ DECIMAL_PLACES : 28, ROUNDING_MODE : 1 }); + T('-197.12480598', '14.24', '-13.8430341278089887640449438202'); + BigNumber.config({ DECIMAL_PLACES : 64, ROUNDING_MODE : 0 }); + T('3217.784', '-313770600087962922083208.5', '-1.02552119258398383800794584022506253132439496e-20'); + BigNumber.config({ DECIMAL_PLACES : 90, ROUNDING_MODE : 3 }); + T('179578022483525808217.1316', '-172287187.34609198399320350', '-1042317918411.355406728415577931041850948374861408892749402437587315539028106051384979284470940339961497'); + BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 6 }); + T('362284144974', '0.000000000000000101112141394033338', '3.582993495926281620007214082634348044701971116e+27'); + BigNumber.config({ DECIMAL_PLACES : 71, ROUNDING_MODE : 0 }); + T('-0.00000130075283328887201', '-57041022947403161774214774.001', '2.28038132220784414222844833755234690488e-32'); + BigNumber.config({ DECIMAL_PLACES : 92, ROUNDING_MODE : 6 }); + T('-0.00000043703', '142531697127734679769529674.807', '-3.06619516084440181062784091283950942979717606469995903981861e-33'); + BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 6 }); + T('-0.0000000000000014831859180403', '-3', '4.9439530601343333333333333333333333333333333333333e-16'); + BigNumber.config({ DECIMAL_PLACES : 24, ROUNDING_MODE : 6 }); + T('-0.0000514396769744008569', '-496256142383.40032', '1.03655497e-16'); + BigNumber.config({ DECIMAL_PLACES : 24, ROUNDING_MODE : 5 }); + T('124606777.99164957816372803', '-6874807226141.076', '-0.000018125130478981165436'); + BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 4 }); + T('4.0287', '142.27074604365076083956570', '0.02831713555'); + BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 2 }); + T('-5.4555', '0.031534939666219313459', '-172.99858689262'); + BigNumber.config({ DECIMAL_PLACES : 67, ROUNDING_MODE : 2 }); + T('-0.0000000000001977206609', '0.00000000000002948016823586864811439', '-6.7069040894899784621012000948675753193250795429905038168295424558941'); + BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 2 }); + T('-264583289.26', '42103887343.2274512581610', '-0.006284058455295080780351067255229403202650473692031'); + BigNumber.config({ DECIMAL_PLACES : 49, ROUNDING_MODE : 3 }); + T('68569.34654', '0.0000009147865', '74956666435.2829867952795543003750055340781701522705024615033'); + BigNumber.config({ DECIMAL_PLACES : 7, ROUNDING_MODE : 6 }); + T('-528.092', '-0.000000000000000000125934369482525440823101890', '4.1933905904319285294420792769e+21'); + BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 2 }); + T('-311464845196635906.8534656', '-3', '103821615065545302.2844885333334'); + BigNumber.config({ DECIMAL_PLACES : 39, ROUNDING_MODE : 3 }); + T('-20.58', '23209.710350851686266', '-0.00088669783848658893879169353682363382'); + BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 2 }); + T('-31059942.6', '145937792210.4', '-0.00021283001564954857414407763549064840923979153'); + BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 3 }); + T('-2135283474988916964055301655', '0.000000959304232728583487099', '-2.22586683362738166737604285328971401078789622426237484217080281616869456824358411923531392778594182e+33'); + BigNumber.config({ DECIMAL_PLACES : 5, ROUNDING_MODE : 6 }); + T('-0.0000000000202466646687769', '1899.8182002211122701', '0'); + BigNumber.config({ DECIMAL_PLACES : 49, ROUNDING_MODE : 0 }); + T('-0.0000000505666', '-246613339258.85', '2.050440586546064542650514103517e-19'); + BigNumber.config({ DECIMAL_PLACES : 60, ROUNDING_MODE : 4 }); + T('67.455969518524277', '2534684.28', '0.000026613164428717045974656851542867500641933992662786388528'); + BigNumber.config({ DECIMAL_PLACES : 43, ROUNDING_MODE : 0 }); + T('-3648288330493924570343774970', '-207495.1591764992289', '1.75825226235308115558193901526476978211787005652587261620298365776e+22'); + BigNumber.config({ DECIMAL_PLACES : 89, ROUNDING_MODE : 1 }); + T('17.551331623430330226', '188465.369675', '0.00009312762155560359567156113928652977609691465987357393275439157944601314989567724678594'); + BigNumber.config({ DECIMAL_PLACES : 41, ROUNDING_MODE : 0 }); + T('0.000000020846722863573693262', '-20892853', '-9.9779206140844877729240713e-16'); + BigNumber.config({ DECIMAL_PLACES : 28, ROUNDING_MODE : 5 }); + T('-0.43446572', '0.00000000007962205', '-5456600527.1152902996092162912158127051'); + BigNumber.config({ DECIMAL_PLACES : 94, ROUNDING_MODE : 1 }); + T('-10.50', '-0.00000000000000000094479855715193131038928500611', '11113480138720739387.7707469412891215469747989806676776721515227540795555586299113786558333471180181810564303868092'); + BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 4 }); + T('1717147608160081', '-23.792', '-72173319105585.11264290517821116342'); + BigNumber.config({ DECIMAL_PLACES : 48, ROUNDING_MODE : 4 }); + T('-1141498.2', '3971811270', '-0.000287399909613530050736776322204252167298976419'); + BigNumber.config({ DECIMAL_PLACES : 72, ROUNDING_MODE : 1 }); + T('1378.889588', '-98690837614052218259080', '-1.3971809555334699911941342306296379042116241440981401e-20'); + BigNumber.config({ DECIMAL_PLACES : 67, ROUNDING_MODE : 5 }); + T('68850', '-162944125.01438491229237023858', '-0.0004225374802185831210963669732667209689539038194093814050306540589'); + BigNumber.config({ DECIMAL_PLACES : 28, ROUNDING_MODE : 5 }); + T('0.0000000000000072', '-857292014', '-8.3985e-24'); + BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 3 }); + T('-772283703581214.910284313805', '-200294654', '3855737.9748'); + BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 4 }); + T('-44166299114510.2130932', '-23.0969', '1912217618576.96111136992410236871614805450082045642488818846'); + BigNumber.config({ DECIMAL_PLACES : 26, ROUNDING_MODE : 0 }); + T('0.0000000000000000000545766837772511648200245', '-0.00000000000000000027772664176901089098696', '-0.19651223746349603529169661'); + BigNumber.config({ DECIMAL_PLACES : 83, ROUNDING_MODE : 3 }); + T('-83817.53770754852873213', '117071840981.59231820166152851', '-7.1594959987626316690706180214222462003215322671048196026166935348927411932497e-7'); + BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 6 }); + T('-2.1737756225', '0.0000000000000637', '-34125206004709.57613814756671899529042386185243328100470957614'); + BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 5 }); + T('-16302254329273.597977755', '0.00000000000209097618512853240461589', '-7.7964801537285311721788969888105365429241174122552680570119e+24'); + BigNumber.config({ DECIMAL_PLACES : 90, ROUNDING_MODE : 5 }); + T('616.42204378399664939', '-1929', '-0.319555232651112830165889061689994815966822187662001036806635562467599792638672887506480041'); + BigNumber.config({ DECIMAL_PLACES : 60, ROUNDING_MODE : 1 }); + T('-403164085027123.051770367589', '0.0000000000003676264645331271', '-1.096667742729369337310582813131448517061570772281682780945568912782496495350548845889392e+27'); + BigNumber.config({ DECIMAL_PLACES : 38, ROUNDING_MODE : 2 }); + T('25.384878', '-0.00000000000000000641206764727775', '-3958922362707320532.07205374984357008780337161157723099967'); + BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 6 }); + T('-21801.93921883534110401563753', '4.44054734', '-4909.741423640658925'); + BigNumber.config({ DECIMAL_PLACES : 46, ROUNDING_MODE : 5 }); + T('-0.00000000024674274151002574', '0.4455045966025422799158726', '-5.538500464231073169371052615661215257e-10'); + BigNumber.config({ DECIMAL_PLACES : 53, ROUNDING_MODE : 6 }); + T('-6002483.370042742', '-5996990081.0625363', '0.00100091600768151219096018822465890558159258414202434'); + BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 5 }); + T('-53769698495425729825076', '225204522003660778121526', '-0.23875940863457299763118464040945229796195576137308791494722967469'); + BigNumber.config({ DECIMAL_PLACES : 19, ROUNDING_MODE : 3 }); + T('6356.1', '-0.00573345', '-1108599.5343118017947309212'); + BigNumber.config({ DECIMAL_PLACES : 48, ROUNDING_MODE : 6 }); + T('-129723.5406013140977863527878', '-451371512', '0.000287398599939364577767931414776571012306155467'); + BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 4 }); + T('48743885824779243079.1456440', '3601631418.0153094243302411', '13533835133.9792893416680067539286874712504308991771184819'); + BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 0 }); + T('78056881416067084323940741.027', '9.11683376680', '8.561841030854396681916775851133422905837072567209770702561714717783813129336919127996576514259406623537691332e+24'); + BigNumber.config({ DECIMAL_PLACES : 70, ROUNDING_MODE : 3 }); + T('0', '-1820471614796783779972354', '0'); + BigNumber.config({ DECIMAL_PLACES : 29, ROUNDING_MODE : 5 }); + T('-36694668.43388024741040778', '-257464458926266337808.85', '1.4252323830214176e-13'); + BigNumber.config({ DECIMAL_PLACES : 21, ROUNDING_MODE : 4 }); + T('-5954069341347.3962', '9.321320703600117351225', '-638758125664.294759063489088884443'); + BigNumber.config({ DECIMAL_PLACES : 52, ROUNDING_MODE : 3 }); + T('2011.94', '-418.99536726455978645', '-4.8018192018090542213510612911452364444253030853395678'); + BigNumber.config({ DECIMAL_PLACES : 83, ROUNDING_MODE : 5 }); + T('-0.0000000000001898123850490243104322', '3639.666428793560713086', '-5.215103877306178645096249304317762354281760319437790004953610055678e-17'); + BigNumber.config({ DECIMAL_PLACES : 43, ROUNDING_MODE : 4 }); + T('-0.00000000000000000029503687721065987769', '14649759459802649182', '-2.01394e-38'); + BigNumber.config({ DECIMAL_PLACES : 2, ROUNDING_MODE : 3 }); + T('0.000000000000134426715319514646459907', '199.6', '0'); + BigNumber.config({ DECIMAL_PLACES : 83, ROUNDING_MODE : 5 }); + T('-0.0000000000001398996670272781802', '-6.9293322387574', '2.018948755910217943900181183560966783531346063039409208344261738312692e-14'); + BigNumber.config({ DECIMAL_PLACES : 64, ROUNDING_MODE : 5 }); + T('0.0000000000000130179069', '165.633', '7.8594886888482367644128887359403017514625708645e-17'); + BigNumber.config({ DECIMAL_PLACES : 88, ROUNDING_MODE : 5 }); + T('0', '0.000000000000344409200387463', '0'); + BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 2 }); + T('11233155411010241522566.1234', '-1185238162646.401378534787', '-9477551234.0311730021348245152688760415135368'); + BigNumber.config({ DECIMAL_PLACES : 25, ROUNDING_MODE : 3 }); + T('1607.806178595786832002572046', '81678425098925663307', '1.96845883e-17'); + BigNumber.config({ DECIMAL_PLACES : 74, ROUNDING_MODE : 0 }); + T('-2.28', '43439864.0595907635669862', '-5.248635209521600255931723062834114760379154045021137331630848661939e-8'); + BigNumber.config({ DECIMAL_PLACES : 88, ROUNDING_MODE : 6 }); + T('0.0000015905036957290081176524782630', '-5393849809.70', '-2.948735600440217273431432050205608082191239660167210309856618549962366409e-16'); + BigNumber.config({ DECIMAL_PLACES : 41, ROUNDING_MODE : 3 }); + T('-283183278838066521', '-34.359', '8241895248350258.1856282196804330743036758927791844931459'); + BigNumber.config({ DECIMAL_PLACES : 56, ROUNDING_MODE : 3 }); + T('-47979841', '-0.0000574301851987706', '835446391717.83652534656824028944749066579445307142293005536063202892'); + BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 5 }); + T('4.022', '-32.359458663', '-0.124'); + BigNumber.config({ DECIMAL_PLACES : 85, ROUNDING_MODE : 6 }); + T('-18266258241.5', '-181823071.895293149780143', '100.4617183677274471413567067213913250422255253290544133838475593806402907232112362916248'); + BigNumber.config({ DECIMAL_PLACES : 89, ROUNDING_MODE : 6 }); + T('-4.294441', '21734.95878115474436853992', '-0.00019758220124730519805411626206325106564714958801319453077996747414734898894280042955969'); + BigNumber.config({ DECIMAL_PLACES : 73, ROUNDING_MODE : 1 }); + T('-12379.8035452530841121266264816', '138011169506', '-8.9701461045258915408691417466380150450081644278070624815128287505e-8'); + BigNumber.config({ DECIMAL_PLACES : 71, ROUNDING_MODE : 1 }); + T('-592.65589', '24019384020037.9', '-2.467406697463946258442231127491047101393072665268840751311919e-11'); + BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 1 }); + T('-575677756154979112.503', '-20.15814383824', '28558073638849544.10104929569834078336594902374325305349086770749741446260041417851975'); + BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 5 }); + T('-0.0000000000006772983105', '-44689405165769642955.5728273054', '0'); + BigNumber.config({ DECIMAL_PLACES : 100, ROUNDING_MODE : 1 }); + T('2807.811361442421600', '0.0000000000000000573930684179517836', '48922482084337832483.7410205786946682942661163644554950857598026661626716747966149113609962540130406020868412662411915439'); + BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 6 }); + T('-0.00000000001387593307458545093', '-185096365518565959', '7.4965994257697271501624147357388158152423436475615674516065064968428e-29'); + BigNumber.config({ DECIMAL_PLACES : 33, ROUNDING_MODE : 2 }); + T('3127683043147299975', '-101931.418089856', '-30684190426843.089340772119585303722769195153224'); + BigNumber.config({ DECIMAL_PLACES : 40, ROUNDING_MODE : 2 }); + T('-1023.0079400029185485619967750', '-0.0000000000000000937329007351488106', '10914075335121916073.7406371444449996786088778769599699374737'); + BigNumber.config({ DECIMAL_PLACES : 53, ROUNDING_MODE : 6 }); + T('-0.000060138', '0.00000000000144058408110821802990', '-41745567.501854393272232648642893873814372044515900394040835'); + BigNumber.config({ DECIMAL_PLACES : 63, ROUNDING_MODE : 6 }); + T('27193.607425610341', '3', '9064.535808536780333333333333333333333333333333333333333333333333333'); + BigNumber.config({ DECIMAL_PLACES : 21, ROUNDING_MODE : 3 }); + T('0', '-452238074986.839', '0'); + BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 6 }); + T('12942446846259465021062948578', '-9.001', '-1.437889884041713700818014507e+27'); + BigNumber.config({ DECIMAL_PLACES : 60, ROUNDING_MODE : 5 }); + T('1373987495401708455205346572.2', '-6582407504.891', '-208736316367648027.237933851858801742456479742046562383390919414034304795921282'); + BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 4 }); + T('14107739736320519038715652.04', '-0.000000000000000253001022262111130617270', '-5.5761591831454282262758775666003260573525562011504183580173212815054028496304605858204789245425968521880049171744069071933235e+40'); + BigNumber.config({ DECIMAL_PLACES : 94, ROUNDING_MODE : 2 }); + T('62810.31', '56.247378876', '1116.6797681091645398363611385289398316246618197348905030246195538293939825150760150418640105024474'); + BigNumber.config({ DECIMAL_PLACES : 93, ROUNDING_MODE : 1 }); + T('1', '93986309.331800', '1.0639847517255929198948356316332577484672270623860126340350381035515966186264452830012e-8'); + BigNumber.config({ DECIMAL_PLACES : 80, ROUNDING_MODE : 2 }); + T('2542580644573489213065.4916205', '1388716781785.4289741376149311', '1830884942.07189905862450538321660635668802930697912458162051255803533678603266392759258349'); + BigNumber.config({ DECIMAL_PLACES : 37, ROUNDING_MODE : 1 }); + T('0.0000000002313', '-3.7701435643206353618246158623', '-6.13504488765215829394803132e-11'); + BigNumber.config({ DECIMAL_PLACES : 33, ROUNDING_MODE : 1 }); + T('4534637163.30685505182205', '220860649.8011970337570979', '20.531666312621153730556364204359195'); + BigNumber.config({ DECIMAL_PLACES : 62, ROUNDING_MODE : 6 }); + T('61.2684742832754584873427570', '181.5229533', '0.33752466654736527189006877512057314021234580695861783337347233'); + BigNumber.config({ DECIMAL_PLACES : 40, ROUNDING_MODE : 0 }); + T('42931293974741.759', '-0.000000000000272131799215399781781137280', '-1.577591964574506138810245117144621230381062283384007772945375013863e+26'); + + BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 4 }); + T('-0.000234165067858386', '1204524.58490781295081290690165872894736', '-1.944045566129375287285413911441354845634213911376682320674485555498202e-10'); + BigNumber.config({ DECIMAL_PLACES : 220, ROUNDING_MODE : 6 }); + T('192611801.989', '-0.0000000000000002454390450845060800610181288641730924556', '-7.847643064398439322927009591803480592172095149169993303836146619219889495421629832014651148041844658332924171063103644643774334479292843063280041167308901704195736109752589168741736653331736624025714424106113942034331698658198125461756386624763e+23'); + BigNumber.config({ DECIMAL_PLACES : 55, ROUNDING_MODE : 0 }); + T('-5.7', '0.00000530568171612961', '-1074320.0035297325370775240385470160210725918436357220360533165'); + BigNumber.config({ DECIMAL_PLACES : 198, ROUNDING_MODE : 4 }); + T('0.0000000000000033124526299709013935', '-2763518770598702844.5257', '-1.19863583530256778728299146187175203922171872179799864636802734104900031920120940316532340914091294177225700870458187447011932777568573345799530311017003420260142628e-33'); + BigNumber.config({ DECIMAL_PLACES : 210, ROUNDING_MODE : 6 }); + T('-23.5', '-10.07', '2.333664349553128103277060575968222442899702085402184707050645481628599801390268123138033763654419066534260178748758689175769612711022840119165839126117179741807348560079443892750744786494538232373386295928500497'); + BigNumber.config({ DECIMAL_PLACES : 29, ROUNDING_MODE : 6 }); + T('166672266184423.021626904', '18059995237353198700384386643.010', '9.22881008515979e-15'); + BigNumber.config({ DECIMAL_PLACES : 165, ROUNDING_MODE : 0 }); + T('26.913399141', '10383640753575568607140776334109', '2.591903916912039712271834490487152193455348739851838101216180411159779609836189141388848951365988108198314614508052418916462825623970036e-30'); + BigNumber.config({ DECIMAL_PLACES : 41, ROUNDING_MODE : 0 }); + T('-21926821018666568031129910213716652606395.27', '-997410.64795140439778768906113385719', '2.198374467297132899908106309536727825928127237180292788209481559738646061389e+34'); + BigNumber.config({ DECIMAL_PLACES : 283, ROUNDING_MODE : 0 }); + T('-2290.58025841712192', '1.463986746228', '-1564.6181663316704494784948944605425847639445027283195454407092997271699887795331465099660421350069670598086217307623318096530010165810037792647687934243311210272749999375891207789866701855995076048887346047635382828212525849716636783175226105111233328088230384290571625422181021168714001'); + BigNumber.config({ DECIMAL_PLACES : 220, ROUNDING_MODE : 5 }); + T('-30.67', '3.8976', '-7.8689449917898193760262725779967159277504105090311986863711001642036124794745484400656814449917898193760262725779967159277504105090311986863711001642036124794745484400656814449917898193760262725779967159277504105090311987'); + BigNumber.config({ DECIMAL_PLACES : 181, ROUNDING_MODE : 3 }); + T('-0.0000000000000000000119043120923216765732104322725575428058', '87817.89', '-1.35556799330087258680553954012759163375480781877132324632258871170783083036952948880917088761754580985719424595603469862461965323922039119819435424832001771e-25'); + BigNumber.config({ DECIMAL_PLACES : 270, ROUNDING_MODE : 1 }); + T('-8.22', '-0.00000001143117438749799522340376445810527', '719086221.708770306101496099214219738977492479461485245168128419553808427085843089054408753339121243720319996621382861685508200871235175150646512977253811584667001513248313566877602993993156224540490724218018265753103797965261216493574440524368555738508046559954931130391396783024'); + BigNumber.config({ DECIMAL_PLACES : 253, ROUNDING_MODE : 4 }); + T('24241610948142963.9', '0.0157491490160419356128650778565549717', '1539233067351809684.469265815405185606200828852801248741726233365240159848514220693363870435065715331745076363378396080222501942223998796092795555675069522002800429749707005771467749498145281587997018831928051937500760888517569868248519621828163517328159957565866970545184'); + BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 3 }); + T('-614.6470035284084362635939', '0.0000036178254380789796882746012143141', '-169894046.589151728283103'); + BigNumber.config({ DECIMAL_PLACES : 197, ROUNDING_MODE : 3 }); + T('20836540258977175409149289779', '-0.002237832774886680', '-9.31103543249888363278621802840801374310875222451288112986092076948682617341603960643194423149016034958754457013226135750352832196422712123562772351406879972459706082586592688222073556604034175625285116660183560596895807412079857e+30'); + BigNumber.config({ DECIMAL_PLACES : 207, ROUNDING_MODE : 4 }); + T('-43040.4061516774233', '583988523334470923611250125489227.08', '-7.3700773956865342991994517695288528995346732712900162726204530185819328662358254662731547463004357865451232508161517484991367092169323944728800811313034790353095013941810415043379e-29'); + BigNumber.config({ DECIMAL_PLACES : 173, ROUNDING_MODE : 2 }); + T('21573161.6123', '21061.900868809168951109968897445394809603', '1024.27419759856354869821834876947559421500476427609702906474448069825230498699726433100734001773187870696580093168542369134548786462894687459126274774540068641498275946786115647'); + BigNumber.config({ DECIMAL_PLACES : 211, ROUNDING_MODE : 0 }); + T('94009053862245443881.3603794710', '0.0000000058168420037618034393043154461638', '1.61615278189520968504239946028963612269837658139871704937578383317407342442917699584484230849408630553645512442004196444124893032110071914199393032561462735978793767777348936013401587676832922067808678882273169183313633589728782245039913857e+28'); + BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 0 }); + T('-6849296.8859053283860081298179335235441015607788', '-500455913.21990038402867', '0.013686114410832721185583633556349194628367603017752125936498725135912'); + BigNumber.config({ DECIMAL_PLACES : 235, ROUNDING_MODE : 1 }); + T('-627035709418.6020324', '-79702921980991091036.6376088482349836675350131382567662', '7.8671608748315171841478877977295258118465768558399546636644915160062461118171015205714945947896483476474086123189393772072219641778063008647052648244130123458715848940820725007425265231724647407032453698683129476970042023470888e-9'); + BigNumber.config({ DECIMAL_PLACES : 98, ROUNDING_MODE : 1 }); + T('-25608685328.2454', '595441.7535484623298737222706688866955389477378561', '-43007.87638023966370657370588811569991896888010198690960470207207809737643848305517837719294870598091143'); + BigNumber.config({ DECIMAL_PLACES : 228, ROUNDING_MODE : 1 }); + T('-683736.37214134972814430654521', '-18.9632336191967708878780457667913396', '36055.895627905620517070391305008251657031461496549456866381178192783516693312982413358362997877079444763779520250252809587168906447803518489617404000729918769745948542665598545897867746398147465320091110241144601165475200429977742597'); + BigNumber.config({ DECIMAL_PLACES : 204, ROUNDING_MODE : 4 }); + T('-3962705340.46948881671717568477', '-359459657606734649076972256110010591102497758835649899758.172', '1.1024061411656020093273134532564541404009617872358603779079112573776128879166732595386083848338310366653955933515894109785230723539248656433759522919591615796e-47'); + BigNumber.config({ DECIMAL_PLACES : 125, ROUNDING_MODE : 1 }); + T('-0.000164649877064', '3473903189132376093687', '-4.739621920929871763491457616805555400954945279731892757240637238185763574931431523866580835795309872e-26'); + BigNumber.config({ DECIMAL_PLACES : 184, ROUNDING_MODE : 6 }); + T('-0.0003821118213706362653', '2229838191471697765551185863982841615.4264298', '-1.713630266232195448767156601693087011826009303221898043502017963648992395220864692206283954267374802605094974246895338259700194996166477912729483e-40'); + BigNumber.config({ DECIMAL_PLACES : 232, ROUNDING_MODE : 6 }); + T('-7930506936554962418131409569.90680798297410951', '418.0015772', '-1.89724330460133068084782565502406146973124615042720465601152281967992536081751415937001875982395216665704006822106316205545647400490239107164785118901699684782911866965079958554759252233749705574077436758532881440046394159873519252357500434809364159499635496e+25'); + BigNumber.config({ DECIMAL_PLACES : 219, ROUNDING_MODE : 6 }); + T('0.0000000015275164848097027132638842894347279291822', '-652956338855735114488.2661321', '-2.339385336983754852668142390338799091602532252166662910143498682538039863301188586605186506875177560545446242295832730977894808699190822303700804454042246041544737278266538281738754423609008e-30'); + BigNumber.config({ DECIMAL_PLACES : 112, ROUNDING_MODE : 3 }); + T('257220387376405932965.30430665355867', '0.00000000000000000016406907169784924477234238', '1.5677567058470642513917519149329316821430489392115044166519585435434145581978810387812842645969888020679169410610635675706382200059244588674632033474023e+39'); + BigNumber.config({ DECIMAL_PLACES : 28, ROUNDING_MODE : 4 }); + T('322.2545022603820384336960780316577835345895449859', '-0.0000000000000000033237160910991028348796084937746467305076764358310342578860', '-96956085726870049767.8376794973510084168478956304'); + BigNumber.config({ DECIMAL_PLACES : 37, ROUNDING_MODE : 6 }); + T('-2.1739431099861472', '252818880555243846143023971950005151203557565', '0'); + BigNumber.config({ DECIMAL_PLACES : 165, ROUNDING_MODE : 4 }); + T('5241783993808', '319345904842191565498073.25140921', '1.6414126232175382253348783343337209763201724541901095776708522787278387798532468612538750123617125423681161603829617212562814785000109850683358376352827443e-11'); + BigNumber.config({ DECIMAL_PLACES : 28, ROUNDING_MODE : 3 }); + T('-75142529610880369220698783112207960140876', '-515634485899288431.1771010535585914874354906363733674', '1.457282855700169237368010601807522542876527475981835e+23'); + BigNumber.config({ DECIMAL_PLACES : 136, ROUNDING_MODE : 3 }); + T('1546541001687701840914167.67479827236702697801593033', '0.0000000001441702867692414916431619983873168', '1.07271826694989551668095805578049361509418883192619913013281004675319041509234918086639219718387074160053135894972836600663651145114640578654185091844157644929608981760012e+34'); + BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 6 }); + T('-7176.753914176182310920719452429', '-0.00000000000000044653379635370284804768093217270703', '16072140502645001232.813062020153734'); + BigNumber.config({ DECIMAL_PLACES : 170, ROUNDING_MODE : 1 }); + T('-0.000000000000218656828763770361', '0.0000000003260312010373939723926058611814', '-0.00067066228038307178521418053555565521880888076076217429181362514336626956172410554898665120314887327156197575503374982855983523561088830701051313845455144492900357205167'); + BigNumber.config({ DECIMAL_PLACES : 252, ROUNDING_MODE : 2 }); + T('-5810648646756939273193272697961097957.80034194', '-24478238498739569.55019', '237380179421658158920.12375796015085031167264933356195283794525855874119979186210326208872542818500442797698902978871939789074410235635635930945876382718777295508207593340943442046354066831575961780380810123164244556920715935805120214654092971463513690234667664284158975269'); + BigNumber.config({ DECIMAL_PLACES : 236, ROUNDING_MODE : 2 }); + T('325211926241915776901459978759404793118112.4035036704774', '-0.0000000008207326278655673580171', '-3.9624588471360755753743696837860669218067054262782956563625649467326707278927167655841657825600770715600933189312282205341981728032955808726356404691354858853082338667465259519594006306790836025348680448013428787196609963069076886410608746960685978631049473357479085992379454902440980594e+50'); + BigNumber.config({ DECIMAL_PLACES : 80, ROUNDING_MODE : 1 }); + T('0.000000000000000000266903165631981912924608178082737916582195572131', '1.27177919413428084884872865260', '2.0986596326075840271491140498886753236589280972359263843124503e-19'); + BigNumber.config({ DECIMAL_PLACES : 258, ROUNDING_MODE : 0 }); + T('0.000002733263268624154307668605692883605816623313483253587909081', '1044092973798.6777', '2.617835132708385505912103850840101680172114332932674597664682489428789612314285730426934494539305686765391892449118478781382131128840493296681991122777731498667469525653739242655338266773578352941651318155910710274715154617197229384276812281e-18'); + BigNumber.config({ DECIMAL_PLACES : 118, ROUNDING_MODE : 1 }); + T('908663019348799717744.1808970', '-641881433449989221874535429729541392318072002.28809907382762', '-1.415624400389509311988932092690069441016471703557385986131168587436857409306887868912071520245e-24'); + BigNumber.config({ DECIMAL_PLACES : 164, ROUNDING_MODE : 0 }); + T('-0.0080669144171038870851704121842', '-77365392755933.74653648391376', '1.0427032203601362086966402753152126358803721683264665208330327846582644868438176180575445802662484574780511789429261112199846252621752675842864956825e-16'); + BigNumber.config({ DECIMAL_PLACES : 159, ROUNDING_MODE : 4 }); + T('-210.222', '-84751483590963717829585.44', '2.48045215367078324007984321453334507191907907493971805185853574223617993874805730582776716265291530707193410880613287180874128627434310753e-21'); + BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 5 }); + T('30138507635261786122314042933625994584629942727120675.5216192', '0.00000000208', '1.448966713233739717418944371808942047337978015726955553924e+61'); + BigNumber.config({ DECIMAL_PLACES : 291, ROUNDING_MODE : 1 }); + T('-14306357.4100655733182294966533250184311675581143995250456', '-1091634677512190221842949349302602728012476.2', '1.310544425234770452356115506554350533770693679532872980612370322113200883840809144450213582072732311231280550290256551885176241753552994126026377453650238647199215563886223930579543004359572521774702767282897717211825063631069801406693239209860779319628294e-35'); + BigNumber.config({ DECIMAL_PLACES : 25, ROUNDING_MODE : 2 }); + T('76684144324315387882960167710055593944236701.8471372220', '2266090205881393', '3.38398463244269590810638171240493548569128865819965019e+28'); + BigNumber.config({ DECIMAL_PLACES : 245, ROUNDING_MODE : 5 }); + T('-0.04843932063182036616659520596475092794485564179', '10.340742542805263737224972424575915219077686422776182', '-0.00468431743961392740753757571807431903633407477744153557783732352088948922422789465931798496333358351351865086588931339688903854612526220276043883912142183126008440495581452352758369339083424842302676893117238965038958934140337300248958747965388'); + BigNumber.config({ DECIMAL_PLACES : 248, ROUNDING_MODE : 2 }); + T('0.00000060307', '152.93098368558551048631549070741954585813298026941772775', '3.94341280927000460134587922109853030326794149496030704765025321005503089676360613394235850297313616216249766082799779335877038117516291147657452783234674856388582374268910957705678321205113483390765273192764274548078401703015070147492892125e-9'); + BigNumber.config({ DECIMAL_PLACES : 66, ROUNDING_MODE : 1 }); + T('17080782645769555714704457227966901164193270.29845561', '-30391154887848.2554644606520118486138121046860', '-5.62031377511067124177509277508491860108479228022084079991223459422496469426745707223249134974052e+29'); + BigNumber.config({ DECIMAL_PLACES : 246, ROUNDING_MODE : 1 }); + T('28772803908025649575183335244667919055.42290869956032', '-91299828074098850296945769.926537043678002664491412842', '-315146309855.848472568206087238799259664730242817457910334121842973021426810651869987856447606513193000621752927940568965272478460622274562101627248343964588180029900543217655644308185874787148004793034785861252751127096314210516710913919686482871664537233545'); + BigNumber.config({ DECIMAL_PLACES : 173, ROUNDING_MODE : 4 }); + T('6951759681668432032711749392750783.9175356237927532111656318', '2.7064', '2.56863718654612475344064047914232335114381606294457994591775051729234407330771504581732190363582618977239136860774460537984037836240023647650014779781259237363287023352054389595033993496896245935560153709725e+33'); + BigNumber.config({ DECIMAL_PLACES : 114, ROUNDING_MODE : 0 }); + T('3610.4019733373874707786743105929447', '634750877775355682588872001419455991096038.24825615001121', '5.687903868665688955305694340347322964961954295167397589705336952253660328941e-39'); + BigNumber.config({ DECIMAL_PLACES : 119, ROUNDING_MODE : 5 }); + T('-0.000000000363816408313404776598470', '-0.000000000176054995898169309', '2.06649295271255569435711935566071788588382725518115529717617541560570250053194099172053838652853511065500135841507304305'); + BigNumber.config({ DECIMAL_PLACES : 121, ROUNDING_MODE : 6 }); + T('-0.026120257089245975337460', '-10313527642984828336594593633', '2.532621038448735499393356786871240840301703234531308009570150881137642734676636913392599603e-30'); + BigNumber.config({ DECIMAL_PLACES : 224, ROUNDING_MODE : 1 }); + T('0.000000000000000004410941969151600946547', '-44281616230979038183093822629266520089022454962.502', '-9.961113311997279471841231246847650178644604097067120465778325734554891728411328577767291415744156156277994614481535402329799780287979095306881233592159622160728e-65'); + BigNumber.config({ DECIMAL_PLACES : 179, ROUNDING_MODE : 4 }); + T('7764427107488', '-0.000002674812529667537596160439177377599760935488475327567527', '-2902793007498387014.48044362598228935011502311864234520569237714021083485607508423178277747936902105982430826830844683987813637898007482287809417852492708407047036731916276421684209217493488238977913'); + BigNumber.config({ DECIMAL_PLACES : 280, ROUNDING_MODE : 6 }); + T('-949447181444969388947439985.4511355136104554015685159026817', '-0.0000000087299690851609182780383315644678700719613188423859', '1.08757221495643860477671732382164515257232863364500426357541158900924919270988871484356865061458205925354004879341062811806591159958603279828617300998726180176412434026219829669010640818680113933753274951752231792693043029144284250664616486783003321188472316319944387399318528080581818469403693776006031621264708604e+35'); + BigNumber.config({ DECIMAL_PLACES : 207, ROUNDING_MODE : 5 }); + T('-91.31506127828229385505713468471614752441511702771161', '0.0000000000000000643558902746', '-1418907591654008190.809986241947612339532570656579649628079546598288929018149855306422609225920914256055148103573058048903344507723249545289416009374221439962042209134598392962000545600948882502898132007873295678732638249894727'); + BigNumber.config({ DECIMAL_PLACES : 151, ROUNDING_MODE : 6 }); + T('-31554080359351593984257.861', '-127382663623337.76088376', '247710947.9564264278154194854190110992765619566919008461755829484956933768480404139937995269294075970417035512431438477815271307323909693632471528470640493162729'); + BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 6 }); + T('22249838871724078527587945.8699503896079838447', '-1', '-2.22498388717240785275879458699503896e+25'); + BigNumber.config({ DECIMAL_PLACES : 203, ROUNDING_MODE : 4 }); + T('-0.000000000000000002083153505440341144129691078388694364097599389078397', '-0.0000000009199547951874264021633564793246', '2.26440855174403563628185648551914266444661412168807984323558197598569789345264827294479692906361062627706137896503756850114672223307908523118328975263282917110735263650615651466791390217654489925e-9'); + BigNumber.config({ DECIMAL_PLACES : 136, ROUNDING_MODE : 0 }); + T('-56991751624054885329.62124419640377577', '-547769428347', '104043323.1114019970642917136571093031701343357920358152594152664266303349626866612350401719597995898558061592295276156729103132084620854683106856'); + BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 2 }); + T('-16614759121.808030790648153770665168859226024', '1675576781526404464609628471598.39243996226', '0'); + BigNumber.config({ DECIMAL_PLACES : 273, ROUNDING_MODE : 1 }); + T('140402.4955689790129', '38.703291658309349631849805526276280190792023748255', '3627.662908067807546554546567961344417536160876701687058333923486712232113900805891416673641596804432716825638493586794139628279751075644857258429655105395158227092111389062025685612980085941185691260575152773802143033318615394798093094354365408066689272476511042593884457576686'); + BigNumber.config({ DECIMAL_PLACES : 166, ROUNDING_MODE : 4 }); + T('-986.12927285246', '-51.783879974', '19.0431708351630360976087334231777740293431493500085718393489029370350672132507596484566191420934873496236796294564190702949816782301659055672211805053570858950562266341'); + BigNumber.config({ DECIMAL_PLACES : 170, ROUNDING_MODE : 0 }); + T('149685729436965196651800746', '81423776671944924604623.491184348956444', '1838.35404786057237833730572985586976512927556979841747586628317036871206199519163472936169401588761008566621870655257071544945149431089940802700420277249461116644979830629799'); + BigNumber.config({ DECIMAL_PLACES : 36, ROUNDING_MODE : 0 }); + T('-37697.828268964546789359723810362357506482061', '-21492050362000369841372301770.5436241360851355099', '1.754035917189e-24'); + BigNumber.config({ DECIMAL_PLACES : 70, ROUNDING_MODE : 4 }); + T('0.000053833706439646507', '-78551781135060843503.44066130522950432032755093324776531', '-6.853276356278360952234275200210729467471495476e-25'); + BigNumber.config({ DECIMAL_PLACES : 80, ROUNDING_MODE : 5 }); + T('224744814544284254509320.087848915106225733819572573252946', '-727138623660756550283107964299965058655317004.4840', '-3.0908111222701050915917924293370185043817249357785579219388e-22'); + BigNumber.config({ DECIMAL_PLACES : 235, ROUNDING_MODE : 2 }); + T('-4444316.9857612757250520327859862653954', '20.2519150375403', '-219451.6902486996137209135371652041269261246412477636376691576432553919629279309682119736861443495210223465620888100387157187112231265470485365204146780421840039271841619606011779503540084673634772777110141905861847623366702934736145288933154'); + BigNumber.config({ DECIMAL_PLACES : 96, ROUNDING_MODE : 1 }); + T('3770218975.3218768507381318', '66962532857490959877.3891482868472841860', '5.6303410495920484909689619060175443155610217965552026349425613453086915225114328348006e-11'); + BigNumber.config({ DECIMAL_PLACES : 219, ROUNDING_MODE : 5 }); + T('-351929.5059950121636449931652370344666', '-276462171730092.517889', '1.272975263822342073956025578954950406569335984729242556842303201573247612431654327770275210319881617825675660071574970977428110702557606956220740902965628098423393898616593144593990463991101529498881408398990921e-9'); + BigNumber.config({ DECIMAL_PLACES : 233, ROUNDING_MODE : 1 }); + T('549939013280743366287306914133384653.017995023107953111296495', '19454772164114976.71', '28267563795741877226.86698851440815891895636313236931269723451909766146922098278835311088950918299696100520338231824401344966458227376657628415894512404547218693229974942152291874445664115324897642232541679844539417280713292980188428338762828563214947989'); + BigNumber.config({ DECIMAL_PLACES : 241, ROUNDING_MODE : 5 }); + T('-668745550681598621582583804095646066462058725641678', '264052064036248991010193468628.12521', '-2.5326276207020802750763062481677002457979951538003828919438534461902054246662026822485046205122269607140121802803694532951581193979232264393931985037548447141995015356574024903195198993082048425773154088271988091290194429231627039216720085750865651055700094296303e+21'); + BigNumber.config({ DECIMAL_PLACES : 204, ROUNDING_MODE : 6 }); + T('3.1', '-5', '-0.62'); + BigNumber.config({ DECIMAL_PLACES : 189, ROUNDING_MODE : 0 }); + T('20342930567112406829.97018880374399188', '0.000000006985017039911170320744871420071412777362156740513', '2.912366634308326816045839714298380349234973210350490510671740572530490331524590455483756080914170139344030457945871593218168395195499092382973594397599643614827558651878878102219386989797993508395998223437229245867183e+27'); + BigNumber.config({ DECIMAL_PLACES : 77, ROUNDING_MODE : 1 }); + T('0.000000000001449391616416383972624544', '-0.000000000299724653755519105602388608', '-0.00483574373430966051216532582069414619370642995455351178141233982286869194424'); + BigNumber.config({ DECIMAL_PLACES : 159, ROUNDING_MODE : 6 }); + T('-337166591187627222959837068482769092090', '1877117704.6', '-1.79619312289995660062156481821491148749564673409665521941185999722097554819472027689275250363540788266879788077408771354039041756103204355233164103629434170965732630168917964612968788680829e+29'); + BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 3 }); + T('-34702909066749522432986714.2008702247872646843785756642799', '0.000000000000000002476390358299324799927908723567', '-1.401350516102878995475924693766672419938287537375658992107442e+43'); + BigNumber.config({ DECIMAL_PLACES : 1, ROUNDING_MODE : 2 }); + T('0.004203823399985374880939201911558602258469876', '-30.354546075933444352361954089987421635', '0'); + BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 3 }); + T('57882568444730850.7347', '-0.0000000004105', '-1.4100503884221888120511571254567600487210718635809987819732034104750305e+26'); + BigNumber.config({ DECIMAL_PLACES : 107, ROUNDING_MODE : 4 }); + T('-2147795585616616533438839.9846434489206669901264000913210', '-1360.3', '1.57891317034228959305950156924461436496874963346327377857825479673601411453355877379989708152613394104241711387194001323237521135e+21'); + BigNumber.config({ DECIMAL_PLACES : 200, ROUNDING_MODE : 1 }); + T('103627772268366529324849553.630410311675420', '23163260891816538861.1714438292', '4473798.95051726888675417899776060051418635468232666481643123719508837226240037600651036011666235453789349428245744797512274093342265025892420939793796451741911612407280333125108585633089776466439735159421068'); + BigNumber.config({ DECIMAL_PLACES : 26, ROUNDING_MODE : 0 }); + T('5454769299322608063.4712765672977063238418334999673878', '-376136926482592751624136211305629379190205580', '-2e-26'); + BigNumber.config({ DECIMAL_PLACES : 37, ROUNDING_MODE : 0 }); + T('-1027724122236.10082713', '143443274247031991054938501287842443698218355835615202.0', '-1e-37'); + BigNumber.config({ DECIMAL_PLACES : 62, ROUNDING_MODE : 2 }); + T('-850958478098791039473018.18287396540791729793560758', '-0.0000000000294335687278052873765373825673731895145979468189', '2.891115535354393014802897394422773469737491210520764281227329747930525482187006474623770632071954e+34'); + BigNumber.config({ DECIMAL_PLACES : 297, ROUNDING_MODE : 0 }); + T('1270015001392174006045494316793364072', '7244.786910421467967425356095521101366', '1.75300532244127860350274767414151687963769159401375631795501517657512699951316107370467267239694969494659495421930581375096445217375189104254341619304896714346222864122963749845625721311943952192783734751629518718251020941630851902816827880523985175337987749257873289347276073462960933124079628573486117935680973926155860608261302e+32'); + BigNumber.config({ DECIMAL_PLACES : 223, ROUNDING_MODE : 5 }); + T('-71602452.01483867658875', '-204.3604674729832323', '350373.3031159983558332612139533746082803334770360528071683743002604007218606763845430242306823591323787537781369106490198367441111141615859452576939703204194061350807276956509743788893939336535650658526095790076187579422308402846'); + BigNumber.config({ DECIMAL_PLACES : 278, ROUNDING_MODE : 1 }); + T('-0.000000028223094479', '44442.6649632592195277755793855916583481386708090888813', '-6.3504505191873734040293686726261847082563756408010544180415038483180629900335422410917627289350523968843082802464361107894529456257096178315042158275071578510067665554807050790481842872664581598644850687546663501005684722624857486578461689543722634285457239998977454e-13'); + BigNumber.config({ DECIMAL_PLACES : 236, ROUNDING_MODE : 6 }); + T('22.932422979358020304934246680478393429274710574067352', '211528565242.8951314', '1.0841288954532007179914467620847195221131227334939910738942036362608534600140751399402561684032513047400087366354238496242374175366197555523816850138815579616863006415208737415577091287955865463287026132353216274439491147719937e-10'); + BigNumber.config({ DECIMAL_PLACES : 230, ROUNDING_MODE : 3 }); + T('0.000000000000000000808861271796', '0.0000000000000002679641107827668794626832088949645890066167811339902631', '0.0030185433020608031386101726748810352426529971414538892155683393442431073375499473507563602926171081826945329533733266404736778310882502600600685074990615871410736608696660670790575419978126642171769308295379298142227632588981084'); + BigNumber.config({ DECIMAL_PLACES : 22, ROUNDING_MODE : 6 }); + T('34684755663550714671859686849007985608014800679606734064', '-0.0000666', '-5.207921270803410611390343370721919760963183285226236345945945945945945945945945946e+59'); + BigNumber.config({ DECIMAL_PLACES : 226, ROUNDING_MODE : 4 }); + T('-29.6097767887', '2094582945535170617847874112711091.58882529775', '-1.41363591505490062792816445132674890986294627193018559601346859488478309774451032472350323078040857248897695981445555510153685791864888680668348296370546210066543024500299864776522416838451494736e-32'); + BigNumber.config({ DECIMAL_PLACES : 270, ROUNDING_MODE : 5 }); + T('1.4444510910796779246174450728118494735671683', '262235276726.38967568', '5.508225701406242704740928579676368041933489827888814179939945412735538638082118086482847357089601920684152776356195423025587276479703111706351683153933834126084099810335412350723212046189771921914664119815965741278637066001067046048595513468695491036725396293e-12'); + BigNumber.config({ DECIMAL_PLACES : 284, ROUNDING_MODE : 3 }); + T('-0.00000000000632108402301087993380876330535946', '-64124.8518411459466328954009498516942', '9.857463746925857474093435057949453930888381653926164585350740530687752923195898813625957483576990128568102184082793484480444615473947850719426160713252372817129639905393786206342314723564266188565326489109034609279197392400942897133904576331705585105516875252553383544e-17'); + BigNumber.config({ DECIMAL_PLACES : 19, ROUNDING_MODE : 3 }); + T('1', '430.3690512916', '0.0023235871561834077'); + BigNumber.config({ DECIMAL_PLACES : 299, ROUNDING_MODE : 2 }); + T('51115228', '-0.000000000000020253678863189062141', '-2.52375029471320468452379354492250112591088396867805999149948845707047018620942327709496959652950081376780178518069046553886384629435879895397024244047202682824108000458935202729939953229898730997812379045044925145332609247011673660831835374681867511305919185514152249981476275854909356323300376589593255397705335919512748e+21'); + BigNumber.config({ DECIMAL_PLACES : 52, ROUNDING_MODE : 1 }); + T('1.4', '6057838961461570426274062781546871991467.65553959654117451', '2.311055161595e-40'); + BigNumber.config({ DECIMAL_PLACES : 56, ROUNDING_MODE : 5 }); + T('-9077507600', '-12267607209122962079724648348196154806.524301614311075471843', '7.3995747053666635623000906764e-28'); + BigNumber.config({ DECIMAL_PLACES : 115, ROUNDING_MODE : 1 }); + T('0.002073877082125619602089562316586690187407497037509383905990', '10633634779540158412389732344427869352.377', '1.950299333315359996089935757578413452760215224571366603621559706707847050361e-40'); + BigNumber.config({ DECIMAL_PLACES : 96, ROUNDING_MODE : 2 }); + T('5367709', '-18586319825801360904165418695477252328221555063372161957', '-2.8879891502504949714183315537275737326779496065e-49'); + BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 5 }); + T('-91.9734981219', '0.0000002322757882297997924962159870628768', '-395966789'); + BigNumber.config({ DECIMAL_PLACES : 195, ROUNDING_MODE : 3 }); + T('0.000000000126261840434056685735897262', '-0.000000019159544606721739674552784487846678207101863042952993998084', '-0.006590023042080043301119526658635347940335423555323218493451122296099211559573316389866508318190663996710505127584468842873729713209918897576245622076744976802695017280162222731403812710641030237'); + BigNumber.config({ DECIMAL_PLACES : 6, ROUNDING_MODE : 5 }); + T('-263887360808456263598577582.8894537172011', '74341394.946129048025057557719190951340586', '-3549669211879603863.213429'); + BigNumber.config({ DECIMAL_PLACES : 188, ROUNDING_MODE : 0 }); + T('-2.7414', '1431230849.8622486', '-1.91541427454826801553292977629351884274023231927529150053285840617989892507770478032104250846459608874453059872143150933108757431721820200060727550071077146667751730240784102503863e-9'); + BigNumber.config({ DECIMAL_PLACES : 255, ROUNDING_MODE : 5 }); + T('1011.92816323719278', '-0.000000000000000000202610738884873374231320069425', '-4.994444859174944148565299552059198843558160599738484673372988382621408239073949798611033087706247696171294424632116435229609045693850516224691123681244991919716534719254809180362698236002868339079180080222210782161265799844738989224004396499668298282412352415373360472001693376e+21'); + BigNumber.config({ DECIMAL_PLACES : 107, ROUNDING_MODE : 2 }); + T('-19.62153319462348612851185393518760625231449464', '-0.000000000000053808916279383213645', '364652079085663.35756008412905828833458471774827626259895868550544676671991313042463137534185715416559846302573541706726315'); + BigNumber.config({ DECIMAL_PLACES : 224, ROUNDING_MODE : 2 }); + T('-165725671739.434332748624577701', '-3251752.1884296', '50965.03735097655993416834368968871730975513286676358343713932623804386456774373231595632668090178649797054969198404729491140832350108315948457960249873278558905497853729497704896387936550997637848807504140642188512669070529724318'); + BigNumber.config({ DECIMAL_PLACES : 217, ROUNDING_MODE : 0 }); + T('198266.613', '-40617536098125762.20194464201317602507808', '-4.8813057621471216655921566922081782639250781079457575845537506873802592773421869580307285814698298630452650551148723605635695891125082696845276826375632529610828652601658572550796048466889731769714167027006e-12'); + BigNumber.config({ DECIMAL_PLACES : 297, ROUNDING_MODE : 4 }); + T('1388.6813321798612', '-185.0005', '-7.506365291876839251785805984308150518512112129426677225196688657598222707506195929200191350834186934629906405658363085505174310339701784589771378996272983045991767589817324818041032321534266123605071337645033391801643779341136915846173388720571025483714908878624652365804416744819608595652444182583'); + BigNumber.config({ DECIMAL_PLACES : 142, ROUNDING_MODE : 4 }); + T('-0.000000000000000000015108', '-0.0000001591494936792421404307498927052532604689860195', '9.49296139794790663286235028441599299498331791538678505083552263244627476095132113673992955756042696507729772777733009467225611013e-14'); + BigNumber.config({ DECIMAL_PLACES : 271, ROUNDING_MODE : 2 }); + T('0.0000000000000000036200351239008445', '-58.5975', '-6.17779789905856819830197534024489099364307350996202909680447118051111395537352276120994922991595204573573957933358931695038184222876402576901744954989547335637185886769913392209565254490379282392593540680063142625538632194206237467468748666751994539016e-20'); + BigNumber.config({ DECIMAL_PLACES : 172, ROUNDING_MODE : 6 }); + T('-2.180767', '0.00000000002569342879705165885431', '-84876449041.7193647198135647191422770030303975642686499653379083777932335591803594382779918172540108479096855867315665842323009409099957124145081698832340654265420377829107561623621977'); + BigNumber.config({ DECIMAL_PLACES : 273, ROUNDING_MODE : 1 }); + T('-0.072124536092138090734611783846252231194', '656.25986', '-0.000109902403740094801371230877729215727431508610019207939976703740496942781172080218345214653232029153817208933058925773701899122704228779130267086577563954620049442000002864718863043063459648438653554096695781454620735145983178066078885275719895469456260817170807917461232'); + BigNumber.config({ DECIMAL_PLACES : 7, ROUNDING_MODE : 2 }); + T('-359307131619962159.19811825025530774965183285227', '-0.0000000000001461710786257598150256945960423069796062905997254188', '2.4581273874286185392379195369668629096e+30'); + BigNumber.config({ DECIMAL_PLACES : 64, ROUNDING_MODE : 6 }); + T('174118688647237.406843877809', '0.000000000000253643104418361464406558253852', '6.864712094047086981098558601064023441640546559713514386841420553566197892333893859635234323e+26'); + BigNumber.config({ DECIMAL_PLACES : 262, ROUNDING_MODE : 4 }); + T('0', '0.0000000000141457985934319753277947917846270747776464846501195787', '0'); + BigNumber.config({ DECIMAL_PLACES : 70, ROUNDING_MODE : 4 }); + T('1642.7', '-0.0000000000000512505158117148284471148131', '-32052360332040055.2414546189691600611749178775355592369343117212752624445003723762071938'); + BigNumber.config({ DECIMAL_PLACES : 103, ROUNDING_MODE : 3 }); + T('4717885893920078056911829865657.431584853092', '-8999339354.992525959914', '-524248026195695818126.4876719700911333320623822306784212821636332903503544468818936571950512506149919440800908526182166256833'); + BigNumber.config({ DECIMAL_PLACES : 212, ROUNDING_MODE : 5 }); + T('0.00000000003503722442064426025864124523736182198139487586594', '19878727.11836870836', '1.76254868895848554713860285725728352086352276476314094436383602828400970732126577837102618562806388756525919699687025446195206648968050747835508082171400742564176769002035263450773264010298662278e-18'); + BigNumber.config({ DECIMAL_PLACES : 244, ROUNDING_MODE : 5 }); + T('0.0242828331634036914409326450055226589635690', '-216677733847469401154997246041713647702619699100', '-1.120688902003083822866660733697253592205440940812115823570898409147251064074265391935700656769274621358593926112214501882485711247978430299245195867597122927731729511323535787638860455222207981013e-49'); + BigNumber.config({ DECIMAL_PLACES : 92, ROUNDING_MODE : 1 }); + T('134306821469.9623282648087157129750390912074', '-1', '-134306821469.9623282648087157129750390912074'); + BigNumber.config({ DECIMAL_PLACES : 290, ROUNDING_MODE : 5 }); + T('-30627.725787661675008', '0.000000000000146969708544787524362678564649115319', '-208394818843423010.4089388317777900109671479717897344709633071549566039697169362831836702715659548081646155264976857535498387667060364389605584951367320163312108738468348647085739553366917799839423228387714144006361370178060027375368859643159572049987231037962571765691768080406290835329230605989237887222247'); + BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 1 }); + T('-313616926697744429484234.420233448292', '3391757405238533705084335628866954577660235820054243.3', '-9.24644333976735419251966122733765e-29'); + BigNumber.config({ DECIMAL_PLACES : 77, ROUNDING_MODE : 4 }); + T('90.652813', '-0.0000000109693130108332206625792671951913', '-8264219729.20928448932351032056800298838836060711886882692589807063265689630957023873055'); + BigNumber.config({ DECIMAL_PLACES : 41, ROUNDING_MODE : 0 }); + T('0.000000000000000183510738607075753108085477645181498', '-7478880.733323', '-2.453719281675704185e-23'); + BigNumber.config({ DECIMAL_PLACES : 162, ROUNDING_MODE : 1 }); + T('208837262.247982980555894', '0.0000000000000015505084559283556922', '1.34689534552033890376137781707228221016449502131156991893142804954373256141407643196422044869155513229468764868109195413956930783902721756601127419319077776546299386731640433061883851593e+23'); + BigNumber.config({ DECIMAL_PLACES : 149, ROUNDING_MODE : 1 }); + T('-46546963780405368862246.0823405754260294675562804325396587', '-0.01390761958249528849584824527107421877663754534627986', '3.34686777304372947272151574726966799973557699630367511193553332579423159137704890041792941264982616096914361988359087220501492414789308720282967059908923617114516684545777751e+24'); + BigNumber.config({ DECIMAL_PLACES : 245, ROUNDING_MODE : 5 }); + T('357.65', '-394589175193614852891.0448229798749997490', '-9.0638573606209612579918310747547404124623960759310836773337953747558837695090056393077211856997603984336916293115109717363645413322567571329624970330425454916284510901420100977148267077559726593551604906469272066046920433882822e-19'); + BigNumber.config({ DECIMAL_PLACES : 175, ROUNDING_MODE : 6 }); + T('0.00000000000009751487004066178233785752307', '-18597314733723089.11864836638609788284', '-5.2434919469225864161384606556852484096160052986071583726466104089126927364263831388690036653122216294440985519930810530252359509972523869092864116e-30'); + BigNumber.config({ DECIMAL_PLACES : 227, ROUNDING_MODE : 6 }); + T('49789784577.55102899631109660455', '-0.000000000000003932', '-1.266271225268337461757657594215412004069175991861648016276703967446592065106815869786368260427263479145473041709053916581892166836215666327568667344862665310274669379450661241098677517802644964394710071210579857578840284842319430315361139369277721261445e+25'); + BigNumber.config({ DECIMAL_PLACES : 148, ROUNDING_MODE : 3 }); + T('1728022199014108007177420958208674215344174555.3825', '-588666929086207208131338005', '-2935483740689377421.0605487526355056260642213116660841854997738884740435033980974641064610189576063972561434384391072350079060311182113390031009286680471380179648798212'); + BigNumber.config({ DECIMAL_PLACES : 114, ROUNDING_MODE : 4 }); + T('423.51', '-30630307383976085980532116610580803970387228670191', '-1.3826501794152894330388744522146084381354593312765345432914921858769e-47'); + BigNumber.config({ DECIMAL_PLACES : 122, ROUNDING_MODE : 2 }); + T('-9515.2288984274918378', '-3033332321591813886435672424588956243', '3.13688969411506724145895334821695451829729415971188096686401420618687400036920673795234513e-33'); + BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 3 }); + T('-215721828203342422438819162094074636', '-0.005428307259563418376', '3.9740165375364593561423493544693129357510916395057598946136750579119773535795586342835327861e+37'); + BigNumber.config({ DECIMAL_PLACES : 106, ROUNDING_MODE : 4 }); + T('3616875638685577487650003.5374830465863587991', '-266.59599563503209006337010159389892', '-1.35668790901010118453809674370545961440962890333958991555407174854269740988256994561314847256943815969477212950797123255002975369e+22'); + BigNumber.config({ DECIMAL_PLACES : 215, ROUNDING_MODE : 3 }); + T('-2.6702493796552982903459008255862460830023039', '-8038533406414.83615210', '3.3218116348492257975518009761620462080402221973417271560475680951368245899220578500764487688888615787238245471232016170433124298884395893928040595198821754476033715560998841953037888211476285497549032225e-13'); + BigNumber.config({ DECIMAL_PLACES : 38, ROUNDING_MODE : 5 }); + T('-38009769348878296499599157.865070246477942807', '627421815071283363449416638866574420.74565186959211', '-6.058088583445235673957921677e-11'); + BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 0 }); + T('56.09496062544893609582738876482', '0.0000000000000000634844490420434522874046703288434900', '883601598059066000.033433829367837608177832667164620287855200554410027692412318948979964'); + BigNumber.config({ DECIMAL_PLACES : 92, ROUNDING_MODE : 4 }); + T('-98278', '-8060985.0109042125568186902873446125353045258', '0.01219181028956857122921517322141074034918957099314944442622802827495176316355977065901985959'); + BigNumber.config({ DECIMAL_PLACES : 117, ROUNDING_MODE : 3 }); + T('0.0040', '-154.222', '-0.000025936636796306622920205936896162674585986435138955531636212732295003306921191529094422326256954260741009713270481'); + BigNumber.config({ DECIMAL_PLACES : 226, ROUNDING_MODE : 0 }); + T('8402.2', '-1818108861518275982673035599278649795936059734600', '-4.6213954388756712283555758268247951328207148497733913180451617583745755540637584510929140132081173249011067911403347846981153394476908518195151661691290567476714890894890343823183599e-45'); + BigNumber.config({ DECIMAL_PLACES : 119, ROUNDING_MODE : 4 }); + T('-408924775021936773056316995206607551269142185634427595209.3', '0.00000000000000000700260296561489567997776997176324598358', '-5.839611027926231386989582837238996985766296906694071791989506895457746485581708323860424176115555875775665210011339561184448703037754488691130203280226485597108909122742072007197300406956640722e+73'); + BigNumber.config({ DECIMAL_PLACES : 168, ROUNDING_MODE : 2 }); + T('-111.5325', '40166.87967437225410802244092895831848011259', '-0.002776728013332867375725737559862094928478860461768509337125110725217390039627146471599824788448991006398336684462875814604512343528251673437752046881700236158997297107'); + BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 0 }); + T('-1226004983408597362607.9556571559', '-0.00118298758972138', '1.036363351620069758835204259e+24'); + BigNumber.config({ DECIMAL_PLACES : 284, ROUNDING_MODE : 6 }); + T('0.00000000000000539066579432940051717895566226191048158412768651483177819', '-0.00000000000000179224', '-3.00778120917366006627402337982742851492217989025734933836428156943266526804445833147346337544078918002053296433513368745257331607374012409052359059054590903004061955988037316430835156005892068026603579877694951568986296478150247734678391286881221265009150560192831317234298977815471142'); + BigNumber.config({ DECIMAL_PLACES : 180, ROUNDING_MODE : 5 }); + T('-229538918875558072593965178904262.8763359718491005', '21934297048510404981876490181210410056561.3643780285489399', '-1.0464840444528695155315795229126238724622668373401064443053985968474899338863925553178309323274657390437605690574384405208483639638747002881705976561240023669909259414276437e-8'); + BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 2 }); + T('0', '-253886763882308779', '0'); + BigNumber.config({ DECIMAL_PLACES : 137, ROUNDING_MODE : 5 }); + T('11.2384329828122182058323746858865224', '36057265465192473215.6537524877650730204999954521672266563925', '3.1168289768565863696038150015829032837949774431034003830560742387506843565265945568298888006334501600151072193341182563e-19'); + BigNumber.config({ DECIMAL_PLACES : 132, ROUNDING_MODE : 1 }); + T('-0.0000000000006121871158656636', '134439.692127', '-4.55361884708389547947153340776111906901971984757667831727672995342666580874652288171852992657664448773630149388835e-18'); + BigNumber.config({ DECIMAL_PLACES : 110, ROUNDING_MODE : 6 }); + T('-0.0009229571213', '-0.3960', '0.00233069980126262626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262626'); + BigNumber.config({ DECIMAL_PLACES : 119, ROUNDING_MODE : 1 }); + T('236628663455007177', '0.00372369177477415584907958633728378236083725493865108548116016', '63546791132936572895.35864769312006908180499240532216402115163458114234415359785424603118510296859771741453462910174895637657805778025144012'); + BigNumber.config({ DECIMAL_PLACES : 209, ROUNDING_MODE : 6 }); + T('-3740629012216353.578', '501782494616728147584.0', '-0.00000745468216278354512885620411365735420071928485510663217940971231491348794931265999846558280510022104165231832402831258087477102225846141448365685666099359566171953435796867970300879691046608216298552425298'); + BigNumber.config({ DECIMAL_PLACES : 150, ROUNDING_MODE : 3 }); + T('26535222657283.96445', '1120111076064339542.29594363253441930036166374799910424560363', '0.000023689813648231233705608499677191988578459331738405494616918043142138613738659280319351170209913550208565082097018930848396147939716144869294585983'); + BigNumber.config({ DECIMAL_PLACES : 269, ROUNDING_MODE : 6 }); + T('0.0015642085828327875904209897987544583', '-7.514', '-0.00020817255560723816747684186834634792387543252595155709342560553633217993079584775086505190311418685121107266435986159169550173010380622837370242214532871972318339100346020761245674740484429065743944636678200692041522491349480968858131487889273356401384083044982698962'); + BigNumber.config({ DECIMAL_PLACES : 274, ROUNDING_MODE : 0 }); + T('0', '-698581.52817240', '0'); + BigNumber.config({ DECIMAL_PLACES : 200, ROUNDING_MODE : 2 }); + T('-0.000000000000027736296540198405443831794791888713237', '0.00000000000000000053738037719305', '-51613.89905056831323805406076687161356090126640792469896970230616347751342461220170936501177825308734004673469683463686798536254076025883897549171419741164939148807267477358513620410703879460253562757461926'); + BigNumber.config({ DECIMAL_PLACES : 233, ROUNDING_MODE : 4 }); + T('0.00000000001256591715812221860282341150225418103068870713584401433953324', '0.000000000000000635189689452025495484496458591971647137024', '19782.93628941421154659632186676990801096388543429251957536315546607636633436282587757025682751349292510444059073957338814318659968182487504414463159517306008647606113126910535053929335226627568743034184637181963127479860158881467353258644'); + BigNumber.config({ DECIMAL_PLACES : 27, ROUNDING_MODE : 3 }); + T('0.00000000000000890214462731853', '5317628.7311751812566116393661', '1.674081e-21'); + BigNumber.config({ DECIMAL_PLACES : 32, ROUNDING_MODE : 4 }); + T('-0.00114839266817553911910525389346394245330', '902529.7777667001809425', '-1.27241526702556441375203e-9'); + BigNumber.config({ DECIMAL_PLACES : 67, ROUNDING_MODE : 4 }); + T('0.000000000000000000407204962527802862697923153239393848899994409151857891360', '-0.0000001191500896', '-3.4175799942310984439068617640334015233505490301524531238e-12'); + BigNumber.config({ DECIMAL_PLACES : 220, ROUNDING_MODE : 1 }); + T('-37362125087003278805530189473081575529788929952146846', '4230081926155263381', '-8.8324826183595569660794205584532649024071331692951422675632573137691333777943539759054062063076302925084987573092009924598975701971122524158676342509653258800084339052356902846798606246501695619424375970323767699300199360334578000639039190186257072208813e+33'); + BigNumber.config({ DECIMAL_PLACES : 5, ROUNDING_MODE : 0 }); + T('0.0000040147100402191120243564352917763128645330978663977', '-317962140098551', '-0.00001'); + BigNumber.config({ DECIMAL_PLACES : 58, ROUNDING_MODE : 4 }); + T('-35617266375149495309772665893021.1474316444', '13674373073710166384962483365654009.11792822484140944', '-0.0026046727102704187210169652514893325409011597372224434685'); + BigNumber.config({ DECIMAL_PLACES : 172, ROUNDING_MODE : 3 }); + T('0.000040834254840742335668405872659119523637014', '-12669415797020896379525878611452763473.1649', '-3.2230574396606477905551857041559001099754080043936904518767855372922219986808335268076538804406342315504659034253910268714992269742e-42'); + BigNumber.config({ DECIMAL_PLACES : 282, ROUNDING_MODE : 2 }); + T('-16197710652676475185849080361460961665165227', '-0.00000000000000224238120646127106715471207629877612723398685033972', '7.223442029394403679469709530740595006960638772143932059581499840317158761934844117055711250514827250660472839555739186117670761465711862291150354072577990327503978652480421676346254715392495979827657528334703698266989371917338922731478832439915670289827284025503886584662445382171647763463434670541413203731381928585592111851709081866485627e+57'); + BigNumber.config({ DECIMAL_PLACES : 292, ROUNDING_MODE : 3 }); + T('-23.039133115581792071142020710175445576681722593488817081748', '-892889380', '2.58028974603570624517250061930128965994440684169508400713064814367038389458725559038455581138169657701606888862313492853952412335781169219416631430872209500352664066852267858757598841639263309414655598210833238939408149305124448898697843175153455179408674342167671430922383688783486258e-8'); + BigNumber.config({ DECIMAL_PLACES : 131, ROUNDING_MODE : 6 }); + T('0.00786213058750249776096994135', '-317.07072880132791759832851338995981473266016498281462549425', '-0.00002479614128123696585325395906241445937824603248289811541609239430304887170225714156997425675329737020495749956365141248689020227'); + BigNumber.config({ DECIMAL_PLACES : 140, ROUNDING_MODE : 4 }); + T('58179886031811957939020607545684641221498100329125196420816', '1506214361.296040', '3.862656440332329948689207721980092757948961935869703841302528169707711053114656380464518174333941329132088927761681588312403417985998137843691102127762600801611371476420924649595974385171599e+49'); + BigNumber.config({ DECIMAL_PLACES : 270, ROUNDING_MODE : 0 }); + T('-190982887244.79496383078025', '-9145156877491356.62835947986', '0.000020883500392962555571626012683706869719619160005169089488963254088407365949376153129484189510009484187082822557964960011800927780290561133548186059713335625764936293754096685594033019625465109185613222836851485410526665657804685359923926827353032489380616336899649913'); + BigNumber.config({ DECIMAL_PLACES : 214, ROUNDING_MODE : 4 }); + T('278.495345646854930302888849449046998413711515', '0.000018176610655120499302149923445166183617964695613772605', '15321632.3400974935114001539888832876943670232394672292722147482367081153193388912118563920139469452193306693644528085977079956107754057270583892595961216955836048628885546197409000297526833612222358469890190521662564411673'); + BigNumber.config({ DECIMAL_PLACES : 42, ROUNDING_MODE : 2 }); + T('-91404371703938.19963216515616591161245916846769800', '-0.000351715025147272371586528668014762', '259881907705435031.534278014758666051655316724669124608520618'); + BigNumber.config({ DECIMAL_PLACES : 21, ROUNDING_MODE : 6 }); + T('-74.8927185683704965', '-0.000000000400520067811668430938168204312', '186988679437.621507382963746866573'); + BigNumber.config({ DECIMAL_PLACES : 64, ROUNDING_MODE : 6 }); + T('-0.000000359947253971845113537233653974122267996331498573916546', '-1440950295578699316404463977083798390073028875772.4369693464', '2.497985219e-55'); + BigNumber.config({ DECIMAL_PLACES : 218, ROUNDING_MODE : 5 }); + T('3.5', '-0.000000000000000016836234136656116236245888747155935409', '-207884968312465103.92546667003183155349004743814016787619209771690581251838782633379621060886575565127581880243136521306493099115438996244528606756245126860536784058895272857258163668115240455868499988697454936544728911201993827436743165'); + BigNumber.config({ DECIMAL_PLACES : 141, ROUNDING_MODE : 4 }); + T('117556281049621160806398580488777450103025706.9231371026749778', '177418649499828062746944976.623253482097691805631698263957176', '662592581901797675.192119029054356542878625972660828883732257538247146459542105138622765462195773596950267492165848159684757962296110657668557838021479175937246'); + BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 0 }); + T('-0.000000000000000229584085', '4', '-1'); + BigNumber.config({ DECIMAL_PLACES : 266, ROUNDING_MODE : 1 }); + T('-27482.41873121533', '11274.496907749405091612', '-2.43757384086252069184920908789136606410876439249909171626216444592863484859257872878818492441750312637463955391397020600252512398902369463869453693902640114539746724962640936787663540355005527658071033744852920304697987161866722393963513553644509520778179115083456065'); + BigNumber.config({ DECIMAL_PLACES : 284, ROUNDING_MODE : 5 }); + T('-45.31802249709425519435780217290298', '-3204954485815239802179679775.857745927430308955770167235009', '1.413998941253818555331446628537811274724937711349765542477044901735407723110613295737367282379598586135677189145733895798012063594572507530387122047276011072085198509115883863816026552809059911930382105544260114314246121618356211599622126271146827744578365721e-26'); + BigNumber.config({ DECIMAL_PLACES : 109, ROUNDING_MODE : 1 }); + T('-1518950338708895298633061790684963095021043', '-3', '5.063167795696317662110205968949876983403476666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666e+41'); + BigNumber.config({ DECIMAL_PLACES : 191, ROUNDING_MODE : 2 }); + T('1', '0.0000000042', '238095238.09523809523809523809523809523809523809523809523809523809523809523809523809523809523809523809523809523809523809523809523809523809523809523809523809523809523809523809523809523809523809523809524'); + BigNumber.config({ DECIMAL_PLACES : 21, ROUNDING_MODE : 5 }); + T('-36860680116739.4673', '-714191652805514145.216030', '0.000051611748711906638'); + BigNumber.config({ DECIMAL_PLACES : 74, ROUNDING_MODE : 3 }); + T('-11.0', '92.08198182812685918733833', '-0.11945876686854713291580457023363018642967812291603764177490126984299571425'); + BigNumber.config({ DECIMAL_PLACES : 141, ROUNDING_MODE : 3 }); + T('7762759.75385296050386473141400459025886087053461265533345', '-909581896823924676194518835256205735470.48970932', '-8.534426400700081650659814565798223953012951504204402488483850831337582374822797477896402516788073305423040074e-33'); + BigNumber.config({ DECIMAL_PLACES : 249, ROUNDING_MODE : 2 }); + T('-1591271411926.40053473052278004', '-3', '530423803975.466844910174260013333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333334'); + BigNumber.config({ DECIMAL_PLACES : 207, ROUNDING_MODE : 2 }); + T('23086557378499364903404277889218381.47', '-86.0555991350', '-2.68274901465531059815847482673137529484007583511898815856172936050525354348867842554937549793633192627704781826686889407361744469481462753167316031608964057443721381163096820033545165323541617336506851338883540503282326023398965439089438744e+32'); + BigNumber.config({ DECIMAL_PLACES : 245, ROUNDING_MODE : 4 }); + T('-35624.3903', '-43.77456506898309140400458787880752', '813.81483160050904185495580524836686653849135979858614846344672066639081746900539114730668802472802032712780595218383029863019375886636883378282885915029285478620148862606386024679617164086015472306648498744131867932859587517548250068216147289920361'); + BigNumber.config({ DECIMAL_PLACES : 209, ROUNDING_MODE : 0 }); + T('-294670170227705702811369', '-0.00000000000193374334898340771556343604563781725153836596017', '1.5238328829036044414292208426172989183209184987972877669084679287326238824268223796920096163349419047354678444794286139849932979829555213486830249547979681822716113423777410307342180935614199404906965531176896651795514204856922826004012619646609e+35'); + BigNumber.config({ DECIMAL_PLACES : 205, ROUNDING_MODE : 5 }); + T('-19071465814005.294690235272', '-0.000000080', '238393322675066183627.9409'); + BigNumber.config({ DECIMAL_PLACES : 162, ROUNDING_MODE : 3 }); + T('-0.0000000000000000042840562138379106046743677364876924', '1063687959236630279015.386448', '-4.027549787169180858225888937073650927094456773096715135673350189004623192792278599001027630845979465450698694497072376958248e-39'); + BigNumber.config({ DECIMAL_PLACES : 159, ROUNDING_MODE : 4 }); + T('6', '-0.0431415451895770', '-139.077076948314785281086431901487939280144485671249113584170589951140879837116761189681912503218697276078291273363199562501174135968355116292824981547487890690329'); + BigNumber.config({ DECIMAL_PLACES : 115, ROUNDING_MODE : 1 }); + T('-1428.528', '-4016.105413480080402956', '0.3556998268036336236019839154795036575638731219025051906248327348719789958418008313874653788722178165455256345382739'); + BigNumber.config({ DECIMAL_PLACES : 276, ROUNDING_MODE : 2 }); + T('-0.00000000015258178233850394438994250905841879821765', '14755907523277.56634277032360889186640299510604837753256822', '-1.0340386187552674676180995717053737232564985414921072525663046479303516290546819134010340682363818160499550865789495738008179669417921132539131792844147306134743886812917237124265425164077922144534818111568408918206035227258578435157194623225084430640121e-23'); + BigNumber.config({ DECIMAL_PLACES : 64, ROUNDING_MODE : 1 }); + T('-57.6369007429645071825179385904840571', '-0.00000000000251998070491786549064370599326540639921481941388128845', '22871961134656.0228874169640075792992353663071336186120390190464849402168612832'); + BigNumber.config({ DECIMAL_PLACES : 198, ROUNDING_MODE : 1 }); + T('4719535908934856.3188423', '-0.00004590396071295404717205573913226', '-102813261331565415043.593555510997302181233867427985290551695275659397593471781285699080638438522606241559627217355231631403584719339196104541714044624882017919670228131612981213086561134510437891197497983156524326011971'); + BigNumber.config({ DECIMAL_PLACES : 178, ROUNDING_MODE : 5 }); + T('90560574.19', '-0.00000000000272020855863261404655577977', '-33291776067171374153.5540943533184444211410447691379595883136496085169692808045011438164893709653683535108332731017664700664245666237236765678686152489938678460963372424576373927997080122723977923108'); + BigNumber.config({ DECIMAL_PLACES : 129, ROUNDING_MODE : 4 }); + T('-0.000000003602759247', '-0.000000719730493542043086033522', '0.005005705995961868568728717106450635438948371755549645411177827166383370746646160424849871824305534599445074248844765752914200145'); + BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 5 }); + T('0.000000000000000000063462657467310847324181579614903877724471554', '13969995806267346.9', '0'); + BigNumber.config({ DECIMAL_PLACES : 171, ROUNDING_MODE : 6 }); + T('-1.728745149', '-767317068494361925851361076.142570164977510444085', '2.252973666273530096229549790286979780117970186089063237972420102279503859520303271326548392437033536616731345224561019790666069443796853779977042e-27'); + BigNumber.config({ DECIMAL_PLACES : 165, ROUNDING_MODE : 0 }); + T('0.00000000000000002116383397', '-6823032369.118301639796304692868231186795960115', '-3.101822302029452578625626490579297286885018019779182904580999360172501871148189661358829847714617205201664224490931065093207406815423047393e-27'); + BigNumber.config({ DECIMAL_PLACES : 133, ROUNDING_MODE : 0 }); + T('-0.0004848148333238926', '12904816184995616640289106.83115522218980318074075', '-3.75685190996819515204136529412265340589567474735175608258469795499860194982608552080271642438597220858511e-29'); + BigNumber.config({ DECIMAL_PLACES : 116, ROUNDING_MODE : 1 }); + T('-3549697821.51855627492424017', '290982157953066117.4482628012016389965745204297026795936', '-1.2199022257890821446248659415361277198823213590856772993149298379670675001360988681054176609068796708301946e-8'); + BigNumber.config({ DECIMAL_PLACES : 122, ROUNDING_MODE : 6 }); + T('-0.000000000000589896254543183', '-182450.125564367539762047', '3.23319182553848337370053683172914277707287723324418981014560956775014533063194875083593814991638259413198e-18'); + BigNumber.config({ DECIMAL_PLACES : 71, ROUNDING_MODE : 5 }); + T('-52567567268408975665728670459', '-5528146859.45737855527854987', '9509075754468795731.23067171751344965999816461361464529796218412174775983170160347609903732'); + BigNumber.config({ DECIMAL_PLACES : 24, ROUNDING_MODE : 3 }); + T('-7.128160985', '1824386707845419063788460858239964352989420358008454019729', '-1e-24'); + BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 6 }); + T('133731.9168950012128850281530928', '-0.0000000000002348975210018', '-569320256444836795.120657943689337'); + BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 4 }); + T('-1828885852435', '4577369497510613328213004467.4862523980219630643429073057740', '-3.9954953460270867059316053550429e-16'); + BigNumber.config({ DECIMAL_PLACES : 290, ROUNDING_MODE : 6 }); + T('5384962276924.7562', '-3656385265688062076488.8610159317578440532521443', '-1.47275570970539091925240064198808393503364100875127069126594220364228690441920944089764455848379636537284725160364682917827636874926780902198597199254290630859247756413733602899420346140711393097196957739293275522019177795427051028635910732725397954292579436468259390202220758910177e-9'); + BigNumber.config({ DECIMAL_PLACES : 271, ROUNDING_MODE : 1 }); + T('229522331372685919956947636941213450406738405777', '28721824337908628916041.7882819687632375', '7.9912170157572421163737667451055954332362897022080422205503308822050136342594378736058501894053188522333644111075165510849628129643509065127252231218573547879337330491201718325065774957676354101336339798132463847229472902359804448509748875230689090832696250286968020408608016089190806915943220633e+24'); + BigNumber.config({ DECIMAL_PLACES : 80, ROUNDING_MODE : 2 }); + T('6.9', '-149.4151', '-0.04618007149210488096584615611139704086133195373158402330152708795831211169419958'); + BigNumber.config({ DECIMAL_PLACES : 161, ROUNDING_MODE : 1 }); + T('-40840218134364408934771879324224478.145919388', '0.0000000000000000073477184901600845136727313', '-5.55821758673209925541290695401272680473214350128299305493108189726173299818117845506881743385012211620613630018097693973844680507619740667183672017643114514422086357033642080339728200348214695423536813560853343978e+51'); + BigNumber.config({ DECIMAL_PLACES : 291, ROUNDING_MODE : 1 }); + T('12605706179413.7336018312', '591552.451730980920510221774523223995610069098', '21309532.472610568119106423315516425618079661279065633564500459228761336953937661247182038617123827270516078298256526030896984967360669136324756188007889569189524517335240254465978156043649977161219485081250743812542272905731642239618889403866223482333301662567682941922492531309096993515817683719967'); + BigNumber.config({ DECIMAL_PLACES : 239, ROUNDING_MODE : 5 }); + T('-189980552124615498634852.3412680945570', '-98438166259033658191926119099723556988067334644973932', '1.9299481018845270002606424984821256661251127640026552657218981689402118620345772277804362928174596675134369904635534716484532019661569378787224035839752269439438346906126797024189025889242554798404329502307467e-30'); + BigNumber.config({ DECIMAL_PLACES : 223, ROUNDING_MODE : 3 }); + T('63412676281.59012502786', '108437062', '584.78784939405795619822307616560101932676855446341768278450775436907355531266606983505325882030997852007462171927896755446952260657892040638282877859601175841521785236121576219023713497512501768076305866715569995800882174399'); + BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 6 }); + T('0.00000001480319643891516212235956154351000246', '-11392872494815218823394014490229.35482719444421230358', '-1.2993383754318278619672346672281872056429558627141365608245e-39'); + BigNumber.config({ DECIMAL_PLACES : 19, ROUNDING_MODE : 0 }); + T('141019805.5245794482857879701641156255383520086847', '12037849497473127330444746727219.13742079814695496478118532', '1e-19'); + BigNumber.config({ DECIMAL_PLACES : 299, ROUNDING_MODE : 0 }); + T('119790.91139929349140550187348217236477074350558725377', '-5777.042709591300426608239758121800881756', '-20.73568042008956432783242383568890624173925278021387847056403962568560010280639205565758815896562330713607927801972972502586274862079959488911752046494242134509962944654289991533473427653855862679701399756845804030243780967782611774708498946144916920217987349054568600325416309659037783022980538299553'); + BigNumber.config({ DECIMAL_PLACES : 152, ROUNDING_MODE : 2 }); + T('-74255792.01', '11273332303151865455500762856529058.4269545819', '-6.58685382575293402521065454122389727987534301575856973564632115180134424260238975425414484985574343165915358874653525167997572e-27'); + BigNumber.config({ DECIMAL_PLACES : 189, ROUNDING_MODE : 5 }); + T('-1.99', '2.02957886703023899022226515613921936539173455451807', '-0.980498975588885406473946445648953510849056440161659698597036310751221238034779103703880418567450972306385580730431672961731585138039525359894208853302970439152882195974847086075237842378535'); + BigNumber.config({ DECIMAL_PLACES : 91, ROUNDING_MODE : 6 }); + T('-0.00000000000662553885261713805709882997529921268', '917951771', '-7.2177417833176532507597612939288208857325686231504639692012751724404048e-21'); + BigNumber.config({ DECIMAL_PLACES : 109, ROUNDING_MODE : 6 }); + T('39727772236789.745415749', '946.014689422', '41994878812.149085517024235034701213624977960411203827202382884903169217672541435709342895975537328996297696138164692102'); + BigNumber.config({ DECIMAL_PLACES : 144, ROUNDING_MODE : 5 }); + T('-1595.683177902580188', '-12423.0973460576230232424592941920350789759736774350170', '0.128444874370155225701375887885074854165362738492227119742210901355065584251862991433857904300091236546058352594909589629238188878940586337336952'); + BigNumber.config({ DECIMAL_PLACES : 277, ROUNDING_MODE : 4 }); + T('-13.493976805206652118496494293', '-0.16348979253970542348276', '82.5371210984287032613093408457949587368693736972544114140604882723926664186467093312229488466679674328566746900163426115646881522747654468512043240548069515232115505054041043654236586559116321308407785941539806699863332216939080583339071637502536225880211523651412461839262830413'); + BigNumber.config({ DECIMAL_PLACES : 166, ROUNDING_MODE : 3 }); + T('4256019223285.117109486383376260331', '6347253705.59130348694460107880', '670.5292431490464315565006956437035888523526622925340056227797990599033414418301666634838939500439366360217087970207352162016381512343803454554519122848066147363635388487'); + BigNumber.config({ DECIMAL_PLACES : 116, ROUNDING_MODE : 1 }); + T('325654995408953940788811351545601523220557315848566', '-26677382254056155772637251420324566.4784191382920', '-12207157070646982.62023879621977307694573373293924452223056955621477692382163169310098782785439897905655670638191390612196820236007412'); + BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 6 }); + T('-3', '941521578462320.6890776751075159534215216358050676', '-3.18633164510106741091267096465494e-15'); + BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 5 }); + T('-32923697.423', '513696534559174976027235043562.124993789', '-6.4091725772012919164236668786392e-23'); + BigNumber.config({ DECIMAL_PLACES : 245, ROUNDING_MODE : 2 }); + T('15542298519313474911058418.72788768331928021263', '29511759411951889905334398058562085033.084491829576', '5.2664764246549937207087888914081974049031532401831172175740365945958415083991717537075288380475566640317106332244118190767918153345055546048673577292715961083876478499560347073184014288780631047840719212831088296938186648685718914177e-13'); + BigNumber.config({ DECIMAL_PLACES : 163, ROUNDING_MODE : 0 }); + T('-1.12256870617717945', '-0.0000000000000000000445831', '25179242945806358238.8842408894850290805260289212728589981405510159679340377856183172547445108123930368233702905361000020187021539551982701965542997234378049081378369830720609378890208'); + BigNumber.config({ DECIMAL_PLACES : 39, ROUNDING_MODE : 1 }); + T('21212965439.09', '0.0000000000076513', '2.772465520772940546050997869643067191196267300981532550024178e+21'); + BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 3 }); + T('-811.0072717709985104220988105449741680', '-275402309857048314124231166341712916293', '2.94480925810667295583330360825035e-36'); + BigNumber.config({ DECIMAL_PLACES : 60, ROUNDING_MODE : 1 }); + T('9182839.0746', '68850679.253189978618736251808', '0.13337325316473972439557570739378753733468691854769053680437'); + BigNumber.config({ DECIMAL_PLACES : 181, ROUNDING_MODE : 4 }); + T('-201477774196321216539699345869.44341', '4362213780815994556947.2225104487786233007', '-46187047.2929075102200110122139396261424149917096253084092809755489163075432139180096466543838373814559121092334614709185768932599734974855062988675758217463162111422954427524579668577371494'); + BigNumber.config({ DECIMAL_PLACES : 167, ROUNDING_MODE : 4 }); + T('-0.00000000000000000162497948180306124987727256', '0.0000000127628196175968174', '-1.2732135456671428799684241530363339471843648065021218638078868442224903439326677033461828865260973177741496216477520897956921177038969114744220611220290397197e-10'); + BigNumber.config({ DECIMAL_PLACES : 215, ROUNDING_MODE : 1 }); + T('-1099.1', '-319070272161654401441.760571064317512569242883', '3.44469571719658601001722198091244729270089019499654299748251331969283599923290365473093617892225689845095818732374241666866795197379284694299052066619870651198361853249026931810914958359482224346368e-18'); + BigNumber.config({ DECIMAL_PLACES : 40, ROUNDING_MODE : 5 }); + T('-0.000000030444457802993411251880', '0.00000000000000538575320059549682', '-5652776.2541416121645468563480292840570102150387'); + BigNumber.config({ DECIMAL_PLACES : 50, ROUNDING_MODE : 2 }); + T('-2684648478777449095249464885162.42', '13083270901.6469542166649572467997272605933562928', '-205197041241383984713.62344092929525276034444224561252194494442443802861'); + BigNumber.config({ DECIMAL_PLACES : 207, ROUNDING_MODE : 1 }); + T('0.000000000000000008825076533991651133690937331074715', '49838857501697.065449', '1.77072207838856418564359488847778228637386696670666431055887841490967407432774528735148725210571318304572775693241529135473717030777856707077685915816700763523593102371020255623e-31'); + BigNumber.config({ DECIMAL_PLACES : 59, ROUNDING_MODE : 4 }); + T('-123625272191.482431410149371422742706', '92493676964796850.44125446296170082325486889035749283499', '-0.00000133658079393399275278411266929789218347946479983512353'); + BigNumber.config({ DECIMAL_PLACES : 264, ROUNDING_MODE : 5 }); + T('-0.000000000140212864427137205939125189750693043695025658650', '22155390052.012698318', '-6.328611868171538667033374848667266324532595948449808582737249329451673293319698937110336331587700406339681892563755866630832430750615073901097289112895387181329075364673176178589871483017943891007850650173957270122611531049093316129186590745747e-21'); + BigNumber.config({ DECIMAL_PLACES : 147, ROUNDING_MODE : 1 }); + T('83067463598.29947', '-0.00000000910613126665791940460932', '-9122146514892753007.25307779712104966225214974042686574696869979233280255121577231812223871258155921230428381673406249197882298170312132700634002615364382765094077612'); + BigNumber.config({ DECIMAL_PLACES : 142, ROUNDING_MODE : 0 }); + T('-0.000000180596160502695447667203361330505780887313', '-16170334', '1.11683630345975196101208151501697974134184859756143565123639375661628263213363434546249941405044571126360160526059634884474247719e-14'); + BigNumber.config({ DECIMAL_PLACES : 38, ROUNDING_MODE : 2 }); + T('1709.78715732861097348777109', '0.00000000000000002550750771075103328432210', '67030741565078944966.81126156108524563679472368241914097296'); + BigNumber.config({ DECIMAL_PLACES : 77, ROUNDING_MODE : 4 }); + T('-3.9402', '-19451.16121296143267106101495847', '0.00020256888300192674675476394574738203903804914212881041718398712778080934978'); + BigNumber.config({ DECIMAL_PLACES : 120, ROUNDING_MODE : 3 }); + T('16852085015685868216273178583268706959270537', '-8.279679122', '-2.035354844961088120810049259692639929249487284659532244128916859732381305199088124758369108208055988476989193156802145937075361940578353732003480412172427181653285e+42'); + BigNumber.config({ DECIMAL_PLACES : 169, ROUNDING_MODE : 0 }); + T('-0.00000000000015954089825738435141606491172956616684830243193202812988', '-2282.06392289696374', '6.99107928821096822747817981700541416638571761368588755711656665485343962126901791730019652918881078496090659119106369631946376845226228656646928401876201e-17'); + BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 0 }); + T('2658723965607.373643426228569731544749541191', '-0.0000000002228302887', '-1.193160939259409415927498445919997926000618694167674881264918452713023e+22'); + BigNumber.config({ DECIMAL_PLACES : 230, ROUNDING_MODE : 2 }); + T('-0.000001025670161792', '177358.72067465596720082362710534170967140', '-5.78302638793540424118732015688191977938203379499468808076300287671520828824108916250620754932005005147207111576823717875111738860492014468910575747731644732936140664190063060573417083398303296274479988720384527920804785e-12'); + BigNumber.config({ DECIMAL_PLACES : 143, ROUNDING_MODE : 3 }); + T('43.8855', '0.00000000083471640354269637200079292279683344588987529', '52575341533.65326030736186639711903713669724682246138276450276583035004456628921559087539851313965580321243924083223418552540548023654725009934517347488424'); + BigNumber.config({ DECIMAL_PLACES : 205, ROUNDING_MODE : 6 }); + T('69744464973533674437480827', '0.014', '4.9817474981095481741057733571428571428571428571428571428571428571428571428571428571428571428571428571428571428571428571428571428571428571428571428571428571428571428571428571428571428571428571428571428571428571428571428571428571428571e+27'); + BigNumber.config({ DECIMAL_PLACES : 170, ROUNDING_MODE : 0 }); + T('0.0000000000002104555829946104', '260707122664.26821544855529423087', '8.0724907261405961557182695598365682878850140259175437261394871546289916574631753203097799856792251265637259569870329555911204800220026041842496357e-25'); + BigNumber.config({ DECIMAL_PLACES : 150, ROUNDING_MODE : 3 }); + T('-15.52', '-0.0000127', '1222047.244094488188976377952755905511811023622047244094488188976377952755905511811023622047244094488188976377952755905511811023622047244094488188976377952755'); + BigNumber.config({ DECIMAL_PLACES : 126, ROUNDING_MODE : 1 }); + T('-0.000000000006691479923316420761654', '-269215447654129121833832.8', '2.4855482780145693638156447860203068386625148732371475778611069020621957595393031858115547797e-35'); + BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 1 }); + T('-63493093791273308708650506328518413196107086277044337672', '-0.00000000515043959036041389800', '1.2327703815827152129163943525722905688706355755915449037746266713107010518102485820641123862185325367485568758201131275691695047901385e+64'); + BigNumber.config({ DECIMAL_PLACES : 247, ROUNDING_MODE : 6 }); + T('-3658835.64177782026153128822109198750833783004092227', '20.67945951', '-176930.9125322405615199412057115213988655078752066605632479608264191040261864174805021294292038293219395655278419798506619673252765782755218634822047145467197948057008961932970752000084551532846130948032693529522522806013124856569329166185736543943164209'); + BigNumber.config({ DECIMAL_PLACES : 115, ROUNDING_MODE : 1 }); + T('45778051531295128912112577.25515382107', '-590096045233311557913296150095628.1577328331764265837', '-7.7577289156709143373890110544254716492605157877656798994570156268353810414142511002435738518128374969853411e-8'); + BigNumber.config({ DECIMAL_PLACES : 66, ROUNDING_MODE : 1 }); + T('0.000000000000450', '-46819520498356100556.89958075119', '-9.611375665750360153824213948502663e-33'); + BigNumber.config({ DECIMAL_PLACES : 237, ROUNDING_MODE : 3 }); + T('-890676667835024208655.8562559384730393609188968820', '1.268724660886831979041593230958513401', '-702025187413355567917.332631378741137017568745342925049809812167772725546547178177177893219778896765841958659135867183861091608513627472034838554880467502383246547224140694972969450233548193240881496406582468655774475300092581790380126614792423729944474799506'); + BigNumber.config({ DECIMAL_PLACES : 35, ROUNDING_MODE : 5 }); + T('-161583898858161.495243091097703604385260740800056441', '-1031721232402171097737178962857047.50352513377727509247827640', '1.5661585104916705e-19'); + BigNumber.config({ DECIMAL_PLACES : 284, ROUNDING_MODE : 2 }); + T('0.2322852986919915819487', '-4228631479.5', '-5.49315540543290282121875784990594141936269431302662183192026724351967734529560818400940535305401043756288860120330095556154978011485997121163889779438038163996976885296821477252118157770054504462286993197889993620097865990925492754327872141074808455651331486522837346720367e-11'); + BigNumber.config({ DECIMAL_PLACES : 126, ROUNDING_MODE : 4 }); + T('362291709337', '29702.98144911035', '12197149.634884588131898627093259138590396217368507496905900424168440987002718998906655848764209034505964672026155524884794663019047119'); + BigNumber.config({ DECIMAL_PLACES : 190, ROUNDING_MODE : 3 }); + T('19577879840223040854791309921057161620103902883692965226', '1550289603164722', '1.26285306953341181773986800752863568296423539995840489362299595394540800547070720600249950048388235064574185332837590502504535223440086470685375599707071995673476555417932190595002896178753469286888696906345130193195920868416210053e+40'); + BigNumber.config({ DECIMAL_PLACES : 62, ROUNDING_MODE : 1 }); + T('128268741773463976359587229966588766.836519219481523298', '55542856042772090089299997891982741248650398071426.0647', '2.30936525256619136991671889449308284783192345378e-15'); + BigNumber.config({ DECIMAL_PLACES : 66, ROUNDING_MODE : 2 }); + T('3605366393988004038264', '3270067838210037371504447023', '0.000001102535657474770205907291620216720491894675888320040472677437'); + BigNumber.config({ DECIMAL_PLACES : 256, ROUNDING_MODE : 2 }); + T('-5107900606850205.10509537139331424857469927944862218451497', '-55809910067637089534572329.17839895461', '9.15231829017434966062677255809816064581335039416471635068327168150666664320010207736777585390290146335359173570400936577407214402855687751387455824457146249117195986477464600772097935225607535051864006266253137460012432714456993427219667246709639e-11'); + BigNumber.config({ DECIMAL_PLACES : 170, ROUNDING_MODE : 6 }); + T('-210186755512817759902.0', '0.000000016138846800926505007313555572241590', '-1.302365392679427871669903019652757365968408528609718176805559988224718202378440771561804855738159133160238705609950191832437338600449859316657702468980049332244538412273065424239861439746114841537314e+28'); + BigNumber.config({ DECIMAL_PLACES : 31, ROUNDING_MODE : 3 }); + T('713642996381759.0708956605410621006', '-1', '-713642996381759.0708956605410621006'); + BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 4 }); + T('-0.000000000000000039412155477850300674494759057281', '30930044681711744589506752200428370453855', '-1.2742353230790462361031e-57'); + BigNumber.config({ DECIMAL_PLACES : 126, ROUNDING_MODE : 1 }); + T('-95216722984153646974137871155619004669.012446', '-2346132156412237630839388541.441', '40584552206.028059454314637564440437877814822300903317177937403712045180025504844138332743040154443693994780096100973449653841183227890711'); + BigNumber.config({ DECIMAL_PLACES : 106, ROUNDING_MODE : 1 }); + T('0.00000000000000008010', '-42343973148', '-1.891650547765929260597310257863570851894117585982557595022589777691779486578093e-27'); + BigNumber.config({ DECIMAL_PLACES : 257, ROUNDING_MODE : 1 }); + T('-21110631740213789.150281347', '51709.94', '-408250942472.83576717128944647779517825779724362472669664671821317139412654510912215330360081640009638379004114102627077115154262410669979504907567094450312647819742200435738273917935313790733464397754087511994792490573379122079816762502528527397247028327629078664566232'); + BigNumber.config({ DECIMAL_PLACES : 281, ROUNDING_MODE : 0 }); + T('0.0002422764050174274335948315574423519', '4979.981984', '4.86500565254710434701105853322604911656644258253605762442051436947527720212732400117855526764090397962371423711560158126066023936844828553500244951890171336009395491017904855135315284706861300966505665173908388179421975997252925001746351699251448536967237349748613066468475e-8'); + BigNumber.config({ DECIMAL_PLACES : 179, ROUNDING_MODE : 0 }); + T('-301887867798505974609761388735606565332.4414327917145751', '-7896380.9688057948440634', '3.82311680491476885532705197932070439704243382676893190450305477046319579257737500617147163152464991403311152133971009873364640320793083329818783543984575299786203417030207921221390513866621507110943349218019734e+31'); + BigNumber.config({ DECIMAL_PLACES : 226, ROUNDING_MODE : 4 }); + T('0.000000000000000000012381275648586218116297477279458092864906184', '-0.0000000000000213859794471590528297144209516939621923019859775833', '-5.789435868101409898717886783754238396734477374325409573037359950839440519861636040271589865755404020228728328876906872137186554363041565006866859979057011231414765306037820760800308143412855326198877526021613631788414731e-7'); + BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 5 }); + T('-7207521886683991503673062482088593645417658022', '-0.000000000141962486386662859416170445937465277624', '5.0770608983649966933902911723650304777078841612539525923425798611557449528040281575583192345073445230041818721694e+55'); + BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 6 }); + T('-45067323655953518766324676389.4', '0.00000040273759563282512111289380338279407', '-1.1190244999386967411404579059048991017787258853452058206e+35'); + BigNumber.config({ DECIMAL_PLACES : 252, ROUNDING_MODE : 5 }); + T('17.6', '-546940187178.007', '-3.2179021422450182717427400018457412793685338248576080576770120614250788523277884291462520838553103162433514444541441958936748491687531110673675272616804597222438994160480846082855648768279509382083253965434992275261011914009553392394809396736e-11'); + BigNumber.config({ DECIMAL_PLACES : 268, ROUNDING_MODE : 0 }); + T('0.000007779982457407784', '357', '2.17926679479209635854341736694677871148459383753501400560224089635854341736694677871148459383753501400560224089635854341736694677871148459383753501400560224089635854341736694677871148459383753501400560224089635854341736694677871148459383753501400560224089635855e-8'); + BigNumber.config({ DECIMAL_PLACES : 31, ROUNDING_MODE : 3 }); + T('350869895535216933723706156739.47656410122441612', '2989537245424772437710940736115509163.95373', '1.173659555746271060991574e-7'); + BigNumber.config({ DECIMAL_PLACES : 113, ROUNDING_MODE : 3 }); + T('853615488696.88430067100370883523771307947112128638114645614', '-0.000000090647064237067795919913773', '-9416912680861208776.14911575047084587656950474329586820268555071383254994632642150718177250303169918724243863525021179264226171033305'); + BigNumber.config({ DECIMAL_PLACES : 252, ROUNDING_MODE : 6 }); + T('0.00000000000000002110520727', '0.000000000013935384205458510350589084388', '0.000001514504871830735709539628947282121885886507186200880530031189059320698236995623419999457743013451838258222218714718141365483666129864032939645058535242913524519694729177005352821077005981412950406068982368997244414662605734003440173775397993730269'); + BigNumber.config({ DECIMAL_PLACES : 255, ROUNDING_MODE : 4 }); + T('-22663.48', '3.4095', '-6647.156474556386566945299897345651855110720046927702009092242264261621938700689250623258542308256342572224666373368529109840152515031529549787358850271300777240064525590262501833113359730165713447719606980495673852471036808916263381727526030209708168353130958'); + BigNumber.config({ DECIMAL_PLACES : 166, ROUNDING_MODE : 0 }); + T('49445708241272432876427619.153', '0.35844660678329552440268060981', '1.379444171197458299554779339312387309149652227797554138577226515755706745694985348801160476588485092723310605933828890399332952726691750149476122976533039661480039631964971124434450544912190676e+26'); + BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 1 }); + T('1.25130059225890071404911', '0.0000000000004148665', '3016152406277.442777493747988'); + BigNumber.config({ DECIMAL_PLACES : 77, ROUNDING_MODE : 1 }); + T('0.000000000000093697825639163524085163793663571', '-0.000000005371039715417716', '-0.00001744500703843268184158229549330982927869052097542021439702412807851164238'); + BigNumber.config({ DECIMAL_PLACES : 2, ROUNDING_MODE : 1 }); + T('2261595855414439074374436065973193026548871932787850', '42337383750944990650990750649638958.0', '53418413114956806.3'); + BigNumber.config({ DECIMAL_PLACES : 36, ROUNDING_MODE : 4 }); + T('-232621787.9083173', '41087199429196013050768561.69', '-5.661660836952040501e-18'); + BigNumber.config({ DECIMAL_PLACES : 140, ROUNDING_MODE : 0 }); + T('-0.000000018969801236682335996388305979', '-4388885503156541297644054983', '4.32223652748266453959749962375030611685928609409494636023493218408047803036295752118254156706828354897728e-36'); + BigNumber.config({ DECIMAL_PLACES : 254, ROUNDING_MODE : 4 }); + T('-0.00000000000137744075241931218632613106359', '-6238.73931', '2.2078831699401656619727088157334786921878933261598327627509090454366172257965367685799328582620324297538247354656657388045278013067034211435899859710599127438136215375859325655971350404125156497362926356991826286134722304977990817827584464e-16'); + BigNumber.config({ DECIMAL_PLACES : 115, ROUNDING_MODE : 1 }); + T('-1959303.438095', '2889888493.3', '-0.0006779858263173492805436058102733579267267571427303416226242946299079615079901325270971139307107050447661644385011'); + BigNumber.config({ DECIMAL_PLACES : 64, ROUNDING_MODE : 0 }); + T('7019950897.7372695151921954668851', '117.363477', '59813760.4404585722625804232681782254968468597773394188040287865704592239'); + BigNumber.config({ DECIMAL_PLACES : 166, ROUNDING_MODE : 4 }); + T('-0.003169732053907503197517770280538974', '0.000000156625575435089467216331529236', '-20237.6402774726865103378380596161285582299798137396117670272535823698231077710465739224814741588076876336521261442604209960984835023352253624321967597807523348738924684203'); + BigNumber.config({ DECIMAL_PLACES : 260, ROUNDING_MODE : 4 }); + T('6', '-213225.79784407447', '-0.0000281391841919035388433166093861669087355979782195949132797654870938809751849143076609548504380199123964305059886186790326541139082358130877861248322962685834195203522795019544256462362019380739862086538584735278770959498306389775509049463765306473064864353'); + BigNumber.config({ DECIMAL_PLACES : 63, ROUNDING_MODE : 2 }); + T('46018307459476946722640199958866584585936965059580666', '0.7378872289524195128948239', '6.2364959920514225208189707462460938536324054233846307167692004517257770330969118389754942910188566343918487982791386e+52'); + BigNumber.config({ DECIMAL_PLACES : 159, ROUNDING_MODE : 5 }); + T('1758.60', '5.972', '294.47421299397186872069658405894172806430006697923643670462156731413261888814467515070328198258539852645679839249832551908908238446081714668452779638312123241795'); + BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 1 }); + T('-0.00000000000104472613841765779256', '4699961885244795.304715138650', '-2.22283959726886960255714e-28'); + BigNumber.config({ DECIMAL_PLACES : 276, ROUNDING_MODE : 0 }); + T('-103576.266104809732475504797329445668175432877021848', '-0.000000000010206979249125078053239213828423165049856464708256114966998', '10147592502814981.608099461901707761514115696579082515481026939161327890586126063203439088718117414872208077236983832836370281848415122763503751912788549593221131534121660613801321155326870401610733123666239317202039948139364820112571379118404647511829664746447551824719286929884387248945459656'); + BigNumber.config({ DECIMAL_PLACES : 108, ROUNDING_MODE : 4 }); + T('289089783845176115544983362960027936616906135421', '2415465.4623151454823287905530', '1.19682847200842570746470433564921277740325812369454166392911351181253476839087697641651618533204719976318019498765575980962784562310559707313342747638e+41'); + BigNumber.config({ DECIMAL_PLACES : 36, ROUNDING_MODE : 4 }); + T('1.51948206297088', '-1.4', '-1.085344330693485714285714285714285714'); + BigNumber.config({ DECIMAL_PLACES : 286, ROUNDING_MODE : 6 }); + T('37.3712', '-4214373566286140383918948366963469680.5719727857038101', '-8.8675575176722797637891925549550655305221125311630136117421804284615644799017882302066574474219457327639332866882667489404981625138364495820686617272560027434449611133007468516863756261048278416477879231173260431732040719573195221291332551309519781e-36'); + BigNumber.config({ DECIMAL_PLACES : 190, ROUNDING_MODE : 5 }); + T('3459084916327800755999859853533101658210694050493.50737133', '-55565567173194124106832053381436079030630238926246404', '-0.0000622523100600425159258046767264183477860470024105630063674880415988452828179010818540039192472214229844675029568766226667323791735684640679460007367174703494647807739875934006880143501281'); + BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 1 }); + T('9.091718494075587089958936014281964', '846920006.984', '1.073e-8'); + BigNumber.config({ DECIMAL_PLACES : 176, ROUNDING_MODE : 5 }); + T('-108769159009102538970617089802029180606819984591', '19686403949907609184129440659089188476259871920.031864954', '-5.52509027478393313009625967168640316489376795740060113616412036315215161618326216438304078567452621472771603094478601128550466465230325052515519012207085527176440657542811505296'); + BigNumber.config({ DECIMAL_PLACES : 74, ROUNDING_MODE : 6 }); + T('22052389027.33485', '-78659853225.0158801821', '-0.28035126081727313025921625863631334821384768286106477652983827115892524426'); + BigNumber.config({ DECIMAL_PLACES : 98, ROUNDING_MODE : 2 }); + T('-472289.0051023', '7275138392179136204016786909830406445.9522825', '-6.491821593524825929191994686052177926102470330343403643706673549279e-32'); + BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 6 }); + T('-95997', '-1000674930', '0.0000959322524449'); + BigNumber.config({ DECIMAL_PLACES : 197, ROUNDING_MODE : 4 }); + T('18.95', '-328165444377289176426.04865048409', '-5.774526332581603917229492189094958069284594013024686823171718969960332233731097139189242048527869769399128197847178940680014215659273051383909823631914083560903214983109804407646e-20'); + BigNumber.config({ DECIMAL_PLACES : 260, ROUNDING_MODE : 4 }); + T('278994712283340206224.21854159877108206051702828796771', '-34723609863169871132627603777287159670.5040093331', '-8.03472661346941991801387784235950425032188676784988471647100796612576403513593787619302396274728180210718764642331657392208098334098594773199746793142415885916875978151830718150919003516032896586845948873804156021406634084573707035621396568852e-18'); + BigNumber.config({ DECIMAL_PLACES : 254, ROUNDING_MODE : 6 }); + T('0.0000000000000000000972546578', '-0.04988029275454903638282417120256573343325610929278929', '-1.94976116677122881389945277835585419317517470009302289810650076495173549953596809704096966723089562605303942344061695587461758335122678825462932209791291053461267005949334031298444308797612990362103595349927091387693195432735102433011013e-18'); + BigNumber.config({ DECIMAL_PLACES : 274, ROUNDING_MODE : 2 }); + T('26037949.16959376379150517513441005199287', '-44022561370642811786685.69638778683207742981', '-5.914682916873076302365484167189391665819491176490411854183046769038015581635177759387884978205817514539257256691868965751873074552530872030079398462630499081182603118468267592463439706260719969605887188835278192998397668842629934549827921482827639806639590805e-16'); + BigNumber.config({ DECIMAL_PLACES : 254, ROUNDING_MODE : 4 }); + T('-189922524258793.904091812', '1310441193729347545846650.028284831597173783869175037', '-1.4493021523407606074224793842169257897054772924175924798541459480154918742236807615459391201127324439134129605977789832982868697025099901675626974960833269012586261748073729379637811396167574183230904073465042229451672811994714396608371022478535e-10'); + BigNumber.config({ DECIMAL_PLACES : 269, ROUNDING_MODE : 1 }); + T('8.18823120002549907007828445053314159', '-7853110539635870.894', '-1.04267362068803464002038631801823544454457809836451503713389101518939278010752997928683294393382026651645350414376288007203266401450837970127456111551610134339650345871438195850832577378875985585788779170326329630923843857770224283384843698090669406231927e-15'); + BigNumber.config({ DECIMAL_PLACES : 85, ROUNDING_MODE : 6 }); + T('-2556889.80899338225067103085421627945148868', '15770.7', '-162.1291261005143874825487045100267871108245036681948169707115093179123310950052946286468'); + BigNumber.config({ DECIMAL_PLACES : 170, ROUNDING_MODE : 1 }); + T('-1745765992613285237444622197.3462533377', '-1049854.3567414744989123088', '1.66286493112413518040449334373743340570121736454096698647494370246284541430957134925844230406674233408981395991182808259768546619543734993070487448401867107683629942095510291045207823832848062e+21'); + BigNumber.config({ DECIMAL_PLACES : 261, ROUNDING_MODE : 1 }); + T('-828.4404', '129032823171733082535.60543204126299', '-6.420384981404363260952005499506289257407546631909609921551835770845053825828922137905141803951283209766857148573276449940426634687022015720243534325635824564651246340381756708178115004109063998084902261807711991759470479934810915009703648369846e-18'); + BigNumber.config({ DECIMAL_PLACES : 185, ROUNDING_MODE : 6 }); + T('393.9', '9858.7509519', '0.03995435141041743551907119354848544300207498986431516654326288499739416974570709461761548203289693448818643952786389891480711276734975090754630263539236935412741085899506563434482289004'); + BigNumber.config({ DECIMAL_PLACES : 201, ROUNDING_MODE : 1 }); + T('17100474.6470033624819411751910818628060', '0.0000000000000031066770', '5.504426320149588284183124023218977320783589668317626840511581989373211312279969884220342185557108125498724199522512317823835564495439982978597388785509404421508898414608277590492992995409564624838694206060044220882956290596e+21'); + BigNumber.config({ DECIMAL_PLACES : 212, ROUNDING_MODE : 4 }); + T('-982203639402120441618285.996664949754', '-20977019352046787437373594831539784888.129', '4.682284088689101767496127863114841707206611582376296996723978066403411697098086429648889406596665542722372956980749026535912449937807604140100900200692618562464065367132344503949386896546763327170637e-14'); + BigNumber.config({ DECIMAL_PLACES : 134, ROUNDING_MODE : 6 }); + T('14475227', '2014821260.4', '0.00718437277018123726366055175263327293804051423637637926525028244634458890981831531600608277957001847805198988657644204398032964095677'); + BigNumber.config({ DECIMAL_PLACES : 102, ROUNDING_MODE : 4 }); + T('-0.000611679', '0.00000019686629381171931402681051711051656363000724064965465', '-3107.078353316301284844835873925501830130197672042673768991588542825246014136510602221917172848876502274347'); + BigNumber.config({ DECIMAL_PLACES : 99, ROUNDING_MODE : 6 }); + T('783.3', '-0.0000000005479231481682049677376602530177232057364912125123543', '-1429580047162.996541786085197058352270645280499186368943362024219325965984273456045805890262399536136277423288691'); + BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 3 }); + T('4166351.5', '41090838718091189.59548631131809378', '1.01393683603875129619526195200979608739624e-10'); + BigNumber.config({ DECIMAL_PLACES : 205, ROUNDING_MODE : 5 }); + T('19714272147134795647.91883239281421031377430579746757360379', '-635974373425873808225388.5850651425906926066', '-0.000030998532285094658451383721442546892740425669010262098538600374999954084527984169185448974920237247721989742975769378809712226625550199548067226462433830592850463056352796665263716825634528691892059632'); + BigNumber.config({ DECIMAL_PLACES : 155, ROUNDING_MODE : 0 }); + T('69997.135118736383214475966956573491502499909514929387803864', '-0.451705085340016826797235994733', '-154962.02586704705107557384663765928929182378524150151127352941380284326205103847435561970612036290081468585836113192038787180418167351061144309357943121176187502'); + BigNumber.config({ DECIMAL_PLACES : 234, ROUNDING_MODE : 5 }); + T('8976014751.65926576931', '6248540232642.7', '0.001436497872698025798120039826215245596852141969997181952349924656646541925181809008585359357286473104214780341982626555041402494577855286942611527876289357791544556345808339453538622944279816398837801705693961969156205097220106525517'); + BigNumber.config({ DECIMAL_PLACES : 1, ROUNDING_MODE : 3 }); + T('-1371490976879618.65662926741752245918036169608360801964', '1.322', '-1037436442420286.5'); + BigNumber.config({ DECIMAL_PLACES : 74, ROUNDING_MODE : 3 }); + T('-0.000212269787643082190991110677031539365221739458527649', '-909381108184943052504270363131086.37985713567934087961', '2.3342225358821987633602722399538098288e-37'); + BigNumber.config({ DECIMAL_PLACES : 78, ROUNDING_MODE : 4 }); + T('-0.00000000000000025356569319264890', '0.000000000000060551077307488029798101666947384497719375135408730217437', '-0.004187633060680355209107234400451116912062840840606191254582820540976341239421'); + BigNumber.config({ DECIMAL_PLACES : 162, ROUNDING_MODE : 3 }); + T('-234326719750005652006087361103622738', '-0.000000087057668722538597936562221800066176', '2.691626403376686868539418767783174083406922637791778346443262148335713711143713338928015666665436388834450445048717686882619607447483781552818965925727776895165815961573142459598532970305230162733333237131e+42'); + BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 2 }); + T('-771653694254108901612202.7169160265998376872881527024224', '0.00009482650876205682225149952394752969440939785722762368', '-8.13753141740543233641460452710486198782360762555804867393230406117209772e+27'); + BigNumber.config({ DECIMAL_PLACES : 83, ROUNDING_MODE : 4 }); + T('-0.0000000000005107219351354923562024664953531892971314085456565', '-1160011124420.9', '4.4027330806026074008571554857874933855773347657789355794864e-25'); + BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 5 }); + T('-795288174.4574307', '4559973606995642914971163.583580899404618934146736', '-1.74406310869288021106307943769593813236987773488323655344501e-16'); + BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 0 }); + T('-8.612007765524090', '-13999047.2997772612301744', '6.15185275190913571054999384993849034181939973779247534538446163828701e-7'); + BigNumber.config({ DECIMAL_PLACES : 231, ROUNDING_MODE : 4 }); + T('-0.263943140297', '-818576.9698306194778893254825339781067264013652', '3.22441444146193485213250194517867773508755669887704297546778241954593923897941567128764511058857435156966098425947158502415542628311464636164385048393986949014766354437552983179699641755306640774665195216900707661690201216911e-7'); + BigNumber.config({ DECIMAL_PLACES : 89, ROUNDING_MODE : 6 }); + T('2.6', '0.0000009459053499984248899416364525794793966732224608', '2748689.39054455024311508957013802886653557439848477380287527550187431210128103908253032648530489'); + BigNumber.config({ DECIMAL_PLACES : 43, ROUNDING_MODE : 3 }); + T('-151768104593154859724315', '57427038317652308564282015276107264', '-2.6427987414859136287080553682292e-12'); + BigNumber.config({ DECIMAL_PLACES : 284, ROUNDING_MODE : 3 }); + T('-1748845231511693.8807361717038370446032862', '-8668024029496691426707575608787356373', '2.0175823527490157757238932212360895953090598140524870419904046329640290655284692542458356585766620622039498458055487423809587665534291306660806433669807164194043536615966112104954334754782472965346545192279899749793487269420823166516542780851508472232406362586693e-22'); + BigNumber.config({ DECIMAL_PLACES : 281, ROUNDING_MODE : 4 }); + T('1325.40659178', '-40.5129', '-32.71566813977770043615737209629525410424827647490058722036684611568167176380856467939841383855512688551054108691305732248246854705538235969283857734203179727938508475078308390660752501055219448620069163155439378568307872307339143828262109105988462934028420577149500529460986500596106'); + BigNumber.config({ DECIMAL_PLACES : 194, ROUNDING_MODE : 1 }); + T('45114781600358843806855927931600798499353304364', '-0.0000778222166466967324794809548809484357520931491', '-5.7971596729471725646029704109835564712187545693754512950562123697550650286074638380281562528931851764274331620751977535152074849768298567008473490045402734891603038534039003641661685902255333334417697847674614072075386588065975968049310942952503e+50'); + BigNumber.config({ DECIMAL_PLACES : 233, ROUNDING_MODE : 3 }); + T('-275976600932.5996732310744343025336725717', '0.0000000000432797771705404369837199068851730938526', '-6.37657166868342122917582832608735580395947180420812733591498732398467102725171253578696241440488943552525652166805676660718134338698555877652415509224466604810004448768781000266131265048575786043629299808147594052402947784923423804084867730031264541605431e+21'); + BigNumber.config({ DECIMAL_PLACES : 297, ROUNDING_MODE : 5 }); + T('3428275288823.249', '140.3316050325250889289455899246820037', '24429815992.118575586294806462671677334499792697128042486383144200096606525878246271367479990010274251652480635740788790729149526282874785275642117284146859843457494411547447745705755294290421399471178817917653228203182220313104343673909563629999692449453215963299511301490117989076030061420640610696662737125'); + BigNumber.config({ DECIMAL_PLACES : 102, ROUNDING_MODE : 1 }); + T('1295598819672725183443768504932620492590695.432383112', '-425.0747990843755672025470763771598348506866', '-3.047931381637974365833015282411567536659164074344897479003051318599919928637194587091627583094890988166328924090519907928606818539850357023098e+39'); + BigNumber.config({ DECIMAL_PLACES : 87, ROUNDING_MODE : 0 }); + T('42137242731484001.470769626', '7595072.10456471722', '5547971388.732317753317430808974178330725397279426343292680713202218165708256199015504992004246717'); + BigNumber.config({ DECIMAL_PLACES : 43, ROUNDING_MODE : 2 }); + T('-4564746416979756870043297247811.429909038', '9287625891499021342342740.865037869', '-491486.8956078298201183662923566114332423968698292'); + BigNumber.config({ DECIMAL_PLACES : 252, ROUNDING_MODE : 4 }); + T('-65431486230422821154422019104587706263', '-46.34878936', '1.411719424259473713995234742083621626293110150827896403117615324915144666035350356775748155161738187847243481916913654635314944933871299718452883447655168700181988960585010628635759473481099787673073323182049128715365436246207920370155704968773751807009442026125016353609457038901177461089e+36'); + BigNumber.config({ DECIMAL_PLACES : 40, ROUNDING_MODE : 2 }); + T('3460528225527697228490059.1020736685', '-139.0869345490386203892337525827663124694441167221', '-2.48803256520661930591177874206866445631948289295546019982373607e+22'); + BigNumber.config({ DECIMAL_PLACES : 93, ROUNDING_MODE : 1 }); + T('1061223587948058437603866147389396780.9985084605612479200456', '11.0881388300587107809840', '9.5707999711475415048928367278114126028068354361636129068569091869347895252587393927761992871421130476524401952835495682859834224e+34'); + BigNumber.config({ DECIMAL_PLACES : 148, ROUNDING_MODE : 4 }); + T('2061423998368628681610977.4095730690455769815', '92.43439', '2.23014832290084748934998912155212907834084424638924971539272342252704864499024659545002677033948079280882364236946876589979119243389824934204682910765138386265111935070919e+22'); + BigNumber.config({ DECIMAL_PLACES : 289, ROUNDING_MODE : 2 }); + T('-35478049164259528012602794052310.37262570318745851801', '-120.85844886673814720', '2.935504261135984103745235179540829499263088068471534420022963730663410758278110046039014470700781287136966557724408418099034330481887689712316847393721245457503300049717446123602653438945484136323534105583978950070026638208226878312691121881841762308937589640143646018588468950023035733276209299169429729881009038295261e+29'); + BigNumber.config({ DECIMAL_PLACES : 85, ROUNDING_MODE : 5 }); + T('58240249403771631000777.2772383065372126721106', '89334205106617550570827871258178871053.1032269289975124842', '6.519367283143532077186073752825536492973646472801073519547689056279185e-16'); + BigNumber.config({ DECIMAL_PLACES : 200, ROUNDING_MODE : 2 }); + T('-40.34225260397', '9.403262543363267274168919218785868626111663185', '-4.29023994788310742889803172788586500220763588388824254800378486089958356487519450173874239261808451223313911041600422256961513576269041505976155113541372841203198304695784985219159552875947806003769828'); + BigNumber.config({ DECIMAL_PLACES : 207, ROUNDING_MODE : 3 }); + T('44.62359264', '0.00000000000000000509', '8766914074656188605.10805500982318271119842829076620825147347740667976424361493123772102161100196463654223968565815324165029469548133595284872298624754420432220039292730844793713163064833005893909626719056974459724950884086444'); + BigNumber.config({ DECIMAL_PLACES : 35, ROUNDING_MODE : 4 }); + T('103967584366772472.336595', '2754', '37751483067092.40099368010167029774872912127814089'); + BigNumber.config({ DECIMAL_PLACES : 207, ROUNDING_MODE : 2 }); + T('-462555971046251.271344122602855919308768358217259393', '-3.055', '151409483157529.057723117054944654438222048516287853682487725040916530278232405891980360065466448445171849427168576104746317512274959083469721767594108019639934533551554828150572831423895253682487725040916530278232405891981'); + BigNumber.config({ DECIMAL_PLACES : 21, ROUNDING_MODE : 0 }); + T('-32847', '0.0000000000000233491511976819489642385565516074255', '-1406774906800936559.517980211071083426303'); + BigNumber.config({ DECIMAL_PLACES : 130, ROUNDING_MODE : 1 }); + T('415692.3', '-22905092881845710647.21046525047649096618781616152574040', '-1.81484660264998315529359187348996358620192053847002157908168627895250762732773960746130670363611620706796565573076739e-14'); + BigNumber.config({ DECIMAL_PLACES : 266, ROUNDING_MODE : 6 }); + T('-10.8850939943278020', '-1725830767.805', '6.30716185931255721045642445982803498707033528937451147668264872303697189676723246358857957873640888632807115004104149466525392914986234396779693817216752908392502837298203767609009120808394800015314703210220184883152422771161721715449527629763903877627450698e-9'); + BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 6 }); + T('-5828982166839', '-2530842049129393876126061719481416514738', '2.303179e-27'); + BigNumber.config({ DECIMAL_PLACES : 157, ROUNDING_MODE : 4 }); + T('-0.00000000000000602747842966530319581280', '-23433562408877416818725756759901085206127862081710513393', '2.5721562622428644778013955184819204616672887257338672839068268897700165221686673020444e-70'); + BigNumber.config({ DECIMAL_PLACES : 253, ROUNDING_MODE : 3 }); + T('-6686989907764132164847697467.91010577472080555271328404500', '3840104277358797454607051.3716878414419091882', '-1741.3563343033504672028961429350882844099788498086333729167441297917213706486365143891864974783182330623024209824925547467547139517698279795476396133010142739641962484960492840769082977225496839577329137852357621350574915161422221604946375994862780445342531'); + BigNumber.config({ DECIMAL_PLACES : 280, ROUNDING_MODE : 4 }); + T('-0.00000000003902751692084172683', '-12504498346563482', '3.1210781783634981382002718961446159874134497721641183297959243278618714264003419753748418387796581000883888392691538751050780167097508950310957277458852260252274738530204746670572526855414600366124697167159377653841844057360786988812980009007846718984583e-27'); + BigNumber.config({ DECIMAL_PLACES : 112, ROUNDING_MODE : 1 }); + T('-0.00000000000117269146565915247632078746166430393529745', '3463399370659839541.1635820926861206453216907725558034', '-3.385955069443041945170208042711952782299470857991519685678828932435891658115505684e-31'); + BigNumber.config({ DECIMAL_PLACES : 151, ROUNDING_MODE : 4 }); + T('-25.1115098319161', '-0.21967644068496681816745', '114.3113469683713937946156843238326298664685462663520088713697560975106979107142025453921149210455580216758485585857103959170065242500772645572825076570732'); + BigNumber.config({ DECIMAL_PLACES : 85, ROUNDING_MODE : 6 }); + T('-8830341471500879023580257444305688839812107797', '-0.3491487234', '2.52910604555883048191613621243035277837481785190453885531806587152482196359077393665189039038600133687328269349187028990866990522125e+46'); + BigNumber.config({ DECIMAL_PLACES : 193, ROUNDING_MODE : 6 }); + T('2447151306220717.78975', '6954776525480', '351.8662745316352171322737211569150475104131080897673715140561848136814189424199965803557435860858581762522970607454417682877578803614938896151638650941011141626626838598414794855361782953827742752'); + BigNumber.config({ DECIMAL_PLACES : 165, ROUNDING_MODE : 6 }); + T('-1874079115850446978829432532344776929053658368056654', '2.00440383024', '-9.34980809543779201688576659694128867598036589180297674145198853568919929245724509008260135802084137609884634362142327254027369055183571180242627513210134604876287676435786374273397427191298380962527091443939965956588e+50'); + BigNumber.config({ DECIMAL_PLACES : 271, ROUNDING_MODE : 6 }); + T('3309595721.5135853', '13491569197898308418678348.55', '2.453084346948424629527410734568894106615535492037059503924148577389619227603737359727088369570843711133724043687011703961301416281193013274370117678280467171453393323504579886397986049844383624286946170302440442690164073272185249676868724479000011274218554e-16'); + BigNumber.config({ DECIMAL_PLACES : 196, ROUNDING_MODE : 1 }); + T('12.93876502087889', '-7.774802489', '-1.6641921179586238103855193638990460533099723866181419081448771193343687267526160303465941847156292435559516372429354970331774302131728403833925355939675498552719568642407991079707542651634297998949'); + BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 5 }); + T('-44075712087.130556208162637063382162593045726984177432243', '1633151753348657756009830986026131168245396', '-2.6988130157994531025295980860007338998e-32'); + BigNumber.config({ DECIMAL_PLACES : 64, ROUNDING_MODE : 2 }); + T('9561331527260011.860238515', '-1386801682025745223459.08689118931535066678766543059603871', '-0.0000068945197076004923029241479618753856985112741157916335328234'); + BigNumber.config({ DECIMAL_PLACES : 128, ROUNDING_MODE : 4 }); + T('-14.3282790', '0.00013418549230457843461307881151074', '-106779.6432678223023167340906118022954434575578075726562219369094110425569515987966776429639111600297832547723781765761070520612067703'); + BigNumber.config({ DECIMAL_PLACES : 276, ROUNDING_MODE : 0 }); + T('-51.83165388995427', '1081.8055622', '-0.047912171744197258667043669966443809064748770617848095216606383982225008382379714852606809789612301921292524853686687764748858304585263667818845311535041763533650280209291384617730152765154640096931829215917484954488062623865847229972765248183709144548896459722787696348932676'); + BigNumber.config({ DECIMAL_PLACES : 67, ROUNDING_MODE : 0 }); + T('-62256519716149385934020127.46542677407975072886294352999', '-11876862.07527449844404034888226684', '5241832339347976398.2986832735128984206762592415015035098746132828160230474698420653742'); + BigNumber.config({ DECIMAL_PLACES : 239, ROUNDING_MODE : 1 }); + T('0.0033839', '-28017723222276377139799.667397599419452154750208110510672208', '-1.2077712286448469378878071879650813615964361612047393615886594278881080903538967517470449657838356210694332140440899117875935163613376532770138091654226936385922666463209896446556186966830358243694049773549284694056e-25'); + BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 4 }); + T('-5689976.92052713959555', '64864418019484087', '-8.77210818235966351469448859911094562992015457063633724875591976612e-11'); + BigNumber.config({ DECIMAL_PLACES : 186, ROUNDING_MODE : 1 }); + T('-3177288176694802395182792477847503', '2956453360037850385644156506897.97722423096145087654803', '-1074.695856745774857261671032523151808160517894399762101835624715235395775564894922080523610727933160178604528470274551769508330315840324674940964333110394947961508283102906770117688266163231'); + BigNumber.config({ DECIMAL_PLACES : 175, ROUNDING_MODE : 3 }); + T('238254.892691038', '18663341053635.134050251621486505241', '1.27659293159962982973145884977739766882945439086402137678794663634541272576595521064591007820498446992630047787544660893348191681967370578130030405334404915890607347802e-8'); + BigNumber.config({ DECIMAL_PLACES : 208, ROUNDING_MODE : 0 }); + T('-21080513784312.5875809194', '-0.0000000283227172569213694679673374964863081339913', '744297010526454094977.8480955755860858865792637780324063888648701283296217928392639696832503837212786584943280257524113256408225953066925598360259112116742113304645585972873071723544226385931422356071529726570296480881324981525597'); + BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 0 }); + T('-0.0000000000048003708894111750186258056661324741572443755884810290792660', '830770927350206975534871025853.4495416263379', '-1e-14'); + BigNumber.config({ DECIMAL_PLACES : 192, ROUNDING_MODE : 3 }); + T('-11158191.57566175085899924969', '32105907106840146360137208781.566272655424685570053', '-3.47543258582608435436954087928228377351514395561283518785501826162995103831181883939296416823201733488693469657832630324629185907405922890409836229544454883013018681334913e-22'); + BigNumber.config({ DECIMAL_PLACES : 56, ROUNDING_MODE : 2 }); + T('1710604.5260170025116371745961647180445765301364', '-560968243.14313759730585446497', '-0.00304937854669345657270558697711139632828290719202219753'); + BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 4 }); + T('933033911533067981575740796571.089182214611125476', '10712260.7710', '8.70996264447703839019753822394218844221796554579039009467742913294693542706327009746017692421614033167191650323576686948e+22'); + BigNumber.config({ DECIMAL_PLACES : 23, ROUNDING_MODE : 4 }); + T('-4889776737017976', '-26831915.2419617073262596020127958488720039437440396160986', '182237335.38674072242834807428666'); + BigNumber.config({ DECIMAL_PLACES : 289, ROUNDING_MODE : 3 }); + T('2994308611505779749339.98076968508900834542159716', '33729821', '88773332402380.0704231422031467373932504836476054824008701380300832310968979052690496045027929439649264667013797671799088409037213686962643531372431534694477032653093534056999590955433768830258541840468112771781385972964398476944185384203491622442941514572520263300537527311514638633866453071304469715389'); + BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 6 }); + T('0.77114010', '0.00000001544745076048635964683715579904552482439054', '49920217.3845104278359801'); + BigNumber.config({ DECIMAL_PLACES : 296, ROUNDING_MODE : 4 }); + T('0.0000001158784769118582451037900', '-92262.50', '-1.25596506610874672921056767375694350359029941742311339926839181682698821297927110147676466603441268120850833220430835930090773607912207018019238585557512532177211759924129521745020999864517003116108928329494648421623086302669015038612654111908955426094025199837420403739330713995393578e-12'); + BigNumber.config({ DECIMAL_PLACES : 267, ROUNDING_MODE : 4 }); + T('-1905164836259094183621458036793', '-0.0000000000002119191328576672846818', '8.990055831998299280754398020999734599969171684819825456306111223717733602469589230875204517145004450211688103882778288906066024055292868261004790511861574774426913037125572776223194050078016846707609200828779293539775168337517365189566633004654346864854167971267818365476168820219291761044886920712480598235932e+42'); + BigNumber.config({ DECIMAL_PLACES : 55, ROUNDING_MODE : 1 }); + T('-0.00148298079335633960438658541245103786116719422867960710972532', '446099089723666157762121662.2199495195296627803688164969', '-3.3243304627116917320233294e-30'); + BigNumber.config({ DECIMAL_PLACES : 209, ROUNDING_MODE : 0 }); + T('-221661455358.0158412', '-3734926468531111.4012457', '0.00005934827826615602702905532801242019557525866408427474506520094743509070433423637262198575680678092122136081587312962157385925167062213762643400662744666406943535086617458519686154818234078999784450299287576'); + BigNumber.config({ DECIMAL_PLACES : 193, ROUNDING_MODE : 0 }); + T('-487468630455734860583178863', '7233658695240402066159678.1909', '-67.3889453446952294845578835831800685384785750299258689385686510304913401911915485239695068020143233285514706714142721988437466176534558177387249009114319648593327434532847823027143442509783635201'); + BigNumber.config({ DECIMAL_PLACES : 96, ROUNDING_MODE : 5 }); + T('-3518.2465822386713806003560662862139', '18.20148', '-193.29453331480030088763969008488397097378894463527141748912725778343299555860292679496392601041234'); + BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 0 }); + T('28868885283132.483101371744209989312567250440301', '-13.690', '-2108757142668.5524544464385836369110713842542221329437545653761869978086194302410518626734842951059167275383492'); + BigNumber.config({ DECIMAL_PLACES : 209, ROUNDING_MODE : 1 }); + T('0.00008092803856989090972487071983087981392117', '-109847536178733098782550375365898462491167788311', '-7.3673057571553330936236108342591811431042031160239767226738036778704195585923832418358326458431087176636756727400242450961526838248593373264293428948109190011e-52'); + BigNumber.config({ DECIMAL_PLACES : 62, ROUNDING_MODE : 1 }); + T('-0.0000000569405702003177777853', '-25555828558864548264055.74474282403966840416', '2.2280854666544085352967680979046e-30'); + BigNumber.config({ DECIMAL_PLACES : 171, ROUNDING_MODE : 1 }); + T('-2171288.4486', '0.000000000000000000055717014671377488', '-3.8969935151881305595576794102449712477486632548951171103787538034269665435544950511587092848269699275447965569984148843898094563459433486477738307108383221186281253668872345712957638802519665004894e+25'); + BigNumber.config({ DECIMAL_PLACES : 267, ROUNDING_MODE : 0 }); + T('0.000000000000000154352057679285508080118341', '-0.0000000000000008327490018877', '-0.185352437924747686289112485985623951760899942552857077514319074266339417408404071044403097559384968024157334155667794634813015768092750798345376959880386422359912231069858602543416943135076519388094196872160260251796251598842167155848450205169721666073590494798412515'); + BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 5 }); + T('35629224439.64994424509872', '-0.0000000000000011786908400', '-3.02277944568144300205970210135848684460803988262095936878579628225498044932630510643486463337578834497433e+25'); + BigNumber.config({ DECIMAL_PLACES : 133, ROUNDING_MODE : 1 }); + T('0.0000000000000000007265987100666922825305760938534', '0.000000000000000000034968942900303494473927', '20.7784007694549483427480443595448440562265860748106932180244471958482188972338381572078942144109003370023489288836078913802446538237164'); + BigNumber.config({ DECIMAL_PLACES : 89, ROUNDING_MODE : 4 }); + T('144741686718969058111442192.47250397516797195', '-614331853673346614569773445.1792365794386243247729132666413', '-0.23560830494707068951348895602100294027267941568697771020733205213594830445630673695773014'); + BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 0 }); + T('134003403004982799175417212755213263224008578.3709883475894', '916.9146249', '1.461459980743544132943158738302869262304953102847911043166959087730437180858625434277332574368887678541378667456785158e+41'); + BigNumber.config({ DECIMAL_PLACES : 248, ROUNDING_MODE : 0 }); + T('2792105056657.739435078105978624209057218', '-0.00000120336003392343834112697723524762816062390', '-2320257427491880782.15612128857738532345600925006371338603700713948269590575559319799041893051863149715909235241848095174688236969964928266185980950903272554525880773722420021061334142493253067248417227243971138413723410648558033762820672260856277647823190175199648989'); + BigNumber.config({ DECIMAL_PLACES : 292, ROUNDING_MODE : 1 }); + T('-65091467280.383835790953440271622641702327026', '1.059204789467664671466097697415383492510', '-61453146669.6799179059599829916905758673401606316056158856484846822718684342246349479979097775388085917544272956467886944886402095215559197299864944144469993143872440179419806472866788983700256855861932327075669384997067759262890387990032346483310454561393378504352541577289814067303723408831173194342378'); + BigNumber.config({ DECIMAL_PLACES : 144, ROUNDING_MODE : 6 }); + T('-1023348806.0679074798380775219783213362', '0.000000000000000151659939712375133301696361', '-6.747654047658864798589709976003342586651565147892624899992359136285817115084968004669549101164627826980622915369817502835649704114949268508407291103181337647795705880748e+24'); + BigNumber.config({ DECIMAL_PLACES : 267, ROUNDING_MODE : 2 }); + T('-1165840153287026617.68986944747727783910313076052', '48.267069397', '-24153945285095109.866876541236164370543110368995166943095689601351414735033700724434309702948381803119067042619272864489631073260662749493176982658896024625366794568142982878186280533422210249215309325319136280023609820406267082401708881194372381837276351099779616064681541411214094225'); + BigNumber.config({ DECIMAL_PLACES : 238, ROUNDING_MODE : 3 }); + T('73320748375038600850644682237490423304443305401017.0094577789', '526377526816301.14', '1.392930827015086100907904721231632852979496225797366069222533008934593820631811850533482818459100336136735731831376528463931896753604833420775786254048061308043455372473930830227743505530945705321569362495728707850766809999962086380693139491410802069430186999301674597058811e+35'); + BigNumber.config({ DECIMAL_PLACES : 113, ROUNDING_MODE : 6 }); + T('42748478697.9', '0.0000000000000043253341664', '9.88327769677962239583598245427810190106101486346421495300816811359326838067999869023946311294187639763120430333648313050719483942807161694e+24'); + BigNumber.config({ DECIMAL_PLACES : 62, ROUNDING_MODE : 4 }); + T('-0.00000000000011460156257990541054245344333721306657047394882990', '23.805277020198898', '-4.81412430036690624688051063135752691051516271926e-15'); + BigNumber.config({ DECIMAL_PLACES : 2, ROUNDING_MODE : 1 }); + T('-48.29732', '-0.4149111638986017876826399134154088042771769402628', '116.4'); + BigNumber.config({ DECIMAL_PLACES : 152, ROUNDING_MODE : 5 }); + T('0.00000122636345318042979192', '-6606.7238', '-1.8562353903464676272981171091184408223634231538482053692028112330047761342770224479491635475967680077680862033312184172130822239004451798030364e-10'); + BigNumber.config({ DECIMAL_PLACES : 290, ROUNDING_MODE : 1 }); + T('-1115707285226495734659592826355369803105.231111', '-214852116.644230', '5.19290804602114593170397252579872000334370327190953074503451950236511285274622730210996844528026444243674676328984645739203339637730319142795859169646826504321814364261404491412481059750592946810333047296490861370812342286084651495988454527203064362372720805917601831781369897755570956391830568537156007489858677001851564e+30'); + BigNumber.config({ DECIMAL_PLACES : 129, ROUNDING_MODE : 4 }); + T('49652987661086037.5296292215171682253960', '-13701319097835764961648176124149.596057367455124052609', '-3.623956737780753655975029546379676183351150587483199178348626935704386772986645056852675041966308897928321370825145e-15'); + BigNumber.config({ DECIMAL_PLACES : 110, ROUNDING_MODE : 0 }); + T('-0.000000398419', '-699111.71950540209040962542', '5.6989317856360350361079966207736852761119124700408731205507402271211303625616929971009028239272785e-13'); + BigNumber.config({ DECIMAL_PLACES : 9, ROUNDING_MODE : 2 }); + T('-0.000000000000000001464462226612500495907628601', '904089632080463.478000066862013287664215568029871589680703', '0'); + BigNumber.config({ DECIMAL_PLACES : 218, ROUNDING_MODE : 5 }); + T('909542526768456176056.9039088317095826561751542295065394056', '-91528715317691713440596947.07188818303821667', '-0.0000099372368945797869024243894885179647849231211363475234353293277400040279390429701016105501304251053981296805430032358138272167911655588694370026737247770001237519502367834244453088763280055671260580303363780639092'); + BigNumber.config({ DECIMAL_PLACES : 45, ROUNDING_MODE : 1 }); + T('-37675658823045629839327.6939712033', '0.00000020858283046563440689173411', '-1.80626846126018884079357681865934657733425863485985689131722082253812485438e+29'); + BigNumber.config({ DECIMAL_PLACES : 102, ROUNDING_MODE : 4 }); + T('-0.0000000000008051935140777843875', '3781540328791101.78099414160922', '-2.12927390446525247183697072436064047026733682810153455189805242700278780935e-28'); + BigNumber.config({ DECIMAL_PLACES : 180, ROUNDING_MODE : 3 }); + T('-79788532804.3855843186722426', '-6436885066294376933477997093710889.3051043747952', '1.2395519258559436482949012081880847264651623745780336439536272594080277362689298629178733144535860149469047276701410083403243612574394342076604395395337374163e-23'); + BigNumber.config({ DECIMAL_PLACES : 279, ROUNDING_MODE : 3 }); + T('-1.15233980618423550779019539', '0.000000000262317044204810653513315057684632', '-4392927686.713781043665658802704079647291209948732015650288330350130089457081538493345699700649488483211117289494629010243025530170916414954661981597636789845997240316772989193471667398140232270716918902137771289254394804793783830170821128091978572249746936896230647309780857628596586930432'); + BigNumber.config({ DECIMAL_PLACES : 296, ROUNDING_MODE : 5 }); + T('-2635440250307.494374339423692143366', '-1913.20503430950', '1377500164.93065430293729103024316756326271491462644235020506228325736948867543286176349958803432506413914045380299581082326004195021421682941730117321829359502351075893114309049576294052943693535469720518607061902331955886557770604899197645422721759753464884180470235134319880859109216035078495218481223027'); + BigNumber.config({ DECIMAL_PLACES : 267, ROUNDING_MODE : 4 }); + T('-398995078159163783824093908450987512.88678', '13533189345602254479145952362663.97823517257', '-29482.708618779595631311912490468193073725167505217973892316362112984523453004604676166840760827793507582011594563403294849695434675874086880111968025048350658749146438959577844605412802841948673660872923452202435750119123069929560559248884402056973750465608878142689895507'); + BigNumber.config({ DECIMAL_PLACES : 107, ROUNDING_MODE : 2 }); + T('1456841073106834402673058364402', '-9563288512570322533464', '-152336831.74902767953322140533492168547849338573901143359749345511451353409078576515933799850582805558831948128594748'); + BigNumber.config({ DECIMAL_PLACES : 60, ROUNDING_MODE : 5 }); + T('6823114855903180582542653610830039629749314007.91457341019', '511573354536314886209121920731', '13337510242470672.728859518840837799500819453683025969114014507637810443154172'); + BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 4 }); + T('804308622822673252042594266437331', '-0.00000000000017127916952571956504014122391515152365', '-4.69589282251801747072524056790005013329141098980694882904481522034e+45'); + BigNumber.config({ DECIMAL_PLACES : 151, ROUNDING_MODE : 1 }); + T('1327338845330940369.3440913237592551098484769197269562285216', '-0.0000000000000000100708128148990971925011685823459227033', '-1.31800567613294420729059324226791112791721893312050679794233693856880972324721013740879015943598663127566733985517682047825452546754514951887772127658650332732880593220298636429476216077e+35'); + BigNumber.config({ DECIMAL_PLACES : 227, ROUNDING_MODE : 0 }); + T('12809599723874306328578534769132991.413850364570554', '93552681959241474124530331343.217039412570500660081006', '136923.91768581389650108010225305773276536831542420193410798071091442532952747245381630988656768192039773622397820646305499553838364543606435056776697069887808678855170166253841438302622913791696997798926889833425075460417622104427087'); + BigNumber.config({ DECIMAL_PLACES : 204, ROUNDING_MODE : 5 }); + T('92.05770034059258726828', '-0.00068350633871652052280267911147479669255963603602', '-134684.486633229125217604376615567334207228726022455521171642864029090117603616311471771447213553658424365113991266814885624701388727689877284995661020869247297194037263226378735346047283582271402239274627645712'); + BigNumber.config({ DECIMAL_PLACES : 73, ROUNDING_MODE : 2 }); + T('327.83958026464581667019173', '5.8388838271372963836980726', '56.1476456751803340795992076616782297591294867004211964493385476349442238983'); + BigNumber.config({ DECIMAL_PLACES : 163, ROUNDING_MODE : 0 }); + T('10151485093.13558', '32082406615206935762889249564492835490.2958249076343285415727', '3.164190646571948754494164868068685254870663897934497411075459212737349374361508675609394079887555800528727933031717867383389584213738297e-28'); + BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 5 }); + T('-0.000000001416146620903033732150372087413820928589152648292511191785', '1808541258342889907972831260108293782', '-7.83032521027806036966513935535044237e-46'); + BigNumber.config({ DECIMAL_PLACES : 190, ROUNDING_MODE : 6 }); + T('-3.970180705', '4283020852569477484425.2', '-9.269580610652880975553277102990123209568049596218445401220280846349150800083200622476066571961139462999336769617051143673132898574207458057109884231273064007618382385787e-22'); + BigNumber.config({ DECIMAL_PLACES : 231, ROUNDING_MODE : 0 }); + T('-465403163396251155924610402', '94693648471.277126245632734649418747702413262546442853', '-4914829779078785.745522257726399792574241912533618479616275646498931721538962093999738434326372960554938847878482068857038560126215073679417152411438671356963437181078388352153640620328770501894440910882944774789661871451975337378463498692245540049'); + BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 1 }); + T('22784528', '137433232463170293229014656091.94917137260989993751930', '1.6578616097169842596313106206568537878490407196e-22'); + BigNumber.config({ DECIMAL_PLACES : 165, ROUNDING_MODE : 1 }); + T('1508891859829832195943020078113860719740059', '8427264227598.14255930651475752', '1.79048837093349567082839342340165478991791187033570768831222601661950614620881880281108997158442988596564789856390531839862903958538966660995006571221175712128493312928391510525049740705784554667e+29'); + BigNumber.config({ DECIMAL_PLACES : 197, ROUNDING_MODE : 6 }); + T('-2', '33052345174297530737690561696525075090819.1454', '-6.051007846654277445481381127100392180493461628111763888819589149854336397471882009909893828920905967409894607022380336644903604617331795364861543784543857896e-41'); + BigNumber.config({ DECIMAL_PLACES : 144, ROUNDING_MODE : 2 }); + T('19166443511349220734772320190057933029658', '-248410421.960797578899574112784500636525110606492113', '-7.7156358256071626421946828089961251848104408035722055184738308436850079786677819889455814428497990568651098248146500104096217189478464864520929840652994007030514882685896702292e+31'); + BigNumber.config({ DECIMAL_PLACES : 177, ROUNDING_MODE : 5 }); + T('869990945706127527941951.6028964', '264809219315230415350762164563884627537914716510461', '3.285349913253908694977615253205313522510309402540499671135205471547719045915829993299043276187394972360009815212407188218163514093845186015359182656134e-27'); + BigNumber.config({ DECIMAL_PLACES : 179, ROUNDING_MODE : 6 }); + T('1.8967364206774576', '39042043197378509277.36490403759503157', '4.858189442310781996978618315371724779315976888728376071753132903265063924033431239723923186120631212722357968803810142584877732858170322358714466660436764688927e-20'); + BigNumber.config({ DECIMAL_PLACES : 243, ROUNDING_MODE : 5 }); + T('-127020205694.320072252', '33175946.51398854664452', '-3828.68370133049110471723677265828691882007244137459849148798319455734349287887603616566424440989978287501021937066058498924323885417711325379379463394850829390147505292381428119749615347236918937394847286266333502899796772910994119263665583146416'); + BigNumber.config({ DECIMAL_PLACES : 106, ROUNDING_MODE : 6 }); + T('995833.0', '-71436513031902123918710.026147240160934246677296', '-1.39401121042299589316481093373783347104285713377297550860450237655536185116559232149990921e-17'); + BigNumber.config({ DECIMAL_PLACES : 168, ROUNDING_MODE : 3 }); + T('9960245080825603121369571764597175075392172082272442.2959690', '3517164318937025947332571456.6808240054', '2.831896430655203379010042620019114749340599702558126540940914590566990412655839023657834467548851544248079962047559911628059257497547087987138327283131471498982466333748683153400156972809168989e+24'); + BigNumber.config({ DECIMAL_PLACES : 208, ROUNDING_MODE : 5 }); + T('-9876731185802258.2041950981685631561679801432694971185775360', '25555073661284826594464196186322357634450162887923799643648', '-3.86488073433543296192731481260672277307051469727164232987761801218915334990305136402773600753633619592459863678436794172026865503508652583376490432776528624447154406e-43'); + BigNumber.config({ DECIMAL_PLACES : 216, ROUNDING_MODE : 1 }); + T('-80104044547726619487150250632400996592.71', '4272.12', '-1.8750420060233939937817816595133328790555976892034867934421317753246631648923719371178712208458563898017845940657097647069838862204245199104894057283035120736308905180566088967538365027199610497832457889759650946134471878130764117112815183094107843412e+34'); + BigNumber.config({ DECIMAL_PLACES : 52, ROUNDING_MODE : 3 }); + T('-533009288906627970576196.2140677599821354860739', '4323.128068', '-123292504992389221668.5994818110856812432247551681830028080491276345875766'); + BigNumber.config({ DECIMAL_PLACES : 112, ROUNDING_MODE : 5 }); + T('-2.304177311150875227399745240724', '0.7827323864847599213', '-2.9437613045486758856056120647071522765307303317354334273788543602211922467393766378263152630511660086265141043812'); + BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 5 }); + T('-15757239374307854529803752212135410839205625.5095942', '-153372.40', '1.0273842865018643856263416502666327735111157880814409893827051020913801961761046968033e+38'); + BigNumber.config({ DECIMAL_PLACES : 117, ROUNDING_MODE : 4 }); + T('-22873603522632572608881934832185522999858', '-5.4', '4.23585250419121714979295089484917092589962962962962962962962962962962962962962962962962962962962962962962962962962962962962962962962962962962962962962962963e+39'); + BigNumber.config({ DECIMAL_PLACES : 238, ROUNDING_MODE : 5 }); + T('1.5', '16.52', '0.0907990314769975786924939467312348668280871670702179176755447941888619854721549636803874092009685230024213075060532687651331719128329297820823244552058111380145278450363196125907990314769975786924939467312348668280871670702179176755447942'); + BigNumber.config({ DECIMAL_PLACES : 107, ROUNDING_MODE : 6 }); + T('1539204014.2471351835803', '151.4109', '10165741.13387566670286155091872513801846498501759120380368916636781103606147245673858354979727351201267544146425389'); + BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 6 }); + T('-7', '0.23', '-30.4347826087'); + BigNumber.config({ DECIMAL_PLACES : 6, ROUNDING_MODE : 3 }); + T('0', '8209230482735460739165186919608149282477470698.2294', '0'); + BigNumber.config({ DECIMAL_PLACES : 140, ROUNDING_MODE : 1 }); + T('-0.000000000000000000366305078080800693730700231992405389522682478', '7573.3', '-4.836796087317294887706815153135428274631699232831130418707828819669100656252888437008965708475829559108974951474258249e-23'); + BigNumber.config({ DECIMAL_PLACES : 295, ROUNDING_MODE : 2 }); + T('-146.828450146824261470512713254756545536706012403919', '-2815589250628612087.6276213220856058132107827928', '5.21483913585915105735562444285912806140058931853713521740460168303513600371076271799398361239235995441791985696356368950454780176530371750911781708107043329536604156147712430154939691939218413269881214834836092467547838854117538071365673144696622106569007601450379007764482806099e-17'); + BigNumber.config({ DECIMAL_PLACES : 253, ROUNDING_MODE : 3 }); + T('4512052524672305897.265', '-1.8', '-2506695847040169942.925'); + BigNumber.config({ DECIMAL_PLACES : 148, ROUNDING_MODE : 3 }); + T('-0.00000000000000034362273847356363118876924', '5060658.7069537365150528928', '-6.79007928358020683444648292494539904606294894775127848688501939514515634155387729832273768343261121220907783647236617946983388e-23'); + BigNumber.config({ DECIMAL_PLACES : 31, ROUNDING_MODE : 6 }); + T('29584612', '7650501680259620757.82500929209', '3.8670159469850665256e-12'); + BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 2 }); + T('646304382575445766656839911090754', '-9148327617.085430116961', '-7.0647271242058138680633500159104055166439e+22'); + BigNumber.config({ DECIMAL_PLACES : 254, ROUNDING_MODE : 1 }); + T('-3518675702504903072849000894068849825144.04550897025314', '0.00011257304003184599779106351', '-3.125682402740032892348602449400727106773155867864740358040696311851215410941600069428017367819515323122665135010254120082918699421870646135274025286054615730592114337431878423493538647715953190243317164292049665233617651339998766154390110154864465465421154558745741279046960497564843584046885985152e+43'); + BigNumber.config({ DECIMAL_PLACES : 78, ROUNDING_MODE : 5 }); + T('0.000007627485649576687977948632632860', '-0.000000000000000001070915397423760605917602397873082686921788', '-7122397967127.646311926470197392560654705419469647370537358465793959152137726466118190529871'); + BigNumber.config({ DECIMAL_PLACES : 55, ROUNDING_MODE : 3 }); + T('78448720392088325568153240870741230', '-225.683', '-3.476058027945761336394555233258208637779540328691128707080285178768449550918766588533474e+32'); + BigNumber.config({ DECIMAL_PLACES : 186, ROUNDING_MODE : 2 }); + T('-955580.4286602999395381199708647876353752088274639645460', '2308830210418995525528188784616257012374815957.4471484847', '-4.13880771460836762090822812448952247857193141177901649634837191989696162967613192232796316148960798341406162621040048927307855250075780082528848609e-40'); + BigNumber.config({ DECIMAL_PLACES : 56, ROUNDING_MODE : 6 }); + T('0.000000000079890549573400209160151699521092756991271729762941451', '0.000000000000000034223621070685574534769411054519363538517252796376247', '2334368.69255868678976612159761060389346642283506161858161083226'); + BigNumber.config({ DECIMAL_PLACES : 220, ROUNDING_MODE : 1 }); + T('392612.0385', '-0.00000771322780807567554574944613911', '-50901133516.2354417708251692552125085477579615119932380144211358906899606110554765569646198387407301584456498931592995249838402498049991140248550128087021278571863547122574930316354407132299952209559089519028557587891244707617693805'); + BigNumber.config({ DECIMAL_PLACES : 226, ROUNDING_MODE : 6 }); + T('-16165760656715270945449.20', '11739360311802910962496.82574517924', '-1.3770563495237468315611292717072871722828542738767818161481929374632943157783094610685524312107471094651457084909686039611424402958382877271680633467400222148604724510781819920959433511985578942327565058522196139259283144564826'); + BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 6 }); + T('-0.10742409258651041437592142', '740443732.776', '-1.4508069665707939812775376029905143691315099815767611283e-10'); + BigNumber.config({ DECIMAL_PLACES : 173, ROUNDING_MODE : 3 }); + T('18334486488933.71818600193026', '-0.00497779489229612', '-3683254711299790.69472913835749036474152498149832157095610540001503904250210449184057638706664664243096832609376659291993862179095742768407776463164703901128047499470567292802946532746611102'); + BigNumber.config({ DECIMAL_PLACES : 173, ROUNDING_MODE : 4 }); + T('-169.211464771527865854667597189789202157', '-207863104972306339678126461763328401499174.35669', '8.1405242548489765516705633011568534975738448321155198096150599940351703480180572220311973953069989762960067645428582069850004977379662e-40'); + BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 3 }); + T('-4900478.0062417814076688110824', '-5183481028346496739', '0'); + BigNumber.config({ DECIMAL_PLACES : 241, ROUNDING_MODE : 2 }); + T('-382384972.45206392942023251390', '1.8621126566852593208270898519899470948019288807309513549598', '-205350074.3251196059517081286768166001687724134586187243415322283131112184630210382941333111621921845286064018978475277815759566903427949736669849609499572640981965516051499352769710482818966175458505605208966970468485753842204120505245279253907805798'); + BigNumber.config({ DECIMAL_PLACES : 250, ROUNDING_MODE : 6 }); + T('1.6033950', '157773312887888617232452.615166', '1.01626502648096688808885795466311274662353690805206632535320280038646985382353142458366424079548341188330380007934396600142682064751849155511107926997010556056411335626546575938027322497367274697905331832951906139866418111926931e-23'); + BigNumber.config({ DECIMAL_PLACES : 243, ROUNDING_MODE : 2 }); + T('-0.000000000000024390446132763317501799186808123', '-0.0000000000000024354', '10.014965152649797775231660839337685801100435246776710191344337685801100435246776710191344337685801100435246776710191344337685801100435246776710191344337685801100435246776710191344337685801100435246776710191344337685801100435246776710191344337686'); + BigNumber.config({ DECIMAL_PLACES : 200, ROUNDING_MODE : 1 }); + T('8.949256091778713416170336309585927', '-43008284888707.48280038127255', '-2.080821431251373754814499907029371730352966993428672863906646674096708362709492363642217924752489432535460090943985374364641805148191609138738073328969757095738599687411085195662649012224e-13'); + BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 2 }); + T('18151693389219154844', '-592994940854200428966333872416765666', '0'); + BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 1 }); + T('10671521912.60667718', '-3024025622624891.3456608', '-0.00000352'); + BigNumber.config({ DECIMAL_PLACES : 185, ROUNDING_MODE : 2 }); + T('5555656927652001106840363134907735956048033.836016280597', '2685506242203580183806014224551572002073098.48081277379609', '2.06875591661009566816977833083780350234457412157752718904474731856705838607234088404595371810042544568346884729968885236693445088564691418441019321720748173396897313212434579346666991599'); + BigNumber.config({ DECIMAL_PLACES : 217, ROUNDING_MODE : 0 }); + T('2.9', '0.000000010181819887079948514752232854449658976070', '284821380.8692399779070875087772384638067450533772092269132336223510842187598584158556549024889239940050693282697025539090545926350671722284746095741123733162997837478788306693323573641756556850011157543869286195074599971462832'); + BigNumber.config({ DECIMAL_PLACES : 135, ROUNDING_MODE : 1 }); + T('-3668.93876418621891233619783410276079274711495027795209501', '162988.89', '-0.022510361069311036551854533361769386813709296077039067478832452935902563665535730686919826253188177427308082164373289492308340770956842'); + BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 4 }); + T('-4010277866851.50068', '27234712318840966.38253364350322623014516951710394626', '-0.0001472487691407407145898084930687792129497134339296916237025'); + BigNumber.config({ DECIMAL_PLACES : 122, ROUNDING_MODE : 5 }); + T('8.102188223851484323844340549478', '-0.0000000000000004195', '-19313917100957054.40725706924786174016686531585220500595947556615017878426698450536352800953516090584028605482717520858164481525625744934446'); + BigNumber.config({ DECIMAL_PLACES : 228, ROUNDING_MODE : 5 }); + T('101066361587081.237795041132080784151662054701', '-257312331557433009609776883.75453240003575880303096299495321', '-3.92776984201874030615107607567103526808277180288080272777505065283222319685695700758169673799188082672350927719231465634048337408327667103561182032875072504960716517175222617441892628023599454972201808083721814472225e-13'); + BigNumber.config({ DECIMAL_PLACES : 24, ROUNDING_MODE : 3 }); + T('7.0556320038072082229252602780', '-15504182652402646.4413', '-4.55079263e-16'); + BigNumber.config({ DECIMAL_PLACES : 292, ROUNDING_MODE : 2 }); + T('-17971633.8197599429906', '0.00000000000072444175060445516360', '-24807562243292692471.5663234061467186799864528993333315852513700731685270144891208065879125718993132968525127360803805813806975273460804298287743355060498501697470487114941400057032058166324121919574399010655184635124552427006839896177716886467257201446426054622642030940056084459367696125930734507840625793302262'); + BigNumber.config({ DECIMAL_PLACES : 216, ROUNDING_MODE : 6 }); + T('7738.1660360868845160451665257', '-0.00013322685446', '-58082629.567826280089486145822646032920531358164139905641663229583090766308857278112456607796728131203226187766288871667772917859521457923341260878704078652162152083884004657299480010555823791683327265430057050676688325078391'); + BigNumber.config({ DECIMAL_PLACES : 258, ROUNDING_MODE : 2 }); + T('9542252.9492073016487924', '-298.5208', '-31965.11917831957320492374400711776197839480532009829800804500054937545390471953713108098330166608155947592261577752706009095513612451795653770189547930998442989567226136336228497310740156129824119458342601252576034902760544658864641927798665955605103563972761697'); + BigNumber.config({ DECIMAL_PLACES : 266, ROUNDING_MODE : 0 }); + T('0.0000000000000975125214469340841699893980567675388687742530368069', '-0.00000001148768872931098176730951514125236598', '-0.00000848843694712319838366658450360791643626601576660960889784368089967445990540019793195644880675265919312989940350934939057591033945093601894142676408794632249741346584699025031667943615669681250164400946134971022381325666049668573820379043934993559074372461881237'); + BigNumber.config({ DECIMAL_PLACES : 140, ROUNDING_MODE : 1 }); + T('0.162194827931997338728669312400303856617210365987328978465167', '2623516118358157462098460478.3811723452565119574874', '6.18234539506095031216263229216523168638254707932597128419287812998721307505199639410335078779694583526697941729e-29'); + BigNumber.config({ DECIMAL_PLACES : 162, ROUNDING_MODE : 2 }); + T('-2059692816797520379.32842416453296', '-12964127.2753715000848947850354508669649149', '158876318709.891546744316310394864047495425378327410507201874903755769032658054249861925189372821353920699812490827867514735429449171802287289068638336250267160043818229820423'); + BigNumber.config({ DECIMAL_PLACES : 283, ROUNDING_MODE : 1 }); + T('0.1406934802917583885630752629806', '62667.219426460', '0.0000022450889249500247590193479664257778255336779588529003922703526817168222409078658356042819731349161949708289990136671786988264944723086110991979668131760414141394303539478675646256521833168369878149802399309202930970932634782087084011676697387518594564070573519569509169449295645'); + BigNumber.config({ DECIMAL_PLACES : 215, ROUNDING_MODE : 5 }); + T('176248024513059823373194289840565927902352.86', '38.7', '4.55421251971730809749856046099653560471196020671834625322997416020671834625322997416020671834625322997416020671834625322997416020671834625322997416020671834625322997416020671834625322997416020671834625322997416020671834625322997416020671834625322997416021e+39'); + BigNumber.config({ DECIMAL_PLACES : 6, ROUNDING_MODE : 0 }); + T('76455549372627137533803060035463866722472396559608', '-21131.89651', '-3.61801645850607743364360532898823413376977571425784e+45'); + BigNumber.config({ DECIMAL_PLACES : 181, ROUNDING_MODE : 4 }); + T('0.000000000000001135478555683957706303513555462359', '189016966284140000', '6.0072837798964993072829358730209731598369888466198213610171055146478207626503126100359698662414225938118284270540405919797956454070946483927169088392e-33'); + BigNumber.config({ DECIMAL_PLACES : 146, ROUNDING_MODE : 4 }); + T('-142219283571886530729398730594', '-380575073116.33401952748452383263252', '373695739995070573.67226573743700415270692911992196491865319849810652910152625659145875000291338564642791685801818688506705202501418506516688339959731985528258559282'); + BigNumber.config({ DECIMAL_PLACES : 227, ROUNDING_MODE : 4 }); + T('4.64704', '-113.6', '-0.04090704225352112676056338028169014084507042253521126760563380281690140845070422535211267605633802816901408450704225352112676056338028169014084507042253521126760563380281690140845070422535211267605633802816901408450704225352113'); + BigNumber.config({ DECIMAL_PLACES : 274, ROUNDING_MODE : 0 }); + T('21459427321746135387.3702529390027221334446', '67497.732766399482159783161817146867660120927', '317928120578720.9029750133284438224559146706091088705985299404418477748542993137160586137448853914641138705825744759829365714695336888738466247648116155976899562989458218232552756997250792891197249845116756234257939037807888079628140065759592184047139872124822303289269063928647566571092337'); + BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 2 }); + T('-0.000000000035432725433359029849418222952863128809828867205625722', '-297913391087344615896316467611573', '1.1894e-43'); + BigNumber.config({ DECIMAL_PLACES : 132, ROUNDING_MODE : 4 }); + T('13592077261045786588042900790480874993069896724.51', '-1709631102395704692.8133645882281', '-7.95029830821352022772024744598055088210575090053257820400303479970758903263578867251524731757531943220074711936359339635075091337771287393434924401467755980575e+27'); + BigNumber.config({ DECIMAL_PLACES : 162, ROUNDING_MODE : 1 }); + T('829.42257576637751660492485950362157', '111.1326', '7.463359768118243581135732084947365309549133197639576505903758213161574551481743430820479319299647448183521306979230216876056170736579545515897225476592826947268398'); + BigNumber.config({ DECIMAL_PLACES : 218, ROUNDING_MODE : 5 }); + T('26411720916340393.207751155', '5506', '4796898095957.20908241030784598619687613512531783508899382491827097711587359244460588448964765710134398837631674536868870323283690519433345441336723574282600799128223755902651652742462767889575009081002542680711950599346167816926989'); + BigNumber.config({ DECIMAL_PLACES : 253, ROUNDING_MODE : 0 }); + T('17261708.85913600793736159161167742', '-85482890.0523260', '-0.2019317415282722382239676088907393151680198761941505716321111416422415339774786450609525768085355498148994356693552607915492401323983601961997705549455663693859472247079026635614949988995600486551357926021378607613820063617400527183345111689652557204457'); + BigNumber.config({ DECIMAL_PLACES : 132, ROUNDING_MODE : 1 }); + T('-3', '974600880689632826443562516081582.2139098370', '-3.078183140853703990357711769812026186512353369190086524932148100756279408052597515604293473601517885e-33'); + BigNumber.config({ DECIMAL_PLACES : 193, ROUNDING_MODE : 6 }); + T('45356052342566412697400812327077958846504613', '67538307534082258099.767035610038138495013', '6.715603928878158230041124255214648345667892573779674667803726766009674324475543077018515978647504489470427431412131426703920884145599401841503088786322763717526811984193256171085110801948249806043176350072300046126174e+23'); + BigNumber.config({ DECIMAL_PLACES : 267, ROUNDING_MODE : 3 }); + T('-17762788846003453381', '61568.9541290053055226999', '-288502364499892.554690307576787650187549555673232897435499322188524169949848746784598012446601239035142749036410151753986934077586374498294725785698368832178210337801050546922644148319494585991617779085830056772604231371177970566725288535306174015228066208608076191387185512913492008'); + BigNumber.config({ DECIMAL_PLACES : 202, ROUNDING_MODE : 5 }); + T('-9942592813945809', '-423540485384145468480063747315317576972', '2.34749525890730666281482900648209824556464116660343656918826028894231787562187379971191855418324369430721985739979640780395648777454629061898551719712051609800578424543848324768824e-23'); + BigNumber.config({ DECIMAL_PLACES : 290, ROUNDING_MODE : 1 }); + T('0', '2', '0'); + BigNumber.config({ DECIMAL_PLACES : 197, ROUNDING_MODE : 6 }); + T('13302381359621554467656583', '-115022.186', '-115650569878941045927.05778518241689477193556380505583505429117822539036077787636552134385621918192373773873502977938534397181427242219166309358787529911838051834626060749706147994787718605869653703156015483830223849162'); + BigNumber.config({ DECIMAL_PLACES : 99, ROUNDING_MODE : 6 }); + T('-442471201414302445462006221364668630397900156747.65735', '59674407734815.001544409919396048797575990', '-7.414756479537838582945380691144444660725379430037394146551147261640192140085511469139554468901202598378831488181988845112847410733284e+33'); + BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 5 }); + T('29331354.27070268082207289305372553429476135102240044497', '-2091561072639.33038179945969784', '0'); + BigNumber.config({ DECIMAL_PLACES : 292, ROUNDING_MODE : 4 }); + T('9118746645777384605851341529854699343.1078649850526400502', '-2.82374850794705241', '-3.229305520698434858826322493589979206358643902355429919362321390430329801321221282743618003100856587028890918220116872565565700130928168624496828239415123585758428952631806803677318960304632474943280591680787917400210546486620831152662105365273691209124248128660654417236292906866589894609934712513693175215638890610125046436352e+36'); + BigNumber.config({ DECIMAL_PLACES : 132, ROUNDING_MODE : 2 }); + T('-75767603073824579636732878.60830667581364469489586617', '48721890266574824673213498217977935729.303665345246312959', '-1.555103930887595327515969372024528263003147339000537251022806156470608360385103819538945290638404040414859408137918678947e-12'); + BigNumber.config({ DECIMAL_PLACES : 62, ROUNDING_MODE : 0 }); + T('0.00001057915609291582521418293339567933198424243088533', '0.000000000000855401471686587510704914879', '12367474.73915025745767491397343145568563578255237433592282196392770624'); + BigNumber.config({ DECIMAL_PLACES : 202, ROUNDING_MODE : 3 }); + T('123.733252579139418919030', '5', '24.746650515827883783806'); + BigNumber.config({ DECIMAL_PLACES : 192, ROUNDING_MODE : 6 }); + T('-5670460450363806561944175150218603462.45', '237623661324161217984833314937787177510', '-0.023863197876697486254202731921090655916785245853713803659660900866816149928948576049275832117606225854444947216651605306499360092208653612924601288005351624694995262147477365095952977164724558'); + BigNumber.config({ DECIMAL_PLACES : 131, ROUNDING_MODE : 6 }); + T('-9062095756784282458668427780.0433054150815749626275435765479', '320.7758098', '-2.825055842719061061401902438605676123861374462853134873933969568300034574489912175416165062706046981975384603954633988114399267272927635829477064264588445285e+25'); + BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 1 }); + T('-0.00000000000002559582791709', '-5346890.3', '4.78704938402981635886563821965825631395504785276780411971421968391608857208e-21'); + BigNumber.config({ DECIMAL_PLACES : 149, ROUNDING_MODE : 1 }); + T('2.7462028447340143813492102960710151500582482395278967917', '-0.014378813342773459473', '-190.98953295156362687304003245081036038745328333087398801304938176323246884377243513087165388642606975948923130755279418548871199955621738186233643020687'); + BigNumber.config({ DECIMAL_PLACES : 143, ROUNDING_MODE : 0 }); + T('-2388816615532673533361613193322.022886690915', '-1162756.6', '2.05444253383096129780008403592120903608796114337256825719157388571262463700485553038357296789371051516714676141163163468605553389247586296220550371419091493438953603876e+24'); + BigNumber.config({ DECIMAL_PLACES : 156, ROUNDING_MODE : 0 }); + T('-35.72624', '8979760.9461162681647706770485336761911423', '-0.000003978529073811429247606739529684407520439393359792509636952684761754187825079606700025103811740269270519900208997076832992186785427657903645156908362892'); + BigNumber.config({ DECIMAL_PLACES : 89, ROUNDING_MODE : 4 }); + T('-21102980896734514069.74641484030925718667967756412', '-411366393698.5788509880915837134260203328', '51299720.20076422352733601325135757218760670832863785816145885313612176208358213282099040407670795'); + BigNumber.config({ DECIMAL_PLACES : 149, ROUNDING_MODE : 2 }); + T('-0.0000000000000000000857942', '-149323510112533679075430064.88220889733813237379723', '5.745525264932728300562215911707874500488713513394074754508420454148407744599533305751093263991520298839e-46'); + BigNumber.config({ DECIMAL_PLACES : 214, ROUNDING_MODE : 1 }); + T('-7.01389529', '-170766268435115632110512762.04', '4.10730723009562063103039027679778113006078206691174918289494074299420055183319828658391882328272297988767506775477811322591274028612459068096262703396918978176993456365120526434366584262544e-26'); + BigNumber.config({ DECIMAL_PLACES : 248, ROUNDING_MODE : 6 }); + T('0.0000000000007340044381532477529768539197482138873581471', '-812619687', '-9.0325702157551562367803417461163956191249289780005046813491733679841305641417471590249572676178592261942086076976867531883952498925859766919479025617059656591854142465539356296692821816904861671164508718086225740184411751766974e-22'); + BigNumber.config({ DECIMAL_PLACES : 122, ROUNDING_MODE : 5 }); + T('-98138866', '887913', '-110.52756970559052519785159131581585132777648260584088756443480386028811381295239511078225006278768302750382075721382612936177'); + BigNumber.config({ DECIMAL_PLACES : 186, ROUNDING_MODE : 6 }); + T('-13199203667167823812', '0.00000000127825968245584296366', '-1.0325917220364012939087160411460057098934786354552912480166665258832928079221415255098438444510364283253921082003837234118142939055265028757705297603474353405718975990306520198513381884861802654771707794753718030606e+28'); + BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 5 }); + T('-0.000000000000000008252596880488606318233830518207282931220945146961874653', '4.0', '0'); + BigNumber.config({ DECIMAL_PLACES : 122, ROUNDING_MODE : 2 }); + T('311899.2496', '-142050897187.306379259288918434433252839170431619408248', '-0.00000219568658682059498318020498495863423063649170779155010388237623009321866831668416029300549544555119398839313117715563'); + BigNumber.config({ DECIMAL_PLACES : 197, ROUNDING_MODE : 0 }); + T('-899049538242046286', '-150643546283313.7', '5968.0587746601070631567503432302860175845682515987170518213674868978232776548964484775468845174875611589618604973506607685120748566818825260292673845137842745953223655700670901466411540944578671908652'); + BigNumber.config({ DECIMAL_PLACES : 164, ROUNDING_MODE : 2 }); + T('5533337901390587809.79574358', '-0.000987568800386493303416273452480490900997620823', '-5.60298978585093998357843546467132979777594694510448034823516459881734039680196055554964379985123768492603771418368398642708641373005039917961598281759136751437074739356709192637293670302e+21'); + BigNumber.config({ DECIMAL_PLACES : 234, ROUNDING_MODE : 0 }); + T('26180563908932863610909287', '-0.1208792569233627146774085438', '-2.16584421308374733831690893198998994972717433544296813055264156238894122425665572894196345494556883235730588839206891028754554689708463651823422156975409076397009143309563562332527365030377059675685396472331081714389454799408470116779187957937623517879630605002e+26'); + BigNumber.config({ DECIMAL_PLACES : 30, ROUNDING_MODE : 6 }); + T('61310275236913800', '598047502740321547859591108273.6', '1.02517400300115223e-13'); + BigNumber.config({ DECIMAL_PLACES : 103, ROUNDING_MODE : 2 }); + T('25105.51396482290116342046309715665', '-361134266899802217610069225931.63704381274673', '-6.95185039634815410513977245227841130749665095900068916971268869602164190768574e-26'); + BigNumber.config({ DECIMAL_PLACES : 26, ROUNDING_MODE : 3 }); + T('-1.38681922', '672038', '-0.00000206360238557938687991'); + BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 3 }); + T('63348372957199911.551749694548357719036470867702', '16216660366241327772', '0.003906376006312247788587132691339369157766917620803466'); + BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 6 }); + T('0.000000000000022955', '0.000000000011585442762125490207390508073223469', '0.00198136579423992824656487415634032754727570950749590359266700942597622350669782021'); + BigNumber.config({ DECIMAL_PLACES : 195, ROUNDING_MODE : 4 }); + T('4275777172005941344244434.707755460', '0.17508305452156496745', '2.442142207131355577414744211434928363843057421874272303084593488123913253022015612207385947732342648771669844650740642167401879736270428229355078054320765846967579336189114009373129535751442277110184503912484523792865823e+25'); + BigNumber.config({ DECIMAL_PLACES : 182, ROUNDING_MODE : 6 }); + T('223099698004028435390543346369353999273727237', '-382959025456.6', '-5.825680638758359524882241656616679688711074048025173423375270539418287561447624584491812445785912571858444437206915987869256142844257672677414892247264208487837993645542554066835922754615112335432595452324114613747e+32'); + BigNumber.config({ DECIMAL_PLACES : 5, ROUNDING_MODE : 5 }); + T('-4222241040740745182174499811156187.24809043324', '5484715337605.72313230', '-769819540458394382268.42922'); + BigNumber.config({ DECIMAL_PLACES : 243, ROUNDING_MODE : 6 }); + T('0.00121766778329132124219386288082477004017618569638774546798129', '135361.52733113069735232', '8.995671128271021856434496019603376799245122550024256524760532534659579046440323549352079964018705774551628860626874092557166887044961719866979025129109063471805771591775924349655343760009892944712072498971022148857971070382146043409244e-9'); + BigNumber.config({ DECIMAL_PLACES : 36, ROUNDING_MODE : 4 }); + T('-29.69126406417232764365281867234228725032768317', '-0.0000000061896202523816506893875836995940340025004792330025', '4796944376.797216559723487849079072295274121421'); + BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 3 }); + T('16981970476423093128815155412180624.49143555605', '0.00000000000000000003516450712407880988978013520561856111228842804326581136', '4.82929290505958223782860433683966471420124949383441757628300879625365450379079094264641511946049356869951375878799905359816373460129493012e+53'); + BigNumber.config({ DECIMAL_PLACES : 182, ROUNDING_MODE : 3 }); + T('-0.2272017125206851495671211156140', '-0.0000000000000068195452657907516548907', '33316255507593.62331026774988946996619276605420745678721035707677750890846815352758617488360680501124786587700311719102155565520646110616431806127494059385852749809074513884474832308582512490107213'); + BigNumber.config({ DECIMAL_PLACES : 158, ROUNDING_MODE : 6 }); + T('0', '11809720.4495574', '0'); + BigNumber.config({ DECIMAL_PLACES : 2, ROUNDING_MODE : 0 }); + T('0.045491129411361787', '-153624838165477244600574548551921312753229.8707110971450178', '-0.01'); + BigNumber.config({ DECIMAL_PLACES : 270, ROUNDING_MODE : 2 }); + T('-212959.320106167939', '-49517387416634629408826935639006310.568', '4.300697819825353398347007512679350383374321186347683671042336937263050642578446259635534707353878947073451327186776365214863326172487360959526166095644263534689156653312455804047960091225651057575472627043851681091986767423888386716331578518e-30'); + BigNumber.config({ DECIMAL_PLACES : 139, ROUNDING_MODE : 3 }); + T('-7847330.58', '-1976985309068564680048827526871576339604.43', '3.9693418782647328939318721495965566120976862338388612226698610218259502332617228403481309333560361728716024e-33'); + BigNumber.config({ DECIMAL_PLACES : 106, ROUNDING_MODE : 3 }); + T('-8988.631590', '-265.707639073', '33.8290296107387444679980452268297137608506276157830154971488789929300144566641870039103932149822056689393826'); + BigNumber.config({ DECIMAL_PLACES : 247, ROUNDING_MODE : 6 }); + T('-0.0156527814519736690639741902408204272252694906865011442255906', '2613062806550695879698624732.9561805737668086821', '-5.9902048327095923403726362953721862498926659612726930178232522041611199327876040095586810456385744447078115676964504010225050395426045739125487229810113754206859335878359908904415693135098956172837513199786294897788649e-30'); + BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 1 }); + T('88604695212042184730647326586102405707636303', '-6832948397232988727.732', '-1.29672712365166946691190624889138100466055179316813243528738822617160013588188709677302e+25'); + BigNumber.config({ DECIMAL_PLACES : 300, ROUNDING_MODE : 2 }); + T('-2217970.01266', '0.000000000008384762036013568225075563050647', '-264523906955683444.525670971423292764069156404980999011088710210052361611656674471144119063588436076932903881289342036777451356252228389071183166368113332574070438483896361388600223343284634760876384627261648322397038130563687746642323735843376989210789485976684919139115415174234807221412418170766452318781475369156753'); + BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 2 }); + T('21259981664254395017814019985992718901028251171.056085844', '6592974422373310068.8046975352', '3.224641914597526967746077143881926952325076843648906889544999960217260558879222214661907863690354233223885025261e+27'); + BigNumber.config({ DECIMAL_PLACES : 238, ROUNDING_MODE : 6 }); + T('15273355225419786282464482.7182808211399', '0.000024842173179136415806623356255064218549288715', '6.148155845820704202638997820824089665356112091068693661317846905908212891505562283795846722418189816633262704999389780246483678927186170978163171781362373565813962341223100824848911221293702114414020866286404409063735055331318301005689391685528236047365792023239366921e+29'); + BigNumber.config({ DECIMAL_PLACES : 296, ROUNDING_MODE : 5 }); + T('-32942856416160.6254410068065507966469486', '-1354205422219646903.651822968655', '0.00002432633622317413894713635654596975735563706052736384690663246575090719595904671583305943358238878789584488608555306976925080617152899831590614649838624886282040452689515845098062552707681103828133482792775977170516537911266568470328877879031403664710000018016755946949499721274136754969752328'); + BigNumber.config({ DECIMAL_PLACES : 270, ROUNDING_MODE : 6 }); + T('-1985428052909.872403846592', '7977499455506690364301316694951258.25935', '-2.48878494318088056690916663361759515082273322293946509724498616946968178129739307538248941675750348039715194736517231749092346179519771372420746933372593127737956638051461690676543514604131663633247477631561893206451406436721610236366849106872966163e-22'); + BigNumber.config({ DECIMAL_PLACES : 166, ROUNDING_MODE : 5 }); + T('968075567856070217500255506122089297235', '2678374985233514131539878.905540', '361441386360494.4570753280128035034061543732762526017045197148269408890626289361009885035636697730030520657547690656029078221848514432926782873805670352343953416939680931297739843376'); + BigNumber.config({ DECIMAL_PLACES : 23, ROUNDING_MODE : 3 }); + T('543731619083314243004', '-0.000003711', '-1.4651889492948376259876044192939908380490433845325e+26'); + BigNumber.config({ DECIMAL_PLACES : 137, ROUNDING_MODE : 6 }); + T('-0.00001915939761660051442926290816554006973466772', '1.091053595368939785', '-0.00001756045504815165740716492578382181542277356497744937711656254334438217521245641404012238398074868749271215691050134687705544734580041'); + BigNumber.config({ DECIMAL_PLACES : 21, ROUNDING_MODE : 2 }); + T('-5642757788313.97383562537970269152821623817307112843376', '4293762849467357272.622705869809589', '-0.00000131417546477071'); + BigNumber.config({ DECIMAL_PLACES : 23, ROUNDING_MODE : 0 }); + T('1597867934.622738380483', '-0.000000000000000128848510530738023395330109858863986420175251', '-1.240113624939072900125261036778809203819840398417e+25'); + BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 4 }); + T('-8777898032.8632272', '33308079129708.15211726337829337207051436947767161', '-0.0002635366032'); + BigNumber.config({ DECIMAL_PLACES : 237, ROUNDING_MODE : 6 }); + T('-0.0000000000000001379179697978904907960107167726287103359641749409818356817067', '-0.0000000244952749758450602', '5.630390756335343880228632534717399149361840657285468531201614343418043525866901580043283877338401118232788292401929906445770226870986824793803258770822745556155030526484894814792033968209531430925202738087493626476884855566342479e-9'); + BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 3 }); + T('-4141679446066006627.9608886985073686154333', '-18961285.58196199793057399601386162829090039', '218428198244.4278419557623014002680683546425619603795075142017856682454017101284558622024703'); + BigNumber.config({ DECIMAL_PLACES : 168, ROUNDING_MODE : 2 }); + T('281.2871454231', '269668474827252576513591170.7613857955918559791389', '1.043085016160269564393708548028105270692651627252178204951610873882611202843068009604545879719649886994839396140702961359026379856819456170861045e-24'); + BigNumber.config({ DECIMAL_PLACES : 270, ROUNDING_MODE : 2 }); + T('2.7229559967662288866', '0.00000000000058567854965772063953794886918', '4649232925394.93781860935558322515658671598971733145713767131559798128464232545855209712553601477831957190853267901869606413497736397235584282605970751924251350623748749516399995053411332671306372093280431669198414462385346008200006420521025445267909188893831345342476960129794326198'); + BigNumber.config({ DECIMAL_PLACES : 83, ROUNDING_MODE : 4 }); + T('426859069.1', '-984718042022771699.6791573112854062545212199345225', '-4.3348354644052397982223661404408100746970500739115441010077264264405400229e-10'); + BigNumber.config({ DECIMAL_PLACES : 280, ROUNDING_MODE : 3 }); + T('264510322.9', '-2580.779257134023536', '-102492.4243981024847755716572314312118932470242809696371038317717409907354978897931700681246528783691991416483947730164654155062499089173914408547236968126774849733585850175963409178877774006857628821910533643409563410584746192997324020088386891544990186760127044869962464068772918837138'); + BigNumber.config({ DECIMAL_PLACES : 99, ROUNDING_MODE : 1 }); + T('820945094966845928402907835763', '0.00000000000000000018795332944109846489672721718082863422', '4.36781352800731763704872593752206560118514222957381423873618379816877840082798224148170963378467986617411826798499503895101943968144438544390648422e+48'); + BigNumber.config({ DECIMAL_PLACES : 6, ROUNDING_MODE : 0 }); + T('8428153740583528916.3939030414220235904495005', '-1188827687011.6003982742558364557112236511301', '-7089466.23019'); + BigNumber.config({ DECIMAL_PLACES : 32, ROUNDING_MODE : 0 }); + T('-410274998.10230531554114', '3', '-136758332.70076843851371333333333333333334'); + BigNumber.config({ DECIMAL_PLACES : 80, ROUNDING_MODE : 6 }); + T('285.19260815', '-4501418027858507746954982832272073804456.43697586735', '-6.335617051893239703154004415551094101945459e-38'); + BigNumber.config({ DECIMAL_PLACES : 74, ROUNDING_MODE : 0 }); + T('1035567665050591124.44398372571422734755', '0.000000000000000000123091976846972400512913592312045541945831948111786420277', '8.41295827377933765468287219421677194106919450426442791848179371161311178569205798998241174358172210632895585442e+36'); + BigNumber.config({ DECIMAL_PLACES : 214, ROUNDING_MODE : 2 }); + T('-4558141974675690505097770234721323909071', '0.000000000000007409728192119573241614850440140493050609101139', '-6.151564344186586670592542650950104254277652215431759443150476481624188483156733429937657983911624366022455328190289175907728294638844009178183254105443006945083513427844368843307416077579187634715522435004896987702900347493978570633797208996490897547052618208370420565e+53'); + BigNumber.config({ DECIMAL_PLACES : 77, ROUNDING_MODE : 2 }); + T('31407764315159662200067885019895402826186256783', '-0.0093371062', '-3.36375785413682691111169807835059248080376945728645562583405123955856901359866721875777743643956839646956141507740374635558927e+48'); + BigNumber.config({ DECIMAL_PLACES : 137, ROUNDING_MODE : 2 }); + T('-15830122567704120.68178392631374', '8945452942567.67418368693312139322725286117', '-1769.62783990234629332620451072118507080025723758839849455597512218550064802710005390298535482592120540954277625242238959857234513106009978151'); + BigNumber.config({ DECIMAL_PLACES : 25, ROUNDING_MODE : 6 }); + T('-1378523278084878860818889390.35524411345', '0.00000000000000355', '-3.88316416361937707272926588832463130549295774647887323943661971831e+41'); + BigNumber.config({ DECIMAL_PLACES : 37, ROUNDING_MODE : 3 }); + T('-56899698397757607696096590.382779113568929997430', '0.0000000000000005023618207651734114590528811235569722409458', '-1.132643764828519777755606928628467323773596578184307681163857859565768897002764e+41'); + BigNumber.config({ DECIMAL_PLACES : 263, ROUNDING_MODE : 3 }); + T('-0.0000600118439103493561923673561608022055894287240725267', '-2560824499779271761474401685834016654899.38799768005660', '2.343457894733591838253729742409168473565323412287521265908224954493873196011703741327411823466070576491299928032956081000949633079376137909369156454292574446212432716398088837873294371434838632093502894558754404881169283e-44'); + BigNumber.config({ DECIMAL_PLACES : 182, ROUNDING_MODE : 6 }); + T('-0.000000000002187655945906377', '-28717988545296791672168052', '7.617719961325962154170436496366890092278947197761856630651737112401104934775011012406803752742097272794591198670068215068387535565015504650380691e-38'); + BigNumber.config({ DECIMAL_PLACES : 148, ROUNDING_MODE : 1 }); + T('-0.002056280363595356735', '-30.748129838', '0.0000668749733537975290957596352530401332046046891029132384529382641928468104968069050209791168893398374494011072153974686881572937112429790436479423'); + BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 2 }); + T('2.827', '-5.316325518146', '-0.53175825866'); + BigNumber.config({ DECIMAL_PLACES : 134, ROUNDING_MODE : 1 }); + T('84354313385837246179388', '-679225881660.52987760535672379030', '-124191842012.2816609448835112993626132706299809213176145910414427985934837386082563483576028725394970339459568493134350028837910841774878107786831'); + BigNumber.config({ DECIMAL_PLACES : 129, ROUNDING_MODE : 0 }); + T('-15.3', '-24166770', '6.33100741224416833528022156043194849787538839489100115571919623516092551880122995336157872980129326343570117148464606565131e-7'); + BigNumber.config({ DECIMAL_PLACES : 113, ROUNDING_MODE : 0 }); + T('-9203391503334882761646016027858074063491.56605', '-264910247', '3.474154589171057154933691948827511403698765208580247935822580694660708990996486443953978118483276337740155442156225840520242314371478427559655705e+31'); + BigNumber.config({ DECIMAL_PLACES : 200, ROUNDING_MODE : 2 }); + T('17100448156828327.6070351527899412372645', '86001744566119445049', '0.00019883838686180655106704412234097880540687425980093361120412645135461909586742035306583853047398486905365559795765954559523258329214134967507484126229782499580692999451336753772923203427776524078068'); + BigNumber.config({ DECIMAL_PLACES : 199, ROUNDING_MODE : 6 }); + T('0.0041158504', '-30.8580646417', '-0.0001333800563253099046022016875967065551874350748712852645291112803340252133010036088053347815215066861501473163530436354092693293354978901272291063158428369687628983187295271949420546605154336431231'); + BigNumber.config({ DECIMAL_PLACES : 264, ROUNDING_MODE : 3 }); + T('-359201865759621599231435137737', '1485.9589705589306066149306930020942678', '-2.41730675527676868575525826254677992165271049611384971326913736849832913224704204989878957127813717915721483155415827217687680518964578718293383647603487233966988632478593915232687906285924518504808390308905275083955966027462428384027699310885682065271729258191638124369565506600037108682617e+26'); + BigNumber.config({ DECIMAL_PLACES : 226, ROUNDING_MODE : 5 }); + T('0', '26112552580415548829.454813109202677552874497', '0'); + BigNumber.config({ DECIMAL_PLACES : 226, ROUNDING_MODE : 5 }); + T('-352671804.585', '1696.936620673873342381940242796294603372107765309823463323', '-207828.5071395005367092943298259789255338090919326321297461039650049780577689566616688127047378217065014720325013595202248319085784612036270399131145872774307933536677752594787945158629775706821378690743247333183853076996281060440264'); + BigNumber.config({ DECIMAL_PLACES : 128, ROUNDING_MODE : 5 }); + T('-0.00000000171269930539969704231', '944703678610869243454463118341824', '-1.81294869934043216662712864317188499436091872940027912243236517712674869223869442589695e-42'); + BigNumber.config({ DECIMAL_PLACES : 179, ROUNDING_MODE : 0 }); + T('-0.265047986082328558', '-1.5484184', '0.17117336378999923922371369392148788725321269754996453155038715633965599995453425249919530793485791695577887733702983638014118147911443056992864460923481663612367303307684796305702'); + BigNumber.config({ DECIMAL_PLACES : 111, ROUNDING_MODE : 3 }); + T('56067417504154742805378148469.1607375730360427549902974889', '-181863217772701087328761293012.050295848971748707507832637152', '-0.308294432435643649946833209129017221267704219884703436832735239183109309530322216003726792980686210344360978492'); + BigNumber.config({ DECIMAL_PLACES : 282, ROUNDING_MODE : 4 }); + T('-47.4069', '-0.000000000000002021317102553366582955', '23453469987521845.770524425967851124105220851572124236393028040375453875179222282083506894282959800509051503740098321211966567319530880012655344017265829834672622891855747079730825302100785006564711199823504249095919069992545937605688638351150429254101824529299512127014362783799114227314523917225154'); + BigNumber.config({ DECIMAL_PLACES : 129, ROUNDING_MODE : 2 }); + T('6380562805224216321260.19489976232092622', '1599761301096557306629452702423789588634387419728821325.1779', '3.988446776935193935438503918750269693335791615700466575490296006026433080928697191401948927916667e-33'); + BigNumber.config({ DECIMAL_PLACES : 221, ROUNDING_MODE : 2 }); + T('1759056639967675.7096306059015137317304452971036149514', '82452115158542856489311002394', '2.133428155948792544669300003342644889432951927589651270845053344391334796806087512268873641217314349652757018141990599665445263970630705999453435387813576226832967761787849111410410275753779129580827233445522e-14'); + BigNumber.config({ DECIMAL_PLACES : 183, ROUNDING_MODE : 6 }); + T('10.30', '156821478703373851919657687333409109426.068860537782891113', '6.5679778593864299233319236990231085902197603352945852251007005121305096179541728395065617082388193866937934802418388056490459565984353922398236818e-38'); + BigNumber.config({ DECIMAL_PLACES : 168, ROUNDING_MODE : 3 }); + T('9.39532707', '21865273.0762', '4.29691732513812655458153925363231041630342078407524736843972405580726236290242559271202192789195584681851282956445695359890453395040960673021498369389754440866149e-7'); + BigNumber.config({ DECIMAL_PLACES : 194, ROUNDING_MODE : 6 }); + T('-119958353.7193570616189121', '-1972901787460625926621548.529192315776947', '6.080300321171011333426560365578141445791070323044439490519457009806595686695357112349221523209400827863042675502130313222239789015881844803819730658282899030447646599706459051113e-17'); + BigNumber.config({ DECIMAL_PLACES : 96, ROUNDING_MODE : 1 }); + T('-3290230424586778368943368053029', '-121499567081947.8450551824040501304428540', '27080182288778163.190297462835528090510910737945317336860651066448862309152531317901947591887703962208030103475078'); + BigNumber.config({ DECIMAL_PLACES : 59, ROUNDING_MODE : 5 }); + T('-0.0268369550987462340036470753353527368958953020', '-10', '0.0026836955098746234003647075335352736895895302'); + BigNumber.config({ DECIMAL_PLACES : 289, ROUNDING_MODE : 6 }); + T('0.00000008464940', '-10814673.84221270527272783306942794070834532', '-7.8272725775223705402694117848921764898564758899660002174687237921588809219075870706055215191312105090918077053774782323861506209813727823317747835406912771028381852696380348476521778839522350429687391826774400311985425246775291735676477975510714438552767986649934466040459725e-15'); + BigNumber.config({ DECIMAL_PLACES : 71, ROUNDING_MODE : 4 }); + T('-374583053453.43897699560661370517344768134808858', '7.35168056713086916977461163418913570274616', '-50952030632.04186780174350221868264243105324832475807166296516121504551294423226386'); + BigNumber.config({ DECIMAL_PLACES : 94, ROUNDING_MODE : 0 }); + T('-60071719106610.2288352018331254', '0.00501998197978963117195067655466', '-11966520865703906.7310651460580073640208855847319225457998060130294731523775775336527002724567433709940800935076'); + BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 2 }); + T('-622937646596845153117415.75517279', '3912077.728493156745922613054201249680710895947', '-159234475854033337.13275028604163009953984261467058037081661119902619958495804913257'); + BigNumber.config({ DECIMAL_PLACES : 201, ROUNDING_MODE : 3 }); + T('0.0000000003646020432572001838626', '1091531741592615708576273272712644952873506719196148942.633', '3.34027888850233636794793072976170197689582848190194124033860398017154371786146741274972470232764995941108890323423767978599685699677641512e-64'); + BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 2 }); + T('-695564016100349916786276554070274602.368205', '0.000021807846099224461245', '-3.18951267784802380689318180163770317827267046257893070426032298566217981904220838148e+40'); + BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 1 }); + T('0', '0.000000000002462', '0'); + BigNumber.config({ DECIMAL_PLACES : 141, ROUNDING_MODE : 3 }); + T('-26340743870367645066258596290350402911506188.407', '-0.00000000000000025325800938698501312552543', '1.0400754524654848646413132865851741682776669340730924517775375597395665102029050181283877767316791189917566940367065462948761838783791952694210626983209654782068564314578852174268865774528453410795459e+59'); + BigNumber.config({ DECIMAL_PLACES : 295, ROUNDING_MODE : 3 }); + T('3145971493533908639356752.3428829203594366775324617', '1411910722903870720901.9163857', '2228.1660182193407935460697068090646470927063977363713900785292388938060452858375531142570291937800918940925004936303064851208377159576859064540159853441191146012610331094316843809482006352190151093789826744863843747902949203936046617256816050811055369450531035784306407360714168539332747598487861082'); + BigNumber.config({ DECIMAL_PLACES : 86, ROUNDING_MODE : 5 }); + T('0.000000000000000000020540434276369914412', '-3977804531558458498337024128175243085272903773.6939696', '-5.16376159597827354009e-66'); + BigNumber.config({ DECIMAL_PLACES : 104, ROUNDING_MODE : 4 }); + T('-665896129011017549213856625332.23967335800795583', '3171.93522', '-2.0993371012508179445539137628801879294306898103360383255241889839099551345818468512102841747190536886185210301993494053765700801418e+26'); + BigNumber.config({ DECIMAL_PLACES : 294, ROUNDING_MODE : 6 }); + T('-0.0000000000000655182506467117431031071292322137572588320137854730', '10251251.92267799461446643', '-6.391243834498999077819661508396173404757818195532189568588068444498054042602663946225790543528481226915404809942710352071181542389581007911463770200628955475560872909396105253165299462108682255029584836334999045992165198875154529047216283714400212841149964106826775483255024e-21'); + BigNumber.config({ DECIMAL_PLACES : 89, ROUNDING_MODE : 5 }); + T('0.0051158414954496467729059421537', '1.28321419910608337278024354164318343138601', '0.00398674009297392440827024119816861452327703025337601844912107644128552645607669198736259'); + BigNumber.config({ DECIMAL_PLACES : 26, ROUNDING_MODE : 0 }); + T('56038962776461.2797346', '303129150133459900601496629531', '1.8486827398e-16'); + BigNumber.config({ DECIMAL_PLACES : 56, ROUNDING_MODE : 4 }); + T('9915710834500.3465', '-1.4', '-7082650596071.67607142857142857142857142857142857142857142857142857143'); + BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 4 }); + T('-1549027644025944', '-91820857571.85991312786431099', '16870.106476773641698142767245423408839744996893810201880487331532805738599959252247675'); + BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 1 }); + T('95506379529996131069130935396812546065947494411473342457749', '0.0000000517879477504743912589', '1.844181584297695354141847708676436470728006387574197908007668346681e+66'); + BigNumber.config({ DECIMAL_PLACES : 112, ROUNDING_MODE : 6 }); + T('205.099774774230626478083460675', '-449982301573.440949313602', '-4.557952036270399715512524788833189846107552157086408011532774804177977983307814358260811959717048519937e-10'); + BigNumber.config({ DECIMAL_PLACES : 58, ROUNDING_MODE : 0 }); + T('1482.8406', '-0.00000000000000001727790576189820', '-85822935975840795587.8710037491895233420516380216740793652331081211380860179235'); + BigNumber.config({ DECIMAL_PLACES : 137, ROUNDING_MODE : 3 }); + T('-1153104396365529502939216.59', '11765014040911232042408.3495212457965', '-98.01130643412461750008575478537024175105975954383637398481500509465403272137237131402487656724462559539085144272214960543019564189479814618'); + BigNumber.config({ DECIMAL_PLACES : 258, ROUNDING_MODE : 4 }); + T('-1239516.78884240684758533', '-35076195036250765616720646036910081973041049805570', '3.5337834892336049491710352405683891671627283710554955550882848197255904639968340024230631426905185923690614073106304702889741211759104136142842476783745615453130980374313313531532953958197012166387657288379805732159e-44'); + BigNumber.config({ DECIMAL_PLACES : 273, ROUNDING_MODE : 5 }); + T('-57716520093512', '50658.13516443959833837448', '-1139333690.55454618595478461694822547462547264851682943358948704901734187004406684500737817259695270067818913111625866674119051153278375404248580693866944094419491846668226539159657832785469114661591517274015745537698719625277031844413727331306168805098428834321702167581346752235995'); + BigNumber.config({ DECIMAL_PLACES : 198, ROUNDING_MODE : 4 }); + T('0.00000000000002716456899405', '-10728281731479516387166487775598.983320673', '-2.532052165850773880400639191130059263614628758693376705520159268895877829358368744545118549170323002994589211731468097142850172933664457298662526848191847e-45'); + BigNumber.config({ DECIMAL_PLACES : 236, ROUNDING_MODE : 0 }); + T('-7831101069665371600393129611782', '-25672065508112239.00325538415989789', '305043669633469.28379784439441591241205239521437052790596615965381149546130376836417458338289091904946530427438681096175171393085499965068769049271289475149206839907066697133691363829733350317590225385534036095448597226005282307963626985030720444042796'); + BigNumber.config({ DECIMAL_PLACES : 297, ROUNDING_MODE : 2 }); + T('7.6', '-0.00000000000009046796955100059485380894000931938051003242', '-84007633173590.358252556098142690359633565219964153721599855394205571211266955146594640888040812855428767007008199662032445736919870997047434103550137996586138551808154982683578308450810333186258091757582382733560731294254511519080101866036826193549058049570452361379267913665552070415000346145937628259422138795'); + BigNumber.config({ DECIMAL_PLACES : 268, ROUNDING_MODE : 3 }); + T('-9467869039621038835918314441.406', '1467228723133.957919994774520427', '-6452892374815254.2099858564863008178760958711743454969529256224127442518877511404250684709463273791482667167512254302548073670574538231125002297555281578906852307437260675053827291979912207296468148625295990357643458983072701448003847839460219008825856231103598845535310865494523918831'); + BigNumber.config({ DECIMAL_PLACES : 270, ROUNDING_MODE : 3 }); + T('-609475310522475962414302476.222653768416691', '6102081498600.6170', '-99879903384156.078749805777286290461124275708929727063525652393750840270442836941816183295511467034424683326998224561272207931216059004031480454208713078062289324276976736786404530462985315920949889041863275437581382020490704215599274302930558903852377964887825938352121407275370987962'); + BigNumber.config({ DECIMAL_PLACES : 249, ROUNDING_MODE : 1 }); + T('-3172872984318758863943564449.715522', '-142.832719255338450346216', '2.2213908695854861107920603096617560636821821633979800975189910715461273042413884020923206593619040390651566621421138114193338343464631753671317216021303251769200721098511073791840987458297910662981585747266633485119144011505619549897130886041169334765209636819213495504816905e+25'); + BigNumber.config({ DECIMAL_PLACES : 242, ROUNDING_MODE : 3 }); + T('38561261492174617050435836082.0252506143701229390', '-276.7', '-1.3936126307255011583099326375867455950260254043729671123960968558005059631369714492229851825081315504156125767979761474521142031080592699674737983375496928080954101915431875677629201301048066498012287676183592338272497289483194795807734007950849295265630646910010842068e+26'); + BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 3 }); + T('-371.84945', '123092242548887.962501', '-3.0209007675874807184127880877722661988721990619494e-12'); + BigNumber.config({ DECIMAL_PLACES : 37, ROUNDING_MODE : 5 }); + T('2034383814096560337662039352184036335014252691742261', '-886278493811685823107.2319663', '-2.2954227461247874787306595199684477740135912085564852332831337397886e+30'); + BigNumber.config({ DECIMAL_PLACES : 108, ROUNDING_MODE : 3 }); + T('39360061748459633473756799064571.8270', '-81873438148', '-480742749282248371932.103791935798100887150739519472610288065021495327664372558847142357581501964995505736312980420166048209865389'); + BigNumber.config({ DECIMAL_PLACES : 85, ROUNDING_MODE : 3 }); + T('10.02', '-608093636084537131486593586398', '-1.64777254774740322306395336991397443614683286042172176527e-29'); + BigNumber.config({ DECIMAL_PLACES : 271, ROUNDING_MODE : 1 }); + T('-48946040302', '31570130776951076660.3805596689047740684203', '-1.5503907997028266569235034714309893247109342272518379694778625499225992447304505898388797230061708147110119482982492827839785651886193230126471131168581350494144100317149913800613717349927008880617904338090309840672640085310916032081385253615935028604127284281387e-9'); + BigNumber.config({ DECIMAL_PLACES : 112, ROUNDING_MODE : 5 }); + T('593265847.78057159818104', '227846838.20312', '2.6037923214527528437658495939903306030021976777145075311627946764405532163733377361604976015997190497024368037288'); + BigNumber.config({ DECIMAL_PLACES : 163, ROUNDING_MODE : 5 }); + T('14455640.6170216014000857868526824', '-3.0', '-4818546.8723405338000285956175608'); + BigNumber.config({ DECIMAL_PLACES : 250, ROUNDING_MODE : 4 }); + T('-72280684225394597729700130040325436.019711091110467647964705', '892308799850790515684.48664808363416260181436208', '-81004114536897.0695875523366475258607915037550630773694304370770483952947994050812890997846162428770238577341236809960785489011487107136201035519062478603136775513495087053730649572659492563462352276930583664314534000410955016670927197175753702974600911581347257782'); + BigNumber.config({ DECIMAL_PLACES : 154, ROUNDING_MODE : 5 }); + T('-29.0335114169077', '-0.00000006868270154', '422719415.0189174402122680394496317012518025655983828384511737131066845335973370042252417783972916217354719969857493173964630279451293697612465812741820696879943957'); + BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 3 }); + T('-42119671121.1776108129967889823985848062573', '4775069674.08348', '-8.82074482594057643'); + BigNumber.config({ DECIMAL_PLACES : 264, ROUNDING_MODE : 0 }); + T('-354744268750166854753379871353.8578159230421026859633205', '21330178447258444722314.0', '-16631097.092193428262677804869343124778290967185317934376036587888953686313580577100770656549591099652587049117622472847710788834217172096458028810599783892238748655611842406819858733617818766566525908833731016009618661019672856973156580568031733962692115781082387552380191'); + BigNumber.config({ DECIMAL_PLACES : 211, ROUNDING_MODE : 0 }); + T('0.000000000000161569825431083235577513859303754951', '-6.967425061704654826122536362248981082078764528', '-2.31893165696357637139194368501960338724247231287711943486094408762260380439198627140495092670605965201075556177441056927057320135095371632737446304387050194331027521855065799327862604397351977316685e-14'); + BigNumber.config({ DECIMAL_PLACES : 9, ROUNDING_MODE : 0 }); + T('-1252668285755520661.251344', '479507', '-2612408756817.983181166'); + BigNumber.config({ DECIMAL_PLACES : 2, ROUNDING_MODE : 3 }); + T('-239663672764274843796937619.150383232608198583606227651159', '-27802725.3571717730410166913363023569367610392303781', '8620150351643605395.52'); + BigNumber.config({ DECIMAL_PLACES : 188, ROUNDING_MODE : 1 }); + T('11810621498949943142887410568053.89406631535498', '0.0000004432223087743353888455574417656584470134825242823425701', '2.664717290880605708797551855406387114654984277046050427731725364316623529337486816821739538655867598918228544552795556861760061035132724785526563947790437178735446158489338509514582529224487403400328556591965480924990904542097e+37'); + BigNumber.config({ DECIMAL_PLACES : 127, ROUNDING_MODE : 2 }); + T('-0.0000000293030744913025', '2622073217675502577313959320487222758.070095368248839', '-1.11755363251374061113808739620508682574989551743699198867860249309514442792920940949e-44'); + BigNumber.config({ DECIMAL_PLACES : 74, ROUNDING_MODE : 0 }); + T('-38053516416360899172842557379.560501', '2465703.94', '-1.543312471503002066535309887186232950578811177144000508025306558093912929384376941864318065696079e+22'); + BigNumber.config({ DECIMAL_PLACES : 271, ROUNDING_MODE : 0 }); + T('0.4659955192654724333695129609052460857753169372712280001', '-0.00000098977383542832026322076402221033475283289', '-470810.1008386576788537804212345438983561475077420796562854251380393044003068091805818723375736620862822143211298571800300907196710719003784495335296847039332269264433496495785177822463973270951061363327575868275367648790901030863136737556998180238017844800164524826761414751293'); + BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 5 }); + T('0.00000000000000001289546801370178581628448024', '-23.85306209433699851', '0'); + BigNumber.config({ DECIMAL_PLACES : 217, ROUNDING_MODE : 4 }); + T('-0.000000000000000002981449315396', '-0.000659989143002065720018777061933042049834879220', '4.5174217591434958975361177865700625660514957971505630425658606251053819431850586597294324913083917343441121107264661057253852617524504388307163037076537670913611180462835779571807945491272907838594433069e-15'); + BigNumber.config({ DECIMAL_PLACES : 207, ROUNDING_MODE : 5 }); + T('0', '-0.000000008614810672231220408932800073', '0'); + BigNumber.config({ DECIMAL_PLACES : 127, ROUNDING_MODE : 2 }); + T('-6653380272019766445095.580143843499016729419769919610', '-10', '665338027201976644509.558014384349901672941976991961'); + BigNumber.config({ DECIMAL_PLACES : 59, ROUNDING_MODE : 1 }); + T('-126024248130053999592229.79522479746216240298328685352', '22.8', '-5.52737930394973682422060505371918693694749926696725964912280701754385964912280701e+21'); + BigNumber.config({ DECIMAL_PLACES : 280, ROUNDING_MODE : 5 }); + T('-6093096693216885521122.4', '-475.1955', '12822294599205770090.6729966929400636159222888263882970272235322093748783395465655714332311648574113180785592456157518326667655733271884939987857629123171410503676907714824740554150870536442369508970518449774882127461223854182120832373202187310275455049553289119951683044136571158607352131912023577664'); + BigNumber.config({ DECIMAL_PLACES : 27, ROUNDING_MODE : 1 }); + T('2838066023144006476557.33585253397606', '361913705058687862037.0743800454319040636013160786180375482', '7.84183075543874801608869674'); + BigNumber.config({ DECIMAL_PLACES : 46, ROUNDING_MODE : 4 }); + T('-8912120527276385707185713.36348174507076527', '-138595676937364.6000272308', '64303019576.1735848210918847974594190139268975695559310464'); + BigNumber.config({ DECIMAL_PLACES : 274, ROUNDING_MODE : 3 }); + T('-2109445934524366389653.11071202109', '-2529937073579670912392529854897594314244244551468701', '8.337938348560025060571399348991344614682842686609826968680827268986333029502247845634619255028765965865798251267883636812043257441345348928881319046703182133850281855508004183784428687514904384878079970429530453118570989563178752643128476337797e-31'); + BigNumber.config({ DECIMAL_PLACES : 24, ROUNDING_MODE : 4 }); + T('1362268131522324849421611285979599323015799314.5', '7967841135862648558137', '1.70970794760309580373943195085335961896069021248e+23'); + BigNumber.config({ DECIMAL_PLACES : 280, ROUNDING_MODE : 4 }); + T('-13.3489335', '348247099139.4782260605601614309726108479', '-3.83317866336441481702261735465730886134182858179365305100303003206420508719336454481239879367453567875367648194559801630261667713481982249534527637719337682066528264444311854358819368151219273332995627808679233553687532950443756230818098136019082571670321383622182248022e-11'); + BigNumber.config({ DECIMAL_PLACES : 130, ROUNDING_MODE : 6 }); + T('206326562825.9072634574832909295302847', '-646549993648312966960798586111907542013270814184.525784552816', '-3.191192712904694159865083652735944999235332803105041830307950393726597401971224890197748512657e-37'); + BigNumber.config({ DECIMAL_PLACES : 135, ROUNDING_MODE : 2 }); + T('-36022378902303.6337241308770686270134088130947868622970837556', '13578424515590413.5570445', '-0.00265291299892293269665145659042413245901000619767595833864439662704864041314263874683099349326335620385223661682486177046611234091447'); + BigNumber.config({ DECIMAL_PLACES : 167, ROUNDING_MODE : 2 }); + T('-159540906057017882019.1550648164', '-20510.292270945915884714393270293083', '7778577893939490.00166000414527928622843397522207155300792172899843206724934309088909076517353732381926866850865842811485578741264404699633750435448046231006588094553667853303779375796'); + BigNumber.config({ DECIMAL_PLACES : 157, ROUNDING_MODE : 6 }); + T('1765888808226401695383202231727943.6529280993', '-3802536782039279982453647099788917361939070010171234', '-4.643975612720740191711625263989649703622782486469839070625079507044942445633503314180370572937935425472469260449687041164513716954415440367e-19'); + BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 0 }); + T('-0.14912820615290798745027', '174530.1', '-8.544555131344563914778596929698659428946640149750673379548857188530803569126471594298060908e-7'); + BigNumber.config({ DECIMAL_PLACES : 240, ROUNDING_MODE : 6 }); + T('-816281363562218723797692080137304200383227228307169.81050063', '0.03151207469555254421234990134028594', '-2.5903764555287264896939010825254815324859859226848271758791787494771312939546830200209642019019899286706064279512978044210399067893552614583934288714466179450822103579918737049557309222940603852366574213774985909043470490904834397325151656349535377679783068638817406000816614631650591652364504e+52'); + BigNumber.config({ DECIMAL_PLACES : 203, ROUNDING_MODE : 6 }); + T('5099800008.979562261560228116', '-2162291.608828653712', '-2358.51630194421444248681651513364657320151778113938948729659099335407633345047756202312930590480452477712257388969222067448002730285256774933100121701317740342703720641534492684476728201301660140548580482107'); + BigNumber.config({ DECIMAL_PLACES : 277, ROUNDING_MODE : 6 }); + T('-0.0000000001805289082291201368261085356193967', '1807', '-9.9905317226961890883291940021802268954067515218594355285002767017155506364139457664637520752628666297731045932484781405644714997232982844493635860542335362479247371333702268954067515218594355285002767017155506364139457664637520752628666297731045932484781405644715e-14'); + BigNumber.config({ DECIMAL_PLACES : 168, ROUNDING_MODE : 2 }); + T('1146690180.71200580', '-881154.121319456844861836532060550361', '-1301.35030066582476879693704636411939807452648329356238433857507462952528424966993485504542262823070402510871938773184660967896035487235203047393259421235952996827163565066'); + BigNumber.config({ DECIMAL_PLACES : 50, ROUNDING_MODE : 0 }); + T('-0.0000000000000000160973160543472055762355765416426874371074728994675404520290', '3761171179921075710630.8843299219413810607706191431294990', '-4.2798679678e-39'); + BigNumber.config({ DECIMAL_PLACES : 277, ROUNDING_MODE : 0 }); + T('7070.6', '-0.000145606236436591691', '-48559733.2438373308995099933333650691937906953404860600972568939987638179704882475133025753274789937095899338360190003809613478061917688446777469738385799535514510315359744526190113615619213651499675465832878218353305796958194748375468606299490210421292097642179698165287732952230364425'); + BigNumber.config({ DECIMAL_PLACES : 167, ROUNDING_MODE : 4 }); + T('-0.000000000000000015480712431709444329812945328920683450802186603602697705421', '100066859395573554117646467521957510143339878235271', '-1.5470369036478656432194424074619716418461957473064336434329800639876360673327549747383799287649079648e-67'); + BigNumber.config({ DECIMAL_PLACES : 66, ROUNDING_MODE : 0 }); + T('-2.9861577', '-438001798009735866185210.11251867869200344199670316', '6.817683656937006327592672071029593996285459e-24'); + BigNumber.config({ DECIMAL_PLACES : 276, ROUNDING_MODE : 5 }); + T('-0.00000000244443694283348821783546244046969721403019898324368', '0.81903701867172464464688481587547846220480314400578', '-2.984525591770882357436538810320776975435486474958500771439280366917094188009518155617809588186592103521847816796300149642786943277747340425230201886751388570055323831421137744310284396301360161812729882087890890506501948381563897731711680708058555881568416792177287316e-9'); + BigNumber.config({ DECIMAL_PLACES : 45, ROUNDING_MODE : 1 }); + T('131.8', '-0.000000000534986807852076265014443038071361169998361285500', '-246361215016.058248450782765246454499249132660343977423404'); + BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 2 }); + T('-0.0243005024640459', '0.000011301133144399209317520417050581', '-2150.27131824290731093'); + BigNumber.config({ DECIMAL_PLACES : 31, ROUNDING_MODE : 3 }); + T('5465777.9742678260337809716148771', '-0.00000000305639212263554277266889509047', '-1788310450674325.5673025352058903536003073726626'); + BigNumber.config({ DECIMAL_PLACES : 152, ROUNDING_MODE : 6 }); + T('3951104989166.291629778031837010936028877374918759391862', '-1752.822', '-2254139318.86197892870926530874837035870007046851271370509954804309850058933536890796669599080796566907535391500106685105504152731994463784685495732025271248307016'); + BigNumber.config({ DECIMAL_PLACES : 177, ROUNDING_MODE : 6 }); + T('26079196508929708235932373056884051345409.0707513615317642897', '459154144236437331165949377207476.625424383213', '56798347.213654808277411284969119627071835039723276157988509805667000410099719290968912107666070777543943894835923366076087775942160607756641235888432397328990759503526406626973382249663'); + BigNumber.config({ DECIMAL_PLACES : 133, ROUNDING_MODE : 2 }); + T('1.95999502420771680', '-0.00000000605336322719182915867', '-323786125.2738609501583269241656827051727302857553347826316924634768121285666678574686171284491571944987544448088554099397667480735129838824416'); + BigNumber.config({ DECIMAL_PLACES : 291, ROUNDING_MODE : 6 }); + T('2980869715.15307080894451368776466022955051977675', '-23037896331023947862905398641887126.9402219359747323', '-1.29389839780591735956453314130606673533568424583151819964363580348421330247329455844727287260042067575717494925438886592376866151971696912725349675942014665165807271426618105628903598173279898335462271449907718099133759837480195688910073846907971163203355866588677567e-25'); + BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 3 }); + T('96832115342.29552928350903812033911316015', '247856455866026795175321987.833460779941', '0'); + BigNumber.config({ DECIMAL_PLACES : 121, ROUNDING_MODE : 0 }); + T('-293234671779938033307224884628671156430', '5936683153613310921783', '-49393687382737157.4007694093795947121535681324810872175605782301354870877059794646681477642341525539923490233909589184596712731674420686306'); + BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 6 }); + T('-0.00000001251521953904579466180770859989188568351', '0.000000000000000000124750779055900674998', '-100321774611.4253903299'); + BigNumber.config({ DECIMAL_PLACES : 250, ROUNDING_MODE : 5 }); + T('4888435.07991914', '-289442314988433702829117882547583577.41646005231', '-1.68891514017723529611657483953131704184452585016197836704143088773553864559270182457600103339950763982674068091317404598027038798517586280063864161198278876132234359138189202564039345012690897624232010014002207523787438682e-29'); + BigNumber.config({ DECIMAL_PLACES : 32, ROUNDING_MODE : 2 }); + T('1655333198571404541749487.56002', '-1.0384557', '-1.59403352359797778735239987610448861708785459023432583595e+24'); + BigNumber.config({ DECIMAL_PLACES : 43, ROUNDING_MODE : 5 }); + T('-1.63996', '8668688714241359135882263258276', '-1.891820151883e-31'); + BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 1 }); + T('42102134040566.391567837766953194508854271095335485', '-0.0000000000182008621430593045067184956600215229324', '-2.313194490988525515892961664153687458225784253642181046495394201588984584087576800999450251332728124457526e+24'); + BigNumber.config({ DECIMAL_PLACES : 300, ROUNDING_MODE : 0 }); + T('0.0000052581046503077188067948441172793667220173727', '-18466.0514226727708599966583659217', '-2.84744395537195048266342727302582394039417491162540524941848660662305983103035825975666206669623114383321681838821817930551745150733457073504217394906088556217541711535419981350903104910507241192273159293961874700978577956325887384646715132624264086076386282762979144477378516516257388546584e-10'); + BigNumber.config({ DECIMAL_PLACES : 197, ROUNDING_MODE : 6 }); + T('-0.02697969836976162668872870309017164744281888345862', '877766362743928431787777072573.8203', '-3.073676494667914073439530205319061128326417250056270330825297287028028004269995453915111595062888238063730432008508979125595815156703686732055688781751144620211857662e-32'); + BigNumber.config({ DECIMAL_PLACES : 217, ROUNDING_MODE : 1 }); + T('2.9', '-0.00000000662501374231809', '-437734941.0576906985378686578582631049615512011028188110951097804347401955836597404580589129829605778905643317198103997115068187817453731726485246356961037075885700663431396317240892923939363561523028738906295809528193483699973'); + BigNumber.config({ DECIMAL_PLACES : 242, ROUNDING_MODE : 4 }); + T('-164232956492021053532271705054.8858957951765769', '6807214753671449360404823', '-24126.30751856954964206020674130573592945546606765066608501697337500424559349604716170982761660557081604606261463337684307963793106317313923735997783983778116076441066361756800392406801168698964254694276713530096866412055141505864825357839012225025'); + BigNumber.config({ DECIMAL_PLACES : 224, ROUNDING_MODE : 3 }); + T('5310118868764049191600032796055051413', '-110.2124649068932461007483586195603358', '-4.818074682614169031627916829261256132086439604079019185680382129008807675013960819276432592715708549843808512887032607973561680202157091046156292681159154721739305455357990563568687516460063308252017001793309695451270697843105205848708474750864740875362894876e+34'); + BigNumber.config({ DECIMAL_PLACES : 208, ROUNDING_MODE : 5 }); + T('0.00000000675823179589774992292722262898462101903831106625531220', '29824576103801692.4843099744864667', '2.265994249969000763758565488858846719254006293524642113354787950891188552955632880608907146948969530378484734927638909309663133941937772963802739592875273798175292161122610492051972886e-25'); + BigNumber.config({ DECIMAL_PLACES : 135, ROUNDING_MODE : 3 }); + T('-0.00000000005290747543146156', '12.018932051814', '-4.402011360358453095032662746904434806012182693211407297582193017073085280237475283974936844315503436464779478161114158775508e-12'); + BigNumber.config({ DECIMAL_PLACES : 287, ROUNDING_MODE : 2 }); + T('-3089521084991426324087477311760754614261.7580240', '272963802600.2220186333174', '-1.131842777526177905839853650756986067625953813516061315307663981827974478132700821765932895424846457981456683202566942779259691021115137392247599854950379631304174725170924742331928722697213540501568226615277435727719614247769485289759238905087747375366474394045523699280642973120153035784222079116713075704595922959e+28'); + BigNumber.config({ DECIMAL_PLACES : 244, ROUNDING_MODE : 2 }); + T('-1676880748951985408708849516627159241705.785761', '-2', '8.384403744759927043544247583135796208528928805e+38'); + BigNumber.config({ DECIMAL_PLACES : 73, ROUNDING_MODE : 4 }); + T('-3177336591875107162705100.847120305256', '0.0000000000025133263', '-1.2641958156706939177396507755957932147528953960335353193097131876589203717798202326534362052392480833069705275e+36'); + BigNumber.config({ DECIMAL_PLACES : 183, ROUNDING_MODE : 1 }); + T('-0.000000000028334', '10467723615004932174204441002171952.5655837', '-2.706796725066823385651261296727146950436243675379457221318323732288291498753467079627663767184391153905970702346937019552656922753410201723e-45'); + BigNumber.config({ DECIMAL_PLACES : 23, ROUNDING_MODE : 3 }); + T('0.000000000717483955208080534', '-61146916817930.97778189208423269418409758344', '-2e-23'); + BigNumber.config({ DECIMAL_PLACES : 238, ROUNDING_MODE : 0 }); + T('60680266058321519153090653083551290588754.97284', '-0.00000000000019690697186270641342992794281170737', '-3.081671790708908795312484307561547787551023984841927203616039477866919070506741735583986941315031987314779607009672873041925980772946272076202447947702805560121737616867817564182423222355223634900044472778215531037802904097886669697273143024852800076605994727968360184301126455973053596379264e+53'); + BigNumber.config({ DECIMAL_PLACES : 22, ROUNDING_MODE : 6 }); + T('183.7', '0.00000000000000010925421487', '1681399662416520553.5928080391870011156486'); + BigNumber.config({ DECIMAL_PLACES : 253, ROUNDING_MODE : 1 }); + T('-3058466056978263779557608595631.7068690610921471685', '120492309309793.28082412090519793229370212509169', '-25383081082085959.6417354916668552862210359271410241209138811189333118748259044124179789792621032645719432935165756046530434720657749057413694554301975992351725184329609258318258501695357243024919809615067168614756657141239308339489721727819788192556709280870467874417211'); + BigNumber.config({ DECIMAL_PLACES : 272, ROUNDING_MODE : 5 }); + T('-287702256019.72332990279253507', '-7348.2447750020468486997', '39152513.94434437448778855732509409502324459411348630851253369635814661159847616711741174927298666175199247970493164341671399780310055266066581661702446007562686353640296482784327557295162424104715744113616705513531689030766592807403129905429418351271424761578872795018589442905503'); + BigNumber.config({ DECIMAL_PLACES : 181, ROUNDING_MODE : 1 }); + T('218362821823152', '-427428.03624264072494916498', '-510876225.4874470197093781182823629357731188540503887097132994555167154946227455113711463937144882453930644443764395873393290104639967553243741314244621401408795024377169231224165902697570435'); + BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 5 }); + T('3512610977932727821248085135991.64362350458397', '332366415.82934', '1.05684895062813633986114367632097685e+22'); + BigNumber.config({ DECIMAL_PLACES : 231, ROUNDING_MODE : 2 }); + T('283069958448.713202074580489066', '568402223435932952032974548470947451064164701869040395199291', '4.98009942215891470612063116424248091470225902416930202626189832795786381168596298522567155592721763629087408085324803349161372096963753854201220180322843758745618174256723334739417295e-49'); + BigNumber.config({ DECIMAL_PLACES : 203, ROUNDING_MODE : 3 }); + T('53961910955842962056752112393094579054189', '-3659591183283494197617050720675757101158792.981416', '-0.01474533855101998810768228248680932872888735787867356455976031052775672420792166275872334215944750527764992493346321533012907042007431511008951188364546091620237048897806801062113473990435132299317931345'); + BigNumber.config({ DECIMAL_PLACES : 78, ROUNDING_MODE : 1 }); + T('-10836401636.6401027213286580', '-12146284942380595721816487991.3', '8.92157699909535953776034054822951842765223136204580012685357e-19'); + BigNumber.config({ DECIMAL_PLACES : 195, ROUNDING_MODE : 1 }); + T('-5205546295637226727249281129928401035.18847541281188447830770', '0.00037909736012343271985671174556', '-1.3731423225796982102395904646341192012263484381096307767950618016870969679385968172377981568427009613964671462530338490375132813655989596649751350011381898041088031763635122076528518331936123575593723173041903500861528439546220050075864e+40'); + BigNumber.config({ DECIMAL_PLACES : 45, ROUNDING_MODE : 0 }); + T('-352.88718641', '979839379932028.28416206014245661982233190862835191074675607', '-3.60147993270570404159701651891818e-13'); + BigNumber.config({ DECIMAL_PLACES : 299, ROUNDING_MODE : 2 }); + T('900872149910557106771437937396420826.617465', '4', '2.2521803747763927669285948434910520665436625e+35'); + BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 0 }); + T('-2499.000863', '-18072893447405471.93337869618542896592', '1.382734242456762937466021429575825416021539079586e-13'); + BigNumber.config({ DECIMAL_PLACES : 130, ROUNDING_MODE : 2 }); + T('347.1', '-26897607535492', '-1.29044934402434758860570983442323435482693270315891495180319627054565942215468256010821804789288880225446038761569005431e-11'); + BigNumber.config({ DECIMAL_PLACES : 23, ROUNDING_MODE : 1 }); + T('-36083511723943380014', '-1.42201661721163467413894', '25374887527473368449.9630012068579400539362'); + BigNumber.config({ DECIMAL_PLACES : 140, ROUNDING_MODE : 5 }); + T('177622329032283.44164414146844039903', '3683390520117457700', '0.00004822250805668559323966868140696957593296531306730369174847487069215651974385324941078536744094210123197364773478463773546932690054774981'); + BigNumber.config({ DECIMAL_PLACES : 184, ROUNDING_MODE : 2 }); + T('7.200557', '-12130543987590457647645529695250577', '-5.93588960838538432358509376824068186234657378382856805469754865636042223404958916496830683112332242419180446413047189313389204601249799647342307751189e-34'); + BigNumber.config({ DECIMAL_PLACES : 229, ROUNDING_MODE : 2 }); + T('-142352650018637644982.894545', '0.00000000000000045655250658348006593881690311261446601955508', '-3.11799076701835252108429962046670676621438037589634232718433946791485799432157664185253045470787064599498965009148939997154095590880176775307462661522156750014260841093621873330094880872289151899022849816633125839598690585487048126963803172223460103466105999268155e+35'); + BigNumber.config({ DECIMAL_PLACES : 247, ROUNDING_MODE : 0 }); + T('5943961854622625.00', '0.0000004889328119390981904090835833399747078336', '1.21570115759852276066823247614220899330663707901913765818462968918614524188549702319616698092675696766433467486493760177977470560540641742397966205453294164165166645821166686793422442182258841901003455629128549397991219865773103516795346451201789267868677140359702613151e+22'); + BigNumber.config({ DECIMAL_PLACES : 283, ROUNDING_MODE : 3 }); + T('-9.73', '107877.10', '-0.0000901952314253905601837646729472705513959867293429282025564276384886134313955417785609735523109167747371777698881412273781924059879251481547056789624489349454147358429175422772766416598147336181636325040254141054959764398560955012695001997643614817231831408148717383021975933724582'); + BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 0 }); + T('-0.000000000000000019829885358087437960235494', '-693321832339309278041763827865443259651661541834', '1e-16'); + BigNumber.config({ DECIMAL_PLACES : 159, ROUNDING_MODE : 2 }); + T('21861.085854742432297', '-253317995458118756985218875666.991005', '-8.6298984859750088516076665392047692541238104781525392378756311035204201128886977097227227811741417251060215227596413876277433463577059e-26'); + BigNumber.config({ DECIMAL_PLACES : 142, ROUNDING_MODE : 3 }); + T('2076337.9', '-2066457567221557459126548958422023599909897005697', '-1.0047812899404109614716837107338921468544850570684080075956002125448452885533922869419223696394598431e-42'); + BigNumber.config({ DECIMAL_PLACES : 71, ROUNDING_MODE : 0 }); + T('0.0000000024715116648600', '314867688681333580.98090570271019221598209985967707509', '7.8493657930119634753316836800963745033454136e-27'); + BigNumber.config({ DECIMAL_PLACES : 169, ROUNDING_MODE : 1 }); + T('85.5032', '2269889931805.8110736637704476113642726571257320719630747075', '3.76684344037677298414636726315641859833435415870284555946496584487885463210335786685911435721149609905482823796034722657831771198820765532056166538523279149766e-11'); + BigNumber.config({ DECIMAL_PLACES : 225, ROUNDING_MODE : 1 }); + T('-878447093953645818260102264832468970551856123619.3364737', '-0.0321801228236', '2.7297816691657166216189614482465370479123012554570903545841244469028148970610382017982696584849836576681548797269208941130786144461619238777602985556306501753659142612521175162964271415211727986351973135481429362433578626572784377717859071869623999815093110967364070505355807e+49'); + BigNumber.config({ DECIMAL_PLACES : 215, ROUNDING_MODE : 4 }); + T('-43217422.314686293151875092274526827', '-172.25', '250899.40385884640436502230638331975036284470246734397677793904208998548621190130624092888243831640058055152394775036284470246734397677793904208998548621190130624092888243831640058055152394775036284470246734397677793904209'); + BigNumber.config({ DECIMAL_PLACES : 205, ROUNDING_MODE : 3 }); + T('934044509803710.031', '2215450.4539256893907883241626781065882032269398778360517', '421604783.8707566688539417234911930291970000816369616751407221284895813210180351175345778163400640903934907977266943577986534521978166078350804914438274219568982438173624979713831494231085341917307110815023899880191'); + BigNumber.config({ DECIMAL_PLACES : 273, ROUNDING_MODE : 6 }); + T('-61673618376150077735105282.32389881289046067', '580126573106122019236717205540651106962845540631806811475137', '-1.06310624672709449526492535531490045106445863633066135113002531869296728604103194642150428828918666609299891321792894844384077308674766977865000804626486307169603956091019855780842725388683208936716701748756130647891699112423470869015773752e-34'); + BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 6 }); + T('0.000000000000037953564273421360974525286986557062748316', '9.9', '3.833693360951652623689422927935056843264242e-15'); + BigNumber.config({ DECIMAL_PLACES : 42, ROUNDING_MODE : 0 }); + T('78.788494332435194841297369789305379', '2960574779.76224', '2.6612566880936072401085822383242603e-8'); + BigNumber.config({ DECIMAL_PLACES : 127, ROUNDING_MODE : 1 }); + T('-0.00884033479494503875011051054848', '-0.00000000000000000003073745393848120884762218612879977161380590851450682841', '287607907038700391.9386691232917865285000162747620806087721118424095534296139200510822980311737775004980032046267554363164670402076851873775075909'); + BigNumber.config({ DECIMAL_PLACES : 188, ROUNDING_MODE : 0 }); + T('0.000000035825234436874458725815231678670', '248704.09196351538476428010', '1.4404762766078646183528523818329613183633549389722421363506513592489424701455505545820862493707022113496949417051780495219588961668954111458099918576834515526585393756362338712e-13'); + BigNumber.config({ DECIMAL_PLACES : 132, ROUNDING_MODE : 1 }); + T('-11890841249720941003340131568.8', '-0.448285132780975547543447565754894854616797795', '2.6525174225509287109008275900581758745656416060405416608376934955450921635126740129313598589973142842709854408731763632284545491223060278476521298576534682156856e+28'); + BigNumber.config({ DECIMAL_PLACES : 45, ROUNDING_MODE : 2 }); + T('-79999890792516728703785210.293275949583326', '2238618671360933932870184834154524.554', '-3.5736274255178091780838294625533545534e-8'); + BigNumber.config({ DECIMAL_PLACES : 159, ROUNDING_MODE : 2 }); + T('523036262457407.9231574304588', '-42325640367366929726.5204686677863151208112751608435', '-0.000012357432939412037831070223261728288578014924445740262398299293226133962016627218473698110333245943923835660220850424477875443864664548613683004600257116752'); + BigNumber.config({ DECIMAL_PLACES : 39, ROUNDING_MODE : 5 }); + T('-0.0000000041286755678770', '0.0000000110564855419579942831310543', '-0.37341662974271410060901686622969775811'); + BigNumber.config({ DECIMAL_PLACES : 86, ROUNDING_MODE : 5 }); + T('-772545.60868', '-0.000000000001373662387332651048013693114', '562398458168540916.3707047890052467698944553379256207237415983606506907843604729462276116333472410717492'); + BigNumber.config({ DECIMAL_PLACES : 160, ROUNDING_MODE : 0 }); + T('-0.000000000000000234838118662348396', '4.9607142482566858080278966310749', '-4.73395779135789073153550910323880386103124721594233442875440968425335409065931840451191011389183925700687542921313613178360714542362607580156762e-17'); + BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 6 }); + T('-25470877029136458.461572069402318317869339908911993', '-19788421946214575881837247262846064', '1.28716059817033097143124319946722349767576454963531457795e-18'); + BigNumber.config({ DECIMAL_PLACES : 23, ROUNDING_MODE : 1 }); + T('0.0000007608256038883687382330921800098873466555520966152558', '4084024157469937028014547746681770', '0'); + BigNumber.config({ DECIMAL_PLACES : 220, ROUNDING_MODE : 5 }); + T('-60593935100716637576.779124226', '-78089154643.3398697105499380823346933482681923', '775958394.958558071500338249096776110501831340377956044864519861717344537495697320556111328429168006012349243247851949387890247027968414427872945899772549980746925825100931899573261430814243662488905947964247134248105608266206245'); + BigNumber.config({ DECIMAL_PLACES : 236, ROUNDING_MODE : 0 }); + T('120200820437', '387689496.8040973', '310.04404666071845082705639677630364379138488716543831502070512009771234254242928775392324345085494793473809688678416009031735847856980861882806602550723464704832108694013222493491135567636091734943087685254045517457022321119851762885508307'); + BigNumber.config({ DECIMAL_PLACES : 33, ROUNDING_MODE : 6 }); + T('323590.58', '-30602659640217986546339973043344923648528124099098332011', '0'); + BigNumber.config({ DECIMAL_PLACES : 187, ROUNDING_MODE : 5 }); + T('0.002184407364266776792138989179577074788592902', '-5387393902170.50826166406732599919929902225', '-4.054664284686346322886089921637881011695368077425220160377039462179267548296175538145260381577072330244855092355763020492833402533575231089958704759209007017996657889948755e-16'); + BigNumber.config({ DECIMAL_PLACES : 137, ROUNDING_MODE : 2 }); + T('8338918643868645247408.3883455814124240962297433030931555852', '76390171950015689477386403006816845', '1.0916219234753185484432073685343052849240279711055950892264649053607637247519291785805958502378749491100439233502256082134638e-13'); + BigNumber.config({ DECIMAL_PLACES : 184, ROUNDING_MODE : 1 }); + T('0', '0.0000000000000005262870969944363287966971419746196984506', '0'); + BigNumber.config({ DECIMAL_PLACES : 253, ROUNDING_MODE : 3 }); + T('7', '-78156995776919615238622640478166990.50200', '-8.95633197056322356662567988499850763139263072636596503501898741826919037684989877497087801741807791961361135760609928904999023392056920447216103029361565738478484153062680383086255843225584249401410645703684133634095656e-35'); + BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 3 }); + T('24.1609503653656174905040', '-845840421154.192190497016066', '-2.856443103e-11'); + BigNumber.config({ DECIMAL_PLACES : 284, ROUNDING_MODE : 4 }); + T('-30.95207787509671936194539304098189430723147200095851336232', '15793254.28652433', '-0.00000195982900759767594730360080846558702051969928995350942287858990053761925209915600655749800868378844445503973346958930972979651023833175022853776353124380982614053588435077849665659187568709860142253037806347168992008085044925388898306393725024773439411064804691234767025408538692'); + BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 1 }); + T('0.00000000000018209730481501437353687636820985110', '0.00000000000432086493606712228925346064478750366', '0.04214371601736'); + BigNumber.config({ DECIMAL_PLACES : 143, ROUNDING_MODE : 4 }); + T('-0.0000005553075724698638127187462955079819138174106', '-0.000000000000000010549809475997890291690169102285131785847606678744325', '52636739434.32406123628211128902900923607108654048502037466453196880088243188283204228908191883378835747158786416820534873430061744591062343575877307870373'); + BigNumber.config({ DECIMAL_PLACES : 254, ROUNDING_MODE : 2 }); + T('-8507.4', '-31611118342410651066.287255899282366741756486641109', '2.6912682771448031995832202512770436547187935120037530273296218347166872776298484520115458342061467521532249236513612825317884352187170570573598554583265089794988675565694897744942941536240326667686887829217571385934754800298928378797347681e-16'); + BigNumber.config({ DECIMAL_PLACES : 201, ROUNDING_MODE : 1 }); + T('341868272534512579483294630101041404087', '-227197016940835393812522104129336912.37630313525924548177964', '-1504.721660247585222184545332112527476380821548583435076394533870831527512221217981193086787237823562978794231656548081796489337612493403554821668058781133339890502918373561994949215363926544374519865666144'); + BigNumber.config({ DECIMAL_PLACES : 35, ROUNDING_MODE : 0 }); + T('0.00000000000000437742', '0.0000000000000000000200303787355146280915492763', '218539.05299547166371779311558890808831179'); + BigNumber.config({ DECIMAL_PLACES : 151, ROUNDING_MODE : 3 }); + T('-0.0000000000000534322916017120915670331281662644280597428866', '-1424.77749901', '3.75022006164746917868530862083721727820879664749528167101202037111191057368662227467078617673572071075544322088739384828755360735601037e-17'); + BigNumber.config({ DECIMAL_PLACES : 174, ROUNDING_MODE : 0 }); + T('-416904702172153041.26891879162130712422724206693039976', '-1492417792792741636616.85', '0.000279348520357697422876919371806999054778919203273179931069212605569609913461069840673300681928567724197103421784691807186805590754474225075554848274600977306765474318633861'); + BigNumber.config({ DECIMAL_PLACES : 239, ROUNDING_MODE : 2 }); + T('-0.000000000014145159541995954595019', '75286314359.303757785825', '-1.878848720696860524911845987739168912042755878980910896266255578525504559236986971506094819775648678624305752410753284616370908384058077653336364854521389519941929908006483658028987464466470871992271276526386753342138e-22'); + BigNumber.config({ DECIMAL_PLACES : 212, ROUNDING_MODE : 6 }); + T('-856449761377.4106027005835', '-0.12886167223806177710047958961530', '6646272289522.88629595844444803094620478694392834125277536502509139598292167530634061669645708554597441149938198254016521395355218219907515631449168243123908585492915406688068634055285586774476740307585325963085677047571925594'); + BigNumber.config({ DECIMAL_PLACES : 131, ROUNDING_MODE : 5 }); + T('705051.5714748881282046710370536257169', '-3.690', '-191070.88657856046834814933253485791785907859078590785907859078590785907859078590785907859078590785907859078590785907859078590785907859079'); + BigNumber.config({ DECIMAL_PLACES : 169, ROUNDING_MODE : 0 }); + T('-56970701115117049802746696481693.06197826', '52774171.48234231347102140385892929240488248', '-1.079518626534551116776647376170899911322930789996468424200474585922124737338324430900738525116029050886798808473947642585594124786724157692349083285559602854594168836141683492575082185135889484e+24'); + BigNumber.config({ DECIMAL_PLACES : 248, ROUNDING_MODE : 4 }); + T('1536.80', '797537940790.16204370540879609250609816130996198497962', '1.92693027052407417679073838856981865538509524279931557871046258846342061768572781543861899644466156118948850948896470902434251214085617673624065270654935318750683127587751733903011318898363697418632103362914826583288103899538519980902669177e-9'); + BigNumber.config({ DECIMAL_PLACES : 99, ROUNDING_MODE : 2 }); + T('4521798398474707211452169719274772724688.209746762423', '113966135.2853091333519386764965477252492237804473584', '3.9676684544532344891518753895135901917807148727042638514740974556455741382836470597753293843833469077660544920113222751422500214591e+31'); + BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 3 }); + T('-0.00886155497', '5240512159922862756756611815681766274134230', '-0.0001'); + BigNumber.config({ DECIMAL_PLACES : 130, ROUNDING_MODE : 3 }); + T('1365098150', '-686632351222425520397133197387897340831713401120.58814562', '-1.9881063680872129581225444091158763443242565499666241150059946886673559494313889443055230582e-39'); + BigNumber.config({ DECIMAL_PLACES : 176, ROUNDING_MODE : 0 }); + T('72992032688.9248118520537008802205359470827881874151611075136', '0.00000000000000001413538780857322913068346761167087807482368455346793', '5.16377998802795794780049007018477492723093188473174173616389588298822876606582489236629797220136073532860057997777048856237946488833747829455507280628526250391295745891897315488435542975037666852668137616e+27'); + BigNumber.config({ DECIMAL_PLACES : 207, ROUNDING_MODE : 0 }); + T('5119117400797949493931501073033165644033469269.6829', '0.00000000012728547938966837104138082411164260684491082384529801120', '4.0217607109185015869038125517519539780970547769657431948364246520268330199307627984799823558533852492133620889509131647176046953722738532406336195842757406761375664746788168745291236250612131142207061713737039356124325227988419646489196356806439935591082014024539e+55'); + BigNumber.config({ DECIMAL_PLACES : 263, ROUNDING_MODE : 4 }); + T('55364515639999012.3694564', '1233', '44902283568531.23468731257096512570965125709651257096512570965125709651257096512570965125709651257096512570965125709651257096512570965125709651257096512570965125709651257096512570965125709651257096512570965125709651257096512570965125709651257096512570965125709651257096512570965'); + BigNumber.config({ DECIMAL_PLACES : 166, ROUNDING_MODE : 2 }); + T('36579301894.3272', '0.0024385689135275134684598210661763159636717699186160855486280', '15000315017307.9942798524140248776004846185613110063074971537884183495711084022282941766871430522924575895996373723131958845559105813285344961758901225035253726600468182572254974526'); + BigNumber.config({ DECIMAL_PLACES : 181, ROUNDING_MODE : 5 }); + T('-0.000036644420369185350500335611154538522406078126377916', '0.0000000000000002017077787157820510', '-181670833928.6184015374396921160292901271172156517136818760012274887799007411778794167435492509992280818256731982542776000329722531822320356487724373495232750106901001140927407119588816698128094'); + BigNumber.config({ DECIMAL_PLACES : 88, ROUNDING_MODE : 1 }); + T('798375056238124849780744954513979594995284817168617741486027', '-0.0001514303631286191311668941584594', '-5.2722257263559208237590960912449915312558983622840023031622957900413917295457780182206488059586588916929123994128751334544538192256970000413075755939847e+63'); + BigNumber.config({ DECIMAL_PLACES : 215, ROUNDING_MODE : 0 }); + T('1576512259467293381001570881.46563186796470409100093255', '0.000000000000000006105805298664153', '2.5819890781846706075186292775660987821206616709197826912550223225697923588454236189264964942580307240332585725600612198326468255268116335022203770858924348716226099521962235901645060143418731130749531388565300183551675084414656082546566803219484188986559773763e+44'); + BigNumber.config({ DECIMAL_PLACES : 21, ROUNDING_MODE : 2 }); + T('511209204698.96020245275211030115894313', '-101356341563180051638269163.05304', '-5.043682e-15'); + BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 2 }); + T('315.98', '-8.482063190', '-37.25272883754595089263889343884975230890728603496763150145784282939302177021390476106556805785833'); + BigNumber.config({ DECIMAL_PLACES : 176, ROUNDING_MODE : 2 }); + T('-79.0', '328.1', '-0.2407802499238037183785431270953977445900640048765620237732398658945443462359036879000304785126485827491618409021639743980493751904907040536421822615056385248399878085949405669'); + BigNumber.config({ DECIMAL_PLACES : 293, ROUNDING_MODE : 4 }); + T('-0.0000000007057906', '-1376221693595250111.2', '5.1284658807854441473166477895130637369491854222125750409011651561470023220989378084334186208239948650179912699354694059238918124651341765278796076199179877802082069338161665378524997774363526896411418582170912058143976851253119226686506620098742279341971906586964227e-28'); + BigNumber.config({ DECIMAL_PLACES : 220, ROUNDING_MODE : 2 }); + T('-1', '15739694482176278081652', '-6.35336347304838628156373018103107499116109637719197814569978583183740183607310083351801943904010533454975641981038277571136111425226698902310886537212268029809956782602373467609333206168376476104828e-23'); + BigNumber.config({ DECIMAL_PLACES : 50, ROUNDING_MODE : 3 }); + T('-98959741326242472136877.58688437409572654592968874916748003', '-1577026721.538198057441472422328913123', '62750833562109.3736755505302911623693757994065497857179220345921'); + BigNumber.config({ DECIMAL_PLACES : 297, ROUNDING_MODE : 6 }); + T('12843568.6', '9756619199498069983585883200769346263965', '1.316395396538663552943843415543396294410996492367201828002765168307733262083670579921516561939775006580978870013773678706424438359288943809644368754937363031859741185605881199640059139818693601860316658007786605275177671201203669231872590548443156892324734882047645e-33'); + BigNumber.config({ DECIMAL_PLACES : 31, ROUNDING_MODE : 0 }); + T('-3233146837471658213114171357041562518465680315558338981', '829330838922.619', '-3.8985006775725701598387256024613392488467937075873681876754834360265681424e+42'); + BigNumber.config({ DECIMAL_PLACES : 270, ROUNDING_MODE : 0 }); + T('0.0000000000000000000266671546349797639', '0.00000000001970429732630583897435599847653340972347', '1.353367450428100152341066904082325043611411338063074527785432187349727925635936105294561325527648770473547163455437660994400601851671110210333376912032198811485829361425678558987155990920072055290710462818538743685439393924736667429844343424052118413628867012933e-9'); + BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 5 }); + T('-6397147143474.22067087747735649585', '20202372624037678616281194280.01412209129899031232808211657', '-3.1665325962073441726920788992e-16'); + BigNumber.config({ DECIMAL_PLACES : 23, ROUNDING_MODE : 4 }); + T('88351.9303446', '0.000000000000002563399390160317591101025938358994532557855', '34466704909013176013.82323112303980750644625'); + BigNumber.config({ DECIMAL_PLACES : 30, ROUNDING_MODE : 3 }); + T('7.0933185579325449012090422569728120757220455', '1437825366756199104371656176529986848721936954126270', '0'); + BigNumber.config({ DECIMAL_PLACES : 215, ROUNDING_MODE : 3 }); + T('0.000000000000000442159492382513128427571751220494405137088137523248', '0.0000000079483115556786646523559916289715061611963', '5.562936093850179323090933512066164062507170496326604025267404120950833681722276043160122632116266606550423105658529701923436061669773008126464992892726071224764309212321494563221354505940260790670840668059225e-8'); + BigNumber.config({ DECIMAL_PLACES : 55, ROUNDING_MODE : 3 }); + T('-0.0000003504228524237', '-1032952077.446644962044606319803815615152', '3.392440560165293626459680787251958063761e-16'); + BigNumber.config({ DECIMAL_PLACES : 113, ROUNDING_MODE : 6 }); + T('69124597843.50539947142644802980', '90799591642662819371324783.949177998573604217890931479', '7.6128754097861742608339747459251817571899075951761421920492207126528165811658022258066410622469863e-16'); + BigNumber.config({ DECIMAL_PLACES : 29, ROUNDING_MODE : 0 }); + T('0.000000000000041132818206403790315863547877080363482551563821657', '-0.000153262430323090275701451205036963970857022878', '-2.6838161263456609097e-10'); + BigNumber.config({ DECIMAL_PLACES : 23, ROUNDING_MODE : 0 }); + T('197268470.35', '-678630004230.56963692051966802414265516509321274', '-0.00029068633735648469315'); + BigNumber.config({ DECIMAL_PLACES : 280, ROUNDING_MODE : 2 }); + T('-0.0000000000000000005987629601880069531317839363724947336548709470219', '0.0000000000000002510828614302796337610733655803694598620621022', '-0.0023847225444906389292201702013474109939071651818878048195707052759343733264813941364372150528789500908744837121876621032157353348814714417719166051739440585895734373385936856191700260518114458716265397093970984364925853922267727967826326276508495827664681205912342231881785075023'); + BigNumber.config({ DECIMAL_PLACES : 232, ROUNDING_MODE : 2 }); + T('2.523992393', '19453657223.261', '1.297438504253086301560251588035949755025793954483016531450474641957323549087248074088687167193582901415064933404099183164759832429067452564521491922694390666357880445731784713047835334005695458419690768566620626602376729688e-10'); + BigNumber.config({ DECIMAL_PLACES : 37, ROUNDING_MODE : 2 }); + T('19.82961545454921640774848', '-57882836397629549740115286663914824964586260552285469229.384', '0'); + BigNumber.config({ DECIMAL_PLACES : 48, ROUNDING_MODE : 4 }); + T('18663245904805999.515390848', '924.89476306', '20178777792036.511777576858539683815344101987394812268773016357'); + BigNumber.config({ DECIMAL_PLACES : 262, ROUNDING_MODE : 5 }); + T('178455.36407390127', '910.12193057856733033415608', '196.0785231935424765559140250745457716018895078438259823853720631173518826313275042638655970214751138140716784965181892650219031806922873638816234955316418168022543663282782427030262850682838162105293927127797470161988166762219845863444679433365144190734011028821264'); + BigNumber.config({ DECIMAL_PLACES : 23, ROUNDING_MODE : 6 }); + T('-51385327564861576919746.1470481795793562', '-79771673', '644155069492670.37335102834120301801062'); + BigNumber.config({ DECIMAL_PLACES : 237, ROUNDING_MODE : 1 }); + T('-314642.35022790', '2220006965113139045451.39152376707792515767154608909393216', '-1.41730343720730067259018251625799227007544749801321937053214873543030134393793452012757465529271890036077684965623138686056961571194281081785327910258848569949312260933786604892957768936185278157312741930243467837056757482e-16'); + BigNumber.config({ DECIMAL_PLACES : 264, ROUNDING_MODE : 1 }); + T('0.000000000000122091688910077661372629911120733960', '-5567.25555803168600421124743052956612599167', '-2.1930318742767291732899571027508445096570330070627677977557241821878889510713429017196441788995865311653731842480839745751334050264844723430747930595996833333405737128680094769207398223043558909530003544100598892212886394093958372500696080834031966e-17'); + BigNumber.config({ DECIMAL_PLACES : 177, ROUNDING_MODE : 5 }); + T('-66429.03', '-0.007674499644926302413', '8655812.505498905719889403106838810325574563697689183974559619689046726558122139841154741099420517037842278668055285788526119417809910822865955745617915832596383711322909237615920560595'); + BigNumber.config({ DECIMAL_PLACES : 240, ROUNDING_MODE : 5 }); + T('0.344155038684519819076171328846299372051125570825309', '277282243381178031028.7156205784378126423338721241406472', '1.24117229609763437712196031424136652295152755387397907148470754930983485486550715142800920780286300487413596423059452697216062899090317299652327454237404496631536864973134321241792915621551031151265316639439231118207321e-21'); + BigNumber.config({ DECIMAL_PLACES : 297, ROUNDING_MODE : 4 }); + T('-3807578562266890707.2243009426024368453763', '-354724245395933.67738801081736665507490', '10733.911232983169109269081528401857034010514263051482164787116911884445385237395261145573567863590288009664501760381712136025375241515258819537810357330338287645974373725477248216436776472288370861520609535883234959136868073362545734868170529335354625903818728859211695271094684228650978661486103585658'); + BigNumber.config({ DECIMAL_PLACES : 107, ROUNDING_MODE : 0 }); + T('-0.00000000000000581524533212211', '-1693.31953804599397966807376387113403404969823271727405107526', '3.43422797733298001327084246426134700229059731711546098146484504703195468645128919825421305e-18'); + BigNumber.config({ DECIMAL_PLACES : 148, ROUNDING_MODE : 2 }); + T('-214432650823225826170450832412705161181650881284515.97971505', '-0.00000146953053193119636676554385758', '1.459191532015515782895028709758958994348694755148926568177454618952506950876539033795504849627847196214472843119238304481924692200068596202059000308055938525040311180969611781332383836201777726641568350014e+56'); + BigNumber.config({ DECIMAL_PLACES : 231, ROUNDING_MODE : 2 }); + T('-2.753084133516891534631878384376841322396312328', '2609771981201343037805059322.650202155118081', '-1.054913668070563905743945158180639266096819982869283724949037469462506310335725713526150444663723427081343446746909521762109867317322971611118047687743055211032201759025789187466612778333639241735442192514e-27'); + BigNumber.config({ DECIMAL_PLACES : 82, ROUNDING_MODE : 5 }); + T('-158020.0971401257134721778352449209026523806838', '70437.9630479793648724466291471181932299458498755680970', '-2.2433939072384744948424953804068249910026085297915822901714893350698697950765239116'); + BigNumber.config({ DECIMAL_PLACES : 203, ROUNDING_MODE : 4 }); + T('-4064938332175191470776362396353171030862288332293', '112463265588208754675369735739438790638684.673570', '-36144587.39851300536972642235921485108381275408420090638480520011678815266627288760786459018500429386107754962590285012391114337432066372865552910100148072969401124337020066914964758781939681400771331388045482062'); + BigNumber.config({ DECIMAL_PLACES : 243, ROUNDING_MODE : 4 }); + T('-0.00000000000000003545434645', '-31652.9344236964062899182621572', '1.120096670198695202773589854997853984349649640076178532531654703870663918982750592689123929465498772432329970391738047419021331869477263529243482236131671611550607722163644504740925005258655827352743085916853442614196493578e-21'); + BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 3 }); + T('69707702181652340412996942393807028632.88874469', '-2319.99966623', '-3.004642767683125263317419558980960803605242193242106395869763685108200508001760154e+34'); + BigNumber.config({ DECIMAL_PLACES : 237, ROUNDING_MODE : 6 }); + T('-0.00000000859627227', '41942015753.46806653930', '-2.0495610703424998316084339065959867670131919381975808837334780740698806549875476581140075106840980671647283008963679042652012802774122673512749680851401960572257400982091239326932597757908113999250803005938702047873036e-19'); + BigNumber.config({ DECIMAL_PLACES : 199, ROUNDING_MODE : 4 }); + T('-0.27858502', '0.0000000000002148090475579216136227161437208585590658115618410966795', '-1296896118516.0587061143807902704492642316338816051013663356531763378260238060766132300335935915635302703031633801406898207390941630567083211944589375577080764059644075477119482033437243786485414714993379133959193'); + BigNumber.config({ DECIMAL_PLACES : 167, ROUNDING_MODE : 2 }); + T('-3368832017105385575764034400463912956348479905841608480', '-0.1124132611646011282373808347675417388616', '2.996827938451650270815982416204714251537984915988789943325557540012137462382804039504751820181310578964802993861026651536150894386125119136843395074880905121533532153583195770581161738754114736440056201490378798176609279105e+55'); + BigNumber.config({ DECIMAL_PLACES : 100, ROUNDING_MODE : 1 }); + T('-0.00000000666996073516980102135350690038051557076952452', '362109938.0183', '-1.84197119020597559339722219023682910076778527811614363760012179348670008382700998519e-17'); + BigNumber.config({ DECIMAL_PLACES : 37, ROUNDING_MODE : 5 }); + T('-785.42455826', '-1865535659575425468295951577.96652336125647929834911411248424', '4.210182497604e-25'); + BigNumber.config({ DECIMAL_PLACES : 299, ROUNDING_MODE : 3 }); + T('-0.0000000000000429749659666943840335226914567618834517', '-35944687155795431922180096044098168655936813506930', '1.19558603418712594262437246257423986551097591657336571183912550475137058755500464357888770059941959411115322700999986775430787279774242827072890744098884609509205395094560840672209834724612412567384353637838751379317020925880218007905708e-63'); + BigNumber.config({ DECIMAL_PLACES : 110, ROUNDING_MODE : 6 }); + T('-223597368931.2372', '-0.000000000000000792399246152032873616480092538675958', '2.82177664879222914780541865004991714011648597296273912762933197172092177661703327060936941778993381399619820041299007909909260249628918e+26'); + BigNumber.config({ DECIMAL_PLACES : 203, ROUNDING_MODE : 2 }); + T('-3456992176960', '-0.00000000000000001242096384225362694977819624176699928353274', '2.7831915629606828069887131870368319417750565165038027057508787543044582832424397575820855800519123910140023283600820223394046375153945318982761556842511255832125581448133500782689354760136916627010446313743375055074044368759730774131e+29'); + BigNumber.config({ DECIMAL_PLACES : 123, ROUNDING_MODE : 6 }); + T('0.0001185260873311176306096326384045841442409', '9673394116406.0731580555833298951718568087', '1.2252792133228338798006852463335050193973440006501469758787125353507436998980871417633705733080188399867544e-17'); + BigNumber.config({ DECIMAL_PLACES : 198, ROUNDING_MODE : 3 }); + T('13065602.0526445508170768742500490102', '-0.000000030962951588303796262963712611048701363279', '-421975340929062.472732364965452838405972812344309392798081291291561825045438860601606538999180636277175652396026866225597783260733520928245547177502820184586765515281541111862479725038012952649729618169588548738219'); + BigNumber.config({ DECIMAL_PLACES : 222, ROUNDING_MODE : 5 }); + T('-2170.57', '60778803956902432353893381', '-3.5712614574303351254417112539184517565776619585813969475331755275054595527580193310627295098058718197435664946123235268400962128066457918239225758638812422508126933055633095771266818804694261696702234e-23'); + BigNumber.config({ DECIMAL_PLACES : 72, ROUNDING_MODE : 3 }); + T('-452429589240494229.412637104524', '147.78352936', '-3061434458899528.811555222316853185756126131808603599856535460400646098089641672366133563'); + BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 6 }); + T('-9636006563886901032.38711887811666657', '-526693.61387', '18295278906239.57193108907378770353984660512739776386687253304'); + BigNumber.config({ DECIMAL_PLACES : 177, ROUNDING_MODE : 0 }); + T('0.00000000000000420', '-7485872742485628155874561090121626632152854', '-5.61056825901293822488108761867032420165735067943904954187630777406056144052739126719984089981724398989158903562179426075e-58'); + BigNumber.config({ DECIMAL_PLACES : 43, ROUNDING_MODE : 0 }); + T('341.132567141533589477106912356979040174396447986233982362', '-61', '-5.592337166254649007821424792737361314334368'); + BigNumber.config({ DECIMAL_PLACES : 256, ROUNDING_MODE : 5 }); + T('-493844617493728135650648960836996786798471112592932283', '-0.000000000000000018385574974244991697', '2.68604391315212588404336057639413755277716306025746617256821886681466898635115033963694204129871990836176187816418993149942746327143728473556550780208205687573190697173156146919364512267020252829767465238363244705336071431867173484274500627836290330930763405432815086014481888598351708831171681770141270491048670437553755827398e+70'); + BigNumber.config({ DECIMAL_PLACES : 239, ROUNDING_MODE : 2 }); + T('-12385216271220514017.7103345430365388082240060', '0.00000000000000000021502740756141811181388594100149557', '-5.759831461337287569025273529514240303245826030125384486883048647860020416224599306600826339089902902165616372521378830619153978452824992419123313093694089460726105193107025254012289341941649527241310405619815332517834647536669693523177344651834995919667246658028133411515770346e+37'); + BigNumber.config({ DECIMAL_PLACES : 70, ROUNDING_MODE : 5 }); + T('-0.00000000000000001161983508956321382168280764700467', '1372912056706881822885091176839074542.911487968608916', '-8.4636412309139338e-54'); + BigNumber.config({ DECIMAL_PLACES : 115, ROUNDING_MODE : 2 }); + T('0.00000000348944204828108020921942879627575', '0.1132658385675712878912248', '3.08075417302400046925398397442666845714320923353175280997200834523319465313552222621235722062791879077261021e-8'); + BigNumber.config({ DECIMAL_PLACES : 117, ROUNDING_MODE : 1 }); + T('-1509346.46114520', '-60676.7245830285451006625828', '24.875213214250667696341957055494376699446097123293815250060926516859436333220035817598009189880736821244337291355056465'); + BigNumber.config({ DECIMAL_PLACES : 118, ROUNDING_MODE : 6 }); + T('-60493722634666202618279995741.9152', '1085119925.521', '-55748421176231995910.9248923544771616679302969863062050677343033395229821810787653573479108761381728692632862078482504002597330810828849768'); + BigNumber.config({ DECIMAL_PLACES : 102, ROUNDING_MODE : 5 }); + T('-1494820965424.92404952076160', '-629079919004241555460452085869247341253.439559', '2.376202005924854925988177714967899229584440509335776722433658335411978107928e-27'); + BigNumber.config({ DECIMAL_PLACES : 24, ROUNDING_MODE : 2 }); + T('1679737228315247611008680811886881746898.012678826', '7116.46', '2.36035504775583311226182794800628647796518589133642288441164e+35'); + BigNumber.config({ DECIMAL_PLACES : 182, ROUNDING_MODE : 6 }); + T('-310.41395933724591435408865483888484178701950363457603514', '-6.733', '46.103365414710517503949005619914576234519456948548349196494875983959601960493093717510767859795039358384078419723748700430714391801574335363136788949948017228575672062973414525471558'); + BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 1 }); + T('0.011', '175004523773376368811209423974.89465521581672626', '6.285551803360549546152410813657247213e-32'); + BigNumber.config({ DECIMAL_PLACES : 107, ROUNDING_MODE : 1 }); + T('0.0000000000000189734448733697221505', '-0.000000002402762696384977186572094', '-0.00000789651216989334560220014280453792676801477711345168795812931187815738492650235674220478030381217345352'); + BigNumber.config({ DECIMAL_PLACES : 115, ROUNDING_MODE : 3 }); + T('0.09819456516372840371284202496477253430251499750596070', '-2696.32214084024151668', '-0.0000364179649294904048913413431747308181483800035162818551645670946952058381858182064988560493386164015323213730997'); + BigNumber.config({ DECIMAL_PLACES : 188, ROUNDING_MODE : 3 }); + T('-270.807', '683439897.187302936237800', '-3.9624113417215804144275575950992950014709627620404373386667559311809891153595211180278516684355738319773499668426471866722988661122264735402715385336852396071443395093570732168386956e-7'); + BigNumber.config({ DECIMAL_PLACES : 164, ROUNDING_MODE : 0 }); + T('-36916844011.084', '-77073993.9199556052600758116865746524686101', '478.9792527090733662521624438319174623714130825393066899777619000853534442033025812833031552359261923124281382475123884609762492055180240309019401670245912461813142763'); + BigNumber.config({ DECIMAL_PLACES : 240, ROUNDING_MODE : 6 }); + T('1498756.379094145881908367180112795514279970825151692477439', '-217.5', '-6890.83392686963623865915944879446213462055551793881598822528735632183908045977011494252873563218390804597701149425287356321839080459770114942528735632183908045977011494252873563218390804597701149425287356321839080459770114942528735632183908046'); + BigNumber.config({ DECIMAL_PLACES : 103, ROUNDING_MODE : 0 }); + T('373792319970831180573921.680169489813', '170474937115919273281277227438.552446131', '0.000002192652634426024047352948701031803098142401935326380995080895542582154439299826979728263449580395'); + BigNumber.config({ DECIMAL_PLACES : 176, ROUNDING_MODE : 3 }); + T('143.23406091649624237', '24617124520581100857880326750134851911568955496.04148237887', '5.81847245387029967525642263541659467319235687847010473056511924110965224838250018372170219431500948864714294914447920197966483247687e-45'); + BigNumber.config({ DECIMAL_PLACES : 237, ROUNDING_MODE : 6 }); + T('0.1037658134136542454549718806147427342838', '486676241503221568296817.2031384689341793', '2.13213229996902087263184936369002646696477620702908795399290121226287075412860814248158704404807703971834997522375601251700095150779468851319233223570961638018197560337633623108115293122817414343910052981271159838e-25'); + BigNumber.config({ DECIMAL_PLACES : 191, ROUNDING_MODE : 1 }); + T('144940144163730803', '-26.23522648279107856251491553390467018402973730', '-5524638571685435.00665543939781189704858014752697856515035883477991258946267088420595900389279838159220006108715817423857836009982626608845809845438174913951185281785176165492674117315365837527769844691183245'); + BigNumber.config({ DECIMAL_PLACES : 274, ROUNDING_MODE : 1 }); + T('91370390607432135043833484575112704608745763.3', '-24015897771863707460528181375397913677228.5024', '-3804.5794279853612143238701883472721463912414199732655528079740189323889738387848435737394829030319004880988613525749565134322700284372512393081012332153349198627899731479607820794982783321422716733988583734732808320261480884913381630779064668725123215709337854770430981876387321'); + BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 4 }); + T('0.00000000000010564283139916068061', '1836702626815765.684621966886341353', '0'); + BigNumber.config({ DECIMAL_PLACES : 222, ROUNDING_MODE : 1 }); + T('8141733263483523950536891097903628428299301008676332271961.3', '-1.015', '-8.021412082249777291169350835373032934285025624311657410799310344827586206896551724137931034482758620689655172413793103448275862068965517241379310344827586206896551724137931034482758620689655172413793103448275862068965517241379310344827586206896551724137931034482758620689655172413e+57'); + BigNumber.config({ DECIMAL_PLACES : 265, ROUNDING_MODE : 3 }); + T('-1251082911783', '0.012295681563529171929962302642510870', '-101749781443096.1505358980581083912974525420001278848062978732211896463100008307393560536117459270801203102481508062216669336487515741129284311489109985245573107351348829887676314472042816413829359097701465060538681506643926046081744702186233208613091445080493800738076378769192381'); + BigNumber.config({ DECIMAL_PLACES : 247, ROUNDING_MODE : 1 }); + T('-143906596499234149655948273212.064434045077725571', '-0.0000000000104067197154650062686077977130122878058268600045415771069823', '1.38282379495029892160047614332417108848571694219143535307535632425803199542551561586361007754466361251719545894912571891484622944160776814047097016711094323933111847523140818794906586065200669369363605090427932192426657927806969973980025632046944224515020659540685734868601555501621760362e+40'); + BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 2 }); + T('-228394458183785537696136096189', '-2.244', '1.01780061579227066709508064256e+29'); + BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 0 }); + T('0.00000000000000001282674960326596381048951594315420029152567073542478', '20579.8285767136017929', '1e-15'); + BigNumber.config({ DECIMAL_PLACES : 277, ROUNDING_MODE : 2 }); + T('-10897409776353933242513', '0.00000000000000000001382960249336675355529178526657', '-7.879770789927461328156899205340301449839013993783128934505656104289643219119885202483761429947276290177636286677085904944040052153999592512022379675143200677517091671777582251257433111303648545390004173378228821151300976000997064967670248517083597646485647288918528344143533902405780804470851619245760208447272146577516e+41'); + BigNumber.config({ DECIMAL_PLACES : 123, ROUNDING_MODE : 2 }); + T('-4190603853.744986', '20.1070309210948423214925405', '-208414851.013558027625631868856773395159405268670565956151152023664877002151704685570394263702919328566846654652418680789360498409925'); + BigNumber.config({ DECIMAL_PLACES : 130, ROUNDING_MODE : 2 }); + T('-0.0529084517767297839967464788640862582172932408507193848376225', '0.0000002487933343362348270682587825797133032803239769917019', '-212660.2463763197241937009051150062082328295144658321609489836639836476243136425836057695327556543013795011583774737176409659351651346841'); + BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 3 }); + T('-181.2', '-0.000000000000000000412282983010075543837691711983618505', '439503951089758557107.25859278626467307696375771506188111618825926064592928336917933761904577475520450146308114342902'); + BigNumber.config({ DECIMAL_PLACES : 45, ROUNDING_MODE : 2 }); + T('-0.0000000000000000000148222252872730424', '-4.98250', '2.974857057154649754139489e-21'); + BigNumber.config({ DECIMAL_PLACES : 244, ROUNDING_MODE : 3 }); + T('2551323472554.1407949247678', '-1454676541660860888114084063067825178832856', '-1.7538768238066143389475473183623988849891860145200130558859657751591938208039651149659970128340006320340305355921712194913145154183186376240719320319188734135516716569433817092156290844105414465495860802206887853415e-30'); + BigNumber.config({ DECIMAL_PLACES : 90, ROUNDING_MODE : 3 }); + T('0.000001442076145115913636245444747615', '286.0795703792537022764363578', '5.0408218357017360328794508490717342370735704330378958675254417671269217429167997e-9'); + BigNumber.config({ DECIMAL_PLACES : 132, ROUNDING_MODE : 0 }); + T('-2325629707643764.03150674', '-173361218513031.3', '13.414936325386695247355615224999902566550423557876131711027681573627639062248435610113815397726475009793536875751005885500429365084777'); + BigNumber.config({ DECIMAL_PLACES : 186, ROUNDING_MODE : 6 }); + T('2823281046511.85672506534131817966', '54.051936216425770', '52232745839.248838146918831929116815949761867699327300071822785402815143673132676744115735715620971071789737700425397160379308004973120166436381458685919904703812948830374190730479411191287042221375'); + BigNumber.config({ DECIMAL_PLACES : 170, ROUNDING_MODE : 4 }); + T('203984296.54702441665048979322644638399', '-6006528911617744430.311485', '-3.396042865164285413358711220853449332270972842417215264553826694865062113305833977338737944123612446116240859863177249510552536118085818537881371503397909402944e-11'); + BigNumber.config({ DECIMAL_PLACES : 134, ROUNDING_MODE : 0 }); + T('1.038', '0.2658085636849562201592625901942631806928', '3.90506605810588845991225401366484989981460787174802789814564503896347413002089787430061321768750017961097314721138696498955603361222665'); + BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 6 }); + T('19270.18206448403351139832033908280583718', '-0.000000027', '-713710446832.7419819036414940401'); + BigNumber.config({ DECIMAL_PLACES : 181, ROUNDING_MODE : 2 }); + T('-7.6779939679598', '-71191372879152203381340303099724876309099.450848310617097356', '1.078500618465841688338539770085180349799362678488625326291561596810540608169996776270300124207553667411820435426633818477791071303140173921988e-40'); + BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 1 }); + T('4138.044', '-10681771389609751276841931107483558622710', '0'); + BigNumber.config({ DECIMAL_PLACES : 299, ROUNDING_MODE : 4 }); + T('-4910225019473700.842236835817', '-923727505.7150720', '5315663.96918387568903730268407317577394691311370254471956910489775692131474548087817556054854212181051476633545905402802812861794114273225153253844425919164287166193405540626127738020958449340400662545239483187685866599820573707754975551635472976785420141347957424615209859389812859828622011960797465550372'); + BigNumber.config({ DECIMAL_PLACES : 181, ROUNDING_MODE : 1 }); + T('130.6225882684837762105837888716938451', '-3498131947095444632171564507923323005451449988451726344.69', '-3.73406693183605660494123265970287129905614719489716390528222903937528652266687501483847522231276751584147950432190464551895588792e-53'); + BigNumber.config({ DECIMAL_PLACES : 114, ROUNDING_MODE : 1 }); + T('5.37697763', '-0.0000072152260708899588489795556624888473470', '-745226.494245769223271470655514514117965181356243958711874110194705793912318861490275399506887285810346337695627100796266'); + BigNumber.config({ DECIMAL_PLACES : 262, ROUNDING_MODE : 6 }); + T('-13.683707550705175', '-11460360.05752569262315724123133592260252359874453', '0.0000011940032845407394761132518201266542432139836849185956890963942826533021622328711029282052931723127130615921689401033688458155376710911643283438238818511648846438205068707928523714274858412087737126523654704096199302033643663953660340827960787478592510412953'); + BigNumber.config({ DECIMAL_PLACES : 32, ROUNDING_MODE : 6 }); + T('-1.1', '532959986098980624647949943202670187587200425318382177358', '0'); + BigNumber.config({ DECIMAL_PLACES : 170, ROUNDING_MODE : 3 }); + T('4483996522799.377840', '0.0000000074492182450048110743959432459968678', '601941891795986956316.72081414644162380311384871056002667826017136893174457937843305960356642660104629457209417035997166310754024901907557126560927736464421711586999620047110960869358028374406'); + BigNumber.config({ DECIMAL_PLACES : 127, ROUNDING_MODE : 2 }); + T('0.00000011038111639360927158074252077008120661994335918276975', '0.80261606693665424071169253556846972473303944187454175640', '1.375266717683599561261999012603185478788185745201251377562271624996674163339119665565198908619639639637266939120044609113e-7'); + BigNumber.config({ DECIMAL_PLACES : 256, ROUNDING_MODE : 4 }); + T('-806302.349', '5515170738878548042014545448842819.706566505', '-1.46197169076936519559730078104198629171471867776887285857209891716487487068868878760148367528817718076659326561276837904805583947580014216286433669317201120332142304258671720194906503594277397136095615955723151574689238719577451e-28'); + BigNumber.config({ DECIMAL_PLACES : 188, ROUNDING_MODE : 4 }); + T('18010382767088062671419.75360076164312909114774', '-1914068173845009784501461077482788607', '-9.40947820625872844502799793926282464443414463411276146178726438954482953571793756741062034654357408057011755990911118078603022710812500938514329675051465836241420519016364164e-15'); + BigNumber.config({ DECIMAL_PLACES : 60, ROUNDING_MODE : 0 }); + T('-47772992246.9696659232869282786313812740', '0.30', '-159243307489.89888641095642759543793758'); + BigNumber.config({ DECIMAL_PLACES : 98, ROUNDING_MODE : 6 }); + T('141990.7689498908574158', '-377639', '-0.3759960410600887551757101358705006633319122230489965284305911200908804440219362936561107300887885'); + BigNumber.config({ DECIMAL_PLACES : 153, ROUNDING_MODE : 0 }); + T('-2962.90745', '29.14150128851816098897490329004872', '-101.673123174590680132144567856578947132497869769968043035639134249369219471641079048742094079255916965724333361585440644519985539029984661562087382365966939'); + BigNumber.config({ DECIMAL_PLACES : 116, ROUNDING_MODE : 3 }); + T('905992035566540052337247037401911576333', '-0.00000000000000017615773598476110868610707', '-5.14307265872737361703517709105328056126429592535814861565643256855617080424398169237812353435755784015944348338942480480193692613979709866546803354633153171768590698114532e+54'); + BigNumber.config({ DECIMAL_PLACES : 192, ROUNDING_MODE : 0 }); + T('-11130632183625.6586719502347007698765143795750029439678', '-7932312441403617151965652196197', '1.403201432854314179426490150814308806683187887341950793212225434004755692371191395477402813916847593042422825948110971905311725834610326422454272722727864056450312493649248698e-18'); + BigNumber.config({ DECIMAL_PLACES : 182, ROUNDING_MODE : 1 }); + T('0.00122708758480883764056897977998910400264555969042323', '-9232511657147698271218855271352592', '-1.3290939999613662572392840585486205603105869549607461946562719992654984424663083886079004119808992248343930289938860263003250848081334155772111463e-37'); + BigNumber.config({ DECIMAL_PLACES : 43, ROUNDING_MODE : 3 }); + T('34.668564391821', '-7157395069668207214.775700133922', '-4.8437405025664062096058445e-18'); + BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 3 }); + T('-0.000000023021840268591836196', '-3208926912036999079.905', '0'); + BigNumber.config({ DECIMAL_PLACES : 139, ROUNDING_MODE : 4 }); + T('-0.0000000000003594223783132442952025609288685373148302380', '-5082879.56678022572', '7.07123538126483908189046777495526485629357335627016313939776228214609650600242427786351650812622416769560164272408780253e-20'); + BigNumber.config({ DECIMAL_PLACES : 77, ROUNDING_MODE : 3 }); + T('1149295747227942158446', '3769467847401296005982024834.139786579364386880927', '3.0489602080576882104834481876350470109876192294303918669418259394833046e-7'); + BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 6 }); + T('-4704704975.2', '0.0569175072995078493129513483846432031377593558', '-82658310218.035'); + BigNumber.config({ DECIMAL_PLACES : 274, ROUNDING_MODE : 2 }); + T('-548866899699491412107930350', '-365026979881703612745468787941335', '0.0000015036337858570505027564615989732516410756650320570810475497884499675250239480775416477157200159419825802384447547761003188184299751313186203165479933567102519507363983828086206400321681365867861082975579317290332328567652136189093027879598714262345816310778106071841442'); + BigNumber.config({ DECIMAL_PLACES : 124, ROUNDING_MODE : 4 }); + T('0.000000001144809503826049447899406852024433393516801693905107475547', '3249798939885326147062423092', '3.52270871214711426418052424059243914521961096129310144716093379919214709302287842002521e-37'); + BigNumber.config({ DECIMAL_PLACES : 114, ROUNDING_MODE : 1 }); + T('-102545071096316233997890553072.95685369403376313925802258663', '-77693492020751755.018198136607646944', '1319866933885.873976796802743514510409781586039525249696653518917366611887321297822332051432830845672200367273749403186523474953'); + BigNumber.config({ DECIMAL_PLACES : 206, ROUNDING_MODE : 3 }); + T('-0.0000000000000000416333200825886392936824140474669186581173', '0.0000000001125116566276869484110591846085902445242457', '-3.7003561524614048127087995487401400938375832841381786997089805566405053873396052004240685182194881152645803810632400749261807330444089587148783604427239587648705861382352196902412428133812908509511231e-7'); + BigNumber.config({ DECIMAL_PLACES : 24, ROUNDING_MODE : 5 }); + T('-9517.93', '-110225103619777768147537067303713235463261967083072.15596', '0'); + BigNumber.config({ DECIMAL_PLACES : 154, ROUNDING_MODE : 2 }); + T('-0.0000535496438', '-2213229575797455', '2.4195250409440862719692934168326063139110880225518553812818582848188605565149180490706193582192616596004319584620305521467023709177804e-20'); + BigNumber.config({ DECIMAL_PLACES : 118, ROUNDING_MODE : 2 }); + T('6295317089303.6', '26548885.73', '237121.7064748577679760874845574921987507458377990464912818772375649529755236172015419646766470903033262631772229937576366977'); + BigNumber.config({ DECIMAL_PLACES : 299, ROUNDING_MODE : 0 }); + T('-26058953500276139433467299710132.4937626975185', '0.000000000000000017', '-1.53287961766330231961572351236073492721750108823529411764705882352941176470588235294117647058823529411764705882352941176470588235294117647058823529411764705882352941176470588235294117647058823529411764705882352941176470588235294117647058823529411764705882352941176470588235294117647058823529411764705882352941176470588235294117647058823529411764706e+48'); + BigNumber.config({ DECIMAL_PLACES : 253, ROUNDING_MODE : 1 }); + T('-0.0000000000000001493042630', '-0.0000000000060778603690351038741771098023753392098433733', '0.0000245652670404639340204435110423919704729217439347602130414403104881091553411817461803275259108437760918366088913847774353441559659397553361889939945317028793802041505764799507565698417575746333387012890730188442902601582761312145371268672096868323951'); + BigNumber.config({ DECIMAL_PLACES : 146, ROUNDING_MODE : 6 }); + T('1276275760477065658755865687302.679006899741223', '0.00000049608790', '2.57268068920259022394189756956918120135512521672066583361537340459221037239569842360597789222434169428442016021757434519164849616368389553544845580793242487873620783736108056656894877e+36'); + BigNumber.config({ DECIMAL_PLACES : 38, ROUNDING_MODE : 4 }); + T('-274180362390551633923434746270311581362297550769077', '3094224947392109923347536.0441182400221', '-8.86103522052065710762472972244408604727688902925940984797542112e+25'); + BigNumber.config({ DECIMAL_PLACES : 85, ROUNDING_MODE : 3 }); + T('-2109132906322452570373149329314.66441904', '-0.0000000000000365', '5.77844631869165087773465569675250525764383561643835616438356164383561643835616438356164383561643835616438356164383561643835616438e+43'); + BigNumber.config({ DECIMAL_PLACES : 63, ROUNDING_MODE : 4 }); + T('-0.010224419800061', '11674132424094070888166', '-8.75818384495876520879386729450740899613e-25'); + BigNumber.config({ DECIMAL_PLACES : 32, ROUNDING_MODE : 3 }); + T('29172443.146', '-2824647549173228850820421484511374630826957616507663195', '-1e-32'); + BigNumber.config({ DECIMAL_PLACES : 199, ROUNDING_MODE : 3 }); + T('160145386.2655', '14.02', '11422638.1073823109843081312410841654778887303851640513552068473609129814550641940085592011412268188302425106990014265335235378031383737517831669044222539229671897289586305278174037089871611982881597717546362'); + BigNumber.config({ DECIMAL_PLACES : 159, ROUNDING_MODE : 6 }); + T('112206983448328.283044205651799295998783440522', '4321495', '25964853.239059233678207576729649345604574463698326620764341969619309984160574060597085036544066347409866261559946268594548877182549094699866597091978586114296094291443'); + BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 1 }); + T('-1395102637561809582728128415381628972549040.522487612357520279', '-0.005947979803', '2.345506682551540571746168747677620472493457998528466687061e+44'); + BigNumber.config({ DECIMAL_PLACES : 238, ROUNDING_MODE : 6 }); + T('764305465.386829531', '9987.696501266061134293236', '76524.698692030197771079661311499247551427600932863153670022851997011077225380964462554209802957379021804709213601565599400164784952002592636960358288312473874027019419109539627949043898364241487061598421744213959406347133377229059465142590105'); + BigNumber.config({ DECIMAL_PLACES : 186, ROUNDING_MODE : 2 }); + T('0', '-2498081878584305986840601569679', '0'); + BigNumber.config({ DECIMAL_PLACES : 161, ROUNDING_MODE : 2 }); + T('-6392133158902638801758509088074.9', '0.00000023893415336553956687861358', '-2.675269763181770542693975529838390691486277107450440976938935090338671840054677748224247380024502105881706235110586189459141031883700546791172938360802988329999673433225803185020918502800316976026322e+37'); + BigNumber.config({ DECIMAL_PLACES : 184, ROUNDING_MODE : 4 }); + T('-20.91563751600587109', '16274679431470471061471.3070452500572021335885716597272097', '-1.2851643317509003697116257448633857545972022161403762220420810226872249333662094734787351227239460231388803379983252654743292676249719009984592083286172992612631001e-21'); + BigNumber.config({ DECIMAL_PLACES : 234, ROUNDING_MODE : 3 }); + T('558214.9', '-323292.3502380298119', '-1.726656691966278300106360497186621523401583735551520397140768277101421141514983724367449904265456491021270326299316965996634190339927522690463460438689627477902327379394648859802812519487662064677332186716106908815347451909679873924622'); + BigNumber.config({ DECIMAL_PLACES : 207, ROUNDING_MODE : 3 }); + T('27157176.93189846816074011563', '-1354864548700246737565542329828863', '-2.0044200697369329952604438421592536928919175630228569875434228577480235389860431168038607438639670478266888755317401383848302553523674535366349981668160582017449653115569024239078642e-26'); + BigNumber.config({ DECIMAL_PLACES : 220, ROUNDING_MODE : 5 }); + T('753056872638776281295490967.64', '342983286928292534888056003143.56', '0.0021956080699530346805824124500924919128264331125361508841353994360195836879040252411717333579739246373436225297245297271109222372920775107015804908608690460453343719828189748853867179653658051980406081817157275936107681'); + BigNumber.config({ DECIMAL_PLACES : 165, ROUNDING_MODE : 6 }); + T('165947641587434546530597443157214.02440979731262', '0.0000000000084776073504023745736416985342865847443661560793', '1.9574820433215527079662345632302427589890454112223870897240707386255000941355370633699082046009172856320831019733020255361550112257551779528995161866107885670954059766743190427206733370185273254454686423739695e+43'); + BigNumber.config({ DECIMAL_PLACES : 195, ROUNDING_MODE : 2 }); + T('65901726.1950363691852445503303823209330', '0.00000029925018464626969021489432429922372339', '220222842211228.251646289763843407315781448078421833368729521346170558330005423344201489496766411806119770013243242069591656148627303869840447605487189053222957932126125731408651742404954882326180722923645546036'); + BigNumber.config({ DECIMAL_PLACES : 164, ROUNDING_MODE : 2 }); + T('104.924561736729913573643232', '-0.000000000001849949673542845922045122704279571', '-56717522231720.21281340572308971058766086162714586350749606738382744506142904118902780673267487146647270637795655498837051503220521488172183493098955775372717052891414945139232077'); + BigNumber.config({ DECIMAL_PLACES : 25, ROUNDING_MODE : 0 }); + T('-172.31273088769687731506579273432389', '100708959275807032.0689', '-1.7109970367e-15'); + BigNumber.config({ DECIMAL_PLACES : 284, ROUNDING_MODE : 1 }); + T('-10058556026190767060589730526.64796078700077259921675', '69804777861457868983.2976486975459128', '-144095523.74987952817306983501618179681909099617002603624447096288935558942900781376738119675768364699037856250508453396919782599855688460689219693408216568367528231833815116493239714837307790187305682031211729742360057112895504564170000713684208501012318444852554356985080457213263239076941019'); + BigNumber.config({ DECIMAL_PLACES : 98, ROUNDING_MODE : 3 }); + T('-16611683.149189235892803591819111039', '-0.000000000000000000010983315399927853839748944417100990369541440601719217', '1.5124470657829195309444364255042433624060649922719269406973855811869720126685414817897108099464709518996694523706279509236997e+27'); + BigNumber.config({ DECIMAL_PLACES : 140, ROUNDING_MODE : 2 }); + T('3644346004620883867470466.2727301188344540368833', '2540411425014666.27901699818191', '1434549525.61467257763734041796695904484305676539521956214321230992602140227923499770842342719291942101857231349528050138026645873324034556053790978686'); + BigNumber.config({ DECIMAL_PLACES : 104, ROUNDING_MODE : 5 }); + T('0.0000000000000001982653514966263222419399330976618570323635507300153', '-1226', '-1.6171725244423027915329521459841913297908935622350350734094616639477977161500815660685e-19'); + BigNumber.config({ DECIMAL_PLACES : 217, ROUNDING_MODE : 1 }); + T('-63167703649949659', '1641317088.16017093448657790', '-38485984.2778809373692306707474006982676284472451432293978403971522954547132372582677310087481074314741937725849727116025579430028038944728538993123682998036106197745502660076979267250518200954219564895474384360723906298667752'); + BigNumber.config({ DECIMAL_PLACES : 110, ROUNDING_MODE : 5 }); + T('-0.00000364847480818972341867989364039317428862446666102014', '-1436716105182889877124376', '2.53945424223199818892202654422472356472617527625186191322012999743681732691797401e-30'); + BigNumber.config({ DECIMAL_PLACES : 123, ROUNDING_MODE : 1 }); + T('0.000000000000000000021734877338056', '-0.000800276175', '-2.7159220800314341483426018524167610012880865783615262568575154695814854165813445589580372050936040923622398e-17'); + BigNumber.config({ DECIMAL_PLACES : 74, ROUNDING_MODE : 3 }); + T('0.000000000000000000203218732432793472959845694281035791', '0.00000000000000000075780816783661099212837016664301128224', '0.26816645829107627739963004668854739455312713130408145286865430457617075992'); + BigNumber.config({ DECIMAL_PLACES : 138, ROUNDING_MODE : 3 }); + T('-1663274291319493.298031772433330344931951159103843', '793935642240197129.32786338698642684', '-0.002094973701679822844974267240742764093693942839597131751996013867893673672589450763271640272825195404662888775516034051347719755745420575'); + BigNumber.config({ DECIMAL_PLACES : 38, ROUNDING_MODE : 1 }); + T('878.367225', '-0.00000000211472437363267955633057579336354982804469', '-415357781823.42424010899875939160917260359275156346'); + BigNumber.config({ DECIMAL_PLACES : 55, ROUNDING_MODE : 3 }); + T('-9182162678.3101898431272789380128603186243617246100938', '-2.270088953696', '4044847081.1509104218993330718044882273159266452754765045932842583'); + BigNumber.config({ DECIMAL_PLACES : 38, ROUNDING_MODE : 2 }); + T('93061156417143024', '-377797339784428253.941556063527', '-0.24632560004325034077851736382612253537'); + BigNumber.config({ DECIMAL_PLACES : 133, ROUNDING_MODE : 0 }); + T('4.824655', '-2101727370077783665', '-2.2955665271759021829101156105378933340144159777970106381649252093622129699747473730071989269847011584928175270242985e-18'); + BigNumber.config({ DECIMAL_PLACES : 280, ROUNDING_MODE : 0 }); + T('-1.804', '-0.0000000005828558', '3095105170.095244827279749124912199552616616322596429511381717399054791939961822461061552445733575954807346860063844264739237389419475623301681136226147187692050074821250813666090309129633779058216457655564206446946225807481027039621120695719249941409178736833364272947099436944781196309619'); + BigNumber.config({ DECIMAL_PLACES : 197, ROUNDING_MODE : 6 }); + T('0.0000000003625830106470833672565200086393389699', '-17646899429096805962.537081', '-2.054655618704576559685514068893117263531485382869965622628220904339657304024186830900647993830889370634202630270200174222581544091468058863449292018247236089323691557945e-29'); + BigNumber.config({ DECIMAL_PLACES : 255, ROUNDING_MODE : 4 }); + T('-0.000117386661795741118697895', '248940.406749455074', '-4.71545231762573537913038909050954222563362547734266377387473449365866139595150894369561912014772699789792409938711777326917468989680791660820530072812553915257300646130745103765254623158578032414094267132835729298942457209687014851948882767121184e-10'); + BigNumber.config({ DECIMAL_PLACES : 148, ROUNDING_MODE : 1 }); + T('1733.56493', '231230767600133011452365586256235212', '7.4971205086247475533294384980690859155154472523121939279301042904155541616316099667792560753007147692462688678172436e-33'); + BigNumber.config({ DECIMAL_PLACES : 72, ROUNDING_MODE : 0 }); + T('-12.3', '10.39034600', '-1.183791184624650613174960679846465170649755070716605587532888702647630792'); + BigNumber.config({ DECIMAL_PLACES : 192, ROUNDING_MODE : 2 }); + T('-188286696165756264811751388752520241649627066989496464555407', '619895834297989.5186149564685370341262317', '-3.0373925060971639267073115686212846711395175952508892449242277379495102265813837340574363087640964705111705501238947032140717695085946514912854851496123591969114496771387306287483341424067175283891660812525819708757114413318922858870554e+44'); + BigNumber.config({ DECIMAL_PLACES : 196, ROUNDING_MODE : 5 }); + T('-191374651046449138.1865270700004', '177.8260810116768736', '-1076190005187611.3916403971557709523259316673527685172237725658156892342120642917122203782391339719619499573627468421707489340395069218214730845222055870771402141313930225460616763173658853103668469884276961492819'); + BigNumber.config({ DECIMAL_PLACES : 110, ROUNDING_MODE : 2 }); + T('14849749.55973', '1284630673209.47', '0.00001155954771236310153143237388837504477179962164242292948469997256623180189824988279442522469728678834267516'); + BigNumber.config({ DECIMAL_PLACES : 129, ROUNDING_MODE : 1 }); + T('-8.64', '253937.4', '-0.000034024133506919421873264828260823336775126468176802629309428229161990317298672822514525233384290774025409411925931351585075691'); + BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 4 }); + T('-2503011291082741152558172157128490843.388137', '-2273195645150790262402.931328732531754275', '1101098049533130.39130765867167'); + BigNumber.config({ DECIMAL_PLACES : 64, ROUNDING_MODE : 5 }); + T('29189820482592596.193394247499332295676386', '-2480577725438789237.6491735759692832420975', '-0.0117673476558486836715957424177052903123965597755245117764453359'); + BigNumber.config({ DECIMAL_PLACES : 32, ROUNDING_MODE : 0 }); + T('-20507863612708354363166284190622369882327057', '-227418.38', '9.017680810455317799364450749593049551371818320049593177121391859356311e+37'); + BigNumber.config({ DECIMAL_PLACES : 45, ROUNDING_MODE : 2 }); + T('-53185250672519396135716275562185131226.791835637645968173632', '9243266711148.428813267855386982276389208217282', '-5.753945259241729660101638834402808716798353128839954724530154790654628e+24'); + BigNumber.config({ DECIMAL_PLACES : 271, ROUNDING_MODE : 2 }); + T('-12475.4358268084948', '0.004391993121604150372445803131974373981469350783', '-2840495.301652911788696729023437904309555144440000089017507813279301024343184158066734106815961671791606628271520526901762721246526896632476472545227751033127109410945061587151932183132124557352971708369795566831334586449910029288658711353422367768139381681174858660496808117645'); + BigNumber.config({ DECIMAL_PLACES : 283, ROUNDING_MODE : 5 }); + T('-1.061527582', '-622588162.2617', '1.7050237160689786670000132171579846728112948140592563132620125578605706184434143949453353930664774310863026918342122051896429503615753617402955500341888199217844842775359427161238632596910587980933211392139798794756098583532542336854669701293056290350100117733010797576441992e-9'); + BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 3 }); + T('6624880631726252598700657.239324316174258217', '-1129984311845118795710.814766', '-5862.8076180178785553750906910113577915858495845090446287798885159922583336119886064223451206559829967'); + BigNumber.config({ DECIMAL_PLACES : 278, ROUNDING_MODE : 1 }); + T('4815883643854333118.271024728143949', '-368.5953640', '-13065502483786890.8146957180073050213404203314939142859105520383050721169678086347282436248981145622873325124078337566936951491337802067418297751569116316937724696938944679727442258335077703256191795184922618831418617625369807961013855833520467175490573994305582204772385579977072093614286478112'); + BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 4 }); + T('138905623349743953527527850872', '-937327256770725209505921244928173890636644.07819862538', '-1.481933042556565089980827972031156476687840906866e-13'); + BigNumber.config({ DECIMAL_PLACES : 234, ROUNDING_MODE : 6 }); + T('-6208734990323488049779245942519271680436514357', '-16439396720130815609425313400.4307949521370816', '377674138292471499.964770981640030360283531775688780671482014480415358327724618697815506675400673555585863158590221936886906953295141780645924064864511500032807663518140349742846854676656763960131048883933143803130286224213314548290566430706412428395964'); + BigNumber.config({ DECIMAL_PLACES : 224, ROUNDING_MODE : 2 }); + T('-465768500.94', '-10539299777418116356619191.448469210650420896634899676', '4.419349584665694593899304248585182563031829888288443702434463563338375866327380742592479728196546235594324793857865448380122158076819712183926789869614985548696907960359863344897655982112218722308083163102187e-17'); + BigNumber.config({ DECIMAL_PLACES : 115, ROUNDING_MODE : 1 }); + T('447824340220482323687837186299424.060306273628090749622', '-2183.3', '-2.051135163378749249703829919385444328797112756335591178491274675949251133605093207529885952457289424266019328539367013236843310584894425869097238e+29'); + BigNumber.config({ DECIMAL_PLACES : 6, ROUNDING_MODE : 5 }); + T('3650548744170498310333486374.781438', '-4.0', '-9.12637186042624577583371593695359e+26'); + BigNumber.config({ DECIMAL_PLACES : 273, ROUNDING_MODE : 6 }); + T('800179073426120483927466569281923963429851264472839410285', '-36172.71847', '-2.2121065467881614923797198626247566165569730387831683756916155270649195418350320077560927645701492669704788156608789154131826575985844063104500202082821230659913960290195463432085257926151105778365349382047702095197270364291755150466577581499641157603049235243170265383706451631806261643127205086723469583899371221352388448233e+52'); + BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 6 }); + T('2480.68', '148769463685465001071952636.5141386445', '1.66746584853244056105967269762610107872728e-23'); + BigNumber.config({ DECIMAL_PLACES : 196, ROUNDING_MODE : 0 }); + T('-136836811670713700861557.255968878', '545672226612627730.76575558051803334046', '-250767.4112720676216787099439063343102213491148273816922159514641846171462285523100534464265159901686009784034072304069339527969664615007738651985083038458230062620518459038814412990735841955289947464255'); + BigNumber.config({ DECIMAL_PLACES : 217, ROUNDING_MODE : 5 }); + T('624700348787847913238159215333907158566945121.726565926561', '-4218522292899116076446123044757', '-148085112609072.4016515420452922746255736738713614938679829987563348258191683370779348823094566326410828241440291637355496377213361007886462085431647056083445719007212518791140269925353041328118501830930452332270078034989866217395952'); + BigNumber.config({ DECIMAL_PLACES : 28, ROUNDING_MODE : 1 }); + T('-8.1', '-0.0000000000027483206266799932973505588', '2947254378316.4427545062316262273642584624'); + BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 2 }); + T('0.000000000000000538267468788112414506281808647722', '-1138613423391806952522619221911.785860841391', '-4.72739437046747178862072134755421729043e-46'); + BigNumber.config({ DECIMAL_PLACES : 161, ROUNDING_MODE : 5 }); + T('-3658.24734249109979568369', '0.00000000000174625340797579000321364162105752750100291396', '-2094912070483310.75335991231530233634799208050209554484387062988117102541705537541246030902579328571752900407458511493583359910146212964018086524194340563363589661914259286802101'); + BigNumber.config({ DECIMAL_PLACES : 192, ROUNDING_MODE : 5 }); + T('26031286190.843509157191486212811731', '216370152151930132931260950.669630', '1.20309044163193729626092412633591472338303842514731374950137461050850446462637081939144184493111023863764556752652926336549243371630379458781469205734360078596587871378530950424e-16'); + BigNumber.config({ DECIMAL_PLACES : 82, ROUNDING_MODE : 5 }); + T('-0.0000000000019753705798340641860323061184641060495537', '-1007149456.35507516', '1.9613480078547927332917949090603337877709348935535037903271296e-21'); + BigNumber.config({ DECIMAL_PLACES : 167, ROUNDING_MODE : 3 }); + T('-60826395622229865.996', '0.00000011073', '-5.4932173414819711005147656461663505824979680303440801950690869683012733676510430777567054998645353562720130046057978867515578434028718504470333243023570848008669737198591167705228935247900299e+23'); + BigNumber.config({ DECIMAL_PLACES : 295, ROUNDING_MODE : 6 }); + T('294125529266567952532432137532929398803755068528125597941', '16091304458640213665627600', '1.82785385748286848025236449527635587440032090861225625821463628382514874670919706551801077754754002543885532667800082947987927574283754966769395404919267704333557768406816890479303221950772152692543194464766785551244078884849432903298600161237226931058203121771921781952764813112246656103933206382842047873432314314425531745039e+31'); + BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 0 }); + T('-2727182975624451130904.97996', '0.0009962903598090974433055774147700427748', '-2.73733751287828967917445007598257374e+24'); + BigNumber.config({ DECIMAL_PLACES : 223, ROUNDING_MODE : 4 }); + T('0', '-0.00000029096844095313187', '0'); + BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 0 }); + T('1385629943584886384592607499734583429872.75198882395129045', '-20.79111798997276760977', '-6.66452830604469719017692131500252360557477420956414e+37'); + BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 5 }); + T('0.000000005586736783', '-9.580178941542514980735388155102178556784478357177779312777', '-5.8315578624259741265524521811154589615e-10'); + BigNumber.config({ DECIMAL_PLACES : 291, ROUNDING_MODE : 6 }); + T('0.00000000009647784117027347345734523669', '-0.0000000000000000000266447293802537168409007092750059841002647849697060644164852', '-3620897769.063954017691505798070208352285583632538690026853095546666919752813308027288422488603703891621286222952783069677442730378012011293829775984113264283484850271031889878060266090614051002693447468159102569827893162384124775038203299290498906367958924807153983183056566563986016299839588599649576'); + BigNumber.config({ DECIMAL_PLACES : 22, ROUNDING_MODE : 4 }); + T('317038202289417541212964567765364903987531016085223179273', '-3253614702.157886792', '-9.74418397111216279887578917143713190659370054140768229827370563614154e+46'); + BigNumber.config({ DECIMAL_PLACES : 192, ROUNDING_MODE : 3 }); + T('99999838193365385', '4.7790350624023625309480', '20924692304537453.683372489002990060151293910355880670547000901246628551683048842128952943591501443775624009443403368471105133712261831736470815329802887515739969861976357590341100228281201163014575793082962351'); + BigNumber.config({ DECIMAL_PLACES : 290, ROUNDING_MODE : 3 }); + T('539975262.6', '-51743500491228110640475991287815965362340286159281', '-1.043561524585179663937065674823747771678328836848832851642518443609812300249272324084815802333536699276765440047279286778900706986511962876066163639537839032470631639720432142752590570905692572210803956873991915626392483097287417399984563103904205364e-41'); + BigNumber.config({ DECIMAL_PLACES : 231, ROUNDING_MODE : 4 }); + T('-3129.92125878778496383927285147375179008830', '3713020330.9109205540653319036258930280764235978', '-8.42958287281965120221795812350772599183187218134705635779461837437291618438567320682897692969115682540077603626155296742917522602149410044443398577061446405727453002170110406555154189415889592877072547537398629337945163999826e-7'); + BigNumber.config({ DECIMAL_PLACES : 258, ROUNDING_MODE : 6 }); + T('329.3330750644104214067819800555349418510704376856', '-127896552520408653539.510064901452151839574621259561020', '-2.574995717823263656274120210733082917892852202039690494921186419116376300003045895018283005219396742263519695430408375138534997221029447229903615197771230551736264656433524741053000346286856791443143638972244414415861927059375416208888226744e-18'); + BigNumber.config({ DECIMAL_PLACES : 269, ROUNDING_MODE : 6 }); + T('-11767695610896788787', '88327785272916291721729723445817.2605487080468133128', '-1.3322756338265265265606662524451404103327743237596951271769488911447064094549173258808689504947090802500347202647049975690308900463530160556381253432160795271621678635972865913759272687226425139984000551802102926107323695329688050898505477884969965375691707e-13'); + BigNumber.config({ DECIMAL_PLACES : 174, ROUNDING_MODE : 6 }); + T('-0.000000000000001043271755836', '-851025571.2355700326072725160394130658722655085687431', '1.225899421942533890323914559461582076480642272922596206808045672563091055513806721686132216340398767029331144704314687818501199590861207158214604686661e-24'); + BigNumber.config({ DECIMAL_PLACES : 216, ROUNDING_MODE : 0 }); + T('35160830697978950.2871242366438894659870477971538357064720', '0.00000000000000000006936514037650685337060683777351255238292', '5.06894825082592995637765519810874430011226792501991010917350150679320841149502398988161444846830912031726052933196678592175476705511305613291858588974656812474603055732254316905093682494430995263888022230210964204126024473492526645253836465472749999826e+35'); + BigNumber.config({ DECIMAL_PLACES : 247, ROUNDING_MODE : 2 }); + T('-1300438835830775541970072.633280585716480322191841', '-944142789123106139955806320563308', '1.3773751712265761968017329728900678897849146372848010670778310455461064937849396828350433872149406504961930112994541460674065723130152138129788053065023092971876470130764468903689969556928394385913155552747018775263209304263590429372204182e-9'); + BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 1 }); + T('11998675429601529255834350330033', '-406525947', '-2.95151527673620529216413099703891717396331408090908401475293777496568995139687848756182837205222720998913262478667813e+22'); + BigNumber.config({ DECIMAL_PLACES : 162, ROUNDING_MODE : 1 }); + T('-0.000000000000000000344323374206729909768079920652922404224779234', '-0.04696655233483434196989700881392115040841036148', '7.331246538003828754482176508969694410223032316011882719666774295908985850227829110954641892626569096497842844622279288361783600433814998268453539e-18'); + BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 3 }); + T('-734831971955212232788677194706753906200.2558076', '-18497118465537108466490973465864894691374', '0'); + BigNumber.config({ DECIMAL_PLACES : 196, ROUNDING_MODE : 0 }); + T('0.0000028352954360675712879208121277730667926342115935', '-688511687031402866', '-4.1180062582412694604065597324247413854514303759204226585577789046156689505848974302805434359651701192883399553343881656146647562181713191827898475435168915461423531159899671e-24'); + BigNumber.config({ DECIMAL_PLACES : 116, ROUNDING_MODE : 3 }); + T('0.000000000003866856191732', '0.0004488070349547561000327267960685709844701', '8.61585467821781106259586484183453912608265521177893922572083799214947756895250419152331101505023668082705657e-9'); + BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 5 }); + T('-955302817.6043676871181547480488557246', '286.3', '-3336719.5864630377'); + BigNumber.config({ DECIMAL_PLACES : 80, ROUNDING_MODE : 4 }); + T('22189014794561455089769648037933513282434596774291', '-54353.572508976923255308990248298456876262270090818596171', '-4.0823470786389916591263508386188160659674685742019734703047450100121431290059668081882390992435687039701453805154297371335687e+44'); + BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 1 }); + T('0.0000000000000041323330197244607770892681949683581783713684072198', '0.0000000000007920195', '0.005217463736340406741360873305478410794647566640997854219498383562525922657'); + BigNumber.config({ DECIMAL_PLACES : 281, ROUNDING_MODE : 5 }); + T('-9549653.4', '18254902046909643153002806', '-5.2312816444921175048773792896046747126384672381807391811151001827922647106638853674990656532334407099835021469886815460811228368332928817789809408526451705294251195550544743044650092351121391586293777591522816213010935542142727745627247945426515586472910421355776e-19'); + BigNumber.config({ DECIMAL_PLACES : 102, ROUNDING_MODE : 1 }); + T('-1.6806464810246591931073969381119924560504868697938767415', '-1.234278', '1.361643390730985396407775993829584952539449678106453117936153767627714339881290924734946260080792171617'); + BigNumber.config({ DECIMAL_PLACES : 128, ROUNDING_MODE : 5 }); + T('122901866522252.847589', '-961802320671538794244416706794682462075362387666209564393880', '-1.277828758371488324380804809965041815235695373945264430137970281217686827795456754e-46'); + BigNumber.config({ DECIMAL_PLACES : 116, ROUNDING_MODE : 1 }); + T('0.000000658578017704', '119656.39033883919', '5.50391011996149602306607993401830156067707920993139295729218351631209953769670307993977306788799198181574e-12'); + BigNumber.config({ DECIMAL_PLACES : 87, ROUNDING_MODE : 3 }); + T('0.000000000000000000371917760154464841748872955421', '21618652488', '1.7203558841648782126853574289296841765302536834043215321052e-29'); + BigNumber.config({ DECIMAL_PLACES : 70, ROUNDING_MODE : 6 }); + T('-7.8857628', '0.0000033562997810340611206175184744460', '-2349540.6591989322696950297541293053454234564465069704371658291409315363667949'); + BigNumber.config({ DECIMAL_PLACES : 135, ROUNDING_MODE : 2 }); + T('626679773.3107457065273063712548652163223224368094679', '-1378.5565', '-454591.286835719614341020024391358073696886878999495414224951969687132881387161135579136582359881513742817214963623181204397498397780577002103'); + BigNumber.config({ DECIMAL_PLACES : 73, ROUNDING_MODE : 5 }); + T('-0.000000000000000000165150294704311851730419652617482212698453723107527712855', '-2485036222881054761280674830701410760109597.37691499', '6.64579023773e-62'); + BigNumber.config({ DECIMAL_PLACES : 80, ROUNDING_MODE : 1 }); + T('33.46621733915314904797268645723063', '-58153553796429316455578929933862745229089297041', '-5.7548017540431048670372762213353215e-46'); + BigNumber.config({ DECIMAL_PLACES : 266, ROUNDING_MODE : 0 }); + T('185228452630679039.88730854297473613625056', '15265837398805580030', '0.01213352715555398009338416726561339180217057267149634525421916812461621667507273841280098266753683602929832513898054650009251311567252147680062278353263185949356192144672944344393088704301387533342848402704311457481699078618245160205376747017176488989130300278391695'); + BigNumber.config({ DECIMAL_PLACES : 281, ROUNDING_MODE : 5 }); + T('-459294172881.35606890392213', '-0.00000000000109680098774575846113893396696142182360400339838198065948502', '4.1875798619158587384827552981696629833846824865087871775054806261259231977424547504399475441382643070260159617658000388755460382250530832966433287329816489320373152683277109644952383136010574428948314472879569942243842664827788187323266358072026595816891023177662575066552293694208276906689818258844247335e+23'); + BigNumber.config({ DECIMAL_PLACES : 174, ROUNDING_MODE : 4 }); + T('-130192.8958673824101799783742885006', '0.0000000013954450877380955676017223303', '-93298473018680.111473911191763226324004772626836696819272569649621824673970921667124937589200178387441270133766857849097381135987389527675883166405539542423570249377982463257703408550018423'); + BigNumber.config({ DECIMAL_PLACES : 229, ROUNDING_MODE : 5 }); + T('0.000000000146285544305667216396289278', '151722681442023752855863477639296327910', '9.64163979408483006240234724842259233538200770009767499900086709597520505828033678895674078149870324908853139975818325606244544454036677095123608834273384216028831378436379824732035e-49'); + BigNumber.config({ DECIMAL_PLACES : 249, ROUNDING_MODE : 1 }); + T('-12654915918708900017274197715494848537532380.65722781232', '1.84', '-6.877671694950489139822933541029808987789337313710767565217391304347826086956521739130434782608695652173913043478260869565217391304347826086956521739130434782608695652173913043478260869565217391304347826086956521739130434782608695652173913043478260869565217391304347826086956521739130434782608e+42'); + BigNumber.config({ DECIMAL_PLACES : 249, ROUNDING_MODE : 4 }); + T('-2500004574.709941621328256524353022210082736200559801190', '0.00000000000557008928177304730331910699', '-448826661161551564950.508109260877386664969593629737830669037817158737354932983635393546975604152278810791119966496891097246632116981870789107341459882548556739506348548357553738343057455157348191222048005846236301514899655633027390587728597077748870635215254585386548409'); + BigNumber.config({ DECIMAL_PLACES : 205, ROUNDING_MODE : 6 }); + T('-5588684451773363184639793500721501318209', '78003965425478851569600050960349979886133426074298298.8410', '-7.16461582598966353677682706222314718935358855970010244523590641879170747150934778342715175935109150886484154549230095669606747560914292624390288996811188490262415494981096016824770034711534505e-14'); + BigNumber.config({ DECIMAL_PLACES : 130, ROUNDING_MODE : 5 }); + T('975161.36195489989900238553798402773943401', '-5046009123800658038.644666', '-1.932539831042571707870972015882957659552372203880877313753126800493230385545598920483820209110305135482088767859978887e-13'); + BigNumber.config({ DECIMAL_PLACES : 148, ROUNDING_MODE : 6 }); + T('-258503054975054668728908940568162663824448373049618', '-4415333936663665648.596', '5.85466600450125640546808595203486089349979919708492456038570250264710500951237873641099077589881321390730271675776476424184219834742818175641417587358230824551843874312278212726969e+31'); + BigNumber.config({ DECIMAL_PLACES : 264, ROUNDING_MODE : 6 }); + T('0.00000000000000000189', '-40057268377.9932910', '-4.7182448442698364644004684191009381948481636476492450138760702187588916913713784491237983780925694843774008240904790730093658266100558175043197615934957570980410990578497593462032927749992587847355852974580180705940758405859068549892544e-29'); + BigNumber.config({ DECIMAL_PLACES : 182, ROUNDING_MODE : 0 }); + T('582876615664316806926506530515698093.322', '27604699373308594.0711890145', '21115122747104035460.21337532875946214674803273269781389442262848600250343819009917807627269597021112102186520739770446714009558582511713864614690767008819523634354430262123229283774316367842068234116818'); + BigNumber.config({ DECIMAL_PLACES : 265, ROUNDING_MODE : 3 }); + T('0.06265262744921950464499729884', '418.1968377069103', '0.0001498161195879942693163229102072748977977139502261436093345004263680394676108975676909295159359005592165627855144486334867842679720394133268043505391809993987171116761771848835386657427593521903807787893246704584828325920426874665944118323962941719647343196145648'); + + BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 0 }); + T('-2.684589e+0', '-8.298191387835406867663644795762577999681e+33', '1e-8'); + BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 2 }); + T('6.977911290006014182648715746194971078277555330014970461399e-7', '4.321829466480785587848132891783076314e+36', '1'); + BigNumber.config({ DECIMAL_PLACES : 32, ROUNDING_MODE : 1 }); + T('6.86140621534e+4', '-2.4476846364974384372861666982952981676991222127645053978394e+22', '-2.80322314117984e-18'); + BigNumber.config({ DECIMAL_PLACES : 37, ROUNDING_MODE : 3 }); + T('7.357561152451242940317e+11', '-2.648460003354772976631704945839085e+20', '-2.7780525826825805216131501793e-9'); + BigNumber.config({ DECIMAL_PLACES : 80, ROUNDING_MODE : 4 }); + T('3.8258392715e+1', '-2.228654383349426575347306076218045986778346e+32', '-1.7166588503284108260451166287229525317827195396729e-31'); + BigNumber.config({ DECIMAL_PLACES : 32, ROUNDING_MODE : 3 }); + T('-1.2570687218822116166125857102810153948324213786e+46', '-4.809117934e+8', '2.613927832783756424744367082683016179973808433120450898886190633394435e+37'); + BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 0 }); + T('-1.376189857312380383142846382511311919e+28', '-7.694075937671282443624789e-12', '1.7886356574340012413308387752652601567546700392520385799661743200905210552131420895850910722343227343225628604194655722933103953426624479e+39'); + BigNumber.config({ DECIMAL_PLACES : 86, ROUNDING_MODE : 0 }); + T('9.626195658e+7', '-2.0085501626269837453288189876105866300475813045157981e+4', '-4792.60903566874026466045202923289181547579680145575014194856793200300036317880008519360363'); + BigNumber.config({ DECIMAL_PLACES : 28, ROUNDING_MODE : 4 }); + T('-3.64533907917885729535739841744314937737517731530437841e+23', '-1.7265126331152074647790745439743846377979463548536e+28', '0.0000211138859297046890962298'); + BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 6 }); + T('7.39795272246012132e+15', '-8.507649324190330772e-9', '-8.6956483989356028289430730108548466741894629427205910354758526866523678980437464869746571187378462716425111145661225601e+23'); + BigNumber.config({ DECIMAL_PLACES : 78, ROUNDING_MODE : 2 }); + T('4.3343427747354259351058185933767988216018653e+20', '2.942769405736425339909419857531486875e+9', '147287883525.170761322706812750128616543853659164696768704020314521886872955783231335178457'); + BigNumber.config({ DECIMAL_PLACES : 71, ROUNDING_MODE : 2 }); + T('1.042351453472645229718e+14', '-8.1066266385402751519347723e+25', '-1.28580172733887853360689025161397132403478201888896064498766e-12'); + BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 5 }); + T('6.38906035177779493e+13', '1.60337080310451456115855e+22', '3.9847678025613446771717106354216247648325819717141849e-9'); + BigNumber.config({ DECIMAL_PLACES : 27, ROUNDING_MODE : 1 }); + T('3.1408858250837517594e-13', '-2.5696781557770853056570768387942747953e-5', '-1.2222876308546624206e-8'); + BigNumber.config({ DECIMAL_PLACES : 48, ROUNDING_MODE : 3 }); + T('-1.1e+0', '1.65625870433963801924812297552444726205e+38', '-6.641474531e-39'); + BigNumber.config({ DECIMAL_PLACES : 42, ROUNDING_MODE : 2 }); + T('2.13111e+0', '-2.113892292836264709191412822070652655316e+39', '-1.008e-39'); + BigNumber.config({ DECIMAL_PLACES : 36, ROUNDING_MODE : 6 }); + T('-2.16169668759945865460592071150656e+8', '-4.61319410657275351248683519834438786301441e-7', '468590013266411.660197185452972162138337424697682692'); + BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 0 }); + T('-6.694576234276447704831254188731081371011543645e+39', '-4.9933816383e-19', '1.340689880967243773995926456869849096431228739194284548342730665421889e+58'); + BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 5 }); + T('1.363776449037400581647682806552021277695181e+8', '-3.28729315613180082e-12', '-41486304514507415355.9873445662363079631786908075443085749055713190839053593601250526358412929936002812015659573822941'); + BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 5 }); + T('-1.8622866502154589395913494293567400069289993e-12', '-3.51901484483879256773e+20', '5.292068184784173628395225e-33'); + BigNumber.config({ DECIMAL_PLACES : 98, ROUNDING_MODE : 2 }); + T('8.171e+2', '-1.017285344548424669090869e+21', '-8.032161324045345318349494756349111649247256388570208173061814265805930600586683e-19'); + BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 3 }); + T('1.1593291795888842255456406799619572356750950858596669e+24', '4.3939043260187083422239580622172109613895683484967375e+34', '0'); + BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 2 }); + T('-3.691954879536400550465345429e+6', '-2.3286565939140717663765119466326782700047244284979272e+52', '1e-16'); + BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 3 }); + T('3.290995909250644626602403233982e-5', '-3.72804885383603841528932457594039248874217e+13', '-1e-15'); + BigNumber.config({ DECIMAL_PLACES : 27, ROUNDING_MODE : 6 }); + T('-2.8257790508124e+13', '2.2099490200460778342645851618607e+11', '-127.866255066530086694493637648'); + BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 4 }); + T('1.222504367031675454484326842964789696580983337378049696e-15', '5.398989058287691837779392874e+27', '2.26432088273095513074257888426898404438e-43'); + BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 3 }); + T('-9.0955497166616772560134361788715705481650282e+32', '1.006178216642177399360607273452622897436513257e-8', '-9.039700488662324513300190438213233647099495171586067259100775488679950796211088995617068393892952904823139558012544535759620278109170568e+40'); + BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 4 }); + T('4.061170008482961e+15', '1.2941019701447e+13', '313.821484100581'); + BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 6 }); + T('-7.112855e+2', '-4.471379399262893594476210623345636203005298072e-16', '1590751838498104940.448'); + BigNumber.config({ DECIMAL_PLACES : 6, ROUNDING_MODE : 5 }); + T('1.51658497187542231e+14', '2.0466256499056096481968585948298376e-18', '7.4101727980657683623438886297543422771e+31'); + BigNumber.config({ DECIMAL_PLACES : 42, ROUNDING_MODE : 3 }); + T('1.15629093366e+6', '-1.64780587468499e+14', '-7.017155063129310675892792381270633e-9'); + BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 5 }); + T('0e+0', '-6.4215255610276741653e+4', '0'); + BigNumber.config({ DECIMAL_PLACES : 43, ROUNDING_MODE : 0 }); + T('1.53383929416394591831573929326266805686729e+19', '2.1001119162527479394989376499513738164781e+6', '7303607404412.959609521511410682657466697211721578772169'); + BigNumber.config({ DECIMAL_PLACES : 67, ROUNDING_MODE : 2 }); + T('1.566217258556207333735292e+21', '3.972156275361908175025e+19', '39.4299002854188384418021271234531369238709074556162666394708377262437'); + BigNumber.config({ DECIMAL_PLACES : 25, ROUNDING_MODE : 5 }); + T('-1.127161561152447628384525481045262e+32', '1.34216e+3', '-8.39811617953483659462750701142383918459796149490373726e+28'); + BigNumber.config({ DECIMAL_PLACES : 49, ROUNDING_MODE : 1 }); + T('9.1213795513994124954741359394651099072203888930318348402e+2', '2.58716189598465088e+1', '35.2563152911151557748910665212033545809325810216646'); + BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 5 }); + T('7.4324711466962356844069138844597778914115941300760727e-15', '2.4255221e+7', '3.064276819698421088147130831939143284413526526959318449418e-22'); + BigNumber.config({ DECIMAL_PLACES : 66, ROUNDING_MODE : 5 }); + T('-1.0037454226892777914136301342549839000985270605559e+49', '3.16760019496658784751994509663413740695778340937023e+19', '-3.16878823370531265855597256067959092153148985748326541373252958515953514436808610023215894449091e+29'); + BigNumber.config({ DECIMAL_PLACES : 50, ROUNDING_MODE : 4 }); + T('-1.151210688443460005245e-10', '5.64429338006705896765468750322346865809556401e+8', '-2.0396010818803019961856984816441e-19'); + BigNumber.config({ DECIMAL_PLACES : 24, ROUNDING_MODE : 6 }); + T('-9e+0', '-1.284667267146645202597322557792781234816749051281e+34', '0'); + BigNumber.config({ DECIMAL_PLACES : 58, ROUNDING_MODE : 4 }); + T('-8.16383977729e+2', '-9.46731059144910060833938292323238700273303856328331211542121e+18', '8.62318786146469218394225429987826229976305e-17'); + BigNumber.config({ DECIMAL_PLACES : 82, ROUNDING_MODE : 6 }); + T('1.60254524932163044190224193987222755331272357e+45', '2.7472017615228386863893214657310884e+32', '5833372967966.1454465819347248524876236156471103524157861685311400539697612517911120233715414376'); + BigNumber.config({ DECIMAL_PLACES : 70, ROUNDING_MODE : 4 }); + T('-5.3207722e+0', '2.0155523744116957852262280482788781562e+33', '-2.6398580694550493279366944428184415747e-33'); + BigNumber.config({ DECIMAL_PLACES : 74, ROUNDING_MODE : 2 }); + T('1.14102385186386041655018166211663550774271628173e-2', '2.134783493258839951284722193192e+15', '5.34491603231406771987659954273183534569412001579251176615e-18'); + BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 4 }); + T('-1.10678182750716064703967111313996867399272652595e+12', '-4.2323571177080288728539704625120218663e+27', '2.6150482974993427927834183820781596307248766831447249228068107036260778292118632e-16'); + BigNumber.config({ DECIMAL_PLACES : 7, ROUNDING_MODE : 3 }); + T('1.83395038646692248283155237788079303413997259681334688e+48', '4.62387352556641061495469782346733e-9', '3.966264164291277993799910513458450004611630251694002784599395923e+56'); + BigNumber.config({ DECIMAL_PLACES : 60, ROUNDING_MODE : 5 }); + T('3.050638661366832442292808537413012398794503785533928837964e+51', '6.2467837205570484298933781506664116212544674586136547e-16', '4.883534948277024540183845067781496268644589614327240405421609769249613589117449683325989399497795797661786431831935467163707026e+66'); + BigNumber.config({ DECIMAL_PLACES : 39, ROUNDING_MODE : 3 }); + T('3.22884712158807e+6', '6.1818784696911941663320793603579e+31', '5.2230841117608e-26'); + BigNumber.config({ DECIMAL_PLACES : 82, ROUNDING_MODE : 5 }); + T('-1.11959719784431162899359e+13', '2.176211015431916005560267354712736969126888285709700337214e+17', '-0.0000514470880767094831194756095658352065923765293221540580509786301354491514299589'); + BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 0 }); + T('1.4184531239263454962400471579847717448e+9', '-9.045173964459562515700703201e-3', '-156818777560.249637705624768350730872146554123192753833226253469477853'); + BigNumber.config({ DECIMAL_PLACES : 5, ROUNDING_MODE : 3 }); + T('4.4520521864043734792663602327839683864921433485964e-1', '4.634337525652011919e+6', '0'); + BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 2 }); + T('-6.83048398289181666952021562206e+19', '-1.02e+2', '669655292440374183.2862956492215686274509803921568627450980392156862745098039215686274509803921569'); + BigNumber.config({ DECIMAL_PLACES : 46, ROUNDING_MODE : 5 }); + T('-3.9019633429186701133666823934994052744540282372224e-12', '5.27507431812331195866605782075928779e+25', '-7.39698269e-38'); + BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 1 }); + T('-5.1460450210738226230405884328533068570547e-19', '1.29386654181688367984212003546e-17', '-0.0397726106577236466920869775826329733180993146849688031015873756796073348788951'); + BigNumber.config({ DECIMAL_PLACES : 62, ROUNDING_MODE : 0 }); + T('-3.8685221116675758707293434728747610229950996852e+18', '3.1897344996347148658091457858222594101176637438543004e-7', '-1.212803796714301791688087105099710436914444797749598037229151511772121313364700095469555e+25'); + BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 0 }); + T('-2.46942e+4', '9.1025584843870185124740143872301900448164885426210358984e-14', '-271288561807718488.5196242238250254929854695158851604707066668853126037797695308780292022829123'); + BigNumber.config({ DECIMAL_PLACES : 77, ROUNDING_MODE : 1 }); + T('1.1837939137372343e+7', '-4.551005460308206359577589733803e-18', '-2.6011700580492482744167952339151813112133235715820624347679056853103665846640780415849455706077711975e+24'); + BigNumber.config({ DECIMAL_PLACES : 83, ROUNDING_MODE : 4 }); + T('7.941828289678651079241504e+22', '2.62662673407814661752043707378745e+12', '30235846558.02246230241812305216278227485125692337989976810864975434944383939875159725932585769'); + BigNumber.config({ DECIMAL_PLACES : 32, ROUNDING_MODE : 4 }); + T('3.983459649952e+4', '-4.43007833195742994603987896254311885354607075295409907017826e+59', '0'); + BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 6 }); + T('6.78591935399298e+11', '7.3743935853990604278178275154242145498388e+40', '0'); + BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 4 }); + T('-9.368271358463985794595010572399063528050211600971117e+6', '3.536365904968796699190024e+22', '0'); + BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 1 }); + T('-1.21788e+5', '-4.6487152e+3', '26.198206334515824'); + BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 4 }); + T('6.6731708723476079058886985347462890741983281866952601355082e+58', '9e+0', '7.41463430260845322876522059416254341577592020743917792834244444444e+57'); + BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 4 }); + T('-1.09506302e+3', '4.869496261415839850481677414e+15', '-2.24882e-13'); + BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 6 }); + T('4.279526224252e+5', '1.7846634677365185817579e+23', '2.397945776118623477061832322071525026e-18'); + BigNumber.config({ DECIMAL_PLACES : 41, ROUNDING_MODE : 2 }); + T('-8.423955049192861030967940476881511700753978237699737e+51', '4.123332e+1', '-2.0429970347264932901274843929330725007721857560098815715057628151213630141836747562408265936e+50'); + BigNumber.config({ DECIMAL_PLACES : 7, ROUNDING_MODE : 0 }); + T('-1.3560772953707170567e+16', '1.171639510240212457042280074438448259602e-11', '-1.1574185434329461154443955689815469e+27'); + BigNumber.config({ DECIMAL_PLACES : 99, ROUNDING_MODE : 4 }); + T('1.3682373349575334e+13', '7.3600491108875015330874e+4', '185900571.360799840901532589795015622988508772394680944957251367253071994448592590501014753952246546273653151'); + BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 2 }); + T('1.3154004825473805973728e-7', '-4.2582470979271932781366124122462035e-4', '-0.000308906564672511419324094397349121405120205734129928276'); + BigNumber.config({ DECIMAL_PLACES : 53, ROUNDING_MODE : 0 }); + T('-2.104683784186112035861065543719370616598874094e+1', '2.949462623949027449275e-8', '-713582117.33097219832176840146725375704044380206297228453272535'); + BigNumber.config({ DECIMAL_PLACES : 25, ROUNDING_MODE : 3 }); + T('7.264384e+6', '4.1347781511967869682324184706673016934485517898e-12', '1756898129564065538.5648236691867481772804909'); + BigNumber.config({ DECIMAL_PLACES : 33, ROUNDING_MODE : 0 }); + T('8.452e+0', '-6.498752841059176815657360373992243370692529926e-6', '-1300557.231012109076220298338725550868419'); + BigNumber.config({ DECIMAL_PLACES : 88, ROUNDING_MODE : 4 }); + T('-4.993594946835093846057985799914752582216782034739476325e+54', '-9.9800210431303370202060947045843994236750947381671e+39', '500359160091390.0522022025279178501845115180032990838020458013582838577980303243830071241586995547088417'); + BigNumber.config({ DECIMAL_PLACES : 30, ROUNDING_MODE : 5 }); + T('-8.1e+0', '1.395459695825119273719768559e-18', '-5804538837082330156.779223742084551100646177915819'); + BigNumber.config({ DECIMAL_PLACES : 45, ROUNDING_MODE : 2 }); + T('2.29759989e+9', '-6.74056783179189161439e-13', '-3.408614744834061231017348297805381333362918884614317205392744042799e+21'); + BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 6 }); + T('3.97091582794225350279171799532e-7', '2.41641837877861e+12', '0'); + BigNumber.config({ DECIMAL_PLACES : 49, ROUNDING_MODE : 4 }); + T('3.91755997773439294874762704576067485095445759725e+8', '-1.250019237909e-19', '-3.1339997489059339788321458120106149277099554172394312726319722815414057472452e+27'); + BigNumber.config({ DECIMAL_PLACES : 90, ROUNDING_MODE : 6 }); + T('-5.88024471232446948649e+20', '-8.47609867526076e+12', '69374424.928383325316192683904844889709235557779702197243871143943081592370136257760539021736478527'); + BigNumber.config({ DECIMAL_PLACES : 25, ROUNDING_MODE : 0 }); + T('4.62653566481581417883704493628225e+7', '2.338441527793468175731223125091471817382739415e-8', '1978469681549561.9830730024638681222283016'); + BigNumber.config({ DECIMAL_PLACES : 7, ROUNDING_MODE : 6 }); + T('-3.70841e+0', '2.0212835550025920164236650527972686e+14', '0'); + BigNumber.config({ DECIMAL_PLACES : 43, ROUNDING_MODE : 0 }); + T('-1.243519842187341059877996186201005242904186e+24', '3.82960151991082846e+0', '-3.247125936529020862492815416213503335626772746119281932758760079466e+23'); + BigNumber.config({ DECIMAL_PLACES : 55, ROUNDING_MODE : 0 }); + T('5.805502676478053e+3', '-4.436490697865052222068353951847332008937e-12', '-1308579927660347.1317553786911547314648452364448033931774319044807345184'); + BigNumber.config({ DECIMAL_PLACES : 74, ROUNDING_MODE : 2 }); + T('5.2494545223e+10', '-5.27035784208457683653e+14', '-0.00009960337949697341656415916012814401160294873770325650334566064690145467'); + BigNumber.config({ DECIMAL_PLACES : 70, ROUNDING_MODE : 4 }); + T('2.49244061004426376013957150764335770342176989668160077768341e+59', '-1.59257486429992561624341440625009396614856277710345973905e-13', '-1.5650382697330256825184745368958962442962165441841972434001467977532021426696860087596218088678570111739490499980142692727755778391867073416614e+72'); + BigNumber.config({ DECIMAL_PLACES : 52, ROUNDING_MODE : 3 }); + T('-6.491148513421149560857391627411087984e+6', '9.982586739202018304193114651e+2', '-6502.4714365166987562205089717878495692701415667688831557'); + BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 3 }); + T('-8.242562587219826322756135907789392e-5', '9.68887286050664118022635136173134360297e-10', '-85072.4610167793470479405418881672102046151305762553603939826873340437920415615727192625401557768007046'); + BigNumber.config({ DECIMAL_PLACES : 53, ROUNDING_MODE : 3 }); + T('-1.9168988826688945002797462392e+8', '-5.6803714774636698531824146882277509515920145e-6', '33746012743603.25453300564268832335590229566345157198883904613540264'); + BigNumber.config({ DECIMAL_PLACES : 55, ROUNDING_MODE : 3 }); + T('-3.0258848821938566680797457e+4', '4.0777429787685523978273163156521728105076e-10', '-74204894667187.951707382924811293760803562598157029520944344469016807'); + BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 0 }); + T('3.69927674623251618e+4', '-5.220718872545424800848019614582913381e+7', '-0.000708576124580500336192976887065487350085252556049744741097735562040616366441083'); + BigNumber.config({ DECIMAL_PLACES : 88, ROUNDING_MODE : 5 }); + T('9.0360008962766875594763448795524371902981009801e+9', '-2.223480500424439742e+18', '-4.06389932115519213237591244399326869093522905516048989011451996203527973232052e-9'); + BigNumber.config({ DECIMAL_PLACES : 94, ROUNDING_MODE : 6 }); + T('7.846135938905626718e-1', '1.1227167968e+8', '6.9885263685988408630887956445331058219721470546364591452062258840875302027012481229852e-9'); + BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 0 }); + T('1.70727356485719357771889024622608240016418e+7', '-2.611709352972367924505574729526972189307321059e+23', '-1e-14'); + BigNumber.config({ DECIMAL_PLACES : 46, ROUNDING_MODE : 0 }); + T('-8.146425e+5', '-1.9277404692834179214047867012804398030805175180163596757e+44', '4.2258931e-39'); + BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 3 }); + T('4.8547000826477016024456452593554872e+26', '1.48551069033736534532935793131415257927835e-7', '3.268034430331282259778757092657146e+33'); + BigNumber.config({ DECIMAL_PLACES : 87, ROUNDING_MODE : 3 }); + T('6.03584602176774046327932728e-17', '-1.2586589303123068e+16', '-4.795457988185954652905480897359524202862898328367111641e-33'); + BigNumber.config({ DECIMAL_PLACES : 62, ROUNDING_MODE : 2 }); + T('4.4172739030183528644508688032320793125e-4', '-2.3061374143740932698459421e+25', '-1.915442625181657396931840988726152e-29'); + BigNumber.config({ DECIMAL_PLACES : 98, ROUNDING_MODE : 0 }); + T('8.195483493646410802532840494364654882888160274e+24', '1.8136267401926565382e-1', '4.518836931559482477970235635572593907994799170688954822187301371053449490854291624484682892916282561496632818332304755422601e+25'); + BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 0 }); + T('1.4068028613883262515279256094430309654735814056843454e+53', '-2.07076327391642e+12', '-6.7936440592151796515531889859599302465619955e+40'); + BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 2 }); + T('-1e+0', '1.40766974210848837512174406460979031888474180076364280389e+41', '-7.10393901414789748275425e-42'); + BigNumber.config({ DECIMAL_PLACES : 58, ROUNDING_MODE : 6 }); + T('1.7579655365177340193424e+13', '1.2e+0', '14649712804314.4501611866666666666666666666666666666666666666666666666667'); + BigNumber.config({ DECIMAL_PLACES : 33, ROUNDING_MODE : 1 }); + T('-5.14439925941092475978e+11', '5.17344285354751095733170689026326670354045626959509e-14', '-9.943860220439720235358395841971427324498245807154312225967e+24'); + BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 0 }); + T('-2.37593121448325e+6', '-5.046060106975311967927899320989374191943529e+36', '1e-15'); + BigNumber.config({ DECIMAL_PLACES : 21, ROUNDING_MODE : 5 }); + T('3.02711053991410051857924824689543e+26', '-1.075056872845582e+13', '-28157678131963.403137625452169598982'); + BigNumber.config({ DECIMAL_PLACES : 98, ROUNDING_MODE : 3 }); + T('1.7031e+1', '-1.1e+0', '-15.48272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272728'); + BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 6 }); + T('1.11316380861757648895194104293992512257677e+23', '8.793892933245547e+5', '126583734538003185.4758241204022051444374083708665989607584433419645145130072780879142188536521'); + BigNumber.config({ DECIMAL_PLACES : 19, ROUNDING_MODE : 1 }); + T('-1.2445771504873016754168e+6', '-2.1271991905337074249602498312341407038514567859e+48', '0'); + BigNumber.config({ DECIMAL_PLACES : 41, ROUNDING_MODE : 4 }); + T('-3.2126287105084394430000471990181426501347496904162318481486e+11', '-8.3179486349e+2', '386228486.31561215352847732683444136017055289575412'); + BigNumber.config({ DECIMAL_PLACES : 26, ROUNDING_MODE : 5 }); + T('7.690902892945358830667793524605728734978227614373987e-14', '-1.4356798866863650458584021720666350506943e+41', '0'); + BigNumber.config({ DECIMAL_PLACES : 55, ROUNDING_MODE : 6 }); + T('1.7895458349982693e+1', '-5.416619312e+7', '-3.303805809342558611769022914121309029516675031195e-7'); + BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 4 }); + T('-4.9323788e+7', '-2.50190605470094677463478e+7', '1.9714484445698213940290620650359219518342171516654875835474849479064879154999306'); + BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 0 }); + T('2.4736831834e-14', '-7.4969e+0', '-3.2996080825407835238565273646440528751884112099667862716589524e-15'); + BigNumber.config({ DECIMAL_PLACES : 73, ROUNDING_MODE : 5 }); + T('1.6917100595076468e+6', '-1.46580165410522403243e+20', '-1.15411935494118749818764893135261277486721803740858622355453e-14'); + BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 2 }); + T('-5.847430247560464729871452390733940532932e+32', '2.3541096749220802874394138545934615951759723816573e-20', '-2.483924308987010725424240411422860427064539227981711351325205989e+52'); + BigNumber.config({ DECIMAL_PLACES : 62, ROUNDING_MODE : 3 }); + T('3.17135563092456572471636397368039837592982433063e+8', '-1.05914712549883732501350758e+18', '-2.9942541074554868997473426603892327061035895442213978e-10'); + BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 5 }); + T('-2.06351590455020120049e+16', '6.876717e+2', '-30007282611022.108376569807947600577426699397401405350838197936602596849630426844670211090553820958'); + BigNumber.config({ DECIMAL_PLACES : 37, ROUNDING_MODE : 6 }); + T('-2.58574038568472804398707132394333396261003537509e+34', '-5.21101118437e+1', '4.962070304973522088497308062328913175297198877790786260422926984000792e+32'); + BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 3 }); + T('1.0902927014420428768829601430368355906592671e+9', '1.055311509526061274313257267095679915243147902389364e-20', '1.0331477403593291618651997366870712877657798362117890624111285603482011526479e+29'); + BigNumber.config({ DECIMAL_PLACES : 80, ROUNDING_MODE : 0 }); + T('5.240416698263987e-10', '-1.333644541451033895111125e+4', '-3.929395378893315244205009777387015604392422371871707395300212485273e-14'); + BigNumber.config({ DECIMAL_PLACES : 83, ROUNDING_MODE : 0 }); + T('-2.14459463571407661232358156993163236e+3', '9.50710872243e+4', '-0.0225578006766069890476863268275831247472021132902642208034682013658062249109412597'); + BigNumber.config({ DECIMAL_PLACES : 25, ROUNDING_MODE : 3 }); + T('-8.76570122913186285413266288e+26', '-2.29060139655641091149799231649e+22', '38268.1213864176952764740852047'); + BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 6 }); + T('-4.298685082322146249068382224749649229024974889e+28', '1.133736034155732441317831862744713483858036136e+45', '0'); + BigNumber.config({ DECIMAL_PLACES : 24, ROUNDING_MODE : 2 }); + T('-9.03007143e-4', '-6.527e-20', '13834949333537612.992186303048873908380574'); + BigNumber.config({ DECIMAL_PLACES : 74, ROUNDING_MODE : 4 }); + T('-2.1983602077137e+4', '7.618052445037037559598956806049795697231989369872038175438e+19', '-2.8857246961405133513202683415394692463335185692463717333667e-16'); + BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 5 }); + T('1.06464442348e+8', '3.3798404104228937656216886e+25', '0'); + BigNumber.config({ DECIMAL_PLACES : 99, ROUNDING_MODE : 2 }); + T('-1.4834231106114591731402527448376685e-20', '-1.008042281392878891612406531524600516179351763e-2', '1.471588184338572638073105330851883960616731833612321362739486010713142111976394343e-18'); + BigNumber.config({ DECIMAL_PLACES : 39, ROUNDING_MODE : 1 }); + T('2.670388961061965347980551054975608950852709569216285620955e-19', '-1.60813026578e+0', '-1.66055512907515135118e-19'); + BigNumber.config({ DECIMAL_PLACES : 73, ROUNDING_MODE : 1 }); + T('4.8418752886050656347980335514333887020889131e+43', '1.097542967900589815280405934238056787462980720668271e+49', '0.0000044115587546123474461506361364672762222874748810055883596997210401117'); + BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 6 }); + T('3.3224789713227436115862e-2', '1.608e-20', '2066218265747974882.827238805970149253731343283582089552238805970149253731343283582089552'); + BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 3 }); + T('2.961317953735582624263692428362719343623646795e+19', '-1.3517568497144e+10', '-2190717919.6918822065726495016909794400572784395953745101039724415568485'); + BigNumber.config({ DECIMAL_PLACES : 30, ROUNDING_MODE : 4 }); + T('0e+0', '1.1939703967465696474752689253333379e+6', '0'); + BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 4 }); + T('-1.26796190094173770423550237861043095542063898039529199e+43', '1.26298820426297231964005010029776128172101839e+22', '-1.003938038900108198770681530243365490954891052649781926766409539371771486e+21'); + BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 0 }); + T('1e+0', '1.6170590286500285361572052458334865220135332303348474870906e+44', '6.184066149e-45'); + BigNumber.config({ DECIMAL_PLACES : 73, ROUNDING_MODE : 4 }); + T('-4.344226793252287936662575858173495666e+16', '7.4902162293477512160241201542473027963977e+17', '-0.0579986833521705106175436684208656934679279030765860884254386621756617457'); + BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 0 }); + T('1.1041615788559476498e-16', '1.19209500912407230760038267262966923373459798900839109e+19', '9.262362231239132586738e-36'); + BigNumber.config({ DECIMAL_PLACES : 42, ROUNDING_MODE : 6 }); + T('2.162814956487398129962292148404305956266611109789601012e+41', '-5.915867999480806710898718365e+18', '-3.6559554010961922762856860392852451655514603695899749943344699851e+22'); + BigNumber.config({ DECIMAL_PLACES : 91, ROUNDING_MODE : 4 }); + T('1.146291872478340289884233459851149740837841441815228909e-7', '-6.435879737791406e+8', '-1.781095855081518430889798713961693993561465771293013785195918295375263486769e-16'); + BigNumber.config({ DECIMAL_PLACES : 64, ROUNDING_MODE : 1 }); + T('1.987825836e-6', '-4.828551591717747253234004666945657377524888791154e+41', '-4.1168159814418283e-48'); + BigNumber.config({ DECIMAL_PLACES : 58, ROUNDING_MODE : 2 }); + T('-9.1043267860469662982384830806192792e+30', '-3.5735063034496425898824960323416975460847901026255576e-3', '2.5477293204319272438344709139526955621347444053241700169298705609906904001227879397756593003e+33'); + BigNumber.config({ DECIMAL_PLACES : 38, ROUNDING_MODE : 0 }); + T('-2.367801552425790979304601717059614184406079e+40', '3.211561625490428517091311e+14', '-7.372742075482393033660212776964122499020480714494052624961080189e+25'); + BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 1 }); + T('2.298283581516075763910625062672569636598280933354564514e+54', '1.074331e+2', '2.1392695375224914518064032990508229182610209826902179253879856394351461514188830071923829806642459353774e+52'); + BigNumber.config({ DECIMAL_PLACES : 30, ROUNDING_MODE : 1 }); + T('1.4e+1', '-6.538600777557645070419198519e+3', '-0.002141130874368721062351217232'); + BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 6 }); + T('-2.2306372789925e+5', '6.087280013886758774792105120955348021e-17', '-3.6644236406142041854728332764842849689742925874428248228222464514080225611127156359298422740410250856e+21'); + BigNumber.config({ DECIMAL_PLACES : 67, ROUNDING_MODE : 2 }); + T('3.0916302684309718e+6', '9.689969983289990587602334156217453449306148e+20', '3.1905467960812866286700078293262977288858007762091149e-15'); + BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 1 }); + T('2.472242340658775423383338e+25', '3.311980964418811592260328e-11', '7.46454272297608447562578490860244017598403328296566586426992265211496907421150480103391314673389860920199e+35'); + BigNumber.config({ DECIMAL_PLACES : 7, ROUNDING_MODE : 0 }); + T('2.0667944748628464421657784261580525169470681951620475408e+21', '2.457425640707239072529899e+24', '0.0008411'); + BigNumber.config({ DECIMAL_PLACES : 70, ROUNDING_MODE : 4 }); + T('8.15509163387e-13', '7.9253614422701106738777291255370038774222512634924e-3', '1.028986714772984066644091185941599096621795451380458698733367e-10'); + BigNumber.config({ DECIMAL_PLACES : 24, ROUNDING_MODE : 2 }); + T('1.651313805562909447176880998846e+30', '-5.76743933174730865525295264418916547952e+38', '-2.863166321443776e-9'); + BigNumber.config({ DECIMAL_PLACES : 56, ROUNDING_MODE : 1 }); + T('1.2486688707964869459e+19', '-2.82989576831e+4', '-441242000775945.86715515268447226522295488226649200971467987897582849684'); + BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 2 }); + T('-8.7828104612557296045754796993179e+5', '-1.03233956355612335e+14', '8.51e-9'); + BigNumber.config({ DECIMAL_PLACES : 40, ROUNDING_MODE : 5 }); + T('3.8990844981046752045360026872079350659405084e-20', '-2.695919e+0', '-1.44629141235499850127e-20'); + BigNumber.config({ DECIMAL_PLACES : 33, ROUNDING_MODE : 6 }); + T('-7.413007254775067343779449915809460599226e+39', '1.43446731218463175502139e-3', '-5.167777049924809717443440027679719253039437453707533757929740275891963119956e+42'); + BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 0 }); + T('7.14321472519238312874067225981396629256702165561701687819e-3', '4.35412003983276021716841044396819e+28', '1e-12'); + BigNumber.config({ DECIMAL_PLACES : 72, ROUNDING_MODE : 4 }); + T('2.938059200145926264847352563204907755716225111222321484e+52', '7.52004086987658309e-5', '3.90697238350799669357400946469326817124139491115813292967181191497292252623716669133708910816062457199435939612727349101488248441e+56'); + BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 0 }); + T('4.305028611073344e+7', '3.18067289646115523384611501e+22', '1.35349617870581940947853280257127346559530606596327e-15'); + BigNumber.config({ DECIMAL_PLACES : 80, ROUNDING_MODE : 5 }); + T('1.183179488487125253140530741241348947094489e+11', '-1.7602259917256719183640030137978911305e+22', '-6.72174762813933988509930227027765382885528544070345597819313408109535e-12'); + BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 2 }); + T('-6.879513926786496523467891202666122435727881787e+17', '1.08824848e-11', '-6.32163890252940810307209544888693291418e+28'); + BigNumber.config({ DECIMAL_PLACES : 64, ROUNDING_MODE : 6 }); + T('1.699581450633584e-10', '-6.86399451848e+3', '-2.47608217934583737293043072051494800657019186693446e-14'); + BigNumber.config({ DECIMAL_PLACES : 48, ROUNDING_MODE : 5 }); + T('-6.85729609129944845047e-19', '-2.1805945313032243123249225273722265276742646081e+21', '3.14469104e-40'); + BigNumber.config({ DECIMAL_PLACES : 93, ROUNDING_MODE : 5 }); + T('1.5924784192801458636895321e+3', '-1.392980451078160260176079559000603796462914786945087e+28', '-1.14321663168178356174193185371690503743306393722958174836550309640375e-25'); + BigNumber.config({ DECIMAL_PLACES : 94, ROUNDING_MODE : 5 }); + T('-9.754142756698401558073375447273628699528463547911394156267e+57', '1.316719380045008261525774924350086978877743882173251424164e+19', '-7.407913109295151611947872129638459638803771697120658772832578868301402446872433463482099904155815386014734491264040157401580941623795e+38'); + BigNumber.config({ DECIMAL_PLACES : 58, ROUNDING_MODE : 2 }); + T('-2.33641941613676863516717479468761193381171832015069302e+24', '2.038623000304704384411143701555981259e+36', '-1.1460772373251718812553297256494514042081707043e-12'); + BigNumber.config({ DECIMAL_PLACES : 55, ROUNDING_MODE : 5 }); + T('2.12043950679913503026778076469046848467323279203915748e+41', '2.742015618e+0', '7.73314160896633897388610995391663915997882106898764381873772390745004137317791163653393895439147e+40'); + BigNumber.config({ DECIMAL_PLACES : 67, ROUNDING_MODE : 1 }); + T('-9.2581956946975006840871860062691368464897e+1', '-2.0221539066219726626596127993779216939721353587484287e+52', '4.5783833091930201e-51'); + BigNumber.config({ DECIMAL_PLACES : 77, ROUNDING_MODE : 1 }); + T('2.92207461871320315795285390664826e+12', '3.804e+1', '76815841711.70355304818227935458096740273396424815983175604626708727655099894847528916929'); + BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 6 }); + T('-5.4318679905378e+6', '1.670623735329229880306945005647428416872603e-10', '-32514011836826570.5112007133449'); + BigNumber.config({ DECIMAL_PLACES : 28, ROUNDING_MODE : 6 }); + T('-4.9845914245756149501436602e+15', '1.055052431283008884577e+4', '-472449641058.5058867843073548474530078753'); + BigNumber.config({ DECIMAL_PLACES : 26, ROUNDING_MODE : 1 }); + T('1.512564e-6', '1.38979796076405906704794232910476562908998439e+44', '0'); + BigNumber.config({ DECIMAL_PLACES : 72, ROUNDING_MODE : 6 }); + T('-1.2745097050268076893738682530705733701606363302e+46', '2.1262972545124879705009271349773306004576107738758e-2', '-5.99403353563104719691681943818281528974024096973367009496794825248035759629417365855665363754848933205901259074772609866e+47'); + BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 2 }); + T('-3.1e+0', '5.41984766608571557254330454890699771056e+38', '-5.719717953325541142e-39'); + BigNumber.config({ DECIMAL_PLACES : 66, ROUNDING_MODE : 1 }); + T('7.1578423670097998051879745833089835465359027461506408958e+55', '7.7e+1', '9.29589917793480494180256439390777083965701655344239077376623376623376623376623376623376623376623376623376623376623376623e+53'); + BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 4 }); + T('1.081131976757387131882134e+8', '2.356e+0', '45888454.021960404579037945670628183361629881154499151103565'); + BigNumber.config({ DECIMAL_PLACES : 19, ROUNDING_MODE : 5 }); + T('-1.04572607174804778256239183637028817569562863252103637346509e+38', '-7.26634695689060300286803860330126324870796853854e-1', '1.439135893113934467304491273244797042360962147162056611355e+38'); + BigNumber.config({ DECIMAL_PLACES : 42, ROUNDING_MODE : 4 }); + T('-2.528e-5', '1.65937627149288527912309114881548774973949532296261907e+54', '0'); + BigNumber.config({ DECIMAL_PLACES : 74, ROUNDING_MODE : 2 }); + T('-1.3453068243728082336349490882179401367571090051080616e+52', '-5.9543066589039246340936086990658553849983281715533037188135e-19', '2.259384511815610457970772266971641184777064611238632697862697842821299001585747485626147669863057680247040759847771254885692114651779128505571539e+70'); + BigNumber.config({ DECIMAL_PLACES : 87, ROUNDING_MODE : 6 }); + T('8.93648433530533885374133849421944025769343458143626e+41', '-4.808128352362641710821e+4', '-1.8586201699283017924626570774401784131853983415447795685562898752827263922814411964420472682079404773088975605058402689189959e+37'); + BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 3 }); + T('2.83730151879228871233687537544881353202409174311639660587e+38', '7.5548773007973893e+12', '3.755589145693765340622594121437925064e+25'); + BigNumber.config({ DECIMAL_PLACES : 85, ROUNDING_MODE : 6 }); + T('-1.08328010942954610962003e+5', '-2.040051066901515974502652637145748443977930612177768887e+22', '5.3100636891156889573841770459665916841337179378121648906921921000646e-18'); + BigNumber.config({ DECIMAL_PLACES : 24, ROUNDING_MODE : 1 }); + T('3.0506760595e-17', '9.18969111944231821275032565546747730264216889349573186898e-8', '3.31967203233391e-10'); + BigNumber.config({ DECIMAL_PLACES : 19, ROUNDING_MODE : 0 }); + T('6.007459e+2', '7.54789521172973384e-18', '79591181799452729746.6142908834722197517'); + BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 2 }); + T('7.154888199745248648433005334242021014e+26', '-4.534613593168835400628615587441511538464079650158252813358e-19', '-1.5778385639128598718438804267248967706282630702257573609250637842257952225741076744299962525048392523929942603e+45'); + BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 1 }); + T('1.0433600681003394759618897771250673963671e+7', '-2.88761046e+5', '-36.132299787428373422705006309094315871369298198206415972049083102434806944147'); + BigNumber.config({ DECIMAL_PLACES : 90, ROUNDING_MODE : 3 }); + T('-1.1371376612546e-10', '2.97802390130871296219839282020743256149861091470867783838e+1', '-3.818430271009165107465921832538108858341785003462060916588131305350668864346562e-12'); + BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 5 }); + T('2.8229065250743404122721833e+6', '-2.248669788684196117661917515512615275098e-19', '-1.25536730171758903810971281840999557514530792223944285245061533757097155965880006409501754538336376178528e+25'); + BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 3 }); + T('4.5058886e+7', '-1.1880216334115198639557698579229e+13', '-0.0000037927664558269885175416416655'); + BigNumber.config({ DECIMAL_PLACES : 40, ROUNDING_MODE : 6 }); + T('-2.7535225428311273e+9', '8.0997202e+3', '-339952.7977313496952647821093869390698212019719'); + BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 5 }); + T('-2.2385016841e+3', '1.387035768767767521328461678439642947866086257628787949645e+50', '-1.6139e-47'); + BigNumber.config({ DECIMAL_PLACES : 88, ROUNDING_MODE : 1 }); + T('3.06121118955298703779956702994536198809690663939713603e+38', '-7.3035050611920762990236825431122148949e-13', '-4.191427491190561180588968793197797570908917939897845615294946488791739226610209705339633360071222740444211762778029523804728712852236034646e+50'); + BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 2 }); + T('1.0016255724547355991077369440287252551656932150464723691e+52', '1.80880801397902971407543898709494600103357157e+10', '5.5374896877604605378169307382135633669497777116481941788443299045207113944498045700778e+41'); + BigNumber.config({ DECIMAL_PLACES : 67, ROUNDING_MODE : 1 }); + T('-3.088048360168477331792557775463584165425963572e+45', '-1.4e+0', '2.2057488286917695227089698396168458324471168371428571428571428571428571428571428571428571428571428571428571428571e+45'); + BigNumber.config({ DECIMAL_PLACES : 41, ROUNDING_MODE : 1 }); + T('4.0238189014690547e+4', '-6.7564563648585e+5', '-0.05955516744543239956135329596521881650294'); + BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 0 }); + T('5.7427903e+5', '-7.352522632005089658008354842188067529307739382751e+32', '-0.0001'); + BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 6 }); + T('-9.78248e+5', '-3.06960476416271421302008579728334481507254699771089e+16', '3.186885854e-11'); + BigNumber.config({ DECIMAL_PLACES : 50, ROUNDING_MODE : 3 }); + T('4.05994259e+4', '7.8907749282655877870860749608e+28', '5.145176014914400317062311e-25'); + BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 1 }); + T('5.4762132837699175441102089813175399999764088e-16', '5.7030184815364007560078579249421278145041535217095e-9', '9.602306e-8'); + BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 2 }); + T('-7e+0', '-9.2159043738098493e+1', '0.075955649234956245854703504394092356676290067751808275195765802961690703027820671'); + BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 0 }); + T('6.195697861269359927881e+20', '-3.57e+0', '-173548959699421846719.355742296918767507002801120448179271708683473389355742296918767507002801120448179272'); + BigNumber.config({ DECIMAL_PLACES : 35, ROUNDING_MODE : 2 }); + T('-9.629875273056249651966949225008701e-12', '-1.254336183986894116e+15', '7.67726819e-27'); + BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 0 }); + T('-6.54890462715559031006242205524360507902981061544216e+1', '-3.69152226209790919921200153737123586568e+0', '17.740390446497857'); + BigNumber.config({ DECIMAL_PLACES : 27, ROUNDING_MODE : 6 }); + T('5.275227534804879035e-15', '4.5389442133760502760188809102632635407464777499685005106e+55', '0'); + BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 4 }); + T('5.3381728917331921730285926e-15', '-2.76623631914364289572342790678292268542941061193724300445e+15', '-1.9297602503410685e-30'); + BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 0 }); + T('0e+0', '2.64994276761338025671828590140655914746143e+15', '0'); + BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 1 }); + T('-2.33504609e+6', '-7.197364794210316381254761041469863560753414753847e+18', '3.2443069884110238548675488318070708e-13'); + BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 4 }); + T('-3e+0', '-6.2e+0', '0.483870967741935'); + BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 0 }); + T('3.47891285848114300116174616324957931945042548133742277e+0', '-8.9837096539842887e+7', '-3.872469e-8'); + BigNumber.config({ DECIMAL_PLACES : 64, ROUNDING_MODE : 6 }); + T('-6.05961122567500478221618603e+18', '-3.14396592411703776787729712449924e+20', '0.0192737814974149470002810582449413874302177975001810351674842984'); + BigNumber.config({ DECIMAL_PLACES : 60, ROUNDING_MODE : 2 }); + T('2.774042606910497862365244089177696536349584544727e-10', '-7.8470185309070224431502704762599134501231241948504e+31', '-3.535154907541490638e-42'); + BigNumber.config({ DECIMAL_PLACES : 28, ROUNDING_MODE : 5 }); + T('2.19512869386020462054124110517e+5', '1.2e+0', '182927.3911550170517117700920975'); + BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 2 }); + T('-1.5074753e+6', '-8.1065922619928717661740852111502504e+2', '1859.567190849946738045449007950750897366429832333815584271306035903516452398884120555109'); + BigNumber.config({ DECIMAL_PLACES : 93, ROUNDING_MODE : 5 }); + T('1.1766173634e-12', '-5.66747706e+2', '-2.076086680093240642071518150970689592875034945443608024061415433413329069566627e-15'); + BigNumber.config({ DECIMAL_PLACES : 48, ROUNDING_MODE : 3 }); + T('2.394892233129659489208910623612984e+9', '5.09296293526679179304573296824e+26', '4.702355512045768507736436114982e-18'); + BigNumber.config({ DECIMAL_PLACES : 46, ROUNDING_MODE : 1 }); + T('-1.369216676459106984e+0', '8.6808946526933710996891265108702348956013350311e+26', '-1.5772759965866974614e-27'); + BigNumber.config({ DECIMAL_PLACES : 72, ROUNDING_MODE : 2 }); + T('-2.29758826020964952364712054599338570980189854396e+17', '-1.78583389337877620342065013e+3', '128656325133500.530995125399088722466690431084706281554571510642156194959865103587355407'); + BigNumber.config({ DECIMAL_PLACES : 30, ROUNDING_MODE : 3 }); + T('-9.278841048360548236646763714876101874543e+39', '-2.8419331418063233629359036881e+14', '3.2649751367700886051436471065386186012809809832486115945e+25'); + BigNumber.config({ DECIMAL_PLACES : 53, ROUNDING_MODE : 3 }); + T('-4.3179008758351221823006096364401e+8', '6.20391310364281006813633074984998415870666906e+26', '-6.9599634999718801205399148323869105e-19'); + BigNumber.config({ DECIMAL_PLACES : 85, ROUNDING_MODE : 5 }); + T('1.20291914e+1', '-1.4276430588e-12', '-8425909631859.3049149352261047115455635345256931669116451280854292484723142899365736053967777677399'); + BigNumber.config({ DECIMAL_PLACES : 28, ROUNDING_MODE : 6 }); + T('7.42609747626423939e+1', '-2.8962192862361266232302219809883181228805332108813895e+5', '-0.0002564066026200336246740255'); + BigNumber.config({ DECIMAL_PLACES : 36, ROUNDING_MODE : 6 }); + T('-3.2469285014199734903543324848961e-5', '-1.004078367498033204621085824001959694516021e+28', '3.234e-33'); + BigNumber.config({ DECIMAL_PLACES : 64, ROUNDING_MODE : 0 }); + T('1.59209390368e+5', '-6.95630800488e+8', '-0.0002288705305404981796324097327769041428367904041851601205088129'); + BigNumber.config({ DECIMAL_PLACES : 7, ROUNDING_MODE : 1 }); + T('-1.252328476245750877736007224299768883853171183686e+48', '-1.30554631365833378e-20', '9.59237112574383780974783097258034876588235937984555536341805725079759514423e+67'); + BigNumber.config({ DECIMAL_PLACES : 37, ROUNDING_MODE : 0 }); + T('6.52455498462528584548664290811550009703541886619689582768074e+35', '6.36749688940559641122766817131948831574075467073355e+19', '10246655943375499.2411977713873718855658569674377435621'); + BigNumber.config({ DECIMAL_PLACES : 86, ROUNDING_MODE : 4 }); + T('-4.605658e+6', '-7.9730560437412644561609620123001921187e+36', '5.7765278140937890371463800327054039308127371991198158794e-31'); + BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 2 }); + T('4.986883150805824792798190568349429040756111709e+40', '2.0298859706399905078014298184259267e-17', '2.456730684844105048065068076706295523057029803826305087595843103635674153116076397239321169844654628530516110040741109430504569000041516449001e+57'); + BigNumber.config({ DECIMAL_PLACES : 25, ROUNDING_MODE : 1 }); + T('5.24013157067723826392787374436116355e-6', '-1.654298944482872783648579079220818514e-1', '-0.0000316758442490288983418'); + BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 4 }); + T('-1.619813418862550524051983626338569083512822621172e-2', '-8.88942851464259536167193821500652163619e+30', '1.82217947553592095418774728729978112733813820443059e-33'); + BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 1 }); + T('-4.79701754397011101988904832240955526503250234941047e-9', '-2.589958432808436599476604696865464224958762506342e+19', '0'); + BigNumber.config({ DECIMAL_PLACES : 24, ROUNDING_MODE : 6 }); + T('7.54860291310077184e+18', '3.17240732237e-1', '23794557716067373281.978281818398865657135947'); + BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 6 }); + T('3.535e+2', '-1.9367798014656460062e+5', '-0.00182519458192'); + BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 0 }); + T('5.8477188737827191112395859385879993317325596324590995e-9', '-3.30123674802177005613538455715848177250157274202e+39', '-1.771372161444313426698922036465592759e-48'); + BigNumber.config({ DECIMAL_PLACES : 48, ROUNDING_MODE : 1 }); + T('2.90345344463e+3', '1.19811605074978831727706733464399968704243448097028864714581e+59', '0'); + BigNumber.config({ DECIMAL_PLACES : 39, ROUNDING_MODE : 0 }); + T('-4.405737649551180734271639844152e+18', '8.665687320429951988638222805387523254162685133e+23', '-0.000005084117954688201318303152477535869'); + BigNumber.config({ DECIMAL_PLACES : 19, ROUNDING_MODE : 0 }); + T('2.40590343694868e+11', '9.615067877771284512367958e-9', '25022219994003350627.9907208147493557695'); + BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 4 }); + T('-3.7122486687302895895381340440591469508298813907336e+28', '-4.450927214657691094976925735032894e+5', '8.34039401162346058201294872580504522393506789379448365081226719977451601479867488629316635573894436e+22'); + BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 6 }); + T('1.43485055943535656490484e+13', '4.55427932297883956108947188219e+5', '31505545.83237237415892524503456536177066538115991432839510235143523699740049'); + BigNumber.config({ DECIMAL_PLACES : 63, ROUNDING_MODE : 3 }); + T('-3.99517658879239500654168590133754036e+24', '-3.14659168130760878023582236908930576652104205186095674372e-9', '1.269683833630471328762619262588320060995414561319236600079474677648533585116772591500561312512797e+33'); + BigNumber.config({ DECIMAL_PLACES : 5, ROUNDING_MODE : 5 }); + T('-1.16907419e+8', '-4.3613030803711816469360781701768e+8', '0.26806'); + BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 3 }); + T('-7.3838959777365098666394093694508503629546784795816384e+6', '1.52605442e+0', '-4838553.514845499328024887454177977717829144310319967750560297843113615830292605162'); + BigNumber.config({ DECIMAL_PLACES : 36, ROUNDING_MODE : 4 }); + T('1.24873948351044501062231345029988704844e+24', '9.229e+0', '1.35306044372136202256183058868770944678730089933903998266334e+23'); + BigNumber.config({ DECIMAL_PLACES : 91, ROUNDING_MODE : 6 }); + T('1.723186062490445682405e+2', '-3.3302578457437e+13', '-5.1743322658718354938433050799490674308559067598780664812693150364397716499935884e-12'); + BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 6 }); + T('-1.436559000596944990687764508250907638531781e+15', '-3.07390134602623660156369160289134599622169e+25', '4.673406329237098296606236235212285669e-11'); + BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 4 }); + T('-3.144745270263880221783603e+1', '-4.15786280849205348546792218731336603759e+19', '7.5633694883848173133841758122e-19'); + BigNumber.config({ DECIMAL_PLACES : 59, ROUNDING_MODE : 5 }); + T('-5.22542287273217114e+18', '-1.33235330154458332258484216e+19', '0.39219498812172362701831820120074302288129160373013333622019'); + BigNumber.config({ DECIMAL_PLACES : 53, ROUNDING_MODE : 1 }); + T('6.5349e+2', '-1.147628535686214808696562116052e+31', '-5.694264125362229366793202e-29'); + BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 6 }); + T('2.0753974053463172433510910285508920143294659032497383157e-3', '5.269240387230348981975249218e+25', '0'); + BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 2 }); + T('1.44793250749e+7', '-2.70305046627007613206961208559485346341480093e+14', '-5.35666102264081580421263052240146214387235273278554754854881e-8'); + BigNumber.config({ DECIMAL_PLACES : 73, ROUNDING_MODE : 5 }); + T('-9.4990364100082739684520043865097642535811419222444856e-15', '4.48860909443300244717180166047940783260388230136184241e+48', '-2.1162538796e-63'); + BigNumber.config({ DECIMAL_PLACES : 85, ROUNDING_MODE : 5 }); + T('4.8845911084046830077123804450630388169077e+34', '2.7499066530881177e+16', '1776275242986643197.4240022742275207738507920882164024707380398166570953158997121318220047727131878501766'); + BigNumber.config({ DECIMAL_PLACES : 67, ROUNDING_MODE : 2 }); + T('-1.36505345466529594069441239177958e+32', '5.1314327e-10', '-2.660179981830992230872310557204774409298985836840459780365043080463668557905865159256595141547895580896929623e+41'); + BigNumber.config({ DECIMAL_PLACES : 56, ROUNDING_MODE : 0 }); + T('-7.134815e+5', '2.7642976646292786728381718816660648208473550792917490401e+9', '-0.00025810588676081863162455451580595031422362669738873679'); + BigNumber.config({ DECIMAL_PLACES : 96, ROUNDING_MODE : 5 }); + T('2.121318575924122e+15', '-1.72678319e-2', '-122847997838345994.090896842700906765255225816739622071488893750465569449978256969249277901529722443035827792602035'); + BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 2 }); + T('3.78121837554398045598e-4', '3.71652183162e+0', '0.00010174078202296'); + BigNumber.config({ DECIMAL_PLACES : 48, ROUNDING_MODE : 0 }); + T('1.951816045919345711008131597619038268e-5', '3.1e+0', '0.000006296180793288211970993972895545284735483871'); + BigNumber.config({ DECIMAL_PLACES : 64, ROUNDING_MODE : 5 }); + T('7.0707e+0', '-5.59775213430031025964987552202428545347610850011e-18', '-1263132026992438549.6204657786826165932805405884563682832868987057654093127459227378'); + BigNumber.config({ DECIMAL_PLACES : 5, ROUNDING_MODE : 1 }); + T('-2.9797965817680345689e+6', '2.1535287981875260235578124463099748970367642693459229582334e+43', '0'); + BigNumber.config({ DECIMAL_PLACES : 55, ROUNDING_MODE : 0 }); + T('1.220617511695461565339083803604503248165770826e+22', '-1.31707837693732887083846897331882141939e+38', '-9.26761484410538427684253812961024444864e-17'); + BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 4 }); + T('9.65524e-13', '-6.733541930559968585474947219434340314e-13', '-1.433902112672677730285870851012268785993865990523762015487'); + BigNumber.config({ DECIMAL_PLACES : 39, ROUNDING_MODE : 3 }); + T('-5.23614891224023913334429045096038e+32', '1.16214862942169111e+6', '-4.50557594758413453398156953032584890242529737101638370519991322657e+26'); + BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 4 }); + T('1.305046934971232772238622520596849096e+31', '6.1911130409682e-11', '2.10793588541413939328238391289209716247369173012111109295732391276104352758914536901884599634380982104308716212134983237749267e+41'); + BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 2 }); + T('-4.0384878167411940832622379708171e+15', '-1.25e+0', '3230790253392955.2666097903766537'); + BigNumber.config({ DECIMAL_PLACES : 100, ROUNDING_MODE : 3 }); + T('-3.209378206287e-6', '-1.155723241315695076124847002535e+21', '2.7769435549581827549516876413738411958627193761651279264291588242345841616e-27'); + BigNumber.config({ DECIMAL_PLACES : 49, ROUNDING_MODE : 6 }); + T('-4.9238e+2', '7e+0', '-70.34'); + BigNumber.config({ DECIMAL_PLACES : 29, ROUNDING_MODE : 4 }); + T('1.06218923107336326862449065757631e+25', '-9.27070679993426266917e+20', '-11457.47842096457099817735577281413'); + BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 4 }); + T('-2.4861923661e+2', '-2.87714114949179581361591153398074361054813911868006735465e+25', '8.641190115191772566278600014764e-24'); + BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 3 }); + T('-4.110539439392834e+15', '1.32686540606636889756826311855188e+8', '-30979324.81018522'); + BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 6 }); + T('-1.66556730495609517675e-18', '3.942946911637040572466680987914378500137e+20', '0'); + BigNumber.config({ DECIMAL_PLACES : 82, ROUNDING_MODE : 1 }); + T('-6.219642003466062596505709273698035e+10', '-2.8751356987077335126886072e+25', '2.1632516358311575307947598873847304488739254085532924881880571814244e-15'); + BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 6 }); + T('-5.83359252088139871111308594530597432442434e+31', '-2.4440191908e-1', '2.3868849077948077751702267628961591394490698284741144512947578120138220970306e+32'); + BigNumber.config({ DECIMAL_PLACES : 31, ROUNDING_MODE : 2 }); + T('-1.40974341572315709438812324253011e+27', '5.04876497541819254052755963051917636882e+39', '-2.792253991990164119e-13'); + BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 4 }); + T('-3.465828658613736751498191278105137953666195e-6', '-2.0511309617351316211987482158358834466054070670674e+38', '0'); + BigNumber.config({ DECIMAL_PLACES : 39, ROUNDING_MODE : 6 }); + T('-6.335696975300406808590074114208022406e+18', '6.6125342998523530242132799140014228764889567314128565065e+29', '-9.581344591954513512145149953e-12'); + BigNumber.config({ DECIMAL_PLACES : 36, ROUNDING_MODE : 0 }); + T('-5.54961011314309569666969676244309590937e+26', '1.214679172748411540000353356228719e-3', '-4.56878675262554264592593256239126894808866372144128065178186052526e+29'); + BigNumber.config({ DECIMAL_PLACES : 55, ROUNDING_MODE : 6 }); + T('1.278852704179e+0', '8.4826e+3', '0.0001507618777472708839270978237804446749817273005917997'); + BigNumber.config({ DECIMAL_PLACES : 90, ROUNDING_MODE : 1 }); + T('3.575117845431545025e+0', '5.476995399594260806232321748501480830180247088766737696e+54', '6.52751661192994969056019008145458966e-55'); + BigNumber.config({ DECIMAL_PLACES : 82, ROUNDING_MODE : 0 }); + T('-6.5012318e+4', '4.8741704405965822407914136256e+15', '-1.33381297991792647768876351387415604119103866830323154408156032218715514e-11'); + BigNumber.config({ DECIMAL_PLACES : 88, ROUNDING_MODE : 4 }); + T('-4.09807579e+4', '-3.61411659059939766021001205151016702726189932182035e+26', '1.133908020748256542955115133519209491950635393793469083596721427946e-22'); + BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 6 }); + T('-5e+0', '-2.868638183513205544227118800631337e+33', '1.7e-33'); + BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 2 }); + T('3.3699125275607164851755136009714266648456377456627e+23', '1.577111963768597555370435362007291129229850253285956e+30', '2.13676175501713991111251165365380208752590381097789326986679667e-7'); + BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 3 }); + T('4.46912507e+8', '-8.530059420914262687145e+14', '-5.23927e-7'); + BigNumber.config({ DECIMAL_PLACES : 55, ROUNDING_MODE : 3 }); + T('-5.65371681117055625627e+12', '9.38730212e-16', '-6.0227280840627256346043755540702678481599780448953953556146971010665628816471925802e+27'); + BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 2 }); + T('2.37267190166668668e+17', '3.94479095707125982529572013e+7', '6014696158.77500111662288382093125061302639854428765614486959507662141032799547690193815415709952914118104'); + BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 6 }); + T('7.167011325672868426989761788484714e+1', '4.5805211881401763046191823171603105190197732114415e+49', '0'); + BigNumber.config({ DECIMAL_PLACES : 30, ROUNDING_MODE : 0 }); + T('-1.619417144199e+7', '-1.499581018667551371759149e-9', '10799130717444854.637232627590516825182310726441'); + BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 4 }); + T('-1.159e+2', '-4.45522735426978209786560237858107941e-19', '260143850770992066905.002567332367838963813443738822484878192234025785439'); + BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 4 }); + T('-8.0922106885074095066306492835695793499271403905946348e-8', '3.4210144418448656480450458623351284649104497146e+9', '0'); + BigNumber.config({ DECIMAL_PLACES : 6, ROUNDING_MODE : 5 }); + T('4.280115130063213216041225264999579901915465248643e+36', '9.14434074536221695564283378284044844953e-4', '4.68061640445100600151138642418812452172407515e+39'); + BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 3 }); + T('-5.42217602242808471711892847790688e-5', '2.956192069385034236011287645586482391767444681356251521111e-14', '-1834175823.20895680284003'); + BigNumber.config({ DECIMAL_PLACES : 70, ROUNDING_MODE : 2 }); + T('-1e+0', '4.6881163169731125e+15', '-2.133052877505503338654455407578589665306563537985256483e-16'); + BigNumber.config({ DECIMAL_PLACES : 48, ROUNDING_MODE : 0 }); + T('-2.39353705331681242119144874902967528e+11', '-6.3747674748322e+5', '375470.487789017962422613063721855949277981692703049586'); + BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 2 }); + T('1.06472209507088359394231373287656793e+23', '1.818659018444486012291946386907024e+28', '0.00000585443496704263530432719290118442613833432'); + BigNumber.config({ DECIMAL_PLACES : 28, ROUNDING_MODE : 2 }); + T('-2.10016973597553035696821462625319e+27', '2.3731805002815762165930705873147156131360283e+24', '-884.9599664780435697036093730518'); + BigNumber.config({ DECIMAL_PLACES : 66, ROUNDING_MODE : 4 }); + T('-3.4839034973251939262326487e+19', '-2.011163083e-11', '1.732282939545780199781366362719775520064078264507403947808045559674784464010569748510046611670029e+30'); + BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 5 }); + T('9.7171641e+4', '1.250644689569399819670508216478401454951922699562e+6', '0.077697240319675803119394574531389969073470358652336381922'); + BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 6 }); + T('-7.5710616640825011815104e+5', '9.451242202022377628036082483736650081e+7', '-0.00801065246477594739'); + BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 6 }); + T('-1.704041340419726610074336154179338564660539258979455014487e+44', '1.2327107844519011346213910428367823027292406408969e-16', '-1.382352910279269335468028458736200971370992477548215948108808e+60'); + BigNumber.config({ DECIMAL_PLACES : 36, ROUNDING_MODE : 1 }); + T('3.22817069107305295581377047478101377960503878e+18', '-6.869377673004481992500791135e+2', '-4699364112355082.481054269190618447327181395749044268'); + BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 5 }); + T('1.3389414114437867999036179224006456461480240424e-4', '-5.06951067805751602593059793029066675985196631798047e+33', '-2.6411649890376182545323961489807e-38'); + BigNumber.config({ DECIMAL_PLACES : 6, ROUNDING_MODE : 4 }); + T('-1.92e+0', '2.0865128374378439843993098387219839709312567727985631e+43', '0'); + BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 3 }); + T('-2.3249056323512566e+2', '-2.2410663822015267295027165733613383198005705603e+16', '1e-14'); + BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 0 }); + T('-7.579516177031886181784e+3', '-1.530062338379817262091e-10', '49537303068696.10628564844293'); + BigNumber.config({ DECIMAL_PLACES : 91, ROUNDING_MODE : 3 }); + T('1.084223028866836461935910967916e-7', '-1.949443448012856975086875332182396037512904031574429212e-3', '-0.0000556170547020498022196956081864547429609634163896485100679090071798720271014257871705975'); + BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 0 }); + T('-9.42916989636453357228161077722910058536297795034844963e-9', '6.76121556121e+5', '-1.394596845937133734676798110881436661545581544789306489853274127422959771130003534e-14'); + BigNumber.config({ DECIMAL_PLACES : 52, ROUNDING_MODE : 1 }); + T('-1.003962846078115341724e+2', '8.944572452816409298512282425478502093022008723e+32', '-1.122426869896944033804e-31'); + BigNumber.config({ DECIMAL_PLACES : 70, ROUNDING_MODE : 6 }); + T('1.078359e-20', '3.1945258e+0', '3.3756465513598293681021452385828281618511266993054e-21'); + BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 3 }); + T('3.5886543850497976496752035186416285838e+13', '2.6958457862999644629e+12', '13.31179403245913687051311362691398137025931371052452290722385757745856796265257344882849079488086'); + BigNumber.config({ DECIMAL_PLACES : 41, ROUNDING_MODE : 2 }); + T('5.9295e+4', '1.7222385181331812535056690632608228968e+3', '34.42902906635299092292162615052214885263473'); + BigNumber.config({ DECIMAL_PLACES : 73, ROUNDING_MODE : 6 }); + T('-2.7553764775966268301895794866575747362452482844e+18', '-4.761388925368866766525368325578939e+33', '5.786917474680282868272796870307013291971902968539350696472e-16'); + BigNumber.config({ DECIMAL_PLACES : 82, ROUNDING_MODE : 6 }); + T('-1.6225819735425613024232000392866795916741648546374252915466e+44', '-1.376276046947572564e+18', '1.17896549688652064476235580350301390936839264207433125311947168474968081901524663181132107998788966789052601e+26'); + BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 2 }); + T('-1.5182008699385604e+4', '5.41966045854557363e+9', '-0.000002801284105436351537197311809509521596277834898851020811623908884'); + BigNumber.config({ DECIMAL_PLACES : 63, ROUNDING_MODE : 0 }); + T('6.251133026e-17', '-2.11e-16', '-0.296262228720379146919431279620853080568720379146919431279620854'); + BigNumber.config({ DECIMAL_PLACES : 100, ROUNDING_MODE : 0 }); + T('8.33847140797473629643e-19', '1.4157326615e+9', '5.889862990898254625334855284046153935539474731543445428944778215812887072e-28'); + BigNumber.config({ DECIMAL_PLACES : 22, ROUNDING_MODE : 0 }); + T('-9.16970099403e+3', '3.667075394519654453329895912717313926531710666272475e+39', '-1e-22'); + BigNumber.config({ DECIMAL_PLACES : 43, ROUNDING_MODE : 3 }); + T('-1.906488988420756221515447255765540323355510359099e-11', '4.626554510164239308633e+9', '-4.1207533256818306757392e-21'); + BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 3 }); + T('-1.99620549320197365464363092987e+16', '5.93386025050179057428821590581205508e+12', '-3364.092528187138654766699104256796006704273260721168624814519'); + BigNumber.config({ DECIMAL_PLACES : 66, ROUNDING_MODE : 0 }); + T('1.145940278542701e+1', '-3.529553712156278633e-8', '-324670021.197275383157905823022514540171219669326686309437557989241129145504'); + BigNumber.config({ DECIMAL_PLACES : 1, ROUNDING_MODE : 1 }); + T('2.767506761328509952064778147061e+30', '2.545149328519e-13', '1.08736518141310702022249894626439107186593376e+43'); + BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 2 }); + T('1.32304870049002944170332839109166967e+35', '1.27749011305606806826e+3', '1.035662575364261814630167368899608837368209150765568399025973111188e+32'); + BigNumber.config({ DECIMAL_PLACES : 98, ROUNDING_MODE : 1 }); + T('-7.04097514923541657584631837992450960209237016644904541e+7', '-8.32262137286187964e+15', '8.46004501922241539680509874540959237140526624678906958848413241826644373335216384886602781e-9'); + BigNumber.config({ DECIMAL_PLACES : 92, ROUNDING_MODE : 1 }); + T('-3.2360876160936191817767007555074607182087e+40', '-1.899082929899719771084796853038103784020136825588155546092e+15', '1.704026488334819242519591376726538287134019594357321614384457226714016931383105686227869123190077074512036054207929506e+25'); + BigNumber.config({ DECIMAL_PLACES : 43, ROUNDING_MODE : 5 }); + T('-3.98925778357985164908e+8', '-1.86477459975293825151816719437198016879394142476548029e+11', '0.0021392707644711503602774885168556667717915'); + BigNumber.config({ DECIMAL_PLACES : 82, ROUNDING_MODE : 2 }); + T('1.6622e-11', '-2.49e-1', '-6.67550200803212851405622489959839357429718875502008032128514056224899598e-11'); + BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 1 }); + T('6.0727075918e-12', '9.527958945976325128845631006988156339697e+3', '6.3735660766721877682258299616996331662856791625338972e-16'); + BigNumber.config({ DECIMAL_PLACES : 35, ROUNDING_MODE : 5 }); + T('-2.5011e+1', '1.62717969806433753107763604840806956171014130632439119e+21', '-1.537076699626514e-20'); + BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 2 }); + T('7.998794e+1', '1.274572014657465478565143988206041118883436681013340113e+55', '6.27567050588e-54'); + BigNumber.config({ DECIMAL_PLACES : 19, ROUNDING_MODE : 3 }); + T('3.85623227269198095411527056110936403902666e+39', '-1.28955567899004525747860212e+19', '-299035732657321668958.2181777109595896048'); + BigNumber.config({ DECIMAL_PLACES : 43, ROUNDING_MODE : 1 }); + T('1.188e-7', '-1.280490118705664538759364187635398461568401493534167085159e+9', '-9.27769752101519760270724248e-17'); + BigNumber.config({ DECIMAL_PLACES : 55, ROUNDING_MODE : 0 }); + T('1.84122454784753600734777618078188571e+34', '-6e+0', '-3.0687075797458933455796269679698095166666666666666666666666666666666666666666666666666667e+33'); + BigNumber.config({ DECIMAL_PLACES : 93, ROUNDING_MODE : 2 }); + T('3.6403007332e-18', '3.176e+3', '1.146190407178841309823677581863979848866498740554156171284634760705289673e-21'); + BigNumber.config({ DECIMAL_PLACES : 2, ROUNDING_MODE : 4 }); + T('-1.9534606819665169330124655827752693e+29', '1.7604909119024995247e+14', '-1109611341222705.82'); + BigNumber.config({ DECIMAL_PLACES : 78, ROUNDING_MODE : 3 }); + T('1.0164849870504e+0', '-4.760167723781898502831722485373795957921286238831953119e-4', '-2135.397418817869656664529057011708823947732503465455294676919158552132959681804438'); + BigNumber.config({ DECIMAL_PLACES : 30, ROUNDING_MODE : 5 }); + T('5.274925376912008705499893e+3', '4.5400020032617574e+14', '1.1618773236492509799e-11'); + BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 1 }); + T('-4.02002769478321689692e+6', '3.534477907400024556189638392e+2', '-11373.752503493124'); + BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 2 }); + T('1.24789049183043823e+17', '-2.2163021994411734180668742961041637669973203037021229e+52', '-5.63050694144997881996472755363154297885509239801648523858841e-36'); + BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 6 }); + T('-3.23036877745037309977528085178245549072548178883351333e-8', '-4.72059947393363605943147956087253266046182e-20', '684313252011.3030931889'); + BigNumber.config({ DECIMAL_PLACES : 78, ROUNDING_MODE : 1 }); + T('1.612878481975188863232106e+21', '5.6101240182667483241e+14', '2874942.651398798809616051503263192799001909272881791139890364654685253442934643059278'); + BigNumber.config({ DECIMAL_PLACES : 55, ROUNDING_MODE : 1 }); + T('3.32428974809080229691671097154212603950764910076e+43', '1.256523080538672685e+5', '2.645625694886301651018870335010366996586139275590193315536930373814279240202582279937361006797e+38'); + BigNumber.config({ DECIMAL_PLACES : 86, ROUNDING_MODE : 6 }); + T('2.7756e+4', '-3.11053590271e+11', '-8.92322122879792850806113947861984554267327973271596444983635660367831588249207e-8'); + BigNumber.config({ DECIMAL_PLACES : 60, ROUNDING_MODE : 5 }); + T('-2.668747180162028268773707450609661585274863864742e-8', '1.345436522358382406643159905e-5', '-0.001983554880377446076965683237923575753825174386339313985832'); + BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 3 }); + T('2.0329534947446651840145979496802136802853076e+31', '1.933579201109296126048883616438787293380757272312319161862e+49', '0'); + BigNumber.config({ DECIMAL_PLACES : 24, ROUNDING_MODE : 4 }); + T('-2.4115746388903301174779005e-16', '8.687351947756104e+5', '-2.78e-22'); + BigNumber.config({ DECIMAL_PLACES : 64, ROUNDING_MODE : 5 }); + T('-2.9562370193417282e+5', '2.2152180355275920557579249600578521722366691e+43', '-1.33451288854175918701330304e-38'); + BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 6 }); + T('-6.594939549799e+3', '-3.810903814979e+10', '1.73054474e-7'); + BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 0 }); + T('4.883247406505615721e+18', '-3.4558169941840708218929239074331e+10', '-141305150.55408961765751574170221376128593348136084390073078372552498303278'); + BigNumber.config({ DECIMAL_PLACES : 55, ROUNDING_MODE : 6 }); + T('8.902877473602032835230616890019e-13', '8.3309773516931729731523719022189834897938619904095294086323e+46', '0'); + BigNumber.config({ DECIMAL_PLACES : 40, ROUNDING_MODE : 0 }); + T('2.56522642387380546072368976200699772192887873825e+23', '4.362896095817453251e-20', '5.8796413380850232420456727050358924892240031665244955012595267367605107437961341787e+42'); + BigNumber.config({ DECIMAL_PLACES : 62, ROUNDING_MODE : 1 }); + T('-8.31543075575440962794633508905603322451033007461e+38', '-3.08919081344415970799006452408e+6', '2.6917828188422843652800521618988633049018441017498170492411414731188902829583692206897222222464e+32'); + BigNumber.config({ DECIMAL_PLACES : 40, ROUNDING_MODE : 0 }); + T('1.57214404378329883686312946334159192177687874549561669207702e-9', '1.327185210837997983928600150377132e+33', '1e-40'); + BigNumber.config({ DECIMAL_PLACES : 99, ROUNDING_MODE : 1 }); + T('-4.494252620537804490033864785e+21', '1.91928726199001938e+17', '-23416.258261819149027349573106876247114040374019567339595956310880219968591391266693522510078632879831274'); + BigNumber.config({ DECIMAL_PLACES : 40, ROUNDING_MODE : 6 }); + T('-6.6620088674050788136405712996e+28', '-7.64946935029114474388677022238536e+32', '0.0000870911243948120085293653397612509715'); + BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 1 }); + T('1.77173077658982767429148036509164861303e+7', '3.974536637136e-4', '44577039749.3810521951498149973210289628446919914637389941264067650356417333372671900385181'); + BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 5 }); + T('3.710600384390821459414e-19', '8.623326824194791837387e+3', '4.30298011433342714640329e-23'); + BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 4 }); + T('-2.666869188961064e+3', '-2.872924167e+1', '92.827691715437611131348737754552781413530432388889435'); + BigNumber.config({ DECIMAL_PLACES : 87, ROUNDING_MODE : 5 }); + T('6.41880055528295371271924691739782381346596299504286649e+18', '-1.4130341800143333726e+14', '-45425.656690185961576847596866629226191369016102199377716476594104540064145879800238780638745'); + BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 1 }); + T('-2.73528519722352957e-18', '3e+0', '-9.1176173240784319e-19'); + BigNumber.config({ DECIMAL_PLACES : 50, ROUNDING_MODE : 6 }); + T('-1.9626404104810382516573594326595578e-16', '-1e+0', '1.9626404104810382516573594326595578e-16'); + BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 3 }); + T('-1.5757187747713995884217685649905401120371e+8', '-2.2393e-6', '70366577714973.410816852077211206185506055463760996740052695038628142723172419952663778859'); + BigNumber.config({ DECIMAL_PLACES : 100, ROUNDING_MODE : 6 }); + T('1.480835147390577628445960141787666040994191407369e+12', '-3.46539109211483720777346240960284709546959034427e+7', '-42732.1219460647604383219331138800261730200372795762604518684740237983142326932461152963120732682918096066'); + BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 4 }); + T('4.484318539845160321753458871389325519098373850294e+15', '5.607814797303005689008492636683631171084199573e+7', '79965524.93141938246441974307891682936389297447137517'); + BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 2 }); + T('1.35e+1', '-1.1677973157260636666418264822210582443246705183475e+49', '0'); + BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 1 }); + T('8.6536e+2', '8.2442391680978712887805298966243100701121526751523e+42', '1.049654167419863600184768906243125774165e-40'); + BigNumber.config({ DECIMAL_PLACES : 35, ROUNDING_MODE : 4 }); + T('1.0692693176355857259806636599484697808433195100395904322479e+58', '7e+0', '1.52752759662226532282951951421209968691902787148512918892557142857142857142857142857142857143e+57'); + BigNumber.config({ DECIMAL_PLACES : 50, ROUNDING_MODE : 1 }); + T('1.227655720043460518276302272997417933308176116e+20', '-1.173e+0', '-104659481674634315283.57223128707740266906872259164535379369138959931798'); + BigNumber.config({ DECIMAL_PLACES : 28, ROUNDING_MODE : 5 }); + T('4.3907030188404130885653950063068e+14', '-6.569079550992238634552125738045289626717e-11', '-6.6838938161088509290569798040694186429146481086822161e+24'); + BigNumber.config({ DECIMAL_PLACES : 39, ROUNDING_MODE : 3 }); + T('-6.53644739e+0', '8.7834710029399887709854994562378869966e+37', '-7.5e-38'); + BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 2 }); + T('-2.7479594724454402030812592683704016311325e+40', '-8.455030151007699241885905293135108270410391822e+38', '32.50088318275161975197034050532552605685223692'); + BigNumber.config({ DECIMAL_PLACES : 52, ROUNDING_MODE : 5 }); + T('-6.36e+0', '-2.78819398872000965873655678223e+4', '0.0002281046450042637608593310752328550986331416670517'); + BigNumber.config({ DECIMAL_PLACES : 23, ROUNDING_MODE : 0 }); + T('-5.41691113602878118999735800399063619632383102e+35', '9.071066033854418764256711460567622402922046577e+25', '-5971636757.81010968204198841428442'); + BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 5 }); + T('1.356417944253669913351208760266177416e+25', '-6.132297861490114912344960128e+9', '-2211924428478540.596796143077988742335141463949076780885767486491137334936730453574644'); + BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 1 }); + T('4.715556673104617203548659543267341428127e+21', '6.2760400536921382710428327818779843054168e+36', '0'); + BigNumber.config({ DECIMAL_PLACES : 92, ROUNDING_MODE : 2 }); + T('1.0317652830960034398453699285e+2', '6.1829675144044260363e+11', '1.6687218244189467765197512712584915393917500945172698826433184102065454534234108477e-10'); + BigNumber.config({ DECIMAL_PLACES : 52, ROUNDING_MODE : 3 }); + T('-6.268346540757896995955790276886761e+33', '-2.798429531723388124523913358498302e+31', '223.9951540569110243569342604592798330500844357110556973'); + BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 0 }); + T('-1.6624621540837732404151147322498204314634349e-1', '1.56328841e+1', '-0.0106343918592'); + BigNumber.config({ DECIMAL_PLACES : 43, ROUNDING_MODE : 6 }); + T('7.6161454067479047556223907398161e-17', '-3.8582948370917617886492095694e+4', '-1.9739666687807275116651e-21'); + BigNumber.config({ DECIMAL_PLACES : 19, ROUNDING_MODE : 3 }); + T('-1.29176772662987536e+16', '-5.09266917896438263429368605119e+18', '0.0025365239351607798'); + BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 0 }); + T('1.0073573787565267e-16', '-1.981003983676413545854832845923167276e+32', '-1e-16'); + BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 6 }); + T('-9.6768142e+4', '-1.79696e+2', '539'); + BigNumber.config({ DECIMAL_PLACES : 56, ROUNDING_MODE : 6 }); + T('-6.0477677e+6', '-2.19597560417411889123470558904291251120912008389282209e-19', '2.754023172436150861164453543182847206812675939874175005517876663337993546643686205e+25'); + BigNumber.config({ DECIMAL_PLACES : 96, ROUNDING_MODE : 6 }); + T('1.261699492172453014018092679981487796178e-13', '1.080225322668030878877958754510767811383389262270059e+32', '1.167996588948870452581485424509281395833013346693792e-45'); + BigNumber.config({ DECIMAL_PLACES : 23, ROUNDING_MODE : 1 }); + T('-1.159502953021659234017e+9', '3.950033565369688e+5', '-2935.42557001826406810320053'); + BigNumber.config({ DECIMAL_PLACES : 30, ROUNDING_MODE : 0 }); + T('5.12335648790260622032484326543911024740555594437e+24', '3.7505305088939940628886453372494086801160748622e+29', '0.000013660351450956332044618895'); + BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 5 }); + T('-1.46966156284716990527494920594962393853410257522365321e+12', '1.0776860047846269e+17', '-0.0000136371963291931069490657735708'); + BigNumber.config({ DECIMAL_PLACES : 93, ROUNDING_MODE : 3 }); + T('-4.540048216254137e+0', '-1.133706585235283117781288653149e+24', '4.004606020094626873942359883456765163281122690525449179887628978174889e-24'); + BigNumber.config({ DECIMAL_PLACES : 29, ROUNDING_MODE : 0 }); + T('-2.29786804039100055196053306926595949048285e+18', '4.083849473294012528739e+10', '-56267207.09021509798296578299598544505'); + BigNumber.config({ DECIMAL_PLACES : 67, ROUNDING_MODE : 6 }); + T('-2.907236413510747347827705952106309e+3', '2.780400503429919011079250700040402660132e+35', '-1.0456178561053930125706314941292237e-32'); + BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 0 }); + T('4.5010472266359015e+8', '-1.214638285103347199749924616005837201754e+18', '-3.70566882489870719310162768524526599220559747824e-10'); + BigNumber.config({ DECIMAL_PLACES : 52, ROUNDING_MODE : 4 }); + T('-5.4e+0', '1.5750721066529406e-10', '-34284144688.9381266182603110888925497366606562451655461638197923'); + BigNumber.config({ DECIMAL_PLACES : 45, ROUNDING_MODE : 1 }); + T('-1.8497048882001466e+15', '4.794611116582358983931777034e+6', '-385788303.41482053903672236900793707833744334439484623'); + BigNumber.config({ DECIMAL_PLACES : 90, ROUNDING_MODE : 1 }); + T('-2.120252067840788888612751008e-4', '6.78642685252057316389423427446814056802841663821467834573448e+59', '-3.12425391729271764050739741e-64'); + BigNumber.config({ DECIMAL_PLACES : 52, ROUNDING_MODE : 1 }); + T('-3.8194885484056583309853291e+12', '-1.0823626026412643451596105005641681033239927255030360508573e+13', '0.3528843789581281771863113667186679739520698721752024'); + BigNumber.config({ DECIMAL_PLACES : 99, ROUNDING_MODE : 0 }); + T('2.68124993e+3', '1.5953866438589370234872568300984755455477714587772e+49', '1.68062703816710292856861045614608661096036890826335974e-46'); + BigNumber.config({ DECIMAL_PLACES : 90, ROUNDING_MODE : 3 }); + T('-1.219877047369145e+10', '3.66092064335470571432e+16', '-3.33215921952163279487170395646358025012426241393264454645620511358967453602564685649e-7'); + BigNumber.config({ DECIMAL_PLACES : 88, ROUNDING_MODE : 2 }); + T('6.66629794570161149222899127983354943e+12', '-6.308953575665103160481420643879e+30', '-1.0566408304880950620052147400293819964166036254808867532571554725224287e-18'); + BigNumber.config({ DECIMAL_PLACES : 21, ROUNDING_MODE : 2 }); + T('-3.980852969839127008639786231584131916557247110432e+48', '-5.11841225494101511199035259489828e+18', '7.77751531443416840525931402599024451589046906671966e+29'); + BigNumber.config({ DECIMAL_PLACES : 38, ROUNDING_MODE : 0 }); + T('7.453652183365153360502643934817177961790240146e+12', '-2.274473231558113970582844474e+12', '-3.27708942886044631026315833752242902005'); + BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 3 }); + T('2.095936172334698877398439562038111769645716801648263e-2', '-9.69039170081322222260979231426382655741383615071657e+19', '-1e-17'); + BigNumber.config({ DECIMAL_PLACES : 52, ROUNDING_MODE : 4 }); + T('-5.8207791953766837540943314431e+1', '-1.18357630423732954e+8', '4.917958541868126920200404874333493925171278252e-7'); + BigNumber.config({ DECIMAL_PLACES : 9, ROUNDING_MODE : 5 }); + T('4.61056059006e+6', '-2.07440399904612408794893747e+0', '-2222595.30553358'); + BigNumber.config({ DECIMAL_PLACES : 70, ROUNDING_MODE : 4 }); + T('5.8071e+1', '7.9784490756857401832455944778399256449687681e+7', '7.278482252518338251899949297854210037001968693656166675394656163e-7'); + BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 3 }); + T('6.76442007200488342237237857961359757349795757287783e+32', '-8.55386468355755784254803678496292573850506357383e+37', '-0.000007908027917495132444245091585547753726194690156368086798295478993'); + BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 3 }); + T('8.3376305184495642298818671705786770306524469580611554337e+13', '-7.325536870820546190516379149090804798183139509834697152221e+38', '-1.138159655118308299590211929663671760159898393397066434754870309299928894e-25'); + BigNumber.config({ DECIMAL_PLACES : 88, ROUNDING_MODE : 6 }); + T('-3.4304287413537982527819689877203663e+10', '7.1414492124429393531e+19', '-4.803547066296815176130776598806964147646706679213792447840710563686043360337009e-10'); + BigNumber.config({ DECIMAL_PLACES : 7, ROUNDING_MODE : 4 }); + T('1.366510611666465759959233643447011226073187e-13', '1.38300074682646612533946492e+17', '0'); + BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 0 }); + T('2.08100787440011305e+13', '-3.976752601936868492051090370650417875518896855e+35', '-1e-17'); + BigNumber.config({ DECIMAL_PLACES : 74, ROUNDING_MODE : 2 }); + T('2.61837292523e+3', '-6.3380277624255913e-8', '-41312108803.82665100551479260369901993600029757911806959246895894373816180098452665305'); + BigNumber.config({ DECIMAL_PLACES : 5, ROUNDING_MODE : 0 }); + T('-1.94133136747401361547356020990483123341103383113e+5', '2.45709e-11', '-7900937155228394.62728'); + BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 0 }); + T('-2.32272433910860004186167866059586312811267459933702908371e+31', '2.740310768360056819e+3', '-8.4761347724755976636821850258296660146383381333000707945171197229887917703129992089013032957193e+27'); + BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 0 }); + T('-1.332e+0', '-1.8158039094930935217577782152883430305945135e+28', '7.33559385480035674488228900560161890525182979812285e-29'); + BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 6 }); + T('-9.84933786751815837e+8', '1.93811065012307635e+10', '-0.050819275292'); + BigNumber.config({ DECIMAL_PLACES : 39, ROUNDING_MODE : 4 }); + T('1.925908405e+9', '-9.093382567761151682368945778883426278786e-5', '-21179229958144.94620570154189826156144718562744913925'); + BigNumber.config({ DECIMAL_PLACES : 46, ROUNDING_MODE : 1 }); + T('1.4e+0', '-1e+0', '-1.4'); + BigNumber.config({ DECIMAL_PLACES : 78, ROUNDING_MODE : 6 }); + T('2.76605963830845290415197828656050351e+3', '-1.99993576433266511439357862515732723814925943234954648616973e+59', '-1.3830742405026326404153e-56'); + BigNumber.config({ DECIMAL_PLACES : 28, ROUNDING_MODE : 2 }); + T('0e+0', '3.96672850369802552383282971901872365106370354487e-16', '0'); + BigNumber.config({ DECIMAL_PLACES : 66, ROUNDING_MODE : 4 }); + T('2.76857523583049347310212188e-16', '3.1452245783713142824815207978864e+31', '8.80247234130460589e-48'); + BigNumber.config({ DECIMAL_PLACES : 26, ROUNDING_MODE : 3 }); + T('4.357274317210552993960992796319346403425583991317217565129e-18', '9.094268885060035e-8', '4.791231018436935e-11'); + BigNumber.config({ DECIMAL_PLACES : 22, ROUNDING_MODE : 4 }); + T('1.4039009724006305010974e+5', '3e+0', '46796.6990800210167032466667'); + BigNumber.config({ DECIMAL_PLACES : 41, ROUNDING_MODE : 1 }); + T('-1.58346432263184003672652745058411498559850087e+39', '6.6773e+4', '-2.37141407849256441484810844290973145672427608464499123897383673041498809399e+34'); + BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 5 }); + T('9.73228e+1', '5.115109e-10', '190265349184.15228297188'); + BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 3 }); + T('-1.8530906860057e+1', '2.5252632238440060837832e+23', '-7.338208027220577702508725091186e-23'); + BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 0 }); + T('2.1693806046892803e+16', '2.05017531663766730588144547794985470551554948150675e-19', '1.05814394851222396588324507253150221197882158562e+35'); + BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 2 }); + T('-3.496196484866649020332764869e-19', '6e+1', '0'); + BigNumber.config({ DECIMAL_PLACES : 41, ROUNDING_MODE : 4 }); + T('-2.317721799311436579383425494659623010340469386570355945e-4', '1.189911351644474501700532560346e+14', '-1.94781047857751076432509e-18'); + BigNumber.config({ DECIMAL_PLACES : 41, ROUNDING_MODE : 0 }); + T('1.19890141474862435e+15', '-2.03047465249265460257713423226394761101e+38', '-5.90453770637730957e-24'); + BigNumber.config({ DECIMAL_PLACES : 22, ROUNDING_MODE : 1 }); + T('1.98513293036932958973751311071185721751e+4', '-6.5415646637956200290819953741594589587739407969506172e-20', '-3.034645428724530092307638502769599017628697705e+23'); + BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 6 }); + T('3.17526517601104291784905e-9', '5.99109457762345999857913595424635469004e+38', '0'); + BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 3 }); + T('4.8941e+3', '1.97859080153533358545e+8', '0.000024735281272925706475601086927797855050790185586656378118996586512708966'); + BigNumber.config({ DECIMAL_PLACES : 56, ROUNDING_MODE : 0 }); + T('-4.121446962927e-8', '4.582394751714746876631460438e-12', '-8994.0897417987423949251748793151784536659572640866065297971'); + BigNumber.config({ DECIMAL_PLACES : 53, ROUNDING_MODE : 0 }); + T('2.85778552174886354404223401424014e-11', '-2.2227100424261236420923264650125244182481642994861203159e+55', '-1e-53'); + BigNumber.config({ DECIMAL_PLACES : 88, ROUNDING_MODE : 0 }); + T('7.2251578752014560028324536931212314571228257033e+44', '6e+0', '1.20419297920024266713874228218687190952047095055e+44'); + BigNumber.config({ DECIMAL_PLACES : 36, ROUNDING_MODE : 0 }); + T('1.1440132768507606927650220047747784759082981687031e+34', '6.41425089765119244731103668844907368207684369892387103868e+56', '1.7835493109097e-23'); + BigNumber.config({ DECIMAL_PLACES : 60, ROUNDING_MODE : 2 }); + T('-5.059e+2', '5.31040971619709590484744737604e+4', '-0.009526571903801923461704869044014671299807031287576007757239'); + BigNumber.config({ DECIMAL_PLACES : 66, ROUNDING_MODE : 3 }); + T('-2.017224591942822302481233322922747368500832e+1', '2.7560493027840594e+5', '-0.000073192616326024951279013805032222874322442564379231223360154025'); + BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 3 }); + T('4.5272193500978667342e+1', '-6.9541563214139826062554896e+24', '-1e-17'); + BigNumber.config({ DECIMAL_PLACES : 86, ROUNDING_MODE : 3 }); + T('1.2321314743004878464383729e+15', '-3.6605923110953916088711e-7', '-3.36593471653713380059005480533422506815101173728835981994358821477104403275633746584392905916488905707907102e+21'); + BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 6 }); + T('5.34497275690245106081709015835e+2', '1.3246422423389318767735090947438326377122544297550315119e-18', '403503118507287522273'); + BigNumber.config({ DECIMAL_PLACES : 46, ROUNDING_MODE : 3 }); + T('-8.2066415917795e-11', '-2.032154290376e+10', '4.0383949342060358540682117e-21'); + BigNumber.config({ DECIMAL_PLACES : 48, ROUNDING_MODE : 4 }); + T('7.73098532291085467046715330348604232059e+27', '-2.8427828995107482376840795394780097405017813551606561e+52', '-2.7195130955098193552123e-25'); + BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 6 }); + T('4.159994522e+9', '1.33219431148459346996777673915179379208e+17', '0'); + BigNumber.config({ DECIMAL_PLACES : 31, ROUNDING_MODE : 4 }); + T('-7.578382158233609147013992440824152e+33', '-1.194790131876113934368330767351391476226912906694e+17', '63428563360610352.4744837689373958725373895778837'); + BigNumber.config({ DECIMAL_PLACES : 80, ROUNDING_MODE : 4 }); + T('-3.3523912075112814694561102514002305660335936968214849e+30', '-6e+0', '5.5873186791854691157601837523337176100559894947024748333333333333333333333333333333333333333333333333333333333e+29'); + BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 0 }); + T('1.0124221513835964646350754553678196377980104978550149931e+0', '1.06223493251028739351360993865751826931269242483365932432311e+59', '9.531056835e-60'); + BigNumber.config({ DECIMAL_PLACES : 74, ROUNDING_MODE : 6 }); + T('3.1412680718672726534259165731384642759801440307320437e+52', '-8.587098552390722698636089693462242e+1', '-3.658125096273311528740779267854560394066057385783271547104152546813775658278133132135780036639716164431696355031263756842057e+50'); + BigNumber.config({ DECIMAL_PLACES : 63, ROUNDING_MODE : 3 }); + T('-3.3189176972735816006303141742516e+31', '1.0305408464997978941041994403628692087955e+20', '-322055909627.084586851594012420324993263245221123165476447398500637369159544'); + BigNumber.config({ DECIMAL_PLACES : 56, ROUNDING_MODE : 5 }); + T('-4.41996359037973136e-10', '8.3637252017880817592764771835338336554948916221e+46', '-1e-56'); + BigNumber.config({ DECIMAL_PLACES : 77, ROUNDING_MODE : 4 }); + T('-6.01286395e+2', '-6.51924117226437854230337805304850611555114e+38', '9.2232574177210648909268616981448831912996e-37'); + BigNumber.config({ DECIMAL_PLACES : 22, ROUNDING_MODE : 0 }); + T('6.72130200333126348620242332254e-3', '1.470690629963978878986042713002185082336370207421353846468e+33', '1e-22'); + BigNumber.config({ DECIMAL_PLACES : 36, ROUNDING_MODE : 6 }); + T('-1.81395651269631437302845197e+8', '8.793397570432077947919559140501e+10', '-0.002062861934954207532616785189028623'); + BigNumber.config({ DECIMAL_PLACES : 85, ROUNDING_MODE : 0 }); + T('7.51158709509e+0', '-1.176960625056056068607994268251373585573269e+33', '-6.3821906486737731630815122030718382190115091447644714e-33'); + BigNumber.config({ DECIMAL_PLACES : 56, ROUNDING_MODE : 3 }); + T('-6.62098070588533082674697128193106090224175785e+12', '1.59464407661588600230339174188328819300530278981e+36', '-4.15201160119455082725930806188158e-24'); + BigNumber.config({ DECIMAL_PLACES : 39, ROUNDING_MODE : 3 }); + T('3.0010634710512838227e-10', '2.145072033029717544248145014646271e+7', '1.3990502066322485526895e-17'); + BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 6 }); + T('-4.9378581910955998250725892592344946065039e+16', '-2.6639627720482927110444586336746996345597e+40', '0'); + BigNumber.config({ DECIMAL_PLACES : 52, ROUNDING_MODE : 6 }); + T('2.1e-14', '-3.721628900729286792960485901133824370672021e+31', '-5.64269e-46'); + BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 5 }); + T('1.407290844938339400405941683041650860391613062e+1', '7.4433592e+6', '0.00000189'); + BigNumber.config({ DECIMAL_PLACES : 74, ROUNDING_MODE : 6 }); + T('1.7801707015164154744049548117e-11', '8.99547466046138262004826009548369088489571203228e+49', '1.9789624991563e-61'); + BigNumber.config({ DECIMAL_PLACES : 96, ROUNDING_MODE : 4 }); + T('-9.058549727605376903029621709151e-14', '-6.280609879085796e-6', '1.4423041554881509582304308427717680178832125470306881158085308744291282361143256918814803e-8'); + BigNumber.config({ DECIMAL_PLACES : 45, ROUNDING_MODE : 3 }); + T('-2.78687102227925412316e-20', '2.3e+0', '-1.211683053164893097026087e-20'); + BigNumber.config({ DECIMAL_PLACES : 94, ROUNDING_MODE : 2 }); + T('1.191210938183934787663432717589372402287600047e+30', '-6.912820209e+4', '-1.72319097295928933895904353555475552552100237473426238214493681763856213723784408060539507082094285666673556618749897535e+25'); + BigNumber.config({ DECIMAL_PLACES : 43, ROUNDING_MODE : 4 }); + T('-1.93199234441211857e+13', '-1.6817109528340911e+7', '1148825.4513394484247756049518702595762895930362753'); + BigNumber.config({ DECIMAL_PLACES : 67, ROUNDING_MODE : 0 }); + T('-2.0093417044490203540433263556808329e+11', '2.372397078319043397865939666128034e+16', '-0.0000084696686014835884446395689999651834142413394797890563578916443'); + BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 3 }); + T('6.9760668364517881187250228873617916088087687251726e+12', '-7.537e+2', '-9255760695.8362586157954396807241496733564663993267878466233249303436380522754411569591'); + BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 6 }); + T('4.062581289845341763821800622443523733e+36', '8.924702582909586373710978648364914e-9', '4.55206350251380541793211968076115432739938532546232249822039630695343091570546147405720455998001329e+44'); + BigNumber.config({ DECIMAL_PLACES : 63, ROUNDING_MODE : 2 }); + T('8.276498449374e+12', '3.0238213900883324916575967405259702994906680958904315216e+55', '2.73709898226899745127e-43'); + BigNumber.config({ DECIMAL_PLACES : 19, ROUNDING_MODE : 5 }); + T('-4.24478834924531985617064348938904219879237365738e+47', '3.2202748163729775e+7', '-1.31814475201413416323977852842956795110527438813987002340907e+40'); + BigNumber.config({ DECIMAL_PLACES : 85, ROUNDING_MODE : 6 }); + T('6.6438573008483046256073583680081275729412891613e+39', '9.413781613906943755332125240718379584663901643127685051e+47', '7.0575859663382880237826726713507760833378822602218647475865524323926144422415e-9'); + BigNumber.config({ DECIMAL_PLACES : 67, ROUNDING_MODE : 1 }); + T('8.68e+2', '1.75981415269573306e+12', '4.932339012448405793881746522573096806023333016968009976945e-10'); + BigNumber.config({ DECIMAL_PLACES : 48, ROUNDING_MODE : 2 }); + T('-4.7929625941127417273e-2', '8.97459870533419765e+10', '-5.34058708526317396154647313899145291e-13'); + BigNumber.config({ DECIMAL_PLACES : 55, ROUNDING_MODE : 5 }); + T('-1.70795881993106042756586177878724829833868739747166913141092e-14', '1.84531726520870367725e+13', '-9.25563778182009186116769542e-28'); + BigNumber.config({ DECIMAL_PLACES : 83, ROUNDING_MODE : 4 }); + T('-7.05545813882718235954710411910087648623655626112e+12', '3.4139762592085546156e+18', '-0.00000206663948520333724913777739052220687722064980024149927298261781262007032504303'); + BigNumber.config({ DECIMAL_PLACES : 29, ROUNDING_MODE : 0 }); + T('-3.370537781271e+10', '6.400852200283646126637958453293430097314531484e+27', '-5.2657641136e-18'); + BigNumber.config({ DECIMAL_PLACES : 45, ROUNDING_MODE : 0 }); + T('1.596775313e+8', '2.324646725e+0', '68688945.11272460119719911420089002986034361844808914'); + BigNumber.config({ DECIMAL_PLACES : 85, ROUNDING_MODE : 2 }); + T('1e+0', '-2.546420372841898e-11', '-39270813674.9614334724923882608553067717769730988684180625966483470844643988287585030186311570341'); + BigNumber.config({ DECIMAL_PLACES : 64, ROUNDING_MODE : 0 }); + T('-5.79e+2', '7.948616362585015845441596414074816e+34', '-7.2842866429610906023406328059145e-33'); + BigNumber.config({ DECIMAL_PLACES : 49, ROUNDING_MODE : 6 }); + T('-3.85491067016337035196695500968775807776289390957e+47', '3.0606365138716056049809162421420644957973020677149e+34', '-12595127362206.8691288992474211516220852359189436964527445187289'); + BigNumber.config({ DECIMAL_PLACES : 30, ROUNDING_MODE : 1 }); + T('2.92332947883191144399509618771587677e-12', '-3.079037e+6', '-9.49429798612e-19'); + BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 4 }); + T('5.98930745209766438320126482750923e+29', '-1.04398682e+2', '-5.736956958994620624809482582844513305254179358317952711318711858833620140913273215460708594003131188955e+27'); + BigNumber.config({ DECIMAL_PLACES : 83, ROUNDING_MODE : 0 }); + T('-1.4111549132238576653650229718141168029e-5', '-2.5895025984e+5', '5.449521132343257915786391712215077431682873726673453798686097506871688799e-11'); + BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 0 }); + T('1.764215446e+0', '-8.753889492675622e+11', '-2.0153503736551835545893e-12'); + BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 5 }); + T('-1.82322e-14', '1.6565026160004191568565e+6', '-1.1006442020611566951103076886048960121343367627480066626992964e-20'); + BigNumber.config({ DECIMAL_PLACES : 58, ROUNDING_MODE : 6 }); + T('7.71929377944460022023385141e+2', '-1.142016304e+6', '-0.0006759355144411843896261792257214569504079514437475141336'); + BigNumber.config({ DECIMAL_PLACES : 38, ROUNDING_MODE : 1 }); + T('-1.5307e+3', '-3.80660699168276022599648653015e-19', '4.02116636507131017976277394020437240867131765178294986366952e+21'); + BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 4 }); + T('-3.4363266002981148152615590279838721144212321937759199013e+8', '-3.4106154434770170030428038029173e+6', '100.7538568111005233330613714095642457'); + BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 4 }); + T('-4.87442476478703502691e-4', '1.84748029510706437170263884879782289e+30', '-2.63841772910739190885606381961440742772863176497262592539937844e-34'); + BigNumber.config({ DECIMAL_PLACES : 87, ROUNDING_MODE : 2 }); + T('-2.43911315019915e+14', '-5.2884732364203727902615629563615777997159613529e+46', '4.612131027536637345459848386605582747706417273054840433e-33'); + BigNumber.config({ DECIMAL_PLACES : 27, ROUNDING_MODE : 0 }); + T('1.0404772238708764206189704291172607249144721409e-6', '-4.69125789382596841618827942133258e+19', '-2.3e-26'); + BigNumber.config({ DECIMAL_PLACES : 22, ROUNDING_MODE : 2 }); + T('4.158e+0', '3.025752529083598011226611844663e+6', '0.0000013742035939929704'); + BigNumber.config({ DECIMAL_PLACES : 5, ROUNDING_MODE : 0 }); + T('-2.4141e+0', '-6.6044858009244630875999014356433050274e+7', '0.00001'); + BigNumber.config({ DECIMAL_PLACES : 42, ROUNDING_MODE : 5 }); + T('-2.7825016972932337625439128073513214834322917713882614537e+18', '-4.0407771493161067068838334649444697846337161e+5', '6886055811724.649306904048331675267251307335270480245666'); + BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 2 }); + T('7.697296520466808323e-3', '-1.180237649672953028709481636834e+2', '-0.00006521819162945487739308931071078946581100600842546187298922108535740057'); + BigNumber.config({ DECIMAL_PLACES : 1, ROUNDING_MODE : 3 }); + T('-4.025e+1', '1.27878825880292867350151e+1', '-3.2'); + BigNumber.config({ DECIMAL_PLACES : 62, ROUNDING_MODE : 3 }); + T('-2.72390433335668e+7', '6.20381758713439149584180989066102367409648990642385301e-12', '-4390690562864985883.00256809620112183450059335880926477452983733342379878430105423'); + BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 2 }); + T('1.28236196691710055e+17', '2.156e+1', '5947875542287108.30241187384044526901669758812615955473098330242'); + BigNumber.config({ DECIMAL_PLACES : 85, ROUNDING_MODE : 6 }); + T('1.20960129969207e-14', '-6.69326167582e-18', '-1807.1926039614762356876760666519295505274590610664394157166311115592776355216072347675369'); + BigNumber.config({ DECIMAL_PLACES : 59, ROUNDING_MODE : 0 }); + T('2.3481416018542294138332892663766000932203167287086213848e+47', '-7.4115948809072572618198734e+20', '-3.1682001506898231254540363443293779848080168695629914143106522579361535670335635882686e+26'); + BigNumber.config({ DECIMAL_PLACES : 99, ROUNDING_MODE : 6 }); + T('-6.42303962230503497057046294766382867786116866644640946e+20', '-2.24482573800323316657580610891710523516078143291621165e+36', '2.86126424584667873522316251738359678416067931369402655724655146601960171802115737224e-16'); + BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 0 }); + T('-9.73622563685977827413734127145194929370097821661e+20', '-1.036043917869311488829e+7', '93975028171420.855983780010911369598028765040990272035590282225686082844444262623388'); + BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 1 }); + T('-4.1825694369758739591184e+21', '4.8777e+4', '-85748804497526989'); + BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 1 }); + T('-1.4258350426877118575541e+14', '-4.68067882151273667e+16', '0.0030462142288731100346784472756447'); + BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 3 }); + T('3.2866136093547541671426738634566486512517819e+22', '-6.24765751093847724557691e+23', '-0.052605534211830750604804929258940471757775632727823306901'); + BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 0 }); + T('2.74090288232e-6', '2.68378316668857183407237227311885487724491399373572e+50', '1.1e-56'); + BigNumber.config({ DECIMAL_PLACES : 50, ROUNDING_MODE : 0 }); + T('-1.128246200706225140379211e+9', '-1e+0', '1128246200.706225140379211'); + BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 5 }); + T('9.097120826606508094444541221181351781e+13', '-1.296180337e+4', '-7018406750.1453758702131439764167258625834253802601851998314953608187624'); + BigNumber.config({ DECIMAL_PLACES : 96, ROUNDING_MODE : 1 }); + T('6.7704285424508575314186203667844e+31', '-3.181597e-8', '-2.127996896668829374499228018754229401146656851889161323700016061116477039675358004172118593272498056793490816090158495874870387418645416e+39'); + BigNumber.config({ DECIMAL_PLACES : 74, ROUNDING_MODE : 2 }); + T('5.41400511952313147480823297140496844396381940069272753e+27', '2e+0', '2.707002559761565737404116485702484221981909700346363765e+27'); + BigNumber.config({ DECIMAL_PLACES : 91, ROUNDING_MODE : 0 }); + T('-1.24408749429972863809619380908e-20', '-3.533067086814805141399e+7', '3.521267679695606937961163423669965607838460027870446328185179414e-28'); + BigNumber.config({ DECIMAL_PLACES : 38, ROUNDING_MODE : 0 }); + T('-4.0384301052831983636043746466627e+2', '1.10626775e+0', '-365.04997142718825199454423638967148775692'); + BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 0 }); + T('-4.0092327030210790439107260789766500879979675803077e+47', '2.3573105e+4', '-1.70076564076776438399214956153491450871574515970963519655132406189171939801735918963581590121454089310678419325752801762857e+43'); + BigNumber.config({ DECIMAL_PLACES : 41, ROUNDING_MODE : 2 }); + T('2.7789994742319526886402627980116043345055e+40', '1.0542857069062600057110147073543994512700666111e+19', '2.63590737883259820317219262637695297267927111516897869253229851e+21'); + BigNumber.config({ DECIMAL_PLACES : 2, ROUNDING_MODE : 0 }); + T('-1.756137e+3', '1.27e+2', '-13.83'); + BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 4 }); + T('7.84973e+0', '-9e+0', '-0.87219222222222222222222222222222222222222222'); + BigNumber.config({ DECIMAL_PLACES : 56, ROUNDING_MODE : 5 }); + T('-3.58952950025445562649220080873664588099e-1', '-1.648948247439151361092372409133906366e+26', '2.17686001111864160870895568515e-27'); + BigNumber.config({ DECIMAL_PLACES : 60, ROUNDING_MODE : 1 }); + T('-9.19860057319781399583997445814025009347440189704153213793278e+39', '-7.460513190493e-5', '1.23297155816568685909183290869672418198444561362985814256207486655712180180293186395548140449972821073206e+44'); + BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 3 }); + T('-5.70890497956252658913450445182657509220065195136326927e+45', '-1.0574e+0', '5.39900225039013295738084400588857111046023449154839159258558728957821070550406657839984868545488935123888783809e+45'); + BigNumber.config({ DECIMAL_PLACES : 25, ROUNDING_MODE : 1 }); + T('-6.93467884737287245293401929546681485489317419843e+5', '4.899701464986656009905455721773075526e+10', '-0.000014153268106084007222'); + BigNumber.config({ DECIMAL_PLACES : 52, ROUNDING_MODE : 1 }); + T('-1.537838728915552987945225668860762967364459916916e-5', '-7.3223761094038243037496873e+7', '2.100190847804950109343797055232156071475e-13'); + BigNumber.config({ DECIMAL_PLACES : 67, ROUNDING_MODE : 5 }); + T('-2.8860519062e+4', '3.7662667274076311047478942078388914335566e+3', '-7.6628983422703732164983015590399822443246960235590574130643013211793'); + BigNumber.config({ DECIMAL_PLACES : 70, ROUNDING_MODE : 1 }); + T('4.548244993737432954346493902297390861607648200451e+47', '1.6396854e+2', '2.7738522241750966095974837016280018481640735475543052344065514030923249057410647188783897203695294231442202266361583e+45'); + BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 6 }); + T('2.53212862457587e+5', '-4.5793399455653357405665227073500963648123523939e-5', '-5529462006.91652244'); + BigNumber.config({ DECIMAL_PLACES : 5, ROUNDING_MODE : 5 }); + T('3.8317786586151327634e+16', '-5.65e+1', '-678190913029227.03777'); + BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 0 }); + T('-2.6874555668071096894724565389362326912e+20', '-4.0276557408368436098922400259861e+29', '6.67250564530305491886027140988482261605081043443615800523170422947527713e-10'); + BigNumber.config({ DECIMAL_PLACES : 30, ROUNDING_MODE : 2 }); + T('-3.0781281377298395638676590460091776960040664514154731980958e+58', '-9.396800830321372663204393086751253442257502004387405964e+33', '3.275719250957633526759174282124841505911819079656619469e+24'); + BigNumber.config({ DECIMAL_PLACES : 73, ROUNDING_MODE : 6 }); + T('-1.28453e+2', '2.67101773394488524714201657e+28', '-4.8091406645318269531133520513478006955072385427e-27'); + BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 1 }); + T('-5.8557674608e+4', '-3.31453697677e+4', '1.766692452623176532479918265962486259259907432805139802048792214898624801018'); + BigNumber.config({ DECIMAL_PLACES : 73, ROUNDING_MODE : 1 }); + T('-1.406565070446e+6', '3.1361296073e-3', '-448503488.8774764063304087413313583049249891885997246169998874714555232214812425108'); + BigNumber.config({ DECIMAL_PLACES : 86, ROUNDING_MODE : 6 }); + T('-1.1729470639144622474184298417950072059118692e+13', '2.82334215416350426403808560075134455113609729006025626834e+30', '-4.15446304368299742807349620769381810680774503645157800709486074262114e-18'); + BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 2 }); + T('1.529288752124570689332823e+7', '1.336497694044271406144044359810104514792140626321849687801749e-7', '114425094703823.1920006429911594750492036183752795867802277981041097756514217525829215034101818'); + BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 4 }); + T('-1.13217140733355189e+4', '-2.43020464426027711727243e-9', '4658749253926.186'); + BigNumber.config({ DECIMAL_PLACES : 49, ROUNDING_MODE : 6 }); + T('6.19603014832887041236955227961616499300922171010445003056e+41', '9.066774801109484423981723413988153664182940131418e-8', '6.8337752775889765009073761461406737738481654041331871541030998711214761946010243290737268504709392e+48'); + BigNumber.config({ DECIMAL_PLACES : 35, ROUNDING_MODE : 0 }); + T('1.11192912299130286126945894945995296018653243192015021206293e+4', '1.018513899703463314540954769524596069618244e+20', '1.0917171806050335253e-16'); + BigNumber.config({ DECIMAL_PLACES : 23, ROUNDING_MODE : 6 }); + T('6.067516647622294901506038350906683676478956702605625402e+54', '-2.3630303294542695231841253246479696e+31', '-2.5676846259622738980016481226962788835668185681e+23'); + BigNumber.config({ DECIMAL_PLACES : 94, ROUNDING_MODE : 2 }); + T('3.0951457131582254245139997021287234213367529291069533054e+43', '-2.6282888151172e+2', '-1.17762770033330886355993410995035533933532768290415332493192276143289018728334285821263224339273364867033139064507153907147666936322709e+41'); + BigNumber.config({ DECIMAL_PLACES : 74, ROUNDING_MODE : 3 }); + T('-2.87902985440875315371655741739416597195e+38', '1.119057478112371e-14', '-2.572727416347825166147664093129796153456303230601316574798939375992685501164512961280298521027327941142303087246693024451601814e+52'); + BigNumber.config({ DECIMAL_PLACES : 24, ROUNDING_MODE : 2 }); + T('-1.63353170025199723577955825494176196178798564188624e+27', '1.089884459788696100476e+0', '-1.498811810353458949180604050144250099803509192783102e+27'); + BigNumber.config({ DECIMAL_PLACES : 2, ROUNDING_MODE : 5 }); + T('-2.69323566440032401698637010871641982327627458844676743e+8', '1.9264548643899854257927e-10', '-1398026870073148992.7'); + BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 4 }); + T('-1.8634612922816308530437581317846e+2', '-2.529904975732811096125039546370980065541412928541e+29', '7.365736302968697564e-28'); + BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 0 }); + T('9.23244551e-10', '-1.7118528831334919996734668417450305629137334387299697515413e-13', '-5393.24704883535525'); + BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 0 }); + T('7.81547272819026433863496830779339828672637516e+44', '-1.10357391523129640265e+19', '-7.08196580249201624598769584432510507623916059920882432451058839824506424805364402465698446023270819531035e+25'); + BigNumber.config({ DECIMAL_PLACES : 66, ROUNDING_MODE : 3 }); + T('-2.548258498100572416462209595860967100773788845311e+23', '1.975782533439574140315369506223306039208754586993e+46', '-1.2897464447488529507042303347637613909999182e-23'); + BigNumber.config({ DECIMAL_PLACES : 62, ROUNDING_MODE : 0 }); + T('3.4405972476430995117779134e-6', '4.843624609391849565374784802688470836704544996e+17', '7.10335239640937037128307854209555545433e-24'); + BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 6 }); + T('1.565867432002e-7', '-6.605908959738623454598681683189e-10', '-237.04'); + BigNumber.config({ DECIMAL_PLACES : 92, ROUNDING_MODE : 0 }); + T('-3.693337380646948917069e+16', '6.72204963852034976269555950023592455796159e-18', '-5.49436195692824772774147080568112823974070892893025429431859626143445693763907190450600095309189863877999847308245949932346707e+33'); + BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 4 }); + T('-7.539494148372597699573527507634012955342591509409e-10', '4.36e+1', '0'); + BigNumber.config({ DECIMAL_PLACES : 86, ROUNDING_MODE : 5 }); + T('-1.01901897752972523396449024437574896639081e+41', '-4.037297773835272085458e+22', '2524012432607114315.85039996731242324901152075645191282270334461849152436327884479156218624456134496121831'); + BigNumber.config({ DECIMAL_PLACES : 22, ROUNDING_MODE : 0 }); + T('-7.08272422015363342934299129424984577768542562037114851136e+49', '5.03377532124726538162931234092425704374083969e+9', '-1.40704019709776814213115508262193235718211858919544886060847714e+40'); + BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 4 }); + T('4.6851279634162228491261171400013935557449538150627903368e+47', '-4.1572869204291596090787374e+22', '-1.126967672207857581183503761953311694566023237785398197911098636750422864781137154460485148074e+25'); + BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 5 }); + T('-1.83e-13', '-3.12967214633373665269562581559759220416634828859e-3', '5.8472578e-11'); + BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 2 }); + T('-1.39518131260891e+5', '-2.33032982767e-2', '5987055.12002090211824165'); + BigNumber.config({ DECIMAL_PLACES : 21, ROUNDING_MODE : 3 }); + T('-5.7881445525713712976994123768087097671e+0', '-3.7994872152049425348e+3', '0.001523401507816143955'); + BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 0 }); + T('-2.338200117677144093098434e-19', '-1.524274417177e+5', '1e-17'); + BigNumber.config({ DECIMAL_PLACES : 42, ROUNDING_MODE : 5 }); + T('2.95552542450948844597046245734371586022e+38', '2.2734962637302145896725195861540685987883961753505087533e-4', '1.299991326865099761391527454420983211645095560080468949680285395599101850019362118036e+42'); + BigNumber.config({ DECIMAL_PLACES : 78, ROUNDING_MODE : 2 }); + T('-2.726526947959238476e+17', '1.186128475127148467e-2', '-22986775928020488201.735223143140358077523416596681763687638943547207600322109298900606105454422336'); + BigNumber.config({ DECIMAL_PLACES : 91, ROUNDING_MODE : 6 }); + T('-7.7289068293980800770010214908792416923879756596156767761e+44', '-5.3221587789089602139713071151e-1', '1.4522127487114358440135238511492841985518141455301077536768599696103822828180495742604365668933303347042612137627105904989771575330500422e+45'); + BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 0 }); + T('-4.5973242825519885871166968323e+2', '2.633815246687344797353e-3', '-174549.991246889012180206975444515779731913760166971465640593667'); + BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 6 }); + T('-1.940266013879066065108173037186648638659496537161086e+1', '7.73335937137416658539411297955478785e+35', '0'); + BigNumber.config({ DECIMAL_PLACES : 60, ROUNDING_MODE : 4 }); + T('-1.603444957189512597145603919446074601287792617192472424964e+10', '-1.63249274746e+8', '98.220648127491963415084066387995284361469466861264583456197304'); + BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 5 }); + T('5.035470550034386772e-3', '-1.095524802737e-13', '-45964003165.0040154795071819757880815954764517180998108372907831373010693625621009717603194745495543306348426'); + BigNumber.config({ DECIMAL_PLACES : 66, ROUNDING_MODE : 3 }); + T('7.21e+1', '7.136396941683978515968559158e+6', '0.000010103137562158437532406966667285004325584390767567672769115517'); + BigNumber.config({ DECIMAL_PLACES : 33, ROUNDING_MODE : 3 }); + T('1.08e+0', '6.999130880547144469406896e-13', '1543048727666.559854733262845362400084906715556'); + BigNumber.config({ DECIMAL_PLACES : 36, ROUNDING_MODE : 2 }); + T('7.611e-19', '-5.809404885238066099596356502627157805047748874432764486778e+48', '0'); + BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 1 }); + T('3.46668182209730480619166742195321191262074943e+5', '-7.9490575391189e+3', '-43.611230702974171198609449798801680013980513123863766887946865334298483772964410325'); + BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 6 }); + T('4.09949500806835495555781838456207e-2', '-4.966155498071208032908553468734143107604008505e+1', '-0.0008254866384390394043683003676779100411841520228965219126221'); + BigNumber.config({ DECIMAL_PLACES : 31, ROUNDING_MODE : 2 }); + T('4.339625310516935597140574204980873082369528334381038e+48', '-1.412937e+3', '-3.0713508886220232021247757012385358174989602044401399354677526315752223913734e+45'); + BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 6 }); + T('-1.4204220066094262415419286170580047650222795412403958e-9', '5.616821297520519757303558048192906874640777631705e+0', '-2.5288716364119594964180469499332669634501413872459263661e-10'); + BigNumber.config({ DECIMAL_PLACES : 58, ROUNDING_MODE : 1 }); + T('4.874426899280757322e+3', '-9.055052224e+8', '-0.0000053831019178015480896689746137459714776792434764427041'); + BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 5 }); + T('9.60246e+5', '3.5473955460328015248177871307351183639e+37', '2.7069042274518347196e-32'); + BigNumber.config({ DECIMAL_PLACES : 73, ROUNDING_MODE : 0 }); + T('-3.6017722934896175050441919455093994415e+6', '3.43589538626650294113503280972969e+17', '-1.04827763612539989943998054919962281970987348605219110451629189e-11'); + BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 1 }); + T('8.72363436153679675706e-18', '-2.41232835e-3', '-3e-15'); + BigNumber.config({ DECIMAL_PLACES : 99, ROUNDING_MODE : 6 }); + T('-4.490204886993847143381112332870740868073548287e+15', '-5.24042259641403020428085578674724035900603329e+43', '8.568402269821617663232503656529852386657295058861077074053468590030266e-29'); + BigNumber.config({ DECIMAL_PLACES : 21, ROUNDING_MODE : 4 }); + T('-4.3657546292078216e+12', '2.0557935164324119256940389460467713160316139449375913e+52', '0'); + BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 6 }); + T('-4e+0', '-2.23482e+0', '1.7899'); + BigNumber.config({ DECIMAL_PLACES : 94, ROUNDING_MODE : 1 }); + T('-6.5425e+0', '1.0715194789859364160630620378345204493633338900016613e+19', '-6.105815272897964410774690445146686997356997829616089871968499214910107701457e-19'); + BigNumber.config({ DECIMAL_PLACES : 80, ROUNDING_MODE : 6 }); + T('2.31306634437e-2', '8.404739740233606558e-16', '27520975257536.16252932108204828204804660200470914792206093893429881408669416643920082434098776'); + BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 5 }); + T('-4.011045223673719076167483866452819493071929912685313470259e-17', '-5.782923914613783263240653684307126739518299198123419268e-8', '6.936015902850763373701552791611380210273009052491564096623674866356e-10'); + BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 6 }); + T('-7.948139697679759040542333131187556894208224e+22', '4.64297494246999639516452150375e+29', '-1.711863578021263705941168007703616440090934540959178136467147897925528476321351585924359797e-7'); + BigNumber.config({ DECIMAL_PLACES : 66, ROUNDING_MODE : 4 }); + T('-1.83e+1', '-1.2681038319e-17', '1443099495455439921.378255082930642471470005184202456158511352574992562010883708299596'); + BigNumber.config({ DECIMAL_PLACES : 49, ROUNDING_MODE : 0 }); + T('7e+0', '-4.5616110996888646872531881294809250602156461009214987076e+54', '-1e-49'); + BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 4 }); + T('3.464049904e+8', '4.136344776669033265672e-1', '837466432.5708295593313128870267228078342600030744438418688462047945386'); + BigNumber.config({ DECIMAL_PLACES : 90, ROUNDING_MODE : 1 }); + T('2.08358388e+8', '2.70688223453756540681554036221375389372736e+41', '7.69735695707483341366731853275675008170718355252871200671e-34'); + BigNumber.config({ DECIMAL_PLACES : 43, ROUNDING_MODE : 3 }); + T('-1.9063092e+3', '1.31581803e+8', '-0.0000144876354977443195545815708270846539472'); + BigNumber.config({ DECIMAL_PLACES : 55, ROUNDING_MODE : 2 }); + T('-6.0416173441011039711036376681431080691645e+11', '2.24072340581609e+5', '-2696279.8390998629111086696329734788789744326438442121167048625'); + BigNumber.config({ DECIMAL_PLACES : 90, ROUNDING_MODE : 4 }); + T('-3.72080938157140125160034247042328863e-1', '6.73082491998278928799684730767e+26', '-5.52801391479503133048963375124638181411438725729279908977744531e-28'); + BigNumber.config({ DECIMAL_PLACES : 30, ROUNDING_MODE : 4 }); + T('1.6413242e+0', '3.581047086923e+7', '4.5833639160838319972469e-8'); + BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 0 }); + T('-2.38e+0', '-6.273600448319043e+8', '3.7936748117864286736009909244204898164e-9'); + BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 4 }); + T('1.11202811344e+7', '-2.229368739101654834892963609240144458095010569013e-15', '-4.98808516480814304005515484419405311890787307014025575649177084088281486382e+21'); + BigNumber.config({ DECIMAL_PLACES : 46, ROUNDING_MODE : 3 }); + T('1.51018909178486990427701398238591605267044e+39', '-6.51645e+3', '-2.317502768815643339973473259805440159397279193425868379255576272356881430840411574e+35'); + BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 1 }); + T('-5.6840752260630399434657445e+16', '7.63394679392410265702525098627698916797478123074495616170749e+43', '0'); + BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 6 }); + T('-2.2353942566e+0', '-3.9066748900974504055585337531e+15', '0'); + BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 2 }); + T('1e+0', '8.1555003339332679175063879564749099905886e+12', '1.226166340572897661951098266833422518279226833319326786810209173315e-13'); + BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 2 }); + T('-8.444889584181819e+12', '-1.9969251561743747528442047776629998335144496163934e-16', '4.2289464670574751901294991658686036615789e+28'); + BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 4 }); + T('-6.869830705344451e+5', '-6.95291281610353001069505051e-15', '98805074751309208643.2213'); + BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 5 }); + T('-1.522492872520561130184184913260458587635409351322187802e+13', '3.44224416019070642319342352136816221133327910209702e+14', '-0.044229659538044283543458804822000661629167942415797913592598362233024'); + BigNumber.config({ DECIMAL_PLACES : 39, ROUNDING_MODE : 2 }); + T('6.67994902754442e+15', '5.1676e+1', '129265984742325.644399721340661041876306215651366204815'); + BigNumber.config({ DECIMAL_PLACES : 22, ROUNDING_MODE : 3 }); + T('2.44831039315420342e+5', '-6e+0', '-40805.1732192367236666666667'); + BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 0 }); + T('-7.08069274392360166378458597857785548798416491766350485091828e+50', '-5.15397141784150480716662606182040045977217183446508e-18', '1.3738323653507982044947364851807746525773453172786528355924399503329e+68'); + BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 4 }); + T('4.96642362307840152928108728394520483547167e+0', '-7.0080871600128557237808489795939880935e+5', '-0.00000708670356073210005414906141661983562764188'); + BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 1 }); + T('-2.9688465513396129050236377614548337749e+20', '2.175415219330661411e+2', '-1364726386465695932.2513406767701964'); + BigNumber.config({ DECIMAL_PLACES : 71, ROUNDING_MODE : 0 }); + T('0e+0', '-7e+0', '0'); + BigNumber.config({ DECIMAL_PLACES : 67, ROUNDING_MODE : 6 }); + T('1.00789451000879664571252484e+26', '4.334414709156770715962933851444e-8', '2.3253301256096818926892488231052793581699593108456626638550997365594371436816941368776474626807887188e+33'); + BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 0 }); + T('1.8665078844953659008903922803e+25', '6.087837853350479213330260562750390527567314e+21', '3065.96188902784548225990405405929866569469996906242295936128427262834'); + BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 6 }); + T('2.5e+0', '7.8e-15', '320512820512820.512820512821'); + BigNumber.config({ DECIMAL_PLACES : 28, ROUNDING_MODE : 1 }); + T('6.99866e-15', '1.328168165847422176632976077922634e+6', '5.269408e-21'); + BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 6 }); + T('2.27906163999347954170012906e+22', '1.238327530024930539125181147411e+20', '184.043525217241717838452802725577638916286107111995624029'); + BigNumber.config({ DECIMAL_PLACES : 36, ROUNDING_MODE : 2 }); + T('-1.52759589e+6', '8.1057910517214423896e+1', '-18845.734861072955137054334516670719125505'); + BigNumber.config({ DECIMAL_PLACES : 55, ROUNDING_MODE : 0 }); + T('3.851006974e+9', '-6.0856405208591330282533119293254916480648829e+40', '-6.32802243379360615332567e-32'); + BigNumber.config({ DECIMAL_PLACES : 62, ROUNDING_MODE : 2 }); + T('-1.070241896937e+13', '-1.77660742702e+4', '602407645.41448235603470228703445916319436326252401326629685407403965723'); + BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 6 }); + T('-8.785683999714580728410574044073332140938095793765e+24', '4.44050066247888998363011940846043158755e+38', '-1.9785345544369339738260003294455880847626022689030601092776804e-14'); + BigNumber.config({ DECIMAL_PLACES : 60, ROUNDING_MODE : 3 }); + T('-2.505920163657374697854096827790561559564e-19', '6.33319943776954360827348124257431e+8', '-3.95679970018427465796001472014469e-28'); + BigNumber.config({ DECIMAL_PLACES : 73, ROUNDING_MODE : 5 }); + T('-4.51166764628611e+14', '-9.05e-18', '4.98526811744321546961325966850828729281767955801104972375690607734806629834254143646408839779005524861878e+31'); + BigNumber.config({ DECIMAL_PLACES : 25, ROUNDING_MODE : 1 }); + T('6.143542592091e+12', '-2.49618654906066461431e-14', '-2.461171259176468703425900272279242213125817058683962e+26'); + BigNumber.config({ DECIMAL_PLACES : 48, ROUNDING_MODE : 1 }); + T('8.08731858292774282163e+20', '2.32485890086771530778e-3', '3.47862770506600822608056497832642262149982485632952822623942000698040822e+23'); + BigNumber.config({ DECIMAL_PLACES : 27, ROUNDING_MODE : 4 }); + T('7.748326131458517626200690594249956944e+28', '-1.3331115275861422364603342534597474140796093e+33', '-0.00005812211485027340092594'); + BigNumber.config({ DECIMAL_PLACES : 58, ROUNDING_MODE : 2 }); + T('-3.1e+0', '-6.91022762484427795921493247895200592490944651404077e-17', '44861040305743307.9490129700806538280507603070878342146974395500397961125318'); + BigNumber.config({ DECIMAL_PLACES : 36, ROUNDING_MODE : 5 }); + T('-6.5977516578883134750576118101930823839e+15', '2.23065980628145405938229494632846932e-11', '-2.95775789715190685972048540529022005841208857355085392774689324e+26'); + BigNumber.config({ DECIMAL_PLACES : 42, ROUNDING_MODE : 1 }); + T('-2.54748538963310009220098284521588508213946408912715276613404e-5', '-7.088308928873998057714864790981099860369379107164992e+11', '3.5939254555568260151148355e-17'); + BigNumber.config({ DECIMAL_PLACES : 96, ROUNDING_MODE : 3 }); + T('-3.2634e-2', '-2e+0', '0.016317'); + BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 1 }); + T('5.5560819440383392953536632e-17', '-6.09534241998421810114152429429413431277110559904942e-8', '-9.115290924136014257418359791499467514e-10'); + BigNumber.config({ DECIMAL_PLACES : 24, ROUNDING_MODE : 5 }); + T('6.2700578715825120973120492643501689344228564331142218662e+0', '1.34626104500587786159205556903772257048946723e+45', '0'); + BigNumber.config({ DECIMAL_PLACES : 40, ROUNDING_MODE : 2 }); + T('-2.2446338148664091899014232317e+0', '-1.086844065482979296036410733287606764390058e+36', '2.0653e-36'); + BigNumber.config({ DECIMAL_PLACES : 96, ROUNDING_MODE : 6 }); + T('-3.03611452256219537408952921770250333871e+38', '8.3691165959566240608615530104910074177113e-7', '-3.62775985703083054904338228852979496389831745388032702826762098576907177782811080330326029182965267362214012417418754127780545415816137460927e+44'); + BigNumber.config({ DECIMAL_PLACES : 33, ROUNDING_MODE : 5 }); + T('-8.232229995135996119830651161946837453563e+14', '4.936913755118814915498713010628e+3', '-166748507336.196599645556982324303964188989403'); + BigNumber.config({ DECIMAL_PLACES : 19, ROUNDING_MODE : 4 }); + T('-2.350347579553968338784e-15', '2.379610873089751727163361e+19', '0'); + BigNumber.config({ DECIMAL_PLACES : 70, ROUNDING_MODE : 1 }); + T('-7.33121465030218595e+17', '-1.2614257226923759879966717812750999282483234173341e+37', '5.81184806875073529007375103246658747995851957461328e-20'); + BigNumber.config({ DECIMAL_PLACES : 82, ROUNDING_MODE : 3 }); + T('-2.55861611168242430354910811927393050708976064301e+47', '6.3430885e+0', '-4.03370709975499207294539264157189436516574006969948472262368718330195140742557824946002251111583891664131755374373225282920142136e+46'); + BigNumber.config({ DECIMAL_PLACES : 23, ROUNDING_MODE : 4 }); + T('1.6750730105231481847179e+5', '7.42e+1', '2257.51079585329944032061995'); + BigNumber.config({ DECIMAL_PLACES : 77, ROUNDING_MODE : 4 }); + T('-6.6103914657356e-7', '1.93725443313067447968340532014750924192599805508474587028e+55', '-3.412247432596122e-62'); + BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 5 }); + T('1.029292562877562e+15', '-5.921462365505e-12', '-1.73824048747421339961949116148645098472214e+26'); + BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 5 }); + T('-1.4706339e+3', '1.284038267879266752576e+18', '-1e-15'); + BigNumber.config({ DECIMAL_PLACES : 71, ROUNDING_MODE : 3 }); + T('-4.968407e+2', '-1.00023067811125655633099176142841937536224253183323960864e+30', '4.9672611615771293397244175907493179370001888e-28'); + BigNumber.config({ DECIMAL_PLACES : 29, ROUNDING_MODE : 4 }); + T('7.730239176647193103018171681299527991870070664332424721485e+49', '1.41e+1', '5.48243913237389581774338417113441701551068841442015937693971631205673758865248e+48'); + BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 2 }); + T('-3.246923547479570395336092437124077332659159e-17', '-3.0156797e+0', '0.0001'); + BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 6 }); + T('1.896295477158868528670495761106092673e-7', '-2.229e+0', '0'); + BigNumber.config({ DECIMAL_PLACES : 67, ROUNDING_MODE : 2 }); + T('2.84791386581546032423578146067217e-13', '6.8188949491413359141e+2', '4.176503505416345621675002739098617944517258029804705e-16'); + BigNumber.config({ DECIMAL_PLACES : 32, ROUNDING_MODE : 0 }); + T('6.50946783044616961391902967493999099215348394680987872792e-4', '4.33655097574945711613280340134495255123292327e+6', '1.5010702899257818140415e-10'); + BigNumber.config({ DECIMAL_PLACES : 67, ROUNDING_MODE : 0 }); + T('-2.671645968325862463083705716295497763e+19', '1.1756892714198320384633484502423269327357e-18', '-2.27240822321991971848862017057495504833709199948381870081361268027872213192518157425459792727461313622153e+37'); + BigNumber.config({ DECIMAL_PLACES : 26, ROUNDING_MODE : 0 }); + T('3.133013254030258702149e+21', '-3.367e-4', '-9.30505866952853787392040392040392040392040392040393e+24'); + BigNumber.config({ DECIMAL_PLACES : 41, ROUNDING_MODE : 1 }); + T('1.40423998236290959553122866629624906100643905e-4', '-6.39512709134219060964440752021835794164120930752998858e+12', '-2.19579683453670317337043e-17'); + BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 6 }); + T('-2.080346103510817370572786779979586572358484819450297903e-2', '-1.49033914865e+1', '0.0013958877114616936561359695984388154402646442347083'); + BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 0 }); + T('9.5970109965512572316687076235271e+9', '-1.39222827214077707905622091670931345e+10', '-0.6893274034'); + BigNumber.config({ DECIMAL_PLACES : 58, ROUNDING_MODE : 1 }); + T('-1.66648516480997216702076e-8', '3.488144489288722387704298811113e+19', '-4.777569191664391080723881161039e-28'); + BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 4 }); + T('2.803989525133946371375559106331632588894744884422226894601e+4', '1.8917961768014114679e-1', '148218.37360274415354290794753895221692091347152171968764937062563794314'); + BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 4 }); + T('0e+0', '7.756552236736901059071744043817454899950588e+29', '0'); + BigNumber.config({ DECIMAL_PLACES : 35, ROUNDING_MODE : 0 }); + T('2.9575e+0', '4.96235345010984617928e-2', '59.59873736794248430857325460037754374'); + BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 3 }); + T('0e+0', '-1.79838796060736755257725959945252962544239654548361541618092e-11', '0'); + BigNumber.config({ DECIMAL_PLACES : 9, ROUNDING_MODE : 6 }); + T('3.564885e+4', '-3.247677120820840326918626850372720140332e+8', '-0.000109767'); + BigNumber.config({ DECIMAL_PLACES : 82, ROUNDING_MODE : 1 }); + T('-1.132077519097093500210740713827912842e+4', '6.28162223180959658030375297087886468363682e-15', '-1802205668090561025.050162472322029945914398605460083954458684985163402447436616991483658420631618933'); + BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 2 }); + T('1.86672638830344305649138912658904730830234715533385445313e+6', '-2.2301061998458015973239766164874568533183565966e+38', '-8.3705717173133545627597055633e-33'); + BigNumber.config({ DECIMAL_PLACES : 19, ROUNDING_MODE : 0 }); + T('-1.4610797614967516745070776129444e+4', '6.88614970791009957671e+2', '-21.2176589744834289876'); + BigNumber.config({ DECIMAL_PLACES : 86, ROUNDING_MODE : 6 }); + T('3.83422820734976235836937631816350903674898539424423e-13', '-3.61169821904072878674378850359884926668683250679368367e+50', '-1.0616136716893632916042e-63'); + BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 5 }); + T('9.362499731532147931201996383794e+30', '-1.10355302665545774979309901474901835177045078291380464642e+5', '-8.48395999592979286790989676885315364960432217807452660032752720761128993039238289233319e+25'); + BigNumber.config({ DECIMAL_PLACES : 94, ROUNDING_MODE : 2 }); + T('7.721931310855628406085667291446e-18', '-3.146449075416884215265571808405303967995097946805460171e-7', '-2.45417330005015965363066865532637715776088110759091778302143638062485299898895234445e-11'); + BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 6 }); + T('-6.36692047256509831055652306921356672356525959250806e+40', '7.66135802819423952943964457446550934e-15', '-8.310433279758580218105604231913158316033349040694694390399884383918790673485830172788596098643173958696997122539994198365152e+54'); + BigNumber.config({ DECIMAL_PLACES : 90, ROUNDING_MODE : 3 }); + T('-3.42087895743757174587773e+3', '1.0657952035801e-8', '-320969633372.953631381771755296063388974320264468291864306640052981846743464120005160563651933003704384'); + BigNumber.config({ DECIMAL_PLACES : 31, ROUNDING_MODE : 4 }); + T('-2.585185748871749500787228506e+15', '1.5850738934898982284305427797476803620165e+18', '-0.0016309559822349222519445939123'); + BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 6 }); + T('2.51255461580755282902e+13', '1.9672345059751823722109994423825668e+24', '1.2772013749128747426282626825051632930610152e-11'); + BigNumber.config({ DECIMAL_PLACES : 56, ROUNDING_MODE : 5 }); + T('-1.2049422480536151523395e+14', '-4.651870271343596184932211687962962e+33', '2.590231837453181149977115147457106921e-20'); + BigNumber.config({ DECIMAL_PLACES : 83, ROUNDING_MODE : 3 }); + T('-4.732e+0', '-3.99015144672674056329880910971446617426188829542597675640256e+34', '1.1859198988253499751248284953555804253129661781483e-34'); + BigNumber.config({ DECIMAL_PLACES : 36, ROUNDING_MODE : 1 }); + T('-1.89725637494748509587754611e+13', '6.7922451559248095038237439332047655602532566994e-10', '-2.7932683985832383868121957688990626386516061490556219650626e+22'); + BigNumber.config({ DECIMAL_PLACES : 93, ROUNDING_MODE : 3 }); + T('-1.22854461643867067809375756447603765e+6', '-1.69645086658491372317112521498156e-3', '724185203.731732961556689019966606665969864152795410132189383339630281125298526353896141554762024219053'); + BigNumber.config({ DECIMAL_PLACES : 24, ROUNDING_MODE : 3 }); + T('2.64562337593965546453300217077672e+7', '5.832613889825228518271558e+5', '45.359137873927229938659829'); + BigNumber.config({ DECIMAL_PLACES : 56, ROUNDING_MODE : 5 }); + T('2.1203751311577938873378167900893673338033566229595e+45', '-1.667616372017153758761e+1', '-1.2715005481704294959212729428651681432960955557707228467070391647971876993100725678860140196759111212e+44'); + BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 5 }); + T('-6.7869609205009206193578567757022014931462424108280047071e+55', '-3.862917045455992520752875543554336057e+10', '1.75695228259807570348004759800931840163935270401602995388165008128129105383594715309207446428e+45'); + BigNumber.config({ DECIMAL_PLACES : 46, ROUNDING_MODE : 6 }); + T('-2.3519445306259e+6', '-8.064018e+0', '291659.1369991857657063761514421222770088062799462997'); + BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 4 }); + T('8.671298172705266870915652679858994067669924819162294273972e+43', '9.6298693e-3', '9.0045855271423744774144054892406422044273485821477289146302e+45'); + BigNumber.config({ DECIMAL_PLACES : 56, ROUNDING_MODE : 5 }); + T('4.5559264031391881627889052318763808620578103634427e+3', '-7e+0', '-650.84662901988402325555789026805440886540148049181428571429'); + BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 3 }); + T('-4.4710343204740606969010668283811540532516487336593e-12', '4.35412761342704043375097150447419131962e-1', '-1.02685e-11'); + BigNumber.config({ DECIMAL_PLACES : 24, ROUNDING_MODE : 0 }); + T('6.44428112687596342343198422845844557344581e+36', '-1.45921986806866754033281447454477831415684279456962845127605e+44', '-4.4162509488067842e-8'); + BigNumber.config({ DECIMAL_PLACES : 88, ROUNDING_MODE : 5 }); + T('-2.8e+0', '4.55414147291278228617859e-17', '-61482499317465178.585701725651626578565353575562931913291561175344969826941957523022253064831290780019107'); + BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 5 }); + T('7.02681139273332811e-7', '1.0622e+3', '6.6153374060754359913387309357936358501223874976463942760309e-10'); + BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 5 }); + T('1.657508332007055578351979651553033226275773578939581631313e+35', '-2.1238685034e+0', '-7.804194701101454162428065750433658539256689741348426794100175646495723629741925952043382988660784713626729702742481001378176000687e+34'); + BigNumber.config({ DECIMAL_PLACES : 64, ROUNDING_MODE : 4 }); + T('-2.764080129398250969e+17', '1.2949e+2', '-2134589643523245.7865472237238396787396710170669549772183180168352768553556259171'); + BigNumber.config({ DECIMAL_PLACES : 35, ROUNDING_MODE : 3 }); + T('-7.7991835327300585309075183283025872088199449056190883e-14', '-9.75085458502e+3', '7.99846153455283182e-18'); + BigNumber.config({ DECIMAL_PLACES : 28, ROUNDING_MODE : 1 }); + T('6.19924e+5', '8.669421890762855648304872594388691404298768339923843207e+37', '0'); + BigNumber.config({ DECIMAL_PLACES : 50, ROUNDING_MODE : 3 }); + T('-3.5806677921269913e+4', '-2.31683932948568e+10', '0.00000154549680962204281085163081139390479827365202'); + BigNumber.config({ DECIMAL_PLACES : 33, ROUNDING_MODE : 6 }); + T('-2.70735777091227212093044793427e+20', '5.7671231282731358385646641249e+8', '-469446847361.301796470831459256421940188934073'); + BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 3 }); + T('-4.6688193197e+4', '-1.22198213095461e+3', '38.2069361034987285176085830075155604568420086734771236795516829401287299909399'); + BigNumber.config({ DECIMAL_PLACES : 29, ROUNDING_MODE : 6 }); + T('4.16674579249361e-7', '1.578127079691912716040002e+2', '2.64031068607418874536e-9'); + BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 1 }); + T('-8.75648136915274623057446896380654776897615682431037003543576e-10', '-2.130462725e+4', '4.110131224733230772941342573269639e-14'); + BigNumber.config({ DECIMAL_PLACES : 45, ROUNDING_MODE : 4 }); + T('-2e+0', '-4.71195270515e+0', '0.424452477592584861982631523612163520528836775'); + BigNumber.config({ DECIMAL_PLACES : 36, ROUNDING_MODE : 3 }); + T('-2.154359368986072250524524975615717769998946122e-14', '1.1613061220266980568927812645190389914759491972608250549349e+35', '-1e-36'); + BigNumber.config({ DECIMAL_PLACES : 32, ROUNDING_MODE : 0 }); + T('2.7728619091228486269151023001617727436359285e+32', '1.737627941941107e+0', '1.5957742403850159536937839163285397719624522432951211715519130224e+32'); + BigNumber.config({ DECIMAL_PLACES : 7, ROUNDING_MODE : 0 }); + T('1.02738716445772650827135e-1', '1.0428801788138772666035e+4', '0.0000099'); + BigNumber.config({ DECIMAL_PLACES : 83, ROUNDING_MODE : 5 }); + T('5.94000674598581000492613725424708428430183333e+43', '-7.0220590391338599902657635890572e-3', '-8.45906693874576656506282923432609742012113220674294874225682585668054846626049474911504545805121728205753829189027553174976721051e+45'); + BigNumber.config({ DECIMAL_PLACES : 59, ROUNDING_MODE : 2 }); + T('1.80880753196217476902856794e+4', '1.16337936447335295454242481e-17', '1.55478736102646872976635440447892000524992658589318970370823381254359318804447428e+21'); + BigNumber.config({ DECIMAL_PLACES : 83, ROUNDING_MODE : 0 }); + T('3.21985390008010603285074504411720036471193e+41', '1.102013956736134154605753149728161710446261682437585e-3', '2.9217904913077854520353826207026204608715334527890507813761403072252920121408341470197636947188686003497546412161090004331927185e+44'); + BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 4 }); + T('-7.71e-10', '-9.5885627368524049949226765463166521675581438411961562212626e+14', '8.0408296963710825538150497407533187267104e-25'); + BigNumber.config({ DECIMAL_PLACES : 82, ROUNDING_MODE : 5 }); + T('-1.409472e-8', '-1.831352054342751515086495319785653e+2', '7.69634651435625362919637016222128087287583795847199617037237679823128369e-11'); + BigNumber.config({ DECIMAL_PLACES : 32, ROUNDING_MODE : 1 }); + T('-3.645e+2', '-1.732633774241943595520124503144072253e+30', '2.1037e-28'); + BigNumber.config({ DECIMAL_PLACES : 32, ROUNDING_MODE : 6 }); + T('-7.77177417841e+11', '-2.25172404636199025e-16', '3.45147718743178484050006514325830994557653649901257179121864e+27'); + BigNumber.config({ DECIMAL_PLACES : 29, ROUNDING_MODE : 1 }); + T('-5.74117749951482071251062836818469191744312e+17', '-1.408312e-19', '4.07663749191572656663482833930598611489721027726810536301614983043e+36'); + BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 0 }); + T('-5.279448990789888178544628318780147533426825801984934e-2', '-1.40902214982323169815308082237895872760389588325437493029144e+16', '1e-15'); + BigNumber.config({ DECIMAL_PLACES : 46, ROUNDING_MODE : 1 }); + T('1.2355215374588488866626452962493545401e+37', '3.27779220192511527453556602644183161760629649e-6', '3.7693711539529610457788797729857804380903931488178453750362318653988405337262587149699441e+42'); + BigNumber.config({ DECIMAL_PLACES : 25, ROUNDING_MODE : 3 }); + T('5.9780971906959502237283103144636868040612e-14', '1.79565027213404744776161726006360224734e+38', '0'); + BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 1 }); + T('8.21423325589394799686775096044117e-10', '-6.88751728351754662889821451337592958814443289592967445249e+17', '0'); + BigNumber.config({ DECIMAL_PLACES : 46, ROUNDING_MODE : 6 }); + T('1.825666996146600553998e+9', '4.27693837003413706723446279e+6', '426.8630590840215219304505187189881604140219426215'); + BigNumber.config({ DECIMAL_PLACES : 91, ROUNDING_MODE : 3 }); + T('1.82e+1', '-1.7541960863134087512e+5', '-0.0001037512290786649588152088082441006973270467869939604280386306028425349692662681867595551'); + BigNumber.config({ DECIMAL_PLACES : 91, ROUNDING_MODE : 2 }); + T('1.104490415030425319e+16', '1.69914977249366414323873934582884595022e+12', '6500.2534379855192339702757806365274316721726691488252441042266361835528817533770996108122145082'); + BigNumber.config({ DECIMAL_PLACES : 1, ROUNDING_MODE : 0 }); + T('-1.408580331806669728167563191933541604548228165e+17', '-1.41996832852681051909213808e+26', '0.1'); + BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 4 }); + T('3.2763266975e+10', '-3.124286575020841147111664173e-13', '-1.04866394897790214406585056911636756382e+23'); + BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 5 }); + T('-2.08250712940384206426458910537560911132774029965685412e+50', '2.398562149589760719201380587665851739467548e+10', '-8.682314651550824797666976161897169110231398744107279756157175951161003365124357494857278851523e+39'); + BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 1 }); + T('-3.746135011145165193814946e+17', '5.647027994793033435026336116300178305193365502982e-15', '-6.6338169646039855072433662497984545128820132968359241180368566244977655363985198678798525e+31'); + BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 3 }); + T('-2.3372300514908379021070188579270108379924011652330043e+22', '7.050250968245260561107892616e+11', '-33151019190.917566871308'); + BigNumber.config({ DECIMAL_PLACES : 31, ROUNDING_MODE : 5 }); + T('3.83121883922893150162141680532496909653962616493955e+43', '-3.87897206463879503e+17', '-9.87689206157170340875022860878896662730336576330606119264e+25'); + BigNumber.config({ DECIMAL_PLACES : 99, ROUNDING_MODE : 0 }); + T('-2.72972657830054702930791633655722327753086e+41', '9.17739e-10', '-2.97440402805214448694881261072834790450319753219597292912255009321822435354714139858935928406660281408984471619926798359882275897613591663860858043518e+50'); + BigNumber.config({ DECIMAL_PLACES : 70, ROUNDING_MODE : 5 }); + T('1.2910940973279193941491845957807220524e-6', '-5.56954184027693324073313535369e+18', '-2.318133401909630998669234183656243718886321259e-25'); + BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 1 }); + T('-3.02413379521989703097012195693086332294060914169449e+15', '1.49e+2', '-20296199967918.772019933704408931968610339658669090536912751677852348'); + BigNumber.config({ DECIMAL_PLACES : 9, ROUNDING_MODE : 5 }); + T('-1.38556014447707091379298257628e+29', '1.205494506617197711385462735756454702276286e+20', '-1149370765.998067442'); + BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 6 }); + T('4.6506366346743e+7', '1.34682883860121e+14', '0'); + BigNumber.config({ DECIMAL_PLACES : 19, ROUNDING_MODE : 5 }); + T('-5.4686963489725658647405e+0', '2.4128708555273441256317773917829677078797977516229688974e+55', '0'); + BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 6 }); + T('6.602535230674085936339555706786686455456202296898766e+30', '7.005e+3', '9.425460714738166932676025277354299008502787004851914346895075e+26'); + BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 3 }); + T('1.751728983061290874284724888244372891167281275092905e+22', '-4.4338731e+7', '-395078736705678.58026534969804263746095197926956748153211692053162279272268753023175155824825027130343446229889'); + BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 5 }); + T('6.606630194400048814599681033491792515e+14', '-3.902637829625690517074566689660333961576560853712e-10', '-1.6928627463834386584271374488e+24'); + BigNumber.config({ DECIMAL_PLACES : 77, ROUNDING_MODE : 2 }); + T('-7.65523401025669581840187531201953250295272495521181741233e-14', '1.41906890626583313624904465052681503208229e-20', '-5394547.0698817823665090628562414321781526878817338066357095269830728319608557339993'); + BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 5 }); + T('-1.4190519900533519327205949140097784950472025e+2', '9e-10', '-157672443339.26132585784387933442'); + BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 2 }); + T('-9.0566604925734026480770982368e-10', '8.4746001657843403107988204088326423e+0', '0'); + BigNumber.config({ DECIMAL_PLACES : 86, ROUNDING_MODE : 0 }); + T('0e+0', '-1.115912687166514039689279199420767026e+36', '0'); + BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 3 }); + T('9.445312880277e-3', '-6.1031501925724680412635531197189868e-9', '-1547612.721668220282361361478696454973823599345920127948748130318716181830129'); + BigNumber.config({ DECIMAL_PLACES : 1, ROUNDING_MODE : 6 }); + T('4.18313063e+2', '6.705221089544031432e+18', '0'); + BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 5 }); + T('1.49410591276216401371432070609313e-1', '1.005138841238458297223242122452672412760405e+16', '1.486467193846808649782741551891176427547500733982699932298113671532110915794937e-17'); + BigNumber.config({ DECIMAL_PLACES : 94, ROUNDING_MODE : 4 }); + T('-1.1548056897187851378697e+16', '-3.4105531585207980187e+19', '0.0003385977687618390995219003253550233018523790123264658320563592626143143520225032373495425742'); + BigNumber.config({ DECIMAL_PLACES : 46, ROUNDING_MODE : 4 }); + T('4.82154e+3', '-2.992762041198346384048383032515754240730616434e+45', '-1.6111e-42'); + BigNumber.config({ DECIMAL_PLACES : 94, ROUNDING_MODE : 3 }); + T('3.6417092019e-6', '2.17049466296106562190888661798e+25', '1.677824536519178280456055081015910976527830028759323610629932153e-31'); + BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 3 }); + T('-2.00687668861702947957395415839051945560005285949871535155336e+26', '5.60267743868393398275504980009688782219164693e+27', '-0.0358199577002320478092385759002937'); + BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 1 }); + T('-2.46741766e+8', '-1.074724183719845773315e+21', '2.29586129853312693916876453437821425709e-13'); + BigNumber.config({ DECIMAL_PLACES : 40, ROUNDING_MODE : 6 }); + T('-1.6443175265351620398e-6', '-1.5353849740251572e+16', '1.070948038669694566e-22'); + BigNumber.config({ DECIMAL_PLACES : 7, ROUNDING_MODE : 3 }); + T('7.4e+1', '-1.779930316777719535384e-16', '-415746612676192958.079826'); + BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 1 }); + T('1.7002066502502853710687375428351480702197906916468090526578e+11', '1.57766110073709939648675432038e-18', '1.07767545859876461486373845018582719639233668232002899951262670805151301619980454253878413e+29'); + BigNumber.config({ DECIMAL_PLACES : 88, ROUNDING_MODE : 6 }); + T('8.66367820793728970879038066816900273068744428881978e+1', '6.1425167394183459125948362673126494895e-11', '1410444378985.5557555851230772077867308991485987289499111639862795048837363829329147738640028869878965'); + BigNumber.config({ DECIMAL_PLACES : 25, ROUNDING_MODE : 6 }); + T('-1.8893143777691139104177807719312560829717396691504e-18', '-6.50983331865e-20', '29.0224693212408892560483066'); + BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 5 }); + T('-8.68667e-20', '-3.49916728e+3', '0'); + BigNumber.config({ DECIMAL_PLACES : 31, ROUNDING_MODE : 2 }); + T('-2.0976014878103076514631485173505655581199131e+6', '-6.562871e+0', '319616.4434453012487161714008016560981'); + BigNumber.config({ DECIMAL_PLACES : 93, ROUNDING_MODE : 3 }); + T('1.942e+2', '5.5788508128565731234e+19', '3.481003642407182161704399289671504991111660078173245850310444658594948919588e-18'); + BigNumber.config({ DECIMAL_PLACES : 38, ROUNDING_MODE : 2 }); + T('8.78552615729479974902850134582154479e+36', '-5.706051581870012102527101097906227664915e+12', '-1.53968572334839791481148918173729689973229221658916383288892274e+24'); + BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 2 }); + T('-3.65487011414426e+3', '6.57152206489908908779181123e+1', '-55.616797418458997711909034842387432202293038843596326'); + BigNumber.config({ DECIMAL_PLACES : 73, ROUNDING_MODE : 6 }); + T('-7.8319872388169117345071480952274245812268485607e+15', '-1.49728975520332000920786506239e+7', '523077594.807518757154671231735576700314172203280238437220908089220211425880339141'); + BigNumber.config({ DECIMAL_PLACES : 40, ROUNDING_MODE : 0 }); + T('3.8611211970005516219910804564963950732211e+40', '1.5158280794273938e+8', '2.547202581482126662282012464437511646330828415093906692650095619308582265e+32'); + BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 0 }); + T('3.90352554912231811402e+4', '7.625306988942964063152817262021753154686755e-11', '511917166716383.30405477979'); + BigNumber.config({ DECIMAL_PLACES : 46, ROUNDING_MODE : 2 }); + T('2.769420365598801142529246051199984633496559707179249e+50', '-9.52e+1', '-2.9090550058810936371105525747898998251014282638437489495798319327731092436974789915966386554621e+48'); + BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 5 }); + T('-1.49031037178321078446506146331174233873315e+39', '2.200531161158487473132179700085e-3', '-6.77250292151566172247414617356965580018109033147230156103916e+41'); + BigNumber.config({ DECIMAL_PLACES : 67, ROUNDING_MODE : 3 }); + T('-1.2188718572425e+14', '-1.9829182084896327271572302374e+14', '0.6146858967878969963095191083259588893518596057164405673642799079737'); + BigNumber.config({ DECIMAL_PLACES : 71, ROUNDING_MODE : 5 }); + T('-1.146099963366700083841099176758806276320897402875077100151e+49', '1.237607632961748090848355e-3', '-9.26060839350142953535595202763017800866076464221503563286263987968529133071607981685413247110886303444901771745012437696101e+51'); + BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 0 }); + T('-4.282736810686907e-8', '3.502374617358670715949443789741960918526598807e+9', '-1.223e-17'); + BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 1 }); + T('1.2077437770326238957404e+18', '1.772883200451728193460437534458469726422365218620429072e+54', '6.812314408105917229372924402094624323716391e-37'); + BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 1 }); + T('-1.4903311945934642325700339866618805966874471396726106e-2', '5.5640236e+7', '0'); + BigNumber.config({ DECIMAL_PLACES : 41, ROUNDING_MODE : 6 }); + T('3.136818222435530139669676251e+23', '-2.38144e+2', '-1.3171938921138177487863125886018543402311206664875033593120129e+21'); + BigNumber.config({ DECIMAL_PLACES : 24, ROUNDING_MODE : 5 }); + T('-2.272e+1', '5.782626073149888422651103815249733567910503982766974891e-4', '-39290.107491982538875505537241'); + BigNumber.config({ DECIMAL_PLACES : 78, ROUNDING_MODE : 5 }); + T('-3.1374927485667080692994909582e+26', '-4.37248619683874513285387480072302520941953593423e+38', '7.1755349412768359224286157402511342905690337602982147757758553487e-13'); + BigNumber.config({ DECIMAL_PLACES : 55, ROUNDING_MODE : 2 }); + T('1.9553600931736186090088251641098604e+25', '-7.247206916002125962329814556188174805402384204227256e+51', '-2.6980878507223306189033730697e-27'); + BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 2 }); + T('-9.86242820048558799936513306604288e+10', '2.8547858539618140546368301466573510633918454643e+46', '0'); + BigNumber.config({ DECIMAL_PLACES : 80, ROUNDING_MODE : 6 }); + T('8.27822223629209817227584880237823211643344671713763935e+53', '-2.691584532445229033274246900317436e+33', '-307559437071499497822.89415559842286550530427003800856793960762057957360801747373023514521148897678042'); + BigNumber.config({ DECIMAL_PLACES : 2, ROUNDING_MODE : 2 }); + T('2.344178183109e+0', '7.349852161919e+8', '0.01'); + BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 4 }); + T('5.9272191459507949664758485526378296029703121598684e+32', '8.3190482970891653823e-19', '7.12487646937297944749828029188710323566047358532804619438852298445374529039819142722243781465127953988108e+50'); + BigNumber.config({ DECIMAL_PLACES : 36, ROUNDING_MODE : 0 }); + T('7.745777026e+9', '5.2441830717e+5', '14770.226210827269125368966664787458815747'); + BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 2 }); + T('1.869194987648e-15', '9.41146115946258698680094504807e+27', '1.986083729165317751930918e-43'); + BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 6 }); + T('1.034899843234176402e-10', '8.25761e+2', '1.25326800761258572637845575172477266424546569770187741973767228e-13'); + BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 5 }); + T('5.23538954830709765827771114062808e+23', '8.4473225578915269385670244696706484792087483384728e+49', '6.197691058234982472617880325190227160999044913078773755e-27'); + BigNumber.config({ DECIMAL_PLACES : 88, ROUNDING_MODE : 5 }); + T('1.458275801773956600354858280638829041132981e+42', '-2.642556322697490344919141116430960685109596237375e-3', '-5.518428459777787636394063221353851539830905127527117159470217022706596126317340721162122848015421212917058185916325754928009061199817e+44'); + BigNumber.config({ DECIMAL_PLACES : 2, ROUNDING_MODE : 6 }); + T('7.54525e-4', '-7.73253966309221010923022098322e-5', '-9.76'); + BigNumber.config({ DECIMAL_PLACES : 43, ROUNDING_MODE : 6 }); + T('-4.25242064e+0', '1.070005007001185609564556392974165e+9', '-3.9742063001349003435074951824027056e-9'); + BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 0 }); + T('3.2879903813229382344521943763034745e-10', '-1.11983511951248201800842085085494502e+24', '-1e-13'); + BigNumber.config({ DECIMAL_PLACES : 80, ROUNDING_MODE : 4 }); + T('1.428828895258306070679857955628493395371424114576215046e+7', '1.7248120705718867375055453416442548881636713116549e+44', '8.283968553075796227111008926294527197901175e-38'); + BigNumber.config({ DECIMAL_PLACES : 56, ROUNDING_MODE : 1 }); + T('-7.93777531589104535712236987412e-2', '-2.455850507945338486894672505e+0', '0.03232189944058159158158503304091010299743072829843301373'); + BigNumber.config({ DECIMAL_PLACES : 92, ROUNDING_MODE : 6 }); + T('9.2640957e+7', '8.804130194266798830366721681406e+26', '1.0522442871225062275510973069099789093859488495293379506986097287816758445e-19'); + BigNumber.config({ DECIMAL_PLACES : 24, ROUNDING_MODE : 5 }); + T('-6.9100609787700074098710767e+6', '1.8814215849484481510198e+9', '-0.003672787127590728888767'); + BigNumber.config({ DECIMAL_PLACES : 62, ROUNDING_MODE : 2 }); + T('3.046270698105506513465614681229473272073276990162347e+36', '-8.1588310832895245740362611828511307e+29', '-3733709.72754260469792524682290129221624697178632059445146356184074975'); + BigNumber.config({ DECIMAL_PLACES : 93, ROUNDING_MODE : 4 }); + T('1.983615568067104389335664255351817831701535416543710586014e+1', '-2.862553e+4', '-0.000692953307088848447290116289672826260929154994350745850300064313219702831703028729948406195'); + BigNumber.config({ DECIMAL_PLACES : 39, ROUNDING_MODE : 3 }); + T('3.095782697887500684211541375929666215361183606e+45', '4.96632883632401351892e-2', '6.2335435286619942353033199607991642379346107398740494157066695877620521035420763930846e+46'); + BigNumber.config({ DECIMAL_PLACES : 55, ROUNDING_MODE : 4 }); + T('-1.7962731981851881042656169490539864389594531312e-1', '2.3826840046056590456797038432578719011482800837295219352e+12', '-7.53886455238312815413992950469965615300198e-14'); + BigNumber.config({ DECIMAL_PLACES : 41, ROUNDING_MODE : 4 }); + T('2.19831709261078147926097362293118374626319395e-8', '1.3290439251943e+4', '1.65405902012561233568752601319e-12'); + BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 5 }); + T('5.5642011585440936375e+19', '4.701098769102304059553191703e-16', '1.18359588509700740847891832710799397176147545356337256549121792273315787246402431446941759906658445522540969526231235901464650502689e+35'); + BigNumber.config({ DECIMAL_PLACES : 2, ROUNDING_MODE : 5 }); + T('-2.4885063216181213847863323237452642090315945418991e+25', '3.158e-15', '-7.8800073515456661962835095748741741894604e+39'); + BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 3 }); + T('1.013724171692959789e+15', '-1.437603438056205e-14', '-7.0514868346699579000710312827079561330009836311651055713532352037697974783029967494637975870619665e+28'); + BigNumber.config({ DECIMAL_PLACES : 89, ROUNDING_MODE : 4 }); + T('-7.03172175383256062325868679726142414e+34', '-1e+0', '7.03172175383256062325868679726142414e+34'); + BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 5 }); + T('2.5937492035466413857327974408756455150459189933e+40', '3.6460177398809657715225780116348e-10', '7.113923706886081765807426114419867386211161818637323487974033293119714514577981876141585258061333527397723522219161413967796920422259922286356036e+49'); + BigNumber.config({ DECIMAL_PLACES : 6, ROUNDING_MODE : 0 }); + T('1e+0', '-2.931929922718117790896922684995835390028387944326922e+3', '-0.000342'); + BigNumber.config({ DECIMAL_PLACES : 71, ROUNDING_MODE : 6 }); + T('2.01826383e+5', '-9.266962672635257272628448810537609739e+36', '-2.177912981089049641918237772414177093043e-32'); + BigNumber.config({ DECIMAL_PLACES : 63, ROUNDING_MODE : 5 }); + T('-2.5925453328877035992083416179278963e-15', '-1.058641478461206990164504071649170894377510205026484578318e-6', '2.44893609936397858739054637689062606781670939421955862e-9'); + BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 4 }); + T('7.02577048337212332643240479004403275534798857919140489e+45', '-3.824804564617150229017697418e-10', '-1.8368965955454978305159939401149329662635046762348908261690521054396772496844081850707160128721750531063611221439e+55'); + BigNumber.config({ DECIMAL_PLACES : 41, ROUNDING_MODE : 1 }); + T('-6.723744052789397503581135654401116421279192e+34', '1.11557001081777e+5', '-6.027182505435538255560595013800459405361381409023018757149312351060788e+29'); + BigNumber.config({ DECIMAL_PLACES : 45, ROUNDING_MODE : 5 }); + T('-1.4752163359987961782648494391086788406e+9', '1.016653743364769773438917184842715314909279845221939607e-6', '-1451050906591209.656146653767895656375750147525429407933282799'); + BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 4 }); + T('6.4073325949678131539231848010164338105458648752506253747e+56', '8.727835392825981797743725881634681774976400777757e+48', '73412619.5853149092'); + BigNumber.config({ DECIMAL_PLACES : 39, ROUNDING_MODE : 3 }); + T('0e+0', '-5.48093803244039526717757394868869275953542e+41', '0'); + BigNumber.config({ DECIMAL_PLACES : 71, ROUNDING_MODE : 6 }); + T('-2.0003404755679534025330772267472197733315e+27', '2.6144605787451498236992490146038156706737647e+14', '-7651063824905.89045901859689851508509516108849602747920710471122586004170086094097776'); + BigNumber.config({ DECIMAL_PLACES : 26, ROUNDING_MODE : 0 }); + T('2.57605062602266323032560458173034e+32', '7.69657908815168179205188887394285749242650117009659604312906e+2', '3.3470072827398135404698316264166165411570751087357049639e+29'); + BigNumber.config({ DECIMAL_PLACES : 21, ROUNDING_MODE : 0 }); + T('2.666659213871079431280716513882624501827958939336e+27', '-4.733006178507148610026187165086317995501427192816477282518e+58', '-1e-21'); + BigNumber.config({ DECIMAL_PLACES : 42, ROUNDING_MODE : 5 }); + T('9.2294312718960378431142461763275917192e+36', '-8.186474258251074299924239467e+2', '-1.1274000235930353635097271400044952500184988717104430662062286348965514915097e+34'); + BigNumber.config({ DECIMAL_PLACES : 71, ROUNDING_MODE : 3 }); + T('-2.8908098329175346611627e+3', '-8.434346555755024899046820927205094721247472190765539802e+14', '3.42742595861803009269767530774322923037672813595339594293152e-12'); + BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 1 }); + T('-4.52923252121745441785010052145728903646501e+2', '2.8071676612908918750850535019880864031800720126481749084817e+58', '-1.61345279930115086478e-56'); + BigNumber.config({ DECIMAL_PLACES : 83, ROUNDING_MODE : 5 }); + T('-1.5559378099525261442175753261e+14', '-1.5538e+3', '100137585915.33827675489608225640365555412537006049684644098339554640236838717981722229373149698'); + BigNumber.config({ DECIMAL_PLACES : 88, ROUNDING_MODE : 3 }); + T('-2.75036606139027e-7', '-4.1378504151079897165713373641870722e+17', '6.646847482326136437750056555875867240917491721605531663202859762e-25'); + BigNumber.config({ DECIMAL_PLACES : 59, ROUNDING_MODE : 6 }); + T('9.2159666322463679041110651594710322215662582e+43', '-1.6497142444115745e+4', '-5.58640180471591259082079901885132615475073334186568634621566683575259233192905903483395242616801546e+39'); + BigNumber.config({ DECIMAL_PLACES : 35, ROUNDING_MODE : 0 }); + T('9.78145388278e+2', '-7.90850606971854525815299e+13', '-1.236827005827677239885414e-11'); + BigNumber.config({ DECIMAL_PLACES : 28, ROUNDING_MODE : 1 }); + T('2.49709e+5', '-3.4706586491689235861233383e+7', '-0.0071948591100941251331544388'); + BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 1 }); + T('5.02787137968630657192295191438412535407496737985e+14', '-3.56629911261660263982104130335051314730962713e+44', '-1.4098288508384100959841539980852e-30'); + BigNumber.config({ DECIMAL_PLACES : 23, ROUNDING_MODE : 6 }); + T('4.1275175407360715228027691e+10', '3.3658831378381879253912124304165511e+14', '0.00012262807030748726332'); + BigNumber.config({ DECIMAL_PLACES : 49, ROUNDING_MODE : 0 }); + T('-1.161355063107016e-13', '-6.9582814009561566485640791959681e-6', '1.66902572084456227372322380073123582542957e-8'); + BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 2 }); + T('-1.08960773085093919932476649213411057843e-16', '2.5710917e-1', '-4.237918588632755491e-16'); + BigNumber.config({ DECIMAL_PLACES : 28, ROUNDING_MODE : 2 }); + T('-1e+0', '-7e+0', '0.1428571428571428571428571429'); + BigNumber.config({ DECIMAL_PLACES : 1, ROUNDING_MODE : 6 }); + T('-9.0351815131036896108809339286380587e-2', '-1.90427014798333323387548e+2', '0'); + BigNumber.config({ DECIMAL_PLACES : 99, ROUNDING_MODE : 5 }); + T('3.0027531448195e+10', '5.24812136826577331922608412890794e+29', '5.7215771780288518362228280650261082247781032571752856555171464922879527513696005e-20'); + BigNumber.config({ DECIMAL_PLACES : 88, ROUNDING_MODE : 5 }); + T('-4.1421379503967152993242826581232468e-11', '-1.08e+1', '3.83531291703399564752248394270671e-12'); + BigNumber.config({ DECIMAL_PLACES : 92, ROUNDING_MODE : 4 }); + T('-7.399709498047321126129633592818011e+33', '-1.271033757392966857692572205310080825842375545366625958e+49', '5.8218040669706186850160521545272704542439799568664170078484239067747585544887e-16'); + BigNumber.config({ DECIMAL_PLACES : 49, ROUNDING_MODE : 5 }); + T('3.874906680973237070281107761625726e+30', '-6.4755908029361756621599018046842706e+13', '-59838658724641293.5209752198866751364011517040571584976629572099489'); + BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 1 }); + T('-8.187794415119181710497321540822626822505e+26', '-3.8710440362149307711228e+3', '2.115138535888402731140431015146688044486809018527516060128629221568093882063873293669e+23'); + BigNumber.config({ DECIMAL_PLACES : 100, ROUNDING_MODE : 1 }); + T('3.18525339838759904528772118448626807e+34', '-1.4868926018266364068914e+11', '-2.142221566288337934210933941319177198790078548667892231356931380676919923187541932499701673755774599959898442562203811054628e+23'); + BigNumber.config({ DECIMAL_PLACES : 66, ROUNDING_MODE : 2 }); + T('-1.3250532286562e+8', '-2.3800080137743321795426e+1', '5567431.794294113750225205918804723133214108606962563716690330376501531022'); + BigNumber.config({ DECIMAL_PLACES : 56, ROUNDING_MODE : 4 }); + T('2.326034274975947617171091547137093840144247899488139177e+55', '-6.8509622933630039720462931556266335279304938337e+18', '-3.39519351497429230412338976003087952121968815716777152642147477860372585955832698904529350644e+36'); + BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 0 }); + T('-1.116635320136759027139480909e+7', '1.946766987618427e-18', '-5.735844747926367528580321769347251289271984879271734952153582399301553646875736e+24'); + BigNumber.config({ DECIMAL_PLACES : 25, ROUNDING_MODE : 4 }); + T('-5.01871382131921e+14', '1.7852397008390922e+10', '-28112.2687276130564351419922642'); + BigNumber.config({ DECIMAL_PLACES : 93, ROUNDING_MODE : 0 }); + T('-9.4873666972260986685095841229463423784564815568e+46', '3.93564148476860816981511788426581e-3', '-2.4106277804884705453630341485851361387783622025365426451941568215569352772889925075301108629755862645428248103524505923533147039500598729898951e+49'); + BigNumber.config({ DECIMAL_PLACES : 26, ROUNDING_MODE : 2 }); + T('3.3873266665748698298238756431459e+24', '5.670714698910682767333127646123797786616e+8', '5973368166847750.45717777623601722796786412'); + BigNumber.config({ DECIMAL_PLACES : 21, ROUNDING_MODE : 0 }); + T('6.36010488561041416205623007821e+12', '8.617184176774e+13', '0.073807229312248904255'); + BigNumber.config({ DECIMAL_PLACES : 45, ROUNDING_MODE : 6 }); + T('-3.040130969610165577583437907007217351403e+39', '2.4508129436592053e+2', '-1.2404581824474431010403377175868746887794728749809450266177754715101165250254401742e+37'); + BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 6 }); + T('4.294323713722448450443045842289e+2', '1.0143237516268995023116617864600375143606590409366599358e-15', '423368151128737161.757627861484517557423680671462065165026458724930363424060116546772397467391'); + BigNumber.config({ DECIMAL_PLACES : 77, ROUNDING_MODE : 6 }); + T('-1.0429008546339987528314778933903367409219773294029649e-13', '-2.8468669928772769598193574478420967253850675390344e+4', '3.66332834390677918118633276558662561849678897482592497471224e-18'); + BigNumber.config({ DECIMAL_PLACES : 37, ROUNDING_MODE : 5 }); + T('-2.46280213375540827371535455518186295e+25', '-6.08666009009594076875607923643136977250210982e-4', '4.04622912615543878748565932142274332956686221771036699134655121388e+28'); + BigNumber.config({ DECIMAL_PLACES : 33, ROUNDING_MODE : 2 }); + T('6e+0', '-1.30540458380292533394637310113e-17', '-459627618475239672.836962928581323537882402508121637'); + BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 0 }); + T('-1.164749047223062151164624878024040124e+7', '2.0662066365831166046066883535894513776121424403452e-17', '-5.6371372862745530150219061029747123287955491430704338947161828477777845e+23'); + BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 4 }); + T('1.4772928e-14', '-2.218059758938100189075124627058334178444469964e-19', '-66602.9305'); + BigNumber.config({ DECIMAL_PLACES : 83, ROUNDING_MODE : 0 }); + T('-2.33917833341e+6', '2.29318602584222986969748294097e+21', '-1.02005607353676346693286935953502125288466908515258475340226077314995e-15'); + BigNumber.config({ DECIMAL_PLACES : 53, ROUNDING_MODE : 3 }); + T('6.730599841051686320189027713666836604631216571280427e+28', '-3.7344396e+7', '-1.80230518149274293261806342072498283400572781289070172670619709581057355969e+21'); + BigNumber.config({ DECIMAL_PLACES : 86, ROUNDING_MODE : 6 }); + T('-2.10021689094677686598160367279176118e+3', '-2.45363745510517702204603627664407806140799815105e+1', '85.5960560341523431486753897051372215608103586383729569548931194278931119712262477577735'); + BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 6 }); + T('8.8004486650157457886483e+12', '3.43401123485697245387405513871030327277012801e+30', '2.562731471489285032113514405300769362580194183435505764300624716414e-18'); + BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 4 }); + T('-1.2706689385829067364915510269884212864649422693e-15', '8.741859225468531164873440312983e-11', '-0.00001453545'); + BigNumber.config({ DECIMAL_PLACES : 33, ROUNDING_MODE : 2 }); + T('7.13e+0', '2.50150327781989399164755091172569420684e+29', '2.8503e-29'); + BigNumber.config({ DECIMAL_PLACES : 43, ROUNDING_MODE : 3 }); + T('9e+0', '3.402305654651561322273195e+24', '2.6452649801452693502e-24'); + BigNumber.config({ DECIMAL_PLACES : 98, ROUNDING_MODE : 2 }); + T('1.942698433458917496262e+11', '-1.827852868815172883180238663241006577362751e+7', '-10628.30858327338084821374169009018300475712890323782940158454273339681433316588130632807797792360126701'); + BigNumber.config({ DECIMAL_PLACES : 62, ROUNDING_MODE : 3 }); + T('-1.213063441725300796821602082843332688344820493e+22', '1.4542083210188951483664314598198540068136663e+32', '-8.341744605582812826071467858531326511230556848318526e-11'); + BigNumber.config({ DECIMAL_PLACES : 99, ROUNDING_MODE : 6 }); + T('-2.94555946563586007664154490972697153787066e-16', '1e+0', '-2.94555946563586007664154490972697153787066e-16'); + BigNumber.config({ DECIMAL_PLACES : 24, ROUNDING_MODE : 0 }); + T('3.3547264298596360578903598598122683916303101119e-1', '-3.4604298263605549855521425801422326092878e+24', '-1e-24'); + BigNumber.config({ DECIMAL_PLACES : 42, ROUNDING_MODE : 5 }); + T('1.8385121543310937442100081257135e+4', '1.093914948871867941075931439e-13', '168067193544353117.682304112573690307306039961796085981513645'); + BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 3 }); + T('-6.70137736243257442821557371292385894234123508751561793546e-2', '-1.336711019757567992050322303418442914115285457337972e+7', '5.013332921911548836482858677493629170561251766882165547697447931875564104591e-9'); + BigNumber.config({ DECIMAL_PLACES : 27, ROUNDING_MODE : 0 }); + T('-3.060136077964060665704e+1', '-5.27078644525618821445683449071162332169528922121126448e+32', '1e-27'); + BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 6 }); + T('1.0018146402750597245819950058907152e+34', '9.7026827641357968325782224797669231559411e+32', '10.32513032352336037525'); + BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 6 }); + T('-7.75646187134977021929405053556527654016342256570143603195974e+28', '-7.856005334316372167922949389391178117995160370815690903482e+57', '0'); + BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 2 }); + T('4.26245412917833546496581979557027553619068043136604275e+40', '2.469641373651984014492417932e-18', '1.725940525071147580201630067416878017771790410139192240938902857591876806769708057625944578712153807543864204196e+58'); + BigNumber.config({ DECIMAL_PLACES : 23, ROUNDING_MODE : 5 }); + T('-2.7814045143169050206562955218757410738033367884e-10', '-5.4476014936891843412338484072908114992832907525998175059496e+31', '0'); + BigNumber.config({ DECIMAL_PLACES : 36, ROUNDING_MODE : 2 }); + T('-1.4684493725478801916262731401857285e+6', '-1.63e-3', '900889185.612196436580535668825600306748466258'); + BigNumber.config({ DECIMAL_PLACES : 28, ROUNDING_MODE : 5 }); + T('-2.994189172235446630179676777704091036657029209759025504882e-5', '2.5419343971086022114224692e-3', '-0.0117791756374250840978091263'); + BigNumber.config({ DECIMAL_PLACES : 26, ROUNDING_MODE : 2 }); + T('-1.99075480630387851875803012927311780348222369063870496681082e+29', '-3.3353292e+4', '5.96869060572455192356433700539400369679317918794555e+24'); + BigNumber.config({ DECIMAL_PLACES : 56, ROUNDING_MODE : 2 }); + T('-4.9487415160185613414838169772066576310822672005e+32', '5.994978617472851551363e-4', '-8.2548109539457783939342819030959263493023376697269712046659544149013725282357995498728086057e+35'); + BigNumber.config({ DECIMAL_PLACES : 92, ROUNDING_MODE : 6 }); + T('7.2107872988141590611859077930102268167074899805368583602e+7', '-1.10022954631091775e+18', '-6.553893524303188666476686361414797949591433881875842951024873795121646411036135473e-11'); + BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 5 }); + T('2.6068784148052e+10', '2.2799021189528113442450894189397849463505549223926e+22', '1.14341681300010068650365543037446925561994677139863760644397326632928639557957027439e-12'); + BigNumber.config({ DECIMAL_PLACES : 40, ROUNDING_MODE : 4 }); + T('-1.6504902477129444877365745606175485e+18', '2.787708374350602748498901576748428475e+34', '-5.92059866411753538498615e-17'); + BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 5 }); + T('-5.501037995828409136862448794197e+28', '1.13798355188919145546e+2', '-4.834022413325759672101846445977835404887623260055061969565752859938600281490833683821849809878012825692456e+26'); + BigNumber.config({ DECIMAL_PLACES : 43, ROUNDING_MODE : 1 }); + T('3.6589343211651372438014873028431637954958614467e+5', '2.5479218704612521e-20', '1.43604651444934525143584817300278944990458498912828334651254519708881e+25'); + BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 6 }); + T('5.3478e-8', '1.0004897029646339613698191032147494716791404e+43', '0'); + BigNumber.config({ DECIMAL_PLACES : 56, ROUNDING_MODE : 6 }); + T('-5.07971092663297629068e+8', '1.16237403981231959661531813346716e+31', '-4.370117322521381906128253536059771e-23'); + BigNumber.config({ DECIMAL_PLACES : 52, ROUNDING_MODE : 0 }); + T('7.9835459698214929550337673609984399792e+8', '1.1e+0', '725776906.3474084504576152146362218162909090909090909090909091'); + BigNumber.config({ DECIMAL_PLACES : 53, ROUNDING_MODE : 3 }); + T('6.13682871981e+3', '-9.251450308245344380227368874447939304042e-9', '-663336938030.19819560782538761292460579133946384434513995678629296'); + BigNumber.config({ DECIMAL_PLACES : 9, ROUNDING_MODE : 4 }); + T('2.1693386008e+7', '-1.79307859484733628e+7', '-1.20984022'); + BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 2 }); + T('-1e+0', '-7.0984199483591605465679812107634149958020592e+31', '1e-20'); + BigNumber.config({ DECIMAL_PLACES : 38, ROUNDING_MODE : 1 }); + T('1.3397598595300528236767970369339320608218016405446877e+18', '3.9476995855160420127093655257994532208718483631e+42', '3.3937735901829e-25'); + BigNumber.config({ DECIMAL_PLACES : 42, ROUNDING_MODE : 1 }); + T('-4.39475008052878276209e-18', '-1.4543101778512438736102e+7', '3.0218794776105224e-25'); + BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 3 }); + T('-9.2082959956947e-18', '4.68043369415024605014512403316e+2', '-1.9674022959033730894242360899489693e-20'); + BigNumber.config({ DECIMAL_PLACES : 66, ROUNDING_MODE : 5 }); + T('1.3994002846456504063e+10', '-2.142e+3', '-6533147.920848041112511671335200746965452847805788982259570494864612511671'); + BigNumber.config({ DECIMAL_PLACES : 96, ROUNDING_MODE : 4 }); + T('-2.2191274680390552743098177068133655e+34', '-1.060507383912673e+2', '2.09251486760208010032385079153239202535543043272031915753088930031410320659165697117110278255399576990789984787012776708300094921e+32'); + BigNumber.config({ DECIMAL_PLACES : 22, ROUNDING_MODE : 3 }); + T('1.73e+1', '2.4015833506007631104191410666e+27', '0'); + BigNumber.config({ DECIMAL_PLACES : 28, ROUNDING_MODE : 3 }); + T('4.5292596307898278177697069691336405129953565233673e+27', '8.1621144426923224013081949947848207197e+37', '5.54912536768575908e-11'); + BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 6 }); + T('5.753e+2', '7.02437565043295047621369300991772879991886378244139e+44', '0'); + BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 0 }); + T('1.7816396231524754234771553020982708831315e-7', '-2.758e+0', '-6.45989711077764838099041081253905323833031182015953589557650471356055112400290065264684555e-8'); + BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 6 }); + T('6.710156449444037425158298358e+0', '1.55544518630350073572185212096992925248e-19', '43139780871292894932.1818835522014'); + BigNumber.config({ DECIMAL_PLACES : 38, ROUNDING_MODE : 5 }); + T('-1.819121018698023627437534967215253e+12', '-3.560787470439322324462442690910909466377906164e+40', '5.108760446e-29'); + BigNumber.config({ DECIMAL_PLACES : 26, ROUNDING_MODE : 4 }); + T('9.97e-8', '-2.0070114200885e+13', '-4.96759e-21'); + BigNumber.config({ DECIMAL_PLACES : 58, ROUNDING_MODE : 1 }); + T('1.10048090031787533163994e+2', '1.042364733528621461756259145769761007093891993e+27', '1.055754156793580837716686722731834e-25'); + BigNumber.config({ DECIMAL_PLACES : 60, ROUNDING_MODE : 5 }); + T('-6.9046079709e-12', '-2.45822e+5', '2.8087835795412941071181586676538308206751226e-17'); + BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 0 }); + T('-4.84635919968771908426079e+21', '1.4256848e+2', '-33993202422356744522.076618899212504755609374526543314482976882407668230733749844285356763290174658521996'); + BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 0 }); + T('-4.500054004849797622975e+21', '2.4443181383316728553783505603678804638845530371301274757832e-4', '-1.84102631088816932455134036158188700296154933651042245521774037030053187171716155118713e+25'); + BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 1 }); + T('9.7009340832900580271755789108017722772432797e+24', '1.48e-2', '6.5546851914122013697132289937849812684076214189189189189189189189189189189189189189189189189e+26'); + BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 6 }); + T('-5.39424135365454350726001e+11', '-1.51128e+0', '356931961890.2217661359913450849610925837700492297919644275051611878672383674765761473718'); + BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 2 }); + T('-1.91233029702277737969977328621811019480638674375340064e-2', '-8.7770377687197060618346643474763451682819e+16', '2.178787818184045781218877465286349616739893726027e-19'); + BigNumber.config({ DECIMAL_PLACES : 2, ROUNDING_MODE : 2 }); + T('3.779662927463272934586323531060507929121172953461e-16', '-3.56171478964553431672697202829322933155076389941165059487e+43', '0'); + BigNumber.config({ DECIMAL_PLACES : 30, ROUNDING_MODE : 5 }); + T('-3.6444617109139556238821800690335845399473341683e+3', '1.75008858e+2', '-20.824441417210754120126765635106'); + BigNumber.config({ DECIMAL_PLACES : 86, ROUNDING_MODE : 0 }); + T('1.9628611664963e+4', '-5.774344850927108355436890298e-18', '-3.399279428524519043809823874584482849069449807691824947020600073312428720229753965935156911853332556011213e+21'); + BigNumber.config({ DECIMAL_PLACES : 33, ROUNDING_MODE : 5 }); + T('-1.268887e+5', '8.2359578936690515204781390599216938464393601324806256877e+55', '0'); + BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 2 }); + T('8.783402278573720372227198045660031e+19', '-1.8909551684795054684598228506022e-18', '-4.64495532468723176692896530126341959063064336779221189629771925915961649137313819457323877154255526665e+37'); + BigNumber.config({ DECIMAL_PLACES : 33, ROUNDING_MODE : 2 }); + T('1.62059746047170539600898697113779281e-7', '3.260814605118201614e+3', '4.9699159772162520322552e-11'); + BigNumber.config({ DECIMAL_PLACES : 31, ROUNDING_MODE : 3 }); + T('5.731791992628e+0', '4.59405600514119218188957515528894850084014e+16', '1.247653921983879e-16'); + BigNumber.config({ DECIMAL_PLACES : 72, ROUNDING_MODE : 0 }); + T('-1.813173e-12', '2.50902e-9', '-0.000722661836095367912571442236411029007341511825334194227228160795848579'); + BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 4 }); + T('2.2837887327574120752954238801724465348982335577808012e+25', '-3.749686960057121266169527586886083883732226765841887252151e+13', '-609061171528.4685338114256694656829716475853479'); + BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 4 }); + T('7.690482972e-2', '2.41e+2', '0'); + BigNumber.config({ DECIMAL_PLACES : 30, ROUNDING_MODE : 3 }); + T('3.577085790636323250886309479413241606062581e+18', '-2.27945416247e+11', '-15692729.64348718918280406986232456787'); + BigNumber.config({ DECIMAL_PLACES : 32, ROUNDING_MODE : 4 }); + T('1.3598517296981252272564302e-15', '-1.465e-6', '-9.2822643665401039403169e-10'); + BigNumber.config({ DECIMAL_PLACES : 87, ROUNDING_MODE : 5 }); + T('-1.13828085353488661886608e-5', '3.00138638264359357e+7', '-3.79251688525453791680279289793370147064530908742996199836409753941121077052e-13'); + BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 0 }); + T('1.6637801266501468012098566857306014893977371661789873624286e+34', '1.0951788670438385076006540136164785386824321263830374635e+6', '1.51918574829799739482764295497250736738145848e+28'); + BigNumber.config({ DECIMAL_PLACES : 49, ROUNDING_MODE : 0 }); + T('1.1420545975010746649563622337711607598701345870788753e-2', '6.6259751872611985104e+4', '1.723602285285851056134497142911351829503893e-7'); + BigNumber.config({ DECIMAL_PLACES : 31, ROUNDING_MODE : 1 }); + T('8.87354452761546265242054886287921569100659800881155788061e+34', '1.5281e+3', '5.80691350540898020575914459975081191741809960657781420104050782e+31'); + BigNumber.config({ DECIMAL_PLACES : 50, ROUNDING_MODE : 1 }); + T('-5.041026395485259479826984977321225093589111969983e+14', '2.7e+0', '-186704681314268.8696232216658267120405033004433327037037037037037'); + BigNumber.config({ DECIMAL_PLACES : 100, ROUNDING_MODE : 6 }); + T('1.4165045629113103371e+3', '9.224797557921583936651987e+0', '153.5539998593160928941774084653949475247422558101897128551926189854361947427108090517083286690349229395'); + BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 0 }); + T('0e+0', '1.56577794e+3', '0'); + BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 5 }); + T('3.12574391614794188587097657e+21', '-5.425293688082749634464664769151227355774667e+42', '0'); + BigNumber.config({ DECIMAL_PLACES : 52, ROUNDING_MODE : 2 }); + T('-4.09693686824100340169688521836937552850523616252674144443069e+34', '3.4548884511e+10', '-1.1858376692123249205233609802347391129942337612182773389081737001381358433867e+24'); + BigNumber.config({ DECIMAL_PLACES : 22, ROUNDING_MODE : 4 }); + T('9.742017166722599279319061819844403195229e+3', '1.0747173536351651177106932e-7', '90647249100.1548219612122076297677'); + BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 3 }); + T('3.02946322290348201780891e-4', '-2.20403668947804e+7', '-1.3745067118737118396783642616396367748331017171006739330905e-11'); + BigNumber.config({ DECIMAL_PLACES : 86, ROUNDING_MODE : 2 }); + T('4.78096279080176909292543513107592392066528985848892865058e+36', '-2.4326916688846408247727081726767709873011843490142e+2', '-1.96529747355684481877149599387676812128139524227181708862621441286857260092938487748859994856364367084385196431506079287e+34'); + BigNumber.config({ DECIMAL_PLACES : 35, ROUNDING_MODE : 0 }); + T('-1.2e+0', '-6.79309567292212524389813e+23', '1.76649948386e-24'); + BigNumber.config({ DECIMAL_PLACES : 9, ROUNDING_MODE : 5 }); + T('-4.433149727946876158642e-4', '-9.1010279e+4', '5e-9'); + BigNumber.config({ DECIMAL_PLACES : 71, ROUNDING_MODE : 3 }); + T('8.645364308112120452120307271110130766336169e+0', '-1.4273846460183e+1', '-0.60567866778085556455652183768805141470179829796975207980985493726508787'); + BigNumber.config({ DECIMAL_PLACES : 42, ROUNDING_MODE : 6 }); + T('-2.93251497583645503515188661611718246439285355639664194574e-13', '-2.8116268555471146e+7', '1.0429957908713376584346e-20'); + BigNumber.config({ DECIMAL_PLACES : 83, ROUNDING_MODE : 0 }); + T('8.549915096181065334588233947973779570784051465e+14', '-5.3585248140057447465515e+5', '-1595572548.96606683413408059486087308222327873608287048300451607298921405478645393658562802108'); + BigNumber.config({ DECIMAL_PLACES : 73, ROUNDING_MODE : 3 }); + T('1.620650208684937884852013551962e+5', '-1.938574313972575224952465487332302860332699316553926e+17', '-8.360010740902992415530567284669062089154037923369252703397249e-13'); + BigNumber.config({ DECIMAL_PLACES : 1, ROUNDING_MODE : 3 }); + T('1.39990788514023359907e-7', '-2.7880297633283168986682e-4', '-0.1'); + BigNumber.config({ DECIMAL_PLACES : 23, ROUNDING_MODE : 6 }); + T('1.2147034496129666796337477579e+9', '3.29e-16', '3.69210774958348534843084424893617021276595744681e+24'); + BigNumber.config({ DECIMAL_PLACES : 87, ROUNDING_MODE : 5 }); + T('-2.3595898093100315950772097e+5', '-1.360224124717153472624963642604e+17', '1.734706631380095057332935379366222616740848786042347725178571896765674681495e-12'); + BigNumber.config({ DECIMAL_PLACES : 19, ROUNDING_MODE : 4 }); + T('3.082386028440677875328e+4', '3.0185587469615039583139056269305737e-1', '102114.4952551750987667287'); + BigNumber.config({ DECIMAL_PLACES : 38, ROUNDING_MODE : 4 }); + T('4.9359e+0', '7.453e+0', '0.66227022675432711659734335167046826781'); + BigNumber.config({ DECIMAL_PLACES : 53, ROUNDING_MODE : 3 }); + T('-1.39e+1', '-2.8361586615351524267835684917894138430761187125799323e+26', '4.900995204716870570923653502e-26'); + BigNumber.config({ DECIMAL_PLACES : 98, ROUNDING_MODE : 1 }); + T('-2.57144111056735978258324349384933185182040890598640810825e+17', '-1.0678621825342158315627573687444425805220630056e-5', '2.40802713367459019626709581794527646339142982304436611882353911346885030124848557011784546711280981474942964129428490633e+22'); + BigNumber.config({ DECIMAL_PLACES : 71, ROUNDING_MODE : 0 }); + T('1.048596115047377963717631101474909437788760144e-11', '-2.36483913349438347955467527904366220847107e+30', '-4.43411181841332799344141327316e-42'); + BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 6 }); + T('7.78105988288549893107541943690031e-3', '-4.0466218248597429333998379517392386817522e+20', '0'); + BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 2 }); + T('-1.34723938637846839225393057180903356215187930658e-6', '-1.743938847270424507164548363659837389174e+6', '1e-10'); + BigNumber.config({ DECIMAL_PLACES : 5, ROUNDING_MODE : 2 }); + T('4.250402462487980246205857613476692e+5', '2.0247898066011489472317492252151143923781451179086472723e+51', '0.00001'); + BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 3 }); + T('8.3484358673122809837222108298527079080406084930504698570578e+26', '-2.273675645e-17', '-3.6717796074700360278179479860913529326389949930833119589746056324581864446192807769641214589339544955190827141925074365653418e+43'); + BigNumber.config({ DECIMAL_PLACES : 58, ROUNDING_MODE : 0 }); + T('3.134404401815e+12', '1.3390197837537002332974572e+15', '0.0023408200833510189872011500974677596892464186001159923261'); + BigNumber.config({ DECIMAL_PLACES : 83, ROUNDING_MODE : 1 }); + T('-1.72126299819476190891057067053186839902470099154659e+25', '3.03792053256058509683792028965831141329500024266905e+35', '-5.665925029131534227365236837686867175158620766693317443900910393707963202e-11'); + BigNumber.config({ DECIMAL_PLACES : 43, ROUNDING_MODE : 1 }); + T('1e+0', '-2.939975046688809188350421673411642007758878368983363390051e-6', '-340138.9413581128647024395877912442822159157246526'); + BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 1 }); + T('-2.8799781065335629236299415397922436750515902010787e+37', '-4.391480824237071945484e+10', '6.55810243013846919498768607405789794051382200537963030271725962343633802224860315219376733282257607687290362638e+26'); + BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 4 }); + T('3.5787142220840064175857594300169919704377044173726713e+38', '-1.181645294289742037064e+21', '-302858585345197319.6775048248694723253807508179985824'); + BigNumber.config({ DECIMAL_PLACES : 39, ROUNDING_MODE : 3 }); + T('-2.8246093714697547091670049283789e+14', '3.82579e-2', '-7383074793623682.191565676444287062279947409554627933055'); + BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 0 }); + T('-2.84779369663177732365367233318327625247815244e+45', '1.31393066624e+2', '-2.1673850605687932921090388365112614943073789872000970888e+43'); + BigNumber.config({ DECIMAL_PLACES : 100, ROUNDING_MODE : 4 }); + T('-5.04878763368633913601e+4', '2.0865689365553309103868029249304809e+12', '-2.41966011533808585432360918408206681865892223474989817900917381215519391312579510055483657309e-8'); + BigNumber.config({ DECIMAL_PLACES : 87, ROUNDING_MODE : 1 }); + T('1.957798750128925705685719898545101e+10', '2.43192553161689499005266735715792079650638534141393209227309e-19', '8.0504058396362968346561720628510573352360562767398330508738163709866794082543827688550686533985721686454059730412102e+28'); + BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 4 }); + T('-2.0222607e+7', '4.9467082310169266124568153854060414e+19', '0'); + BigNumber.config({ DECIMAL_PLACES : 56, ROUNDING_MODE : 3 }); + T('-1.5906369949629e+0', '3.0255416971954995514679934141145066040094784544274052e+52', '-5.258e-53'); + BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 4 }); + T('5.5668606928154293573954215929570699990366616565e+28', '-9.7521240191953684684e+16', '-570835715569.042'); + BigNumber.config({ DECIMAL_PLACES : 31, ROUNDING_MODE : 6 }); + T('1.032985128326695105895492495350025072e+22', '-1.501808602e+2', '-68782741485901750474.5583082863461366696846233672059'); + BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 0 }); + T('2.0832256e+5', '3.95274218483520266894052183558814141e+33', '1e-12'); + BigNumber.config({ DECIMAL_PLACES : 66, ROUNDING_MODE : 6 }); + T('3.77e+1', '1.354474e+1', '2.78336830385817667965571875133815783839335417291140324583565280692'); + BigNumber.config({ DECIMAL_PLACES : 1, ROUNDING_MODE : 0 }); + T('1.842713436665480361428619195654820738082e+39', '1.7417424681025642057883271791588e+10', '1.057971238809439411092797912785e+29'); + BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 4 }); + T('6.675734414283297222357436e+2', '-1.01298476308303988484891747454e+29', '0'); + BigNumber.config({ DECIMAL_PLACES : 88, ROUNDING_MODE : 1 }); + T('-6.23860945829300190566965469238e+29', '-2.651188337151012662516209e-5', '2.35313703325847439295362267785953812038087057918270178569228127914064966901435889737350150454136127164319450878289848269321e+34'); + BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 1 }); + T('-5.9251615681039070371827630552043396555629328351836e-4', '-1.8714936283919442833021814200253567484224938495909672556e+20', '3.16600680772556109819e-24'); + BigNumber.config({ DECIMAL_PLACES : 63, ROUNDING_MODE : 4 }); + T('1.1304086972280810511089682558613205176914070591355347e+9', '-3.259389604974e+6', '-346.816071175725023200942897547390635746854575755742744037391415607'); + BigNumber.config({ DECIMAL_PLACES : 98, ROUNDING_MODE : 5 }); + T('-4.845812964e+3', '4.7156288461e+0', '-1027.60694748223603203647388936095939113353707330482435781365935859716175468918230137806773647473638055'); + BigNumber.config({ DECIMAL_PLACES : 43, ROUNDING_MODE : 4 }); + T('-2.9078551054049892353706815690526773071819522646602e+49', '1.43280566584213410255379202195890449e+2', '-2.029483254238733189552538980193555164988301092952962754777325201232539944129617890956431969e+47'); + BigNumber.config({ DECIMAL_PLACES : 82, ROUNDING_MODE : 0 }); + T('1.3262460345e-8', '-2.94349159799574781750769838319096186e+24', '-4.5056898936047715586791107749571702134685849600532e-33'); + BigNumber.config({ DECIMAL_PLACES : 5, ROUNDING_MODE : 6 }); + T('-1.07535586e+8', '-4.3443989107065164319529887109280234764994620418767443804208e+28', '0'); + BigNumber.config({ DECIMAL_PLACES : 96, ROUNDING_MODE : 1 }); + T('2.49514101973155389178e-7', '-1.3320082640039933952325221390629129e+28', '-1.8732173719637473618987414336679458253027603532286856550174466e-35'); + BigNumber.config({ DECIMAL_PLACES : 80, ROUNDING_MODE : 2 }); + T('3.5426634793166964286e+4', '-6.837512665748e+6', '-0.00518121669750375726671757317534639700222637833202970293988359028523526317543486'); + BigNumber.config({ DECIMAL_PLACES : 19, ROUNDING_MODE : 4 }); + T('-3.980839536433195169114e+21', '-1.946512140488498756862821697491967570855e-16', '2.04511415758966673872832407336553531014273410155707170939e+37'); + BigNumber.config({ DECIMAL_PLACES : 87, ROUNDING_MODE : 0 }); + T('1.09413052696967761148757584652e+21', '2e+0', '547065263484838805743.78792326'); + BigNumber.config({ DECIMAL_PLACES : 22, ROUNDING_MODE : 4 }); + T('3.8176677194666184158532243175342318388938541e+2', '1.839063964438703033623222e+5', '0.0020758754416852493784'); + BigNumber.config({ DECIMAL_PLACES : 26, ROUNDING_MODE : 5 }); + T('5e+0', '-7.3390741926489e+13', '-6.812848417595e-14'); + BigNumber.config({ DECIMAL_PLACES : 52, ROUNDING_MODE : 6 }); + T('6.486086634148230094080192508467807093837803449e+9', '-2.535934612087311196295878778221457560221e-20', '-2.557671086325674067420204470169823075573319122951890398364812844590458592073730384e+29'); + BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 0 }); + T('8.6885036983e+4', '-1.177721981e+6', '-0.07377380942591068104'); + BigNumber.config({ DECIMAL_PLACES : 98, ROUNDING_MODE : 4 }); + T('-4.5065229428343237781413917223156e+26', '1.258375465530366050877860302774614974549027e+6', '-358122282758823875333.56534033521315891176207380857166682271755272697303071912130388957862433901431058775345809305755171'); + BigNumber.config({ DECIMAL_PLACES : 27, ROUNDING_MODE : 3 }); + T('7.825409728735081840942926808875e+25', '1.0956735309605483647669272120591478904094337612309545855e+4', '7.142099820440810993596186764322175788148808775229e+21'); + BigNumber.config({ DECIMAL_PLACES : 58, ROUNDING_MODE : 6 }); + T('1.838165789921448904010496873514135951164635928e+43', '3.4664505850560548694738584086900914443255569895878005014e+22', '530273184289954189518.5089523282529263271210841900983888557445412827590714085887'); + BigNumber.config({ DECIMAL_PLACES : 22, ROUNDING_MODE : 4 }); + T('5.16100856441e+2', '-5.0370519862265e+11', '-1.0246089535154e-9'); + BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 1 }); + T('-4.95135753897440300264795475002319809451705381240974e+39', '2.184777681292882753920198900864664008599327e-18', '-2.26629811416067984345562413287852853979930711031611035973468110729161031126981816157094488689497444602047499196599601186590974461319820357390559074842389e+57'); + BigNumber.config({ DECIMAL_PLACES : 87, ROUNDING_MODE : 5 }); + T('-3.932045005016421154649997128305291e-6', '2.622399076807498727961567794397718405334902381654e-9', '-1499.407561492616791956478262232995884265937625066353358193977246295984075579666859225468475'); + BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 4 }); + T('6.30172613952970875248874131909101e+2', '-2.6e+0', '-242.374082289604182788028512272731153846153846153846153846153846153846154'); + BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 3 }); + T('-8.41861124685200027e+17', '-2.77206721227541e+0', '303694340799973203.752275895377743710946506301582496658266871992188449428054985826591630402898903113153'); + BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 5 }); + T('1.21206833215728249e+17', '1.5928896705390474161571665273782341880888055578535512044244e+58', '0'); + BigNumber.config({ DECIMAL_PLACES : 35, ROUNDING_MODE : 3 }); + T('-1.053225579742766915366615314411e+6', '3.09345240762224853620432797088401649834396e-10', '-3404693012724635.04568575235915201647242873033509164'); + BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 6 }); + T('1.2987171417713041713557e+11', '1.68677959286848e+14', '0.0007699388510876812161259955636331'); + BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 0 }); + T('1.783032440984945685916979530360287689256507019420087818e+18', '-9.267033171037568411642948e+22', '-0.0000192405962952360009362723308098137279090014853718249549865892138883510646'); + BigNumber.config({ DECIMAL_PLACES : 63, ROUNDING_MODE : 0 }); + T('-2.11838581655135078759766768460472012130443850785360184e-11', '1.5897957352314215965665614e+10', '-1.332489306396952929870210540676782805335446e-21'); + BigNumber.config({ DECIMAL_PLACES : 86, ROUNDING_MODE : 2 }); + T('3.19094543674759535237082144160273e+32', '-4.08504775370075839495270560808678e+22', '-7811280624.21505138546127214378605110955163023952028672708387664536780640954519661707996845144437'); + BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 5 }); + T('2.99107473509347466420766e+9', '-1.53223213095222162608077889209130635080873713238575177e-17', '-1.952102866577168107236205276312689895341796e+26'); + BigNumber.config({ DECIMAL_PLACES : 66, ROUNDING_MODE : 2 }); + T('-1.74651030764404584218588086228e-19', '-1.14054292582131505368564277890302398907011188260843e+50', '1e-66'); + BigNumber.config({ DECIMAL_PLACES : 25, ROUNDING_MODE : 6 }); + T('1.461822833e+0', '3.767444987610520280308812467274535e+28', '0'); + BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 2 }); + T('-7.1386062452483209193209013340616e-6', '-6.227610526881786675819e+21', '1.146283348072936881068691385623e-27'); + BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 4 }); + T('9.53891801776729633949828081875e-2', '-1.81e+2', '-0.00052701204518051360991703208943370165745856353591160220994475138122'); + BigNumber.config({ DECIMAL_PLACES : 31, ROUNDING_MODE : 5 }); + T('9.47965037782022360203486594312501138874278398004194e-16', '1.5520237238526e-9', '6.10792878493430317237482e-7'); + BigNumber.config({ DECIMAL_PLACES : 46, ROUNDING_MODE : 3 }); + T('1e+0', '3.8983452533897708872332163772e-16', '2565190959242152.9022261694154694291554926461590575667977171181'); + BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 5 }); + T('-1.7754154987340135666117878e-2', '1.02262900802191664769687352e+24', '0'); + BigNumber.config({ DECIMAL_PLACES : 5, ROUNDING_MODE : 3 }); + T('0e+0', '-1.3744668015242127431401259761110934144e-19', '0'); + BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 5 }); + T('-6.69499773e+7', '-9.86406756649029162033403642978948529e+22', '0'); + BigNumber.config({ DECIMAL_PLACES : 19, ROUNDING_MODE : 4 }); + T('6.353273438739760264986e+18', '5.04004625277681544592642510826e+7', '126055855841.3907767113746845185'); + BigNumber.config({ DECIMAL_PLACES : 88, ROUNDING_MODE : 6 }); + T('-2.2146491914941334757695450110654981781505636922e+46', '4.523610020347639999248024774017184509519e+39', '-4895756.224635689101122953685763963373709294052880849000519028725600095499408026447159827583816'); + BigNumber.config({ DECIMAL_PLACES : 93, ROUNDING_MODE : 5 }); + T('-1.95802524913126373e+11', '5.6383983540939670904760951220434e-1', '-347266213943.462735030282614146208821635386985096630007238164542137169952216554436390530508359637605313127'); + BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 1 }); + T('-4.601299777754390269332725663043751652144004007e+45', '2.8999365e+0', '-1.586689838813501698858828689195005356891091928e+45'); + BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 2 }); + T('3.2670288297194920916293403084801795935483101366442e+10', '8.73582400975299173120971217961456619798842466577323211486267e+25', '3.73980614315496998632020238263164481e-16'); + BigNumber.config({ DECIMAL_PLACES : 62, ROUNDING_MODE : 0 }); + T('5.587359189048561e+12', '8.920066368442599718685998559023767894000218624048517e+37', '6.263808987806989588543585714052610058e-26'); + BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 6 }); + T('4.528512804285449229605412379015082804414179764165833283297e+57', '-4e+0', '-1.13212820107136230740135309475377070110354494104145832082425e+57'); + BigNumber.config({ DECIMAL_PLACES : 89, ROUNDING_MODE : 1 }); + T('-5.523719227815053e-20', '-1.0303474885220394057724594633675775222e-3', '5.361025565984964481421869561904327597610484463313043345943157537408629749e-17'); + BigNumber.config({ DECIMAL_PLACES : 9, ROUNDING_MODE : 0 }); + T('9.7126292505708371633123283239842536332334151671341532997e+21', '3.3194161321735468899448693748821251468748e+2', '29260053165467468544.144218704'); + BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 1 }); + T('-6.5446955975447e+4', '6e+0', '-10907.82599590783'); + BigNumber.config({ DECIMAL_PLACES : 99, ROUNDING_MODE : 1 }); + T('-2.464332419375129399886092291737e+10', '-1.378108457819256487655182224112615546948045325296103e+10', '1.788199183738218375499640126965963740277215052109977583049493125687894567654235182444441167545321885'); + BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 2 }); + T('-4.24989012e+8', '-7.34892442887926696304402167094178923409659730807589645754857e-17', '5.783009692274276116779773058519352024209510356106677508267661452100083090256e+24'); + BigNumber.config({ DECIMAL_PLACES : 24, ROUNDING_MODE : 1 }); + T('-2.0857073684091818634816566588489236193e+25', '-3.25490553963201875e+18', '6407889.08622208485676236464659'); + BigNumber.config({ DECIMAL_PLACES : 43, ROUNDING_MODE : 0 }); + T('4.2646249911599555404172e+15', '1.458941841612e-14', '2.923094580965562736826241728893112238815704312811458370230803105343764351e+29'); + BigNumber.config({ DECIMAL_PLACES : 29, ROUNDING_MODE : 5 }); + T('-8.49153134135389217e-3', '-7e+0', '0.00121307590590769888142857143'); + BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 4 }); + T('-3.7764235766913070388899863245e+18', '4.877859241741152499859826e-4', '-7.741969149858682976220069342931526810701919058411659028482384960231882401179814940066886011919477e+21'); + BigNumber.config({ DECIMAL_PLACES : 96, ROUNDING_MODE : 5 }); + T('1e+0', '-1.7349253324073177725471862738414124194210875972551196e+22', '-5.7639368180326080420481413311031640097262083973593650987292179852881960481e-23'); + BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 1 }); + T('-1.43534747849737296056572131573194127824e+5', '-1.122018451224995e+15', '1.279254790266855450338427789083699050360013315114591e-10'); + BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 3 }); + T('-7.1113764119475409664353070527153519223202097714e-18', '-9.902654460258814948673195176633702328901e+39', '7.18128299890378950712010374e-58'); + BigNumber.config({ DECIMAL_PLACES : 33, ROUNDING_MODE : 1 }); + T('1.10642414595632939962196e+8', '-1.617925159306929545699359549838e+21', '-6.8385372437763945215e-14'); + BigNumber.config({ DECIMAL_PLACES : 73, ROUNDING_MODE : 5 }); + T('-1.624e-18', '1.8923764617463355584e+6', '-8.581801944954068023220089916103881418109861233054e-25'); + BigNumber.config({ DECIMAL_PLACES : 88, ROUNDING_MODE : 5 }); + T('6.76125485181390075072526964320536191870725828459902589e+22', '-1.28956e+4', '-5243071165214414800.9594510090304925080703947738756055476286485312819876547039300226433822389031917863457303'); + BigNumber.config({ DECIMAL_PLACES : 87, ROUNDING_MODE : 6 }); + T('-2.2355340587990218539463278578398755e-9', '7.97399675440677819488142631644085569e+13', '-2.8035301839865539017155254762313686053697449349347509769654621291e-23'); + BigNumber.config({ DECIMAL_PLACES : 74, ROUNDING_MODE : 2 }); + T('-3.0865461659e+0', '-5.43800304541790431794361e+1', '0.05675881642804049690144172578785289848769413859170687069097739576995019008'); + BigNumber.config({ DECIMAL_PLACES : 92, ROUNDING_MODE : 3 }); + T('1.7491233382556140373726225193151901714895209e+44', '1.8384802581085069249383293540103019e+2', '9.513963125473936686136768626407875007315988543167692537888369522767085885449264362978372422951346621578514055653462813311550886556816e+41'); + BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 2 }); + T('9.135051683450092943611092535397008607878286594802e+47', '-9.2992889427112771554525721544543848058942007340102961e+52', '-0.00000982'); + BigNumber.config({ DECIMAL_PLACES : 32, ROUNDING_MODE : 5 }); + T('9.807003773559935959e+18', '-1.1564748597058201e+0', '-8480083843806692154.26150147117891786825462590738147'); + BigNumber.config({ DECIMAL_PLACES : 39, ROUNDING_MODE : 2 }); + T('4.44195740191428904e+5', '-4.1082266283164660664339031e+7', '-0.010812347525566242766115410520090221259'); + BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 2 }); + T('1.4873797061005034026400224628055982535920783118669134359647e-2', '7.33003892209461338754e-12', '2029156627.8279372885425697'); + BigNumber.config({ DECIMAL_PLACES : 100, ROUNDING_MODE : 3 }); + T('9.56019018e+7', '7.150574912763037954e+9', '0.0133698203244274073349224559365942317776931757366570773919526123925774798700567246044503408726583176'); + + BigNumber.config({ DECIMAL_PLACES : 43, ROUNDING_MODE : 1 }); + T('3.3318037506614135742155502048e+28', '4.409578671034652100058731108267997839339882142974068e-20', '7.555832425776061243314759534752255703639735133310792905929045798613459137832579997789500013e+47'); + BigNumber.config({ DECIMAL_PLACES : 42, ROUNDING_MODE : 2 }); + T('1.927406136495888507993987941e+24', '1.438030590252297923893913048795149e+29', '0.000013403095522173357874079534560468176113'); + BigNumber.config({ DECIMAL_PLACES : 23, ROUNDING_MODE : 5 }); + T('3.24212326974135648418e-15', '7e+0', '4.6316047e-16'); + BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 3 }); + T('7.613303622309e+5', '1.078208490228870823391454915626976483e+36', '0'); + BigNumber.config({ DECIMAL_PLACES : 25, ROUNDING_MODE : 5 }); + T('3.20416228054285510572085206278236105463442970534e+12', '1.6960413350263732023625025547364237937819838557e+46', '0'); + BigNumber.config({ DECIMAL_PLACES : 99, ROUNDING_MODE : 0 }); + T('4.68376751747081772453555e+10', '1.010074941588327094331114419135254620957629904072800679e-7', '463704951447034845.052918206239065548768109656566239271394956911735230251515860184981176945397797111961613517631647983'); + BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 0 }); + T('2.8911413131575642260662731490594111942142882166e+35', '-3.461501273823146644845128038782335929483950196744381029515e-16', '-8.35227574527039456158017854200104316835171563747791527325880345e+50'); + BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 5 }); + T('8.593191363445046350756152e+0', '-1.570433736289043766632234946600540541686553633176108561786998e+47', '-5.4718586113355372590242787449103e-47'); + BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 6 }); + T('-2.68758e+4', '-7.0953708292053258e+10', '3.787793569488469121295862362727346329e-7'); + BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 1 }); + T('-1.531318158077305e-5', '-1.1380617052691314216353652177811558465991399982531118517422e+28', '0'); + BigNumber.config({ DECIMAL_PLACES : 62, ROUNDING_MODE : 5 }); + T('-3e+0', '1.14435432275196793315720126619108758e+33', '-2.62156566402050665387412562251e-33'); + BigNumber.config({ DECIMAL_PLACES : 28, ROUNDING_MODE : 0 }); + T('-2.675005685229929746166160572513230700756e+20', '4.14436597781000061858591078142577363785533e+14', '-645455.9514175622782476040846544677'); + BigNumber.config({ DECIMAL_PLACES : 86, ROUNDING_MODE : 0 }); + T('-2.790577035019601748887352496444737377e+3', '4.5815026890742697183857667572120302672207723872343345e+9', '-6.090964524967813080968480884101645435127413600350303568486651236063625995303792e-7'); + BigNumber.config({ DECIMAL_PLACES : 73, ROUNDING_MODE : 1 }); + T('1.2943858e+5', '-1.8466054547987821437798758500362545e+25', '-7.0095417331096560421575374461008227452969325188527599e-21'); + BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 4 }); + T('2.828495065320869006176625593653816409328638936862545e-9', '1.19269986839413e+3', '2.4e-12'); + BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 3 }); + T('1.210243877847039612e+3', '-1.82081562734910535203427760801450474e+20', '-6.646712932758673573125313203777193186183734559614460847922e-18'); + BigNumber.config({ DECIMAL_PLACES : 78, ROUNDING_MODE : 0 }); + T('5.8148830377197331282016541541289207399557003956e+7', '1.056229070997461188792e+9', '0.055053237951767283878863413034205894856371908333169733927057002882531331286728'); + BigNumber.config({ DECIMAL_PLACES : 58, ROUNDING_MODE : 6 }); + T('-5e+0', '-1.96568535828529880853418483305657775840927511e+38', '2.54364208337064997575e-38'); + BigNumber.config({ DECIMAL_PLACES : 22, ROUNDING_MODE : 4 }); + T('-3.2710975342156963031791144657528359522602e-9', '2.86112985684284809e+14', '0'); + BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 2 }); + T('3.8319e-20', '-2.520431557490889161632506613701323929471352731856219e+43', '0'); + BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 4 }); + T('-8.232343400551955e+2', '-5.20932026777726541853187791660407377644637694122e+32', '0'); + BigNumber.config({ DECIMAL_PLACES : 27, ROUNDING_MODE : 2 }); + T('-5.3494773221010117237806889955664072547846163248739e+30', '-2.59387637572e+3', '2.062348603879057547215513523296281812201359604151882946e+27'); + BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 5 }); + T('4.210650286098887243291899736898e+20', '8.91e+2', '472575789685621464'); + BigNumber.config({ DECIMAL_PLACES : 40, ROUNDING_MODE : 1 }); + T('1.7992317374233982019511957167830673053571616653993e-6', '-7.1959332e+4', '-2.5003452469839467130561964038e-11'); + BigNumber.config({ DECIMAL_PLACES : 94, ROUNDING_MODE : 0 }); + T('1.3039014922714903415878677282333717236e+29', '-2.0624030550460194576245255510741567877598483e+12', '-63222437975024999.1040068134919151909227671917526718093910435972967388054275054461833464065360630968298387832045'); + BigNumber.config({ DECIMAL_PLACES : 24, ROUNDING_MODE : 6 }); + T('-1.573715055172521211522215811309672084e+8', '7.55616231614213598442e+5', '-208.269090753994686855749971'); + BigNumber.config({ DECIMAL_PLACES : 36, ROUNDING_MODE : 6 }); + T('-6.112373e+0', '8.470579632143570229306087964378037933636252233195e+16', '-7.2160032317094208461e-17'); + BigNumber.config({ DECIMAL_PLACES : 9, ROUNDING_MODE : 2 }); + T('1.49502278e+3', '4.6797822e-4', '3194641.79337235'); + BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 1 }); + T('4.50192713240673e-10', '-1.83138737441661804498055171563795220495306455282233620356e+25', '-2.4582058363489608126459180746648559401468394e-35'); + BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 1 }); + T('3e+0', '1.23022804e+0', '2.4385722829078095147302934177959396861089266'); + BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 2 }); + T('6.52170109089127400063480207122874352e-8', '-5.0413201777893220182578778e+22', '0'); + BigNumber.config({ DECIMAL_PLACES : 25, ROUNDING_MODE : 6 }); + T('-3.4931500754729915735520354536278025e+29', '-7.0803342052231544601687791639049399601321e+40', '4.9335949041729e-12'); + BigNumber.config({ DECIMAL_PLACES : 35, ROUNDING_MODE : 3 }); + T('8.4219412111336339e-5', '-7.6558806514206402233358672597608123579466137963472512586e-1', '-0.00011000617165539070906639094386733'); + BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 1 }); + T('-4.56922805217674411421595300737838921234147e+20', '-1.932275643042776159425443488200888505533e+18', '236.46874961'); + BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 6 }); + T('5.801123356279104329877669712e+13', '-2.350209490371783634e+9', '-24683.4309028401326292537826872846360450510445427584138231002584049526379811646768'); + BigNumber.config({ DECIMAL_PLACES : 83, ROUNDING_MODE : 5 }); + T('4.24426294157757637883660684629212538512497004677855e+50', '1.279908447404359376917014937214444446e+31', '33160676063861412641.36535245328359337538382850511175806974077794093137694920622970215651558925266841197'); + BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 5 }); + T('-2.0683221e-17', '-1.90516529542282269709801887794794869648767e+20', '0'); + BigNumber.config({ DECIMAL_PLACES : 86, ROUNDING_MODE : 6 }); + T('6e+0', '1.46347633775982708214268078973949e+18', '4.09982713433161598924535233481218591703156500235191121565951808598073e-18'); + BigNumber.config({ DECIMAL_PLACES : 94, ROUNDING_MODE : 2 }); + T('3.7794660097004378210125529704e+25', '-2.5441044120856885168019828924e+6', '-14855781829339246591.910553049512291377540659463848859247436341904104744613787166122156914870056263571701180487512'); + BigNumber.config({ DECIMAL_PLACES : 59, ROUNDING_MODE : 5 }); + T('-1.104187257041818439239e-14', '4.40128334891945718931344238589210027216364e-9', '-0.00000250878475550296795217894008810765745975221390594190696'); + BigNumber.config({ DECIMAL_PLACES : 48, ROUNDING_MODE : 2 }); + T('5.1877e+1', '1.3103003307286068834323560431766615e+7', '0.000003959168656482993073974772012210824283071061'); + BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 5 }); + T('8.941988246622787e+0', '-2.4623932e-10', '-36314217593.7733543123819542711537702427053486015149814416316614259656012695291718641848101'); + BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 5 }); + T('-5.2980207337333299991336e+22', '-6.6721054945920543383019e+12', '7940553005.38568809625317549680403879186371719782517992'); + BigNumber.config({ DECIMAL_PLACES : 7, ROUNDING_MODE : 6 }); + T('1.97986576327700624189364e+12', '1.2738234105229773295825566509987595447e+37', '0'); + BigNumber.config({ DECIMAL_PLACES : 52, ROUNDING_MODE : 3 }); + T('-2.36098639281821977630122e-7', '-3.44105053573270000838e+3', '6.86123719573765841605056520283802613476492e-11'); + BigNumber.config({ DECIMAL_PLACES : 56, ROUNDING_MODE : 4 }); + T('1.9545095879018890682606501393047079e+25', '5.328035298266656e+11', '36683495481678.58865692194372424944324651254224135546474678950544604295'); + BigNumber.config({ DECIMAL_PLACES : 82, ROUNDING_MODE : 3 }); + T('-1.336328832747700384e+17', '3.2e+1', '-4176027602336563.7'); + BigNumber.config({ DECIMAL_PLACES : 87, ROUNDING_MODE : 0 }); + T('1.2109012176e+10', '-4.505350912330563840959e+8', '-26.876956782343406047377718209584885968315549384970878827735533366228049050624794771125792'); + BigNumber.config({ DECIMAL_PLACES : 43, ROUNDING_MODE : 6 }); + T('-1.2949718255003949992593932119645318518873397024460186994812e+58', '2.787410792558460107298e-3', '-4.6457875134787319856702667289116661936914494242107752084293825027756327684635140572075467335758747901525e+60'); + BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 0 }); + T('1.9490429982482747197036332363503105451858709648972245708e+54', '6.0215007600329310686543798206422037456738e+40', '32368060321188.360549790441674783101240846666105335140548032799057582305238605457126500639234346'); + BigNumber.config({ DECIMAL_PLACES : 35, ROUNDING_MODE : 4 }); + T('-1.026023269024557930061389334680380368568165403325606458453e+57', '1.69886247666782432351187596226043561704587122344198e+15', '-6.0394721945770217058474301798609392842488511074574372123312116821012732133654e+41'); + BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 6 }); + T('-3.355801690456180322565474221962100185437e+20', '-9.282519861920478765130512813646516e-18', '3.6151839590698079260797529944210854361538421082172978194176398159611253154831358534675096607851864773998555812639299853185e+37'); + BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 6 }); + T('1.49869192273892650013344991844921189991876948426242527860285e+53', '-1.3622712499e-17', '-1.1001420773204607436775135589310596225324989032218621430387202360057675911464598251741e+70'); + BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 2 }); + T('3.111382542600966e+7', '1.2278765640929304956960844431124430065711e+22', '2.5339538464922475814714512023890344085230033788141194e-15'); + BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 0 }); + T('2.1653520252665943178786e+17', '6.49511426520246649498515816434950910703808001489158217697032e+14', '333.38166764323979143092'); + BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 0 }); + T('-4.8518265967788457677179e+10', '3.31040075102353608004456225759708591728643e+41', '-1e-8'); + BigNumber.config({ DECIMAL_PLACES : 56, ROUNDING_MODE : 1 }); + T('1.36837237977959550903776758684897e+32', '-3.684358886866245e+0', '-3.714004041944658064199049240955945948602173333923450572441188770467590771374789961829588e+31'); + BigNumber.config({ DECIMAL_PLACES : 2, ROUNDING_MODE : 0 }); + T('2.177699358089344987360951436599809417975282339e-19', '5.2030070964887038064987783057875725501661362e+28', '0.01'); + BigNumber.config({ DECIMAL_PLACES : 64, ROUNDING_MODE : 3 }); + T('3.58e+0', '-2.688704424296120359588e-18', '-1331496302698729384.7866855593593000520490969183956809319751423410301220536455204387'); + BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 1 }); + T('-2.268454219458114757815396922012605631433386092870212e-14', '-1.09474933351269498569799972e+14', '0'); + BigNumber.config({ DECIMAL_PLACES : 62, ROUNDING_MODE : 3 }); + T('-2.05209700237419166454e-17', '-3.0709248036830196e-18', '6.68234207465149254405509695027088076277612556368445724782615834'); + BigNumber.config({ DECIMAL_PLACES : 80, ROUNDING_MODE : 3 }); + T('5.4046420290424507e-13', '-4.179004273853063242933752e+6', '-1.2932846378879969890777046684330924830051367063541337533428572e-19'); + BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 4 }); + T('1.58400755581268047025424145151705e-2', '-1.5959696941375685449138454859289511095574256562772715857e-4', '-99.250478353766473924218120396249692137210245799211978619596833861552441248020682855061'); + BigNumber.config({ DECIMAL_PLACES : 100, ROUNDING_MODE : 5 }); + T('3.81148895119210187169599028222884283678e-8', '-2.9701146466824373148364263300641847833857e+9', '-1.28328007656184718940443206263025883340647845055074820195999544885356710601702300166e-17'); + BigNumber.config({ DECIMAL_PLACES : 22, ROUNDING_MODE : 1 }); + T('4.49008e+3', '8.689657335003219286202e+14', '5.1671542696e-12'); + BigNumber.config({ DECIMAL_PLACES : 86, ROUNDING_MODE : 3 }); + T('-1.5946734525e+2', '4.52118414866581288924758024e+7', '-0.0000035271145789772422362885582265014191636438330246669572393487356540344090939917071'); + BigNumber.config({ DECIMAL_PLACES : 52, ROUNDING_MODE : 6 }); + T('7.610578634455773076134189379865470344862472011249194171555e+4', '-1.1649311077973715753657286470069e+23', '-6.53307185593635905748777479229977e-19'); + BigNumber.config({ DECIMAL_PLACES : 48, ROUNDING_MODE : 4 }); + T('-5.3575981042571e+3', '8.935729367186173155324128582899234399791777828857851e-3', '-599570.318672731586761585084863571675024043375304115163'); + BigNumber.config({ DECIMAL_PLACES : 40, ROUNDING_MODE : 0 }); + T('3.69e+2', '-1.2562490101300234257955e+17', '-2.9373157473119761056698685e-15'); + BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 4 }); + T('-1.2998177446296097240525082320413196107954665075371741e+11', '-3.4244164821e+10', '3.79573498557776'); + BigNumber.config({ DECIMAL_PLACES : 30, ROUNDING_MODE : 0 }); + T('4.94e+1', '4.56838323363482961321624179064445998936302930009827432492286e+52', '1e-30'); + BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 5 }); + T('1e+0', '8.64182125633251631363983155369011869087139429701476701641872e+21', '1.15716348480041094982762810567962182e-22'); + BigNumber.config({ DECIMAL_PLACES : 9, ROUNDING_MODE : 0 }); + T('3.993975408163954147285094514954904858958e-20', '-2.66722286349412e+10', '-1e-9'); + BigNumber.config({ DECIMAL_PLACES : 41, ROUNDING_MODE : 6 }); + T('1.5567622653e-15', '1.5028194e+7', '1.0358944430049279374e-22'); + BigNumber.config({ DECIMAL_PLACES : 37, ROUNDING_MODE : 6 }); + T('-7.557578e-19', '-3.2335604174153e+12', '2.337231e-31'); + BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 2 }); + T('-5.989911278884e+12', '2.51892127512023506793037001994892134251649740742753416e-12', '-2.377966845588727259761014826439802188708564602020039218024669479952070521178878e+24'); + BigNumber.config({ DECIMAL_PLACES : 45, ROUNDING_MODE : 4 }); + T('-2.57e+1', '4.0234895732828185373607611581807785e+24', '-6.387490145533303555459e-24'); + BigNumber.config({ DECIMAL_PLACES : 36, ROUNDING_MODE : 2 }); + T('5.2259107793005831331e-3', '1.091382034498148692899092300032e+11', '4.7883423165414473617416e-14'); + BigNumber.config({ DECIMAL_PLACES : 62, ROUNDING_MODE : 1 }); + T('-4.817248e+6', '-1.133686049927568668e+11', '0.00004249190505879272774206394758255254543582190221526241845546'); + BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 1 }); + T('3.277097445126e-16', '7.054516371862691529581300334768690678121626769965e-8', '0'); + BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 0 }); + T('1.3936248120801381090513747266745290193e-20', '-8.053893160077933179823e+15', '-1e-18'); + BigNumber.config({ DECIMAL_PLACES : 71, ROUNDING_MODE : 5 }); + T('2.32064033092970843664954948784087753583041216e+17', '-3.615111227e-15', '-6.419277818058980669502785087726645307531535488216390637764462896842426807024491033730509337935786837133e+31'); + BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 1 }); + T('2.12664997462592137369956190807051384300440311477378e+27', '-9.14978474014484923376370646832888975224932507538522e+50', '-2.324262302363470260550894902456257e-24'); + BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 0 }); + T('-9.3735010383806623635487882e+25', '-8.665913602716640014724e-10', '1.081651799002727629823101066135855439197703238337573085e+35'); + BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 1 }); + T('-9.33456e+0', '5.1097037422e+8', '-1.82682998290248703100241356298177282611694034976335657975360730493977013e-8'); + BigNumber.config({ DECIMAL_PLACES : 23, ROUNDING_MODE : 0 }); + T('1.38184839557403816707665402179456610830962367723975e+50', '1.808334881264795534220320555362652442384712765415479e-9', '7.641551406714768216514572188140965014291289611616667139389533705973792782997367661e+58'); + BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 6 }); + T('-1.82639748802688362350005077027638364644443085055233310644497e-4', '3.5662613126352735e-15', '-51213226624'); + BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 3 }); + T('-2.542623945989746270879379039368625760071115734461e+31', '1.6272411990956368505573932159726723197192155961194e-2', '-1.56253660944846209653465182532914837433289580415086647e+33'); + BigNumber.config({ DECIMAL_PLACES : 91, ROUNDING_MODE : 4 }); + T('1.82031740681354151338308744672598642687118944853e+39', '-3.346967552429e+11', '-5.4387064657752051191720999006371703872851135394439241613473988452882276091367826788182499328834158888173812160391519261e+27'); + BigNumber.config({ DECIMAL_PLACES : 32, ROUNDING_MODE : 3 }); + T('3.428418694506e+4', '-1.04e+0', '-32965.56437025'); + BigNumber.config({ DECIMAL_PLACES : 91, ROUNDING_MODE : 5 }); + T('-1.14710639e+8', '-2.0576450373023254344893212805631573278690023e+3', '55748.5071139341553810716080941416250951289073040366315795875490803975486957051493696543303812938'); + BigNumber.config({ DECIMAL_PLACES : 39, ROUNDING_MODE : 0 }); + T('6.06910031912579603075163650077301063386513e+26', '1.756285510243160873757e-17', '3.4556456132724788146966813135468468977660154057678872739735566302820030237952071583e+43'); + BigNumber.config({ DECIMAL_PLACES : 52, ROUNDING_MODE : 5 }); + T('-3.90605514022806485720221042500769324323736581269348671e-10', '4.0593180145965868644895e+18', '-9.62244181456733391599132e-29'); + BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 3 }); + T('5.528886e+2', '-5.68717521038400004816993491246491187773380607589632983e+25', '-9.721673406342421608577825911319271020373526164887944e-24'); + BigNumber.config({ DECIMAL_PLACES : 99, ROUNDING_MODE : 1 }); + T('3.72365020586868229145574e-1', '-8.3108274933427095592958647248003181967722856008189e+18', '-4.4804806848072209593189161771755027874320409513783904661342038898374406693370618e-20'); + BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 1 }); + T('3.7509490726672160635263349210882224671051512121008e+15', '1.837647987011687504484463752440466083881e-14', '2.04116843877529842620756656613070857883739e+29'); + BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 3 }); + T('3.92836158644157173487527367198e-17', '7.0684264028255533733e+5', '5.55761829092715321182515788486691969921469112592071527097e-23'); + BigNumber.config({ DECIMAL_PLACES : 70, ROUNDING_MODE : 0 }); + T('4.525555820719068749213427983578024137194e-9', '-7.68863767700660740960792346381123153785634e+41', '-5.8860308039394943225e-51'); + BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 2 }); + T('-8.349555462289792e-20', '1.55856431902488498069349393e-12', '-5.3572094268869746573743511666430217422115702015183538053811118e-8'); + BigNumber.config({ DECIMAL_PLACES : 6, ROUNDING_MODE : 2 }); + T('4.2245946745197906917e-8', '-1.79339610040587716162181818575234544017267244514968e-4', '-0.000235'); + BigNumber.config({ DECIMAL_PLACES : 70, ROUNDING_MODE : 6 }); + T('-5.774793154960727098877246652216e+13', '1.691693e+6', '-34136176.9243043926934570672823969833770075303261289134612485835195865916569969'); + BigNumber.config({ DECIMAL_PLACES : 80, ROUNDING_MODE : 4 }); + T('-2.598716034136613005772487787684e-14', '-1.386323758531479015699e+2', '1.8745376165877809319182601233019063485910918364572435866167922192e-16'); + BigNumber.config({ DECIMAL_PLACES : 43, ROUNDING_MODE : 5 }); + T('6.15351909311321460413200987189e+4', '-1.77785984015652589984070820009413104693967217257212e-3', '-34611947.2082312629657648446820718231446957271281771'); + BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 6 }); + T('1.155922507793e-1', '-3.147279429869929206271673543872831846173426e+22', '-3.672767333025691894852221764744712889587078925e-24'); + BigNumber.config({ DECIMAL_PLACES : 50, ROUNDING_MODE : 2 }); + T('5.31733118010839356e+6', '1.935732381107395542585851627989728462646323037201844002e-10', '27469350784256912.0963853112200350731237920925262619759828151961501'); + BigNumber.config({ DECIMAL_PLACES : 91, ROUNDING_MODE : 2 }); + T('8.42672444294536299766244e+8', '-2.138586073610043835580070416613103e-9', '-394032512739625979.2024324135574482589490533197844987891038312691855942329828833289849150130808872773028720332'); + BigNumber.config({ DECIMAL_PLACES : 91, ROUNDING_MODE : 4 }); + T('7.2670769588897391152727506230883844854371350081800514279088e+8', '-4.75262927699e+10', '-0.0152906455255694242124206820335606100073071102662976726391425999554964711798527610492179627'); + BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 6 }); + T('1.5404641671662e+9', '-1.67314046776792545248727858299826872766651259168209189e+21', '0'); + BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 1 }); + T('-1.28280080412952281488188135011754515997e-8', '-6.46426323073493705765e+12', '0'); + BigNumber.config({ DECIMAL_PLACES : 78, ROUNDING_MODE : 5 }); + T('-9.8111488972459283571522783e+13', '-3.07855e+4', '3186938297.979869859886075684981565996979097302301408130451024021048870409770833671696091'); + BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 5 }); + T('-1.4e-5', '-3.062e+0', '0.00000457'); + BigNumber.config({ DECIMAL_PLACES : 87, ROUNDING_MODE : 2 }); + T('1.4419041097349896276732463379735549e+34', '-1.164926376880634535235074260744069971461e-8', '-1.237764152611968817166836687782721198756269914503940580162683458101244387634455273758084293823955197903428019900662056642183151712e+42'); + BigNumber.config({ DECIMAL_PLACES : 70, ROUNDING_MODE : 2 }); + T('-1.784938664778507938329516604285042177139945071683147e+51', '-1.099701856021749e+10', '1.623111441528027108820050534401675955766726487475507603057000919657548788385756776790779714626195313056373415939e+41'); + BigNumber.config({ DECIMAL_PLACES : 67, ROUNDING_MODE : 3 }); + T('-1.144858097690765727e+16', '-2.16e+2', '53002689707905.8206944444444444444444444444444444444444444444444444444444444444444'); + BigNumber.config({ DECIMAL_PLACES : 6, ROUNDING_MODE : 4 }); + T('-1e+0', '-2.6291698157169478600461175327012358e+0', '0.380348'); + BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 5 }); + T('1.15736211783538299961215009168140190677434638e-9', '1.9143055086673123356012111887079535252803523218596770013e+37', '0'); + BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 5 }); + T('2.227835284218315528e+1', '2.65905579750147274874085364052e+29', '0'); + BigNumber.config({ DECIMAL_PLACES : 74, ROUNDING_MODE : 4 }); + T('2.03421376988479202905e+16', '9.209976974849011632657e+6', '2208706683.45850118768347641813970490676860303802841997904178048982249933515627383015'); + BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 3 }); + T('2.685671618673821738918519561777556033330658230560362e+17', '1.08826139e+7', '24678552812.333'); + BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 0 }); + T('-2.6701826994e+0', '-7.31279571226990573e+15', '3.66e-16'); + BigNumber.config({ DECIMAL_PLACES : 35, ROUNDING_MODE : 2 }); + T('1.08552531516619e+4', '-1.07303114356446695384e+20', '-1.0116438107846703008e-16'); + BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 4 }); + T('-6.31579e+2', '-4.17845218838432029530229954432e+4', '0.015115142439'); + BigNumber.config({ DECIMAL_PLACES : 49, ROUNDING_MODE : 0 }); + T('-6.0746933e+4', '-4.57624387176461434406270958623088e+30', '1.32744090354991914814633e-26'); + BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 3 }); + T('-7.72448118740403275367246115532129891374121010887153106508855e+42', '4.755600248544829343646447e-18', '-1.6242915265570637734914784332672954511258311352702689435212522270366305386890169933099848068590618456172508157831111829096991345e+60'); + BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 6 }); + T('-4.639777571042945259022505e+14', '-8.59e+2', '540137086268.09607206315541327124563445867287543655413271'); + BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 2 }); + T('-2.3020750134575195514445347821261626792634199431625859009935e+58', '-3.92222650207898488410757125871461098716339199e-2', '5.8693066609929323780891185838133305560007787678357007816777765392113192e+59'); + BigNumber.config({ DECIMAL_PLACES : 66, ROUNDING_MODE : 6 }); + T('5.4667729167235500549e+6', '-8.084528100293215e+11', '-0.000006762018572890206822727228569651954784466579079349434386312363'); + BigNumber.config({ DECIMAL_PLACES : 5, ROUNDING_MODE : 4 }); + T('1.2261103981e+10', '-2.44511071816705062e+17', '0'); + BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 0 }); + T('-1.42420272298234993917e+2', '6.0701464806431124872984632707962848259421e-9', '-23462411121.773460785160021677053026981460506372375450912428345721009'); + BigNumber.config({ DECIMAL_PLACES : 41, ROUNDING_MODE : 5 }); + T('-6.47604807276e+11', '2.2823408847663635566434482346535736e+3', '-283745873.19470175316528549855633658118846607902814'); + BigNumber.config({ DECIMAL_PLACES : 24, ROUNDING_MODE : 4 }); + T('3.6686723432538176880683939931e+0', '4.675771298e+4', '0.000078461329894878397623'); + BigNumber.config({ DECIMAL_PLACES : 26, ROUNDING_MODE : 6 }); + T('-1.969059638497421508330517785466147062462821526996807e+51', '-2.5463463850243090393472840670857777713422673888177093e+31', '77328821015001995292.29367118996203186569121349'); + BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 3 }); + T('-2.162750959e-18', '1.346407617425818703334204e+22', '-1.6063122e-40'); + BigNumber.config({ DECIMAL_PLACES : 74, ROUNDING_MODE : 2 }); + T('-2.11366520256529651274043289583154452957116941974142985549e+56', '3.73536883563683947771e+20', '-5.658518062259679756637010449252428818091256835404879088124450062541982995017890037759846913818031817732015006e+35'); + BigNumber.config({ DECIMAL_PLACES : 73, ROUNDING_MODE : 4 }); + T('1.299196051e-8', '-3.36293303690472426888379465586207695111083796846751e+48', '-3.8632825475341384e-57'); + BigNumber.config({ DECIMAL_PLACES : 87, ROUNDING_MODE : 5 }); + T('-1.7229451528342311e+0', '-4.2796707751658845459405876253306e-19', '4025882464679652680.838853081395701283716767471150976311912052472173814571991742097595184465006495719087477'); + BigNumber.config({ DECIMAL_PLACES : 85, ROUNDING_MODE : 2 }); + T('-6.3704067187468335042574242864413399048957e+23', '6.92328693184629368296786617657109666451713177238227180462e+56', '-9.20141947236611387943835667867777121331701406247027e-34'); + BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 3 }); + T('4.0920126568798e+7', '1.230215173840457585562464949514e+22', '3e-15'); + BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 3 }); + T('-1.4392495761263320428327632607036e-13', '-8.8105221351484e+7', '0'); + BigNumber.config({ DECIMAL_PLACES : 91, ROUNDING_MODE : 5 }); + T('7.311615200292e-18', '1.2980548030409449594783729777807e+7', '5.63274769536935134614744238279605697040141921685398829157345821849e-25'); + BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 0 }); + T('9.78202313986295301e+15', '9.495721316e+9', '1030150.6135590292854378035961307270530263316754651058674772085107810255369967093925'); + BigNumber.config({ DECIMAL_PLACES : 41, ROUNDING_MODE : 3 }); + T('1.178638053412398017349804491989080300091419784574666653e+41', '3.513321214208652230743796379439210700041087539130623036e+54', '3.354768839939040134522406983e-14'); + BigNumber.config({ DECIMAL_PLACES : 37, ROUNDING_MODE : 5 }); + T('-4.8276054039456529e-5', '-1.90531e+3', '2.53376374655339703250389700364e-8'); + BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 5 }); + T('2.14848e+1', '2.0459060458810641476956e+0', '10.501361997172077587912215021856201412580479851195420241531589174270660161526'); + BigNumber.config({ DECIMAL_PLACES : 88, ROUNDING_MODE : 0 }); + T('3.19625508716517448025423430147865686848240612016195869e+53', '-1.1735022756598883138466143036906865085125e-11', '-2.72368887002613098842940078785932598938717998816810055434831160880098180027836612617295784889970125440482607164750942622976437807108021919913989007909266e+64'); + BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 1 }); + T('-3.055638962466851605e-3', '1.5820727935000643428612810032474707340964284621402708323e-18', '-1931414897608330'); + BigNumber.config({ DECIMAL_PLACES : 27, ROUNDING_MODE : 1 }); + T('-1.0429888109030004449511599763176612630134143e-5', '-5.266e+1', '1.98060921174136051073e-7'); + BigNumber.config({ DECIMAL_PLACES : 63, ROUNDING_MODE : 4 }); + T('5.235397631786837277253237516187732524e+31', '1.88587089515897397697319410528959515274410701341e-7', '2.7761166712027267219109158409030121215419529279133001740936048442288253043150153240018380087223771821e+38'); + BigNumber.config({ DECIMAL_PLACES : 9, ROUNDING_MODE : 2 }); + T('-5.8461019782159550815368958600341261e-4', '7.2076431807321283281876422e+8', '0'); + BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 1 }); + T('-1.072e-3', '-6.2226250670741434772153726938779783680057864158642842154e-9', '172274.5607271579753419743717863649918294033827582277618188632134164'); + BigNumber.config({ DECIMAL_PLACES : 66, ROUNDING_MODE : 2 }); + T('-7.73893488393041297e+10', '-6.10866470979295972943143632499e+22', '1.266878319827232390385112091177376865310437875356269518e-12'); + BigNumber.config({ DECIMAL_PLACES : 22, ROUNDING_MODE : 2 }); + T('2.4737489791204767259e-12', '-1.143884367193056074400887e+14', '0'); + BigNumber.config({ DECIMAL_PLACES : 30, ROUNDING_MODE : 2 }); + T('1.9553328475186660527428982315682e-3', '-6.1316918035249630259e+19', '-3.1888961e-23'); + BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 6 }); + T('-5.8e+0', '5.71572737e+7', '0'); + BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 2 }); + T('-2.6158015369622294637737914312799631e+11', '-4.79524762718944093853339957196916e+25', '5.5e-15'); + BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 6 }); + T('1.748205863e-4', '3.709125e+5', '4.7132568005e-10'); + BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 5 }); + T('5.27080240759242341930529800890535386287151e-4', '-1.21165044367497757e+15', '-4.350101495944571269652287362406913422019342444300166647938421e-19'); + BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 5 }); + T('-6.465427426796690642535274540554e+24', '-3.77672269521317591659882076480051580503324712593716e+49', '1.7119147865929700297374476718162274922554875e-25'); + BigNumber.config({ DECIMAL_PLACES : 32, ROUNDING_MODE : 2 }); + T('2.8100453117403708438123384663111215155383804364678e+45', '-3.94730870352644146620787352135044335555948561891531562385e+56', '-7.11888915409614721336e-12'); + BigNumber.config({ DECIMAL_PLACES : 25, ROUNDING_MODE : 0 }); + T('4.1091099251787326266016993438615107e+14', '-1.9e+1', '-21626894343045.9611926405228624290036843'); + BigNumber.config({ DECIMAL_PLACES : 46, ROUNDING_MODE : 5 }); + T('9.95162962414437928450981522639092732e+29', '4.1032732859603383051255272667330592866100735872e+46', '2.42529047679925124426201614222e-17'); + BigNumber.config({ DECIMAL_PLACES : 5, ROUNDING_MODE : 5 }); + T('-5.662275259502836253952138202643053155538145629955540451e+54', '-3.3185355084674883678993558701e+4', '1.7062572466243386172956620385621631889894058325383320594e+50'); + BigNumber.config({ DECIMAL_PLACES : 35, ROUNDING_MODE : 3 }); + T('-1.29748e-2', '-4.213764157130912855545319551064177966919710413480493739e-14', '307914717487.04468489533944253009776146027385757'); + BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 0 }); + T('-1.81210430800593779617463855797503218374273474184e+10', '-1.5381177430741651185153e+21', '1e-8'); + BigNumber.config({ DECIMAL_PLACES : 5, ROUNDING_MODE : 5 }); + T('-4e+0', '3.51907189e+8', '0'); + BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 0 }); + T('2.21863744069006666052582901465058740629316730146e+29', '-4.434978186087176856273181524060536005e-2', '-5.00258929716966968574514059093375857855938000892977e+30'); + BigNumber.config({ DECIMAL_PLACES : 96, ROUNDING_MODE : 2 }); + T('4.0823393171235391e+8', '-2.70368626550359e+0', '-150991606.134566078089942091981107157749027602664234117257801855530801967355204002288184430484464218207776'); + BigNumber.config({ DECIMAL_PLACES : 91, ROUNDING_MODE : 0 }); + T('8.9442747523676788161885e+23', '-3.347090181217279032480999e+20', '-2672.2538886343361648200670897806551533769728165657196755425922348996478640782629610772688435675'); + BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 3 }); + T('7e+0', '5.40420500449420503453976209161094304222357223444553e-6', '1295287.649'); + BigNumber.config({ DECIMAL_PLACES : 94, ROUNDING_MODE : 6 }); + T('7.028445511182081995541013996e+16', '2.5102253272559340041211147747147949646909125381e+6', '27999261400.4307896431180085870678681760607552765970091244053029051440662128452174301577242980052539945281'); + BigNumber.config({ DECIMAL_PLACES : 40, ROUNDING_MODE : 2 }); + T('1.0601310955955936e+16', '-7.2898305260362985312824427257374333612356534e+5', '-14542602764.3473758416740179124382758595781429079155'); + BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 3 }); + T('2.6452e+2', '-9.262837255477826144094831326216435505e+31', '-1e-8'); + BigNumber.config({ DECIMAL_PLACES : 27, ROUNDING_MODE : 3 }); + T('-3.90089408676e-18', '-1.1110298778e+6', '3.511e-24'); + BigNumber.config({ DECIMAL_PLACES : 100, ROUNDING_MODE : 3 }); + T('1.76885047079958774536252123376129099042783874e+19', '2.0249e+4', '873549543582195.5382302934632630208851932632426292656427477900143216948985135068398439429107610252358141142772482591'); + BigNumber.config({ DECIMAL_PLACES : 25, ROUNDING_MODE : 6 }); + T('1.205615202635851546016358551966522959e+10', '2.317193323336e-5', '520291160212804.4437597649071351315775402'); + BigNumber.config({ DECIMAL_PLACES : 32, ROUNDING_MODE : 0 }); + T('-6.93454822e+4', '-4.54e+1', '1527.4335286343612334801762114537445'); + BigNumber.config({ DECIMAL_PLACES : 100, ROUNDING_MODE : 2 }); + T('-1.000540476280478315611880144301369064767813323703682e+20', '1.11376484621317482894663758902611128309813223360678264153063e+60', '-8.98340865832081267900200821906540144497392493110197807657652e-41'); + BigNumber.config({ DECIMAL_PLACES : 67, ROUNDING_MODE : 0 }); + T('-2.09732713097906379e+4', '1.8738082589245579420186976880043274021077e+22', '-1.1192858826349665590066119362490655013062474034902e-18'); + BigNumber.config({ DECIMAL_PLACES : 86, ROUNDING_MODE : 3 }); + T('-7.325490256622605586102477749e-10', '-2.01836618685087474230579595304693534161075899e+44', '3.62941586335831891440877527969515e-54'); + BigNumber.config({ DECIMAL_PLACES : 99, ROUNDING_MODE : 5 }); + T('-1.07615286e+0', '-2.5086e+3', '0.000428985434106673044726142071274814637646496053575699593398708442956230566850035876584549150920832'); + BigNumber.config({ DECIMAL_PLACES : 21, ROUNDING_MODE : 2 }); + T('2.8801864061246439586279437265e+23', '-3.3994521624931466142002006645121e+7', '-8472501651596488.647098961804323876901'); + BigNumber.config({ DECIMAL_PLACES : 19, ROUNDING_MODE : 6 }); + T('-9.01310398074547316210886740036851e+3', '-4.5432397897061668151e-6', '1983849499.0220170568564192178'); + BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 0 }); + T('3.05550985358647261837693896034e+26', '-5.135592160467994682089e+21', '-59496.738800770173400470178228695939682394147624700173086171296'); + BigNumber.config({ DECIMAL_PLACES : 32, ROUNDING_MODE : 4 }); + T('0e+0', '-4.036945190420874470896353212870113317735715917770409396e+6', '0'); + BigNumber.config({ DECIMAL_PLACES : 85, ROUNDING_MODE : 6 }); + T('9.854805535179212555e+18', '-1.842054701412308148e+6', '-5349898419207.3706750299601276764078545373755077227976997140507734858192986995853282700724558629675'); + BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 2 }); + T('3.533950028682898427434589041553550780382377037931e+11', '-4.703043653970614710075546551856999e+25', '-7.5e-15'); + BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 6 }); + T('-2.8893237276749756486832134401e-15', '3.47524817021873e+10', '-8.31400690297499926658314384823351160733821320338308749502169143569793e-26'); + BigNumber.config({ DECIMAL_PLACES : 53, ROUNDING_MODE : 6 }); + T('-9.2119401062083750377874543076152147065706490670276e+43', '5.1085134426188e+1', '-1.80325259190979384994905409769630200591653398369710089350259831754409469186314303226122099174008e+42'); + BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 0 }); + T('9.85435328017809475871047819e+21', '-6.4468990417108467350708881124035910396252834805284361336e+15', '-1528541.585097165470490586829378750375239139730251327009191430390850332646044757932499986836'); + BigNumber.config({ DECIMAL_PLACES : 32, ROUNDING_MODE : 6 }); + T('4.8547e+3', '-2.034883593978042e+10', '-2.3857384345555768653693177e-7'); + BigNumber.config({ DECIMAL_PLACES : 72, ROUNDING_MODE : 4 }); + T('5.09933664998801e-2', '1.3600202443658585323419450478123982236493e+10', '3.749456429867847888805749393845466979832830382443844946011887e-12'); + BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 4 }); + T('-2.0626276758825054218624959260323599847854085167218e+42', '3.90493254708352738202395963395851075307503752752600737325e+40', '-52.821083360915359591'); + BigNumber.config({ DECIMAL_PLACES : 78, ROUNDING_MODE : 5 }); + T('3.3614492849204607400899018296211328810873509076824651674e-19', '-2.05637675978488e+4', '-1.6346466030242949824683333642856967292377346202240131516e-23'); + BigNumber.config({ DECIMAL_PLACES : 98, ROUNDING_MODE : 6 }); + T('-1.327840561633609171e+10', '-1.68337150906924141010847687584268206471e+10', '0.78879828634369008164222932703291468220520738947940911557353509777338380422921516801816530761381176'); + BigNumber.config({ DECIMAL_PLACES : 89, ROUNDING_MODE : 0 }); + T('2.264640581420576317136612420218282480151e+32', '-2.277031177344401e+15', '-99455844256894397.14498145176283613575069089711077166526831139989697571258335110077879328814331944158977699'); + BigNumber.config({ DECIMAL_PLACES : 62, ROUNDING_MODE : 3 }); + T('-1.097819795140174e-16', '4.623262828779684541770610129425780534989133474553e-1', '-2.3745563161719377695558896468884011275554102797e-16'); + BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 6 }); + T('1.950161534442643877e+4', '-1.8647021196871283689033513400747765322e+14', '0'); + BigNumber.config({ DECIMAL_PLACES : 35, ROUNDING_MODE : 0 }); + T('4.54103601948189675e-3', '2.7153406046494129061305835593512e-11', '167236331.66706192076722437510852038974559134'); + BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 5 }); + T('-3.14319239703203891591894401472767482245349e-10', '2.22833373138665984792024877290559690632614914754855546378e+18', '0'); + BigNumber.config({ DECIMAL_PLACES : 82, ROUNDING_MODE : 3 }); + T('-8.482182257009733601127348485938999598952298941625177303281e+51', '2.678446652672185206934378e+21', '-3.1668288963483294585736922680211793192544444504919321066041506951852944602150905624323838423181244366766182125854e+30'); + BigNumber.config({ DECIMAL_PLACES : 60, ROUNDING_MODE : 6 }); + T('3.03057424645355458935993296939654221010182508767e+15', '-1.27383754710059e+11', '-23790.90060072033596774869684302811705830339493188550321778326199'); + BigNumber.config({ DECIMAL_PLACES : 24, ROUNDING_MODE : 4 }); + T('-5.189606428216710646374474712844057366247285825e-20', '-6.151584349959e+11', '0'); + BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 5 }); + T('6.22128400479128228713648738e+13', '-4.18313671e+2', '-148722942521.074867934127053189232249595782395550730160095580524'); + BigNumber.config({ DECIMAL_PLACES : 19, ROUNDING_MODE : 2 }); + T('-3.8595315383258477818067515337e+10', '1.971181644930613279741933670615e+6', '-19579.7863086418172148604'); + BigNumber.config({ DECIMAL_PLACES : 77, ROUNDING_MODE : 1 }); + T('2.8396398271407e+0', '1.4007844376000654192455329647488e+6', '0.00000202717830875234117001620851700028775551551407730035446218333265226599654'); + BigNumber.config({ DECIMAL_PLACES : 64, ROUNDING_MODE : 6 }); + T('-7.7520935694483e-12', '-5.811218295358714775930720760317677065173729725450245e+48', '1.334e-60'); + BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 5 }); + T('1.50695374547572420215832303185808273893758272e+12', '6.305892936498348549057922004629926844851005e+27', '0'); + BigNumber.config({ DECIMAL_PLACES : 45, ROUNDING_MODE : 4 }); + T('-3.593197265003281415677274812670346090799679252631541222e-7', '9.4699129890580005588330029e+13', '-3.794329756941839723008402e-21'); + BigNumber.config({ DECIMAL_PLACES : 78, ROUNDING_MODE : 6 }); + T('5.61212e+4', '5.4286597601163741158408129842555370439294730106573068454731e+22', '1.033794757452195355330324303764289237030962656486403993662125e-18'); + BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 3 }); + T('5.43324599201528989062433389997237462e+24', '-7.6578845958564448000794923672884e+30', '-7.0949697974753103362057861344478822879106e-7'); + BigNumber.config({ DECIMAL_PLACES : 92, ROUNDING_MODE : 0 }); + T('-8.0268001304860409453540737281708342471481415465263912002e+55', '3.76613794e+3', '-2.131308055723004385058204673239035489801560891985382564134121970051898842558060950895494815572262337263196472299153227510301972635659754937175775e+52'); + BigNumber.config({ DECIMAL_PLACES : 1, ROUNDING_MODE : 5 }); + T('1.65912563233027009212316750725127535421346362238679e+31', '5.00084767174e+12', '3317688802452549490.5'); + BigNumber.config({ DECIMAL_PLACES : 66, ROUNDING_MODE : 2 }); + T('6.29619522511557655893144564090950412200822974489733361793257e+59', '4.83663548471053818776077e+23', '1.301771705769220223964253908610690647447402401224339405695974291376778946059439568904350141363888987527e+36'); + BigNumber.config({ DECIMAL_PLACES : 31, ROUNDING_MODE : 5 }); + T('-7.59981586158762368120877895474e-14', '-5.79870405622771193021486650702240911193708505587921510736e+56', '0'); + BigNumber.config({ DECIMAL_PLACES : 80, ROUNDING_MODE : 2 }); + T('1.23272599279637618024818738552421012527125699145e-12', '1.77359653124e-1', '6.95043078334463567716527141353685705504107361229956213364295596264092e-12'); + BigNumber.config({ DECIMAL_PLACES : 33, ROUNDING_MODE : 3 }); + T('7.27406134142945150641791270976329497152745026788316643e+44', '8.28398856173702973902816689427e+8', '8.78086840320816250780937534540864901377022634486000430685076863358228e+35'); + BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 1 }); + T('-1.15526910572109520014120828078320325e+12', '-1.87506634901088457571527422878972322588052606480450184412e+13', '0.06161217208823'); + BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 5 }); + T('5.779678960222114244851358841240102681019064478928174e-8', '-3.301461021906077298e+12', '0'); + BigNumber.config({ DECIMAL_PLACES : 36, ROUNDING_MODE : 5 }); + T('7.890144170165107e+9', '-4.5462749851861763414053e+6', '-1735.518462010056904268322534763888763092'); + BigNumber.config({ DECIMAL_PLACES : 63, ROUNDING_MODE : 1 }); + T('-4.486939667327684e-12', '-2.414777748926455346445236405126297401829664670083955e+16', '1.85811703347128140755899041612747011e-28'); + BigNumber.config({ DECIMAL_PLACES : 40, ROUNDING_MODE : 6 }); + T('1.69813797606256583369528488206381209609e+36', '-1.241184493412634072e-15', '-1.3681591939595854541082341194728109793123233230082324815562626769079159245714700393138326638e+51'); + BigNumber.config({ DECIMAL_PLACES : 6, ROUNDING_MODE : 4 }); + T('1.037856939226e+6', '-1.7260192022757165658e-1', '-6013009.228736'); + BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 4 }); + T('-6.2916731388585446e+4', '3.409559207090871e+15', '0'); + BigNumber.config({ DECIMAL_PLACES : 64, ROUNDING_MODE : 3 }); + T('4e+0', '-3.6143242169244e+5', '-0.0000110670757793936644308858252687780301559813329496312280528851'); + BigNumber.config({ DECIMAL_PLACES : 77, ROUNDING_MODE : 5 }); + T('-4.0652283761994923639772088e-9', '4.40003313970616097215733317074853572661738e+20', '-9.23908581395587571267698603933113078251391549321e-30'); + BigNumber.config({ DECIMAL_PLACES : 66, ROUNDING_MODE : 5 }); + T('-1.4532417515294380505352650897484235322033e+32', '-6.36472788019403503294418758859e+0', '2.2832739731916622592109626251683363405458816780749956302804925979964396612102562039198125387287842e+31'); + BigNumber.config({ DECIMAL_PLACES : 83, ROUNDING_MODE : 6 }); + T('1.027682523873433086499307183027840763990090057368e+45', '2.1324206985991e+13', '4.8193235253651970231189259886502279111251381373174655529127237852621833725276596154661218376404290590268970230831e+31'); + BigNumber.config({ DECIMAL_PLACES : 49, ROUNDING_MODE : 5 }); + T('-2e+0', '-2.5035639762053087275972004063124392679e+35', '7.9886115114639e-36'); + BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 4 }); + T('-1.79721496577102199881852495383e-18', '-2.2890351902837533341e-4', '7.851e-15'); + BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 6 }); + T('3.57212712587e+2', '6.0561621641945475976110735578765694561760098642903113978e+56', '0'); + BigNumber.config({ DECIMAL_PLACES : 26, ROUNDING_MODE : 6 }); + T('-4.4563487830150478121e+18', '1.7964872213975340578e-9', '-2.4805903041984002416305935836523769205637042815086311e+27'); + BigNumber.config({ DECIMAL_PLACES : 33, ROUNDING_MODE : 1 }); + T('-3.6908474693475246852869164343969127157121506046453749e+18', '-2.302314698129360813e+14', '16031.02943462226025018387751703775005'); + BigNumber.config({ DECIMAL_PLACES : 71, ROUNDING_MODE : 0 }); + T('4.70612309822188583854333927819099e+20', '-7.8e+1', '-6033491151566520305.82479394639870512820512820512820512820512820512820512820512820512820513'); + BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 5 }); + T('-3.3404e-7', '2.814e+0', '-1.1870646766169154228855721393034825870646766169154228855721393e-7'); + BigNumber.config({ DECIMAL_PLACES : 72, ROUNDING_MODE : 4 }); + T('1.4232379e+0', '1.160447e+0', '1.226456615424918156537954770877084433843165607735639800869837226517023182'); + BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 4 }); + T('6.34747778812125612400341e+12', '-1.114613622311774629531806057e-9', '-5.694778586104314307451623003877758027242e+21'); + BigNumber.config({ DECIMAL_PLACES : 99, ROUNDING_MODE : 2 }); + T('-1.5333619222084748e+16', '-6.8177e-1', '22490897549151103.744664622966689646068322161432741247048124734147879783504700998870586854804406178036581251741789754'); + BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 1 }); + T('2.3798179e+2', '-1.69664275473136514529862e+23', '0'); + BigNumber.config({ DECIMAL_PLACES : 32, ROUNDING_MODE : 0 }); + T('1.14555654155595629134970722126157447106857457471520603749077e+59', '-6.92758316413895333566234090597691893454713893688e+18', '-1.653616440847650774320636232067498389455369509931511155041982279141599701e+40'); + BigNumber.config({ DECIMAL_PLACES : 22, ROUNDING_MODE : 1 }); + T('7.2332394047727069252432e+15', '-7.443809298201294676811451832760234274114924e+22', '-9.71712078454311e-8'); + BigNumber.config({ DECIMAL_PLACES : 83, ROUNDING_MODE : 0 }); + T('-6.69432533125189126694700254305655589577926e+29', '1.761844828827825012882e+21', '-379961119.26075240506254660712250901049329503462732131412483909000949311283883066594438175141'); + BigNumber.config({ DECIMAL_PLACES : 82, ROUNDING_MODE : 1 }); + T('-2.4130178835595964742558296142893859210087294e+17', '3.452338636132145425323899644612127470638470539166e+9', '-69895167.8234855871611150701480683220184527263906806394812898006382582632511354794025916677'); + BigNumber.config({ DECIMAL_PLACES : 72, ROUNDING_MODE : 1 }); + T('2.54963813404581306453e+14', '1.97713211157275048109303526074293e+21', '1.28956386835356736489233961106561299388588390847735105300452516168e-7'); + BigNumber.config({ DECIMAL_PLACES : 32, ROUNDING_MODE : 2 }); + T('-1.38746455209878402530134727e-11', '8.591127845937769823840816001868213375681e+4', '-1.6149969794185206e-16'); + BigNumber.config({ DECIMAL_PLACES : 25, ROUNDING_MODE : 4 }); + T('1.6639521425931124147154451392666164491148e+42', '1.92920892e+3', '8.625048979107521515686570323687993569482355493152084326875287307e+38'); + BigNumber.config({ DECIMAL_PLACES : 53, ROUNDING_MODE : 4 }); + T('2.4973209182169190724188217024082110092149e-9', '-3.0444646040999073994696e+11', '-8.20282461111171054659002141171005e-21'); + BigNumber.config({ DECIMAL_PLACES : 41, ROUNDING_MODE : 4 }); + T('-2.73630880347215358546735836781048e+15', '-8.036043764974990414103e+21', '3.4050446755881617093172747681483411e-7'); + BigNumber.config({ DECIMAL_PLACES : 89, ROUNDING_MODE : 6 }); + T('-6.36544404446311263506812929513680206971497e+24', '2.2525981254462389259878050694e+22', '-282.58232005773867564641848251847016818783380658176288449307102227688676344764727767543689563'); + BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 2 }); + T('1.82819051068994851460438950430873895607034685720211e+21', '3e+0', '609396836896649504868.12983476957965203'); + BigNumber.config({ DECIMAL_PLACES : 19, ROUNDING_MODE : 4 }); + T('1.9e+0', '1.490741470608424941842587258396915e+34', '0'); + BigNumber.config({ DECIMAL_PLACES : 26, ROUNDING_MODE : 5 }); + T('-1.05090161972829793575e+21', '3.0801485282516284311082114134926e+1', '-34118537144856996195.32516231868303177883022873'); + BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 6 }); + T('-6.670538194815167235e+16', '-2.121809310490570685732947018575045526339034042864558885e+16', '3.1438'); + BigNumber.config({ DECIMAL_PLACES : 90, ROUNDING_MODE : 6 }); + T('1.080569073506090886211002e-3', '1.43592011644804083349241749576879897163092e+24', '7.52527289734638644823125069382789901359916933678021640548942272e-28'); + BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 4 }); + T('4.91002487656425188852377e+10', '-2.00440623806984556707345967912764990117408e-15', '-2.449615643429841039437233555809862374219296807179812453696159563073898964604846077002445010021825873988315017006372132032e+25'); + BigNumber.config({ DECIMAL_PLACES : 50, ROUNDING_MODE : 6 }); + T('-2.943175455433610227235e+4', '-7.6636558611466733e+7', '0.0003840432697865478087537804611869058628495472052'); + BigNumber.config({ DECIMAL_PLACES : 21, ROUNDING_MODE : 3 }); + T('-1.51719645208215782237668048533727734233585519889994141360149e+42', '-2.550879672562988876522596686423987946305852704705e-16', '5.947738219097410944418174596769874078850050143335315073796851720454311263758574e+57'); + BigNumber.config({ DECIMAL_PLACES : 19, ROUNDING_MODE : 4 }); + T('2.6110108987009436226076959234686217260439596606e+1', '-8.58789365411570256e+10', '-3.040339114e-10'); + BigNumber.config({ DECIMAL_PLACES : 24, ROUNDING_MODE : 3 }); + T('1.389064720277617509178597341196915e+10', '7.026036063398392990615443927690670946276717057e+17', '1.9770247515720077e-8'); + BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 3 }); + T('-2.05140355659764717008738511843296414524e+22', '6.071199089905871458444031228126412896e+18', '-3378.910041030218229111779009199060737204635943241522624672434450684440479549413131683'); + BigNumber.config({ DECIMAL_PLACES : 94, ROUNDING_MODE : 1 }); + T('-1.314e-19', '4.2648981383367708469278923711170719537e+11', '-3.0809645561955554862199629702128680637642401845537793412218119e-31'); + BigNumber.config({ DECIMAL_PLACES : 52, ROUNDING_MODE : 3 }); + T('-4.0597813580991029477169989484145e+26', '9.34538682240575579505385728753057530742998792678602492e+35', '-4.344155501798699457589993145799674244161193e-10'); + BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 0 }); + T('1.0018200401275595903339115682344558572633270804e+46', '8.81139267321976617930455357798e+2', '1.13695993049131140037125767625346721458195947241e+43'); + BigNumber.config({ DECIMAL_PLACES : 88, ROUNDING_MODE : 1 }); + T('-1.2280735669143165475446e+5', '1.10102560960248605863427422923e+27', '-1.115390556045013197867542463885541168664479231181377587454975483215e-22'); + BigNumber.config({ DECIMAL_PLACES : 36, ROUNDING_MODE : 2 }); + T('6.7082192809678563962162194594386435875e+25', '-1.71790824342059386152717e+7', '-3904876355684084910.111760388367215781609213982133097404'); + BigNumber.config({ DECIMAL_PLACES : 9, ROUNDING_MODE : 4 }); + T('4.1278125780422546665953395041944509872760679487138e+5', '-1e+0', '-412781.257804225'); + BigNumber.config({ DECIMAL_PLACES : 26, ROUNDING_MODE : 2 }); + T('8.259835298888e-7', '5.34066490685461e+3', '1.5465930634005343e-10'); + BigNumber.config({ DECIMAL_PLACES : 43, ROUNDING_MODE : 2 }); + T('1.8426220886667036290616536083832917e+34', '-7.997381733e-10', '-2.30403168209840362894886164161959192551150415368074315229139006512395523786359692579151e+43'); + BigNumber.config({ DECIMAL_PLACES : 60, ROUNDING_MODE : 5 }); + T('5.6424531566839249211071e+19', '5.74748066963653937414895457337104216909762130207398e+46', '9.81726339071053159491586530524973e-28'); + BigNumber.config({ DECIMAL_PLACES : 31, ROUNDING_MODE : 3 }); + T('-1.2399471396360879396835759940372784823940663087864749e-5', '4.3878248953086319241675053635098078071996e+9', '-2.8258810896529002e-15'); + BigNumber.config({ DECIMAL_PLACES : 90, ROUNDING_MODE : 0 }); + T('-6.34300658631121962368858167366881418759032e-2', '-1.28352450068574604586716824026e+29', '4.94186638659593509113113820093381910926216553909442703098435e-31'); + BigNumber.config({ DECIMAL_PLACES : 91, ROUNDING_MODE : 0 }); + T('-3.9689842428210670859875967578916064e+34', '1.8182473825584777881158730317543760768228627e-7', '-2.182862618636778435339722244875608102637560298183181002104515521142307254849808669727348070645458076424429253554156891803466219779535e+41'); + BigNumber.config({ DECIMAL_PLACES : 22, ROUNDING_MODE : 4 }); + T('3.08018795632501172706224e-18', '2.242798713829312142486513346099279818835760163581229e+37', '0'); + BigNumber.config({ DECIMAL_PLACES : 85, ROUNDING_MODE : 2 }); + T('4.6669078251e+7', '5.390164254506657335728203599108065232e+19', '8.658192227069981120840641782285236543019935288576784630651117737363166435e-13'); + BigNumber.config({ DECIMAL_PLACES : 90, ROUNDING_MODE : 0 }); + T('-4.763038967035678667425654945213259439774075261381900617e-7', '9.33901257284945472465207267726e+29', '-5.10015264449142214024921307797244918252984355641012968e-37'); + BigNumber.config({ DECIMAL_PLACES : 63, ROUNDING_MODE : 6 }); + T('-2.133605981326826293923435937504e+30', '-1.1177891405212282285363353987352004e+2', '1.9087732238406966521282892577807343845745802496660390850671364235934118591781436272865639003e+28'); + BigNumber.config({ DECIMAL_PLACES : 23, ROUNDING_MODE : 3 }); + T('2.76527585809449777563633644930595716244546e-13', '3.0001024020092905128037424559480878163977551122471405142e+42', '0'); + BigNumber.config({ DECIMAL_PLACES : 72, ROUNDING_MODE : 0 }); + T('-1.7110132882492383935588586899931425895061e+40', '-9.6191187870121269195067e-4', '1.7787630303094637331562594685783036737284333105369588976017725202974330352216606884531691618914227170195381448911471e+43'); + BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 2 }); + T('-1.08910400379894844349196871748334229714615028018338e+50', '3.985827e-5', '-2.73244173367019803792780950473601161602385221481860602580091910662454742767310272121695196505016399357021767377259474633e+54'); + BigNumber.config({ DECIMAL_PLACES : 93, ROUNDING_MODE : 5 }); + T('-1.302156069877990534483599036592e+26', '2.166149780191755666818104e+15', '-60113851857.590328633878193952382064059805466930609831940013328243809182135262639138999955674993301153625'); + BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 6 }); + T('-1.69865537226e+9', '2.0093306401845017188353741269846253715367437218264014569e+42', '0'); + BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 4 }); + T('-6.4287101918646874743716276949902581737092170275369e-3', '1.51741940421415733729533709131599e+15', '0'); + BigNumber.config({ DECIMAL_PLACES : 77, ROUNDING_MODE : 1 }); + T('5.4829493429020796197e+0', '-2.137430148e+2', '-0.02565206328745990729658221326819237884165934390104803555900812530319002499631'); + BigNumber.config({ DECIMAL_PLACES : 30, ROUNDING_MODE : 3 }); + T('-3.0832216252080367540171446752324273e+15', '5.5264698627899400048493474087565807463187e+34', '-5.5790073985e-20'); + BigNumber.config({ DECIMAL_PLACES : 41, ROUNDING_MODE : 5 }); + T('-3.787764096073192450495e+20', '8.56080716085581596896635019e-13', '-4.4245408463266134116867309754241741552173633456978878978050073111062033244e+32'); + BigNumber.config({ DECIMAL_PLACES : 88, ROUNDING_MODE : 0 }); + T('-4.565118710281652043205587e+18', '-1.0768501357485338531981498736813253355144135945765971e-9', '4.2393259365736840112289457899768571182305950804409789854049842737766244141203174999047786698457641144004241958939814e+27'); + BigNumber.config({ DECIMAL_PLACES : 6, ROUNDING_MODE : 0 }); + T('-1.13737377e+4', '2.39672067889640067918676018386712868197543279e+5', '-0.047456'); + BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 2 }); + T('1.1581797117048585800437723131800381940670958298323249865e-7', '4.158e+1', '2.7854249920751769601822325954305872873186527893995309920635e-9'); + BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 2 }); + T('3.9177480051098793315e+1', '-1.48389811758681607570541737038695e+31', '-2.64017317542062981775247816258745283056e-30'); + BigNumber.config({ DECIMAL_PLACES : 92, ROUNDING_MODE : 3 }); + T('3.005923866141121045247898962416705369972140068123506153e+54', '4.15073648236102377881158357015816460485290127834017e+28', '7.241904849693782752130060912698917736290164881044921819594383013999439892969064997721651291785856799979242814754346046e+25'); + BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 6 }); + T('-8.3414350613148997769231158985428870355e+37', '7.519139028e+7', '-1.109360397547220319454254929164595709547505390267402833291513917728826439249608193307e+30'); + BigNumber.config({ DECIMAL_PLACES : 40, ROUNDING_MODE : 1 }); + T('7.62232420989345792932643399532553660945033205e+9', '3.546254722796595951616967161e+27', '2.1494012150042203378569e-18'); + BigNumber.config({ DECIMAL_PLACES : 41, ROUNDING_MODE : 3 }); + T('-6.411e+0', '-5.886802720840736290495173212026142e+33', '1.08904617e-33'); + BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 0 }); + T('5.38785591321678035450356e+3', '-2.1313564527232543868839883771873473923722049839892511e-11', '-252789997014936.927663619422'); + BigNumber.config({ DECIMAL_PLACES : 86, ROUNDING_MODE : 2 }); + T('-1.8375199248563026289334113517820101864193123453179889673e+21', '2.53353887e-12', '-7.2527796854220066847974246859769322837320918834688688526022101251598322626090200858059067394533402205113987455815114452e+32'); + BigNumber.config({ DECIMAL_PLACES : 2, ROUNDING_MODE : 4 }); + T('2.096164878785696688636271502225300969510394288e+22', '1.6599866609911060613934375398052217446e+32', '0'); + BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 1 }); + T('5.1914325745708e+9', '1.269735010750339990288837063e-15', '4.0885952821785731935320459964719577351634688215103650028661120240797065846261251178893e+24'); + BigNumber.config({ DECIMAL_PLACES : 94, ROUNDING_MODE : 2 }); + T('-3.40269969165377186723554713617322268339825908238e+13', '1.579726092989314070406753168803172757e-15', '-2.15398081145500782364551348037118049721898729116518236621306226881029682045148538975457845189807222020592916409565460497028e+28'); + BigNumber.config({ DECIMAL_PLACES : 91, ROUNDING_MODE : 4 }); + T('7.07761075858482789939366123427509748239558464675607916e+14', '3.181642412092089782313201e+3', '222451483915.5335226309323248048612287514336059581132215978473999145475064012112175748280353528345419168'); + BigNumber.config({ DECIMAL_PLACES : 22, ROUNDING_MODE : 2 }); + T('-7e-12', '-2.52325743368261531046115900833975133351e+32', '1e-22'); + BigNumber.config({ DECIMAL_PLACES : 55, ROUNDING_MODE : 3 }); + T('3.6067668496694263013521414450966007916746291382759735758e+31', '6.827723069253867656420030717897241780099868387443e-15', '5.2825324241857002134118874502088063070690230140241721395260396263559625719946470638252066536062470631e+45'); + BigNumber.config({ DECIMAL_PLACES : 45, ROUNDING_MODE : 3 }); + T('1.0834953046501370758802165232e-14', '-6.05637425405890190868117498e+26', '-1.7891e-41'); + BigNumber.config({ DECIMAL_PLACES : 92, ROUNDING_MODE : 1 }); + T('-1.9506279824752972821372077075674221666452197467521264791e-15', '3e+0', '-6.5020932749176576071240256918914072221507324891737549303333333333333333333333e-16'); + BigNumber.config({ DECIMAL_PLACES : 38, ROUNDING_MODE : 5 }); + T('-2.1693759471833175873e-1', '4.5515219138364272458104132184780818337729034e+43', '0'); + BigNumber.config({ DECIMAL_PLACES : 77, ROUNDING_MODE : 0 }); + T('6.32881730280121156206410564112642311471e+38', '3.13893166980721585503068134122e+22', '20162328997718861.77345695034924554442906535351410535056602449751700077831229938823869747916979'); + BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 1 }); + T('-1.555971152961551330903485377282047252953612416704372252e+37', '3.80693896268786345930625309227624452033520391582734289502e+10', '-4.087197531170734719117825190571527229082e+26'); + BigNumber.config({ DECIMAL_PLACES : 27, ROUNDING_MODE : 3 }); + T('5.9183141e+0', '2.648861310195652114486969005543229600661764637647280250443e+27', '2e-27'); + BigNumber.config({ DECIMAL_PLACES : 77, ROUNDING_MODE : 3 }); + T('-8.9551915318277681675e+19', '3.917225e+2', '-228610598876188326.3662414081396907249392107933549898206000421216549981172896629629393256705959'); + BigNumber.config({ DECIMAL_PLACES : 48, ROUNDING_MODE : 4 }); + T('-1.07477279325373337557240127417807692678e+10', '1.2686e-10', '-84721172414766938008.229644819334457416049188081349519154973987072363'); + BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 3 }); + T('-1.43445291847104540719480368407138500372646221012377e+48', '4.345e-12', '-3.3013876144327857472837829322701611132945045112169620253164556962025316455696202531645569620253164556963e+59'); + BigNumber.config({ DECIMAL_PLACES : 52, ROUNDING_MODE : 1 }); + T('2.0954478e+7', '1.53986464392932017456152151888024146833e-20', '1.3607999951560554864680121615011578541363119443508316052226456031150797726183451e+27'); + BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 1 }); + T('-1.250091427743948668246622447017843708148283052927731211e+54', '-1e+0', '1.250091427743948668246622447017843708148283052927731211e+54'); + BigNumber.config({ DECIMAL_PLACES : 91, ROUNDING_MODE : 6 }); + T('5.6758631618241666964475079252598362892256966910193e+17', '2.94664387659901875615219983882883e+27', '1.926212803284250389998514453682328724096414204311678778978699659759838919429975058e-10'); + BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 3 }); + T('-3e+0', '-2.47466544947381642e-15', '1212285079034778.015293785445'); + BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 1 }); + T('3.6042333176839534052834899427e+21', '1.5947612506210181108875409483746556795324e+2', '22600457067040123341.262943049601011982052457081051322054435549972434391998'); + BigNumber.config({ DECIMAL_PLACES : 70, ROUNDING_MODE : 0 }); + T('3.46928589015151151224242065e-8', '1e+0', '3.46928589015151151224242065e-8'); + BigNumber.config({ DECIMAL_PLACES : 23, ROUNDING_MODE : 3 }); + T('-9.019301406909e+11', '-4.85725370439548e+14', '0.00185687261893426599086'); + BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 1 }); + T('2.566889e+0', '-6.70721664959455838294e+17', '0'); + BigNumber.config({ DECIMAL_PLACES : 40, ROUNDING_MODE : 5 }); + T('-3.11084740702514286871485769505580794328691287870845e-10', '1.5910876e+5', '-1.9551704174082827801026529e-15'); + BigNumber.config({ DECIMAL_PLACES : 60, ROUNDING_MODE : 3 }); + T('2.4269107472646520956770013e+15', '2.8745856109621794177779499143087112128716443811e+44', '8.442645569537649344235981615816e-30'); + BigNumber.config({ DECIMAL_PLACES : 40, ROUNDING_MODE : 0 }); + T('3.97252e+0', '1.548939276078652e+4', '0.0002564671231048494297678054247040105191'); + BigNumber.config({ DECIMAL_PLACES : 24, ROUNDING_MODE : 4 }); + T('-6.3e+0', '5.8690364137680785464741614e+25', '0'); + BigNumber.config({ DECIMAL_PLACES : 9, ROUNDING_MODE : 1 }); + T('-6.8137941022461812680047719160579275395400712e+43', '-1.046987619470002203934857620914434266806e+2', '6.50799873421178203991729406989443034111151170473151e+41'); + BigNumber.config({ DECIMAL_PLACES : 59, ROUNDING_MODE : 4 }); + T('-1.1631433593378409165207684394786246992e+28', '3.689253560366864826581626e-14', '-3.152787793805574648001297861553673866761420561503993546532496159938898627082395001611967385943223374e+41'); + BigNumber.config({ DECIMAL_PLACES : 25, ROUNDING_MODE : 3 }); + T('1.53592787782164984169670245168279271588308165405594488014461e-13', '5.74693959298662675002906911949718002057e+23', '0'); + BigNumber.config({ DECIMAL_PLACES : 22, ROUNDING_MODE : 5 }); + T('-4.369397449454654500615321054230276043619984268e+29', '5.24801546986518267528660609112448233763402950374793e+26', '-832.580901208147702034817'); + BigNumber.config({ DECIMAL_PLACES : 42, ROUNDING_MODE : 0 }); + T('-1.47793635449474418162790025007363128246510397e+13', '-4.0311055974468508565753385738089562823383551139320599977621e-20', '3.66633003965664635938598932039497520941395269631956178044633131060155153584e+32'); + BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 4 }); + T('-5.7052072710315394560511337462009242396919549919319e+42', '6.27432931323509935475802813014752386e+5', '-9.0929356528943241420295550584270473994696443062489638568717678348095857514087935769869142236559272e+36'); + BigNumber.config({ DECIMAL_PLACES : 25, ROUNDING_MODE : 1 }); + T('-2.560785520006531400251699966772e+5', '5.5510232696929483481973994891101258117229e-16', '-461317741899536258818.0608197139803747414543238'); + BigNumber.config({ DECIMAL_PLACES : 40, ROUNDING_MODE : 4 }); + T('-7.2123486426388541242775563968e+0', '4.619423742444157417018988e+25', '-1.561309168581008e-25'); + BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 5 }); + T('4.65760284524911044998976808276645440797000595132e+7', '3.816726465949637918795174164549680432e+36', '1.220313503417451340549963130850565938826291703362578e-29'); + BigNumber.config({ DECIMAL_PLACES : 29, ROUNDING_MODE : 1 }); + T('-3.39515064894245702976142489942538572032944293834e+30', '-3.190517451178851693325309076728704044337407e+42', '1.06413793401694017e-12'); + BigNumber.config({ DECIMAL_PLACES : 32, ROUNDING_MODE : 0 }); + T('-1.12971175678496761518042827771480583041035379585531292740564e+60', '1.1135019977475364041327134404577288914950353923e-6', '-1.01455745842416210855166092488428629288662495889166320866894809187483852974381597749668860834938486e+66'); + BigNumber.config({ DECIMAL_PLACES : 40, ROUNDING_MODE : 4 }); + T('-1.61107062827717139412280581447896440546912751337055027e-6', '-7.9868182e-2', '0.0000201716201362536509735855238883359634'); + BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 1 }); + T('-5.9602377452504052024635056322386719132385834997988020543e+55', '-3.498531286473903713e+9', '1.7036399726633869221323030554383704939733658508821406762344e+46'); + BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 1 }); + T('8.8678285156182557026067087883515e-20', '-1e+0', '-8.8678285156182557026067087883515e-20'); + BigNumber.config({ DECIMAL_PLACES : 9, ROUNDING_MODE : 6 }); + T('-8.172900544549032947357222781512645262126304658655905516e-1', '-4.3773239399897252214957553884619053796e+7', '1.9e-8'); + BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 6 }); + T('2.1938141727317212455590510016849823560636555748854812815e-5', '-1.152634318814916200089398e+7', '-1.9033045753724361288571e-12'); + BigNumber.config({ DECIMAL_PLACES : 70, ROUNDING_MODE : 3 }); + T('2.8461588296170431285e-1', '1.90071041378103477912558980478768073811314e+4', '0.0000149741844364142347922830912992588913762933317498045262197925557573'); + BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 6 }); + T('1.94176577147468478609702628834870198693618436686466286501e+23', '1.366700498587062696311699598145443739386716e-3', '1.4207690518018705483123365071820858279329228470863191808681144222545893e+26'); + BigNumber.config({ DECIMAL_PLACES : 23, ROUNDING_MODE : 1 }); + T('-1.147088324271573723219620098977412358417e+35', '-6.8420757220714e+1', '1.67652094315655889153791839384123030768903497908861683049e+33'); + BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 5 }); + T('-3.4261625872519427236184148705326694e+1', '-3.656977023004e+12', '9.3688381570348061450087e-12'); + BigNumber.config({ DECIMAL_PLACES : 58, ROUNDING_MODE : 0 }); + T('3.178982122983257629900089663528174e+4', '7.9e+0', '4024.0280037762754808861894475040177215189873417721518987341773'); + BigNumber.config({ DECIMAL_PLACES : 29, ROUNDING_MODE : 0 }); + T('8.80250523729885325662597139757429308244444760554011e+17', '-1.60975301309037181131362e+8', '-5468233428.18286068151959437946271099134'); + BigNumber.config({ DECIMAL_PLACES : 80, ROUNDING_MODE : 4 }); + T('4.131471973078503249608785603737670333e+10', '1.57484286892879068139527487680388e+13', '0.00262341853564650143896176778348543403497050301463382759425766301168132358128225'); + BigNumber.config({ DECIMAL_PLACES : 23, ROUNDING_MODE : 3 }); + T('1.528585895331763840069115e+24', '3.4197765738180730499249314496468094e+15', '446984141.31340333043353548439883'); + BigNumber.config({ DECIMAL_PLACES : 45, ROUNDING_MODE : 6 }); + T('-8.082841639227090469245e+1', '3.1691838e+3', '-0.025504489954880781825418266999850245353393514'); + BigNumber.config({ DECIMAL_PLACES : 37, ROUNDING_MODE : 6 }); + T('3.2238563984165e+7', '2.8062784587035137467085680744e-5', '1148801320274.5051606528539252884416106410737944273'); + BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 4 }); + T('2.0154408498918e+5', '4.30900269497597338542444160749771097706975486766992786564213e+52', '4.677e-48'); + BigNumber.config({ DECIMAL_PLACES : 24, ROUNDING_MODE : 5 }); + T('2.48973808166649107472563e+16', '7.773469e+0', '3202866161383664.197703277648627659028421'); + BigNumber.config({ DECIMAL_PLACES : 96, ROUNDING_MODE : 4 }); + T('-1.876233464908725268866091887181294e+16', '-1.9027863e-7', '9.8604528785430359093193591270932211357628547146886647228855915138762560987537066038366998963572525196339704569031214908e+22'); + BigNumber.config({ DECIMAL_PLACES : 52, ROUNDING_MODE : 3 }); + T('-1.480302016623546957756720617e-17', '4.48675237307651206e+4', '-3.299272822601800274884019740677e-22'); + BigNumber.config({ DECIMAL_PLACES : 64, ROUNDING_MODE : 4 }); + T('-3.64371087263156062192935582799e+17', '1.04379068944648426323950949332e-13', '-3.4908443900412619376776296200878493436163771937560780289138565225881051748383290309208423232001e+30'); + BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 1 }); + T('-2.79462269634029e+10', '9.171536006562322411712371008882911861507797208491e-10', '-30470607042710299834.7432085676428408'); + BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 1 }); + T('-1.29784048438874624021e+20', '-7.81658848499248784763163473043552e+32', '1.66036690671453907699103222539981767269959e-13'); + BigNumber.config({ DECIMAL_PLACES : 29, ROUNDING_MODE : 5 }); + T('-6.597295693757315e+3', '-4.16593865309750956562336926008730168740186203511235e+29', '1.584e-26'); + BigNumber.config({ DECIMAL_PLACES : 66, ROUNDING_MODE : 4 }); + T('-1.733446e+6', '-3.773482388092225554199223240068901e+25', '4.5937566993028558008339111973252023492964259032e-20'); + BigNumber.config({ DECIMAL_PLACES : 1, ROUNDING_MODE : 0 }); + T('-8.591446397952e+5', '-2.1338854e+4', '40.3'); + BigNumber.config({ DECIMAL_PLACES : 63, ROUNDING_MODE : 5 }); + T('-2.5065059377850069547637824452936029353036204106279362560509e+13', '-3.516138995179143018517006915479090094604954604417150237252e+20', '7.1285746701754135756225199719702995705315196231393683774e-8'); + BigNumber.config({ DECIMAL_PLACES : 30, ROUNDING_MODE : 5 }); + T('-3.4639682847745124412681859833318897e-19', '1.27938322882835038821277277860055181653355112452e+33', '0'); + BigNumber.config({ DECIMAL_PLACES : 59, ROUNDING_MODE : 2 }); + T('-8.242064013153929194308e+16', '-5.88334204864119044962e+12', '14009.15320749964947459873313784078010659724212034788068072600022'); + BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 5 }); + T('-9.295527689899477623179726383980164313e+35', '-1.20397940136725175038994132464e-10', '7.7206700374968026863491592880531954750229221325124051573418863e+45'); + BigNumber.config({ DECIMAL_PLACES : 6, ROUNDING_MODE : 3 }); + T('-1.2993408634661707140025892e+5', '6.4008213695336018769564880218049e+7', '-0.00203'); + BigNumber.config({ DECIMAL_PLACES : 50, ROUNDING_MODE : 3 }); + T('-3.439e-3', '5.007165479996500833097779388632839571712066842668444465e+42', '-6.8682e-46'); + BigNumber.config({ DECIMAL_PLACES : 93, ROUNDING_MODE : 5 }); + T('-4.1075711824676853850298647179142751957575238106153166179795e-7', '6.736010848029373298409137e+17', '-6.097928395809159715274109761887996027382064202781475036225558005982e-25'); + BigNumber.config({ DECIMAL_PLACES : 46, ROUNDING_MODE : 4 }); + T('2.10811e+4', '7.039650080732634e+10', '2.994623277895374761215744974527407745291e-7'); + BigNumber.config({ DECIMAL_PLACES : 73, ROUNDING_MODE : 2 }); + T('-2.6922407507855523516498813e+4', '3.385600892832e+12', '-7.9520322566241315483997502301377015966728520910279187923444024083e-9'); + BigNumber.config({ DECIMAL_PLACES : 70, ROUNDING_MODE : 0 }); + T('-1.06393575735452126749341238926286918765875015683812157908e+56', '1.976746e+3', '-5.38225830407407561463846335979872572226654388999963363568207549174248993042100502543068254596189899966915324477702243990882e+52'); + BigNumber.config({ DECIMAL_PLACES : 21, ROUNDING_MODE : 0 }); + T('8.39028921330038762342800857115e+8', '-2.62116597e+7', '-32.009759432747357174899'); + BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 1 }); + T('3.32080026608352761689993530772440349217e+15', '6.3e+1', '52711115334659.168522221195360704817336031746031746031746031746031746031746031746031746031746031'); + BigNumber.config({ DECIMAL_PLACES : 40, ROUNDING_MODE : 5 }); + T('-1.7436019457469615070996622e+5', '-1.537142139952287588326813384142393964461884060572341585595088e-14', '11343140627197185333.9914956314439278246782386974657129323437'); + BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 3 }); + T('6.3068e-2', '-1.62742639346165873727213806313110423996682365e-8', '-3875321.19752891589575249733699092578021103894375685686374009095324996068474580334243824017'); + BigNumber.config({ DECIMAL_PLACES : 36, ROUNDING_MODE : 1 }); + T('-2.67459600065252213e+9', '6.800463743262528454476856327536849586501415128073680255e-16', '-3.932961194451398323719174571651676019224406263292113633385902e+24'); + BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 0 }); + T('-2.617285444417e+5', '-4.47954959e+1', '5842.74242718451521819183611270167900965239677143523'); + BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 2 }); + T('3.7579e-7', '8.54683111980676470002e+6', '4.396834273806222532435072949873113510325440312678639576e-14'); + BigNumber.config({ DECIMAL_PLACES : 85, ROUNDING_MODE : 4 }); + T('2.8477068028058652584776269115790807261989e+34', '-5.226292045160877578498455975011326654e+30', '-5448.8091713944893715908188010500732055243096161167780571703276924743464242079738811209697'); + BigNumber.config({ DECIMAL_PLACES : 25, ROUNDING_MODE : 6 }); + T('-6.8507994711488854651893712090287356346646275780892589e+50', '1.4196276232088019525156065222e+26', '-4.8257721666925149810137958222907344779870874725996e+24'); + BigNumber.config({ DECIMAL_PLACES : 38, ROUNDING_MODE : 2 }); + T('-2.510875589771772534352701964086446678893315e-19', '-4.660709492566915161266813973541648e-15', '0.00005387324813477898104552680951936241'); + BigNumber.config({ DECIMAL_PLACES : 7, ROUNDING_MODE : 2 }); + T('1.841169315225278628077665447866018253191187289462057e-18', '-6.698588447367633798507872595601290230706e+40', '0'); + BigNumber.config({ DECIMAL_PLACES : 66, ROUNDING_MODE : 6 }); + T('-4.6030903641073196122984204022259818458530423963791449143596e+58', '-1.193210663988888018144937457943644434e+37', '3.85773485188210377239318464774846598686982825603335346499529370372641562226279596956021e+21'); + BigNumber.config({ DECIMAL_PLACES : 64, ROUNDING_MODE : 4 }); + T('-8.192996939019225245336662e+2', '-5.91452878551692232348205067809337786616592105886513524e+48', '1.385232405848062449e-46'); + BigNumber.config({ DECIMAL_PLACES : 87, ROUNDING_MODE : 0 }); + T('-9.564651336313779258350769302394654279056857763720314e+26', '-1.6261e+1', '5.8819576510139470256139040049164591839719929670501900252137014943730397884508947789188856773876145378513006580162e+25'); + BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 5 }); + T('9.8274874788841622718851425990539444100847489201314e-6', '-7.62193965807557879783269099915712298531636396e+7', '-1.2893683e-13'); + BigNumber.config({ DECIMAL_PLACES : 67, ROUNDING_MODE : 2 }); + T('6.837027364882200392820791e+0', '-7.345570989011759048491415001517951174322659655632854666e+52', '-9.30768673410101e-53'); + BigNumber.config({ DECIMAL_PLACES : 32, ROUNDING_MODE : 4 }); + T('-1.32462495e-2', '-1.65640786003702080437932348185e+29', '8e-32'); + BigNumber.config({ DECIMAL_PLACES : 89, ROUNDING_MODE : 6 }); + T('-2.825350191927226947579184950855406476572e-2', '8.5862e+4', '-3.2905711396510993775816833417057679492348186625049498031725326687009387156134261955e-7'); + BigNumber.config({ DECIMAL_PLACES : 90, ROUNDING_MODE : 5 }); + T('4.616934e+4', '3.87306e+1', '1192.063639602794689470341280537869281653266409505662189586528481355827175411689981564964136884'); + BigNumber.config({ DECIMAL_PLACES : 63, ROUNDING_MODE : 1 }); + T('-2.381057185151378125175009249137791842202222570377464e+19', '7.3884865773725849186751872373034854117109498605406211356575e+58', '-3.22265887637046283780231e-40'); + BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 4 }); + T('-1.0255381436149549830635312526039032986110848719e+45', '3.0309856974347856e-14', '-3.383513635458256279767067899326593394103171254321104183121206634014392150695151267856582775195529055027720502797324656777805811e+58'); + BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 4 }); + T('-2.739259011988857806059105488724082242303111e-15', '-5e+0', '5.4785180239777156121182109774482e-16'); + BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 6 }); + T('-3.32223e+1', '-1.1615523533912084077188609829035381401727064677018345282e+46', '2.860163806048507803780968392110539535051052434589317e-45'); + BigNumber.config({ DECIMAL_PLACES : 26, ROUNDING_MODE : 3 }); + T('-9.9958751104048399016235136218418342519215227584053e+14', '-4.174284831598177548656417478e+27', '2.3946317785357e-13'); + BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 5 }); + T('-2.27599757196244338071018183231562e+32', '7.391713275268524384498161147662130450883e+29', '-307.912047884427915336373420680933095'); + BigNumber.config({ DECIMAL_PLACES : 46, ROUNDING_MODE : 4 }); + T('-5.16676622139299374486206443403294147387872878649e+21', '1.04254236544521519508428636588e+29', '-4.95592926737949755093336377307446188075e-8'); + BigNumber.config({ DECIMAL_PLACES : 89, ROUNDING_MODE : 2 }); + T('5.99385491814645422256534224820678004143e+0', '-4.21892137854353683477642038221794837752673974e-11', '-142070789672.20913091969810090056421616210883875959308692799992255364155640025073556656333631768328163'); + BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 3 }); + T('-1.055898189e-20', '-2e-13', '5.27949e-8'); + BigNumber.config({ DECIMAL_PLACES : 56, ROUNDING_MODE : 0 }); + T('-1.82437065579e+11', '-1.0528795499040785286656252424780016895382e+34', '1.732743936337454125516261366910477e-23'); + BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 1 }); + T('-1.16341688413351799246810589199e+27', '-1.47959980238064534054851281040415394460426702558145e+52', '0'); + BigNumber.config({ DECIMAL_PLACES : 94, ROUNDING_MODE : 2 }); + T('-8.850870779843568233557260439e+27', '1.100898843176644673331602771778e-19', '-8.03967670118025745712004174403591219650847318239363008235259080536190121377456911295622498573057174389026268724112803081717056822402184260674e+46'); + BigNumber.config({ DECIMAL_PLACES : 92, ROUNDING_MODE : 4 }); + T('-2.0486838175030549398886e+2', '-5.8397519e+6', '0.00003508169272573129245248586673690709360443891460525917205489500333053532633809323303615005'); + BigNumber.config({ DECIMAL_PLACES : 22, ROUNDING_MODE : 6 }); + T('5e+0', '1.03893970491266913107075705230859813676241308906901442e+32', '0'); + BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 4 }); + T('2.6645825683538625099506046e+13', '-2.475035960146816312944169309774717e+26', '-1.07658337545762466747712540367293153183665e-13'); + BigNumber.config({ DECIMAL_PLACES : 30, ROUNDING_MODE : 6 }); + T('5.101e+3', '2.9362813207424995171954481770316312774011520265112971721437e+58', '0'); + BigNumber.config({ DECIMAL_PLACES : 41, ROUNDING_MODE : 3 }); + T('3.09522146247e+3', '-6.322338844352208994e+15', '-4.8956905643154253172146449654e-13'); + BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 2 }); + T('2.45456642336136333470644201140274e+21', '-1.7665776756829023068419137351023e+25', '-0.0001389447210359718051750387241676849475724303613868783563044569855208379238649595959961008410614'); + BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 1 }); + T('-3.770212335285972630720190882176634746e-12', '-2.5499445673108723e+12', '1.4785467823961262573670322463361037790776919446498014897730298449781287869e-24'); + BigNumber.config({ DECIMAL_PLACES : 23, ROUNDING_MODE : 2 }); + T('2.476448373899395757500081721167316e+11', '-1.41441100788459721407617214e+26', '-1.75086899e-15'); + BigNumber.config({ DECIMAL_PLACES : 80, ROUNDING_MODE : 3 }); + T('-5.123605791097145953620816077425138174533e+39', '-5.161957851055049432560687119883616458e+37', '99.2570249299872775079007193761502534993170993206103026117202574170143402576775679'); + BigNumber.config({ DECIMAL_PLACES : 72, ROUNDING_MODE : 2 }); + T('-1.07e+0', '3.166e+2', '-0.003379658875552747946936197094125078963992419456727732154137713202779532'); + BigNumber.config({ DECIMAL_PLACES : 35, ROUNDING_MODE : 3 }); + T('4.380624760388172502727543101266542714218799e+8', '2.8539859748769352e+16', '1.534914606781508960228225419e-8'); + BigNumber.config({ DECIMAL_PLACES : 82, ROUNDING_MODE : 1 }); + T('1.03185376622492461699185461110221149187354619102758912e+53', '-4.66836554686682e-7', '-2.210310559158022020717995733195170371794879219725235714169537138093590458084859218332274602123716755188973336293895724984370216596797796872773e+59'); + BigNumber.config({ DECIMAL_PLACES : 64, ROUNDING_MODE : 3 }); + T('1.132e-3', '-3.5360931010016902090684381186243942579e-7', '-3201.2731782410695014796187705458888870997472249522934834804647189847'); + BigNumber.config({ DECIMAL_PLACES : 89, ROUNDING_MODE : 2 }); + T('1.64791690525897130868814615366641349762056564001558815470838e+55', '2.5065703696943209e-2', '6.5743891541330900063925297936228288417226716279853376946771667294962044558207808191203050254224291464422781241518640384073597991915651571326355242e+56'); + BigNumber.config({ DECIMAL_PLACES : 94, ROUNDING_MODE : 0 }); + T('3.38184385415090507322657124511095e-13', '-2.98893892749152424348802013045240519e+3', '-1.131452979197914706533597111967529905515408699499510540200224536601681114519213e-16'); + BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 3 }); + T('-6.7086552499653551678849527015770387733867008e+7', '-1.125934173e+0', '59583014.805'); + BigNumber.config({ DECIMAL_PLACES : 9, ROUNDING_MODE : 2 }); + T('-6.1477060605422141925e+10', '-4.0751487010160187e-17', '1.508584474232673805534982137603051061e+27'); + BigNumber.config({ DECIMAL_PLACES : 70, ROUNDING_MODE : 2 }); + T('-4.92866456197345918527960029e+8', '3.5253054471508670401874085606697278355872e+26', '-1.3980815665084509079703284821353458681071469930662035e-18'); + BigNumber.config({ DECIMAL_PLACES : 2, ROUNDING_MODE : 2 }); + T('9.372943232737349682249017198e+25', '-4.76297903763151442984327875778914124315092641313e-7', '-1.9678741305983641625380627038909928e+32'); + BigNumber.config({ DECIMAL_PLACES : 22, ROUNDING_MODE : 1 }); + T('3.11995595606361445319764411442410560063419352229631157696933e+33', '1.926611002e+9', '1.6194010896983419454165683802235992840210062925e+24'); + BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 5 }); + T('-4.2333e+0', '-1.93228543824537736e+8', '0'); + BigNumber.config({ DECIMAL_PLACES : 7, ROUNDING_MODE : 5 }); + T('-2.077988683939533026878799694958868422e-15', '1.2559679525799138506768697356e+11', '0'); + BigNumber.config({ DECIMAL_PLACES : 21, ROUNDING_MODE : 2 }); + T('5.472628118790725072160395462e-17', '1.8394216999448616162205991250928342500257585707598767096444e+15', '1e-21'); + BigNumber.config({ DECIMAL_PLACES : 67, ROUNDING_MODE : 2 }); + T('1.97183964834324084618715708767e-2', '-1.183563978426472559556348202307999166603220724e-14', '-1666018638861.2188846148118824778364798100387831767130831918354560583075248793369'); + BigNumber.config({ DECIMAL_PLACES : 50, ROUNDING_MODE : 2 }); + T('-6.7156819595674617902425234439062627646759819327223660222549e+5', '-1.160558974192102038079731367753229776383743281088203e+20', '5.78659258935327965530055724540823528e-15'); + BigNumber.config({ DECIMAL_PLACES : 93, ROUNDING_MODE : 6 }); + T('-2.6e+0', '1.14523521140958407390592958802743091726541547863213250616e+7', '-2.2702759870610816491292081733743403311092671441137767872727411929814872668259859876363e-7'); + BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 5 }); + T('-9.968928e-7', '-3.55431167717573926633549e+11', '2.804742213243753373062551581632669575e-18'); + BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 2 }); + T('2.798466628558250019024201982935823835137846503e+26', '-4.36899493141410715286514e-19', '-6.40528696528488259803927528587083864202698192127528510210166236949762009885690496529835355328787796e+44'); + BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 3 }); + T('-1.56429950533148611685100071324288826962358389632991125386e-2', '3.0098625788874470832161522560211195790085e-13', '-51972456028.5309501512399451533455117001582657337602595605495152788391995'); + BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 2 }); + T('4.6445e+4', '-1.45990335057432948297074977166147e+20', '-3.181374984976123624719804976138747439984032990177319139190081091e-16'); + BigNumber.config({ DECIMAL_PLACES : 26, ROUNDING_MODE : 4 }); + T('0e+0', '-7.57155021016208371740392308452529742790199336774116e+30', '0'); + BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 0 }); + T('1.9292073856068758133674002207184838e+32', '3.2470573e+7', '5.94140234484582644527831467808863058868717838764348260808332516953119367496224966525844802e+24'); + BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 3 }); + T('-4.4795295995040994e+16', '-7e+0', '6399327999291570.571428571428'); + BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 6 }); + T('1.39559941490777564118e-6', '-2.00265847326725076969527530693283569078724707221943147622657e+12', '0'); + BigNumber.config({ DECIMAL_PLACES : 1, ROUNDING_MODE : 4 }); + T('-6.1738668683414668401092427633498363323780007724289657279e+7', '7.46830173074093955134587258638713582663298469146193e-10', '-82667614284097086'); + BigNumber.config({ DECIMAL_PLACES : 77, ROUNDING_MODE : 5 }); + T('-2.325747270546053710033134939965e+24', '1.036596847064418906290279664243163e-18', '-2.24363722225514453456879694388701211580798954492266838358381966735507418695200517650609572668956541758719298704712848818e+42'); + BigNumber.config({ DECIMAL_PLACES : 37, ROUNDING_MODE : 3 }); + T('-2.434716159901557923356094432e+27', '-1.85155198684344169731137917473241739e+35', '1.31495965395619527634872320165e-8'); + BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 0 }); + T('-4.3846999123997195596859391184949084199761e+29', '2.1037378011534457793532224037934723483879155585068e+37', '-2.084242584791535688102334572415166823167e-8'); + BigNumber.config({ DECIMAL_PLACES : 71, ROUNDING_MODE : 0 }); + T('-4.1012281e+7', '1e+0', '-41012281'); + BigNumber.config({ DECIMAL_PLACES : 41, ROUNDING_MODE : 2 }); + T('-3.608701616354768017527895281763e+20', '-8.15472e+3', '44252918755699374.31975463635493309396276021739556968234348'); + BigNumber.config({ DECIMAL_PLACES : 21, ROUNDING_MODE : 1 }); + T('8.96088778843661285914373662533075878804804583072488390819e+56', '3.72840970562522716336735003789750605891481473821380208269537e+42', '240340748360270.058243369991733585169'); + BigNumber.config({ DECIMAL_PLACES : 41, ROUNDING_MODE : 4 }); + T('1e+0', '4.51726314080705494668678e-2', '22.137297935256874186672219947578865542153'); + BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 1 }); + T('3.69177884233796707301171945975002982486751e+33', '-3.1390052719070526030604276539e+26', '-11760983.2496238074'); + BigNumber.config({ DECIMAL_PLACES : 49, ROUNDING_MODE : 3 }); + T('-7.2911813676489950804782754070153e+1', '1.64038534404438707301917378448255735703029415200439e+50', '-5e-49'); + BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 4 }); + T('1.339063201286e-16', '2.58293063641981858147867855140764163e+8', '5.18427859581264555255972411406683090150699649846246e-25'); + BigNumber.config({ DECIMAL_PLACES : 92, ROUNDING_MODE : 2 }); + T('-2.0997e+0', '5.8e+0', '-0.36201724137931034482758620689655172413793103448275862068965517241379310344827586206896551724'); + BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 5 }); + T('-2.6270045091364068731963965317668854758926e+27', '3.34195446e-14', '-7.860683143888223040586844297593706515954738653141e+40'); + BigNumber.config({ DECIMAL_PLACES : 31, ROUNDING_MODE : 0 }); + T('-8.62524623e+4', '2.364385282468933993634706874696742382953147792992e+48', '-1e-31'); + BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 6 }); + T('1.922984371006168736678235016756651363e-19', '-2.83456675733525280335e-19', '-0.67840504'); + BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 6 }); + T('3.563221766144e+6', '1.17682e-11', '302783923297020784.82690640879658741354'); + BigNumber.config({ DECIMAL_PLACES : 43, ROUNDING_MODE : 5 }); + T('3.8802320399344e-3', '-1.883103193470263e+3', '-0.0000020605519938520961541989864313495017497'); + BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 0 }); + T('-2.227445290806357210625840212359403e+33', '-5.9090748325665548323697e+12', '376953305537829156704.044107421265802945219782803282653266957637612711648862'); + BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 2 }); + T('-9.478840250917220454747445718439604350090832164775367e+3', '8.698053848362551e+15', '-1.08976564369070399791134258028484e-12'); + BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 4 }); + T('-2.8706196102300752993244664126788576654842903476676826546e-14', '6.4971552856568461156504599568485694629707821694353e+17', '-4.41827151117546800533950454713043927601087421e-32'); + BigNumber.config({ DECIMAL_PLACES : 58, ROUNDING_MODE : 6 }); + T('-6.319964350152839916299595580927374522444058339e+2', '-2.64689600194851141564550615e-2', '23876.889554785683795430233754863239468065874797458344226457085'); + BigNumber.config({ DECIMAL_PLACES : 45, ROUNDING_MODE : 4 }); + T('-6.94086547093359744759775863049089443447844819786157444098e+15', '-6.772506087445494677489870991888473795e+6', '1024859244.320237420714894303442354821008569676223287543'); + BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 2 }); + T('-2.33778299518251243651672e+17', '6.52328049745753203e+16', '-3.5837535977391594765534423031263323796886751901795937247777825'); + BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 4 }); + T('7.7623006117584625649538850225908879123607072045731908e+47', '2.131454276099432967515442679307846435424345669872741468e+54', '3.641786126401685458135155607358253667303753899779414421751e-7'); + BigNumber.config({ DECIMAL_PLACES : 28, ROUNDING_MODE : 3 }); + T('3.1927516331890049645109303512747e+12', '-5.291380601653877878486797997e-17', '-6.03387258174374401655312821986927987582709138330787348064e+28'); + BigNumber.config({ DECIMAL_PLACES : 64, ROUNDING_MODE : 2 }); + T('-4.3050953153833046369747450777055925176e+20', '1.1593521248828129299763848370434825328311624159e+0', '-371336302662874126357.3731679805598750101318048489679393050959520469174733958559116746'); + BigNumber.config({ DECIMAL_PLACES : 85, ROUNDING_MODE : 3 }); + T('6.472461969778376536035575514e+18', '-7.373e+2', '-8778600257396414.6697891977675301776753017767530177675301776753017767530177675301776753017767530177676'); + BigNumber.config({ DECIMAL_PLACES : 72, ROUNDING_MODE : 6 }); + T('2.24386383283259431854801613845e+11', '-1.64591252477114491167023659553694428182567271511443174764e+19', '-1.3632947067734302885180051880234176510177446939229121866972431565e-8'); + BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 2 }); + T('7.701421e+5', '-5.328049264e+1', '-14454.485344263138179572207499018349917419232030584317810466851569261316049272925791776'); + BigNumber.config({ DECIMAL_PLACES : 48, ROUNDING_MODE : 6 }); + T('2e+0', '1.11619734175923103617821885323e+2', '0.017917978525623556917048553290567159968240292293'); + BigNumber.config({ DECIMAL_PLACES : 58, ROUNDING_MODE : 4 }); + T('3.335227693371498724210721095549003172639e+37', '2.519779376380890283541613854411256133e+2', '1.323618934512362296969311570540004089366698452248304997459977762621381392610839983194581974448e+35'); + BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 4 }); + T('-8.2034346003860483e+8', '5.97734590961091611644951317196450684971281766e+8', '-1.37242092467759410016133874325904151090224477'); + BigNumber.config({ DECIMAL_PLACES : 9, ROUNDING_MODE : 5 }); + T('4.383795456267658003368742480708788050320201697533e+25', '1.27599320141819368527136961645e+7', '3435594681378646313.386029937'); + BigNumber.config({ DECIMAL_PLACES : 60, ROUNDING_MODE : 2 }); + T('1.0663693443559747154498197511057191036977786984031126e+9', '2.137690935637784731792281e-8', '49884168313499495.957995301438081176868409594428328729161790097972560815025899'); + BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 0 }); + T('-2.5954644732393251427556661047954865097196e+6', '8.94316591102e-1', '-2902176.36468213878138607399389519651921820374127414932235114574668578762154'); + BigNumber.config({ DECIMAL_PLACES : 83, ROUNDING_MODE : 4 }); + T('-2.4460338813368045e-14', '-2.30060100563041292734e+9', '1.063215166537119683850198426446423763056666282668736147249195e-23'); + BigNumber.config({ DECIMAL_PLACES : 59, ROUNDING_MODE : 6 }); + T('-2.085408775652955533992611775265132764e+27', '-1.03734171017804781196616942456032865e+21', '2010339.26929923508598166281122719665716417682354550312432111861056'); + BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 6 }); + T('2.2812e+3', '1.8e-17', '126733333333333333333.333333333333333333333333333333333333333333333333333333'); + BigNumber.config({ DECIMAL_PLACES : 19, ROUNDING_MODE : 3 }); + T('-1.1941893090812467237205837102655629290327693093206661722e+27', '-3.007667390443100768153762325942e+23', '3970.4832817478341729541'); + BigNumber.config({ DECIMAL_PLACES : 96, ROUNDING_MODE : 5 }); + T('-1.451096475314355e+11', '-2.842651296597428922871581313773483473246203287142540885e+49', '5.104729085312980013504348524670312534735969530969413764945e-39'); + BigNumber.config({ DECIMAL_PLACES : 48, ROUNDING_MODE : 4 }); + T('-1.93306769927e+2', '-3.7875274746099150677119085503890525172214364662560238e+0', '51.03772084106374591472101865472280084184498490023'); + BigNumber.config({ DECIMAL_PLACES : 39, ROUNDING_MODE : 3 }); + T('2.567668008558950331923618839869163071492e+16', '1.22704393078683969008e+4', '2092564042847.624770025016076774486914902667934494382'); + BigNumber.config({ DECIMAL_PLACES : 59, ROUNDING_MODE : 6 }); + T('-7.8290296e+1', '2.060802496254917618480650272974079e+31', '-3.79901985475446692493975191032e-30'); + BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 0 }); + T('-7.241388424659274e+7', '3.64340144411138971044915337158194266796511092768186e+46', '-1.98753515e-39'); + BigNumber.config({ DECIMAL_PLACES : 29, ROUNDING_MODE : 3 }); + T('-1.252970090094676733024915840585797801524115856879594636151e-3', '-1.96417633845027664170996827332885514436291891e+44', '0'); + BigNumber.config({ DECIMAL_PLACES : 99, ROUNDING_MODE : 1 }); + T('-4.9165732284210953881992786006735147785863930531931834731e+2', '1.1054041200516669445635945374469136414958513654255611868262e+32', '-4.447760904121918029520179772115058244822904147134477675938243925901035e-30'); + BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 6 }); + T('-4.771189988e+9', '-6.91299203676923276838686997383079770032024476863302e+18', '0'); + BigNumber.config({ DECIMAL_PLACES : 94, ROUNDING_MODE : 1 }); + T('-1.418818101555744076041680063386509463305215e+11', '-2.434204806919664765677473467404091128071896514285407289e+43', '5.8286718419193757177665889023525608566091337694213024542585159e-33'); + BigNumber.config({ DECIMAL_PLACES : 62, ROUNDING_MODE : 4 }); + T('6.19772e+2', '6.6554434580304499543493945147e+9', '9.312257010495429288814278909016558152501675794594619663e-8'); + BigNumber.config({ DECIMAL_PLACES : 71, ROUNDING_MODE : 3 }); + T('-2.54755724281e+11', '-4.509102422405437459447209951680532146e+36', '5.649810104448622201842984598015224369154494384e-26'); + BigNumber.config({ DECIMAL_PLACES : 98, ROUNDING_MODE : 5 }); + T('2.06e+1', '2.3e-17', '895652173913043478.26086956521739130434782608695652173913043478260869565217391304347826086956521739130434782608695652'); + BigNumber.config({ DECIMAL_PLACES : 32, ROUNDING_MODE : 3 }); + T('9.3378534497433169089840956174329076805072e+40', '-1.165305163604261463e-8', '-8.01322584108488442258857292049398253673344741686087923293108609289045442882935216e+48'); + BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 6 }); + T('1.03156e+1', '-1.806e+0', '-5.711849390919'); + BigNumber.config({ DECIMAL_PLACES : 82, ROUNDING_MODE : 1 }); + T('1.026216765422282122857015285384426588659492743264435122e+38', '-2.9367e+2', '-3.494455563803868705884207734478927328836764883251388027377668811931760138931453672489529063234242517111043007457350086e+35'); + BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 4 }); + T('3.4333084480440073e+4', '-1.5007409672816427894791736741559280675121952e+23', '-2.287742203948032294950234097261627090622812e-19'); + BigNumber.config({ DECIMAL_PLACES : 45, ROUNDING_MODE : 3 }); + T('7.611290444757686725409555118538913880791248834354694099e-20', '3.05612e+6', '2.4905077172223887561e-26'); + BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 6 }); + T('-4.867846147504492163356591296025380497118545e+12', '3.1591106598286187017164466940749639009410821808141774185686e+54', '-1.54089130507652812508139410952477653472655955902198252e-42'); + BigNumber.config({ DECIMAL_PLACES : 22, ROUNDING_MODE : 0 }); + T('-7.22389890032951929622130657135550558e+35', '-1.790129005921703733489095605888e+14', '4.0354068765061262788700751829235864691220253e+21'); + BigNumber.config({ DECIMAL_PLACES : 100, ROUNDING_MODE : 3 }); + T('-2.419660306703718705221304462202646563709e+13', '-2.886954712625003679288945903363117e-17', '8.381358724202531588637527878906073340123629889296798148077133200101643812605387702349267947702885704674220681301140675018662297329e+29'); + BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 0 }); + T('8.594037006054988222214634606869e-16', '1.49572043553e+5', '5.7457508782446635869790486e-21'); + BigNumber.config({ DECIMAL_PLACES : 41, ROUNDING_MODE : 6 }); + T('-7.61558972778941844313837208e-14', '-6.668304659667249764494426352460214954e+32', '0'); + BigNumber.config({ DECIMAL_PLACES : 31, ROUNDING_MODE : 5 }); + T('4.5268069455019779699703165452e-5', '-1.248309125682906023471317531592710811193509e+5', '-3.626350919308966105614e-10'); + BigNumber.config({ DECIMAL_PLACES : 19, ROUNDING_MODE : 5 }); + T('-9.63388594189e-9', '-3.44326078074231256136088231e-16', '27978961.0934234454720924071'); + BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 4 }); + T('-7.805746370509002754816876016901e+22', '1.46212572783957148655689e+16', '-5338628.6978498958611'); + BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 5 }); + T('1.3002187274579276220236551440051201715160580954e+7', '-6.732610466921588678579537665011056061958240950695061575e-8', '-193122524145146.0634961359'); + BigNumber.config({ DECIMAL_PLACES : 67, ROUNDING_MODE : 5 }); + T('6.74e+1', '-6.129934015162884178884109223830016118548182299338688637e-15', '-10995224391205628.9733800570760878468256941295607114376650304969159553390392160724523'); + BigNumber.config({ DECIMAL_PLACES : 37, ROUNDING_MODE : 5 }); + T('1.3039934895940597038720258637834e-6', '-4e+0', '-3.259983723985149259680064659458e-7'); + BigNumber.config({ DECIMAL_PLACES : 63, ROUNDING_MODE : 3 }); + T('-9.93617312617723091329242396241874992e+25', '-1.137770003094008544700705447212e+21', '87330.243363396635485012766500806649145754612598809840164051738672041'); + BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 4 }); + T('3.748586386693786355e+7', '9.958946687501428806663908114124313441e+36', '3.76403901368233782564608598328300953e-30'); + BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 5 }); + T('-1.37173999625143922621220206e+20', '8.482538739549862861187373e+19', '-1.61713378313935'); + BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 2 }); + T('-9.80330108234652944668092642844595838209383072624e+8', '1.2035962e-7', '-8145008336140085.3929922'); + BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 5 }); + T('8.82525807878e+11', '-4.01956964028937251798011791712477184451480520373296930176e-7', '-2195572876837795388.518407615585317'); + BigNumber.config({ DECIMAL_PLACES : 59, ROUNDING_MODE : 2 }); + T('2.717811832453550934e+11', '6.33109033088671696038824807379475780232282e+29', '4.292802172154288129760309517506757508349e-19'); + BigNumber.config({ DECIMAL_PLACES : 100, ROUNDING_MODE : 1 }); + T('3.5435685185374257067408e-12', '-2.406774391297e+12', '-1.4723309884595424894432142396164316553233259819777483178948320252362344869676e-24'); + BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 6 }); + T('2.3553e-2', '4.2058837490523369145172742434125536e+34', '0'); + BigNumber.config({ DECIMAL_PLACES : 1, ROUNDING_MODE : 5 }); + T('1.197996303657042339814794e+24', '1.8840178058646547298362779e+24', '0.6'); + BigNumber.config({ DECIMAL_PLACES : 7, ROUNDING_MODE : 3 }); + T('-1e+0', '-8.518135473048e+12', '0'); + BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 1 }); + T('-9.2476258287508948769849911825604e+30', '-3.59179774375776611810787561600558390217353607056e+47', '2.5e-17'); + BigNumber.config({ DECIMAL_PLACES : 80, ROUNDING_MODE : 3 }); + T('-1.15838265382926020882486075537597e+18', '-3.035820487300015808291852943955864894470533542614e+47', '3.81571525284585352772029922016620355476139131208055e-30'); + BigNumber.config({ DECIMAL_PLACES : 32, ROUNDING_MODE : 5 }); + T('-6.41966728868477146382390929334918998766693410069e+47', '2.037427223666932865191e+6', '-3.1508694956626448508186544515625341736856563329256024107333593788787339757e+41'); + BigNumber.config({ DECIMAL_PLACES : 66, ROUNDING_MODE : 1 }); + T('4.3000534139367009431196546172162560687918e-3', '2.4338788407485078493524444811559606216885419006853e+11', '1.7667491667803296748936306144689339926467136514110846e-14'); + BigNumber.config({ DECIMAL_PLACES : 99, ROUNDING_MODE : 0 }); + T('3.254769352816791766525e+21', '-1e+0', '-3.254769352816791766525e+21'); + BigNumber.config({ DECIMAL_PLACES : 99, ROUNDING_MODE : 1 }); + T('4.11e+0', '2.00145e+3', '0.00205351120437682680056958704938919283519448399910065202728022183916660421194633890429438656973694'); + BigNumber.config({ DECIMAL_PLACES : 86, ROUNDING_MODE : 2 }); + T('3.99594657156145209e-14', '5.148241288760777922453255340965742473874108e-20', '776177.01802071281449507678418605475772964908173366724388048774815402612045478942351604235149'); + BigNumber.config({ DECIMAL_PLACES : 28, ROUNDING_MODE : 3 }); + T('1.23840811876701293037728869684365282191e+11', '-1.875021965657457379046576706e+27', '-6.60476592515e-17'); + BigNumber.config({ DECIMAL_PLACES : 43, ROUNDING_MODE : 0 }); + T('7.4785828075118405417362e-12', '-5.05793e+2', '-1.47858566795345932856646889143e-14'); + BigNumber.config({ DECIMAL_PLACES : 45, ROUNDING_MODE : 0 }); + T('-1.2276291520190505515628764326700617100447994041482458897e+57', '1.29e+1', '-9.5165050544112445857587320362020287600372046833197355790697674418604651162790697674418604651162790698e+55'); + BigNumber.config({ DECIMAL_PLACES : 50, ROUNDING_MODE : 2 }); + T('-2.48261876e+5', '-1.9587291103900309275815669e+10', '0.00001267464064750459452327777539965371036412259896'); + BigNumber.config({ DECIMAL_PLACES : 5, ROUNDING_MODE : 4 }); + T('-8.5405559e+1', '2.362777300800422974614550076641384551314945e+31', '0'); + BigNumber.config({ DECIMAL_PLACES : 73, ROUNDING_MODE : 6 }); + T('-2.4030311589271287499127806755807596113804917662488905e+19', '-2.216820899672964064774e+7', '1083998783700.4041715431719535013282249496709578696667143872009229778286930308283359689'); + BigNumber.config({ DECIMAL_PLACES : 41, ROUNDING_MODE : 1 }); + T('-8.7556036328932664854e+8', '-3.48774255268939905564981478688654e-15', '2.5103927542306179058032934854881018447871662351646745367082834366e+23'); + BigNumber.config({ DECIMAL_PLACES : 5, ROUNDING_MODE : 2 }); + T('6.19473091325856079485580014558544091e+4', '2.29472465104391503795785306551407117665646062694673181e+53', '0.00001'); + BigNumber.config({ DECIMAL_PLACES : 31, ROUNDING_MODE : 4 }); + T('4.539272362927260859e+16', '2.60373683872605470938e+1', '1743368337158150.2614291257943325626704246865824'); + BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 6 }); + T('-2.5190661882350518604315e+5', '2.9764919777064e+10', '-0.000008463205031636512477643734494'); + BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 2 }); + T('-3.93143330771236e-10', '8.772022817e+7', '-4.48178645875535460317761277888842044036830963477e-18'); + BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 5 }); + T('-1.18566127366e+12', '-1.08843733304579336031580771423856202648296487903935109624441e-10', '1.0893243346790973938793245898039903048599432065740889354914100157570251852e+22'); + BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 2 }); + T('-2.55599076618851597975039483709131607328159951532692e+2', '-1.2989572165915307113796613794225e+13', '1.96772513639475107240111480235074502e-11'); + BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 1 }); + T('-8.725616078967545222621552525254167e-3', '-1.02e+1', '0.000855452556761524041433485541691585'); + BigNumber.config({ DECIMAL_PLACES : 87, ROUNDING_MODE : 4 }); + T('1.5195666046173485833072613347969721382357841601293385e+38', '4.6051251677271179984907554502510250626476906157135e+49', '3.299729213152610349460152240524107596156618183660058195820552669914607216218e-12'); + BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 4 }); + T('-6.52400628645105164569398974664810171e+34', '-1.35565e+6', '4.8124562287102509096698924845263170508612104894331132666986316527127208350237893261535056983734739792719e+28'); + BigNumber.config({ DECIMAL_PLACES : 1, ROUNDING_MODE : 1 }); + T('2.8341010111836986663e+19', '-2.0494623300535500796478588955931843257998422206822974459256e-16', '-1.382850989561563146987853054731684426e+35'); + BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 0 }); + T('-1.07291096621168546094216412723781495611010329718735086789e+4', '-6e+0', '1788.18494368614243490360687872969159351683882864558477981666666666666666666666666666666666666666667'); + BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 3 }); + T('2.200160592738870422e-10', '-1.55104286712903207138035554666485613833638793196844989766e+24', '-1.4185040525742206361824038134332655939326592620889107896510832e-34'); + BigNumber.config({ DECIMAL_PLACES : 93, ROUNDING_MODE : 2 }); + T('9.43221843161602347089284e+24', '2.03822495757641152508305608519546e+13', '462766310291.459409510667241425206757049151840375346446691394508861532727110987023088301062173273666587212'); + BigNumber.config({ DECIMAL_PLACES : 87, ROUNDING_MODE : 4 }); + T('2.54594354301812923875761e+12', '-4.362128518310639171207137240232835e+15', '-0.000583647073288001093147516029271358139773488089544323531387977861027019365915069497919'); + BigNumber.config({ DECIMAL_PLACES : 83, ROUNDING_MODE : 0 }); + T('-1.312535887571796e+15', '-2.50694553471368697247940992877537713716e+14', '5.23559793939319862284452444041271965995044450881003999889988936858474788592653648849'); + BigNumber.config({ DECIMAL_PLACES : 36, ROUNDING_MODE : 5 }); + T('9.160537898038173611e-19', '-1.749250692921071105580953085943320435133449e+12', '-5.23684e-31'); + BigNumber.config({ DECIMAL_PLACES : 35, ROUNDING_MODE : 4 }); + T('8.74304e+2', '1.4958394303332805315e-5', '58449054.24141685323587723706446843667064082'); + BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 2 }); + T('1.149690754540849801970244e+9', '5.33424364724494e-15', '2.15530228945325456689319460071246740231652e+23'); + BigNumber.config({ DECIMAL_PLACES : 46, ROUNDING_MODE : 2 }); + T('1.52036398023914987678544731738470919315e-7', '2.306213569985097478851e+10', '6.5924682779876900844839345632e-18'); + BigNumber.config({ DECIMAL_PLACES : 62, ROUNDING_MODE : 2 }); + T('1.24378069e+8', '4.1673915118468168582295976845979854465864e+40', '2.98455445442131606187163203923e-33'); + BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 4 }); + T('-1.6e-20', '-3.16903991336982e+11', '5.0488477385525548378691228e-32'); + BigNumber.config({ DECIMAL_PLACES : 73, ROUNDING_MODE : 1 }); + T('-3.681565417829715699e-20', '3.761610697809957544165820956356128399105789e-19', '-0.097872047736709040540219186410191636447173138565591841465010993285099605'); + BigNumber.config({ DECIMAL_PLACES : 88, ROUNDING_MODE : 4 }); + T('3.8675649644779855400200074863587720076e+22', '1.99925315757085184622870398543060944556080078370112389e+8', '193450486739617.531334401520336741154357027245584052202806451498498235563011278081404636200650538677763'); + BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 1 }); + T('2.654941913274616980869188491528784899593179588052455361023e-20', '9.23775143365037698062e+21', '0'); + BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 5 }); + T('0e+0', '-3.28580415207978749946369316279805006e+3', '0'); + BigNumber.config({ DECIMAL_PLACES : 71, ROUNDING_MODE : 1 }); + T('-2.871227051513980569774531668338334723925740635186427e-20', '2.5088319275522727744893526485872368581813234104846e+31', '-1.14444774876381475366e-51'); + BigNumber.config({ DECIMAL_PLACES : 60, ROUNDING_MODE : 2 }); + T('-1.84257e+1', '-2.56683117883903468757687430620012114253414142173771695171507e+7', '7.1783840526410680753720705367048383099589747041685093e-7'); + BigNumber.config({ DECIMAL_PLACES : 36, ROUNDING_MODE : 5 }); + T('-7.794889203370073018e+18', '-3.1769260301e+10', '245359480.501493248097391387860000272406090605'); + BigNumber.config({ DECIMAL_PLACES : 46, ROUNDING_MODE : 1 }); + T('2.317341053773726223383054090558480273585529903382267e+44', '4.155777340790218902e+10', '5.576191561151072222997412743341318687918759951904311323282926966690953278318632e+33'); + BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 2 }); + T('1.10010154926e-1', '-3.6072763850557643733815756e+19', '0'); + BigNumber.config({ DECIMAL_PLACES : 25, ROUNDING_MODE : 2 }); + T('1.350288081958066e+0', '-4.847410911095431834554e+4', '-0.0000278558617522467065325'); + BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 2 }); + T('-6.50042358522661157072091988416306306478e+31', '3.8333036059305455577020624e+4', '-1.69577582510546145739230671318464135140175469540459227358356058957486937758932706134205317074837248473868026672e+27'); + BigNumber.config({ DECIMAL_PLACES : 70, ROUNDING_MODE : 6 }); + T('1.36e+0', '-2.8327912345373157885262e+22', '-4.80091855488295776794718751080593163920873042987e-23'); + BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 5 }); + T('-6.195389792e+4', '3.36473799030872522e-2', '-1841269.605492091714387883371927994768076187706688814118775174048438175199893538725'); + BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 0 }); + T('4.625556775717785777112e-10', '-4e+0', '-1.156389193929446444278e-10'); + BigNumber.config({ DECIMAL_PLACES : 52, ROUNDING_MODE : 4 }); + T('7.300501550784771100022114775062283197124984e-6', '-1.789830297010992867212295806931569871743997584e+32', '-4.07887918925977e-38'); + BigNumber.config({ DECIMAL_PLACES : 91, ROUNDING_MODE : 0 }); + T('-3.630177946103978927371470378624973706194e+18', '1.8591318200280351885339835717703760834471130467668e+26', '-1.95261998476753351355327157301832545842513128559393991870081179845678161296140061558e-8'); + BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 4 }); + T('2.2815156001968212792834895584154412256126281397520368758312e+24', '-2.1937512878531702705686440267359115e+24', '-1.0400065006592147251571817170169174462321371146353893813957806545260735065113'); + BigNumber.config({ DECIMAL_PLACES : 77, ROUNDING_MODE : 2 }); + T('3.4571934059069013019435589203810314871094225e+43', '-9.39763294687833054779228671932e+17', '-3.678791697280854609444242913844209080201512252076146691809061562791421606637866159526232743228536840427e+25'); + BigNumber.config({ DECIMAL_PLACES : 91, ROUNDING_MODE : 2 }); + T('1.9461010869164739226626405589006235e+34', '2.5792576e+7', '7.545198614192215320651339978219405072219230836035919793354490842636268668937914537888732013428980494232138736355763768e+26'); + BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 0 }); + T('-6.6416115718502371737689145e+6', '3.375e+3', '-1967.88491017784805149'); + BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 6 }); + T('1.744750593613404456767141715737693e-16', '1.4317299845179991126146202592924377598413825069454e+49', '1.2186310355e-65'); + BigNumber.config({ DECIMAL_PLACES : 43, ROUNDING_MODE : 1 }); + T('-5.80010634931161813529081064738976468762508e+3', '6.6789535858620946e+16', '-8.68415429864521491901927618746e-14'); + BigNumber.config({ DECIMAL_PLACES : 33, ROUNDING_MODE : 0 }); + T('-1.48433766042292013471718e+6', '1.7261491566234060946272407869824616924844e+30', '-8.59912746e-25'); + BigNumber.config({ DECIMAL_PLACES : 33, ROUNDING_MODE : 2 }); + T('-6.2058842273334585415823303391242318e+7', '9.17574511064245210813813e+23', '-6.7633572560070222e-17'); + BigNumber.config({ DECIMAL_PLACES : 60, ROUNDING_MODE : 6 }); + T('-2.19423732087131489042819354467114757746220503577701405316451e+59', '6.933790312393479218092118224313838277164113700149112282e+7', '-3.164556789306604801927484142650372485751796661611641615170438271529300481232738799146833007689003733995926792449e+51'); + BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 0 }); + T('-4.8596654346261470129468786343752035258038945e+18', '-3.989419854e+3', '1218138379131390.1183956153827210595532880943295171'); + BigNumber.config({ DECIMAL_PLACES : 42, ROUNDING_MODE : 1 }); + T('3.4657710555410879564e+10', '-2.1345630067049445832400422409103197511309714885e+38', '-1.62364429846045e-28'); + BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 3 }); + T('1.074350964760132842392393885269756423775654e-17', '3.8e+0', '0'); + BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 5 }); + T('-1.159851247251664059745405009972046978744561e+42', '-4.94451805051793105145116805624176249e+29', '2345731647455.855346481131417078370805922988147116122854145123521569271033584294263583791793312855'); + BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 6 }); + T('1.961616996619820680858813761e+16', '-3.1514041869168032547885639497868503814968209264995e+49', '0'); + BigNumber.config({ DECIMAL_PLACES : 21, ROUNDING_MODE : 0 }); + T('4.3936700221156577588082649637896333973205815e+43', '1.5106078132527191296858e+14', '2.90854448359761854896552174179015456397898024594434e+29'); + BigNumber.config({ DECIMAL_PLACES : 59, ROUNDING_MODE : 3 }); + T('7.135077743563996988982814477474349093994352e+10', '1.7604916959107301173018751802944135e+25', '4.05288917870919507623436342605608693431099049e-15'); + BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 5 }); + T('-1.295217838986670615091372685856015513e-20', '-2.918095994529419274843162797351552797775993276731e+42', '0'); + BigNumber.config({ DECIMAL_PLACES : 22, ROUNDING_MODE : 2 }); + T('2.22187462704e-4', '7.86941305509437913938e+5', '2.823431190465e-10'); + BigNumber.config({ DECIMAL_PLACES : 80, ROUNDING_MODE : 5 }); + T('-3.148073729755592254985341931849309741372764e+40', '-2.4290723320660894611308575913750920007e+35', '129599.83480928061645442210620015337560182637567543129937446862963952123742581301832679'); + BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 0 }); + T('-7.01854724651270991249345189104908549916164874716164064e+53', '-1.2584514942472849577e-4', '5.5771297333241273281058084105457199649806654778426853661423848744535491362717825111677770601639704295780527058262131220382137e+57'); + BigNumber.config({ DECIMAL_PLACES : 43, ROUNDING_MODE : 0 }); + T('5.847271126e-10', '-2.5750707057007324018874e+22', '-2.27072255261e-32'); + BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 6 }); + T('-9.782927912636599178664895684986235898e-6', '-3.12022627850579506500901013e+3', '3.1353e-9'); + BigNumber.config({ DECIMAL_PLACES : 43, ROUNDING_MODE : 1 }); + T('2.928167887475868128827868066289485339e+34', '4.83877541238771516830441e+19', '605146475692896.5855371210420533689019126949293544682368286'); + BigNumber.config({ DECIMAL_PLACES : 52, ROUNDING_MODE : 0 }); + T('-6.9919462282490640422034163977e-20', '-1.30056067947581180906900911088564748e-3', '5.37610150651882922153766497829221817e-17'); + BigNumber.config({ DECIMAL_PLACES : 28, ROUNDING_MODE : 2 }); + T('-6.7567689e+2', '-2e+0', '337.838445'); + BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 2 }); + T('2.12e-7', '3.99264548449252e+8', '5.30976268299828737896772492413724556977569206391730725088324617023e-16'); + BigNumber.config({ DECIMAL_PLACES : 72, ROUNDING_MODE : 5 }); + T('-5.32496920242441489746306635603059127214728912512168616119671e+26', '-1.08095512087628410462272104218817e+9', '492617047607646283.466007328094459676181866858371136511364260482766574756050547882148881168'); + BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 6 }); + T('-4.71159004872816222667823e-17', '2.9301378836492897884560643409947731074169831528192e+25', '0'); + BigNumber.config({ DECIMAL_PLACES : 28, ROUNDING_MODE : 3 }); + T('-2.9535897157268262524204891318916154804337780434e+24', '-2.099e-8', '1.407141360517782873949732792706820143131861859647451167222486e+32'); + BigNumber.config({ DECIMAL_PLACES : 89, ROUNDING_MODE : 3 }); + T('-6.4833353011341258257553610498107e-4', '2.6961800003581528262033292178497221e+28', '-2.404637413033587572151384322827817243981923150712234205402e-32'); + BigNumber.config({ DECIMAL_PLACES : 52, ROUNDING_MODE : 0 }); + T('-2e+0', '-1.4e+0', '1.4285714285714285714285714285714285714285714285714286'); + BigNumber.config({ DECIMAL_PLACES : 29, ROUNDING_MODE : 2 }); + T('-2.720194684498461931305631e+4', '-1.960728402820127301397000736296392535626869e+23', '1.3873388485e-19'); + BigNumber.config({ DECIMAL_PLACES : 100, ROUNDING_MODE : 2 }); + T('0e+0', '1.3933189499878001906261552006009387127468739620286e+27', '0'); + BigNumber.config({ DECIMAL_PLACES : 42, ROUNDING_MODE : 5 }); + T('3.29167037734866404379510390582818275817804169e+32', '-1.4685615144961546168793728623179837038125e+40', '-2.2414249215008168330659302143750615e-8'); + BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 3 }); + T('-1.25012467890959337e+8', '2.61957520399140798433461843145457812e+31', '-4.772241991773310768424996904454751022445500981091884e-24'); + BigNumber.config({ DECIMAL_PLACES : 85, ROUNDING_MODE : 5 }); + T('1.49263050430373352175298534280392168767597579769645626e-9', '-2.043053549532317010690722944980754323290927e+5', '-7.3058804780002811179458878318088809200737776290170762835632616848636699e-15'); + BigNumber.config({ DECIMAL_PLACES : 21, ROUNDING_MODE : 1 }); + T('1.179255029471894751e+10', '-8.4202818901272635990166663181340663088525402751041457346e+55', '0'); + BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 2 }); + T('-3.7200780014e-1', '-3e+0', '1'); + BigNumber.config({ DECIMAL_PLACES : 30, ROUNDING_MODE : 1 }); + T('1.16010205734992858198565515677547e+2', '2.66644688384e+6', '0.000043507412968948547888493129'); + BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 4 }); + T('-1.99151e+2', '7.244158484786415e-20', '-2.749125387279150884816957099156235506079390332466748425115372177335552422e+21'); + BigNumber.config({ DECIMAL_PLACES : 29, ROUNDING_MODE : 2 }); + T('-2.124112397746040612627101685e+2', '2.0374399781278993725e+8', '-0.00000104253986401983735798313'); + BigNumber.config({ DECIMAL_PLACES : 29, ROUNDING_MODE : 5 }); + T('3.4263939461575248036041477751408871e-13', '-2.0377871463601904784953561458383001066141197717593893833106e-16', '-1681.42877546244477509059184282327'); + BigNumber.config({ DECIMAL_PLACES : 82, ROUNDING_MODE : 4 }); + T('2.77535711945304662910934e+20', '1.548e+3', '179286635623581823.5858746770025839793281653746770025839793281653746770025839793281653746770025839793'); + BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 6 }); + T('2.4582922047426939737395996833756540989840753092e-4', '7.499088769422419467069765488713e+21', '3.2781212228963011382416739307027640435997681965827588575961e-26'); + BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 4 }); + T('3.9404778505315565430772478752e+1', '1.22012817194484965451308e+23', '3.22956058317262419952561912775635911e-22'); + BigNumber.config({ DECIMAL_PLACES : 58, ROUNDING_MODE : 5 }); + T('-1.885706272633402829872077358804e-8', '-2.3397684361151447e+2', '8.05937136139998531082149391787976591426841084103e-11'); + BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 3 }); + T('3.23998602e+1', '-1.96759690448480483187e+17', '-1.65e-16'); + BigNumber.config({ DECIMAL_PLACES : 24, ROUNDING_MODE : 2 }); + T('2.5394625074047308129076629659521032218171827525085e+4', '1.486963018731560141565052553769728153865855384388e-20', '1.707818200866216222275005139686826483208741748745e+24'); + BigNumber.config({ DECIMAL_PLACES : 71, ROUNDING_MODE : 0 }); + T('1.04e+1', '5.6174581978e+10', '1.851371142213931652018460882261769912409120161730809916094753e-10'); + BigNumber.config({ DECIMAL_PLACES : 2, ROUNDING_MODE : 6 }); + T('-2.278216739851811573090234549305900165857725808543254e-16', '-6.17167696950635642700968026421152025437639884e+28', '0'); + BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 1 }); + T('-2.600656256062268757599653130269627818785956358e+39', '4.174826974074446906113e+9', '-6.229374947063118665231142334365121752480404402846343520954031862574189964917604453799515078405526478911989499e+29'); + BigNumber.config({ DECIMAL_PLACES : 77, ROUNDING_MODE : 4 }); + T('-1.4252728700283e+2', '-3.6812771216831823241655821825104974e+34', '3.87168046011332498780205469646774508427940968e-33'); + BigNumber.config({ DECIMAL_PLACES : 35, ROUNDING_MODE : 3 }); + T('-1.2011385394562689623080701219787926535106034462957977874e+55', '1.484418621396725486414923462648023356077945356450275144e+30', '-8.09164289737950455063845272323937414798239250266548200102709e+24'); + BigNumber.config({ DECIMAL_PLACES : 24, ROUNDING_MODE : 0 }); + T('-2.93880926075357614753407716e-16', '-1.3791e+3', '2.13097e-19'); + BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 5 }); + T('-1.42160165400037360222355577402e+28', '-1.4543062639302850856563883443167927305675194942132e+50', '9.775118826473821468681927e-23'); + BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 5 }); + T('2.85461906793193446689501385665585837e+17', '-4.4696221966448e-13', '-6.38671221490443677597572001439233935527910546999530624152713656683821030982340369428e+29'); + BigNumber.config({ DECIMAL_PLACES : 38, ROUNDING_MODE : 5 }); + T('1.03198543240961786590361813596555e+16', '2.176179752393469927128827e-20', '4.7421883751771393857836343896161033683171195970822244332027946250906796856e+35'); + BigNumber.config({ DECIMAL_PLACES : 78, ROUNDING_MODE : 2 }); + T('3.14762519071979379352084610662679e+19', '5.8884352287892950725129449989034436487279404963e-6', '5.345435703072118750380329048113484942063099851778247821469541821931979113704398843484733870677150619708e+24'); + BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 1 }); + T('1.0291050554e+5', '4.086731299779289549386928860705649e+0', '25181.61777495815'); + BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 4 }); + T('3.8693794428021087689923855170698458966201975691706399e+44', '-3.70930188348821084200721687483e+0', '-1.0431557107892662833674573194914702357747142747655923e+44'); + BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 3 }); + T('9.87581802319693703161109938e+4', '-5.2021670380355478531094701154172344261990003692e+39', '-0.001'); + BigNumber.config({ DECIMAL_PLACES : 49, ROUNDING_MODE : 3 }); + T('-2.817804158984e+8', '3.084936503603324417755852751488885700233098566271e+48', '-9.13407507e-41'); + BigNumber.config({ DECIMAL_PLACES : 66, ROUNDING_MODE : 5 }); + T('-5.641066606610146198560673010618169464452985470536036789e+34', '2.3760125293215658408844704320606672774112738e+33', '-23.741737625520294620465709755518390073824686461685402204481871579935'); + BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 2 }); + T('-6.679046e+0', '1.845106957279212340082392243007094841333782209e+39', '0'); + BigNumber.config({ DECIMAL_PLACES : 28, ROUNDING_MODE : 5 }); + T('-5.825921e-20', '-1.08640948057977360856019e+19', '0'); + BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 0 }); + T('-4.42375562261132346786e-13', '2.01869003477516067451376981263436819679957126e+34', '-1e-15'); + BigNumber.config({ DECIMAL_PLACES : 39, ROUNDING_MODE : 6 }); + T('1.94e+2', '-1.17418924948163522529348163692664e+30', '-1.65220385117e-28'); + BigNumber.config({ DECIMAL_PLACES : 2, ROUNDING_MODE : 4 }); + T('-5.86326961013848701029433519755881197676016532174223776e+42', '-9.36010712113617e-3', '6.2641052439438088020441068124196496300925688441e+44'); + BigNumber.config({ DECIMAL_PLACES : 93, ROUNDING_MODE : 5 }); + T('6.579537068e+4', '3.1587324304561876881013030138816973044900876e+33', '2.0829675234789595208208366200884704209340477362716667791623891427e-29'); + BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 3 }); + T('-5.14323085660282445564529658412430694242126760047e-9', '-4.49408047569390365813647218807966e-9', '1.14444565121159505532245584477706636827450865713267892528524185238'); + BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 2 }); + T('-7.96217993335335361547713357267e+29', '-2.140330649878680730191385354270339218534e-10', '3.72007004329198845830956963875400703051886347888092524e+39'); + BigNumber.config({ DECIMAL_PLACES : 50, ROUNDING_MODE : 5 }); + T('2.059721431717707761973659e-9', '-2.8585e-12', '-720.56023498957766729881371348609410529998250830855344'); + BigNumber.config({ DECIMAL_PLACES : 87, ROUNDING_MODE : 3 }); + T('-1.09934730228746907e+6', '5.481364942566032350401384950650899375860805155719017e+41', '-2.005608664641882790654622324670406476893754032265834e-36'); + BigNumber.config({ DECIMAL_PLACES : 37, ROUNDING_MODE : 1 }); + T('4.0936284699e+4', '1.03e+1', '3974.3965727184466019417475728155339805825'); + BigNumber.config({ DECIMAL_PLACES : 67, ROUNDING_MODE : 0 }); + T('-2.13849871809837058001616451167138082883528869852e+26', '7.75656516657454818872746775810557e+25', '-2.7570176646150369356243789814970779668441179902219001674396388575493'); + BigNumber.config({ DECIMAL_PLACES : 58, ROUNDING_MODE : 1 }); + T('-4.118768662320701179933717900613e+13', '-6.2349170094235901589819084845537198250007593988899063598992e+14', '0.0660597190964290942784247690235913512580465933587631145646'); + BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 4 }); + T('-4.034852421353510640903454052e-15', '8.51892268936e+11', '0'); + BigNumber.config({ DECIMAL_PLACES : 96, ROUNDING_MODE : 1 }); + T('-1.4572002514374007496208725914930149825676539748187990178e+3', '-4.006366399870811657901101783455228e+5', '0.003637211642660514734295607118454112262186510851305420710240982867898231241659230245572061692282'); + BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 6 }); + T('6.8966942690317593877e+19', '-1.2038112368632337938726e+2', '-572904958671298709.96464906515014'); + BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 1 }); + T('-8.461437355e+3', '-3.891573761e-10', '21742970516960.477573741149499954190897835072539435800764717922045831164704473913221042503'); + BigNumber.config({ DECIMAL_PLACES : 22, ROUNDING_MODE : 0 }); + T('-1.50532941108627429718843e-2', '-6.3348978698e+10', '2.376248903e-13'); + BigNumber.config({ DECIMAL_PLACES : 90, ROUNDING_MODE : 4 }); + T('3.526090095588159e+1', '4.423395682817525543658e+18', '7.971455299115771409943907878373597762273973108373522595538235592994381528e-18'); + BigNumber.config({ DECIMAL_PLACES : 90, ROUNDING_MODE : 3 }); + T('5.2556798e+7', '-4.1804308609669802919004377071909151694775457e+27', '-1.2572100758973687783532893770608320867050188431514032311205215076822741e-20'); + BigNumber.config({ DECIMAL_PLACES : 56, ROUNDING_MODE : 6 }); + T('-3.24409e+5', '3.1826471914339344874509e+17', '-1.01930556699198021827845323704637655861586721e-12'); + BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 6 }); + T('-2.070769093876e+12', '1.9236527717904300858266851920321362066341902001832626806e+17', '-0.000010764775869340713405544222410067272568269777366642283883872171552795978650799'); + BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 6 }); + T('-1.2229148430910559578484e+13', '-3.101e+1', '394361445692.05287257284746855852950661077071912286359238955175749758142534666237'); + BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 6 }); + T('-2.359651921343667745965717771698188e+21', '2.53784e+1', '-92978750486384789662.300136009290893'); + BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 3 }); + T('1.646e+1', '-2.4145209e+4', '-0.00068170873981667'); + BigNumber.config({ DECIMAL_PLACES : 40, ROUNDING_MODE : 3 }); + T('1.999922587160297158837485889910674907231e+39', '1.042614411234913959613421862825633522199399109557092e+17', '1.91818045636978040252560846179469898304705685512372559740187879e+22'); + BigNumber.config({ DECIMAL_PLACES : 1, ROUNDING_MODE : 3 }); + T('-6.33e+1', '-4.7579684118790087075298295215414064690307114979377159909e+44', '0'); + BigNumber.config({ DECIMAL_PLACES : 42, ROUNDING_MODE : 4 }); + T('4.21500110663901595e-7', '-1.946030919510743179539e+8', '-2.165947654983159575368935904e-15'); + BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 2 }); + T('6.947422981451529252198084061668065785994211907670223e-9', '-1.5993103821004138529969973e-14', '-434401.168103924076311096604656699461539894877857160570581829666267958815429'); + BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 5 }); + T('-1.25034047e+2', '-7.924873940601202214696320851303584878597e-1', '157.774177781450718558168102555891953783016311458964491658950739843440454'); + BigNumber.config({ DECIMAL_PLACES : 38, ROUNDING_MODE : 1 }); + T('-8.4498406847279762666441234862568898037259764190343267277e+49', '-4.120141456228256185267e+8', '2.0508617906685421282769358786879755733117466124413836514119965414326974436026195e+41'); + BigNumber.config({ DECIMAL_PLACES : 63, ROUNDING_MODE : 4 }); + T('3.96728163581235985e+11', '-4.0655871655362802118515147006216756066e-12', '-9.7582009050076456671844243444612881081088865779908045266507866486168759958860802512339e+22'); + BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 2 }); + T('8.377935228073938470886902025082439214729937031686449147339e-15', '1.8705596758166772084e+5', '1e-11'); + BigNumber.config({ DECIMAL_PLACES : 29, ROUNDING_MODE : 6 }); + T('7.887362755738721033e+1', '4.222385514500917079172510078961227368351950079151224533e+38', '0'); + BigNumber.config({ DECIMAL_PLACES : 78, ROUNDING_MODE : 6 }); + T('-4.13697936763e+3', '-2.66192326476939722127533674547323772698922147813872741111e+20', '1.5541317146076286657694636800845922614912948050453986276342221e-17'); + BigNumber.config({ DECIMAL_PLACES : 93, ROUNDING_MODE : 2 }); + T('1.78388991432008918449923502557602149e+35', '-6.8880812462399102542899021555788e+31', '-2589.821244187392845937108165933495359047193118764579479697030046497096699971962461956602938622734'); + BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 3 }); + T('7.310856231038743738006972578e+1', '3.953772959709131458834635874418352573710153840945305782009e+57', '0'); + BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 1 }); + T('-5.43694520251045211677860851445256808564505958746497524e+43', '-1.88302420910384378014501617e+21', '2.887347478712430637686468592409563e+22'); + BigNumber.config({ DECIMAL_PLACES : 43, ROUNDING_MODE : 4 }); + T('-8.84480314987915e-3', '2.485672907020868917970460002908114977851963191e-10', '-35583133.7457824729393195894031453473771800463059494'); + BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 0 }); + T('-1.842664499858708e+7', '8.64280319632410385089217495892155003163e+36', '-2.1320218197753445082639445340341847150845768770852e-30'); + BigNumber.config({ DECIMAL_PLACES : 87, ROUNDING_MODE : 2 }); + T('-5.69289886131319105470231893741207508333786087939892543991e+12', '-1.157070028959235705673362382e+1', '492009880027.214447044738833785955556424955628517861704093425274445314155512550013741207185367473999'); + BigNumber.config({ DECIMAL_PLACES : 64, ROUNDING_MODE : 3 }); + T('9.1529892690338e+7', '3.69795147e+8', '0.247515126774603129121107692632861945048727207877609059050198947'); + BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 6 }); + T('2.040936401972e+0', '7.30192e-4', '2795.0681491607686745'); + BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 3 }); + T('7.8342829198168303012269813436688776790363358e+41', '-9.97714065170314686896855609984e+0', '-7.8522326118350148371427659878203848146751958700610342561492551104312933241292324148141047829329380382042316261238416338317493e+40'); + BigNumber.config({ DECIMAL_PLACES : 33, ROUNDING_MODE : 3 }); + T('-6.224139150302056812162930383444020261998001661480334367e-8', '-2.200474704222804776662164e+10', '2.828543831182275e-18'); + BigNumber.config({ DECIMAL_PLACES : 93, ROUNDING_MODE : 0 }); + T('-2.111907316853534443267945413030124e+33', '3.035193089358538579351137066159724155e-8', '-6.9580657792676627345697886401977478627195308884142417393050604155803650358753128456006840173551540452279962038443004363808443626319265e+40'); + BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 4 }); + T('7.1019910621668866906001022319396116676509826589415e+37', '-3e-20', '-2.36733035405562889686670074397987055588366088631383333333333333333333333333333333333333333333333333333e+57'); + BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 2 }); + T('-1.263505371326162877793175510269241e-17', '-2.6295119435e+8', '4.80509462772920421912194866693230899181120224487773e-26'); + BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 5 }); + T('1.25753421623835120676356e+5', '-1.24e-4', '-1014140496.966412263519'); + BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 5 }); + T('1e+0', '-1.6343267272956510340957355231089781279070615606828115e+52', '0'); + BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 3 }); + T('-7.3343350211129444859698483507412686598373e+33', '-4.3843858592183644627006838292043613541538028979866527e+42', '1.672830644157877191339849787941151074468617542989663526075955647378572982443e-9'); + BigNumber.config({ DECIMAL_PLACES : 30, ROUNDING_MODE : 1 }); + T('-4.108611403904808302411892431161217780240728657750746689364e+5', '3.6824849477300703610724915340707846252e-1', '-1115717.093816610873677645590956733383'); + BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 0 }); + T('1.401581623326732000821603376983279829245646625e+8', '-1.025090770212736e+5', '-1367.27562480721903'); + BigNumber.config({ DECIMAL_PLACES : 33, ROUNDING_MODE : 6 }); + T('-2.94568e+2', '4.14192625e-9', '-71118600916.662869117961721312638050955156432'); + BigNumber.config({ DECIMAL_PLACES : 31, ROUNDING_MODE : 6 }); + T('1.7759920185337547720817865596e+22', '2.350740762006532104979009412138827927354021658e+9', '7555031363891.4972210913734422163808480420697'); + BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 3 }); + T('1.0947348955799084189730995189273274351905325603416797167e+31', '4.153961824757862e+14', '26353995095843748.0493281532'); + BigNumber.config({ DECIMAL_PLACES : 88, ROUNDING_MODE : 3 }); + T('-2.4622935887443704835158888971778206584895907358120324532166e-7', '-1.12906730198878908358403856082462293507622394677804e+29', '2.1808209168817285300617361646285948515975483824583722e-36'); + BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 0 }); + T('5.7753573152354701280188037711e-3', '7.3622821751819861902677289036283647731671577315e-7', '7845'); + BigNumber.config({ DECIMAL_PLACES : 60, ROUNDING_MODE : 6 }); + T('-4.8205540868978450154671132067505596153705757e-2', '8.1183992929751288420984735186669192604024e+9', '-5.937813493688444827723808286658854244188750679714e-12'); + BigNumber.config({ DECIMAL_PLACES : 89, ROUNDING_MODE : 0 }); + T('-6.2941336527302448612953596496278502611441e+21', '-3.5568500636662819918590062441096475503230146320989567e+37', '1.7695808201266888847503987500283022806912903932828369207190396972028315644e-16'); + BigNumber.config({ DECIMAL_PLACES : 80, ROUNDING_MODE : 2 }); + T('0e+0', '-1.886335671350525947167498146176216809163432865841308760356e+45', '0'); + BigNumber.config({ DECIMAL_PLACES : 49, ROUNDING_MODE : 3 }); + T('-9.388865394241840862648843223003751545e+16', '-1.26262312206798400456688656413722861e-7', '7.435999887966816286693931782193008802332593057015175495574569295812959984e+23'); + BigNumber.config({ DECIMAL_PLACES : 78, ROUNDING_MODE : 1 }); + T('-8.774972002985035666e-10', '1.0096039769517326876506064168433248399882399907454446e+34', '-8.6914990464667622493530131032429473e-44'); + BigNumber.config({ DECIMAL_PLACES : 96, ROUNDING_MODE : 4 }); + T('2.0358122995416e+2', '-1.185788087652726874326e+14', '-1.716843271356773428083586941195529440001003234082441920090862215671473214969501034555e-12'); + BigNumber.config({ DECIMAL_PLACES : 59, ROUNDING_MODE : 5 }); + T('-4.81494682083685778756376680383503854821494e+11', '1.88469801436875758448943512e+5', '-2554757.72995363887411108098322566033139836436153539171984892227398'); + BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 0 }); + T('8.425989871297069164847509809184e-18', '-3.51926008497875433972381873443330235632674e+3', '-2.3942504014584465119158723882331982396890146771587804121365542995034390598873e-21'); + BigNumber.config({ DECIMAL_PLACES : 19, ROUNDING_MODE : 6 }); + T('1.27444579556638727979295885015787844222933e-16', '1.978970526730892637344166773842383457668295e-2', '6.4399e-15'); + BigNumber.config({ DECIMAL_PLACES : 82, ROUNDING_MODE : 0 }); + T('-9.605849175039525e+0', '-2.0607825364337260302e+9', '4.661262896599883622140312721859695212285726413101438285248661435001991329e-9'); + BigNumber.config({ DECIMAL_PLACES : 88, ROUNDING_MODE : 5 }); + T('8.98380237238777847268e+14', '-9.520475603e+7', '-9436295.7766068847859847826974154160856999362240789936300832512096087139145836220888218161846384'); + BigNumber.config({ DECIMAL_PLACES : 67, ROUNDING_MODE : 0 }); + T('1.43105051935057310084000077734625910751548015485e+47', '1.435248248460772139723819361148986308530557e+3', '9.97075259200141242877636239157217890998797798886339280131044746055797542831945114292189166994100617973599911868e+43'); + BigNumber.config({ DECIMAL_PLACES : 71, ROUNDING_MODE : 2 }); + T('-3.4034802881655461978766888034351860622311e-18', '-1.7981952473022468608e+10', '1.8927200999288802420575647573236761989046149e-28'); + BigNumber.config({ DECIMAL_PLACES : 92, ROUNDING_MODE : 6 }); + T('-1.43210402902042035558426e+19', '-2.69701938689138970149793193133529358653757062093087863e+48', '5.30995081452149713406531003230358760718136409882834788473858805e-30'); + BigNumber.config({ DECIMAL_PLACES : 24, ROUNDING_MODE : 0 }); + T('-4.842369180095923840828196486950285389348350886702e+13', '-3.6369207448e+6', '13314475.403456209626303860188948'); + BigNumber.config({ DECIMAL_PLACES : 23, ROUNDING_MODE : 6 }); + T('-4.595408078199452557501026049538472866e-15', '5e+0', '-9.1908162e-16'); + BigNumber.config({ DECIMAL_PLACES : 72, ROUNDING_MODE : 3 }); + T('8.37359957427871905021486159553992619985284e+41', '6.592e+0', '1.2702669257097571374719146837894305521621419902912621359223300970873786407766990291262135922330097087378640776699e+41'); + BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 5 }); + T('5.12904053485500369e+11', '-2.356006590714538855034790956761608989302e-4', '-2177006021574603.617700507922417593'); + BigNumber.config({ DECIMAL_PLACES : 39, ROUNDING_MODE : 3 }); + T('6.015422454953036042240341552597696910116184712e-14', '1.61889975588901098009509941804921e-8', '0.000003715747335850140925748953013957471'); + BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 2 }); + T('0e+0', '-1.46309763225394183731384919396993881995112568685128916575e-4', '0'); + BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 5 }); + T('1.480852744475266171384371266e+6', '1.513981551285759949212863278757677622717144544998283946e+54', '0'); + BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 6 }); + T('-1.048704844895298764267e+6', '1.93834152691212568826528e-17', '-5.4103202677906697979269528e+22'); + BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 3 }); + T('-2.3974993340594324786216049305189901567727128178294281171392e+15', '2.5500221621595942064232332e+4', '-94018764606.696934948388080256864169096744754729362485888099609799069392975272684'); + BigNumber.config({ DECIMAL_PLACES : 67, ROUNDING_MODE : 4 }); + T('9.9869279344481835661235709466239341269531092877823e-10', '4.5756874e+6', '2.182607127936271076149907213203405050562044358140003e-16'); + BigNumber.config({ DECIMAL_PLACES : 100, ROUNDING_MODE : 1 }); + T('-2.7417e+3', '-2.585883427e+4', '0.1060256611482587146029146966647077706801823282654883576080090635887740658001440526653717557547113665'); + BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 4 }); + T('3.815341923454329027881636868507675546064e+0', '-2.964570510035186895077e+10', '-1.287e-10'); + BigNumber.config({ DECIMAL_PLACES : 23, ROUNDING_MODE : 2 }); + T('-8.1735549810305097961598075249725560718718368702887e+39', '2.835116912708471284502428249232106162e+23', '-28829692858140619.92748633016109227282199'); + BigNumber.config({ DECIMAL_PLACES : 93, ROUNDING_MODE : 2 }); + T('-7.32981605626e+7', '-2.677690427184525475227e+2', '273736.500001868454321579249937084174751100655446811304267461519388794890747782155104943336466202375'); + BigNumber.config({ DECIMAL_PLACES : 32, ROUNDING_MODE : 4 }); + T('-9.16315973852115522938999e-19', '9.042919595827616506965819304445732730604125e+6', '-1.0132966e-25'); + BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 6 }); + T('6.358523e+6', '4.40132300111923255492109e+20', '1.4446844729148626688667634730302332223061054105797893844168294564761836e-14'); + BigNumber.config({ DECIMAL_PLACES : 29, ROUNDING_MODE : 0 }); + T('-5.139211254201668171872995890983365e-18', '-1.5083548976487459847e+20', '1e-29'); + BigNumber.config({ DECIMAL_PLACES : 62, ROUNDING_MODE : 5 }); + T('-2.8171189907015895e-16', '9.21897171849502e+14', '-3.055784394098866960992360306205e-31'); + BigNumber.config({ DECIMAL_PLACES : 38, ROUNDING_MODE : 0 }); + T('2.99789199300705852204601120743344e+5', '-5.47924104180702447191479787014077480048927716e-2', '-5471363.58873959984079548421500443497199597555'); + BigNumber.config({ DECIMAL_PLACES : 89, ROUNDING_MODE : 1 }); + T('9.81875142583037809567952350607452e+15', '-3.4687305453795171406878237005224971585308082903e+37', '-2.8306469174751361585690876350308857981841849345008721637086100419586e-22'); + BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 2 }); + T('3.08707183854467667877929107971867e-11', '-2.35196612423659700350835514e+26', '-1.31254944819695515834706234783901960977e-37'); + BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 5 }); + T('-2.8213964861859564875572540794222e+15', '-5.168452270204616617876498382023891751570689298634394e+33', '5.4588807996755646055239612145045168073595850093e-19'); + BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 2 }); + T('-7.0813e-13', '1.56e+0', '-4.539294871794871794871794871794871794871794871794871794871794871e-13'); + BigNumber.config({ DECIMAL_PLACES : 36, ROUNDING_MODE : 5 }); + T('8.14110403542517745202706485105022282210091784e+33', '-1.688350089087425048701536063780485447383159723854329977357e+38', '-0.000048219288689264374989622358741134'); + BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 2 }); + T('3.25863096999194643003413683826719734e+21', '5.618007636999568e+2', '5800332040367778169.288168104147613832911027025215810963069876871784688'); + BigNumber.config({ DECIMAL_PLACES : 53, ROUNDING_MODE : 4 }); + T('-1.4805436682325022741525936347181e+25', '1.1607299682512709163737705286415115336e+2', '-1.2755280803708853363018579801475806040882834110865071562813129287335720726372e+23'); + BigNumber.config({ DECIMAL_PLACES : 46, ROUNDING_MODE : 4 }); + T('-5.34258251e+4', '1.781311271905240595172943e+25', '-2.9992413983243498668198433e-21'); + BigNumber.config({ DECIMAL_PLACES : 30, ROUNDING_MODE : 4 }); + T('4.64027469376348916497545810919e+23', '-7.6667505925746e+13', '-6052465953.774063335633809580856235190654'); + BigNumber.config({ DECIMAL_PLACES : 30, ROUNDING_MODE : 5 }); + T('-1.035229349852707396403267161937236208909910350243e+48', '1.920776186243e+12', '-5.3896406945652288898449103320672098745016258249914104904084266124e+35'); + BigNumber.config({ DECIMAL_PLACES : 43, ROUNDING_MODE : 3 }); + T('6.1e+0', '2.18982168e-2', '278.5614945596848780855982757463612288284587629'); + BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 5 }); + T('9.835509353291310001253779704e-11', '-4.2516886120831444413650359047292837460082152440653091592776e+44', '0'); + BigNumber.config({ DECIMAL_PLACES : 35, ROUNDING_MODE : 2 }); + T('1.419584e+6', '-2.2456336913636681912199059228777e+4', '-63.2152966647892206941805953519556072'); + BigNumber.config({ DECIMAL_PLACES : 89, ROUNDING_MODE : 1 }); + T('-7.48337582900726312264340518579849657238637691523485724e+53', '4.3873595e+2', '-1.70566734479070227152422890939265327411313727886553569179822168664318481309771857081691162987669462691625794512621999633264609385212221610743e+51'); + BigNumber.config({ DECIMAL_PLACES : 28, ROUNDING_MODE : 5 }); + T('-3.09214419956268660769745136200171129e-2', '-6.55586e+5', '4.71661109230930283395e-8'); + BigNumber.config({ DECIMAL_PLACES : 77, ROUNDING_MODE : 4 }); + T('-7.47e+0', '-8.3129091173899363050150814171607681446853871716922e+11', '8.98602389911055526387557585983734018562027115035296874467136654217e-12'); + BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 1 }); + T('1.5422046315165910135380507050728981458652385138161e-1', '-2.49726e-7', '-617558.6969384809805'); + BigNumber.config({ DECIMAL_PLACES : 92, ROUNDING_MODE : 3 }); + T('-6.027637019608787827e-12', '-6.168e+1', '9.772433559677023065823605706874189364461738002594033722438391699092088197146562e-14'); + BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 5 }); + T('3.637226529475938420584939413779884e-20', '5.66313959899573343471844023e-14', '6.422632650837252791397005531104336453119706157765433798349495132461747790991253275315193204e-7'); + BigNumber.config({ DECIMAL_PLACES : 59, ROUNDING_MODE : 3 }); + T('-3.63374636457206226704031388321678018796105838933222e+50', '2.23192771280273673e+10', '-1.628075292818957763041131704226551253202464586433286576776793553341257498175531583626214149783436764e+40'); + BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 2 }); + T('1.447686237310682627523628e+17', '-9.27654554283e+6', '-15605876461.5199239744'); + BigNumber.config({ DECIMAL_PLACES : 66, ROUNDING_MODE : 4 }); + T('2.71453219554577365344652764796906e+31', '-5.3518882960376187325270737493510349390472656e+43', '-5.07210174314649606349701434887509976007194300223113568e-13'); + BigNumber.config({ DECIMAL_PLACES : 52, ROUNDING_MODE : 2 }); + T('-1.393286404513102609558473024204958251590327e+13', '-5.855484674573725995e+17', '0.0000237945530036680115402924601438159362983628669729'); + BigNumber.config({ DECIMAL_PLACES : 94, ROUNDING_MODE : 4 }); + T('7.1103309548815651860677898639079346939568246446974791588e+2', '4.8769843784483012350610212859958724322732926813158586488e+29', '1.4579359709050047503906905151014730519791327462580222805885996817122e-27'); + BigNumber.config({ DECIMAL_PLACES : 48, ROUNDING_MODE : 5 }); + T('3.075599596358771249670517627321e+12', '-3.996877616428674653242322790899941288312991285277372896e+9', '-769.500568072661712562729357197142813533506324140459'); + BigNumber.config({ DECIMAL_PLACES : 52, ROUNDING_MODE : 1 }); + T('-1.261205984992223545369223006225826905349496097e+9', '1.620181828427829772e+18', '-7.784348416103738355015056096212753317762213e-10'); + BigNumber.config({ DECIMAL_PLACES : 22, ROUNDING_MODE : 6 }); + T('2.00315828570172542523825739959349049373689988751035915e-12', '-8.60950076872653662809989252228863051954124324893e+4', '-2.32668e-17'); + BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 4 }); + T('4.732783706338582085066293769921629336210353e-6', '1.30387863763199470335371599109946688305257044e-19', '36297731780726.95627843902'); + BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 6 }); + T('-2.618107512e+0', '3.1009576053821111482452309390112e+30', '-8.44290004950708565638811123268641903928980998484442e-31'); + BigNumber.config({ DECIMAL_PLACES : 74, ROUNDING_MODE : 6 }); + T('-2.1304372261326862138082080606924013109809844300767e+37', '2.568536980894e+2', '-8.294360727448706480271480075619277212900477871427793413721282178360217236407460947146546402166648002265872258e+34'); + BigNumber.config({ DECIMAL_PLACES : 24, ROUNDING_MODE : 6 }); + T('-7.7281100283375912478317107816593e+29', '-4.21076848235299162110478588819217733599092986582e-2', '1.8353205740770381455375610012735730324744466865758076951e+31'); + BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 5 }); + T('1.214288115112062302e+1', '1.220191369594032493649996470678162491331918075709845175258e+58', '9.952e-58'); + BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 1 }); + T('-1.06900256342e+4', '-2.11663631027871906270848975313e-14', '505047824337490243.5542612133960286734567711128278517'); + BigNumber.config({ DECIMAL_PLACES : 67, ROUNDING_MODE : 5 }); + T('-7.68253410247759654823769087582989853109e-14', '6.88782057679461630572026058847263346e+25', '-1.115379533601732685983818924e-39'); + BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 1 }); + T('-3.127314521519152147318e-13', '1.7562796368659513842290434961976e+5', '0'); + BigNumber.config({ DECIMAL_PLACES : 45, ROUNDING_MODE : 2 }); + T('-6.52236449271294278465e+20', '4.2960112422402385396e-4', '-1.518237296164925555810052883406647891702984011317411762992531555858254e+24'); + BigNumber.config({ DECIMAL_PLACES : 64, ROUNDING_MODE : 1 }); + T('3.3906898910846761551010975837e+4', '-1.26278246991633428e+14', '-2.685094204158002363589830198713041152886030846980192755e-10'); + BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 3 }); + T('-2.57818822600894851e-17', '-4.099305302080100833321083658448116029e+4', '6.28932962055962148397265177133023154e-22'); + BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 2 }); + T('-2.762537942145269202456800168866810678263800547e+2', '-5.5794642063741285950032443049e+28', '4.95126026436243150232814545310867295193e-27'); + BigNumber.config({ DECIMAL_PLACES : 32, ROUNDING_MODE : 6 }); + T('-2.2220067359042534782306082679695109e+11', '1.6627392333290843252114537311353886966580422528954392603276e+58', '0'); + BigNumber.config({ DECIMAL_PLACES : 87, ROUNDING_MODE : 2 }); + T('5.521683785579646113987296059772570849e-4', '-4.2913090938318336417419787109e+28', '-1.2867131369111366966810237114048549533082295727403624926e-32'); + BigNumber.config({ DECIMAL_PLACES : 30, ROUNDING_MODE : 5 }); + T('-1.1330391734902077792296703145369409541576832e+9', '-1.62534341919687537646390049102383023e-9', '697107552845706921.539726219737110667961829115633'); + BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 6 }); + T('2.473822379563497271686201797064009750024074417793299e+34', '-2.01808576030533418e+6', '-1.225826190453477376997876172521931063596401405891474069853839906134571344e+28'); + BigNumber.config({ DECIMAL_PLACES : 74, ROUNDING_MODE : 0 }); + T('2.5303793265608409202121202350210168e+23', '-3.74835746663196393e+3', '-67506350423789200447.46795099178037550119481486011217189107361181727847200917369894322869609769'); + BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 5 }); + T('-3.5e+2', '-8.1277456186986807687172477738133e+31', '4.306237134129671395535982088e-30'); + BigNumber.config({ DECIMAL_PLACES : 46, ROUNDING_MODE : 0 }); + T('6.26741953491444e+14', '1.46879850802e-10', '4.2670383314612539308017699330233555774687190031177684311329955622322433e+24'); + BigNumber.config({ DECIMAL_PLACES : 71, ROUNDING_MODE : 0 }); + T('3.77109858829632667366e+6', '9.04407253151767774269062602081257111546091913879693653e+37', '4.169690783830436600896909869720047189655e-32'); + BigNumber.config({ DECIMAL_PLACES : 1, ROUNDING_MODE : 5 }); + T('-5.33759542e+1', '3.9254295722506153140124716999039738854029315340346842450064e+10', '0'); + BigNumber.config({ DECIMAL_PLACES : 60, ROUNDING_MODE : 5 }); + T('2.7853980946488063151300371324976142755438e+40', '2.506164302080989e+15', '1.1114187893969904686622434666819892478943674510939079980971476965607620825505000907544e+25'); + BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 2 }); + T('1.451043309976216445610153251732462926744256554271133783791e+17', '7.41721005576179e+4', '1956319558253.61343090876133233530811364932433139975554534744'); + BigNumber.config({ DECIMAL_PLACES : 60, ROUNDING_MODE : 0 }); + T('-2.072406664008045081e+3', '2.792666557127411860644489740802167608215209346715373797e+42', '-7.42088832166114617933e-40'); + BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 1 }); + T('7.384e-9', '6.3032089502188606e+9', '1.171466797042102193664274335794202208750112818022893729166287382032e-18'); + BigNumber.config({ DECIMAL_PLACES : 41, ROUNDING_MODE : 0 }); + T('-9.35958558496231459721530506986e+22', '1.5322681929812264284749509548e+13', '-6108320741.65295265223629647386189336663113192202'); + BigNumber.config({ DECIMAL_PLACES : 21, ROUNDING_MODE : 1 }); + T('-2.24014624554423389811452741803132e-4', '2.0565175971296507937343506885052795768498421551e+15', '-1.08e-19'); + BigNumber.config({ DECIMAL_PLACES : 78, ROUNDING_MODE : 2 }); + T('1.5770237677964810017477151767788e+21', '-8.54123834256875008633168521475344720149263767688138754686e+2', '-1846364314571036958.678647267777970781569480978902586909530172075995984569742629175408491216602985'); + BigNumber.config({ DECIMAL_PLACES : 23, ROUNDING_MODE : 0 }); + T('2.79199995197752e+10', '1.71487499012888548514204330386066220510264e+10', '1.62810698625191369851034'); + BigNumber.config({ DECIMAL_PLACES : 41, ROUNDING_MODE : 1 }); + T('5.323153894454409490553769852429203328e+28', '-6.030342e+2', '-8.827283584338018458246265058315437711492980000139295582240609239077e+25'); + BigNumber.config({ DECIMAL_PLACES : 43, ROUNDING_MODE : 4 }); + T('7.9518637909638206148115e+22', '2.703335682421301079590396752958261171133813554763659e-15', '2.94150069585200821391486581040338326583968580475156088168501517339405393235746268e+37'); + BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 5 }); + T('7.545889908678269e-16', '2.768050039756865098086378735666300998213741845102978484e+30', '0'); + BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 3 }); + T('-8.7739572453231244975835179927171213809985647391042414e+52', '1.72059865043563691558140227646933386936e-9', '-5.09936308685448154396527818485662863105492320887039977042649830179435005e+61'); + BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 4 }); + T('3e+0', '-8.22592249104333739875982e-1', '-3.6470073760924704277112396365477092237792643308701857467008212355984275209879073'); + BigNumber.config({ DECIMAL_PLACES : 100, ROUNDING_MODE : 2 }); + T('1.0636690860267415531231769812428010959148138741441452e+52', '1.11600369794194131724e+20', '9.53105341844555065087419949570868503012652317123623801062045754948248088657449086693921681642325647683254809938321207941421253407757e+31'); + BigNumber.config({ DECIMAL_PLACES : 48, ROUNDING_MODE : 6 }); + T('1.3289530386979555936177503e+3', '-2.033e-18', '-653690624052117852246.802902115100836202656173143138219380226266601082'); + BigNumber.config({ DECIMAL_PLACES : 67, ROUNDING_MODE : 1 }); + T('-1.038385084749453e+3', '-7.98067150071936701490588681029e+29', '1.3011249550314837072393526477353924717272e-27'); + BigNumber.config({ DECIMAL_PLACES : 26, ROUNDING_MODE : 6 }); + T('2.14775414921936585323587276274e+29', '-4.91873e+1', '-4.36648108194466021358332895430324494330853695974367367e+27'); + BigNumber.config({ DECIMAL_PLACES : 52, ROUNDING_MODE : 0 }); + T('1.2567973e+2', '-7.856923e-7', '-159960495.9855149401362339938930291158510780874395739909885843'); + BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 2 }); + T('-3.6622319707770708822522951468817e+30', '3.656425313596689513775283919805799908329e+11', '-10015880694072401484.0955229421703431721941247711210456195812948764079007519435905440229821531467'); + BigNumber.config({ DECIMAL_PLACES : 36, ROUNDING_MODE : 1 }); + T('-1.71282745930071396282535980981656663328350069966145739055e-9', '4.3e-5', '-0.000039833196727923580530822321158524'); + BigNumber.config({ DECIMAL_PLACES : 39, ROUNDING_MODE : 6 }); + T('1.7119045396419008400413343130033368266876039e+37', '9.7540924600109638962e+3', '1.755062858651615249647388676534433549015738989093280937133672437598343997e+33'); + BigNumber.config({ DECIMAL_PLACES : 80, ROUNDING_MODE : 2 }); + T('-1.1757530693902304387459376726656306596014299349464e+8', '-2.36900729151398204933354971996709e+30', '4.963062264949094862684756523944872810528016135331257285976e-23'); + BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 6 }); + T('-8.65095140446550937314480735074e+15', '-1.549244905882360406819969208475918262360629753795329e+52', '0'); + BigNumber.config({ DECIMAL_PLACES : 55, ROUNDING_MODE : 1 }); + T('1.1955e+1', '-8.3088677e+4', '-0.0001438824209464786639941324375642664282643470180660115'); + BigNumber.config({ DECIMAL_PLACES : 31, ROUNDING_MODE : 5 }); + T('-4.468624569952628910134461106488333506316952e+41', '1.6984769356286874427603898121908162573708e+38', '-2630.9598183024943520710960422578191'); + BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 5 }); + T('1.609438374637232251e-9', '-1.1614e+0', '-1.385774388356494102806957120716376786636817633890132598587911141725503702e-9'); + BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 6 }); + T('-2.09472e+0', '-2.1861989602310764423155108389064835971067037971421668638758e+2', '0.0095815615967'); + BigNumber.config({ DECIMAL_PLACES : 30, ROUNDING_MODE : 5 }); + T('1.9258712316623456848312022859e+22', '1.7266625389642846412968734570371957657e-4', '1.11537210555199379330974948807628766827486861972553536365e+26'); + BigNumber.config({ DECIMAL_PLACES : 82, ROUNDING_MODE : 2 }); + T('-1.1337e+3', '-1.1e+0', '1030.6363636363636363636363636363636363636363636363636363636363636363636363636363636364'); + BigNumber.config({ DECIMAL_PLACES : 83, ROUNDING_MODE : 4 }); + T('-2.5591414805373051642382850492440071030443358585e-13', '4.35706627e+3', '-5.873542705002981660497638125765773819741180706209455932833447584904e-17'); + BigNumber.config({ DECIMAL_PLACES : 22, ROUNDING_MODE : 0 }); + T('-1.25613398729978160245584922259023879602040016e+2', '-5.13386334045428147107910905292885089491972852226657825592e+56', '1e-22'); + BigNumber.config({ DECIMAL_PLACES : 48, ROUNDING_MODE : 3 }); + T('3.234484877844011920715828817817e-12', '-6.019346634481209758868677e+8', '-5.373481665461159981210755854e-21'); + BigNumber.config({ DECIMAL_PLACES : 36, ROUNDING_MODE : 0 }); + T('-1.5027e-11', '-3.7e-15', '4061.351351351351351351351351351351351352'); + BigNumber.config({ DECIMAL_PLACES : 82, ROUNDING_MODE : 0 }); + T('-6.1e+0', '-3.6447856210569630636497103311780875864519602982229700446e-13', '16736238106182.6112278499938760815912762242062491581632413344974496636237303042133510924299460319'); + BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 2 }); + T('9.75662282281192e-20', '5.985852528528966395302090457416703826321725395934423e+17', '1.6299470754268025580362743789465e-37'); + BigNumber.config({ DECIMAL_PLACES : 42, ROUNDING_MODE : 4 }); + T('5.604825650503286068631433167e+1', '-9.305749535486041558944682995387991e+11', '-6.0229706689720664863014764391915e-11'); + BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 6 }); + T('3.7431314e+4', '-2.392568982213598249449011107876184466e-1', '-156448.21227001217'); + BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 6 }); + T('7e+0', '-1.1045e+3', '-0.006337709370755998189225894069714803078315980081484834767'); + BigNumber.config({ DECIMAL_PLACES : 100, ROUNDING_MODE : 1 }); + T('4.93378864967962446907506937527311536635683791413e+41', '7.525850766108004307875561045756e+19', '6.5557885786129327670937629942817841888955144563221611526126799543788215289326409947589027585070936969510766374326411765874e+21'); + BigNumber.config({ DECIMAL_PLACES : 93, ROUNDING_MODE : 0 }); + T('1.63422955175006958166513854885209386483861856935343529352e+35', '-9.66349246523425560648983043983869582551620345e+13', '-1.691137606439323420220329379736035181700003167537521018776107161092670305077229257476923828508392563262361909516126e+21'); + BigNumber.config({ DECIMAL_PLACES : 74, ROUNDING_MODE : 6 }); + T('1.495e+1', '-3.07182848020739641490746915491908811922782217304689e+3', '-0.0048668081881286032707593791164998482196454255205826232850685249135503912'); + BigNumber.config({ DECIMAL_PLACES : 72, ROUNDING_MODE : 3 }); + T('1.259062985419626e+5', '6.9977635329877923006e-9', '17992362552468.982571654491210293172532864322672755501964483658087290004741310828649074'); + BigNumber.config({ DECIMAL_PLACES : 27, ROUNDING_MODE : 1 }); + T('2.232711537863227029e-16', '1.434154444949708573200667470524103058046097898258998725507e+58', '0'); + BigNumber.config({ DECIMAL_PLACES : 82, ROUNDING_MODE : 0 }); + T('-1.0751815403564395827663050799878971629329089299025396757e+20', '-6.7886864e+7', '1583784368587.7721244662370616911942830838509934742893348262485655545968362892709258156334928066'); + BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 3 }); + T('-1.26823286542697996624791496849e+12', '-1.16793499550969226361833557823609159e-4', '10858762433721897.7307394483624331'); + BigNumber.config({ DECIMAL_PLACES : 1, ROUNDING_MODE : 6 }); + T('-5.7713011483807317754531570826e+11', '-4.55900876358621281e+12', '0.1'); + BigNumber.config({ DECIMAL_PLACES : 38, ROUNDING_MODE : 0 }); + T('1.38268797477236323560159318494411944404e+24', '1.42312477553014673043161482450533329e-16', '9.71585906272540399036878915395275312201434618904599449140527428820711950864006e+39'); + BigNumber.config({ DECIMAL_PLACES : 91, ROUNDING_MODE : 4 }); + T('9.3815075054718519832476108772926868476360928969089361e+4', '4.857002415350223602938997571365002900982479e+42', '1.93154268892727741077333196519480753687344966025561425e-38'); + BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 0 }); + T('-7.749096154328703865887694942014525e+15', '-3.45112372602868218963907841288692e-19', '2.2453834662270527218695605226800210763996175658727845e+34'); + BigNumber.config({ DECIMAL_PLACES : 31, ROUNDING_MODE : 4 }); + T('2.06047471323273675e+15', '-1.549028959604836834354557362898635678316479740834989842523e+41', '-1.33017e-26'); + BigNumber.config({ DECIMAL_PLACES : 96, ROUNDING_MODE : 3 }); + T('-7.05085729272211009849091807126021118782328859699569811025041e-16', '-4.978374031401085198009429258552458040848568e+42', '1.41629721837869964741050077431131056176e-58'); + BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 1 }); + T('-1.08558638711697951122296184010253247220521597866289e+33', '-1.095189258480639988351439864779e+30', '991.231769952727097382931022367907874314569439543907641'); + BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 3 }); + T('9.8729e-19', '1.8011865910309926369717116294617624146153936e-12', '5.4813310565e-7'); + BigNumber.config({ DECIMAL_PLACES : 91, ROUNDING_MODE : 3 }); + T('-4.85006892273786251519379926157564148194080803e-11', '4.2144285392117088636044457532336606821307e+13', '-1.1508248099622653733336646374169959360771924094604495212554679882303e-24'); + BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 2 }); + T('2.8784194884454653011319e-2', '-3.879427369887867496479778593e+6', '0'); + BigNumber.config({ DECIMAL_PLACES : 33, ROUNDING_MODE : 1 }); + T('3.4590661358872593115553923594619847654866114989082695893051e+46', '5.4e-1', '6.4056780294208505769544302952999717879381694424227214616761111111111111111111111e+46'); + BigNumber.config({ DECIMAL_PLACES : 28, ROUNDING_MODE : 5 }); + T('4.1e+0', '5.4786917624775196956187078223916e+23', '7.4835e-24'); + BigNumber.config({ DECIMAL_PLACES : 21, ROUNDING_MODE : 6 }); + T('-3.91495716942234069922659077207497778622749365160426460071e+53', '-4.0102800972250268937783468190379e+14', '9.76230356610590288767648100711089415886501956837749100702679e+38'); + BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 3 }); + T('1.19424369580399282513575056508783725247e-9', '-5.371698598032159396495139952175043506e+36', '-2.3e-46'); + BigNumber.config({ DECIMAL_PLACES : 22, ROUNDING_MODE : 3 }); + T('5.63636041344363e+14', '5.2173072658597998389260730622052729474722e+36', '1e-22'); + BigNumber.config({ DECIMAL_PLACES : 58, ROUNDING_MODE : 1 }); + T('-9.031145452408285626378639096151350422e+27', '-1.731e-15', '5.217299510345630055678012187262478580011554015020219526285384170999422299248989023685730791450028885e+42'); + BigNumber.config({ DECIMAL_PLACES : 94, ROUNDING_MODE : 3 }); + T('-7.31972377269774149472754055513497055157319466674421771e-14', '8.546500533655590532217386133188970641018e-14', '-0.8564585872162672868942623705976116327542913560436307588971838437181301932291836031310937755135'); + BigNumber.config({ DECIMAL_PLACES : 40, ROUNDING_MODE : 1 }); + T('-3.54679222738451876223205408554904004041520901298e+27', '3.4586346581660271194125550911766413700791897294324995365342e-19', '-1.02548912444693941909583024429178218782025365317128628938450518851820276916612834088689e+46'); + BigNumber.config({ DECIMAL_PLACES : 82, ROUNDING_MODE : 5 }); + T('-6.48643644215162929485708075e-1', '7.14984347440457975908726489684000602e+35', '-9.072137684373297046785189769824472850697249143e-37'); + BigNumber.config({ DECIMAL_PLACES : 23, ROUNDING_MODE : 0 }); + T('3.552171243977769502671049000867317211343e-20', '-2.15595163566681273217424395359713674128281892118e+40', '-1e-23'); + BigNumber.config({ DECIMAL_PLACES : 45, ROUNDING_MODE : 6 }); + T('1.7954544527607735150981985546109e+2', '-2.7258844e+7', '-0.000006586685967903750852744153620787807436001'); + BigNumber.config({ DECIMAL_PLACES : 35, ROUNDING_MODE : 1 }); + T('3.3674081394487145799921e+9', '-7.1275409800764541139561409433836095e+2', '-4724501.96899828111377581909732715146907289'); + BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 0 }); + T('2.65735472097886935495390169965511921020563011e+25', '2.19349988440193952607880287238101699e+4', '1.21146791019932076607700836983269024923057710126299235619548140485e+21'); + BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 4 }); + T('1.0575868668469067477716236166764e+25', '-8.383602155882908531775616123746973325e+29', '-0.00001261494578562248'); + BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 5 }); + T('4.6852215e-14', '2.19919753326e-5', '2.13042e-9'); + BigNumber.config({ DECIMAL_PLACES : 30, ROUNDING_MODE : 2 }); + T('-6.97048526434790465102435138712502202538705868792308978e+50', '-1.152016479378653648042654041111e+19', '6.0506819035327287840871358846013130018087169719821002176269531e+31'); + BigNumber.config({ DECIMAL_PLACES : 72, ROUNDING_MODE : 0 }); + T('-3.37577295170516785222e+8', '-2.37545219078269355805e+1', '14211075.115735653503575269101098904554789070803843368872554096743257129931508392'); + BigNumber.config({ DECIMAL_PLACES : 70, ROUNDING_MODE : 5 }); + T('-6.91828885134279364979634143520912856688568e+8', '-4.905271406e+9', '0.1410378402891330993927951768711802155251769977190126551786561838205452'); + BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 4 }); + T('6.986514784850857947742579938525217639695e+26', '-1.794839665783077e+7', '-38925564873799947424.6882982473922192210282154361988028278101097559636017307592156'); + BigNumber.config({ DECIMAL_PLACES : 71, ROUNDING_MODE : 4 }); + T('-1.77830063090048661263986622e+10', '2.270924196212392806152021613176845793480717971355827611111e+29', '-7.830735318538864287947570037843942222717162247258832e-20'); + BigNumber.config({ DECIMAL_PLACES : 35, ROUNDING_MODE : 3 }); + T('-3.61553162775567272024302892183569e+26', '5.2136257994244279369565366891886574752823e-1', '-6.9347739305625250934549596504675255779365775719511346687127674e+26'); + BigNumber.config({ DECIMAL_PLACES : 72, ROUNDING_MODE : 3 }); + T('2.72e+1', '8.10677952046480558868896688782129127976e+5', '0.000033552164495575767975227338046013372453730165565364132066649209675865'); + BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 2 }); + T('5.00209141376450945561177635215306952e+20', '-4.06407024489331769546669285640221297039518589733394e+50', '0'); + BigNumber.config({ DECIMAL_PLACES : 74, ROUNDING_MODE : 5 }); + T('6.4941507325829041e-13', '1.06803844907e-14', '60.80446577777906232995125593732572832159078855174121620164454853430551132022'); + BigNumber.config({ DECIMAL_PLACES : 22, ROUNDING_MODE : 3 }); + T('4.59037507825880083772724613e+23', '5.9206491313738816076555721197850369064037338348485286340196e+32', '7.753161817906e-10'); + BigNumber.config({ DECIMAL_PLACES : 35, ROUNDING_MODE : 2 }); + T('1.24258229484774e+11', '-1.34608804095258113553965970247594e+19', '-9.23106258316065561528587558e-9'); + BigNumber.config({ DECIMAL_PLACES : 5, ROUNDING_MODE : 1 }); + T('-2.312e+0', '1.12229569882029501318267761229489045381220697e+5', '-0.00002'); + BigNumber.config({ DECIMAL_PLACES : 19, ROUNDING_MODE : 5 }); + T('5.99386387928871248266583462338374271383421779265e-7', '4.54276178498770507623593493e+26', '0'); + BigNumber.config({ DECIMAL_PLACES : 89, ROUNDING_MODE : 4 }); + T('-1.072e+0', '-1.0093621232770885252715439716044e+10', '1.0620568924456423474469510806320102016101382698470840962696843605524920313968902e-10'); + BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 0 }); + T('3.1477153130156971113238565625851776140762151077886911e+46', '9.826959778864853474755755753495e-4', '3.2031425627543381746914096126702169849354775990622144170749047897876647147271148203797679834222535856032885497801492664824904454346e+49'); + BigNumber.config({ DECIMAL_PLACES : 71, ROUNDING_MODE : 1 }); + T('8.29789132e+6', '1.571815286618497636e+16', '5.2791771340076160975768969825714902024842632232591240172049653e-10'); + BigNumber.config({ DECIMAL_PLACES : 86, ROUNDING_MODE : 3 }); + T('1.52164415715764465447303e+25', '2.87924899438469325984e+19', '528486.47689910053985881783677296216257810461518732161341341792834798642202721337736804755992'); + BigNumber.config({ DECIMAL_PLACES : 60, ROUNDING_MODE : 1 }); + T('4.208837080395082250914160579456486936330714130498162873255e-11', '2.27010087532800876360273860899e+9', '1.854030860979666324529697068207741338852e-20'); + BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 5 }); + T('7.668283651166955701e+0', '-2.59554989752628450796804615643995026173575873939822982e+53', '0'); + BigNumber.config({ DECIMAL_PLACES : 87, ROUNDING_MODE : 2 }); + T('-4.269827082310622058516334206139255614554809934590597346781e+26', '-2.86618498009960504659861e+20', '1489724.882363397892828752161863673946377166456932407861354348065593006446060320670620929585694'); + BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 1 }); + T('4.34026302347822527e+16', '7.87e+0', '5514946662615279.8856416772554002541296060991105463786531130876747141041931385006353240152477'); + BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 5 }); + T('1.2e+0', '1.217453887745260320295322901007862553505569150298797e+45', '9.8566361492542018442563e-46'); + BigNumber.config({ DECIMAL_PLACES : 55, ROUNDING_MODE : 4 }); + T('-3.7522310633980853325867082990170673e+31', '-1.0292373198653534141843851980822223e+34', '0.0036456422546832625689136006513990189060244021257648515'); + BigNumber.config({ DECIMAL_PLACES : 19, ROUNDING_MODE : 3 }); + T('-1.35790490505570931093648290702810551910772e+17', '4.294449e+5', '-316200030564.0396034360829310182'); + BigNumber.config({ DECIMAL_PLACES : 35, ROUNDING_MODE : 0 }); + T('-2.4782632e-3', '-4.05169398973704e-10', '6116610.00627750363922491894728964580229301'); + BigNumber.config({ DECIMAL_PLACES : 36, ROUNDING_MODE : 4 }); + T('3.756357804151096896837356423059514649527372376901930416e+33', '-8.35113e+0', '-4.49802338623766711431549553540600451618807559803515262724924650915505e+32'); + BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 6 }); + T('2.0910203634740244001484289229808869070511242e+8', '8.02731501357361831201449656310303952281e+20', '3e-13'); + BigNumber.config({ DECIMAL_PLACES : 89, ROUNDING_MODE : 6 }); + T('-3.1698436883263758907842835e-5', '1.0802507484344631972264715e+5', '-2.9343591688505869236154844739170466376631961498702362054626834807562627783027501e-10'); + BigNumber.config({ DECIMAL_PLACES : 88, ROUNDING_MODE : 3 }); + T('2.721239287933e+11', '-2.2412026024947078257073e+0', '-121418709977.5789096584346573366430238344682252618674469533621057930935379913349656066911664673289481'); + BigNumber.config({ DECIMAL_PLACES : 89, ROUNDING_MODE : 0 }); + T('5.407536640878138389743338300626293850572182013779e+29', '9.65717889e-20', '5.59949929733375622468492794030275424521227028215379781579255802726462696809378458143069564697687815121337158951603515340907182884338181707e+48'); + BigNumber.config({ DECIMAL_PLACES : 58, ROUNDING_MODE : 6 }); + T('-1.407077764986670621849439170701523150451857671292308216281e-17', '-4.1579607126487320994975506399283957855950459483224663e+51', '0'); + BigNumber.config({ DECIMAL_PLACES : 25, ROUNDING_MODE : 1 }); + T('-1.441505586834219591581996149087923330198635935696660167e+1', '-7.3202010555262200157717662443151643404e+27', '0'); + BigNumber.config({ DECIMAL_PLACES : 24, ROUNDING_MODE : 4 }); + T('2.441776264479681806716738298456671e-17', '-1.78406279813694314834986307099964805807329806664911767944e-12', '-0.000013686604905553627996'); + BigNumber.config({ DECIMAL_PLACES : 92, ROUNDING_MODE : 4 }); + T('5.10140649101411765e+12', '6.1899268048903359299676290735372105234653266354e+46', '8.241464966893896751223180874476897717134549759895885559205e-35'); + BigNumber.config({ DECIMAL_PLACES : 52, ROUNDING_MODE : 6 }); + T('-4.3620916548258882483528769576e-2', '1.8047591129224229943228186843920124915612131569287428e+7', '-2.4169938378991808382337249713327963963819305e-9'); + BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 6 }); + T('6.42281238744617747935824187719036657371e-2', '4.3350798745859359400910160329315845099386758471658e-9', '14815903.220375266518527'); + BigNumber.config({ DECIMAL_PLACES : 80, ROUNDING_MODE : 4 }); + T('2.465991672234244959093928122489457556184e+39', '6.108829166965532317296514733893591376592411635e+10', '4.036766465118206435614185736756057288657773615400609260966944868513631488419017972532456294687997972218413339e+28'); + BigNumber.config({ DECIMAL_PLACES : 33, ROUNDING_MODE : 2 }); + T('1.153200244637552713320161158311786084646e-9', '6.56566163383858080832e+9', '1.75641132447964e-19'); + BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 1 }); + T('-3.7862449918709461215480788954277027542635119e+44', '-2.48191716299e+2', '1.52553237808694803942130939517658504874736536502506697627855143276705142569162793377923720790104080201286331e+42'); + BigNumber.config({ DECIMAL_PLACES : 5, ROUNDING_MODE : 6 }); + T('-2.319766197008371429642922e+3', '2.1729e+1', '-106.75899'); + BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 1 }); + T('8.03340286495794866966241438602064440121086532273e+1', '9.1251158614e+1', '0.880361738631715546850931996871033657822665519753550643941635289930632'); + BigNumber.config({ DECIMAL_PLACES : 99, ROUNDING_MODE : 1 }); + T('-5.440572145054479422049668949148854525893474277e+35', '3.9971133726835147752137353945421194492977095308071895950804e+38', '-0.001361125301632832987221653247595128114977341147062273632678950498625345776512047144344783907762334'); + BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 1 }); + T('-9.68442049254161857510168781861e-1', '-3.409651e+3', '0.0002840296702665938119503048205992'); + BigNumber.config({ DECIMAL_PLACES : 58, ROUNDING_MODE : 1 }); + T('3.555075917103862988684791048517766337536809368296007676036e-18', '8.87175e+0', '4.007186763720644730391175414678914912544e-19'); + BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 0 }); + T('2.99103737827925059323239200345428714e+6', '-7.701088877270243283457521248899363219520751505654e+3', '-388.391489300596783892543822601209004355674896370038946'); + BigNumber.config({ DECIMAL_PLACES : 9, ROUNDING_MODE : 0 }); + T('1.350223e+1', '2.34761460206965359787881103867751198152920817e-12', '5751467889191.204463481'); + BigNumber.config({ DECIMAL_PLACES : 27, ROUNDING_MODE : 5 }); + T('3.15621320335032541976564899638959645896178154788794896170234e+33', '4.296256546955836349e-15', '7.34642628729119495114397413872390174893190414987515592016715245744118873793e+47'); + BigNumber.config({ DECIMAL_PLACES : 24, ROUNDING_MODE : 1 }); + T('2.37218509210530059394943507579448892298100229851e+23', '-1.62692615757209788944838e+1', '-1.4580779103369823679061687192778057317094128596e+22'); + BigNumber.config({ DECIMAL_PLACES : 53, ROUNDING_MODE : 2 }); + T('4.878005731507031e-11', '-4.44790195666587259994945869672e+28', '-1.09669812397653e-39'); + BigNumber.config({ DECIMAL_PLACES : 29, ROUNDING_MODE : 2 }); + T('4.722619473331688768232e+15', '-1.456444723124023567069825767067360659815834669327072e-15', '-3.24256691541429276263697747398781928625546780683841992853487e+30'); + BigNumber.config({ DECIMAL_PLACES : 52, ROUNDING_MODE : 1 }); + T('-2.195698971527617777838761335193563e+21', '3.478156933398994769e+19', '-63.1282318070074107023223149962725043506589287831761401'); + BigNumber.config({ DECIMAL_PLACES : 33, ROUNDING_MODE : 0 }); + T('-4.81e+2', '-3.6196e+4', '0.013288761189081666482484252403581'); + BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 0 }); + T('3.8106e+0', '-1.68631804101229512773985812930393121867791487059807881252267e+38', '-2.2597160839911909013914868780831714865e-38'); + BigNumber.config({ DECIMAL_PLACES : 93, ROUNDING_MODE : 5 }); + T('5.1453641376e+10', '3.8161104559268143928699715e+4', '1348326.83619225882232074493879180157392063413273607475207309549030944420276685926954044781995282079'); + BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 5 }); + T('-1.766752791482e-9', '-2.2248081755686205693938592247744896299e-9', '0.794114661606927109'); + BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 5 }); + T('1.07e+1', '3.5694846551911999114971941017111214723574489411561208839805e-3', '2997.6316005277386752844589722347729748825802678625637341931193548684651965908690269486826380875506585'); + BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 5 }); + T('-1.070223299865544e-7', '2.11425777559388482853946385898128854354089e+29', '-5.06193384846331441e-37'); + BigNumber.config({ DECIMAL_PLACES : 70, ROUNDING_MODE : 5 }); + T('2.334700147652e+8', '-1.6801514078762469767833014661009025574448734274217e+27', '-1.389577234948794795652139200374723004115301552098936e-19'); + BigNumber.config({ DECIMAL_PLACES : 9, ROUNDING_MODE : 2 }); + T('-8.990729953840491347231278733483218542630317243e-12', '1.76794e-3', '-5e-9'); + BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 1 }); + T('-1.320555263408879277572868747426701674e+36', '-8.280318696431684320657028912505686208821959e+3', '1.594812122361858593384666275294206775380477386239664128388472280487930519223575938267970753622820899059467907e+32'); + BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 4 }); + T('-6.231912384589897854133779639848e+30', '-3.43189565984372085538646069857139e+11', '18158804935443993377.0751933169966139471194602146070091'); + BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 0 }); + T('4.4415362952296514295e+19', '1.39643690008178464005185146939344633199e+21', '0.0318062083218334140239237816307785327376606457328643271461090039493434588946'); + BigNumber.config({ DECIMAL_PLACES : 56, ROUNDING_MODE : 3 }); + T('1.1742928469887653678489205983104182614756200996e+1', '-6.9906485440108893963e+18', '-1.67980529931635504817020737838900453766e-18'); + BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 2 }); + T('2.1566662626629319042256416557181912831932666e+26', '1.42302534466269546467e+8', '1515550141641457440.4655660866942607'); + BigNumber.config({ DECIMAL_PLACES : 50, ROUNDING_MODE : 3 }); + T('-4.8146044046046959308e+9', '-8.40724e+1', '57267360.09207178492347072285315989551862442371099195455345'); + BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 2 }); + T('-1.18810238e+3', '9.74127342365354222e+17', '-1.21965817848319130241016938997978134735e-15'); + BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 4 }); + T('5.87453940985908343285738604241e+20', '2.1589366474822240030123991237675e-20', '2.7210337166262089309442295474582002270327559e+40'); + BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 4 }); + T('2.8402399093269e-7', '2.29461160255535856229460480721437111633446121658231e+50', '0'); + BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 1 }); + T('7.814632967948295805989727852979009232425599220867683407305e-3', '-2.1855562561097858541591253249940846587604e+40', '-3.57558079143571018411113233263763e-43'); + BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 4 }); + T('-2.07484006218997673327834760683047751066112044e+21', '-4.2343e+3', '490007808183165277.20717654'); + BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 0 }); + T('-1.174628459863851785055746341650852577960316e+38', '5e+0', '-2.349256919727703570111492683301705155920632e+37'); + BigNumber.config({ DECIMAL_PLACES : 5, ROUNDING_MODE : 4 }); + T('-2.18031244388e+2', '4.9707067e+4', '-0.00439'); + BigNumber.config({ DECIMAL_PLACES : 62, ROUNDING_MODE : 0 }); + T('-3.5318426831698e-11', '1.744834377768283326385768191171847918793999764775332687433e-5', '-0.00000202417073400810429774305830088179811979022168174920885864'); + BigNumber.config({ DECIMAL_PLACES : 70, ROUNDING_MODE : 1 }); + T('4.603247010352344621295928161305282953e-17', '3.85024303536071236681680123e+15', '1.19557310228887580284053475976953609839e-32'); + BigNumber.config({ DECIMAL_PLACES : 93, ROUNDING_MODE : 0 }); + T('5.6652585082225360020865725712732622636097569528715411e+30', '7.82248e+5', '7.242279313238942128438260719456313424399623844192047918307237602397193728843026763890735418946421083850645830989660569e+24'); + BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 0 }); + T('9.40290220646761003558174981105847485978e+29', '1.540600509715740951214714205008966296603104625856179918032e+44', '6.10340068510204303949264446723367e-15'); + BigNumber.config({ DECIMAL_PLACES : 72, ROUNDING_MODE : 3 }); + T('-7e-1', '-4.27888647534096688050483033121609213295359e+32', '1.635939639983600818542538319489686587195e-33'); + BigNumber.config({ DECIMAL_PLACES : 41, ROUNDING_MODE : 1 }); + T('1.72082816995428430797615448257083562141770055217331e+23', '-2.7201e+4', '-6326341568156627726.8341402248845102070427578110117642733723'); + BigNumber.config({ DECIMAL_PLACES : 66, ROUNDING_MODE : 4 }); + T('-3.153102984e+0', '-4.977851364107271003202629484936797813056878179759195174e+53', '6.334265033977e-54'); + BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 0 }); + T('-8.49387714e+0', '-9.45054620259658286223674682547382e+4', '0.00008987710295163962637083185864525273260397410828505470512439124838'); + BigNumber.config({ DECIMAL_PLACES : 22, ROUNDING_MODE : 1 }); + T('-9.311975726515998074155346632126152659845407414403728541526e+15', '-1.2724127e+4', '731836119406.5414526399608108380364'); + BigNumber.config({ DECIMAL_PLACES : 91, ROUNDING_MODE : 0 }); + T('-3.674297468159500390156502433406753075149461e+20', '2.2070345225046097978222093124224963839784689973e+3', '-166481195952920394.0492995478783782657094670464162402895892210975115096339663670419040478923040241894015329446'); + BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 0 }); + T('-1.8150003598665833976021678902349937972e-12', '9.964919276121040376508464825057262783846e-15', '-182.138992757912'); + BigNumber.config({ DECIMAL_PLACES : 43, ROUNDING_MODE : 3 }); + T('7.0189459089779438798574e+14', '4.5622493810854e+5', '1538483612.5087212498761814627907062459367285706464986'); + BigNumber.config({ DECIMAL_PLACES : 6, ROUNDING_MODE : 6 }); + T('-2.27577059368628490602551877708365e+16', '1.6950572843204e+4', '-1342592144075.361162'); + BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 3 }); + T('-1.4545e+1', '-2.39141e+5', '0.0000608218582342634679958685461715055134836769939073600929995274754224495172'); + BigNumber.config({ DECIMAL_PLACES : 98, ROUNDING_MODE : 2 }); + T('4.26068e+2', '-1.377737835201116479534815445957191281256100978924e+49', '-3.092518686167926519156871274760772691541984883128957e-47'); + BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 3 }); + T('-5.503468462778599482e-7', '8.07665374429389943790757771e+13', '-6.814045317550925423366152559691137529806580817371877453148683e-21'); + BigNumber.config({ DECIMAL_PLACES : 32, ROUNDING_MODE : 1 }); + T('-5.848733993080881770424982329e+7', '8.0038810550681e+4', '-730.73724519899409774861163662599175'); + BigNumber.config({ DECIMAL_PLACES : 89, ROUNDING_MODE : 3 }); + T('2.265045675363689237e+6', '6.4761121536492474143896152898643018001e+12', '3.4975392976901281938389885246232578839048066422817737012983923710148316563180967182e-7'); + BigNumber.config({ DECIMAL_PLACES : 7, ROUNDING_MODE : 6 }); + T('4.8865055959832394053310098256526219164091e+33', '2.54448396839393717534256536740336269817e+26', '19204308.837'); + BigNumber.config({ DECIMAL_PLACES : 52, ROUNDING_MODE : 2 }); + T('9.43987760059592237947358314268891767411016698884722628e+53', '6.941736916e+6', '1.359872567172340009705084470632640390618653486989512738255435204971977073986824078021570473472550138e+47'); + BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 3 }); + T('-9.4555843664304821120443854458756981429686141898273052e+42', '-4.038426625597324898335671374e-9', '2.341403037137490093910868564806637740922093050737553862998837279287645e+51'); + BigNumber.config({ DECIMAL_PLACES : 50, ROUNDING_MODE : 2 }); + T('1.8e+1', '9.8349873842965767449e+7', '1.8302006191426757663302662547213753106960184e-7'); + BigNumber.config({ DECIMAL_PLACES : 25, ROUNDING_MODE : 2 }); + T('-5.88308127e-12', '4.919775647326018e+12', '-1.1e-24'); + BigNumber.config({ DECIMAL_PLACES : 70, ROUNDING_MODE : 2 }); + T('-4.6308973760853953327001814625712286488346449216105175950755e+6', '-2.00398084061039276564454531752265553652218114992496256702e+47', '2.31084912701803563305144150147e-41'); + BigNumber.config({ DECIMAL_PLACES : 98, ROUNDING_MODE : 4 }); + T('1.7e-9', '-2.88503390887047329960178250261e-17', '-58924784.0302012661186747772006608809102301993926263137789045605314160576242574818698805742587572836618084'); + BigNumber.config({ DECIMAL_PLACES : 56, ROUNDING_MODE : 4 }); + T('-7.405083002074059516648379361320032329944335393726739609376e+9', '1.6556106449874e+13', '-0.00044727200954487797400282081334675084505910663555827687'); + BigNumber.config({ DECIMAL_PLACES : 77, ROUNDING_MODE : 1 }); + T('6.0497889983053272189781837e+12', '5.390638402564282362230025698691742435927066249e-14', '1.1222769079498065272537005470398646717816465210380024579583156149207854843321590288839061176865722831193e+26'); + BigNumber.config({ DECIMAL_PLACES : 93, ROUNDING_MODE : 5 }); + T('5.448304e+1', '3.1492e-3', '17300.596977010034294423980693509462720690969135018417375841483551378127778483424361742664803759685'); + BigNumber.config({ DECIMAL_PLACES : 73, ROUNDING_MODE : 1 }); + T('3.220753067202506e+15', '2.057901432381929819e+15', '1.5650667308563106859051583305980599694865953104127288105059337312844551398'); + BigNumber.config({ DECIMAL_PLACES : 53, ROUNDING_MODE : 6 }); + T('-1.970004649047161189e+0', '2.34711024152190208946286228795944172922073e+24', '-8.3933196413040237898539117521e-25'); + BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 3 }); + T('4.0104094423822081719879215420041100057888945931e+26', '-3.992065465182403164722197282679e+18', '-100459510.931366122894597070623973283456209980720066043246091'); + BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 4 }); + T('-1.172548389687914049197781603e+13', '-1.0095165117466329472564e+2', '116149500879.307917288636269435813816567925319756587745662146497'); + BigNumber.config({ DECIMAL_PLACES : 56, ROUNDING_MODE : 4 }); + T('-3.366604e+1', '1.52803440896e+0', '-22.03225254784252054229343000461957345895394881671029042427'); + BigNumber.config({ DECIMAL_PLACES : 19, ROUNDING_MODE : 2 }); + T('-5.41300062319490880734936806137892720844470175838875618777e-5', '-1.344e-12', '40275302.2559145000546827981'); + BigNumber.config({ DECIMAL_PLACES : 85, ROUNDING_MODE : 0 }); + T('1.6457211129964164341500335562263942435807110689675e+25', '2.5188547952729012955393944550555281036337662041694727310645e-17', '6.533608511633610906153210144759391068412945320476292119142177798234135400231219783518480565350860910071560809872203792728829626e+41'); + BigNumber.config({ DECIMAL_PLACES : 31, ROUNDING_MODE : 5 }); + T('-2.47754507883181224382061601929648866e+35', '-8.290209128043376039902492705770167581944177405005061e-8', '2.9885193974793650466728879599534492576677747563744203670472386689562240821e+42'); + BigNumber.config({ DECIMAL_PLACES : 66, ROUNDING_MODE : 5 }); + T('-4.7227595213519353613092231960779e+5', '3.31814153192981587699392144069268225503584e-9', '-142331467054848.625222034511314674268556658940757539089286751164890009410454133195'); + BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 3 }); + T('6.8506679344968447210816003126910712827e+35', '1.993118766568317455759548551867416587357158e+3', '3.4371599171142653031186804218003080226412784028e+32'); + BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 1 }); + T('4.8985844145021808176685922e+16', '2.747743862428642455820955475504906462565719e+28', '1e-12'); + BigNumber.config({ DECIMAL_PLACES : 88, ROUNDING_MODE : 1 }); + T('-2.6062701234e+0', '2.9288100258328928138617153553825753437922149199012e+5', '-0.000008898733958201439997374634267953034276265544438493683277409168637100200126947586243'); + BigNumber.config({ DECIMAL_PLACES : 5, ROUNDING_MODE : 2 }); + T('1.6157537454e+8', '2.356410978611863625721378819626e+23', '0.00001'); + BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 3 }); + T('1.3226344263949745e+1', '1.5134622161574201663058e+11', '0'); + BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 5 }); + T('7.13378975743669341980657349839e+30', '-1.077355370700932622574621785091799108e+19', '-662157534221.546159797954'); + BigNumber.config({ DECIMAL_PLACES : 99, ROUNDING_MODE : 1 }); + T('-1.30668491770024533871382097517e-15', '7.739747536662e-3', '-1.68827847615271530426895209005095818365544497037197615248076378431599198028192806275708e-13'); + BigNumber.config({ DECIMAL_PLACES : 72, ROUNDING_MODE : 6 }); + T('-7.310224019e+5', '-1.20187e+4', '60.823749814871824739780508707264512800885287094278083320159418239909474402'); + BigNumber.config({ DECIMAL_PLACES : 50, ROUNDING_MODE : 5 }); + T('-1.36594744373998329125183129397035154767615739862e+23', '-1.6221844e-6', '8.420420290935995262017260762527068733222668141920240386974501789069109529101624e+28'); + BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 1 }); + T('5.91339512442594930756510267595267112832977719e+0', '1.06379573691046094321632609927607382099371510837970460425e+44', '0'); + BigNumber.config({ DECIMAL_PLACES : 99, ROUNDING_MODE : 1 }); + T('3.4600072801140082149120093e+24', '2.419385805087341473032573096507979259036169859796904e-19', '1.430118037742682217185741679309760641844767273252571695335791118413641227665278278846097472044183336943613526599349723904182792265666390902193e+43'); + BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 6 }); + T('4.2989936567621962434647067163244712499754286711e+46', '-7.287361590832233591725730628156e-6', '-5.899245705291318197490442137821233191034725732731152e+51'); + BigNumber.config({ DECIMAL_PLACES : 38, ROUNDING_MODE : 2 }); + T('5.08255843892386163e-10', '3.6769867553503517317613932366705820276791455e+14', '1.3822618293439e-24'); + BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 5 }); + T('6.018e+0', '9.82936025658216212324214864902440546928e+14', '6e-15'); + BigNumber.config({ DECIMAL_PLACES : 30, ROUNDING_MODE : 3 }); + T('-4.88694832494423e-16', '2.6685695117656813935805e+14', '-2e-30'); + BigNumber.config({ DECIMAL_PLACES : 71, ROUNDING_MODE : 0 }); + T('6.187367411590709211084e-3', '-1.9016490483589853410164513292944135e+5', '-3.253685224899964775762923531318992984544093576167679281165724876e-8'); + BigNumber.config({ DECIMAL_PLACES : 70, ROUNDING_MODE : 6 }); + T('-2.698534206828656555645951400586392511e-20', '1.41566409819611657131347812519308548766678285194938434253806e+23', '-1.90619668201461996680522995e-43'); + BigNumber.config({ DECIMAL_PLACES : 23, ROUNDING_MODE : 5 }); + T('3.64338680869165730432721264095799056297576253203915505e+12', '2.49734543640219665770981076900260707826855027946e+11', '14.58903824670929929825096'); + BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 5 }); + T('1.37750576475437616802e+20', '3.1186519496663986e+12', '44169910.172301452450746870217307380822060649144439661963399'); + BigNumber.config({ DECIMAL_PLACES : 92, ROUNDING_MODE : 2 }); + T('-3.7953891171370774966517431e-8', '3.111810168415618559e+17', '-1.2196724452087975157365242667935153943383951245128650341171253148108e-25'); + BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 4 }); + T('1.758687497055576219230940728575659698853957728014345e+25', '2.55987906294351248373600134010276392866914703516483e+46', '0'); + BigNumber.config({ DECIMAL_PLACES : 29, ROUNDING_MODE : 5 }); + T('4.983521732075865023238944583705028e+3', '-4.60355004431025072736834106351363219067932246888e+19', '-1.0825388415697e-16'); + BigNumber.config({ DECIMAL_PLACES : 38, ROUNDING_MODE : 2 }); + T('1.36210873191087156571300625683992927337759078388519616116957e+2', '-4.856011861229238531e+5', '-0.000280499465577102362081282866149858'); + BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 3 }); + T('-6.27292639398799941804769052811144481813654523344e+23', '-9.223861100927221622570481401681e+12', '68007598177.7025920604'); + BigNumber.config({ DECIMAL_PLACES : 59, ROUNDING_MODE : 0 }); + T('1.451185082463737847802616854453333e+16', '2.67423846293035097281847174648822449142303424568339e+7', '542653582.53563236627592952195668145679814392738365254624328253671248'); + BigNumber.config({ DECIMAL_PLACES : 46, ROUNDING_MODE : 2 }); + T('-1.30217e+4', '3.34207562054215771861e-2', '-389629.1250850749937369356768877727892124143497377121'); + BigNumber.config({ DECIMAL_PLACES : 63, ROUNDING_MODE : 5 }); + T('6.0774200897757313464657364607565620534e+2', '1e+0', '607.74200897757313464657364607565620534'); + BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 5 }); + T('-1.4977805511498677e-5', '2.562493654824974661853706878407e+26', '0'); + BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 5 }); + T('2.37738940731e+11', '2.1197520687627033e+16', '0.00001121541260577'); + BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 1 }); + T('3.568714642593951821147425302697509378796972e+42', '-5.567444895768511376780232462925349027461438338986e+42', '-0.640996850333682278715341380001557537577078630198953922106208118826563871324885854582'); + BigNumber.config({ DECIMAL_PLACES : 90, ROUNDING_MODE : 0 }); + T('-1.092655133385021909286285557050656614359635191341348377e+38', '1.79046e+1', '-6.102650343403493567498215861011453002913414381451405655529863833875093551377858204036951397964768830356444712531975023178401082e+36'); + BigNumber.config({ DECIMAL_PLACES : 98, ROUNDING_MODE : 4 }); + T('3.195e+1', '6.3559613761446696e+14', '5.026776927864197611599309013360652084107428630046636070537160730904010007615944523607e-14'); + BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 6 }); + T('2.322e+2', '-5.398093488026379244431502845e-13', '-430151868460684.3768540542081462239159342450111793279240742283'); + BigNumber.config({ DECIMAL_PLACES : 77, ROUNDING_MODE : 1 }); + T('-6.5565196e+7', '2.711104726376443e+7', '-2.41839407242788026484854848409113719460326005903320644117285296918683756878243'); + BigNumber.config({ DECIMAL_PLACES : 41, ROUNDING_MODE : 6 }); + T('1.0645627403778739844e-13', '1.3523634769128119105942e+13', '7.87186846252361e-27'); + BigNumber.config({ DECIMAL_PLACES : 85, ROUNDING_MODE : 6 }); + T('1.043904773373277442180173714797789481695e+24', '-3e+0', '-3.47968257791092480726724571599263160565e+23'); + BigNumber.config({ DECIMAL_PLACES : 48, ROUNDING_MODE : 5 }); + T('-3.8784966818454064082276654510557840673048257e+11', '1.27615024340009655855691378584236771e+21', '-3.03921634768628603145473809535079982052e-10'); + BigNumber.config({ DECIMAL_PLACES : 27, ROUNDING_MODE : 1 }); + T('1e+0', '7.8059434837451907016038344313692e+32', '0'); + BigNumber.config({ DECIMAL_PLACES : 30, ROUNDING_MODE : 6 }); + T('4.090963382185467544867391401161e+3', '-4.947353627083592126859423580421306070697601e+42', '0'); + BigNumber.config({ DECIMAL_PLACES : 55, ROUNDING_MODE : 1 }); + T('-2.252526e+6', '-2.2751905784830644458152204427279971293971386564923526505e+55', '9.90038e-50'); + BigNumber.config({ DECIMAL_PLACES : 94, ROUNDING_MODE : 5 }); + T('3.337179e+3', '-1.124109298808773078000919303240413683125e+18', '-2.9687317803850864155193603510953192628283148654325926932202383719798270184788317e-15'); + BigNumber.config({ DECIMAL_PLACES : 48, ROUNDING_MODE : 2 }); + T('5.396459229758622243863307316004851823277030500822e+49', '-7.986950723654444885269354583056275536e-15', '-6.756595121810720018302055529532811905268493757097879742186761291708971892162113550298139220290162637739821309226e+63'); + BigNumber.config({ DECIMAL_PLACES : 91, ROUNDING_MODE : 5 }); + T('-3.5448477151290801761877523164961721974368752265e+21', '4.421408100681322564028445047780585001526e-6', '-8.017463293159553200705023268652798425703321341288970441362156197087995291733427882034028035790626803772684855154253844e+26'); + BigNumber.config({ DECIMAL_PLACES : 74, ROUNDING_MODE : 2 }); + T('-4.350832932450342098804623837197850016325667240511e-4', '-1.661298881760292928966647592693722368086242162075596e+39', '2.6189344856719883193139326952496e-43'); + BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 2 }); + T('3.83705e+0', '3.570563711367172540823838290282453562478e+23', '1e-13'); + BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 5 }); + T('1.6901977568389407896942317215665594164649791131e-1', '2.22007914080350807009448350735886427080696147e+31', '0'); + BigNumber.config({ DECIMAL_PLACES : 55, ROUNDING_MODE : 3 }); + T('2.840481e+6', '1.3327e+1', '213137.3152247317475801005477601860883919861934418848953252795'); + BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 4 }); + T('1.8244693340188831428316255121e+19', '1.00024476176549778435583070853827e+3', '18240228829577420.4741187267696143148954146464874986680767286208183813649772543'); + BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 6 }); + T('1.345966506e+1', '1.6817041820786075207825e+1', '0.800358660187410885552441495604885001196139987870917888069245179641377499257626555'); + + // Rounding mode 7 + BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 7 }); + T('1.9640', '2.444', '0.80360065466448445171849427168576104746317512274959083469721767594'); + BigNumber.config({ DECIMAL_PLACES : 88 }); + T('3607247394853566951317.77076581', '15782819408764618683425.244', '0.2285553234455921540387285974114769405274281136836665305041152998320784526374246178556985'); + BigNumber.config({ DECIMAL_PLACES : 18 }); + T('1', '0.0000000000000194052811234', '51532363465435.329092388839409191'); + BigNumber.config({ DECIMAL_PLACES : 68 }); + T('660716722326173271523', '479.97194389', '1376573632557148738.4776939404452905552516668788409085775073968563583659260705043457035'); + BigNumber.config({ DECIMAL_PLACES : 41 }); + T('0.0000000000015', '5360559278853.1138548', '2.7982154882930862e-25'); + BigNumber.config({ DECIMAL_PLACES : 74 }); + T('707502522397750932', '1', '707502522397750932'); + BigNumber.config({ DECIMAL_PLACES : 2 }); + T('43125000853', '0.0000001802317770188696', '239275235290417027.96'); + BigNumber.config({ DECIMAL_PLACES : 99 }); + T('0.4241762859699751144', '6', '0.070696047661662519066666666666666666666666666666666666666666666666666666666666666666666666666666667'); + BigNumber.config({ DECIMAL_PLACES : 24 }); + T('33139607696828445002688', '0.000000001792296820835179632717882', '1.8490022027370419145710042278124111872435976327485643069e+31'); + BigNumber.config({ DECIMAL_PLACES : 78 }); + T('173121.73744340768266', '0.00000000982290101590940367574518', '17624298276345.817480994098505871724687735852356624739604466130187169643522698514888693800981'); + BigNumber.config({ DECIMAL_PLACES : 64 }); + T('72500577491.827058757', '1384314218.9', '52.372919747539160927851392742780993766761344937594789303944496239'); + BigNumber.config({ DECIMAL_PLACES : 55 }); + T('0.00000000000016005742', '0.0001072510743316228614932735787327', '1.4923619273509435184608337879188270656177343392e-9'); + BigNumber.config({ DECIMAL_PLACES : 57 }); + T('64.9247864841747039291', '4.942', '13.137350563370033170598947794415216511533791987049777418049'); + BigNumber.config({ DECIMAL_PLACES : 35 }); + T('35996.281', '0.00000000000000074542201143965294641517170', '48289801545408412240.6700434620478582483162398124101957'); + BigNumber.config({ DECIMAL_PLACES : 57 }); + T('7.28147866409558076', '0.03910511255889906305327760', '186.202728687416881931933868388966882657804173481008718667916'); + BigNumber.config({ DECIMAL_PLACES : 30 }); + T('0.000000000000000823756117121327881', '0.000023106510', '3.5650391042235624549e-11'); + BigNumber.config({ DECIMAL_PLACES : 37 }); + T('62583.79738', '178959437.41591752', '0.0003497093994241261156338351568369208'); + BigNumber.config({ DECIMAL_PLACES : 47 }); + T('0.000000000443086974862808087088', '2487.74798091496736961', '1.7810766133145262917354356670998647e-13'); + BigNumber.config({ DECIMAL_PLACES : 12 }); + T('2815926609336708.7', '0.00000000000000001001094905', '2.81284680930097102032499106565725654152640004e+32'); + BigNumber.config({ DECIMAL_PLACES : 69 }); + T('0.000739794640371', '137321505041027011039861873710', '5.387318178241451967964081027204864758e-33'); + BigNumber.config({ DECIMAL_PLACES : 1 }); + T('0.000000000000000000061851613', '24.062', '0'); + BigNumber.config({ DECIMAL_PLACES : 73 }); + T('0.0771696832062', '2.1', '0.0367474681934285714285714285714285714285714285714285714285714285714285714'); + BigNumber.config({ DECIMAL_PLACES : 76 }); + T('2529', '0.08465350119477616', '29874.7241910422103039742193188143373076032334005926511491689125172187743129512536'); + BigNumber.config({ DECIMAL_PLACES : 81 }); + T('5', '0.126482574333741460', '39.531137204772734573055325355697133859836053208427591310576043239956817198183217645'); + BigNumber.config({ DECIMAL_PLACES : 30 }); + T('0.00000000000009378684189488673074114501086', '7', '1.3398120270698104e-14'); + BigNumber.config({ DECIMAL_PLACES : 40 }); + T('0.0000187', '4465054263059521', '4.1880790015721968729e-21'); + BigNumber.config({ DECIMAL_PLACES : 98 }); + T('3.1864657', '0.0000000000182219', '174870112337.35230683957216316629989188833217172742688742666791059110191582656034771346566494163616307849346116'); + BigNumber.config({ DECIMAL_PLACES : 95 }); + T('39819077.7207634188', '3393.28', '11734.68671042867632497170878913617502829121086382497170878913617502829121086382497170878913617502829'); + BigNumber.config({ DECIMAL_PLACES : 11 }); + T('0.00000000000000000493115050264682953202876', '53.5909308156704932657', '0'); + BigNumber.config({ DECIMAL_PLACES : 45 }); + T('0.0000000000000310741', '0.00000000008984416638925743537', '0.000345866640526985787017354106989915167446365'); + BigNumber.config({ DECIMAL_PLACES : 29 }); + T('0', '69563752623', '0'); + BigNumber.config({ DECIMAL_PLACES : 83 }); + T('63.43260001676', '1086125180.7184756659', '5.840266034049510731491489501810883327466513892469824400126826926582081431415e-8'); + BigNumber.config({ DECIMAL_PLACES : 45 }); + T('6523672727931649502', '0.000000000000000000434', '1.503150398140933064976958525345622119815668202764976958525345622119815668202764977e+37'); + BigNumber.config({ DECIMAL_PLACES : 2 }); + T('12870616112352300332.7', '252600421736629380772963.0', '0'); + BigNumber.config({ DECIMAL_PLACES : 55 }); + T('574191.68966', '0.000000000000034439', '16672716677603879322.8607102412962048839977931995702546531548535091030517727'); + BigNumber.config({ DECIMAL_PLACES : 35 }); + T('12.1', '0.00000000000309613994708762118732362135', '3908092078131.62469168712555874225899954380960302'); + BigNumber.config({ DECIMAL_PLACES : 95 }); + T('5.7302793', '50878587876729840772.76', '1.1262653975152556294179452325870732792984423847779921331877432894905264370203e-19'); + BigNumber.config({ DECIMAL_PLACES : 19 }); + T('5573.086', '26150952594220522.98', '2.131122e-13'); + BigNumber.config({ DECIMAL_PLACES : 22 }); + T('168186325277194054376873', '1.61', '1.044635560727913381222813664596273291925465839e+23'); + BigNumber.config({ DECIMAL_PLACES : 13 }); + T('58236248756795.9900527', '252537967.550469224', '230603.9338229709497'); + BigNumber.config({ DECIMAL_PLACES : 22 }); + T('0.00000000000000000001138047224833670', '566502039.976811672976', '0'); + BigNumber.config({ DECIMAL_PLACES : 75 }); + T('715846101.8231243141900849', '2658.45445', '269271.531743989186720910301848504494782673443962901075848788757693403398354258054'); + BigNumber.config({ DECIMAL_PLACES : 77 }); + T('559654492614629609571232', '0.0000000000000035492549047527', '1.5768224814318441564203219886464439859081537559261572461898277455455807566104982592423229234110550476113391222528392e+38'); + BigNumber.config({ DECIMAL_PLACES : 60 }); + T('0.0000000000000000217172631', '43728.1', '4.96643190534233136129857002705354223028e-22'); + BigNumber.config({ DECIMAL_PLACES : 18 }); + T('10918850.97505', '0.000000000000000009353517255427747', '1.167352416943894172108361615414923895822878e+24'); + BigNumber.config({ DECIMAL_PLACES : 80 }); + T('1', '0.000000000024506088608155668091726061802', '40806185596.96214818148515993262878438760674256131327543011945572368751014760958644113863312'); + BigNumber.config({ DECIMAL_PLACES : 72 }); + T('227794877.826863756631939', '240432470695110862966.411', '9.47438077595298409185055810628228404579316683619935327287797e-13'); + BigNumber.config({ DECIMAL_PLACES : 7 }); + T('31611287495276783548533221067', '2073240039945.869561', '15247287765145673.1121303'); + BigNumber.config({ DECIMAL_PLACES : 14 }); + T('0.0000000000000014148163739447713375129068', '28.413089850789', '0'); + BigNumber.config({ DECIMAL_PLACES : 46 }); + T('29425898489.4727866910401', '0.00000000000160393107113352382657806', '1.83461116372519874093803481296646218449925093785900540751563279136392e+22'); + BigNumber.config({ DECIMAL_PLACES : 39 }); + T('3737757585710940', '195050171601038626200196.154915', '1.9163057151040397991462588170012e-8'); + BigNumber.config({ DECIMAL_PLACES : 3 }); + T('17.4433702063910', '0.0000000000000000031', '5626893614964838709.677'); + BigNumber.config({ DECIMAL_PLACES : 6 }); + T('38750870710122252693', '17644957716082679631219376', '0.000002'); + BigNumber.config({ DECIMAL_PLACES : 44 }); + T('524474068.7', '0.000002789', '188050938938687.7016851918250268913589100035855145213338114'); + BigNumber.config({ DECIMAL_PLACES : 45 }); + T('0.00000464240477182', '3128190452409.2', '1.484054389413731560053972393e-18'); + BigNumber.config({ DECIMAL_PLACES : 4 }); + T('2', '3418684.78663', '0'); + BigNumber.config({ DECIMAL_PLACES : 73 }); + T('2.2467656', '7', '0.3209665142857142857142857142857142857142857142857142857142857142857142857'); + BigNumber.config({ DECIMAL_PLACES : 10 }); + T('120346443.16', '10795.972253', '11147.3464677123'); + BigNumber.config({ DECIMAL_PLACES : 80 }); + T('30.665927794529695749918529609', '13710005334545760885', '2.23675535101793726041875619585950659615902979082071524893692077e-18'); + BigNumber.config({ DECIMAL_PLACES : 64 }); + T('6633593816637931424587', '444197881205229005', '14933.8709105032132218253006505943896289155435162360528575521807293744'); + BigNumber.config({ DECIMAL_PLACES : 44 }); + T('1571.549', '1237.453980', '1.26998581393709687692789997733895526361311634'); + BigNumber.config({ DECIMAL_PLACES : 57 }); + T('0.000000000000000015794505075839547404564047992', '6.1', '2.589263127186811049928532457704918032787e-18'); + BigNumber.config({ DECIMAL_PLACES : 19 }); + T('76559.94', '111629.7005405322970563974', '0.6858384428989970505'); + BigNumber.config({ DECIMAL_PLACES : 52 }); + T('244551812.15724', '56006595.2223526197705987', '4.3664823970523685618310184966997289543047553093959901'); + BigNumber.config({ DECIMAL_PLACES : 43 }); + T('0.0000000000000000008642890306628732071', '0.0000000000000000065072462188738', '0.1328194756417952939496716723354783765019753'); + BigNumber.config({ DECIMAL_PLACES : 79 }); + T('0.00000000000000000002071098103220294112', '0.00000000000000000169909', '0.0121894549624816467167719190860990294804866134224790917491127603599573889552643'); + BigNumber.config({ DECIMAL_PLACES : 76 }); + T('0.0000000000000000150048564643898532465014623', '0.00000000000000062620106822249151915', '0.0239617228807705788219886937261993269368455270569958890204360942043911812763'); + BigNumber.config({ DECIMAL_PLACES : 74 }); + T('6', '482332800801.1376014798687', '1.24395437963875019892040028789683014676578136731092388876046146e-11'); + BigNumber.config({ DECIMAL_PLACES : 17 }); + T('1030107435.88667', '22.98709', '44812433.23477090836639174'); + BigNumber.config({ DECIMAL_PLACES : 58 }); + T('20.38421819966', '1388.8', '0.0146775764686491935483870967741935483870967741935483870968'); + BigNumber.config({ DECIMAL_PLACES : 97 }); + T('0.000000290', '0.01226', '0.0000236541598694942903752039151712887438825448613376835236541598694942903752039151712887438825449'); + BigNumber.config({ DECIMAL_PLACES : 60 }); + T('9011546386.3', '600935335126742567574145813', '1.4995867041833020699502671609097127059674764e-17'); + BigNumber.config({ DECIMAL_PLACES : 33 }); + T('675890990.187954036', '168219.67', '4017.907003312716259638364526574092079'); + BigNumber.config({ DECIMAL_PLACES : 89 }); + T('111440801838835', '72724921.52233375857078', '1532360.56507275334901916822250664379203332142633090814283424789804076617073030238973326672111201'); + BigNumber.config({ DECIMAL_PLACES : 92 }); + T('313.58', '2414861916168.724704150652', '1.2985421563875886056403211877459005314470820608369116293430403688704059998594562355e-10'); + BigNumber.config({ DECIMAL_PLACES : 59 }); + T('81465775764.6721077', '21935100139.4945706812436', '3.71394592441323793557453488321185928621238370485979200381224'); + BigNumber.config({ DECIMAL_PLACES : 4 }); + T('11792938.18701', '66040043', '0.1786'); + BigNumber.config({ DECIMAL_PLACES : 13 }); + T('2', '8337344.083', '2.398845e-7'); + BigNumber.config({ DECIMAL_PLACES : 57 }); + T('283001531705038626', '0.0000000000000000364782', '7.758100227123011168314226030889682056680428310607431287728012895373126963501488560290803823e+33'); + BigNumber.config({ DECIMAL_PLACES : 1 }); + T('90550804574.460682467', '552.9449449953936', '163760977.3'); + BigNumber.config({ DECIMAL_PLACES : 65 }); + T('5507.2276', '105395.8', '0.05225281842350454192671814246867522235231384931847379117573945072'); + BigNumber.config({ DECIMAL_PLACES : 85 }); + T('2.60', '0.277947421041438305408673', '9.3542871894910447489326863886756667775526560092606691887434241614357773209297510953944'); + BigNumber.config({ DECIMAL_PLACES : 14 }); + T('1.627811963945396061', '1.1', '1.47982905813218'); + BigNumber.config({ DECIMAL_PLACES : 31 }); + T('16191893456602475', '0.051415', '314925478101769425.265000486239424292521637654381'); + BigNumber.config({ DECIMAL_PLACES : 48 }); + T('0.00000000000000000016175855761', '0.000000060', '2.695975960166666666666666666666666667e-12'); + BigNumber.config({ DECIMAL_PLACES : 32 }); + T('0.0000000018311297116910805120217377', '2.3', '7.9614335290916544000945e-10'); + BigNumber.config({ DECIMAL_PLACES : 66 }); + T('664.1450778', '2815689593.9115356966', '2.35872973795159871701992471952059263967036190631445213618529e-7'); + BigNumber.config({ DECIMAL_PLACES : 69 }); + T('47797327162.2', '87470295196300621.499466523701', '5.46440675145011867816909510499127013339953114016677191490819e-7'); + BigNumber.config({ DECIMAL_PLACES : 4 }); + T('83837224395420149', '5.4', '15525411925077805.3704'); + BigNumber.config({ DECIMAL_PLACES : 97 }); + T('552.696169530231988140', '3279501', '0.000168530568989072419291837386236503663209738310797892728192490259951132809534133394074281422692'); + BigNumber.config({ DECIMAL_PLACES : 89 }); + T('0.00000000000000997268', '0.00000000000000000012240324757473093665387564404', '81473.98208459602353194963615251083215979921534755534180942844561629851421128799181515050003304'); + BigNumber.config({ DECIMAL_PLACES : 35 }); + T('975027858433.3925', '0.000000000000013521480722321248062', '7.210954764915778782160596306991516802579265488282443328731892e+25'); + BigNumber.config({ DECIMAL_PLACES : 58 }); + T('15061.884981243', '68354258636780906782812232', '2.203503524378554846533499723090610604e-22'); + BigNumber.config({ DECIMAL_PLACES : 63 }); + T('0.000000000000000000036671006543330', '2447454417984.5014868313', '1.4983325643927158634340427366961e-32'); + BigNumber.config({ DECIMAL_PLACES : 47 }); + T('178402158272272733747.98326', '0.0000000000000000125814945508250840107533', '1.417972702301677408463731595182742641977077119785296004418407146971519328221279829833e+37'); + BigNumber.config({ DECIMAL_PLACES : 76 }); + T('42247173', '0.00000000000000000504442268', '8.3750263766556532887525594901179058214844121666664142426700848946305982432066933772488708261854060176e+24'); + BigNumber.config({ DECIMAL_PLACES : 57 }); + T('765659229728755695156.9082', '0.0000000002856', '2.68087965591301013710402030812324929971988795518207282913165266106442577030812324929972e+30'); + BigNumber.config({ DECIMAL_PLACES : 77 }); + T('7', '643470.0303827', '0.00001087851752137825493530528816743596623812029865737703697532239061630286202'); + BigNumber.config({ DECIMAL_PLACES : 0 }); + T('397.4', '983057.9893', '0'); + BigNumber.config({ DECIMAL_PLACES : 11 }); + T('5103.92', '0.00018068326073165321903680074', '28247885.16286646527'); + BigNumber.config({ DECIMAL_PLACES : 12 }); + T('19.61', '373318.166171813', '0.00005252892'); + BigNumber.config({ DECIMAL_PLACES : 52 }); + T('0.000000000000000001662577895090753263', '2228416234059060691616130', '7.460804986e-43'); + BigNumber.config({ DECIMAL_PLACES : 5 }); + T('54297525.059590468063632576129', '0.00000050686352239646624582390441', '107124546668637.95578'); + BigNumber.config({ DECIMAL_PLACES : 71 }); + T('696047.2912663272603657890', '154', '4519.78760562550169068694155844155844155844155844155844155844155844155844156'); + BigNumber.config({ DECIMAL_PLACES : 46 }); + T('982690266962.637009', '0.000000000871679040793538843583', '1.1273533272843618602522783702763994066094122611943721708491657217737e+21'); + BigNumber.config({ DECIMAL_PLACES : 9 }); + T('11', '5233148807229.55195904', '0'); + BigNumber.config({ DECIMAL_PLACES : 14 }); + T('364238.538076974338426991545', '0.000000002247870914170050579975634', '162037124009612.87206351260573'); + BigNumber.config({ DECIMAL_PLACES : 80 }); + T('204187.458192293', '700873.253124745303', '0.29133292971582493162814663011415070407599267571475859793180279506135196600778935'); + BigNumber.config({ DECIMAL_PLACES : 42 }); + T('9757567873.2439599', '3.62394191', '2692528775.452683760044045518378632068084115619833432'); + BigNumber.config({ DECIMAL_PLACES : 21 }); + T('566814769534522178180', '3.587855605105755455', '157981488644054496158.261832756780430094168'); + BigNumber.config({ DECIMAL_PLACES : 35 }); + T('0.00000001479126040527474770', '29128.1319', '5.0779982925285873550991e-13'); + BigNumber.config({ DECIMAL_PLACES : 2 }); + T('496', '48738201953', '0'); + BigNumber.config({ DECIMAL_PLACES : 23 }); + T('6316787574385342587.5140', '27395538971708885508405597', '2.3057723306369805e-7'); + BigNumber.config({ DECIMAL_PLACES : 40 }); + T('849919316761557510', '2.6', '326892044908291350'); + BigNumber.config({ DECIMAL_PLACES : 3 }); + T('7.089610589881496', '57235949.3794', '0'); + BigNumber.config({ DECIMAL_PLACES : 74 }); + T('240375088183.198416', '16.31', '14737896271.1954884120171673819742489270386266094420600858369098712446351931330472103'); + BigNumber.config({ DECIMAL_PLACES : 44 }); + T('419.98071', '73751832.2', '0.00000569451222392818059372903280903169209673'); + BigNumber.config({ DECIMAL_PLACES : 76 }); + T('235771.666012878', '552438.5', '0.4267835533057127625971035689945577652535078565306364418844812589998705738286'); + BigNumber.config({ DECIMAL_PLACES : 26 }); + T('0.00000000000000000380753434486683321337165292', '2.0', '1.90376717e-18'); + BigNumber.config({ DECIMAL_PLACES : 57 }); + T('11.5932', '0.0000000000000000262287535', '442003467682899989.890865381765092267918870029412568157308733714699785485422'); + BigNumber.config({ DECIMAL_PLACES : 55 }); + T('10779351792796719162.3617', '1415090585486344', '7617.4288086949771952766896621959742901751841418823659573004'); + BigNumber.config({ DECIMAL_PLACES : 37 }); + T('0.027598', '1.4', '0.0197128571428571428571428571428571429'); + BigNumber.config({ DECIMAL_PLACES : 31 }); + T('0.00000000216460367495974647080', '3.3', '6.559405075635595366061e-10'); + BigNumber.config({ DECIMAL_PLACES : 99 }); + T('11506516140.64410', '2', '5753258070.32205'); + BigNumber.config({ DECIMAL_PLACES : 54 }); + T('85.52', '100993785025857123074524', '8.46784779658516429845025154337022e-22'); + BigNumber.config({ DECIMAL_PLACES : 52 }); + T('6', '814288396.736913', '7.3683967793765940195459398039541052986450373e-9'); + BigNumber.config({ DECIMAL_PLACES : 22 }); + T('4.4759', '0.0000000000000000281635009877150383490293935', '158925554104668817.1877179147909227857905'); + BigNumber.config({ DECIMAL_PLACES : 41 }); + T('9844006.4346460', '279.163961', '35262.45436331948306178389552224472126615225953'); + BigNumber.config({ DECIMAL_PLACES : 35 }); + T('0.00000053552527520459569140536870931', '35565565.400671653136477197', '1.50574092994591430064e-14'); + BigNumber.config({ DECIMAL_PLACES : 64 }); + T('4333.7690', '0.000000016396479178639435474', '264310950709.8225768837965320956179316644683592293115566421757871173160024351'); + BigNumber.config({ DECIMAL_PLACES : 44 }); + T('1349.2', '38.2013647053751026', '35.31810997867732026930769809015256179566815137'); + BigNumber.config({ DECIMAL_PLACES : 93 }); + T('280835487062136497723.25201', '42329.881831', '6634450060204716.797884037305901356037262971115710696253656168161959261293738431839753179111585694235055564902'); + BigNumber.config({ DECIMAL_PLACES : 41 }); + T('4204.803128135912', '647533787.553192160', '0.00000649356560068381793837735493734519852'); + BigNumber.config({ DECIMAL_PLACES : 78 }); + T('4108.034', '41502.0203238', '0.098983952297960346169185015823757298470469311018163383187582111036063122867821'); + BigNumber.config({ DECIMAL_PLACES : 13 }); + T('7117.131844542984516505045', '3', '2372.3772815143282'); + BigNumber.config({ DECIMAL_PLACES : 35 }); + T('853147827.593', '2958', '288420.49614367816091954022988505747126437'); + BigNumber.config({ DECIMAL_PLACES : 96 }); + T('409537.9932941849932417', '0.000000000008097424', '50576330607633365.035806449063307046784261266299010648324701781702427833839502538091126264352712665163637225863435'); + BigNumber.config({ DECIMAL_PLACES : 42 }); + T('64548404726726447985505252', '5169956070701948.577270377', '12485290753.730218041121059766763942628372064639331888'); + BigNumber.config({ DECIMAL_PLACES : 39 }); + T('23978.3767956833276762', '1941213317', '0.000012352262672883429264152322936078436'); + BigNumber.config({ DECIMAL_PLACES : 66 }); + T('0', '1', '0'); + BigNumber.config({ DECIMAL_PLACES : 81 }); + T('0.00000000000000134872', '3649502.8219702176842945945', '3.69562668065531484072725465054914173730388168818847787068078e-22'); + BigNumber.config({ DECIMAL_PLACES : 14 }); + T('1', '383972970.8', '2.60435e-9'); + BigNumber.config({ DECIMAL_PLACES : 80 }); + T('64227380.914', '89.343838182', '718878.68509929111520739703427844391194973298578407384499531529203897214320373241562469'); + BigNumber.config({ DECIMAL_PLACES : 69 }); + T('1803264827', '12772665.85770752', '141.181554977564870796280888146795849121098557274333646474978278173712297'); + BigNumber.config({ DECIMAL_PLACES : 27 }); + T('11.8685', '3.17951331950', '3.732803988336932645455458046'); + BigNumber.config({ DECIMAL_PLACES : 47 }); + T('145236800.848226297', '328.64868256807', '441921.14118134255694083304943429217710315248716869087'); + BigNumber.config({ DECIMAL_PLACES : 91 }); + T('14955841523.44', '0.00000000000000475', '3.1485982154610526315789473684210526315789473684210526315789473684210526315789473684210526315789473684210526315789474e+24'); + BigNumber.config({ DECIMAL_PLACES : 27 }); + T('0.0000000001055969764713269265345397', '3778.15', '2.7949386993986e-14'); + BigNumber.config({ DECIMAL_PLACES : 14 }); + T('6.217300712977116456', '7.1299198313676854075269195', '0.87200148950125'); + BigNumber.config({ DECIMAL_PLACES : 84 }); + T('0.0000000000000000001872784271946', '356711.7224947037', '5.25013380229971635893496600115749563131312693014209454291234e-25'); + BigNumber.config({ DECIMAL_PLACES : 42 }); + T('5811567928404769055227.6201925', '0.0000000000195380900225', '2.97448108884347784523962938071778453952509420627530021403349791019727603981e+32'); + BigNumber.config({ DECIMAL_PLACES : 56 }); + T('10.7455', '61581069424.120772697182125341', '1.7449355947350730019666238078620874059537998722e-10'); + BigNumber.config({ DECIMAL_PLACES : 76 }); + T('1', '42308.6368', '0.000023635835981366338893717322511322321781825880052935196437243754447791615'); + BigNumber.config({ DECIMAL_PLACES : 26 }); + T('0.002785488234303046302207428', '1.4', '0.00198963445307360450157673'); + BigNumber.config({ DECIMAL_PLACES : 83 }); + T('5.947', '105', '0.05663809523809523809523809523809523809523809523809523809523809523809523809523809524'); + BigNumber.config({ DECIMAL_PLACES : 60 }); + T('2.4', '50665073.8926', '4.7369910188772809337536933684365420599224747453378591e-8'); + BigNumber.config({ DECIMAL_PLACES : 16 }); + T('19399827615448', '2546.04', '7619608339.0080281535246893'); + BigNumber.config({ DECIMAL_PLACES : 36 }); + T('263931.904077980', '83624.23', '3.156165432889247530291160827430040312'); + BigNumber.config({ DECIMAL_PLACES : 5 }); + T('91706.33360594206', '0.000000000000098870608303590', '927538883187109868.41737'); + BigNumber.config({ DECIMAL_PLACES : 26 }); + T('161998903316171603599847757127', '2139.036952885489870603', '7.573450430467807420229925168400494428730501521425893e+25'); + BigNumber.config({ DECIMAL_PLACES : 4 }); + T('6.4425', '0.000000230427956814438850748584754', '27958847.0473'); + BigNumber.config({ DECIMAL_PLACES : 55 }); + T('55162223949.3145005', '0.0000000000000000058055892489191465774844579932', '9.5015719480299621712483104520641446289238145666681103000866792017939064644550265334e+27'); + BigNumber.config({ DECIMAL_PLACES : 27 }); + T('0.000012351236298682709183561906', '11683472', '1.057154611119255e-12'); + BigNumber.config({ DECIMAL_PLACES : 76 }); + T('1.352595532125539064', '86151.5768663410948217', '0.0000157001831112622389924463794820232201336822917273663937690415503358498536'); + BigNumber.config({ DECIMAL_PLACES : 80 }); + T('28.1334107', '6.824', '4.12271551875732708089097303634232121922626025791324736225087924970691676436107855'); + BigNumber.config({ DECIMAL_PLACES : 48 }); + T('3448561079551.72267260994250', '1208814054325123900771.06', '2.852846612109453563467101964917726728235e-9'); + BigNumber.config({ DECIMAL_PLACES : 95 }); + T('2913207326.4120702184705769500', '31554.98', '92321.63437948844266326826859025104753671211327023499935667840702164919768607047128535654277074490302'); + BigNumber.config({ DECIMAL_PLACES : 53 }); + T('0.0000000000188959919227442507209461', '14249.808', '1.32605238770545194159430779698926469746e-15'); + BigNumber.config({ DECIMAL_PLACES : 89 }); + T('0.00000031961836747325457', '628.7', '5.0837977966161057738189915699061555590901860982980753936694766979481469699379672e-10'); + BigNumber.config({ DECIMAL_PLACES : 32 }); + T('610034101.8572879443330203', '8065.5', '75635.00116016216531312631578947368421'); + BigNumber.config({ DECIMAL_PLACES : 36 }); + T('9945132982.247494450109274', '2.41', '4126611195.953317199215466390041493775933609959'); + BigNumber.config({ DECIMAL_PLACES : 34 }); + T('548029693', '708.5664168853676220272309463', '773434.4726764839502815725844759987873023'); + BigNumber.config({ DECIMAL_PLACES : 20 }); + T('25997.17', '769', '33.80646293888166449935'); + BigNumber.config({ DECIMAL_PLACES : 12 }); + T('6276464.5293', '378.02091906', '16603.484656106534'); + BigNumber.config({ DECIMAL_PLACES : 69 }); + T('88300360.6026', '0.50561116620258089675226', '174640843.606727429932941719496777628734582536789836212832540484649057495692476'); + BigNumber.config({ DECIMAL_PLACES : 84 }); + T('21.16741219283602783922082', '512734027803711870440926', '4.1283416050045097372576229860930386382999411296407709238604204e-23'); + BigNumber.config({ DECIMAL_PLACES : 91 }); + T('26830021105.84961363460299163', '0.0000000000000001883525711904361599458', '1.424457385225858912736488224182135765865667880373955137231250317096420340613822190801088887299141094418604014554901224e+26'); + BigNumber.config({ DECIMAL_PLACES : 27 }); + T('0.022730515253373487974270831830', '4.73699344492', '0.004798511021320902177430922'); + BigNumber.config({ DECIMAL_PLACES : 84 }); + T('32405457534.532895960970708', '0.279953539011802', '115752984044.851739642674664558311418984715205308200769510374414371088058156651553305190395781681'); + BigNumber.config({ DECIMAL_PLACES : 77 }); + T('1.24', '5318891663089000', '2.3313127593951734836103634998889199312706298537964626227454926e-16'); + BigNumber.config({ DECIMAL_PLACES : 86 }); + T('32134243034308902.447648', '0.00000000003557211718244444956', '9.0335480650467983160859896413068900640325287143340989454864560338690857917062941638173614489939134650530200965585e+26'); + BigNumber.config({ DECIMAL_PLACES : 59 }); + T('8947350374237878', '191180492118.8378812163353', '46800.54055241264323648724086136633393610145072949895919461150526'); + BigNumber.config({ DECIMAL_PLACES : 9 }); + T('0.00000000000000061664380125508017650', '27.1869360236808', '0'); + BigNumber.config({ DECIMAL_PLACES : 38 }); + T('148050826520.4', '0.000000000000179790', '8.2346530129818121141331553479058902052394460203570832638077757e+23'); + BigNumber.config({ DECIMAL_PLACES : 70 }); + T('190.070694219797153451730144437', '426.8860821893515882867721', '0.4452492178826493267171157000626186131483155051939161332856002631084414'); + BigNumber.config({ DECIMAL_PLACES : 52 }); + T('0', '237.460215612402342291', '0'); + BigNumber.config({ DECIMAL_PLACES : 14 }); + T('127235244.05', '53434071963.16978915', '0.00238116316753'); + BigNumber.config({ DECIMAL_PLACES : 56 }); + T('428164.011', '44.145', '9699.03751274209989806320081549439347604485219164118246687054'); + BigNumber.config({ DECIMAL_PLACES : 17 }); + T('1040432', '2982551810.11597277', '0.00034883953950813'); + BigNumber.config({ DECIMAL_PLACES : 10 }); + T('2304698169507', '0.0004144778913307', '5560485173546078.3675631854'); + BigNumber.config({ DECIMAL_PLACES : 86 }); + T('1045458150034864935.83781190525', '0.00628845', '166250530740463060982.88320734839268818230247517273732000731499813149504249854892700108929863479871828511'); + BigNumber.config({ DECIMAL_PLACES : 100 }); + T('23081914285899', '13.959238782420001626566338356', '1653522419500.97747774493812524342713467807159632915607501913202534462073519768222710262075897844837975492270633'); + BigNumber.config({ DECIMAL_PLACES : 7 }); + T('0.000000000000000025892454234938166127524', '32.59885548', '0'); + BigNumber.config({ DECIMAL_PLACES : 28 }); + T('31297232028431', '0.00655086199774837367044865464293', '4777574621353390.2574707866999292562230839279'); + BigNumber.config({ DECIMAL_PLACES : 49 }); + T('52837979063971.2442597626177436', '587.5840', '89924128403.7197137086146282805522274262062956104999455397016'); + BigNumber.config({ DECIMAL_PLACES : 20 }); + T('117.859', '10454576726143939267506148', '0'); + BigNumber.config({ DECIMAL_PLACES : 45 }); + T('478927169.11064814179', '1119296.91529954804', '427.88214866336595130068781569467964999865783818'); + BigNumber.config({ DECIMAL_PLACES : 41 }); + T('3.35882542084660020962', '31.4098', '0.10693558764610408883915211176129742946469'); + BigNumber.config({ DECIMAL_PLACES : 96 }); + T('0.0000000000191708721587788884', '2901154135.152313', '6.608015729496013730478085632864760335459208463953329932685522914473784050887e-21'); + BigNumber.config({ DECIMAL_PLACES : 88 }); + T('273.107661610370201929', '122427274028521.273025430086', '2.2307746682879312379082023740658364002119994404050678835260047063448449081464e-12'); + BigNumber.config({ DECIMAL_PLACES : 98 }); + T('5946842851467660996.563', '2188055384510599896.03092', '2.71786669275640170258856706306481078824741653645053581726296288451453822022872797714977624025515142'); + BigNumber.config({ DECIMAL_PLACES : 61 }); + T('82440663254486941', '25621.295162186026145275930', '3217661821255.6061952052808989660077314900348883939461791696025746833421521'); + BigNumber.config({ DECIMAL_PLACES : 25 }); + T('14528448.170821472', '0.0000000000000714841415', '203240157410598153437.9901589781280369716687442'); + BigNumber.config({ DECIMAL_PLACES : 10 }); + T('2.0', '30.9005', '0.0647238718'); + BigNumber.config({ DECIMAL_PLACES : 94 }); + T('255829.305796259299396', '126713.955', '2.0189513127915492764470969278798061350069927183631826502455866048849947111192291330501048601948'); + BigNumber.config({ DECIMAL_PLACES : 14 }); + T('15431192834572000.90470021028', '0.0000000000000256620486562425459818824', '6.0132349686034171420539373578309006898207465e+29'); + BigNumber.config({ DECIMAL_PLACES : 37 }); + T('4011508326542190985271384', '57100496547046048.45', '70253475.3482755194651509429045610952533282261'); + BigNumber.config({ DECIMAL_PLACES : 19 }); + T('0.01036658009829337', '918438077.9387792373', '1.12871846e-11'); + BigNumber.config({ DECIMAL_PLACES : 42 }); + T('0.0000000000000170838967453027186', '174825417059270589.9', '9.7719753985e-32'); + BigNumber.config({ DECIMAL_PLACES : 94 }); + T('38032598982758946275.324739939', '190.0053', '200165990015851906.6327346655014360125743860829145292262900034893763489755285773607367794477311948666695086926523'); + BigNumber.config({ DECIMAL_PLACES : 10 }); + T('4664321492627766.879150242', '0.0000000001428', '3.26633157747042498539932913165266106e+25'); + BigNumber.config({ DECIMAL_PLACES : 87 }); + T('65.2095874987', '1198302437444680054032363.181', '5.4418304979631169022906688292950306147628879222266428749340814636e-23'); + BigNumber.config({ DECIMAL_PLACES : 86 }); + T('88095913.78353840534589', '3.805535', '23149416.25383511263091523268081885989749141710692451915433703802487692269286710015805924791127'); + BigNumber.config({ DECIMAL_PLACES : 50 }); + T('11122847708199', '20.20320310764714', '550548724820.21807841343324038758478501374293896644566334692417'); + BigNumber.config({ DECIMAL_PLACES : 87 }); + T('0.130175140633411', '204070899', '6.37891738955935113511701636596406624346766855768102437770904316935458788761449e-10'); + BigNumber.config({ DECIMAL_PLACES : 86 }); + T('0.000066665028671734084958731777399', '141645764535715667823', '4.7064611420078603678792513547827127555138290695677177785892654e-25'); + BigNumber.config({ DECIMAL_PLACES : 97 }); + T('382.7', '2505476050361988469938456.90', '1.527454233476739551800040769773752108196110003643051660062558299452991821461e-22'); + BigNumber.config({ DECIMAL_PLACES : 72 }); + T('67759000406154385', '0.02521038485909572693', '2687741610644528548.368391410155399301247432527422941953500610022370114419260848683535578313'); + BigNumber.config({ DECIMAL_PLACES : 27 }); + T('198.383853', '0.000000000000000026046885269109038', '7616413669056942682.782827482640405300928645768'); + BigNumber.config({ DECIMAL_PLACES : 18 }); + T('7.21768', '5267650284.16', '1.370189669e-9'); + BigNumber.config({ DECIMAL_PLACES : 53 }); + T('0.0024940405', '0.00000000000004445742115581387190', '56099531532.85510601457749585122588484865796691686314093436613448'); + BigNumber.config({ DECIMAL_PLACES : 44 }); + T('0.000000279619307867857', '4.0999', '6.820149463837093587648479231200760994e-8'); + BigNumber.config({ DECIMAL_PLACES : 67 }); + T('0.0017159651994522573', '0.0000000027883556696', '615403.9881499116270414543818997745552165910821866696915586338656084908803'); + BigNumber.config({ DECIMAL_PLACES : 94 }); + T('0.0000000000000000001786270', '2980122255611031775.7565027', '5.99394872689124187142255875398493175825317954487825271077e-38'); + BigNumber.config({ DECIMAL_PLACES : 87 }); + T('2041261099.9740998108591522609', '79449621696975.89220008170', '0.000025692521328289682278091959382409222930806060726346373969158507394888032587019332899'); + BigNumber.config({ DECIMAL_PLACES : 16 }); + T('0.00000000485557500', '0.000000000000000000139754896', '34743505515.5420100631036211'); + BigNumber.config({ DECIMAL_PLACES : 64 }); + T('15732633606153.7198933614', '115169907056898', '0.1366036841410425335596073888079588254908008109030114564670131595'); + BigNumber.config({ DECIMAL_PLACES : 41 }); + T('0.00161231018861641985218', '0.183341984731657095143027833', '0.00879400422645270526350420722026729302828'); + BigNumber.config({ DECIMAL_PLACES : 55 }); + T('296746579.8824504809154', '9762616616582589361.5320', '3.03962135907705883681054572915476511880339479e-11'); + BigNumber.config({ DECIMAL_PLACES : 22 }); + T('71.254220189371167106686', '7751861.939565268745605542997', '0.0000091918845749421547'); + BigNumber.config({ DECIMAL_PLACES : 30 }); + T('6209.4706014993', '0.000895839658826', '6931453.12369495448238792705641479008'); + BigNumber.config({ DECIMAL_PLACES : 13 }); + T('47366246100063.2483530828', '1052864669574212.36473815', '0.0449879718342'); + BigNumber.config({ DECIMAL_PLACES : 37 }); + T('84016573140888713422197.0407', '1.73', '4.8564493145022377700691931040462427745664739884393063583815e+22'); + BigNumber.config({ DECIMAL_PLACES : 90 }); + T('10.40710', '0.00002815302747971432552', '369661.842141092633726562850098552395700969276516140729940591267260489984119007491579317910120302'); + BigNumber.config({ DECIMAL_PLACES : 74 }); + T('0', '52635556463940794625.52389612', '0'); + BigNumber.config({ DECIMAL_PLACES : 23 }); + T('11010.713', '7178387825026528633.499551', '1.5338699e-15'); + BigNumber.config({ DECIMAL_PLACES : 44 }); + T('1627653770565866.500', '0.0000000000000004231550519086848290022', '3.84647131878531296895166013319158209474615570098230075915383876653657804044e+30'); + BigNumber.config({ DECIMAL_PLACES : 28 }); + T('0.063494008345035770490303', '89.32856343726', '0.0007107917770292012652942201'); + BigNumber.config({ DECIMAL_PLACES : 94 }); + T('0.000000000000000342711931874642283134641832', '8.238', '4.16013512836419377439477824714736586550133527555231852391357125515901917941248e-17'); + BigNumber.config({ DECIMAL_PLACES : 5 }); + T('6.6', '7783302567285502979', '0'); + BigNumber.config({ DECIMAL_PLACES : 84 }); + T('211153932636342.3', '7803357038552252838107406426', '2.7059370933963753050603072567861653549289587314010504955676166520166595e-14'); + BigNumber.config({ DECIMAL_PLACES : 44 }); + T('102908.73467848', '0.0000000000000170569902', '6033229395798093382.26623358205364976993420562556224016591156862'); + BigNumber.config({ DECIMAL_PLACES : 61 }); + T('0.0000760729907927999440250446', '0.00000000000015890209022486', '478741284.5554780228497926728465032749646985360069076951315538749220907'); + BigNumber.config({ DECIMAL_PLACES : 69 }); + T('0.00000000000454090', '82.38851', '5.5115695137586539676467021918468970976656817801414299154e-14'); + BigNumber.config({ DECIMAL_PLACES : 99 }); + T('301052414934642090.5101536', '21942.79', '13719878599514.559931082309952380713664944157055688907381422325966752632641519150481775562724703649809345119740926'); + BigNumber.config({ DECIMAL_PLACES : 2 }); + T('-6087246795159.18662980254720369', '13611.20392390104', '-447223245.58'); + BigNumber.config({ DECIMAL_PLACES : 63 }); + T('-0.000000023978513162598438538147', '2.5', '-9.5914052650393754152588e-9'); + BigNumber.config({ DECIMAL_PLACES : 64 }); + T('-10144.9', '355958914523.554621619', '-2.85001992816468390198293884720241046712297231916127035914e-8'); + BigNumber.config({ DECIMAL_PLACES : 1 }); + T('-0.00037208840961776', '0.0000000000000000749073754354443486', '-4967313398110.3'); + BigNumber.config({ DECIMAL_PLACES : 47 }); + T('15482718217056188596.158306', '-3352455.994914340', '-4618321087746.83378969593299088937142633533167566003637024236'); + BigNumber.config({ DECIMAL_PLACES : 96 }); + T('377092496691345150.9', '-127498303155909435.136', '-2.957627571170285356160239808471211052581246176070421219189879159085886004136234119014365068954837'); + BigNumber.config({ DECIMAL_PLACES : 43 }); + T('-1359703.8361769409', '36.38781', '-37367.0148375772243506822751905102285628071598703'); + BigNumber.config({ DECIMAL_PLACES : 8 }); + T('-0.0000000000001733589238387324800538597', '756272628912108.3558869229', '0'); + BigNumber.config({ DECIMAL_PLACES : 79 }); + T('-10482707013782.55549', '0.000000000000121679703861816792268648', '-8.61500043235397698986559743658466273266437465901472939062822262498192727625876622201508442005841468469206e+25'); + BigNumber.config({ DECIMAL_PLACES : 77 }); + T('-2202688534808213716278667.2726', '1049513399766474713.9683415115', '-2098771.23560149862725671205968894910158582378774463142851564209037830648912689718707'); + BigNumber.config({ DECIMAL_PLACES : 52 }); + T('-30692572.9', '28971193989065904244207', '-1.0594169129371666894834088126698235712e-15'); + BigNumber.config({ DECIMAL_PLACES : 20 }); + T('-0.00000000000245', '3.388023', '-7.2313559e-13'); + BigNumber.config({ DECIMAL_PLACES : 75 }); + T('0.004268434057', '-101538473064491718754990.585', '-4.2037603365267495273770001874032686152883780431863e-26'); + BigNumber.config({ DECIMAL_PLACES : 31 }); + T('0.245497', '-454143995', '-5.405708381104984114124e-10'); + BigNumber.config({ DECIMAL_PLACES : 7 }); + T('4', '-0.0000000000758767', '-52717105514.6046151'); + BigNumber.config({ DECIMAL_PLACES : 29 }); + T('246.08092818928387866', '-0.0000000000000000043867188851978938040730233', '-56096808259046366468.33190521818927387440240164527'); + BigNumber.config({ DECIMAL_PLACES : 48 }); + T('-3', '138871518696208152678486.18', '-2.1602701750261150897669197e-23'); + BigNumber.config({ DECIMAL_PLACES : 11 }); + T('-24226.54935845659225882121599', '120354.30303635593076853278297', '-0.20129358691'); + BigNumber.config({ DECIMAL_PLACES : 87 }); + T('-31.8695', '0.00000000000000000002459', '-1.296034973566490443269621797478649857665717771451809678731191541276941846278975193167954453029686864579097194e+21'); + BigNumber.config({ DECIMAL_PLACES : 44 }); + T('-0.000000000000000692717798321382073178', '517294.198627333564', '-1.33911766294604490628118e-21'); + BigNumber.config({ DECIMAL_PLACES : 40 }); + T('77735.49995176549986', '-47.2', '-1646.9385583001165224576271186440677966101695'); + BigNumber.config({ DECIMAL_PLACES : 22 }); + T('0.0000000000000466099043570323031', '87769334196052069911', '0'); + BigNumber.config({ DECIMAL_PLACES : 71 }); + T('-3.4194', '4837700.127', '-7.0682347194605268264905002450971471717267108730817783489290674672e-7'); + BigNumber.config({ DECIMAL_PLACES : 57 }); + T('150329968.0', '-0.0219', '-6864382100.456621004566210045662100456621004566210045662100456621005'); + BigNumber.config({ DECIMAL_PLACES : 95 }); + T('-4349.077116612635', '2852268.76219665', '-0.00152477816054866830067962030945222428732198838066513557565729883663992256833991832181204355314'); + BigNumber.config({ DECIMAL_PLACES : 13 }); + T('-0.0007857896787500243812', '15429864467', '-1e-13'); + BigNumber.config({ DECIMAL_PLACES : 92 }); + T('-967018952930714.206742', '170408633621.371104262290154', '-5674.70633606112939324782576385375368597464776233194192770922367669970714270241667204912917062429'); + BigNumber.config({ DECIMAL_PLACES : 8 }); + T('-751039058360574034', '3.4269', '-219159899139331183.86880271'); + BigNumber.config({ DECIMAL_PLACES : 12 }); + T('-37883543940.646067824658736', '213.838736949', '-177159407.510348312652'); + BigNumber.config({ DECIMAL_PLACES : 61 }); + T('0.521598040129430619', '-541426710309.1', '-9.633770004284620316710314975234305749627823298171e-13'); + BigNumber.config({ DECIMAL_PLACES : 10 }); + T('-0.26883230588104219', '25.5', '-0.0105424434'); + BigNumber.config({ DECIMAL_PLACES : 64 }); + T('7565247800163216.93336759826', '-3', '-2521749266721072.3111225327533333333333333333333333333333333333333333333333333333'); + BigNumber.config({ DECIMAL_PLACES : 89 }); + T('0', '-85908895673544761.98836', '0'); + BigNumber.config({ DECIMAL_PLACES : 49 }); + T('0.000000000000002767512230351828925', '-895895.2195206', '-3.0891025758935790503306645578e-21'); + BigNumber.config({ DECIMAL_PLACES : 79 }); + T('-1613960445437020555.352446', '52527030079358711.55', '-30.726284029358260767137073087343550502479108754500356263252014494867642749749601'); + BigNumber.config({ DECIMAL_PLACES : 41 }); + T('-0.000000000013246195', '2265913525391301918', '-5.84585194959e-30'); + BigNumber.config({ DECIMAL_PLACES : 38 }); + T('0.0000000000000000040299737469408272864', '-11461814490866425552', '-3.5e-37'); + BigNumber.config({ DECIMAL_PLACES : 49 }); + T('-0.000000000000000000045123419691119489', '378887.2632580407', '-1.190945805438390787770065e-25'); + BigNumber.config({ DECIMAL_PLACES : 71 }); + T('-2228389446881164.569583386526', '1.7', '-1310817321694802.68799022736823529411764705882352941176470588235294117647058823529411765'); + BigNumber.config({ DECIMAL_PLACES : 24 }); + T('48936887596017274238', '-161.7', '-302639997501652901.904761904761904761904762'); + BigNumber.config({ DECIMAL_PLACES : 65 }); + T('40248.1752', '-733206848.884751441879538648', '-0.00005489334321033651263042538779438279572906654102547687346861817'); + BigNumber.config({ DECIMAL_PLACES : 37 }); + T('6016075881224.5', '-18744.5787627104274450559393335', '-320950177.509061709657958921608109958611955412'); + BigNumber.config({ DECIMAL_PLACES : 6 }); + T('357148', '-1014734345992278.2839833760', '0'); + BigNumber.config({ DECIMAL_PLACES : 83 }); + T('-1.28', '134534.543991648127634449', '-0.0000095142850454784467426396195954924017894534202269264679132073917818193408954988'); + BigNumber.config({ DECIMAL_PLACES : 71 }); + T('-3.1', '38.80056173', '-0.07989575051958919152483105042922789664468087070655922691972841188039161'); + BigNumber.config({ DECIMAL_PLACES : 45 }); + T('-0.00000000126976154890935660', '0.00000000000000000099376', '-1277734612.893813999355981323458380293028497826436966672'); + BigNumber.config({ DECIMAL_PLACES : 39 }); + T('-20845.30906', '0.000000000000000000172211024371950066332356', '-1.21045148741332894556456104033622585482017040899045184261921517e+23'); + BigNumber.config({ DECIMAL_PLACES : 96 }); + T('-23790362294879356527851', '68497245877.7183', '-347318523395.087388040273290084163184839352772220510644863544098138054197759835512134442283185666047651385283'); + BigNumber.config({ DECIMAL_PLACES : 30 }); + T('8.583931069048565', '-0.0053766853303', '-1596.509846070834137168810241466996'); + BigNumber.config({ DECIMAL_PLACES : 31 }); + T('0.0000021043997569277', '-142495.10181961243', '-1.47682252235708723609e-11'); + BigNumber.config({ DECIMAL_PLACES : 54 }); + T('-3160482200893344218611', '2.81620627948542224771194', '-1.122248119363908290618108553960186614023265325364715436562859187676683476518e+21'); + BigNumber.config({ DECIMAL_PLACES : 64 }); + T('861.846', '-0.000000000001368813673879419387625', '-629629887870276.4606141715970185467184132090190814468966283236638652154421410107'); + BigNumber.config({ DECIMAL_PLACES : 99 }); + T('3129.8183167098383028206492356', '-6.7464917', '-463.917908134362383165853333162775550439052641241669355348054456214627819078173623188478835599842211323'); + BigNumber.config({ DECIMAL_PLACES : 4 }); + T('-2696.17096', '15758867512151197.01504', '0'); + BigNumber.config({ DECIMAL_PLACES : 48 }); + T('199908738906066598302', '-497355133128.441314925906185', '-401943652.714730154441169259507959263404861416680136981594'); + BigNumber.config({ DECIMAL_PLACES : 68 }); + T('212836227263', '-1161074202862496094.32493278645', '-1.8330975465502251557078469432276792259632438939752396515808467e-7'); + BigNumber.config({ DECIMAL_PLACES : 9 }); + T('-8', '699941.1367930', '-0.00001143'); + BigNumber.config({ DECIMAL_PLACES : 83 }); + T('0.0000000000000000004346846097188249974', '-0.6468606811307', '-6.7199108308609000589517673316350542100042998513190478019371229217e-19'); + BigNumber.config({ DECIMAL_PLACES : 64 }); + T('-7', '0.0124336761913', '-562.9871561958472313203613033197006802285389994302963507320206916253'); + BigNumber.config({ DECIMAL_PLACES : 58 }); + T('-592487865647816074208.9', '0.0002325813133042', '-2.5474439766056511020103362077436364184786668630544257881063887332084867340910502792e+24'); + BigNumber.config({ DECIMAL_PLACES : 87 }); + T('-0.00000000015150248650122631', '31299828314741213.7957670', '-4.840361582107257280684185621263865832363038403166941198514442e-27'); + BigNumber.config({ DECIMAL_PLACES : 52 }); + T('0.05385251423043878014329410730', '-7009731.9176165631080', '-7.6825354897095149757976838088185670184786821e-9'); + BigNumber.config({ DECIMAL_PLACES : 70 }); + T('-2869296738160182.08', '5275711255483564', '-0.5438691769148360120657047290700255653760152871566722132296398692657076'); + BigNumber.config({ DECIMAL_PLACES : 31 }); + T('-3.086', '300617851.8', '-1.02655247568368127098698e-8'); + BigNumber.config({ DECIMAL_PLACES : 74 }); + T('-2162538670232.82', '76', '-28454456187.27394736842105263157894736842105263157894736842105263157894736842105263158'); + BigNumber.config({ DECIMAL_PLACES : 8 }); + T('0.000000223', '11392868435907243260020946', '0'); + BigNumber.config({ DECIMAL_PLACES : 30 }); + T('273.614', '-20.0768056468842', '-13.628363237279395299357053838579'); + BigNumber.config({ DECIMAL_PLACES : 29 }); + T('21494.42065902', '-161359338353634278541', '-1.3320840850198e-16'); + BigNumber.config({ DECIMAL_PLACES : 59 }); + T('0.0000000000000002441632932', '-22637271688.276618400030294805', '-1.07858975481770266889298727445471e-26'); + BigNumber.config({ DECIMAL_PLACES : 75 }); + T('-0.000000000000000050', '159751141000999218.54446', '-3.12986809901328077371135748209199228658137e-34'); + BigNumber.config({ DECIMAL_PLACES : 1 }); + T('-0.000000000000000060253739715834011849757914', '-59185017.11969744078424660', '0'); + BigNumber.config({ DECIMAL_PLACES : 65 }); + T('0.0828659039180798114893763', '-79044963871022419790863275374', '-1.04833881704711783221790638641876382e-30'); + BigNumber.config({ DECIMAL_PLACES : 86 }); + T('141101753155.93921', '-61.7259', '-2285940798.85330485258214137015418163202156631171031933110736335962699612318329906894836689298981'); + BigNumber.config({ DECIMAL_PLACES : 88 }); + T('352177978.04833885867316', '-3850238807.599', '-0.0914691258509121489638716902503655164940606905113607012645994921380742563922979856924531'); + BigNumber.config({ DECIMAL_PLACES : 93 }); + T('0.000000000019242304009909548', '-1103.02862808630674', '-1.7444972433121590113350537202648637562642369357005293714752956472438159076957305e-14'); + BigNumber.config({ DECIMAL_PLACES : 3 }); + T('16008715289429670922740', '-70717248310762607343318340768', '0'); + BigNumber.config({ DECIMAL_PLACES : 62 }); + T('-80796416620772.49', '582234076329.1', '-138.76964593034812260683009705892276744363639278697810729615472539'); + BigNumber.config({ DECIMAL_PLACES : 18 }); + T('-6', '2284317445897.9', '-2.626605e-12'); + BigNumber.config({ DECIMAL_PLACES : 19 }); + T('0', '-1', '0'); + BigNumber.config({ DECIMAL_PLACES : 57 }); + T('-90293.2467603640021317080167', '514956.067659497', '-0.175341650348449452779933259704642639008984223699789775314'); + BigNumber.config({ DECIMAL_PLACES : 14 }); + T('42.99', '-49723990781296484140030', '0'); + BigNumber.config({ DECIMAL_PLACES : 37 }); + T('346867740262195.5276611', '-284675.8171779896732317330', '-1218465775.2130775565206302399188403995613678817'); + BigNumber.config({ DECIMAL_PLACES : 76 }); + T('-197013.69860197495737', '1454360428173808638', '-1.354641495914175946154713798295457924435812369729510086473393391e-13'); + BigNumber.config({ DECIMAL_PLACES : 94 }); + T('0.00000000000000000082484000183949687657521443975', '-1116673451057963519275795', '-7.386582004416989114355580556503329656812438480990852e-43'); + BigNumber.config({ DECIMAL_PLACES : 1 }); + T('-32692373581030122881584.1431462', '100.884572013739380306464098', '-324057216365826258794.9'); + BigNumber.config({ DECIMAL_PLACES : 7 }); + T('0.0000000000000282742789950039935723613063438', '-3.57206025395698724841646772052', '0'); + BigNumber.config({ DECIMAL_PLACES : 45 }); + T('5.22043785262', '-308402801281.85564', '-1.6927336038847892523762980966128027e-11'); + BigNumber.config({ DECIMAL_PLACES : 81 }); + T('-21721356.9197', '148671949134', '-0.000146102590611240677675475615050195296647882313355451942116999083373300788758596'); + BigNumber.config({ DECIMAL_PLACES : 67 }); + T('44960.510157279', '-30424592651942.0875382058813', '-1.4777686811333213974853344785940453236841834732823614913817e-9'); + BigNumber.config({ DECIMAL_PLACES : 91 }); + T('-0.00000000000000011636910762', '449', '-2.591739590645879732739420935412026726057906458797327394209354120267260579e-19'); + BigNumber.config({ DECIMAL_PLACES : 33 }); + T('-144539878734454885586679', '0.0000000906421996', '-1.594620158958001341206188028120182555675756129819250326312690232e+30'); + BigNumber.config({ DECIMAL_PLACES : 86 }); + T('-22081842237071469', '284922994484996039870.1110722', '-0.00007750108859056755506349932481083822895927837291306991972114894458652246264255274407'); + BigNumber.config({ DECIMAL_PLACES : 5 }); + T('2.14', '-269885643638262984.7870', '0'); + BigNumber.config({ DECIMAL_PLACES : 51 }); + T('13.353763161', '-0.00000005203262508730', '-256642119.028112516115529004026114729912630471336538563109591'); + BigNumber.config({ DECIMAL_PLACES : 22 }); + T('-0.00000000000000000063240380034504119331863466949', '7', '-9.03e-20'); + BigNumber.config({ DECIMAL_PLACES : 50 }); + T('1084295779773917230', '-21463532888.28479949279732', '-50518047.77049291306855488793938320622722483061248617095243'); + BigNumber.config({ DECIMAL_PLACES : 20 }); + T('-6.0029075812975942', '13463169477049170.25', '-4.4588e-16'); + BigNumber.config({ DECIMAL_PLACES : 4 }); + T('-0.0000000000945', '-1295.635726084497405947123504', '0'); + BigNumber.config({ DECIMAL_PLACES : 35 }); + T('145207619444229.4', '-5641010', '-25741422.09360192589624907596334698928028846'); + BigNumber.config({ DECIMAL_PLACES : 71 }); + T('8150729348899225.709684485', '-9', '-905636594322136.18996494277777777777777777777777777777777777777777777777777777777777778'); + BigNumber.config({ DECIMAL_PLACES : 15 }); + T('26.7131833488810748720784483088', '-374128', '-0.000071401187158'); + BigNumber.config({ DECIMAL_PLACES : 51 }); + T('10298.7', '-7840043630', '-0.000001313602383613265682808451411640932411494755929'); + BigNumber.config({ DECIMAL_PLACES : 50 }); + T('-1500987398.158', '8385183368233', '-0.00017900471966354879364379251712996007835290064246'); + BigNumber.config({ DECIMAL_PLACES : 89 }); + T('-942418105884.9762426609', '0.625214732956398862117578921596', '-1507351084688.36812446263084236256657662852815385546645436201131093940206583773952585385929168203507616'); + BigNumber.config({ DECIMAL_PLACES : 5 }); + T('-20468473392546630967438.9133608', '0.00000004046201823988790038541384227', '-5.0586881927626106144306203802293948e+29'); + BigNumber.config({ DECIMAL_PLACES : 31 }); + T('-0.00000000000001075547910728888542191909', '233.822', '-4.59985762985899e-17'); + BigNumber.config({ DECIMAL_PLACES : 30 }); + T('1177836559.736550390351', '-0.00003760747700316374', '-31319212390596.278110929242370854304284800424'); + BigNumber.config({ DECIMAL_PLACES : 3 }); + T('213.88961302626348247', '-0.00000000000000077361085634702828288292462', '-276482176111443228.824'); + BigNumber.config({ DECIMAL_PLACES : 100 }); + T('46697093.4', '-20723907537471492012355.0213', '-2.2532957800340329243884850474515815198739629799399150373623375448972808133929339818853e-15'); + BigNumber.config({ DECIMAL_PLACES : 20 }); + T('-40658898945782219470416.90374', '19405449003411531807950.568095', '-2.09523103220308234863'); + BigNumber.config({ DECIMAL_PLACES : 11 }); + T('-96200111.213345', '12.685992', '-7583176.09007990861'); + BigNumber.config({ DECIMAL_PLACES : 3 }); + T('89621369.6424', '-3620221212', '-0.025'); + BigNumber.config({ DECIMAL_PLACES : 36 }); + T('-1234363566267.41', '12163652.21', '-101479.682660822312347255117712708755588466'); + BigNumber.config({ DECIMAL_PLACES : 7 }); + T('383468905455.437167186810832818', '-101796.9774', '-3766996.9703387'); + BigNumber.config({ DECIMAL_PLACES : 6 }); + T('2295041689330090973975', '-0.00000000000617787320497619', '-3.71493815619502705822351101397463883321e+32'); + BigNumber.config({ DECIMAL_PLACES : 74 }); + T('-0.0017097176217824664195662', '0.00000000000000000720119661649', '-237421322154624.8046104500149285855150555985177148448416034369290736104940637453160060704'); + BigNumber.config({ DECIMAL_PLACES : 82 }); + T('0.00000000000569151899406225575759269', '-0.0000149178498425356740446144', '-3.815240838417525618960024220365413235083149662771580580992606563675918370259e-7'); + BigNumber.config({ DECIMAL_PLACES : 64 }); + T('-8372779', '0.00000000000001464686057743249018718', '-571643251175652254131.4321136213344319088513737753429223932116218317349858742115861062'); + BigNumber.config({ DECIMAL_PLACES : 1 }); + T('-0.0000000000454859144088600', '0.00000000000000032397823887905649', '-140398.1'); + BigNumber.config({ DECIMAL_PLACES : 15 }); + T('-0.0000000000277', '57961.55509', '0'); + BigNumber.config({ DECIMAL_PLACES : 74 }); + T('311741.778345224139', '-0.00001931836468259', '-16137068715.04348943826012100910946705383379688484949265737951759265510715242504017557'); + BigNumber.config({ DECIMAL_PLACES : 91 }); + T('0.000000000000000017333930078997', '-1502877529963110785422463329', '-1.15338274299852455941403316073046645113191957535e-44'); + BigNumber.config({ DECIMAL_PLACES : 84 }); + T('439329.418790988247209033736745', '-71451006680046026674105824', '-6.148680602336129939194989800776385838981449739616371547331751596e-21'); + BigNumber.config({ DECIMAL_PLACES : 50 }); + T('32485531877991.2396', '-1174912009878725269619108527183', '-2.764933169875793919833937614169141e-17'); + BigNumber.config({ DECIMAL_PLACES : 10 }); + T('0', '-1.0626022746419562', '0'); + BigNumber.config({ DECIMAL_PLACES : 84 }); + T('115148.6131710989310000', '-0.00161', '-71520877.746024180745341614906832298136645962732919254658385093167701863354037267080745341615'); + BigNumber.config({ DECIMAL_PLACES : 86 }); + T('0.000000000000036725683560979526299402', '-252.8367493753159247015399810', '-1.4525453143863666557198601432320272195848995490868650390224984029622493e-16'); + BigNumber.config({ DECIMAL_PLACES : 63 }); + T('-4.68415', '428.865838789', '-0.010922180263242137211922097044702043700039562304024750374555298'); + BigNumber.config({ DECIMAL_PLACES : 8 }); + T('1789034028666225905476933590', '-12.1431059167', '-1.4732919575426154657687418851928163e+26'); + BigNumber.config({ DECIMAL_PLACES : 11 }); + T('0', '18752004595259004034.232', '0'); + BigNumber.config({ DECIMAL_PLACES : 51 }); + T('-33094285525423.1', '1153.535673900762509691107259', '-28689433950.067995403484583593162726553039749442560958950377965'); + BigNumber.config({ DECIMAL_PLACES : 92 }); + T('154924518173.06', '-16072344477308.433', '-0.00963919846241402539226090125981243883973606734009921417279060345236051624015836410289373835'); + BigNumber.config({ DECIMAL_PLACES : 84 }); + T('-526755.99680798148680', '1031144031041433508617', '-5.10846187293514320791149086796475886359358206319575561796437535800006e-16'); + BigNumber.config({ DECIMAL_PLACES : 83 }); + T('0.00000000129532365', '-66423.203042185957717085805', '-1.950107177423119163185231356838612799231416661465646416511454368111971e-14'); + BigNumber.config({ DECIMAL_PLACES : 1 }); + T('49088919081620947576823900', '-89496.29598784', '-548502242911714858575'); + BigNumber.config({ DECIMAL_PLACES : 97 }); + T('183.6', '-110983133499774', '-1.65430542651216342730485032605941781391214214028246142575983256304636345629264899194e-12'); + BigNumber.config({ DECIMAL_PLACES : 29 }); + T('-0.0000000000000000004628920720112747389', '0.0000013627927993533014921', '-3.3966430717195977e-13'); + BigNumber.config({ DECIMAL_PLACES : 89 }); + T('29351', '-40833836436.51245', '-7.1879114385037733803822287841037363472380354594428602889946812795942962026677767562e-7'); + BigNumber.config({ DECIMAL_PLACES : 45 }); + T('-4306.1915', '3.25', '-1324.982'); + BigNumber.config({ DECIMAL_PLACES : 51 }); + T('0', '-124478312817954.3812142660817', '0'); + BigNumber.config({ DECIMAL_PLACES : 75 }); + T('-44426.901196', '383655444836490633023882.198874', '-1.15798959180506911643331401407257423616980032323967173929e-19'); + BigNumber.config({ DECIMAL_PLACES : 75 }); + T('0.00000000018875376062486570745829037055', '-4', '-4.71884401562164268645725926375e-11'); + BigNumber.config({ DECIMAL_PLACES : 5 }); + T('0.0003661179207403712', '-356285096184.2311059', '0'); + BigNumber.config({ DECIMAL_PLACES : 87 }); + T('1475.970509573956', '-170444236', '-0.000008659550737602860327878732138527700050824833994386293004358328667682255913893151541'); + BigNumber.config({ DECIMAL_PLACES : 13 }); + T('2.91398', '-27457681923.8431588', '-1.061e-10'); + BigNumber.config({ DECIMAL_PLACES : 15 }); + T('1.5200', '-611647.0045456291518890', '-0.000002485093508'); + BigNumber.config({ DECIMAL_PLACES : 26 }); + T('0.000000002795986705820173250725441998', '-15812956587128.3811178703066463', '-1.7682e-22'); + BigNumber.config({ DECIMAL_PLACES : 45 }); + T('16931675', '-166.933029172849586', '-101427.950381636103707826792452493472486374033343802'); + BigNumber.config({ DECIMAL_PLACES : 17 }); + T('0.000000001827969353', '-0.0000086263', '-0.00021190653617426'); + BigNumber.config({ DECIMAL_PLACES : 100 }); + T('-15370.000', '43962.05964298935764961', '-0.3496196521459171064989623731323059954874621505738507951156748277043685987999043389124165452484686546'); + BigNumber.config({ DECIMAL_PLACES : 0 }); + T('-118370977214.1226', '2025', '-58454804'); + BigNumber.config({ DECIMAL_PLACES : 18 }); + T('-231287663424299.8513325014', '1737349688.89407', '-133126.718761799003983325'); + BigNumber.config({ DECIMAL_PLACES : 88 }); + T('-0.000000000000000000114369682499894100', '346451176725.76308254', '-3.301177487136219883763263254954959553880615562738286765216e-31'); + BigNumber.config({ DECIMAL_PLACES : 0 }); + T('-0.00000006895', '-2334066710432.41962437', '0'); + BigNumber.config({ DECIMAL_PLACES : 41 }); + T('14814025653103.224687451232', '-340.9364406', '-43450989360.45859771157366860830657712920347769947358'); + BigNumber.config({ DECIMAL_PLACES : 17 }); + T('0', '55384', '0'); + BigNumber.config({ DECIMAL_PLACES : 49 }); + T('0.00000602239289726264791395945362007', '-3612.49', '-1.6671029946830712095976607880077176684226e-9'); + BigNumber.config({ DECIMAL_PLACES : 3 }); + T('0.00000003076765653944140249326946', '-0.000000162953028546', '-0.189'); + BigNumber.config({ DECIMAL_PLACES : 13 }); + T('3551.6170974', '-0.0000000000000000000403993958947885250', '-8.79126288583477177063322788976061895e+22'); + BigNumber.config({ DECIMAL_PLACES : 0 }); + T('5117.1807', '-426.74033433604132955959062', '-12'); + BigNumber.config({ DECIMAL_PLACES : 48 }); + T('0.000000449865656708', '-0.00646', '-0.000069638646549226006191950464396284829721362229'); + BigNumber.config({ DECIMAL_PLACES : 78 }); + T('-0.000000001509496360', '368453885855070.481278236887039', '-4.096839300519015147813166237174198490790445033523731055e-24'); + BigNumber.config({ DECIMAL_PLACES : 7 }); + T('10325083760456', '-1', '-10325083760456'); + BigNumber.config({ DECIMAL_PLACES : 77 }); + T('195201713159.041', '-0.0000000000001678706857378681675919804', '-1.162810006410830522982744130340477246447936427266297453527042507162937872390754988322320136761669503e+24'); + BigNumber.config({ DECIMAL_PLACES : 68 }); + T('-90.68053083405683', '35295599838.32309719026533760', '-2.56917381343376780493451453883388246130562997049418718691415e-9'); + BigNumber.config({ DECIMAL_PLACES : 23 }); + T('-2849157.0', '9.52990', '-298970.29349730847123264672242'); + BigNumber.config({ DECIMAL_PLACES : 49 }); + T('0.000505068647902848043', '-7.6', '-0.0000664564010398484267105263157894736842105263158'); + BigNumber.config({ DECIMAL_PLACES : 47 }); + T('83219971646936300794306.13542', '-0.00000000000020', '-4.160998582346815039715306771e+35'); + BigNumber.config({ DECIMAL_PLACES : 8 }); + T('-4154268181473153337', '72414644.088348531147124', '-57367791194.34452029'); + BigNumber.config({ DECIMAL_PLACES : 19 }); + T('-457067781911.9760754982805', '0.00000000003558631116216360943173283', '-1.28439213558595446764566555636062725371453e+22'); + BigNumber.config({ DECIMAL_PLACES : 21 }); + T('56767989770720959.22', '-444092006075594509263.2', '-0.0001278293439064016'); + BigNumber.config({ DECIMAL_PLACES : 5 }); + T('-675391228125677423.636683', '0.00001721212', '-3.923928186218068568175698287e+22'); + BigNumber.config({ DECIMAL_PLACES : 81 }); + T('-1.29524', '6294.488', '-0.000205773686438039122483035951454669545799435950946288244572076394458135435320553'); + BigNumber.config({ DECIMAL_PLACES : 77 }); + T('3.068', '-0.000092452460368206301035469113', '-33184.62253769356579735779815488922331806200909209429126300172358138439344947294183'); + BigNumber.config({ DECIMAL_PLACES : 3 }); + T('-2.78626', '1746.468083380448', '-0.002'); + BigNumber.config({ DECIMAL_PLACES : 11 }); + T('-2215841545490634361451248', '0.00000000002340886937065013959436', '-9.465820456364455823068204109973565026106517233e+34'); + BigNumber.config({ DECIMAL_PLACES : 9 }); + T('-0.0000158270981924009894', '7902019.222874', '0'); + BigNumber.config({ DECIMAL_PLACES : 98 }); + T('-13.29', '1285.2', '-0.01034080298786181139122315592903828197945845004668534080298786181139122315592903828197945845004669'); + BigNumber.config({ DECIMAL_PLACES : 14 }); + T('-0.0000000000000000000478438', '-526009.834063261613852045748', '0'); + BigNumber.config({ DECIMAL_PLACES : 17 }); + T('4610403834044306479816316.521', '-3256541.2', '-1415736375159112520.92137403973270782'); + BigNumber.config({ DECIMAL_PLACES : 76 }); + T('207869.0545', '-72932990693088824862049', '-2.8501375375478438962361314970980939004483672608891163469734e-18'); + BigNumber.config({ DECIMAL_PLACES : 45 }); + T('40.43714', '-188.50022950304', '-0.214520375421335272478907728712681066018083811'); + BigNumber.config({ DECIMAL_PLACES : 11 }); + T('2.3', '22336677063984259.08', '0'); + BigNumber.config({ DECIMAL_PLACES : 20 }); + T('0.00000000000002175927850', '-77224.6', '-2.8e-19'); + BigNumber.config({ DECIMAL_PLACES : 5 }); + T('-23149721658836330807558648', '5814442707701474997.222336', '-3981417.10609'); + BigNumber.config({ DECIMAL_PLACES : 30 }); + T('1333.866734507903709876', '-7070734811057702133420280651', '-1.88646e-25'); + BigNumber.config({ DECIMAL_PLACES : 77 }); + T('-4560425036005.582776', '80.8', '-56440903910.96018287128712871287128712871287128712871287128712871287128712871287128712871'); + BigNumber.config({ DECIMAL_PLACES : 18 }); + T('1511765514663409.78', '-0.000000000000000000073638635296164468110533683', '-2.0529515635145826662188281610788133129511185060716564e+34'); + BigNumber.config({ DECIMAL_PLACES : 35 }); + T('-23543643', '0.000000000000000000041997393778663357', '-5.6059771527921033322615738603183415651793212065528791828636767e+26'); + BigNumber.config({ DECIMAL_PLACES : 73 }); + T('0.0195', '-126764211576876.83826753960421', '-1.538289061039449613471897578165359641323374205047037264562e-16'); + BigNumber.config({ DECIMAL_PLACES : 21 }); + T('55.446', '-32030345653417401201.609', '-1.731e-18'); + BigNumber.config({ DECIMAL_PLACES : 65 }); + T('0.52272269961315407', '-429.78662391', '-0.00121623771083814712664355334008235631038952963770007339128592007'); + BigNumber.config({ DECIMAL_PLACES : 3 }); + T('0.0000002196701418358686', '-508970103971763312488546', '0'); + BigNumber.config({ DECIMAL_PLACES : 70 }); + T('-100004021095.663953962373635416', '0.0000000045534', '-21962494201182403031.223620902182984143716783063205516756709272192208020380375104317652743'); + BigNumber.config({ DECIMAL_PLACES : 89 }); + T('34540.071022932280763', '-59.59207', '-579.60851205424280047664059999929520823827734126369498491997341256982682427376662700255252083'); + BigNumber.config({ DECIMAL_PLACES : 14 }); + T('174778773.42377864467671', '-97.4', '-1794443.2589710333129'); + BigNumber.config({ DECIMAL_PLACES : 31 }); + T('-7.0', '0.0000000000000013579093424307028725254050345', '-5154983312413012.2373980900074522160947301027219'); + BigNumber.config({ DECIMAL_PLACES : 40 }); + T('-1187429217160.895861976740510176', '47.88', '-24800108963.2601474932485486670008354218880534670008'); + BigNumber.config({ DECIMAL_PLACES : 73 }); + T('0', '1.2', '0'); + BigNumber.config({ DECIMAL_PLACES : 10 }); + T('10.50184615828620532989098', '-15965843628.553989590163718', '-7e-10'); + BigNumber.config({ DECIMAL_PLACES : 35 }); + T('64006639.058', '-1', '-64006639.058'); + BigNumber.config({ DECIMAL_PLACES : 96 }); + T('738.4', '-10255.8', '-0.071998283897891924569511885957214454260028471694065796914916437528032917958618537802999278457068'); + BigNumber.config({ DECIMAL_PLACES : 78 }); + T('-24476236689.079', '4846294.0932902599', '-5050.505854146693584867831531066272355208439244177011183672939584339049504634283845'); + BigNumber.config({ DECIMAL_PLACES : 82 }); + T('-991408148470363235443.494311', '0.00002033568166712810', '-4.87521473191104750082000907017566350647135636561304848289376836699974824955973934646620653110942892413466703e+25'); + BigNumber.config({ DECIMAL_PLACES : 69 }); + T('-0.0000000000023797696408774593', '134919162817006', '-1.7638485083880903111144426414213399524592121e-26'); + BigNumber.config({ DECIMAL_PLACES : 69 }); + T('95453.16345044452', '-12623427274889812306472', '-7.561588574310356139348134041215762100188607179567923e-18'); + BigNumber.config({ DECIMAL_PLACES : 6 }); + T('0', '-11304.9298719618293220229418', '0'); + BigNumber.config({ DECIMAL_PLACES : 20 }); + T('-6', '-227222120700146329648915.5090', '0'); + BigNumber.config({ DECIMAL_PLACES : 26 }); + T('-0.00000000109953701028880385490871706', '14.339249434385664063', '-7.668023457713924e-11'); + BigNumber.config({ DECIMAL_PLACES : 90 }); + T('0.00029382283548', '-278902025.8720431895413102', '-1.053498390918115072872378281569812193389271328071295862109487360627803249206521e-12'); + BigNumber.config({ DECIMAL_PLACES : 74 }); + T('-2239906038.825625589977060', '0.000000000000013316056741104528065', '-1.6821091126109394436614252485124563576407825107313322043066091580430616518952605429463215316570249e+23'); + BigNumber.config({ DECIMAL_PLACES : 21 }); + T('41558406932.761', '-0.0259981', '-1598517081354.445132528915574599682'); + BigNumber.config({ DECIMAL_PLACES : 34 }); + T('-16889244448527724.5317', '16.5982', '-1017534699457032.9633152992493161909122675952814161'); + BigNumber.config({ DECIMAL_PLACES : 84 }); + T('-11527722853992907.0732990057', '215629.1589013135', '-53460871955.952735564767172042406358983030375524391982413602556287204128413064812902395638701593'); + BigNumber.config({ DECIMAL_PLACES : 24 }); + T('-0.00000000000000006542517463648212668759', '-1160782864', '0'); + BigNumber.config({ DECIMAL_PLACES : 1 }); + T('-13057455871', '1800', '-7254142.2'); + BigNumber.config({ DECIMAL_PLACES : 41 }); + T('0.000000000000000085892600', '-216414964601081767130693768.7', '0'); + BigNumber.config({ DECIMAL_PLACES : 4 }); + T('-0.000000000468753372916607326', '-25596.5', '0'); + BigNumber.config({ DECIMAL_PLACES : 65 }); + T('-40713683082797.943619860501', '43214701062054', '-0.94212576003557844138763603612880795852464537338142536263733562676'); + BigNumber.config({ DECIMAL_PLACES : 4 }); + T('11060731.4', '-10896.67463422902', '-1015.0557'); + BigNumber.config({ DECIMAL_PLACES : 2 }); + T('0.0000000000000000444111786699613385010092826924', '-151.7938', '0'); + BigNumber.config({ DECIMAL_PLACES : 66 }); + T('-438708982319.19364938635', '2514.766771', '-174453149.046796296079398927289229717597537000380541452605347790321983700174'); + BigNumber.config({ DECIMAL_PLACES : 96 }); + T('-377609912449686010094993846', '0.0271867', '-1.3889508930825955709776980876678670085004800141245535500814736617537251670853763053257659075945223215763590284955511334586397e+28'); + BigNumber.config({ DECIMAL_PLACES : 33 }); + T('-6930606.43933187535503068986', '18561.133929', '-373.393482631115783218843766148011614'); + BigNumber.config({ DECIMAL_PLACES : 45 }); + T('599.205953130921538045659', '-1217874296044481', '-4.92009688583686517912820815455259e-13'); + BigNumber.config({ DECIMAL_PLACES : 32 }); + T('632.22646', '-2408415565179017275087792832', '-2.6250721e-25'); + BigNumber.config({ DECIMAL_PLACES : 5 }); + T('0.0000000000000072', '-0.00000265139479', '0'); + BigNumber.config({ DECIMAL_PLACES : 16 }); + T('0.00000000000001580832780', '-0.000000001014640248863', '-0.0000155802293648'); + BigNumber.config({ DECIMAL_PLACES : 69 }); + T('-28.5', '13.752930224', '-2.072285653734005303857637022502790820528778682182893041048849867268839'); + BigNumber.config({ DECIMAL_PLACES : 68 }); + T('0.0000000000000056', '-2652.6094296414820878', '-2.11112873890253698896665555492939636611705010925282e-18'); + BigNumber.config({ DECIMAL_PLACES : 6 }); + T('0.03257', '-5912515099441.78956893084628', '0'); + BigNumber.config({ DECIMAL_PLACES : 7 }); + T('0.0000000000029469210063592843221', '-34552.055843', '0'); + BigNumber.config({ DECIMAL_PLACES : 26 }); + T('2657.36', '-0.5708938602669787524359', '-4654.73564342990916910223309038'); + BigNumber.config({ DECIMAL_PLACES : 74 }); + T('-17.92758963011355837', '424797960970965706886524.5', '-4.22026263712195214473274707686480883537999661452279e-23'); + + // Rounding mode 8 + BigNumber.config({ DECIMAL_PLACES : 73, ROUNDING_MODE : 8 }); + T('98.279720', '2.53957847', '38.6992255450960725777455500321673462604209272572703768432876972689093556538'); + BigNumber.config({ DECIMAL_PLACES : 1 }); + T('567760561.7785308681773297', '25.70527530', '22087316.9'); + BigNumber.config({ DECIMAL_PLACES : 28 }); + T('0.0012191112606041703889162', '0.000032', '38.09722689388032465363125'); + BigNumber.config({ DECIMAL_PLACES : 6 }); + T('129657255941820913688848', '33081581802.919547384', '3919318511256.26277'); + BigNumber.config({ DECIMAL_PLACES : 60 }); + T('0.0217584130', '20.190198000585', '0.001077672096101759964106368368502268997284037166777108290738'); + BigNumber.config({ DECIMAL_PLACES : 67 }); + T('646.5843279', '269072952197356.049', '2.4030075212678825104846927800254704083201459834859925333e-12'); + BigNumber.config({ DECIMAL_PLACES : 43 }); + T('7864078301796658569643944.23236', '10837904158.13', '725608769652890.8010656231924413617780013056071223314347263'); + BigNumber.config({ DECIMAL_PLACES : 95 }); + T('78679420542045375.9975', '0.0782661303193792336016', '1005280575658712602.61680378079930506136624703481529194064192962117609952681462485873187679145246510441123971833116'); + BigNumber.config({ DECIMAL_PLACES : 17 }); + T('7.514', '256.60', '0.02928293063133281'); + BigNumber.config({ DECIMAL_PLACES : 26 }); + T('0.0000605257696842294792', '8033035003.233', '7.53460798563e-15'); + BigNumber.config({ DECIMAL_PLACES : 61 }); + T('13837937692767479166.65', '275610217.5', '50208362441.3070940182034434191468246274287708509935775512386437560138713'); + BigNumber.config({ DECIMAL_PLACES : 59 }); + T('2.2565965', '100585389373.34587', '2.243463503058204274951773207641628982021885698427e-11'); + BigNumber.config({ DECIMAL_PLACES : 76 }); + T('6133264803063744580897553177', '9995746.796702745151086720621', '613587451523571883660.1575705543668700897162744310354121480887959030268229442699890503634942309767'); + BigNumber.config({ DECIMAL_PLACES : 52 }); + T('559642614623878559406', '0.1484896293938559908', '3.7689003394269008645348669826984575696063765927445382806274759040238226477e+21'); + BigNumber.config({ DECIMAL_PLACES : 20 }); + T('7', '5.583', '1.2538061973849185026'); + BigNumber.config({ DECIMAL_PLACES : 98 }); + T('0.000019392833638', '912499614.60', '2.12524294013000452175752623052121560863177596349200693678846404194415535920819226174e-14'); + BigNumber.config({ DECIMAL_PLACES : 64 }); + T('1856578117288670194.164370', '885051.284694629512509739', '2097706821508.3693696462196233117313417739235657909916514451444495705075128837'); + BigNumber.config({ DECIMAL_PLACES : 22 }); + T('6.7', '9723.09', '0.0006890813517102073518'); + BigNumber.config({ DECIMAL_PLACES : 85 }); + T('2714014896637441245', '34614182791153137', '78.4075970538614742132440602741198612612885622756238264830395543075257221019743367280142'); + BigNumber.config({ DECIMAL_PLACES : 17 }); + T('0.00020170', '8', '0.0000252125'); + BigNumber.config({ DECIMAL_PLACES : 51 }); + T('102538367478655695.075405188', '0.00013596981288', '754125973308140181617.974349896009064802649156958963375459489710816464573'); + BigNumber.config({ DECIMAL_PLACES : 69 }); + T('1128723265306.844245', '26132204626636641662.6', '4.3192806785093551895102839159321771479520060953807911856977757e-8'); + BigNumber.config({ DECIMAL_PLACES : 89 }); + T('113223838307388069631593537.840', '9304003647533688952924', '12169.36736019031062911900307415852967418356356710503674260874013723509386108779872158719419219'); + BigNumber.config({ DECIMAL_PLACES : 33 }); + T('12160.3647741798522812607676988', '60689168.916732881', '0.00020037125225531081480095322605'); + BigNumber.config({ DECIMAL_PLACES : 59 }); + T('42884.218', '5329.5', '8.0465743503142883947837508209025236889013978797260531006661'); + BigNumber.config({ DECIMAL_PLACES : 78 }); + T('60357614629933.010037051378', '574812381.00740122422567785922', '105004.026747217631156932482582114856103973819981158519761390819080955050829400336586'); + BigNumber.config({ DECIMAL_PLACES : 82 }); + T('0.000150194537', '0.021', '0.0071521208095238095238095238095238095238095238095238095238095238095238095238095238'); + BigNumber.config({ DECIMAL_PLACES : 63 }); + T('8804964.1459992689585824461', '40378291.606', '0.218061829656282386663549474688986176717443957923552571809617735'); + BigNumber.config({ DECIMAL_PLACES : 30 }); + T('0.63909253839264108', '294.940692616505391', '0.002166851012395284369118179744'); + BigNumber.config({ DECIMAL_PLACES : 33 }); + T('1023243.070', '9.51441130417414270754', '107546.650789743021923557496742565683663'); + BigNumber.config({ DECIMAL_PLACES : 15 }); + T('7', '2117.74441844', '0.003305403588388'); + BigNumber.config({ DECIMAL_PLACES : 56 }); + T('41488521062.77986', '0.00002008707', '2065434185412798.38224290551085847761769138057466818206936103672661070032'); + BigNumber.config({ DECIMAL_PLACES : 93 }); + T('844263691.81902410775', '849374349595.80775419530', '0.000993983032594266994271775568537851134160059362982128423015854142015009634155367884379090417'); + BigNumber.config({ DECIMAL_PLACES : 75 }); + T('13349918933820', '4.8', '2781233111212.5'); + BigNumber.config({ DECIMAL_PLACES : 15 }); + T('103760735.6946522860573', '0.0004066794', '255141361216.359338725541545'); + BigNumber.config({ DECIMAL_PLACES : 99 }); + T('68917515178552754.0', '0.14', '492267965561091100'); + BigNumber.config({ DECIMAL_PLACES : 89 }); + T('1031321877143445764011877', '33533.28411855', '30755170698384932347.16716890130212497978525108505503021614960729391920145088917232195595937553032431988707255'); + BigNumber.config({ DECIMAL_PLACES : 2 }); + T('0.02960', '1016451.52', '0'); + BigNumber.config({ DECIMAL_PLACES : 91 }); + T('17245127707901932.49', '15580355401258735553027686444', '1.1068507273273560966150042669129924380128661863167389006956883625215153093650921e-12'); + BigNumber.config({ DECIMAL_PLACES : 29 }); + T('1', '209.18012626629520667', '0.0047805688707107740463542216'); + BigNumber.config({ DECIMAL_PLACES : 21 }); + T('7.79', '153378108750701532.05407442', '5.079e-17'); + BigNumber.config({ DECIMAL_PLACES : 68 }); + T('0.004200', '1635366313', '2.56823194082755940931504316733470588494383398736427316881e-12'); + BigNumber.config({ DECIMAL_PLACES : 42 }); + T('0.0228701', '5645801207898376084612044', '4.050815669528912e-27'); + BigNumber.config({ DECIMAL_PLACES : 71 }); + T('0.0033960799', '6.75182164', '0.00050298720568690851851353111276796109205278118099103103677365505762975'); + BigNumber.config({ DECIMAL_PLACES : 21 }); + T('7.08285516742655064343921', '41358.75514', '0.000171254070473131524'); + BigNumber.config({ DECIMAL_PLACES : 76 }); + T('0.261974324049215172124', '1038017550335', '2.523794746675218045305497922287208145983452082381019041925022001e-13'); + BigNumber.config({ DECIMAL_PLACES : 89 }); + T('112905012578123386.8', '290487062922.09', '388674.8395690345891611134670102067513236044112423072681893863179188640425926943863878606519681'); + BigNumber.config({ DECIMAL_PLACES : 61 }); + T('1.5087535', '187.4054956619681', '0.0080507430941161297879756641335428652573953779583996227223557'); + BigNumber.config({ DECIMAL_PLACES : 67 }); + T('588.42740761976096', '9.5', '61.9397271178695747368421052631578947368421052631578947368421052631579'); + BigNumber.config({ DECIMAL_PLACES : 48 }); + T('68296130005806947526.81816792', '0.039530792374', '1.727669138520136144003571951269382364645034069207549854209254257434025e+21'); + BigNumber.config({ DECIMAL_PLACES : 46 }); + T('566421798102744783494667', '5195.650', '109018467006581425518.398467949149769518732016205864521282226477919'); + BigNumber.config({ DECIMAL_PLACES : 29 }); + T('11359422564.37423411195876', '0.00006551526', '173385903747832.70511265253316555562780335452'); + BigNumber.config({ DECIMAL_PLACES : 10 }); + T('5.80', '407750993888797', '0'); + BigNumber.config({ DECIMAL_PLACES : 53 }); + T('7687825.6738488', '1057505129', '0.00726977625263962194929458351591597812477370972637618'); + BigNumber.config({ DECIMAL_PLACES : 66 }); + T('0.00078563973970489', '202107544290040667654103220.376', '3.887236087423997640951095666504554463e-30'); + BigNumber.config({ DECIMAL_PLACES : 77 }); + T('7.957', '9332.9282488444250412050295', '0.00085257271756966648521864328811305903793546656282144671796441534561142844065'); + BigNumber.config({ DECIMAL_PLACES : 9 }); + T('1363993.640215242473', '11322181003651970211710339', '0'); + BigNumber.config({ DECIMAL_PLACES : 20 }); + T('70051191.07525111147', '180874508835.433332', '0.00038729167269770674'); + BigNumber.config({ DECIMAL_PLACES : 7 }); + T('19.967022398', '911742389938', '0'); + BigNumber.config({ DECIMAL_PLACES : 91 }); + T('811691978843777618265931961', '1.39233479313', '5.829718418650414913702990162380156278182283191594640546408220604573322130150537811835339292897642824273878813315265443e+26'); + BigNumber.config({ DECIMAL_PLACES : 20 }); + T('785907', '7600844.0115014771025450', '0.10339733308705953458'); + BigNumber.config({ DECIMAL_PLACES : 55 }); + T('5417495622857086103130303', '42514587331142358.59392', '127426748.3925150700035933258199706194577051286199226663494412517'); + BigNumber.config({ DECIMAL_PLACES : 35 }); + T('3580181223966485629383762', '86567.2', '41357248749716816870.40544224602389819700764261752719275'); + BigNumber.config({ DECIMAL_PLACES : 45 }); + T('0.0000943', '0.001990995881', '0.047363232088976883222391759433278305210115098'); + BigNumber.config({ DECIMAL_PLACES : 58 }); + T('8.91022368966896404786448', '0.03976933558288092342', '224.0475873955624205613672819256304872438280858760387773354384'); + BigNumber.config({ DECIMAL_PLACES : 59 }); + T('381700.72', '2.2105', '172676.19090703460755485184347432707532232526577697353539923094323'); + BigNumber.config({ DECIMAL_PLACES : 47 }); + T('0.166', '3418904.547797444446176113', '4.855356377437969759910445352291295989815e-8'); + BigNumber.config({ DECIMAL_PLACES : 88 }); + T('65903.58933744566987', '56.2615595533', '1171.3786439746873377398855234090000936127676128572206789737162868850253237119769182038338319'); + BigNumber.config({ DECIMAL_PLACES : 81 }); + T('1364.6', '1', '1364.6'); + BigNumber.config({ DECIMAL_PLACES : 82 }); + T('1', '5897.1660228538858402716968', '0.0001695729772783398899888240918068539485885533810472934733226537712262559577239337'); + BigNumber.config({ DECIMAL_PLACES : 1 }); + T('1569245.6135066', '7114895275448.255083650', '0'); + BigNumber.config({ DECIMAL_PLACES : 96 }); + T('0.00009130', '44.7', '0.0000020425055928411633109619686800894854586129753914988814317673378076062639821029082774049217'); + BigNumber.config({ DECIMAL_PLACES : 54 }); + T('147753814958.677594', '1306.6440741771799803', '113078854.355744229099762226676784700240199575836518150301745721'); + BigNumber.config({ DECIMAL_PLACES : 32 }); + T('921277167355764.87', '0.006283411187', '146620544149940711.17758921225920400679326097396147'); + BigNumber.config({ DECIMAL_PLACES : 8 }); + T('68535077.68961895546', '0.00020476107110133807', '334707556084.72246032'); + BigNumber.config({ DECIMAL_PLACES : 51 }); + T('1872307.169908427', '633.45', '2955.730002223422527429157786723498302944194490488594206'); + BigNumber.config({ DECIMAL_PLACES : 2 }); + T('9107.60078475', '36542593.211876613610568939', '0'); + BigNumber.config({ DECIMAL_PLACES : 73 }); + T('3.72394', '0.0193816788', '192.1371228172453255184478653108212690017337404229400396419736354314157760163'); + BigNumber.config({ DECIMAL_PLACES : 28 }); + T('1.07', '0.55756802460172206', '1.9190483542601185304611221787'); + BigNumber.config({ DECIMAL_PLACES : 1 }); + T('6.17', '389593.210', '0'); + BigNumber.config({ DECIMAL_PLACES : 51 }); + T('38780128.7122', '3549568036202326830.2', '1.0925309309943740094679096249984072870308e-11'); + BigNumber.config({ DECIMAL_PLACES : 1 }); + T('2', '22.81806926', '0.1'); + BigNumber.config({ DECIMAL_PLACES : 0 }); + T('0.0000100', '1139564681325', '0'); + BigNumber.config({ DECIMAL_PLACES : 2 }); + T('46.50319', '3416231842748933380.74230902081', '0'); + BigNumber.config({ DECIMAL_PLACES : 68 }); + T('1', '7379791076831238.56', '1.355051910804748180507625617404703505832609199543246e-16'); + BigNumber.config({ DECIMAL_PLACES : 78 }); + T('0.000022443054742391293104475', '0.008064051238131175', '0.002783099223907265067377410989707648496147253672561285876033737240647636187236'); + BigNumber.config({ DECIMAL_PLACES : 67 }); + T('625145862686.997263120154', '2107779905203297.038208159865', '0.0002965897251149196483307959749934321300112818055438759362685105274'); + BigNumber.config({ DECIMAL_PLACES : 19 }); + T('184386.9682167', '84432536994766383635239875.1', '0'); + BigNumber.config({ DECIMAL_PLACES : 38 }); + T('3.5448928900685867111376203095', '163550.93004066', '0.00002167455048520543104468539239259044'); + BigNumber.config({ DECIMAL_PLACES : 42 }); + T('318867142782283.0363615', '676591310394863109686.52422', '4.71284714839435475918651247413746523e-7'); + BigNumber.config({ DECIMAL_PLACES : 92 }); + T('428.1', '777.391', '0.55068813505687614083517817932031628871443070475475018362702938418376338290512753556447141786'); + BigNumber.config({ DECIMAL_PLACES : 94 }); + T('0.6926940356', '0.00039099680', '1771.6104980910329700908038122051126761139733112905271859002426618325265066107957916791134863507834'); + BigNumber.config({ DECIMAL_PLACES : 66 }); + T('0.002130211805', '140.19660134762083', '0.000015194461096229350255974061693960641852324192167557092840177376'); + BigNumber.config({ DECIMAL_PLACES : 61 }); + T('49981882492075177635482718', '145796595747510229984200694096', '0.0003428192697903148316427330346057289022069783388696851477455'); + BigNumber.config({ DECIMAL_PLACES : 75 }); + T('152.8586609630441', '107410163', '0.000001423130332304254114203327295946846296099559964358307509504477709432393'); + BigNumber.config({ DECIMAL_PLACES : 42 }); + T('2.933829723', '1491.3817233720637', '0.001967189001328589019839007543945424526885'); + BigNumber.config({ DECIMAL_PLACES : 23 }); + T('156217760732890.34181906', '0.062726236685805602', '2490469203746142.36826638502513312167296'); + BigNumber.config({ DECIMAL_PLACES : 21 }); + T('0.0000547574887966090149', '24563584.6437', '2.229214082e-12'); + BigNumber.config({ DECIMAL_PLACES : 54 }); + T('27591022.7711878347573089269', '935.18100071', '29503.403886777445219371373877619759754411146691782752054238'); + BigNumber.config({ DECIMAL_PLACES : 64 }); + T('11.076', '456170163920614807291064343', '2.42804130476352356723599286207859050694e-26'); + BigNumber.config({ DECIMAL_PLACES : 40 }); + T('1', '912586039339459022586.3891', '1.0957870895371271241e-21'); + BigNumber.config({ DECIMAL_PLACES : 74 }); + T('30521310.73994', '13399401100577405739962147', '2.27781156119169971932669239543326815443551088771527744274e-18'); + BigNumber.config({ DECIMAL_PLACES : 17 }); + T('0.003060360361', '40814243495.1557', '7.498e-14'); + BigNumber.config({ DECIMAL_PLACES : 31 }); + T('393562142372.6699944163', '2709111978097.9730553380', '0.1452734864983263187522827746799'); + BigNumber.config({ DECIMAL_PLACES : 95 }); + T('159837823.83396', '14505.28645341', '11019.28075307911293485694830191635452262752322811523282893369238174101063535102774433337684219419086'); + BigNumber.config({ DECIMAL_PLACES : 37 }); + T('277723.92715223712984194709', '909319009144881.8606790641124', '3.054196869956639796826219565e-10'); + BigNumber.config({ DECIMAL_PLACES : 90 }); + T('5154325576234', '238231.85', '21635753.473912073469605344541462445092879058782442398025285032207070549131025091733116289866363377'); + BigNumber.config({ DECIMAL_PLACES : 74 }); + T('24812964145333591', '1878494699477.89929200135933136', '13208.96149040505631773529079144196060102935838240800320787494878988367434179429'); + BigNumber.config({ DECIMAL_PLACES : 88 }); + T('5.4', '2417740018257723686.948179', '2.2334907637800353956807877701697903215360962459590518620256780423842788e-18'); + BigNumber.config({ DECIMAL_PLACES : 13 }); + T('3716641856955803178.210', '3562351870.3701495053437060', '1043311270.8121171722993'); + BigNumber.config({ DECIMAL_PLACES : 7 }); + T('922353440.1222198038485563827', '1171478560221579954809', '0'); + BigNumber.config({ DECIMAL_PLACES : 21 }); + T('1616227508.5386179952261148005', '125752725147536.893701', '0.000012852425318357205'); + BigNumber.config({ DECIMAL_PLACES : 100 }); + T('0.00002995', '269908512252198465961060', '1.109635251963271509119907392064404912967049003603986598448525389918281476e-28'); + BigNumber.config({ DECIMAL_PLACES : 87 }); + T('0.26', '6792618697591', '3.8276843081477385884074285311309311873334525946946333526154459025428012291e-14'); + BigNumber.config({ DECIMAL_PLACES : 61 }); + T('1084.902723556411673448636981', '13.27757', '81.7094335451751844237038088294770805200047900331159993884423129'); + BigNumber.config({ DECIMAL_PLACES : 33 }); + T('207389914022.22221', '1053192.0136883', '196915.577906766007469497356564880225194'); + BigNumber.config({ DECIMAL_PLACES : 68 }); + T('131.669219908878655', '0.0005307509', '248081.01108990800580837451241250839141299619086844694940696285206487638551'); + BigNumber.config({ DECIMAL_PLACES : 9 }); + T('2', '53569022282027512', '0'); + BigNumber.config({ DECIMAL_PLACES : 94 }); + T('0.03738172891910893041812276477', '52', '0.0007188794022905563541946685532692307692307692307692307692307692307692307692307692307692307692'); + BigNumber.config({ DECIMAL_PLACES : 60 }); + T('412264171442951057.7361095', '50867725637.06220391', '8104631.498259390479455821393714832842253133346477938618046134121269'); + BigNumber.config({ DECIMAL_PLACES : 49 }); + T('0.000014599', '0.000244239824', '0.0597732170000253521309448699897523673289250323076'); + BigNumber.config({ DECIMAL_PLACES : 68 }); + T('2985804868.615', '482745099093247954326254', '6.18505475088884599340849357229221901935477717691061428e-15'); + BigNumber.config({ DECIMAL_PLACES : 72 }); + T('1116399', '84553466081700776.9557', '1.3203468192791368128410881062598342805009693925396921044310838e-11'); + BigNumber.config({ DECIMAL_PLACES : 18 }); + T('56.47', '517123748551.41', '1.09200168e-10'); + BigNumber.config({ DECIMAL_PLACES : 87 }); + T('91890006292.8931376', '1571814055.6', '58.461117563817984221873629617643177410965506065169201175579562618589933927551016614029062'); + BigNumber.config({ DECIMAL_PLACES : 66 }); + T('22630058916.8929', '158399.84399', '142866.67427729011363655699772258342613788075612864118452847978717254796'); + BigNumber.config({ DECIMAL_PLACES : 50 }); + T('0.00257381701', '2728.0', '9.4348130865102639296187683284457478005865103e-7'); + BigNumber.config({ DECIMAL_PLACES : 69 }); + T('2613.2484185', '2009900023138286.18110', '1.30018826230950390436120395966100721290467931993643111597e-12'); + BigNumber.config({ DECIMAL_PLACES : 79 }); + T('0.0000561357186557576060078609217', '34430.01836170882655364741890', '1.6304295300111912206696516226345647077432147176729656846977674487871225e-9'); + BigNumber.config({ DECIMAL_PLACES : 51 }); + T('19341833369042334971814.3', '792', '24421506779093857287.644318181818181818181818181818181818181818181818182'); + BigNumber.config({ DECIMAL_PLACES : 25 }); + T('8', '5878749.616759672569203', '0.0000013608335992390072977'); + BigNumber.config({ DECIMAL_PLACES : 69 }); + T('0.0013157737110166924023882', '0.00002450730617641171810659288', '53.689038752171162045564690319695207836437329411996357070555570567750137'); + BigNumber.config({ DECIMAL_PLACES : 50 }); + T('19810.5', '2877531874906.917236', '6.88454580564492706183282039699170937193096e-9'); + BigNumber.config({ DECIMAL_PLACES : 31 }); + T('2445412586541380912833.924775', '0.012371088804317191', '1.976715732319369476938170286069551427398460449463285166e+23'); + BigNumber.config({ DECIMAL_PLACES : 15 }); + T('13488954.69149290270474', '0.0002040', '66122326919.082856395784314'); + BigNumber.config({ DECIMAL_PLACES : 38 }); + T('141.84130518408', '0.260237160284', '545.0463147895052597399253290108960863272'); + BigNumber.config({ DECIMAL_PLACES : 17 }); + T('10641673.3330931452141539307931', '26227452783350405180887260', '0'); + BigNumber.config({ DECIMAL_PLACES : 91 }); + T('255357.87552', '294742078902132776442', '8.663773984059804047707640588294408274426684397902483873876159418581450563171e-16'); + BigNumber.config({ DECIMAL_PLACES : 98 }); + T('211.47519696522740215766', '173739178.714', '0.00000121719924389274560754650074499488231764083760776421969750741617978476246522634980941596394612'); + BigNumber.config({ DECIMAL_PLACES : 36 }); + T('6808350866.212', '4670611887821094.6', '0.000001457699982301074980352460135688'); + BigNumber.config({ DECIMAL_PLACES : 62 }); + T('1724257.37586183654376', '0.016567742613356095142153', '104073162.89859702904495573149679115062463446876792498334187044473069739'); + BigNumber.config({ DECIMAL_PLACES : 45 }); + T('0.2218267497479178849103995260', '1', '0.221826749747917884910399526'); + BigNumber.config({ DECIMAL_PLACES : 6 }); + T('3056.9914315', '107136957848669820324475752', '0'); + BigNumber.config({ DECIMAL_PLACES : 95 }); + T('4056795545010022719', '390912.7712', '10377751365238.64666972538143568331696398667058949237010755406089940506911737346687127115278038785139593822511'); + BigNumber.config({ DECIMAL_PLACES : 8 }); + T('1442.5062', '276.5', '5.21702061'); + BigNumber.config({ DECIMAL_PLACES : 25 }); + T('0.0103820', '1359753057.55', '7.6352098951748e-12'); + BigNumber.config({ DECIMAL_PLACES : 98 }); + T('0.000081938669733472684', '0.0003843206754115', '0.21320390750702984183938899483638612110791882628768645606333050734244129912757206051692144092244537'); + BigNumber.config({ DECIMAL_PLACES : 86 }); + T('8060854277465.20', '34816969.58', '231520.84672227237532026473396482198954203181976069038458803168474951460723883023250755874659'); + BigNumber.config({ DECIMAL_PLACES : 70 }); + T('46373882311.61444695839575', '0.00008180466', '566885582210285.4159945869831865324053666380374907737529866880444219192402975576208006'); + BigNumber.config({ DECIMAL_PLACES : 42 }); + T('970857716.251238514376609', '2916245920577737.689506786', '3.32913527422578210495339372249610679e-7'); + BigNumber.config({ DECIMAL_PLACES : 81 }); + T('4.63829341424348180', '5', '0.92765868284869636'); + BigNumber.config({ DECIMAL_PLACES : 28 }); + T('3', '7785988.0942216998', '3.853075503963874149149e-7'); + BigNumber.config({ DECIMAL_PLACES : 71 }); + T('1935.3968306', '2818173.183324', '0.000686755818291203686779830523099309085475682725743217320530154795724'); + BigNumber.config({ DECIMAL_PLACES : 6 }); + T('0.0001212706832382449165409924', '50.62429', '0.000002'); + BigNumber.config({ DECIMAL_PLACES : 70 }); + T('0.3383', '3', '0.1127666666666666666666666666666666666666666666666666666666666666666667'); + BigNumber.config({ DECIMAL_PLACES : 55 }); + T('894753589335624184.1', '0.0007282180', '1.2286891965532631493591204831520231579005188006888047260573070152069847216081e+21'); + BigNumber.config({ DECIMAL_PLACES : 5 }); + T('4935', '42444950178982881491.461877618', '0'); + BigNumber.config({ DECIMAL_PLACES : 100 }); + T('0.000101227', '643454825446.7392', '1.573179592362523674372385137884108898258340821485311619323561798503395263196654097412e-16'); + BigNumber.config({ DECIMAL_PLACES : 100 }); + T('447076.3579728966752', '1.1182', '399817.8840752071858343766768020032194598461813629046682167769629762117689143265963155070649257735646574852'); + BigNumber.config({ DECIMAL_PLACES : 35 }); + T('32560.2485', '32.214236', '1010.74098109916373618173033810269472168'); + BigNumber.config({ DECIMAL_PLACES : 73 }); + T('0.000089141364072600114211582982', '0.058894052315174', '0.0015135885640124804477286342832647245668598876396635397587634744519103678'); + BigNumber.config({ DECIMAL_PLACES : 3 }); + T('39794.415496636', '0.23223897147290588944', '171351.153'); + BigNumber.config({ DECIMAL_PLACES : 81 }); + T('13222.3699543614940085382082', '0.0000963257281071901769', '137267272.349582354600071093875354367370306911268702940649616770695129108517948339716901186'); + BigNumber.config({ DECIMAL_PLACES : 93 }); + T('0.02110', '0.000014144469652', '1491.749108954148859309949615635118618161110251572972868364424979572927998813595955672527325098749'); + BigNumber.config({ DECIMAL_PLACES : 11 }); + T('4183.27039', '1576756721946563.77771220262471', '0'); + BigNumber.config({ DECIMAL_PLACES : 11 }); + T('83913736210587', '10', '8391373621058.7'); + BigNumber.config({ DECIMAL_PLACES : 15 }); + T('0.011284', '0.032590668', '0.346234081486148'); + BigNumber.config({ DECIMAL_PLACES : 43 }); + T('51.6272963878555410936484', '23.642305', '2.1836828679714410711497208076792850781681397'); + BigNumber.config({ DECIMAL_PLACES : 57 }); + T('583912624137558', '1124434060671107001432.3098', '5.19294678595075379865586684385004327138783407390491e-7'); + BigNumber.config({ DECIMAL_PLACES : 36 }); + T('104', '3', '34.666666666666666666666666666666666667'); + BigNumber.config({ DECIMAL_PLACES : 71 }); + T('2668382615715798173123151', '6.1137556071482670562425858300', '4.3645555811813892029201940395212164303426674241111771904485973967696192232876186631794064681353e+23'); + BigNumber.config({ DECIMAL_PLACES : 70 }); + T('76.37127174', '4863221747.602433', '1.57038431935889035317222305715014276666744557610406465375819928e-8'); + BigNumber.config({ DECIMAL_PLACES : 2 }); + T('0.000353856712310493111557783', '457025665893058678922', '0'); + BigNumber.config({ DECIMAL_PLACES : 57 }); + T('62.65', '432183501730946.484920337305229', '1.44961572454939338754482668113673893912501326e-13'); + BigNumber.config({ DECIMAL_PLACES : 14 }); + T('9484925.5725276', '643230.450929164', '14.74576578087428'); + BigNumber.config({ DECIMAL_PLACES : 65 }); + T('29219153059082304711205', '2020940', '14458199184083795.02172503884331053866022741892386711134422595425890922046176531713'); + BigNumber.config({ DECIMAL_PLACES : 50 }); + T('1.6167291799635', '319507008492609390.1421', '5.06007422995510608489707654880904e-18'); + BigNumber.config({ DECIMAL_PLACES : 32 }); + T('7067930442222519996104.1426296', '11.105', '636463794887214767771.64724264745610085547050877982891'); + BigNumber.config({ DECIMAL_PLACES : 36 }); + T('6296.23', '0.30350', '20745.403624382207578253706754530477759473'); + BigNumber.config({ DECIMAL_PLACES : 85 }); + T('25220031721402951.1439', '97910318600212525993977680.5', '2.575829808539526912014591264828608640845044624118941024688322346629446658315e-10'); + BigNumber.config({ DECIMAL_PLACES : 93 }); + T('1577.11816313025207154072242023', '17136.39555258', '0.092033249249595332110361240079175693431967185826632290859281004959240393304597814636353771505'); + BigNumber.config({ DECIMAL_PLACES : 38 }); + T('3', '8', '0.375'); + BigNumber.config({ DECIMAL_PLACES : 76 }); + T('15.1', '61290622253851.77', '2.463672164635439012310274841034978278027626024273909715584303482e-13'); + BigNumber.config({ DECIMAL_PLACES : 94 }); + T('9.4', '1505720715559061196199752696', '6.2428575916283788173290365578659968143965835269092137878498321540696e-27'); + BigNumber.config({ DECIMAL_PLACES : 7 }); + T('0.00044042684', '14883.434400120415248', '0'); + BigNumber.config({ DECIMAL_PLACES : 60 }); + T('279581221438.3', '0.00013', '2150624780294615.384615384615384615384615384615384615384615384615384615384615'); + BigNumber.config({ DECIMAL_PLACES : 85 }); + T('17.18', '174172032024380424.5303862336', '9.86381096914294541321544968454441351189152416981008744412356486973897e-17'); + BigNumber.config({ DECIMAL_PLACES : 75 }); + T('1959.3331629', '33684517964766.44422', '5.8167172377216034752746539569641866632289466116513576163464801987e-11'); + BigNumber.config({ DECIMAL_PLACES : 5 }); + T('3730145731260474.616558254', '2.491', '1497449109297661.42776'); + BigNumber.config({ DECIMAL_PLACES : 28 }); + T('0.000070641941766584644730804', '0.3291958', '0.0002145894381598569748787925'); + BigNumber.config({ DECIMAL_PLACES : 65 }); + T('184143180271115578469693.832', '5200058984134.449881234802669', '35411748373.03623806483776476169862920772983365204009241171274640979941377637'); + BigNumber.config({ DECIMAL_PLACES : 67 }); + T('8.55', '18404481135049739859', '4.645607739365857875138332905785370282093050454145e-19'); + BigNumber.config({ DECIMAL_PLACES : 48 }); + T('0.00052803317487995302294196', '28450974995.9125428563861', '1.8559405256087490728777491003348741e-14'); + BigNumber.config({ DECIMAL_PLACES : 58 }); + T('0.000020', '372.226399', '5.37307403605191366343685902836784018642374690893431e-8'); + BigNumber.config({ DECIMAL_PLACES : 23 }); + T('51.6144314750083', '2116334.32611183720', '0.00002438860006104760749'); + BigNumber.config({ DECIMAL_PLACES : 93 }); + T('0.886692079005', '0.0002023', '4383.055259540286702916460701927829955511616411270390509144834404349975284231339594661393969352447'); + BigNumber.config({ DECIMAL_PLACES : 83 }); + T('0.000949241051757155928548909473', '1165.73771369', '8.1428355676376772961269868393392014082124415480186282108101846530386484883357e-7'); + BigNumber.config({ DECIMAL_PLACES : 46 }); + T('7321043.1701028857', '282.6', '25906.0267873421291578202406227883934890304317055909'); + BigNumber.config({ DECIMAL_PLACES : 72 }); + T('7241749441.16774', '36082305498514055363620060', '2.00700851597910514724420850539022854346971126250568644267e-16'); + BigNumber.config({ DECIMAL_PLACES : 28 }); + T('8540688406508771321', '224808745884484358105', '0.0379909081068283502508138011'); + BigNumber.config({ DECIMAL_PLACES : 62 }); + T('564642157256018408', '2777587712980782.312', '203.28508605406733283559863484081688471149884747330661700082973938'); + BigNumber.config({ DECIMAL_PLACES : 74 }); + T('3.8941', '0.03998275372309104208', '97.3944923095944659689339456020563758559352376616897052140538837623754354532'); + BigNumber.config({ DECIMAL_PLACES : 57 }); + T('0.0000224', '199364221', '1.12357171651176065338223351521033455646988935e-13'); + BigNumber.config({ DECIMAL_PLACES : 7 }); + T('0.0113', '17986834990.49682032535002', '0'); + BigNumber.config({ DECIMAL_PLACES : 94 }); + T('128069584', '2475631.33113017', '51.7320904730729608717817979026539325079383306631134518864200470760420758595220747694463604796175'); + BigNumber.config({ DECIMAL_PLACES : 27 }); + T('20278323832.0661423731861', '0.1495850174401728398628807', '135563869825.241981350361154937815718661'); + BigNumber.config({ DECIMAL_PLACES : 12 }); + T('0.0003733162232627504541358', '1.7403268061162433011674', '0.000214509265'); + BigNumber.config({ DECIMAL_PLACES : 7 }); + T('102.399781', '130071', '0.0007873'); + BigNumber.config({ DECIMAL_PLACES : 86 }); + T('0.00332336560167', '660.1', '0.000005034639602590516588395697621572489016815633994849265262838963793364641720951371'); + BigNumber.config({ DECIMAL_PLACES : 54 }); + T('56360', '28807118343416832832349805.843', '1.956460876375012671343578134305688e-21'); + BigNumber.config({ DECIMAL_PLACES : 58 }); + T('27.357711909', '15558609318940.3897751906530', '1.7583648607781342108682741145181217107739262681e-12'); + BigNumber.config({ DECIMAL_PLACES : 82 }); + T('5607917719.914091', '558327282741703577153', '1.004414058431111378001554170714674335379190033812125138541554850258693e-11'); + BigNumber.config({ DECIMAL_PLACES : 12 }); + T('249808497289.8181921809718673', '0.0185459992', '13469670444600.158948619596'); + BigNumber.config({ DECIMAL_PLACES : 82 }); + T('14336586303.42721833248000902', '21024.41925362603752626', '681901.6559020824006332647891439414806430356895809583512778821951970093031262272765580418'); + BigNumber.config({ DECIMAL_PLACES : 84 }); + T('0.000034395345862687832644534811', '0.00001652814271194670', '2.081016993992104564925455017653318454262928188686141716832059463736505324616969324593'); + BigNumber.config({ DECIMAL_PLACES : 90 }); + T('198.90330036522219270371510277', '1602784673888', '1.24098578933080834752366839927909796117707260510767283002611201469656961896181433e-10'); + BigNumber.config({ DECIMAL_PLACES : 86 }); + T('0.03632017', '0.004017299637232151671383679', '9.04094124903860896103579352915717852236321040917032615566004912686786771493640555764773'); + BigNumber.config({ DECIMAL_PLACES : 24 }); + T('0.01946', '4884', '0.000003984438984438984439'); + BigNumber.config({ DECIMAL_PLACES : 33 }); + T('0.62463407084918258318382', '384926970', '1.622733971717239203020303e-9'); + BigNumber.config({ DECIMAL_PLACES : 20 }); + T('1419000.37801892862', '6', '236500.06300315477'); + BigNumber.config({ DECIMAL_PLACES : 8 }); + T('26344538006.17038043', '858.734', '30678345.10590052'); + BigNumber.config({ DECIMAL_PLACES : 13 }); + T('189.722', '3455486245440338422', '0'); + BigNumber.config({ DECIMAL_PLACES : 94 }); + T('167.217780', '126.20', '1.3250220285261489698890649762282091917591125198098256735340729001584786053882725832012678288431'); + BigNumber.config({ DECIMAL_PLACES : 78 }); + T('0.00619980711742262658', '229.697222529847591027153095', '0.000026991214996589712065220243812489790598294903467466834316087386609129340267'); + BigNumber.config({ DECIMAL_PLACES : 84 }); + T('1156127509047391571768106258', '1.353087336', '8.54436722809880449408112898042820792463613745624473127135970770773661279762358222233779002717678232707958771406e+26'); + BigNumber.config({ DECIMAL_PLACES : 73 }); + T('18172196068.7813163195', '10605003.16917', '1713.5493293967174045549366342886814437849532107534024589004742410546015537'); + BigNumber.config({ DECIMAL_PLACES : 71 }); + T('149392168942196308754', '312.0', '478821054301911246.00641025641025641025641025641025641025641025641025641025641025641025641'); + BigNumber.config({ DECIMAL_PLACES : 37 }); + T('391.572', '1.1', '355.9745454545454545454545454545454545455'); + BigNumber.config({ DECIMAL_PLACES : 56 }); + T('0.96673694498', '13.7085477932', '0.07052074074976351886801546756852722061967680487745042354'); + BigNumber.config({ DECIMAL_PLACES : 54 }); + T('214.4', '0.43055301443328664879070028', '497.964229288239863242612600332265970541721257966295542048'); + BigNumber.config({ DECIMAL_PLACES : 72 }); + T('1095055008744.285325925138264', '88037833184697750.54782767', '0.000012438459343347647651984097273610566773214136862127891887384360629551'); + BigNumber.config({ DECIMAL_PLACES : 5 }); + T('51602.4330', '135619076866053720687181462499', '0'); + BigNumber.config({ DECIMAL_PLACES : 19 }); + T('0.00007028184408115', '20584916.77374118', '3.4142399e-12'); + BigNumber.config({ DECIMAL_PLACES : 53 }); + T('103137069484639350621490975', '1254266677515076835', '82228979.95581932205041681001816617588816534716840801393930375'); + BigNumber.config({ DECIMAL_PLACES : 88 }); + T('0.002352949776316576468515703', '15560944737919350', '1.512086711922343598163709834465958193941995575535050264193470963524169e-19'); + BigNumber.config({ DECIMAL_PLACES : 54 }); + T('0.244246874443097643161156343', '17778708631589260712350', '1.3738167349743225615398361622673e-23'); + BigNumber.config({ DECIMAL_PLACES : 28 }); + T('0.6638', '45060680816.33729984155', '1.47312465762685771e-11'); + BigNumber.config({ DECIMAL_PLACES : 79 }); + T('0.015524617474958', '7', '0.0022178024964225714285714285714285714285714285714285714285714285714285714285714'); + BigNumber.config({ DECIMAL_PLACES : 36 }); + T('0.0568396955226606', '659939362592299.9955462923198', '8.6128663850856334865e-17'); + BigNumber.config({ DECIMAL_PLACES : 100 }); + T('0.0000230828799', '2.8', '0.0000082438856785714285714285714285714285714285714285714285714285714285714285714285714285714285714286'); + BigNumber.config({ DECIMAL_PLACES : 29 }); + T('0.000040414341256', '0.0031768054343264', '0.01272169230740734109146649233'); + BigNumber.config({ DECIMAL_PLACES : 38 }); + T('635959831206068.69', '1.555168', '408933202847582.18404699685178707380810304738780633346'); + BigNumber.config({ DECIMAL_PLACES : 29 }); + T('0.0001571614099710879491050', '0.020578821462237', '0.00763704618651197903855922286'); + BigNumber.config({ DECIMAL_PLACES : 58 }); + T('0.00014754453938996367291684948', '3075050.41', '4.79811774500189975477018212524197286248715512927e-11'); + BigNumber.config({ DECIMAL_PLACES : 77 }); + T('0.0005313750', '0.000212', '2.50648584905660377358490566037735849056603773584905660377358490566037735849057'); + BigNumber.config({ DECIMAL_PLACES : 48 }); + T('9364.18179191', '227835766622922.486875056765', '4.110057841536401041396709790606128539e-11'); + BigNumber.config({ DECIMAL_PLACES : 100 }); + T('20148', '-0.000078632271431590126', '-256230675.1818648429115557343222536936245425718992431835224697391595895970615625701044674216738452373694001932'); + BigNumber.config({ DECIMAL_PLACES : 31 }); + T('-921.894009989260573959', '514388534758565851', '-1.7922133712057989e-15'); + BigNumber.config({ DECIMAL_PLACES : 30 }); + T('66521405510.01629', '-48902', '-1360300.304895838411516911373767944051'); + BigNumber.config({ DECIMAL_PLACES : 15 }); + T('581889.32710174', '-7866.565450148299', '-73.96993399333763'); + BigNumber.config({ DECIMAL_PLACES : 54 }); + T('-1475163898997127.72721', '1019385.134794294248591', '-1447111448.505482547670647264759973332601952136970965778734713259'); + BigNumber.config({ DECIMAL_PLACES : 67 }); + T('-8', '0.00011624833430977163873508', '-68818.1903637610530937591533135243434320182013488787353488961419444528111'); + BigNumber.config({ DECIMAL_PLACES : 56 }); + T('536833.51', '-235457808072736', '-2.27995628768515971005273362321288732621679476197e-9'); + BigNumber.config({ DECIMAL_PLACES : 46 }); + T('-2.3', '0.09407820945226943370888360925', '-24.4477442054943092371310781031607983444036170357'); + BigNumber.config({ DECIMAL_PLACES : 96 }); + T('-62317227.2341800257128681155841', '10958052412530104671312.48329509', '-5.686888955095954081346146355051544269878892254825073471383095423168233097501145949e-15'); + BigNumber.config({ DECIMAL_PLACES : 74 }); + T('-556640152383073368164.53313', '0.000036604270357539413472661607', '-1.52069730374620542263449302129499854522590056374565936140432611122454001940873820956241744673058327e+25'); + BigNumber.config({ DECIMAL_PLACES : 77 }); + T('-0.0157407207825538370645121', '12113643566876.76704861240', '-1.29942083037632508281427631131689432652032967665067885586284056e-15'); + BigNumber.config({ DECIMAL_PLACES : 73 }); + T('511525.2279', '-66.8090889', '-7656.5215350511987000020292149201873040361129666595408398092972646420867445777'); + BigNumber.config({ DECIMAL_PLACES : 85 }); + T('42.6846067', '-2.6', '-16.4171564230769230769230769230769230769230769230769230769230769230769230769230769230769'); + BigNumber.config({ DECIMAL_PLACES : 27 }); + T('8.6', '-272458852453044.97821', '-3.156439925725e-14'); + BigNumber.config({ DECIMAL_PLACES : 54 }); + T('208981138996906208725066.8939', '-18118433119346450.488842597', '-11534172.829424245585058743171248845553244466959846113220726474'); + BigNumber.config({ DECIMAL_PLACES : 9 }); + T('-0.0227615913414513748477922836804', '4665626429468076679413', '0'); + BigNumber.config({ DECIMAL_PLACES : 79 }); + T('-38044814.7', '2.379', '-15991935.5611601513240857503152585119798234552332912988650693568726355611601513240857503'); + BigNumber.config({ DECIMAL_PLACES : 75 }); + T('-397.86', '0.002298920179844344917742', '-173063.859932247960585408862090972883740283911074216314411808372382313692635340707'); + BigNumber.config({ DECIMAL_PLACES : 34 }); + T('51685561963424.5451381577385', '-16.83', '-3071037549817.2635257372393642305407011289364231'); + BigNumber.config({ DECIMAL_PLACES : 59 }); + T('-0.000010668555882111627116088370650', '0.00008416476499059', '-0.12675798338300379903303284217452325857337407005384557301629'); + BigNumber.config({ DECIMAL_PLACES : 24 }); + T('1123285937.04813', '-0.003447230110409', '-325851742144.030134809623043952486298'); + BigNumber.config({ DECIMAL_PLACES : 98 }); + T('-79.82495610066', '72101302094', '-1.10712225413891288829905163848343745557544687855855908698424677301223774484474152747746908e-9'); + BigNumber.config({ DECIMAL_PLACES : 70 }); + T('-0.000214517', '27679709518.14784249281694', '-7.7499729489341176647519227192100772644516641115525250883e-15'); + BigNumber.config({ DECIMAL_PLACES : 92 }); + T('-0.00001152511440495596', '0.0001319', '-0.08737766796782380591357088703563305534495830174374526156178923426838514025777103866565579985'); + BigNumber.config({ DECIMAL_PLACES : 24 }); + T('2169.2587337822315790258986', '-967685.439747003687897785981', '-0.002241698226181198885348'); + BigNumber.config({ DECIMAL_PLACES : 92 }); + T('186.799820', '-0.000014402200396', '-12970227.802959949870704465373417374576573000491389635292504230198742195032570771625305469746221687'); + BigNumber.config({ DECIMAL_PLACES : 9 }); + T('1.2892420009404443435665766393', '-0.3549225038004799177988', '-3.632460571'); + BigNumber.config({ DECIMAL_PLACES : 98 }); + T('494914737356784.284014520479', '-159011.43', '-3112447560.25893411570803733417151207306292384138674810986857988762191497806163997141589129787714002697793486'); + BigNumber.config({ DECIMAL_PLACES : 57 }); + T('-1.4', '0.00026216587619', '-5340.130532416717722793273189639974708105813151136021612836279'); + BigNumber.config({ DECIMAL_PLACES : 75 }); + T('358220529470.25669', '-0.0001091248704941257826247', '-3282666250582535.950193708009260499191050428762268451195035619392124715369404416631197948429'); + BigNumber.config({ DECIMAL_PLACES : 77 }); + T('-189.4', '0.0091973594204', '-20592.86707659869327683189776759504315347958672453491714366274414255030846048852972'); + BigNumber.config({ DECIMAL_PLACES : 57 }); + T('-48672140160157', '73.93144', '-658341568352.476294253162118849571981825323570053552318201836728731376'); + BigNumber.config({ DECIMAL_PLACES : 46 }); + T('8.32405', '-94.009538', '-0.0885447389391489191235042554937351144093485493'); + BigNumber.config({ DECIMAL_PLACES : 28 }); + T('485413125626845550010577', '-2.308405649336', '-2.102806869176013003277237098330653207893315340846251e+23'); + BigNumber.config({ DECIMAL_PLACES : 2 }); + T('0.000030303062182398585532', '5615.142553715980101902489', '0'); + BigNumber.config({ DECIMAL_PLACES : 23 }); + T('-857454.7301', '0.00023612289361770881', '-3631391759.4464562046024198049188'); + BigNumber.config({ DECIMAL_PLACES : 2 }); + T('195751.967', '-0.556542205447711769391', '-351728.88'); + BigNumber.config({ DECIMAL_PLACES : 24 }); + T('0.0000489069392369', '-12046171705155914.063', '-4.06e-21'); + BigNumber.config({ DECIMAL_PLACES : 95 }); + T('0.2006220821824234006', '-0.10', '-2.006220821824234006'); + BigNumber.config({ DECIMAL_PLACES : 82 }); + T('2725870.084133', '-1.4342768250', '-1900518.8096328614945026389867241980989269627221369905352824758916396770198110117271120239'); + BigNumber.config({ DECIMAL_PLACES : 31 }); + T('8210.08944865', '-82149482779765878059', '-9.99408538050128e-17'); + BigNumber.config({ DECIMAL_PLACES : 17 }); + T('-0.01103011313368660', '1904.73990484135024047844', '-0.00000579087627956'); + BigNumber.config({ DECIMAL_PLACES : 80 }); + T('-0.01018899241', '519599.967788720311293853', '-1.960930146582119710493071968453528963385076138400602109515536753485239657e-8'); + BigNumber.config({ DECIMAL_PLACES : 5 }); + T('-0.0412806625501653280343817407', '-6605974526412685975.82396189', '0'); + BigNumber.config({ DECIMAL_PLACES : 23 }); + T('17688345680490875581110', '-0.000053541', '-3.3037010292095544687454474141312265366728301675352e+26'); + BigNumber.config({ DECIMAL_PLACES : 69 }); + T('3642.900398786', '-17360896174256765.61091', '-2.09833660786923955709071436508473787176746608118033281259e-13'); + BigNumber.config({ DECIMAL_PLACES : 24 }); + T('-22932124070.2182506600', '1945397643327886193100751', '-1.1787885191e-14'); + BigNumber.config({ DECIMAL_PLACES : 56 }); + T('8307.080533', '-554720398.058517268977552335525', '-0.00001497525701610072910493703505165604011477203373720175'); + BigNumber.config({ DECIMAL_PLACES : 33 }); + T('32.0164', '-15.61', '-2.0510185778347213324791800128123'); + BigNumber.config({ DECIMAL_PLACES : 92 }); + T('-2594.3661', '41737', '-0.06215986055538251431583487073819392864844143086470038574885593118815439538059755133334930637'); + BigNumber.config({ DECIMAL_PLACES : 89 }); + T('2349542666.701711', '-0.0000363407350993121243', '-64653140897697.03983099125531067397124393085200528039966849015826920469849170827505958383252138462577507'); + BigNumber.config({ DECIMAL_PLACES : 63 }); + T('-22.7688843435139888868', '28472491.8500712528', '-7.99680072380352949070690389446558254500609937798743067872e-7'); + BigNumber.config({ DECIMAL_PLACES : 22 }); + T('84897.39612374648963', '-64682.54868086172022', '-1.3125239783395539073033'); + BigNumber.config({ DECIMAL_PLACES : 56 }); + T('-18.25404855094631466', '0.00585719349482019802578300255', '-3116.51793082971569759381063168299494472507903312005730635833'); + BigNumber.config({ DECIMAL_PLACES : 91 }); + T('0.047433711910272230', '-0.000939', '-50.5151351547095101171458998935037273695420660276890308839190628328008519701810436634717784878'); + BigNumber.config({ DECIMAL_PLACES : 65 }); + T('72098642345.315284481354999', '-0.02286207682868543757654306', '-3153634855029.96336309143018862141102770585463125873835803889089856907868038067'); + BigNumber.config({ DECIMAL_PLACES : 19 }); + T('21950225.634589', '-0.035893469', '-611538150.1461728316090038553'); + BigNumber.config({ DECIMAL_PLACES : 76 }); + T('-0.00045544597', '997635453811223890.29820722842', '-4.565254455022416410451577490449652559439570114735212605e-22'); + BigNumber.config({ DECIMAL_PLACES : 86 }); + T('5090.164399792547140', '-0.000058909143485014942373', '-86407034.60723990212092751348007526730020692283178466934693483189785230728745656609720439573572'); + BigNumber.config({ DECIMAL_PLACES : 89 }); + T('0.0025806746195240439454625754', '-32525.2', '-7.934385090711337502805748773258888492614957017943010342749621831687430054234870193e-8'); + BigNumber.config({ DECIMAL_PLACES : 27 }); + T('44.296730067753045949640234748', '-0.00388', '-11416.683007152846894237173904124'); + BigNumber.config({ DECIMAL_PLACES : 84 }); + T('-201.25', '130131483168273.77839327424547', '-1.546512766167142301018891364819322533432990971012615965157257548118180769e-12'); + BigNumber.config({ DECIMAL_PLACES : 98 }); + T('-128.809982', '6405732799.895341', '-2.010854745644472408656259411541105094760193637504284772213346291930109324817156487049543931e-8'); + BigNumber.config({ DECIMAL_PLACES : 61 }); + T('0.000052269102258', '-1664673323.2698522476451193', '-3.13990147660502308004722290350897703879064922995e-14'); + BigNumber.config({ DECIMAL_PLACES : 21 }); + T('16766992795.1', '-493622972826.8', '-0.033967205170945558759'); + BigNumber.config({ DECIMAL_PLACES : 4 }); + T('24.6995489', '-2935.512397900845181145712', '-0.0084'); + BigNumber.config({ DECIMAL_PLACES : 97 }); + T('12416633304.1422', '-1713218269217.34511', '-0.0072475489709869423950617796012900409105793045430019523626605343732315676491255089889707304101753'); + BigNumber.config({ DECIMAL_PLACES : 82 }); + T('0.00058429560901413259189', '-223.4996587257249708151', '-0.0000026143020188284508944253752010197755692093993239021273378437427671345515998827'); + BigNumber.config({ DECIMAL_PLACES : 85 }); + T('-73.65632625', '10187412457998218929168.33825', '-7.2301309634490973876075189782676617424067705035020624821980420091e-21'); + BigNumber.config({ DECIMAL_PLACES : 58 }); + T('-40288474081489912.5287798740', '0.003118', '-12921255317989067520.4553797305965362411802437459910198845413726747915330339962'); + BigNumber.config({ DECIMAL_PLACES : 84 }); + T('-0.00045913242914239307922', '71011.272331227915', '-6.465627414768697446502917699164923127824062512717097745876946532967035899862e-9'); + BigNumber.config({ DECIMAL_PLACES : 72 }); + T('-0.0003492615907872644', '0.0342800946423312172564154', '-0.010188466351431078529400939265177739224038984282194427364946440046029426'); + BigNumber.config({ DECIMAL_PLACES : 29 }); + T('-8828047.90240', '13.188', '-669400.05326053988474370639975735517'); + BigNumber.config({ DECIMAL_PLACES : 17 }); + T('-10.8', '455674708458725423', '-2e-17'); + BigNumber.config({ DECIMAL_PLACES : 8 }); + T('-0.000409604124009511702', '-233228', '0'); + BigNumber.config({ DECIMAL_PLACES : 8 }); + T('1932.63', '-32667209106279586542404373', '0'); + BigNumber.config({ DECIMAL_PLACES : 42 }); + T('2130052265525219972.646', '-12513193', '-170224519475.182710971212543433158906763445588987558971'); + BigNumber.config({ DECIMAL_PLACES : 54 }); + T('-0.7132711510741836008474325281', '88.40865828670340', '-0.008067887974966124783904418815296776144146903241469775'); + BigNumber.config({ DECIMAL_PLACES : 70 }); + T('-0.00001126277262603942000625', '161562264702', '-6.97116535647324130330820695281689491007961966368648434e-17'); + BigNumber.config({ DECIMAL_PLACES : 95 }); + T('-586.75296754911055535831', '35.195', '-16.67148650516012374934820286972581332575649950277027986929961642278732774541838329308140360846711'); + BigNumber.config({ DECIMAL_PLACES : 80 }); + T('0.776086383646642515', '-6.392', '-0.12141526652794782775344180225281602002503128911138923654568210262828535669586984'); + BigNumber.config({ DECIMAL_PLACES : 97 }); + T('42.29', '-0.05034030', '-840.0823991911053370758616853693760267618587890815112345377361676430215950242648534077071451699731627'); + BigNumber.config({ DECIMAL_PLACES : 92 }); + T('227256304817.9320085444', '-0.1003890', '-2263757033319.70642744125352379244737969299425235832611142655071770811543097351303429658627937323810377631'); + BigNumber.config({ DECIMAL_PLACES : 79 }); + T('3783.18', '-11739586517.66048634354', '-3.222583686664569046852339469987709053243224756983323597748964868092567456e-7'); + BigNumber.config({ DECIMAL_PLACES : 72 }); + T('5.78', '-0.0000502832', '-114948.929264645050434339898813122474305533458491106373500493206478505743468992'); + BigNumber.config({ DECIMAL_PLACES : 54 }); + T('-5.00156433', '92565353837836618405405052', '-5.4032790051903652329871560144e-26'); + BigNumber.config({ DECIMAL_PLACES : 35 }); + T('863593873627265.70537', '-43735915.713064287918', '-19745645.1876530142368056074182029418922563'); + BigNumber.config({ DECIMAL_PLACES : 98 }); + T('-0.15354410563827', '3288929397499.5962685', '-4.668513278363520974873296477282762059746136002437712528338780851356245937322918569646e-14'); + BigNumber.config({ DECIMAL_PLACES : 64 }); + T('229890114416782030.08056591', '-37.807530838638400245497', '-6080537642036114.7456835225140765268376383310067514380539508252872141717409309944'); + BigNumber.config({ DECIMAL_PLACES : 34 }); + T('9941870929.06806', '-3358772.97', '-2959.9711019075099916622230052065710175'); + BigNumber.config({ DECIMAL_PLACES : 62 }); + T('-46.7', '4.605293411075756683738631435', '-10.14050481293683395755655889723066595780577435812636700075876312'); + BigNumber.config({ DECIMAL_PLACES : 33 }); + T('2266752438236610.699', '-0.0979611376308566842921676', '-23139302922127443.056470612908108268132877406361862'); + BigNumber.config({ DECIMAL_PLACES : 73 }); + T('133513037222052.14291163693983', '-0.000397277193', '-336070228985060672.5154669017961974978009875336588979574269192946094944846229821201943500442'); + BigNumber.config({ DECIMAL_PLACES : 67 }); + T('-356.8', '0.0683875261872944786039', '-5217.3257301751740172634542361525223377363378689532453249412045026797997'); + BigNumber.config({ DECIMAL_PLACES : 27 }); + T('-58300936033', '0.04918400305331317406', '-1185363785249.535183066963261429880422864'); + BigNumber.config({ DECIMAL_PLACES : 44 }); + T('298.01', '-10198157.91', '-0.00002922194406381769783754995807865461851826'); + BigNumber.config({ DECIMAL_PLACES : 68 }); + T('1.2', '-5.3', '-0.22641509433962264150943396226415094339622641509433962264150943396226'); + BigNumber.config({ DECIMAL_PLACES : 23 }); + T('-0.002821', '-106305045395449711716048782', '0'); + BigNumber.config({ DECIMAL_PLACES : 93 }); + T('58495053224579838612300.5', '-1112637769', '-52573312585957.918000804896278871511146769277072779290130317336009829448814980861934051422624320422471655283'); + BigNumber.config({ DECIMAL_PLACES : 63 }); + T('-0.1229626', '2399515556875488807430756821', '-5.1244760488285738687261901227172107e-29'); + BigNumber.config({ DECIMAL_PLACES : 61 }); + T('935083164002341.847', '-957.2', '-976894237361.4102037191809444212285833681571249477643125783535311324697033'); + BigNumber.config({ DECIMAL_PLACES : 6 }); + T('1.524', '268049304.4019691396', '0'); + BigNumber.config({ DECIMAL_PLACES : 61 }); + T('7696891453746597242', '-22509568.6', '-341938647982.2006558579714406432471566780715646411810842078954813909672174'); + BigNumber.config({ DECIMAL_PLACES : 62 }); + T('24.4', '-0.000026530682908636828510866', '-919689.85811732710477113134993548660065552262575537647019098108562321'); + BigNumber.config({ DECIMAL_PLACES : 50 }); + T('-2052451793', '117100687.57193624502', '-17.52723946850573534907177080966239301943331726617324'); + BigNumber.config({ DECIMAL_PLACES : 51 }); + T('-17.9', '2217096756690125948619632', '-8.073621480878746239396291441e-24'); + BigNumber.config({ DECIMAL_PLACES : 2 }); + T('-34240510142429402130267', '0.055604689530495437', '-6.1578457557344659572813945e+23'); + BigNumber.config({ DECIMAL_PLACES : 92 }); + T('313323156491867399786815977', '-0.00430783529772936694706', '-7.273331843884980391058095975851323643350714805610473847548110502947546366230915577073503055648810462653546019573783392309e+28'); + BigNumber.config({ DECIMAL_PLACES : 81 }); + T('311358691277787.6', '-1.43', '-217733350543907.412587412587412587412587412587412587412587412587412587412587412587412587412587413'); + BigNumber.config({ DECIMAL_PLACES : 40 }); + T('1151.8', '-192975068238228458627.3', '-5.9686466781195719116452e-18'); + BigNumber.config({ DECIMAL_PLACES : 4 }); + T('-8', '74.597', '-0.1072'); + BigNumber.config({ DECIMAL_PLACES : 70 }); + T('1267199204.4131652693519', '-0.014679847', '-86322371371.6611126363851067385102855636029449080770392225477554364156520159917198'); + BigNumber.config({ DECIMAL_PLACES : 46 }); + T('-4.481', '1915687744390066835523146', '-2.3391077241696816180526e-24'); + BigNumber.config({ DECIMAL_PLACES : 65 }); + T('2405959.7', '-209509722348.24156491788952530', '-0.00001148376157933557325071647713617424522679150317564409169946439'); + BigNumber.config({ DECIMAL_PLACES : 77 }); + T('1151.591068010863010128504511', '-54.6604', '-21.06810539276812848293288214136742504628579373733086475766734235387959107507446'); + BigNumber.config({ DECIMAL_PLACES : 27 }); + T('5916.3017', '-231', '-25.611695670995670995670995671'); + BigNumber.config({ DECIMAL_PLACES : 84 }); + T('-0.0002384700118', '183118409490327229.213476559749', '-1.30227218805434513331503149314365575886990740421695023876621902e-21'); + BigNumber.config({ DECIMAL_PLACES : 36 }); + T('0.0002014219970979045132', '-4.93', '-0.000040856388863672315050709939148073'); + BigNumber.config({ DECIMAL_PLACES : 6 }); + T('-767014140860703097372522.5151', '16434171188416.6591634', '-46671908918.736329'); + BigNumber.config({ DECIMAL_PLACES : 19 }); + T('-203.2', '4.63', '-43.8876889848812095032'); + BigNumber.config({ DECIMAL_PLACES : 21 }); + T('-31265.76', '10191402.68664719863169430224', '-0.003067856404198852548'); + BigNumber.config({ DECIMAL_PLACES : 5 }); + T('0.268267682840', '885918105753', '0'); + BigNumber.config({ DECIMAL_PLACES : 63 }); + T('-12588995.82179458699277817', '0.701527163626506085215990966', '-17945129.532428175045194547436271083018244231294058685535385380400228937'); + BigNumber.config({ DECIMAL_PLACES : 45 }); + T('-992018780823565.13392', '3', '-330672926941188.377973333333333333333333333333333333333333333'); + BigNumber.config({ DECIMAL_PLACES : 3 }); + T('-26173330.992', '8.48', '-3086477.711'); + BigNumber.config({ DECIMAL_PLACES : 8 }); + T('-170493257676246735617262.04499', '10.80358710', '-1.57811712071305220112736486375e+22'); + BigNumber.config({ DECIMAL_PLACES : 100 }); + T('-6906959.60', '9407767.3262708374245244592', '-0.7341762780115292987122079744142850443703895983541102275303996090477391895430144134326597802504634055'); + BigNumber.config({ DECIMAL_PLACES : 95 }); + T('-5.08', '61381677.31966371', '-8.276085343097352243225246041319390553129239542408643843258804626586400089724278985965211e-8'); + BigNumber.config({ DECIMAL_PLACES : 62 }); + T('-1.3', '2822.2', '-0.00046063354829565587130607327616752887818014315073347034228616'); + BigNumber.config({ DECIMAL_PLACES : 99 }); + T('22327.549256913788111', '-525.825053590610', '-42.461935018975493108432937323791650694124331089152628898105328287752793817472067926483567457443949944'); + BigNumber.config({ DECIMAL_PLACES : 37 }); + T('-68.4', '40178233.28429', '-0.0000017024143275793296039791592349212'); + BigNumber.config({ DECIMAL_PLACES : 33 }); + T('13.5571783196468071', '-3906674804125031980.70004110534', '-3.470260259526048e-18'); + BigNumber.config({ DECIMAL_PLACES : 16 }); + T('-1.6947927370', '0.00093478551693440552256955205', '-1813.0284501604282491'); + BigNumber.config({ DECIMAL_PLACES : 54 }); + T('0.04167449018510273942113', '-66629122872660245.6882676', '-6.25469590298372730782974685843316163e-19'); + BigNumber.config({ DECIMAL_PLACES : 84 }); + T('164.82798000560455', '-990819314730939', '-1.66355235061565443847751252090922147232097109306367609847291456437869387e-13'); + BigNumber.config({ DECIMAL_PLACES : 36 }); + T('3214359.501680985909534274', '-84607147686054399607.60367516', '-3.7991583330622092924397e-14'); + BigNumber.config({ DECIMAL_PLACES : 17 }); + T('-85071812507959907092.31582411', '107966170', '-787948785327.4771819016625681'); + BigNumber.config({ DECIMAL_PLACES : 32 }); + T('-1.570465', '2.9971073668330609537184', '-0.52399357373021164358447515821695'); + BigNumber.config({ DECIMAL_PLACES : 29 }); + T('-0.0073642667970623825219304', '0.01145344098479565973859084', '-0.64297417752781724691846166835'); + BigNumber.config({ DECIMAL_PLACES : 88 }); + T('1.7', '-16824578707.379760733', '-1.010426489463495110844841573599091411397272950299365084137154944465467224715526e-10'); + BigNumber.config({ DECIMAL_PLACES : 89 }); + T('798812270.702847936644301526', '-79.51', '-10046689.35609166062940889857879512011067790215067287133693874984278707080870330776003018488240473'); + BigNumber.config({ DECIMAL_PLACES : 36 }); + T('-1.299454', '8004.841479908', '-0.00016233350819770820530404671484987'); + BigNumber.config({ DECIMAL_PLACES : 90 }); + T('-0.0190239', '522.83', '-0.00003638639710804659258267505690186102557236577855134556165484000535546927299504619092248'); + BigNumber.config({ DECIMAL_PLACES : 19 }); + T('-62442043252142283090506208', '14.233061', '-4.3871127406917094706828143292577752600090732e+24'); + BigNumber.config({ DECIMAL_PLACES : 84 }); + T('0.0004399996445417911980250678961', '-134.0023017', '-0.000003283523036244915470918869269691059343945582391440370311191453213672672310523454'); + BigNumber.config({ DECIMAL_PLACES : 20 }); + T('0.0323', '1146967189758157470962250323742', '0'); + BigNumber.config({ DECIMAL_PLACES : 0 }); + T('-5.210261', '-76013934512.0464022', '0'); + BigNumber.config({ DECIMAL_PLACES : 77 }); + T('9.34197271543', '-4428', '-0.00210974993573396567299006323396567299006323396567299006323396567299006323397'); + BigNumber.config({ DECIMAL_PLACES : 35 }); + T('-5', '54679951', '-9.144119386646853432622863909e-8'); + BigNumber.config({ DECIMAL_PLACES : 98 }); + T('5809538458876614.65173', '-0.000065820880934770434742', '-88262848755153579674.22639768635508218962245506631750284731877517298470762606225560442252609045684756213856434233196746'); + BigNumber.config({ DECIMAL_PLACES : 16 }); + T('-1', '340.75965832813459886631469', '-0.0029346196815265'); + BigNumber.config({ DECIMAL_PLACES : 3 }); + T('-277371521.153', '-44777557615232.883346568', '0'); + BigNumber.config({ DECIMAL_PLACES : 90 }); + T('321329699077890420.0', '-0.054959132', '-5846702583983502869.004554147616450711048347706801482963741130409410396073940905762485477390727349915206084405'); + BigNumber.config({ DECIMAL_PLACES : 50 }); + T('-50991', '0.6868044740532371346008', '-74243.83784088085426709823312616743717983754249425435513'); + BigNumber.config({ DECIMAL_PLACES : 83 }); + T('-0.000120441290310', '216649.584839239456162501679', '-5.559267071726496950311021531757707301526387557448470701670857855917810195e-10'); + BigNumber.config({ DECIMAL_PLACES : 39 }); + T('6843756132777408.964571060', '-8337642.50506151526', '-820826286.162159650207137340791514170662502085774'); + BigNumber.config({ DECIMAL_PLACES : 65 }); + T('419163526950485.7943704', '-0.00004917483172934', '-8523944306664363599.90363875467675955335875353294710251836676874912657819834747285288'); + BigNumber.config({ DECIMAL_PLACES : 5 }); + T('-0.236843005402557395874861', '1.5', '-0.1579'); + BigNumber.config({ DECIMAL_PLACES : 88 }); + T('532342857.5297788244197492', '-5761939038.69009760542392', '-0.0923895330990520328482967530989797578264603259772912967910090079486341090208488768974404'); + BigNumber.config({ DECIMAL_PLACES : 79 }); + T('1307.7244266043028', '-0.28818143037500155679559881990', '-4537.8511200482333836543898407548020438761113521971507335877340969854020619281359552'); + BigNumber.config({ DECIMAL_PLACES : 9 }); + T('0.0000477960642104884', '-181041361906850269152236.4', '0'); + BigNumber.config({ DECIMAL_PLACES : 64 }); + T('-323.955112704', '0.0078813362', '-41104.0849524982832225835004983038282264877876926503909324411259095888'); + BigNumber.config({ DECIMAL_PLACES : 44 }); + T('-262292.1', '1072575.00138', '-0.24454429728692993006926014171915344328141925'); + BigNumber.config({ DECIMAL_PLACES : 2 }); + T('2956132595.01', '-50401.6690247370435220430826', '-58651.48'); + BigNumber.config({ DECIMAL_PLACES : 7 }); + T('5676617544463.3291058011', '-0.0001294173039', '-43862894476998366.103353'); + BigNumber.config({ DECIMAL_PLACES : 33 }); + T('-14034.485361', '3.521143', '-3985.775460127577891610763891156933984'); + BigNumber.config({ DECIMAL_PLACES : 19 }); + T('3.1953583224280239152771324254', '-0.3351', '-9.5355366231812113258'); + BigNumber.config({ DECIMAL_PLACES : 60 }); + T('0.02319087713874832466428452737', '-195.3568569238968712292022', '-0.000118710330949798973613611638758921415235452210491777756996'); + BigNumber.config({ DECIMAL_PLACES : 56 }); + T('0.0026885961270378768563633126516', '-697113.7', '-3.85675410917598787165323626777095328925539693166e-9'); + BigNumber.config({ DECIMAL_PLACES : 35 }); + T('15229113.27979008967', '-7.220290962276', '-2109210.46802101817857824425202331681137611'); + BigNumber.config({ DECIMAL_PLACES : 58 }); + T('-5152440', '64766249729636196474.030479846', '-7.95543978771139227186201962908190820450102455e-14'); + BigNumber.config({ DECIMAL_PLACES : 86 }); + T('-938421.8866', '21450245005076368.89923', '-4.374877239760735098462950720592702096669156439208982521048129333147411481372e-11'); + BigNumber.config({ DECIMAL_PLACES : 77 }); + T('0.0009073724874207837136702749', '-3766012560572162617.7', '-2.4093719094843604552288933058486328450937613206964330785e-22'); + BigNumber.config({ DECIMAL_PLACES : 34 }); + T('15538845682.3562388159948296', '-0.0687444989815613827651', '-226037659922.7824863191382303245520144874104122'); + BigNumber.config({ DECIMAL_PLACES : 88 }); + T('-29138031.30817025752757358', '88266411236982977530910.82142', '-3.301146030502896052982289441461966780420841536448081827698849216028729898e-16'); + BigNumber.config({ DECIMAL_PLACES : 64 }); + T('-61372427699455', '1415.732442905657136447632', '-43350301115.8618984499232990588091165800884950710863885496745660589008360746'); + BigNumber.config({ DECIMAL_PLACES : 22 }); + T('2', '-569050683079', '-3.514625427e-12'); + BigNumber.config({ DECIMAL_PLACES : 18 }); + T('363526582301.4518084891186', '-3268269711487.576009648501', '-0.111229064426261846'); + BigNumber.config({ DECIMAL_PLACES : 63 }); + T('0.4791194988641835627', '-0.810931185385530719294', '-0.590826333354539647435050491743172784471281849259579128368022963'); + BigNumber.config({ DECIMAL_PLACES : 59 }); + T('983952965426.54981648062537958', '-63475.224', '-15501370.50995755157131269642435606056309466509326536602690838869667'); + BigNumber.config({ DECIMAL_PLACES : 12 }); + T('-37.81', '56942576133869218533854637.10', '0'); + BigNumber.config({ DECIMAL_PLACES : 1 }); + T('-48.7', '-14582137.8', '0'); + BigNumber.config({ DECIMAL_PLACES : 38 }); + T('-0.000146667280629921690732909814', '3021878494996', '-4.853513497408698137375e-17'); + BigNumber.config({ DECIMAL_PLACES : 41 }); + T('3039292077236123159.32', '-27593984685063.73481', '-110143.28347008369726777856530040110856206001197'); + BigNumber.config({ DECIMAL_PLACES : 14 }); + T('182', '-134648744.10665', '-0.00000135166504'); + BigNumber.config({ DECIMAL_PLACES : 92 }); + T('-635676476389495916.7944722', '172.3491', '-3688307489795397.34640025506370500339137251079349993704637854215658799494746418751243841714288035156551441232'); + BigNumber.config({ DECIMAL_PLACES : 68 }); + T('-1.5', '31879693713', '-4.705189496184919008478304573226876409670479571586466201505e-11'); + BigNumber.config({ DECIMAL_PLACES : 76 }); + T('0.0000279', '-2192', '-1.27281021897810218978102189781021897810218978102189781021897810218978e-8'); + BigNumber.config({ DECIMAL_PLACES : 12 }); + T('-2971343589643858485678.2686401', '230688638031.2', '-12880320483.065977816413'); + BigNumber.config({ DECIMAL_PLACES : 78 }); + T('1768622670603951253243859', '-126201.388', '-14014288579805090996.652580397927160674334263264996736802926446419115453785658839188044429432107355'); + BigNumber.config({ DECIMAL_PLACES : 48 }); + T('-38915187693075336.56', '719.89522079786089', '-54056738493062.336315315478163590351331437145382472291184377176'); + BigNumber.config({ DECIMAL_PLACES : 1 }); + T('-92775359551607483477579131291', '71883182752.8601208379452', '-1290640675588562405.3'); + BigNumber.config({ DECIMAL_PLACES : 16 }); + T('-0.02344', '911.263859460822351518', '-0.0000257225168722'); + BigNumber.config({ DECIMAL_PLACES : 20 }); + T('0.0038', '-245.9', '-0.00001545343635624237'); + BigNumber.config({ DECIMAL_PLACES : 13 }); + T('-16946311980', '0.001764987656345615401023347913', '-9601377051603.3661257139879'); + BigNumber.config({ DECIMAL_PLACES : 3 }); + T('-1123.03073661398124', '41522.0652587', '-0.027'); + BigNumber.config({ DECIMAL_PLACES : 16 }); + T('-14940430.01347909815', '1.22', '-12246254.1094090968442623'); + BigNumber.config({ DECIMAL_PLACES : 16 }); + T('1', '-0.0000942', '-10615.7112526539278132'); + BigNumber.config({ DECIMAL_PLACES : 41 }); + T('-1.0692667768653', '62962.669144861425', '-0.00001698255158791288496424646020355623304'); + BigNumber.config({ DECIMAL_PLACES : 24 }); + T('-32.6891915228641', '0.00645059910152821', '-5067.621008274985016344309035'); + BigNumber.config({ DECIMAL_PLACES : 72 }); + T('-0.0013343635561', '6168816912.26', '-2.16307855311456187633247331366957530777271193228421996285794e-13'); + BigNumber.config({ DECIMAL_PLACES : 31 }); + T('6055431494598202868.2', '-1372350306661543044580.7', '-0.0044124531944973932536452240547'); + BigNumber.config({ DECIMAL_PLACES : 3 }); + T('-1.7', '0.0000305385095034731250877616028890', '-55667.419'); + BigNumber.config({ DECIMAL_PLACES : 57 }); + T('-0.000246', '991486783059686310384', '-2.48112233267350671516856213469539e-25'); + BigNumber.config({ DECIMAL_PLACES : 43 }); + T('-4035659139.056', '18400905983022904453.709', '-2.193185021856745079114923818102201e-10'); + BigNumber.config({ DECIMAL_PLACES : 74 }); + T('1', '-0.0079', '-126.58227848101265822784810126582278481012658227848101265822784810126582278481'); + BigNumber.config({ DECIMAL_PLACES : 68 }); + T('1187259254676723679659', '-1', '-1.187259254676723679659e+21'); + BigNumber.config({ DECIMAL_PLACES : 66 }); + T('304966065.08925', '-49232723.397167191', '-6.194377317481435280794506427738104875162245303157523171976148694209'); + BigNumber.config({ DECIMAL_PLACES : 94 }); + T('887049196', '-314364426.212411921301306', '-2.8217225679365911713093571314453907929521830667507799224920733788905780674766769010524330814454'); + BigNumber.config({ DECIMAL_PLACES : 83 }); + T('-0.0000892413612', '58958', '-1.51364295261033277926659656026323823738932799620068523355609077648495539197e-9'); + BigNumber.config({ DECIMAL_PLACES : 35 }); + T('-99670.4851312832433', '127786924586760420866637090', '-7.7997405019018e-22'); + BigNumber.config({ DECIMAL_PLACES : 66 }); + T('-0.00022589', '0.00860040', '-0.026265057439188874936049486070415329519557229896283893772382679875'); + BigNumber.config({ DECIMAL_PLACES : 83 }); + T('47889.1', '-0.56208168562317', '-85199.5381185675954388235075661437977471302406124847280115841028426698063138873788413419'); + BigNumber.config({ DECIMAL_PLACES : 46 }); + T('0.036061200587496281920624', '-1.83528043527', '-0.0196488775745005340153963205170020751953417079'); + BigNumber.config({ DECIMAL_PLACES : 61 }); + T('94417.0748138538586463487384', '-4', '-23604.2687034634646615871846'); + BigNumber.config({ DECIMAL_PLACES : 16 }); + T('-290', '0.0000148041', '-19589167.8656588377544059'); + BigNumber.config({ DECIMAL_PLACES : 31 }); + T('-36613111.97691', '2825805128774708465819.62849170', '-1.2956700943063875e-14'); + BigNumber.config({ DECIMAL_PLACES : 17 }); + T('61907365438.484557677', '-0.0000158111294483955947393', '-3915429675061353.29538835233699148'); + BigNumber.config({ DECIMAL_PLACES : 22 }); + T('192467.0837', '-0.5266083578447951', '-365484.2936555233201376118898'); + BigNumber.config({ DECIMAL_PLACES : 46 }); + T('-0.03838066877467', '7803864928460491941572351309', '-4.9181615938400858e-30'); + BigNumber.config({ DECIMAL_PLACES : 66 }); + T('-15293.66207', '97816906864055.513989', '-1.56349884292036597088070243434902399271543658673655501057e-10'); + BigNumber.config({ DECIMAL_PLACES : 6 }); + T('-181493926373969274.99', '4200.352646286398907588', '-43209211620465.022256'); + BigNumber.config({ DECIMAL_PLACES : 7 }); + T('-90.151120033248945250', '504332994175285143641.325202', '0'); + BigNumber.config({ DECIMAL_PLACES : 31 }); + T('-10934976.5157072837', '0.000807897039077844593', '-13535111513.9483119865563461117840534199074'); + BigNumber.config({ DECIMAL_PLACES : 86 }); + T('-7.078782346245', '562452681113034087.09605119', '-1.258556067727660567103258087527221857023473940131851320747440790411871e-17'); + BigNumber.config({ DECIMAL_PLACES : 39 }); + T('-41611910.9', '0.000056591459260165894', '-735303726816.780753985870216515746868307585972099723'); + BigNumber.config({ DECIMAL_PLACES : 41 }); + T('17.69243871905722', '-3320064.89', '-0.00000532894365177820967228143543905251804'); + BigNumber.config({ DECIMAL_PLACES : 79 }); + T('620024868943.9286103', '-27603607791950584.7404191', '-0.0000224617330320398345510739288525017312277972099335278166887587999495426915462'); + BigNumber.config({ DECIMAL_PLACES : 36 }); + T('-4.955174', '60392501515.881', '-8.2049490841126559991095403e-11'); + BigNumber.config({ DECIMAL_PLACES : 29 }); + T('1', '-30985.719547', '-0.00003227293135740069634988361'); + BigNumber.config({ DECIMAL_PLACES : 53 }); + T('0.8852094231267525926', '-19584914890083.56240806066', '-4.519853305949065037457201893338562051197e-14'); + BigNumber.config({ DECIMAL_PLACES : 9 }); + T('1565548130', '-1935.3', '-808943.383454762'); + BigNumber.config({ DECIMAL_PLACES : 69 }); + T('61790270543532479714380229341', '-4063.563', '-1.5205933941108450813825263528829256492393498021317745042958605539030648718870606903350581743165e+25'); + BigNumber.config({ DECIMAL_PLACES : 0 }); + T('-0.0000435052334368463012371', '219188662526371.256', '0'); + BigNumber.config({ DECIMAL_PLACES : 91 }); + T('-0.00006521496311421916', '1.4735162', '-0.0000442580564192094800179326158748712772889772097517489118884475107908552345742788576060446'); + BigNumber.config({ DECIMAL_PLACES : 81 }); + T('95.2451', '-3', '-31.748366666666666666666666666666666666666666666666666666666666666666666666666666667'); + BigNumber.config({ DECIMAL_PLACES : 58 }); + T('11298179623224', '-53438143.35488024586439', '-211425.3773412992683362572145230163175744530909060632329620342655'); + BigNumber.config({ DECIMAL_PLACES : 83 }); + T('0.001395397', '-52.8711906969003', '-0.00002639238839918557927088552480937343181967745671767997864643878031311986864968747'); + BigNumber.config({ DECIMAL_PLACES : 73 }); + T('-3.3', '0.000197965', '-16669.6133154850604904907433132119314020155077917813754956684262369610789786073'); + BigNumber.config({ DECIMAL_PLACES : 55 }); + T('45573.038', '-1951245006.57', '-0.0000233558768102170098357070718333190030237587540949009'); + BigNumber.config({ DECIMAL_PLACES : 57 }); + T('11697035101999953412797412955.51', '-0.00002645182103613', '-4.422015061278092346231915492159911911859012754718621042083122434161972684365584014570167e+32'); + + log('\n ' + passed + ' of ' + total + ' tests passed in ' + (+new Date() - start) + ' ms \n'); + return [passed, total];; +})(this.BigNumber); +if (typeof module !== 'undefined' && module.exports) module.exports = count; \ No newline at end of file diff --git a/node_modules/mysql/node_modules/bignumber.js/test/every-test.js b/node_modules/mysql/node_modules/bignumber.js/test/every-test.js new file mode 100644 index 0000000..69993ab --- /dev/null +++ b/node_modules/mysql/node_modules/bignumber.js/test/every-test.js @@ -0,0 +1,39 @@ +var arr, + passed = 0, + total = 0, + start = +new Date(); + +console.log( '\n STARTING TESTS...\n' ); + +[ + 'abs', + 'base-in', + 'base-out', + 'ceil', + 'cmp', + 'config', + 'div', + 'floor', + 'minus', + 'mod', + 'neg', + 'others', + 'plus', + 'pow', + 'round', + 'sqrt', + 'times', + 'toExponential', + 'toFixed', + 'toFraction', + 'toPrecision', + 'toString' +] +.forEach( function (method) { + arr = require('./' + method); + passed += arr[0]; + total += arr[1]; +}); + +console.log( '\n IN TOTAL: ' + passed + ' of ' + total + ' tests passed in ' + + ( (+new Date() - start) / 1000 ) + ' secs.\n' ); \ No newline at end of file diff --git a/node_modules/mysql/node_modules/bignumber.js/test/floor.js b/node_modules/mysql/node_modules/bignumber.js/test/floor.js new file mode 100644 index 0000000..daa0763 --- /dev/null +++ b/node_modules/mysql/node_modules/bignumber.js/test/floor.js @@ -0,0 +1,216 @@ +var count = (function floor(BigNumber) { + var start = +new Date(), + log, + error, + passed = 0, + total = 0; + + if (typeof window === 'undefined') { + log = console.log; + error = console.error; + } else { + log = function (str) { document.body.innerHTML += str.replace('\n', '
      ') }; + error = function (str) { document.body.innerHTML += '
      ' + + str.replace('\n', '
      ') + '
      ' }; + } + + if (!BigNumber && typeof require === 'function') BigNumber = require('../bignumber'); + + function assert(expected, actual) { + total++; + if (expected !== actual) { + error('\n Test number: ' + total + ' failed'); + error(' Expected: ' + expected); + error(' Actual: ' + actual); + //process.exit(); + } + else { + passed++; + //log('\n Expected and actual: ' + actual); + } + } + + function T(expected, value) { + assert(String(expected), new BigNumber(String(value)).floor().toString()); + } + + log('\n Testing floor...'); + + BigNumber.config({ + DECIMAL_PLACES : 20, + ROUNDING_MODE : 4, + ERRORS : true, + RANGE : 1E9, + EXPONENTIAL_AT : 1E9 + }); + + T('-2075365', '-2075364.364286541923'); + T('60593539780450631', '60593539780450631'); + T('65937898671515', '65937898671515'); + T('-39719494751819198566799', '-39719494751819198566798.578'); + T('92627382695288166556', '92627382695288166556.8683774524284866028260448205069'); + T('-881574', '-881574'); + T('-3633239210', '-3633239209.654526163275621746013315304191073405508491056'); + T('-23970335459820625362', '-23970335459820625362'); + T('131869457416154038', '131869457416154038'); + T('-2685', '-2685'); + T('-4542227861', '-4542227860.9511298545226'); + T('2416872281', '2416872281.963955669484225137349193306323379254936827'); + T('-757684868752087594264588207656', '-757684868752087594264588207655.27838048392835556'); + T('-438798503527', '-438798503526.2317623894721299587561697'); + T('801625782231888715214665', '801625782231888715214665'); + T('-91881984778675238', '-91881984778675238'); + T('327765350218284325239839632046', '327765350218284325239839632046.91682741746683081459605386'); + T('-7469045007691432295', '-7469045007691432294.362757245'); + T('8365540212937142194319515218789', '8365540212937142194319515218789.4106658678537421977827'); + T('-14109', '-14108.495051214515'); + T('49104501', '49104501.10055989379655329194309526150310568683504206945625'); + T('131370406', '131370406.330005158136313262837556068534122953'); + T('3017', '3017'); + T('-690', '-689.6944252229740521128820354989299283'); + T('73441822178', '73441822178.572653'); + T('-2330', '-2329.42655772223486531483602927572548264457'); + T('-834103872107533086', '-834103872107533086'); + T('-1501493189970436', '-1501493189970435.74866616700317'); + T('70591', '70591.2244675522123484658978887'); + T('4446128540401735117', '4446128540401735117.435836700611264749985822486641350492901'); + T('-597273', '-597273'); + T('729117', '729117'); + T('504', '504'); + T('4803729546823170064608098091', '4803729546823170064608098091'); + T('24147026285420507467578', '24147026285420507467578'); + T('-6581532150677269472830', '-6581532150677269472829.38194951340848938896000325718062365494'); + T('-131279182164804752', '-131279182164804751.430589952021038264'); + T('2949426983040959', '2949426983040959.8911208825380208568451907'); + T('25166', '25166.125888418871654557352055849116604612621573251770362'); + T('4560569286495', '4560569286495.98300685103599898554605198'); + T('13', '13.763105480576616251068323541559825687'); + T('176037174185746614410406167887', '176037174185746614410406167887.42317518'); + T('9050999219306', '9050999219306.7846946346757664893036971777'); + T('39900924', '39900924'); + T('115911043168452445', '115911043168452445'); + T('20962819101135667464733349383', '20962819101135667464733349383.8959025798517496777183'); + T('4125789711001606948191', '4125789711001606948191.4707575965791242737346836'); + T('-6935502', '-6935501.294727166142750626019282'); + T('-2', '-1.518418076611593764852321765899'); + T('-35416', '-35416'); + T('6912783515683955988122411164548', '6912783515683955988122411164548.393'); + T('657', '657.0353902852'); + T('0', '0.0009'); + T('0', '0.00000000000000000000000017921822306362413915'); + T('1483059355427939255846407887', '1483059355427939255846407887.011361095342689876'); + T('7722', '7722'); + T('0', '0.00000005'); + T('8551283060956479352', '8551283060956479352.5707396'); + T('0', '0.000000000000000000000000019904267'); + T('321978830777554620127500539', '321978830777554620127500539.339278568133088682532238002577'); + T('2073', '2073.532654804291079327244387978249477171032485250998396'); + T('677676305591', '677676305591.2'); + T('0', '0.0000000000006'); + T('39181479479778357', '39181479479778357'); + T('0', '0.00000000000000000087964700066672916651'); + T('896', '896'); + T('115083055948552475', '115083055948552475'); + T('9105942082143427451223', '9105942082143427451223'); + T('0', '0.0000000000000009'); + T('0', '0.00000000000000000000004'); + T('0', '0.000250427721966583680168028884692015623739'); + T('0', '0.000000000001585613219016120158734661293405081934'); + T('0', '0.00009'); + T('0', '0.000000090358252973411013592234'); + T('276312604693909858427', '276312604693909858427.21965306055697011390137926559'); + T('0', '0.0000252'); + + // ---------------------------------------------------------------- v8 start + + T(0, 0); + T(0, '0.000'); + T(-0, -0); + T(Infinity, Infinity); + T(-Infinity, -Infinity); + T(NaN, NaN); + + T(0, 0.1); + T(0, 0.49999999999999994); + T(0, 0.5); + T(0, 0.7); + T(-1, -0.1); + T(-1, -0.49999999999999994); + T(-1, -0.5); + T(-1, -0.7); + T(1, 1); + T(1, 1.1); + T(1, 1.5); + T(1, 1.7); + T(-1, -1); + T(-2, -1.1); + T(-2, -1.5); + T(-2, -1.7); + + BigNumber.config({EXPONENTIAL_AT : 100}); + + T(-1, -1e-308); + T(-1e308, -1e308); + T('2.1e+308', '2.1e308'); + T(-1, '-1e-999'); + T(0, '1e-999'); + + T(0, Number.MIN_VALUE); + T(-1, -Number.MIN_VALUE); + T(Number.MAX_VALUE, Number.MAX_VALUE); + T(-Number.MAX_VALUE, -Number.MAX_VALUE); + T(Infinity, Infinity); + T(-Infinity, -Infinity); + + var two_30 = 1 << 30; + + T(two_30, two_30); + T(two_30, two_30 + 0.1); + T(two_30, two_30 + 0.5); + T(two_30, two_30 + 0.7); + + T(two_30 - 1, two_30 - 1); + T(two_30 - 1, two_30 - 1 + 0.1); + T(two_30 - 1, two_30 - 1 + 0.5); + T(two_30 - 1, two_30 - 1 + 0.7); + + T(-two_30, -two_30); + T(-two_30, -two_30 + 0.1); + T(-two_30, -two_30 + 0.5); + T(-two_30, -two_30 + 0.7); + + T(-two_30 + 1, -two_30 + 1); + T(-two_30 + 1, -two_30 + 1 + 0.1); + T(-two_30 + 1, -two_30 + 1 + 0.5); + T(-two_30 + 1, -two_30 + 1 + 0.7); + + var two_52 = (1 << 30) * (1 << 22); + + T(two_52, two_52); + T(two_52, two_52 + 0.1); + T(two_52, two_52 + 0.5); + T(two_52 + 1, two_52 + 0.7); + + T(two_52 - 1, two_52 - 1); + T(two_52 - 1, two_52 - 1 + 0.1); + T(two_52 - 1, two_52 - 1 + 0.5); + T(two_52 - 1, two_52 - 1 + 0.7); + + T(-two_52, -two_52); + T(-two_52, -two_52 + 0.1); + T(-two_52, -two_52 + 0.5); + T(-two_52, -two_52 + 0.7); + + T(-two_52 + 1, -two_52 + 1); + T(-two_52 + 1, -two_52 + 1 + 0.1); + T(-two_52 + 1, -two_52 + 1 + 0.5); + T(-two_52 + 1, -two_52 + 1 + 0.7); + + // ------------------------------------------------------------------ v8 end + + assert('1', new BigNumber('1.9999999999').floor(NaN).toString()); + + log('\n ' + passed + ' of ' + total + ' tests passed in ' + (+new Date() - start) + ' ms \n'); + return [passed, total];; +})(this.BigNumber); +if (typeof module !== 'undefined' && module.exports) module.exports = count; \ No newline at end of file diff --git a/node_modules/mysql/node_modules/bignumber.js/test/minus.js b/node_modules/mysql/node_modules/bignumber.js/test/minus.js new file mode 100644 index 0000000..e7bddef --- /dev/null +++ b/node_modules/mysql/node_modules/bignumber.js/test/minus.js @@ -0,0 +1,1846 @@ +var count = (function minus(BigNumber) { + var start = +new Date(), + log, + error, + undefined, + passed = 0, + total = 0, + n = 'null', + N = 'NaN', + I = 'Infinity'; + + if (typeof window === 'undefined') { + log = console.log; + error = console.error; + } else { + log = function (str) { document.body.innerHTML += str.replace('\n', '
      ') }; + error = function (str) { document.body.innerHTML += '
      ' + + str.replace('\n', '
      ') + '
      ' }; + } + + if (!BigNumber && typeof require === 'function') BigNumber = require('../bignumber'); + + function assert(expected, actual) { + total++; + if (expected !== actual) { + error('\n Test number: ' + total + ' failed'); + error(' Expected: ' + expected); + error(' Actual: ' + actual); + //process.exit(); + } + else { + passed++; + //log('\n Expected and actual: ' + actual); + } + } + + function T(minuend, subtrahend, expected) { + assert(String(expected), String(new BigNumber(minuend).minus(subtrahend))); + assert(String(expected), String(new BigNumber(minuend).minus(new BigNumber(subtrahend)))); + } + + function isMinusZero(n) { + return n.toString() === '0' && n.s == -1; + } + + log('\n Testing minus...'); + + BigNumber.config({ + DECIMAL_PLACES : 20, + ROUNDING_MODE : 4, + ERRORS : false, + RANGE : 1E9, + EXPONENTIAL_AT : [-7, 21] + }); + + T(1, 0, 1); + T(1, -0, 1); + T(-1, 0, -1); + T(-1, -0, -1); + T(1, N, N); + T(-1, N, N); + T(1, I, -I); + T(1, -I, I); + T(-1, I, -I); + T(-1, -I, I); + T(0, 1, -1); + T(0, -1, 1); + T(-0, 1, -1); + T(-0, -1, 1); + assert(false, isMinusZero(new BigNumber(0).minus(0))); + assert(false, isMinusZero(new BigNumber(0).minus(-0))); + assert(true, isMinusZero(new BigNumber(-0).minus(0))); + assert(false, isMinusZero(new BigNumber(-0).minus(-0))); + T(0, N, N); + T(-0, N, N); + T(0, I, -I); + T(0, -I, I); + T(-0, I, -I); + T(-0, -I, I); + T(N, 1, N); + T(N, -1, N); + T(N, 0, N); + T(N, -0, N); + T(N, N, N); + T(N, I, N); + T(N, -I, N); + T(I, 1, I); + T(I, -1, I); + T(-I, 1, -I); + T(-I, -1, -I); + T(I, 0, I); + T(I, -0, I); + T(-I, 0, -I); + T(-I, -0, -I); + T(I, N, N); + T(-I, N, N); + T(I, I, N); + T(I, -I, I); + T(-I, I, -I); + T(-I, -I, N); + + T(1, '0', '1'); + T(1, '1', '0'); + T(1, '-45', '46'); + T(1, '22', '-21'); + T(1, 0144, '-99'); + T(1, '0144', '-143'); + T(1, '6.1915', '-5.1915'); + T(1, '-1.02', '2.02'); + T(1, '0.09', '0.91'); + T(1, '-0.0001', '1.0001'); + T(1, '8e5', '-799999'); + T(1, '9E12', '-8999999999999'); + T(1, '1e-14', '0.99999999999999'); + T(1, '3.345E-9', '0.999999996655'); + T(1, '-345.43e+4', '3454301'); + T(1, '-94.12E+0', '95.12'); + T(1, '', N); + T(1, ' ', N); + T(1, '\t\t', N); + T(1, 'ertgrt546', N); + T(1, 'qweqwdewee', N); + T(1, true, N); + T(1, false, N); + T(1, 'e 4.3', N); + T(1, '4 .3', N); + T(1, '4.0 01e', N); + T(1, ' 4.001', '-3.001'); + T(1, '4.001 ', '-3.001'); + T(1, ' 4.001 ', '-3.001'); + T(1, ' 4.001', '-3.001'); + T(1, ' 4.0 01', N); + T(1, '4. 001', N); + T(1, '4. 001 ', N); + T(1, ' 4.001e ', N); + T(1, ' 4 .001 e ', N); + T(1, undefined, N); + T(1, null, N); + T(1, Number.POSITIVE_INFINITY, -I); + T(1, Number.NEGATIVE_INFINITY, I); + T(1, new Date(2012, 11, 4), N); + T(1, new Object(), N); + T(1, function () {}, N); + T('0', 0, '0'); + T(0, '+0', '0'); + T('0', '0', '0'); + T(3, -0, '3'); + T(9.654, 0, '9.654'); + T(0, '0.001', '-0.001'); + T(0, '111.1111111110000', '-111.111111111'); + T(-1, 1, '-2'); + T(-0.01, 0.01, '-0.02'); + T(54, -54, '108'); + T(9.99, '-9.99', '19.98'); + T('0.0000023432495704937', '-0.0000023432495704937', '0.0000046864991409874'); + T(NaN, NaN, N); + T(NaN, N, N); + T(N, NaN, N); + T(N, 4, N); + T(N, '4534534.45435435', N); + T(N, 99999.999, N); + T(Infinity, '354.345341', I); + T(3, -I, I); + T(-Infinity, -I, N); + T(-I, -Infinity, N); + T(I, '-999e999', I); + T('1.21123e43', -I, I); + T('-999.0', I, -I); + T('657.342e-45', -I, I); + T(I, 123, I); + T(-0, I, -I); + T(100, 100, '0'); + T(-999.99, '0.01', '-1000'); + T('10 ', 4, '6'); + T('03.333', -4, '7.333'); + T(-1, -0.1, '-0.9'); + T(43534.5435, '0.054645', '43534.488855'); + T('99999', '1', '99998'); + T('3e', 8, N); + T('-3..0', 13, N); + T('0 0', -0.4, N); + T(' +3e0', 4, '-1'); + T(9.9806, '+ 1', N); + T(' +2 0', '1e1', N); + T('e3', 4, N); + T(' ', 0, N); + T(323, null, N); + T(undefined, undefined, N); + T('undefined', undefined, N); + T(null, null, N); + + T('-0.00000020', '-1.5', '1.4999998'); + T('-5', '0', '-5'); + T('-2', '1.5', '-3.5'); + T('7', '-3', '10'); + T('0', '0', '0'); + T('0', '0', '0'); + T('0', '-9', '9'); + T('-15', '-7', '-8'); + T('-3', '0', '-3'); + T('3', '-5', '8'); + T('4', '-2', '6'); + T('2', '23', '-21'); + T('0', '0', '0'); + T('0.00000000022', '0', '2.2e-10'); + T('3', '-7', '10'); + T('0', '1.1', '-1.1'); + T('-2', '0', '-2'); + T('0', '-1', '1'); + T('2.3', '-3', '5.3'); + T('-3', '1', '-4'); + T('0.000040', '3', '-2.99996'); + T('0', '1', '-1'); + T('0', '2', '-2'); + T('0', '0', '0'); + T('3', '1.8', '1.2'); + T('0', '1.4', '-1.4'); + T('-1', '1', '-2'); + T('-3', '-1.0', '-2'); + T('1', '-4.5', '5.5'); + T('-1.8', '4', '-5.8'); + T('0', '-1.6', '1.6'); + T('1', '3.1', '-2.1'); + T('0.000000000000000000013', '-7', '7.000000000000000000013'); + T('0', '0', '0'); + T('-3', '2.4', '-5.4'); + T('-3.0', '2.2', '-5.2'); + T('0', '-2', '2'); + T('-1', '1.0', '-2'); + T('0', '5', '-5'); + T('5', '0', '5'); + T('-1', '0.0000014', '-1.0000014'); + T('3', '0', '3'); + T('0', '4.1', '-4.1'); + T('0', '-2.7', '2.7'); + T('-1', '0', '-1'); + T('-0.0000000000000030', '3', '-3.000000000000003'); + T('-2', '-1.8', '-0.2'); + T('0', '1', '-1'); + T('-1', '-1', '0'); + T('0', '-0.0000000011', '1.1e-9'); + T('6', '-15', '21'); + T('-2.2', '-1.6', '-0.6'); + T('0', '0', '0'); + T('0', '-5', '5'); + T('-6', '5', '-11'); + T('-3.1', '0.000000000000029', '-3.100000000000029'); + T('0', '3.6', '-3.6'); + T('0', '-7', '7'); + T('-5', '-1', '-4'); + T('0', '1.5', '-1.5'); + T('1', '2', '-1'); + T('-2', '0', '-2'); + T('-9', '-13', '4'); + T('-2', '0', '-2'); + T('1.1', '0', '1.1'); + T('8', '-0.000000000027', '8.000000000027'); + T('-0.000036', '-4', '3.999964'); + T('0', '5', '-5'); + T('0', '1', '-1'); + T('-7', '-5.9', '-1.1'); + T('-7', '-1', '-6'); + T('-1', '0', '-1'); + T('-0.000000036', '9', '-9.000000036'); + T('-6', '0', '-6'); + T('-9', '-6', '-3'); + T('2', '3.1', '-1.1'); + T('0', '-2', '2'); + T('0', '7', '-7'); + T('2.8', '3', '-0.2'); + T('-2', '0', '-2'); + T('0', '-3', '3'); + T('-3.7', '-5', '1.3'); + T('-1.3', '2.0', '-3.3'); + T('-4.7', '-3.0', '-1.7'); + T('-1.5', '0', '-1.5'); + T('4', '0', '4'); + T('-4', '0', '-4'); + T('-6', '-3', '-3'); + T('-1', '0', '-1'); + T('3', '-3', '6'); + T('0', '-3', '3'); + T('-2.6', '-1', '-1.6'); + T('0', '-0.0000000000000000013', '1.3e-18'); + T('2', '-3', '5'); + T('7', '0', '7'); + T('-1.8', '-3', '1.2'); + T('-5', '0', '-5'); + T('0', '0', '0'); + T('1', '0', '1'); + T('6', '-3.1', '9.1'); + T('1', '-3', '4'); + T('-1', '7', '-8'); + T('-2', '-2', '0'); + T('3.0', '-1.8', '4.8'); + T('0', '0', '0'); + T('0', '-9', '9'); + T('-4', '0', '-4'); + T('-1', '-1.9', '0.9'); + T('0', '-2', '2'); + T('-6', '1', '-7'); + T('1', '1', '0'); + T('-3.8', '3.4', '-7.2'); + T('5', '-2', '7'); + T('0', '0', '0'); + T('-5', '1', '-6'); + T('2', '0', '2'); + T('-6', '-32', '26'); + T('-3', '7', '-10'); + T('0', '0', '0'); + T('-1', '3', '-4'); + T('-5.6', '-0.00000000023', '-5.59999999977'); + T('1.1', '-3', '4.1'); + T('0', '3', '-3'); + T('0.0000000028', '1', '-0.9999999972'); + T('1', '0', '1'); + T('-2.9', '0', '-2.9'); + T('-4', '-3', '-1'); + T('-1', '0', '-1'); + T('0', '-8', '8'); + T('5', '-1', '6'); + T('50', '0', '50'); + T('1.4', '-0.023', '1.423'); + T('0', '0', '0'); + T('0', '-0.000000000000000000044', '4.4e-20'); + T('6', '1.0', '5'); + T('0', '0', '0'); + T('-5', '0', '-5'); + T('1', '4', '-3'); + T('5', '8', '-3'); + T('-1', '0', '-1'); + T('4', '1', '3'); + T('1.1', '0', '1.1'); + T('2', '-1.8', '3.8'); + T('1.2', '3', '-1.8'); + T('1.0', '-2', '3'); + T('0', '-26', '26'); + T('-1.2', '-0.000021', '-1.199979'); + T('0.00000000000000022', '0', '2.2e-16'); + + T('-0.00000000000000121361969403227661937847795811', '574992758622232775968317372974458171501.4254915170813', '-5.7499275862223277596831737297445817150142549151708130121361969403227661937847795811e+38'); + T('-4550837208408065075504522665550667460', '5.751431060476645646485961575720', '-4.55083720840806507550452266555066746575143106047664564648596157572e+36'); + T('7996662362107395829425.18720176386230', '-8731907507950', '7.9966623708393033373751872017638623e+21'); + T('-68461838113448256548677344232782026104.040843480437532', '0.0000142986280419', '-6.84618381134482565486773442327820261040408577790655739e+37'); + T('-665.7', '3908931.49090108734150120238488', '-3909597.19090108734150120238488'); + T('338109.679317396058', '-45.6', '338155.279317396058'); + T('-2471514788.354942554630483008', '-0.0000000055765369280717362958649740', '-2471514788.354942549053946079928263704135026'); + T('-18642529601026.27209290620938355635', '67022255553746002366834404466320.198', '-6.702225555374600238547693406734647009290620938355635e+31'); + T('27195199183.93214817879349469171272068644528813652023534', '-1', '27195199184.93214817879349469171272068644528813652023534'); + T('41026854231898.0486363115993557', '-0.0000000000000029972604673995461216855', '41026854231898.0486363115993586972604673995461216855'); + T('-1220181643016279028.87348578653647757882815849', '-4124297626266.931179306588915876637', '-1220177518718652761.94230647994756170219115849'); + T('174593431895507873748465653530769377174', '7.3340', '1.74593431895507873748465653530769377166666e+38'); + T('93091029642275068666781.0284945435443997658445', '-31928424886539383422.9555351175713959', '9.31229580671616080502039840296611157956658445e+22'); + T('-86027968259520771550471521850.6', '0.0000000000000000292728157559323008342389754688224199225762190199185607', '-8.60279682595207715504715218506000000000000000292728157559323008342389754688224199225762190199185607e+28'); + T('-1.44467944259873814286', '2.3245669450269604739750258313435250093720066817981549442', '-3.7692463876256986168350258313435250093720066817981549442'); + T('15548437865455556312866591689712167475961', '2.2', '1.55484378654555563128665916897121674759588e+40'); + T('0.00000000000000000020770604235293769845', '-0.0000992358273674621622485217917158420', '0.00009923582736746236995456414465354045'); + T('-1626846234967158413103510196475626.88719324087757539708', '-0.0000000000000007877989096708003891755677772229305473607860191', '-1.6268462349671584131035101964756268871932408775746092810903291996108244322227770694526392139809e+33'); + T('-0.00001339836', '0.0000333909797773140', '-0.000046789339777314'); + T('-20.6409', '-0.0000000000017673756783209754', '-20.6408999999982326243216790246'); + T('-0.00000000164445378704494553248164602947761915692700', '-294719705242476177981296942472301246209096', '2.94719705242476177981296942472301246209095999999998355546212955054467518353970522380843073e+41'); + T('-714.4854312', '479.74301995618099492271043882', '-1194.22845115618099492271043882'); + T('41306640988462651378.04879814073', '2.3', '41306640988462651375.74879814073'); + T('1888287331013305459263552414.6839815', '7369526522887481233382690934873900068542595569442820447065', '-7.3695265228874812333826909348720117812115822639835568946503160185e+57'); + T('-63087590127015461742418723247183314165549180801856.76047', '511852', '-6.308759012701546174241872324718331416554918131370876047e+49'); + T('-712813331685105224867937788768200257082.35597637750550', '-0.000000154423320652795188516788493', '-7.12813331685105224867937788768200257082355976223082179347204811483211507e+38'); + T('-0.00000021267799883027266680922532294584', '-99920149812553578396', '99920149812553578395.99999978732200116972733319077467705416'); + T('-0.000001314853272479802673030806326616332901672901446530', '-0.00000000000000177806', '-0.00000131485327070174267303080632661633290167290144653'); + T('-335141130.448', '-622097386577809642069744047.28826330', '6.220973865778096417346029168402633e+26'); + T('0', '120769246650024506936432254.2242696', '-1.207692466500245069364322542242696e+26'); + T('-23641982115679784801339.39566245781597254522', '-3682962980152156410.3125514', '-2.363829915269963264492908311105781597254522e+22'); + T('-88042183866221727883616143734328.731116339192172335', '2124601502534008501755.584348081323605468287', '-8.8042183868346329386150152236084315464420515777803287e+31'); + T('11947261350807745084450506573219.467267625392669956554', '-2144324041379.38432776094911354677701674948588', '1.194726135080774508659483061459885159538634178350333101674948588e+31'); + T('230257242957.393', '-10607111174738890296557505.142420583396378', '1.0607111174739120553800462535420583396378e+25'); + T('-0.000000000000000000205207122559582205445490420', '-137363469389767969588812337824785302440844', '1.3736346938976796958881233782478530244084399999999999999999979479287744041779455450958e+41'); + T('-681.369980', '279143637047358960283640320234319673269492015123776', '-2.7914363704735896028364032023431967326949201512445736998e+50'); + T('0.00000000000047867734749297313578318166203844289133575435501552', '5318894.3577269473404992938443574038899509659386283', '-5318894.35772694734002061649686443075416778427658985710866424564498448'); + T('-7009640457950142150404723076242641700234100735651466.001', '450572184269898130184881623816.351532207', '-7.009640457950142150405173648426911598364285617275282352532207e+51'); + T('-667761.1964938970806540832766776998292', '-11916.0', '-655845.1964938970806540832766776998292'); + T('78115005042419615473330500516096634.176852324566877077', '-6798.68296696083172787385428', '7.811500504241961547333050051610343285981928539860495085428e+34'); + T('7810338218505304105029156703754.942106797', '0.000001731538457890332023362604451262238656250891', '7.810338218505304105029156703754942105065461542109667976637395548737761343749109e+30'); + T('147524.3448475445608', '1648294473575921', '-1648294473428396.6551524554392'); + T('-0.000000000000000000171463070071732948056011420608183352219588685', '586793187554936.5855', '-586793187554936.585500000000000000171463070071732948056011420608183352219588685'); + T('-1211390378858441999502927549647140419603384681145414251351213', '-635082911540249607321.024949083796644', '-1.211390378858441999502927549647140419602749598233874001743891975050916203356e+60'); + T('4', '16059489423456265750163100012.9030479691340920432572860034', '-1.60594894234562657501631000089030479691340920432572860034e+28'); + T('-0.02386494924652569606758900911891223878669277', '6954997.21231337279682439457198586266365943551328684831121', '-6954997.23617832204335009063957487178257167429997961831121'); + T('-77097949257283524913898.9005058281976253594672', '2548220758876398059247570217121711835.85372529', '-2.5482207588764751571968275006466257347542311181976253594672e+36'); + T('0.0000000000000000003167303237768130560', '-1774472.102377282878491377352513811904', '1774472.102377282878491377669244135680813056'); + T('12826152962883951576635.9617817', '-85603180142227733048283563048771.16275698594', '8.560318015505388601116751462540712453868594e+31'); + T('-28594.58153422332574547631803496831493', '0.00138135692454804974058929153874335145729995858764536203', '-28594.58291558025029352605862425985367335145729995858764536203'); + T('-1076543179517781327152214.4430186084047103180550303835484', '-0.000001966501043041903595634052091', '-1.076543179517781327152214443016641903667276151434749496309e+24'); + T('1.1303763207006847408087108827484230273165561756244577060659', '-5226422630308737810960949550589969908179555303', '5.2264226303087378109609495505899699081795553041303763207006847408087108827484230273165561756244577060659e+45'); + T('4.6379', '0.0010851657258206953367908525441350095857171922501796819281707', '4.6368148342741793046632091474558649904142828077498203180718293'); + T('-0.00000121970222487531743738910465210', '14700571395.710868072772989809', '-14700571395.7108692924752146843174373891046521'); + T('-0.00948647116781336833163259991', '-1.7768824919899484548781987321907266047229337854', '1.7673960208221350865465661322807266047229337854'); + T('0.0000000000294045914362167819882890883773282671860065407908497565282', '1203484199859679.515373248387944', '-1203484199859679.5153732483585394085637832180117109116226717328139934592091502434718'); + T('370605558535696550704041748.54', '2859.002553198485573190388217618142019', '3.70605558535696550704038889537446801514426809611782381857981e+26'); + T('23063425385264062114.4182185521', '919024.6882123634392645395934284705089', '23063425385263143089.7300061886607354604065715294911'); + T('196575005.9706725', '-5209445831094830', '5209446027669835.9706725'); + T('-749632.806770304627392347831545996165984090513451938727374', '772302148117130.7584834', '-772302148866763.565253704627392347831545996165984090513451938727374'); + T('218023.954642124004155088474898834365173675390209344675040', '-4493284.9', '4711308.85464212400415508847489883436517367539020934467504'); + T('371184371226569100503051893.30461921952559443426660043299229', '-0.0000000034906715619289934', '3.7118437122656910050305189330461922301626599619559383299229e+26'); + T('220152166905051656324095658827324313008647.0', '-0.00000541198892301696315819055681172535', '2.2015216690505165632409565882732431300864700000541198892301696315819055681172535e+41'); + T('343183254236262724.51785020', '1', '343183254236262723.5178502'); + T('0.0000000003890086401641242121857013479571090262584101373', '-8317.38612508391889137944463821522953', '8317.3861250843079000196087624274152313479571090262584101373'); + T('0.00000000000000000086155332', '-17.6333243552751', '17.63332435527510000086155332'); + T('0', '268666137918342629663843421660.888578', '-2.68666137918342629663843421660888578e+29'); + T('0.00000000000000135738708106732310272812674949101792', '53327465.2335089327976851709827349825', '-53327465.23350893279768381359565391517689727187325050898208'); + T('266910608197788439217725496348217', '-0.00000000000000138658', '2.6691060819778843921772549634821700000000000000138658e+32'); + T('11641358', '81237.72625754123497510364150080', '11560120.2737424587650248963584992'); + T('-10397358465137390.59112438352080341792626708545', '0.000000000000035771048469575519305632795707', '-10397358465137390.591124383520839188974736660969305632795707'); + T('-319067503684881132718867038113132023386552638920.93464409992', '-4362498854097189202568295213849864755626616334057699.89553', '4.36217978659350432143557634681175162360322978141877896088590008e+51'); + T('-291431002924776541728754603601.36970805037321548645', '5964565940.126384157441377', '-2.9143100292477654173471916954149609220781459248645e+29'); + T('-1.2311860880', '-596880833224', '596880833222.768813912'); + T('87.132412112577000', '3', '84.132412112577'); + T('14496251944930895122386093.97997766', '-0.0186085382187367427216451737443431075455317', '1.44962519449308951223860939985861982187367427216451737443431075455317e+25'); + T('-1454167.8755560906631572', '-14023057721.47963687', '14021603553.6040807793368428'); + T('-48.0205403500832716158268160170078138883305085421632055636', '-4225012867.41212544381914188804', '4225012819.3915850937358702722131839829921861116694914578367944364'); + T('132233805697430308711156924448348175516180746442', '0.0000017428839153838195472106854742425800', '1.3223380569743030871115692444834817551618074644199999825711608461618045278931452575742e+47'); + T('-3464742138515.3596070', '-116196292944709774661.6869498643733175605', '116196289479967636146.3273428643733175605'); + T('959618941323760340533285165929739125596307241332873169.21229', '66867302503354526158135738979.180422740', '9.5961894132376034053328509906243662224178108319713419003186726e+53'); + T('272744684991153578922570226355.46751565943', '2120.8826649154579918903365041556839175862', '2.727446849911535789225702242345848507439720081096634958443160824138e+29'); + T('392752713096323327908999', '0.000000017921157295538031059674698531743345633301', '3.92752713096323327908998999999982078842704461968940325301468256654366699e+23'); + T('98160222492281761742.521218301', '-0.0285627038777634002456158926936381577455032644551906387514964', '98160222492281761742.5497810048777634002456158926936381577455032644551906387514964'); + T('-4.36', '-271625870935.20401097518', '271625870930.84401097518'); + T('-19.4212927874167898', '-3296800120589635669055398465088086245282862075.96730', '3.2968001205896356690553984650880862452828620565460072125832102e+45'); + T('-7384530397856089', '-45.9', '-7384530397856043.1'); + T('-774820079197336364734223154.8', '-10.942584818509498694779756530950038148', '-7.74820079197336364734223143857415181490501305220243469049961852e+26'); + T('-150596940796161658996.388271502068869', '2985065345825248339763675882859244909723097343219', '-2.985065345825248339763675883009841850519259002215388271502068869e+48'); + T('-23847.667194770678602066965772568166575932862070476568359149', '1.05838941', '-23848.725584180678602066965772568166575932862070476568359149'); + T('-139.90436152895151552565739375535355738822610296926957375853', '0.2047189', '-140.10908042895151552565739375535355738822610296926957375853'); + T('-4859551136289853679597736', '5705851489', '-4.859551136289859385449225e+24'); + T('-2.822932759210967942204799418357885484503668027660403642776', '-21260029158.7755772147552', '21260029155.952644455544232057795200581642114515496331972339596357224'); + T('70214727623926969557083.633194040081188', '0.000000000000000008876781900', '7.02147276239269695570836331940400811879911232181e+22'); + T('168167915122787.2659904', '-0.000000000000000000022424096865237242831921499442051317229853874001', '168167915122787.265990400000000000022424096865237242831921499442051317229853874001'); + T('-10381081602312', '0.000000000000000923228830', '-10381081602312.00000000000000092322883'); + T('6481217378435019509.3', '204127.50354634007763', '6481217378434815381.79645365992237'); + T('-1055871579008468883600015600194814.219411847', '0.00000000000000001993933675383625869609055753063233531835884', '-1.05587157900846888360001560019481421941184700000001993933675383625869609055753063233531835884e+33'); + T('-11.9', '2190021917.5', '-2190021929.4'); + T('8893568.397103781249', '-7.29674059550', '8893575.693844376749'); + T('-270074164732402092470707995826826345208506171395062650454324', '392935540317', '-2.70074164732402092470707995826826345208506171395455585994641e+59'); + T('-582332724559151988564243629866.793819328', '-752.316045', '-5.82332724559151988564243629114477774328e+29'); + T('115780050433.9744723375949160', '-10354559440726926933085330907464207489638', '1.0354559440726926933085330907579987540071974472337594916e+40'); + T('-0.0000000000092082909772982168202901287881437', '-140307240110991278811078363131.3533385306060728599114476021', '1.403072401109912788110783631313533385305968645689341493852797098712118563e+29'); + T('-0.0000000000000000001302905868005538222253', '-687601306119.30280105580919933093896015091959269610032847933', '687601306119.30280105580919933080866956411903887387502847933'); + T('-17406776.9106520', '7404147683526942010449859408523376672505043.20', '-7.404147683526942010449859408523376689911820110652e+42'); + T('-5810490488292821.088550524158200456214711210120', '51309126128019006928075619352.35509020203161', '-5.130912612802481741856391217344364072618981045621471121012e+28'); + T('-244663279887797845457244.69627014023746468381042256674045148', '-0.383335594341020704911762197811406655', '-2.44663279887797845457244312934545896443978898660368929044825e+23'); + T('316759637646274728459769194971270681520143070356211369', '138969888208.552504340', '3.1675963764627472845976919497127068152014293138632316044749566e+53'); + T('-1026716565990818152.338103221159', '1255719213990793975090997507278', '-1.255719213991820691656988325430338103221159e+30'); + T('854.93693123842152090961298359199223034349519195749', '-424117414357060.756799', '424117414357915.69373023842152090961298359199223034349519195749'); + T('-0.006379478941040566506054', '3928.2672878523130519347199700529360289380801729479368', '-3928.2736673312540925012260240529360289380801729479368'); + T('3469779053.85027069235104893994561560034151457638008273176647', '25676509132014403666611211903.3702668974', '-2.567650913201440366314143284951999620504895106005438439965848542361991726823353e+28'); + T('-6.0694', '-820322384540258597408240140073275834913353.69', '8.203223845402585974082401400732758349133476206e+41'); + T('-0.000000000000030532', '24.896880201507626275851', '-24.896880201507656807851'); + T('105468873', '0', '105468873'); + T('256760156309110476', '-13837063158475039.0608439897688680023912472959404758275635521', '270597219467585515.0608439897688680023912472959404758275635521'); + T('0.000000000000000001698545937726615224762953174', '0.0091708187464', '-0.009170818746399998301454062273384775237046826'); + T('-21254127772.055477', '170724844816140294005708794935062810958442.2386', '-1.70724844816140294005708794935084065086214294077e+41'); + T('4.3', '-42289375032753833461292867654449379918122659582300511814.86', '4.228937503275383346129286765444937991812265958230051181916e+55'); + T('-10.6945731348037109472689588888585520230967031058063284652', '-0.000000000000000013225637814061559914861522643297461025', '-10.6945731348037109340433210747969921082351804625088674402'); + T('42022129692143246218.588174513905523856665669864568', '-6688196881698', '42022136380340127916.588174513905523856665669864568'); + T('59567595164759708273.58488961999', '-2882669546962777869333', '2.94223714212753757760658488961999e+21'); + T('-0.00000000000000023219819555088939', '0.000002699155773875942009505196424', '-0.000002699155774108140205056085814'); + T('69.02', '1019.384525', '-950.364525'); + T('0.28885545083047505669261757814370521673472269407769277', '-54409284625846293530958014777988170910931971864508243085507', '5.440928462584629353095801477798817091093197186450824308550728885545083047505669261757814370521673472269407769277e+58'); + T('357051970556175609969558033601717918622832633809282', '-0.00000000000000009191759009979', '3.5705197055617560996955803360171791862283263380928200000000000000009191759009979e+50'); + T('55324032341233413075839541.33979738365146913154063', '18778204875511803067.37488033228813311299318998557567838806', '5.532401356302853756403647396491705136333601854744001442432161194e+25'); + T('-954279324346950395396438207814989843', '5855883956282.7418', '-9.542793243469503953964440636989461257418e+35'); + T('0.0000559372400719154055', '36326.3773033065', '-36326.3772473692599280845945'); + T('-2308273733231941938445560342695.8870897860340173552415859451', '0.0000000000000000000176744410303783123790738765240224970704250496463086', '-2.3082737332319419384455603426958870897860340173552592603861303783123790738765240224970704250496463086e+30'); + T('-0.0000000000000075315134692867358694825', '0.000000000020673253575755655053286884627683943900054889', '-2.0680785089224941789156367127683943900054889e-11'); + T('2141565935846165335053366646564.55', '249139386942.433521867737894', '2.141565935846165334804227259622116478132262106e+30'); + T('0.0000000000000020997422982353397148204786811844837507999862174', '0.000000000000000002356388173646211525529238', '2.0973859100616935032949494431844837507999862174e-15'); + T('-9.3', '1210724787708353076304704165555.510002672635727895531335', '-1.210724787708353076304704165564810002672635727895531335e+30'); + T('-94455687.8', '0.0000002761251584122631449121019167818539664249453145710', '-94455687.800000276125158412263144912101916781853966424945314571'); + T('-527306114203076623189237999707479.9688776820253214193899164', '1599.728954415768000917144378511032', '-5.27306114203076623189237999709079697832097793322336534294911032e+32'); + T('5201144349263847987496751693.2718392256495115509', '-0.000000000000000008062522688625856069134486136704806619173555611278', '5.201144349263847987496751693271839225649511558962522688625856069134486136704806619173555611278e+27'); + T('-769134537.983940345', '-596619628089684709170992.484', '5.96619628089683940036454500059655e+23'); + T('16103.67287682796494953', '-465781.44458474726', '481885.11746157522494953'); + T('972019.0403266398942', '0.00000000032060736406868701231737725067236', '972019.04032663957359263593131298768262274932764'); + T('-3722457663697211882835707', '-16.8', '-3.7224576636972118828356902e+24'); + T('140260.1', '5', '140255.1'); + T('5314287735775902656123286734.69857230', '-33935993.716814133855691839888466392152019494030707469085', '5.314287735775902656157222728415386433855691839888466392152019494030707469085e+27'); + T('68283872710781941018806771046574852133', '0.00000000075', '6.828387271078194101880677104657485213299999999925e+37'); + T('-369081.4527', '141567.2246', '-510648.6773'); + T('20446533321512161063774845264.22916016420704184590862638', '-68295029.764030715', '2.044653332151216106384314029399319087920704184590862638e+28'); + T('-600307.74138395225787263', '-0.0000001304496382302165936930', '-600307.741383821808234399783406307'); + T('24411161239.85690978507516121', '2051270884829.8383684099295195107651592681789671', '-2026859723589.9814586248543583007651592681789671'); + T('4384414740.5595825362370080404420', '-0.00000000000000554366638630081310095841078569927213406536019558277955', '4384414740.55958253623701358410838630081310095841078569927213406536019558277955'); + T('9025031.8925028', '-32.8', '9025064.6925028'); + T('-256722752342173962991.91', '-0.0000000000000000002123046323462613566369', '-256722752342173962991.9099999999999999997876953676537386433631'); + T('43542362222453910743776206071468.7163717435431410983843', '1100168.647375874421732648073262226', '4.3542362222453910743776204971300068995869121408450311037774e+31'); + T('0.062784590888327314154797', '1057478188.877253410081536', '-1057478188.814468819193208685845203'); + T('-7050', '45104384760478621637071269060904128288820257014210.74', '-4.510438476047862163707126906090412828882025702126074e+49'); + T('1592658310474883023', '-399176738358380589054069565962.3840352823659556138516', '3.991767383599732473645444489853840352823659556138516e+29'); + T('206141261', '-1266053.469', '207407314.469'); + T('644.1', '-0.4369751366969488640109929651726886244920517832668019', '644.5369751366969488640109929651726886244920517832668019'); + T('1612132.216890744513316472', '-51082267675271', '51082269287403.216890744513316472'); + T('1230427083.97', '0.000758744063330274578234716889288876558038637793691373850', '1230427083.96924125593666972542176528311071112344196136220630862615'); + T('-35776247491956058344815123524285', '0.000000000012958363043907', '-3.5776247491956058344815123524285000000000012958363043907e+31'); + T('8661462327754244989542.365', '0', '8.661462327754244989542365e+21'); + T('-1629190886816579351740029513722257473580386199203949.0', '-6496265115300408904692604.738158', '-1.629190886816579351740029507225992358279977294511344261842e+51'); + T('13.891128134595', '4', '9.891128134595'); + T('-11113.7', '0.000000007958782556879962582439914573325191682999786', '-11113.700000007958782556879962582439914573325191682999786'); + T('-1118611298789753369562561', '0', '-1.118611298789753369562561e+24'); + T('0.000000000590336252071681886600391810609976', '-67.75', '67.750000000590336252071681886600391810609976'); + T('-169823638653318606537007998653864233599165.937', '-281597273362859424.39994', '-1.6982363865331860653700771705659087073974153706e+41'); + T('-3.156805980919999726868943', '546306412638131947574220', '-5.46306412638131947574223156805980919999726868943e+23'); + T('-0.000000000961866927553387950929926693447189622664803906118589565996', '1599939073440130339796992146.295983955944260728', '-1.599939073440130339796992146295983956906127655553387950929926693447189622664803906118589565996e+27'); + T('0.4283', '0.000000000020729812246752207692169547780166634734001', '0.428299999979270187753247792307830452219833365265999'); + T('-0.0004573434550153087210903', '0.03770996737891493754829068954377697580116', '-0.03816731083393024626938098954377697580116'); + T('-3960.59579547', '-1814.0503015604326701', '-2146.5454939095673299'); + T('228667830414358772925710849158.07453', '-242389246', '2.2866783041435877292595323840407453e+29'); + T('-4938.8', '33796487947361', '-33796487952299.8'); + T('23066858157696468038.419700247057090437730118', '1017294462916594953213682499527318061014200', '-1.017294462916594953213659432669160364546161580299752942909562269882e+42'); + T('-3.329', '7129476962505466189.958258', '-7129476962505466193.287258'); + T('0.0002134952691176147868498212012808766187', '-55.418', '55.4182134952691176147868498212012808766187'); + T('-287906196200519721661337752259844531254735020373.400102226', '-149964438772134655329086295.489409993989261332871176761', '-2.87906196200519721661187787821072396599405934077910692232010738667128823239e+47'); + T('0.879756603251906828679553532880817', '-169.6608007559773549752480442', '170.540557359229261803927597732880817'); + T('0.0000006245253019711867486517080491', '-0.000000000000000016145400714914217811', '6.24525301987332149366622266911e-7'); + T('-0.00000000000000000028355442083', '-6.7960400', '6.79603999999999999971644557917'); + T('-327828.933845', '-0.000000000016720812786354347397949935318536433299320234', '-327828.933844999983279187213645652602050064681463566700679766'); + T('-12062798839897370982166084543665094512857864041322339898381', '-983855787277604624519041110446627116266868551757862371483', '-1.1078943052619766357647043433218467396590995489564477526898e+58'); + T('-368029067460.235618031440780659671986274176149669', '-7.8327366781', '-368029067452.402881353340780659671986274176149669'); + T('48.841', '621799398797787989614515.034591400113887912474171355', '-6.21799398797787989614466193591400113887912474171355e+23'); + T('0.00000000000000000001028447389', '11411023852013652', '-11411023852013651.99999999999999999998971552611'); + T('109388.053063770057103', '-0.000161002185201484294184231320866015688631673966536', '109388.053224772242304484294184231320866015688631673966536'); + T('0.0000000075454081720580498999564801', '-6133333234722476.50731423128929112324554345104797981', '6133333234722476.50731423883469929530359335100445991'); + T('0.0000000000001748707964040132704465271', '0.0014559085438085897564402233344521317116113630490391191639', '-0.0014559085436337189600362100640056046116113630490391191639'); + T('169.5777437575868731193679671977293144862017912', '171384684233482289557.248837', '-171384684233482289387.6710932424131268806320328022706855137982088'); + T('0.000000000000000963994117406293262728543', '10931977.50377877', '-10931977.503778769999999036005882593706737271457'); + T('-0.0000000000000004943772275105155307931235866139', '-6331812416762098838522', '6.3318124167620988385219999999999999995056227724894844692068764133861e+21'); + T('551506392806.03421875426724909838', '1494156988342161962977365.44', '-1.49415698834161045658455940578124573275090162e+24'); + T('-35954803866862.46955421251697497767880', '-96620255925.814702354', '-35858183610936.6548518585169749776788'); + T('-8973170535214416154002860437001664', '8701360172863868015378154133091486710755411398837050.58411296', '-8.70136017286386802435132466830590286475827183583871458411296e+51'); + T('369.0854266274373143948330319405738975782757717917', '0', '369.0854266274373143948330319405738975782757717917'); + T('4130252362617611707187141280611348999706', '-120506138511555615072992404.1670872857058427291541946', '4.1302523626177322133256528362264219921101670872857058427291541946e+39'); + T('0.00000000000000000129518837', '-43970554119955228415415630801336595257.433109069593', '4.397055411995522841541563080133659525743310906959300000129518837e+37'); + T('-199832949667155587976206363450860330500926252.4790', '88697015896564.601775678484183991355335780830', '-1.9983294966715558797620636345094902751682281708077567848418399135533578083e+44'); + T('-3', '-94608429043423790061', '94608429043423790058'); + T('5914252851', '-32833159514298.717701562542', '32839073767149.717701562542'); + T('0.00000000000000000062135622742614277', '-934153618.26014440731275', '934153618.26014440731275000062135622742614277'); + T('-414018564163156440', '82550425859087829706198633745536278044153640.5895796189250', '-8.2550425859087829706198634159554842207310080589579618925e+43'); + T('-1496454100585258488602.0286', '0.000000000109895026640912465560937708538864597016913853723419507', '-1.496454100585258488602028600000109895026640912465560937708538864597016913853723419507e+21'); + T('-1341525946245998', '193723560793329369351971060', '-1.93723560794670895298217058e+26'); + T('0.000000000000004972247161753329501987430882626554770098611002363504786', '-0.02206405830101097017174889990515767580456922875023374', '0.022064058301015942418910653234659663235451855305003838611002363504786'); + T('759412612479446413', '-0.001641148192720654679893469509982581527584330378', '759412612479446413.001641148192720654679893469509982581527584330378'); + T('202578904.71133021395689295350439448588680928447617886', '-35337424341284.346281238517', '35337626920189.05761145247389295350439448588680928447617886'); + T('10862970759795016587884612569718575353781870555253901512816', '-214.533', '1.0862970759795016587884612569718575353781870555253901513030533e+58'); + T('-0.00000000000000040285962950086', '-216829085197233503.866070375365413688040', '216829085197233503.86607037536541328518037049914'); + T('550250782173491663208128526734.569', '-0.000000000100710017655581949422409688681756709469258865537626639492015', '5.50250782173491663208128526734569000000100710017655581949422409688681756709469258865537626639492015e+29'); + T('-19678891452829871158.36095', '1040.72243146362968914160338864', '-19678891452829872199.08338146362968914160338864'); + T('-20972447940296172836322634.7', '0.00000000000000150351', '-2.097244794029617283632263470000000000000150351e+25'); + T('-135716917862073377635780105702430442287902.2441615427680', '-156170394359696385001989148011019228708', '-1.35560747467713681250778116554419423059194244161542768e+41'); + T('249073042918039345', '758712100158049101656321168.88542968', '-7.5871209990897605873828182388542968e+26'); + T('9228932554571685674.6101721970', '93.5210831751023', '9228932554571685581.0890890218977'); + T('0', '-3271.372', '3271.372'); + T('712617017414340344456425371594378983', '-7013575085098427106742320.320014442', '7.12617017421353919541523798701121303320014442e+35'); + T('0.00000000000000991278822903249', '-266685953910734027663766948621954.4074654249748', '2.6668595391073402766376694862195440746542497480991278822903249e+32'); + T('-0.00001168408090912846185222706894568927004955366630406', '-0.00000357928456', '-0.00000810479634912846185222706894568927004955366630406'); + T('-0.0000000000000000001077428', '-18065.9571', '18065.9570999999999999998922572'); + T('-26767075956743559361260276966383.60643853154', '9.811418917439919669145337064909359580107696', '-2.6767075956743559361260276966393417857448979919669145337064909359580107696e+31'); + T('-94992614046521719511194550871785575096581461042589', '-7.24', '-9.499261404652171951119455087178557509658146104258176e+49'); + T('249.84717238354744614', '-58760885296179353551418799.1637574', '5.876088529617935355141904901092978354744614e+25'); + T('0.190077788951733727544', '3029470118670840', '-3029470118670839.809922211048266272456'); + T('-535577308373493988698.28', '-0.00000000000000000001223589264699363887684193', '-535577308373493988698.27999999999999999998776410735300636112315807'); + T('17330374908582279821881.6419631817630053975265540001599', '51572037568522929067270779857332002426120', '-5.15720375685229290499404049487497226042383580368182369946024734459998401e+40'); + T('2620791577.5388', '-429.387', '2620792006.9258'); + T('24955342165062415125441804.9102804783908687387110', '-894.26', '2.4955342165062415125442699170280478390868738711e+25'); + T('-30.966199737786598010412005660223057114288056999548471748', '7554891.786144582480621940890219161695392942927639518', '-7554922.752344320267219951302224821918450057215696517548471748'); + T('1.1132', '33358298757744778319077792505.510848143559223', '-3.3358298757744778319077792504397648143559223e+28'); + T('-71806617.15', '5002475659678496285425142082140754487', '-5.00247565967849628542514208221256110415e+36'); + T('-64642.3969', '-45742744308293235253.79', '45742744308293170611.3931'); + T('0.000000000000000005061114767099631770343151056312', '-0.1380692319876694309061865652400348112805369059470451819398816', '0.1380692319876694359673013323396665816236879622590451819398816'); + T('1104962688677222230.43026613036133967074026481598059', '65279233245714944288887', '-6.527812828302626706665656973386963866032925973518401941e+22'); + T('-244.20751029974608088458301628723627482919450688930317756', '-10.309887906765666581', '-233.89762239298041430358301628723627482919450688930317756'); + T('-374204737.17485473467771059091311676198780910101246261', '-1772169195775224156804629688653654033.48913943457', '1.77216919577522415680462968827944929631428469989228940908688323801219089898753739e+36'); + T('0.0000825267296819574292144866422', '0.000000024644261884116746400488936364031', '0.000082502085420073312468086153263635969'); + T('-337528893876584865851246910311878729078289', '-181706307425668740481.5172', '-3.375288938765848658510652040044530603378074828e+41'); + T('338.68219932619', '36769458628.200', '-36769458289.51780067381'); + T('946213.052924553279580429320', '0.0000000000000000000164588680615834011158188287840390933880557701437361142926', '946213.0529245532795804293035411319384165988841811712159609066119442298562638857074'); + T('-2', '-1595717583274440094311744086944287786728005322', '1.59571758327444009431174408694428778672800532e+45'); + T('17453173.964073494242189989440985005742212919109806776575', '-14.66', '17453188.624073494242189989440985005742212919109806776575'); + T('9035579398295.9420488582066606273524126698350184209', '966939914253463733672441.61004035647', '-9.669399142444281542741456679914982633393726475873301649815791e+23'); + T('7', '-27403953633424153.2922529596537493', '27403953633424160.2922529596537493'); + T('-0.00000000000000000065661940373886034771780807724464', '23789019501708804655829.7720420134937860512', '-2.378901950170880465582977204201349378605185661940373886034771780807724464e+22'); + T('-379831', '1792454931672118909115.7219790011', '-1.7924549316721192889467219790011e+21'); + T('-6815476482314.81368548838834442636132177246866027753', '-23737403998114260637862634', '2.373740399810744516138031918631451161165557363867822753133972247e+25'); + T('-277091361.834', '1255049423087969154842.0583316773528577200623', '-1.2550494230882462462038923316773528577200623e+21'); + T('0.000527964207481201439802251215793030527669347056468169977214382', '1104312503520806883476040.604659402909367', '-1.104312503520806883476040604131438701885798560197748784206969472330652943531830022785618e+24'); + T('416.19049862551799054889649850446495', '25962521611212.630583656', '-25962521610796.44008503048200945110350149553505'); + T('-2', '0.00000023172759362622993578493256103424786936904115653889542088', '-2.00000023172759362622993578493256103424786936904115653889542088'); + T('2322661483960492703.7985297249359258447971802752303052984194', '-0.00285627578605593051554020854314614896', '2322661483960492703.8013860007219817753127204837734514473794'); + T('-50114375544024117743137634.7132631195193', '-4518136285230626801', '-5.01143710258878325125108337132631195193e+25'); + T('491790857283052164040388091239524266252647468540.602280', '0.0000000000000000002505634', '4.917908572830521640403880912395242662526474685406022799999999999997494366e+47'); + T('223757557.31976336704487143430860', '-30.36327', '223757587.6830333670448714343086'); + T('2266.004651', '-0.0000005867989135639875708', '2266.0046515867989135639875708'); + T('6958762418946097.285', '8704860092930499346311.824744308693', '-8.704853134168080400214539744308693e+21'); + T('-0.0000000000008758100333932644717298947984578724622849096677225', '-310962285610.30017170574463655670078', '310962285610.3001717057437607466673867355282701052015421275377150903322775'); + T('3654335458448.908519039918424', '-1017862207107897070244694254273184418309706541.32954379163', '1.017862207107897070244694254273188072645164990238062831548424e+45'); + T('0.000000028485591', '0', '2.8485591e-8'); + T('5073947900606220328306097118306928028865584', '-0.0000610672338767500', '5.07394790060622032830609711830692802886558400006106723387675e+42'); + T('184963915.618593586643741543203', '-1677.631219', '184965593.249812586643741543203'); + T('396871997862363101002483892.26', '-0.0000000000000000066839646413390330134202944396013877478232108451615', '3.968719978623631010024838922600000000000000066839646413390330134202944396013877478232108451615e+26'); + T('-0.001443', '-0.0000000000001480307586020440332395145414988692178570219362536734359922', '-0.0014429999998519692413979559667604854585011307821429780637463265640078'); + T('5173379226320319729203764178125730829947033.85', '16568260.329616', '5.173379226320319729203764178125730813378773520384e+42'); + T('-378684740425288590329.865832078814181361689411770555828033', '21039423253539461585612290662', '-2.1039423632224202010900880991865832078814181361689411770555828033e+28'); + T('-143411025.19904252040830704437889996439197644180', '0', '-143411025.1990425204083070443788999643919764418'); + T('-3971034326547', '-0.000000000000001192201124343158918732899783', '-3971034326546.999999999999998807798875656841081267100217'); + T('-1957074390.30', '-785.9373', '-1957073604.3627'); + T('11798157981084854910522713.726423390731883', '0.00000000000000000794673726058684351969247016507', '1.179815798108485491052271372642339073188299205326273941315648030752983493e+25'); + T('0', '63718006.533955912499520687', '-63718006.533955912499520687'); + T('-106057718559494874723085290836.38939560519223757224643923', '68938204335.59', '-1.0605771855949487479202349517197939560519223757224643923e+29'); + T('765027217313815006', '160135.21207763126955482', '765027217313654870.78792236873044518'); + T('-821923031708250104665643576287477708843314087.882590093', '-3990962158191136912693.079142196669532', '-8.21923031708250104665639585325319517706401394803447896330468e+44'); + T('0.00509812696199828345610871074161', '696247014515864996317842', '-6.9624701451586499631784199490187303800171654389128925839e+23'); + T('29732795045547659.0996914254', '-51709086127799933076710172937271558434987133.720', '5.17090861277999330767101729670043534805347928196914254e+43'); + T('-16286.209377407275812137531392451949', '0.00000000000000000022372394617291', '-16286.20937740727581213775511639812191'); + T('-1375253307827927096349134575050603.94211767852698652', '905513058712.3724033', '-1.37525330782792709635004008810931631452097852698652e+33'); + T('6307.78968779279695539093771472627844783336', '-0.00002778260088313361218945039359426278958850789168', '6307.78971557539783852454990417667204209614958850789168'); + T('-1251971126793648464770.62302133464300', '4108332118551588855518884176084', '-4.108332119803559982312532640854623021334643e+30'); + T('796875815810006347157872416846682346.70724147', '-26887.93843', '7.9687581581000634715787241684670923464567147e+35'); + T('503761901876.1', '-0.00000058591916804106576202', '503761901876.10000058591916804106576202'); + T('-0.0000144343551936630598170853542', '0.00000000000000001330848692526361142604488661622', '-0.00001443435519367636830401061781142604488661622'); + T('333807319855762444667280144179919.21709315488049995404', '3710.87428669634', '3.3380731985576244466728014417620834280645854049995404e+32'); + T('0.000000000000007381560468758912676992936863885310325961189', '5277874186685074734.78128632893251930850699235193165881271', '-5277874186685074734.781286328932511926946523593018981819773136114689674038811'); + T('0.002045907391481002055126364741722746123920492354', '-134940106198957372161636571.3843066120486149838380841998784', '1.34940106198957372161636571386352519440095985893210564620122746123920492354e+26'); + T('-30130112088.993827003962835076', '188322529121371266385077234579252182224.5691709790', '-1.88322529121371266385077234609382294313562997982962835076e+38'); + T('-3', '-8324641628446525083548695251230914153428', '8.324641628446525083548695251230914153425e+39'); + T('0.00018606293964295302172654549272224527271134692398', '-282281050085963.9114203115670420384745855159215452', '282281050085963.91160637450668499149631206141426744527271134692398'); + T('-16333583942997041272867370326132870504131195981.4696057800513', '45720082683202081441524403533698410.5545453845767', '-1.6333583943042761355550572407574394907664894392024151164628e+46'); + T('279328203.5', '-5825567.71080931239385137020833', '285153771.21080931239385137020833'); + T('-269224.94927224666095', '0.0000000000000000003064416316790457', '-269224.9492722466609500003064416316790457'); + T('6744812299069336942789392301581837129883725551922493.40', '-5703915992.9167440851668499293951029', '6.7448122990693369427893923015818371298837312558384863167440851668499293951029e+51'); + T('-0.000000000000000066706723472682', '-145217233354840.9452974499221403003294897671707915', '145217233354840.9452974499221402336227662944887915'); + T('8627053077274630737609487236548.4979774', '11.791146312838460410035604930189', '8.627053077274630737609487236536706831087161539589964395069811e+30'); + T('-0.01202422952668513636643178716923354493558618790', '-0.4635434098404790609527188243911111255589856688195077910287', '0.4515191803137939245862870372218775806233994809195077910287'); + T('-22486311958570.75', '136623992244353739977111844218335966565067420559172408797', '-1.3662399224435373997711184421833596656506744304548436736775e+56'); + T('-252554701524493.902565999316640', '0', '-252554701524493.90256599931664'); + T('0.00000000010355292', '-13318465915882548061708659853990135442387095003099676083', '1.331846591588254806170865985399013544238709500309967608300000000010355292e+55'); + T('0.000000000000003588941991478575635246817587941', '5787662416433534641981775919801763640029.288211579210799', '-5.787662416433534641981775919801763640029288211579210795411058008521424364753182412059e+39'); + T('3803854629.170758287238', '722557244.90221176531910610529831590', '3081297384.2685465219188938947016841'); + T('-4035292286478852880912536818781650501388972481375613031', '7023934966.329481438434165', '-4.035292286478852880912536818781650501388972488399547997329481438434165e+54'); + T('0', '-4651.5712076', '4651.5712076'); + T('943569.4471', '368852398555888115298707.33698897234448443580026', '-3.6885239855588811435513788988897234448443580026e+23'); + T('-7688139997698910283021899776208658703126', '-3014.021539', '-7.688139997698910283021899776208658700111978461e+39'); + T('-76014.328438738930802423876495451104480710964006', '0.16299839827610198847716746', '-76014.491437137206904412353662911104480710964006'); + T('425793955', '236826394', '188967561'); + T('1912.281988', '112194.49296301061246', '-110282.21097501061246'); + T('-5003494177.4861', '-1.82', '-5003494175.6661'); + T('7617479678.376905694802432279901930587745665869', '-947377.04', '7618427055.416905694802432279901930587745665869'); + T('367903789829906246.71158889842', '21491233153686072381957715968967883669600234520102964736911', '-2.149123315368607238195771596896788366959986661631313483066428841110158e+58'); + T('-6397756530845969250791946194979007883084.20444410377877774', '-2', '-6.39775653084596925079194619497900788308220444410377877774e+39'); + T('-75490132843212222631302495635041908895.42', '121330908238673', '-7.549013284321222263130261696595014756842e+37'); + T('7452613620257648176992750760.263566991938225', '519063023319381552888', '7.452613101194624857611197872263566991938225e+27'); + T('0.00000000000000778133736110171456441934891601883471609303002832912018885', '322394945530.295120804275213239014033', '-322394945530.29512080427520545767667189828543558065108398116528390696997167087981115'); + T('-8453.41542', '-92872449307.96646595226774421156553041473428714203142', '92872440854.55104595226774421156553041473428714203142'); + T('4184618260709992776470144081019630641.9546', '-39747088643178.4900618612667154842919288568428', '4.1846182607099927764701838281082738204446618612667154842919288568428e+36'); + T('-1002876199682238092689386871396', '-115235.191932983', '-1.002876199682238092689386756160808067017e+30'); + T('-0.0000020', '-67044918017341867873741', '6.7044918017341867873740999998e+22'); + T('19249573172273106187.51981325183516777379', '-0.0000036330230998383752637622876226209213994133789721626367167406', '19249573172273106187.5198168848582676121652637622876226209213994133789721626367167406'); + T('2367.8562797376185225678048', '-336.407580836131941', '2704.2638605737504635678048'); + T('15788198606260330370566880001150524384989538847.1566', '-13709725199190579602641841302109970817776478707296', '1.37255133977968399330124081821111213421614682461431566e+49'); + T('-0.000031568319907', '-319812227.101518430949692784775684487114739', '319812227.101486862629785784775684487114739'); + T('12598796115', '780974770970176277984213873835856961457.264132549460821743', '-7.80974770970176277984213873823258165342264132549460821743e+38'); + T('-12.05916350311631637603038624139252323932639510735991686', '-5079694354454213499772.98021638032478529', '5.07969435445421349976092105287720846891396961375860747676067360489264008314e+21'); + T('71001042332266', '-3.8749502633208489001742955080741839268852411926', '71001042332269.8749502633208489001742955080741839268852411926'); + T('-820079175.6236', '2602133034534013517476745071429', '-2.6021330345340135174775651506046236e+30'); + T('-0.05761', '-39324478925.37411997', '39324478925.31650997'); + T('-62331428327357976057401629977344374544913756472193', '5', '-6.2331428327357976057401629977344374544913756472198e+49'); + T('0.0000000079919621468803275713173314506', '-858.3109258585612540534304739091057092569004843368', '858.3109258665532162003108014804230407075004843368'); + T('0', '49228741196127252', '-49228741196127252'); + T('-0.000034775952537402974515789650718361816884555', '-81545435078.9081293428693463384918512495662737197672903499', '81545435078.9080945669168089355173354599155553579504057949'); + T('16831812489134711005.277009209496663', '-2711976951712313.504224327994229016719141489', '16834524466086423318.781233537490892016719141489'); + T('-14.478', '-7657287359215.379', '7657287359200.901'); + T('-5818291298159242639134804410045447574555164535.312859', '-2.318', '-5.818291298159242639134804410045447574555164532994859e+45'); + T('-0.00000000000000000538849432020724', '-0.00000000000043292954381309', '4.3292415531876979276e-13'); + T('129925455598327874.011965', '-373481502322636.54947846', '130298937100650510.56144346'); + T('23460218954598.255822499367', '5031071127.77603001713489698449235', '23455187883470.47979248223210301550765'); + T('0.1925927960745748035942288444958429531342391265261594074', '0.000000000001459509170829311723098341575950975186409687619', '0.192592796073115294423399532772744611558288151339749719781'); + T('-117656959944939983221909881756492.60506693656', '614774667011953263151051375859904824607146.03088402', '-6.1477466712961022309599135908181470636363863595095656e+41'); + T('4636798651708977942823954.838902837557757807933209543802058', '90429847774248975608629.657240991460781465643663', '4.546368803934728967215325181661846096976342289546543802058e+24'); + T('-8547.67216', '695927494328.0531238602508437', '-695927502875.7252838602508437'); + T('0.000000000000000000014395480531584764422752572199140185540212150740674066683', '0.00000000000000000165514253473158542904', '-1.640747054200000664617247427800859814459787849259325933317e-18'); + T('-14004821946.12197759187', '504302757065358604146449888186847067296187319675184252.5', '-5.0430275706535860414644988818684706729618733368000619862197759187e+53'); + T('0.00020661761959205061422959604052997905', '5983723321093859965577864973.03971707767767374', '-5.98372332109385996557786497303951046005808168938577040395947002095e+27'); + T('46.214922256501145', '-19450859033.49527912435693482', '19450859079.71020138085807982'); + T('607064966949689390411116362805267199510935776380', '-326141246118.898400528715804016912422852185420861463709', '6.07064966949689390411116362805267199837077022498898400528715804016912422852185420861463709e+47'); + T('7237360928.529978130333768130950', '52337694872297307366400191176848518321.9397556503425061', '-5.233769487229730736640019116961115739340977752000873796905e+37'); + T('-8.77', '0.00000250309032382179368', '-8.77000250309032382179368'); + T('2238967687307501052.8777593247573250304131289359965647930', '0.0000000006178212737146909670918694', '2238967687307501052.877759324139503756698437968904695393'); + T('4800872.6343266910471003503', '-43.630262', '4800916.2645886910471003503'); + T('6647.98125718514930441819193526467280173179366', '-4671450984642064474363.0922986578251558474619141444116721601', '4.67145098464206448101107355584297446026565384940908447389189366e+21'); + T('5213460994088.42423086209586241417259053025217796299975798215', '-4383637172725.279', '9597098166813.70323086209586241417259053025217796299975798215'); + T('-3.853', '20.661', '-24.514'); + T('-14271230745287310945.6312400262684102', '0.00000029645344606', '-14271230745287310945.63124032272185626'); + T('0.00000000032289911998', '92366796259.63491126551', '-92366796259.63491126518710088002'); + T('0.0000366129951186090146374619139990790117703732293398409315027110', '37573094701656757193581695.06285323469', '-3.7573094701656757193581695062816621694881390985362538086000920988229626770660159068497289e+25'); + T('-0.5052577098964168325539487540838485290578969474', '-2.469847', '1.9645892901035831674460512459161514709421030526'); + T('4157486.219788', '-0.000000000000000030', '4157486.21978800000000003'); + T('-18128173766.45100920958', '0.0000000270000492658439841803', '-18128173766.4510092365800492658439841803'); + T('0.00000011629092179596057280755013975516', '-21061915294588585007285269886442442.89790253758527', '2.106191529458858500728526988644244289790265387619179596057280755013975516e+34'); + T('1628917.78', '-21383191736538.31532452805283554', '21383193365456.09532452805283554'); + T('1559380098949430706272504015810.69555717100498119630529074', '165173284.748129', '1.55938009894943070627233884252594742817100498119630529074e+30'); + T('36374023831462155387508503692769818148680320937241486', '-1.031827911563637271237851439355833437004912', '3.6374023831462155387508503692769818148680320937241487031827911563637271237851439355833437004912e+52'); + T('4.8081', '0.0003519196291075952295892328224194785771237221553', '4.8077480803708924047704107671775805214228762778447'); + T('-3782511514044035022728785099618757257160775562240791309177', '-0.000000000000795400939', '-3.782511514044035022728785099618757257160775562240791309176999999999999204599061e+57'); + T('-0.00005330668607181480434', '71992567276897950313737317415196.7780236926093645024753', '-7.199256727689795031373731741519677807699929543631727964e+31'); + T('-336.6', '0.000000127038712398089934486863716910205972688100425270367714213640', '-336.60000012703871239808993448686371691020597268810042527036771421364'); + T('0.000000002105290992087417133622746', '534450465748570290833221890995266975.81084848298', '-5.34450465748570290833221890995266975810848480874709007912582866377254e+35'); + T('364174039086712731', '1199801.7839398845629477125742176401101168032886363303997296', '364174039085512929.2160601154370522874257823598898831967113636696002704'); + T('53877990578308734625625639885060125168528280779536508786', '103516583128.45068629304281452459340', '5.38779905783087346256256398850601251685282806760199256575493137069571854754066e+55'); + T('3.754616214', '-371.3860189917370620745548727151697481689878945779565644', '375.1406352057370620745548727151697481689878945779565644'); + T('-437926015567097757255992979555892654.76', '-176655130153455.0051', '-4.379260155670977572558163244257391997549e+35'); + T('-0.1515104603550', '4834028992891471292.78', '-4834028992891471292.931510460355'); + T('2.585364', '23561717378268.26567934', '-23561717378265.68031534'); + T('-0.00000091447444444639', '-14131860317888699752291325342793026389759140', '1.413186031788869975229132534279302638975913999999908552555555361e+43'); + T('-16752710965652120653891175893', '2680897440943339017130745026.27310', '-1.94336084065954596710219209192731e+28'); + T('-7690583538728476436923091784910770916580375622563360.6', '4501948.1501019307848784354357334781717072047589062130609366', '-7.6905835387284764369230917849107709165803756270653087501019307848784354357334781717072047589062130609366e+51'); + T('-210025330495963043.1263117974098', '4.0408', '-210025330495963047.1671117974098'); + T('0.000000000000000479418012427570596658200595436786', '-0.000000049076192452', '4.9076192931418012427570596658200595436786e-8'); + T('-4960517.52677', '-0.20046636670669982714317739081794719428221226519297075795', '-4960517.32630363329330017285682260918205280571778773480702924205'); + T('0.00000000000000288393352959940194003685227429', '-8.192356703062703306084975083202', '8.19235670306270619001850468260394003685227429'); + T('-0.000000028227155496211712', '-0.056083781', '0.056083752772844503788288'); + T('-839454439636.987095', '775436321034387281261238203040959529197645939448222.14142187', '-7.7543632103438728126123820304095952919848539388785912851687e+50'); + T('0', '0.002509727311267980178283', '-0.002509727311267980178283'); + T('138194000652491447330479606912366232', '51353410500300307.8188174125', '1.381940006524914472791261964120659241811825875e+35'); + T('-0.0000086433365715041098678710807336961726259747239597811694878263', '-145268834.890490551072993367', '145268834.8904819077364218628901321289192663038273740252760402188305121737'); + T('19818.037591821397251595707488', '-14488431569410083120931256684496228387192907.10558580383653', '1.4488431569410083120931256684496228387212725143177625233781595707488e+43'); + T('-18346363094160301954515801173824097.520003457764168574', '-132648009061.542335857', '-1.8346363094160301954515668525815035977667600764168574e+34'); + T('0.000000097667699203314068161184', '-350287455.727299', '350287455.727299097667699203314068161184'); + T('15800829403166795.5956516579102376267581193644', '29.54785', '15800829403166766.0478016579102376267581193644'); + T('-195433133492107651439595.4648774', '135838131242484112792610949874.2647657738877701854426', '-1.358383266756176049002623894697296431738877701854426e+29'); + T('-2', '-331826679660519916423352740752709.621460214', '3.31826679660519916423352740752707621460214e+32'); + T('412805093083.82448845946357429243448308860021150924', '-4809048739065577.4431952808766327302', '4809461544158661.26768374034020702263448308860021150924'); + T('-0.00000000000235767643592123724694037105632168276114465', '-631328471724074335984942302107.380800425094037515623490', '6.3132847172407433598494230210738080042509167983918756876275305962894367831723885535e+29'); + T('-0.00000000000000220460849133312061988', '-323463691145097046132093042761677037355966973.1622930610540', '3.2346369114509704613209304276167703735596697316229306105399779539150866687938012e+44'); + T('-253226218107370.687861922377273342910306', '-52546031966435521927925716976', '5.2546031966435268701707609605312138077622726657089694e+28'); + T('-148850237194.787856', '1335742711780796103930791.895449687698338781835275', '-1.335742711780944954167986683305687698338781835275e+24'); + T('3481814465412.29117434619146758762840', '57.076809325489408713318479840', '3481814465355.21436502070205887430992016'); + T('-15060251059.6808167001235294317015914788204', '-0.00000000000523357091851957064551', '-15060251059.68081670011829586078307190817489'); + T('29418890050482267.571', '1512904619571947700639.092531808891009', '-1.512875200681897218371521531808891009e+21'); + T('-142805667193382230472426114.689990961689308909', '-519593843130556.62290843106349543226083561151272', '-1.4280566719286263662929555806708253062581347673916438848728e+26'); + T('-358638707277120721995733548.388859943630638806306978', '-12.513', '-3.58638707277120721995733535875859943630638806306978e+26'); + T('-0.000000000957413518520', '154616552.5166', '-154616552.51660000095741351852'); + T('0.0000000000001317378310642388269736805357842209597616683098', '-379.8345851707018360080', '379.8345851707019677458310642388269736805357842209597616683098'); + T('1372405.3778516179192341', '0.000000000000002163', '1372405.377851617919231937'); + T('61969275419603.4874854962928918', '5690625807302485253835751613390387468762288135', '-5.6906258073024852538357516133903254994868685315125145037071082e+45'); + T('0.000000000000000000034542917777656343403295447877924', '-61797209717624749784326365240476675880321846180162004605.08', '6.1797209717624749784326365240476675880321846180162004605080000000000000000034542917777656343403295447877924e+55'); + T('149340986382607394618252', '-348422861056802876633.244173070463082440851567934244', '1.49689409243664197494885244173070463082440851567934244e+23'); + T('21.0305752637461994', '-0.00000000000000000018', '21.03057526374619940018'); + T('0.000000000000245763391729127989068640916678750088674', '3273.6525', '-3273.652499999999754236608270872010931359083321249911326'); + T('8345432957379892013764872946202.3591286636257', '775586.72252749606', '8.3454329573798920137648721706156366011675657e+30'); + T('0.0000000009480848572374298346871921803725380637', '0.00000000000000911217413808095850740763197861728244451', '9.4807574506329175372868477274055944641755549e-10'); + T('70880626.4544855056079364096562061524443476869494980365', '89384389228261065.70802344171649', '-89384389157380439.2535379361085535903437938475556523130505019635'); + T('0.000000045482894532333129301508476587210437088400596510400692048', '24.795178', '-24.795177954517105467666870698491523412789562911599403489599307952'); + T('12.868', '-781064.3974167751464737017896493722545380625', '781077.2654167751464737017896493722545380625'); + T('25861.13776', '-13581866495119551449671.4104186135980', '1.3581866495119551475532548178613598e+22'); + T('0.0000000279851374783866294881264604138618', '0', '2.79851374783866294881264604138618e-8'); + T('0.00000000000023206437663193708130977441410825096207', '0.000000000000000000425087532539980230979512', '2.3206395154440454132954343459625096207e-13'); + T('-0.0000000000000009639012508328042527698', '-81245998951741764.163321', '81245998951741764.1633209999999990360987491671957472302'); + T('144172855150098.8332813431897919012738325392504726164868382730', '0.00000000000000673875', '144172855150098.833281343189785162523832539250472616486838273'); + T('85529799866102780989277206081042484508661294846.1678649', '0.000000006974145550375375', '8.5529799866102780989277206081042484508661294846167864893025854449624625e+46'); + T('0.000000000000000000012367964247205144574', '-24.9923163', '24.992316300000000000012367964247205144574'); + T('-44089358978.731833149676054401997', '-3455102051335455388472971892.2931', '3.455102051335455344383612913561266850323945598003e+27'); + T('2736316.76004751504759105989955248293683757', '8624.126564458951823396869380153', '2727692.63348305609576766303017232993683757'); + T('-7512235696480.75815974687820', '4322425432060440.112621890781', '-4329937667756920.8707816376592'); + T('1041115705901246425717958893168', '192120533687402856766617056619385', '-1.91079417981501610340899097726217e+32'); + T('0', '2999934433827046995221465.734220582881837016702755103103369', '-2.999934433827046995221465734220582881837016702755103103369e+24'); + T('9132760.7806176704193036626898196556957735479237133471', '-22308955.789058912', '31441716.5696765824193036626898196556957735479237133471'); + T('3', '2510378.8302', '-2510375.8302'); + T('-601681273.341517', '0.000000241648614891714420578', '-601681273.341517241648614891714420578'); + T('7267886123144958232.238682838203', '6452575385170169.8619732325801597156212862621827', '7261433547759788062.3767096056228402843787137378173'); + T('1078231543180', '-48380974651269509996197011777331635750068803914.42093022312', '4.838097465126950999619701177733163682830034709442093022312e+46'); + T('-1565742468.40376463', '0.0000000000010050045763134196571949420320006727965700414589703', '-1565742468.4037646300010050045763134196571949420320006727965700414589703'); + T('-38.8392135498095373389405034839742338375432749653', '0.0000000000002005139891413163385623', '-38.8392135498097378529296448003127961375432749653'); + T('-548507159746966309439370232114407604859278960168.292101', '199162629302104211276079352651591547730479754027.137688159010', '-7.4766978904907052071544958476599915258975871419542978915901e+47'); + T('-133758998429281991365.53', '66349112060274991956125.55718817444465', '-6.648287105870427394749108718817444465e+22'); + T('-39898963484560669919956991873123027250358.023847', '473431260689632044598244688486253.757', '-3.9898963957991930609589036471367715736611780847e+40'); + T('0.000000048220620061585093302526746146', '11163285812734658091858.1', '-1.1163285812734658091858099999951779379938414906697473253854e+22'); + T('122477777.735604874', '1468489954', '-1346012176.264395126'); + T('9276934317177450323278091141313420338701', '0.00000000001807544083251601944163916296938991', '9.27693431717745032327809114131342033870099999999998192455916748398055836083703061009e+39'); + T('-726473085520805.68375', '-0.00000123946378123648562805', '-726473085520805.68374876053621876351437195'); + T('-862282453600744233837865549353.0199427', '-778120.1206481', '-8.622824536007442338378647712328992946e+29'); + T('181724674499441806352104852243619274064166.468709530648193', '87301023839580890632.74008889', '1.81724674499441806352017551219779693173533728620640648193e+41'); + T('6267361382130301.64571563169641350047', '-26946623311829959264900239615329966386.978158853097020829667', '2.6946623311829959264906506976712096688623874484793434330137e+37'); + T('9277033429827', '-11814312598907199463437424804147161225245724986.3549313', '1.18143125989071994634374248041471705022791548133549313e+46'); + T('0.00000000000000002212994406752', '506633182883598094135216', '-5.0663318288359809413521599999999999999997787005593248e+23'); + T('-1416.8382390011', '-616915584637554', '616915584636137.1617609989'); + T('173.67513129697677560331958844251459', '1761111548897687055316514264676906704871', '-1.76111154889768705531651426467690670469732486870302322439668041155748541e+39'); + T('-67316184421669659743.09478', '-247379520759715899369976143088432782692.1213428655', '2.473795207597158993026599586667631229490265628655e+38'); + T('-754359424425.325316286', '0.0000000000583', '-754359424425.3253162860583'); + T('-10745411.84893952612941343946024114284555985539357467110', '-2141617925741482283282941658235570196', '2.1416179257414822832829416582248247841510604738705865605397588571544401446064253289e+36'); + T('0.0000000005131824448956120259143731094456835119548321563889982', '0.0000000000261047578282225790207950702922733665519445636593133768591747', '4.870776870673894468935780391534101454028875927296848231408253e-10'); + T('0.0004478755432082113312483869192', '0.005599339808981958070363083539134166424719944', '-0.005151464265773746739114696619934166424719944'); + T('-0.000000000000001512526283647', '-0.0001153048049432909602774', '0.000115304804941778433993753'); + T('88012539757.9404775939244071255700825395712721930057171', '0.000000000008035455856306225847392238301065068', '88012539757.940477593916371669713776313723879954704652032'); + T('0.00000000000000000073487390383290696928688042616356700', '-0.0000000000000000019730868218008762078515130641383111305700506367751468707226', '2.7079607256337831771383934903018781305700506367751468707226e-18'); + T('54733464273.704359284996374313377912882194031', '0.0000000000000066', '54733464273.704359284996367713377912882194031'); + T('0.000000000000002583138166590499538768478879737734800', '-1493063867598060178500693.39747107', '1.4930638675980601785006933974710700000025831381665904995387684788797377348e+24'); + T('0.0000000000035', '16749083849855920068346', '-1.67490838498559200683459999999999965e+22'); + T('-0.000078422658166136557055297306793562873739079876517', '7.9665125435', '-7.966590966158166136557055297306793562873739079876517'); + T('0.000000000000000004026190822483046169679424015359624776872534298', '-6085341714.088449383656', '6085341714.088449383656000004026190822483046169679424015359624776872534298'); + T('-5.0471797394110', '-3508848877366497564225222.8325257807827', '3.5088488773664975642252177853460413717e+24'); + T('-1495955602856711738.322374249597444877184247', '0.00000337196217180', '-1495955602856711738.322377621559616677184247'); + T('-104.2132489251390', '445169760230242591585531000760.7493281224701823786204109196', '-4.451697602302425915855310008649625770476091823786204109196e+29'); + T('-11595.7728900', '0.000000077', '-11595.772890077'); + T('5693501895857569.824083133994650783219625725263527941848014', '38554113375996.91610257332', '5654947782481572.907980560674650783219625725263527941848014'); + T('-30342286.086738328729', '-0.003035138441', '-30342286.083703190288'); + T('23.0418', '-21373402684893068914382744570171080639', '2.13734026848930689143827445701710806620418e+37'); + T('1', '1792759503737685636350819178488081433275948', '-1.792759503737685636350819178488081433275947e+42'); + T('-38470355434482826491837564169', '-5414067362036587155177091588060858998697264.4', '5.4140673620365486848216571052343671611330954e+42'); + T('5376267017268469803391742461123.1484717294535169', '-3003564661167.71329437830040953302813675659856575', '5.37626701726846980639530712229086176610775392643302813675659856575e+30'); + T('242777368241805037089.180775943923462029927', '-0.0000000000102172171156058275649815', '242777368241805037089.1807759439336792470426058275649815'); + T('-0.00000000000000008656604284642653008106731777826037099', '-6154.026848568460638', '6154.02684856846063791343395715357346991893268222173962901'); + T('-25.0959689', '0', '-25.0959689'); + T('4.4106469958140159750720', '-2.7', '7.110646995814015975072'); + T('-1191115481.24960789843322513194152993', '101480579638.7', '-102671695119.94960789843322513194152993'); + T('-64335581449382102148651961778', '-13922618962022310.38526581442116512370091', '-6.433558144936817952968993946761473418557883487629909e+28'); + T('0.000002419556771906375756783331125070178732526767', '-704659820.24047391470481450387646', '704659820.240476334261586410252216783331125070178732526767'); + T('91086229113018291.85868623557295042563793418491', '-6412976188024708199931810226.6257', '6.41297618811579442904482851848438623557295042563793418491e+27'); + T('-166376886435906071.671676003286240157545425223534', '-0.000000000000091700715807851859225796752901241413659885', '-166376886435906071.671676003286148456829617371674774203247098758586340115'); + T('-1604178602185.15391140031008758283', '-0.003382166434467926234482400431856589755224770', '-1604178602185.15052923387561965659551759956814341024477523'); + T('-1550.5067982', '1755233709470197458.5321953822', '-1755233709470199009.0389935822'); + T('0.3014', '43133762452399944536671349566322158.93626365', '-4.313376245239994453667134956632215863486365e+34'); + T('-64.5979', '-0.00000150928436566222094395688472086656530077', '-64.59789849071563433777905604311527913343469923'); + T('-771717.603678878', '0.0000000000000011883865777330973023055360', '-771717.603678878000001188386577733097302305536'); + T('0.0000066980807778368470000446256117729524345121272595145987', '-32254507023.88915752082', '32254507023.8891642189007778368470000446256117729524345121272595145987'); + T('-3.896651617783010917182197706278524524091', '-234356.4491086908087268932525516', '234352.552457073025715976070353893721475475909'); + T('0.000000000000000000365309384905118249080774978958', '-2593982058025640086344149662711100252281819944.0726056015', '2.593982058025640086344149662711100252281819944072605601500000000365309384905118249080774978958e+45'); + T('-807268846295783.66565769288073589114', '-9279.26445753', '-807268846286504.40120016288073589114'); + T('-0.000205066477824679946712948821846487595173765417878', '-11856312001.2579', '11856312001.257694933522175320053287051178153512404826234582122'); + T('21715853560267741681005732.8864129839650731630056482243802', '-26518465662155265718064844202342', '2.65184873780088259858065252080748864129839650731630056482243802e+31'); + T('-0.0000000002358578440972167', '214498383035810423', '-214498383035810423.0000000002358578440972167'); + T('4361467034560145704861429904045767902851.92573820902038', '3.59', '4.36146703456014570486142990404576790284833573820902038e+39'); + T('-5399354467819638876391446017237518290882302', '-9418844852716336037742898633771821467185538647360652378656.5', '9.4188448527163306383884308141329450757395214098423614963545e+57'); + T('-0.0000001178659835758080442880526500344288949201205201989828562345873', '3789033099896128122043510040864191.7055425399', '-3.7890330998961281220435100408641917055426577659835758080442880526500344288949201205201989828562345873e+33'); + T('0.00000000005982976503399938136849324', '0.00000000000075755295405642132036', '5.907221207994296004813324e-11'); + + T('-421450565450862733739882741263410125987400848651432120569319841269419221990711610801409.8070215252564874', '-243392659607204009035334731041415676417559363520670299047012358737705418584457146.868335409', '-4.214503220582031265358737059286790845717244310920685998990207942570604842852930263442629386861162564874e+86'); + T('2995340172136827282681082940837304688534605164044247935816574334297096539991453139359346773494887259928780399192576191569246077843624156140842225', '-1221176047834651784581078792412765867711628546241044712073657285378727907841444910656147964990491084587511386617.262995074491', '2.995340172136827282681082940837305909710652998696032516895366747062964251619999380404058847152172638656688240637486847717211068334708743652228842262995074491e+144'); + T('66496777.1048248699226846854182647353383780982905985351644739', '611110887295764011339.52942021906792320951632532924734194110935652615437372802282890281281736794257440312255694791', '-611110887295697514562.42459534914523852409806059390896384281875799098989982802282890281281736794257440312255694791'); + T('-1008448844147', '-0.0000000000000000019476287', '-1008448844146.9999999999999999980523713'); + T('-0.000000000000000000516432305268991528777659423596262', '-298372128925675105602022884944348.2680420889095373857666394', '2.98372128925675105602022884944348268042088909537385250207094731008471222340576403738e+32'); + T('-123500072490134997.714568930708754033518940686118181893673033346987867', '-2578011852826744661373892702884.2218394002814041283307474989342835625859515222796606255126639775600582467053535947189955421841414538276875776982', '2.5780118528266211613014025678865072704695726500948118068128161016689129181752917936255126639775600582467053535947189955421841414538276875776982e+30'); + T('21874922820040.11669694092724059036160007405283774815020181046771169772206306814891484445951224460904841652605502865721442462130288010', '31200659.3720643364048896004458800281137277425602565342', '21874891619380.7446326045223509899157200459391100055899452762677116977220630681489148444595122446090484165260550286572144246213028801'); + T('-67826336382297566597618786205691264038459363425175950127924836604587803884808989.730966693870183767', '-0.000010934566312291377545830845045333824309160616881090991', '-6.7826336382297566597618786205691264038459363425175950127924836604587803884808989730955759303871475622454169154954666175690839383118909009e+79'); + T('-86697937667412', '-0.000000000000000010885508014854389736820644838727265143960231771135151634179626636837681706789395306987969756304048180103464002627364375565746495636426525896', '-86697937667411.999999999999999989114491985145610263179355161272734856039768228864848365820373363162318293210604693012030243695951819896535997372635624434253504363573474104'); + T('13239420394588114639023745289048683419202338196760858236726250820537420580804213017510790278292290014782026362194', '-0.0000000000000006743804370173243035185881087573', '1.32394203945881146390237452890486834192023381967608582367262508205374205808042130175107902782922900147820263621940000000000000006743804370173243035185881087573e+112'); + T('15390.4', '4140709577543085939068096954669836524172838073868529566429367862425997374799588343038360402928322145938978599798868.9860038387559873', '-4.1407095775430859390680969546698365241728380738685295664293678624259973747995883430383604029283221459389785997834785860038387559873e+114'); + T('1068041657610774618407195645889793312307387843651159034936031674459010136784601252596838684187431642727503640875306262502315681768438', '-270043310707338335874517438680428125320070134440535322728713924276969', '1.068041657610774618407195645889793312307387843651159034936031674729053447491939588471356122867859768047573775315841585231029606045407e+132'); + T('-154248552738364025256732966577155380446860806518778173860697213762291995224.05508159477619681374', '-0.004301153450587648414307336514788194741568895974277211381969307271', '-1.54248552738364025256732966577155380446860806518778173860697213762291995224050780441325609165325692663485211805258431104025722788618030692729e+74'); + T('-63378626295.9', '3581805238164539487164037240742370503938629203589842975477397652', '-3.5818052381645394871640372407423705039386292035898430388560239479e+63'); + T('-4278738506861855303803.685941371999517217112263860961', '1', '-4.278738506861855303804685941371999517217112263860961e+21'); + T('4722957382126750592971015303833730398703112.9325022739644', '135935655079909511034147686928535747252480216156484264244569583366838078412.147497624', '-1.359356550799095110341476869285310242950980894058912932292657496364393752992149953500356e+74'); + T('-0.085968464304838528608760871311794870568574888285345150515011250264989219693613274665433658244439289382746661487914586830547', '-1063290105646753333057649979045695307527992816411892112479790721669979250549466052710783805392449284495837713080894121068105045830138816290.52', '1.063290105646753333057649979045695307527992816411892112479790721669979250549466052710783805392449284495837713080894121068105045830138816290434031535695161471391239128688205129431425111714654849484988749735010780306386725334566341755560710617253338512085413169453e+138'); + T('16124498471436271836.174203105207953106915', '-0.0000000000000000024763633167036725188984815540228360744116272407116469322488952920669576143580628085795995666173708903799390536974903000256740969', '16124498471436271836.1742031052079531093913633167036725188984815540228360744116272407116469322488952920669576143580628085795995666173708903799390536974903000256740969'); + T('13060329629573076844480853604358182661217396692808889824.8934224473655695659109683301950879985310417264401844104664883', '2655975253497367378557314381561996.880511919813781979361114586185190856887597866439252779127105', '1.30603296295730768444781976291046852938388393784273278280129105275517875865498537440098971416434438600009316313393833e+55'); + T('7828918777589631958673609756697717233158380319992892621665', '664080.907156046062276770226566166774715944049', '7.828918777589631958673609756697717233158380319992891957584092843953937723229773433833225284055951e+57'); + T('1102045632452.9793048891721127647873110178015535129097555045251534115765524554358921107344361810504392212504634634', '10480858160855531623861683.3953304547', '-1.04808581608544295782292304160255655278872352126889821984464870902444954748465884234475445641078892655638189495607787495365366e+25'); + T('1588237583004474241570674574155806135977994054265831583868733852477199751.6125369120506144977', '-1758643150655173823782138162406249816325114275744255398376729480619194524', '3.3468807336596480653528127365620559523031083300100869822454633330963942756125369120506144977e+72'); + T('-121908802598585866222616306604158404572834073196639.30608547355363660580248376236860407669299263592702', '-47300202299798563445786841751110283088211407088073898239866395', '4.730020229967665464318825588488766678160724868350106416666975569391452644636339419751623763139592330700736407298e+61'); + T('0.00001018', '-0.0000000000000000003775949557336735085158573036212360452188352127143755001043595772762253543341426632340961625924634823303829450325116', '0.0000101800000000003775949557336735085158573036212360452188352127143755001043595772762253543341426632340961625924634823303829450325116'); + T('-397079706875731796310420230640137723941921196836019.63', '-0.041045084177321369958383091589758576', '-3.97079706875731796310420230640137723941921196836019588954915822678630041616908410241424e+50'); + T('-25255670718458145585125947408178.20003200206718595937', '23790086654614644315060006023753790313128255720789244411931242762019828811933845880517294907262', '-2.379008665461464431506000602375379031312825572078924441193124278727549953039199146564324231544020003200206718595937e+94'); + T('388216212.4067014280868903953571410637325737919396528867014154838280455505188062329013057244757878', '606945158458429249401712430149203335884502730947097871424092354090910701814671093294150735256.311971299391789036587867972923', '-6.069451584584292494017124301492033358845027309470978714240923540909107018146710932937625190439052698713048986412307269091904262080603471132985845161719544494811937670986942755242122e+92'); + T('-13758420895788683271912900568609892935336486526537239092874365', '0.0000000427931529718203244548288038739877932413390488514893154906501275029696961218603307975431172274454', '-1.37584208957886832719129005686098929353364865265372390928743650000000427931529718203244548288038739877932413390488514893154906501275029696961218603307975431172274454e+61'); + T('0.000370061363293', '-0.00000000729718323650351200936805011200230897331673895494582965292153458641292454418451631', '0.00037006866047623650351200936805011200230897331673895494582965292153458641292454418451631'); + T('-0.000000000000000037267063363570380515693697474002406633393933', '5371503530945116760368005450503842267224225935.443693351128547707505116811332630555129489463135', '-5.371503530945116760368005450503842267224225935443693351128547744772180174903011070823186937137406633393933e+45'); + T('987277696994412694084034600111639245624814061790126142560388376636239445837.3', '0.0000021235425818843833696026604635378067565443474', '9.872776969944126940840346001116392456248140617901261425603883766362394458372999978764574181156166303973395364621932434556526e+74'); + T('-0.0000220122231289032322357369232053897035669971251749680777769003202659812319155442107', '3509368133759059638669289822772173467.5789662072733463078733831264876196643926418400220747139696586172005930587312837', '-3.5093681337590596386692898227721734675789882194964752111056188634108250540962088371472496820474355175208590399631992442107e+36'); + T('-0.0000000000000035350393604865398332629110742215182474841758918373895373399045442910854670022381868595891655052656143931905987096001246764946455093272', '0.000000000000000024560182', '-3.5595995424865398332629110742215182474841758918373895373399045442910854670022381868595891655052656143931905987096001246764946455093272e-15'); + T('-207299473460686051638799737978676287687756682811506270896244029691640707953363231798114058314798954715497689478762298979167444328.2154321', '84.9875755884409473552243470559913666018369306750346853705848251516641143427438599427140088', '-2.072994734606860516387997379786762876877566828115062708962440296916407079533632317981140583147989547154976894787622989791674444132030076884409473552243470559913666018369306750346853705848251516641143427438599427140088e+128'); + T('3271753269852982202221073139870131965618400215989200201303890204830390736963230557181963499423.97161923384826121516522802454125216009692783106615', '610709896713545517320.61325351307180550727524165198', '3.27175326985298220222107313987013196561840021598920020130389020483039073635252066046841798210335836572077645570788998637256125216009692783106615e+93'); + T('-171890925468345318289557520417686524897898778387.7049747769377054087', '0.0000000000008626202220397871613368552810353647018975957787995640929353071154146588942452406480447534761421336774021631535188253352941985865', '-1.718909254683453182895575204176865248978987783877049747769385680289220397871613368552810353647018975957787995640929353071154146588942452406480447534761421336774021631535188253352941985865e+47'); + T('11797561306382075049308870675243395524960617768982687731904993854819896455053370294329059.5', '-9266409282787978360416645397432756233517921427389.714082569117296693989915074785029952731114155890581220089683737330882', '1.1797561306382075049308870675243395524969884178265475710265410500217329211286888215756449214082569117296693989915074785029952731114155890581220089683737330882e+88'); + T('-424430636249988989578724500467105386916790551644026356512230425657196415575958762209685893722637592.42515458907522545588092531969', '-699146481762025356180846176956775322378040371282973135438056771990065583612223969221925059327626424485', '6.9872205112577536719126745245630821699112358073132910908154454156440838719664801045971537343390378689257484541092477454411907468031e+101'); + T('-0.00000130798527635604695258712844244105224418951215845097932279572456369133399455', '0.000000176284029965375880004181656007589949467118245220868298039483413025781635383510797', '-0.000001484269306321422832591310098448642193656630403671847620835207976717115629933510797'); + T('0.000000000000462071916734680776281054', '1143549992221513568696244482022549056707895554082064.282542', '-1.143549992221513568696244482022549056707895554082064282541999999537928083265319223718946e+51'); + T('0.0000000000000000426800518382365970695662273350350877364291904795717019319799963342380112501925257351654', '0.0000000000000013278679842106035272342072', '-1.2851879323723669301646409726649649122635708095204282980680200036657619887498074742648346e-15'); + T('-0.000000000000000000016354802329513866', '122022209857.15312653353983161651403936785710765909662481656738699983151473856575442647972705932905488645338136045162567147688725', '-122022209857.15312653353983161653039417018662152509662481656738699983151473856575442647972705932905488645338136045162567147688725'); + T('25801628293435628816490256345279207687083725145006124892029160063238265267.3431144744384935936819525999160077311803590506825603145972954326789291', '-285119248451148500201319196762968888442368918233718192676490082873043334950267626673646944070692473524519642', '2.851192484511485002013191967629689142439972116693470091667464281522510220339927716797718360998525367627849093431144744384935936819525999160077311803590506825603145972954326789291e+107'); + T('0.1423', '2429833169520732752372574762485088466742598273119469284544035996929667546050321271916945887077199411341346293601.72939677', '-2.42983316952073275237257476248508846674259827311946928454403599692966754605032127191694588707719941134134629360158709677e+111'); + T('3.80188793676049024809', '0.0000000000002833272682244473387924044230539081036171682212105326649350597590901815021244717391629977491943712364070741264536987011350709308', '3.8018879367602069208217755526612075955769460918963828317787894673350649402409098184978755282608370022508056287635929258735463012988649290692'); + T('-322814450973877874279521.0', '263039808493736512406179831713394337242295861157184.672295063', '-2.63039808493736512406179832036208788216173735436705672295063e+50'); + T('398742236640963', '44.00495510581548851408966', '398742236640918.99504489418451148591034'); + T('-3573583864.539627856711706646067988209079651520670851811891852561', '-0.00000000000000000329278234017133237246586831901282091949913572717292793996445894343939371558967511917774705488676891269560643860123317086289974802538004355597691349812', '-3573583864.53962785671170664277520586890831914820498349287903164150086427282707206003554105656060628441032488082225294511323108730439356139876682913710025197461995644402308650188'); + T('1912764785977618050454430552593203249088615699', '-485515908236945825.82230967655356283052002508081428895192743749813173660196480495243134130534734417501263634', '1.91276478597761805045443055307871915732556152482230967655356283052002508081428895192743749813173660196480495243134130534734417501263634e+45'); + T('-209.9480474748934376775111457605595206860865832017099805042786198516620696960966458436798888919348', '-539891303089085349109418789373221841481476900927418909970947.98689276127478239299357632782372174032445906', '5.398913030890853491094187893732218414814769009274189099707380388452863813447154824305672642010542378758582900194957213801483379303039033541563201111080652e+59'); + T('14686906472232406033983442617897900163963974602', '-1420622706271964656354950704.1697326665068929806041828344182380198712418608178840095762', '1.46869064722324060354040653241698648203189253061697326665068929806041828344182380198712418608178840095762e+46'); + T('86543050569726858572005888237520502257116260484789853410061111403475802158093598826908247486.836335533846125875491403509186859062493992', '-0.0000051065665739422395774587551282612336173295903645593309699764793560943989004198255241', '8.65430505697268585720058882375205022571162604847898534100611114034758021580935988269082474868363406404126998177309809679419873237276093295903645593309699764793560943989004198255241e+91'); + T('342895773116306829110212528967784741562164292.01513115088269038806033385850', '0.00000118862709647506650871551520859000440835170689555307064827601186026157168885360722702508608962915698632770928960656597545', '3.4289577311630682911021252896778474156216429201512996225559391299382514298479140999559164829310444692935172398813973842831114639277297491391037084301367229071039343402455e+44'); + T('739924109312422522091016571038779963072584', '-64775259.6826186518884824872925596155743958419605122483453848814970771390948590513454670', '7.39924109312422522091016571038780027847843682618651888482487292559615574395841960512248345384881497077139094859051345467e+41'); + T('6609838981181176735659252.7740697649501200112', '-11286186232989566466114315553164377878561114785839243669268249646267418129841210.35980783715095457778535932', '1.128618623298956646611431555316437787856111478583924367587808862744859486550046313387760210107458898535932e+79'); + T('-187391162221219921070460320744240172407912239353798545547332717684757305669457677296318215340489442645.28366529601614598850373', '-9113.9748812203681488412701629366868978775543399390741272418220574874035442918413045437197807171343403867576380368103250028', '-1.873911622212199210704603207442401724079122393537985455473327176847573056694576772963182153404894335313087840756479971472335670633131021224456600609258727581779425125964557081586954562802192828656596132423619631896749972e+101'); + T('545567297425658900059033345039628434103460646144205348817463850197715173654.760035446992603845914884479975954101703', '-3.25531678994006', '5.45567297425658900059033345039628434103460646144205348817463850197715173658015352236932663845914884479975954101703e+74'); + T('41005341883885124910253307373863933024572386393999832504926014424.04068230757553061685965194104847256614930594539431445372085538790197', '-0.0000003064573352368766798045131330999970376084101941252529063279240676746738279894937999916288137325237148909161534147848901003719756893653182826', '4.10053418838851249102533073738639330245723863939998325049260144240406826140328658537363317455616056661463435538045085789737617158260376746738279894937999916288137325237148909161534147848901003719756893653182826e+64'); + T('-21772543213224719483282057502996460271243910021555859843788194322560764800215622961743791', '-219538453980808949925972347106117120906813214436418773865178519764872595507494270091275.549469440429227', '-2.1553004759243910533356085155890343150337096807119441069923015802795892204708128691652515450530559570773e+88'); + T('4843564632.07325685271287267587642074472329955', '-2253.1', '4843566885.17325685271287267587642074472329955'); + T('-1465639293224611258.1640919252320447', '0.0000000000000009272840616057150840199792579106702667313583800294803029238640296064513396998901049886143310419234155012846386', '-1465639293224611258.1640919252320456272840616057150840199792579106702667313583800294803029238640296064513396998901049886143310419234155012846386'); + T('46668145279017817857972034174120636924960629989668564040596683624271865534.57', '84.9', '4.666814527901781785797203417412063692496062998966856404059668362427186544967e+73'); + T('-738241543348122522391845849281775440907729860333.816380311486149269839379', '0.0265469560323666758057467119830695293620004914159121944165101243889371879961', '-7.382415433481225223918458492817754409077298603338429272675185159456451257119830695293620004914159121944165101243889371879961e+47'); + T('0.000000000000000001734597550329925170683988212040626455377015149950764555153937498632499946117886619477443', '21522778596700039662643518332810996834742527241604682606746145945739181821479030002316968608237.843101668183269553916654985900396859343464324', '-2.1522778596700039662643518332810996834742527241604682606746145945739181821479030002316968608237843101668183269552182057435570471688659476111959373544622984850049235444846062501367500053882113380522557e+94'); + T('-0.0000000000000000000309703805445398610474900212495574298677865146433319735295565686883503979155963415371001608918561542864325055703887850430784945642120545934153', '-5.6227', '5.6226999999999999999690296194554601389525099787504425701322134853566680264704434313116496020844036584628998391081438457135674944296112149569215054357879454065847'); + T('-5064143323681064652393632163111.93089333677771516967546169174265515779023117868686275683397034493611565', '-0.00000000001073777696437370169', '-5.06414332368106465239363216311193089333676697739271108799005265515779023117868686275683397034493611565e+30'); + T('-1396826091243475193.1', '-1288002403964300782016794952204121336647057494337679233.713597178033979199448274404277214801719513817499902870656', '1.288002403964300782016794952204121335250231403094204040613597178033979199448274404277214801719513817499902870656e+54'); + T('364339635.011212286283196681723183929801097146881219006560017', '-1005720700996298', '1005721065335933.011212286283196681723183929801097146881219006560017'); + T('-257562976090545385234669132851624833292427282439090020.719343974047857466853161243072384425509047149775370947901720407174956846928296202473095472', '-1623127319151265475871704129654550871405407416881602056343569964910663809884633229508196329223823041.7206810159931522079791856822', '1.623127319151265475871704129654550871405407416624039080253024579675994677033008396215769046784733021001337041945294741126024439127615574490952850224629052098279592825043153071703797526904528e+99'); + T('0.0000000000000220607316968906929903970883560258897819751208683268360364851788263', '0.0000000000000000600784639775121406482942932372611353', '2.20006532329131808497487940627886286466751208683268360364851788263e-14'); + T('-0.000000000000043989086', '-44309230851677894984939938565089867097397779157566647630330915058596891092311151485774600807340241541392574864911717487.862518042789404', '4.4309230851677894984939938565089867097397779157566647630330915058596891092311151485774600807340241541392574864911717487862518042789360010914e+118'); + T('-0.000000482926598434254495862080721294034240317086724705402508463332112037991339240729385845354673866033075192672349090063032508', '-131360031110406516192037002195365556732148135932795271282547111275387791270050177023234968875866030325638578', '1.31360031110406516192037002195365556732148135932795271282547111275387791270050177023234968875866030325638577999999517073401565745504137919278705965759682913275294597491536667887962008660759270614154645326133966924807327650909936967492e+107'); + T('90662704837359221983067383218111894.9575101269344703639471125782669325117231999424752935395342', '-1003082878257466499301963750949455756319801133590.9096038135671589349331563057210', '1.0030828782575571620068011101714388237030192454858671139405016292988802688839879325117231999424752935395342e+48'); + T('8122241424803915907910045579802249996527160493328189939983695513719757201277358369302040281397660429815708520244075564900409812', '5953815721349504215933972982145270510517473063697276921387486344144210713.78', '8.12224142480391590791004557980224999652716049332818993402987979237025298534338538715676977088018736611843159885658922075619909822e+126'); + T('7991350014483385014452400954462003012335870376818921107933891647581751944961549909381574328015589839.2322422374080381874344210390470431707892', '-18688.878545993875113185968540055115951056413820404', '7.991350014483385014452400954462003012335870376818921107933891647581751944961549909381574328015608528110788231283151373402961094162994227203020404e+99'); + T('-1201549207285023471623288363.093077137984596708144478749068', '0.00000026539824642010892262104442818872329795607002102749766710877993859556577972466454691281569600833952883562418043758499574880445814224717667678262548541', '-1.20154920728502347162328836309307740338284312825340137011242818872329795607002102749766710877993859556577972466454691281569600833952883562418043758499574880445814224717667678262548541e+27'); + T('75311239722806498991168677625201999153196464897386996233710029214675693542594584.030032275297208734980242411305757844200195419550995808', '0.00000000000000174652609458505387986677857979923', '7.5311239722806498991168677625201999153196464897386996233710029214675693542594584030032275297206988454147826251877977421615620320995808e+79'); + T('0.0000000000000353682715117343396008139392193804645279990939015187625700163231712251406332', '0.000000000113523402513085710775666504535102628539977357555114115140', '-1.134880342415739764360656905958832480754493584612125963774299836768287748593668e-10'); + T('25393267156020697622507966272559237.59641792718917124986994778365558647150342934845113943261397901868166533972121', '-8953602751519594072912851200714566873449464820520095981074552864073057275.64400277107712961954031710933646037', '8.95360275151959407291285120071456687347485808767611667869706083034561651324042069826630086941026489299204684150342934845113943261397901868166533972121e+72'); + T('-109621598899109119.681443742531046712086897', '-374581278609124761376087334567960408592166724187316443183587025428047356270871954503065666641000369697417943372656053785.43872597385309997628624757', '3.7458127860912476137608733456796040859216672418731644318358702542804735627087195450306566664100036969730832177375694466575728223132205326419935057e+119'); + T('-1', '-975353903601003155097156088969595825652369092261504414412601751527209186035985001687896975402318843359120945984358141908733802607901210061', '9.7535390360100315509715608896959582565236909226150441441260175152720918603598500168789697540231884335912094598435814190873380260790121006e+137'); + T('-1010180736624357632304278472376562', '-2976630172749484868944762912267709771588766925127519991889274779878786428243958065464677092268718803221719459273939687', '2.976630172749484868944762912267709771588766925127519991889274779878786428243958065463666911532094445589415180801563125e+117'); + T('-0.0000000000000000003534066629774631966159394411462082995873351999578646015320944827942055231355490842935810', '-0.036044356747079611060903437812032142854350', '0.036044356747079610707496774834568946238410558853791700412664800042135398467905517205794476864450915706419'); + T('-1526096527808476160349609179852946562211.685903646022496376055878254', '1362591651000463812653063829143557737447628829546619971189589.203149513988762118328955262250680582456193660886095627130648934202517770563176', '-1.362591651000463812654589925671366213607978438726472917751800889053160011258494384833516250680582456193660886095627130648934202517770563176e+60'); + T('19320521819464336609965537393303850154554779478967237541.181740342436742642132602701909555424833647068652587', '36.95235866', '1.9320521819464336609965537393303850154554779478967237504229381682436742642132602701909555424833647068652587e+55'); + T('0.0000000000000000059086539273106107233962061788234561229771196283927754983525', '0.000010966647043776077878565685051717652096966', '-0.0000109666470437701692246383744409942558907871765438770228803716072245016475'); + T('0.000000000000000291508913251611559233670098989956434773070295291467160805172311376194998291058162533782938726179866516047606', '-1628909277725099787508683923508579707615799.2781649599495440150562819682935976323342667567117971951187701859394514400', '1.628909277725099787508683923508579707615799278164959949544306565195219905156866004365746668231968189065477406612245172311376194998291058162533782938726179866516047606e+42'); + T('2456565085671291252533213649183332261726393175508794379993650690041356484115074939702355', '-792071839545569033370633444973336689417838.95905325719912926858163081', '2.45656508567129125253321364918333226172639317630086621953921972341198992908841162912019395905325719912926858163081e+87'); + T('36242208914619642339819083618221621528937544636695183870528988863103659500324120453213846411263678533206476169383042170996012205255558591125924287', '-8527637110089077004296133078.548689219750368210567156616', '3.6242208914619642339819083618221621528937544636695183870528988863103659500324120453213846411263678533206476169383042179523649315344635595422057365548689219750368210567156616e+145'); + T('-288139905642.85133972865494566177561360699121828453190729669018251776515265250985806198704228574404406409996058809130695', '57.685745719', '-288139905700.53708544765494566177561360699121828453190729669018251776515265250985806198704228574404406409996058809130695'); + T('-680590848077096656729099299986105268010775', '-3940756250582632953280085589688456490450830441053358639711015662685.5876458545849231450334623183020123887046847733341586636887427156443214389386142', '3.9407562505826329532800849090976084133541737119540586536057476519105876458545849231450334623183020123887046847733341586636887427156443214389386142e+66'); + T('-0.00000000000000464798477570881362597831391087848642171588956612352664397214025637282503146289569312188996809201235391721184701297091963', '229510668379945446635992190232641551178111333311952316902120658018936303610', '-2.2951066837994544663599219023264155117811133331195231690212065801893630361000000000000000464798477570881362597831391087848642171588956612352664397214025637282503146289569312188996809201235391721184701297091963e+74'); + T('-47431205694992565418930842840793703282717398.191947035122622', '-38262831081463216678995758515.24', '-4.7431205694992527156099761377577024286958882951947035122622e+43'); + T('-919364307978.8988017767137102', '0.054658', '-919364307978.9534597767137102'); + T('-143225400724940647154298336931676918152131842385395309001703075947743779850991836523285204182327721048431248004372787336203288188136955101.42539412', '-0.0000000000036444268460743503614664927361907234', '-1.432254007249406471542983369316769181521318423853953090017030759477437798509918365232852041823277210484312480043727873362032881881369551014253941199963555731539256496385335072638092766e+137'); + T('632955343367277745405583809562259843947443640083859269919841228715604160541151817585859720.153766976201457179988669391500248183047854', '-3980620775419876921723363242387478932830746531218598561304844371368103759418106738578.2191228007189231296352120987296973541145408118698522', '6.329593239880531652825055329255022314263764708303904885184025335599755286449112356925982983728897769203803096238814902299455371623948118698522e+89'); + T('-11431356965911717667550228258416437331889929786766103155708832250235968861451582992625848777060561188238182761522625940473897303', '-21494014792784787595184007767480630.4718359202897210704378425198', '-1.14313569659117176675502282584164373318899297867661031557088322502359688614515829926258487770390671734453979739274419327064166725281640797102789295621574802e+127'); + T('167445439608039555943133.2565349346255919159524753710331727927482546974522844127', '-170610177.84658737421848366816682443401980132194941329175375443204315', '1.6744543960803972655331110312230884407558411929980505297411469766798920603884474315e+23'); + T('13588050303471.14204224509147709748772701071961428', '-2846670239.21559765880387140454090103138633524132996006051956914300933861577438157749445114659138365637629', '13590896973710.35763990389534850202862804210594952132996006051956914300933861577438157749445114659138365637629'); + T('2884217633259642787319342000051603653521516691886608156996898524479398460095322784150599567666195414054636506165396248262312499110274037149829793', '-0.49', '2.88421763325964278731934200005160365352151669188660815699689852447939846009532278415059956766619541405463650616539624826231249911027403714982979349e+144'); + T('1628348053926578504775310683640594840.18', '-5', '1.62834805392657850477531068364059484518e+36'); + T('0', '25.6085', '-25.6085'); + T('0.686217890943093321456902957432427930920753888456197188131905279831038714006759313970367467076944122805245768167433186925922801013913340', '-280.9846437544474336300817147012964188574151285470284551305', '281.67086164539052695153861765872884678833588243548465231863190527983103871400675931397036746707694412280524576816743318692592280101391334'); + T('0.00000000000340332021329324173250202191356270977362746852052557847139210569709283686364254219951529694529651271453552821650417', '-164368911717325046920.73329482756545681454251205873812192944414945415279875808501852199453462518417817132233', '164368911717325046920.73329482756886013475580530047062395135771216392642622660554410046592673088127100818597254219951529694529651271453552821650417'); + T('-516534324070139884.7741879765292957505952198282777909600935487202', '146754452557367377599239860534956890285095395520562623.08414402490725339577004922478313417', '-1.467544525573673775992398605349568908016297195907025078583320014365491463652690530609251300935487202e+53'); + T('-7862150161740.333843293297844', '-3489304238554590513247507065916226966675791294808848752.7395893237178003837558347838402377186885033242010881848399380565235778', '3.4893042385545905132475070659162269666757834326586870124057460304199563837558347838402377186885033242010881848399380565235778e+54'); + T('-76425877353723218923193769976112627809694461006515127338.70903900591342267672', '-81405', '-7.642587735372321892319376997611262780969446100651504593370903900591342267672e+55'); + T('448890821004569959750117.3985925529062982149919', '-0.00000000000006771592275943991478905618644801247941193384606583159209550989858234', '4.4889082100456995975011739859255290636593091465943991478905618644801247941193384606583159209550989858234e+23'); + T('0.00000011406978978113385456966935146505617316701596378729845687370006219616672043338275771066022032618558072376690445085965016785383519759578849021601322', '0.000000001074333633497324260534', '1.1299545614763653030913535146505617316701596378729845687370006219616672043338275771066022032618558072376690445085965016785383519759578849021601322e-7'); + T('0.0000000000000000098388959587739740341162303378089561994855515112821239635081705976158309039469451054135', '-0.000001410700377949704801346056617673576599569410838070841791880586705430927605302815864034641907656163728488162489705472103253731031782190814249810704', '0.000001410700377959543697304830591707692829907219794270327343391868829394435775900431694938588852761577228488162489705472103253731031782190814249810704'); + T('16965', '0', '16965'); + T('-173296003170746074411974480464449849275789060677253187906655130.35621428918277091401054198685991445606', '9987307250642568848222273488.07237677103631', '-1.7329600317074607441197448046444985926309631131982203612892861842859106021908091401054198685991445606e+62'); + T('56313995097156205794032855788026957442153004380906', '1959197690.09', '5.631399509715620579403285578802695744215104518321591e+49'); + T('-16265987991789427405120519655124290086694897782465483955109881892312790.0', '-8472377582734657144678697107349408612484052002424435997452474401137339657179.8354793580669182195980931547215677234501775415', '8.4723613167466653552512919868297534881939653075266535319685192912554473443898354793580669182195980931547215677234501775415e+75'); + T('554861276750786050195093192911576646864838216939018115253478076548406847106024415049015009323070447826851.1693209493824199114881022365592076838779457', '1729203992886560182769799176627696.7030206', '5.548612767507860501950931929115766468648382169390181152534780765484068453768204221624548265532712711991544663003493824199114881022365592076838779457e+104'); + T('2350978155540287801691924042190620635285451442925634874069224914124883396043040648506312047176852810899548676455764006316837438', '-2551506628086094864840341408447994216741146364868142569612506063507487425025110.309931396625986', '2.350978155540287801691924042190620635285451442928186380697311008989723737451488642723053193541720953469161182519271493741862548309931396625986e+126'); + T('13203137085009109554034420.10176018304241579430683160045', '170019441677688.0741576755619011964973604245532745397', '1.32031370848390901123567320276025074805145978094711758967254603e+25'); + T('-91119940320533621629925088838381377761994531140379743426003837742546140176935348401012460941486552655906857745993505840563823144054409171683778779229', '-74652873494135054265048456139803801421904108545479487454387811725432723023321219093564112176252137605.48139182125841144031282511', '-9.111994032053362162992508883838137776199453114030509055250970268828109172079554459959055683294107316845246993426807311754050192496084505950752664162351860817874158855968717489e+148'); + T('8687124396055842976264601096501451863929462701537236230130347130957533866751062788203.6801997865475627493037980272028364235779819787945862854388786', '4393.0547331217320860218042817496323025348168504', '8.6871243960558429762646010965014518639294627015372362301303471309575338667510627838106254666648154767274995162775705338887611315787945862854388786e+84'); + T('4227267383837391491108630568817648.18', '4703737939182568540209790636363.1253794769484641462244847000439730177702702662024029476513485225861537356914086556572097', '4.2225636458982089225684207781812850546205230515358537755152999560269822297297337975970523486514774138462643085913443427903e+33'); + T('1331599892524734478741104974374901736796', '8613986863.5286325031971100693336720522422497083861729312475851625078455', '1.3315998925247344787411049743662877499324713674968028899306663279477577502916138270687524148374921545e+39'); + T('-1435605.5713', '-0.000000000018538927081499603430462441110384554897082244', '-1435605.571299999981461072918500396569537558889615445102917756'); + T('-0.000000000133889283781216077153647008712974175960714836447518299614317834783467849261908546492568082004751707979306122', '-0.0000000000000035759233716787482258438019525200', '-1.33885707857844398405421164911021655960714836447518299614317834783467849261908546492568082004751707979306122e-10'); + T('87163032789315876139411128215473910733429571507063141054764287035611190214823258259', '0.0000755980441879469673888177662328951349071414731847083920686253624381293723357131370215782774531128617325392065045408062', '8.71630327893158761394111282154739107334295715070631410547642870356111902148232582589999244019558120530326111822337671048650928585268152916079313746375618706276642868629784217225468871382674607934954591938e+82'); + T('-9968522225042314632060285988443730732405555397698281720591792230663115171346412535.174789294146936609880713903210346686578323', '0.0000000021461329196842167039414796333960450676424674430116711196401669424125946978994613357227', '-9.9685222250423146320602859884437307324055553976982817205917922306631151713464125351747892962930695295649306071518263199743680676424674430116711196401669424125946978994613357227e+81'); + T('-682416717526953753240801236778041538122363074270539580771563.1595987724242158270047634677372763495475148', '-3227642122668496595741822002740302413422234499976652746605683904.9121550427442753468836876331877102668', '3.2269597059509696419885812015035243718841121369023822070249123417525562703200595198789241654504339172524852e+63'); + T('-429867232476019516593307236395662379525520042732934988570902.8316836760759159804393112331039824296654196079561094919062415600057', '-0.000000000000000026333381057307903712946311446867749470440652084025735627892221995697998435370429702', '-4.29867232476019516593307236395662379525520042732934988570902831683676075915954105930175796078716719108161088360021465589475979964372107778004302001564629570298e+59'); + T('-138287645002871107111044106385113952028931497798857994040661009094288998455256.8095564239091729600518464971437959597906', '-0.02071931654118840583447405976401564732916585950777930', '-1.382876450028711071110441063851139520289314977988579940406610090942889984552567888371073679845542173724373797803124614341404922207e+77'); + T('4607551890089700279547745482119886413441062288238756662240999999639177353304250157030', '43307073.38', '4.60755189008970027954774548211988641344106228823875666224099999963917735330420684995662e+84'); + T('6920.57190940428', '-8645401812213044670689632263.29035180132881948349690692829976371388993201328638', '8.64540181221304467068963918386226120560881948349690692829976371388993201328638e+27'); + T('500991793', '-251557191089121012500206645723710630.646511742483974550401389816576313099323805855573024993', '2.51557191089121012500206646224702423646511742483974550401389816576313099323805855573024993e+35'); + T('-115233062337818810389000461509795282853985222.0275735411960280352874012910144768141872396745625756737723537749444300561710511610476184357904253808912', '0.0000000000495099894662293514089120418920723309611170282344708775045419868213594847406514716827907876160549261', '-1.152330623378188103890004615097952828539852220275735412455380247536306424233888560793120055236927020068246524489720429924106457882699074732161685072549261e+44'); + T('1084723297738639869084299710762779016169159497808468673580004946719115763988516377.060148266799130410609492416453157', '1150603671275361.430584849644', '1.084723297738639869084299710762779016169159497808468673580004946717965160317241015629563417155130410609492416453157e+81'); + T('-620198612430107265937225529159584510224233045.598796327230401974796505862412', '8699552316331245145807826624182809542207885635402715254490655987896376746007483640710686.1', '-8.699552316331245145807826624182809542207886255601327684597921925121905905591993864943731698796327230401974796505862412e+87'); + T('-0.00000000000000020169002470441637778693075769563628101156942009213003841435019513553874336624464221898908333827', '55.3331815493788993877220026432941015', '-55.33318154937889958941202734771047928693075769563628101156942009213003841435019513553874336624464221898908333827'); + T('-509764.93911892369554928129540502547911386352816580281788234048871931011148766546995671957100520016074479741', '-7382417043131145488539352159357244152353681306894423489936116601393190269054624158211831.7', '7.38241704313114548853935215935724415235368130689442348993611660139319026905462415770206676088107630445071870459497452088613647183419718211765951128068988851233453004328042899479983925520259e+87'); + T('-893000341.075147812975752038206750463966592844149263520700585107620473591684006742845795349014', '0.00000776091913729118336285439866565205907149064403785475', '-893000341.075155573894889329390113318365258496208335011344622962370473591684006742845795349014'); + T('-0.000000000000000002814616587779740535288495495412599887159946708410461905984819284638731116086722791161143897920235719807012684318952369879227930494144', '-0.0000000000000000005799625258433885817982609943558405190973445644397869297994874177616229666024278363086227571999810218116665', '-2.234654061936351953490234501056759368062602143970674976185331866877108149484294954852521140720254697995346184318952369879227930494144e-18'); + T('1834227012352.2713316845164117139085412957218639331749015268185070505', '-4.100048574136744539426673770238786618959827409', '1834227012356.3713802586531562533352150659606505521347289358185070505'); + T('0.00000000000000000142961844636281549156124640702213622371103004167390847447921367714972088995760542647850152690627680982452493981026', '6.1225395082722753161364268570886553216', '-6.12253950827227531470680841072583983003875359297786377628896995832609152552078632285027911004239457352149847309372319017547506018974'); + T('290235134201682761299.48447329578802943221996178987974147165456654679438349900205350412258435388669557', '-5.251662064778328732803891', '290235134201682761304.73613536056635816502385278987974147165456654679438349900205350412258435388669557'); + T('52669199650648.0733153757733982313403970813057', '10386465556240559678192244.497235287453859060119988808620945435183307855210', '-1.038646555618789047854159642391991168046082877959172731524543518330785521e+25'); + T('564130335207659724622920169067214809519472975333569366119272839995955208278726184985111100693242720484069747466014', '57536812827159741113793203777862678446119346340872225907713497972953215.80310853441834229459084096442571657822478233621137898187840818727731', '5.6413033520765972462292016906721480951947291779675653895953172620275143041604773886576475982101681277057177451279819689146558165770540915903557428342177521766378862101812159181272269e+113'); + T('0.00000043656429426791027383754468210558259906392852085133878453458581222463232577586181', '-271425626170236597587007634813280769267131068497092506238139897701753645335886637971522821911055750072613148529', '2.7142562617023659758700763481328076926713106849709250623813989770175364533588663797152282191105575007261314852900000043656429426791027383754468210558259906392852085133878453458581222463232577586181e+110'); + T('6481867806858740818821154.19518001214840199197053504721', '-24870963461424.9780802848031479299059282084582297393626139502421237942537429692805914399653118951', '6.4818678068836117822825791732602969515499218764632556682297393626139502421237942537429692805914399653118951e+24'); + T('148.5411044804108834287889704020144411630326474907357936225017786074238828250511258990554797855720803620532362291284421872991756289113870701', '1687016782820477407264422479587.9602119652053424651802657', '-1.6870167828204774072644224794394191074847944590363912952979855588369673525092642063774982213925761171749488741009445202144279196379467637708715578127008243710886129299e+30'); + T('8753847156263969.74982484420314345673976831768407096355073194364180012848383603365570684241235747026243411927098077087739548', '-0.00000000000000003613762', '8753847156263969.74982484420314349287738831768407096355073194364180012848383603365570684241235747026243411927098077087739548'); + T('-16837319431920685704407321.888557412698092013196681699716686208311450572004672272353233944129089212943388330973909123531051036641', '-1434889199750833697003122178022.058644773719134292792949141816179232326040948745', '1.434872362431401776317417770700170087361021042279596267442099493024014590376740327727646766055870910787056611669026090876468948963359e+30'); + T('2735023455757108232743.584761329', '-883406375899961097762446633306214261625385142201740151414521222441704673205539113483156696740358847547521951238312862.0627294', '8.83406375899961097762446633306214261625385142201740151414521222441704673205539113483156696740361582570977708346545605647490729e+116'); + T('-689135077159362593015820247134066.74813269929304775244252204', '62605354599199881779688698278184513063808732', '-6.260535459988901685684806087120033331094279874813269929304775244252204e+43'); + T('-93750448497700582903413063583342246551210153127015625232845923539378736289601064020685503346328943587228412139711305446249370169912156093', '53953865201297384977039465.35433748887805', '-9.375044849770058290341306358334224655121015312701562523284592353937873628960106402068550334632894358722841213976525931145066755488919555835433748887805e+136'); + T('-0.0057925051239501905861387596709549007647236435494415395249013033629943873073216811979342031615889626092942975371394702866419123165012397470964059557', '246259164947571633614812263148098657772268077205108363195576642177873196268402803807976843988029200739623402923', '-2.462591649475716336148122631480986577722680772051083631955766421778731962684028038079768439880292007396234029230057925051239501905861387596709549007647236435494415395249013033629943873073216811979342031615889626092942975371394702866419123165012397470964059557e+110'); + T('202392866176', '-8676236136205102485012807', '8.676236136205304877878983e+24'); + T('-191.8725060079318845278193570544207471357649633582270807761589989403533787967818943544130158154895636289', '5967581749760718357075978833.8340341311556837206664', '-5.9675817497607183570759790257065401390875682484857570544207471357649633582270807761589989403533787967818943544130158154895636289e+27'); + T('-87951143371583656362303007410293120018882465816507444269402753743368383718', '-2822.68023786349119776278475695671489424412910651386641750260764', '-8.795114337158365636230300741029312001888246581650744426940275374336838089531976213650880223721524304328510575587089348613358249739236e+73'); + T('-2049698402682368740429778132608', '3963994567.44431117756210251278243787772', '-2.04969840268236874043374212717544431117756210251278243787772e+30'); + T('0.00000074347728103607719356135364801379323744725864451372933321009322616176605367628546021691519809986', '-8540850540817997066546115303931551402143341270504721504778718364110693.89400762910442310131822804681639793', '8.54085054081799706654611530393155140214334127050472150477871836411069389400837258170413739542160817004594379323744725864451372933321009322616176605367628546021691519809986e+69'); + T('585159105540713468004754266887.654351367900', '1854705740580.2225867', '5.851591055407134661500485263074317646679e+29'); + T('162041637982.2683403774133705140156618173084938487183540577160265469', '-2197013308.144', '164238651290.4123403774133705140156618173084938487183540577160265469'); + T('174785435.552717047585130654711', '0.00000671119928322725418238685556928705875440728878357795977246824794908748816696845271345930860829862726899160137025675180272592756862877515530420748', '174785435.55271033638584742745681761314443071294124559271121642204022753175205091251183303154728654069139170137273100839862974324819727407243137122484469579252'); + T('4747036426204027106781637076.99097717205130208396664801692006667885526524697426', '391523438182724274674956108257313659034734187677930.91506053303114035059545228819956', '-3.9152343818272427467495136122088745500762740604085392408336097983826662880427127949332114473475302574e+50'); + T('-10745175155350240219231799201005463136151.98855739210592020709205390996178000687517676358804699378042357529248908687167266714727400279', '-0.0000002750441382972253188972707268540147394058399897719491538526', '-1.074517515535024021923179920100546313615198855711706178190986673501269105315286043735774805722183126972269248908687167266714727400279e+40'); + T('-2016841186074253812287860201579902794714901016418893309168903524134146272466067614888435632384131092578883301477097742275', '-48984', '-2.016841186074253812287860201579902794714901016418893309168903524134146272466067614888435632384131092578883301477097693291e+120'); + T('0.00000000000000000075207122050490580445284855903892869462082699466860383714628003131667711449129', '6753.26798748946603087152519732149922074864703600110831025894212287136691857176209', '-6753.26798748946603087077312610099431494419418744206938156432129587669831473461580996868332288550871'); + T('-308768135249863901090901133014590589993514630400.7468363567730076836979817211331706945342868110424488561974871997974143', '-8486713.9935588503385776986188852583327833173309260920238377195', '-3.087681352498639010909011330145905899935061436867532775064344299850790964628003873772033607190186111366974871997974143e+47'); + T('-0.000000001028796916762577891829', '1261021215925756356473356031384588949462200699880284631995758278856051', '-1.261021215925756356473356031384588949462200699880284631995758278856051000000001028796916762577891829e+69'); + T('-2903534117347456791838333880169161579106798055500855912397515413217562006547074531951197755159', '3307709092093724676970726712003.7206946987943424741314293246854810621', '-2.9035341173474567918383338801691615791067980555008559123975154165252710986407992089219244671627206946987943424741314293246854810621e+93'); + T('308731033791553222538788495713125564554678655165.2376522348907919208222504963793054507680223355575585755605662130362013509014505533795599', '-169.6211818204352308680313496650435350420', '3.087310337915532225387884957131255645546786553348588340553260227888536001614228404927680223355575585755605662130362013509014505533795599e+47'); + T('46348756895149965005917587370622806277924635266696727', '-0.00000000000000002398533517999676328004879683029567483442514435593265672823703129497223737239', '4.634875689514996500591758737062280627792463526669672700000000000000002398533517999676328004879683029567483442514435593265672823703129497223737239e+52'); + T('0.00000003006579713187753751924205324740743488561146075520720007968290383452647952341024387158387162086926340315695048074352907454', '1105061311685464009276168371271826257860.49712297124331664597', '-1.10506131168546400927616837127182625786049712294117751951409246248075794675259256511438853924479279992031709616547352047658975612841612837913073659684304951925647092546e+39'); + T('-3.6658927729870468', '-285149436709749.875158993845', '285149436709746.2092662208579532'); + T('1013170470745994100692839107539318414591831785271578048439737249808144480351311573254823428168517820353394587009371292.096734997794012533488133881722531', '41152002543729538774558905430724841814570756403811876570254628123254482638637.6488377939839037328832602707121007518768718906728163', '1.0131704707459941006928391075393184145917906332690343189009626909027137555094970024984196162919475657252713325267326544478972038101088006048736110104302481231281093271837e+117'); + T('-33927165312151896961929125486531.3854145399412684039819801379567554380', '-6267032.778812', '-3.3927165312151896961929119219498606602539941268403981980137956755438e+31'); + T('-4363114224107555270076478029292860456660849819228669713810028502419476164665171', '-36729829795867171018424681856707243732121421681', '-4.36311422410755527007647802929282372683105395205765128912817179517574404324349e+78'); + T('-29943384747492648907943443.256412350894815929125401', '901747579048273816602550102529926854.35549646674102528482365191696613584123624344078663288749130490435297134720727576379819588420174171101450551687', '-9.0174757907821720135004275143787029761190881763584121394905291696613584123624344078663288749130490435297134720727576379819588420174171101450551687e+35'); + T('952557.246599587', '-797618074571855160635860103922751796538514948531.1378948', '7.97618074571855160635860103922751796538515901088384494387e+47'); + T('0.0000142901236857676679196257053214336506759362362251650293753952658734900913009470163591148854555849408371350202869477370839162018128614', '7274936081690054967838223208959684283904860805239531936252446172884944195802432384674846535126802169513987351992902768514276949331803322.9', '-7.2749360816900549678382232089596842839048608052395319362524461728849441958024323846748465351268021695139873519929027685142769493318033228999857098763142323320803742946785663493240637637748349706246047341265099086990529836408851145444150591628649797130522629160837981871386e+135'); + T('0.000900929560788911182381071562865432668409466182204594172033162144812128331193077475077423880166489', '-21408597957321978981807151751183219484279556440', '2.1408597957321978981807151751183219484279556440000900929560788911182381071562865432668409466182204594172033162144812128331193077475077423880166489e+46'); + T('-0.000000000000722138907853996119863088603030135349132652185245300184344322987517460715495745561630491364910862090541897814776826750915053339581143330860038', '209219551544.876995097117350588163000906011435189490577683711751207988391411412107868148561383392176930291264602055541628014525', '-209219551544.876995097118072727070854902131298278093607819060883860173636711596452191136078844107672675852895093420452490105066897814776826750915053339581143330860038'); + T('-0.000000000030345983499647050827143736470118525842662060717', '-140869900251790823527224455558474696.4221968423139', '1.40869900251790823527224455558474696422196842283554016500352949172856263529881474157337939283e+35'); + T('1388628543041917754379950101913898878882776054395652240051594608900168911', '-634307381507440042083604924255544396160446890170874345571896298473856984277777.4362135602582999033', '6.343087701359830840013593042056463100593257729469287412241363500684658844466884362135602582999033e+77'); + T('-99178063079827.224433662117625116489799642020572811986957525604609123159620902928779438653713181794557115326708644398427245972390297968858510824615', '0.00000504045524028117298744681753139617460039787354788645269348683810171985366129261406243335125957027159417139707333860235220380988', '-99178063079827.224438702572865397662787088838104208161557923478157009612314389766881158507374474408619548677968214670021417369463636571210714634495'); + T('-7964344017627.65729896967420320480697541366008605972016325458796553432374728674811327', '363448465190438134042900077564563226373185360490340453089461130955156779944343856777497645145316462888016452339862253.6350461018654269710898806', '-3.6344846519043813404290007756456322637318536049034045308946113095515677994434385677749764514531646288802441668387988129234507153963017589685601366008605972016325458796553432374728674811327e+116'); + T('22398969506188688342902196074268860817610249888096.96109576852487881868553737058841014408233230362878332132', '150517970635382784547231206380342822229.6234502535074912839215712571451888428718057053541076659669932226957916203900023162576692335713154540338973281941', '2.23989695060381703722668132897216296112299070658673376455150173875347639661134432213012105265982746756553530067773042083796099976837423307664286845459661026718059e+49'); + T('319606363926195232923049.458147549841648', '9555894221042120529332254896056451521165707003469529318473253597473821865716922096418529662756642900117543029527432853335.21880839479040', '-9.555894221042120529332254896056451521165707003469529318473253597473821865716922096418529662756642580511179103332199930285760660844948752e+120'); + T('-1.7470999677375', '-0.000000009390885937723498768042482633173355191224894879999587923088', '-1.747099958346614062276501231957517366826644808775105120000412076912'); + T('0.000031694970', '0.0003489109755744784300779153529542987938823096920725044639439934321377263762937670754333912101552258897473271605646851768747294780640640656588128251', '-0.0003172160055744784300779153529542987938823096920725044639439934321377263762937670754333912101552258897473271605646851768747294780640640656588128251'); + T('15171023450028723096297246476058654442156062896548968046928610610466495463708888690638445384052.5655402936580877003227652909723023235', '300381994693137917085900.481742', '1.51710234500287230962972464760586544421560628965489680469286106104664951633268939975005282981520837982936580877003227652909723023235e+94'); + T('-2510422771394805479647755240376039069.235025776988445880809314981927377977492349', '-4325650526595464202944513201707597153545181637871972811769276403384719489760146217058876642443138050881786664883495941202481550', '4.325650526595464202944513201707597153545181637871972811769276403384719489760146217058876639932715279486981185235740700826442480764974223011554119190685018072622022507651e+126'); + T('11989030014394748093925142998.905998360', '4503.1829930104967074062224350092529380543376637410353675591178914025067457206266908222070994034406954750129621950217244', '1.19890300143947480939251384957230053495032925937775649907470619456623362589646324408821085974932542793733091777929005965593045249870378049782756e+28'); + T('-19622700098117555355413025589212248976721079203363291412', '0.0000000000000000047154963464125735069117227717041172013254203483060822909726449561031204371411673028528388174607696692799950770173459572692814680509896623815282932', '-1.96227000981175553554130255892122489767210792033632914120000000000000000047154963464125735069117227717041172013254203483060822909726449561031204371411673028528388174607696692799950770173459572692814680509896623815282932e+55'); + T('971668743073894893699159113569468037426157854834.4859245308812504877580159133281293', '2155437400819398246908875466354226177837114235441458903251149825.33', '-2.1554374008193972752401323924593324786780006659734214770932949908440754691187495122419840866718707e+63'); + T('-75219128342703758653804581528133672565697676079415639891282318101552836007137960680191708674953779692.830850412286175003379303061502973114', '8890697637237157877394293', '-7.5219128342703758653804581528133672565697676079415639891282318101552836007146851377828945832831173985830850412286175003379303061502973114e+100'); + T('-2207826365359691933623472386278119104.10928610148472698325737986521030447640095006599795584977677429732704747959908983', '-0.0000000000000000020914676583255446799691346083866342797576131478040257513927024455', '-2.2078263653596919336234723862781191041092861014847269811659122068847597964318154576113215700191611495230217282063873845e+36'); + T('0.00000000000000003529871868734909395544492984890736625012421342', '-102670940276960616548987079748287921392363616947', '1.0267094027696061654898707974828792139236361694700000000000000003529871868734909395544492984890736625012421342e+47'); + T('-16411029.5930820', '1443249803759620996.044533632703181774392190634172289219280976531099613177406267663822437005138144965669407971461692413376915', '-1443249803776032025.637615632703181774392190634172289219280976531099613177406267663822437005138144965669407971461692413376915'); + T('4764961911712179295885207525501495839960553554868719797653093551996007318270912309189493238056884734776455.4857499673', '40.70', '4.7649619117121792958852075255014958399605535548687197976530935519960073182709123091894932380568847347764147857499673e+105'); + T('5188138747138380958829180.51675828531601306918974036835433546892123023643482179063194941268993890524469204530549406272435329728', '-218356026557832392846658731388880742380232559055047578182115570398', '2.1835602655783239284665873138888074238023774719379471656307439957851675828531601306918974036835433546892123023643482179063194941268993890524469204530549406272435329728e+65'); + T('-284221651007245305082697851875743201255770321818102228785943924728887176146409104121604051647768402471354721655179789550685066', '129802078488939350592312997875682679945769088382.2879783911513234655169373537741125669105835698742', '-2.842216510072453050826978518757432012557703218181022287859439247288871761464092339236825405871189947843525973378597353197734482879783911513234655169373537741125669105835698742e+125'); + T('124593177725250773807727158694606.48780660352148825658767811933255518150599696025419899514439334', '-6627581651662715635950762070180.79290709812889445314806559015208127150071', '1.3122075937691348944367792076478728071370165038270973574370948463645300670696025419899514439334e+32'); + T('31366660201652105746754295566374870763019559240421554119188881694316784695785923310969085305946601572113197265575586214263032', '-0.0000185119', '3.13666602016521057467542955663748707630195592404215541191888816943167846957859233109690853059466015721131972655755862142630320000185119e+124'); + T('-0.00000000123441941', '20577.06632', '-20577.06632000123441941'); + T('-0.000000000000000000030367929295105668550777381180120786905515151003716045995461753738312176999386', '-8296319183891479588134987898667542872737578839488792548834441415271860494822651335094309535757878796690.933873784093259915387382991882725', '8.296319183891479588134987898667542872737578839488792548834441415271860494822651335094309535757878796690933873784093259915357015062587619331449222618819879213094484848996283954004538246261687823000614e+102'); + T('-40308545430969720235947527422528929192769782793205800044070633029892426929802242614838.13803009279797050440596035398833519975310207504', '1959239464986228954812427023.535609294269733799545341029686339869114158840301903524765921157569249146361346526131', '-4.0308545430969720235947527422528929192769782793205800044072592269357413158757055041861673639387067704303951301383674675068867260915341903524765921157569249146361346526131e+85'); + T('672932217082947936267931802569635295900508909649104706736777590283845640515821796262381421.68141583026180417434416456', '95.0', '6.7293221708294793626793180256963529590050890964910470673677759028384564051582179626238132668141583026180417434416456e+89'); + T('-0.000000000000000002099033004183951058449767693649425035305130331498778862127487553169994535996', '-2133980231896312773907666627097548168415.7102448765553114470129805463990038', '2.133980231896312773907666627097548168415710244876555311444913947542215052741550232306350574964694869668501221137872512446830005464004e+39'); + T('580445381354905284048807368831006691784.546059063403641312301109310676306914676494597505919617349947441960647278533345556960169308273917366276', '3.604904939285817554324885708126246946469619276624534189637434215912939543315825766859553647518276673500996166212799836185950984610359767998387151515', '5.80445381354905284048807368831006691780941154124117823757976223602550059968206875320881385427712513226047707735217519790100615660755640692775003833787200163814049015389640232001612848485e+38'); + T('-712252720953571012672166069903348092161944796663143300420882328496228974.04618394348904074586863813372820528', '-0.00000000000000002092030775039740453919504630522275260893114360423604255725599892060864590', '-7.122527209535710126721660699033480921619447966631433004208823284962289740461839434890407249483303833308007408049536947772473910688563957639574427440010793913541e+71'); + T('-0.0002570816455207099536036261314936090157674967926099800795', '-0.0000000000000000130674933467131551680491886017016042522946101681008', '-0.0002570816455206968861102794183384409665788950910057277848898318992'); + T('348881507908033302985005.68757522', '1549290074464248686919664413535348476523309010487683201418540220237090492636459013101704289528591313898108.981495311', '-1.549290074464248686919664413535348476523309010487683201418540220237090492636459012752822781620558010913103293920091e+105'); + T('8637413948644495520046181627871244127949368908598113230287818578.76219', '172462329166.2925867381763494812410830828530111105472625398762231331365955149682132409286466618708916', '8.6374139486444955200461816278712441279493689085981130578254894124696032618236505187589169171469888894527374601237768668634044850317867590713533381291084e+63'); + T('-28059829346271297089846697823619339730697463927882137285411047187621.3365094609441835662258292', '1732861001433499169623889562015115612698521681606694360771023126224313336415239339086113519268958723711', '-1.7328610014334991696238895620151156407583510278779914506177209498436530671127032669682508046800059113323365094609441835662258292e+102'); + T('0.000000000000000000279920475007074858021168221493722708848631480438782694735575852706998', '-36266411773095115580689400782807334211196172564607435961552009343283932464.9837695007775892543051564275268186', '3.6266411773095115580689400782807334211196172564607435961552009343283932464983769500777589254585076902533893458021168221493722708848631480438782694735575852706998e+73'); + T('2118046918816158.19627388128567915392498196852916971435774168271017092737124387676986128523446', '700283033083138972861857057593773868572323954863349193882758861910219422329615290916944812790080302082455986032622356459796411429994571952107', '-7.0028303308313897286185705759377386857232395486334919388275886191021942232961529091694481279008030208245598603262235645979640931194765313594880372611871432084607501803147083028564225831728982907262875612323013871476554e+140'); + T('339538851650247942.278697506630118637945095728103', '-18620906912720892893391275141765114456962630526288263883096512988776949390578497946714236563676541486658', '1.8620906912720892893391275141765114456962630526288263883096512988776949390578497946714576102528191734600278697506630118637945095728103e+103'); + T('0.0000000006904532369558150510262488281807825581586827251', '305468661281838707389527955487753.82749543444315394761867888706263', '-3.054686612818387073895279554877538274954337527007106628638360363811718192174418413172749e+32'); + T('-908820873408880798933264474895850726464711747913205439443550022010444648198141527361971583612034255103784.08541958237725093777442080304887210', '-137777781478673113932594166168320795125870691409923883994778273765714588733515698043941904144625098636345868758', '1.377768726577997050517952329038458992751442266981759707893388302156925782888674999024145421730414866020907649739145804176227490622255791969511279e+110'); + T('374355450809837247.5174995', '-10.2', '374355450809837257.7174995'); + T('-7.24216105787', '41335238394851454012288137625393602319.3264096053286738641962006640465495687544256', '-4.13352383948514540122881376253936023265685706631986738641962006640465495687544256e+37'); + T('66326977.9050567217', '-0.0000000000000000000209', '66326977.9050567217000000000209'); + T('0.0000000000000000000265737965021', '-81974150526768898581207134037679.2068387354409294052459', '8.19741505267688985812071340376792068387354409294052724737965021e+31'); + T('6007018972384004427335278306100547732730414161628343888635552404650.58282054220706207456023620752991471499255', '-146656810017560772593186152454856504300187695304259360339772717751599966472', '1.4665681602457974497719057979013481040073542803467352196811660638715237112258282054220706207456023620752991471499255e+74'); + T('-34292722587178232282501917441324831663740801129878989387480983625715484621782.0919', '-55883431183450605660044015172082536043911915919486680333854135673827331840347136897324', '5.58834311491578830728657828895806186025870842557458792039751462863463482146316522755419081e+85'); + T('-3985805244044837084411977422757376378060.290541664260691735184074947', '-870047741853.19289603162319510263029755253365086206461589052739480724332358851742990324', '-3.98580524404483708441197742188732863620709764563263749663255377739446634913793538410947260519275667641148257009676e+39'); + T('-73929816747605180484918003597961235850171978225512788042904593650909580403443769374087641707696975944827828354020150979988740026532938', '385361544903059555711806156019448314064782', '-7.392981674760518048491800359796123585017197822551278804290459365090958040344376937408764170808233748973088790973195713600818834059772e+133'); + T('-12.31698991', '-751188829485947331552.960312839846836094417204848662429224188702772253892719659281557251306277105093575994993846127669453550207016018564227856026', '751188829485947331540.643322929846836094417204848662429224188702772253892719659281557251306277105093575994993846127669453550207016018564227856026'); + T('-3628724754364816284699558478736662262101049.8686961811050797854712833273940271907427771082320587042061269470622', '-36853113191655566744.0036748111113230617191140153379097532999540758924150850150462749161630182517728624293985456773', '-3.6287247543648162846995216256234706065343058650213699937567237521693120561174374428230323396436191910806721460369817482271375706014543227e+42'); + T('-0.000000000000000215', '19894059835635097553.40565542831442512355858226792638029459899976138082', '-19894059835635097553.40565542831442533855858226792638029459899976138082'); + T('-30106887927.73937362847', '-102.030', '-30106887825.70937362847'); + T('-1218248850456.97353951682445947974274913192207119277095702137346638965795765469780537397426794516539138118094328539', '0.00000000007851693763154494785066647692511713030801839675154976889840604918825877872638771285849514900835419977768857575607733', '-1218248850456.97353951690297641737429407977273766969607415168148478640950742359621142316252672389177909403943843439835419977768857575607733'); + T('178340800930010683157306838387114508530123729280296661983521452605952899303508793164498075.18', '124104.19653839526727306978867606725200681644881825667', '1.7834080093001068315730683838711450853012372928029666198352145260595289930350879316437397098346160473272693021132393274799318355118174333e+89'); + T('-124972459343817845451907386538316.88444543539384522567165512709192478339963512253604376341607496802805641627423480880098070424177758544304960846746', '-12151860990400073737429990488961466727732472556130861379738694459231286354909360090762808804561520156.93885466', '1.215186099040007373742999048896146672773247255613086137973869445923116138245001627291735689717498184005440922460615477432834487290807521660036487746395623658392503197194358372576519119901929575822241455695039153254e+100'); + T('242305619480044.117669571', '0.000000000004954617457909921566083069296578532961927959570975042077881955980821090098114246814822601513881827860466408504361049103', '242305619480044.117669570995045382542090078433916930703421467038072040429024957922118044019178909901885753185177398486118172139533591495638950897'); + T('-149393121723.8', '0.000031123464017479325434907565167758533432136444707393019391355781893113282833929057474217941299740843262816249', '-149393121723.800031123464017479325434907565167758533432136444707393019391355781893113282833929057474217941299740843262816249'); + T('304991568028921434085139022483844876733665.542738390605319884', '0.00000000000000138699174160296898158944175519528763014061938962295885233194249035736092848113286092759686854653852969146', '3.0499156802892143408513902248384487673366554273839060531849700825839703101841055824480471236985938061037704114766805750964263907151886713907240313145346147030854e+41'); + T('0.000000000000439684683303579860356147180119042386845099669639708374008856922269915124921301748', '-155818221549284043593101823943330354192243873661833929849877145194258036053339831371360183.4319505793302857955106411234496205383496363144', '1.55818221549284043593101823943330354192243873661833929849877145194258036053339831371360183431950579330725480193944703309976685529755356786845099669639708374008856922269915124921301748e+89'); + T('-13.155103645301', '-0.000000000000000007137064', '-13.155103645300999992862936'); + T('-10356428764148893775275.9673266649810109703809707584633512809703095548147864827191283851408290', '116469121259.580', '-1.0356428764265362896535547326664981010970380970758463351280970309554814786482719128385140829e+22'); + T('-3963571363397152992273906802160286886086920884936747622634365849406904936980386.45359892835130720540151945758060955916317802717566903116864480481972522', '-0.000070996697013405007160606340379272860030484625815078099084045955348142553', '-3.963571363397152992273906802160286886086920884936747622634365849406904936980386453527931654293800394358851240230286303147542549853953069560758864377077447e+78'); + T('-2002.01719868890096247452400760373', '1.8', '-2003.81719868890096247452400760373'); + T('126616415747207305303537223662274177712840.6700589197974', '12097.7020794393208690215', '1.266164157472073053035372236622741777007429679794804765309785e+41'); + T('0.00000000000000221572441427972677866185400843138814827125078372356950505019583272816338112', '86011656827173.81', '-86011656827173.80999999999999778427558572027322133814599156861185172874921627643049494980416727183661888'); + T('45543191029347952618469386523689325602984824853133335610432465910372937520283489097581912486080942672641037', '-15716512380188479.932083641807869052147091043255091861011843759620263027387952842807874862983089866', '4.5543191029347952618469386523689325602984824853133335610432465910372937520283489097581912501797455052829516932083641807869052147091043255091861011843759620263027387952842807874862983089866e+106'); + T('0.0000000000000000035315502420788508529985856314419012272238207473944358204104290394926106351779', '-5624156772170117.1657476003837553942295755292258482770658649647601920538662932208435924708861640276207503440293532949', '5624156772170117.1657476003837553977611257713046991300644505962020932810901139682380282912965930671133609792072532949'); + T('-1374562994880051964271.27898098906188407287205169338', '0.00000000000000031865339921207143913309344392566436421', '-1.37456299488005196427127898098906188439152545090545143913309344392566436421e+21'); + T('13691023568703828954478002891170478555913926785952721.6937350094794685112055123701357309217624134750110846096769', '0.00000000202148677107507460297752891791329356574084754670408775226519607249962621030745245954851134740234779971411203608026098975', '1.369102356870382895447800289117047855591392678595272169373500745798174013043776715820200384911990927023706297281224773480392750037378969254754045148865259765220028588796391973901025e+52'); + T('-125671888607778034275154792009202764081572882956209693373934.74566972561590141388688468937614644443796008254', '107551721884298521156095810104481388698517320600299802047', '-1.2577944032966233279631088781930724547027140027680999317598174566972561590141388688468937614644443796008254e+59'); + T('-0.00000000003969378933740708691300122226819421581066663873920896781273585494818171435695407330811294202', '107041184511163885.04271388462119128657386073279129422270006', '-107041184511163885.04271388466088507591126781970429544496825421581066663873920896781273585494818171435695407330811294202'); + T('-2951965402440738579279759050624852782460407526269383738169962367847588117867127018487856370629062877269116277468600261229135554565114176766056702', '0.000000000006287363483881253518833462795616481179', '-2.951965402440738579279759050624852782460407526269383738169962367847588117867127018487856370629062877269116277468600261229135554565114176766056702000000000006287363483881253518833462795616481179e+144'); + T('-0.00000000000000019636276967708885671764139154128434128626403182943490041425988637275339748810419236540254220706284324560538931703795739814', '0.00000000004481901971403795542991680781566338421560653872041361060', '-4.481921607680763251877352545705492549994782498444544003490041425988637275339748810419236540254220706284324560538931703795739814e-11'); + T('-354719950361379273301359534196300717853.0186108408149835703024', '294514396703359984682344528266458432292891368613559732314480483030279392081064357195630432442505889982.13440538511210586133603914935112321050428', '-2.9451439670335998468234452826645843229289136861355973231448048338499934244244363049698996663880660783515301622592708943163843914935112321050428e+101'); + T('-33927540600930859899252442105999310587077967493761773461091899630388700204633168728544588442837280913459638158456686740859615.1414', '0.000000001894808120791736519518300794339416227', '-3.3927540600930859899252442105999310587077967493761773461091899630388700204633168728544588442837280913459638158456686740859615141400001894808120791736519518300794339416227e+124'); + T('-104666170827444788671824735700977493877060949970738269558671964530958.55363526374', '-2386824408518725780122101607313193461624217723024418681790730644945410612236759422226411833632517989926779141564329843840707189394654888', '2.38682440851872578012210160731319346162421772302441868179073064494530594606593197743774000889681701243290208061435910557114851743012392944636473626e+135'); + T('179421.5289096829953298', '34342876175696462977913441783684065522884009795140039066541213786441.821375732575578', '-3.43428761756964629779134417836840655228840097951400390665412136070202924660495802482e+67'); + T('-41426466350219117773090054766644394486314258063933223051089090219912755660263417233021.9855607046947587791892004394939235', '-170862420310795633399339976259565748191370.489727472434638', '-4.14264663502191177730900547666443944863142578930708027402934568205727794006976690416514958332322601207791892004394939235e+85'); + T('4.356', '-14.51838553571377330631321826342372952104419616215052089825233325146382745555567077756959361343373549160815949781902924303746486223707861', '18.87438553571377330631321826342372952104419616215052089825233325146382745555567077756959361343373549160815949781902924303746486223707861'); + T('-0.00000000007415111125701712334659040023188433045533322445707355817794327911316470827191624585971', '-89496941499485282617443687.11', '8.949694149948528261744368710999999992584888874298287665340959976811566954466677554292644182205672088683529172808375414029e+25'); + T('395406829706311296589271889719583140635568635127665', '264737687.61137854553903553659981221568900541026391672130446196896447248', '3.9540682970631129658927188971958314063556837038997738862145446096446340018778431099458973608327869553803103552752e+50'); + T('-91265516152809240955984710790601792219643671438700946275373285010553537355097749911888722836472150250555502817.7083486', '0.00000000005908292684015754961053591782663005124668197067163418657692319967418105412597307502992726349390479329489028174099287376424396743766', '-9.126551615280924095598471079060179221964367143870094627537328501055353735509774991188872283647215025055550281770834860005908292684015754961053591782663005124668197067163418657692319967418105412597307502992726349390479329489028174099287376424396743766e+109'); + T('1393668664736340396506094893169761479672219453971818718110678752454.93557171027859666584700501067765267442071267740729381267372577', '-7.26506721396234349631410058152182568345755302761014440038909778541514253256903438374', '1.39366866473634039650609489316976147967221945397181871811067875246220063892424094016216110559219947835787826570501743821306282355541514253256903438374e+66'); + T('154487157373823493137066274.85878615066004288744973873503106160140296864897001622023987434759035195222460780528406318750', '13509881005355988338518293330867947988093581878486275639404094210458245268756845889504384099465156294654099130595946018501027161729896016', '-1.35098810053559883385182933308679479880935818784862756394040942104582452687568458895043840994651562946540991304414588611272036685928297411412138493399571125502612649689383985970313510299837797601256524096480477753921947159368125e+136'); + T('-0.0924532442681963280236579804820783805412208183173216', '437714061304750576304069895787070747586930126317209775578680048.64905430778651377650282955909271100702270378704840241396672781384650762', '-4.3771406130475057630406989578707074758693012631720977557868004874150755205471010452648753957478938756392460536572401396672781384650762e+62'); + T('-2903867214462079147781503.43110967041878698272228130248023004255630098538325966386117388084280644624246779280709038813631', '-0.0000000000029001819398679', '-2.90386721446207914778150343110967041588680078241340248023004255630098538325966386117388084280644624246779280709038813631e+24'); + T('-68478988612026757357956003683332744549804329487951781618243422133228484235053139292.63859031920959545863', '-0.0000000000000206209573312295241705394462020368371700010471324470113265516966420178900', '-6.847898861202675735795600368333274454980432948795178161824342213322848423505313929263859031920957483767266877047582946055379796316282999895286755298867344830335798211e+82'); + T('2383784.15779081', '-0.000000000001342350812195198392532374798854977110090674918085941866638293587449553312', '2383784.157790810001342350812195198392532374798854977110090674918085941866638293587449553312'); + T('-930945859272044558989235909016.68900733503225770344925642072767208409841301004231082154342176269488246587383976591788', '-5242498654293148790270310863665439318251858135048956.2717470020461119420226047241249204047819006900600244190387', '5.24249865429314879026937991780616727369286889913993958273966701385423857334830339724832068348768001771359749527823730511753412616023408212e+51'); + T('313632278451489633607271056572839346933772283691577954375047188993463512.092647131238398999623', '-959538307079783685461423074240027842581631060789324748920778178110453051', '1.273170585531273319068694130812867189515403344480902703295825367103916563092647131238398999623e+72'); + T('-1288931819347065003984018264113291238692657741.766349736546125023857675298415334704473602112840757695193462502084969449569542319748464264978', '539036429230664384725011772246635819519599525128.174476503860', '-5.40325361050011449728995790510749110758292182869940826240406125023857675298415334704473602112840757695193462502084969449569542319748464264978e+47'); + T('-778185145541293282976352747700447673380643846202878141.94156682254735142708475873940521', '-1743702845400679249.985436319726446594414323812859185183027678188541351470985', '-7.78185145541293282976352747700447671636941000802198891956130502820904832670434926546024816972321811458648529015e+53'); + T('-34198990286492455559791232025411563407581563098497220768937957961783704810043975778308343224151175569504114685192665.30536869253744218089551619675327', '-24305945127441184832105158951553331385997091194202426787946078772275521880625289746661831499392830801691448841424.759', '-3.417468434136501437495912686646001007619556600730301834215001188301142928816335048856168139265178273870242323635124054636869253744218089551619675327e+115'); + T('0.0000000000000018763276930197981120089551282335569865999686905948962583363764311923118368944319393384148082395872202253088856212394945596283231828525914885594', '0.35819808711067029153542041472676295936698327566168897', '-0.3581980871106684152077273949286509504118550421047023700313094051037416636235688076881631055680606615851917604127797746911143787605054403716768171474085114406'); + T('1418031575151863438477712278537563020829712238913927232796816808973295891102.55296374071457002140814551720742132636073542069579726675621573941382622600', '-3488182224093174883184', '1.418031575151863438477712278537563020829712238913927236284999033066470774286552963740714570021408145517207421326360735420695797266756215739413826226e+75'); + T('-0.000000000000000205390684486171825460536006353563548135276787747301988476146287694114350379000036906338511378609', '-0.000405', '0.000404999999999794609315513828174539463993646436451864723212252698011523853712305885649620999963093661488621391'); + T('-3202016.0694803128322148239145232929204107555210732105469003170128506695838996492', '0.0000000000014', '-3202016.0694803128336148239145232929204107555210732105469003170128506695838996492'); + T('-628423720237204906120199547323758489801025.51874281555091178803625021347340455594130', '-81477111818306314666306661562', '-6.284237202371234290083812410090921831394635187428155509117880362502134734045559413e+41'); + T('-0.000000000000000000047888974392267564390331997035456851568895821244693231371197999015834461798775529541', '947453380002', '-947453380002.000000000000000000047888974392267564390331997035456851568895821244693231371197999015834461798775529541'); + T('773747345', '-1335821513605028779157', '1.335821513605802526502e+21'); + T('-99273.596604127', '-1154952503563378596462693693250.5187439232425471346', '1.1549525035633785964626935939769221397962425471346e+30'); + T('1395668702641787254510091198553284', '1578568229336237285301359008898017.5404224057562993167719876179720474361379874854903455492277573607378863860373466275770813782848272509058803097', '-1.828995266944500307912678103447335404224057562993167719876179720474361379874854903455492277573607378863860373466275770813782848272509058803097e+32'); + T('5386712177299027464798225011978949139476122', '469103363732559983685.648370', '5.38671217729902746479775590861521657949243635163e+42'); + T('0', '419192442362435629465014450272844841376382155269323588979357043630935966384025897855088784350716859.22651317', '-4.1919244236243562946501445027284484137638215526932358897935704363093596638402589785508878435071685922651317e+98'); + T('15748527253971616615055630358104959795592326115279195892785474069003661098024748903045029419699640409113503023237945492.3252432550999839712', '0', '1.57485272539716166150556303581049597955923261152791958927854740690036610980247489030450294196996404091135030232379454923252432550999839712e+118'); + T('0.000000002333438210472843133760719971852', '919118976014042057478336651114029860028401924997726.37482700254255653557019028924295996133470278160287964', '-9.1911897601404205747833665111402986002840192499772637482700020911832509734715548223998948270278160287964e+50'); + T('79', '108926743127104368181585148150.21181757229942036662043384365317289250377588166675035927', '-1.0892674312710436818158514807121181757229942036662043384365317289250377588166675035927e+29'); + T('66999786317143790144990981463093917201197515876881754571980957877868116674749519019018943370951009463.847271877093748797400', '-476103985245129257652983725336203640462984911959107831794737195876658142.344', '6.69997863171437901449909814635700211864426451345347382973171615183311015867086268508136805668276676061912718770937487974e+100'); + T('-1405033234114', '-783177164833364354044558842295870625108912898123626390937631256466.542569106951119275629030077420445312292985', '7.83177164833364354044558842295870625108912898123626389532598022352542569106951119275629030077420445312292985e+65'); + T('-426205767054867887.03542915655127780054256765661941922641508457335701462240270994743442393487518141488173295859', '-8298.4660255243403790577839381771224207771986', '-426205767054859588.56940363221089874275862947949699844921648457335701462240270994743442393487518141488173295859'); + T('-464425272555675063916245905964590494968787633124183600713545419950133228198836596648857626820065', '-2237730394988417178529397.358188196946174766853203174768301504251', '-4.64425272555675063916245905964590494968787633124183600713545419950133225961106201660440448290667641811803053825233146796825231698495749e+95'); + T('-0.0000062461634807333371859314155489802574', '-8181353643032489942675123036461953565314428349623.6339704961199', '8.1813536430324899426751230364619535653144283496236339642499564192666628140685844510197426e+48'); + T('269031915782887321035697046572774089182793600032731720080010568383408337.749033224541645681839966449764521621943733799440', '0.404132605183270165863226749047082654939280193886231529898349131828226447630704284', '2.69031915782887321035697046572774089182793600032731720080010568383408337344900619358375515976739700717438967004453605553768470101650868171773552369295716e+71'); + T('988459584582389858260070961884.0298077770057303924476954237850807378083146026121046406109614', '548657365885761906.16130546365', '9.884595845818412008941851999778685023133557303924476954237850807378083146026121046406109614e+29'); + T('-4579867386321723251708179657431459719237903598.4249552191197039811767', '1700354336203076885308678693.5509603461600890657301710589520939346267614885400052674765795335958411640877837509557489194202307107946', '-4.5798673863217232534085339936345366045465822919759155652797930469068710589520939346267614885400052674765795335958411640877837509557489194202307107946e+45'); + T('-39518020854854496682.408531833821299513675968633019378670635010897754414243511999567768675730681912611391338379426802378786621', '-69488349149463743032009.4871074472497372391041043969145996', '6.9448831128608888535327078575613428437725428135763895220929364989102245585756488000432231324269318087388608661620573197621213379e+22'); + T('-280346355147300855628404.763216', '2.0516001318909', '-2.803463551473008556284068148161318909e+23'); + T('0.000000000000000099623328', '0.000000000015534855199084239745828402971988998230014287963399588591303464021723633191191744223224494006485956657062304557069407148666768780677134976225521', '-1.5534755575756239745828402971988998230014287963399588591303464021723633191191744223224494006485956657062304557069407148666768780677134976225521e-11'); + T('-334431356812439.13448916221758530842995', '1667521702832986056260091238367720285408933716412273493571950628545108649803910938622937226194497229999330474159307225451757494492442', '-1.66752170283298605626009123836772028540893371641227349357195062854510864980391093862293722619449722999933047415930722578618885130488113448916221758530842995e+132'); + T('-25720.3501395114447395112201', '-0.2953998138840', '-25720.0547396975607395112201'); + T('116226570322143124260726476527797976180664474951141971508306422788718375438939254351135212826259379114908655', '-160024900712467287748021197823552179871601569963013469207712918690534434663724462868758130292404825253945347600017444751054592974832', '1.60024900712467287748021314050122502014725830689489997005689099355009385805695971175180919010780264193199698735230271010433707883487e+131'); + T('2324224807171911990671839000597607829497219555298.55014120924636442879633120922286793218', '-1270380349602863576806275283032958213074398270334091077777630627191054790255851313419272408473587843637275886291610.642667419393', '1.27038034960286357680627528303295821307439827033409107777763062719337901506302322540994424747418545146677310584690919280862863936442879633120922286793218e+114'); + T('-10622788500960972991004261.8032858098042872288506798796510154272226938496951067890622789073880670340432116295332571771677661755224600880395', '17077138128499655920.4093059483819429666765577064075794109485305714940654287018169021314700994059258023402097770797726365433681288588963390967078', '-1.06228055780991014906601822125917581862301955272375860585948381712244211891722177640958095195371334491374318734669542475388120658282168983963390967078e+25'); + T('-6336513.23', '-5249172002022980268812313222482147319.6010671183072060237015049011583118322', '5.2491720020229802688123132224758108063710671183072060237015049011583118322e+36'); + T('267635446505753748225432544372279094104011987689607870636.88308855576649357656458127950511', '0.000000007151544482605747363599261338379766369120662716754539', '2.67635446505753748225432544372279094104011987689607870636883088548614949093958833915905848661620233630879337283245461e+56'); + T('0.0000000000000000251680172', '-43996141.9473547548529', '43996141.9473547548529000251680172'); + T('3008681171818278308404.634698376660136232243907341147927120093956', '-72008045405579488.929013843', '3.008753179863683887893563712219660136232243907341147927120093956e+21'); + T('-1917507321972333152063718.3', '-458382.6165374681213015', '-1.9175073219723331516053356834625318786985e+24'); + T('-0.00000000162489680974735997523039312016450827505959711537297137706530', '-731118718225310016148587418433198514412521393862386540689205275178569598255098419588588653874560984.082237617343418975656930427', '7.311187182253100161485874184331985144125213938623865406892052751785695982550984195885886538745609840822376157185221659095704517696068798354917249404028846270286229347e+98'); + T('531802532279637137552808013110951053732.907624514862128773520547166755212879477296231276825579342', '-173067154812932973797393419951029156470968384903254747150744.1037243073944890748534755651124752', '1.73067154812932973797925222483308793608521192916365698204477011348822256617848374022731867688079477296231276825579342e+59'); + T('1216376563.861151456186911150794802999960874196553469479145822420208291551214685836322120517079008', '85984.5', '1216290579.361151456186911150794802999960874196553469479145822420208291551214685836322120517079008'); + T('0.000000000000000000054924120831599544196056464059913345528362581686003585823080198063175104748720429835436816', '-33.965305825679', '33.965305825679000000054924120831599544196056464059913345528362581686003585823080198063175104748720429835436816'); + T('-0.0000000000000000272691295425523253281545245364330746310034056347651726374661392748936831102659438676749529105824808034929101186122342434701063245841476', '-781187391210758142167459761699751749533058942483806705247714720005729302232618042462.31429718942883993867507', '7.811873912107581421674597616997517495330589424838067052477147200057293022326180424623142971894288399114059404574476746718454754635669253689965943652348273625338607251063168897340561323250470894175191965070898813877657565298936754158524e+83'); + T('127262997433251959079279503780471.05197845683869545951325487141398044178736403887617606907597695630472759165663283084977628891449702428789338877110708', '77396683518158379744711.66156663437342404789854794363811642267757202778894836789743946370198310026950193022769015766161296030', '1.2726299735585527556112112403575939041182246527141161470692777586401910979201108722770117853749260274449138713090062208613125288406398789338877110708e+32'); + T('42170499815256385540791846972137805290009126085642915432609561244148971544358403270767061193697589382522357089597879438170922900180458360491', '-0.000003885040489695371692757168739195827258540410745579', '4.2170499815256385540791846972137805290009126085642915432609561244148971544358403270767061193697589382522357089597879438170922900180458360491000003885040489695371692757168739195827258540410745579e+139'); + T('-1484024306291646967346493622090638440659128585952793958990883359092640546575462579828476965972418873274552.1834807695558477417523', '-10598014380036531229136810438900071681432863341249945982490785444176829679842459382408061192080712.9619817785969053235790359984721057762058', '-1.4840242956936325873099623929538280017590569045199306177409373766018551023986328999860175835643576811938392214989909589424181732640015278942237942e+105'); + T('-0.0000000000000037', '-3076174224740955436355989748079441650915310480031800204994005115124341562063700871463141434110179138410587089277839517152320944517479716270543461', '3.0761742247409554363559897480794416509153104800318002049940051151243415620637008714631414341101791384105870892778395171523209445174797162705434609999999999999963e+144'); + T('-0.000000075027040201482330625619859591861141930627870540731155446710', '0.0139177672366169698378876807351533299376331910835826839154061965617972722046119104334991574172', '-0.0139178422636571713202183063550129217987751217114532246465616432717972722046119104334991574172'); + T('8875143592690748989920787895291661147029298230059201908543304359430935440199.867134812405756511257745234125626824', '-247943204197117001912763303824992424614854547911.72151922913414922441109501', '8.875143592690748989920787895539604351226415231971965212368296784045789988111588654041539905735668840244125626824e+75'); + T('31916591334815493867348.2006986155618932404016660295722', '4606925311680888622.612954414237689607109445591833340796649297129233762211446696674', '3.1911984409503812978725587744201324203633292220437738859203350702870766237788553303326e+22'); + T('381592731768551523450237299269065558626439762823266272728608770256434241300666186155782732703413979594892722766059796378113553693016425636137853', '1074098218589615684162333302525523', '3.8159273176855152345023729926906555862643976282326627272860877025643424130066618615578273270341397959489272276498569815952393800885409233361233e+143'); + T('859384792671165504880.591270312184098707804090920437508527546076998804061888741623409867', '-415064661757507462508064979252020173304919.38161995361360609605709210292378740874075259401137388397242347603728910288128847206', '4.1506466175750746250892436404469133880979997289026579770480386118302336129593628682959281543577271404688590428910288128847206e+41'); + T('-0.0000000378511781638932', '-0.0000000019415746608194397271645430475998139434698262967689419183607208269227560180148712767202698791460535585478881851701240', '-3.5909603503073760272835456952400186056530173703231058081639279173077243981985128723279730120853946441452111814829876e-8'); + T('-127323.654151371587544406942297034389812264638323249811302292394967515069458109985654766167188775393537479581494034', '653407290188829294787949470104324404483492727890', '-6.53407290188829294787949470104324404483492855213654151371587544406942297034389812264638323249811302292394967515069458109985654766167188775393537479581494034e+47'); + T('155323920605544966037456890780901792411.6779803510786020326988033806935198', '159029239238266232.68574849991657262205375600388916', '1.553239206055449660372978615416635261789922318511620294106450473768043598e+38'); + T('13156801663791593515197335348715600238117690700.815038836887843190319660754853410804197810482520222445623353150435061783014391903811607138', '-8270199589564900477356715352108242301640427858623530223929697653745713628878.564288094121549802323184040403763027925657974', '8.270199589564900477356715352121399103304219452138727559278413253983831319579379326931009392992642844795257173832123468456520222445623353150435061783014391903811607138e+75'); + T('0.00000000000000003786195460340598104288682558070063337088309567282201351032563', '-1912699796464583227379572473541475383216013821339026581757100140817849255701729993948439667349733408806253839792.24198692029', '1.91269979646458322737957247354147538321601382133902658175710014081784925570172999394843966734973340880625383979224198692029000003786195460340598104288682558070063337088309567282201351032563e+111'); + T('0.0000678213457017134314852892364803864629433537599025120942836845115758304505087119211392119756099777668193068326923413902250456637918108722842255', '1140640116158968963485566592.5893331949954139196192113429058069640694322621110308576696441720269550777832332421', '-1.1406401161589689634855665925892653736497122061877260536693265776064889083511283455753604875153792473327245301788607880243900222331806931673076586097749543362081891277157745e+27'); + T('-5941423076793531487369004038913872115546949940523795.371014687155306260796761670579766889905', '47861971864566209979133077736766504352908819881729160935697807580950039529832250339875991.2370', '-4.7861971864566209979133077736766504358850242958522692423066811619863911645379200280399786608014687155306260796761670579766889905e+88'); + T('-3651590804629633244384272036497219152794961178826414247756327968228195689150408706412981706033290645060605', '-0.000000000000000000047076028716961617745970472461943359903971686105244537457258691', '-3.651590804629633244384272036497219152794961178826414247756327968228195689150408706412981706033290645060604999999999999999999952923971283038382254029527538056640096028313894755462542741309e+105'); + T('118687168472.901776101483448', '6575654819663787.704095301960878738190', '-6575536132495314.80231920047743073819'); + T('0.000000000000000008221087096832270706747915015998320970007508295513800923805028534762897555917424732521734252235383609982', '-4730231.56580380830953', '4730231.565803808309530008221087096832270706747915015998320970007508295513800923805028534762897555917424732521734252235383609982'); + T('0.21789670842440974974661994228192699055349', '0.01334643986427991665741664557', '0.20455026856012983308920329671192699055349'); + T('-14226117087.28617301017414275549732687575166423932', '-2570477277243155.1204160224690347778553830976260385383374348745734315475200813314035', '2570463051126067.8342430122948920223580562218743742990174348745734315475200813314035'); + T('-46.941057107072660652688121977370', '-1198710434479146302024548885128439972868624935885330601645871874157901.96708543469474', '1.19871043447914630202454888512843997286862493588533060164587187415785502602832762207934731187802263e+69'); + T('-295140171894972088951187786.0843050337025558841174717700928362793074491331276762385630102550855368430612108831357', '-0.0000000000000004883812758401282299689103133449934936', '-2.951401718949720889511877860843050337025553957361959299646063103971357881341826385630102550855368430612108831357e+26'); + T('1.4711261754068130281842564186342696000895948066', '-120648633751429663556459972182655021410865.5086632989898240206360208470238848290763965597192371216857894570350195365591255381749962060', '1.20648633751429663556459972182655021410866979789474396637048820277265658154429165991366319237121685789457035019536559125538174996206e+41'); + T('-144700', '-0.18213538140165154164724446677239877238828512236771523708810552188227956132323566115125955382011533702944784', '-144699.81786461859834845835275553322760122761171487763228476291189447811772043867676433884874044617988466297055216'); + T('7527305921883997190334173981195704877744988728728518609052340094791.8855544226349862816292745519085545', '-0.0000000007048946656101980003207741963970650160207507827240902', '7.5273059218839971903341739811957048777449887287285186090523400947918855544233398809472394725522293286963970650160207507827240902e+66'); + T('-63795532.1247756163974543523664090934199701938480314046575430119409403191645390756181006417970791', '-0.0062137513829573043880447774252661092604135729387774810554', '-63795532.1185618650144970479783643159947040845876178317187655308855403191645390756181006417970791'); + T('9170218742863146.63960565263545342233167920145227196559581870281019754919446058190890025166080356692023953226567583', '94899.938506789077785525289197268929739161960202702966987511034', '9170218742768246.70109886355766789704248193252253280363561599984321003816046058190890025166080356692023953226567583'); + T('3901879734193765914331129847202500304665157801252541780432220949839069127986525493675829826983735746021109803224777662529', '5885103402359590328286381776411514113770718249033564454051018031288461.42208859547727201936136', '3.90187973419376591433112984720250030466515780125253589532881859024874084160474908216171605626548671245665575220674637406757791140452272798063864e+120'); + T('3', '-15200.9143662493055675379993', '15203.9143662493055675379993'); + T('15423485096047599053364024548519496681508881945096830176039851680666630029365886063521259842', '-0.000000000283965132096', '1.5423485096047599053364024548519496681508881945096830176039851680666630029365886063521259842000000000283965132096e+91'); + T('20462143', '63769737', '-43307594'); + T('0.000000000002655335762566545159279103266301165139940149572346903456821981448916315558904', '760001783034845256482634525599227420841592883976982090372844443290413192545720519296', '-7.60001783034845256482634525599227420841592883976982090372844443290413192545720519295999999999997344664237433454840720896733698834860059850427653096543178018551083684441096e+83'); + T('-2859.72', '1143457536770062100322750086623.71845', '-1.14345753677006210032275008948343845e+30'); + T('-0.00000000000000035489705537003133966656620934689', '11987350492635913981351083990815685367027572166189009953407790102342640597311.916155924353548989207704206322071476178972779', '-1.198735049263591398135108399081568536702757216618900995340779010234264059731191615592435354934410475957635341114274518212589e+76'); + T('-672459565845298082592172835281835774315217847427856401542010053256271699439933658929866947464739169479833929233830480664939232420953.2923', '63108751.15749592458552', '-6.7245956584529808259217283528183577431521784742785640154201005325627169943993365892986694746473916947983392923383048066493929552970444979592458552e+131'); + T('-0.000010035206280282747019162655750927410618908635896952580', '230.1907049834484816952377627084616053336290', '-230.19071501865476197798478187111735626103961890863589695258'); + T('7173044628.5777843255026455413348266', '74453983.680083199805556', '7098590644.8977011256970895413348266'); + T('-83919871511965703755476466.256569440941669204141450851398993', '-120420004260233575347420874147255645547454760214523', '1.20420004260233575347420790227384133581751004738056743430559058330795858549148601007e+50'); + T('3630900902246671948646521726957218461983828034217333961862682876897350087684.6822', '142378828011194667522298164078675050366271553.18418507871350239937970327468837520064392740785265', '3.63090090224667194864652172695707608315581683954981166369860420184698381613149801492128649760062029672531162479935607259214735e+75'); + T('3600368521700307314019929721242984506937722877903512324371675383642175079745764808500491934491199396', '-8889151549.0980820465205798627062897257998560429872362749013588868330096', '3.6003685217003073140199297212429845069377228779035123243716753836421750797457648085004919433803509450980820465205798627062897257998560429872362749013588868330096e+99'); + T('2566124149510189054603184804420483142674551293246048640739644229580149479831221856889682947040898.1947', '2.26262852', '2.56612414951018905460318480442048314267455129324604864073964422958014947983122185688968294704089593207148e+96'); + T('-6445706060883314535319320109991761267536435348960454296790760967040816468929', '-0.00000000000000000062830932861674764819252613026097705872828029129848817631757479456721702066162270528458013184133179280907256876980768150732125981012639579785215', '-6.44570606088331453531932010999176126753643534896045429679076096704081646892899999999999999999937169067138325235180747386973902294127171970870151182368242520543278297933837729471541986815866820719092743123019231849267874018987360420214785e+75'); + T('0.00000000000600072079222315465580504023456367837739567604666764878391621677969104485271956013728552504195645646316020084441518304737259573663289004508147', '39.31302175525738768291245783088445596818951069182891044427517151104661708832', '-39.31302175525138696212023467622865092795494701345151476822850386226270087154030895514728043986271447495804354353683979915558481695262740426336710995491853'); + T('-0.00000000000000000294054960556608929', '-0.366150388110291163127790', '0.36615038811029116018724039443391071'); + T('-511163388228633237873316822527313608282340841918478362004266090071119793101871.464037584689475734', '-329989907679436788948852901850804713300444041228309095926110784330762590667953827054759693', '3.29989907678925625560624268612931396477916727620026755084192305968758324577882707261657821535962415310524266e+89'); + T('0.0000000000001704747491801544304246616272150314276800251600985090', '356912525185464485672340637548121974961395954891152868968788980713248525881582063315953007660073165537954814817936395362149647051889219299067882', '-3.56912525185464485672340637548121974961395954891152868968788980713248525881582063315953007660073165537954814817936395362149647051889219299067881999999999999829525250819845569575338372784968572319974839901491e+143'); + T('252850202046876977851994.143212', '-848887102457721130097.091770', '2.53699089149334698982091234982e+23'); + T('-1463813561256.991439146629821901956687441988620850205985146015744308635116738069577049349761881704662355647698634718200189276416926210554813240', '62029849111463410013756762844374812825897194275000462631388966790212235003405628390', '-6.202984911146341001375676284437481282589719427500046263138896679021223646721918964699143914662982190195668744198862085020598514601574430863511673806957704934976188170466235564769863471820018927641692621055481324e+82'); + T('69782305662663437094541084757082159939270157247.9716354', '-89147785350539844445.416910718922580580536969939488837234964042787197740548106624', '6.9782305662663437094541084846229945289810001693388546118922580580536969939488837234964042787197740548106624e+46'); + T('-131.76', '-0.000000000005696147108564746426888775570848202211810884752865344375891071070092502829538629785436541334365692051020683595375875811133291302478345676258', '-131.759999999994303852891435253573111224429151797788189115247134655624108928929907497170461370214563458665634307948979316404624124188866708697521654323742'); + T('-497777803060949043131155159968723958.16915576601446255882706227712009561', '187513374620216567870246128064.585091639963330830047759047069515276559563684958977723723813958088783235081595183826887', '-4.97777990574323663347723030214852022754247405977793388874821324189610886559563684958977723723813958088783235081595183826887e+35'); + T('4125226628898214776459043043848665640891754611330056829115889332318900550787802063162881102.0172', '-5654133954935729315244416.571910565', '4.125226628898214776459043043848665640891754611330056829115889332324554684742737792478125518589110565e+90'); + T('0.00000000004139915941037474807032518234750457019529957219537984823906929653706764566737605928162402285281158810275719639', '4918252046919178557340409576205071237879887503291090041', '-4.91825204691917855734040957620507123787988750329109004099999999995860084058962525192967481765249542980470042780462015176093070346293235433262394071837597714718841189724280361e+54'); + T('-2311168251436595165228357269442780578123112.83612714285098893733488905613344909999353', '-23179010559927745251596254686184413186603531856508883463422590120878079108990895937457179980442401237385839673669330286893540161257', '2.317901055992774525159625468618441318660353185650888346342259012087807910899089593745717766927414980079067444531206084411296203814416387285714901106266511094386655090000647e+130'); + T('-157110395920267638794958655839617698095333501445314955918734069161689933642356923466527500.842491896021313687363006263896039621', '-0.00000169938824017905253390365814790480115170799502101643798', '-1.5711039592026763879495865583961769809533350144531495591873406916168993364235692346652750084249019663307350831047236023789171619884829200497898356202e+89'); + T('-0.0000000034695699166026892143077647500761510769012638170656915865714501717320327171654999280961297567557115531', '0.000003285105858090918101513244579', '-0.0000032885754280075207907275523437500761510769012638170656915865714501717320327171654999280961297567557115531'); + T('12.821444033432329487', '-828945494613921320615913033922430384667832091835552867448637507842855527762415897847274731250460560.5938743219195296432763484012308615936905854362', '8.289454946139213206159130339224303846678320918355528674486375078428555277624158978472747312504605734153183553518591302763484012308615936905854362e+98'); + T('-21780810408046000685162929853231193847862416557439280736028379007620.9726981547505', '-139252299485951365181945740150018259705534184833100450.519901854594606176500', '-2.17808104080458614328634439018660119021222665391795752018435459071704527963001558938235e+67'); + T('31153778331.4387887187891452717104214859599795399160108427720346733063507', '179728021.06909075407924714', '30974050310.3696979647098981317104214859599795399160108427720346733063507'); + T('-618834912531652.0057377', '21797574580198291897359627810662681102637063422664387863754038865817', '-2.17975745801982918973596278106626811026370634226643884825889513974690057377e+67'); + T('-0.000000000000000765821929389877370458202611860322225362885792434335153360684490327702934795208517771383256418915784282787289167843225530943806979468309', '451287395769559434110582968934970.685236', '-4.51287395769559434110582968934970685236000000000765821929389877370458202611860322225362885792434335153360684490327702934795208517771383256418915784282787289167843225530943806979468309e+32'); + T('77106705055908475310440141267552925652440318989464386727898512296975567.66061423617574863098323698323360502040356558', '-0.000000011450841720290860862448039550281180968988484941121896581469341885197489647153563705690545985946332080104331971976300', '7.71067050559084753104401412675529256524403189894643867278985122969755676606142476265903512740978456816445706847465489884849411218965814693418851974896471535637056905459859463320801043319719763e+70'); + T('-0.000000000000019290717114050931338105101245194653742552644960059', '143276467308241499701', '-143276467308241499701.000000000000019290717114050931338105101245194653742552644960059'); + T('-0.0000000000001540616672147681280171217297593042431394881995494063140060573330749436996881403638596216426697967870302615524370008926698907505446249500632', '-0.28350757173542186862807156137406823418555996167492030058802005151707375796930334126928268135255', '0.2835075717352678069608567932460511124558006574317808123884706452030677006362283975695945409886903783573302032129697384475629991073301092494553750499368'); + T('0.00000005655991707149037399922054071139097387281061191477648236574838149302923575757471824009608753090882473645396585695414457', '-1037735687954213696569384673332890401637635622739449765500.241575915381331', '1.03773568795421369656938467333289040163763562273944976550024157597194124807149037399922054071139097387281061191477648236574838149302923575757471824009608753090882473645396585695414457e+57'); + T('4855675332.7083066004691748608', '-9495842049673468279.5671213956484193849367821937814670521168063407441607221529038456882314074643242900887127616369767306383357140885', '9495842054529143612.2754279961175942457367821937814670521168063407441607221529038456882314074643242900887127616369767306383357140885'); + T('-371727694604000265531518957397404745190308397247774643342809559479423488145460577873367071667140515223960430330052550077105059687.602928315818224370992', '-0.006182613654799728503894831274202426819463433943221582526744062754609114781332193519619', '-3.71727694604000265531518957397404745190308397247774643342809559479423488145460577873367071667140515223960430330052550077105059687596745702163424642488105168725797573180536566056778417473255937245390885218667806480381e+128'); + T('252.7286', '-1048727383.8417648117635129245612611075251', '1048727636.5703648117635129245612611075251'); + T('246339105236279993029.779136671622836638254622844315', '-0.2081466910740537', '246339105236279993029.987283362696890338254622844315'); + T('-0.000000000004251821155298564603972810714958089479168033107886959502196802756203470788176960484264054952475484390527833088494710819240861104331195786410885', '72374649981010622768585141052423674921404658971075010108219334219091239517373927587321641489790577909684263', '-7.2374649981010622768585141052423674921404658971075010108219334219091239517373927587321641489790577909684263000000000004251821155298564603972810714958089479168033107886959502196802756203470788176960484264054952475484390527833088494710819240861104331195786410885e+106'); + T('183837148.90443961940430047231989366651993476031567037971215956651037637016802721769559763173816796542803144211780111934219050428648', '-1132210802667233013885301883421427506588959233625', '1.13221080266723301388530188342142750658914307077390443961940430047231989366651993476031567037971215956651037637016802721769559763173816796542803144211780111934219050428648e+48'); + T('-3691822058.57085474396080945369673728122984439428444257734562382467780353804871181415538969082586191879205496710', '3926432506300249210509179487381770792289628403911395731250431112551381231067577307.7886693710023579159088025939730616110630998092011', '-3.9264325063002492105091794873817707922896284039113957312504311125513812347593993663595241149631673696055398752029060053475423865467238246778035380487118141553896908258619187920549671e+81'); + T('161380629205776417370619978.94790585532571175965001173657717968258603', '15770163883113132525352877130764618385076935573552026524962864893082340267956294317512981350074440117.51141761065457763829', '-1.577016388311313252535287713076461838507693557355202652496286489308234026779491368830720493270382013856351175532886587863998826342282031741397e+100'); + T('-0.003870041060244155089', '372037566.3292566800057303692867308995967514456947136761173', '-372037566.3331267210659745243757308995967514456947136761173'); + T('306847039405846004795255377789835522736966045.703419256307644158563670046841211782545782850044162871280281083966845034443161', '-0.0000000000920455239477610995683838741187048041416049264294738878526378270582', '3.06847039405846004795255377789835522736966045703419256399689682511431146409595656664487654185767797709754971819482861501361e+44'); + T('-0.0000000000003210953781062772150098343898602436843086564236327052301688', '-150338459473158557923119665782760876423441993048051543691089147086917525625936551761033445707803557045155557.52837300270019703', '1.503384594731585579231196657827608764234419930480515436910891470869175256259365517610334457078035570451555575283730026998759346218937227849901656101397563156913435763672947698312e+107'); + T('25983124363595065.33092768399411430713290111808632249366', '-580933674475894898982997155309901918649485043287834362560222468094831906478743818165029199620003568770150378311086272184208826293576318808290', '5.8093367447589489898299715530990191864948504328783436256022246809483190647874381816502919962000356877015037831108627218420885227670068240335533092768399411430713290111808632249366e+140'); + T('1850916610962229939602303480362676023908431072215702014137566112296384421153424607176.8059784587131', '512243500267', '1.8509166109622299396023034803626760239084310722157020141375661122963844206411811069098059784587131e+84'); + T('-184877142422294703520975479796306025809263499292.7931910621756669188662102660938494746987999101249089061195470207030', '-0.00000000000000008498222206556406262243165', '-1.84877142422294703520975479796306025809263499292793191062175666833883988200529786852267149910124908906119547020703e+47'); + T('-0.000000000002591577406696730110925816397500154615', '-0.000000008203755062608231746294494108119453489077150713983075114286087573203872407396100452280836', '8.201163485201535016183568291721953334462150713983075114286087573203872407396100452280836e-9'); + T('0.00113187652077011811375354713438890135407233573999645640576361426763004959545048824419375996447732201405034000719887068357917006193372968721', '-9513299452685933145884287122288569823742580460859259721427216624858272956972621512882828978401205032497576349955400997444307472.127288502040606', '9.51329945268593314588428712228856982374258046085925972142721662485827295697262151288282897840120503249757634995540099744430747212842037856137611811375354713438890135407233573999645640576361426763004959545048824419375996447732201405034000719887068357917006193372968721e+126'); + T('-101282948616724272484953545953349716593478543806497.286950890059245094039', '117309932329495122737411487914013724789825355301759777928575644736371090499526769006843968707622513899074453', '-1.17309932329495122737411487914013724789825355301759777928676927684987814772011722552797318424215992442880950286950890059245094039e+107'); + T('-3527672542958095940230507255558332.170340607904850914382797250686015987003437982374864974619427360612046545786860047', '-44308074539', '-3.527672542958095940230462947483793170340607904850914382797250686015987003437982374864974619427360612046545786860047e+33'); + T('696251462779098640018848016194974848273984539897182732503721195581.022', '-0.0009913757384911224166061061275859102001742166932949065339677297902168319985124401', '6.962514627790986400188480161949748482739845398971827325037211955810229913757384911224166061061275859102001742166932949065339677297902168319985124401e+65'); + T('1078800798224.734663928613388302956878421495374656333024393408174361403843900153053669034118433549172155326377609', '-395534581529124125726253950708301388351136671971313.269513765972391964435573515235', '3.95534581529124125726253950708301388352215472769538004177694585780267392451936730374656333024393408174361403843900153053669034118433549172155326377609e+50'); + T('157736254008627834038860309559683387724555', '-4594454316276846.22889', '1.5773625400862783403886031415413770400140122889e+41'); + T('192386447850938643364980037157714078.667670', '-851657218576.302225280595205926373252086357245881159099186004946924709955966414529108970202216172176', '1.92386447850938643364980888814932654969895280595205926373252086357245881159099186004946924709955966414529108970202216172176e+35'); + T('-30904996899995566378174385484494931717271463370895674716598098724288017981274999017442756424.6379761510688077348608197361985605065677866468436805', '4689937374232446.45257401892489335752', '-3.09049968999955663781743854844949317172714633708956747165980987242880179812796889548169888710905501699937010923808197361985605065677866468436805e+91'); + T('-75737124093497081558918300645262008779192868684414555820427607278946300576673', '217541673539103', '-7.5737124093497081558918300645262008779192868684414555820427607496487974115776e+76'); + T('-0.0000000000178582787097936410955952527724904571812233290700799389147161616449340030526614581183800172797335354127416587536811082238416196766809706109306282257', '1655811940148466388814205.23320907612777562208494378505895383608907847845502485386735176120340958223402858437920118040340355068270079322722548', '-1.6558119401484663888142052332090761456339007947374261545490888615689356362481829374317001181257438789625874318626385217835679624343286399671387536811082238416196766809706109306282257e+24'); + T('0.000000002919991993491021882536587348', '-505934880332731792510691865564845809059631032976000339923495992940889398540650687707453464781582591628461285346207100158557879217', '5.05934880332731792510691865564845809059631032976000339923495992940889398540650687707453464781582591628461285346207100158557879217000000002919991993491021882536587348e+128'); + T('-33466744637598795529381545892043857804617468.46401319673766053647481787577214595481626050900894623520', '-0.0000000000003357237902324', '-3.34667446375987955293815458920438578046174684640131967373248126845854757721459548162605090089462352e+43'); + T('-89425417162201175465400546339403148500149133957193.96578038786595026758317811953966733498932978601', '-1405803301520003345575789184231943451603588638985.9376135626367435873857739001195431353742', '-8.801961386068117211982475715517120504854554531820802816682522920668019740421942012419961512978601e+49'); + T('0.000000000000001871288647830989494290689415161953067408619362137083942908468831270334812418581424545772814063266068263844492510500380710872894374', '4.23013879231167686677612360843795550900659989406713647936612', '-4.230138792311674995487475777448461218317184732114069070746757862916057091531168729665187581418575454227185936733931736155507489499619289127105626'); + T('1081898192142823325334768391585696724.266551471539993', '-17659238921005307.917413084214192739', '1.081898192142823325352427630506702032183964555754185739e+36'); + T('-211840291024698604.48893683835289524386164142885412599596', '0.956798615642965592754457212313533228615333073536496635490759649687294643223525742190828313263626448735964', '-211840291024698605.445735453995860836616098641167659224575333073536496635490759649687294643223525742190828313263626448735964'); + T('221425316830895877056683698880899917852135343813023998859360273819797052290640.9315231787425484197016892424623525', '0.00000400616385054508', '2.214253168308958770566836988808999178521353438130239988593602738197970522906409315191725786978746216892424623525e+77'); + T('0.0000000074648516794219838184240130975016099', '116876.42749590099927445693850031173280282361261639', '-116876.42749589353442277751651649330878972611100649'); + T('-73443010540402954576842026', '-4926832937510632043653806478767750613389877126019642141260618065698.0792895022817212282107503047772151899589664246413340', '4.926832937510632043653806478767750613389803683009101738306041223672079289502281721228210750304777215189958966424641334e+66'); + T('2784502990835628144358253950083873358740549170601580432289611124376226555234877.9858200557236237337577147596', '4917661361731789584921195447270.5587547070375957130008047176901629887458255', '2.7845029908356281443582539500838733587405491705966627709278793347913053597876074270653486860280207569100419098370112541745e+78'); + T('0.0000000278504063853447146762310784743311219577950698679342514425094994531041925550104863191773566381681464090705194734640', '327544799712156512794784451228653130604976681932044866.8130716684653513802', '-3.27544799712156512794784451228653130604976681932044866813071640614944994855285323768921525668878042204930132065748557490500546895807444989513680822643361831853590929480526536e+53'); + T('-0.00000000000002008111880513429242547', '-1168142699198895682872256551220621216397424308459153677585114.96438975713066891515', '1.16814269919889568287225655122062121639742430845915367758511496438975713064883403119486570757453e+60'); + T('-0.0020759804305965617', '764484378925575955998262271107967177799.3921673495985811141655562538838430225703', '-7.644843789255759559982622711079671777993942433300291776758655562538838430225703e+38'); + T('314538242246288.42720726996770214230667062396125055947593471536', '-5709766296171650602.24185600104198360224', '5710080834413896890.66906327100968574454667062396125055947593471536'); + T('2601655151900642206636222997530561092879117314164702943580485229395095933.8148647041', '0.0000000000000000000545923963200601881583792553271167476403317094011785783473945906028127827591476470085229569639102315240902527107858916390', '2.601655151900642206636222997530561092879117314164702943580485229395095933814864704099999999945407603679939811841620744672883252359668290598821421652605409397187217240852352991477043036089768475909747289214108361e+72'); + T('-43151301919298268068196451304198990983037212765635867863105642809532901509070161236071836104869066552364969311762463975552', '-65792506329.162401577209876729615122943184875102458456675147552153', '-4.3151301919298268068196451304198990983037212765635867863105642809532901509070161236071836104869066552364969311696671469222837598422790123270384877056815124897541543324852447847e+121'); + T('-58145525166565890.04122722148517396992268609808559449424081643957465013', '36895', '-58145525166602785.04122722148517396992268609808559449424081643957465013'); + T('-1380019075368410665434910685837646231061500678571273.437', '-708783781474372956418809.1668488022806394799579905891256533778023871539', '-1.3800190753684106654349106851288624495871277221524642701511977193605200420094108743466221976128461e+51'); + T('1963393100153283900680602317090841091868.7057877321407368918', '-4558805287590516608986267171325288983366964400655106', '4.5588052875924800020864204552259695856840552417469747057877321407368918e+51'); + T('0.0000001407996470540256884206972291699170231269478445264415596334101718170629891348240406473704424192652557212601717979646372575017642378452081', '-68319808.85143904948777163237579395976723632411831309906501022', '68319808.8514391902874186864014823804644654940353362260128547464415596334101718170629891348240406473704424192652557212601717979646372575017642378452081'); + T('-0.00000000000000000520745300386927858263802847774818906513849609279791649851542455109794569658396745790033', '-0.0092550980435850490662646493376107', '0.00925509804358504385881164546833211736197152225181093486150390720208350148457544890205430341603254209967'); + T('2967617678347088013.1738970622321751596070351867397208390655655108226821804468393275334586999342460367780260036922367170801495', '-1037314302.0266874363156528872956184434218993246886249535339781421', '2967617679384402315.2005844985478280469026536301616201637541904643566603225468393275334586999342460367780260036922367170801495'); + T('-49291697.79', '3118337286372049189132894.361136097492458179780194692374756783544285588810310527347173746912677367611366854072067678627774', '-3.118337286372049238424592151136097492458179780194692374756783544285588810310527347173746912677367611366854072067678627774e+24'); + T('-339.2', '163572547291591069133936914034534.567315194', '-1.63572547291591069133936914034873767315194e+32'); + T('34325086548698898487887478294.36420', '355576739939045466327.4975269472620813909920831535481189862294384252210442757667064506332182539172503591866982', '3.43250861931221585488420119668666730527379186090079168464518810137705615747789557242332935493667817460827496408133018e+28'); + T('370044764.3013082042', '1790005633588538461650641328587108706658340072380027626477.0132722745841414452316360238830847702114898024038942988300305', '-1.7900056335885384616506413285871087066583400723796575817127119640703841414452316360238830847702114898024038942988300305e+57'); + T('4263702202353975994071.31690964522111184782225643263309765852647473593539755902567196', '-19975397854626091996286240550959532193241549861480938890275634702569032237325096179631367809302680197661729288714.051', '1.997539785462609199628624055095953219324154986148093889027563470256903223732509617963136781356638240001570528278536790964522111184782225643263309765852647473593539755902567196e+112'); + T('3486961.94860938', '155083657058384127930580314746.0523483468034310636373779', '-1.550836570583841279305768277841037389668034310636373779e+29'); + T('-12500272340430247337584871234769182598217741493536064909830797164011240022929666553931.1010', '320228573980378863122568709145317117449935889878174725217701802157098986085371.51305672546876049053871', '-1.250027266065882131796373435733789174353485894347195478800552238171304218002865263930261405672546876049053871e+85'); + T('-5051726177322.81786601098426577', '-0.478083315601904193517321798543685421468736554729083533236145832716201463299848292219431026180384620242431752321517', '-5051726177322.339782695382361576482678201456314578531263445270916466763854167283798536700151707780568973819615379757568247678483'); + T('-1805640145024569891681224418968926516432842084069.4683478', '-0.00004666227081', '-1.80564014502456989168122441896892651643284208406946830113772919e+48'); + T('-122539612725006940436479306393463901576107037860603468764716.442090206833953614902041846195976605726465853757952136575397703', '-41270858.6670990535407801373074922648949382808920775900799658210502034041462604039074761', '-1.225396127250069404364793063934639015761070378606034274938577749911532931734775945495813010383248343882636779863155251942988537395960925239e+59'); + T('-122359.1727490376', '1581678069.9607', '-1581800429.1334490376'); + T('0.00000828479828485256539017422162536712777837952542406358440363757753554784788015690875096756272853061031753883063876226018540022889614127275718921', '-0.00000000000979390831128660928240121877046', '0.00000828480807876087667678350402658589823837952542406358440363757753554784788015690875096756272853061031753883063876226018540022889614127275718921'); + T('3014937410709080363048635820022478067970287003612206702018715047141006381003373200865760747279383102148885920325786', '13192212031830204018622500889173518071465445462648474880006710438901406028.19078998512989422200926796249911378252', '3.01493741070908036304863582002247806797027381140017487181469642464011720748530173542029809880450309543844701891975780921001487010577799073203750088621748e+114'); + T('1137652429855.7006716974270280155270950682974135967673015740628328197884', '0.000005536906484', '1137652429855.7006661605205440155270950682974135967673015740628328197884'); + T('17516195002079504046599923580222888468136191973844988762823377013157696208127912781416616872247424539619546427766', '0.000000049332322771448227773362567337764784013258792663644857484303435435122827459514247309673313863866397145377917359757', '1.7516195002079504046599923580222888468136191973844988762823377013157696208127912781416616872247424539619546427765999999950667677228551772226637432662235215986741207336355142515696564564877172540485752690326686136133602854622082640243e+112'); + T('-27506767197655948181.328949804790883947367925537829924105775693473950222413500805587179604', '851744208518189337306972955526150694905469056618627352385522013393688952141414396074470925490405490728735', '-8.51744208518189337306972955526150694905469056618627352385522013393688952141414396074498432257603146676916328949804790883947367925537829924105775693473950222413500805587179604e+104'); + T('0.00000000000000016100516695902975851532468630731065388238733922125157107578982740360720', '0.000000000000005453287371976994277320664460255897903401402435852268978047976350868347882510607594', '-5.292282205017964518805339773948587249519015096631017406972186523464740682510607594e-15'); + T('-1015.36', '28726679251696495519418305.7', '-2.872667925169649551941932106e+25'); + T('-936968911546704282843988971022862859429380575863600004134648546127147385.550916104277091139359959595538873413416181058503593874140', '-175348106986507342335754762602245018364666640954631672307547275757550482650641067', '1.7534810604953843078905047975825604734180378152525109644394727162290193652349368144908389572290886064004040446112658658381894149640612586e+80'); + T('-82283247317913068455250030332808481250588157.87622854768457973434714154261139038109409280493164157480405984455365143662342695995148270', '44.99825878', '-8.22832473179130684552500303328084812505882028744873276845797343471415426113903810940928049316415748040598445536514366234269599514827e+43'); + T('0.0000000008490168', '-0.0000000000000006074865058947945839', '8.490174074865058947945839e-10'); + T('3636426464211118305138698215541505022990147742911418561057930702808150291', '1598908059965309335026038743126561583060668905575689367.6003785995795', '3.6364264642111183035397901555761956879641089997848569779972617972324609233996214004205e+72'); + T('-7516190.940861499379106729192131043068573493293233100655140480083907054072822505940742766302343169414520157351216195387299511801647', '-0.0000000000000454932933336808575963301305396992632885880696675679107651681040430359684592346731492202438', '-7516190.940861499379061235898797362210977163162693401391851892014239486162057337836699730333883934741370937107416195387299511801647'); + T('-48288936.78722249318487555690454563461', '-2005716261952974336303267852338923837806513', '2.00571626195297433630326785233892378951757621277750681512444309545436539e+42'); + T('0.00000000000000361164834854643173545096303609810033142721680028195071060833143531948647509219803554613154933367271433460345060095402441586344758203', '0', '3.61164834854643173545096303609810033142721680028195071060833143531948647509219803554613154933367271433460345060095402441586344758203e-15'); + T('117527597286243844925820166915403846128409126690409737.7024153118718614783138378277032681506289005899206380178136648075347527401515', '142970923259618812743278564725226081502378163356150859956591622347575726634881287085', '-1.429709232596188127432785647251085539050919195112250397896762185014473175081908773472975846881281385216861621722967318493710994100793619821863351924652472598485e+83'); + T('-421.637794298766899659968770626491660939483442168172530357951266709389524009618302536438221', '0.000007500440138930182530717119147674010713308857022125249921960367734502038756006365022302482030874542048185964246356551809776026365', '-421.637801799207038590151301343610808613494155477029552483201188669757258511657058542803243302482030874542048185964246356551809776026365'); + T('151539803714.55419760516058121061664', '5947110489174350865159529800495269979412122032546964623633750977098107', '-5.94711048917435086515952980049526997941212203254696462363359943729439244580239483941878938336e+69'); + T('42.96514137222747126649680518556598169535979854687275322179628273846143520146782958673105379865087129307601', '-10953889685.72652645743016845401321258839294061151336635450954240593892170965006938629511080', '10953889728.69166782965763972051001777395892230687316490138229562773520444811150458776294038673105379865087129307601'); + T('-45444452978530864728152294556239654908077032829329359349565438897.0872421377694', '-1.10543198001234853494574224133819939759899818427770986357398073461833864778527689', '-4.544445297853086472815229455623965490807703282932935934956543889598181015775705146505425775866180060240100181572229013642601926538166135221472311e+64'); + T('-0.002845911806687586456195667795987390886482178862015476630127308203573595922990347328439736545942442607248575854261113227721222844030682403654028296609', '-108143910626361371525060838061026913900811972840772563215348121329650489043833335691285421668618034618407054685798027697197635.65860759495683373744', '1.08143910626361371525060838061026913900811972840772563215348121329650489043833335691285421668618034618407054685798027697197635655761683150146150983804332204012609113517821137984523369872691796426404077009652671560263454057557392751424145738886772278777155969317596345971703391e+125'); + T('-46907095890372173836389327440139250674757510384063869086116234641758602924747249181765303804967251303089507.19103700711514447125694845740498171264', '25808803835091891711851699685937630228367986645198551990544154370479382.0551364316906891141232071494', '-4.690709589037217383638932744013925070056631421915576079796793432769623315311523582696385579551140567356888924617343880583358538015560680498171264e+106'); + T('774303554476944464976310906.2756072907223780702981916825924935009102144113269340555014106355954', '-2936542523893120558694770993613502855976036487473.1185405114318897552959636978670899057597113825111455591', '2.9365425238931205586955452971679798004410127983793941478021542678255941553804595834066699257938380796146014106355954e+48'); + T('-13275374194717318544585743586295562757313566313778528439681338744852144432953462009763652326380221990178967224217813656923840876936', '-1268893501255453921460255787670811403994557320916562978493176785265067911028531055.964036945884980267232', '-1.3275374194717318544585743586295562757313566313777259546180083290930684177165791198359657769059305427200474047432548589012812345880035963054115019732768e+130'); + T('335836320670736795110387481821779195576314622771385546058961565', '-6308825096439610198958861602887495693205.4798888075506048902810900464069359363711381750141774362863', '3.358363206707367951103937906468756351865135816329884335546547704798888075506048902810900464069359363711381750141774362863e+62'); + T('0.0000021372107920', '-1492049097078082888491204608304758854999.3774548350456232694485449355735093537220396664845726422284909165974459140941684162404595576799509302', '1.4920490970780828884912046083047588549993774569722564152694485449355735093537220396664845726422284909165974459140941684162404595576799509302e+39'); + T('-64732225450134517358652.7727736714979370370316688953979348962291764', '2981903640111957881620728082679423538602.35210787691735540826362359673812680870549799515376723672419104726837070300471', '-2.98190364011195794635295353281394089725512488154841529244529529249213606170493467439515376723672419104726837070300471e+39'); + T('0.00000000010852624286329189173169519346885793702035699273525590064499030', '0.00136476424465186406412883677012902', '-0.0013647641361256212008369450384338265311420629796430072647440993550097'); + T('-177975785070132616812935423102873085249499780810541192549343263252072028435998023073647418141301', '-283854219686234199819511886405040807512965424302362972904060004217971747993015757990079005629446149391437513331803368676845228.9308370137200554682048', '2.838542196862341998195118864048628317278952916855500374809571311327222482122052167975296623661940773630015153087297212587039279308370137200554682048e+125'); + T('11674840520046183.070270802775802015272346477', '171117028337514616542538412107099681879.7091235075363784803038814937481135947601822871', '-1.711170283375146165425267372665796356966388527047605764650315350167481135947601822871e+38'); + T('11685421494153882328823406', '99823703745248486246555543362896398057.69654850969729974206782841252942985600643', '-9.982370374523680082506138948056757465169654850969729974206782841252942985600643e+37'); + T('-9109482616.16307635880678540039795900931968117400633485165763268347733490749858174229181208845630928397440346561525883931665961736391868364592211620', '14097919301831317803788298625489630505329242071596241458071703375084752395181642884783601132188.8522', '-1.40979193018313178037882986254896305053292420715962414580717033750847523951816428847927106148050152763588067854003979590093196811740063348516576326834773349074985817422918120884563092839744034656152588393166596173639186836459221162e+94'); + T('-396517877066594063060677506383119536072199294985913999200669.59905258559791428967320074613407023609823115620484119798490058332639', '17256241436287752756476467398810586324749967766162129140817034689021019365.9302352418415133924725065381333905577352346319497471430577092460069', '-1.725624143628814927435353399287364700225635088569820134011202060302022003552928782743942768214570728426746079383346578815458834104260982933329e+73'); + T('-0.0000000000000006853990620674437', '-11653311815829554561363099986.3318015068509425148506115888737905', '1.16533118158295545613630999863318015068509418294515495214300905e+28'); + T('-5723499348320995600234845601896898858316706679233.56868503185838526295669696287365718201389967796395316338461191538328404398163', '461418995024299794224540170173617.270340', '-5.72349934832099606165384062619669308285687685285083902503185838526295669696287365718201389967796395316338461191538328404398163e+48'); + T('-0.0000000000000101517398894041224975316', '30047274158786647140078597868700853194123877763708264122482641575288270215565704601867490408221403474129054083514278658302219', '-3.00472741587866471400785978687008531941238777637082641224826415752882702155657046018674904082214034741290540835142786583022190000000000000101517398894041224975316e+124'); + T('-618567708703808887087390708806987', '-0.0015997812131968024699920112', '-6.185677087038088870873907088069869984002187868031975300079888e+32'); + T('34635015.52962864534284905231551787970767779289829087969225962977505217622119009888696504123088304563966631377931959000', '65036143001432807857013922660931089988524905416395272216298294489190408991210531327960173961048126960813108032096.485609144979688026094', '-6.503614300143280785701392266093108998852490541639527221629829448919040899121053132796017396104812696081307339708095598049963683897377848212029232220710170912030774037022494782377880990111303495876911695436033368622068041e+112'); + T('0.00000545779896722128', '75.894260707608627618281140481123324654999311980', '-75.89425524980966039700114048112332465499931198'); + T('-25447415.284973', '-0.0000000000000007754252238300503245755256660265406480381126460350812317568910629452911860373986555887795038942931814558679883067258919646131547862678299152', '-25447415.2849729999999992245747761699496754244743339734593519618873539649187682431089370547088139626013444112204961057068185441320116932741080353868452137321700848'); + T('-0.001075197560340105849714564474713709665034764454198356529111553747592026589852279831398339755093155322360635646225772353512853661478291013155199651968', '-0.00020617706103921965422517798875780714829530744843284313739680833048742357175207280371959115967601565', '-0.000869020499300886195489386485955902516739457005765513391714745417104603018100207027678748595417139672360635646225772353512853661478291013155199651968'); + T('-116637095502756610832663.0820790492356971286520755389123518333397635564353785857413082439598928', '1333189986026163882571196149909544777510081036404785123663838051125806079402280.39239585', '-1.3331899860261638825711961499095447775100810364047851237804751466285626902349434744748992356971286520755389123518333397635564353785857413082439598928e+78'); + T('7263206331639956734034338857142.2483005287993760580093202768989231263952047014145290402299553496171737360348099042', '930482152339662', '7.2632063316399558035521865174802483005287993760580093202768989231263952047014145290402299553496171737360348099042e+30'); + T('17084', '-9268741940429543879.25831048455993577463', '9268741940429560963.25831048455993577463'); + T('14223703.25068993203', '-337469327718493482402348015976790428942562', '3.3746932771849348240234801597679044316626525068993203e+41'); + T('3449947415518601.021', '967.0', '3449947415517634.021'); + T('-0.00000001950779962429255860674296257770624055952071967804562271969656131634150181850350309', '0.0000000008381662576798806596505469925921281919496917780384885026235741778910169613942109570101961434140020955862069084082830238300586284', '-2.03459658819724392663935095702983687514704114560841112223201354942325187798977140470101961434140020955862069084082830238300586284e-8'); + T('-150022.550348329907362699413739505634058542', '184370701561492907256959190967889134766063594155869181275951.2113720965937284915580147334609117040504470778054254305016213147502', '-1.843707015614929072569591909678891347660635941558691814259737617204265010911909717542390949702460504470778054254305016213147502e+59'); + T('0.000003620654231399775474818103408872051818273000913919007645231626869893019046908014555613658', '0.68604446001049997675748396664984795835553205960118589677575278373113193853373621258895597212465646303658933', '-0.68604083935626857698200914854643908630371378660027197776810755210426204551468930457440035846665646303658933'); + T('65368354350846125525740295379107787645781698927087650085.02206520625654961397', '-0.0000000674457908966051035778148933613021264363709209074145574586026651385058583013192568248506496786927539106989162985222622021758286164962220899099', '6.53683543508461255257402953791077876457816989270876500850220652737023405105751035778148933613021264363709209074145574586026651385058583013192568248506496786927539106989162985222622021758286164962220899099e+55'); + T('-8920208628291.3008573264554796861275279433556810380829567356987428005869325303620053400734014217983382463883243235802100794975758488782407', '-513373869275942293084285976984505491137681087793006719363115134289902581030528408559950531152647492241975261279494', '5.133738692759422930842859769845054911376810877930067193631151342899025810305284085599505311526474922330550526512026991426735445203138724720566443189619170432643012571994130674696379946599265985782016617536116756764197899205024241511217593e+113'); + T('-0.00000000000183230276994692835786255816165075667312', '-229380247132858507707379441535866.9842134679934568352180933906622411983573128385632545016159055477', '2.293802471328585077073794415358669842134679916245324481464623043786401956620818901345016159055477e+32'); + T('-287936424370618182.780178943170029610095984105232897190551066507742776730608050074096160389428747382606461428337968', '-0.0000000000000553002065739653836900325094668610744480924050098363944976572396316708026350418744470424301014068736481205320698956807538835', '-287936424370618182.7801789431699743098894101398492071580415996466683286382030402377016627321891157118038263864635209575698985931263518794679301043192461165'); + T('-22.334064568139055296413453550456558402422719815', '-5916832358056988948884.3608360136502313', '5.916832358056988948862026771445511176003586546449543441597577280185e+21'); + T('39536714308273957618181661117092495089825904732491104299979330463137078095213622807057621623.41662', '589200756584346355393503066.219095388726950444141250942', '3.9536714308273957618181661117092495089825904732491104299979330462547877338629276451664118557197524611273049555858749058e+91'); + T('3332373913416111574992795772547417643215092643096621602439954355776074197.0830941294911902023033935298448733337875606874978778273299805496488198', '-376783721571530269384664901.84367020991', '3.3323739134161115749927957725474176432150926434734053240114846251607390989267643394011902023033935298448733337875606874978778273299805496488198e+72'); + T('344530122785201375772271590504206290220784446141965110231600995362970158247376180772409197123197131294077.186098277324338477562529348577734786615', '-6800118879080455193015443336230714183574736068660393152304.8553', '3.44530122785201375772271590504206290220784446148765229110681450555985601583606894955983933191857524446382041398277324338477562529348577734786615e+104'); + T('-3163.9', '542978947164157706891911715882635312937995954746776936', '-5.429789471641577068919117158826353129379959547467800999e+53'); + T('-0.0105476924518869569128457836748478061179109848158054941752355692339310906027532526097315426003502305592037541108758447196738444856373715790727005274', '-6071446248.8516018389629874549426069280533669184418994141964930724996411053034540030731460065', '6071446248.8410541465111004980297611443785191123239884293806875783244055360695229124703927538902684573996497694407962458891241552803261555143626284209272994726'); + T('7010541707164752', '193282362072373636518312100314810747000413165206769770654226368116684704540011812177387120657825195495894912200085910730717115', '-1.93282362072373636518312100314810747000413165206769770654226368116684704540011812177387120657825195495894912193075369023552363e+125'); + T('-0.000000023007226851065128925630962810852833918316878559874', '-2227361414820256464065922780424658.1090', '2.227361414820256464065922780424658108999976992773148934871074369037189147166081683121440126e+33'); + T('-1299409497083890403177181021135821640390762146063059101862994.03242662743092991583924105899423080674085051582932994688405941727718256319443172611542', '15608748.5795516673514981732595600003601066848923630692039049676154725134079753969829680892279555729548167054550621674232927404', '-1.2994094970838904031771810211358216403907621460630591174717426119782947824280890988010593543374916332135850332349144995319306851579601773998153433755729548167054550621674232927404e+60'); + T('0.0010233218531674933882798080038538892677859219827', '0.00000000000000000045199509493736627851797824870803', '0.00102332185316749293628471306648761074980767327467'); + T('1948739934183785636586602970179911734844812119742663347882584684214752603558036589222.0466138568409029422628086739352361053669148', '1', '1.9487399341837856365866029701799117348448121197426633478825846842147526035580365892210466138568409029422628086739352361053669148e+84'); + T('-44988.17201344296154165057134154894617', '-974065266153241716711223.01990357382515241927388516358056793645871008786729345524788381378024038040395896194', '9.7406526615324171666623484789013086361076870254361463439793645871008786729345524788381378024038040395896194e+23'); + T('745292098682291838946082762537313754587386896855334901324378413687611576868785947032214747734817.29211388635775339523', '1603867082712698768798395795990225766099634680717512610131434577189024930073228282709539770294753232846533372678799230422356361956.600981654582985832103', '-1.603867082712698768798395795990225020807535998425673664048672039875270342686331427374638445916339545234956503892852198207608627139308867768225232436873e+129'); + T('631756437278888751214121898961751903012419248661678700380667.3292365506360170752783293706267811846643253079106924335724182257177006394590934297614', '2.5458577', '6.317564372788887512141218989617519030124192486616787003806647833788506360170752783293706267811846643253079106924335724182257177006394590934297614e+59'); + + T('1.28687824652704e-1', '-6.698774e-7', '0.128688494530104'); + T('1.96882453e+4', '-2.36884e+4', '43376.6453'); + T('4.808718317e+1', '-8.925037868396601e+10', '89250378732.05319317'); + T('4.46523409841128641e+17', '-1.95389255e+8', '446523410036517896'); + T('1.6093613199311543706483e+9', '-3.73783629619292e+10', '38987724281.8603543706483'); + T('7.725438045407340759132811929e+20', '2.138563034e+3', '772543804540734073774.7181589'); + T('-1.87913317632093687e+17', '-1.463e+3', '-187913317632092224'); + T('-4.050502080705989793958e+18', '-8.7328619183422188241e+8', '-4050502079832703602.12377811759'); + T('-1.487e+0', '-1.966e+1', '18.173'); + T('6.1045011712250705486e-8', '-4.629661371271963538730865e-17', '6.104501175854731919871963538730865e-8'); + T('8.04812092e+3', '2.72507554517550342397e-11', '8048.1209199999727492445482449657603'); + T('5.5494e+0', '9.98100066134314965301158e+17', '-998100066134314959.751758'); + T('-7.4960224131954428972698482953e+0', '-1.796223184996831375e+7', '17962224.3539459005545571027301517047'); + T('1e+0', '1.01572540062334032198739881e+12', '-1015725400622.34032198739881'); + T('-3.075828909877630559405653e+24', '-6.20852829406318715e+15', '-3.07582890366910226534246585e+24'); + T('-7.3885363256616208126763e+18', '-4.22e-11', '-7388536325661620812.6762999999578'); + T('1.3633033e+8', '1.098216485205929e-1', '136330329.8901783514794071'); + T('-2.199452313170283112273e+20', '-5.39263091194725e+13', '-219945177390719191754.8'); + T('-8.56e+2', '0e+0', '-856'); + T('1.2877828562642718847e+5', '4.31337491e+4', '85644.53652642718847'); + T('1.4061037483985e+10', '-6.6330709216531850592433e-6', '14061037483.9850066330709216531850592433'); + T('-8.4483135e-12', '-4.113751474103595929387e-2', '0.04113751473258764579387'); + T('-1.03739443149798e+6', '4.343428478300989093e+4', '-1080828.71628098989093'); + T('1e+0', '-1.263607183e+1', '13.63607183'); + T('-2.2320214496959336032e+19', '-1.634037313014e+12', '-22320212862922023018'); + T('7.10073836719e+5', '-1e+0', '710074.836719'); + T('-2.49072186445097e+13', '9e+0', '-24907218644518.7'); + T('-2.9e-20', '-2.15971658258839e+6', '2159716.582588389999999999971'); + T('2.963920096335082831168e+18', '2.2582253282839e+6', '2963920096332824605.8397161'); + T('-4.14586e+3', '-2.9154876269e+4', '25009.016269'); + T('-1.03004879281543026e+15', '-3.78177957668791144e+3', '-1030048792811648.48042331208856'); + T('-9e+0', '4.022232761275766154688145458e+1', '-49.22232761275766154688145458'); + T('1.86836560622539908029690893881e+22', '7.662554282002068984274562e-7', '1.86836560622539908029690893873337445717997931015725438e+22'); + T('3.97689874072e+11', '-3.5744e+3', '397689877646.4'); + T('0e+0', '5.0942844226755638584371e-20', '-5.0942844226755638584371e-20'); + T('-4.12770106201259e+14', '-5.0659330520967113815e+2', '-412770106200752.40669479032886185'); + T('0e+0', '-2.4438628e+7', '24438628'); + T('4.8284508891459500047917633538e+2', '1.0650081449195084887e+2', '376.34427442264415160917633538'); + T('3.0960998932675992e+13', '1.5217314605145612561e+19', '-15217283644146679885.008'); + T('-3.731852849155459781176419989e+27', '4.33183367677e+9', '-3.73185284915545978550825366577e+27'); + T('9.08814632201479508422122537138e+1', '4.73770550569e+2', '-382.8890873488520491577877462862'); + T('3.810846909868531e+7', '2.4444336909e+2', '38108224.65531622'); + T('-2.000986521711238411058857571e+5', '-7.048740793695688315e+18', '7048740793695488216.3478288761588941142429'); + T('2.09309765830355290819000023e-3', '5e+0', '-4.99790690234169644709180999977'); + T('7.70724770820309161581e-5', '2.533e-12', '0.0000770724745490309161581'); + T('2.53375068e+6', '4.00994583e+0', '2533746.67005417'); + T('2e+0', '-6.264387065771998085033e+17', '626438706577199810.5033'); + T('-1.2407705424252222353e+19', '1.8244036019e-1', '-12407705424252222353.18244036019'); + T('-1.799721324042e+12', '-1.3447368530231020851721e+12', '-454984471018.8979148279'); + T('-5.6651404522751594041444107472e+20', '-7.535689111154473052048e+13', '-566513969870624828869.71055424'); + T('3.769112233878e+8', '-1e-10', '376911223.3878000001'); + T('-1.839105258587571e+0', '1.20177991131103601214234e+23', '-1.20177991131103601214235839105258587571e+23'); + T('1.082600317037849190993749e+19', '1.4938307025455867644875688e-4', '10826003170378491909.93734061692974544132355124312'); + T('1.12e+1', '3e+0', '8.2'); + T('6.526872092482495666296825e+9', '4.8645966080716540006e-18', '6526872092.4824956662968249951354033919283459994'); + T('1.339857855971657033752952445e+27', '-4e+0', '1.339857855971657033752952449e+27'); + T('-2.419044558390159646056e-13', '-1.3079097339e+2', '130.7909733899997580955441609840353944'); + T('-7.1705677513767136563e-17', '-6.3081315e-10', '6.30813078294322486232863437e-10'); + T('-2.124781842799053e-2', '5.5030007661157553e+16', '-55030007661157553.02124781842799053'); + T('1.55629535242e+4', '-5.1428769625e-1', '15563.46781189625'); + T('1.01504354636013042e+15', '2.63791456408046734975e+15', '-1622871017720336.92975'); + T('-9.4294e+4', '1.8866986e+7', '-18961280'); + T('1.71775e+1', '-9.97178848809e+7', '99717902.0584'); + T('-6.51108703897071e-2', '2.0481127e+7', '-20481127.0651108703897071'); + T('2.5575417677e+10', '-9.875210228621188311e+18', '9875210254196605988'); + T('-1.515600255e+1', '1.78e+0', '-16.93600255'); + T('-4.934811484526990303505e+15', '3.903941767e-17', '-4934811484526990.30350500000000003903941767'); + T('2.660689025e+9', '1.210751379395e-18', '2660689024.999999999999999998789248620605'); + T('-1.3039e+3', '3.693e+0', '-1307.593'); + T('-8.150211374792494231850488e+10', '-2.4154e+4', '-81502089593.92494231850488'); + T('-7.04276965355095765787e+2', '5.12083556215696675027418e-3', '-704.28208619065792275375027418'); + T('4.560203906e+6', '6.662833107173476e+6', '-2102629.201173476'); + T('1.18219623035280292278e+16', '1.35881201163097673230180989e+16', '-1766157812781738.0952180989'); + T('1.01145921064769030827e+12', '1.0162177943917298766993291463e+4', '1011459200485.512364352701233006708537'); + T('4.478831496443e+12', '-3e+0', '4478831496446'); + T('-4.8033663475504622462769283e+6', '2.400585121791519891706e+17', '-240058512183955355.5181504622462769283'); + T('-1.197167677719e+4', '-9.5568526467142828986e+3', '-2414.8241304757171014'); + T('1.0454e+4', '-7.5783e-13', '10454.00000000000075783'); + T('1.497160982390283668405594719e+2', '3.01769088202242341433267860826e+29', '-3.017690882022423414332678606762839017609716331594405281e+29'); + T('-6.8836180118422e+2', '-4.8579187557539e+5', '485103.51377420578'); + T('-2.2015868446618e+0', '1.112092601534267192772461445e-1', '-2.3127961048152267192772461445'); + T('-1.72703850655851149109833572e+24', '0e+0', '-1.72703850655851149109833572e+24'); + T('-1.722156947575281448505e+21', '7.2324954621329520621898740974e+7', '-1.722156947575353773459621329520621898740974e+21'); + T('1.5403804214964843217980824e+9', '1.2891e+1', '1540380408.6054843217980824'); + T('-5.945326523e+4', '4.669485020980197203323689e+4', '-106148.11543980197203323689'); + T('5.55266637914837652416872269693e+21', '1.471120167304946e+14', '5.55266623203635979367412269693e+21'); + T('3.73778817609658865295139e+1', '-9.87441939032866e+6', '9874456.7682104209658865295139'); + T('5.1012538663005271824613969722e+22', '-1.50156e+0', '5.1012538663005271824615471282e+22'); + T('-2.058e+2', '2.8646830031089679744e+17', '-286468300310897003.24'); + T('-1.632e-16', '9.9938831828547468539e+19', '-99938831828547468539.0000000000000001632'); + T('3.74855475772666e+1', '4.636917906044210284685212e+14', '-463691790604383.5429209439334'); + T('-6.125e+1', '-1.01695009327434527205612623e+7', '10169439.6827434527205612623'); + T('-3.713055373107057485e+8', '-1.579459775785685628895042e+12', '1579088470248.374923146542'); + T('-4.973637071239865e+8', '9.700610204149955956e+18', '-9700610204647319663.1239865'); + T('0e+0', '-4.4905032171787016875848189267e+20', '449050321717870168758.48189267'); + T('-1.4666228937e+5', '4.268680884193908e-17', '-146662.28937000000000004268680884193908'); + T('5.70462240242e+5', '1.140990056118581205e+15', '-1140990055548118.964758'); + T('3.4806661e-11', '8.29856853e+2', '-829.856852999965193339'); + T('-9.086912118595249999201e+21', '3.898423213142569952135e+9', '-9.086912118599148422414142569952135e+21'); + T('-1.61819145378513602550953401e+8', '2.6469734905241672957e+10', '-26631554050.620186559550953401'); + T('1.8497588e+7', '3.133737672348e-9', '18497587.999999996866262327652'); + T('-6.21844625e+6', '6.448980631426448042e-2', '-6218446.31448980631426448042'); + T('2.0553505882011009665e+19', '6.92603e+4', '20553505882010940404.7'); + T('1.92248242840598741949091e+13', '1.339870445733828207038e+20', '-133987025348558536643.9258050909'); + T('4.7736392e-14', '-8.243397452128704948729866e+11', '824339745212.870494872986647736392'); + T('-1.7e+1', '-7.923074334739511792397e-16', '-16.9999999999999992076925665260488207603'); + T('4.9635811440987476026476e-17', '-1.466e-1', '0.146600000000000049635811440987476026476'); + T('2.512230419e+4', '2.5397165598196246028285880532e-1', '25122.05021834401803753971714119468'); + T('-1.11299e+2', '1.11035558611694808056e-18', '-111.29900000000000000111035558611694808056'); + T('2.026822870015760981220174257e-5', '-2.047169266002425550414624e-19', '0.0000202682287001578145291283428125550414624'); + T('-4.0648049768873318277e+6', '-3e+0', '-4064801.9768873318277'); + T('-2.588724223892656991e-16', '3.0098072257229e-6', '-0.0000030098072259817724223892656991'); + T('1.56373140247e+4', '-3.91671625230328e+8', '391687262.5443527'); + T('1.00341736976978e-7', '2.304833813547170392924601625e+22', '-2.3048338135471703929246016249899658263023022e+22'); + T('8.35221698180089026e-19', '-9.32578907000664374e+2', '932.578907000664374000835221698180089026'); + T('-1.08764251456624192e+8', '5.0280989399438845291162488994e+9', '-5136863191.4005087211162488994'); + T('2.46130217148349070169911254e+26', '-1.5624487714497915185829268064e-20', '2.46130217148349070169911254000000000000000000015624487714497915185829268064e+26'); + T('1.01340342215606347222e+6', '-9.22914210865038825420171003e-5', '1013403.4222483548933065038825420171003'); + T('-3.4384e+4', '2.364774267367323611e-9', '-34384.000000002364774267367323611'); + T('2.754440021463e+8', '-8.87772958126791e+2', '275444889.919258126791'); + T('7.866841036008389399178e+3', '2.250087110372669759e+8', '-225000844.196230967510600822'); + T('-1.048e+3', '2e+0', '-1050'); + T('1.51258199632721102661464e-18', '1.37889e+3', '-1378.88999999999999999848741800367278897338536'); + T('-1.247e+3', '-4.576980640479189083e+3', '3329.980640479189083'); + T('2.01135499e+5', '-2e+0', '201137.499'); + T('7.03046195059871843437588e+23', '-2.434388173985239e+12', '7.03046195062306231611573239e+23'); + T('-3.54e+2', '-2.0062114120746252479542e+4', '19708.114120746252479542'); + T('-1.703025e-18', '-3.4292979189222437121973e+21', '3.429297918922243712197299999999999999998296975e+21'); + T('4.87547962612395e+6', '-3.6652187394898226692963e+9', '3670094219.1159466192963'); + T('-2.0143114813870112462786921e-17', '3.767411e+0', '-3.767411000000000020143114813870112462786921'); + T('3.26586277019e+6', '-2.38239842063e+11', '238243107925.77019'); + T('6.097001595334722255599827169e+1', '-1.27e+1', '73.67001595334722255599827169'); + T('2.5862383503225371e+9', '-5.1214922610895542e-1', '2586238350.83468632610895542'); + T('2.231e+1', '2.117312218972605e+5', '-211708.9118972605'); + T('3.80021425650817317250555e+13', '-1.93695171769468e+11', '38195837736851.1997250555'); + T('-7.810946417020212022651917386e+18', '2.290482727614761942741662e+7', '-7810946417043116849.92806500542741662'); + T('3e+0', '-2.2205773655663464012097e-6', '3.0000022205773655663464012097'); + T('3.64246615622912558467016935e+26', '0e+0', '3.64246615622912558467016935e+26'); + T('3.77e+3', '-1e+0', '3771'); + T('-3.58605723986826101196397318e+26', '-1.485e+2', '-3.586057239868261011963971695e+26'); + T('-3e+0', '1.40899579022e+11', '-140899579025'); + T('-1.45909430175366456235718665e+19', '-3.4261617579351795158e+18', '-11164781259601466107.7718665'); + T('-2.348189590117898492617e+8', '2.878559430244312e+14', '-287856177843390.2117898492617'); + T('-9.7e+0', '2.690189646188e+1', '-36.60189646188'); + T('1.36455632e-1', '2.93006388540946905134174872e+13', '-29300638854094.5540577854872'); + T('4.048592176739e-20', '-6.005127e+2', '600.51270000000000000004048592176739'); + T('-2.566085007096806352945241e+6', '1.0191e-13', '-2566085.007096806353047151'); + T('-3.31696e+2', '6.3e+1', '-394.696'); + T('4.1079014482683004e+8', '6.4446707e+7', '346343437.82683004'); + T('-1.577640941527783e+9', '1.27337662718184094697659300437e-5', '-1577640941.5277957337662718184094697659300437'); + T('2.7420244617713377e+16', '-8.623235881e-16', '27420244617713377.0000000000000008623235881'); + T('2.13592440096179687295287e+23', '-5.24330594e+5', '2.13592440096179687819617594e+23'); + T('4.5966088142543734664499633e-4', '1.9622997228567688328e+13', '-19622997228567.68786833911857456265335500367'); + T('-2.003763953536177099e+9', '9.92e-20', '-2003763953.5361770990000000000992'); + T('1.549844513583e+5', '2.12886113900670758986381e+14', '-212886113745686.307628081'); + T('-5.035786855374e+12', '1.5195491474751e+13', '-20231278330125'); + T('-8.837922375208113241898942499e+23', '4.91312103789241e-17', '-8.837922375208113241898942499000000000000491312103789241e+23'); + T('5.28121115884713e+6', '9.35111e+2', '5280276.04784713'); + T('7.0534112016532323024600701578e+21', '2.158e+0', '7.0534112016532323024579121578e+21'); + T('-1.22304768148016734601138489e+20', '9.08133282381327051184228774e+26', '-9.08133404686095199200963375138489e+26'); + T('1.899e-6', '2.153419180764601e+10', '-21534191807.646008101'); + T('-5.650839046342472094e+5', '5.0808365974271307182e+8', '-508648743.6473473190294'); + T('-9.4e+1', '-2.6927013e+0', '-91.3072987'); + T('-6.571708892881e+12', '-8.545294322652905079217675482e+19', '85452936654820157911.17675482'); + T('-1.76782224366755e+10', '-4.13948649746403e+10', '23716642537.9648'); + T('-5.54107604714186288144437e+7', '-4.96270174556976430531733658389e+25', '4.96270174556976429977626053674813711855563e+25'); + T('-9.978651982580698767e+16', '-6.954508412732601e+0', '-99786519825806980.715491587267399'); + T('1.8693160127470428298008436e-4', '1.547218677067e+11', '-154721867706.69981306839872529571701991564'); + T('-1.38945385393184793207e+20', '1.37289934375618017208481128e+20', '-276235319768802810415.481128'); + T('-2.03189937609562003767063412e-3', '1.50517775495e+11', '-150517775495.00203189937609562003767063412'); + T('5.37526674392168e+11', '6.281346735299e+9', '531245327656.869'); + T('-3.1901487e+4', '-2.47278901189761333644390687e-17', '-31901.4869999999999999752721098810238666355609313'); + T('1.911067e+3', '1.63809954792658e+10', '-16380993568.1988'); + T('-6.262e+0', '-4.732755159790421866759181099e+12', '4732755159784.159866759181099'); + T('1.9922595737406200707054959707e+19', '1.5757171e+0', '19922595737406200705.479242607'); + T('-4.20463196e+6', '-5.39927e+4', '-4150639.26'); + T('5.698457e+5', '0e+0', '569845.7'); + T('-2.3755793e+6', '-3.03634360026652225878481594e-5', '-2375579.2999696365639973347774121518406'); + T('-1.2540612364355e+13', '-9.7056758273427691e-14', '-12540612364354.999999999999902943241726572309'); + T('7e+0', '-2.1217135735760987306431493773e+10', '21217135742.760987306431493773'); + T('-1.878187232e+1', '1e+0', '-19.78187232'); + T('4.083686618644527491e+14', '-1.0207e-8', '408368661864452.749100010207'); + T('1.936437398920283252217215e+7', '-1.426953028e+1', '19364388.25873311252217215'); + T('-5.36e+1', '-3.270440850977315671331954027e+27', '3.2704408509773156713319539734e+27'); + T('-5e+0', '3.9771e+4', '-39776'); + T('-1.41165283690117849025039415809e+15', '9.2653033582808e+1', '-1411652836901271.14328397696609'); + T('1e+0', '5.853518072e+8', '-585351806.2'); + T('9.28866302211484528e-16', '3.42924e+3', '-3429.239999999999999071133697788515472'); + T('1.5141918664046020576449895893e+12', '-1.61e+2', '1514191866565.6020576449895893'); + T('1.38289322288900523715e+1', '7.080258718068754274828878e+11', '-708025871793.0464952539977476285'); + T('4.021120497e+9', '-3.58323864641440176097e+12', '3587259766911.40176097'); + T('3.9109896247281e+5', '-7.7768225519466054995224860986e+28', '7.776822551946605499522525208496247281e+28'); + T('5.52e-6', '1.34849494404812613034319555618e+29', '-1.3484949440481261303431955561799999448e+29'); + T('2.0537e-20', '-6.4758411334071e+7', '64758411.334071000000000000020537'); + T('-3.1417778482733028111928e-15', '3.3188180849003762977741480641e+28', '-3.31881808490037629777414806410000000000000031417778482733028111928e+28'); + T('-8.744874784408647631e+0', '2.135742081446470378868598e+24', '-2.135742081446470378868606744874784408647631e+24'); + T('4.84800483e+2', '3.91e+1', '445.700483'); + T('-3.7016741e-12', '-4.1497617308e-1', '0.4149761730762983259'); + T('-6e+0', '-6.8805897379338e+13', '68805897379332'); + T('6.250477943675354e+3', '-2e+0', '6252.477943675354'); + T('6.3749589779023191251153515e+1', '-5.20173903691687372543e+3', '5265.488626695896916681153515'); + T('-6.6824849945959e+13', '3.901733743171141119056850874e+27', '-3.901733743171207943906796833e+27'); + T('-2.0817240249744817154064994e+21', '5.985e+1', '-2.0817240249744817154663494e+21'); + T('-2.9323306082438653e-1', '-4.051822836352475688965270021e+15', '4051822836352475.39573220919661347'); + T('1.41083866e+7', '1.222938e+6', '12885448.6'); + T('-2.685513393949e+6', '3.6665913622890279695898073188e+8', '-369344649.62285179695898073188'); + T('2.1722453e+3', '5.27433180346789078179e+12', '-5274331801295.64548179'); + T('1.82945984e+1', '2.84080338471485422824162e+7', '-28408015.5525501422824162'); + T('3.8282192270741792760092388e-2', '-1.034837658465e+2', '103.522048038770741792760092388'); + T('5.90588e+0', '3.041191e+2', '-298.21322'); + T('-3e+0', '-2.22554559e+2', '219.554559'); + T('-1.58686397805828293e-1', '-2.50678032123148961445e+20', '250678032123148961444.841313602194171707'); + T('6.9731426202279009749874e+16', '-6.8033025527322349e+3', '69731426202285813.0524267322349'); + T('-3.5288065255382459e+8', '4.319711887733e-5', '-352880652.55386778711887733'); + T('-3.861521213463773165e+10', '2.1786e+4', '-38615233920.63773165'); + T('1.712e+2', '1.34100827765345675353094e-1', '171.065899172234654324646906'); + T('5.78089955830190857610305894e+1', '6.36549849502761e+4', '-63597.1759546930809142389694106'); + T('-2.044680654381125e+11', '-1.96641728023668398742736257646e+29', '1.966417280236683985382681922078875e+29'); + T('-2.9076e+1', '-2.7871249e+7', '27871219.924'); + T('1.0798349049680377701191303e+1', '-1.28969281e+7', '12896938.898349049680377701191303'); + T('-5.84e+0', '4.096887717702998692e-5', '-5.84004096887717702998692'); + T('-4.444975675033721e-1', '-3.1452254562577476e+0', '2.7007278887543755'); + T('1.183597e-16', '-8.2003e+2', '820.0300000000000001183597'); + T('4.08955925538021395e-9', '0e+0', '4.08955925538021395e-9'); + T('-8.518844894710593442e+7', '8.021e+1', '-85188529.15710593442'); + T('2.68232609980658991729575880176e+0', '0e+0', '2.68232609980658991729575880176'); + T('4.4477770435926438470217122e+8', '5.12429681263e+7', '393534736.23296438470217122'); + T('1.6841448787702267666418174e-17', '-1.2182119751289e+1', '12.182119751289000016841448787702267666418174'); + T('-2.2729761e+5', '-4.46452153e+0', '-227293.14547847'); + T('1.0246412734413008e-11', '4.66232758476e-16', '1.0245946501654532e-11'); + T('-2.68821719678017623378e-19', '3.39024822961193e-2', '-0.033902482296119300268821719678017623378'); + T('1.853752578428008999076e+6', '2.3969844952707427e-18', '1853752.5784280089990759976030155047292573'); + T('7.61e+2', '2.4131847562072898e+13', '-24131847561311.898'); + T('3.109821644875197306e-16', '1.606639839e-19', '3.108215005036197306e-16'); + T('-6.1011e+3', '3.906986073489232797471e+9', '-3906992174.589232797471'); + T('9e+0', '6.09778743145589590112609339e-2', '8.9390221256854410409887390661'); + T('-2.33021e-12', '-5.805032816747e+12', '5805032816746.99999999999766979'); + T('5.785870917e+2', '2.8947e+4', '-28368.4129083'); + T('4.9138011093118555140264508438e+1', '-2.688188222207754803e-17', '49.13801109311855516714639066007754803'); + T('6.86328788e-20', '-1.0903e-4', '0.0001090300000000000686328788'); + T('-1.5222667065790299e-10', '-5.30045567313202177385949422e+8', '530045567.31320217723372275134209701'); + T('2.102091e+0', '-2.69376496330958751240504762e+26', '2.69376496330958751240504764102091e+26'); + T('3.944367498734539718e+1', '-1.46339226240020591588421e+15', '1463392262400245.35955919734539718'); + T('5.7233801647184e+10', '-6.5e+0', '57233801653.684'); + T('-3.803540018773522987078e-15', '-4.8838714337004857737078494e+4', '48838.714337004857733274953981226477012922'); + T('2.4743428039e+9', '-7.150348863482e+2', '2474343518.9348863482'); + T('-4.72e+0', '-2.74711687758923547052379498e+0', '-1.97288312241076452947620502'); + T('-7.65e+1', '-1.3497715e+5', '134900.65'); + T('-1.302284775e+7', '-5.259e-14', '-13022847.74999999999994741'); + T('-7.9577e+4', '-2e+0', '-79575'); + T('6.36947759756484191820773706e+10', '-5.37489619395631884896608e+10', '117443737915.2116076717381706'); + T('2.8137158805278468362788e-15', '1.45644e+3', '-1456.4399999999999971862841194721531637212'); + T('2.214e+0', '-7.164325571694427826653861996e+15', '7164325571694430.040653861996'); + T('-3.80573224245e+11', '6.30327705991065191e+18', '-6303277440483876155'); + T('-1.3156481902267089e+3', '-3.987e+3', '2671.3518097732911'); + T('-2.473947689670568922810605185e+3', '-5.9864037611282e+7', '59861563.663592329431077189394815'); + T('1.1001731e+7', '-9.2848140928651653621884e+0', '11001740.2848140928651653621884'); + T('-9.8044989570620753370567373e+7', '-1.17e+1', '-98044977.870620753370567373'); + T('-3.7000443862e+1', '-1.9192804071866287509957721855e+12', '1919280407149.6283071337721855'); + T('-9.5557565112682694e+1', '-1.139475090734929511787e+21', '1.139475090734929511691442434887317306e+21'); + T('-9.36659e+4', '-2.2488368141052655e-10', '-93665.89999999977511631858947345'); + T('0e+0', '-1.96659668503522757503562e+15', '1966596685035227.57503562'); + T('-2.46588281577379345e+9', '-1.52735567584678502576392632012e+9', '-938527139.92700842423607367988'); + T('1.116693556411266004e+13', '8.181470064283092308441666e+0', '11166935564104.478569935716907691558334'); + T('1.42867858509369e+11', '6.36335708310839028e+14', '-636192840452329.659'); + T('9.46345944e-20', '4.09009002345797e+0', '-4.0900900234579699999053654056'); + T('0e+0', '-5.752093e-16', '5.752093e-16'); + T('0e+0', '-7e+0', '7'); + T('6.671e+1', '-5.22802396973925929e+6', '5228090.67973925929'); + T('3.80635453384970742358475002e+21', '1.6514766472479832640394018164e+1', '3.806354533849707423568235253527520167359605981836e+21'); + T('3.909e+1', '-3.0330657786e-7', '39.09000030330657786'); + T('-4.177266320643e+2', '4.36481347232e+5', '-436899.0738640643'); + T('-1.93e-3', '4.44897e+4', '-44489.70193'); + T('-8.493203254439607467238e+13', '3.780960689802534388741349e+4', '-84932032582205.68157040534388741349'); + T('-8.62e+2', '-1.21242637514496e+9', '1212425513.14496'); + T('-2.034125439802066e+1', '1.041223699e+0', '-21.38247809702066'); + T('-1.8756615731747938145167676e+9', '-5.9079882582580697796179e+17', '590798823950145404.7869961854832324'); + T('-7.68665407063362e-12', '2.68347734852e+3', '-2683.47734852000768665407063362'); + T('-2.5e-9', '1.0094051112011317e+2', '-100.94051112261317'); + T('-2.273663293572256347483e+16', '-2.0246e-14', '-22736632935722563.474829999999979754'); + T('-4.8958e+1', '-1.18656711e+8', '118656662.042'); + T('-1.1921912260356353311433328e+25', '-6.7981248360658545755979997e+4', '-1.1921912260356353311365346751639341454244020003e+25'); + T('-6.849149772761089815191e+18', '5.24560558802513e+14', '-6849674333319892328.191'); + T('2.99306425443292501e+17', '2.8e+1', '299306425443292473'); + T('2.5471860004e+9', '-4.98536550694988897317422126e-12', '2547186000.40000000000498536550694988897317422126'); + T('-1e+0', '2.54e+1', '-26.4'); + T('1.814452890048444838634591e+17', '3.50190331311817e+6', '181445289001342580.55034093'); + T('-3.740775006407299187613971e+21', '-6.411975563570869469e+1', '-3.74077500640729918754985124436429130531e+21'); + T('7.68508730852e+3', '-6e+0', '7691.08730852'); + T('-4.97430855e+5', '-1.74704104775e+3', '-495683.81395225'); + T('-2.25986972303734e-18', '-3.563603e+5', '356360.29999999999999999774013027696266'); + T('7.300705399e+0', '-2.68400174895358537123619e+2', '275.700880294358537123619'); + T('-7.4583833263680087e+11', '9.53468014076291e+9', '-755373012777.56378'); + T('8.9104e+4', '-6.4430091336482802107567729773e+3', '95547.0091336482802107567729773'); + T('2.34280052861242466e-1', '0e+0', '0.234280052861242466'); + T('7.269051098e+8', '-3.4459676199e+4', '726939569.476199'); + T('-3.211997876e+3', '-9.38450118638793709019229e+14', '938450118635581.711143229'); + T('7.7969891679461230711262e+22', '7.69e+0', '7.796989167946123071125431e+22'); + T('1.097e+0', '-4.6249580639699552947992543e-20', '1.097000000000000000046249580639699552947992543'); + T('-6e+0', '-1.456695321775709567231919891e+20', '145669532177570956717.1919891'); + T('3.8834077979e+6', '-1.95675144721034531902e-6', '3883407.79790195675144721034531902'); + T('-1.6658487619383064e+2', '3.100133628146717733340869e+7', '-31001502.86634337116404869'); + T('-1.4005754211993309661536063e-14', '-8.84275e+4', '88427.499999999999985994245788006690338463937'); + T('-1.3403661333569183042528493e+25', '-2.16701427914547231e+16', '-1.34036613118990402510737699e+25'); + T('2.6104592333650733834147661141e+8', '5.5581589300093249719048e+21', '-5.55815893000906392598146349266165852338859e+21'); + T('5.315518589225007574739350338e-12', '5.299157680175e-14', '5.262527012423257574739350338e-12'); + T('-2.17607896075487810392093064e+0', '-4.372277792215178893233e+16', '43722777922151786.75625103924512189607906936'); + T('-1.1360680787648690671166707184e+0', '6.64626014583885222275e+5', '-664627.1506519639871440671166707184'); + T('-4.322698247e+9', '7.5666e+0', '-4322698254.5666'); + T('7.329582e+2', '1.1e+0', '731.8582'); + T('4.70556124361e+0', '1.9128794148091e+7', '-19128789.44252975639'); + T('-1.664718e-15', '-2e+0', '1.999999999999998335282'); + T('-2.3441520698096713166992980212e+28', '-2.45124495841653227069e-11', '-2.34415206980967131669929802119999999999754875504158346772931e+28'); + T('1.08447643843924835e+14', '4.629055171533282139112789e-9', '108447643843924.834999995370944828466717860887211'); + T('-2.56258604619015315966e+3', '-2.033704783173576458375994e+19', '20337047831735762021.17389380984684034'); + T('-5.86438097577803988896572e-1', '3.9380601967502959955e+11', '-393806019675.616037647577803988896572'); + T('0e+0', '3.50862e+6', '-3508620'); + T('5.16326e-10', '-4.653750284661785074950340187e-4', '0.0004653755447921785074950340187'); + T('2.448434809857e+3', '9.861166640454948250573581e+13', '-98611666402101.04769587881'); + T('-1.377207013806422897185e+8', '2.93868995004852419030725393e+26', '-2.938689950048524191684460943806422897185e+26'); + T('-1.21087028473668e-15', '-1.79392219447388957457557920332e+16', '17939221944738895.74575579203319878912971526332'); + T('7.1194812461460298471228e+22', '-3.11548104971e+6', '7.119481246146030158670904971e+22'); + T('-7.9973363706063079e+1', '-4.18e+1', '-38.173363706063079'); + T('-3.4658e+3', '-1.50428792912533108828785e+14', '150428792909067.308828785'); + T('-5.43e+1', '1.08e+1', '-65.1'); + T('-3.958612981624798584713e+21', '1.905323655927183e+11', '-3.9586129818153309503057183e+21'); + T('-6.05e+0', '7.113109139228e+12', '-7113109139234.05'); + T('-4.668265354520068e+15', '-3.4465582208309591e-8', '-4668265354520067.999999965534417791690409'); + T('-2.771846365e+5', '-2.5244589e+4', '-251940.0475'); + T('1.11530656435193641253e+18', '-3e+0', '1115306564351936415.53'); + T('-1.05624e+6', '-3.9048304233341053516492008879e-20', '-1056239.999999999999999999960951695766658946483507991121'); + T('1.0127e+0', '-3.135359936645349731157475112e-13', '1.0127000000003135359936645349731157475112'); + T('2.2181732450662751e+7', '4.985e+2', '22181233.950662751'); + T('-1.458218486287662421604e+16', '8.6772071348685837314014362447e+3', '-14582184862885301.4231748685837314014362447'); + T('-5.2949825314874e+13', '-1.34587e+5', '-52949825180287'); + T('2.7853732e+3', '-2.8992603343141478e+3', '5684.6335343141478'); + T('1.0093686351168e-16', '2e+0', '-1.99999999999999989906313648832'); + T('-2.69782596422e+5', '9.281e+1', '-269875.406422'); + T('-8.4892243734618044988822527303e+28', '-1.093399419157518929e+15', '-8.4892243734616951589403369784071e+28'); + T('-2e+0', '-9.8226109e+7', '98226107'); + T('-7.91355730171712559764046812857e+29', '3.738879817007584795015696e-16', '-7.913557301717125597640468128570000000000000003738879817007584795015696e+29'); + T('-7.20113991704e+6', '3.766628446721078627562e+2', '-7201516.5798846721078627562'); + T('8.09195711497727858010623376e+2', '-2.299005549455463322634739396e-2', '809.21870155322241264384972339396'); + T('7.1e-16', '1.34172774450117955431064868e+26', '-1.3417277445011795543106486799999999999999929e+26'); + T('2.479213128129e+12', '-4.3266851790425848916602875204e+19', '43266854269638977045.602875204'); + T('-5.167953131767e-17', '1.089636317069144688e+0', '-1.08963631706914473967953131767'); + T('-1.043599533780483997e+8', '-8.4604453857096e+13', '84604349497142.6219516003'); + T('-9.86113e-3', '5.25012650031541380643072e+14', '-525012650031541.390504202'); + T('-4.607800742854309e-16', '6.629214050478863773e+7', '-66292140.5047886377300004607800742854309'); + T('-7.0726129234663936285e+0', '5.1813062685268139626360921992e+0', '-12.2539191919932075911360921992'); + T('-9.59114856809630214548e-16', '8.19552038958943023267524e+23', '-8.19552038958943023267524000000000000000959114856809630214548e+23'); + T('-6.1160705538571976049e+19', '-1.5e-14', '-61160705538571976048.999999999999985'); + T('-5.20340090331936061e-19', '-6.8907407213853599371e+12', '6890740721385.359937099999999999479659909668063939'); + T('3.266e-6', '-1.178352424764155283425353405e+3', '1178.352428030155283425353405'); + T('-4.88224490036702e+6', '2.067e+2', '-4882451.60036702'); + T('1.01802113642363671778919360155e+10', '-6.088e-5', '10180211364.2364280578919360155'); + T('3.210380386593524862226e+16', '2.8740812364241127382e+17', '-255304319776476025.19774'); + T('-1.465851233021161325672097e+24', '1.2772576319289909484700907499e+28', '-1.2774042170522930646026579596e+28'); + T('-3.7269879590593e-13', '-1.89917687e+2', '189.91768699999962730120409407'); + T('-3.54751669e-4', '1.507681824540198379007387131e-20', '-0.00035475166900000001507681824540198379007387131'); + T('8.6e+0', '-1.718010447132363e+14', '171801044713244.9'); + T('-1.523861475830427411616557095e-1', '-1.4263256386185266172813e-16', '-0.15238614758304259852909184764733827187'); + T('-3.0492e+4', '-3.19247471953735496043e+16', '31924747195343057.6043'); + T('1.64e+1', '-2.300091101743972533e+2', '246.4091101743972533'); + T('-8.4166616e-14', '-1.08365043381515665671178336e+3', '1083.65043381515657254516736'); + T('2.834233434423066e-3', '1.5147922394810634456e+19', '-15147922394810634455.997165766565576934'); + T('9.809683833546843226149927904e+7', '-7.04744e+1', '98096908.80986843226149927904'); + T('-2.78659733581828216291e-6', '3e+0', '-3.00000278659733581828216291'); + T('1.88550609258935040490277736481e+21', '-2.0139e+4', '1.88550609258935042504177736481e+21'); + T('-2.961956555914393326e+9', '-1.736319970053323220680261e+17', '173631994043375766.153632774'); + T('1.1511839112e+10', '6.1439877305045904627491e+21', '-6.1439877304930786236371e+21'); + T('-2.6e+0', '-2.49048e-15', '-2.59999999999999750952'); + T('-5.48e+0', '2.4e+0', '-7.88'); + T('-8.281668732400133e-7', '3.4802271248601324e+13', '-34802271248601.3240008281668732400133'); + T('5.4692910497907010278816248427e-19', '-3.995182600549255e+6', '3995182.60054925500000000054692910497907010278816248427'); + T('-4e+0', '-2.6796842621783387684139e-8', '-3.999999973203157378216612315861'); + T('-1.2503809566311e-14', '-4.194893531803037022861e+13', '41948935318030.370228609999987496190433689'); + T('8.20101101549315479737983e+23', '-6.21887189572000039915995509e+29', '6.21888009673101589231475246983e+29'); + T('-8.49630557904938058714202e+2', '-9.656431846752105646935065749e+12', '9656431845902.475089030127690285798'); + T('4.709804775734875967339134e-13', '-5.238417348338395e+4', '52384.1734833839504709804775734875967339134'); + T('3.215642768985439973e+18', '-6.47876e+2', '3215642768985440620.876'); + T('1.057e+3', '5.4e-14', '1056.999999999999946'); + T('-1.27406478713275073021e+15', '-4.95098112170149342507601184272e+29', '4.9509811217014806844281405152126979e+29'); + T('-2.47741050648e-6', '2.867648067351452617036e+9', '-2867648067.35145509444650648'); + T('9.683330132790537859047707237e+27', '1.4e-13', '9.68333013279053785904770723699999999999986e+27'); + T('1.8191377569793603e+1', '-2.22262592888890757e+16', '22226259288889093.891377569793603'); + T('-2.647537436000328921472e+19', '1.73756170770793102269901e-4', '-26475374360003289214.720173756170770793102269901'); + T('3.9166725e+1', '-3e+0', '42.166725'); + T('-6.896e+2', '-2.4697e+3', '1780.1'); + T('3.049991467813178e-17', '9.921359715790652629887e-6', '-0.00000992135971576015271520886822'); + T('0e+0', '-1.014702489558798e+11', '101470248955.8798'); + T('3.63e-1', '-9.504114905372600685531012901e+7', '95041149.41672600685531012901'); + T('1.43e+0', '1.032179739e+4', '-10320.36739'); + T('6.002271250385225215266404e-20', '1.198673608430859644679301e+24', '-1.19867360843085964467930099999999999999999993997728749614774784733596e+24'); + T('-8.165072327377418555e+1', '1.15946801209912e+14', '-115946801209993.65072327377418555'); + T('-2.855963912187238e+15', '-2.34813677339491877e-20', '-2855963912187237.9999999999999999999765186322660508123'); + T('4.7139819451281756523160792425e+8', '1.711815969456703e+12', '-1711344571262.19018243476839207575'); + T('3.51917952e+0', '-1.9090638600782859881987727e-9', '3.5191795219090638600782859881987727'); + T('-1.101278668075627123510003e+3', '3.23115293065e-14', '-1101.2786680756271558215323065'); + T('3.1909723769e+4', '-1.7298288176e+4', '49208.011945'); + T('-9.30120609629212846377709e-16', '8.055569687891446e+0', '-8.055569687891446930120609629212846377709'); + T('-7.474064e+1', '-4.271718880894195123e-6', '-74.740635728281119105804877'); + T('-1.621114105166716832660982e+9', '-7.814354217e+7', '-1542970562.996716832660982'); + T('-3.338943287283e+12', '1.245463771082e+7', '-3338955741920.71082'); + T('2.1732853867827159984017e-12', '-5.54912539966658289e+7', '55491253.9966658289021732853867827159984017'); + T('-2.878598492994e+9', '-5.57847e+3', '-2878592914.524'); + T('-1.12e+3', '3.5382811477716371e-9', '-1120.0000000035382811477716371'); + T('3.6386011498e-2', '-5.6384769154648814041207571e-18', '0.0363860114980000056384769154648814041207571'); + T('-1.890178944623951306311749095e+16', '-1.01868789996777383e+16', '-8714910446561774.76311749095'); + T('8.76907e+2', '-3.0262476312e+6', '3027124.5382'); + T('-4.2809356122824992293797e-6', '-9.5432581914885e-3', '0.0095389772558762175007706203'); + T('2.613634e+6', '0e+0', '2613634'); + T('-2.31839833569e-6', '1.324426936e-19', '-0.0000023183983356901324426936'); + T('-1.10399938484009e+1', '1.85186916549461617452156387962e+2', '-196.226910397862517452156387962'); + T('-2.75009407098166054593418e+23', '-4.97e+1', '-2.750094070981660545933683e+23'); + T('6.61314773892e+8', '1.16976318594169000300606933902e+3', '661313604.12881405830999699393066098'); + T('-1.65790748026635119525e+19', '1.13625143013338763e-18', '-16579074802663511952.50000000000000000113625143013338763'); + T('1.63212008e+0', '-6.5032932718736077532455e+5', '650330.95930744077532455'); + T('-8.590257420137321035e+2', '-1.4660197718643934781936e+1', '-844.365544295088168718064'); + T('-3.6e+0', '-6.453e-9', '-3.599999993547'); + T('6.875e+2', '2.496601459911533840095e-1', '687.2503398540088466159905'); + T('-3.4091253800019e+10', '5.06219863404e+11', '-540311117204.019'); + T('2.387640687847751e-9', '-7.507348694854873e+1', '75.073486950936370687847751'); + T('2.358337603147636672593e+20', '-5.29206788288316214838405e+3', '235833760314763672551.36788288316214838405'); + T('8.4460769897709104577e+2', '-1.15924234770358e+7', '11593268.08473477709104577'); + T('-2.8e+0', '-1.5677449559023e+12', '1567744955899.5'); + T('-3.826911067801817992605e+13', '-2.1058817772376e-17', '-38269110678018.179926049999999978941182227624'); + T('-1.69888440840703020274433621314e+3', '1.062612513780848e+14', '-106261251379783.68440840703020274433621314'); + T('1.648578064349849e+13', '-1.21870444531163389687261e+5', '16485780765368.934531163389687261'); + T('2.800963824434122005e+17', '7.48550615366110606948944e+18', '-7205409771217693868.98944'); + T('-1.204700704881831924047852e+4', '4.1180094e+8', '-411812987.00704881831924047852'); + T('-6.25e+0', '-2.76872444100293e-3', '-6.24723127555899707'); + T('-1.017210130108320604980095901e+6', '4.176006246137492e+5', '-1434810.754722069804980095901'); + T('4.1443694206107e+13', '6.12963489e+6', '41443688076472.11'); + T('1.9e-17', '-7.420644757780278e+11', '742064475778.027800000000000019'); + T('8.1905699267317e+2', '-4.97714998177821e+13', '49771499818601.15699267317'); + T('-9.30893198737591725124852e-6', '4.7833151233848e+8', '-478331512.33848930893198737591725124852'); + T('-1.81958867206789289436468142851e+23', '-3.097e-2', '-1.81958867206789289436468111881e+23'); + T('-1.444361606243966e+3', '-3.956649026995563806968275e+24', '3.956649026995563806966830638393756034e+24'); + T('-5e+0', '1.12518838778955247e+6', '-1125193.38778955247'); + T('1.63068443484005465679998399962e+10', '5.74911714044959689e+11', '-558604869696.5591424320001600038'); + T('2.76768430312670672e+11', '-3.509356457052e+6', '276771939669.127724'); + T('-4.7752e+2', '-1.66411766445e-11', '-477.5199999999833588233555'); + T('2.92062139592881e+4', '7.5417235168554886240845487e+25', '-7.54172351685548862408162807860407119e+25'); + T('-3.44544937179490458706e+21', '-6.4975e-20', '-3.445449371794904587059999999999999999999935025e+21'); + T('1.67e+0', '4.0077e+3', '-4006.03'); + T('1.6243825105e+10', '-1.0098e-8', '16243825105.000000010098'); + T('-5.9619584679887e-7', '9.66507394754761256582e+0', '-9.66507454374345936469'); + T('1.80193e+0', '5.50148888976681094630325187e+26', '-5.5014888897668109463032518519807e+26'); + T('1.160439596351493417e+12', '0e+0', '1160439596351.493417'); + T('4.0943062e+3', '-1.663541448179706e+1', '4110.94161448179706'); + T('-1e+0', '-3.35949335221661870210955798738e+27', '3.35949335221661870210955798638e+27'); + T('9.26520428366e-14', '2e+0', '-1.9999999999999073479571634'); + T('-1.824416684e+5', '3.45961e+4', '-217037.7684'); + T('1.13072307e-4', '-3.34360798215590565e+15', '3343607982155905.650113072307'); + T('-2.17632297389949094797657e+23', '1.19e+0', '-2.1763229738994909479765819e+23'); + T('-1.573702e+6', '-1.25528655078116284599e+4', '-1561149.1344921883715401'); + T('6.64914341532954197034212171e+13', '-2e+0', '66491434153297.4197034212171'); + T('4.83091120908653225429424458e+26', '-1.187019616662875213797e+16', '4.8309112092052342159605321013797e+26'); + T('-2.2287372197e+10', '-6.1022242482e+5', '-22286761974.57518'); + T('9.86041489707e+10', '6.466463546e+2', '98604148324.0536454'); + T('1.576597918713765858286e+19', '5.733014936878637e-11', '15765979187137658582.85999999994266985063121363'); + T('-1.66885015827009e+9', '-1.0080560673990663464633e+2', '-1668850057.46448326009336535367'); + T('9.464436245828899351275554369e+26', '1.096e+3', '9.464436245828899351275543409e+26'); + T('2.443594208008465567246e+15', '-4.554332290621012278987216e+6', '2443594212562797.857867012278987216'); + T('5.633400747825031776e+9', '3.7814892610756903304424493614e+28', '-3.7814892610756903298791092866174968224e+28'); + T('4.58055e-16', '-2e+1', '20.000000000000000458055'); + T('5.8468767369534498129149668101e+21', '-6.216283e+1', '5.8468767369534498129771296401e+21'); + T('2.821e+1', '-9.2972318416976897120959e-7', '28.21000092972318416976897120959'); + T('1.1716e+4', '-3.117484326301445402577599e+5', '323464.4326301445402577599'); + T('3.99770350169601009505e+9', '1.24807913187467085161e+12', '-1244081428372.97484151495'); + T('-4.33494867e+1', '1.86891793238107724209212e+23', '-1.868917932381077242092553494867e+23'); + T('-1.49454787799250031e-14', '3.530543e+4', '-35305.4300000000000149454787799250031'); + T('4.17405829e+7', '-1.101329481059979917182595274247e+30', '1.1013294810599799171826370148299e+30'); + T('-8.233e-4', '-4.3503021e-3', '0.0035270021'); + T('1.54205169188e+11', '-1.184e+0', '154205169189.184'); + T('8.47800873e+2', '-1.782e+2', '1026.000873'); + T('-6.3788050181391747328e-14', '-1.37296254009260334434e+20', '137296254009260334433.999999999999936211949818608252672'); + T('-2.3187272390455607805797367e-15', '3.03283266313882322447430852e-7', '-3.032832686326095614929916325797367e-7'); + T('4.3489421504381358410994764309e-17', '4.84138351196e-18', '3.8648037992421358410994764309e-17'); + T('-4.5630374165368095e+10', '8.62482790372860322202392e+23', '-8.62482790372905952576557368095e+23'); + T('-1.25355946295e+11', '-3.311539940149343915869e+1', '-125355946261.88460059850656084131'); + T('-4.7415711963385615707e+16', '-1e+0', '-47415711963385614.707'); + T('4.458641e-16', '-3.8021524504141994601653134206e+4', '38021.524504141994602098998306'); + T('3.8057808011e-1', '9.59582e-8', '0.3805779841518'); + T('2.340942415924217e-10', '-3e+0', '3.0000000002340942415924217'); + T('0e+0', '-1.3748e+4', '13748'); + T('-3.634008711669113e-7', '-5.865299497e+9', '5865299496.9999996365991288330887'); + T('1.39690641e+3', '7.12382644256362362011e-19', '1396.906409999999999999287617355743637637989'); + T('-6.52e-7', '-5.4715e+4', '54714.999999348'); + T('6.56e+0', '-8.1504302966189587144e+16', '81504302966189593.704'); + T('4.2093554363975272071207e-17', '1.223e+3', '-1222.999999999999999957906445636024727928793'); + T('-3.739622748318e+4', '-2.01200115180528303803076e+9', '2011963755.57779985803076'); + T('0e+0', '8.987465875243974e+15', '-8987465875243974'); + T('-6.4436e-16', '-1.9979e-1', '0.19978999999999935564'); + T('-1.01268732158001903838205690742e+4', '-4.7518687460936e+6', '4741741.8728777998096161794309258'); + T('0e+0', '-1.3030144588487978649e+10', '13030144588.487978649'); + T('-3.9e+0', '5.24670125e+8', '-524670128.9'); + T('3.8313670568933092257440033774e+17', '-5.741523524290048567e+2', '383136705689331496.7267527667448567'); + T('-2.56218040669566121e+12', '1.83637202203675e+8', '-2562364043897.864885'); + + log('\n ' + passed + ' of ' + total + ' tests passed in ' + (+new Date() - start) + ' ms \n'); + return [passed, total];; +})(this.BigNumber); +if (typeof module !== 'undefined' && module.exports) module.exports = count; diff --git a/node_modules/mysql/node_modules/bignumber.js/test/mod.js b/node_modules/mysql/node_modules/bignumber.js/test/mod.js new file mode 100644 index 0000000..1f33a49 --- /dev/null +++ b/node_modules/mysql/node_modules/bignumber.js/test/mod.js @@ -0,0 +1,1905 @@ +var count = (function mod(BigNumber) { + var start = +new Date(), + log, + error, + undefined, + passed = 0, + total = 0, + n = 'null', + N = 'NaN', + I = 'Infinity'; + + if (typeof window === 'undefined') { + log = console.log; + error = console.error; + } else { + log = function (str) { document.body.innerHTML += str.replace('\n', '
      ') }; + error = function (str) { document.body.innerHTML += '
      ' + + str.replace('\n', '
      ') + '
      ' }; + } + + if (!BigNumber && typeof require === 'function') BigNumber = require('../bignumber'); + + function assert(expected, actual) { + total++; + if (expected !== actual) { + error('\n Test number: ' + total + ' failed'); + error(' Expected: ' + expected); + error(' Actual: ' + actual); + //process.exit(); + } + else { + passed++; + //log('\n Expected and actual: ' + actual); + } + } + + function T(a, b, expected) { + assert(String(expected), String(new BigNumber(a).mod(new BigNumber(b)))); + } + + function isMinusZero(n) { + return n.toString() === '0' && n.s == -1; + } + + log('\n Testing mod...'); + + BigNumber.config({ + DECIMAL_PLACES : 20, + ROUNDING_MODE : 4, + ERRORS : false, + RANGE : 1E9, + EXPONENTIAL_AT : [-7, 21] + }); + + T(1, 0, N); + T(1, -0, N); + T(-1, 0, N); + T(-1, -0, N); + T(1, N, N); + T(-1, N, N); + T(1, I, 1); + T(1, -I, 1); + T(-1, I, -1); + T(-1, -I, -1); + assert(false, isMinusZero(new BigNumber(0).mod(1))); + assert(false, isMinusZero(new BigNumber(0).mod(-1))); + assert(true, isMinusZero(new BigNumber(-0).mod(1))); + assert(true, isMinusZero(new BigNumber(-0).mod(-1))); + T(0, 0, N); + T(0, -0, N); + T(-0, 0, N); + T(-0, -0, N); + T(0, N, N); + T(-0, N, N); + assert(false, isMinusZero(new BigNumber(0).mod(I))); + assert(false, isMinusZero(new BigNumber(0).mod(-I))); + assert(true, isMinusZero(new BigNumber(-0).mod(I))); + assert(true, isMinusZero(new BigNumber(-0).mod(-I))); + T(N, 1, N); + T(N, -1, N); + T(N, 0, N); + T(N, -0, N); + T(N, N, N); + T(N, I, N); + T(N, -I, N); + T(I, 1, N); + T(I, -1, N); + T(-I, 1, N); + T(-I, -1, N); + T(I, 0, N); + T(I, -0, N); + T(-I, 0, N); + T(-I, -0, N); + T(I, N, N); + T(-I, N, N); + T(I, I, N); + T(I, -I, N); + T(-I, I, N); + T(-I, -I, N); + + T(1, '0', N); + assert(false, isMinusZero(new BigNumber(1).mod(1))); + T(1, '-45', '1'); + T(1, '22', '1'); + T(1, 0144, '1'); + T(1, '0144', '1'); + T(1, '6.1915', '1'); + T(1, '-1.02', '1'); + T(1, '-1.02', '1'); + T(1, 2, '1'); + T(1, -2, '1'); + T(-1, 2, '-1'); + T(-1, -2, '-1'); + + // Due to Javascript's internal representation of 0.1 the next 4 results + // match BigDecimal's remainder method, but not Javascript's % operator: + // + // 1 % -0.1 // 0.09999999999999995 + // new BigNumber(1).mod(-0.1) // '0' + // + // 0.1.toFixed(18) // '0.100000000000000006' + // new BigNumber(1).mod('-0.100000000000000006') // '0.099999999999999946' + + T( 1, -0.1, '0'); // JS: 0.09999999999999995 + T(-1, -0.1, '0'); // JS: -0.09999999999999995 + T( 2, -0.1, '0'); // JS: 0.0999999999999999 + T(-2, -0.1, '0'); // JS: -0.0999999999999999 + + T( 2, -0.5, '0'); // JS: 0 + T(-2, -0.5, '0'); // JS: 0 + T(999.99, -0.99, '0.09'); + T(-999.99, -0.99, '-0.09'); + T(999.99, '3.01', '0.67'); + T(-999.99, '3.01', '-0.67'); + T(1, '0.09', '0.01'); + assert(false, isMinusZero(new BigNumber(1).mod('-0.0001'))); + assert(true, isMinusZero(new BigNumber(-0).mod(1))); + assert(true, isMinusZero(new BigNumber(-0).mod(0.1))); + assert(true, isMinusZero(new BigNumber('-0').mod('-1'))); + assert(true, isMinusZero(new BigNumber('-0').mod(Infinity))); + T(1, '8e5', '1'); + T(1, '9E12', '1'); + assert(false, isMinusZero(new BigNumber(1).mod('1e-14'))); + T(1, '3.345E-9', '6.1e-10'); + T(1, '-345.43e+4', '1'); + T(1, '-94.12E+0', '1'); + T(1, '', N); + T(1, ' ', N); + T(1, '\t\t', N); + T(1, 'ertgrt546', N); + T(1, 'qweqwdewee', N); + T(1, true, N); + T(1, false, N); + T(1, 'e 4.3', N); + T(1, '4 .3', N); + T(1, '4.0 01e', N); + T(1, ' 4.001', '1'); + T(1, '4.001 ', '1'); + T(1, ' 4.001 ', '1'); + T(1, ' 4.001', '1'); + T(1, ' 4.0 01', N); + T(1, '4. 001', N); + T(1, '4. 001 ', N); + T(1, ' 4.001e ', N); + T(1, ' 4 .001 e ', N); + T(1, undefined, N); + T(1, null, N); + T(1, Number.POSITIVE_INFINITY, '1'); + T(1, Number.NEGATIVE_INFINITY, '1'); + T(1, new Date(2012, 11, 4), N); + T(1, new Object(), N); + T(1, function () {}, N); + T('0', 0, N); + T(0, '+0', N); + T('0', '0', N); + T(3, -0, N); + T(9.654, 0, N); + T(0, '0.001', '0'); + T(0, '111.1111111110000', '0'); + T(N, '0', N); + T(-1, 1, '0'); + T(-0.01, 0.01, '0'); + T(54, -54, '0'); + T(9.99, '-9.99', '0'); + T('0.0000023432495704937', '-0.0000023432495704937', '0'); + T(NaN, NaN, N); + T(NaN, N, N); + T(N, NaN, N); + T(N, 4, N); + T(N, '4534534.45435435', N); + T(N, 99999.999, N); + T(Infinity, '354.345341', N); + T(3, -I, '3'); + T(-Infinity, -I, N); + T(-I, -Infinity, N); + T(I, '-999e999', N); + T('1.21123e43', -I, '1.21123e+43'); + T('-999.0', I, '-999'); + T('657.342e-45', -I, '6.57342e-43'); + T(I, 123, N); + T(-0, I, '0'); + T(100, 100, '0'); + T('10 ', 4, '2'); + T('03.333', -4, '3.333'); + T(43534.5435, '0.054645', '0.019545'); + T('99999', '1', '0'); + T('3e', 8, N); + T('-3..0', 13, N); + T('0 0', -0.4, N); + T(' +3e0', 4, '3'); + T(9.9806, '+ 1', N); + T(' +2 0', '1e1', N); + T('e3', 4, N); + T(' ', 0, N); + T(323, null, N); + T(undefined, undefined, N); + T('undefined', undefined, N); + T(null, null, N); + + T('-0.111', '21', '-0.111'); + T('0.000621', '-1', '0.000621'); + T('6.41', '11', '6.41'); + T('21', '11', '10'); + T('1531', '-11', '2'); + T('21', '-0.0161', '0.0056'); + T('-41', '-21', '-20'); + T('31', '-1', '0'); + T('31', '2.21', '0.06'); + T('-842658.56', '-19.52', '-19.2'); + T('-34.871', '-7325043345', '-34.871'); + T('78691958', '49006.018397', '37298.472815'); + T('-11618324684', '621.3', '-394.1'); + T('0', '69.07362125', '0'); + T('0.27474921216', '0.00000000002460017868', '2.224673016e-11'); + T('0', '59137483772', '0'); + T('-0.000000000000000000014634493', '-4.2', '-1.4634493e-20'); + T('-5.470', '-1.8989', '-1.6722'); + T('-95519.5319132', '4.1', '-1.8319132'); + T('43.257', '-4704608304', '43.257'); + T('-32128.403', '68263.11', '-32128.403'); + T('85.4005884', '-0.000000000000000010953667', '4.132633e-18'); + T('3197.909', '-10738864.39', '3197.909'); + T('1.03436722695', '2.6', '1.03436722695'); + T('-4', '-56.36464628', '-4'); + T('92.0618', '-454.866', '92.0618'); + T('-6.147123243', '-53259.9', '-6.147123243'); + T('-3', '-0.4911', '-0.0534'); + T('0', '-12.3', '0'); + T('-0.001713264153', '0.00000000000000000001843605', '-1.36779e-20'); + T('2', '-9325.1665961', '2'); + T('42016273.6500', '-122.861496017', '99.24210634'); + T('35.9', '3867744417', '35.9'); + T('0.000000000000000479760268839', '-209975.082', '4.79760268839e-16'); + T('0.0000000000000000000428713848', '3', '4.28713848e-20'); + T('0.000000000000000104698757876', '-15902.7654', '1.04698757876e-16'); + T('-4', '3124473.52104', '-4'); + T('-9.58', '1.00', '-0.58'); + T('79', '1', '0'); + T('0', '-0.0000000000013618', '0'); + T('1.55', '-31', '1.55'); + T('-2.6', '-13.58133', '-2.6'); + T('0', '90950', '0'); + T('-46.1', '61.8', '-46.1'); + T('-0.00000000000023461', '-0.00000000134', '-2.3461e-13'); + T('-9761.89778', '4645363921.75', '-9761.89778'); + T('0.000000000000000090372203', '0.00000322253', '9.0372203e-17'); + T('-23560577.226', '-0.5304109598', '-0.3270269352'); + T('-11752006.868', '0.003773', '-0.002016'); + T('0.000000036524', '-1.2', '3.6524e-8'); + T('4713.9562', '0.000000000000000000561', '2.23e-19'); + T('-351870798', '28.8', '-1.2'); + T('-4.6', '-0.00000000058', '-4.4e-10'); + T('-21863.82', '4214.9937962', '-788.851019'); + T('-30.221041721', '20401.1', '-30.221041721'); + T('-2.35', '3', '-2.35'); + T('64462', '90.840', '56.44'); + T('46', '433563.55477', '46'); + T('47852501568', '-147426331397', '47852501568'); + T('0', '3812504.1', '0'); + T('0.000000000000142963770', '1210345642.9', '1.4296377e-13'); + T('-0.0024002323743', '-0.000000000000000013220659', '-3.535752e-18'); + T('225.773', '66128.74787', '225.773'); + T('-158.4165', '12.78', '-5.0565'); + T('-21042099137', '10.935', '-4.565'); + T('32791.03', '411590460', '32791.03'); + T('-1984910.86246', '-153845.7', '-138762.46246'); + T('75010460639.6', '-0.00000000005103249', '2.835305e-11'); + T('-0.00000000000000025595509', '25.023', '-2.5595509e-16'); + T('-103052291', '-350.4', '-1.4'); + T('0.00000000000000015307870924', '-0.0000035499', '1.5307870924e-16'); + T('4402230', '122.112', '92.4'); + T('-3073677', '532.95653726', '-116.64962158'); + T('-0.026619162', '-0.00000000000000010', '0'); + T('0.000065666975666', '-6.558', '0.000065666975666'); + T('-3.3', '0.000000000033194405282', '-1.2721464422e-11'); + T('94101.0', '-810285.8180', '94101'); + T('229868', '9654.7078', '7809.7206'); + T('0.000000001926', '-0.00000000000000000005918', '2.562e-20'); + T('67', '0.00000006016496', '2.00248e-8'); + T('0.0000000000000000000832655', '-327907966408', '8.32655e-20'); + T('-1534', '-293318.339', '-1534'); + T('0.00000000000000000511522652', '-1145.46888006', '5.11522652e-18'); + T('0.00000000465574', '707.0', '4.65574e-9'); + T('0.230910067', '-1712.01', '0.230910067'); + T('-31874.7', '-2617976302', '-31874.7'); + T('22.8', '3819', '22.8'); + T('-0.0000015419', '329', '-0.0000015419'); + T('-9176.3441', '741523.991', '-9176.3441'); + T('-5.1103', '-25460.136', '-5.1103'); + T('15232730973', '-2.28', '1.32'); + T('0.081', '-1111.578', '0.081'); + T('3.1', '-42.207', '3.1'); + T('-0.000000000000000433', '0.00000000000000000254528412564', '-3.016986412e-19'); + T('-83943.1', '-4303134750', '-83943.1'); + T('19.825539', '4432543.44', '19.825539'); + T('-2416', '8097.16337', '-2416'); + T('-3.836', '0.00000823841385579', '-0.00000502522549283'); + T('2290356160', '-965232.20', '825381.6'); + T('1.12', '-35806.5278', '1.12'); + T('0', '-0.0000144726783', '0'); + T('-1571629111.33', '6.4736', '-3.8676'); + T('-0.0053778', '1.1', '-0.0053778'); + T('-0.0000013840', '-12.1', '-0.000001384'); + T('-22.9310218204', '-1.6843970', '-1.0338608204'); + T('-71.300', '-25.868806', '-19.562388'); + T('0.02847', '-63397392.02', '0.02847'); + T('-0.0000000000000331096', '0.00000183271', '-3.31096e-14'); + T('-27821115', '-34.83906', '-0.40734'); + T('0.000000000000436294954175', '-2261.01154', '4.36294954175e-13'); + T('45.86441', '-530611.936214', '45.86441'); + T('-1999679428', '0.00000000000000000002297558409', '-5.828173e-23'); + T('-105924.2800', '-426.10612', '-249.96224'); + T('754.9', '-1', '0.9'); + T('0.000000238266109662', '29355.83', '2.38266109662e-7'); + T('25.3', '-0.00000000000000086417416', '5.8408656e-16'); + T('-1261.3', '39.0', '-13.3'); + T('1.017', '-153', '1.017'); + T('27.690', '-21507592', '27.69'); + T('-2623.072516', '3.06', '-0.652516'); + T('91', '13034138.923', '91'); + T('-5212749.21', '-0.00000000000000000001986395', '-2.1827e-21'); + T('117.4212', '-29.978', '27.4872'); + T('-47179.732', '-77504621680', '-47179.732'); + T('0', '-3.7234', '0'); + T('443705716.830', '3024.9575', '1925.7725'); + T('-0.000000000000000000017191196518', '-14.725715414', '-1.7191196518e-20'); + T('30.4', '399719414108', '30.4'); + T('16145.97', '-48642', '16145.97'); + T('2765166', '-18.6825', '6.54'); + T('37.63', '-1284.342', '37.63'); + T('-0.0000000000000000000177845858', '0.0000005860954024', '-1.77845858e-20'); + T('-2.3', '2582.24565000', '-2.3'); + T('16.7', '-0.0000000017369', '1.362e-9'); + T('170180366706', '4626.181', '2388.659'); + T('-1404312.6', '-17000256053', '-1404312.6'); + T('-7603530366', '316.496322753', '-236.943012537'); + T('8', '1.59866', '0.0067'); + T('-4.963', '8.73', '-4.963'); + T('25644160.8', '-5842.06855', '3321.93405'); + T('-4.31384', '-220.2', '-4.31384'); + T('186.9', '-48200.85', '186.9'); + T('5', '57089.99', '5'); + T('-244278052979', '-2', '-1'); + T('8', '-5763.4', '8'); + T('29549', '-1', '0'); + T('-2.0', '-0.00000000000000446955628', '-3.76062704e-15'); + T('737330.9', '-746370915533', '737330.9'); + T('-0.000882183174', '-16.5', '-0.000882183174'); + T('-45', '0.000000001106035', '-7.5858e-10'); + T('-594.06', '-29.85802821', '-26.75746401'); + T('-27.648237', '-1047.5249', '-27.648237'); + T('2', '-739163.624', '2'); + T('544827.1330', '54848981.1', '544827.133'); + T('1', '0.00000000000076553', '2.9959e-13'); + T('-10.89', '0.000000000000000000047', '-5e-21'); + T('-3052.938', '9327.5819201', '-3052.938'); + T('-24.1', '127758.429', '-24.1'); + T('3.9', '12173.38', '3.9'); + T('0.0000000000000213926861909', '-77.4', '2.13926861909e-14'); + T('-90173804.260', '-5062619.06909', '-4109280.08547'); + T('637', '43943.2610', '637'); + T('14867.1', '894449', '14867.1'); + T('7.3', '-1.1', '0.7'); + T('2894844.4', '-1', '0.4'); + T('-0.00000000000196', '-2.6741', '-1.96e-12'); + T('0.00000000000000071433493', '5.9227', '7.1433493e-16'); + T('69', '-7204969', '69'); + T('-12468163', '-10022891.867', '-2445271.133'); + T('45469.1932906', '-3095367650', '45469.1932906'); + T('73072906.39', '-112013211', '73072906.39'); + T('1.4', '972.159255713', '1.4'); + T('66924.3855375', '19.93', '19.3755375'); + T('26.4256214076', '11.4775634275', '3.4704945526'); + T('23362.0174956', '-0.0000000001748', '1.536e-10'); + T('18276818006', '-5.74', '1.1'); + T('-8319.8', '3', '-0.8'); + T('-7.7413714358', '43763934316.0', '-7.7413714358'); + T('-688566579', '-1.83', '-0.3'); + T('29854', '-268509731.22', '29854'); + T('-194.15246', '-3.2255572', '-0.619028'); + T('2.0186177', '-326915', '2.0186177'); + T('-4', '1259', '-4'); + T('3.56', '-0.000000000000000000515993', '1.2338e-19'); + T('0.000001783', '-16426085', '0.000001783'); + T('-1766987819', '-87.259', '-49.72'); + T('-17.1', '0.00000000000000021840564', '-5.750892e-17'); + T('-8589.659', '0.000000000000000505', '-3.75e-16'); + T('-65891.7', '-38663.83', '-27227.87'); + T('-1.0', '0.00000000000000003836', '-1.78e-17'); + T('-33378.26', '-1226528.13', '-33378.26'); + T('2', '492342441', '2'); + T('1274', '-3092459411.0', '1274'); + T('0.2631770', '-493249535.4', '0.263177'); + T('-0.00000000000000000141', '4201192116', '-1.41e-18'); + T('-574.29154', '133427.3', '-574.29154'); + T('104617.3', '293188753.50', '104617.3'); + T('0', '38.96345', '0'); + T('-0.0000017289693288', '-5.4', '-0.0000017289693288'); + T('0', '4', '0'); + T('9.65', '1.2', '0.05'); + T('0.000000000017', '-50377365', '1.7e-11'); + T('137.3064', '0.0000001012', '7.04e-8'); + T('-9.89405', '29.2', '-9.89405'); + T('3.23', '-3048751.09', '3.23'); + T('87020568364', '-1', '0'); + T('-3658', '-0.4067222', '-0.3472554'); + T('0.0000000000483229749', '-508858', '4.83229749e-11'); + T('3', '-0.000000000000000006525172012', '6.0850742e-19'); + T('-52.63', '-373.710', '-52.63'); + T('-6.49915814', '352.2', '-6.49915814'); + T('0', '-44190.198', '0'); + T('0.00000000000000003763584929', '6', '3.763584929e-17'); + T('1.299983', '194.7', '1.299983'); + T('1', '9.52', '1'); + T('-86603.9', '446867516', '-86603.9'); + T('-1482885.420', '-0.0000000018878840', '-9.643e-10'); + T('-170.531717', '-633436587.6', '-170.531717'); + T('15.36378', '6540.267', '15.36378'); + T('-20570.61', '18.955913858', '-3.44346407'); + T('77', '0.000000000000027', '2.3e-14'); + T('0.000000001687849', '-0.0131699248663', '1.687849e-9'); + T('-0.000000000000026', '3291407.1', '-2.6e-14'); + T('-290.613', '0.00000000000000000008353794', '-6.386436e-20'); + T('200', '66.97', '66.06'); + T('2.2', '-43.41589', '2.2'); + T('98201.177964', '0.007000', '0.004964'); + T('35.453991547', '128.68861', '35.453991547'); + T('5.27', '1', '0.27'); + T('-1', '0.000119683476689', '-0.000044552263405'); + T('-34.0', '3', '-1'); + T('3378', '-44180', '3378'); + T('15', '-4', '3'); + T('0.0000004190944243', '37285824.4', '4.190944243e-7'); + T('-298.4', '506466', '-298.4'); + T('-0.00000010893', '-0.000426882829396', '-1.0893e-7'); + T('-1.9756065817', '941.5', '-1.9756065817'); + T('-1026297.2', '-205657.802', '-203665.992'); + T('2', '0.0000000005621541447', '3.513430991e-10'); + T('-7951901.67', '-0.0000000000055383', '-2.3814e-12'); + T('9', '0.000000000015125851830', '7.24233339e-12'); + T('72.245762', '-39.70217', '32.543592'); + T('6.62321', '-912632', '6.62321'); + T('617021', '-42.5970821', '2.2657815'); + T('1469815.28770', '537.217915', '524.290175'); + T('345897.6', '-0.00000000000108024', '9.7032e-13'); + T('0', '1.8688906295', '0'); + T('164', '-82114.2', '164'); + T('57.84537', '-1.4', '0.44537'); + T('114.340500', '6333334050', '114.3405'); + T('4.80', '-6077773.6', '4.8'); + T('162', '-37.75886044', '10.96455824'); + T('0.000000016367092', '1', '1.6367092e-8'); + T('148.2', '-46', '10.2'); + T('1.5768318844', '-7512089036.8', '1.5768318844'); + T('-0.0000000000000014460', '0.0011257005', '-1.446e-15'); + T('64.079', '-141', '64.079'); + T('-0.0582', '-13.35353476', '-0.0582'); + T('-1.0007', '63155.153933', '-1.0007'); + T('-623313173.6', '0.0000000081031', '-2.4548e-9'); + T('-36.9', '-1', '-0.9'); + T('2.0857', '0.000000000000000000205859744928', '1.887979864e-19'); + T('0.0000000494417', '492420240', '4.94417e-8'); + T('0.000000000000012194', '0.000000000000000013778591965', '1.372470294e-17'); + T('-16179.166', '16.4610327', '-14.4318886'); + T('3.24', '55986', '3.24'); + T('-61938', '47825328585', '-61938'); + T('4.36', '-1', '0.36'); + T('-9857364.3', '-1', '-0.3'); + T('9943.75', '3.5', '0.25'); + T('151.4907', '-1', '0.4907'); + T('0.000000000113985670', '-2286508', '1.1398567e-10'); + T('-1468', '-12915320.7', '-1468'); + T('46.543901', '0.00000014040913', '3.32077e-8'); + T('3', '190.34681', '3'); + T('-468.5022', '-0.00000000309208106131', '-1.13251725725e-9'); + T('-0.00000000000153707', '-112649.31435', '-1.53707e-12'); + T('-1.5', '0.000000067829063910', '-6.729086517e-8'); + T('42031.2', '-1.165644', '0.408648'); + T('-137623012.4', '-71.9609', '-21.9379'); + T('-278354', '8', '-2'); + T('5370.3', '71543859', '5370.3'); + T('-0.2469826911', '-0.0000000000008289323096', '-3.584481336e-13'); + T('338.68861185', '0.000000000000371927032', '2.00995384e-13'); + T('-0.00000000144', '115767.5757', '-1.44e-9'); + T('-3183918.6386', '-980.559', '-43.5656'); + T('-0.000000000004661097', '-0.051176618', '-4.661097e-12'); + T('-1', '948.171', '-1'); + T('1057394189', '62.751', '54.866'); + T('167.9', '0.00000000000009753', '8.45e-15'); + T('-12.172', '800.4476', '-12.172'); + T('-1.4', '-139187231194', '-1.4'); + T('359356.2', '-0.006806', '0.005734'); + T('4744567.6711', '-1.74', '0.0511'); + T('-0.0000000000234390', '-75.75283631', '-2.3439e-11'); + T('-6557078727.02', '-0.000000000000000015', '-5e-18'); + T('-1.33', '-5.111037', '-1.33'); + T('-431.277', '-1', '-0.277'); + T('0.0000000000000000000697336', '-8212.9015367', '6.97336e-20'); + T('3370.2674507', '445.572089', '251.2628277'); + T('-2.33567', '-0.0000000104784', '-8.888e-9'); + T('0.00000983659', '83423921', '0.00000983659'); + T('-51.2', '-0.0027394686', '-0.0020713346'); + T('0.000000000819617035421', '0.000000011', '8.19617035421e-10'); + T('0.00079279091535', '7', '0.00079279091535'); + T('-0.000000000095324834', '28091.00', '-9.5324834e-11'); + T('-0.00000000000000015', '23.52', '-1.5e-16'); + T('0.1438', '1035688.4', '0.1438'); + T('16693', '-1', '0'); + T('-781.09402123', '6.9', '-1.39402123'); + T('1', '20.70', '1'); + T('-3', '0.000006782445', '-0.00000249249'); + T('0.00000000000000000022', '-54710642.596', '2.2e-19'); + T('-590.69625205', '26.40', '-9.89625205'); + T('10', '-5.67', '4.33'); + T('-7', '-0.00000000000643634802', '-3.80362768e-12'); + T('-9680099.05', '-62.737684457', '-50.764391642'); + T('-1.5', '9914.9781', '-1.5'); + T('-1', '0.0000000507688288763', '-3.15199093625e-8'); + T('-0.000000000032713211391', '-0.000000046529', '-3.2713211391e-11'); + T('5.40', '1612427.39748', '5.4'); + T('0', '-0.0000000000000000000146', '0'); + T('-0.000000000000000000817527', '-52.0', '-8.17527e-19'); + T('1053329.8', '-120573.937', '88738.304'); + T('0.0000000000713', '-100743.840', '7.13e-11'); + T('8219', '-7505759130.86', '8219'); + T('16655.7', '243', '131.7'); + T('259.650', '278.73', '259.65'); + T('-284.091', '-1', '-0.091'); + T('0.1250', '-23713.35', '0.125'); + T('0.00000000490018764513', '-4.41', '4.90018764513e-9'); + T('-584.70403', '11076992', '-584.70403'); + T('-221.643', '-30.5', '-8.143'); + T('-9.69', '1177241', '-9.69'); + T('-4.97845868064', '-1.3178692059', '-1.02485106294'); + T('-1.04328912629', '-12.828540', '-1.04328912629'); + T('26', '-4.91596', '1.4202'); + T('94.686', '7.5851', '3.6648'); + T('0', '-0.000000000000000363', '0'); + T('-1.431', '65.06874', '-1.431'); + T('-878.898828', '-5.21', '-3.618828'); + T('-0.00000000000000014146660', '1.05112178985', '-1.414666e-16'); + T('0', '360.6112165', '0'); + T('4.464476', '0.00016302503', '0.00003555345'); + T('1145096', '-217.15', '64.05'); + T('29.46', '104.40', '29.46'); + T('841.82', '-2171922.59229', '841.82'); + T('46', '1', '0'); + T('22829.8889', '-1578709411', '22829.8889'); + T('-0.00374341104', '1.2', '-0.00374341104'); + T('410', '7', '4'); + T('0.076125848849', '1.103', '0.076125848849'); + T('0.000001844875808', '0.000000000000020813', '2.0037e-14'); + T('6.685', '0.003905472818', '0.002736008402'); + T('41011740.6', '908.670191', '728.869597'); + T('-152.527', '-1', '-0.527'); + T('12815.035', '-1497.81264', '832.53388'); + T('-0.000000000000004048729', '0.00000000126', '-4.048729e-15'); + T('-19949.700625', '-314.64', '-127.380625'); + T('-2.4', '569419658.2', '-2.4'); + T('0.00000000000000597954708', '4', '5.97954708e-15'); + T('-17.0', '1.58', '-1.2'); + T('22811600498', '2', '0'); + T('3.1328', '-119317.4', '3.1328'); + T('2.26039694', '1567.2', '2.26039694'); + T('-0.0004559', '-1.59', '-0.0004559'); + T('-0.000000000000165', '3', '-1.65e-13'); + T('-215.9051', '14846316.4792', '-215.9051'); + T('-1', '6004363.2', '-1'); + T('173513829480', '-117.2937046', '37.6296904'); + T('2269413223', '44.831', '39.204'); + T('-1411953.506', '0.000003338150524', '-0.000001742597716'); + T('-26.596', '-7', '-5.596'); + T('-0.00000000000010245141710', '6652789979', '-1.024514171e-13'); + T('2.042', '24673', '2.042'); + T('-2.71', '68.05392544', '-2.71'); + T('-3', '220821.80', '-3'); + T('116.073', '-0.0000000000024392780', '2.029598e-12'); + T('-0.00000006283674', '0.0000000000000079', '-5.7e-15'); + T('-3', '-7', '-3'); + T('-0.0000000000000005058', '-1.5', '-5.058e-16'); + T('-683', '1013123.5', '-683'); + T('-6', '16985130.432', '-6'); + T('-76481.64', '-0.0002575', '-0.0001725'); + T('1610.8849133', '-2.02567', '0.4772633'); + T('-19.3482', '-1.5', '-1.3482'); + T('779.8394', '390457.98231', '779.8394'); + T('0.00000012', '-8855.3', '1.2e-7'); + T('27226552.2', '2168.811', '1467.717'); + T('6.353167529', '1283573.56', '6.353167529'); + T('2', '26.2339535', '2'); + T('-34', '5319.486', '-34'); + T('0', '3123027047', '0'); + T('1', '27465.6301', '1'); + T('-1.5', '-41136.47', '-1.5'); + T('0.00000000000000000001311857', '-23', '1.311857e-20'); + T('14831.7', '4.41', '0.87'); + T('2953.07357', '34.48', '22.27357'); + T('-1.5', '-2465544', '-1.5'); + T('-376', '-244.16', '-131.84'); + T('-1799906518', '219', '-49'); + T('16431536', '987.209', '429.404'); + T('-0.0000000000000000406462459', '36617.26003', '-4.06462459e-17'); + T('-0.00000004133646', '26594407.6', '-4.133646e-8'); + T('6.3642', '-0.00000000000000000009857799', '8.84487e-20'); + T('1.780751', '11652994', '1.780751'); + T('95.6', '19178496109.2', '95.6'); + T('2.57393833', '852658757', '2.57393833'); + T('147.77838', '27.129', '12.13338'); + T('-773.3025', '-6', '-5.3025'); + T('3', '-31458.09', '3'); + T('-2.93096796427', '2.3', '-0.63096796427'); + T('2', '6190.943', '2'); + T('-2', '-2.47', '-2'); + T('-60.45556497', '0.00000067724055444', '-5.489328444e-7'); + T('0', '52221', '0'); + T('0.003001960', '-277761107', '0.00300196'); + T('5.3848225844', '434804', '5.3848225844'); + T('650.7467123', '-4', '2.7467123'); + T('1.4', '-65970188', '1.4'); + T('-3500.45', '500254.11730', '-3500.45'); + T('-0.000000000049', '4919966334', '-4.9e-11'); + T('17.92802', '-4.826', '3.45002'); + T('248.79', '936.1', '248.79'); + T('0.000000000000000000062725', '-1.050053808', '6.2725e-20'); + T('-21.4103', '1.9075', '-0.4278'); + T('-7785809980', '1574', '-92'); + T('688.6', '86674028', '688.6'); + T('0.000000000002917443', '-245.8', '2.917443e-12'); + T('-0.07547', '-15.028', '-0.07547'); + T('0.0031519195605', '-2272651712.25', '0.0031519195605'); + T('150494.446', '-51709.2935', '47075.859'); + T('-12010', '0.000000000000000016290', '-3.28e-18'); + T('-32.408275623', '-1', '-0.408275623'); + T('0.000000000000383814', '-1', '3.83814e-13'); + T('0.000000000000000003469380524', '0.0000000000036', '3.469380524e-18'); + T('1', '15.8856255428', '1'); + T('119.378058192', '-2.4396301', '2.275813392'); + T('33773052.62', '0.00000000111954987477', '7.3387294787e-10'); + T('6', '-120890538.30', '6'); + T('-0.00000000000059065444364', '22714637', '-5.9065444364e-13'); + T('-1774625862.4', '8507651416', '-1774625862.4'); + T('30.1', '5.7', '1.6'); + T('-1.806', '38.81', '-1.806'); + T('3', '-1683506', '3'); + T('-88.75', '-1411.1', '-88.75'); + T('-31', '0.00007026872', '-0.00004067864'); + T('2437.18437', '2.70220899140', '2.4940687486'); + T('0', '-41630623', '0'); + T('-258.66793', '-182.14421', '-76.52372'); + T('-14228.6', '95437.0', '-14228.6'); + T('1733.518', '-128426.9', '1733.518'); + T('0.0000000000000000000532527998218', '-63.28534135', '5.32527998218e-20'); + T('-295.03967', '-3', '-1.03967'); + T('2.956649054', '899957.06', '2.956649054'); + T('-2313.023', '-63930.69', '-2313.023'); + T('13803.9', '5.8329456', '3.1507104'); + T('21.8238290', '-3', '0.823829'); + T('-22.3', '-77.5771049044', '-22.3'); + T('0', '10.70', '0'); + T('0.000000101', '-14430384604.6', '1.01e-7'); + T('-600271019.62', '-2.4', '-2.02'); + T('-53874920.5', '21.676509', '-16.648855'); + T('-0.000000000000000061', '-69.27505', '-6.1e-17'); + T('-0.00000000000117570154770', '874813.194864', '-1.1757015477e-12'); + T('3724726', '0.0000000000009126675', '4.24705e-13'); + T('6493', '-82605.38', '6493'); + T('-2.88', '10', '-2.88'); + T('53970', '-99064', '53970'); + T('-12.440', '-0.000000000019', '-5e-12'); + T('54.64', '-6.1', '5.84'); + T('0.004000', '14', '0.004'); + T('-1570593.12158', '-2.56612', '-1.9417'); + T('-0.0000000000000113891', '-0.000000000042', '-1.13891e-14'); + T('-29.9444', '-2245', '-29.9444'); + T('0.568740', '3.7564033753', '0.56874'); + T('-52606.48321', '-4.34014413083', '-3.9363443404'); + T('-0.0000000334', '0.000000000902008057677', '-2.5701865951e-11'); + T('-634849.178', '3953007.487', '-634849.178'); + T('127992.04562', '3009797.1', '127992.04562'); + T('1', '-43.9035960', '1'); + T('-11.0349', '-2', '-1.0349'); + T('158.7', '257566', '158.7'); + T('43047346', '-115148338070', '43047346'); + T('9691.0996', '-15.5219', '5.434'); + T('-77.9', '-2.0', '-1.9'); + T('-38.3896', '-0.000000882', '-5.14e-7'); + + T('2318237922853539360.167157597022570', '-9702015238687.680494235371626139504030926823802574', '9295675788919.833075194557918488338251940141560718'); + T('-3346995255.54414928936', '-19484973963827626752773520333240590885639375', '-3346995255.54414928936'); + T('-270721769', '22539228.03492196260802407744489638356810047', '-251032.58093644870371107066124339718279436'); + T('-0.00000000000000000308066481692295683548642301228852180070143433425056969292333', '206232915.762239501154732324', '-3.08066481692295683548642301228852180070143433425056969292333e-18'); + T('-0.00000000156454306292867840840689', '2635', '-1.56454306292867840840689e-9'); + T('12886035692416820.3977457533594029154555584175743', '-113496127978790341.941210015456704515', '12886035692416820.3977457533594029154555584175743'); + T('-299395547.883083669188105176893563510454667', '-3152.9580', '-115.077083669188105176893563510454667'); + T('8076327350.789696755252236317', '9', '5.789696755252236317'); + T('2241730616485747642201052100686334', '15115372376051.1433309224128', '15028644606255.6407694748928'); + T('0.000000020545442143', '910205431326260.56522101419792183224139104902865869227', '2.0545442143e-8'); + T('-299.2', '-1095069605114867345071265098807585478368438601713540771676', '-299.2'); + T('0', '-0.00000000000000000006258032721', '0'); + T('-9561792051.46130', '-0.00000037912322661422', '-3.0664875638608e-7'); + T('-4589.274150042', '5463826693798.059180748770', '-4589.274150042'); + T('-177372488891124.8209441829612234253673371', '-2184484411972.871928873110', '-429251521322.1947054610512234253673371'); + T('2840794355990579101690516447419567416103576933551526', '-225384346136689418.311568171615', '4159399848092788.810925291935'); + T('433169940324134426366793327.235', '-1918606541369710.9167801826', '369802826989779.100695574'); + T('0.00000231962990639112417450960779176176525188784519762202020426278', '11491626.8146875740651454657723913302260', '0.00000231962990639112417450960779176176525188784519762202020426278'); + T('-118317530966985340050567.3794340230', '-1290337888625470391870404816877827630953112876.297', '-1.18317530966985340050567379434023e+23'); + T('507941745866485347809651792.3258074064530387681549475622', '-78.8876', '48.5294074064530387681549475622'); + T('3280516686867.41769205935464611912132313550145186748', '-0.00000000000000125477', '5.0338132313550145186748e-16'); + T('39.99', '-196.666', '39.99'); + T('198328732837738155510399443.82996', '0.049415792708', '0.034407057628'); + T('23.9909397975464820637937485614', '0.0000000001050229258855441', '8.54924991032156614e-11'); + T('-1157214583831665284482', '1.0988344', '-0.0759048'); + T('19626.043251177620', '0.0000000034291719721621', '1.7452276531105e-9'); + T('11144329315299884830592174718286.015391668774749336449044', '-276730.619204816478', '84261.983174911066749336449044'); + T('71.3348063927327012696442274193666742024', '1.003', '0.1218063927327012696442274193666742024'); + T('2353.964728726069', '-1147885339335726766004631.4827280116227481840172642411087841', '2353.964728726069'); + T('-3.4', '99841150890712628939215423679763543630485717', '-3.4'); + T('-17423609848720294448155093008156493860946579332348817', '-407401303.1', '-39793145.5'); + T('268219889', '66408.228187594864', '63463.578491939168'); + T('-7067928231578399800943353710459167713.4021506', '-44099.172874028', '-34277.265446476'); + T('0.0000000000003143', '0.763206816948175243403280699590867', '3.143e-13'); + T('4.036744136250', '0.00971177', '0.00635958625'); + T('1793819.269108', '493646013195.8520', '1793819.269108'); + T('-15826468630.86978', '-0.000000000000000000372629410691473337097845426967193919000496413569810554360', '-3.3602620906243362074116532307435310028959396493592065148e-19'); + T('-18.7707479011363', '-0.00000000000002581603178761489486464393960475608950385662413624987', '-9.1067040799565470223405647782611453765936052898943e-15'); + T('238432236541400642177165.39210', '-5', '0.3921'); + T('-6811268416946324947973610791528879575619937612025', '0.0000000000000001069504654335424482337205845600046597647661', '-8.16882733210848477277494710610839496492589e-17'); + T('-0.0000000000000001763427790981229873712832162', '-0.00000000000000000002454861590426229238192323806393241482688272809526858064170', '-1.00710578069411919285971867734642985013640916857852506689e-20'); + T('19755770505453660565232908.50109071', '11636774869145974997.1', '6173329669666681241.40109071'); + T('-0.0000000000002209009508639970169662640887364083811', '0.000000000000000089645450775854240465099382429782771424049138745143690592', '-1.4560152292168460259210429423632311142922131965946381312e-17'); + T('563088', '-0.00000008456562014728262541201891984898', '2.11408406705846430113462806523e-8'); + T('0.000000000000014349029064561994176595511', '-185.73981699167343715247600', '1.4349029064561994176595511e-14'); + T('-0.00000000001083082172818863769543', '1190273509470734307.14840', '-1.083082172818863769543e-11'); + T('-0.0000007000816503264538441903792097551608671', '426939', '-7.000816503264538441903792097551608671e-7'); + T('-74639664.5738469080670677219615636886365697', '11681605088890876252615.81485333', '-74639664.5738469080670677219615636886365697'); + T('-17473762843659544328007830640965916', '4735599287262364762422146713625.0556784154158620151196', '-4.1370729486807194325314144030856023255308850262237956e+30'); + T('-35798372944152782907433662314743475258228956226653087.007402', '2986648933436031786673397525017144049.527376', '-2.586979851276128040119426347481949619034666e+36'); + T('594962882338997095.95600951831319665393181826', '-0.000040093460748026675395936734376802508692547860', '0.00000106629014969426833642467613848819248141182'); + T('-98128552510799809261642798951333594.3', '-0.0150759218573700771020952512609526302985126417', '-0.0093980498660155309329725865407755408137845842'); + T('-28905866.022560718711724183906982038769016', '784580.53565571528753557678117', '-660966.738954968360443419784862038769016'); + T('-47314330483943356635.9', '4636924735068749202877120062.478835103', '-47314330483943356635.9'); + T('792568.576', '-1979027334.876406', '792568.576'); + T('2082231914.648466978927', '0.000000238131951894409076127502052426857902593605206359', '4.9424034607223232258131091994225827538144585637e-8'); + T('-3411944212928743691.0878807671609226126352448564441', '-35500488815007653257376478967389.5309684', '-3411944212928743691.0878807671609226126352448564441'); + T('41501124315127150415.980342038928850343648471670', '0.000000000000000000053662500082765049695814837696308208138940564988179296927086', '5.264308454143252141026226146634076056628101699532578384974e-20'); + T('-8105952948653953296.0699944999485216414062634578', '-86.16623488113', '-12.7456165483885216414062634578'); + T('0.3363661610339352417675708613420020704697718205608204221483', '0.000000015893', '2.1879352417675708613420020704697718205608204221483e-9'); + T('-2210034411007336613344093585636474574394416824601186', '-5697969717442263672614992696703295962015334995729800', '-2.210034411007336613344093585636474574394416824601186e+51'); + T('-19624478.484621985479326459244324640415206', '1107819793188885.038860867', '-19624478.484621985479326459244324640415206'); + T('0.0000000000000000027', '3631127636124777836273261304119863249137.03745979717836204256', '2.7e-18'); + T('428890527306795', '1668185806826743336487.38672816383301425507832145712664', '428890527306795'); + T('-118370476542022564.70047766418757366578', '-1228521.83117210457036591052269149317400179607062584234', '-805751.95595400766902842055758098139122173498985457682'); + T('185286933', '2634674111701244320881602650.2421109389', '185286933'); + T('-7816588257503735832158705.4', '-11446124074192432060805137497617191.5046', '-7.8165882575037358321587054e+24'); + T('-31168709097858.0', '-17218.68615703', '-10432.31999475'); + T('-1193968682851815353278.892', '16233847.397485882794799291566785542165584', '-2556325.316384280762019592125096432742624'); + T('-0.000000000000000000429785230445766557625717658510987246778343793367089404', '-716612915846390386454071955208510757337687098919716', '-4.29785230445766557625717658510987246778343793367089404e-19'); + T('760.787298', '-2603560575.1399', '760.787298'); + T('-18743620234475404481049.76769588257', '2970338095303214.63301260929704123104600934034050653148876822', '-2683854960098077.08770269798321468491598555389258155949698992'); + T('-226541276978', '101925495756252505609089275771221594.112426392858882002885', '-226541276978'); + T('-0.0000000000026983', '487122954421920311203.9905962', '-2.6983e-12'); + T('203252938.721649167192089873629233502162687452', '221.20710344937374', '109.823743846799189873629233502162687452'); + T('-2171101234717018601412530711075541768098', '-1268548470639454153963685.60015', '-1.07365992860948866922827981755e+24'); + T('11052697820027335752485837522176323720287184.550750155', '-553810966103.02590552831652788244539331678489580819303648', '525192380831.77413824185332709628772520041226644631472352'); + T('-3884559198046300262478611735179875511934488582167963637380', '8.036636030768', '-3.27660412216'); + T('2.0', '-45.2', '2'); + T('0', '-0.163349511377933876791410190902077510', '0'); + T('-730572579439411951784822207340668557', '0.0000000000000028', '-4e-16'); + T('0.000000000000000001168651449131923286954932276275033439404771143330881475', '-47210255.27658777658181021168421281357', '1.168651449131923286954932276275033439404771143330881475e-18'); + T('-30769567698.202004635902421797597470637', '-2117030646075139493515312478944809325583483881105', '-30769567698.202004635902421797597470637'); + T('0.22203824107047587018951755693974277131200048220', '-136.52076', '0.2220382410704758701895175569397427713120004822'); + T('4489045408103326401151265241469016732232592556114681884438', '0.000000000000001314763381159004315842197', '6.8074495798791174068935e-16'); + T('-21348129287570112842795163717617654521736400718052510', '-1995504519697835638540568077.0196418', '-1.1402642626986948193867205135517104e+27'); + T('-14.48287435139371979106', '-278112747003022610742126629257947172194929.64536', '-14.48287435139371979106'); + T('0.0000000000000110719145581948062251355493585472867', '-7978399748.1558009430388367158631487853516499292946094', '1.10719145581948062251355493585472867e-14'); + T('119501784974', '-0.0031818401885065375156179', '0.0016290398380208417060804'); + T('-0.133707475845003705950317295850288779512882217932', '329652021145697865591302212038174941275757995054.713783674845', '-0.133707475845003705950317295850288779512882217932'); + T('-12542871568091185279.0460234294798148233', '25754.120417', '-21877.7952474294798148233'); + T('-3818054566.20841286030331762281612', '-1936.24778639274331686587963417792515204476546099', '-472.43293099041187629213445041741051174848665583'); + T('118000308055.9373727402663957624604063', '9918.67574327356', '4846.8753496034663957624604063'); + T('-11.38', '-24193758424792525116909481098205.677446', '-11.38'); + T('2.46889727437003280961289299604392122014099570', '-4644753841435365046988433379518839103541882981334804890807.8', '2.4688972743700328096128929960439212201409957'); + T('1805667164641860305883.31324', '0.00000000016618955069904640141657751519707415214669847044', '1.046133052518583849356487736801523519251586328e-11'); + T('-0.000000000000000000012169689776926610597997556555980427323944885949030949402', '-434910402113045297454505.1302573189763520', '-1.2169689776926610597997556555980427323944885949030949402e-20'); + T('-1739.4', '0.155584511367509963502532516739270411', '-0.120747422606118005188995371696075431'); + T('-569589695561180399227800563933576000706960457.3656765081522', '3483.46493456384339944984809629410413910476502', '-3467.25917700145185407850776398960809939327178'); + T('27827944878804.043096443231553973596298120', '327784539432851688676.574297', '27827944878804.04309644323155397359629812'); + T('-0.0000000000000000000273570270893076789122004877379023084477997941182649713787', '55071786762378989.632689594', '-2.73570270893076789122004877379023084477997941182649713787e-20'); + T('-1', '30698458.1545228514266', '-1'); + T('-77.6796737181065072239544734403386720988476876081692968190', '-48043379.33911367817680827247020826', '-77.679673718106507223954473440338672098847687608169296819'); + T('-0.00000000002231552048713565363805177481170756001463248', '-7745938658044151', '-2.231552048713565363805177481170756001463248e-11'); + T('4080930738001215900471542815678.870', '-259094.384407758455239', '219215.641754292988748'); + T('-65148376658415.8821831041618603950', '176.7', '-41.982183104161860395'); + T('-20649466814.805802613083057980846632715554163812995', '-0.0000000001319860149268122557211741866249364289650956', '-9.623959984992160004489809813728963916899e-11'); + T('-8637039792424460231', '1171511157428179825785002.9414399798460302750', '-8637039792424460231'); + T('170120714324740496497515610676549361259437493939036', '0.0000001984234593401508456286993357944778724317751259644793106', '1.80272091831781979821089649811533712715612789460516662e-8'); + T('3040385342.35657760274052', '-372946621956569451.93539995558371617994622295531744', '3040385342.35657760274052'); + T('234417346052636032.106833697570476435658983423056', '405728269025466785030711845788149565209977.743', '234417346052636032.106833697570476435658983423056'); + T('3003698058950457901967364.923201608', '-0.00000000000033926708389437080558726155721138587500872389823', '2.3077148260391721408496333950768060426097166773e-13'); + T('-1', '13121297327432473503324600878404', '-1'); + T('-0.00000000000086987493647337590015438704985', '1126309963348141179998313355117347492625867522.06445459173', '-8.6987493647337590015438704985e-13'); + T('0.01175883004658442799157', '-1304796615695885174911897002429657121243.096878772927435101', '0.01175883004658442799157'); + T('-4.1', '-925940.0049', '-4.1'); + T('94413979984015715031.72143', '-44956570520496128861135438942192313346223.4679844', '94413979984015715031.72143'); + T('-2084.96276512750756221737052806049261165250425', '1.5202660037865707', '-0.67807393611913251737052806049261165250425'); + T('5530042131715182582', '0.00000076755550127601384796182326285660346554068838', '4.3620483782819522891660511451578934939479584e-7'); + T('-67042.802', '-28411888994.212820705785482909844033014', '-67042.802'); + T('-5360742.0', '327368856548045.08220112714929243516', '-5360742'); + T('47117230722.16973123915245237545229011004357913004', '-47488231.617918014245187991287717374685823103416490829', '8904957.195061107925965018036654421707060540881097632'); + T('-0.000000000000151343572349948255798487186356', '42.39640064100021994629331666', '-1.51343572349948255798487186356e-13'); + T('113840373593648670861500086', '16082411799435623101958677220820405667', '1.13840373593648670861500086e+26'); + T('-8.22', '-2867798109411674.996765068247085164513407273890902397064937', '-8.22'); + T('-3.50238614', '-6860188389136636488339219859054193101069684390', '-3.50238614'); + T('107107360259917227679425620190.388983860971684', '8800479523270977282088607107997626691064406556317263323.341', '1.07107360259917227679425620190388983860971684e+29'); + T('-175822.1223383477', '-88621983013742415713.67926832', '-175822.1223383477'); + T('-0.0000000001165498478337125015371156469966957212161218123244751', '-62550285299530518719359714148367546793907', '-1.165498478337125015371156469966957212161218123244751e-10'); + T('0.0000000000000000320110187403311537074296810233047925148', '-60407506473103.897451724471', '3.20110187403311537074296810233047925148e-17'); + T('-0.000000000000000338282064563114', '-96190376454071434357.783403611375151575341982065544942431', '-3.38282064563114e-16'); + T('-0.000000000000446753711341', '-9.4', '-4.46753711341e-13'); + T('369078971611659797359596697169091.7394557', '4390355307871218680185944', '3.2920328769890124360129157394557e+24'); + T('0.00167752355829931578551694576878658836500507142636702529088528', '3276066309050', '0.00167752355829931578551694576878658836500507142636702529088528'); + T('-40341913269616270298908054352.555424105652', '-76.6805753', '-22.343535105652'); + T('0.000000000000000234899796181467417005659941', '-0.00000000000000002455754630676905247611', '1.3881879420545944720669941e-17'); + T('-2288200091016313974155687089998490026813781889257797', '173612435224249143072698340434416969557762958', '-4.06305517399251906560023908396396030698941e+41'); + T('-119.570203264189', '0.00000000000000000270873280446606560343105459296495864', '-3.0654086667132932857371380394960016e-19'); + T('9636003428434421863325355207384758', '27189148267469.7985900247652', '763104629651.47867591268'); + T('336.422676596', '45198935114500.3922307046', '336.422676596'); + T('-14.0627943158485824648781649958871436175344604029182482603314', '514937038588634.2538384203447', '-14.0627943158485824648781649958871436175344604029182482603314'); + T('0.00000023418399644897328432613203542773200097298268', '150.05994', '2.3418399644897328432613203542773200097298268e-7'); + T('-7549019185595.78985813486261693520665842030485693423', '0.00000107047', '-3.7760261693520665842030485693423e-7'); + T('2084', '-4702062390.892', '2084'); + T('-0.000000000000004338', '23.449915', '-4.338e-15'); + T('355378988141704324089218417352212802.4373051939435896809', '-410089.6820', '397574.1193051939435896809'); + T('-0.00000001989462540690061730462809985539649615779', '-38.286442069994941913718432', '-1.989462540690061730462809985539649615779e-8'); + T('18131048627056749262739468342.355859006591', '-1199.6142723004281428', '211.04880824112304'); + T('-7485271015053088795456302791998022618551521.6832', '0.0000000000000000000469320709938399196323702081094328803321', '-2.69710660151015687863998038860418026399e-20'); + T('0.000000000951589985684289940380019704065655070039753', '-26373114201649323963859575.5038618827163', '9.51589985684289940380019704065655070039753e-10'); + T('29612852829840055823.4234313598', '-0.000000000000000000390000839472495342007727670085919905954881', '1.00427280201824924510562417012541840544546e-19'); + T('-5607158.61839129739841', '7', '-4.61839129739841'); + T('-5033.1047890916762223467249791215764', '-125308255061340894094178.363334', '-5033.1047890916762223467249791215764'); + T('721650415570508.30568044521', '40444523802228.33072733', '34093510932626.68331583521'); + T('2909689458580570441', '35832160731.298726', '11893825723.095282'); + T('-5860896283.24109', '-0.000000000000000001291619269537172108644', '-3.63300889125010974528e-19'); + T('-194225255714783295041136360134265455943072328542285', '69.6', '-40.2'); + T('-64931541870946970276.043833373186791755', '0.0023858644', '-0.001926882786791755'); + T('1768097901758505513385227.27886663656389579248832549927529', '49683790014635', '22391913150827.27886663656389579248832549927529'); + T('15607444724715380472693190116075827307544230542858', '-30863780897913937221259082805810494697060093553853613140', '1.5607444724715380472693190116075827307544230542858e+49'); + T('-5', '-4637217487418.54919740129555570192754032790658061945', '-5'); + T('-0.0000000000000000000828', '131673552653745805914768.46227', '-8.28e-20'); + T('-0.00000000764789734', '1709371095001247612801478608832281576263433223592134788490', '-7.64789734e-9'); + T('154437761882957023383482721504354803201034660811788829', '-0.000000000000006907027', '5.846749e-15'); + T('715263.3', '0.00000000000001885535871127301429501799', '1.588206408282257808507009e-14'); + T('2', '-139137', '2'); + T('-33.5', '252567485444977003649.689937162645', '-33.5'); + T('0.000041876254378856129586442165482266321783', '322959107295001633.58', '0.000041876254378856129586442165482266321783'); + T('-54186163890839675559037155.29991407802075734', '0.0000000000022878015271202914230826203651610666594361551538884626909', '-2.2681269475854053487147725795128202226083088877672780421e-12'); + T('0.0000000009449673438295910508', '-17.0733222', '9.449673438295910508e-10'); + T('21265617482392966322733539382375295590999877466103755238889', '-352694528885882768342.45632391826455624336', '221163195874277534438.6290731360549322576'); + T('-1307793651716492003679476694280841686029964.654735755057269084', '-89261449075265.032742854725660037428102593', '-30163701590263.071635290265954147983863299'); + T('5914702572.83224302033871291000363', '-0.000000000000000886450497717875025851850', '4.967313925042229243866e-16'); + T('263730784.16038091', '-58734788098538430712.3', '263730784.16038091'); + T('0.000000001854032486183296214519', '-0.000000000355070869879153', '7.8678136787531214519e-11'); + T('-31884740503448053282155167604', '-9334262264990899277546182645450.74129764939998707', '-3.1884740503448053282155167604e+28'); + T('11557392706097.3454852500293825329599950094143', '2.52303246491988770256', '0.4512976779915504676799950094143'); + T('-71596377460606253231921860426759937622737054', '4887438282022459980414.75188230501531', '-3.01046057949271437163960532658638822e+21'); + T('233.31782712896541142', '-0.000000000000061176056765670789881258454117135367568123364367998', '3.1635882250994428931750935802393986143468670072e-15'); + T('365.885010333042430035757670950257510558158528', '0.00012', '0.000090333042430035757670950257510558158528'); + T('535753130902782277401868.255371439243127', '-143.10142002690254095307', '118.497092196935045142'); + T('0.000000000470393111281920', '-51.9318603511297101', '4.7039311128192e-10'); + T('13458.12201247046122595270157739959756782786002', '6387839814.018150125742976314622109379608051443', '13458.12201247046122595270157739959756782786002'); + T('-5.831075554650765329716', '-11970348016752784794040399571598021585032773536121.380962', '-5.831075554650765329716'); + T('0.00000000000262395619618229355713043239', '-87185298877269401376712558913.7470', '2.62395619618229355713043239e-12'); + T('141.0', '188771.3963534769931324152', '141'); + T('-9236972803514324.7806408277606845', '-0.00000000000007809628857086731989071851354', '-1.650710030068608338878824096e-14'); + T('1.2974663175859402553689735548443', '-0.0000000000001062828009896091833554986467183627932744813138557760818085', '7.61109945460281796836350249437619994413734484557859166905e-14'); + T('0.0270550933935502424060575696830352678525170478229935415832', '-451291.14957148684', '0.0270550933935502424060575696830352678525170478229935415832'); + T('-92.3630313298', '-0.0000000025494749392548', '-1.4586947958892e-9'); + T('5', '2.230', '0.54'); + T('0.00000000000000047652193195365538282280574751077165811188614512152190254', '-0.2219408161751349997065647158660685689613558', '4.7652193195365538282280574751077165811188614512152190254e-16'); + T('-11584699154744825490947848080895226756397973538', '87574.623306', '-81181.758812'); + T('677064505276662938729662254128.29994114', '707.4', '272.89994114'); + T('-0.00006824223430307152214885541', '-259323624933420687586166700605273793769205140227.53768209', '-0.00006824223430307152214885541'); + T('42649.4427', '6691515410463', '42649.4427'); + T('-1168876626035009643806416736226233', '615863945.824703012224567830126', '-392657283.272481237688137233096'); + T('-99850601104584713060403542.32679025848626541', '4984333871554095648842233050848980249665273650', '-9.985060110458471306040354232679025848626541e+25'); + T('1', '0.000000000020714284873094147095452920238214225', '8.535434304189538408987784126387475e-12'); + T('-40382172868238902141831024410171370609.8497129774930', '1302788268944196991798424860.3558746', '-6.82458913661894485779787415457058777493e+26'); + T('-0.0000002901522230060366316110382713638332433750838395', '1797816163.6022664896252467454244679282', '-2.901522230060366316110382713638332433750838395e-7'); + T('15.07', '-202256.9', '15.07'); + T('0.00000000001513399901378093', '-0.0000011431', '1.513399901378093e-11'); + T('8067543766555814361258.9809653', '-1063782.5113', '771356.4731653'); + T('-0.000007452478259217127353', '-1269742061.7650', '-0.000007452478259217127353'); + T('3083816844578.0036462734892162357142', '-62.043', '12.0776462734892162357142'); + T('0', '19676669.3210', '0'); + T('12000.579726', '-0.00000000000000000011473979542082043429', '6.885862514870385948e-20'); + T('157760.0162346769710343762123266316522595', '0.00000000000000002072', '6.6923266316522595e-18'); + T('12.56649651', '0.0000000011486174569183055328395211586383654058895981238621', '6.243894925921526655230893363862847927286267313448e-10'); + T('1619418216785919248186484303127025755692.6', '-5.32529795', '2.4485417'); + T('-7894381522375439472424053746795845545020655311347324165373', '22494560920042179494908995572822416399654.3988', '-1.79805849224239031722296510506179645210727012e+40'); + T('0.0000000000144180437967392496819227076903747539933453407576', '21.003335', '1.44180437967392496819227076903747539933453407576e-11'); + T('508588836239.155636417726778522264', '-402450669.2', '293641039.555636417726778522264'); + T('15935406874866887008916010678224808183941097', '-20533021922984769932524329949941646599184', '1.781862630705541277130637070090422974313e+39'); + T('10577358966.62645197', '-3902498.5606677997620066743', '1587867.216714614961912647'); + T('-2.3', '-247.215776', '-2.3'); + T('-0.0000000000000000004534097652705', '21900.378494953943', '-4.534097652705e-19'); + T('-622302543239963404259053402472736239978107701', '-37144508134104022867053839784711386961366245133.798061', '-6.22302543239963404259053402472736239978107701e+44'); + T('963', '-1143859.8306131050309784880555908137246920', '963'); + T('-1105334398087211096372825533031660097846.368', '676850877469691.4610087010635866598320915855', '-528741020326514.019428617163961817534907474'); + T('-33.537', '0.00000000000000000240610602831844082653894660603468520326205996616490648230', '-5.055045646408436609503461106111907664625346674246231926e-19'); + T('989.69', '1818860793340242.34985869797714179945790', '989.69'); + T('10897111350996763207208776906688937.9374615427', '34065063399932552093174621472004861573778946476274074', '1.08971113509967632072087769066889379374615427e+34'); + T('-11632431937037532580778695673.04032', '74582043438.8721965449504177221562482147014523596481', '-53296552278.8841298987146598409845587169502001115997'); + T('-141.4055769529530650', '136398726400805051012116675708221546904997943.0983953382506760', '-141.405576952953065'); + T('2436945370.995', '1123321514602145559580', '2436945370.995'); + T('68966344530824.7651173919961179400965271017811497107820', '3016650.5058630595142431070', '430737.119987074593653282096527101781149710782'); + T('0.000000000149640169704895568509292298172960103', '2388965841.03588731292125318485549177319506347036', '1.49640169704895568509292298172960103e-10'); + T('0.000015', '-3304.73941676117143286536062311830598946', '0.000015'); + T('0.00000000047066315132394427031416', '-6192', '4.7066315132394427031416e-10'); + T('-0.0000000000000000000581928591150593239271964107701426222875128', '5909007611163710886717422164.5826709875973058037321', '-5.81928591150593239271964107701426222875128e-20'); + T('31384923094914821999292552425.2009815380728309425967', '77537672972.35166', '11679771345.2858615380728309425967'); + T('-37567843820039777389745510805385', '-71883985.6201303', '-21998426.2683717'); + T('-8457.2', '-0.0000001173257195508166367392288464056131809270998457', '-2.69885424250247290675786668651098778106586768e-8'); + T('25100609273081546346038727027615', '0.0000000000000886831920439450', '5.162428876817e-14'); + T('-18047576.1098270311193001138015699506418833418804938917', '192214125807611.95755841586183852694517418512423624080241', '-18047576.1098270311193001138015699506418833418804938917'); + T('-95.588906373514114132242', '-0.0000000003929994337493746273806772122562877169246192899290', '-3.19339159019421511190151559546325880388122429492e-10'); + T('-0.0000000000000000002355739833279382506655556792223696880503752520', '-0.00000000000000079651826138154154521027236636093398105375492817', '-2.35573983327938250665555679222369688050375252e-19'); + T('-2007', '-6160033729282.9851660562442', '-2007'); + T('0.00000000000094972368099037971103433', '4734161412127674820247110768919593576233188914.242822976357', '9.4972368099037971103433e-13'); + T('0.138175287929598290229868824644141412392715', '-31558584857557504718252045560.11304', '0.138175287929598290229868824644141412392715'); + T('1196620705.9415675785887940558444736246545644683738095', '-70465530484696222361776144167727350283884319.64044686', '1196620705.9415675785887940558444736246545644683738095'); + T('11074860894', '1561765758632.45', '11074860894'); + T('-4381924184574059696448709.53108872210260149095882186', '1.028', '-0.23908872210260149095882186'); + T('0.00000001155422786572893769342087552370206756710219340', '-13931734385.2', '1.15542278657289376934208755237020675671021934e-8'); + T('69191800707.52', '8416.42298638305', '181.0075723297'); + T('2081967242.78645435603091', '-0.0000000641307577303646051321340042511613883', '1.04729585981376168223728825373660659e-8'); + T('851318799560282460315775006926769346175917826.47889714', '3053712.3623410179455158701230239730564268230', '440718.735027453982530562337797644313071866'); + T('-10058222.5796344546386', '6627451174822895.34794097800071486253721590178533538', '-10058222.5796344546386'); + T('0.000000000037566442917643747268847042234718910033651246885819716699339', '1.3779', '3.7566442917643747268847042234718910033651246885819716699339e-11'); + T('875.90002405088', '0.000000970077655599692785652735177637', '3.5638028118889148093740648709e-7'); + T('-62.7931846870391496', '-636485693987795148000356.1626652406993787', '-62.7931846870391496'); + T('0.00000000000000100341179', '-544501716519662.633193865233920', '1.00341179e-15'); + T('0.00000000000000351499628540049570637673', '-223431373521.7926681956463703562745846396661', '3.51499628540049570637673e-15'); + T('-220603353886874667147934643649.87295033625852695', '14892.592908', '-14434.15489033625852695'); + T('-0.0000000000000001612847241392420250768267369', '17433478642639304.4236073577621811634134', '-1.612847241392420250768267369e-16'); + T('-1883174595828380403709352050091085026369077660279268.9', '-0.0012895', '-0.001097'); + T('-125549014214.7375819121786172926612698843039792917253281', '-101.5885766453', '-100.8153792133786172926612698843039792917253281'); + T('1065766474589037077293252213448', '104.84555', '81.7216'); + T('-0.0047533898584759553535897361825760775807323217889394835', '-18213101567414468503998329412491692494599546949.8', '-0.0047533898584759553535897361825760775807323217889394835'); + T('1270005291407.8881300436', '4138621074845956468.09769209', '1270005291407.8881300436'); + T('-260441856275307932803222450437995247080731478', '704992903069127.4325788', '-431855187882906.333326'); + T('-0.00000000000000000009754763692467059466885260432113614665268499743', '-1095452837.106034703346392429672156', '-9.754763692467059466885260432113614665268499743e-20'); + T('15.2', '-9898.141488362', '15.2'); + T('-4.642097816103323517795932640', '2320173035769155029864.2360071417144711754883993503027', '-4.64209781610332351779593264'); + T('27232043073441728507866158240.138995261078', '-215290045818292170941580969748443497', '2.7232043073441728507866158240138995261078e+28'); + T('-7820551181460133788154158506805766936661586187217825438.43', '9043807302.81268', '-8827979159.46068'); + T('40454701041551859098452066940764312196468.06490346453770', '1.43336157528769251880838', '0.053020665769834197966'); + T('0', '6893071800513.175', '0'); + T('-23294105221282442798534198559904763230604376248570', '1108006854160532581.643019501', '-634324850398077026.428796591'); + T('-70.48', '425148951767015.661297750583259821000170', '-70.48'); + T('-40097263.65021696329198038628255519578725029828361985869', '8008783649.929271', '-40097263.65021696329198038628255519578725029828361985869'); + T('-3744957147569480041094559658.8985734744', '-1.39589737574796529539305515486016767152', '-0.007414375129527604087594017204876948'); + T('1', '12243765348634238072286305372976115524601373993259986307', '1'); + T('1133226250873003731000285272922.678821486883559776563400259', '-48449121713.05851357863749277194726', '46399517902.028653911554106994622540259'); + T('-1110.00985672050392625354008504049692', '0.000000000000000144467905969585159040405525015114077352752345766119586', '-5.0667226393916955793430389451065661055080904169044368e-17'); + T('281516884461013501680.63', '-1.4', '1.23'); + T('1424834076734161906.49994168746374', '-0.0008975084074165482738612610040251114952525910764632040285', '0.0003696875090618801911161885049781983725485998646848861645'); + T('-128763476617069.02187580755667', '-6603.36282886993434', '-2812.31711094080867'); + T('572750920744637008914545508209975834156579.5795909538492834', '-11502534832438064096814', '5.5309188778180859429155795909538492834e+21'); + T('-0.00000000000371736421699926447258798163058670009', '257486.470069146779', '-3.71736421699926447258798163058670009e-12'); + T('-0.00000000000000130129857', '0.0000000000021237415884955381438534891507974579736322323393189949494486', '-1.30129857e-15'); + T('97510480169357047959.778521006822362538', '-0.0046089528809', '0.003841092011662538'); + T('0.000000049938779602084071943723403', '0.00000000000000000040598762102204974283610961143933322030167695316672919233780', '2.328791623754087509772477793320317342677727105556945004032e-19'); + T('-0.000000000000017579612833728413841360648325607406735458075688296134041848', '-0.00000000000000000046795016181219', '-1.29104929872111360648325607406735458075688296134041848e-19'); + T('417587148573267450086061214415849335522635545129971', '72162262599593511511391535.25753637130715', '1.588290674385543384224627617743657423135e+25'); + T('1899704999505146.65318875024320183643806671', '8011298158372506449467236619268.06739540', '1899704999505146.65318875024320183643806671'); + T('-0.00000000011026161484148139283420032525', '3', '-1.1026161484148139283420032525e-10'); + T('-641378081607809826819509989054058308747306', '-32614433220951683931.97290822167335112076028624', '-32321533365320656543.47914416134229484916012224'); + T('73426.2174993055579013322865502961038551', '-22991170194389000791863400240', '73426.2174993055579013322865502961038551'); + T('0.0753432448671128796055779867138537182985932603289568836', '0.000696623968026162316598353569181604985489965', '0.0001078563202873494129558012422403798656770403289568836'); + T('-77918852302.666', '1', '-0.666'); + T('40834438105282568531887549132894212920316057.4119', '-69096.2816004', '9282.443256'); + T('0.0000001081007656128892877603069470142579', '-146763.9202434867', '1.081007656128892877603069470142579e-7'); + T('-19065040207291206222014126191923749015295117270838828148117', '-59458447985079036923403398069307106616288796371525.0', '-6.933918951125046770982521962871037753580749088442e+48'); + T('-50.454890710', '1.57811064514885740036542902647362298773', '-1.53346071038542058867170017931768738037'); + T('0.0000000000000000029130545090762297054692', '-0.0000000000000031732390760633505614997707573729383', '2.9130545090762297054692e-18'); + T('-0.0000000149477116306405895605823556902142791919238574341861798', '206795087.6', '-1.49477116306405895605823556902142791919238574341861798e-8'); + T('0.0000000000000000071', '5470646583815966704709512378933741816164381248458912550', '7.1e-18'); + T('-2357250201772857325710', '-177521457545596938.745399459682135971137972095', '-120288482421173048.58597434059857523000652259'); + T('0.0000000000000029091', '-22982331952112767752908263644179706433315770.17359251594', '2.9091e-15'); + T('70410732817903246800961841933624181629.60085297037', '0.0000000000000000000103454336294636075289', '3.524329949160506449e-21'); + T('-27369983157.1458440282472352878', '23.763912432052919566354032773607568646834308263895', '-6.32537443505237861917552362621110083695094947093'); + T('65056.653', '32408712.331948093248921801757883672', '65056.653'); + T('-79299703594581340711344589476907732591.49009044336', '-105750.084896815429373214442762165', '-104265.478222642869860762619825095'); + T('0.81012834507591033602543', '42890384.300', '0.81012834507591033602543'); + T('231647806.280', '2306380.2577620003122660083794072550721890979450664365063025', '1009780.50379996877339916205927449278109020549335634936975'); + T('-0.04266283385', '-231833828.7857580897334', '-0.04266283385'); + T('2.9617', '-417567079608596894283345450125373793666347.08065279467956618', '2.9617'); + T('0.00000000000005671393697246617', '0.00000000002372488709978367633405147788335971135485863563547', '5.671393697246617e-14'); + T('20411507237949901.00007048085657674491003063099663777294', '0.0000000000000179718685180331186307', '6.87219923858062022287294e-15'); + T('78562464348554551960.51656952881040712219428', '-360452902524757862924847627712001.90071009646781972063', '78562464348554551960.51656952881040712219428'); + T('-1784.7', '1.107', '-0.216'); + T('-21207.62887', '-30083662469912.93830185385', '-21207.62887'); + T('181794573664525362505571198963.74048513161596812818', '-0.000000000000000006966183124261834480', '1.44054114626355864e-18'); + T('1497127573695.63303', '-7299620151322256127312252586', '1497127573695.63303'); + T('-143331341997458746373473632414689879129001.0510139759652713223', '-1039245311665254920360224447402081.203667', '-4.163981858938863521252654102664372514539759652713223e+32'); + T('-7.42318768495154312740078', '-5725.37969786010009373491349369', '-7.42318768495154312740078'); + T('1.7', '0.000000000000000000358545942655', '3.3438498447e-19'); + T('-0.0000000000000000230187885344529285768794826532', '-97947.8515169117863685621966428355043134881268104806819344', '-2.30187885344529285768794826532e-17'); + T('0.00000000000032661966', '28146830442002.99800238434978678633563002677', '3.2661966e-13'); + T('131444649737941070', '20345737092636.1111991821569377453431132947653', '11188119511791.653283266182165083488115816162'); + T('-70.95', '0.00000007627177390524757759931', '-3.355915079851121925592e-8'); + T('-0.0000000359844794247092743644998506637111', '-821842552305272024445101236331.431697024181064278117', '-3.59844794247092743644998506637111e-8'); + T('11559244775803152829995363390516552788279232383634', '-0.000000003810335052601512043915061311335400346835301683933', '5.89171798463495478689746049513730071363650371891e-10'); + T('2527.74183', '43431759.31595200153', '2527.74183'); + T('-6716182884374088980171.84153844', '74722140.737467381748608636560886010812295783760526770', '-35823304.85096169083049875979729671181231669302395569'); + T('12972207321585575187726304322503969808542965.246569633947495', '831901009396237267279615788531418438.849563723', '5.26615819172264979504828722953264235810155283947495e+35'); + T('7665883776671616025905367508643801886903976481377913', '-0.000685209961385', '0.000289003802725'); + T('0.00000000000000130', '4084984.0344696574643138186852656784876', '1.3e-15'); + T('-23744.44703412', '-346011607426.441393159348354522971440097840365544826', '-23744.44703412'); + T('8434642778165686647233872583840184835847700452.5722438', '46', '26.5722438'); + T('0.0000000000000044601453487291992988959798617835937678162460190934757181', '-34957408111696949000006895.170094', '4.4601453487291992988959798617835937678162460190934757181e-15'); + T('-717775516482666361197134085201665528104789114410', '-2', '0'); + T('8276714696969298506623725320011988.89729', '-0.00616112392295074383996719947907960025278866567521351783', '0.00016560800550555404330800366686568701046935505208586586'); + T('-742605.43840212025', '-33.033107325052', '-21.18573495129'); + T('1172677829393895.629925304143622500366643409500207216001030', '37.100', '5.22992530414362250036664340950020721600103'); + T('10537016513706770761008.26248373823335994957890378', '94969063464568723440795883667.8253648809642701', '1.053701651370677076100826248373823335994957890378e+22'); + T('11451.575753798226574650597066008283798', '740458328282622534051565222682743827901164966582017856', '11451.575753798226574650597066008283798'); + T('1.572', '49515379454772293729194042647.91538', '1.572'); + T('-1', '7.059040', '-1'); + T('-34927437284064606817941117126.257390774', '-8736962940.827', '-3438064168.261390774'); + T('25409.947283363583521450111285770286331002016996164554', '-50439325984133502226433618670969699480790', '25409.947283363583521450111285770286331002016996164554'); + T('-541726513791047904976207535366014345', '-406733502885622404519647553066345.1969741566', '-3.642214502844845605566422347088878273975654e+32'); + T('-890820344589514985.0665574100007448', '-159324785981391287370653452100749211478426067970583818.931403', '-890820344589514985.0665574100007448'); + T('515196923836873751650822811674732842614640352.18206884311573', '440807068101717819348891.987', '2.0134973484292983702212721006884311573e+23'); + T('-443343.14120147', '-81519350429738153710983021502973.9213162228', '-443343.14120147'); + T('-0.0000000000000902702192042232797334789149068563741867484672231', '-7320', '-9.02702192042232797334789149068563741867484672231e-14'); + T('-45277903240084126.84557360106009', '-20896812318476199906609422.521834898564460854802489', '-45277903240084126.84557360106009'); + T('28165869957795828694237799735446687517170194.348151719250977', '-38550284385557947404379815866117040.122550', '1.842769006556153994091762719885883071901719250977e+33'); + T('15021482085.44976192138587853899725782258348', '-9904.699', '5677.35076192138587853899725782258348'); + T('4917.303585861', '-18.964359', '5.534604861'); + T('175476267.7992032958565', '-1036388592.3909824125745400050986887954', '175476267.7992032958565'); + T('170405946320111', '-17818386128487328808126289961', '170405946320111'); + T('8550180809850301212655626511667743382400090.02', '-6540107956116752962567.2', '3.55071180489327368509322e+21'); + T('-818705136461275003.08078930092467399502130815326105604518', '-39778740814076648429007.124204603754658', '-818705136461275003.08078930092467399502130815326105604518'); + T('-1.20675758374006649995086560', '-3', '-1.2067575837400664999508656'); + T('109.3', '94.6', '14.7'); + T('0.000000065573671480225125603602776141267516038374303', '553.480300880442516', '6.5573671480225125603602776141267516038374303e-8'); + T('296362415.06624949768701', '244445717421187779.650675510094172662242508672751839189', '296362415.06624949768701'); + T('29374332532.3238432343394', '0.00000000000000000005936857517089413921548905299963269225088201364509247681385', '3.119291720989480852560154607439451452770778662623725737015e-20'); + T('328821752173776490.719819431468332405273703018690', '-2542341869177777917056573693425171357215.954882228930423158', '328821752173776490.71981943146833240527370301869'); + T('-0.0012143107904367445170056', '-1003.4406', '-0.0012143107904367445170056'); + T('-3168184610490460.8945194460195', '-3573568062298202180968377963159', '-3168184610490460.8945194460195'); + T('-16901853866719201501332692.8432369358905099363918280445405398', '-31691345775963588152383111237433553165931816.117915', '-1.69018538667192015013326928432369358905099363918280445405398e+25'); + T('-93621088901252.29805520418', '-2.0188684214862682192621695358466139055618', '-1.8934621792649249958167189632731171199736'); + T('242258091070118423201219529950729719863290357823444711.8', '1108727758065732675.6587799039404934075575195715350085051', '882685173218682761.8921148545569801605823909846489452171'); + T('-3399066202816.303625', '2618943', '-318805.303625'); + T('-28834481903864652309.71183', '0.0000000000000004565222353934092602845491745327666313637270997826', '-5.34810620719243797216459942508340612766671723426e-17'); + T('213672683755841644553544017650723723396202652336.302605922', '-0.00000033677276118692029744817391550088675892', '2.934185014134463864485655375166849324e-7'); + T('-6', '-999457121904797189706147649392540679689483876019', '-6'); + T('0.000000000622195463951304359', '-448.8352331', '6.22195463951304359e-10'); + T('0.00273159264338707604', '131503167', '0.00273159264338707604'); + T('-0.8826707721080745', '-70.82', '-0.8826707721080745'); + T('-6.169582503328100', '-1', '-0.1695825033281'); + T('161790666328890520068178.994438807', '22534.8', '14223.794438807'); + T('-617570557615637.65256125752701839451975945', '-0.0148696896889671858', '-0.01332652388531174471975945'); + T('131606.29662152417276937754010546930907406', '0.000000000000009288216788868504125788635720602972497436211', '4.548851830590558791346414703724411897415634e-15'); + T('51.3977490595725037876457161936459379346361103', '-143177764436300664530563651.36873324', '51.3977490595725037876457161936459379346361103'); + T('-0.000000000000000000055480154187811579505094934438713145361465492675145621278503', '5', '-5.5480154187811579505094934438713145361465492675145621278503e-20'); + T('-426820677348783115368590283660534000419588.633035253', '5649682945695760173704.00', '-3.898820592824218831748633035253e+21'); + T('-18877995762227202359719425947641943773826', '0.000000003168736894305713249647662065', '-2.410163138756323232829425645e-9'); + T('-230734625.125675830245801', '-24887751.105039540142964', '-6744865.180319968959125'); + T('-2.55', '-0.000000000000000003328273034182616010363199785', '-1.2785182565162876532434802e-19'); + T('0.83072894855068062175257214671400', '347832.9728307138', '0.830728948550680621752572146714'); + T('1554', '-0.000000000000000009695649707683834887551815366596414977600762431389183799355', '6.05878904773660946108899894496980695021759226671044100733e-18'); + T('295506566.953646020992273150648001797147299', '-21973527294862.8233628', '295506566.953646020992273150648001797147299'); + T('2181379173600069460.2272418575314841', '-33121557.64630663141', '31392819.5003625467214841'); + T('-1102425661172241572593712529.4318', '-1655029068876808.4683087946075879962249', '-666832641952964.5659918135994689948094'); + T('98281131957208481431777620.35596736255967554627181769', '556842234645404079383345567305273.303513803874857641931', '9.828113195720848143177762035596736255967554627181769e+25'); + T('11835752763446.82223054394121198', '0.0000000408069264362150926140815302294483025590', '1.2484009569088335298499242835706081261e-8'); + T('-50148655247666948.0767382', '-374032530098.019610', '-243774774968.8659882'); + T('-173042648372113278197497944864583449315536350193384127', '0.0000000000000000000366841720', '-3.265408e-21'); + T('2', '-3771771239046067919037045', '2'); + T('-0.0053190456442251124794436212618', '798725962261113.7', '-0.0053190456442251124794436212618'); + T('-370307', '152017395754118405461987924364280', '-370307'); + T('-277699892815627339975120', '-143.6810986', '-27.6564706'); + T('-5775916.6464283799155032293780149633514899100', '2134.505358', '-2079.65303837991550322937801496335148991'); + T('1429207694023.57717520337', '3', '1.57717520337'); + T('-5', '4', '-1'); + T('-52848862092.572286019', '813661418640716426286793.75702600471722081556694278784', '-52848862092.572286019'); + T('1844275644561406088.1', '66184292639.361611328054340279', '30103188873.61915648682705296'); + T('-195554.912236539033400998430626025643711716348904995', '0.00177428671859871088664745504177813109978841798', '-0.00128510649380978957377209918017012798784363842'); + T('78.250868739', '200592382754.965094921301649595609', '78.250868739'); + T('-1.605', '-0.00000050108803722427943381', '-4.8521755346940298951e-7'); + T('-175950845282749621749.3060626398844805224872563725036868663', '-0.00031', '-0.0001626398844805224872563725036868663'); + T('570951706006271.614500911029949202716327198256', '9579594454359595046.96141239240213595155989807741151781', '570951706006271.614500911029949202716327198256'); + T('-101348056.99', '1.2', '-0.19'); + T('0.000001115108462416442750881276832385920295416166957454340', '2.391104283537695024603255485729184', '0.00000111510846241644275088127683238592029541616695745434'); + T('-384.29267210', '-42.6115840552808285042372718273816', '-0.7884156024725434618645535535656'); + T('-0.00000000000000394320', '1490433052780511340442598422397421169.9727476', '-3.9432e-15'); + T('-2', '-124412814393298131.63102541685397', '-2'); + T('39255373365250694983.01012619735480364604931589', '0.00000000000028924174', '2.8356244931589e-13'); + T('83649682374745658097928332400566916840.904100062101', '12515556884', '3441295412.904100062101'); + T('-37978362152425454856329406585920723065797640812416', '-40807030880665280609832.633548429382227699775', '-8.44139811680207521268650854435671218648655e+21'); + T('0.00000000117630746081997641552101447', '126289176518.39164497878613023988707803064880568', '1.17630746081997641552101447e-9'); + T('-1880854096029528626232093236836285358.8229354826767064', '-13.55', '-12.4729354826767064'); + T('0.02073', '607.8621233700367', '0.02073'); + T('-804231633252810472161116.753061839', '-51.139385439676348957', '-3.050773812069762116'); + T('5877876231822600040431086011103959340188703599.31851144', '-5388452483964553888.345931647692324169003115975043825880851', '1930961800526326288.60986182402199524006990099301495612649'); + T('77946964651085243.218457918863112', '0.00000000001144602007465348949097950134087916681540997', '8.85127498118220306889399715954400610693283e-12'); + T('-288323254635330759933511.4835', '-0.000000799099661848570195554780769778567229952228099', '-6.07308413294153274384235191515598586543048706e-7'); + T('34156.9612032703394033850068373910911950393885281598409066705', '-790.014721903868173877309773404251366', '186.3281614040079266606865810082824570393885281598409066705'); + T('-62309462096741992398456920.82284105487052640595', '-0.0000000069200714440436038475285366066199260381235724356693', '-5.1591434837700767752333272066996752713093302820209e-9'); + T('-0.03081418420901964033772890', '-2258.6097737546792912978930040107448576', '-0.0308141842090196403377289'); + T('19440352005832939832434953349.524735305804224848165284560319', '13663546035.3870791', '9500641135.581258405804224848165284560319'); + T('0.000000000000000000174792814753795064312182753542642524992498259236217566516', '-77523522800322397605770.38924241467650641624', '1.74792814753795064312182753542642524992498259236217566516e-19'); + T('-1815265994282465978739.24367005494108', '0.00000000000000000687759', '-4.05185e-18'); + T('-1.34345147096631', '-6865002719881812387470285582221951284174906039012461831', '-1.34345147096631'); + T('-1331063.88165', '11341955270415278370914418086588317083074.0482', '-1331063.88165'); + T('2.046', '-0.0000000000000005877097220931', '4.012083803814e-16'); + T('3545.91036649009998376741645699670257681183407320627384466111', '250.0', '45.91036649009998376741645699670257681183407320627384466111'); + T('3304.02', '299035.58', '3304.02'); + T('-0.0000000000000000000942622', '-0.00000000000000000025221802', '-9.42622e-20'); + T('342502985242332681201199551069.576', '-25743002421256401.04397330499669057', '13427630853006016.61638681371921084'); + T('0.00000000000004233681060170499506821015920037', '255095113757561337754353944933355753406.38155', '4.233681060170499506821015920037e-14'); + T('-28.5269472861067005353912', '-270472762833365.3801132655767', '-28.5269472861067005353912'); + T('-277847759.515216', '135166968528972', '-277847759.515216'); + T('-29856675437162421995266099874726439278', '-19896996992.6267371979256450155346521949519355', '-17602172309.435172515150769689705114114019276'); + T('2', '-2017800319934087984840833728734', '2'); + T('0.00000000000000007184336760908973', '-579084.38782881989356541750992', '7.184336760908973e-17'); + T('-0.0000000000000199905729465678002272254515680192399295794760827', '0.832997729248146391449238508309446517475', '-1.99905729465678002272254515680192399295794760827e-14'); + T('-0.000000000000000127832283699455', '-17051853.75327', '-1.27832283699455e-16'); + T('-1698692.68276072', '0.000000000000342190555852264550226068807192', '-1.32201147548526749368535158272e-13'); + T('-89715846809778312.0866002761050235922348184666331', '5683352', '-4378864.0866002761050235922348184666331'); + T('1867077.167389665646672502266524422230512016', '-8121328626157873800223785135.111300799674416212197931655390', '1867077.167389665646672502266524422230512016'); + T('215901.879', '-29.8', '0.879'); + T('5119759698.60147051603509092616983122712457476', '97582629730470.286607', '5119759698.60147051603509092616983122712457476'); + T('5632091904144.80457549', '-260531502143715092510.9558622691', '5632091904144.80457549'); + T('-0.000691477562292642246090904144721704048411477714', '-202833029325548043615849420487515503451726003', '-0.000691477562292642246090904144721704048411477714'); + T('-5014290818995813355670219945.489013253728448913277', '-49', '-38.489013253728448913277'); + T('-1.19', '1.14', '-0.05'); + T('6.01200548016561079', '-25.3', '6.01200548016561079'); + T('0.0000000000000008934209997058692257', '-9845722515207.841', '8.934209997058692257e-16'); + T('-8271.180908766644265814', '-532.21', '-288.030908766644265814'); + T('18149268424457.205469', '21102403', '20109889.205469'); + T('0.000000000000000005630166790779595999136', '0.000579481131868747005452691950764827230956628754512075686', '5.630166790779595999136e-18'); + T('-0.0000969512096310107418573215633893505216', '146313161286844954805207556174167131617843885.68176097', '-0.0000969512096310107418573215633893505216'); + T('-4.4', '-6.1775206278626', '-4.4'); + T('-534834.70968332438874787934900992041831587', '-38363548234134309078598125637011026.84251944598377781303061', '-534834.70968332438874787934900992041831587'); + T('-0.00003406607808', '-0.0000652979835334948349904827499755959633629915945362770066', '-0.00003406607808'); + T('-1', '-2110983581171793713817325.1475619322694002968191006', '-1'); + T('-80227305.1656', '1944676344179122208154551672251566716245569224444.0', '-80227305.1656'); + T('-45889999955242942968871808966625304007272799508621', '8550404.862499169389885162309987843918802343917887', '-4729231.891447747380274990179385678025799484562412'); + T('-27878389918833569427320729603169170858.95474004228507890192', '23932009803269840591376795875', '-3.41193385706058529612983948395474004228507890192e+27'); + T('567202319309292978520604165782060160263365186515328568', '-11334572195439351811672.1473522129007618', '8.0497193228717959915213827171314311074e+21'); + T('-8697359171345893713842426564522034778871562.5154932', '15619404167072.618217767650', '-3493725216866.96939850825'); + T('-218.363776', '697131146810968473489.82299654842890962', '-218.363776'); + T('26202481114591937993.735307329625927271775', '-304156997.304184411106538785706126202394720899', '140113250.272976945765125367941961760435198404'); + T('-0.007731087980246464302345811575', '-24413038924588027145692146.387588856788321', '-0.007731087980246464302345811575'); + T('680497639988324180.39625512073408', '-4532942013750624897951996571799269425412122', '680497639988324180.39625512073408'); + T('-0.0000009293033204732942233089593840249955775555658283600103866', '-173511.41982571409206143199884579179605', '-9.293033204732942233089593840249955775555658283600103866e-7'); + T('0.0000000000098336953795657517132120257800838', '23300757376665714817666483157023722058388.5033214128449579573', '9.8336953795657517132120257800838e-12'); + T('41084687427290874759976776474299799533721185272283', '193585163.52662', '163743760.94914'); + T('-116.95132', '-39255072372928843286086966431.00', '-116.95132'); + T('2347142650267689935587322698.7284595028691', '-3', '1.7284595028691'); + T('0.000000000000014286361610', '0.3810969482393140582407695856576689976423039861', '1.428636161e-14'); + T('-7308074599589641011784024611055476301285', '-2979647.083231856789860049490151382783519022739462374', '-41940.765367177770459610205511353021036633288408806'); + T('357753139664202.5873944', '-41.95942286390296', '23.4743830801152'); + T('854571067694022997.4884', '6537373963.3180845607368152893095548460', '6053336053.291260561298904945337925438'); + T('-0.00000000000004386908462560891112864885989973', '129740635819911122760039.7464589619454', '-4.386908462560891112864885989973e-14'); + T('0.00000000000000021290574183432875072166863135108510281580702', '61908914489485349291471752909373768165637670.8208', '2.1290574183432875072166863135108510281580702e-16'); + T('2871883224301570575582468652.9376262287274595077514806', '-0.00000152916795423240707414339', '5.3155439780727520002144e-7'); + T('3', '80708788610217964553584510306368.549353793563', '3'); + T('-10835622995844.77266724348161957054233451560047028326613046', '-1175193791680339.76056817361012416666902891954476177079', '-10835622995844.77266724348161957054233451560047028326613046'); + T('1025038648031221253.57383030896217', '-5242.40711853563044167975', '2542.2793327788128154595'); + T('-0.00000000252', '-220187026862816215614922589820191309081445441861274232.84', '-2.52e-9'); + T('2438882128515521004992810616244816644660.875', '-14585625494005545128827621', '6.211192260353379557970309875e+24'); + T('-1253637.42184071686942470', '6043.294', '-2675.5638407168694247'); + T('30.3149681983737', '3.96', '2.5949681983737'); + T('458648663984496211521246069201336181', '0.00000000000000041796956694972368386032730115563266442065659', '1.189340470755219691379214537787056846685979e-16'); + T('-877569106991311.769260729863', '2246530785645583.53767418', '-877569106991311.769260729863'); + T('-33180244.9424', '68040037.571844483716882853268188712468340362', '-33180244.9424'); + T('26056925297726128046555.65872815844589322660275', '23799748744565261102060860.628349245228', '2.605692529772612804655565872815844589322660275e+22'); + T('-2.932266679268', '-2061492876.118067901623547245130932150882910', '-2.932266679268'); + T('-24303392384298907971178613116155773044858954198134', '0.000000144547733182595133021', '-6.2763446759435083203e-8'); + + T('9977', '793339.568052455522323049704543732060826', '9977'); + T('3044797849984420605285366.474651143157', '25186260049851668345583291614301619318511974775753812002050.8326735955299366787084106211969141751506', '3.044797849984420605285366474651143157e+24'); + T('639737463904283952640443433078141655542321388667481890755297474427803997023609757112922145297681502347448794470168805201764741986941', '-14552442514714892538227035420.61249278214225741', '3.07716512012830819205367001585789874568359778e+27'); + T('0.0000009480666812553237528290117310639076036954221787358487462393246935364400792376', '1.0', '9.480666812553237528290117310639076036954221787358487462393246935364400792376e-7'); + T('16673429143256557896853574875292172327063389650998117777668136985538005.9156698099892691658894660539763873869793114863329930039146096813387028', '-107478408440617999633969729.9071529239187240331642550654002067338975836414285167506215860', '8.20260811545606661396908107304136068380872993912615354808000919495595106968750582594596813387028e+25'); + T('-2433298586307081.77465641473337660801763802817481653388429397435772288734383710955919905923279924807', '8945608818026652762135420517379.424606537007', '-2433298586307081.77465641473337660801763802817481653388429397435772288734383710955919905923279924807'); + T('-70843295832985633806095066724872543838444364150876355516508644344503020757888058408332911592444048015580157647', '159194370214483300881159411658565511338185028333524386712582766324718381977826309423371642975467856662959008464353958219661', '-7.0843295832985633806095066724872543838444364150876355516508644344503020757888058408332911592444048015580157647e+109'); + T('3.2263', '71756256022538928427069542438.00966178692388729446382444038774751007836179716329976575691385315023922435789196791754653262230986812059146', '3.2263'); + T('108061134.3910585273259047952072200021695505338334592792817809710438', '1260951025714501457005284501987116458944716243549637898428510181316826466436575714044748818353924236900363398289', '108061134.3910585273259047952072200021695505338334592792817809710438'); + T('43607983963968869595947769368216107706521387015680146006305613629433990860442947600228456010092', '121385730326389922895424600532542775257956396540395781939587936260842487516174244325430.384295616198856908112758', '1.1504925896106825966642741273863721105609952802207648727165046290817382897631508088378461034727326937297965944e+86'); + T('-2.6480956814', '2148671523057716670055099537649941488566244507589768590863804139800870729193528442.071130969310679730958621114', '-2.6480956814'); + T('-470479333263.84377245126007813562135983915023544360010239389244912214130585392185699431847364158901094167357758815083446794565320814454973581796', '27849448232164647723510637195798019946766053448137414448566670989993.67717797401551478004030639298176072944', '-470479333263.84377245126007813562135983915023544360010239389244912214130585392185699431847364158901094167357758815083446794565320814454973581796'); + T('0', '-6993020667326513594.01598727239030644128692238032346465300777782504759087255641592855556786881965341488969418534051814789', '0'); + T('-10372286284244779022048585', '-0.0000001930730138191035178741471788596965420386122185118633654121349245216394001018297980054707996074710125164147', '-8.47592995170001700266169749815180334434465081954780254569435821161404742961756995939834569063835498482552e-8'); + T('274897009856813.734380955979520483734957204601027214931003941720546146487845256149072527968056465339318846303131569226913408938616354923540700172412', '7', '1.734380955979520483734957204601027214931003941720546146487845256149072527968056465339318846303131569226913408938616354923540700172412'); + T('738408012842109785457164849764507323379297.79095792233769102310198027453532813226348191188862586945019214410536832', '15306177324248047715406533.5158700026', '1.506634005344982055089315836033881173769102310198027453532813226348191188862586945019214410536832e+25'); + T('0.000000001307002813605936443383593439823579112009200431906135937099617451361199016339230482184530115838223218189460633917243083200', '-156347131201.0667716470724866', '1.3070028136059364433835934398235791120092004319061359370996174513611990163392304821845301158382232181894606339172430832e-9'); + T('-4792567274869561212802263.9162146352653952716695372928501404982289832583166534206544945624150460220976057951121526613072397239125750526383369389', '-2571615359217819081745372380499521952091705406387642084116393860754896982150026573094709965566690085424189906211974018648786870967996877095142', '-4.7925672748695612128022639162146352653952716695372928501404982289832583166534206544945624150460220976057951121526613072397239125750526383369389e+24'); + T('-40.05748869168454725527441481953494139473673991070979113635160468475219376406826789262579745739976', '-41875468662578995790027634863433077814557063632577215827031.031982081918392876105825240291071725658144212578666', '-40.05748869168454725527441481953494139473673991070979113635160468475219376406826789262579745739976'); + T('-0.0000022907766811721016183225617138609000543876574860984718810338550238748128247445010491861049613', '-3279074504656188611648707.4983942082641992057679531912380705659521798322669577604617597486447068188912830230847051445600458515668443081070949175', '-0.0000022907766811721016183225617138609000543876574860984718810338550238748128247445010491861049613'); + T('-0.000000000340313277', '-0.000000001255112168870655023338247473949331250106676281883642901353991', '-3.40313277e-10'); + T('-50225365.1475566438998761801442412', '284028617245837000189928101232939099744527904229835535.835746075', '-50225365.1475566438998761801442412'); + T('63.344721423304857459331086841825237874925064097', '57155073593666.40553442288889921516416834083269742567707391607', '63.344721423304857459331086841825237874925064097'); + T('-405919933.1066287819696386581647229483641869199888974504501408794124002251348919063696581146156799005', '2647178729438306865645909642983752549443679075960964976334982663855617.77', '-405919933.1066287819696386581647229483641869199888974504501408794124002251348919063696581146156799005'); + T('-0.000000000000130754174234156809102364575558', '1512769765054847098913787446631276445464675564737758845532029029227218416561642292270741819169983956650914922547871552583245517440681359875', '-1.30754174234156809102364575558e-13'); + T('-42805325218726498366672740080295203192725414965527973209314316749.7120445518644682586008052614425260815242140724520046592053081', '0.000123298332335657505901061098051881119196170384724006568439947745355121025753230625359269654114501774394590171609541470588517', '-0.000032325304000891296915093212441483965264186154572168660357953720611674306961720593830907904561258705086770592138813164224068'); + T('-75210406056668422373802918016368260769067586508935441638493539318778550326.50528533489988415483952', '440622997.6355053630471029', '-340429684.42458949795004585483952'); + T('-1222922824327546500522220970819290434122898473371530650066004876062845284114.47721875136651190', '-1379027454245733767586', '-881180208974102493198.4772187513665119'); + T('-30656582150188875494703614722772772221409126232115063256882064964663663147033209144753246762464712.948730003091026599897432459556025696', '-2913934951186033025005819092772439514996587951119743767357433798109195725658300879072952407504422194931477368634077', '-3.0656582150188875494703614722772772221409126232115063256882064964663663147033209144753246762464712948730003091026599897432459556025696e+97'); + T('-6460522065030402275014019.2874194931729240210323452441436174892', '-84550416554285528170014238135907266547165974999578715609084038263.46129840157771271779704084743623515311185778729738812', '-6.4605220650304022750140192874194931729240210323452441436174892e+24'); + T('-0.016364386296444405533757351682555346465502820950062088651150128675773350177464733695707386307349689534592475248473689442', '-662351516465.9032743599806965674027961010966377214913163', '-0.016364386296444405533757351682555346465502820950062088651150128675773350177464733695707386307349689534592475248473689442'); + T('1103343525164099798605597537113983882179727144422100669678631936027042820706120285756898888893404677995338896062374110057717750895679', '91748792242920404655427917872546031638524.76204683127448751123961871264830271567888066463998429231705219642715054074868199195373673227635494751953719', '3.076328553647557636193208401331029365654020485144903415117912662361833098755573989373555529561896396760648323565651091850507799771898789127729144278e+40'); + T('-0.0894652716283348818337684886989151280762017763427032659791509101256464820297', '-12966.6884', '-0.0894652716283348818337684886989151280762017763427032659791509101256464820297'); + T('13114418006467273871814114136828793244459258873580991741468083458844936', '4759000553255960840361168620.3774494470837273198', '4.2761722071204063036259345611428685193209688534e+27'); + T('-28951495771059579052038784935583719855135835316878812739160571275658593082655402834569052032878823395641241968136.92574783376902191547024436698530', '-3031768663774740737176934765360849728180780437211886327623459816735182479695223019269147895285170079834032202516966937529989903070284157092473214668.7', '-2.89514957710595790520387849355837198551358353168788127391605712756585930826554028345690520328788233956412419681369257478337690219154702443669853e+112'); + T('2393723882767965821294763322394195744548891304060902', '-140981135960273230.0025778', '86668711566444988.9814302'); + T('-3224488416109581472101333552995382215707383396998952009319985210337309105631785072396803.91964338865842816515912815197781787', '102818159313377657005579111128189067224885718.140628085554012525428767372817189722551478405035418445112060974169840360487565259217', '-8.1595634025043932590241822413741540317627232887069206304733728507469999734166316619875329520357299837254473649437591096347440866e+43'); + T('0.000000000000000162614535957335504400161243268689702722565890737357214918357356590168738846464706769774484467251167640135858015634083627803179977581109102', '0.00000106803134832455205844954340150714254354766339175870844951355513521917239107042458407307482848507498559', '1.62614535957335504400161243268689702722565890737357214918357356590168738846464706769774484467251167640135858015634083627803179977581109102e-16'); + T('-3927.4031809', '-0.0000000035029583866611658486269733571456482523405154883369032001554318344330512146832289592781514675456658500756286236294841624823979375753461327906', '-2.6932691679676130460056959057199199083055272525449126446015947490329456323969370838199750438158748550553789684640297326857241719276712355958e-9'); + T('2592701578783037181466698143885146669128411307594485136303860886846006143235135122817836647040961317262173311873893155', '-2476735053659095937599211826013828027536167714634610749923083443278572078026871812469079060633677096037053974280521689349022693979242065', '2.592701578783037181466698143885146669128411307594485136303860886846006143235135122817836647040961317262173311873893155e+117'); + T('96.04335877730532081621787788158383111099350287030581038188446699532128180774027960706578', '19731419380883276630592147059117156462461951865864609673166.4479371059569659447212290002838890816175493435199181043231716596224989574671224595362826', '96.04335877730532081621787788158383111099350287030581038188446699532128180774027960706578'); + T('325023114939529014657978169628372760601480839073817238211782426113558723164836055970989007713696933704', '106223840476390782472173917090144170488887005908229635819404889799358852135763.040387492', '1.05150216674283695595324235267625323135707751092953285615150305395692443496735212656796e+77'); + T('-0.00000000000000033647992217979179179186957', '-0.00000000000000000003156150266634952697310752', '-2.74225383948473157029928e-21'); + T('67711097909563003399071203293654909244735459519561246144664768566612029202546308760389038038790661412078936611567061527752843866673871533', '0.0000000250914595238219383127319568059987481594970145735261435136883603429568', '1.1931039593784471503157310210681907892950978516052505236994695043296e-8'); + T('942307044555108835920493820461160734540503253601173239.92559776036964181595894387449189836528222244015903442453788542293705358104537', '-341315427404722210577937787468731.95', '4.792118403841194654638154768215812559776036964181595894387449189836528222244015903442453788542293705358104537e+31'); + T('-94130661760152187286400649382778774100247360104073487553172289492592909079685814047724040987.545360', '582.270609307311781203990506333968732999092917722', '-429.29359293653441023844377749905124203115916886'); + T('3313638785820621590180176562638.00992668522579291400041235393589181972606810182197653338554677836315505146', '90527335216395767852035210539.14', '5.465471803037394750690898322896992668522579291400041235393589181972606810182197653338554677836315505146e+28'); + T('-0.306955389372676043580907106603221153651127238512560719', '66.904579801977727781298', '-0.306955389372676043580907106603221153651127238512560719'); + T('141390900187450346.4446228025914244', '-255850256279441962530367023331027625163686895444551579538905939296353570502455036176395785785059148507467346341628419844281564795408561', '141390900187450346.4446228025914244'); + T('-31281694978574998092.32325767151', '-1542462855.73276869937293894166028800355184049470473', '-519767223.60416992161136296357867627633975428783569'); + T('0.00000000465065764192519767209223768411174160970559048882576195807880851927339930867660413363177803', '695983282190820825900286910552083743912340874031142607911981006600892487992712378.27501435873441215408642204715421306049', '4.65065764192519767209223768411174160970559048882576195807880851927339930867660413363177803e-9'); + T('0.000002299699', '105', '0.000002299699'); + T('-751157538.56375056723760379542086174039490718435868835658852', '-0.000000281235130627575144572363209737439923', '-2.4952865744315606513538295859410866335658852e-7'); + T('-1492151820229229.7080972636031810741838557504286290118227845200639080208767965213313891261997405771908981', '518534900915966328248424169467.8926376495890764066267652', '-1492151820229229.7080972636031810741838557504286290118227845200639080208767965213313891261997405771908981'); + T('477573736732380117689005270695410306243996300502014352674644518059825662478485969426161545468188704450446835856', '-44107433160804154887771872206618010747863690779283512394813143542934429409262133052168377457307.7801829320544', '4.26587795612760356325706643922768450442822164299827765862986444105362242670998534111196655345782505509351168e+94'); + T('-1708419546267714621908304198526.86627770247445328880', '-6561936.23828726436959004970934079513865615878124751998092886724055429258975571944079950471550813589210381712752008129366876', '-3255473.411304257056507423459569857877329230063250469248244750150261213529383645499126139366386431281819493395691345793149'); + T('0.0000000000000004527321152996104608068898547927166509996670208320178171898523653701667544358478578289218730097763063669131852', '0.000000000000011707656496202100248575019665652640050450842478555351860415163190039866', '4.527321152996104608068898547927166509996670208320178171898523653701667544358478578289218730097763063669131852e-16'); + T('-404484', '-85217.71121979405', '-63613.1551208238'); + T('-18533', '8494505138020021210045546239850616033745106209211751083199296574492725741699134845133691829140.5819', '-18533'); + T('14584780882835094104107586638253636777793348510840823526783209012506801757754406089008052927648564160645244670', '-21080989782.41894706651964371557621722316246417', '17111578889.18009353060098900510442621989297665'); + T('-18850349239022849269493437768828110069.075', '-266968030820801670345292489489385463532596835667614989691512484830998922088460557950927724249457393516001647830350289181903170.7820256518', '-1.8850349239022849269493437768828110069075e+37'); + T('-19610683914857783540233383.2728721254117951549911093483423563874335264906700610318012707642300033397357755301605728080', '-13420179588.2352455625807856166075321914322366264262368350508886102902970310625894710130400', '-7601279880.505746566871435903625090660503811218236450145616817130204180995181500543203615530160572808'); + T('-124398303.94329995879106090298579425682430326155902347006975479300049695495574497472662209495203134041033423161', '-37909502210888557786693637049239639643429705500565493503854388407978303534883740337011543195819593982677420420894837793713.5474583522280847996415528834', '-124398303.94329995879106090298579425682430326155902347006975479300049695495574497472662209495203134041033423161'); + T('-481349016.43741541655560095983436187596328463184925547241485317034574087191806756468994011864', '-0.000000115888750399354267961415724244044331087', '-8.505867489584104076963971731986268339341485317034574087191806756468994011864e-8'); + T('4253613611868.577209622157479284930905750102791384', '-43984324685835869000303697875967.082217047029855677646732359601172199279', '4253613611868.577209622157479284930905750102791384'); + T('-121720240860962699516920276862045784990182862', '1391.961143', '-606.43001'); + T('-536976703647420516808876195121833670717045212754909788504401613131.09832340493070', '-0.19', '-0.1083234049307'); + T('-153530020474096871971881884794986454397802757290849940749180641455669', '17505687549970976977562427455563558027158236049114219594525022835524956857408951202033619176205709302677596086790722061676556549481353529948', '-1.53530020474096871971881884794986454397802757290849940749180641455669e+68'); + T('-68463793074671329', '526225751933655101274278816933572067012685551994.60347692993', '-68463793074671329'); + T('928', '-0.0265270808592803498688377952309584753581754116559858632164273181218506763174144086', '0.0031302997955205384474094353796565449495740386465470997231301432977903878917439462'); + T('-5145804390488853836236431219.38753169290767614', '-644164778290743967724692154273953884635573804098220159016', '-5.14580439048885383623643121938753169290767614e+27'); + T('-48662.5540827771318125347572899275647466291424610808453885768596532572841012738459644479349273928355994065901331259154173718078854995422986659565794', '30351303292454515546174815773976.50499295966113', '-48662.5540827771318125347572899275647466291424610808453885768596532572841012738459644479349273928355994065901331259154173718078854995422986659565794'); + T('-3764151.657035364928443897184118536717270878944518929297476941743265064271975725529716777507698244379183234036', '0.00000000000000092398996106085832046054510220753163692327079109794497033611990981439273055580421698549040809961268572', '-1.1361392097591721210516136641195398063669177345191861811669379578999595682832164502803562581741006244e-16'); + T('-4.9187386', '-65979133267007831443913.4285', '-4.9187386'); + T('-2941173670207131755888751957586931136097649817241', '-0.0000004814846478935692967474817070197814917779433964', '-4.143231488767554469914989546635670710760768348e-7'); + T('504086121738234114557048964595466438854236194.1238871658511576861524800891', '0.00000000129609070', '6.848482861524800891e-10'); + T('195880.545202875997253', '0.0000000000629389391841695155107474938177568932398308312865', '6.2576456087309632014641966027161174341134495538e-11'); + T('177588678283865131748445.20341144781962491999105521', '17633411549371694148601456488804240695997368248839673881068256513149766988205700935004.46173570', '1.7758867828386513174844520341144781962491999105521e+23'); + T('2996061752747054491320141560401547784315542844732729476182822177717526975778111415770939188808229.09633410131208348150766825247507152776287', '-16624186814169509834280278960.382105391846684300669229217099456249591810668575643552119700009655524933947866332356', '1.814501977947587086559582750402803833652237808310528352266882376452699987265363325517337507007541497009363881064e+27'); + T('-0.00000000323462065679722578298211032318052426076792102642153162888985566640317479966266628791447782540983746324805874876', '-9760478555851830779132259667610197027614293415305346099207953950643351758497122945313648929352', '-3.23462065679722578298211032318052426076792102642153162888985566640317479966266628791447782540983746324805874876e-9'); + T('-4425946782408559872230702296548525017691907874768090.842721989595157930188728939976', '-20910144556974972002031925667197905782.3842669103600658807854243828908705698618611597944713721513', '-8.1174842407036734952567527185747399937378885936959608945880838786170489622477090755781556136846e+36'); + T('-0.0000000915636502802479794654280073153529001575316015250756659772393754338719833895732465666755842320466463187168294526995626879755559065', '-3893976987070430373575695657419905796411.063325237201233825164129403122912495195291694115473863', '-9.15636502802479794654280073153529001575316015250756659772393754338719833895732465666755842320466463187168294526995626879755559065e-8'); + T('-1361794.7698127968', '62068.38928754185504150471180387153', '-58358.59477441784412840105211869787'); + T('56946343438026239453088.035469510090959501909086942675972', '0.00000000000175389432812412891469059096827552600092473688468378873071', '9.3971542153953297729457229138638683477757090580201369713e-13'); + T('-216423551430826376828740104992259241726966617148112640804095596112778449.41524', '0.4617285434914380589707413098498642094246733418452292890078428014343835392766', '-0.405084120420214123348047058484819751957998976642922377415700300110247041758'); + T('-609540688948287254916667914127779172583532177977109039873.52', '59942.85701', '-2421.80657'); + T('209146818192414024940477485662106872447921248923844.06942710', '194887998177776027858422538823791035671522302666816586057503286336727561981.277418658314883331800489638082180', '2.091468181924140249404774856621068724479212489238440694271e+50'); + T('-0.000000000383471293733892695539029352514599525885254801315847674728451500273625909999928055692998459043656614805973747464908442983325518554611862099', '1436914643087593231998188537.43007915688640422462805553206387040332979752282514782607648003897995312517526015858941762085280', '-3.83471293733892695539029352514599525885254801315847674728451500273625909999928055692998459043656614805973747464908442983325518554611862099e-10'); + T('10973736.04887910157362615080', '-1914749385959783542863340891438235602833614861656892143731096463693925359032389835949786237963580576640993170', '10973736.0488791015736261508'); + T('760745776921863883695925202158755621973717376920162944676687742379357095109520213981477435495396177945964651.782946554742559101819380914', '-69587305864702662068384544.416103380560483738456', '5.8598017452652424661892011091840662374011392595380914e+25'); + T('16517561.49886168205217694542953018253109738947136601119171501851647671572730355', '884446285891886647986941885828001196309147.2792', '16517561.49886168205217694542953018253109738947136601119171501851647671572730355'); + T('-126432585406331428026504773834234402700464127021090.294922390288914827690266641336640485828519895540001279706441657289346676025896', '-93341638437704.72913174198140578585969178589732172645484624397170924423918151900900579966645769211771726282849407857845312304820605914315', '-75654522250027.80364908433251628732320633450589708873254066633079438869841763142004458404461623673413329149660061709636674643820441363495'); + T('14047.80', '-231827244539352913982806428147776204855673320603750218551746829240475.071834413853548835', '14047.8'); + T('765290437.4274705525375273645201254509124811109914652423385744196687082906715458538518828538063', '-170265424568071609492595764439416049305779878526025255248414508', '765290437.4274705525375273645201254509124811109914652423385744196687082906715458538518828538063'); + T('3311720.61', '-404471983513006673196933.1466618881459376508409282781068373319987742328030853185755897212344359', '3311720.61'); + T('45991089210393111564308702224024179778983272166206394790320.6444639679813430135956296', '221492062325759306969421300129294571085950901905658970894066426987989464689596714996882711.33527373477304903881568245457206872272357', '4.59910892103931115643087022240241797789832721662063947903206444639679813430135956296e+58'); + T('-2676337743.2669218950557047383697749234730579636349195010443938930301809798701005736724197628525', '-0.0000000050641988267157160357685504958602', '-3.7830662640990149837887633696455195010443938930301809798701005736724197628525e-9'); + T('-0.00000000380228587817867341197616338523104640068872756692679613177059750823089', '-4137484037122167456128781504273195141726445714.987850478841723411486102808695385497342585068965', '-3.80228587817867341197616338523104640068872756692679613177059750823089e-9'); + T('17754236857117435132308613993859837766610271655972290799038080', '1704833941929076220640814071735309403232964483307878895509518095943568281423168227984718596.14467827501524520840433884710', '1.775423685711743513230861399385983776661027165597229079903808e+61'); + T('10027836760407284995344.880831', '-3855354419049536789489248488666738929318752483890215632137859537808426365760274903064967999211093775524598713395085010.359171925318425848171423905809', '1.0027836760407284995344880831e+22'); + T('22202026217695996204973556985884720436842373263831402061744953156987742182762967091937136', '43185871335981070591623795158076323942623952636793.0437867028967265139844569485433664719704674775842634206503820291927569963965227634755940752', '3.26504703695283949129971347692208384440451033569938192969127171775632235348169726099152160569117154517580009333832314710480195174528249498288e+49'); + T('0.0000000000000002128976517031894937726394149810371372904281093627057948171053965578050857567259999271356289456690', '1638227219164.830694905159101117562037676449467894880755446732079715327877', '2.12897651703189493772639414981037137290428109362705794817105396557805085756725999927135628945669e-16'); + T('4814208595346449.043008706195329135991290736899', '-42226706042290308331808643328.1624582074527758568288134403184705773169740487518531767292082378956608507002902325', '4814208595346449.043008706195329135991290736899'); + T('3038935470646078516363834582672813654955.584857107298587208166650999390267178660250688913496749522905532796141150317042799346138826323656895204692822688', '141878380568380505848720966069502343909172636', '3.038935470646078516363834582672813654955584857107298587208166650999390267178660250688913496749522905532796141150317042799346138826323656895204692822688e+39'); + T('-6169003413317472256185593952980507739590492599058739528722582082779602743497784.3427049376611779107', '-31.42072280707122325885993720075056590730611405102283453158861014159701198218841889427', '-22.19776446374536431053795008714160003252266054630255634003844573319866809719521193069'); + T('-0.000024509540379901693081094681822253648979115777140798043255679480624', '-0.0000760', '-0.000024509540379901693081094681822253648979115777140798043255679480624'); + T('724279904087095753394226280693707412319943662527127531541790583722341314962022986924003081613987164108631904455425855235377854', '6273776855104234371654058867999.169516300774', '1.476368318259034422871338396645233240954186e+30'); + T('-18588676215231158085.946211173603363600678120130466593615153207303801832898083927420536813131520643032959684506944922819431821478386072330111143921503', '2387112710.1232817341660077099628961860306411347682458219818878317649399403544141963545255184471115705860288103752677826329794816', '-1517183187.470515201152916387886061279636026354398496623478118729449319473763829860908182395451873749194364531069367833125880637311143921503'); + T('0.0000000131867789180977263531745735221989806107871520141527201347496177906746916558678489315586403635471727664914100888', '-0.000000000000114689475499172124081924590658780042763626380186641948', '1.24041539138704830479374337688539109180730530022376056177906746916558678489315586403635471727664914100888e-14'); + T('4311427478.283637806857955975409340894341757614838371194103474257204535', '-649782518102516258848559576865098567584081840293172629619735846503681807002436279687009986', '4311427478.283637806857955975409340894341757614838371194103474257204535'); + T('1084223088975587942008961639610672564432452165063129695399364194.7724214344063983401791208462284827932750', '-84781318440.755680735460810732984305718976302629343574203', '76961803391.186713545521492205652920042921934475118638462'); + T('-0.000000061', '8786983807198223058379063246618879186867662783902087862998860315406531227728533477069121826634550907069994890047651666829499803810', '-6.1e-8'); + T('100528259107227.081922566140125579756940512053795436712849097175289286237932581152', '942713200517839530382833024395280742818911844807588995366076616161481.3198459965316435128156454232997381607367702732751935460', '100528259107227.081922566140125579756940512053795436712849097175289286237932581152'); + T('-27531354435.67909536742252514929056355009540359368305025535772692824010557599100912735927621003', '11000389644039856717798395867260.389464825121873765842743496221295063610909330014396388749003477966675244072', '-27531354435.67909536742252514929056355009540359368305025535772692824010557599100912735927621003'); + T('1241134823.82242025576415', '-2436983229830352502914812262238245631.638630950318028', '1241134823.82242025576415'); + T('-144010855465.52294929635059866397929363679648857972113703', '-0.000000000000000000016080987773993260753935707240', '-1.063553116788584594723506728e-20'); + T('-0.00004038256977505864160533312084023171599294433697748308177067704771939462', '-2155348555606824361074827496727023440.727544202034420464676729642053697349860774140137856318160073308875496365295680765947736972447496259', '-0.00004038256977505864160533312084023171599294433697748308177067704771939462'); + T('562656152020791212164121284176482277264519513933510410360247916921555.021006097720457824068898265551508', '269214854076690329599299119058534607707434613306556247775662477434328445134773154913640995897232700833.3509809427607', '5.62656152020791212164121284176482277264519513933510410360247916921555021006097720457824068898265551508e+68'); + T('-0.00000000538631554992448118188735718881805592894263653000803275203171961114344766766783936939408658883502898545560241278071', '0.00000000000052', '-1.5554992448118188735718881805592894263653000803275203171961114344766766783936939408658883502898545560241278071e-13'); + T('-420165011302009959726745508121475336218614630482602804564105573952263470925277981868876777955931.586980555730131401861', '-0.00000002570711692260590889431201869485340369724462830564055937185895849465134', '-1.195661613348988387547281332958532992374725080459688873047446880846196e-8'); + T('206614495821030856258957814325343392659221587476465034962662750862453963123443714469071555929832788665781745529.367727', '-0.0000000001661160112583532898587677052979754226652657040117961034695013256023840810657258489771022699005804343245729475750048', '1.0429548835437312814921716318665620042989758877917059041179013022218706823693124370915675661873453951861654108688e-11'); + T('2.129629456244559693351889093283039010248199571059181269533286862278672114837554726244186016512512923248786195784306579695279176870950', '167942663220994525565277036378341943077.97', '2.12962945624455969335188909328303901024819957105918126953328686227867211483755472624418601651251292324878619578430657969527917687095'); + T('12176138559764154534976504354019977304742047856939022090614225781269098414670923528582943.10977195914', '-583632504653.317910211697569945462945466919', '159535682461.909372767660403987685629831037'); + T('26801.70776', '-1839840489500540849073275119242455920755679371644846892291102931868727750660630725018122594847841701320602357870867176213530.54397', '26801.70776'); + T('-337515772588445810907775628658674617832446340456706715404089682413724911029602181006534947673106470310169888744481390287932929420452374671107329763', '747003702426526.08588776581732211783056883055836800674965151006190388206832049147104586571457728195327987825881461665724657243756841', '-447197560243704.27747928725749075767284852291932690545433431257640274850422177065998793355714235779800038252557174834517670442529162'); + T('0.00000006362058132140170298', '0.00000000000001458044816', '5.95243898298e-15'); + T('-3594215153876751761296964832202126901729901462252166973917215.57369585920992111877692697850590420143534264638009736180', '-0.00000000000535939139326835434743507032712041831099958079045601050357452232464286959087518022443128930720117303095792238065043970685201723040458303209993', '-1.06066578271026895852431656785059635221975944055981884000221087847830772261936494977835528139047391689269307714517916852256490493941403060644e-12'); + T('0.03040477493704564561379391504523657646163165', '-3829968110375376699653656403680127708.96', '0.03040477493704564561379391504523657646163165'); + T('143839023389620287917080598136939204834211679465632489449268587070547858891919951735433984918754860511172087386798608655301168386080537222501170274566', '0.000000000000000000050904519883269410714066625387981521860251471402534287519580544338323972447562512119520450981009639220992736058455654970440678522343564343711', '6.947705519998581358090053013911144054426549810249668609792468243672747095472094889504331332164049453364474197265004105580867309484110017621e-21'); + T('-358101998722704280658404123884651237259779040468133477835791002975414884911463470305794344', '339013470613986503939750434731451482.80428540724852964369292178705210529584067980487', '-9.197311229967124089066230086719075507485006197972684367837222888572478434033179797e+34'); + T('319046228556.957337976107234589381614513669506109842572986792638453', '25341573899216649823607289015612827072.54559124982886262122240971817339', '319046228556.957337976107234589381614513669506109842572986792638453'); + T('0.0000000000000000006665605465014236098898571199127258214891647138029333052871478626750277409', '9.2994763002872765347756456272', '6.665605465014236098898571199127258214891647138029333052871478626750277409e-19'); + T('-8597100765432', '1.4061930205430936722438880987030631627463886746451173645000969851082153846054399284881', '-0.7694289567800680544500753441563271099198878457218307264536433333802305802000687849826'); + T('-0.0000000000000000071063790240674330676736540699556204549815235157130766649', '-15261432741466337551829351259412618954339608783801902625.23542905091', '-7.1063790240674330676736540699556204549815235157130766649e-18'); + T('24597860958863607.704638609505578054232793927642701487793854676929560010244268672980', '1802481949139187718903504517799237488488797785109994700474213611312061877322390386.5344597552', '24597860958863607.70463860950557805423279392764270148779385467692956001024426867298'); + T('-844517336468436751756396415750.8694448224004606845713303248407308924369', '-6675658540060519673536104856700279546693289387521217726077810.838663278894308972962912969825', '-8.445173364684367517563964157508694448224004606845713303248407308924369e+29'); + T('297434395027988881726438857041249149217423028818746940800314053389411843447774222656867639852014201825402955.835636255767352939888666344841', '-1165785127343555259111383115954948069159135335071767276621771249681211270602118289526766642905999531428644272986091711103938455034315028421', '2.97434395027988881726438857041249149217423028818746940800314053389411843447774222656867639852014201825402955835636255767352939888666344841e+107'); + T('0.0000000000000004255616740012919799050699535141777230034734861498243296211362650503864808633010961169436418851564388251642437913320231793888336551754996718520300', '-1651576988821130188451193720811416856607234210129237.883909970833794549608325237454309557258670200886', '4.2556167400129197990506995351417772300347348614982432962113626505038648086330109611694364188515643882516424379133202317938883365517549967185203e-16'); + T('0.0000000044147096298613431712166079076764897780999854959248060119312935665040776072223628259716132024850399516711414810843280407052112788935682838888941697129', '-54936210850503.113414', '4.4147096298613431712166079076764897780999854959248060119312935665040776072223628259716132024850399516711414810843280407052112788935682838888941697129e-9'); + T('-0.4323857463176142463414675213681184495653706035704024732142', '0.0000000001609886172491629520941112538601281073954128848183360', '-8.6849995449369811756464752459042905872384200820824e-11'); + T('202209.7253876600644276744210492692', '-0.00000000000000000338892963079640180409274746855742569075588575425187261714270297603518981332021947785032402317811726294429963236196669448038', '2.48774060567808536908087435166803363667804416042024979495412690793460127819789298078609537589467861727739804721043627194686e-18'); + T('0.00000000000009465531808110383618357128551578926701934798401879351466017414251990316347221304454773710889175218068990694997919702598', '-15569690510391365108565127049060079732945584147892308249635814990299790974106289975322836618585675485711', '9.465531808110383618357128551578926701934798401879351466017414251990316347221304454773710889175218068990694997919702598e-14'); + T('-906454225978706010766508621855689367113309691338376322545315495042716078153614424771069415704594308824862632391131402393608738253280649702961.6641981', '11660199610678028374818731841856.7121334882150901542261870618813695156', '-7.528070467742355916798912382526137282899052453804150111657562206506e+30'); + T('-0.0000000000004101322450307718410872494863474574665562369115054909734079224620478881782969556316998111941117895920501524161853814989807532', '423210910279868701995463018234848119188756375891085182100812368574543773666', '-4.101322450307718410872494863474574665562369115054909734079224620478881782969556316998111941117895920501524161853814989807532e-13'); + T('-470158060793806640223969538148754202660458782.612615684822290245236803305653425956424810905330203916882572522005759948', '-0.152695767111052424631688337299212951189573836707404959632830139430511960774250914378066254704926391912654597758822835198889', '-0.073651654118155896924523703948320110247909645704509802452201735369382844041627083824661314684771341842243469753325238257779'); + T('9.994426780915974145347014135575893960205706681677054334376705730901774629743310179236', '-7', '2.994426780915974145347014135575893960205706681677054334376705730901774629743310179236'); + T('-39230663720925065911.709', '-0.0010728700907817921430794540906048057564326188014160081208465534724741317514197503024274778176377553223843602448853719066858744960609415784093590679', '-0.0001564596298149334550945778894989078903899810456404686403803445329346353151049500880628673488460793553585288642059251153644557695926708694554291526'); + T('-9075671784025800106573820389326423822119789380499', '438119.273000651189410948408459618402001563677344624063470699316786673102238473929433190146989564587119083078896154298057276810', '-78320.54798431882932621652203547903308024478004733552908568056196964210261306773644726193677870886973142528414057490679038002'); + T('1079464599531882583207284547902100846423694366679824675144404048.87000005666550200', '0.000000017634963780257411646578062463223304619646810432414929790810861732698710183011522017480097941669752799780304922650857504090532971627', '1.3442627394777667466341237152453278981336433385361428945890803207704744384963683817727469649088690273630173830384666866982410070125e-8'); + T('-1377931339724154311913175642590.56223327166804475379410759818086421', '-7343859629910618280997050209823875113651629358554', '-1.37793133972415431191317564259056223327166804475379410759818086421e+30'); + T('1802318417733734399696737845540821628492664765097395909955021748011122554913873397', '-8.79', '1.97'); + T('0.0020082022907469851361342734885482', '17100037717357489922255553618227047318529253455381725674352785.849074888', '0.0020082022907469851361342734885482'); + T('-0.000000000000000201309146027982061988473635139635744221112298825585606183375367564795322337419170860', '112.510399403346289716543031187076', '-2.0130914602798206198847363513963574422111229882558560618337536756479532233741917086e-16'); + T('5143252640334.9471010534789709623389109664', '-12505822857859299547007903357.4580719301', '5143252640334.9471010534789709623389109664'); + T('-310614518267845321018804317663129885461172347268277845899925992136506193955.6878276728370903441307046405502757962598225976', '828661056524342624928394882871650012268186140555930515187891793804915086043336905141599671004678775857.154200318917132520559533243825', '-3.106145182678453210188043176631298854611723472682778458999259921365061939556878276728370903441307046405502757962598225976e+74'); + T('-1929389822669343098632227827981105567.947555377437838103088250130930057647071898153543733069402740720937034698316740', '-307415836138079404706197455082684322873455098421189046955.7609473524278956753826621443402955422788867828551884929404606716804681', '-1.92938982266934309863222782798110556794755537743783810308825013093005764707189815354373306940274072093703469831674e+36'); + T('-11914253674.453144069362', '-0.00000000000000640136130420098419950776623218693603250164367282493846395409073044734225569347829418824701162864570620545495518155534050427613', '-4.8273343562972522020998663785108839173049437316343375965321326163190438505924066772178429290654069832627450922751727028332871e-16'); + T('-0.15173695389851714323653081625731481081839738235113367548743715930033221373451204809777430598802691008061', '-691161057878002558587.1381127439742482649867259644071300276564300364420601832039698998854339739003491064795364533103890488', '-0.15173695389851714323653081625731481081839738235113367548743715930033221373451204809777430598802691008061'); + T('-3838177724.07192160266376738721758615938561957533876517355792902066836939676750568185', '-117267768035354.5367107462355928310645', '-3838177724.07192160266376738721758615938561957533876517355792902066836939676750568185'); + T('47087514451451061936440267540468779859177214505564890370985541624177363716426632243202744881820164276529614848', '-1172054812668893105303.109439', '456515720116084107668.775007'); + T('11.3734955974031313554231883290508217719632632214092285252072004770873986564338', '0.0000000882199238947298298119767888364932094713663602767583773895510', '4.07724040263961106723900703199982684406983245152715796283133986564338e-8'); + T('113112144333915213154140879978802.056322513047654529205838659001489881104759568822806', '-1070387536549080109047458692952163930429421126062620116475206035463717082814252900889701717285876343686799120756181867129129332436.65606609657679300632', '1.13112144333915213154140879978802056322513047654529205838659001489881104759568822806e+32'); + T('3375429238215022669388.0525445329603537774437395034276346136375188392713458484753507732527974095303619960839673965312316444565719192307138736', '-15283720773236316823.1386624805243134789068589159295817320630835525511329', '13010668103032968297.5467988176113884179347779989196535597591372780221078484753507732527974095303619960839673965312316444565719192307138736'); + T('546144540025218603622035747267.184599682578', '-1960769463.9717088415363003312719807015447675844185997229455947383216237877444003008215006845488457016693384374828878563804', '444038342.3009350705462712125797459325898357133660731360753819139185958293625962717311560001031089517417729661706079253452'); + T('-9560649763280410877866958.6894727605272476369381283550793302379468448211577761', '-23461693036891534270.66763', '-9850747110662569899.4644727605272476369381283550793302379468448211577761'); + T('-7.556218606', '0.394476467282531274033012749331622902099878763812408645207952399507467807592020641605998980948602455345622981947021804677652524', '-0.061165727631905793372757762699164860102303487564235741048904409358111655751607809486019361976553348433163343006585711124602044'); + T('-58056996634143665360898635240765086115939487200129800582322012124896427026358562634.523876053912312753303154016822967233902154761507412776886982546', '-0.00000000000570977225444819760113544221498368980194767956186945188399903686296', '-2.45163677721343452196746595282018225334170521591501642928558451408e-12'); + T('18782896745334687682661478191340244563495.026805139784759687443039109825113018630522104252165496195754', '-9359445141829484597852388054639726608853279955027525490131658108964763122303352.11139858', '1.8782896745334687682661478191340244563495026805139784759687443039109825113018630522104252165496195754e+40'); + T('8', '3900985326526441441709979123557070376512415196847270644745821164883858274100930336537915531', '8'); + T('4.77286747468879908670114975931', '-3524175598424140013239.80796623070242774065271011395748053461', '4.77286747468879908670114975931'); + T('0.0000012222802813622598440592629347721226314717119700537496676757382132', '0.3110009405107017209802725018936257999673470989741925009496294357363888407985893667857735227882746384521443945285824197537397541092276675845639132411538', '0.0000012222802813622598440592629347721226314717119700537496676757382132'); + T('0.00000000000018384088619365879016178677544274849275468587911722905323257047268461042780866', '-74691051227281886487283380566166059678639451432198951288186231108115005924732001159134690543080138545.89943551', '1.8384088619365879016178677544274849275468587911722905323257047268461042780866e-13'); + T('-0.0000000000000000143373721383179309670662810405823454166842726925', '-4713427367869967855559206933578165851630208266683044', '-1.43373721383179309670662810405823454166842726925e-17'); + T('279088431668978817721818400435457144048964563707000478127542007364526390756155888729758450016626555984216682907494069.3863391561390029008', '183068579713138743128987913913465863438011702698993606515690229413.9450791032516285344867478204174704882799732', '1.15006278031659660278253789496724532897780093575043549889457711140788489320423312230736014908551612694280186e+65'); + T('-16267494087786592277827896738531922083730', '0.000000000000000000088706162618472944512399910698929840282305406666674993734458901273843764276', '-2.5909627800753460482545058108789409575362212803250623497766964477362719992e-20'); + T('-44.24084992', '68339625270.168878456952498', '-44.24084992'); + T('-56857196985399826069072678731164191368337062143007401708', '-592412264968673971778440741608484470265561140708351266072976205766765457328334968787621711087457877572916180459788168624044681603157772.513540649385856', '-5.6857196985399826069072678731164191368337062143007401708e+55'); + T('1104996654.18304259798965034573324286', '2510117408561620824893581029911555831891170476567955656689227848034987920.73715648491088584003908515877296524588851119764300771', '1104996654.18304259798965034573324286'); + T('48029.5677151', '39713342481092.2036831420612922', '48029.5677151'); + T('-2677.39369111834569676567245932', '-2034534263100368999018977132035007334300490999268060730506703.57', '-2677.39369111834569676567245932'); + T('6075972262973206757621791006694737099204289938612010291817208034207716598155036627342694635533302369062510053834294276312030673359251989177221', '-4216877637213071624668885955274710017470051201390436656203.3175514798774907157554310607394066223414256256857538268149428', '3.4548483050634980937680079005687259547830032613011978548019536253507542566475495763279403287594055753811530981533191188e+57'); + T('-39778415088348582474737099860821880822219551752035911412802038639306564534087888730860157447303578769441574808129741.7837578735678589361592672812', '-438147577016143338832668633949246668826241701286508135724906278119313424092726.09783913373814771620054174557624677579917', '-1.2108902975451343030038388997376413494545893581949027873931312889359460168754039828862401872164621816124117110545720507e+77'); + T('115429370.636804045497572883414508754301504446475', '0.000000000000058502293269352180410451175558983836676566315944378566117451162832925169472129608582', '4.904729335492343815789815485351399819289163720633876216160558528963863725402504712e-15'); + T('1866863299414485869402976070337638006397265759003452910.410739287460164932952655292210247956540858637537378190', '13247512825788295255972523418673482573223602517867812976052652428259865841176971399205990505517917171898503843932790970.39116746434798125080894456', '1.86686329941448586940297607033763800639726575900345291041073928746016493295265529221024795654085863753737819e+54'); + T('-7434850786753.20616600514461', '0.0000000001503863022082014768371050790030147497084483425232971401283357127842725596313687', '-1.119036084550700826530363097548971535460013328630270913936600073612544699109413e-10'); + T('-0.000000000000004381873159982123279917425506558261522812871473725919073758015893922809957534001480944265329307788953888508410293960888807232862971987255245464', '8109725899091573689402454319931.18350836066336534830831850485049011849459896265310046326036965005589194064300915126620', '-4.381873159982123279917425506558261522812871473725919073758015893922809957534001480944265329307788953888508410293960888807232862971987255245464e-15'); + T('73314226283.9570', '0.00000000000002960597549365951830985161616855027789228405534080693647514805969585779006342966275284091628479572363547635870715940487197244239361', '2.924235162215933531454887853805516514067221019818723756217344334797277757263190674533556736476951724389592416040236618857138094942e-14'); + T('1429287903385', '0.0000000000000000026227169585162217601788967257094420724372717782024286696197384612049185', '2.1241263611786451580084403357462126454870868777472160598748154573957925e-18'); + T('-1399843654872820025220110414591055060649943.5381869', '-233177597420892.6290391881528712', '-56301841991516.0574900024787824'); + T('0.00009781914227799259379359855012042142895087114611171661229344677069', '-21540700792390405728340.4941249102647270294567971', '0.00009781914227799259379359855012042142895087114611171661229344677069'); + T('-0.00000001302596750035354750648883838249600391852130416107', '-2.4', '-1.302596750035354750648883838249600391852130416107e-8'); + T('-2539711480375833.8787680706295245', '-10090855425.2645916699959021555055665745313421124618054996540701587614046326913632297741', '-4623523540.3888968219914182369822556536917671629446250650061622946364257069368775354156'); + T('7345.4230955739343601041285338890479611692071680966332935062378031079686398419251932', '10343720308772182919388574543611215023360174132529300268435042772499308507904636046339051573', '7345.4230955739343601041285338890479611692071680966332935062378031079686398419251932'); + T('532915932842606535532293569407035699330783484419226736382170882419377135.138557713281159484931821544535832004298377411148874', '0.000000000000000097120843870050544930766762870205724485889381952725697657146115928483473606129290764002', '1.71016654827126847483437088121564862848406256560494847328799197734413796459426367264e-18'); + T('2786090273650860122222172462282569662586653226066049425730478407697344778285269847718642316826852059959216286066975560496533.825834439051898', '-5380036545379490040214706947292642792370009348813692.063289320229799931446171213951400074916491', '1.781447213237295796176679883614734919384147627324841950220937474739207582830548622084657210704e+51'); + T('-716.7348911856148935007182289841612962001831614930661016798201260045476506309090856624487785381070365022326338215134362779468515437452558', '-0.0000000306560034406942657956579747805603108115582439761037677331584709683937577229617811570358119993112158520602288036719', '-2.19481002399560872732138539978666667251957992848584452120211572484597113365001309147957304008789361389740924421480515437452558e-8'); + T('-336717351299839216882509548843025942568273773003071.497660', '-0.0000000000000000031038145656560174696376744', '-2.2939638463514411725670632e-18'); + T('-0.00000000088871076289105659831158653574816303487230', '5925437964261078438361385421140', '-8.887107628910565983115865357481630348723e-10'); + T('0.48996271173862812059175117673224279978397098563975331374734405038121210035666997472343508724564255860333', '-981298146452103756333.6485476848759145496522568968470756059845109847612507162899799', '0.48996271173862812059175117673224279978397098563975331374734405038121210035666997472343508724564255860333'); + T('-0.00000000000018739622832508484881716365605238857842994033219621274071493422768019281918672926632721149273548760595828153562533317', '0.00000106753414191503143009924816334903', '-1.8739622832508484881716365605238857842994033219621274071493422768019281918672926632721149273548760595828153562533317e-13'); + T('-3724.961037270823216784122123949498899097506867404482079742878', '42728642472000954973441392924603786297505608884064716022000636585801915420974504713108514988096981528010203', '-3724.961037270823216784122123949498899097506867404482079742878'); + T('14978135246.4293498541153489397855384604096560034577747263780459028396569631858547180442863807949567', '828303155938367860166633696033166352096650401684421199987339292282009346446', '14978135246.4293498541153489397855384604096560034577747263780459028396569631858547180442863807949567'); + T('-0.047628555773786673881971100151948530011265912029463606745633469100975125377519599189', '528778913516649959178290334959803065311351416856125792866633653171089280622199248330023808917526801982365664091823181214120997718352635826074081634962', '-0.047628555773786673881971100151948530011265912029463606745633469100975125377519599189'); + T('-14939980526.554849200622465480029433340799030707', '-4277663.20464126532165338128222730657269719173360820748109791236846681210102912850976196526639900951364332750470003', '-2380615.94755069740885804249167878894043717324013947600609000931389214320628324391121728973465877835750035358749524'); + T('2254531950203810106512216769432345108091659826174197419189904121779.389571456070872185209145597270163484908459842159938150', '351324574544938907598852971025447067037136331.482475343426592007773285255333055388053662880975118962130456971569884230555', '3.8576251388287727477083730712363952890778696110331013414195946435626943548779101574535478551480436462182350780178784985e+43'); + T('-908518.75611434289871133928585849050982371141988492763900495559', '-2779194162891933223959992755504791535540247332661669041569801472568536678056446261493500597102205548860753869532010745212712506064454.783702', '-908518.75611434289871133928585849050982371141988492763900495559'); + T('-9751937701702146526197396852280722495497246508393405343698179859443679270762240734774756447384850662119283788899226828510395349600364', '0.0002072564098631731321614418369973126331436239029891982973755759590617485920152211028657689658898215', '-0.000065268138309116378751853481282714106859124860733683378586695149698540722854723270248930520518111'); + T('-57002171357681472900693.4729019652902136412209956798425272', '42968990107768657015543291491936311784108036470373857830494358', '-5.70021713576814729006934729019652902136412209956798425272e+22'); + T('-779.38806641', '-276143375215931856852117654482995176051154954022602259784790966214726724258520671956887000901811473384735495734582327432375381533', '-779.38806641'); + T('41533880399742218630278604056671763202881405110846632341263992670456086753127.62137428620211383152736798612114176', '-5742400619641926749269144425184140455944367080.9420632770462859801809027506509', '3.39721948198633333959235038541298988556228578133396634945632115085817616022404176e+45'); + T('-0.15640159643564267665063068794647422832178482162992118215600544420009053201945', '-172445117372769.48208', '-0.15640159643564267665063068794647422832178482162992118215600544420009053201945'); + T('-0.0112275442296349836418573333090591', '-2255922450411587809292229473263097797796627000972898359618569482413455833816036469768975961421349683187.94437348566944556679726583316945094', '-0.0112275442296349836418573333090591'); + T('-3368.00', '-345972426936711495192918207758303734495983755979074790217123728465.80047743465885662352027565018300048657834525845654295443495093971910868969090063171', '-3368'); + T('117.5750947029273379673675410632947676619639847307327388', '-70731203121207004885270875832693445747215727294572904020461929095227705068450.50513528539516122022720282675281', '117.5750947029273379673675410632947676619639847307327388'); + T('-138977748373044113.3788174734339534653', '-0.000000001480926486083', '-3.3086978011e-11'); + T('1179292018572.9841303121610809323250406574524443113684922518685441369442051369712691843553144676353714219768250', '0.0000000000000001266875917107419', '1.2238670441939944311368492251868544136944205136971269184355314467635371421976825e-17'); + T('-14538354899514474066263227062556630420353609726008', '2842.054050193988254028322928854402650042920389288352515795', '-787.841734262540552719016400749913558239542081451238833495'); + T('-515534361438701466202657012041091704270306493888955748464478928404889500948.6256180199199867611', '-0.000000000000000009203', '-8.732e-18'); + T('-0.00000000000000002436967040184567917080710249017189150294192', '537233794697555587617971898562122287499751326330104438900861362285369159209579.20894448555179628336166706113083738', '-2.436967040184567917080710249017189150294192e-17'); + T('-10973344995231896444164895312752280156537575740345780145078213554021817209401278502799260096810348280045597821463610756008906936006453379225098199184', '66541527624892473810370053621624002938324370658164532933374927090501743364535993599537688484603548966183655370713388789701765327723856591.969224975', '-1.450342823427219830229311998566498376289753623139511311534558115476690478306521429471030288042940332558759442503472209827991313811102369736966505e+136'); + T('-0.4316267645066591176857475783149345786635888459807302418058772908006064030240231203951076853432363297761508', '-55028014026.1557830721022778741606190299296', '-0.4316267645066591176857475783149345786635888459807302418058772908006064030240231203951076853432363297761508'); + T('-2909306841301704095060647742525040306501994081937165245987916403783220066141979481349904813308176225805597723367483244491162516969865072625547738', '-4233.78204828611709673177663912398115727530134420059828072548075540672034293877636097492224160666425080181579999527423978551885309647443462307117921121', '-988.81224272086075541367603049719895260811349125347394416104634518954247717715773679094698039335395189402484412782423394374527794816743393185901317177'); + T('-6548887805272011465.323257524030453759629949332296153558585801121085431308130680538770399260078998930389034743598626100088171804960350705360197054', '-12080564112679438322760485786027548072559769334761890502356163626145033668765598657336384176583391733506824623', '-6548887805272011465.323257524030453759629949332296153558585801121085431308130680538770399260078998930389034743598626100088171804960350705360197054'); + T('-17825205605614995267760724571708651253966055640698821354906323632546554721347699817715902863307436433504779452592432809608477.333181451786', '30680736166916309201884925906.6012446662423515442058844013145290522721220129756414013822170839078121709611675310', '-1.476583352405265718076287125956418384435618608746712341181884632993097339340803769809278074193221038608038868e+28'); + T('0.00000000912468064832360078329428188145559810429725609376050682286774993859391174656196966186924848665919094718780', '21914190263.100035808759435146366532139123334498047338566', '9.1246806483236007832942818814555981042972560937605068228677499385939117465619696618692484866591909471878e-9'); + T('-20606794163218373220385623629829988033.57174497128', '0.0000000000000921595473430223940199410848478707835684064295358119717430281404961143732177360181223932368247886620954', '-8.55963065519011748284526920363755341557853021589815372874944759648859916695380966744766940378956445724e-14'); + T('-0.00116515061047312393907595074853372157514235898351272755761457983036507134829330366786074496438528935230083275916775473045004', '-410007620964954722625074616747232948064935562193648550794528374214082044.695992770579155345699714674119972463090345', '-0.00116515061047312393907595074853372157514235898351272755761457983036507134829330366786074496438528935230083275916775473045004'); + T('0.000000000000000002866262471198013003247450550898087733157498823752490067442065500489968029757441844010991443903735220764', '-2387063555802958241360682309588269568721119805287196269429670036507643298607.716703434577233592987993414932', '2.866262471198013003247450550898087733157498823752490067442065500489968029757441844010991443903735220764e-18'); + T('383137082334366134473626747321368129198523267298422116111379309501154', '7792834478569981342900412293473610112927620218475883827152315031697511988080100013693178713319824297431492360416857', '3.83137082334366134473626747321368129198523267298422116111379309501154e+68'); + T('-5192609399231404787818967904763339039804702106.2642098584571392384864215', '11995.0', '-8751.2642098584571392384864215'); + T('0.0001613753330983460459597', '1343718759722202811633465441653970587609134570741564553699639538938957247416670787866631449', '0.0001613753330983460459597'); + T('18625.82', '-108460234364121807955833.501117158', '18625.82'); + T('0.0000000086960654123918299935978162138867774634877845457981404751377524026363658271257851070628323331401981944601936516808916534072490865752', '8049043891570.20498300587421', '8.6960654123918299935978162138867774634877845457981404751377524026363658271257851070628323331401981944601936516808916534072490865752e-9'); + T('92177258893168796369930099881793244231828885.994885469150932397211053118484704286168', '0.001697557910838632235527648236671741804284351643458802110983125809001092966432046553593908808466256476', '0.001048051559814391786998156983752684121311392378515748632423171613713154633150574252483089353288542512'); + T('0.000000000000000000135340591193604907157819487179265603170243663378275824462740462', '-3538552385863005446402997819693840644728948859866382289131015243925156152538296009253.88595397921380748370626209756254143', '1.35340591193604907157819487179265603170243663378275824462740462e-19'); + T('-8942810941342318692131683034298222491.298966162751297487298160818082351741848617', '81468788300903008016446735094927250.9025421163811657618870083563515329169085218713537560955357573689069255755678460294064978585998748322865700882101945', '-6.27130165438908183389889089511521429218754772042294416142499757652637988197330224405855866024467891451122631047827946917334126136432807638603850887995e+34'); + T('4112.5', '16501231733092448026854714811537782791022.61367458788581352140616404436355216872103784298148436462627878442916700470', '4112.5'); + T('-0.000000000000000100039272920978804953224514434658947574659086841906774034035770202605930568482069278916', '8360130279092670037383877853101379752066508243.7914548725194425829919568', '-1.00039272920978804953224514434658947574659086841906774034035770202605930568482069278916e-16'); + T('-0.55733808633010832738832311322243', '-30341809.7768885100044771345', '-0.55733808633010832738832311322243'); + T('106317245251707976645199.36121706418143436338271', '-0.59881135427287180381497846634181133656689910033999166', '0.32560278164243629083243463276569802027691289241346654'); + T('-5809879419309871900248097028036783697200487662.72078280568345188008643358457456973', '97479961515864803630625758944755018442629963763620', '-5.80987941930987190024809702803678369720048766272078280568345188008643358457456973e+45'); + T('-0.0000002582736304792493854476455750807714448789871391914969265606245281578616804637963665810949001173698932167004137735325550552542025992276', '121930479865943189690176599713519584015951299852971842228.150293808603', '-2.582736304792493854476455750807714448789871391914969265606245281578616804637963665810949001173698932167004137735325550552542025992276e-7'); + T('-141', '-1.290460', '-0.33986'); + T('-1672922546593.31971778277173', '-24004744487670982178071549599909616293578410420429907254240481309690669724949467538663.43257166059', '-1672922546593.31971778277173'); + T('-0.000000000000000000096506747661828537633255606033313182920993286310754098242241527192506663129986680230116508640760013474440576093964790427764', '-0.00000010591032418873774305782488821422031008159269224396547763341455910365931704698604755331650104205032352591665834970710247264938146932851', '-9.6506747661828537633255606033313182920993286310754098242241527192506663129986680230116508640760013474440576093964790427764e-20'); + T('-13827401304111289312736198643718536550239860723009716248160536677', '-0.0000039286228820013610690203711803131600098718683633', '-0.0000018687648571863700673078239442130544157030166194'); + T('-42.4692049472839584484885223292994575479989813667615626032513742843562250259364746786558133445767723482540247', '-0.00000000000000000819275717705512539909834846743982191143678579675280080605996356880686842267', '-6.4653951124095444397419580073920159575587091030342708998343881853687266199867723482540247e-18'); + T('-2466733580603659963575534598558841787749140591761688146584246949860119069729862200150585805915812920870610199177565657789103756293844601451975927', '0.00000000000000000001220964545466869353977', '-1.73255416774937445048e-21'); + T('-15028378815304663676509006037945962004972477648490101799915638280371939420560.0041911393147636614007445', '50622452443346007758014952215939952642084376096904097662205047592117731694004927204947361193840079003397393315495612132043954828016869740815677950', '-1.50283788153046636765090060379459620049724776484901017999156382803719394205600041911393147636614007445e+76'); + T('142588144195311580010051.5364511066747054069508651215066362734114680562635989353532168705092760233791521149157821867553492562330410494546864139650', '-14503165820788.7989118526503493452200602820958797693990568472997380353527541143720627492477025', '2915050714654.819054833603896590465362673501332752905041274459514111791099261470796120059809614915782186755349256233041049454686413965'); + T('-969615612019600562266997847', '0.000000191644650609545820597008991399827106864514006', '-1.231577096546224847608911542095213749611614e-7'); + T('2256513056638995361107016553105302955081979298952482814125065516118737356068145.82', '-158065108111543929811518473313411.60992867508424058272054757815774769019280374359986010771', '1.2747118706198757060172327002063737680496619401702267612146633003684640606557668930745563e+32'); + T('0.0000000009237134280775239488177645583957175262248471518379247948959', '-0.0000000000000001658030328961634', '2.71610961190711645583957175262248471518379247948959e-17'); + T('-29037971633171746964110337225165989562263266513890039145139101509478815612783351650243947553265889073155208935272292022915303266220845856601847833', '0.0002291490081859774827', '-0.0000175625699645664842'); + T('-7419630363912248895351350605409627746954992624899840002172405589436855414.53245142763', '548.8847974769155367539649264103154853090755290', '-311.331663008566145443936338341729777410460137'); + T('-31531682519443763389714.61342909941642731349791408998579283062988631957213607', '-0.0049509892638980905715921538869775154076564720153', '-0.00240704556517700786995420557935621901418625076453607'); + T('10.199939958363750394845392764', '-938958758058.7364', '10.199939958363750394845392764'); + T('0.00000000000000000547428861001874500', '8542.618867822931747906923388', '5.474288610018745e-18'); + T('0.00000000000605257123060057047947264779334280422324573184783056036871244530739641764616333500517830537807440912208', '-7720892347085081968920717984388501900819875846611343246381710158287747831369369498946504999.69677595776775728276345177652950285580722556865359060', '6.05257123060057047947264779334280422324573184783056036871244530739641764616333500517830537807440912208e-12'); + T('5197872005452089687845492226606310126958533004786.01262820209011362035440472786789414494121891863808333760222524857381721029192192394837170796', '-1553107578156990684479674739994879909980690781747809215157294762487391417358259.146954264798337814197978', '5.19787200545208968784549222660631012695853300478601262820209011362035440472786789414494121891863808333760222524857381721029192192394837170796e+48'); + T('-0.000010459044875719686467201064277204760401116231048766758416108501254604582446941866638877706771900478867008604302', '4570483969034967530134798231269839607555086988204402691978.0846842677197598069225306405016', '-0.000010459044875719686467201064277204760401116231048766758416108501254604582446941866638877706771900478867008604302'); + T('34950082865877722140999896945527676095434244644489049.47442671960077158711230616940136639915609220577207968', '379002403.050778311803417819043114867', '283625356.05019950260262830045876010540136639915609220577207968'); + T('-0.0031090306995447730433562939728182473162977550600870500009238934708225472008899875393691975288926245842294981202786862852967148112', '-179021575013512153729485967283056990.1980994548847179904114211031571610186752960630950031860150656109870473715205099194325984', '-0.0031090306995447730433562939728182473162977550600870500009238934708225472008899875393691975288926245842294981202786862852967148112'); + T('350213646089009419745026624604797595763993333334620301840610383877418878521099968820864105567.6181312666', '0.00000324117432025964624180746008701209658337644053764142142257723637790781637027233123642211394947389418444055224', '5.7055181542801922990712697286936826369136399715709266248399293604043992259309658307682824893308496146676808e-7'); + T('3328107.8494', '418714348020467109958856616981538014194347311895744037569297648600727758725623', '3328107.8494'); + T('-551844215309008408275168733.623176966939595953994851048267562459636894172209764669184645704359671910176962904921966067381393678263185580431892958828100', '52489.2323', '-38379.2058769669395959539948510482675624596368941722097646691846457043596719101769629049219660673813936782631855804318929588281'); + T('-9161822288156514844155956374210640490022366908510', '1389019572848235000704785709077750964197706899388709294785368095533089044973589', '-9.16182228815651484415595637421064049002236690851e+48'); + T('91056139545088458766054934573084198168.5710642286038189576393294864960', '-4517685791348280307925690612882502300237833708968552977972888084474038473.394339218360256523962637702858180915401362080730', '9.1056139545088458766054934573084198168571064228603818957639329486496e+37'); + T('390029336502365918513931.130015474228581793566056937195029617483963133928361072920643966836693549318455838606', '-677948403080048563372.836374', '209004731337994574550.214965474228581793566056937195029617483963133928361072920643966836693549318455838606'); + T('-402587804331.52384475209667561672439292038632064986705375834023160394', '22953293360768232064948813431816046275755734572489568108170437942795164066617787530406717846925329560915859870010112631465336783868468156816495', '-402587804331.52384475209667561672439292038632064986705375834023160394'); + T('-625315195115297944213401252771807597994808320636040980', '1245525668172581544516010393636352381040839194590487646892457620457541581549954855850913555273127518858.5699453665074315653164442153272409410', '-6.2531519511529794421340125277180759799480832063604098e+53'); + T('0.00000000000000000106014797651953270761670971091554825136816009688246397263410062266680994943', '-2837919311814592501835.894615149733052873373862623419869', '1.06014797651953270761670971091554825136816009688246397263410062266680994943e-18'); + T('237381233514476032201357341.4041', '-0.065815324672679848778208005159859', '0.049044652806221841033273417056172'); + T('-0.0000000000000005144544006903982929329271186335022979326957607423453760483024388746093708635051243834072032', '53859.824448316', '-5.144544006903982929329271186335022979326957607423453760483024388746093708635051243834072032e-16'); + T('9.465307046802752058394916832226320349420927855272418', '3177012152819988337055628473453787701666615', '9.465307046802752058394916832226320349420927855272418'); + T('9573738794726021107.734106032', '-185794949125622556219134912729610938207753649877619366539537127820541141774242915', '9573738794726021107.734106032'); + T('-234.492043915944790198500267399199969588539805', '-0.0000000000000000070050048053389237694672406069762', '-1.7957735143268502710881087411774e-18'); + T('257434448562147186372612642412.726354747500293136781463967693646812824724851090463016', '10376593029095719663406559308.704088391790279215064412899034913970170280677326597734060879629830748435773301327', '8.396215863849914450855219003828233344533591975235554390855711528737988595252117398538888884062037541440768152e+27'); + T('12285490012463121838351929674277761291240995729813968431132385721778827202446854153384062524345407227973315579239229493694920.48275614705', '-197015608939.8609489308', '196270462249.41659606705'); + T('0.000000000002240974449242592254790173835564041606148621842662292012652507440629547097709122038267701655839515607132861720217869106265565545', '-23335987271047953972812286009148867302941199929709819822218.47662872390777570098607457661024567895703928912305401676859', '2.240974449242592254790173835564041606148621842662292012652507440629547097709122038267701655839515607132861720217869106265565545e-12'); + T('165366904096962525782012054078987504568761069721.4060389256731697873983611830230858921671529412698579846557699', '3444399121879479169341765797909079931147798377878056422577985615184975145614404658705092317852628448.8200951', '1.653669040969625257820120540789875045687610697214060389256731697873983611830230858921671529412698579846557699e+47'); + T('2705886232366102755195760426990938611198454960222419636993746631582409715337015469937064177880977434.52524166361088019858326697993', '-153335210993719572189122942382836225292613994436997443668536033261124985431110232311472271345055289442071134321117800654483720838841', '2.70588623236610275519576042699093861119845496022241963699374663158240971533701546993706417788097743452524166361088019858326697993e+99'); + T('-2.131', '81.141175482525877411234926403452', '-2.131'); + T('36280697805.456872085448120623178135789191532017507413855482045239572847567984946', '-0.003264019500578350726232120923403720087351790298292836973891286679030626156471457', '0.000840690677320778506160517859695422697759302805218793948421046952872287436211442'); + T('-0.0000000000000000383294424564471974556118502909006204805914338360402016898543', '189834035009171131324219625463596327097619764552465816576075046748053426206833060327761155383041718993336', '-3.83294424564471974556118502909006204805914338360402016898543e-17'); + T('10640490.5446167580829516100444812115028794128019', '-3356962116245265447.78909316730481260744693416477010628711925187303', '10640490.5446167580829516100444812115028794128019'); + T('66770.3424620469504716946257076842243098386178403211027502322850765242199540112623715366358838507920992543105400494508613543146408231317', '12.513626579144904009386433045173431405442032767743437096384724485707600961521450554612546096', '10.1446623088875816180054116839677618053730244098658410197799452741688242943236626787024616907920992543105400494508613543146408231317'); + T('2006898576304765006614781291454031779440425434725470591551164794.861776715854234923976439', '6.073', '1.986776715854234923976439'); + T('1659509756014472961738450001016716874178644554.45519598', '35836996.118873689899485945983497236111', '33163606.3246718766078753085595268271'); + T('-6249029048938249062243170609092474550191037331.385626639511695286190999439371', '-108733052645.39651948756068195820182', '-49787722470.154741457236628551037439439371'); + T('3229906275442392424418195788904419876739.198022479413785727883243013449038330977486395796373161974679847911', '0.398968452931', '0.076770579754785727883243013449038330977486395796373161974679847911'); + T('-68.48010837866100691663949964911341141391335', '-431347497460708500535477713.921644368607', '-68.48010837866100691663949964911341141391335'); + T('-0.0000000000042873818496651474800023665212086183152315505087', '-0.0004833294030302505015641228567431906450483537828093124623545261018465548063776320121938591921894456004211776094377978846', '-4.2873818496651474800023665212086183152315505087e-12'); + T('-16963834223166719706079539302.342838131750515721187172994523', '5062538155437557.3543319054238404926367207556617251997556392366074322977693815298577958036063656158349192791752169723637271257149', '-4653064987731577.213544580641442966920884382870283356443820101043539787185918274106379472389554877383448200968409644573003915622'); + T('27752292382966155484621019967155951075006009060959254418846816259283474988719280207751032859907637274084223944989149146855286224303', '7999040368028070748765438.41605114691880938406', '9.2270733244135400413176158796214648476494776e+23'); + T('-0.0000000220775496923969762820783886936932950453320119723971850235755245075630658843057584853140734663613038065152584371146863744860271944228900', '278937252004422983259089672008219526227049167', '-2.207754969239697628207838869369329504533201197239718502357552450756306588430575848531407346636130380651525843711468637448602719442289e-8'); + T('4088817811601835043414165021549173.34648405001199965780370323214083852306094738315385019245330167477793092158413628', '3872463786824467850519422587588270837871264684182279002671582068189548558089190.6338668856949165', '4.08881781160183504341416502154917334648405001199965780370323214083852306094738315385019245330167477793092158413628e+33'); + T('243322131742241598643288437886384992875664969619768995471553676078266766770945268905658381465660972347322840413666337352', '-520908752399942059927.489465648336426083977336790367066585385183838514818914251238668315053257532155725', '336517846493051868082.5236480255207660421751407980256923055283675410001569182573777995089783207908381'); + T('0.000001076734879087', '259571475955474', '0.000001076734879087'); + T('-0.0000000000000000001708230742803565810750173450663838191720653599608146843168311123', '443087835486092973824776431839302000581260502094303047590360860043969772847300210', '-1.708230742803565810750173450663838191720653599608146843168311123e-19'); + T('-10116828102714929396303805403687032885954344533722862963220965618949477520274569058488672373457467461916061160346468283787006793', '993946132322903524101486258672429377833245402642388403366584727501532708958381633056725438997379324147994463788158057061040895860915826346549.0421', '-1.0116828102714929396303805403687032885954344533722862963220965618949477520274569058488672373457467461916061160346468283787006793e+127'); + T('-389784540685386262354634876838022505911248721618526216253571784.633075923', '14179193090251546307844809845741115123.68591663451283228630854744359859823006233091006350233571476950897344052975285852270872779781057686080568', '-7.1414462195758796324750930879094812700989420115077711452950042736953900296594912665141710395533192640587241839627883909055803037985187199944e+35'); + T('-45984185801341303910880240243.76714118367503791509966241100863013219378666011186705299', '0.0000000051570812174238260137276061944120837059018185942344919696042121715357536276082362935247589887241145383799', '-2.8738700535334248371703727635151089062632056136632218642673399518792415040952650429114119520426674977435e-9'); + T('-14905432087844530139366283324831046272631676943288697485416020309138739737561809233765151341023796257375655678814935895432051879324532', '94242798089904800354993279286346515', '-6.8721799631260899670134950264021572e+34'); + T('1289853511883958265825415665788637565052635440054342593643104070764287224769.93948274270941526387678146636906574620943512848445780376', '87.9539218424403804769323138636392398940152461892195350593552856971443615078621862619014423', '72.2591398780413624803529381690619313389774065636772867904263511510258955159663755970342588'); + T('53465238938510497274637223297650593182339185202252203083.1774604451123035468314690671136303407336840099522332334123316657221949276993', '-21334279.8165058978', '2832435.5604826875123035468314690671136303407336840099522332334123316657221949276993'); + T('-3108015.3661', '61126330169820996757526065.416264018282776618615327293283282822614202595204241400248642232068625532106', '-3108015.3661'); + T('-1275542230072231958406146247425815282449610680324545602271.8884038039259', '-243043979558321439267025469546543715381639907851772902031.084835381233691203862582992711992315936833776447731819010', '-6.032233228062476207101889969309670554141114106568109211646422689775744398068708503644003842031583111776134090495e+55'); + T('-0.000000000000000214815544265849149385478069939689813189252105406530375164638737376691673594643332117128360303977189949176016884413230594676158437978215', '-51027595198082649357603319772041435902079915041106170467.57451940249204354029924413238799739283659245365065632265429523372460397305377634', '-2.14815544265849149385478069939689813189252105406530375164638737376691673594643332117128360303977189949176016884413230594676158437978215e-16'); + T('-111350.754570123005196804918034331227325061895360176437728709656573510003457243639517558983859956764977218771481494447793', '0.00000000000034514677625704452', '-2.04176719106943547325061895360176437728709656573510003457243639517558983859956764977218771481494447793e-13'); + T('0.0000000000000596075948515369263847934641280425766058217698627698921776443246618249228249287653194626588231171757500449899328884288', '0.00015836637201409230200', '5.96075948515369263847934641280425766058217698627698921776443246618249228249287653194626588231171757500449899328884288e-14'); + T('2350976577509944947853224866479625205856731752244171284555163774825992062785340964744094088086550435965919613918802628710407949945051994', '2863077556.17572911282887032307292811887736', '1969784678.28266366932123519437643424462424'); + T('-109420981536615914626321665928421681390611584416442196835511987438396387.3285665769331549736310', '-0.707107', '-0.147319576933154973631'); + T('-155772215583445307101973376728964254746022086862918345349651130316968950879085903647.4700888378639266', '-0.00000000156250631895772405757624035051977475', '-2.005231219066573949078690311357765e-10'); + T('0.0000001837341912533402186255699654239577837158324509985744336931487388729640675913909', '-0.1644732520351148576255123808206799034683336488831104519232031408287760056008', '1.837341912533402186255699654239577837158324509985744336931487388729640675913909e-7'); + T('-0.000000000000001833320027801786983664774213824269815', '-32078261563376466267956235494913303920.158358109032084353548239902600710775887991985', '-1.833320027801786983664774213824269815e-15'); + T('-39.6', '-84001578606.1', '-39.6'); + T('-29724877149747295025888412038962646.2553837903819421016896996057751232598092947824478468469244594', '0.010594787103499106023921039896104036529348362781865379404768004199946120463319843372131130828257677', '-0.010560411121165907362703538197379906418141401977625517318897269171797412206019222827160029917370617'); + T('0.0000000297371329456338047054799880006249839037726', '-0.0000000000000000399', '2.08338047054799880006249839037726e-17'); + T('3510347687348.9918310', '0.000000000535137751617828949087071435929520771260034369415874463215729', '4.3970413363665598746475030544260422065911721854665904296016e-11'); + T('1172939419948541405468859374692318735483069696661.0016798921467104516384190202866844256851817314237012552533419694922981805635888196421299458565', '836225885046.0339803680834170441728042601393459064753318767659265177747', '489848285142.9652308075799720859670922143649859637996694219485574044875419694922981805635888196421299458565'); + T('3304012503481.86462667433235823859144825699221873', '-6331887562487821340332306152704795208243157181038687350549806653670754776238030105276438.1', '3304012503481.86462667433235823859144825699221873'); + T('-150211288508225998712214977612499531708.2501845877268623292755528138', '-12205845572868490041320605820426679815.764517713', '-3.7411416338041182163677077673793739190759720317268623292755528138e+36'); + T('0.000000011094742677563476721248293381876559856937729234232159020961832701368001460631326', '-6221917952403340240791870643787532087969062682748828170364381367809149895647888374041427464551506847.51299431101992176148174207489487663558', '1.1094742677563476721248293381876559856937729234232159020961832701368001460631326e-8'); + T('326721863970144140942581356605337628165729694455912.5775012098511224625843', '-5268757703002526369983689288253', '1.3801824327726670886183774879205775012098511224625843e+30'); + T('-165640236596750856195.895988', '11701057069048906945118088505193697795574', '-165640236596750856195.895988'); + T('-46180228389542924839944399544341711000150191241548446973614685877508179228647290933889351181899671153310459870760689493.0640313663321381860', '-13302007.25660543726751034427143226054726399423446928373342294891495068748409491646', '-8810440.01892587916183525077832797812112229177221241364171480643762179372031812578'); + T('647315854763046741826812737683933902168764597679636554385105093993558679.47', '-4490828077170522297233893004993.13249786', '2.82037423805486254216576591662663109074e+30'); + T('1599377725182495758517742498272843305960693020206048973447583115243269.1410087798545951915296847822871200148003875672207221059954691330107473', '5088063662255167160094549907732541865919416012140789.267488408929408273548538461707216938135207', '2.1844508625218647076211356222081320411196598385437706721627302640180596421073005329651875848335672207221059954691330107473e+51'); + T('0.00000000000000000091951455826031110073950473421217054945023004137', '880047376210923670087515320566136957381678956755035166368292510311615040924779967631184922.514417518390289574344', '9.1951455826031110073950473421217054945023004137e-19'); + T('-347310950900872385776467889423388243805166699963730339415360267534470.83828754168432611788446288344053', '-268630368745759667653.586235048837', '-254067255574127219771.59303783483232611788446288344053'); + T('186870193173432148130646645388.879740942923234926201708997173946572', '-30134593142508069785581273.715295334882352524247146983041708195688381392356164514745081831753250268038414517', '5.581096739607390257167080333369337455232069643267155541425108346985999423844065747561298095087893791580083e+24'); + T('-0.1807674864812454987374199', '-4469727073230097681266362826888054961977099149359.0374588261941846339229668347809983286076968459321981644745510609932772908293349139744841118084627847', '-0.1807674864812454987374199'); + T('-609942528111000950646441027284423914421676073338789300919146249735345832203325180490401721.169829288886540318797384013020069162311817163984967658940423', '0.00000000000491817438446678148457562512594581494844507213406015271765904587', '-8.43098438842919315107982234851497412708959280904973168566191e-13'); + T('9224445890397894331131171246915533737228450834032414548525009296813800.6194126855929999859102381839862079418242513149339463', '0.00200244838742528040113150017076386237193859471381402369402196727101743578532914482170210335402189674320', '0.0013517807556936445819076570223433161315655337951471334183465116029136530599646156000418832705275726904'); + T('-48683037685508014142805509729454.7708328664705019554487311077038575660905772924', '-3009.86809', '-2773.5774628664705019554487311077038575660905772924'); + T('-45.40878406155210820981388806994', '17322674941061069468.90696296162077004226138639510007304608119673036621826170347783883962799199837139339763365258311616188171455884', '-45.40878406155210820981388806994'); + T('-0.00000045798269200527002110503804633046978211168710862544855', '-0.0332022903595637863650592445124818543441138270869626594601406767165779904542946340747', '-4.5798269200527002110503804633046978211168710862544855e-7'); + T('-0.0263593463400', '16431622834110668320883651807426049458531131391388126888382321455092604238225568419342828987836945825243059', '-0.02635934634'); + T('146967376566418942423384976079370477844114594100864341309675391342034713364.6833806684984731707692088346576', '-0.013333681564204393251252427627958', '0.005064205951219194772596398940182'); + T('211754646034325622462.5754245', '0.00000000000160680374735486298985', '2.036680263359390281e-13'); + T('51605045186016481873235601735007249791991888297129512533440103662214424121299.1344940307379598284739161103280966', '0.000000000000000000011786218512737462780105791891803245937674332997646395012525762681', '2.588799129973576402223004629808690177116789885879883368785248142e-21'); + T('-617.554294656699194846345554', '-4.010908756729124879238839707729807689382950249519874348632636426606498742511278085488539497726029165636382561543373147540415292914484080714369027', '-3.885254877143088322803078717339423524408611823459224659206626729205692395774452920253456847917537657633468083863908426316460184083935650701538869'); + T('-0.000099945023165063334867500208938018190178130741558039812499297741499312773735009571', '-6722316615037541443129.257975301497143186395975837045082051651840624355546256470906712376653728222403894020565138962973624024728169204846444569100775', '-0.000099945023165063334867500208938018190178130741558039812499297741499312773735009571'); + T('1.47399214966951503197706669234', '-0.0000000001840478582583371644381', '5.02470037070635715408e-11'); + T('-3418446258', '-3958503176047281021850594866790858400.121417849614913', '-3418446258'); + T('-12686959556778981227071587746211507082286108179183876439271646348604072647005650127081913277412890.87493710443296410449', '75268789302897574467144387179003360679990148424', '-6.783811385634916183071487831399702281781586685087493710443296410449e+46'); + T('-13107.4826208600544806407030932767550902829117391520', '-0.0000000000000000037384466887246671347259264227228597229847149881116611194168157515133538054652289640187466938841', '-2.0126616347799094847193752802827297838499598456064986684374889162126566609421987606571510583884e-18'); + T('35404712862830131528829951583097767175730528979755821351149896205565020402884938392577568669927538981512991749406271', '-1031829364936517351885757530329733298799430897476255354154166810707348414663475611609730484965498257348081066493148106978487899', '3.5404712862830131528829951583097767175730528979755821351149896205565020402884938392577568669927538981512991749406271e+115'); + T('100539201018290722728826872367457614631333', '-1045913633296200056145880201567560454793511080052389543593290266185071912897427558382653862152861912376736712460547.2617511718', '1.00539201018290722728826872367457614631333e+41'); + T('5900417857967.684122320330266311315988571303719434583688056', '8470102.1', '743371.984122320330266311315988571303719434583688056'); + T('-0.0000000000000162275925487344742900779431398339947832550078717275513304235810620', '-98527398065181443.95890070566948299821236792792', '-1.6227592548734474290077943139833994783255007871727551330423581062e-14'); + T('673799374274922.944483940435547205550045463560294607616912043082182683195821140728435', '-0.000000000000000016485778560418899864685352845577378671092383279170185079302767621027277318696115879445674705947984124222523466771393786233625', '7.82834750139086490154197864647850303623771092697051197255144188339215023494951403366683672964266180245577656923491776051375e-19'); + T('-359760700574909877872.1893981874549355621361385437217', '-0.0000000000000012525895046273044615704543219559935320885590084464816796118205647431065997743952', '-5.273873466758084448309839663582338093952872688281491316326187652956128120625712e-16'); + T('-0.00000000000000000344', '-278600563952441146592998231079910916344907758061277029729847723704754927633299267404490050381652171978731152168944.3624353', '-3.44e-18'); + T('-19885391235.72444811560527014674591026983', '-0.0000000000000001210077665069172292508225410469346919696252649033898358285924802170280105173635047594325479625128232032868344035725367034768312666555169667118', '-3.27041730165540323618629447140644363558794072504731638157226990591284204649561893100263048858295969889235470457661290945938793086438381112962e-17'); + T('-4388062185.483', '-39594387554948541710295853541397266260999826140754757455063575150482412990992087849313100923544071923172382024125465206259558449365491157951841915852', '-4388062185.483'); + T('1.27', '21551626592.4081971013247452256236019543192696982517035660906335460694567861697569727904693502', '1.27'); + T('0.00000001329440489079501558889737803395626', '-1309144737900.376642959151800307497717804787800342628351', '1.329440489079501558889737803395626e-8'); + T('-156180543107.87592902679287176867109874431', '-4686280179444986299955463199189.092904143822557816915953501163200171428106923307793221186641484591113126104675812379227570402', '-156180543107.87592902679287176867109874431'); + T('4295520.77026900841676666457392998671922680353168654102503126542727033', '-38.020', '21.17026900841676666457392998671922680353168654102503126542727033'); + T('3756201184729.353948914504331418531', '98764.22688418263420', '9105.893120837470131418531'); + T('-183445480599552748298061627642.054002297', '-0.0000107', '-0.000007397'); + T('0.000000000000909591216320809881489928409865189195215922428863268009816135413196049055956596319025228879647140264146595335905308933772188246737897', '-12795.4852229887102245317', '9.09591216320809881489928409865189195215922428863268009816135413196049055956596319025228879647140264146595335905308933772188246737897e-13'); + T('-398115161708797899244094', '-0.00000190822', '-2.2942e-7'); + T('-848992173816.728883939845041393969214986771465330815208069567930789668049373073351425877934822175812944020178983059783798362', '58562228020085626501399449892933178818812686495472026995354960915893982723005540323314902834042032988.31762122657557564887837408661222893484485', '-848992173816.728883939845041393969214986771465330815208069567930789668049373073351425877934822175812944020178983059783798362'); + T('170689702928493785198704770480731726844384694228880632000086674248431636854235360847784394580.85956251018513598050194639733320', '0.00000000000000003249511361722935184708182221178448630186575980523410123888723074013021153647708920596380343297194452156472646750', '1.32996935134055436147559167404493656358621211234030812331554355557884963071617424821454322841322328537630845975e-17'); + T('1321696536903060333507124214923130056533062275039547547929702694853188954923451499474519149', '-0.00000000000000025469171278', '1.218603981e-16'); + T('1519725031000099259255503608727143117600103.950594546108601767133460279781', '36369953008089867650245915598882421133753955282.449761084477781573225146186400665554685339940078210117714275205598825657812211050146', '1.519725031000099259255503608727143117600103950594546108601767133460279781e+42'); + T('-83497099821374016986286773.646990311001433716310815087541958164127982967474303128253316028', '34.885503706835596', '-31.096961763167985716310815087541958164127982967474303128253316028'); + T('-281551500617863299353204258388337646826959732785417359702291456810294245173', '-680761080887665089.960819023854303651778569787', '-75711260041960558.526892392939593150576805521'); + T('-1.15721309733221526556327685277570425765587629667165133407328940007759291237969184088163508432164257007784170132569200710694878', '-3218490902199503763628322542391806103361580787103.2620354099117464128382431498128680419559189', '-1.15721309733221526556327685277570425765587629667165133407328940007759291237969184088163508432164257007784170132569200710694878'); + T('72685543', '-501466282854557781199312940523192072364105342282967607632661628.19377138387', '72685543'); + T('245721737418068480302255303255239643597822590292208445238466792403750601113775053588192850226', '3386598210277254485823559672192', '7.42596358685217392305157389746e+29'); + T('-2659239972.775732441119988378284430845255754722338730479949959770532563552221440837219977492287', '-366766093425414896727693582201631208201498739206701475487999587.04784925264477357068332', '-2659239972.775732441119988378284430845255754722338730479949959770532563552221440837219977492287'); + T('-202937664456304.89555195325400615051606086193279', '367508289819471739156301421289081005042399.214321331102128714358354131581972689141507241561', '-202937664456304.89555195325400615051606086193279'); + T('-272399937191.733', '-33398478226504197401967686042303959950770799816157551894222273006.68924', '-272399937191.733'); + T('0.0087589373702205672661687978512384214861196280910391339165', '-373449691484745421909661659779737619793741839646928018592372485434538362245960211318420579829536.7917148942879686985463255295177053873', '0.0087589373702205672661687978512384214861196280910391339165'); + T('-0.0000000003525427146401188285154486', '894317500882.51091293970592971909046143867805856323040', '-3.525427146401188285154486e-10'); + T('-91451509534712961197767251912.12413503036698723430206046435825379830131588169', '175966443745543358277161986311916627186504872290571423072359410287954017058417918465262148785893573180476929551596101110996620722038220', '-9.145150953471296119776725191212413503036698723430206046435825379830131588169e+28'); + T('5239772947176538407844432421154043692127337338786315971056005937511720316060149414713137609138942592364274998260.3914418522', '-0.000351999447227731010425590682', '0.000220009266937371477472993074'); + T('0.0000000000000000119885361224350878697901381513746669638803014061044667195642049359814289191991814187212222202848050879631237494325242872', '-78535546704.5392511810713502849597204629156277123901805', '1.19885361224350878697901381513746669638803014061044667195642049359814289191991814187212222202848050879631237494325242872e-17'); + T('-39212530235163840641.889', '0.0000153516323003372462432711273284710', '-9.9431734462012600433819830344e-8'); + T('0.00000000003095857781498', '101110441905084702.0357403762824', '3.095857781498e-11'); + T('-10334049534629711384154568939144539037486810844012775904747573760967321021577642786297034994468008867806308331807710193171907638257163287742135', '7', '-4'); + T('-15218677194629873309845552539810909.24144546875160065973098514044701774323707782894779555789259131657466804', '-34518535980025586317185189406244975538787915397779.23976886730365452862236233621200723924917399966293372039141790286540026470', '-1.521867719462987330984555253981090924144546875160065973098514044701774323707782894779555789259131657466804e+34'); + T('1140580.761784', '5541289870140054.14605122999270451642719393072416088141141309658972740905789791956116896048544622227464211', '1140580.761784'); + T('-19230493275938204954207576965451693824417167596.852559467', '1772734380358953111610301912647488842242624961779873682671334193795568636568468773326514107362478536842717561130919918', '-1.9230493275938204954207576965451693824417167596852559467e+46'); + T('599.7', '-1619645435801723194772984.179363365313908446470145035129596757155977', '599.7'); + T('0.00000003527897184750897367124288669208530527416142299801842725622500628314084302757630841538287485331290943712878461770448393129110928068601146662', '-78850.70929109605094', '3.527897184750897367124288669208530527416142299801842725622500628314084302757630841538287485331290943712878461770448393129110928068601146662e-8'); + T('176028.398859288392592242830374424713538809024937584968933934', '-55388056.672', '176028.398859288392592242830374424713538809024937584968933934'); + T('-3687887449589971447806306109197252366886458742730568279682018480906663049444897395704418760650684470725759432270992', '-3.7420395715065178572722', '-1.37688512348852048922'); + T('0.00000000000000000005256579563216950668763224444694962365341802542', '8723053021165901635236330129212563.3636641322636657590577963894918834488095316505676835145660950358', '5.256579563216950668763224444694962365341802542e-20'); + T('-0.00000000031', '-40709625512787616635932401858411015489778633837395274172588092946942501539158146828356731279975556752797552634865553259851', '-3.1e-10'); + T('-149135372988628919970496739114893960253872819.29190786741735400203191111811808959575782606817793421565345731848675379351509', '-27246318921164548382835661684073753930547046090475812149871172745414922', '-1.4913537298862891997049673911489396025387281929190786741735400203191111811808959575782606817793421565345731848675379351509e+44'); + T('-24363147306500486229311532771740994620057318471544291974564601298526862244753274543680731501921598200150080347486100220249.95', '155112283879060815501594513038826638314014.151622292976655', '-6.0684495386164490837630162468104486251948666896636943585e+40'); + T('-21581136768145783809281720761.44048211993924021469354146024085251250876602551196346646616560379632610', '3976135041682843254167378300.9535996945876700278842158983543387014253903902294', '-1.7004615597315675384448292566724836470008900752724619684691590053818140743649634664661656037963261e+27'); + T('0.0000040326918148754448903294471525102', '-47372770302411027590776261462082130188562141598263.7', '0.0000040326918148754448903294471525102'); + T('-0.000207149307738031286357317412628083411158171708095191007176464575073542347747004508854126911118', '4571168574.53730007', '-0.000207149307738031286357317412628083411158171708095191007176464575073542347747004508854126911118'); + T('-97509529222819532741120.7501430099139821788', '413204.03894124413846481557841831902206393440828094465180414091136336556519710979330', '-225763.5035665848727274739410862425313052713554127953879950852567857905478666569684'); + T('-2.00', '-27821012567074003433639721305709103428961197219622539.5685794624070639394524366200311619036627965777978152267632220', '-2'); + T('-0.0000000000000000294734806609719368469844343453588795984107909582873623530491162658480309441610559248449712368676186348212527994', '125.2766533052382457665605834964486208493706839813580506', '-2.94734806609719368469844343453588795984107909582873623530491162658480309441610559248449712368676186348212527994e-17'); + T('-0.001633958178625393150319605773581603368794536210123014338662866483443630520788262608537108853222673749309263319138110819633916150775', '984041712528385604819023678382822872190082698761085069290999301227.7932731339787355560947196826063289233812103279464', '-0.001633958178625393150319605773581603368794536210123014338662866483443630520788262608537108853222673749309263319138110819633916150775'); + T('-647590209400834319944871139406631294085860629844127321070709716929419594078771338864670085558591972653967722448703626313095422674915141792986000', '0.1598243963757636855858934473058567117813241414088147740804621207975238365569266130451403849392927831342716601396536406385033', '-0.1044367829611085137461733259113676442705082608844196425772771026984610209105052891722465431157849664696915079658107241925781'); + T('-25494638.01708', '53771122205901307230592753088190036050267061395902109215165014594840247575345774715515212', '-25494638.01708'); + T('3699534688828621863573818255225145699064136663560216492004997448846', '-9352801580752779322144587524942771278907911645795358120645130483618643349473297562259322949157930678655.0985025', '3.699534688828621863573818255225145699064136663560216492004997448846e+66'); + T('85032671555909805603615516661404.435251', '-731048436229736323522.991409687588012443676785142131368263222377948374546633511253019699058056630484634450274338643065674171', '313431824866633070885.329503399810155585075007013107299041216892826957929258111083849330121077202750028714374886317572152301'); + T('-209945559192857.1946165', '-27531413554176324889547266436322269.24', '-209945559192857.1946165'); + T('-295428170594032684107120468868902197984687862352304428967023482208137265881.1518679174044920', '8841356497728907803087292.54', '-6.173111942792252980851311451867917404492e+24'); + T('-24870862326767803723609181211951886785506016576823555683020976203476199.6383226631946206831968357575', '39.0192876', '-36.8342102631946206831968357575'); + T('0.00000000000104093732456948791535660490005579952856632590144252349583941188680067059085582490969', '-0.000000000001845', '1.04093732456948791535660490005579952856632590144252349583941188680067059085582490969e-12'); + T('-110171543516072519154077470043041622245899518010724357.97', '-215985365493128751969338708436174659881146326.47130407981449301251477', '-1.8642809482641267496491145390027069075248347603428080841787298772523e+44'); + T('-5897509163.33237929190342310229239099251637748593970183365297489393099622646591458028949809204', '-0.00000000000000001049808087192732915451590248336583114743497320652254457639908692412845756123814307660410407578158294', '-8.86866462108221132146017741372701042754803104583264417668482799703357268955774117913535569071970096e-18'); + T('1947618330530090666893298405354739308961415698078028620052704641974391377424081.4370720895447112874307354517864830938810415902572192711612629905619', '35798247027.429407843795', '17046145447.5748487031747112874307354517864830938810415902572192711612629905619'); + T('1452534530844578587286793835405885853021971526781401425425378487935294373177736296627509724.7721554655330008757886130352256', '-2230097289481941875743.70308986073045123685990370268605393875797132020959914189', '1.533131766810854713997740773599277043497855099271539159216055642143596393742e+21'); + T('128826616832138303811999586234163151680224444940', '-0.00000000001208356353496390300985175475564359178694913852139721834444645980664649972867877606030662673387062705957528277363458571248', '6.69584035445008621624129454859440871477459703283008018887200388923227463902698155614027423236686957320538416711587060032e-12'); + T('274755781466764052656410387030227146979693383969398878026929839099188933143187954.316630799958652729870465414351983831108637697738523329171365404311371', '5027580651709666928642445905700005774592840179967656101.79182444554585905527707052212762780497609', '5.48687928393824668751094954125758077209867579670314978177150003853834520394957509967430136734987697738523329171365404311371e+53'); + T('-2406059574284703894148440688533903170413209795439273014905177947511690472468600917700926344523744291780294283495749086476739113840212', '-203.98100910360', '-185.5516256192'); + T('0.000000000000000003179154784807166104910307727154315003026622310376783873362697561702481688909293567273102622264690939490656665370251098076', '-5350134300750700517120759400898359875793', '3.179154784807166104910307727154315003026622310376783873362697561702481688909293567273102622264690939490656665370251098076e-18'); + T('0.00012091743522867814073847484062603275868239331576857596900007215494716545366688505334', '-10378723922985921543083277863626740941254369901608094932235751553750705682535457043031.41378179327287353', '0.00012091743522867814073847484062603275868239331576857596900007215494716545366688505334'); + T('-1660767751.4', '2459907786914500616387727754259763565894446392427524988.3089887', '-1660767751.4'); + T('-0.000000000000000000033631822597167449133998986776130306365257623634866807914936753769658125021314951009961432799089', '797319763411607221.38591797885093271728899657566132838267977116823008412182171464', '-3.3631822597167449133998986776130306365257623634866807914936753769658125021314951009961432799089e-20'); + T('0.00000000000000007281386061841728062540615021553752512420210250015235565748841313988186929535298959795327001', '-0.000000000000018307307966434251165', '7.281386061841728062540615021553752512420210250015235565748841313988186929535298959795327001e-17'); + T('12297805724713550651709585300138356133248943868', '-163701508250759793576897510100944.363665567661696351838785854587582512790473802696800243554593953318621704650392740611277466227704883765281194971', '3.1332237910487269499049391286794358622794996271733943713726789898996217900759489344672017564153060898774887549719068362196506671085592851829665e+31'); + T('17961425562245817409581216294804746.065661120381362624317312407718862471407015786507000357168717692371625586', '9046942197910576941857651741.55434563534612137400298066696827535805595960684000066125477228083537184278377', '6.49408647019344859254849589352376161554251481462630160649054320755389913647417290498278294020058008596034e+27'); + T('-3360310711195664412184900840786504257661992132828215038244142041.22859603911690657528947205783809347874816594', '-5735628655860989.451138', '-3519456098473580.96254003911690657528947205783809347874816594'); + T('-0.00000000000000001469591999823677591002239452537827102191452346037061990719157543642750620200165386046868332215843328867721811877823863271769224341852627352', '-52861761302592655772535505924331973233.9199278286451051457115517367966126642231724169207509694259781203858104417456554118076000749697086', '-1.469591999823677591002239452537827102191452346037061990719157543642750620200165386046868332215843328867721811877823863271769224341852627352e-17'); + T('263428047166492021214430897.349', '-935321863128449821208776543.4661', '2.63428047166492021214430897349e+26'); + T('-64.23084746043437274748289661517354551174901810407232904876189241671863464191391813766386551115089149323979310399810268895863595', '19838093993118866366953732423596875847833914', '-64.23084746043437274748289661517354551174901810407232904876189241671863464191391813766386551115089149323979310399810268895863595'); + T('0.00000001042725590087839885246040660938289118002692929859', '1895509692.418538195', '1.042725590087839885246040660938289118002692929859e-8'); + T('-108703266290337059775.6444368018636935234787428949076436661761248981668101717329076241048414498', '-2258330970500035491281882848071727906499835424315004637497720003971765589145517945042230744562306208501662783826524402', '-108703266290337059775.6444368018636935234787428949076436661761248981668101717329076241048414498'); + T('19785588947095741.16', '-209378513090293702090937928908481270047755761853726892468236568171933572299844184320681716923601277379094105477', '19785588947095741.16'); + T('6.5627', '-24491197303184669250685680749224554131071232120525816290954743983460746359901828278732159826845479302974005432248.98478397721775763807590701860762', '6.5627'); + T('98040252941.5584387068346031648', '5799356330802.26678574689410221475982263208559136859429961045221424410142780663576353327734590059939940621596297615', '98040252941.5584387068346031648'); + T('116459945', '285087451924', '116459945'); + T('-0.000000000000024977925576784464857382157052766774720130135842951378009457010637198779202473727325439', '382620017160416816899117416971.937114437851011757205933117037959418794157533127476013068487945074162512915274505494963681134423226214835793018854460', '-2.4977925576784464857382157052766774720130135842951378009457010637198779202473727325439e-14'); + T('15693959990166898467530406779039841070032574908199729638250529357153104897', '-0.0000000000002824974164922651345048893785611071689041377509099951591709879707481443285597447959', '1.171281807977374285869977160622664270509881729566135484299178262958875818964075864e-13'); + T('38848812619964290843361545253566362214', '0.0000000000000058425180574815230559485050316708859218673791077977584355914797766947281173401829358941785694963992', '3.1516654254079360183309571610860641637778291889893615348383342541484388461460984134093274298941168e-15'); + T('1747169015246368594998.464722228648492098168730638104125762700809327003329875209', '0.0000000000000000000284393447186198269469304488191298546623882877275494399348981067472547693385217621583802872048566279451580304473660909939163358', '1.51262832017785291204651557051891862995924391738284925362711136214365955363154169051468433756051932474065931228616555991508102e-20'); + T('1431452840526919937933101541902740083072.42410139031811129499443', '-37469198013000024864225724154390.5943722958', '2.035118407303377297932806595854716825940131811129499443e+31'); + T('15195.99', '6038496355477993856241855699590649428405756', '15195.99'); + T('-2041396228526158683078620920473339987062472388906811556.219705106443467336064724639399525662209445478538446773454254723160644110', '-9896112700699691291.92454132620577755838251', '-437387204257609623.94163554707241697768552463939952566220944547853844677345425472316064411'); + T('0.0000000001675722009116506345401287561663653181456651402449423225303665889095', '2318773737623386732448176059369887376294723563923814698031839194174397762959815701', '1.675722009116506345401287561663653181456651402449423225303665889095e-10'); + T('-0.001277093413988786193792338596676914602745937422', '-9054497669216982378641234353912833868366784112824225472373455575687.06067706432215821280', '-0.001277093413988786193792338596676914602745937422'); + T('-7586359.946325387213858428685527361653731476271038018930272114935277172424094509714364626279197619817316315689963471346611526175969', '0.0000000000000000430136274016202618412879577873962429424232143628863509810616167892960358806475007016344779281704267625230587638895190481865206340', '-1.7310828493766802121394011969560202470214375466524665165343928089767553023528999738804774624545501070324448831891021818491806068e-17'); + T('-103412754444480069058780993539472717862718628742017032622717305153554156500660602780.3951870520597328029305', '0.00000000000020266200284082826503473600665777073078290305445466856192999389981999174414790577002212363701234328068734339302422794462188621520017527973975244678966', '-1.1778610247698432518015282589512280988772755012414363311971091185982964630918238442878242291061344089450155031117839124238643126352705822770745553166e-13'); + T('-4649840103983286431118728885.5686899779272666748077658422319061095341256831328876230', '-0.000018283271700643090900759826621345966959563090797', '-0.000012253346082427405840049943876343545027546355616623'); + T('11177150046419761513519128718157640126', '411523640124736736627670200725572416567962335255822909421', '1.1177150046419761513519128718157640126e+37'); + T('1096935867719575049333091824804333510580945589.83824692435717061889762037572296699239931905470583854219762636627842602007335719758', '191153987761529206300925.3273', '1.2912957009764464951516411274692435717061889762037572296699239931905470583854219762636627842602007335719758e+23'); + T('281098490751309919781.837846365353940940012601874942516251228270125', '-0.00000025737546499923055582341344593708193968274528519657943958684105481278501660321915687980677654353727621750', '1.513406720586607228234865179218366144830241157041834126753669969930905426261187858947727786029406807325e-7'); + T('35010488237245036697520709084885266506843.425268', '5352655279155382458162.94330921', '3.34054595183665523603034231901e+21'); + T('31145808975597255138857994779920960247290282089774585062872200414184550100684.303586528813', '18.3819835858', '11.042075433813'); + T('356018189420944082693927775557.325504971417155535076952686936532414415559512252384067063438680483994312420857090610153342560066768401075', '-8727338718894573084672497563561164796452986318031589007265947314318840375612702741093080619723378442544516952773104113190035800', '3.56018189420944082693927775557325504971417155535076952686936532414415559512252384067063438680483994312420857090610153342560066768401075e+29'); + T('131429872161991712843260938039674340723308898895521699771855.024419884969996712236865308648727765263561351531', '24712061.01438024179678320259', '3429325.950976494326109883486865308648727765263561351531'); + T('-34341392.101415133561441008979017430685687626916432806544362758', '-1799749026300082270308704328638985.5768', '-34341392.101415133561441008979017430685687626916432806544362758'); + T('-8413086128647.685221', '1606998396292485000476010332910518280001488901905838129531.210325550440342452530296261171681625711233494822776448488394', '-8413086128647.685221'); + T('-3.0', '-3139', '-3'); + T('153157.73428689664192233409327048703188379081578410604659706896677053628345674074129524175863661791683502264736428459474866594560693363338143', '-750845024214409.258', '153157.73428689664192233409327048703188379081578410604659706896677053628345674074129524175863661791683502264736428459474866594560693363338143'); + T('0.0000000000079148423562335767793913910035210781639819699467034642740182963781086448957016588218561890889449126109310405024351752573234749277921432649542353715', '20.00', '7.9148423562335767793913910035210781639819699467034642740182963781086448957016588218561890889449126109310405024351752573234749277921432649542353715e-12'); + T('11859857545035115534901402622688845103.26562817190421979271737710348373108096466579924379735578113634951611925484107971222', '1851265684423437968651977889678101896760692374632438502425532634360068350.385560161140916692762655434938124023616766184141', '1.185985754503511553490140262268884510326562817190421979271737710348373108096466579924379735578113634951611925484107971222e+37'); + T('48109224570352158844369436263326645.893373810649056419300323575418280726520558310461296', '997.098677101792499906198905275633517346903196994899968608672152519988658750302936220222619145776458182531806754907465557169', '935.865574632282320424247042476598393609973055983379471096359067799052781834688483510305261831102736621823846394515810747161'); + T('288352547873858.5', '0.00000000054104505228159386805524414898723018589882606496349575056289472447535373273397426133779673431360860889934275', '8.2673783217939116398724200124183517796838889199181998847282343820866487394178542482519715167131249859192e-11'); + T('0.01383525030381675505711753283705031809489417131896036954963744982627869295128813174764504280572980911841888', '367605263666452149870730318125641658304719350393018537475278503369754165680652067258735', '0.01383525030381675505711753283705031809489417131896036954963744982627869295128813174764504280572980911841888'); + T('-3505042194759758434255338972290034512117930395098910381818797807.88446', '-3902404098859498614003813210221299711513544600259011148097595421079608627612964369831566426492055190022939.50548422319511214', '-3.50504219475975843425533897229003451211793039509891038181879780788446e+63'); + T('-36026.8915685144533733380523666761979285283755516228130824117905334817989501255635498677420902031957643520214809171824', '-114223033898589812722834379611264506788064644828093.94800173309118106933782098399593703341461245', '-36026.8915685144533733380523666761979285283755516228130824117905334817989501255635498677420902031957643520214809171824'); + T('0.00000000000000013809121', '-0.0000000749288', '1.3809121e-16'); + T('20724213487987.4778151388942299169660827860781497232254137576387255648682698796172600059231860766018620789364227232170076071666458413', '0.0000001505314883568650229916354199483681188910572425586579937337120672732036834724306361544492395168511705791', '2.29883655297313793669989172506206203246334456768066197147148446745240375475037698012664723934396524013666458413e-8'); + T('-153138392170770562583816571476981650458239771831947250.84840860593737927903083269', '-308451953716202377192878310778513020451424572722485447176140047813202767698204721821724806119.758161292949455744622007277884667216068789328280721', '-1.5313839217077056258381657147698165045823977183194725084840860593737927903083269e+53'); + T('2024889826013722491642109209599457879536241401674305584888599322154577560286041916004095464239039183545712355073451878243704708180367087', '4683338288486975605179756026626993457497864317101799400353744322277088843093746348285508196719464116323961318584747939876770.2', '4.2624056691905146720562441944677299974218341770933920083702456621928076177796341929265641218876544182677248833016820278781996e+123'); + T('28313589531.63989269287899646520', '-9540641513056039416103997609028907233031199495306430017143', '28313589531.6398926928789964652'); + T('-2641228946549921949803625465.800690017957640611162874431878273597335326201803', '-2.04', '-1.280690017957640611162874431878273597335326201803'); + T('3804757657533490618037113031910761806055921644578987055.96708854321879766867635040692197', '-56283755203464428334670377565843348841905251379123127204289309457333750328700.80439297', '3.80475765753349061803711303191076180605592164457898705596708854321879766867635040692197e+54'); + T('-0.000003122558770454963876212', '-39544839986003369027933892780750841310717452858887832507369587012.160870183482262070063337198049486352931637085710934033181', '-0.000003122558770454963876212'); + T('5392479076929588293587612879284527077531852805129124829184368274349602728517523896911896867945402316135762773529299018121736199918072580', '0.0000000000031117750112617018767807786730379346274843985783', '1.4353640854938664984508258039534714987084307583e-12'); + T('0.0000006215288163619792375122235621598208666024377435574215852804775078406912545206606730739256331954317406302758639949372100097183229', '-1700271804304.2321825527640867380703229974396263910191256790985519859411209446664490975402918158602308456057531026581023238119814318747861781914', '6.215288163619792375122235621598208666024377435574215852804775078406912545206606730739256331954317406302758639949372100097183229e-7'); + T('0.00000000000000000001395090317654918659456545517103197123320734631379609159286124417697908168852487462191684425104983578404131395432', '-36360831023.627373636', '1.395090317654918659456545517103197123320734631379609159286124417697908168852487462191684425104983578404131395432e-20'); + T('-0.029041934347034050874280668604145494973712402916841954749197882673846083921928051487', '-24321172024135194808.395261648243950525857', '-0.029041934347034050874280668604145494973712402916841954749197882673846083921928051487'); + T('-1195623993147803871345536056905699481677978210464192436338258797046728634803018357673228508044459476891363148600.9832229463899180212881047872', '74333560130107705155367279487127775431014050908659963244531.63816885515954178693780861744425312763135160774863427607199163982187', '-3.086071550827133408617073704504470924384848699160039276410221417738588615789646409686448568270317981309079754174890980893975151e+58'); + T('0.00000000000000056280331289271771568763154768933854147024773200443808381650318222961243204491709538', '114.456600080136471439211636731189295907102935969767768173395401795448559059693594476527026886599808770208262292019087718144844542649882', '5.6280331289271771568763154768933854147024773200443808381650318222961243204491709538e-16'); + T('6349098329627676906649327567422334464124358967178664653673220067.12545346036152018429985973661814570758371069143', '-40.149580757418441824336470759561465678877107568894320488314323759826632493055455043642548602102537942593850156261255887938596477', '35.559837216237967922905742415355706498518504880575653814975327971087870426830614164516845532783586654567238760012791188596876952'); + T('0.000000000000000000134958665891757075394771428809225066409494541557306409079645322067754548797099784994774515332106618219339715207891623', '0.014098046208108624476748153262771647868771485742957685480766065052014710323', '1.34958665891757075394771428809225066409494541557306409079645322067754548797099784994774515332106618219339715207891623e-19'); + T('-0.0000000001198616208882375095568849612873993998239584002760230102327127648031323996108632845557417295759919543714234552132382176739713', '268502661662756835424685753368073720149943858868258883021295906122336165047282467800229455912077913155968019665198341299031672675184802671292795982', '-1.198616208882375095568849612873993998239584002760230102327127648031323996108632845557417295759919543714234552132382176739713e-10'); + T('11076417241349251662298800548993053870489927630158', '2688.3', '838.5'); + T('234.1833389564397314620433643408344637353276768649544802303136396105002821774541067155967638799471344828367', '-812930653675251477172818677593163802475335395321516392160988863518282232027.9562556743336062078852192049177044015303006113839518790342145303511416', '234.1833389564397314620433643408344637353276768649544802303136396105002821774541067155967638799471344828367'); + T('-140875446895336688695775538626569168776437615910859.266762102378021102701836180989625107023822491824898835037416036752', '-0.0000000008120648359026855681066672', '-7.04899443282288314693761107023822491824898835037416036752e-10'); + T('47302831592291859921582694268176274322977565414806988738441.7361304674456421666929415117545213713741289186588622962427363296591821124', '-4883810167764887872263063592054042463186129668615153318291940325670910399840788193978235038.40572599417807', '4.73028315922918599215826942681762743229775654148069887384417361304674456421666929415117545213713741289186588622962427363296591821124e+58'); + T('-0.0000013500524235084418996188348105405437586078275799625742804819565981475194354476354686524527', '-0.000000002779302718018358208070594207983495336655239720268299505135366323424005449637210093828893056230701144', '-2.09060526953816870459661966854852033003631563244902049130393128687679237358857314543956772810994516e-9'); + T('-8856430201.81983563385', '-938319623036559525783829785765639.1967490372320401152237017199929134065194059252249435216165450476221132716254629851825940147', '-8856430201.81983563385'); + T('-294598922189601641529872833094268363637995845166.9646336278254278800792178104215750273817481774076459356025057202968', '-10223015027442426717349749487745963093309181008.205638767965256198287559296860180242914602395642001035903820036797933102584301654148', '-8.354501421213693444079847437381397025338776937206748124798254328027557498336528225772881099431616930295544689954673127639553683856e+45'); + T('-134482328774078327.78079185017538184873315143896148192681352250548636020696397', '0.0000000000002450342135144683141905584800341536509151970912600522688818921301', '-1.60073903831321955625426419137488883923201731240764068955671173e-14'); + T('-78800324525137220517451995171180995756206048564118678612521109029482402593085439.179075675835830559536829101701753174835', '0.0000000000019610051403211771404265319419334586289897793595385183097754722977683927786401175145119430883943240234469175280289689345365813902443272222', '-6.535925793221845660690544723959477724568508804990257790953954534740872982749100270224419170325353310184590062864940380043185153774656484e-13'); + T('-0.000000000274926667753556399411968202786585104173511', '50122654291684689961017965995633281037050370088364056805776193660843878710891076787.95089764411489192357442121111434586112155176770186465', '-2.74926667753556399411968202786585104173511e-10'); + T('0.00001541285093466595032153714556336460183444913540837825470619197642409009049424847511805411133860049617440', '7665422149126503228084815387690205422619171304204357008349412728229292.3453547259', '0.0000154128509346659503215371455633646018344491354083782547061919764240900904942484751180541113386004961744'); + T('431221936', '0.000000000000000033002980288810278906842632506499735728904330341685973153145895066915569913336407191052426472565118072610', '9.10099606819992067300761400250765866243445746733753730198731073886381276861851209124916361256120258093e-18'); + T('4666715111789921577904245361334034970447224117169861897028729415807979546253890966745728334297280769367.70886147058269253176521844671243912148148079', '6.8', '3.70886147058269253176521844671243912148148079'); + T('2197002885429890116954900514249548697857546929350020990766722904092684082.2392268693970414838', '0.0000000000000332559964853018317783655876966402252962358315523892307692184125776284852387347864848368445935612207352750309642788316', '9.3491979527670904641879713520022687811716489510692050229377615200828160049260989946844066618421874281834484917990608e-15'); + T('111094585048273140985385584415256560233393427038902518.784369340636556911255874165728', '1132940880188177667933583369443202220027425411297999020483308891037542098', '1.11094585048273140985385584415256560233393427038902518784369340636556911255874165728e+53'); + T('520386', '91455585201495693176033076068679833231426120905022134379404266046062624029800133847471370511643609325721500716912256.984', '520386'); + T('459661201486307760729688778845476517533962920316992893663687352420276986833260305315498074609385953532821599018231099', '-270279027874029833827081796161869449847637992962004968243052096882327994299.79117493308674063254110578511458305133003811803355185433888227224', '2.424027017863735990977800631861728865952035304743598958695126250204835032809271219019609279133635203601969578977452650333362539299232143024e+74'); + + T('-4.785068183e+1', '4.100602340813778290214569907944153985840287e+41', '-47.85068183'); + T('2.80464647349124269012895506839600253935327310965e+18', '-9.5524432014496391100798143628e+26', '2804646473491242690.12895506839600253935327310965'); + T('-2.8475390576301982648821864330615e+1', '2.699279786373606e-17', '-2.6651296488681e-17'); + T('-2.9148775309735883444412038961e+12', '-3.7791910283459953859509024618806015827414491747e-14', '-1.2484519780688810034904273898769796515468689534e-14'); + T('4.75952e+1', '-9.2480596298788483952588449013e+15', '47.5952'); + T('-1.059098439e-6', '-2.61519835738114698145e+4', '-0.000001059098439'); + T('2.0737545782540501468649951383811505929864648e-11', '8.001141125055718003273562341771790690597363615833e+48', '2.0737545782540501468649951383811505929864648e-11'); + T('-1.22658750490728083398e+13', '1.8753238083480045539938865768259755398e+8', '-132148191.84975394758545561202438438412'); + T('3.0610455075185277682819215983121128590345078192561e+45', '-7.2132877592078603887799551646099823518259e+16', '61373855855082630.483565489609741494295639'); + T('9.0188012787220251521914339e+21', '7.34972521506799782052e+20', '199131020640427767567.4339'); + T('2.732276e+6', '-2.155e+2', '167'); + T('1.81970803337505025123814446711e+19', '1.552273391587321102352777093263e+8', '121079294.0355602541613892510099'); + T('5.29521849750516603814171596807e-3', '-1.186023062792866863315593132074754530817309278318e-16', '9.65458477943067357182194529851732179008303939488e-17'); + T('4.17590665394570316906941267960925070278431e-5', '9.049524633791428612160450019368774628e+0', '0.0000417590665394570316906941267960925070278431'); + T('-3.349078310428002e+5', '-1.6540638667696404135343644190345e+18', '-334907.8310428002'); + T('3.1992755000743044238501551275241732747e+28', '6.7694639443884902632801069e+19', '58012283694485729642.404216747'); + T('7.824216663065598374539197703051941e+7', '2.8264285749437427237554422632944775049521496e+41', '78242166.63065598374539197703051941'); + T('-1.67058990412026696591650976e+2', '4.22502522584451063700771426002353559984275436807335e+7', '-167.058990412026696591650976'); + T('-2.45635416234991644154081e+10', '1.6511720053714564535061012818217797956053950352564e+3', '-169.9750792296892367202705840388216243464507038608'); + T('-1.234302917437106938892e+6', '-4.66222869142052358935242282170391162075612576838441480514e-11', '-1.16831454856809476137891894092632703280451615639647891166e-11'); + T('1.839710778457895734645309275939324e+23', '-1.16318585777868797619955e+17', '90437897170854441.0401789324'); + T('4.31278525467628823588407602838382746643207760247774704277223e+9', '2.23171038985847514593e+20', '4312785254.67628823588407602838382746643207760247774704277223'); + T('3.0774747e+7', '-1.292178569466e+6', '1054639.902282'); + T('7.1986256721501851444121681387782246892728127232221676165644e+45', '-1.13782811077947907584409056830168328555517006340535538318684e+28', '2.4664369028970742315721904655905118416446174179007597618692e+27'); + T('-5e+0', '1.8187074446258529890089548133661805568989582581e+46', '-5'); + T('2.90713213183891582843410750914399986513758162e-3', '-2.63153627e+1', '0.00290713213183891582843410750914399986513758162'); + T('-1.1994289233986543701822561078984450080807572663172692845e+26', '1.3308098373134e+12', '-1101301973800.58984450080807572663172692845'); + T('3.80222940163e+10', '-1.86439621006147e+8', '175050952.052159'); + T('-1.0589771547255325020757865564001533466983148718e+46', '-4.66653476326811630302573645173380627372e+30', '-1.34743461530630312563356791528734704544e+30'); + T('0e+0', '-5.8555382904168e+10', '0'); + T('-3.877410561846137535676828506580217538851e+39', '1.8546585782329946703671500695022434e+25', '-8.304732800863368666145000987852196e+24'); + T('-1.163627582049e+10', '-1.190310616961783801595291761751e+7', '-6941092.77337225841399948769273'); + T('5.50922178592853292e+8', '2.7726691028626755345614e+1', '9.067016077612284334026'); + T('4.585813032273175774206281699078636679246584e+2', '-1e+0', '0.5813032273175774206281699078636679246584'); + T('2.143209743784799995437859351e+27', '7.89686033593298254046863395059167e-18', '6.81868949928986360863748711628261e-18'); + T('-2.2928677299898057914670255997347455786e+11', '1.43685706448112139571439918598028632e+6', '-306934.405632425577309870670368346'); + T('4.354911010988471845818170482045217459828e-19', '-3.4255381103210061953947764102346444839325208e+5', '4.354911010988471845818170482045217459828e-19'); + T('7.6205756951722652979726396821744395258e-11', '-2.469701682300246385132843673488255945931294e+23', '7.6205756951722652979726396821744395258e-11'); + T('-3.0414336636936289483194714509757754918625515721268383983891e+22', '4.536514951e+9', '-2390201439.714509757754918625515721268383983891'); + T('6.1950756263395220720928988581672084e+12', '5.50299097228515217025542686233486e+6', '994424.9277391452982364908047321'); + T('1.5592703628193685590607028031257876838163995140476313e+52', '4.644158636847e+12', '1438695302628'); + T('-8.321953e-20', '3.425924048971005175376011737e-6', '-8.321953e-20'); + T('2.50545873839057298343115607524742030919655663396773e-12', '-3.81e-9', '2.50545873839057298343115607524742030919655663396773e-12'); + T('-6.626563801610720283429069e+24', '-7.318668911456127669428074219e+27', '-6.626563801610720283429069e+24'); + T('6.579221387782276980734304828884120337616419799251099653496e-1', '-3.8969000319182257446208467342247396396093882352e-15', '1.9767722676183043776377919004479568382127247136e-15'); + T('3.1401513e+2', '1.237032386460703e+15', '314.01513'); + T('4.232794809535764324617667621124324483982653495945584e+6', '7.3809184815598732203484798105535965548268885342e+0', '0.4405677713499586621163276690389136391131296364'); + T('-2.54046333929067768396256156730192176704492639570003e+1', '-1.43509613727037812846035760529266475517733244287446e+5', '-25.4046333929067768396256156730192176704492639570003'); + T('-1.7784812894976825e+5', '1.348176239051319766183648668812555533668836074076e+47', '-177848.12894976825'); + T('-1.34525103103779e+8', '-2.1e+0', '-1.903779'); + T('-7.5e+0', '1.1485396369968399088809663888589e-8', '-2.897466364518558819119797833239e-9'); + T('1.02502826667e+1', '9.3481096028282686300763053917132870455928e-15', '7.7634911550320902212280587730161073680336e-15'); + T('9.56858647594739448303715711e+11', '-4.2315e+2', '168.239448303715711'); + T('-1.121662781899762e+3', '-1.153e+3', '-1121.662781899762'); + T('-1.1987521321e+0', '3.3717546189279471902193720771211135e-6', '-0.0000023276964037193028773035373618806855'); + T('-3.96409663517864928212668914312890035732488673186557035e+16', '-3.503768915124379422490579250903005526551657e+9', '-1073469883.0404370184683678233259100444904567035'); + T('-9.780642443954005196506214589e+15', '-9.0202154557465647565999764323022181914347547218716e+44', '-9780642443954005.196506214589'); + T('6.22723611860453496632948443539098691396413e-10', '-2.77824094902753769648885834726391520861911e+5', '6.22723611860453496632948443539098691396413e-10'); + T('-4.7319718694e+5', '6.8346446241247783161447574947601984306026821486383635e+33', '-473197.18694'); + T('-6.1933379823501920314298624358203814e+30', '-8.089868231074264910103113854481018685411838271163628e+0', '-8.004699925089141256941499632457605509538837084388632'); + T('1.5e-3', '7.82546748299781600669e+20', '0.0015'); + T('-6.7242596508788e-7', '1.3806352e+7', '-6.7242596508788e-7'); + T('1.9762609860647814575863656621674468865989380864741e+45', '6.51277646556899014436272323991705259786529655e-5', '0.000014790203177222374955576884258500785345510175'); + T('7.004000748022736e-8', '4.736649441368895442161035451e+22', '7.004000748022736e-8'); + T('-4.29285701374473103585848390846585847338e-20', '-1.39970996245e+6', '-4.29285701374473103585848390846585847338e-20'); + T('1.44068396723397585225000633824556784092935879966094079042e+14', '-1.85739402953385383572444765551721122270675395703645487708e-6', '2.2082902769721875195705810453565730977529281295245227248e-7'); + T('-1.90763083929612502667113570129e-17', '-2.989745679222607307608195e+24', '-1.90763083929612502667113570129e-17'); + T('-1.8008915784029129140878223332849e+15', '1.2709184544773109938594286324169565032629e-8', '-8.198978038773931537165401098330611286589e-9'); + T('2.5283393571163e+11', '1.42605397244976960657e+16', '252833935711.63'); + T('-1.07482517991266460493961480563252855043997503069929863e+53', '4.0293147259356676513464190395e+2', '-327.97566262501963085789832435'); + T('-1.791459937048480305498333255301e-17', '-3.60140444532360031210882850839206992361061e+32', '-1.791459937048480305498333255301e-17'); + T('-3.7973618905e+4', '2.076660739009108092554128277835978289058948608e+27', '-37973.618905'); + T('4.296835337235213305241997742797979761241859185e+32', '1.016128323816741556885745789299051e+30', '8.773810728563935184150511955984541241859185e+29'); + T('-3.3476803669790089330287396786213536648e-19', '-1.0485228843496121655433179024642877076320529176e-16', '-3.3476803669790089330287396786213536648e-19'); + T('-9.265001828356e-19', '5.82146621596502038608123809e+5', '-9.265001828356e-19'); + T('1.6574237778185417162412521417931606051387220789593e+6', '4.3416420707553748006564234818e+29', '1657423.7778185417162412521417931606051387220789593'); + T('-9.774062277712948833378e-13', '3.080037033054419810654271948e-15', '-1.034488293043803360395792484e-15'); + T('1.0480042083686042910696085478682293620068215e+43', '-9.1636346772043682784439956904897547881091051932e+20', '711021412902451879505.0635467550321309923369716'); + T('-3.40923816647136940940085344632137226188233200061358e+20', '1.6073165168980479523827835495337e+31', '-340923816647136940940.085344632137226188233200061358'); + T('-8.7800373379e+9', '1.589967630656932636460925283862063976207125245919e-11', '-2.20858757786189096197325170019616955392212367465e-12'); + T('-1.508492483290420652523454481016576379245159230227181384539e+43', '9.65407339051e-1', '-0.95207917271339'); + T('1.70797882e-17', '-1.221287649130143636399302725332474299568133811751e+13', '1.70797882e-17'); + T('2.25e+0', '7.2018713275608502122703864334941124435400603003965e+49', '2.25'); + T('3.66e+3', '-2.00125759501079698887197092755e+20', '3660'); + T('1.074410572430091406447031457374002693e+8', '1.14072231468921335177378921904e+16', '107441057.2430091406447031457374002693'); + T('-3.8968391781145045605e+7', '3.823518283e-1', '-0.379345773205'); + T('3.8807293359084454309373e-14', '-6.54951383e-4', '3.8807293359084454309373e-14'); + T('8.3790348726489133341557987289125627922491641304972332e+10', '1.88761931097750519978e+9', '735099043.478904551237987289125627922491641304972332'); + T('1.5282357157991306e+9', '9.951e+0', '4.4051306'); + T('1.1776422045e-12', '1.94520506072334528824768019674726837220814205e+44', '1.1776422045e-12'); + T('-5.738265352165406462762631804597466473267412948e+18', '-1.5172659934372962e+16', '-2999896972426826.762631804597466473267412948'); + T('1.021717777232460732646336675651455853866e-8', '-1.31332207597e+9', '1.021717777232460732646336675651455853866e-8'); + T('6e+0', '9.3047796711618934817610173062034274e+10', '6'); + T('-1.182956037757676026896657463893805186423539855204970266169e-13', '1.7827584304157093780925160931953100051299721649998e-2', '-1.182956037757676026896657463893805186423539855204970266169e-13'); + T('2.2104533461720397849851124115599254191623707092353e-11', '-4.0310943429346438323447892668604172339295221650618858e+41', '2.2104533461720397849851124115599254191623707092353e-11'); + T('1.722426520663101950880778227697e+10', '-2.69592201025681600543464676120992735285696714886632140343386e-2', '0.0223237854099389241141349574091483444628934259089076259401818'); + T('-3.25603413629979799893671467886183127646824550309804207e+34', '1.47161894610216114600651e+17', '-34172500003558300.1070534550309804207'); + T('-1.08739354e+2', '2.9193728838924110750652340949692628787e+16', '-108.739354'); + T('3.206759288064547512180035e+2', '4.35800600237216221853047563599293340753408e+23', '320.6759288064547512180035'); + T('-2.21248e+1', '-2.6325594996226359777509157939720585725219065458496707707e+52', '-22.1248'); + T('7.073189319e+2', '1.08209742786e+6', '707.3189319'); + T('-2.1907210461355111297041e+18', '-9.2745316314605247152343780428919501619175952441700562494e+16', '-57578770899590445.200193050134851462758953093840887062638'); + T('-5.16796251732448951395790039385689407742691059264573e+50', '1.6780101630562e+12', '-1253088706638'); + T('3.51223602606475213080940254052176926846990239224958899e+38', '-1.63965e+2', '137.150239224958899'); + T('8.1882456091960208142365059003084619285549256998568554e+32', '4.64295172738148816415249852304269862921945245047076609476e-12', '1.24381368401600627920725181533134960575834680987278935368e-12'); + T('1.5813114524781473056173591272288745672e+30', '2.42e+0', '1.9745672'); + T('7.454553e+7', '1.538906639e+1', '15.23005577'); + T('1.51240970967848419751948592395604701e+29', '6.5611662e-15', '2.51558e-17'); + T('8.27911469397271464898e+18', '-1.2068203240037786014348e+22', '8279114693972714648.98'); + T('-3.20852252575e-6', '2.775014697501612276189583840612e+24', '-0.00000320852252575'); + T('-1.170515851548909718864331941709405324e+36', '7.57552e+1', '-34.552'); + T('-3.84525210626e-14', '1.010105187954696781e-14', '-8.14936542395909657e-15'); + T('-1.77609228049985890329999e+23', '-6.46964642626693630854488379333298772649377016e+44', '-1.77609228049985890329999e+23'); + T('-2.6073763079e+3', '-1.0248349080124110516237552578873628724235803267839057233638e+47', '-2607.3763079'); + T('-1.3843135851252423514202512138558e+2', '6.264100013e+5', '-138.43135851252423514202512138558'); + T('1.737e+1', '-8.726745986924851889490167717196421297465059646521e-5', '0.00002298524516705360208547066072715688662132777520597'); + T('-1.841251966e+6', '-4.01007093384313393333803996623363e+3', '-629.40736600152459783965549876383'); + T('-7.9035320783720205756630542761451846e+28', '-2.599e-14', '-7.27e-15'); + T('8.04680904556172181303021860819810222422429215449526e-9', '6.067916963498582356994976035938910323855806689699e+7', '8.04680904556172181303021860819810222422429215449526e-9'); + T('-3.2591991380971738720016943747147239739143e+31', '-1.73144320279140892221728899407693684286357446057721685e-18', '-1.27592813736665621853520468633947214694438394987425995e-18'); + T('-1.2588878e-17', '3.261793e+3', '-1.2588878e-17'); + T('5.43e+1', '1.052831202498586189323776187910882192514844872077623859821e+39', '54.3'); + T('4.06387835714e+8', '2.33202324535463287957487622607173811837788707819610667687974e+21', '406387835.714'); + T('5.67752073680296031467842e-19', '-8.601036147246856e-8', '5.67752073680296031467842e-19'); + T('-5.6e+0', '-1.8453950994974064478634206768933065169074111213e-6', '-9.38967160341442620882313109909923108359525446e-7'); + T('-2.401261282811e-19', '2.056364582076044663398637567011867699558230779795276645e-10', '-2.401261282811e-19'); + T('1.0071885115326611960091167358045295888291572049818e+17', '-1.155335154293012676567e+5', '25104.02532384871469245888291572049818'); + T('1.014158574325029197139040004809e+30', '1.232019764151304366892839731605883657742763048324806262665e+25', '9.1852662414944875300513403008082924671691409524768246786e+24'); + T('-1.2960509353603657966595552033959658985645676032863193e+52', '7.312148044790448624282108771e+15', '-3433711470718028.563736068134'); + T('3.01768950813493722706548378704076026752577936470035725e+18', '1.9656153202749223229990334e-3', '0.00073182798214321319862218230035725'); + T('1.138167248709526636888918903478056867722716985003746e+26', '3.6048159266517496763778284439e+18', '719311038898532672.7955886026722716985003746'); + T('1.8330798601350027076470730268735578842175174524571662455e+23', '5.956531185e+5', '15372.61868735578842175174524571662455'); + T('5.64642126873494799157e+20', '-8.4189838723261978274550066411375501139050432727008990287e+35', '564642126873494799157'); + T('-3.35038698584922285256354681261850266025e+11', '-4.971223451368832884824701430128927927628669283992608676e+11', '-335038698584.922285256354681261850266025'); + T('-2.18228628448939641477994931560863e+14', '-1.9848009280011383843320378679218954e+17', '-218228628448939.641477994931560863'); + T('-7.9673369189287490637419160450685121345328702274551959142e+1', '-4.36967584013770925112063732602257274835575300806170773838e+56', '-79.673369189287490637419160450685121345328702274551959142'); + T('-6e+0', '-1.355953074987858129012845374276873617e+9', '-6'); + T('2.8980599713949417129214483614111169203417835e+30', '2.09234393781487031432546596319751546520229578e-7', '3.5199820166059069684596128491376185333182764e-8'); + T('-1.05885215e+2', '6.96134e+3', '-105.885215'); + T('-6.63850464900027698e-11', '1.47441847556286416976794431734798800248343e+1', '-6.63850464900027698e-11'); + T('5.329e+0', '-4.2052296626044402413438748554367560246832050927e+46', '5.329'); + T('-3e+0', '6.310795365619607762092711e+14', '-3'); + T('-1e+0', '-6.151436486161577e+1', '-1'); + T('1.27372286268e+5', '1.4369236059213560786734339762024606028559549e-11', '1.1838867423641287048289062782741685583483082e-11'); + T('-2.47796406858881525393148342132e-19', '-1.114448296870693752476671e+24', '-2.47796406858881525393148342132e-19'); + T('3.31716916602e-3', '2.18973397623066249876504033115990763189329335e-11', '3.5801106985221822189595541951629188768773145e-12'); + T('3.36130377710864393490577917996361199494e+23', '-6.01033888502758381063377894374191325727e+38', '3.36130377710864393490577917996361199494e+23'); + T('-4.05078537570850079118549718e+24', '5.77875486336186078309057e+19', '-51579137737238062500.3271'); + T('-3.882925224099795993538502419426e+9', '1.77e+2', '-114.099795993538502419426'); + T('-3.1151827562342815382088011269e-4', '-9.5939986106878750496332e+22', '-0.00031151827562342815382088011269'); + T('1.263515691650061656757086438088937011975691e-9', '-7.548241773275363671025372541e+26', '1.263515691650061656757086438088937011975691e-9'); + T('-2.54581764865280637563363587278172942730649726409174798929e-16', '9.70709912979e+3', '-2.54581764865280637563363587278172942730649726409174798929e-16'); + T('4.544262038438149962548431721262064539926203e+22', '-3e+0', '0.31721262064539926203'); + T('6.7686482995324e-8', '3.57628817229923120251439846315e+11', '6.7686482995324e-8'); + T('-2.5837243515207675215858826036e+0', '4e+0', '-2.5837243515207675215858826036'); + T('3.5866287777543048262613523108599769647097333e-12', '6e+0', '3.5866287777543048262613523108599769647097333e-12'); + T('-1.12950543165722419512831984028282909551894468294664944607538e+48', '-8.8994740827559322848961144561345767240206011017e+24', '-4.3060230186943786250552209277543855025500782967e+24'); + T('1.32629615572864315471240257652101515250879349726101e+50', '1.24518406684607715300780841979783985e+7', '11819939.0138645251983859235118410325'); + T('-1.790115489391445059426395198670071179664972568459e+32', '-1.6684469764e+8', '-13018319.8379664972568459'); + T('-4.043663364e+4', '-2.201805700480933156346652411e-3', '-0.000764247759663998270288369046'); + T('1e+0', '-1.21869963007789517796039072048232e+19', '1'); + T('2.569643022111077e+3', '7.5897425087682454375918533810051138006394242e+43', '2569.643022111077'); + T('5.462e+2', '1.185649353252424966708806431224964085816087803853753518e+25', '546.2'); + T('1.77779806e+1', '1.884041077778132016302158377e-11', '3.69280262144004372920946142e-12'); + T('-4.30600314463832449294350446141214505790227492e+37', '3.62303831544018299428603870984582744317996855543826e+50', '-4.30600314463832449294350446141214505790227492e+37'); + T('1.46820318075561560819e-20', '-9.2923470300743146049252849193885672e-19', '1.46820318075561560819e-20'); + T('2.62e-8', '-2.272918110884608589603164353380779123924726e+42', '2.62e-8'); + T('-4.946872029105116445758491681281820008627914126e+12', '3.553464565566610158e+4', '-18242.079207968012581281820008627914126'); + T('-5.444799946684106145173105e+19', '3.2264562027032003440966e-1', '-0.29741218915109159338806'); + T('-6.6641862567771859738211631116152852541e-10', '4.53837850928448871996774473572127726597085345e+2', '-6.6641862567771859738211631116152852541e-10'); + T('2.04412473664652568585117378133e+21', '7.17977970071262225892475320830525724040709899422645111e+7', '6850552.6641959495615784496161192519568752280008915477'); + T('1.90389879643445938760898252e+18', '-2.820723572209116115220857118861930149808002989789986560298e+16', '14014003054351590.41100825036250679962863799684070900460034'); + T('3.54399572690074523717477041687706132576531580993088737845e+56', '3.86305546858881436338415083054757481145199924812285238142249e-8', '9.0010818560321987858218342657711149479512082543264309237906e-9'); + T('-2.81021903922014238242334e+23', '-3.81351478552287812572563406e+26', '-2.81021903922014238242334e+23'); + T('-6.6613160898e-13', '-1.35501662654877262254698379956968e+8', '-6.6613160898e-13'); + T('-1.37322505522894140472667261498601533454460065766486158656811e+56', '-6.101994414072054045611858917329e+20', '-111378121206362165144.3203824528'); + T('-7.174927106677644467861669419e+23', '7.3781216744e-6', '-0.0000029266955552'); + T('-2.6550841471735130755928352857461281e-13', '2.29146598195364764153947e+4', '-2.6550841471735130755928352857461281e-13'); + T('-1.98282995527163119617853095482026820489347564940576571365074e+44', '-6.7343972311468478371503508710588269021e+22', '-1.8425585476108166553720676776558276153e+22'); + T('3.45510770293428430743226307247e-10', '-3.453355686854751488683981e-4', '3.45510770293428430743226307247e-10'); + T('3.0940169147998267e+16', '-5.1679827115186675000881679620188097860809e-4', '0.00045494105050079175531229543905152624215823'); + T('-5.683707359160590767482385181054893368911539362771215016167e-10', '8.86164094021739567981e+19', '-5.683707359160590767482385181054893368911539362771215016167e-10'); + T('-5.1599750984803110105e+16', '-3.5042033e+8', '-313986840.105'); + T('-6.648136108552158227395470978468104077135e+30', '-7.670622e+6', '-1963500.104077135'); + T('5.7863814022935592013463113844081501644834124668e+33', '2.927394204321791269473573349413773145813098792e+20', '144279721918792318844.9709640995481667887767448'); + T('1.846283862301720586500752e+20', '-2.76680920710526658074e+14', '37882799751297.269222'); + T('-4.074907e+6', '1.2292e-10', '-1.156e-11'); + T('-2.4670327357021349034013736e+26', '-2.247694648202153e+3', '-1262.063905639966'); + T('4.5429277175861978297034645864160147622314348499084882862362e-18', '2.7386e-2', '4.5429277175861978297034645864160147622314348499084882862362e-18'); + T('2.157162452863075302863915e+18', '-3.60299993558464831757535049083884559e+35', '2157162452863075302.863915'); + T('7.7382289705506563990171491235511002471989281027800113e+22', '2.48970493035763788684e-5', '0.000011085865185482489695400113'); + T('-1.9064913834485914061878309425875120670837105e+5', '-3e+0', '-2.13834485914061878309425875120670837105'); + T('-5.48175104358179142491638230233e+25', '-1.52434523822871140847e-11', '-8.8309288545189098888e-12'); + T('1.07984359784457855e+6', '2.92533631912192887348822954567386e+32', '1079843.59784457855'); + T('-5.343344296409307514661858172266262866671109159598323e+9', '2.3273061846552018803169584402231121660442419923712e+8', '-223270690.167863377964549603775416101373776776381683'); + + log('\n ' + passed + ' of ' + total + ' tests passed in ' + (+new Date() - start) + ' ms \n'); + return [passed, total];; +})(this.BigNumber); +if (typeof module !== 'undefined' && module.exports) module.exports = count; \ No newline at end of file diff --git a/node_modules/mysql/node_modules/bignumber.js/test/neg.js b/node_modules/mysql/node_modules/bignumber.js/test/neg.js new file mode 100644 index 0000000..b5ae381 --- /dev/null +++ b/node_modules/mysql/node_modules/bignumber.js/test/neg.js @@ -0,0 +1,544 @@ +var count = (function neg(BigNumber) { + var start = +new Date(), + log, + error, + passed = 0, + total = 0; + + if (typeof window === 'undefined') { + log = console.log; + error = console.error; + } else { + log = function (str) { document.body.innerHTML += str.replace('\n', '
      ') }; + error = function (str) { document.body.innerHTML += '
      ' + + str.replace('\n', '
      ') + '
      ' }; + } + + if (!BigNumber && typeof require === 'function') BigNumber = require('../bignumber'); + + function assert(expected, actual) { + total++; + if (expected !== actual) { + error('\n Test number: ' + total + ' failed'); + error(' Expected: ' + expected); + error(' Actual: ' + actual); + //process.exit(); + } + else { + passed++; + //log('\n Expected and actual: ' + actual); + } + } + + function T(expected, value){ + assert(String(expected), new BigNumber(value).neg().toString()); + } + + function isMinusZero(n) { + return n.toString() === '0' && n.s == -1; + } + + log('\n Testing neg...'); + + BigNumber.config({ + DECIMAL_PLACES : 20, + ROUNDING_MODE : 4, + ERRORS : true, + RANGE : 1E9, + EXPONENTIAL_AT : [-7, 21] + }); + + T(-4, 4); + T(-2147483648, 2147483648); + T(-0.25, 0.25); + T(-0.0625, 0.0625); + T(-1, 1); + T(1, -1); + T(0, 0); + T(NaN, NaN); + T(-Infinity, Infinity); + T(-Infinity, +Infinity); + T(Infinity, -Infinity); + T(+Infinity, -Infinity); + + T('0', '0'); + T('-238', '238'); + T('1.3e-11', '-0.000000000013'); + T('-33.1', '33.1'); + T('2.61', '-2.61'); + T('-4', '4.0'); + T('-5.8', '5.8'); + T('-3.52e-7', '0.000000352'); + T('190', '-190'); + T('4.47', '-4.47'); + T('6.9525e-12', '-0.0000000000069525'); + T('1.3', '-1.3'); + T('-6.21', '6.21'); + T('2', '-2'); + T('-1', '1'); + T('147.857', '-147.857'); + T('-26.517', '26.517'); + T('-3', '3'); + T('5', '-5'); + T('204', '-204'); + T('2.1e-8', '-0.000000021'); + T('3.7015e-7', '-0.00000037015'); + T('-50.1839', '50.1839'); + T('44768.1', '-44768.1'); + T('3.8e-15', '-0.0000000000000038'); + T('-7.4379', '7.4379'); + T('1.5', '-1.5'); + T('6.0399', '-6.0399'); + T('109.07', '-109.070'); + T('1582', '-1582'); + T('-772', '772'); + T('-6.7824e-14', '0.000000000000067824'); + T('-1.819e-8', '0.00000001819'); + T('-3e-15', '0.0000000000000030'); + T('-424120', '424120'); + T('-1814.54', '1814.54'); + T('-4.295e-17', '0.00000000000000004295'); + T('-5', '5'); + T('2152', '-2152'); + T('4.6', '-4.6'); + T('1.9', '-1.9'); + T('-2', '2.0'); + T('-0.00036', '0.00036'); + T('-0.000006962', '0.000006962'); + T('3.6', '-3.6'); + T('-1.1495e-14', '0.000000000000011495'); + T('-312.4', '312.4'); + T('4.3e-10', '-0.00000000043'); + T('5', '-5'); + T('-1.8911e-8', '0.000000018911'); + T('4963.53', '-4963.53'); + T('-4.3934e-10', '0.00000000043934'); + T('-1.3', '1.30'); + T('-1', '1.0'); + T('-68.32', '68.32'); + T('0.014836', '-0.014836'); + T('8', '-8'); + T('2.1351', '-2.13510'); + T('162224', '-162224'); + T('3e-19', '-0.00000000000000000030'); + T('0.00004985', '-0.00004985'); + T('28.9321', '-28.9321'); + T('-2', '2'); + T('-16688', '16688'); + T('-1', '1'); + T('5', '-5'); + T('-20', '20.0'); + T('-1.9', '1.9'); + T('3', '-3'); + T('185640', '-185640'); + T('-0.0000058', '0.0000058'); + T('9.67e-13', '-0.000000000000967'); + T('-707.98', '707.98'); + T('2.57917', '-2.57917'); + T('-1.3', '1.3'); + T('-4.2655', '4.2655'); + T('-149.6', '149.6'); + T('-1.32383', '1.32383'); + T('-26.925', '26.925'); + T('-0.00013', '0.00013'); + T('-6868', '6868'); + T('7', '-7'); + T('-5e-9', '0.0000000050'); + T('3.2555e-16', '-0.00000000000000032555'); + T('1.42768e-13', '-0.000000000000142768'); + T('11.2962', '-11.2962'); + T('3186.7', '-3186.7'); + T('-6.9', '6.9'); + T('-6.2618e-7', '0.00000062618'); + T('8', '-8'); + T('-8.04', '8.04'); + T('-22', '22'); + T('-750.6', '750.6'); + T('12.803', '-12.803'); + T('-20513.4', '20513.4'); + T('114781', '-114781'); + T('-16.9046', '16.9046'); + T('4.6e-7', '-0.00000046'); + T('-31399', '31399'); + T('1.04', '-1.04'); + T('-51.2544', '51.2544'); + T('1.023e-15', '-0.000000000000001023'); + T('281', '-281'); + T('-128315', '128315'); + T('20.2', '-20.2'); + T('9', '-9'); + T('-10', '10'); + T('-1.92262e-17', '0.0000000000000000192262'); + T('-0.0023', '0.0023'); + T('5', '-5'); + T('7', '-7'); + T('13.72', '-13.72'); + T('98068', '-98068'); + T('3.2', '-3.2'); + T('1.1', '-1.1'); + T('-3.97e-18', '0.000000000000000003970'); + T('0.00334824', '-0.00334824'); + T('-5.4892e-8', '0.000000054892'); + T('-1', '1.0'); + T('-2.8135e-8', '0.000000028135'); + T('-1.816e-13', '0.0000000000001816'); + T('199724', '-199724'); + T('-19.4', '19.40'); + T('-12.74', '12.74'); + T('-2171.8', '2171.8'); + T('-2.7', '2.7'); + T('1', '-1.0'); + T('21779', '-21779'); + T('8.9e-12', '-0.0000000000089'); + T('-4.51', '4.51'); + T('2.6', '-2.6'); + T('-0.00016', '0.000160'); + T('6', '-6'); + T('50.566', '-50.566'); + T('-16.2', '16.2'); + T('-7.9156e-20', '0.000000000000000000079156'); + T('-2262.4', '2262.4'); + T('6468.59', '-6468.59'); + T('0.077', '-0.077'); + T('-465.83', '465.83'); + T('-604.59', '604.59'); + T('-0.0014917', '0.0014917'); + T('-2.8954', '2.8954'); + T('1', '-1'); + T('1942', '-1942'); + T('-182.308', '182.308'); + T('-17.8', '17.8'); + T('39472.5', '-39472.5'); + T('214.21', '-214.21'); + T('-40.11', '40.11'); + T('-3', '3'); + T('141149', '-141149'); + T('-8', '8.0'); + T('-2.9', '2.9'); + T('44.51', '-44.51'); + T('-5.3', '5.3'); + T('0.05498', '-0.054980'); + T('7', '-7'); + T('-922', '922.0'); + T('-1.5146e-14', '0.000000000000015146'); + T('-0.000008117', '0.000008117'); + T('1', '-1'); + T('5452.81', '-5452.81'); + T('751745', '-751745'); + T('-2.7', '2.7'); + T('5.1', '-5.1'); + T('-1', '1'); + T('-524124', '524124'); + T('-183.5', '183.50'); + T('44856.8', '-44856.8'); + T('0.00000387', '-0.00000387'); + T('-3.0544e-14', '0.000000000000030544'); + T('1.3', '-1.3'); + T('-0.0019273', '0.0019273'); + T('75428', '-75428'); + T('-91.7925', '91.7925'); + T('44.5', '-44.5'); + T('-2', '2'); + T('5.3', '-5.3'); + T('-57', '57'); + T('-2.53e-9', '0.00000000253'); + T('18258', '-18258'); + T('0.829', '-0.829'); + T('-4', '4'); + T('-1', '1'); + T('10.289', '-10.289'); + T('319', '-319'); + T('2.4', '-2.4'); + T('89.9207', '-89.9207'); + T('-9.06122e-17', '0.0000000000000000906122'); + T('-102.639', '102.639'); + T('948.5', '-948.50'); + T('-610.7', '610.7'); + T('-1.61', '1.61'); + T('-99.042', '99.042'); + T('3.0232', '-3.0232'); + T('-15', '15'); + T('-3.835', '3.835'); + T('-7', '7'); + T('1', '-1'); + T('21.46', '-21.46'); + T('2', '-2'); + T('-2077.79', '2077.79'); + T('-14.7446', '14.7446'); + T('-9.11e-12', '0.00000000000911'); + T('1.2', '-1.2'); + T('-105851', '105851'); + T('24.561', '-24.561'); + T('780', '-780'); + T('3.82122', '-3.82122'); + T('9564', '-9564'); + T('-13.21', '13.21'); + T('25020.5', '-25020.5'); + T('-5678.6', '5678.6'); + T('1', '-1.0'); + T('2.6', '-2.6'); + T('9.6e-16', '-0.000000000000000960'); + T('12.6', '-12.6'); + T('-5', '5'); + T('-537', '537'); + T('-85', '85'); + T('758.15', '-758.15'); + T('-67.55', '67.55'); + T('-9444', '9444'); + T('21.4', '-21.4'); + T('2.5', '-2.5'); + T('489311', '-489311'); + T('6.8', '-6.8'); + T('4.29', '-4.29'); + T('23982', '-23982.0'); + T('-0.0111781', '0.0111781'); + T('4.96e-20', '-0.0000000000000000000496'); + T('-40.5481', '40.5481'); + T('-32.52', '32.52'); + T('-7.4', '7.4'); + T('1008', '-1008'); + T('1.2', '-1.2'); + T('-5', '5.0'); + T('-2463.4', '2463.4'); + T('7.363', '-7.363'); + T('2.8', '-2.8'); + T('-14498', '14498'); + T('201', '-201'); + T('3.2', '-3.2'); + T('-3.05', '3.05'); + T('1.1', '-1.1'); + T('-380.4', '380.4'); + T('13399', '-13399'); + T('-20.44', '20.44'); + T('1.6', '-1.6'); + T('2.1234e-10', '-0.00000000021234'); + T('4404.1', '-4404.1'); + T('2.4345', '-2.4345'); + T('-117.256', '117.256'); + T('-6.025', '6.025'); + T('18.43', '-18.43'); + T('-47.5', '47.5'); + T('45.1', '-45.1'); + T('-3806.5', '3806.5'); + T('-4.6', '4.6'); + T('-1.3', '1.3'); + T('-74.6', '74.60'); + T('-16.2088', '16.2088'); + T('788.6', '-788.6'); + T('-0.29', '0.29'); + T('1', '-1'); + T('-4.058', '4.058'); + T('5', '-5.0'); + T('0.00612', '-0.00612'); + T('-14317', '14317'); + T('-1.1801', '1.1801'); + T('-32.6', '32.6'); + T('57248', '-57248'); + T('-103', '103'); + T('-1.4', '1.4'); + T('228', '-228'); + T('92.8', '-92.8'); + T('3.46e-17', '-0.0000000000000000346'); + T('-15747', '15747'); + T('16.36', '-16.360'); + T('0.00223', '-0.00223'); + T('244', '-244'); + T('3.8', '-3.8'); + T('-604.2', '604.2'); + T('1.03', '-1.03'); + T('1487', '-1487'); + T('7', '-7'); + T('45', '-45.00'); + T('2.55374e-10', '-0.000000000255374'); + T('3', '-3'); + T('-5.5', '5.5'); + T('-5.4', '5.4'); + T('-9', '9'); + T('-1627.2', '1627.2'); + T('1.0805e-16', '-0.00000000000000010805'); + T('-14.0548', '14.0548'); + T('-207137', '207137'); + T('3.8', '-3.8'); + T('-33.4785', '33.4785'); + T('4.28626', '-4.28626'); + T('-4', '4'); + T('-6', '6'); + T('-1', '1'); + T('-44.951', '44.951'); + T('29.7', '-29.7'); + T('-121.17', '121.17'); + T('480', '-480'); + T('-2.696', '2.696'); + T('-3708.62', '3708.62'); + T('2.8', '-2.8'); + T('17842', '-17842'); + T('-3', '3'); + T('-2', '2'); + T('-1.855', '1.855'); + T('246866', '-246866'); + T('-0.0022', '0.0022'); + T('-1', '1'); + T('1283', '-1283'); + T('2.1', '-2.1'); + T('3.289e-12', '-0.000000000003289'); + T('-1656', '1656'); + T('3.9', '-3.9'); + T('1.12', '-1.12'); + T('3.54e-16', '-0.000000000000000354'); + T('-0.001123', '0.001123'); + T('2.06551e-14', '-0.0000000000000206551'); + T('-19319.3', '19319.3'); + T('3', '-3'); + T('-6', '6'); + T('5.747e-17', '-0.00000000000000005747'); + T('-1.756', '1.756'); + T('2.71004e-15', '-0.00000000000000271004'); + T('1.4', '-1.4'); + T('-0.0000019', '0.00000190'); + T('-6', '6'); + T('-31.4', '31.4'); + T('1', '-1'); + T('-39.954', '39.9540'); + T('8.4', '-8.40'); + T('5.3382e-17', '-0.0000000000000000533820'); + T('8.4', '-8.4'); + T('-106', '106'); + T('905', '-905'); + T('-2030.8', '2030.8'); + T('0.19358', '-0.193580'); + T('50057.4', '-50057.4'); + T('8.0731e-15', '-0.0000000000000080731'); + T('2.4', '-2.4'); + T('-1', '1'); + T('0.026038', '-0.026038'); + T('-22', '22'); + T('-2.8', '2.8'); + T('0.00110001', '-0.00110001'); + T('7', '-7'); + T('-705', '705'); + T('-36046', '36046'); + T('2.42', '-2.42'); + T('-1.225', '1.225'); + T('36.8', '-36.8'); + T('6.8926', '-6.8926'); + T('163575', '-163575'); + T('3.29e-16', '-0.000000000000000329'); + T('-3.9612e-20', '0.000000000000000000039612'); + T('6.3', '-6.3'); + T('1.1', '-1.1'); + T('-53', '53'); + T('-6.3', '6.3'); + T('-3.73', '3.73'); + T('5.99e-13', '-0.000000000000599'); + T('-0.0453', '0.0453'); + T('6.2', '-6.2'); + T('5', '-5'); + T('4.85599e-7', '-0.000000485599'); + T('-6.554e-19', '0.0000000000000000006554'); + T('245.2', '-245.20'); + T('-12.557', '12.557'); + T('8.7', '-8.7'); + T('-38.7', '38.7'); + T('1.1291', '-1.1291'); + T('-3', '3'); + T('40533.9', '-40533.9'); + T('135.1', '-135.1'); + T('-213', '213'); + T('-271352', '271352'); + T('-159.9', '159.9'); + T('-103632', '103632'); + T('-0.00000225418', '0.00000225418'); + T('-2.1e-16', '0.00000000000000021'); + T('14.5', '-14.5'); + T('48016', '-48016'); + T('282', '-282.0'); + T('9.3552e-18', '-0.0000000000000000093552'); + T('237', '-237'); + T('-21.1', '21.1'); + T('2.281', '-2.281'); + T('-4.68312', '4.68312'); + T('7', '-7'); + T('6', '-6'); + T('5.3', '-5.3'); + T('-681.586', '681.586'); + T('-1.59e-16', '0.0000000000000001590'); + T('-2.94', '2.94'); + T('-1', '1'); + T('7.03', '-7.03'); + T('5.73608e-13', '-0.000000000000573608'); + T('2', '-2'); + T('-1.26e-18', '0.00000000000000000126'); + T('-1.5e-14', '0.000000000000015'); + T('2', '-2'); + T('-44', '44'); + T('-1.3928', '1.3928'); + T('18811.4', '-18811.4'); + T('6.6', '-6.6'); + T('1.99', '-1.99'); + T('-6.6496e-14', '0.000000000000066496'); + T('27.184', '-27.184'); + T('0.00007614', '-0.00007614'); + T('5478', '-5478.0'); + T('-30.6432', '30.6432'); + T('-108', '108'); + T('-1', '1'); + T('-61', '61'); + T('4', '-4'); + T('-0.032192', '0.032192'); + T('2.6e-8', '-0.000000026'); + + BigNumber.config({EXPONENTIAL_AT : 0}); + + T('-5.0600621890668482322956892808849303e+20', '5.0600621890668482322956892808849303e+20'); + T('7e+0', '-7e+0'); + T('-6.1095374220609e+13', '6.1095374220609e+13'); + T('9.01e+2', '-9.01e+2'); + T('-1.016984074247269470395836690098169093010136836967e+39', '1.016984074247269470395836690098169093010136836967e+39'); + T('-1.497639134680472576e+18', '1.497639134680472576e+18'); + T('-4.1717657571404248e+16', '4.1717657571404248e+16'); + T('8.983272e+1', '-8.983272e+1'); + T('-5.308416e+6', '5.308416e+6'); + T('-2.09764e+3', '2.09764e+3'); + T('-3.83432050166120236679168e+23', '3.83432050166120236679168e+23'); + T('-4.096e+3', '4.096e+3'); + T('2.679971527468745095582058350756311201706813294321409e+51', '-2.679971527468745095582058350756311201706813294321409e+51'); + T('-5.067853299870089529116832768e+2', '5.067853299870089529116832768e+2'); + T('-3.48822062687911109850066182676769e+32', '3.48822062687911109850066182676769e+32'); + T('-1e+0', '1e+0'); + T('4.2773e+0', '-4.2773e+0'); + T('5.8169306081172252508071119604378757744768e+12', '-5.8169306081172252508071119604378757744768e+12'); + T('-1e+0', '1e+0'); + T('1.51655708279450944384385164853883404204414169862685507e+46', '-1.51655708279450944384385164853883404204414169862685507e+46'); + T('-8.1e+1', '8.1e+1'); + T('-1.296e+3', '1.296e+3'); + T('-2.9e+0', '2.9e+0'); + T('-1.764e+3', '1.764e+3'); + T('9.3418332730097368870513138581415704704611459349313e+49', '-9.3418332730097368870513138581415704704611459349313e+49'); + T('-Infinity', Infinity); + T('-Infinity', 'Infinity'); + T('Infinity', -Infinity); + T('Infinity', '-Infinity'); + T('NaN', NaN); + T('NaN', 'NaN'); + + BigNumber.config({EXPONENTIAL_AT : 1e+9}); + + assert(-1, new BigNumber(2).neg().s); + assert(1, new BigNumber(-2).neg().s); + assert(null, new BigNumber(NaN).neg().s); + assert(null, new BigNumber('-NaN').neg().s); + assert(-1, new BigNumber(Infinity).neg().s); + assert(1, new BigNumber('-Infinity').neg().s); + + assert(false, isMinusZero(new BigNumber(1).neg())); + assert(true, isMinusZero(new BigNumber(0).neg())); + assert(true, isMinusZero(new BigNumber(0).neg())); + assert(true, isMinusZero(new BigNumber('0.00000').neg())); + assert(true, isMinusZero(new BigNumber('+0.0').neg())); + assert(false, isMinusZero(new BigNumber(-0).neg())); + assert(false, isMinusZero(new BigNumber('-0').neg())); + + log('\n ' + passed + ' of ' + total + ' tests passed in ' + (+new Date() - start) + ' ms \n'); + return [passed, total];; +})(this.BigNumber); +if (typeof module !== 'undefined' && module.exports) module.exports = count; \ No newline at end of file diff --git a/node_modules/mysql/node_modules/bignumber.js/test/others.js b/node_modules/mysql/node_modules/bignumber.js/test/others.js new file mode 100644 index 0000000..781a2ca --- /dev/null +++ b/node_modules/mysql/node_modules/bignumber.js/test/others.js @@ -0,0 +1,361 @@ +var count = (function others(BigNumber) { + var start = +new Date(), + log, + error, + n, + passed = 0, + total = 0; + + if (typeof window === 'undefined') { + log = console.log; + error = console.error; + } else { + log = function (str) { document.body.innerHTML += str.replace('\n', '
      ') }; + error = function (str) { document.body.innerHTML += '
      ' + + str.replace('\n', '
      ') + '
      ' }; + } + + if (!BigNumber && typeof require === 'function') BigNumber = require('../bignumber'); + + function assert(expected, actual) { + total++; + if (expected !== actual) { + error('\n Test number: ' + total + ' failed'); + error(' Expected: ' + expected); + error(' Actual: ' + actual); + //process.exit(); + } + else { + passed++; + //log('\n Expected and actual: ' + actual); + } + } + + log('\n Testing others...'); + + /* + * + * isFinite + * isNaN + * isNegative + * isZero + * equals + * greaterThan + * greaterThanOrEqualTo + * lessThan + * lessThanOrEqualTo + * valueOf + * + */ + + BigNumber.config({ + DECIMAL_PLACES : 20, + ROUNDING_MODE : 4, + EXPONENTIAL_AT : 1e+9, + RANGE : 1e+9, + ERRORS : true + }); + + n = new BigNumber(1); + assert(true, n.isFinite()); + assert(false, n.isNaN()); + assert(false, n.isNegative()); + assert(false, n.isZero()); + assert(true, n.equals(n)); + assert(true, n.equals(n, 2)); + assert(true, n.equals(1, 3)); + assert(true, n.equals(n, 4)); + assert(true, n.equals(1, 5)); + assert(true, n.equals(n, 6)); + assert(true, n.equals(1, 7)); + assert(true, n.equals(n, 8)); + assert(true, n.equals(1, 9)); + assert(true, n.equals(n, 10)); + assert(true, n.equals(n, 11)); + assert(true, n.equals(1, 12)); + assert(true, n.equals(n, 13)); + assert(true, n.equals(1, 14)); + assert(true, n.equals(n, 15)); + assert(true, n.equals(1, 16)); + assert(true, n.equals(n, 17)); + assert(true, n.equals(1, 18)); + assert(true, n.equals(n, 19)); + assert(true, n.equals('1.0', 20)); + assert(true, n.equals('1.00', 21)); + assert(true, n.equals('1.000', 22)); + assert(true, n.equals('1.0000', 23)); + assert(true, n.equals('1.00000', 24)); + assert(true, n.equals('1.000000', 25)); + assert(true, n.equals(new BigNumber(1, 10), 26)); + assert(true, n.equals(new BigNumber(1), 27)); + assert(true, n.equals(1, 28)); + assert(true, n.equals(1, 29)); + assert(true, n.equals(1, 30)); + assert(true, n.equals(1, 31)); + assert(true, n.equals(1, 32)); + assert(true, n.equals(1, 33)); + assert(true, n.equals(1, 34)); + assert(true, n.equals(1, 35)); + assert(true, n.equals(1, 36)); + assert(true, n.greaterThan(0.99999)); + assert(false, n.greaterThanOrEqualTo(1.1)); + assert(true, n.lessThan(1.001)); + assert(true, n.lessThanOrEqualTo(2)); + assert(n.toString(), n.valueOf()); + + n = new BigNumber('-0.1'); + assert(true, n.isF()); + assert(false, n.isNaN()); + assert(true, n.isNeg()); + assert(false, n.isZ()); + assert(false, n.equals(0.1)); + assert(false, n.greaterThan(-0.1)); + assert(true, n.greaterThanOrEqualTo(-1)); + assert(true, n.lessThan(-0.01)); + assert(false, n.lessThanOrEqualTo(-1)); + assert(n.toString(), n.valueOf()); + + n = new BigNumber(Infinity); + assert(false, n.isFinite()); + assert(false, n.isNaN()); + assert(false, n.isNegative()); + assert(false, n.isZero()); + assert(true, n.eq('Infinity')); + assert(true, n.eq(1/0)); + assert(true, n.gt('9e999')); + assert(true, n.gte(Infinity)); + assert(false, n.lt(Infinity)); + assert(true, n.lte(Infinity)); + assert(n.toString(), n.valueOf()); + + n = new BigNumber('-Infinity'); + assert(false, n.isF()); + assert(false, n.isNaN()); + assert(true, n.isNeg()); + assert(false, n.isZ()); + assert(false, n.equals(Infinity)); + assert(true, n.equals(-1/0)); + assert(false, n.greaterThan(-Infinity)); + assert(true, n.greaterThanOrEqualTo('-Infinity', 8)); + assert(true, n.lessThan(0)); + assert(true, n.lessThanOrEqualTo(Infinity)); + assert(n.toString(), n.valueOf()); + + n = new BigNumber('0.0000000'); + assert(true, n.isFinite()); + assert(false, n.isNaN()); + assert(false, n.isNegative()); + assert(true, n.isZero()); + assert(true, n.eq(-0)); + assert(true, n.gt(-0.000001)); // 81 + assert(false, n.gte(0.1)); + assert(true, n.lt(0.0001)); + assert(true, n.lte(-0)); + assert(n.toString(), n.valueOf()); + + n = new BigNumber(-0); + assert(true, n.isF()); + assert(false, n.isNaN()); + assert(true, n.isNeg()); + assert(true, n.isZ()); + assert(true, n.equals('0.000')); + assert(true, n.greaterThan(-1)); + assert(false, n.greaterThanOrEqualTo(0.1)); + assert(false, n.lessThan(0)); + assert(false, n.lessThan(0, 36)); + assert(true, n.lessThan(0.1)); + assert(true, n.lessThanOrEqualTo(0)); + assert(n.toString(), n.valueOf()); + + n = new BigNumber('NaN'); + assert(false, n.isFinite()); + assert(true, n.isNaN()); + assert(false, n.isNegative()); + assert(false, n.isZero()); + assert(false, n.eq(NaN)); + assert(false, n.eq(Infinity)); + assert(false, n.gt(0)); + assert(false, n.gte(0)); // 103 + assert(false, n.lt(1)); + assert(false, n.lte(-0)); + assert(false, n.lte(-1)); + assert(n.toString(), n.valueOf()); + + BigNumber.config({ ERRORS : false }); + + n = new BigNumber('hiya'); + assert(false, n.isFinite()); + assert(true, n.isNaN()); + assert(false, n.isNegative()); + assert(false, n.isZero()); + assert(false, n.equals(0)); + assert(false, n.greaterThan(0)); + assert(false, n.greaterThanOrEqualTo(-Infinity)); + assert(false, n.lessThan(Infinity)); + assert(false, n.lessThanOrEqualTo(0)); + assert(n.toString(), n.valueOf()); + + BigNumber.config({ ERRORS : true }); + + n = new BigNumber('-1.234e+2'); + assert(true, n.isF()); + assert(false, n.isNaN()); + assert(true, n.isNeg()); + assert(false, n.isZ()); + assert(true, n.eq(-123.4, 10)); + assert(true, n.gt('-ff', 16)); + assert(true, n.gte('-1.234e+3')); + assert(true, n.lt(-123.39999)); + assert(true, n.lte('-123.4e+0')); + assert(n.toString(), n.valueOf()); + + n = new BigNumber('5e-200'); + assert(true, n.isFinite()); + assert(false, n.isNaN()); + assert(false, n.isNegative()); + assert(false, n.isZero()); + assert(true, n.equals(5e-200)); + assert(true, n.greaterThan(5e-201)); + assert(false, n.greaterThanOrEqualTo(1)); + assert(true, n.lessThan(6e-200)); + assert(true, n.lessThanOrEqualTo(5.1e-200)); + assert(n.toString(), n.valueOf()); + + n = new BigNumber('1'); + assert(true, n.equals(n)); + assert(true, n.equals(n.toS())); + assert(true, n.equals(n.toString())); + assert(true, n.equals(n.valueOf())); + assert(true, n.equals(n.toFixed())); + assert(true, n.equals(1)); + assert(true, n.equals('1e+0')); + assert(false, n.equals(-1)); + assert(false, n.equals(0.1)); + + BigNumber.config({ ERRORS : false }); + + assert(false, new BigNumber(NaN).equals(0)); + assert(false, new BigNumber(null).equals(0)); + assert(false, new BigNumber(undefined).equals(0)); + assert(false, new BigNumber(Infinity).equals(0)); + assert(false, new BigNumber([]).equals(0)); + assert(false, new BigNumber([]).equals(0)); + assert(false, new BigNumber({}).equals(0)); + assert(false, new BigNumber('').equals(0)); + assert(false, new BigNumber(' ').equals(0)); + assert(false, new BigNumber('\t').equals(0)); + assert(false, new BigNumber('gerg').equals(0)); + assert(false, new BigNumber(new Date).equals(0)); + assert(false, new BigNumber(new RegExp).equals(0)); + assert(false, new BigNumber(0.1).equals(0)); + assert(false, new BigNumber(1e9 + 1).equals(1e9)); + assert(false, new BigNumber(1e9 - 1).equals(1e9)); + assert(true, new BigNumber(1e9 + 1).equals(1e9 + 1)); + assert(true, new BigNumber(1).equals(1)); + assert(false, new BigNumber(1).equals(-1)); + assert(false, new BigNumber(NaN).equals('efffe')); + + assert(false, new BigNumber('b').greaterThan('a')); + assert(false, new BigNumber('a').lessThan('b', 10)); + assert(true, new BigNumber('a', 16).lessThanOrEqualTo('ff', 16)); + assert(true, new BigNumber('b', 16).greaterThanOrEqualTo(9, 16)); + + BigNumber.config({ ERRORS : true }); + + assert(true, new BigNumber(10).greaterThan(10, 2)); + assert(true, new BigNumber(10).greaterThan(10, 3)); + assert(true, new BigNumber(10).greaterThan(10, 4)); + assert(true, new BigNumber(10).greaterThan(10, 5)); + assert(true, new BigNumber(10).greaterThan(10, 6)); + assert(true, new BigNumber(10).greaterThan(10, 7)); + assert(true, new BigNumber(10).greaterThan(10, 8)); + assert(true, new BigNumber(10).greaterThan(10, 9)); + assert(false, new BigNumber(10).greaterThan(10, 10)); + assert(false, new BigNumber(10).greaterThan(10, 11)); + assert(false, new BigNumber(10).greaterThan(10, 12)); + assert(false, new BigNumber(10).greaterThan(10, 13)); + assert(true, new BigNumber(10).lessThan(10, 11)); + assert(true, new BigNumber(10).lessThan(10, 12)); + assert(true, new BigNumber(10).lessThan(10, 13)); + assert(true, new BigNumber(10).lessThan(10, 14)); + assert(true, new BigNumber(10).lessThan(10, 15)); + assert(true, new BigNumber(10).lessThan(10, 16)); + assert(true, new BigNumber(10).lessThan(10, 17)); + assert(true, new BigNumber(10).lessThan(10, 18)); + assert(true, new BigNumber(10).lessThan(10, 19)); + assert(true, new BigNumber(10).lessThan(10, 20)); + assert(true, new BigNumber(10).lessThan(10, 21)); + assert(true, new BigNumber(10).lessThan(10, 22)); + assert(true, new BigNumber(10).lessThan(10, 34)); + assert(true, new BigNumber(10).lessThan(10, 35)); + assert(true, new BigNumber(10).lessThan(10, 36)); + assert(false, new BigNumber(NaN).lessThan(NaN)); + assert(false, new BigNumber(Infinity).lessThan(-Infinity)); + assert(false, new BigNumber(Infinity).lessThan(Infinity)); + assert(true, new BigNumber(Infinity, 10).lessThanOrEqualTo(Infinity, 2)); + assert(false, new BigNumber(NaN).greaterThanOrEqualTo(NaN)); + assert(true, new BigNumber(Infinity).greaterThanOrEqualTo(Infinity)); + assert(true, new BigNumber(Infinity).greaterThanOrEqualTo(-Infinity)); + assert(false, new BigNumber(NaN).greaterThanOrEqualTo(-Infinity)); + assert(true, new BigNumber(-Infinity).greaterThanOrEqualTo(-Infinity)); + + assert(false, new BigNumber(2, 10).greaterThan(10, 2)); + assert(false, new BigNumber(10, 2).lessThan(2, 10)); + assert(true, new BigNumber(255).lessThanOrEqualTo('ff', 16)); + assert(true, new BigNumber('a', 16).greaterThanOrEqualTo(9, 16)); + assert(false, new BigNumber(0).lessThanOrEqualTo('NaN')); + assert(false, new BigNumber(0).greaterThanOrEqualTo(NaN)); + assert(false, new BigNumber(NaN, 2).lessThanOrEqualTo('NaN', 36)); + assert(false, new BigNumber(NaN, 36).greaterThanOrEqualTo(NaN, 2)); + assert(false, new BigNumber(0).lessThanOrEqualTo(-Infinity)); + assert(true, new BigNumber(0).greaterThanOrEqualTo(-Infinity)); + assert(true, new BigNumber(0).lessThanOrEqualTo('Infinity', 36)); + assert(false, new BigNumber(0).greaterThanOrEqualTo('Infinity', 36)); + assert(false, new BigNumber(10).lessThanOrEqualTo(20, 4)); + assert(true, new BigNumber(10).lessThanOrEqualTo(20, 5)); + assert(false, new BigNumber(10).greaterThanOrEqualTo(20, 6)); + + assert(false, new BigNumber(1.23001e-2).lessThan(1.23e-2)); + assert(true, new BigNumber(1.23e-2).lt(1.23001e-2)); + assert(false, new BigNumber(1e-2).lessThan(9.999999e-3)); + assert(true, new BigNumber(9.999999e-3).lt(1e-2)); + + assert(false, new BigNumber(1.23001e+2).lessThan(1.23e+2)); + assert(true, new BigNumber(1.23e+2).lt(1.23001e+2)); + assert(true, new BigNumber(9.999999e+2).lessThan(1e+3)); + assert(false, new BigNumber(1e+3).lt(9.9999999e+2)); + + assert(false, new BigNumber(1.23001e-2).lessThanOrEqualTo(1.23e-2)); + assert(true, new BigNumber(1.23e-2).lte(1.23001e-2)); + assert(false, new BigNumber(1e-2).lessThanOrEqualTo(9.999999e-3)); + assert(true, new BigNumber(9.999999e-3).lte(1e-2)); + + assert(false, new BigNumber(1.23001e+2).lessThanOrEqualTo(1.23e+2)); + assert(true, new BigNumber(1.23e+2).lte(1.23001e+2)); + assert(true, new BigNumber(9.999999e+2).lessThanOrEqualTo(1e+3)); + assert(false, new BigNumber(1e+3).lte(9.9999999e+2)); + + assert(true, new BigNumber(1.23001e-2).greaterThan(1.23e-2)); + assert(false, new BigNumber(1.23e-2).gt(1.23001e-2)); + assert(true, new BigNumber(1e-2).greaterThan(9.999999e-3)); + assert(false, new BigNumber(9.999999e-3).gt(1e-2)); + + assert(true, new BigNumber(1.23001e+2).greaterThan(1.23e+2)); + assert(false, new BigNumber(1.23e+2).gt(1.23001e+2)); + assert(false, new BigNumber(9.999999e+2).greaterThan(1e+3)); + assert(true, new BigNumber(1e+3).gt(9.9999999e+2)); + + assert(true, new BigNumber(1.23001e-2).greaterThanOrEqualTo(1.23e-2)); + assert(false, new BigNumber(1.23e-2).gte(1.23001e-2)); + assert(true, new BigNumber(1e-2).greaterThanOrEqualTo(9.999999e-3)); + assert(false, new BigNumber(9.999999e-3).gte(1e-2)); + + assert(true, new BigNumber(1.23001e+2).greaterThanOrEqualTo(1.23e+2)); + assert(false, new BigNumber(1.23e+2).gte(1.23001e+2)); + assert(false, new BigNumber(9.999999e+2).greaterThanOrEqualTo(1e+3)); + assert(true, new BigNumber(1e+3).gte(9.9999999e+2)); + + log('\n ' + passed + ' of ' + total + ' tests passed in ' + (+new Date() - start) + ' ms \n'); + return [passed, total];; +})(this.BigNumber); +if (typeof module !== 'undefined' && module.exports) module.exports = count; \ No newline at end of file diff --git a/node_modules/mysql/node_modules/bignumber.js/test/plus.js b/node_modules/mysql/node_modules/bignumber.js/test/plus.js new file mode 100644 index 0000000..eba29e7 --- /dev/null +++ b/node_modules/mysql/node_modules/bignumber.js/test/plus.js @@ -0,0 +1,1969 @@ +var count = (function plus(BigNumber) { + var start = +new Date(), + log, + error, + undefined, + passed = 0, + total = 0, + n = 'null', + N = 'NaN', + I = 'Infinity'; + + if (typeof window === 'undefined') { + log = console.log; + error = console.error; + } else { + log = function (str) { document.body.innerHTML += str.replace('\n', '
      ') }; + error = function (str) { document.body.innerHTML += '
      ' + + str.replace('\n', '
      ') + '
      ' }; + } + + if (!BigNumber && typeof require === 'function') BigNumber = require('../bignumber'); + + function assert(expected, actual) { + total++; + if (expected !== actual) { + error('\n Test number: ' + total + ' failed'); + error(' Expected: ' + expected); + error(' Actual: ' + actual); + //process.exit(); + } + else { + passed++; + //log('\n Expected and actual: ' + actual); + } + } + + function T(addendA, addendB, expected) { + assert(String(expected), String(new BigNumber(addendA).plus(addendB))); + assert(String(expected), String(new BigNumber(addendA).plus(new BigNumber(addendB)))); + } + + function isMinusZero(n) { + return n.toString() === '0' && n.s == -1; + } + + log('\n Testing plus...'); + + BigNumber.config({ + DECIMAL_PLACES : 20, + ROUNDING_MODE : 4, + ERRORS : false, + RANGE : 1E9, + EXPONENTIAL_AT : [-7, 21] + }); + + T(1, 0, 1); + T(1, -0, 1); + T(-1, 0, -1); + T(-1, -0, -1); + T(1, N, N); + T(-1, N, N); + T(1, I, I); + T(1, -I, -I); + T(-1, I, I); + T(-1, -I, -I); + T(0, 1, 1); + T(0, -1, -1); + T(-0, 1, 1); + T(-0, -1, -1); + assert(false, isMinusZero(new BigNumber(0).plus(0))); + assert(false, isMinusZero(new BigNumber(0).plus(-0))); + assert(false, isMinusZero(new BigNumber(-0).plus(0))); + assert(true, isMinusZero(new BigNumber(-0).plus(-0))); + T(0, N, N); + T(-0, N, N); + T(0, I, I); + T(0, -I, -I); + T(-0, I, I); + T(-0, -I, -I); + T(N, 1, N); + T(N, -1, N); + T(N, 0, N); + T(N, -0, N); + T(N, N, N); + T(N, I, N); + T(N, -I, N); + T(I, 1, I); + T(I, -1, I); + T(-I, 1, -I); + T(-I, -1, -I); + T(I, 0, I); + T(I, -0, I); + T(-I, 0, -I); + T(-I, -0, -I); + T(I, N, N); + T(-I, N, N); + T(I, I, I); + T(I, -I, N); + T(-I, I, N); + T(-I, -I, -I); + + T(1, '0', '1'); + T(1, '1', '2'); + T(1, '-45', '-44'); + T(1, '22', '23'); + T(1, 0144, '101'); + T(1, '0144', '145'); + T(1, '6.1915', '7.1915'); + T(1, '-1.02', '-0.02'); + T(1, '0.09', '1.09'); + T(1, '-0.0001', '0.9999'); + T(1, '8e5', '800001'); + T(1, '9E12', '9000000000001'); + T(1, '1e-14', '1.00000000000001'); + T(1, '3.345E-9', '1.000000003345'); + T(1, '-345.43e+4', '-3454299'); + T(1, '-94.12E+0', '-93.12'); + T(1, '', N); + T(1, ' ', N); + T(1, '\t\t', N); + T(1, 'ertgrt546', N); + T(1, 'qweqwdewee', N); + T(1, true, N); + T(1, false, N); + T(1, 'e 4.3', N); + T(1, '4 .3', N); + T(1, '4.0 01e', N); + T(1, ' 4.001', '5.001'); + T(1, '4.001 ', '5.001'); + T(1, ' 4.001 ', '5.001'); + T(1, ' 4.001', '5.001'); + T(1, ' 4.0 01', N); + T(1, '4. 001', N); + T(1, '4. 001 ', N); + T(1, ' 4.001e ', N); + T(1, ' 4 .001 e ', N); + T(1, undefined, N); + T(1, null, N); + T(1, Number.POSITIVE_INFINITY, I); + T(1, Number.NEGATIVE_INFINITY, -I); + T(1, new Date(2012, 11, 4), N); + T(1, new Object(), N); + T(1, function () {}, N); + T('0', 0, '0'); + T(0, '+0', '0'); + T('0', '0', '0'); + T(3, -0, '3'); + T(9.654, 0, '9.654'); + T(0, '0.001', '0.001'); + T(0, '111.1111111110000', '111.111111111'); + T(N, '0', N); + T(-1, 1, '0'); + T(-0.01, 0.01, '0'); + T(54, -54, '0'); + T(9.99, '-9.99', '0'); + T('0.0000023432495704937', '-0.0000023432495704937', '0'); + T(NaN, NaN, N); + T(NaN, N, N); + T(N, NaN, N); + T(N, 4, N); + T(N, '4534534.45435435', N); + T(N, 99999.999, N); + T(Infinity, '354.345341', I); + T(3, -I, -I); + T(-Infinity, -I, -I); + T(-I, -Infinity, -I); + T(I, '-999e999', I); + T('1.21123e43', -I, -I); + T('-999.0', I, I); + T('657.342e-45', -I, -I); + T(I, 123, I); + T(100, 100, '200'); + T(-999.99, '0.01', '-999.98'); + T('10 ', 4, '14'); + T('03.333', -4, '-0.667'); + T(-1, -0.1, '-1.1'); + T(43534.5435, '0.054645', '43534.598145'); + T('99999', '1', '100000'); + T('3e', 8, N); + T('-3..0', 13, N); + T('0 0', -0.4, N); + T(' +3e0', 4, '7'); + T(9.9806, '+ 1', N); + T(' +2 0', '1e1', N); + T('e3', 4, N); + T(' ', 0, N); + T(323, null, N); + T(undefined, undefined, N); + T('undefined', undefined, N); + T(null, null, N); + + T('-0.000000046', '0', '-4.6e-8'); + T('0', '-5.1', '-5.1'); + T('1.3', '2', '3.3'); + T('1.02', '1.2', '2.22'); + T('3.0', '0', '3'); + T('3', '31.9', '34.9'); + T('0', '-0.0000000000000712', '-7.12e-14'); + T('1.10', '5', '6.1'); + T('4.2', '-0.000000062', '4.199999938'); + T('1', '0', '1'); + T('-5.1', '1', '-4.1'); + T('0', '-1', '-1'); + T('699', '-4', '695'); + T('0', '-1', '-1'); + T('1.6', '-27.2', '-25.6'); + T('0', '-7', '-7'); + T('3.0', '-4', '-1'); + T('0', '-2.0', '-2'); + T('0', '-3', '-3'); + T('-2', '1', '-1'); + T('-9', '-1', '-10'); + T('2', '-1.1', '0.9'); + T('-5', '-3', '-8'); + T('7', '-37', '-30'); + T('-3', '-5.0', '-8'); + T('1.2', '-0.0000194', '1.1999806'); + T('0', '5', '5'); + T('0', '1', '1'); + T('-0.000000000000214', '0', '-2.14e-13'); + T('0', '0', '0'); + T('0', '-1', '-1'); + T('-3', '156', '153'); + T('231', '0.00000000408', '231.00000000408'); + T('0', '-1.7', '-1.7'); + T('-4.16', '0', '-4.16'); + T('0', '5.8', '5.8'); + T('1.5', '5', '6.5'); + T('4.0', '-6.19', '-2.19'); + T('-1.46', '-5.04', '-6.5'); + T('5.11', '6', '11.11'); + T('-2.11', '0', '-2.11'); + T('0.0067', '-5', '-4.9933'); + T('0', '2', '2'); + T('1.0', '-24.4', '-23.4'); + T('-0.000015', '-6', '-6.000015'); + T('1.5', '0', '1.5'); + T('4.1', '-3', '1.1'); + T('-2', '-1', '-3'); + T('3', '1.5', '4.5'); + T('-7.8', '-3', '-10.8'); + T('-32', '17.6', '-14.4'); + T('0', '0', '0'); + T('-47.4', '-1', '-48.4'); + T('15.4', '0.000014', '15.400014'); + T('7.2', '2.9', '10.1'); + T('-86.5', '-47.2', '-133.7'); + T('1.1', '-31.4', '-30.3'); + T('-121', '3', '-118'); + T('-4', '3', '-1'); + T('-3.98', '1.2', '-2.78'); + T('-4.90', '0', '-4.9'); + T('2.28', '0', '2.28'); + T('-0.0000000000051', '-0.0000000000000000236', '-5.1000236e-12'); + T('1', '-28', '-27'); + T('0', '-3.12', '-3.12'); + T('7', '24.9', '31.9'); + T('-7.8', '17', '9.2'); + T('1', '1', '2'); + T('0.00000000000000000016', '-2', '-1.99999999999999999984'); + T('6', '8.5', '14.5'); + T('1.10', '-1', '0.1'); + T('-1', '3.3', '2.3'); + T('4', '-1.3', '2.7'); + T('0', '2.09', '2.09'); + T('-1', '0', '-1'); + T('-1', '0', '-1'); + T('0', '8.1', '8.1'); + T('-3', '-4.96', '-7.96'); + T('9.73', '0', '9.73'); + T('1', '0', '1'); + T('-1', '-3', '-4'); + T('3', '-3.0', '0'); + T('-2.78', '-403', '-405.78'); + T('1', '-0.00063', '0.99937'); + T('2', '0', '2'); + T('3', '7', '10'); + T('-1', '0', '-1'); + T('-4.1', '-4', '-8.1'); + T('-5', '7', '2'); + T('-7', '-0.00000000000000000511', '-7.00000000000000000511'); + T('0', '0.000000000000000000233', '2.33e-19'); + T('1.2', '-8.5', '-7.3'); + T('2', '-2', '0'); + T('-24', '-5', '-29'); + T('-2.1', '0.0114', '-2.0886'); + T('8', '-5', '3'); + T('0.061', '12.1', '12.161'); + T('0', '2.7', '2.7'); + T('-0.00000871', '0', '-0.00000871'); + T('0', '0', '0'); + T('2', '-6.0', '-4'); + T('9', '-1.2', '7.8'); + T('7', '0', '7'); + T('0', '0.000000000000000213', '2.13e-16'); + T('2.5', '0', '2.5'); + T('0', '0.00211', '0.00211'); + T('6.4', '-15.7', '-9.3'); + T('1.5', '0', '1.5'); + T('-41', '0.113', '-40.887'); + T('-7.1', '2', '-5.1'); + T('6', '-1.6', '4.4'); + T('-1.2', '0', '-1.2'); + T('-3', '13.3', '10.3'); + T('0', '0', '0'); + T('0', '-105', '-105'); + T('-0.52', '-40.9', '-41.42'); + T('1', '0', '1'); + T('0', '0', '0'); + T('-5.1', '-0.00024', '-5.10024'); + T('-0.000000000000027', '6', '5.999999999999973'); + T('125', '-2', '123'); + T('2', '-365', '-363'); + T('6.2', '-55.1', '-48.9'); + T('4.9', '-6', '-1.1'); + T('0.0000000482', '0.0000000019', '5.01e-8'); + T('0', '1.7', '1.7'); + T('78.3', '2.2', '80.5'); + T('-53.9', '4.0', '-49.9'); + T('0', '2.1', '2.1'); + T('-1.0', '-143', '-144'); + T('-1', '2.2', '1.2'); + T('1', '84.9', '85.9'); + T('0', '26', '26'); + T('51', '0.000000000000000757', '51.000000000000000757'); + T('1.1', '-3.67', '-2.57'); + T('-1.2', '1.30', '0.1'); + T('-0.00000000000021', '0.0000000013', '1.29979e-9'); + T('-1.6', '-1', '-2.6'); + T('-2.0', '63', '61'); + T('-3', '7', '4'); + T('-221', '38', '-183'); + T('-1', '0', '-1'); + T('46.4', '2', '48.4'); + T('0', '0', '0'); + T('-1', '-0.0000000853', '-1.0000000853'); + T('79', '0.000190', '79.00019'); + T('0', '-8.59', '-8.59'); + T('1', '-1', '0'); + T('0.000000000000000000110', '-5.8', '-5.79999999999999999989'); + T('6', '3.86', '9.86'); + T('-9', '8', '-1'); + T('-1.0', '-45.9', '-46.9'); + T('-2', '1', '-1'); + T('17.3', '1', '18.3'); + T('0', '0.23', '0.23'); + T('1.14', '0', '1.14'); + T('-1.99', '-1', '-2.99'); + T('9', '0.0000000000000000000157', '9.0000000000000000000157'); + T('-11', '89', '78'); + T('0', '-13.9', '-13.9'); + T('0.00000000000015', '86', '86.00000000000015'); + T('278', '-2', '276'); + T('0', '-2.18', '-2.18'); + T('0', '-0.000000029', '-2.9e-8'); + T('-6', '-0.0000000045', '-6.0000000045'); + T('0', '-24.7', '-24.7'); + T('6.0', '124', '130'); + T('0.00089', '-0.117', '-0.11611'); + T('-0.94', '44', '43.06'); + T('52.1', '-4', '48.1'); + T('0', '-0.00000062', '-6.2e-7'); + T('2', '-0.000000000242', '1.999999999758'); + T('-6.2', '1', '-5.2'); + T('3.4', '1', '4.4'); + T('-1.5', '3.8', '2.3'); + T('3', '-1.27', '1.73'); + T('-1', '7', '6'); + T('-2.29', '-4.8', '-7.09'); + T('0', '0', '0'); + T('-5', '-0.0000000000000016', '-5.0000000000000016'); + T('2.0', '-1.5', '0.5'); + T('94.2', '-1.4', '92.8'); + T('37', '-0.000000000000000000028', '36.999999999999999999972'); + T('-0.00000000000000000750', '1', '0.9999999999999999925'); + T('1.5', '-1.7', '-0.2'); + T('-1', '20.0', '19'); + T('2.6', '0', '2.6'); + T('0', '-28.4', '-28.4'); + T('-12.1', '-14', '-26.1'); + T('1.7', '0.000000041', '1.700000041'); + T('9.5', '4', '13.5'); + T('2.8', '101', '103.8'); + T('0.000000022', '0', '2.2e-8'); + T('6', '28', '34'); + T('7', '-97', '-90'); + T('-1.7', '-3', '-4.7'); + T('107', '6.2', '113.2'); + T('-0.000000000000000118', '-2', '-2.000000000000000118'); + T('-0.000000000000000451', '-5.3', '-5.300000000000000451'); + T('0', '-1', '-1'); + T('0.0000055', '145', '145.0000055'); + T('0', '-8', '-8'); + T('0', '-2.7', '-2.7'); + T('-3', '0', '-3'); + T('-7', '7', '0'); + T('-1.1', '0', '-1.1'); + T('-92', '-1.4', '-93.4'); + T('-2.7', '-3.25', '-5.95'); + T('68.5', '509', '577.5'); + T('0', '0', '0'); + T('22.6', '-1', '21.6'); + T('373', '0', '373'); + T('0', '-5', '-5'); + T('32.2', '-7', '25.2'); + T('-1', '-1.7', '-2.7'); + T('-1.3', '0.0000000048', '-1.2999999952'); + T('5', '-5', '0'); + T('0', '11.9', '11.9'); + T('-0.82', '25', '24.18'); + T('0', '3.1', '3.1'); + T('0.000024', '6', '6.000024'); + T('10', '-0.000000116', '9.999999884'); + T('977', '0', '977'); + T('13', '-0.00000205', '12.99999795'); + T('-7', '-9.0', '-16'); + T('0', '1.05', '1.05'); + T('1', '0', '1'); + T('-10.1', '0', '-10.1'); + T('2.2', '-0.000000000000061', '2.199999999999939'); + T('0', '-0.0000085', '-0.0000085'); + T('3', '3.5', '6.5'); + T('1', '2.8', '3.8'); + T('-2', '-8.60', '-10.6'); + T('223', '9', '232'); + T('-20.4', '-213', '-233.4'); + T('0', '2', '2'); + T('-2.9', '-1.3', '-4.2'); + T('3.0', '0', '3'); + T('-5', '0.00000000000000000011', '-4.99999999999999999989'); + T('-0.000088', '70.4', '70.399912'); + T('-1', '-505', '-506'); + T('0', '-4', '-4'); + T('768', '1.1', '769.1'); + T('2', '0', '2'); + T('88', '1.4', '89.4'); + T('7.8', '0.0000000000000025', '7.8000000000000025'); + T('2.6', '-3.20', '-0.6'); + T('-24', '-2.6', '-26.6'); + T('0', '-1', '-1'); + T('-6', '0.00059', '-5.99941'); + T('14', '4.1', '18.1'); + T('-30.5', '1.48', '-29.02'); + T('-509', '5', '-504'); + T('-1', '3', '2'); + T('1.3', '0.000103', '1.300103'); + T('-2.8', '19.1', '16.3'); + T('10.07', '0.581', '10.651'); + T('3', '-2', '1'); + T('-29', '4', '-25'); + T('-3.80', '-48.2', '-52'); + T('6', '-21.3', '-15.3'); + T('3', '-1.7', '1.3'); + T('0', '0.00000000033', '3.3e-10'); + T('0.49', '0', '0.49'); + T('7', '1.1', '8.1'); + T('1', '-2.73', '-1.73'); + T('0', '-3.89', '-3.89'); + T('1.27', '9', '10.27'); + T('-0.00000000151', '-25', '-25.00000000151'); + T('-11.7', '0.000000000000014', '-11.699999999999986'); + + T('3', '-7292337998569017257242651.028572395143563730317242', '-7.292337998569017257242648028572395143563730317242e+24'); + T('-340867371992331.2987436', '337.06898', '-340867371991994.2297636'); + T('10.55995846458487041359', '-11363016227498211122402159.8244', '-1.136301622749821112240214926444153541512958641e+25'); + T('-2493625481630720848504.2253423230119762824868856426', '-2.5572303947825744924097699541922801', '-2.4936254816307208485067825727177945507748966555967922801e+21'); + T('0.000000000000019478219401872667571256888553179333787767', '172.34675119', '172.346751190000019478219401872667571256888553179333787767'); + T('-34', '1679140391.9', '1679140357.9'); + T('-80049928601879665221091.2', '-422696.2614386', '-8.00499286018796656437874614386e+22'); + T('-2807730637205.01726166308462171615083', '0.0000000000000000000622355365575749096529347607937593112149767278', '-2807730637205.0172616630846217160885944634424250903470652392062406887850232722'); + T('2011299643403413077489630775210103349137877109', '-163066968.786271125332323161612905', '2.011299643403413077489630775210103348974810140213728874667676838387095e+45'); + T('-0.00000083671937317281562083962202394322135659', '7878332.295282735111804499965213784837870', '7878332.29528189839243132714959294521584605677864341'); + T('0.000000188701196610233915664001509614338431694523153', '-23707678356144422298078574459450831700.985', '-2.3707678356144422298078574459450831700984999811298803389766084335998490385661568305476847e+37'); + T('26203291462.747893543000897830970817', '2.39160879274042658647090', '26203291465.139502335741324417441717'); + T('-13.731026951', '0.000000000000519065974912984366352959010635376943677199693101323558', '-13.731026950999480934025087015633647040989364623056322800306898676442'); + T('42946999115270631061563709594990331564869354319610', '-689518233710514.17779877383431696209686368332723612515969802', '4.294699911527063106156370959499033087535112060909582220122616568303790313631667276387484030198e+49'); + T('-316537.13', '5.849231740', '-316531.28076826'); + T('-4483733651090758635203278665262327.55342', '0', '-4.48373365109075863520327866526232755342e+33'); + T('0', '-2599', '-2599'); + T('-5148.92870373', '-0.0000000000003511413413454972', '-5148.9287037300003511413413454972'); + T('-134406704543039418795782131496347812', '39838386849529610034769612280421774691.6785604641098', '3.97039801449865706159738301489254268796785604641098e+37'); + T('1.084309017285818872', '0.0000000000004353337515049604976685056082181', '1.0843090172862542057515049604976685056082181'); + T('81757261120729.3998391292', '0.00793', '81757261120729.4077691292'); + T('305717993676885329951937476257830866546431763156719336807', '-0.00000000000000000001482815967', '3.0571799367688532995193747625783086654643176315671933680699999999999999999998517184033e+56'); + T('203522961261530443.917820906776579027929', '-9185.139979750596690606', '203522961261521258.777841156179888421929'); + T('58302388.37179491476', '9936044410052508775.881727897883802', '9936044410110811164.253522812643802'); + T('0.00000000000000000005248972194638156020825779794502284697376', '-0.0388379024820383074988759583112', '-0.03883790248203830744638623636481843979174220205497715302624'); + T('0.000000001932861108418416669193839546006791915101090', '-0.000000000000103564871', '1.93275754354741666919383954600679191510109e-9'); + T('-97.5', '-3.1', '-100.6'); + T('-3644798362098266765793', '-11528555350.16536616701926798156538624434748578548375', '-3.64479836210979532114316536616701926798156538624434748578548375e+21'); + T('-371577606534.62392858950803524930468', '-0.00000000269386577418846418', '-371577606534.62392859220190102349314418'); + T('-691678464095856590.95634633025558439435402102', '0.000000030539948265', '-691678464095856590.95634629971563612935402102'); + T('0.000000003928034045864', '-39380632121496755483.22', '-39380632121496755483.219999996071965954136'); + T('-795.89085780158799717759425220514961346582715', '0.000706564963643740242942689304765914029848878612899171', '-795.890151236624353437351309515844847551797301121387100829'); + T('157678510.5484789671095156751921759005061', '0.0000003723795', '157678510.5484793394890156751921759005061'); + T('-1307.3', '2', '-1305.3'); + T('2952858872457.929554397223499', '13455320760120.8707665014', '16408179632578.800320898623499'); + T('-255588821522540889862114962636995141.122', '0.00000326851523835', '-2.5558882152254088986211496263699514112199673148476165e+35'); + T('0.00000000000014406509', '-560153923805366388086033', '-5.6015392380536638808603299999999999985593491e+23'); + T('-6.099826371', '28726540983564666452792216637044.9356006234', '2.87265409835646664527922166370388357742524e+31'); + T('8636541368105344305914147830.15649125124', '0.0000000000049754', '8.6365413681053443059141478301564912512449754e+27'); + T('-755310742571241039658903028788091708555.4969131794', '99330105954469.4', '-7.553107425712410396589029294579857540860969131794e+38'); + T('4020318299.7', '-670276060499479628473243989367746661643882288', '-6.702760604994796284732439893677466576235639883e+44'); + T('5095849414624671459392138104904515509922724138164588773.042', '149494908418030920.00255211471236475197791306529', '5.09584941462467145939213810490451551007221904658261969304455211471236475197791306529e+54'); + T('138761505665961028617702243300', '9857942288.8', '1.387615056659610286275601855888e+29'); + T('3804404287.52574', '16416902504', '20221306791.52574'); + T('-2055.8130', '0.00218842416232671530104849459457718', '-2055.81081157583767328469895150540542282'); + T('0.000000000000989697422064467113678', '0.697065625725549', '0.697065625726538697422064467113678'); + T('-30288347947284335685837645153586172422797922983.37915571667', '-1335.069192', '-3.028834794728433568583764515358617242279792431844834771667e+46'); + T('0.00054054406579017', '0.0020445688232423225788738738557412646944032455769768734602', '0.0025851128890324925788738738557412646944032455769768734602'); + T('-68994411860.328728', '48816504201613414531319144006465274996081421325116090708', '4.8816504201613414531319144006465274996081421256121678847671272e+55'); + T('-809830632609724847526268.50966586512675871946995', '45805247683771870541946686267298071051761.71368629398645', '4.580524768377186973211605365757322352549320402042885969128053005e+40'); + T('12.244685335891505325017912752605737279289', '-1953.157', '-1940.912314664108494674982087247394262720711'); + T('0.00000000000000012201816814103574356713495876418475275883288964', '-14514327327765802694345312637.28121049209345627407', '-1.451432732776580269434531263728121049209345615205183185896425643286504123581524724116711036e+28'); + T('-35760010680713914665457.416640208061422564137087770', '237677.40440', '-3.576001068071391442778001224020806142256413708777e+22'); + T('0.213764724863667178076578241157520057358951', '-195.381', '-195.167235275136332821923421758842479942641049'); + T('-4', '-20479253407195868023.7190887', '-20479253407195868027.7190887'); + T('-2636506939789983.9517900975', '7166515142782230578873295164.094395142727', '7.166515142779594071933505180142605045227e+27'); + T('0.00001177737517372381877477801315318', '90325802810983024805454390865176398367442693156.692576771', '9.032580281098302480545439086517639836744269315669258854837517372381877477801315318e+46'); + T('0.0000000000000006940972689786006700192372751360485539314987602213580801251', '-321024060655325518945438734389309904797132969999', '-3.210240606553255189454387343893099047971329699989999999999999993059027310213993299807627248639514460685012397786419198749e+47'); + T('-0.0000000000000000014803670473728307445', '-0.72148924607942442354320737482582513411299162884', '-0.72148924607942442502357442219865587861299162884'); + T('0.0000000000000001043810048169882311646196761962068118', '0.00000000000008989735712546153946422343611927620630428259597102874', '9.000173813027852769538805579547241311608259597102874e-14'); + T('0.0000000856354489413072352886007888280862870145666795091412287', '124165153666113222225049048396538922054986467641', '1.241651536661132222250490483965389220549864676410000000856354489413072352886007888280862870145666795091412287e+47'); + T('-0.0000000000000320757814372847561957016', '-81190157394157.37730', '-81190157394157.3773000000000320757814372847561957016'); + T('-4334587898155190922720532.94504694431', '85522.93', '-4.33458789815519092263501001504694431e+24'); + T('657.44690790930416714587', '-0.000000000000000000046335131044673181381027', '657.446907909304167145823664868955326818618973'); + T('29982214095954021.68565215319585', '-44628768214034.30768386111941549271096', '29937585327739987.37796829207643450728904'); + T('0.00000227708329764590268495570108111', '188682548499636418836270555181954622706559207', '1.8868254849963641883627055518195462270655920700000227708329764590268495570108111e+44'); + T('-105740086870.87902330897898941693939252887655925', '-0.00902789833804655794', '-105740086870.88805120731703597487939252887655925'); + T('5321976.194462', '0.00000000062660860859824908696344225671974056962030135135', '5321976.19446200062660860859824908696344225671974056962030135135'); + T('1400649337343672602231550299981618481761671319', '-109314621074190268.0231', '1.4006493373436726022315502998723038606874810509769e+45'); + T('2057998276732722646423663', '22081288', '2.057998276732722668504951e+24'); + T('0.0000000000000000017861940166096730915828677929399660926585274067', '19858.316504586', '19858.3165045860000000017861940166096730915828677929399660926585274067'); + T('-22618978889574488865872.1936326217809072732', '84743644438924408560024120708247557837387061303912', '8.47436444389244085600241206856285789478125724380398063673782190927268e+49'); + T('16899677', '0.0000000000000006200595313980106282035', '16899677.0000000000000006200595313980106282035'); + T('84223630138728231319265207385866523.7037949685268627985151', '98049376624950796086168448377.9', '8.42237281881048562700612935543149016037949685268627985151e+34'); + T('-23139798585733154920035503271.3293705839340975', '-203534508453530507372.39865759096937', '-2.31397987892676633735660106437280281749034675e+28'); + T('2132422616', '313.8131489937516147609', '2132422929.8131489937516147609'); + T('0.00000000031757080246638721492851445443', '3794846068194592901324442.377', '3.79484606819459290132444237700000031757080246638721492851445443e+24'); + T('-720523766692302305335100081586272082042593510557835022', '-48655616939922.2105', '-7.205237666923023053351000815862720820426421661747749442105e+53'); + T('-0.000000000000681090019432916245992942611570731948008', '-78075676178', '-78075676178.000000000000681090019432916245992942611570731948008'); + T('0.0000000000000000000326999427026228462203921452389557015799356287967578926', '-0.0000000000010075912482623982890', '-1.0075912155624555863771537796078547610442984200643712032421074e-12'); + T('-0.000001663549464265503879091759952912765557', '-2288485846519565.90882', '-2288485846519565.908821663549464265503879091759952912765557'); + T('15283021016799660238790294783012978152064246848.302809', '-255.33064438', '1.528302101679966023879029478301297815206424659297216462e+46'); + T('-2141275004855302313', '-14324404392255657678513289015273', '-1.4324404392257798953518144317586e+31'); + T('-0.000000000000000010204742781305685387176792401033809', '-1797802696763189176117325682047878480266832090717009269338', '-1.797802696763189176117325682047878480266832090717009269338000000000000000010204742781305685387176792401033809e+57'); + T('18393642772198629.04467960835946581820412498120401305795', '0.001275506381558716433091344352361195683041600198429562', '18393642772198629.045955114741024534637216325556374253633041600198429562'); + T('-1985677.0479797102021852689', '3421136183.732859', '3419150506.6848792897978147311'); + T('0.0000000000048772038513856900253878297299144253261148646117991377226', '-0.000000000000000000633993968849724597473885254797830639072', '4.8772032173917211756632322560291705282842255397991377226e-12'); + T('44812645985.34921549502557530796823798603', '-3581800787100727450085636788', '-3.58180078710072740527299080265078450497442469203176201397e+27'); + T('1079812992968985436999219069272969', '2', '1.079812992968985436999219069272971e+33'); + T('-1753778882883960239.7357211808838917234439093151132461', '-675.03089678041125557523363798883874525571164770741', '-1753778882883960914.76661796129514729867754730395199135571164770741'); + T('2.5', '79808580452454570.6021583877', '79808580452454573.1021583877'); + T('-2318172325.38510421', '1', '-2318172324.38510421'); + T('1374939.4348', '5.6626826003903229567653167590578', '1374945.0974826003903229567653167590578'); + T('-1433073.1818631797258961330292384136', '121881788197.262469654057', '121880355124.0806064743311038669707615864'); + T('2.494544723114530285809', '3576653', '3576655.494544723114530285809'); + T('7938514604943790100.9276107434535811520579868735844807580453', '20401419259674024936996903873847920688818394344', '2.04014192596740249369969038817864352937621844449276107434535811520579868735844807580453e+46'); + T('-0.00000000000000000659293074407431751262', '26538.5176499542676', '26538.51764995426759999340706925592568248738'); + T('171650791296', '207021136095822862734047.67963169458559659', '2.0702113609599451352534367963169458559659e+23'); + T('111202958445.9250724298025103213740842327570768605596136302', '1.537803126215', '111202958447.4628755560175103213740842327570768605596136302'); + T('-66398807.32298869', '-6090756873.58292331915049610499833418951253059357', '-6157155680.90591200915049610499833418951253059357'); + T('2353147.270338458726403618253', '0.021384377221532', '2353147.291722835947935618253'); + T('-148563993416893680237652940993302142753.35541587', '64239.868', '-1.4856399341689368023765294099330207851348741587e+38'); + T('0.00000000000000952989372890150229168153411', '0.000000001089981372067260502063827792831910332175826', '1.089990901960989403566119474366020332175826e-9'); + T('-0.000095942657103193473656868628869530806593380', '2056191383129368498489079272615326194', '2.05619138312936849848907927261532619399990405734289680652634313137113046919340662e+36'); + T('-322696702507520517171977833895787676173146086137211', '-2440854162625.37382074757014', '-3.2269670250752051717197783389578767617558694029983637382074757014e+50'); + T('-1211219183955140821584', '-5210569206996623901353622002846939989302.92283', '-5.21056920699662390256484118680208081088692283e+39'); + T('-0.0000000000000079666993349250232202', '489285196659741383.006297750838528045433123', '489285196659741383.0062977508385200787337880749767798'); + T('0.00000000077141109510594202471060992900492', '3208.3347', '3208.33470000077141109510594202471060992900492'); + T('-68024506176127817746586754376221734884', '0.15464521042533657299008608160', '-6.80245061761278177465867543762217348838453547895746634270099139184e+37'); + T('-145880984716.215', '2337129866657263570', '2337129720776278853.785'); + T('188974623061492483.142804194521468235379066778', '-0.00000038525080631123327317383933592', '188974623061492483.14280380927066192414579360416066408'); + T('-16356113742963595266465952932662', '-125355883826.39416781321896', '-1.635611374296359526659130881648839416781321896e+31'); + T('-6055715.8736074588411038198577757669624785013783338', '314649408270458779064780.10', '3.146494082704587730090642263925411588961801422242330375214986216662e+23'); + T('115404161731.4660458068936241750308873387559102', '-22544800348.350741696032151441813827609476762', '92859361383.1153041108614727332170597292791482'); + T('-15403035163985572960537283993932052281699167401054521716', '-4.51871358', '-1.540303516398557296053728399393205228169916740105452172051871358e+55'); + T('494.839191894412897545883335718', '-6838.818196825251112157347', '-6343.979004930838214611463664282'); + T('12.6', '0.00000023237282267118', '12.60000023237282267118'); + T('80998.93', '-0.000000000000000006657264362722375638995179208931019910', '80998.92999999999999999334273563727762436100482079106898009'); + T('24311907546797437.192938', '33293941690', '24311940840739127.192938'); + T('-2439553576035597703284083776782658338714854480.76670', '-552371860516159411553653432588968147375569940274.6', '-5.548114140921950092569375163657508057142847947553667e+47'); + T('-2', '267.41036926198544821143', '265.41036926198544821143'); + T('-221185414.39378617220971422653741297827696718276', '147716681512356798558369414201759187083768076717531.7', '1.4771668151235679855836941420175918708376785553211730621382779028577346258702172303281724e+50'); + T('27782844063780674567856973058456377099880', '0.42833855291455356', '2.778284406378067456785697305845637709988042833855291455356e+40'); + T('-6779946038658269907151725830212.3231241258972158956574549786', '-59152624443548.397860097634612838089', '-6.7799460386582699663043502737607209842235318287337464549786e+30'); + T('5583728', '-12088255617331322291590332122631397105695', '-1.2088255617331322291590332122631391521967e+40'); + T('-122.55488541428134', '-1849241463858352827933557649058195369965078195', '-1.84924146385835282793355764905819536996507831755488541428134e+45'); + T('-5.40620', '-7926553114777.34793', '-7926553114782.75413'); + T('-0.000253850655677758430078658974284641259587365835647', '9712716976.55714607561630095490035500071', '9712716976.556892224960623196470276341735715358740412634164353'); + T('168095465368167755.20132', '-0.000000000000100770026067662522650967001796393', '168095465368167755.201319999999899229973932337477349032998203607'); + T('-23084021.1912', '-0.0000000002552886320752142', '-23084021.1912000002552886320752142'); + T('-0.00000034692938443702777764811193148332', '-2291330567445.020091462', '-2291330567445.02009180892938443702777764811193148332'); + T('-0.000000000000000000500', '-3638839062523.16788353204231378745138113805005277262', '-3638839062523.16788353204231378795138113805005277262'); + T('-21291430264059347596', '-278661231050935040505252800716670488924003.0', '-2.78661231050935040505274092146934548271599e+41'); + T('-3937382504232.4631934324802032008', '-12670428.0658912205267960601919307115632', '-3937395174660.5290846530069992609919307115632'); + T('-146982.22450149250', '623504303083058604561989109312642337', '6.235043030830586045619891093124953547754985075e+35'); + T('253.01', '802625930614062.9705947195646834588541152620643', '802625930614315.9805947195646834588541152620643'); + T('115359268370848989850854005321447663172886737834785520883', '458.4807', '1.153592683708489898508540053214476631728867378347855213414807e+56'); + T('163.09176', '0.00000000000000001823481782581109744', '163.09176000000000001823481782581109744'); + T('-2213687948.07450556690935288', '21871988945935811925735.3643007186962826339', '2.18719889459335982377872897951517869297539e+22'); + T('-13600.9931855956842627546715', '137199858862267.530744593929324697303900300812048', '137199858848666.537558998245061942632400300812048'); + T('64302.84879', '-0.00000000000000000031884862211764', '64302.84878999999999999968115137788236'); + T('-21.0343150', '0.00003762594931905088097193777529518846', '-21.03427737405068094911902806222470481154'); + T('-43.2', '0.0000000000000000088209059726558824954701945990768141500402895240582621', '-43.1999999999999999911790940273441175045298054009231858499597104759417379'); + T('-21.716', '0.00010435033062418396646761217', '-21.71589564966937581603353238783'); + T('-14349223886609.8996911241', '591424', '-14349223295185.8996911241'); + T('387.146464770977292777877373605881', '0.000000000748129478828479148973975406341232062736061643261337037', '387.146464771725422256705852754854975406341232062736061643261337037'); + T('-5400652.348672', '-272186438747803380.1804043255', '-272186438753204032.5290763255'); + T('-21.3', '6.8', '-14.5'); + T('0.00000000103600815339389940326020721966409', '29645237.7502768697756870856787621204', '29645237.75027687081169523907266152366020721966409'); + T('-534005184647169042.131454403358674522', '0.005694323359477401172045805857601828035888769857500968445222', '-534005184647169042.125760079999197120827954194142398171964111230142499031554778'); + T('1862736418', '1', '1862736419'); + T('351490387188996259', '62.100460124428609287573', '351490387188996321.100460124428609287573'); + T('169499641692977052216453491793.9787615383724028133893', '0.00000000000000006361911', '1.6949964169297705221645349179397876153837240287700841e+29'); + T('-8', '3417322569.4831394174', '3417322561.4831394174'); + T('-838501752798.326614960580367718115', '-2022114720338558.047757485234', '-2022953222091356.374372445814367718115'); + T('-1549912.8026532077081092082547', '-45506131.43371799701886630176768733952185393859212', '-47056044.23637120472697551002238733952185393859212'); + T('-2183663034044253888858323830694952562946010.782', '1354851.73581347266611421085387946798291', '-2.18366303404425388885832383069495256159115904618652733388578914612053201709e+42'); + T('-0.0000000000046712261814706680606784284472438172230285748063131539', '918514605286328938996265974.307597316850270', '9.185146052863289389962659743075973168455987738185293319393215715527561827769714251936868461e+26'); + T('-0.0301991824416038881101099', '-4464346608', '-4464346608.0301991824416038881101099'); + T('3.98', '5218371.49516', '5218375.47516'); + T('4832441872354802689671', '-0.0000000000213837', '4.8324418723548026896709999999999786163e+21'); + T('0.000000000000000016298281', '-0.00000000348998960378566871408591706715068151875573445053079845095', '-3.48998958748738771408591706715068151875573445053079845095e-9'); + T('-2059458247822896700102858412401366415.403909858', '30110.7306736165788262027129954556', '-2.0594582478228967001028584124013363046732362414211737972870045444e+36'); + T('-106653', '-6554779180145425976', '-6554779180145532629'); + T('0', '-12771592550606134879262234468876731140678883443896', '-1.2771592550606134879262234468876731140678883443896e+49'); + T('-141742173848073082.100575461779634531', '-7', '-141742173848073089.100575461779634531'); + T('245.6735', '-3537763728425648898.536045229', '-3537763728425648652.862545229'); + T('23.71866884462009661132193', '48487130568434204612649872032673642473034', '4.848713056843420461264987203267364247305771866884462009661132193e+40'); + T('79401597909529525308.48420609229175', '2591403158790529529573511201.19', '2.59140323819212743910303650967420609229175e+27'); + T('284576176526552350', '-10', '284576176526552340'); + T('1.0682', '7861.283121183677379038987', '7862.351321183677379038987'); + T('-1.60444805', '0.0000028847098483848786064787560152209651320682639', '-1.6044451652901516151213935212439847790348679317361'); + T('-0.0000000018996053506896890911603732691263731955475477051763872', '-57581.875373867812973783', '-57581.8753738697125791336896890911603732691263731955475477051763872'); + T('0.00000000000000000012392510786805471753525331968033845561363410307741609902317', '0.000004349947715706492223712976943980034293671355123', '0.00000434994771570661614882084499869756954699103546145561363410307741609902317'); + T('128907.8518369701779', '-1', '128906.8518369701779'); + T('-21.35510004122675870004717674727620213', '0.00000000000000000001009606209896423416929193498290467', '-21.35510004122675870003708068517723789583070806501709533'); + T('-1036072.70', '30288483890840.7644829772783388118', '30288482854768.0644829772783388118'); + T('1', '0.00000000108663482163751960896', '1.00000000108663482163751960896'); + T('196690688540287471600138402631254097', '-1296924088245887989211255853', '1.96690687243363383354250413419998244e+35'); + T('1791156.834533749567213189130', '173011022354550416183638753635.63334944502450395340681', '1.7301102235455041618364054479246788319459171714253681e+29'); + T('1861430347575777575680356960079436184499.919613', '-612614849498276685996593027243', '1.861430346963162726182080274082843157256919613e+39'); + T('-7758655923622034030955.9291230128', '0.00594001420381222017096211329', '-7.75865592362203403095592318299859618777982903788671e+21'); + T('-5459.708512054323229825378150954057236451373947101', '0.00000000000000010467896268967026375601267236689054126519', '-5459.70851205432322972069918826438697269536127473410945873481'); + T('1.5357640654914', '26484040831501596185144229855201045526.8772', '2.64840408315015961851442298552010455284129640654914e+37'); + T('0.000000000000000000551032982567013358317393735391', '3951981877.70635', '3951981877.706350000000000000551032982567013358317393735391'); + T('19966337.40327464680217082908346850752429077', '0.0000000694117823464637414804852860124695677260107514259062814196', '19966337.4032747162139531755472099880095767824695677260107514259062814196'); + T('0.000000000000114387', '26.0780', '26.078000000000114387'); + T('-0.000000000000058566632687', '154445365803820719089161481686648591330608966505075815231', '1.54445365803820719089161481686648591330608966505075815230999999999999941433367313e+56'); + T('-81.9', '-290987195118120910.650828527355125621', '-290987195118120992.550828527355125621'); + T('0.0000000000129766844476802102046046856035673832204965536', '-15.50195731', '-15.5019573099870233155523197897953953143964326167795034464'); + T('5081846528', '22.8724', '5081846550.8724'); + T('-85904518857594634808347910122940606952070250543093.244309866', '87863849.691319671938088226', '-8.5904518857594634808347910122940606952070162679243552990194061911774e+49'); + T('-170442726618237824341261070261982330084077537445839818', '0.000000000000000780053862947758376946726067312229726087592094', '-1.70442726618237824341261070261982330084077537445839817999999999999999219946137052241623053273932687770273912407906e+53'); + T('413.7126477448411377495505703', '-316329.243682', '-315915.5310342551588622504494297'); + T('-0.00000000000000483378251152198797664837453061179141660023', '4083329356329023991816392216832315734019339465889233737667', '4.08332935632902399181639221683231573401933946588923373766699999999999999516621748847801202335162546938820858339977e+57'); + T('0.000000000004945130554715279352', '20393092845', '20393092845.000000000004945130554715279352'); + T('66.60837', '28592560366063.746528', '28592560366130.354898'); + T('-10824143490362152769146.8628434597262310327475178771', '-6.442', '-1.08241434903621527691533048434597262310327475178771e+22'); + T('-17.63', '-0.000000000000000012319', '-17.630000000000000012319'); + T('-134.1362825800766312455', '17351.358339090284637450403853', '17217.222056510208006204903853'); + T('0.000000000001327776', '-0.00005717732', '-0.000057177318672224'); + T('0.000081202465051128565', '9.25', '9.250081202465051128565'); + T('-49969297933006175912135', '201', '-4.9969297933006175911934e+22'); + T('-0.0000000000000000000351971832201257343216570588903268', '-614730534926067941867', '-614730534926067941867.0000000000000000000351971832201257343216570588903268'); + T('-4699376204284239198897468324308327.578823266', '0.01240127407873530917', '-4.69937620428423919889746832430832756642199192126469083e+33'); + T('-166859773331579667092627457017924681891', '1.177', '-1.66859773331579667092627457017924681889823e+38'); + T('297611546807476.7389967424', '517878390231.954956053920806357536', '298129425197708.693952796320806357536'); + T('2.26', '476121878051171262698479334452067496570446544422226', '4.7612187805117126269847933445206749657044654442222826e+50'); + T('0.000000000348934602334173547747920539533095838627739', '-0.000000000000827121544297495855005100518267691068913070523148', '3.48107480789876051892915439014828147558825929476852e-10'); + T('0.0000000016630321489412099873134278851', '33382216672582.0742647965724', '33382216672582.0742647982354321489412099873134278851'); + T('-19.715751399', '1455362393129824490954487356267083.8186754959749850983', '1.4553623931298244909544873562670641029240969749850983e+33'); + T('11152141361730026829285665961687.3139561070881149371766', '2.76963401441423333517597101345', '1.115214136173002682928566596169008359012150234827235257101345e+31'); + T('-44836120135503200078585015978983219367221886861731704', '-2', '-4.4836120135503200078585015978983219367221886861731706e+52'); + T('16.02069381131', '0.0000000000000042', '16.0206938113100042'); + T('-329678350725130.3958196996612366385400490474513156349559', '-3467', '-329678350728597.3958196996612366385400490474513156349559'); + T('-4182765105477793237555.273265434', '56254364076240107601891319154234794697144.298685574', '5.625436407624010759770855404875700145958902542014e+40'); + T('98796860384198464024305164555588491131671343895593228060535', '-1405573031776506147878053891673759594011202270592763', '9.8796858978625432247799016677534599457911749884390957467772e+58'); + T('1092363940258060395083098718642956733485643364', '-10598809886235236342944197021319583170547674110389928477485', '-1.0598809886234143979003938960924500071829031153656442834121e+58'); + T('37586361614.095', '-3148149077577', '-3110562715962.905'); + T('-254953108518285985', '-1.07910144271207423934923587934451351214', '-254953108518285986.07910144271207423934923587934451351214'); + T('2442.32751', '43535097.033480512037', '43537539.360990512037'); + T('91995040568885362527648040727723', '0.4786144932196936758637061866474810131052563763028', '9.19950405688853625276480407277234786144932196936758637061866474810131052563763028e+31'); + T('-23863678424756722926637928011000581.244001324799381062566619', '96688.916787457820799184195711813964401021274965053735523', '-2.3863678424756722926637928010903892327213866978581878370907186035598978725034946264477e+34'); + T('0', '-0.00000000000027852776765692', '-2.7852776765692e-13'); + T('-1623378710787743245737360669094938021186.3532080061729827', '0', '-1.6233787107877432457373606690949380211863532080061729827e+39'); + T('0', '0.000000049048339295559358355126332957758142200703099', '4.9048339295559358355126332957758142200703099e-8'); + T('6192378510550191959653347.846386529481410301978431652948347', '-0.38294548165530032173705676329607616564872132520398', '6.19237851055019195965334746344104782610998024137488965227083435127867479602e+24'); + T('-24283320565469963929558662982.9349694043', '2673821469225170314390', '-2.42833178916484947043883485929349694043e+28'); + T('218.110682218445321922075046444527', '0.01497687885540092217834', '218.125659097300722844253386444527'); + T('-150034638.4607772346143954532', '-20008571757063313138', '-20008571757213347776.4607772346143954532'); + T('-2971683662963108664767', '19264012460036395799353855810042830620021', '1.9264012460036395796382172147079721955254e+40'); + T('-5252175.40891737279869057', '-2027371894615285196604888264930073402643.5207', '-2.02737189461528519660488826493007865481892961737279869057e+39'); + T('-20871238425800671889182.829701547250', '-76082554384456.3158288776570471938928399650934647043692665519', '-2.08712385018832262736391455304249070471938928399650934647043692665519e+22'); + T('0', '-6932.702341315865', '-6932.702341315865'); + T('0.0000000000000000005738499200802402637492440447802302210350633678412977240457', '31318.68', '31318.6800000000000000005738499200802402637492440447802302210350633678412977240457'); + T('-934961659015198853393126550.25200823467372663246334', '74878058.044873358837373372754304', '-9.34961659015198853318248492207134875836353259709036e+26'); + T('150.22669', '3684561512708165421004.40592369696065395561261265524', '3.68456151270816542115463261369696065395561261265524e+21'); + T('-0.0000000000000015', '0.0001183766448622143702316173650526018028825820894748606870475', '0.0001183766448607143702316173650526018028825820894748606870475'); + T('-2.8', '-0.000000000001829913701194321808657770171290559944848203', '-2.800000000001829913701194321808657770171290559944848203'); + T('0.000018752442721586663741713313007598397434839252', '-396673155594371.6367526145400674503928659772089760230841322', '-396673155594371.636733862097345863729124263895968424686697360748'); + T('-13096091967075751663002949891851210', '-1477304896251731689853.4603171477120194670', '-1.3096091967077228967899201623541063460317147712019467e+34'); + T('-740512796205842509947742580189685788668.411', '-2824022128765.93600320598135905249475748957', '-7.4051279620584250994774258301370791743434700320598135905249475748957e+38'); + T('-0.00000000000000000007489577842583193917', '1.663748696735089', '1.66374869673508899992510422157416806083'); + T('-358935750965455.3592219004802490902523174719', '43371.1', '-358935750922084.2592219004802490902523174719'); + T('9667988395245566159878.653259', '0.000000000116385624231571218', '9.667988395245566159878653259000116385624231571218e+21'); + T('2758033402.5184130', '661106474725.93', '663864508128.448413'); + T('999070419142037555127.53', '-381460743151065544049291431867372559397611945291347286', '-3.8146074315106554404929143186737156032719280325379215847e+53'); + T('-92699966163766696.7490442006', '-1915615.8916014755799758113439947795642627', '-92699966165682312.6406456761799758113439947795642627'); + T('489937.3780742473458733440028228509907624', '-1', '489936.3780742473458733440028228509907624'); + T('-0.000000000000754489936', '-0.00000000000036618270314381889826166978763226', '-1.12067263914381889826166978763226e-12'); + T('390379828579195857322601563326484972906745.91988878145980541', '704108103.1382116', '3.9037982857919585732260156332648567701484905810038145980541e+41'); + T('-26.87', '2353822.691199775358305790461', '2353795.821199775358305790461'); + T('-1587155103407939753589555224978500385.2263024764001305020', '0.0000000000011377959206097569335266885356013552156589880648', '-1.5871551034079397535895552249785003852263024763989927060793902430664733114643986447843410119352e+36'); + T('-5708346691.2506', '-2970137689.07191265257072771', '-8678484380.32251265257072771'); + T('0.0000000000000002334849322956799148269551416529021258', '51972.5801195102957735093196127055803694295535', '51972.5801195102957737428045450012602842565086416529021258'); + T('-104080.3162441765370132760114', '0.000000390882311111306995576914162226185882353716', '-104080.316243785654702164704404423085837773814117646284'); + T('-1923634420932885580541323911945854', '-5442.2', '-1.9236344209328855805413239119512962e+33'); + T('269402746056235370532350773376.6611241372196686370390', '-2.398', '2.69402746056235370532350773374263124137219668637039e+29'); + T('4.6142', '-91954290028090809.5727705166649650', '-91954290028090804.958570516664965'); + T('0.0000000038792075674539308578456', '-0.00000000799999446190038', '-4.1207868944464491421544e-9'); + T('86889265743549292727829232652504603134424', '3966264277627964.8584259691377065', '8.68892657435492927278292366187688807623888584259691377065e+40'); + T('-0.01849718975477457', '42293783764.387302167416177115129958269578', '42293783764.368804977661402545129958269578'); + T('229183.9324129997835780196022124839', '-180.13280', '229003.7996129997835780196022124839'); + T('0.0000000000000004071', '-6632946124.9569670001116089493461386479567752', '-6632946124.9569670001116085422461386479567752'); + T('-79368388.12060961147325951196402', '-8818967839841756190843118.1854748170628718251708829084816359', '-8.8189678398417562702115063060844285361313371349029084816359e+24'); + T('-96.8977819169541179624268824', '-110441943210894571.8830072797816067381187179609278660643', '-110441943210894668.7807891967357247005456003609278660643'); + T('-36873417583534015.45598304691218697443', '1060166.917377718838271', '-36873417582473848.53860532807391597443'); + T('0.000000000000002700871444392', '-0.0605349026669693089396005912402318', '-0.0605349026669666080681561992402318'); + T('-0.000000000000053692523', '-0.00000137254604803', '-0.000001372546101722523'); + T('1074227134372692301132209354432413147.1963324', '0.000000000000003598619851546479146545077911695828898095102737795956459', '1.074227134372692301132209354432413147196332400000003598619851546479146545077911695828898095102737795956459e+36'); + T('-1017687657058637575723357458862923106911128795220693738771601', '4258563010.69702', '-1.01768765705863757572335745886292310691112879522068948020859030298e+60'); + T('15695318372.722371', '-7262689556596731591510081797054945.08235892482', '-7.26268955659673159151006610173657235998792482e+33'); + T('-0.184121579717', '-0.00000000000032197634799642162905185759509417879', '-0.18412157971732197634799642162905185759509417879'); + T('496711464563303349082978268361607314429719423836547893298', '0.00780349823846259456540557', '4.9671146456330334908297826836160731442971942383654789329800780349823846259456540557e+56'); + T('-303514.82542426177461216895784715957208157971', '-0.0000000000000010372854153009492220571724887918212517847890822413245347', '-303514.8254242617746132062432624605213036368824887918212517847890822413245347'); + T('-34126709757832', '-1034.8105337', '-34126709758866.8105337'); + T('-557553079116126732746.60346222066', '-194401.4', '-557553079116126927148.00346222066'); + T('5', '13969995', '13970000'); + T('0.000000000024420167617316425311147207326564663249988502924425073', '58388856055235574885008260342295638772198164.947520', '5.8388856055235574885008260342295638772198164947520000024420167617316425311147207326564663249988502924425073e+43'); + T('-1952712333.155776956436338241', '-0.000000000000001787', '-1952712333.155776956436340028'); + T('0.000000000000000000442399285756922519285614916177278059874646382070215708393687', '-0.0000000000007944556433362323923998778322490216082668198093259', '-7.94455200936946635477358546634105430988759934679517929784291606313e-13'); + T('-17.91', '1176950886190171466875.8668061191330515772843337822020031191', '1.1769508861901714668579568061191330515772843337822020031191e+21'); + T('157077985623370359640124976052501925', '28604427989766282.76371', '1.5707798562337035966872940404226820776371e+35'); + T('7453449.6233221933856360936994951958191632578932339027257', '7220.0', '7460669.6233221933856360936994951958191632578932339027257'); + T('19787312872.5997045141158923178398412505666161654557403133090', '-37306481586787392775866703659600367821024385.6498012', '-3.7306481586787392775866703659600348033711513050096685884107682160158749433383834544259686691e+43'); + T('0.0036377269513631890696573602180806431948860786178658756', '2028146793266265751425109925774562808347846641', '2.0281467932662657514251099257745628083478466410036377269513631890696573602180806431948860786178658756e+45'); + T('-69329355007729552.734184155872579911364124970', '49428086084838561002968128.908102465415944072794710779766855', '4.9428086015509205995238576173918309543364161430585809766855e+25'); + T('5.236129243946948546627393853048424524035753709977', '1458.28382091564243822112', '1463.519950159589386767747393853048424524035753709977'); + T('-125770.7986824578099574150670482067998529', '-54536494221899508990432759126.5854', '-5.45364942218995089904328848973840824578099574150670482067998529e+28'); + T('0.0000000000000000040282063397187671534478', '42.9342796393702', '42.9342796393702000040282063397187671534478'); + T('112255.6473762401', '625578631883141131859950104709.402446232383239610277', '6.25578631883141131859950216965049822472483239610277e+29'); + T('0.0000000000008204051137050998759261498906577146164344577915568026', '-914503544747584022218019464876', '-9.145035447475840222180194648759999999999991795948862949001240738501093422853835655422084431974e+29'); + T('0.000000000000032086696834814061554271827918462166063', '-7', '-6.999999999999967913303165185938445728172081537833937'); + T('-16102511193600.208625575', '0.0000000005921920429652733476192339', '-16102511193600.2086255744078079570347266523807661'); + T('0.05330917360748068', '-1387662245.82971965501508', '-1387662245.77641048140759932'); + T('332566083814742507.4381', '50225079040717.5', '332616308893783224.9381'); + T('0.0535616342876656884145', '40.302980205257854', '40.3565418395455196884145'); + T('2.095810329351761236733504648511', '1291032886241879180795380.39652395418615', '1.291032886241879180795382492334283537911236733504648511e+24'); + T('76.93666308278743385854202793941924424687995851136', '-0.0000031951856193404', '76.93665988760181451814202793941924424687995851136'); + T('-4089192.401545276102326047095158140681', '0.0000000000294587249643456047378078626482043840305033', '-4089192.4015452760728673221308125359431921373517956159694967'); + T('-0.0000000026917607386', '-0.000000001463738085548829246226730', '-4.15549882414882924622673e-9'); + T('5997.3860262975745', '-9.2570184551997909', '5988.1290078423747091'); + T('-0.0000001736810132395059213491577845055187737', '-16125521840386.2', '-16125521840386.2000001736810132395059213491577845055187737'); + T('-12.393', '-959175810182.97', '-959175810195.363'); + T('0.000000000000000012703677534683229539552879126254493256638930817', '-162613165341774647773791411159812774229455.506', '-1.62613165341774647773791411159812774229455505999999999999987296322465316770460447120873745506743361069183e+41'); + T('5765801580384047256456488623813074.84286854632242004465357', '165435022359303094.00576799365464765649', '5.76580158038404742189151098311616884863653997706770114357e+33'); + T('0.000024851933157201952923401889849591044056443558822429', '-19872544695921164383628718578914483460945374183201070203', '-1.9872544695921164383628718578914483460945374183201070202999975148066842798047076598110150408955943556441177571e+55'); + T('15967162444205725.5835876977581985895876178', '-22.09383479755539543658379', '15967162444205703.4897529002028031530038278'); + T('-1895.5870000978149', '158456457583275411.151255931089745677273050725', '158456457583273515.564255833274845677273050725'); + T('0.00000000000000006613200838614468668274572771438132', '0.000000000000009799052946232089973195569084478957663245622', '9.865184954618234659878314812193338983245622e-15'); + T('-0.00007217386', '-30380533.92750742177144456679338699', '-30380533.92757959563144456679338699'); + T('49321761839.8798408956884550', '104924407952098597601614114560902417392737539279.14066', '1.04924407952098597601614114560902417442059301119020500895688455e+47'); + T('-1691047173618367369.8797144744337845447480409090470639328', '-10750', '-1691047173618378119.8797144744337845447480409090470639328'); + T('-16791796.527002378128880210996658740114552744738867694', '115759936860192797305173026', '1.15759936860192797288381229472997621871119789003341259885447255261132306e+26'); + T('-1029316.894', '261548573279697971.910', '261548573278668655.016'); + T('0.0001296647057215427680944560864883468441013790931695', '-1054.824421', '-1054.8242913352942784572319055439135116531558986209068305'); + T('-46699431235320232532.67509849580', '0.000008979993955818623', '-46699431235320232532.675089515806044181377'); + T('-6298558991125571.36653922609195960880571', '-4113889298860378827260223247091017172.9329596', '-4.11388929886037882726652180608214274429949882609195960880571e+36'); + T('-2336086975140170284498.42499016188003935830', '1457086105105141790243380324424465.1603058805177211619', '1.4570861051028057032682401541399667353157186376818036e+33'); + T('13584368794590929.65056685978986415743426966', '1.22576526919', '13584368794590930.87633212897986415743426966'); + T('-1327351.46438658329883133911209577075273465014', '0.000000000005775966498832314718', '-1327351.46438658329305537261326345603473465014'); + T('-516531363720634698623139507801786560806', '-137346717602427886117612615306931.7600975293129786', '-5.165315010673523010510256254144018677377600975293129786e+38'); + T('-497191321049479298.6006597', '-1047994963280.836414', '-497192369044442579.4370737'); + T('-0.0000000000000002185586000243939351096925920847', '-0.0000000000009048521726041772916157', '-9.050707312042016855508096925920847e-13'); + T('6016595778895316729168438939349.8686687192', '5526181676412323789926982786789.74580518160', '1.15427774553076405190954217261396144739008e+31'); + T('3.0095', '-0.0000000000005426618174200484334', '3.0094999999994573381825799515666'); + T('-68807659807110289490038532736.1520217818672205564919342', '-523349129605691396252486008533.3780711514', '-5.921567894128016857425245412695300929332672205564919342e+29'); + T('-113364492557824.61981595', '-4469693.046218916056590', '-113364497027517.66603486605659'); + T('-0.00000000000164215561823273145124136513441258', '-4973023665107453759495929363162.8237739698', '-4.97302366510745375949592936316282377396980164215561823273145124136513441258e+30'); + T('35.9888417583081351968218538', '-14915.870931400193663433176830', '-14879.8820896418855282363549762'); + T('-2331.988493276549717942', '0.00000000000141823854809196715', '-2331.98849327654829970345190803285'); + T('-11371.3496728385913350997078680648168992940913566777190', '-2397016.60966829969942721806170794681095113', '-2408387.959341138290762317769576011627850424091356677719'); + T('3383157742756319045795578039331661679255299628783006818', '112.431', '3.383157742756319045795578039331661679255299628783006930431e+54'); + T('0.1199645670415880693938857655777249', '-44832078259011.6759', '-44832078259011.5559354329584119306061142344222751'); + T('-0.000074515', '0.000000000000822522086975415741166136452344243213662423269', '-0.000074514999177477913024584258833863547655756786337576731'); + T('-316363904412657873.82463253361', '6029091127919181004154328007134773005154138.82694336', '6.02909112791918100415432769077086859249626500231082639e+42'); + T('-2948135076910640.90049', '5761548892564240496281853871829076765874909400', '5.76154889256424049628185387182612863079799875909951e+45'); + T('58372178458636173167435580966904.9', '-0.0000000000000000069124', '5.83721784586361731674355809669048999999999999999930876e+31'); + T('-1030343159494169', '1.17687493992567335710622120899406991559327721710205732290350', '-1030343159494167.8231250600743266428937787910059300844067227828979426770965'); + T('-364369717.74', '1051.2619702659448865', '-364368666.4780297340551135'); + T('-14700708312683508124053613483934', '169203221928.16495122822999668712809968967', '-1.470070831268350812388441026200583504877177000331287190031033e+31'); + T('-7136587497.6210794583359262865362602', '0.000000000000000943850201474525427491095625665832833080048218', '-7136587497.621079458335925342686058725474572508904374334167166919951782'); + T('543052781691689788023396133911013281045', '-0.14820404005794765846900406675812481', '5.4305278169168978802339613391101328104485179595994205234153099593324187519e+38'); + T('110663366765368921.0866334279485908190131223654028', '36120532541712948438741340607422573739675370', '3.61205325417129484387413407180859405050442910866334279485908190131223654028e+43'); + T('380658.3', '-2065165618.375157186233', '-2064784960.075157186233'); + T('-17457782.9819883601', '942920318414698402627635914937488163385896', '9.429203184146984026276359149374881459281130180116399e+41'); + T('8629631914097.8362771910', '-4.034', '8629631914093.802277191'); + T('288071238497.1261824965452941330232', '1052', '288071239549.1261824965452941330232'); + T('78997931984403436704001039530.3024629578317209', '0.000343258751917970970676216110596811', '7.8997931984403436704001039530302806216583638870970676216110596811e+28'); + T('-2.25', '111337103342848345761099521859657477916973094722775.5951', '1.113371033428483457610995218596574779169730947227733451e+50'); + T('-1', '0.00000332919915648989163252787357017400732468280', '-0.9999966708008435101083674721264298259926753172'); + T('-16445332684883.22825', '-0.00000000000000012333460118914012271577551957339747141406', '-16445332684883.22825000000000012333460118914012271577551957339747141406'); + T('-31175222200344385644218736866483.2725089', '-3327088982173967964155665008077925357598', '-3.3270890133491901645000506522966622240812725089e+39'); + T('-1252051655804', '0.00000000264882354935793977626553543541414436396686075411715667541', '-1252051655803.99999999735117645064206022373446456458585563603313924588284332459'); + T('-0.0000000000000000000158865062136901543406179703019550687767953302019945978597', '1020942680079952748611824.185392743482507618487632660693', '1.0209426800799527486118241853927434825076184717461544793098456593820296980449312232046697980054021403e+24'); + T('-35898806424024840518', '1209273562014126837', '-34689532862010713681'); + T('0.00000000000000000063529152935584224393904', '0.000019230208356140680362397434569942324862475539', '0.000019230208356141315653926790412186263902475539'); + T('-33441632499.7607713725472193611665003418', '106413', '-33441526086.7607713725472193611665003418'); + T('-4.75634838524050727239455330', '0.00000222716225977301166476', '-4.75634615807824749938288854'); + T('-852521157106518977717317.959654055992630233016032351392', '-0.0000000000000000017823481878995487452645517241108404', '-8.525211571065189777173179596540559926302347983805392915487452645517241108404e+23'); + T('161134348969753.7818551261464', '14778587228410.68', '175912936198164.4618551261464'); + T('-369981.81', '434675717524696906710428616481.721', '4.34675717524696906710428246499911e+29'); + T('-2332861219206834364527.48368', '19149287947261990184026730628.5871', '1.914928561440077097719236610110342e+28'); + T('-0.00000000000000116369456154760102530923593100791059354951050808242146', '-81782712838440550651059561384159250420604069689985758.44650', '-8.178271283844055065105956138415925042060406968998575844650000000000116369456154760102530923593100791059354951050808242146e+52'); + T('-351.475892554479058', '-447032714556907039546625862961730678.7', '-4.47032714556907039546625862961731030175892554479058e+35'); + T('-0.0000000000005359206060244700158823650', '-0.0000000000000000003863162428565', '-5.35920992340712872382365e-13'); + T('2', '-0.00000000000000005866552459931', '1.99999999999999994133447540069'); + T('639324673786985183757123973071419.69', '0.000000000000000105695777609583429374882466829273', '6.39324673786985183757123973071419690000000000000105695777609583429374882466829273e+32'); + T('4294088930905823047177509660568176369997.858000657', '0.00000000190441051986057354054684652513790', '4.2940889309058230471775096605681763699978580006589044105198605735405468465251379e+39'); + T('81952.93187082317', '-3354935.93728410227615128341536014594398120471', '-3272983.00541327910615128341536014594398120471'); + T('22.4490', '-60024492865596734181918135790584892061552368', '-6.0024492865596734181918135790584892061552345551e+43'); + T('82042481481926776214220048262853946881327742847', '-8538522144679468521.62573001550037', '8.204248148192677621422004825431542473664827432537426998449963e+46'); + T('-4821483203793.49440644526137664', '-0.000004487693742178692907867', '-4821483203793.494410932955118818692907867'); + T('6.110882058707251378846629539352045716', '-418562303949284087382062254279932829.02', '-4.18562303949284087382062254279932822909117941292748621153370460647954284e+35'); + T('-0.00000000000000003499186801952540123648020382', '-65374665927301037435189057407673135706346962', '-6.537466592730103743518905740767313570634696200000000000000003499186801952540123648020382e+43'); + T('-117.491', '-35267005558911708.73667772625498979866', '-35267005558911826.22767772625498979866'); + T('-1305188291195132404665648036283152', '-48817.0270426507883050419161', '-1.3051882911951324046656480363319690270426507883050419161e+33'); + T('-332959.31909282242075209', '-0.031741578746012412923914', '-332959.350834401166764502923914'); + T('-17.1394344634', '-0.00000229726550687811210739718966133', '-17.13943676066550687811210739718966133'); + T('810780860238944784555214657769411196386947.54', '4.92693024082761080', '8.107808602389447845552146577694111963869524669302408276108e+41'); + T('-1048758998827591442543266558.0106480081485758097', '-94.076883827230674850527236', '-1.048758998827591442543266652087531835379250660227236e+27'); + T('704447412485396882279061367382703398302182548530873140734.6', '6.1441561936492973077606028', '7.044474124853968822790613673827033983021825485308731407407441561936492973077606028e+56'); + T('-9', '14240110.34382757891637692908119148', '14240101.34382757891637692908119148'); + T('-2.17399974', '-7.782135494523838665700444005467417478', '-9.956135234523838665700444005467417478'); + T('423939022366100.1303605421315647706922839530', '-148861179543023924.831222210', '-148437240520657824.700861667868435229307716047'); + T('-524884.99509383', '-8951228003529351713733925073.1782', '-8.95122800352935171373444995817329383e+27'); + T('-0.020796655578405', '368497345356.14', '368497345356.119203344421595'); + T('-1963433333827228036507.697737169766323166530902591', '-957846652507696110363', '-2.921279986334924146870697737169766323166530902591e+21'); + T('0.000001311', '-3369850772751642763158244569.8616096', '-3.369850772751642763158244569861608289e+27'); + T('4794.0', '-1192644326919702801393470130877439453668.01186106844617097', '-1.19264432691970280139347013087743944887401186106844617097e+39'); + T('-1021147107953300067786801337030572.294185965004276223', '-39540941781.309992029344807273', '-1.021147107953300067786840877972353604177994349083496e+33'); + T('-7044613941200081350320568560980315.797014086930', '-22.98', '-7.04461394120008135032056856098033877701408693e+33'); + T('0.0000090121286833758732990328348454967225169260742236026', '990483291162514723456237581.12', '9.904832911625147234562375811200090121286833758732990328348454967225169260742236026e+26'); + T('-26.736', '-50947076888389365.5543516223716887', '-50947076888389392.2903516223716887'); + T('0.00000000019379047403352963512763584433797131380295276579883848', '351648601080041724641347981598154974909945367236167357297', '3.5164860108004172464134798159815497490994536723616735729700000000019379047403352963512763584433797131380295276579883848e+56'); + T('-13975.741', '373024094875867055483269157586785.905835293458170355', '3.73024094875867055483269157572810164835293458170355e+32'); + T('-299.92', '-11054263.84681950544', '-11054563.76681950544'); + T('-1406576080.91', '-11.8662', '-1406576092.7762'); + T('0.00000000001874641346', '0.00000000000000486443153897052258296310659171509120488311396238084788', '1.875127789153897052258296310659171509120488311396238084788e-11'); + T('1205.34627565144026871663097', '1249.7837058417060142511952909501288363112688', '2455.1299814931462829678262609501288363112688'); + T('-4.39', '545534', '545529.61'); + T('-2916468.72915302357477562892725843748', '-78412.481653315', '-2994881.21080633857477562892725843748'); + T('1', '1157759807263227857254563934897', '1.157759807263227857254563934898e+30'); + T('-104251055525855379611.30896754', '-16664469.85', '-104251055525872044081.15896754'); + T('0.00000000000261749383970', '-11939719.526854341', '-11939719.5268543409973825061603'); + T('-0.0000000090677528576752114233457187000354303371555029332226226', '-0.0000054807823719971287602588898631186660', '-0.0000054898501248548039716822355818187014303371555029332226226'); + T('-116485999654579416404.1770995047267', '-1056453978415557512986444149851256428790784', '-1.0564539784155575129865606358509110082071881770995047267e+42'); + T('129605008229833515.738549411440577906', '-2966237394191984.299672767366997401377001384652892925560', '126638770835641531.43887664407358050462299861534710707444'); + T('38233691542980267658744125', '22629558718.76465481003636074', '3.823369154298029028830284376465481003636074e+25'); + T('-8533862254008034912764735.004170692', '0.00000000000002245605992555542408030328467190', '-8.5338622540080349127647350041706919999775439400744445759196967153281e+24'); + T('10553.65', '-0.00000049686576247164541003858453804', '10553.64999950313423752835458996141546196'); + T('-51954241699518441712828334574084047.068703826124873318564', '395669535095772787686098943620277851996703327535', '3.95669535095720833444399425178565023662129243487931296173875126681436e+47'); + T('-23122182991889866069296720914272472', '58837368013.02465555264983929119523508427711325303360206', '-2.312218299188986606929666207690445897534444735016070880476491572288674696639794e+34'); + T('0.00000000397559426', '-371081877267739.52921835969493214299461', '-371081877267739.52921835571933788299461'); + T('-1318006475307606890136618572999490756076602355.97', '632863313713664.4745327432714901307248136075', '-1.3180064753076068901366185729988578927628886914954672567285098692751863925e+45'); + T('-23439088778534600.8640688389613841', '16', '-23439088778534584.8640688389613841'); + T('21557692582940554231371458355850911425', '54.498980233719', '2.1557692582940554231371458355850911479498980233719e+37'); + T('-15841465782.23786068092567135289691949618', '-0.06849728241', '-15841465782.30635796333567135289691949618'); + T('0.0000000001081504196289698603171046129405333329174', '-1442109.88437873202181493001814004974080724589', '-1442109.8843787319136645103891701894237026329494666670826'); + T('-0.00000000001647', '282001122341733786209765075874760.2208698094645570', '2.82001122341733786209765075874760220869809448087e+32'); + T('99430939117933248217120.374139300891394898188889827982140', '0.00000000000000029379095872418716620806971498023154656656222336363941', '9.943093911793324821712037413930089139519197984855216930620806971498023154656656222336363941e+22'); + T('32.0', '-27722898.863296087173', '-27722866.863296087173'); + T('156106106814604967305174465335864706671583.70259565626257897', '-13917199525611', '1.5610610681460496730517446532194750714597270259565626257897e+41'); + T('0.000000000000012756394816575404961299', '7517.05', '7517.050000000000012756394816575404961299'); + T('16.12', '-420571324087664540438479.845', '-4.20571324087664540438463725e+23'); + T('2418460022267862452.4', '41.457986607816857109', '2418460022267862493.857986607816857109'); + T('148234016059793326337.640', '11.03882097673491443395332118707526905738860', '148234016059793326348.6788209767349144339533211870752690573886'); + T('590735628836667929357165331457381099840530274992323824', '-35.537', '5.90735628836667929357165331457381099840530274992323788463e+53'); + T('-91.305944234004155285775629491875981263029245580213970209', '-0.10312097106790790600287727466092359571108', '-91.409065205072063191778506766536904858740325580213970209'); + T('351474.4', '-409.9417808528084374954481354713200702998578', '351064.4582191471915625045518645286799297001422'); + T('0.00000000000000000268393845813954', '232389665408735', '232389665408735.00000000000000000268393845813954'); + T('0.000085437842245145501815518395009858127503498', '-228105253425581861', '-228105253425581860.999914562157754854498184481604990141872496502'); + T('113814704131627223061784854080682', '-0.00000000000000495917538613516689674', '1.1381470413162722306178485408068199999999999999504082461386483310326e+32'); + T('-104597143810254066499700', '-1320192161655050.18', '-1.0459714513044622815475018e+23'); + T('-808665613705806138579.9252448473426840', '-0.000000000463', '-808665613705806138579.925244847805684'); + T('-10652723155657612558630867.3337753966347961185835734448179360', '-1074473046919580926107363821097544239456092192199611', '-1.074473046919580926107363831750267395113704750830478333775396634796118583573444817936e+51'); + T('30.873', '-2877.8117541278', '-2846.9387541278'); + T('280550729.708', '15.0', '280550744.708'); + T('-165734300554398023710.52770', '44297520438', '-165734300510100503272.5277'); + T('0.00543767539426789750178885690131013907', '9444317260148.44999438456024566306', '9444317260148.45543205995451356056178885690131013907'); + T('3.906258287', '-101756814758789018743117855884.8664231869', '-1.017568147587890187431178558809601648999e+29'); + T('0.0000000000466441425', '-7925237.129420', '-7925237.1294199999533558575'); + T('-8793636.6549628644427603574935', '-168717.26735969139', '-8962353.9223225558327603574935'); + T('16229113210072', '-1.66', '16229113210070.34'); + T('-274', '5543767652349683046313915.6084123313153941360541851', '5.5437676523496830463136416084123313153941360541851e+24'); + T('697036466897177207083246447.2299025435243117175710148553', '0', '6.970364668971772070832464472299025435243117175710148553e+26'); + T('-46.3370059936', '10533716878.34472089', '10533716832.0077148964'); + T('10374324.55170082277424656551004841876', '27751581009979569031375460467333.939804424', '2.775158100997956903137547084165849150524677424656551004841876e+31'); + T('-26.207', '-0.0000000000000031037896000885366', '-26.2070000000000031037896000885366'); + T('0.00000008010', '18.21', '18.2100000801'); + T('4842596615336.5226989764856168408', '693189245669296426406216', '6.931892456741390230215525226989764856168408e+23'); + T('-0.0000000000000851077176424519554600753331960725209384331282631736', '-0.00000000032044460270651016683689341535385222681285333039475669967745', '-3.2052971042415261879235349068704829933379176352301987327745e-10'); + T('-45733275107439777530880615832524693352357490.41665', '-9002296385923358097661509924413196524814431890711992169', '-9.00229638596909137276894970194407714064695658406434965941665e+54'); + T('-0.00000000000000000156439224707874070263669523081315808081534434429692222172674', '0.00000000000000000004291737953641998', '-1.52147486754232072263669523081315808081534434429692222172674e-18'); + T('0.00000000198897553988595375857564654222391162510361117709636863903', '-10.007927501632868864725076236004253517352', '-10.00792749964389332483912247742860697512808837489638882290363136097'); + T('-0.0000000000000000823558627325', '0.000000118691410206725495', '1.186914101243696322675e-7'); + T('-6276754.7824301277909646649809', '-2300076804510676.99579229048', '-2300076810787431.7782224182709646649809'); + T('-1477245255838368818869339352082881086281616770202', '260.2', '-1.4772452558383688188693393520828810862816167699418e+48'); + T('-69931380572295540885943992404507908544953094482.1746111', '6493037948200.611359', '-6.99313805722955408859439924045079020519151462815632521e+46'); + T('-32658268317284858182413184281435089775970459834815.66170', '-0.000000000000342812261960547876364567574654890642067512409498', '-3.2658268317284858182413184281435089775970459834815661700000000342812261960547876364567574654890642067512409498e+49'); + T('-226963.2043', '-496091', '-723054.2043'); + T('-103912.138149562507', '-62.4', '-103974.538149562507'); + T('-2.2', '-192.817990', '-195.01799'); + T('222123997760197158313997248315192554300081415.469', '0.000000000012667203104882341577765952699206164', '2.22123997760197158313997248315192554300081415469000000012667203104882341577765952699206164e+44'); + T('131249246364141493511095170397038.4', '12005458301968.10861506047414540', '1.312492463641414935231006286990065086150604741454e+32'); + T('-6103920949696.969088220006245342108451032227019740900968', '-8610778484315116167388258277248987747817680', '-8.610778484315116167388258277255091668767376969088220006245342108451032227019740900968e+42'); + T('10233395574.3608814100201268800987627468958287183008442076', '2066089654793590701954', '2.0660896548038240975283608814100201268800987627468958287183008442076e+21'); + T('1054800822950425857387.3975342786210238442171979019733049494', '268210275857404541391650497878689.609927', '2.682102758584593422146009237360770074612786210238442171979019733049494e+32'); + T('0.0000000000000000005358606622145297463680878712323075380428171088961554207868', '21625227877279.763', '21625227877279.7630000000000000005358606622145297463680878712323075380428171088961554207868'); + T('0.0000000000000000038580163605093667407219262159717409196345947134', '26563841772035062352711123348805920.54972', '2.65638417720350623527111233488059205497200000000000038580163605093667407219262159717409196345947134e+34'); + T('0.0040413342647577519898276000725944344977704', '56147277645684.4193402', '56147277645684.4233815342647577519898276000725944344977704'); + T('4364458714.2682', '316321.1973', '4364775035.4655'); + T('-3442146624234450575848597310365404902.6280403978894069', '9600031560472464093658037177768209030975667.931701', '9.6000281183258398592074613291708986655707653036606021105931e+42'); + T('0', '-549407495633380422499474.55571333', '-5.4940749563338042249947455571333e+23'); + T('-37479660228.14714', '-1.75484', '-37479660229.90198'); + T('-26584742.26667643650870662855172761916351306', '-0.00000000000000187865453650020', '-26584742.26667643650870850720626411936351306'); + T('-58.001178998055584357671459355923764911439509141805', '-50935290675172160.97675237172778455', '-50935290675172218.977931369783368907671459355923764911439509141805'); + T('-0.00000000000000000034052335201240933961815921', '0.025619781818507958387831333698180', '0.02561978181850795804730798168577066038184079'); + T('-0.00000000000000008274050377833639593377852710426025817', '242065602.8095741290098057721936971088', '242065602.80957412900980568945319333046360406622147289573974183'); + T('-221524.27663105095567467682134', '-2258391802026441769618755584758918156197711875845897035768', '-2.25839180202644176961875558475891815619771187584589725729227663105095567467682134e+57'); + T('-0.0000000017893705878914010575881803996966689837370969008155370432', '-0.00000297259632962708146112815320511201052652', '-0.0000029743857002149728621857413855117071955037370969008155370432'); + T('-0.00000000000406710488085149344523', '-278522.037156181204952078706297015294979477127184963777538', '-278522.037156181209019183587148508740209477127184963777538'); + T('11973889508.580802', '1871682273132124693', '1871682285106014201.580802'); + T('0.0000000000000000033353113686655236115870191745605104608147650', '11625246.252195', '11625246.252195000000000003335311368665523611587019174560510460814765'); + T('-5318806059561785713953', '-0.0000000000000012146467404768921900862164865027461683067265853186116641', '-5.3188060595617857139530000000000000012146467404768921900862164865027461683067265853186116641e+21'); + T('-309.3', '-0.00000000000006218919975652358743864716', '-309.30000000000006218919975652358743864716'); + T('-1874575484506897571974850167460839993082172311.68616497703', '-0.0000000942559460072629437399413345982786975068449962297', '-1.8745754845068975719748501674608399930821723116861650712859460072629437399413345982786975068449962297e+45'); + T('-21', '-0.0000000000000397635708714407055658459', '-21.0000000000000397635708714407055658459'); + T('-1302141913979670987068496048', '-0.0000002335314231823837373064', '-1.3021419139796709870684960480000002335314231823837373064e+27'); + T('-8663116.663729764613058828364567651431', '609.8', '-8662506.863729764613058828364567651431'); + T('122805001870129.621993', '546.98190600859999', '122805001870676.60389900859999'); + T('132753213.74892150691420521615', '-2356523694.1', '-2223770480.35107849308579478385'); + T('-255163.150', '-22815991158761.86650580', '-22815991413925.0165058'); + T('0.00000000000000009834358', '27695886984688431669.7', '27695886984688431669.70000000000000009834358'); + T('0.000000000018235737891993707047558745084', '-0.0000027294384492006549909198104817456693956836003182', '-0.0000027294202134627629972127629230005853956836003182'); + T('-13126.0', '0.0000616967410806266771382642088892371968', '-13125.9999383032589193733228617357911107628032'); + T('720874433286547149.29011960', '-0.0000000000175150100264717579452770317006888697250136125181729', '720874433286547149.2901195999824849899735282420547229682993111302749863874818271'); + T('2905655849177158035847281414357098453.291834904651188', '-3', '2.905655849177158035847281414357098450291834904651188e+36'); + T('0', '-1475966921783333685644104279864374261258954134383883947232', '-1.475966921783333685644104279864374261258954134383883947232e+57'); + T('472816652216998927468244178551354910167729088.966726827004415', '177527765826935.24974826329344', '4.72816652216998927468244178551532437933556024216475090297855e+44'); + + T('-274.5620579869', '78329265787241405566496082713913236369654243529457197134761863524633387852302663270044189362081880226597475301.025458805177854094773', '7.8329265787241405566496082713913236369654243529457197134761863524633387852302663270044189362081880226597475026463400818277854094773e+109'); + T('133883508068780764759485.5683529446087107456184862039990020823869300840561329290914475177233060368335', '-14.11123105188787211647630936581927502853383341149933197', '1.338835080687807647594714571218927208386291421768381797270538530966725568009590914475177233060368335e+23'); + T('-3199032706015694214818.7992938105687331661', '-7.87195', '-3.1990327060156942148266712438105687331661e+21'); + T('0.0000000000002295193152912890007348152875969581183350688584884783586480814376317641609774249', '11968142585488462774385062859935899134826448280897530108166161884029199683990896601020507477.320319', '1.19681425854884627743850628599358991348264482808975301081661618840291996839908966010205074773203190000002295193152912890007348152875969581183350688584884783586480814376317641609774249e+91'); + T('429850894793934827539600845168772.8751965913520453918272995739036873865390677578368381581396285338126446790691976041147571854', '-0.00000022801170604582813255353545523124229818428689101495876171494691321154484217536764378725027141584278379447842816929409', '4.2985089479393482753960084516877287519636334033934599916702036823215529676957354994714318086681886573146752435542874711339814972858415721620552157183070591e+32'); + T('0.12630479339914084342606977043625120835780195245007714525361728866248064543254204354136033894', '-57300622033341549450152055498951631223725420435.499102954248138500376888848777133938393663605560964812373961734244028047764768563', '-5.730062203334154945015205549895163122372542043537279816084899765695081907834088273003586165311088766712034444558154740233222651945863966106e+46'); + T('-0.000000000106720353331827', '4068913567129614779805806799030791537958519754660357531521550859320707940360600331986.6231458520200147185933974407694787756642025356767729344', '4.0689135671296147798058067990307915379585197546603575315215508593207079403606003319866231458519132943652615704407694787756642025356767729344e+84'); + T('1481.538992', '69979426854562140198395309', '6.9979426854562140198396790538992e+25'); + T('-481304712134904590633063526049619366756244902183946511856972789126658742068757286270722005910044731533367098.3473844315585478022917336214585042983934', '-9035651250061107335979601717303646.90745896455428', '-4.813047121349045906330635260496193667562449021839465118569727891266587420777929375207831132460243332506707452548433961128278022917336214585042983934e+107'); + T('5998474356563587104327566.3263164708068830115821012882772814947553985814910059469343679580428581460206', '-18057674949163421506117960386922177149977514555439908.159223871467357039682517588208442666597309817931705956866923', '-1.80576749491634215061179603809237027934139274511123418329074006604740281004162999311611718419112364407000099325550419571418539794e+52'); + T('641786663107582574187375964645432626362556087596248087198360354.064673626930039', '106200869851859350.797479350269434371025574271015473262363560762378677', '6.41786663107582574187375964645432626362556087702448957050219704862152977199473371025574271015473262363560762378677e+62'); + T('5280129522068699720461117125312358415979019162822.4201114673061632909516268898605984', '-205756343429440469562776948821275114561497830505910222682069.31376408871563202774509593696096457576461665289977493017361973671523262', '-2.0575634342416034004070824910081399743618547208993120351924689365262140946873679346904710036617576461665289977493017361973671523262e+59'); + T('-0.0000913314112194237567199921654806413644776347028968332389534560276307374133431440995704693847453686', '1.1', '1.0999086685887805762432800078345193586355223652971031667610465439723692625866568559004295306152546314'); + T('-2207121715490045.58', '-3295992738515109953967433108145888727360416859361202947062658620012196801551806622678192.686847483520554027598236734312161', '-3.295992738515109953967433108145888727360416859361202947062658620012196803758928338168238266847483520554027598236734312161e+87'); + T('61759391974251637508280834914990322126219035347147', '64943964591891233846314007885335.444346971691325618829', '6.1759391974251637573224799506881555972533043232482444346971691325618829e+49'); + T('-5540305476191589915887668399303961108947288288224548320', '0.0000294476901910227000564933914711035233697829465135452464583418791303186801762813', '-5.5403054761915899158876683993039611089472882882245483199999705523098089772999435066085288964766302170534864547535416581208696813198237187e+54'); + T('181474807531688120166683732972009536.64969213', '-3175669398983347716917468673419554.2177188765670101302869684383001638592478444069723506434104220110726821325272', '1.782991381327047724497662642985899824319732534329898697130315616998361407521555930276493565895779889273178674728e+35'); + T('-12493662650.119745851863596480945654415210619543132', '399561145206467750513891779469494975331120274361101613876792177943730662310953547064702574.65756653452860298452313916684555', '3.99561145206467750513891779469494975331120274361101613876792177943730662310953534571039924537820682665006503577484751634930456868e+89'); + T('-2166.664029173675712500257', '-0.00000000000067461152096758750665879707326349452924143528959808406172771844392251655077273026039982145730838447563291749346650348630096104418925967461686234281319', '-2166.66402917367638711177796758750665879707326349452924143528959808406172771844392251655077273026039982145730838447563291749346650348630096104418925967461686234281319'); + T('-55126691014038404667432234769742600667346582750812.76081290000540326323203936990298784699977785727177293701354598905047747033', '230955903911091180768255072886786497585594803905488997.065428', '2.3090077722007714236358764065201675498492745732273818430461509999459673676796063009701215300022214272822706298645401094952252967e+53'); + T('-12239899294934406744794741209740399921097535320596.080402725637531427417', '0.000000000000007975735707900012257888169944647551205385287889146629466680800976795', '-1.2239899294934406744794741209740399921097535320596080402725637523451681292099987742111830055352448794614712110853370533319199023205e+49'); + T('-0.00000000000000912462079748634949064954444536474698633137152955660092121181721134185040726847080723736415320180821995', '-28192491050430', '-28192491050430.00000000000000912462079748634949064954444536474698633137152955660092121181721134185040726847080723736415320180821995'); + T('5365712579646207337626428460702379954655063519', '-171091164429397358988968907423411173590072414448497446341010313844726796866187751610819558166794791576734732137347669225657216896755433103171081237', '-1.71091164429397358988968907423411173590072414448497446341010313844726796866187751610819558166794791571369019557701461888030788436053053148516017718e+146'); + T('-1981290034036713612.3587708893531360121978707494237', '438761731488571.030446306123818027751940714135233838', '-1980851272305225041.328324583229317984445930035288466162'); + T('-2755875412874743140386728151346', '2.8472810', '-2.755875412874743140386728151343152719e+30'); + T('-157.549092251345721782955172995326812019919432214305439543', '142439127771945282929407965570725127160359050662864293026220308331445962610.79480267325422', '1.42439127771945282929407965570725127160359050662864293026220308331445962453245710421908498217044827004673187980080567785694560457e+74'); + T('0.3491333927087766478511955867195720082891559879520214956234991486163801992970042826730252168795279033184196910108870648', '-756356333951812709085600894164769015473490895.271157080699', '-7.563563339518127090856008941647690154734908949220236879902233521488044132804279917108440120479785043765008513836198007029957173269747831204720966815803089891129352e+44'); + T('63261615358197872923073425992.67414929587646886049878412684052256635783684', '32232093735028677679866848653553607775797749686636316132824223211080228103818061093254438705652919', '3.223209373502867767986684865355360777579774968663631613282422321108029136543341929112736177907891167414929587646886049878412684052256635783684e+97'); + T('-0.0000000000000009295380014651692075387777504579033936499297749005685897989061480633040541931247624617087077690289771853068486993070710805656', '-74240982721590027061065744723039918113222511184444001668610337943', '-7.42409827215900270610657447230399181132225111844440016686103379430000000000000009295380014651692075387777504579033936499297749005685897989061480633040541931247624617087077690289771853068486993070710805656e+64'); + T('-38662088769617027684868436557208874287.531787', '-0.00000000000000000004404702485696046546186749454135837739919620970432790136280242735880480845505606335438999503830238610', '-3.86620887696170276848684365572088742875317870000000000000440470248569604654618674945413583773991962097043279013628024273588048084550560633543899950383023861e+37'); + T('0.0000005919093535654695188705799210533565699038', '-1050230870542550895325305037586388557344285623573695378599872476398998237594436121662.36921877939195132369', '-1.0502308705425508953253050375863885573442856235736953785998724763989982375944361216623692181874825977582204811294200789466434300962e+84'); + T('8531356548289.68', '0.0000000000010663385403102579270265567147867424805920', '8531356548289.680000000001066338540310257927026556714786742480592'); + T('-77352959873895499881.6761162233029992762254367454845614002262158269218399300505823906248006070788666306', '-0.000000763350249168968817759292626920653670602769749623937342230173000', '-77352959873895499881.6761169866532484451942545047771883208798864296915895539879246207978006070788666306'); + T('0.04585173770263682911835172946483907318715956718860423056098335799507649567731835', '-545336428117302.06514791235190', '-545336428117302.01929617464926317088164827053516092681284043281139576943901664200492350432268165'); + T('-2000777096546022469363680806530511943528746650101273997534.242598610793331542113919999385909', '-0.000000012960554065829921984561617848403788685435712387766345566655415445798299917451084000', '-2.000777096546022469363680806530511943528746650101273997534242598623753885607943841983947526848403788685435712387766345566655415445798299917451084e+57'); + T('-4637067617611402422338031964698807990446537844332708147280649406995000008716', '-3099749512371613407546572880261013353834801183114544503924317759.7679498142950006458622486041325542794064397790374869775038357487455568411693227469', '-4.6370676176145021718504035781063545633267988576865429484637639514989243264757679498142950006458622486041325542794064397790374869775038357487455568411693227469e+75'); + T('270678062855542005084307870824127678467656.762955855629442335926610514941014722825992247041', '282974792.523705817808', '2.70678062855542005084307870824127961442449286661673437442335926610514941014722825992247041e+41'); + T('-0.00000003225236579904856895487056015821433730938371824218643897684349658964835496773420825844721647906790768973764870027244455', '-0.004924810165331790880550482628308491946560589374047905819960040503118511618345', '-0.00492484241769758992911943749886865016089789875776614800639901734661510126669996773420825844721647906790768973764870027244455'); + T('-2873277.7031566090883', '369526947446567818357.08166567158618885089868282383289', '369526947446564945079.37850906249788885089868282383289'); + T('-2178986538025.6281171045', '-0.90007456268766834245637565755250114155754042861579405494550640641064108080486501982231697766610369506873393983', '-2178986538026.52819166718766834245637565755250114155754042861579405494550640641064108080486501982231697766610369506873393983'); + T('-12610827849005379185996946898193295000242048930.3057', '-50566291142615310315.413773094', '-1.2610827849005379185996946948759586142857359245719473094e+46'); + T('-0.72263391095435659584498561750405291423', '1.6716', '0.94896608904564340415501438249594708577'); + T('-0.00002308861674194925960442185653345749705673163043872636646918599512354359169533298098626366738286911364737665763586940744987791360736201819133314717054', '450814153774.5', '450814153774.49997691138325805074039557814346654250294326836956127363353081400487645640830466701901373633261713088635262334236413059255012208639263798180866685282946'); + T('-0.000000000000042613856152865288514141630996935837135169348614328862241783421937354219792185365968886244399960104759290619174907', '0.0000000000000000974480182403539706738405642564651574120855033994898433979613263953303312911354243605961011258564221775753219595811881303591336456508263682734', '-4.25164081346249345434677904326793719777572631109293723983854606109588894608942305445256482988342483371130438529474188118696408663543491736317266e-14'); + T('134411245152521998394744941365564060927709793292932748805716150.96086322753', '163717756163587942012853208387334527056988170322687172258242323330600618595724408258555875633809739823926575887736071927568012683', '1.6371775616358794201285320838733452705698817032268717225824232333073502984087693025695062057517530388485428568102900467637372883396086322753e+128'); + T('-1135858630959255507879446', '0.0000008656110212823553443864329542508631', '-1.1358586309592555078794459999991343889787176446556135670457491369e+24'); + T('-0.0000000003175675944478684925401856872596765776036876508094511873354931239253559389081387285155438349993170191128163568912691363523242026430941295514496034087951', '13806374012994737257255.1886211194405', '1.38063740129947372572551886211191229324055521315074598143127403234223963123491905488126645068760746440610918612714844561650006829808871836431087308636476757973569058704485503965912049e+22'); + T('-27708159800573272.0883231101900212685541939067996078907774725322218231069648770193298081146113593454964992974439864811', '1069672.96681867083', '-27708159799503599.1215044393600212685541939067996078907774725322218231069648770193298081146113593454964992974439864811'); + T('0.00000429880802966674008131137959417215280776628630203493369987886551523668068778978', '0.00000000077008967289490676642801409841947753617266544157841315779815188796831111777973779955219440658094362925853693153209608918067', '0.00000429957811933963498807780760827057228530245896747651211303666366712464899890755973779955219440658094362925853693153209608918067'); + T('0.0000000000000000000299565', '-73131153293465264.481', '-73131153293465264.4809999999999999999700435'); + T('133297778031366687408810593803463309652201134859997.4758048870790461770038771730220839594432975561216897245860371442353803167578892021729425784575887741', '2364940340353511166077790398873799899.851022395047720', '1.332977780313690523491509473146293874426000086598973268272821267661770038771730220839594432975561216897245860371442353803167578892021729425784575887741e+50'); + T('233341303466412748783092751385962706054310564979814063054720210979264.76320976947', '373546701810748884756.35246337986916104538633936243091901195', '2.3334130346641274878309275138596270605431056498018760975653095986402111567314933916104538633936243091901195e+68'); + T('-0.00000000000001298143460683533187542098532057471443650131347027927061505315402201377004104838055385241660827862931318282364149013913156553270415', '-3144.73816785889762413352612917538951639565049692192872179639873257494799763607259781490677831922245389370215618142714372657806598580728875889749', '-3144.73816785889763711496073601072139181663581749664315829771220285421861268922661982867681936760300774611876446005645690940170747594642032443019415'); + T('83823188981575692224309101153864758580078.5955259490170379255716122945113031579157318931038231', '-40028920687917.16848969', '8.38231889815756922243091011138358378921614270362590170379255716122945113031579157318931038231e+40'); + T('2808691776034467055726891904371173436595982589447978253042154698627671398488784', '9812791602520619.597754130838314809582665890845794489994575586', '2.808691776034467055726891904371173436595982589447978253042154708440463001009403597754130838314809582665890845794489994575586e+78'); + T('348504897735551663451493471155931032198603500912341395392663329685030763642073580083352277207617381115118735257611119505096273334530366023', '3012062864730334700837949872371998966828679.4047646544156150438268952921094746263', '3.485048977355516634514934711559310321986035009123413953926633296850307636420735800833522772076203931779834655923119574549686453334971947024047646544156150438268952921094746263e+137'); + T('93548859880851212916468686274573175909', '-75118428101074788562.506120603990328548341139932377168056', '9.3548859880851212841350258173498387346493879396009671451658860067622831944e+37'); + T('0.000000000000000000194012323991964077673853360201053367800566124970905963785098877971072180640313745271154543409391042526877924567117182739810', '0.0000000236189282059323667779215335', '2.361892820612637910191349757767385336020105336780056612497090596378509887797107218064031374527115454340939104252687792456711718273981e-8'); + T('-389202042550335503825154365205711290405537538112817615439726097659782032124231125784313789925', '0.00000003186474240443828135635273567868516420016402055460073651185', '-3.8920204255033550382515436520571129040553753811281761543972609765978203212423112578431378992499999996813525759556171864364726432131483579983597944539926348815e+92'); + T('175494756398169060188389869312520635210512554543656594330140', '-411530581933818049374887440657899352512027.09153247186642746768921170931268854307755443936717', '1.7549475639816905977685928737870258583562511388575724181811290846752813357253231078829068731145692244556063283e+59'); + T('4598950112574467183729719937465962791614617983103965921055089220439607671.599007540382070086491128969863554413197224811888258922835', '-26938781266346831074998405687771608325810543240305.7378923235384660560482541777264792878816806719888726231', '4.598950112574467183729692998684696444783542984698278149446763409896367365861115216843604030442874792137075125315544139899386299735e+72'); + T('57361809317883677060860671734348051270932088942529602386581.68900107141758948907', '-295802867132191509532524058', '5.736180931788367706086067173434775546806495675102006986252368900107141758948907e+58'); + T('-0.0000125601146369033513236980781240144461675622310937097773', '311729685945211093658295182', '3.117296859452110936582951819999874398853630966486763019218759855538324377689062902227e+26'); + T('-0.000000000000017031301308338958768641001044966021634165409838760713', '7354226011798172001332233249137409933327535976109274125337', '7.354226011798172001332233249137409933327535976109274125336999999999999982968698691661041231358998955033978365834590161239287e+57'); + T('-3.6', '-2815836861296137045153782405432811863217898809.59007', '-2.81583686129613704515378240543281186321789881319007e+45'); + T('1883757916919577797545040700765718683892962925168476980916591444220044498023865115.414486424', '-20632263651557034535417971371523039152817223695099485637652293509653426916474374628814088965383.41423390427269280942433875156452181764219', '-2.063226365155515077750105179372549411211645797641559267472712503267251032503015458431606510026799974748027269280942433875156452181764219e+94'); + T('0.0000000098475053710376389804550097928552217095921881011378913867422148039984790157547999437804576731605639912393200622917271102003', '-53035373614.717805924235005616321273', '-53035373614.7178059143875002452836340195449902071447782904078118988621086132577851960015209842452000562195423268394360087606799377082728897997'); + T('-0.0000811390350949663620350120726675225941477085450778', '-655.20852663603498591718010139782212', '-655.2086077750700808835421364098947875225941477085450778'); + T('2426894083677867432345228015404', '-101468490319724506034682885345783370059542917.575868248657413589', '-1.01468490319722079140599207478351024831527513575868248657413589e+44'); + T('0.30280', '0.000000000000000000254561077129670600967185643', '0.302800000000000000254561077129670600967185643'); + T('2460767093793617543980763007583218463976172951977824518682800860159902541914492786569.988063268009300275066475501733486973382818662', '33247165254498490053797.4453', '2.460767093793617543980763007583218463976172951977824518682800893407067796412982840367433363268009300275066475501733486973382818662e+84'); + T('0.00000000000297623885327264628872813944566975202437690710653591748231030925179641495339618475769115114527914606543143194147848430495597', '120677689870942459137299176289089761143754326820862009921425274349213001568104474801947554427316998849125038885919', '1.2067768987094245913729917628908976114375432682086200992142527434921300156810447480194755442731699884912503888591900000000000297623885327264628872813944566975202437690710653591748231030925179641495339618475769115114527914606543143194147848430495597e+113'); + T('0.00000000000000140253681305432813286110569633536186290552984308384603424304253311258844823992792716702555859199219343153509752', '0.00000000000680532732610522954462416342609639850515130341357440142880229', '6.80672986291828387275702453179273386701420894341748527483653304253311258844823992792716702555859199219343153509752e-12'); + T('-62741750762018440848873834757672851831867995632459744339895230073473.21603443732', '-874741125356670695571041484420725542382859690979070399875164371412.46', '-6.361649188737511154444487624209357737425085532343881473977039444488567603443732e+67'); + T('0.00000000000021176414395474510305287866523610550765676408675802', '256510633937671286139867882266916007823374156029717017148', '2.5651063393767128613986788226691600782337415602971701714800000000000021176414395474510305287866523610550765676408675802e+56'); + T('0.0000000000000000664215993897397955795237104020638588228731275806541568161715250236709545538098694857746988330740', '0.0000000000000072103606167686672117631228552986024686236649558161717746101379938704517818104841311722678845013668413146919184762655', '7.2767822161584070073426465657006663274465380833968259314263095188941227363642940006580425833344408413146919184762655e-15'); + T('-7562874182.83873823754546340019820202614555774800566970410202356651856', '-391433409037814397456500851811078785870089119160317598515862901999756095733578802714504574456.70518495722', '-3.9143340903781439745650085181107878587008911916031759851586290199975609573357880272206744863954392319476546340019820202614555774800566970410202356651856e+92'); + T('-0.0310379152847371895860555796583283692667844392505377548276647230042445', '0.00000082283513482603951054300917006814118588679056861856581955986306659552380016853864396371024709306483760781400794588331', '-0.03103709244960236354654503664915830112559855245996913626184516314117790447619983146135603628975290693516239218599205411669'); + T('87994958901421.56173641605454399949453740849330489135088167019977159972118641759021121261627327050792415022189885286236293442163107348031602461', '-100300365307636143430499359339922108619124158914798.44948', '-1.0030036530763614343049935933992210853112920001337688774358394545600050546259150669510864911832980022840027881358240978878738372672949207584977810114713763706557836892651968397539e+50'); + T('-1550007004.74515351306585502801', '57296100584443643484072467509091114834539973592176211806934477387549446567272546346798', '5.729610058444364348407246750909111483453997359217621180693447738754944656727099633979325484648693414497199e+85'); + T('19679349947742.994127711806874970698304897', '-8.6373642811', '19679349947734.356763430706874970698304897'); + T('54030292.9001', '0', '54030292.9001'); + T('651054592756506304745571531773834326.83644', '-13757776534587654.0116063063442543177687640729791412475434103606212206897637619312584893291977232262578', '6.510545927565063047318137552392466728248336936557456822312359270208587524565896393787793102362380687415106708022767737422e+35'); + T('-508728777596140418455412767451446817854358041268106849523.35989817998722029624762450551681595146802924988664', '-50262054005503525686132151227512844312491027044172912.40', '-5.0877903965014592198109889960267433069867053229515102243575989817998722029624762450551681595146802924988664e+56'); + T('-28915075134892302952316258686216304990690277355', '12.6179700286426790566', '-2.89150751348923029523162586862163049906902773423820299713573209434e+46'); + T('-0.000000000000000204506794915221132784856197218478429446796657919285394521228788556955524', '-86151293785140264277.3878186179195', '-86151293785140264277.387818617919500204506794915221132784856197218478429446796657919285394521228788556955524'); + T('42235147499429175944266679795088142906175521777163730652253755746712473163633468251357976', '-0.0023908655154', '4.22351474994291759442666797950881429061755217771637306522537557467124731636334682513579759976091344846e+88'); + T('591589.86', '0.00000000000000000001860329292788516991407643664465772674133322798829000748004481876019355253701810078529570613237182776549094598706836269877507206606048', '591589.86000000000000000001860329292788516991407643664465772674133322798829000748004481876019355253701810078529570613237182776549094598706836269877507206606048'); + T('-350651107084655269140529689112278274003508608230449884077441.95115833128262389', '0.000000000001117808991674427079320983053134086985164', '-3.50651107084655269140529689112278274003508608230449884077441951158331281506081008325572920679016946865913014836e+59'); + T('-39134659750772.877480206401712009933563545303653', '166958406518764640192354635927301907690317389127470622845773787156043063093969532575030322149816302478163328082727649181925765.252883933714', '1.66958406518764640192354635927301907690317389127470622845773787156043063093969532575030322149816302478163328082688514522174992375403727312287990066436454696347e+125'); + T('-172056481099057625655452551706739628179114255612273491148921284864736703885146667722.8388377144520839161622951529099672906561615777554908439149426', '-53188016746661398958851588477178244943851165029295827.73281273540583347372612339273431422', '-1.720564810990576256554525517067928161958609170112323427373984631096805550501759635505716504498579173898884185456442815106561615777554908439149426e+83'); + T('-101.2715534026922239603773241958969231368570306133332758128133966689708114732', '-0.0000000000069524253857033293796239251561117850631416003514681200491262005294123143215554850258908298728505228195487713881587714484422961615066116684637', '-101.2715534026991763857630275252765470620131423983964174131648647890199376737294123143215554850258908298728505228195487713881587714484422961615066116684637'); + T('-25333165941026', '-6.96905', '-25333165941032.96905'); + T('-23159930599967762034619306845640878338289007418537140350162347387358954515654697539296', '-0.0000000000025055077873630358869224326917384442359589577625318652368309033754969806200104209411667012418713252227441129227486821508788141961', '-2.31599305999677620346193068456408783382890074185371403501623473873589545156546975392960000000000025055077873630358869224326917384442359589577625318652368309033754969806200104209411667012418713252227441129227486821508788141961e+85'); + T('-272690054326355360717463915920945.79117473701250126513511144304624422023780335575219366', '-0.04646617289953036368927399160045218571026521306334789242996846430687659493840681112221758307480649419116688540343801556', '-2.7269005432635536071746391592094583764090991203162882438543464669640594806856881554155242996846430687659493840681112221758307480649419116688540343801556e+32'); + T('-0.000000000000000000824794592791708470343498439383184471216678775736929136783274734656085', '-15464590993770169004834442995125190019352837990780198498620045480008050531227509554782670484128441573926502719591921520634735942184', '-1.5464590993770169004834442995125190019352837990780198498620045480008050531227509554782670484128441573926502719591921520634735942184000000000000000000824794592791708470343498439383184471216678775736929136783274734656085e+130'); + T('-0.000025886438630912380429166846355627957951159888724105900108725398458013138566376225646226120608061663021', '-0.00000000000000000922559195021433452347561162265923135770528238859359860082308634808051034873284365047902141945318959511946199226', '-0.00002588643863092160602111706069015143356278254795546360539111399205661396165272430615657485345171214204241945318959511946199226'); + T('4208526064828419952094154623926319503361267122786727994718336255550699863529999970816217779807244768234375837054150463771544173571075249738067912741', '0.00000000000098970610', '4.2085260648284199520941546239263195033612671227867279947183362555506998635299999708162177798072447682343758370541504637715441735710752497380679127410000000000009897061e+147'); + T('782154833767130832317687050316770373560511399580384993381585732162357039470401244281856195.066130334377022511400443485932219487910616611626636101', '-0.00074331374743997058610568400177871943926460185889915970549597536944046651458673936138785020737671331878048877509692365190559231823', '7.8215483376713083231768705031677037356051139958038499338158573216235703947040124428185619506538702062958254081433780193044076847135200976773694129450402463055953348541326063861214979262328668121951122490307634809440768177e+89'); + T('42247383.064', '-0.0937875210571846395102908228397490109201012337594873628817471460764217967528951691863690241707606495782508382461321094202624928680498275', '42247382.9702124789428153604897091771602509890798987662405126371182528539235782032471048308136309758292393504217491617538678905797375071319501725'); + T('2576315957194062278091487692155019635858438293549959035082229215955048823715650588390178638212566542.511871428870771408965933726237972177952115', '14221275732102839762375835558162468599546489504738010046753467831312431.748866797310416772779810575075035266788827703', '2.576315957194062278091487692169240911590541133312334870640391684554595313220388598436932106043878974260738226181188181745744301313007444740942703e+99'); + T('-182341620.75963819', '0.000998366694277196028537550780159837727537078256289848938775652509142720967559421265698965121960614893238144882990784373782561165842054284561355', '-182341620.758639823305722803971462449219840162272462921743710151061224347490857279032440578734301034878039385106761855117009215626217438834157945715438645'); + T('842047793825512583448880280167368274851233502546714872003645854281826035260762377793954087704796997.25746974352168013713893221905548161407096643850', '-879630826.1', '8.420477938255125834488802801673682748512335025467148720036458542818260352607623777939540868251661711574697435216801371389322190554816140709664385e+98'); + T('-554969229244174864065407853658438.853', '0.000000000000000046413279985045478767808596461145151129534715272056', '-5.54969229244174864065407853658438852999999999999953586720014954521232191403538854848870465284727944e+32'); + T('0.0000004594903425141532404871962049647498137', '-932661375466478095759388985035813536638008334074283723919735.05355344249627897324401366029784201920498102254155227173893629037627164808010183', '-9.3266137546647809575938898503581353663800833407428372391973505355298300593645909077317310163705445516732254155227173893629037627164808010183e+59'); + T('55622408985624324409029884623142142230.3564337866286742532877692296727906360723088525106961633413366259718859274228008870960807098', '15964242335991562370631446343520536873365067961244.3048166767601763969347103883920143084337317316579770484121318738881953338102', '1.59642423360471847796170706679295667579882101034746612504633888506502224796180648049445060405841686732117534684998600812612330008870960807098e+49'); + T('4116.6343', '-13125881395295867999756142722598662945291700853448430819633768649050051199293316003551472339311180106761185979863040509.660957581', '-1.3125881395295867999756142722598662945291700853448430819633768649050051199293316003551472339311180106761185979863036393026657581e+118'); + T('-185.999886254076738335134043252415796249753374218519734071455', '-0.000000000000000001138037685382195961414405158218078543316186398616143756105152301597533', '-185.999886254076738336272080937797992211167779376737812614771186398616143756105152301597533'); + T('-198.9786279245', '1746794213.948368961266', '1746794014.969741036766'); + T('15874309893574389.8', '0', '15874309893574389.8'); + T('16588576987819.81660754169192038181188060714025162116858077319124964265625043196845919043822440466', '-89246600501318562304915309660228383388276620845488564802.496235049288379013778246594577495893634435949828063691098972563490365127', '-8.924660050131856230491530966022838338827660425691157698267962750759645863196636598743724427246585517663681404844272213152190593656177559534e+55'); + T('-127347284441930400932829141510983278557342554346089741297398296382897208587382099.5435745742690549551823615645727067', '-23318951044403467148495997370.7883388335', '-1.273472844419304009328291415109832785573425543460897646163493407863643570833794703319134077690549551823615645727067e+80'); + T('-5077543273110250868221405268190259167.97565436390533404678643216521675105958934642804771', '26014332970671415773600104084765496839411707080753222580030511682112031082495461045172183069324313539709881831959', '2.601433297067141577360010408476549683941170708075322258003051168211203108249038350189907281845609213444169157279102434563609466595321356783478324894041065357195229e+112'); + T('0.00000000725881132557751716179805811333894302315168261762649561806817469605831550855169620175635494174620728378066598111147687734973630755961025899', '434515885287.45022424035155504385780922882248468547935186640429869578572525153830676791908425738454517466', '434515885287.45022424761036636943532639062054279881829488955598131341222086960648146397739976593624137641635494174620728378066598111147687734973630755961025899'); + T('-0.000000000000005190715334165879366906953397614175481033368428717937549118481651827304967814441188123242137007460', '-25.81020207', '-25.81020207000000519071533416587936690695339761417548103336842871793754911848165182730496781444118812324213700746'); + T('-5250099.76439982', '1', '-5250098.76439982'); + T('1196038410000291625428567.6600927087933557619055721061645233907526288367', '274708477195241356599569', '1.4707468871955329820281366600927087933557619055721061645233907526288367e+24'); + T('1193283202443516969171199.42749207631310978334573154570736931304683327423627434514888492883630124033894042566872', '-2705842436304954369628829105664616526636750473333202873059187377027354726150010013782785345680025581966172299828118.857377088370514', '-2.70584243630495436962882910566461652663675047333320287305918737702735472615001001378278534448674237952265533065691942988501205740421665426845429263068695316672576372565485111507116369875966105957433128e+114'); + T('-100501387373.2156506022473571945511270816570649486799902805849591635129761139096179741555986743162675121226826359781143695356560', '-617089847302145796251638901404458614481659.476726016550865549', '-6.17089847302145796251638901404559115869032692376618798222743551127081657064948679990280584959163512976113909617974155598674316267512122682635978114369535656e+41'); + T('16333090935253715.586262', '-0.99663564938317815363068300949250859179309525545225', '16333090935253714.58962635061682184636931699050749140820690474454775'); + T('321070028467230447383995878020953.3888568546912021134358772343603579280658629722635803579108', '28832623126702540650471917064799132201501970153523973751436115142706664061743228360740052.89377744216939547659256989919800076278264836074', '2.88326231267025406504719170647991322015019701535239737517571851711738945091272242387610062826342968605975900284471335583586908485113330035803579108e+88'); + T('-0.00000000000000000003787025783187787162540090434491007131260214791563020212712224638154647089519712810087585510020487818551239718654495070616103779447174795619', '5152327951088416826370.49800740890621823749333954384917083961142478820631626896455924008645842950035037082504155566540807507', '5.15232795108841682637049800740890621823745546928601729296798602388386140619765195709217082822737322812444349508477021094696912414489979512181448760281345504929383896220552825204381e+21'); + T('-3781578965051244011802834529658700587745611157492889345003479370244990285997045726143735238169075073132478791.794030078', '-398406181131828029423189359168774589795627542.69216955808205240294903823537210247931306802', '-3.78157896505124401180283452965870058774561115749288934500347937064339646712887375556692459733784966292810633448619963608205240294903823537210247931306802e+108'); + T('-857281769723716632426451761545805487782866662040001135988125619524781917496404046.907015785954', '-0.00000000000073616976036884849929013414437985061753356336526778613936461244959197744911962137302874551', '-8.5728176972371663242645176154580548778286666204000113598812561952478191749640404690701578595473616976036884849929013414437985061753356336526778613936461244959197744911962137302874551e+80'); + T('3089627721247383947360751941786039174000627343590658682240341607417650', '-5343911762378383789737796312183683590895032635513074691383250730453', '3.084283809485005563571014145473855490409732310955145607548958356687197e+69'); + T('178191.66604428931197081347222738459872958', '-0.00000000457431668529', '178191.66604428473765412818222738459872958'); + T('-0.00000059402965420877250077049277056387386461138162956320009201234837822718242249019319520691853', '-85966889247898245.45722015', '-85966889247898245.45722074402965420877250077049277056387386461138162956320009201234837822718242249019319520691853'); + T('0.00000000000036703131', '-1690706009848928777.495021644332320103184605016856460586815056781662', '-1690706009848928777.495021644331953071874605016856460586815056781662'); + T('-1201941125816287616412820133589940378119107883736149474619667856427578308106640475701376366656637044297989392894431464368963531768836140765436577394', '30399.3500425', '-1.2019411258162876164128201335899403781191078837361494746196678564275783081066404757013763666566370442979893928944314643689635317688361407654365469946499575e+147'); + T('-5911232068256006917083493799668612278296458371177903401236223682450786815464114645404870555701', '-3666175952907291515352144888988964318204590.50095772343418568691895368', '-5.91123206825600691708349379966861227829645837117790706741217658974230216760900363436918876029150095772343418568691895368e+93'); + T('-2459545344690.7997076213355757525315040568953385869184764316593583226907', '4164315079449261632762812204636584837224819345915404704039302166.1662755649220', '4.1643150794492616327628122046365848372248193459154022444939574753665679435864242474684959431046614130815235683406416773093e+63'); + T('717000944256731362781243642636076865324406926670042', '-15881954495698535614971299471328513969444270448080565895751331092451780915657006942144214705830428876978218653.40439815564850025319446970516', '-1.588195449569853561497129947132851396944427044808056589575061409150752418429422569850157862896510447005154861140439815564850025319446970516e+109'); + T('2135955.98546847496701957917801628765161676501430902420565334363847226731093782482383515268139253106808269937151040195861', '-0.00000186143738178071752355591997816736943677781854280530890582737750128944', '2135955.98546661352963779846049273173163859764487224638711053832956643993343653538383515268139253106808269937151040195861'); + T('-2753001186629.1654476569387069958961438785379535103689665000111045009651593729849009490188549152460050154549811339425832561', '2994415432463123195.83557', '2994412679461936566.6701223430612930041038561214620464896310334999888954990348406270150990509811450847539949845450188660574167439'); + T('0.000000000000000018408379822942006989333252748149670155210581048845628953786929400969225780392593930060103', '-350080792300.4', '-350080792300.399999999999999981591620177057993010666747251850329844789418951154371046213070599030774219607406069939897'); + T('5854211899389381506945331507818660152894470704.9769422579022684177921767417413505638887249265068371213031063935537133330368277125538929754', '-6238089', '5.8542118993893815069453315078186601528882326159769422579022684177921767417413505638887249265068371213031063935537133330368277125538929754e+45'); + T('0.000000000000009383448945864756120696895884403358543889635556010530179055321923499853947812003801655721924', '-19052898127325499710380.9743286252434506021419112451035829611583', '-1.9052898127325499710380974328625243441218692965380347462264262415596641456110364443989469820944678076500146052187996198344278076e+22'); + T('-17256820969785465284434808952852690245011499274233791647620649273158761764638386391819039.862028829339196251615676315363239', '13.156452841246543538', '-1.7256820969785465284434808952852690245011499274233791647620649273158761764638386391819026705575988092652713615676315363239e+88'); + T('-665097561.949707', '-2162357984514826.9250074134451642962816183', '-2162358649612388.8747144134451642962816183'); + T('-1787583563218949877447505176411981054278266273447362590023794164049587059.8952802595404997239841103802373009222385203752749', '0.00000000000000000760974939459', '-1.7875835632189498774475051764119810542782662734473625900237941640495870598952802595404997163743609856473009222385203752749e+72'); + T('-97829644134932448583893137101111730259820.05765691989', '-0.00008062307539130036460992642410736502245711006627314391776591134965421657938611242879211258420030106690367460157448425', '-9.782964413493244858389313710111173025982005773754296539130036460992642410736502245711006627314391776591134965421657938611242879211258420030106690367460157448425e+40'); + T('176.49118337833630469590257828139881196863600409523', '35933.6589226268793460337176730393325086784341893690115486029833220604354746534', '36110.1501060052156507296202513207313206470701934642415486029833220604354746534'); + T('2317.37783', '-33432.9207570414', '-31115.5429270414'); + T('6637712385532453617053848832374521936910779.70621790725066804869722068097', '-2227675488368.765036410422350452356577021856408570307494950931297002601448393249899536', '6.637712385532453617053848832372294261422410941181496828317596340643659113591429692505049068702997398551606750100464e+42'); + T('-29796953630.4913026375328064186913399668764', '183881988687448174550.05812049319254873917759915275571715311496797038130265358357168647155176800096292869421', '183881988657651220919.56681785565974232048625918587931715311496797038130265358357168647155176800096292869421'); + T('13199507764.3046118900484236', '2889.225410430843647396962046960496506372239727670782057756607', '13199510653.530022320892070996962046960496506372239727670782057756607'); + T('21296975756.7155683578416319475809678174056385498809428133837225514886696657380', '-12089429986715170910650388697796567002415981764555993502477488839251139863938357832329451138126477861065923975862099475655105604012728', '-1.2089429986715170910650388697796567002415981764555993502477488839251139863938357832329451138126477861065923975862099475655084307036971284431642158368052419032182594361450119057186616277448511330334262e+133'); + T('-10171266580517816.0917067510409', '315013465687559910813490005858570828704.32710226291611151322994451850467532608107794030518681711210056375276848', '3.1501346568755991081347983459199031088823539551187521151322994451850467532608107794030518681711210056375276848e+38'); + T('-104378676461688732476982045085768915711531135396792471359807651838019425066099516.3887940021256850', '-0.0000000075463669108526190909746406521772574', '-1.043786764616887324769820450857689157115311353967924713598076518380194250660995163887940096720519108526190909746406521772574e+80'); + T('-554004567.5248864688113348892343007508509027941489605', '24036.8693849642440730', '-553980530.6555015045672618892343007508509027941489605'); + T('-0.13862781295596173373834834617362885552230456574647246122144469327684018389680003345722428926923436849384730389514581111500008577', '999130309696269960369411189504977138022060325178635804383777964396643757881930599444544232699066835337985580790738', '9.9913030969626996036941118950497713802206032517863580438377796439664375788193059944454423269906683533798558079073786137218704403826626165165382637114447769543425352753877855530672315981610319996654277571073076563150615269610485418888499991423e+113'); + T('111333740621290857055005859873614448428448428149963.63294760371993029666150267467043126547986051822019939851697686673961129595', '4999995459444511596846816663006330762507788928567760', '5.11132920006580245390182252287994521093623735671772363294760371993029666150267467043126547986051822019939851697686673961129595e+51'); + T('0.3638494649282355263819067061458269397737971067286076619347353611281169315189527491523244687688286', '-1790006094624306575957063565992185307582798107924013187.71', '-1.7900060946243065759570635659921853075827981079240131873461505350717644736180932938541730602262028932713923380652646388718830684810472508476755312311714e+54'); + T('-505517596445.1482', '13658590629245746', '13658085111649300.8518'); + T('-0.0000000000000000003526114927031853853794194624925423016782264', '-3648850034079477562581394480009152297642761812144625299013120030846235.2420343951205906', '-3.6488500340794775625813944800091522976427618121446252990131200308462352420343951205906003526114927031853853794194624925423016782264e+69'); + T('11151882673607076860108980480685547378102216722783817.5164597052664085858745970369334', '75.19', '1.11518826736070768601089804806855473781022167227838927064597052664085858745970369334e+52'); + T('721971138118087482240206073369515811598326847978080496736102280373630157207437819185711943223296522977798907649465741783364603042045658293259.583212980', '-140176921692721492746085636102764157797617196402727800746784082298282387.90860726314021850408568982802', '7.2197113811808748224020607336951581159832684797808049673610228037363001703051612646421919713766042021364111003226933905556385625796336001087167460571685978149591431017198e+140'); + T('-1.4681874863', '-3367963466800407715599.44244519159656022505642088971735092327417182287381', '-3.36796346680040771560091063267789656022505642088971735092327417182287381e+21'); + T('-0.0000000000000004372619977839161258710643393271233757307937114407266184997518559013565243060131612462006611450037791975727499469', '-0.000557380206825781899', '-0.0005573802068262191609977839161258710643393271233757307937114407266184997518559013565243060131612462006611450037791975727499469'); + T('889975261077.730985', '-444512813658612993665287376887226223666949336282284327.65111812283484181956398112803471368231154715336519231346350829789199178743774349985755167017', '-4.4451281365861299366528737688722622366694844630702324992013312283484181956398112803471368231154715336519231346350829789199178743774349985755167017e+53'); + T('4228.494108579658047102292', '0.000000000000000037431967516705914275', '4228.494108579658047139723967516705914275'); + T('5081895821751331032957687842323663780819055.0589539655583256', '3045235045891993287321120869322585059630654297351523276745951018307395.66088948484478706336724055686328883825124984361740259408994712721', '3.04523504589199328732112087440448088138198533030921111906961479912645071984345040311266336724055686328883825124984361740259408994712721e+69'); + T('0', '0.0014970897348316271399696665513926791886689361148588977237211047578120594034554421644608967215193', '0.0014970897348316271399696665513926791886689361148588977237211047578120594034554421644608967215193'); + T('-38086604857440351908282393909820732805333576481045075753031751734398766308', '-8466726560595694017777483540348440264157355649896385800844069368330876512659274241703013842599067504442486011483149390298', '-8.466726560595694017777483540348440264157355649934472405701509720239158906569094974508347419080112580195517763217548156606e+120'); + T('3.606', '-0.00000000226457426250954670156179129629125380257442683372667979', '3.60599999773542573749045329843820870370874619742557316627332021'); + T('0.00000000002432', '-2721049388922460690679999802237503439420773586591695831186196683218833781609933786136614218796838155186664711199485697050894450944907939921399737566841', '-2.72104938892246069067999980223750343942077358659169583118619668321883378160993378613661421879683815518666471119948569705089445094490793992139973756684099999999997568e+150'); + T('3419034647852504243.4', '0.00000000000000000001109196145046743', '3419034647852504243.40000000000000000001109196145046743'); + T('0.00000000000000001986294624152158258216394967520873041627413436833216557224760286108648966762394958388810402835384523225417563557', '-3796809284763021958367848219266230972066614510710559054.1146025612649983495607541466475364622687018577099048021869', '-3.79680928476302195836784821926623097206661451071055905411460256126499832969780790512595388010475218250117438591276563166783442775239713891351033237605041611189597164615476774582436443e+54'); + T('-204798018073795.6529529448002736801844846511974520623046560206000445277488879317921030460527861542787789702381941427349799245079342628083413', '-0.000079632857050636167683223005840115134570250229161360215975374259917315308577662215961670005725116845981841223176067219103818019091320131665778', '-204798018073795.653032577657324316352167874203292177439226270829205887964863306052020361361363816494740640243919259580961765731110330027445118019091320131665778'); + T('50550.28', '2121486761751437744953605262799815319.26905', '2.12148676175143774495360526279986586954905e+36'); + T('-889419638834002225522284149508929700476.172650890', '-424305840473677688810924633337769721763339720196709604554205748170445987058261155373223662505888873.82144770710851718819750629065194', '-4.2430584047367768881092463333776972176333972019670960455420663759008482106048667765737317143558934999409859710851718819750629065194e+98'); + T('-40760.965467', '-18942690834.2607446380197806', '-18942731595.2262116380197806'); + T('-21150396424144685285717528391770170039197157268878001492574230326386339596909894.1137843235394802222980337381818083735', '-6846760956505006842349358088765499381514.63658', '-2.11503964241446852857175283917701700392040040298345064994165796844751050962914087503643235394802222980337381818083735e+79'); + T('-5', '0.07853343679663140617550934559203677556312857282298714862538145367932278351423091814533627541733407490114923772813040559584747319434161156', '-4.92146656320336859382449065440796322443687142717701285137461854632067721648576908185466372458266592509885076227186959440415252680565838844'); + T('-1298989.19', '12967839159417800347248402834223327087001590.131521073718772815256761575699', '1.2967839159417800347248402834223327085702600941521073718772815256761575699e+43'); + T('-413624643703430579993792415.246', '-25047788866699.6065823802634', '-4.136246437034556277826591148525823802634e+26'); + T('-17002802435731054578579213050913648941015840438503895311063267366815.4760438', '0', '-1.70028024357310545785792130509136489410158404385038953110632673668154760438e+67'); + T('-0.0217487468807944116026287464540188864099826755097763413913523783549695801368408124880816141876938600', '-267928116215095659487396148857045537314243422826493604265786416560942224473274359760818137268229757952314852408659289722', '-2.6792811621509565948739614885704553731424342282649360426578641656094222447327435976081813726822975795231485240865928972202174874688079441160262874645401888640998267550977634139135237835496958013684081248808161418769386e+119'); + T('0.00000206058115026074270537347836316498830244149457757397506761076895276562936750930508221328', '-1156.25131151512762526101028', '-1156.25130945454647500026757462652163683501169755850542242602493238923104723437063249069491778672'); + T('8.52146', '8138996167927465829623641115119430224272617006293469478795384788419955586210311969.0911005211', '8.1389961679274658296236411151194302242726170062934694787953847884199555862103119776125605211e+81'); + T('-606792703514189222432342591095705024217062979215281726656222323623605437267298163559450093248410482334853425555387131742072494232274', '0.0000000000000075030205599538617170140424842633341870457951188905504524861678938064353730637261119815417488091644638014246916703266791', '-6.067927035141892224323425910957050242170629792152817266562223236236054372672981635594500932484104823348534255553871317420724942322739999999999999924969794400461382829859575157366658129542048811094495475138321061935646269362738880184582511908355361985753083296733209e+131'); + T('-1117646260533756972074615305111827894317502144279827222046925514965408293805196205607164567542139844488130299', '-8950710397293888186512785146937760727214387326213534247514635587853382873562774281822836130052011695722019446354140619086496577801', '-8.9507103972938881865139027931982944841864619415186460754089530899976627007848212073378015383458168919276266109216827589309847081e+129'); + T('17828132133.73128014639', '0.772844155917667013531128306734169323', '17828132134.504124302307667013531128306734169323'); + T('12409597293458966562697810991027046599347924039429686698803091382', '-127221396169370244097597696512688383579380113278994929674479641504219148260281326655899637.2600931768649107131099205359376530727886079199210691234204076', '-1.272213961693702440975976841030910901204135505811839386474330421562951088305946278528082552600931768649107131099205359376530727886079199210691234204076e+89'); + T('0.1848091145595494469555974732282088098544574667848', '-136107941934475938.0155896841', '-136107941934475937.8307805695404505530444025267717911901455425332152'); + T('-248947197724784384796094883777245432118187542578980970162991361.8625105461901333288766567084315189172715325691802', '1377349914239986.46343962270751134940329738658340912130', '-2.489471977247843847960948837772454321181875425776036202487513753990709234826219794733593218481097959715325691802e+62'); + T('-0.00000112660065275108830213180725478020363833427172529177370245297090375761920', '6361232368958886237.15488020607904', '6361232368958886237.1548790794783872489116978681927452197963616657282747082262975470290962423808'); + T('168065941825836172215.28538451779543155718349924675090', '-10020380537725454351590492009621817226308186635527799419512419.1501669170488428784662186956119820551', '-1.00203805377254543515904920096218172263080185695859735833402038647823992534113212827194488610820551e+61'); + T('25062938769541121.630478568522733066136124658086663843828053304849719245047', '2168109004490.945949015343314182595182591703278150478193635235835903', '25065106878545612.576427583866047248731307249789941994306246940085555148047'); + T('0.0000000127998547493889280163892364925927466380437055151407280212547688372695203587233106472126969776111613683412368835630499322381390265', '-21556437448948972049.5307444304476294707119579088623127759607498145900023581252', '-21556437448948972049.5307444176477747213230298924730762833680031765462968429844719787452311627304796412766893527873030223888386316587631164369500677618609735'); + T('-537626025690553743403625600240698190650679101924299218506047682820.61793992322367129916021469763743818692611951563337836906205744108', '0.000000000000078704422482734288110772342341176900316159707688584083247052769004920995218116598172244299647861085206345', '-5.37626025690553743403625600240698190650679101924299218506047682820617939923223592594737731963349327414583778338733062209354368856996752947230995079004781883401827755700352138914793655e+65'); + T('4936866312604172729288711401711374147250', '655874195881897624287118400860713782095501006074749065044610537625092.95069141905913994401259276838353408866', '6.5587419588189762428711840086565064840810517880403777644632191177234295069141905913994401259276838353408866e+68'); + T('-2382178805319965099104798246704598336951576480741895282006149578757854993414213685118', '-0.00000000000000002613467607235150454275071440605158933185803781754976383299500468377641084642463280487309618916557583346059257437473874331', '-2.38217880531996509910479824670459833695157648074189528200614957875785499341421368511800000000000000002613467607235150454275071440605158933185803781754976383299500468377641084642463280487309618916557583346059257437473874331e+84'); + T('-15946824.09950277073438320718451422330046117375794902861875105613916239700142602', '-0.00000000000010267855303483749668481765879881882622179514', '-15946824.09950277073448588573754906079714599141674784744497285127916239700142602'); + T('-581425628881991347289393948535594023431644044950894384975254331720033.7644030704523982311900267238328134677', '-999805005439068442805051046377911526225724977745109030159313147640897377464.83555602537429836574687154635825719', '-9.998055868646973247963983357718600618197484093891539810536981228952290974985999590958266965969368982701910706577e+74'); + T('60413295.642986556398', '-4226075045367317431795623702749235954814399556250656668352316.5728962846147542124931735298180367334281333643494998', '-4.2260750453673174317956237027492359548143995562506566079390209299097282167542124931735298180367334281333643494998e+60'); + T('-81794690209841974740.53672088428717597735688956390645130995150579644016165479898744379', '-7.88107898048618399872607957392671978662', '-81794690209841974748.41779986477335997608296913783317109657150579644016165479898744379'); + T('-1997717463163142285894367278389823014470638.3025530535651929616090187971946674805858924875948817390067051806853814519986698027983653385', '6', '-1.9977174631631422858943672783898230144706323025530535651929616090187971946674805858924875948817390067051806853814519986698027983653385e+42'); + T('-304875626379421812877053824267.89813338244318006612477499081284272413190571121891074444720931096507130284584180247091056', '-0.000000000000000010980103787919551156900136233767434931235794906561314315549096503926892808208116475271649840370149590820545219560834375927', '-3.04875626379421812877053824267898133382443180077104878778732393881032041944986345675683004217526385618394938306397803368208116475271649840370149590820545219560834375927e+29'); + T('-88815210861255646356014368338106338503849425126132.285406775673561905065', '0.000000000000000034992420410611731246495160913', '-8.8815210861255646356014368338106338503849425126132285406775673561870072579589388268753504839087e+49'); + T('-0.00000000000000237643259847411171950841188633341948147021355426920101030032158183296245118336593123026984501161674321953387313970740020', '-0.0000000874212145702142670184949308326411041422527293858413318840288404463319361607051392899032509388086790', '-8.74212169466468654926066503410529904756722108560548861532298507466535179936675904732691821690785240116167432195338731397074002e-8'); + T('-0.006555884028715480652', '6930118317156.576980190277', '6930118317156.570424306248284519348'); + T('39.384744166791242957726294455842839425402642808858550449900179430725398075422668018325305226767828926369540183994331444452642090521391283', '3260986081387.207629495556353019281390351729387452232726', '3260986081426.592373662347595977007684807572226877635368808858550449900179430725398075422668018325305226767828926369540183994331444452642090521391283'); + T('3908267232516297546694850213843945511916410859719238136818722842077.27108076292427902546404238314424734106746892397683459219351842029663495194', '-0.00000000000372286358808905369841368779659136965109619662993128616667816952276941560286526066255037987308726016479323693533782656017305522143883165700131792', '3.90826723251629754669485021384394551191641085971923813681872284207727108076292055616187595332944583365327087755432573839556358713412995678241723058439713473933744962012691273983520676306466217343982694477856116834299868208e+66'); + T('-0.00001556397239423792402602941437191887477933365239361893990546595775376870987107277583', '-1732082517354208969230613795180012699705122410188783671659220771290170536520910', '-1.73208251735420896923061379518001269970512241018878367165922077129017053652091000001556397239423792402602941437191887477933365239361893990546595775376870987107277583e+78'); + T('20451329027854657865397803520110269731953546381423082243753661273233534094096458728774066484280346143633534282606929883', '1.37062391834155371473359912213772362707849619840251030918103616690753987794703765279270817110400101918287849263050336091', '2.045132902785465786539780352011026973195354638142308224375366127323353409409645872877406648428034614363353428260692988437062391834155371473359912213772362707849619840251030918103616690753987794703765279270817110400101918287849263050336091e+118'); + T('-9873613763574093.9169949677113266651552362204071722363114406302496589482078244525416517', '-546631047066885391316821969502606459323760036081517906369260562129.5282969018129257869570273191088510708842914399537183835952083014376', '-5.466310470668853913168219695026064593237600360815277799830241362234452918695242524521122635395160233071957320702033773318030327539792517e+65'); + T('-720103743977684216550279573635737782.371525679181701893280139772', '0.00000000047196', '-7.20103743977684216550279573635737782371525678709741893280139772e+35'); + T('-124523382475.065647339231367286548664060598351481238512537358040678937053065205', '267195207211327546143.99593799833381494', '267195207086804163668.930290659102447653451335939401648518761487462641959321062946934795'); + T('-669248421565027510098621757579904855957549198616536004694615.801532771296796860509827700071860799103269705247335116543', '333905925959634844', '-6.69248421565027510098621757579904855957548864710610045059771801532771296796860509827700071860799103269705247335116543e+59'); + T('74741.757595631932381120479050874298796374442246866101939364', '10920811144639.430670345', '10920811219381.188265976932381120479050874298796374442246866101939364'); + T('1170639975951201522249787446299288957.534087576257621574901157627904404', '-0.00014785053034279838988159517', '1.170639975951201522249787446299288957533939725727278776511276032734404e+36'); + T('240641615318369852633021813201283453473338354696847465428407816540707799946328465329158700582983365200972956128970708198340862470221701303619', '-0.0000000000000000069337247648616552808723398415008620822832893391786175057036755718378355', '2.406416153183698526330218132012834534733383546968474654284078165407077999463284653291587005829833652009729561289707081983408624702217013036189999999999999999930662752351383447191276601584991379177167106608213824942963244281621645e+140'); + T('111714245279259151600970278454866645262571826000337873347902770371946919658476476.581635152136516883108103196', '-145713944701659169049317661586406655886350.64439112401759220725326887023191998402271373838960301529', '1.1171424527925915160097027845486664526242611205563621417885345271036051300259012593724402811892467585483432576808001597728626161039698471e+80'); + T('0.00000000000000000011659916431504181998777280021990151674872574004317563534059818105024140361220410041950905384756907730822832402571557634171797064450234198869785', '0.0000000000000034973095978104435865425237181247213055722049975492', '3.49742619697475862836251149092494120708895372328924317563534059818105024140361220410041950905384756907730822832402571557634171797064450234198869785e-15'); + T('5208299735981215934383073700988540115', '0.00000000008193999192179', '5.20829973598121593438307370098854011500000000008193999192179e+36'); + T('-0.000000000000287395113688235501898364131112180654248398999683488052724240112623987258282732482937', '-0.000000000005224156433448505010390917879000913540363966165400734673984060714544377832355795421', '-5.511551547136740512289282010113094194612365165084222726708300827168365090638527903937e-12'); + T('251290.029', '0.0000000408265742458950413927784669187015196483849964746', '251290.0290000408265742458950413927784669187015196483849964746'); + T('-0.002069526456699789023016398781994820749838585707371628', '-208989.20687136738198249707358292330050304648320312788', '-208989.208940893838682286096599322082497867233041713587371628'); + T('136830053104872291586007040221524635644507855229364036.990085839244669865877563203743313609845467275010746564518697656354953714652400', '12996360060717584879190082832087158897977012928919981.1724803374445157382323851607362941658942137', '1.498264131655898764651971230536117945424848681582840181625661766891856041099483644796077757396809750107465645186976563549537146524e+53'); + T('349923146008625248221940071805133632424745448085367309153304.41451', '1.279845995348543772724126048570984529358929917199046395358884958125978504501534072647803741667566840006664141118201898026492588582829', '3.49923146008625248221940071805133632424745448085367309153305694355995348543772724126048570984529358929917199046395358884958125978504501534072647803741667566840006664141118201898026492588582829e+59'); + T('-0.00002588190901774483141446130106109665568218409839877790718167670204180165388892638488618624373249215908731', '-0.000000000000000998380445484244673146797637364810042331013877503942848237747500650941845596181353662072946500712838803596129029770361640568986086478118', '-0.000025881909018743211859945545734243453319548908441108921059180644890039401389577326731782425086154232033810712838803596129029770361640568986086478118'); + T('0.000002397702115545082706325', '-0.86184468879219410762921439972937635313400330685547662030210928411728749240902108881486043419424702673819765398803611924680684916244185716500', '-0.861842291090078562546508074729376353134003306855476620302109284117287492409021088814860434194247026738197653988036119246806849162441857165'); + T('739247350528774318310976592372378823989.9340970329512293', '0.16461323830286423518914252503718472208992620706491311143767005406182583700046088073642382183228439964918345692170788', '7.3924735052877431831097659237237882399009871027125409353518914252503718472208992620706491311143767005406182583700046088073642382183228439964918345692170788e+38'); + T('20138770597416725450254724328732818742267620348802456988572150217738319484193183724229804103329780221759485486678', '-789269493613323078997155252278243776415270697547093524400899466707939123164245744251', '2.0138770597416725450254724327943549248654297269805301736293906441323048786646090199828904636621841098595239742427e+112'); + T('0.00000000000000000077718007226574178859573156113273718366023940333047610', '0.00000793842663906287702694882951591808277980436371652228248293328108479174722056639404425886138539535746075798843345', '0.00000793842663906365420702109525770667851136549645370594272233661156089174722056639404425886138539535746075798843345'); + T('-0.00073004266755307447297787100885736643137065171791847775170199', '533767943554264575564059388781105481229849071443170662645468384072829601890382711597239.43317227373401753588313752941835310264692801', '5.3376794355426457556405938878110548122984907144317066264546838407282960189038271159723943244223106646446141015965840949573621555735828208152224829801e+86'); + T('203795797050226528701909939354095.74227652473566285394054153851636316880904908195101127405638217584507290263629702856344914721596751573682519', '1048176497643', '2.0379579705022652870295811585173874227652473566285394054153851636316880904908195101127405638217584507290263629702856344914721596751573682519e+32'); + T('-88244004722847480146822008275080880695915873140049053843555316989873895145229459150435483330020885756477515260816717989568792030863738799712004', '0.0222020450217264733443', '-8.82440047228474801468220082750808806959158731400490538435553169898738951452294591504354833300208857564775152608167179895687920308637387997120039777979549782735266557e+142'); + T('-245.330813553080793', '-139455315144533860778775215600928891795189892914202233172560603256768538146961881693882554366322835347536572308601', '-1.39455315144533860778775215600928891795189892914202233172560603256768538146961881693882554366322835347536572308846330813553080793e+113'); + T('1312620952926614444601139109837919862847383911012476338291408744344284710456350.61901295', '0.000000005001841441858025051749066429', '1.312620952926614444601139109837919862847383911012476338291408744344284710456350619012955001841441858025051749066429e+78'); + T('-0.00000002568121501817024789950645', '0.00000152064801516710974357034365714164447372286990018294642975122815566995939556502510124016256086916899095831799319898986550479847', '0.00000149496680014893949567083720714164447372286990018294642975122815566995939556502510124016256086916899095831799319898986550479847'); + T('-50146741.71136917438523439037364041570643531039880309166796', '721.58', '-50146020.13136917438523439037364041570643531039880309166796'); + T('-0.000000000031373829058590280763397830914839643150936549070276134150319113360057425916282823335964570132205357792953166020744035018731306854352936', '1209934516502680876038974890161267538909081686211586564144614326182360480572106031540130067011132046106334621001880794855659284874', '1.209934516502680876038974890161267538909081686211586564144614326182360480572106031540130067011132046106334621001880794855659284873999999999968626170941409719236602169085160356849063450929723865849680886639942574083717176664035429867794642207046833979255964981268693145647064e+129'); + T('-13404342125936188871742118602022353067169949299128900358060758959144.618999657876884344030397439486785962997196322120897869261859638385586348924333', '-168915526978312.650128129957132282649873584573819887866036969239069391528581261172175429771', '-1.3404342125936188871742118602022353067169949299128900526976285937457269127787834016626680271024060605850863233291359967260790440899557761778695333e+67'); + T('1806842795835990618047801.084576277957835712505618234152320757352128501462413034062746347', '-50734288417028257924421286860848404602443885854272475391326979005189668017648768244414775061314743386961522762.585374718651305701111', '-5.0734288417028257924421286860848404602443885854272475391326979005189668017648768244412968218518907396343474961500798440693469988605381765847679242647871498537586965937253653e+109'); + T('-116120201222725247610527954599536747256108402740643449687724143269086567616449171607864628957429974416', '1148190510672125444192340349744778820699595561256574541295058422369656677509037208045122028374935585403541656043987495821745', '1.148190510672125444192224229543556095451985033301975004547802313966916034059349483901852941807319136231933791415030065847329e+123'); + T('-665059516301467503087062204795807129205981985820520012687625179.56870702735969931519884226663966750454', '293092076876324270859.1678050313417760917885816996452', '-6.6505951630146750308706220479580712920598169272844313636335432040090199601792322341026056699446750454e+62'); + T('-151941033837572720599600925337962250720110163460498264898016203736097072978877965550197312865391818', '275519398845322762752039373616165590950134853231913357677442.98089023579266433338582691582272222226713269975686273608935285642960', '-1.519410338375727205996009253379622507198346440616529421352641643624809073879278306969653995077143750191097642073356666141730841772777777328673002431372639106471435704e+98'); + T('774.27298241935872782935734853935110700980034942643', '-2335613505940656938918706780962782666653609805431040481805.54016', '-2.33561350594065693891870678096278266665360980543104048103126717758064127217064265146064889299019965057357e+57'); + T('-0.0000000000000000003606517118223376107369897317076138705797620611885910564859903965167670077845554058709312065326542523687696158170393314', '-1057235201.5625889131220869434', '-1057235201.5625889131220869437606517118223376107369897317076138705797620611885910564859903965167670077845554058709312065326542523687696158170393314'); + T('673588976883236537490.1143689352121199626156550908385672312863492899095087287923630764608919202964646650938598591666124915', '810684376454419924392927167848507180923498918725351613660889567923.47605095181300135828', '8.106843764544199243929271678485071809234989193989405905441261054135904198870251213208956550908385672312863492899095087287923630764608919202964646650938598591666124915e+65'); + T('-3430020671178955527172622925417363583260241197.62027095120829845', '-2697651899209144982439207207158758256041163754489319553122389855760271821650344473467567943237904607070691739749282365941241955206', '-2.69765189920914498243920720715875825604116375448931955312238985576027182165034447347099796390908356259786436267469972952450219640362027095120829845e+129'); + T('0.000000000000000000386684190', '-0.00000000000000593500383841354', '-5.93461715422354e-15'); + T('-229553467063496173115623569488071051955397518369782894211290517387417359092419.21316953918885760546743923347047910041156791448271162', '128761823394.73391412805150185026077404187271056727840511587820472574863102356882320762518910948767394645397112340047229286811934703310025622306', '-2.2955346706349617311562356948807105195539751836978289421129051738728859726902447925541113735575520666519159776853313316279860450689425136897643117679237481089051232605354602887659952770713188065296689974377694e+77'); + T('752803651337807242880562206786.554894468', '-0.000000000000000001071337', '7.52803651337807242880562206786554894467999999998928663e+29'); + T('1327499528941.259705731396165260452862352568124098842440934493864336643088192293192971501913307764464886787116200010928852119632015468364', '-0.0000013012400459295541997244614408586478387764368200', '1327499528941.259704430156119330898662628106683240194602158057044336643088192293192971501913307764464886787116200010928852119632015468364'); + T('-42732826522401556404680286738458727450161584.56982929732944313055951751542753245303762787700081314483', '-0.048575929228921161125311723255416867769014200391591416962565880220141310', '-4.273282652240155640468028673845872745016158461840522655836429168482923868294932080664207739240456179256588022014131e+43'); + T('-134317115975228516279277369440412329142525813492681218176.452257906478095711445159604268249481814005710', '878.87016124066018104272829846171161822902416', '-1.3431711597522851627927736944041232914252581349268121729758209666581791466871686114255663125278984571e+56'); + T('-67249264605177190041089081168585468792215793614566298512516668756953699746352828585714616446517294544062645676845293.91', '11785.189223441658736456882609485294922576241169', '-6.7249264605177190041089081168585468792215793614566298512516668756953699746352828585714616446517294544062645676833508720776558341263543117390514705077423758831e+115'); + T('473845447573029801116507496764870227913948278575637638312271.6929093', '220256599636715846396470132047447071430762023364054132738307.92410966839175642212437153019718871180', '6.941020472097456475129776288123172993447103019396917710505796170189683917564221243715301971887118e+59'); + T('61663987226727831177358451280.1273785663169955851813593', '7750.4529567880816153892714518857989477603684894511929835815714039337396479', '6.16639872267278311773584590305803353543986109744528111857989477603684894511929835815714039337396479e+28'); + T('1114249782085628259131.6300784647405324495788', '-75441254269515041497240125862191629.18821756865035216838014718712510162118417621758193335236088548825411631090241783', '-7.544125426951392724745804023393249755813910390981971880134718712510162118417621758193335236088548825411631090241783e+34'); + T('-47284766640683124441541777476988779051324489666892557826451642191773394572968326419750395845015488519009501143710.226604466706051616676759471', '-178533979356035013007.0486021615920523090681110580689173330395242698234732472413898657172920542549863', '-4.72847666406831244415417774769887790513244896668925578264516421917733945729683264197503958451940224983655361567172752066282981039257448705290689173330395242698234732472413898657172920542549863e+112'); + T('86971785918916738535599981140236508672686072922404606596498347463786815664561636214', '-38790942580106273917029.8616351336817911518100068189254182509141591442742642', '8.69717859189167385355999811402365086726860729224046065964983086728442355582877191841383648663182088481899931810745817490858408557257358e+82'); + T('229890914939905533517994656115939439222611214166185047720.6737', '-16450908510999308489324339587686508934693633813727800191296126619327316733314370883200772189175967292716357616129.25956476613892564270457543510303499', '-1.645090851099930848932433958768650893469363381372780019106623570438741119979637622708483274995335607855017256840858586476613892564270457543510303499e+112'); + T('8624299879022265728690568197694576473349674764163914006555775202613.80066', '-1951918312957524571038442996130836809607213863913860985460832910117284832599299718784244014.9462', '-1.95191831295752457103843437183095778734148517334566329088435956044252066868529316300904140114554e+90'); + T('0.000000000001791442922101442150265', '-176219478666778.39032', '-176219478666778.390319999998208557077898557849735'); + T('-0.0000000000000000000450909281658069443034906463413806497945746964537569542795485785087816', '20059612657232793812777346178916639350613903200274271932748642060630002343102688319925466687857659887751178879826484844955146.4794139791133416216349437', '2.00596126572327938127773461789166393506139032002742719327486420606300023431026883199254666878576598877511788798264848449551464794139791133416215898527718341930556965093536586193502054253035462430457204514214912184e+124'); + T('-6787468140564734605294950923721904660396026978942519331890016886817683748193913278435340067132052148355490986326961525834411933314297910293075891258', '299875808414865644293530981481903399783597394891051377970871372993113352087', '-6.787468140564734605294950923721904660396026978942519331890016886817683747894037470020474422838521166873587586543364130943360555343426537299962539171e+147'); + T('-2985845195375048154175460145131625566631330811.0698198381350592343482301558903611521655008133682589725943686764286694288782', '0.0000000000003440896409210193126584537498187185057931457434599306493995078695234961055215715664902', '-2.9858451953750481541754601451316255666313308110698198381347151447073091365777026984156820948624658268509087457792699210086765038944784284335098e+45'); + T('54523776480140693828539812402923.03280118600797412859863998481055730526509253892247361691821925554', '-3018017693744641785170272539537468727331662967020516461365187921.622252481531570142507295', '-3.01801769374464178517027253953741420355518282632668792155278499858945129552359601390865501518944269473490746107752638308178074446e+63'); + T('-148950590810862085091278929767052107224.8773813216218095795711623868958220961874', '1.75192', '-1.489505908108620850912789297670521072231254613216218095795711623868958220961874e+38'); + T('194487565128888901387639549948511413965636783508366826662059481869489007007469884500747433533356290730733602216171', '0.000000000000000000012232074647167060238846099337052578273155522711981842441546203086466766954706886327921', '1.94487565128888901387639549948511413965636783508366826662059481869489007007469884500747433533356290730733602216171000000000000000000012232074647167060238846099337052578273155522711981842441546203086466766954706886327921e+113'); + T('125779680121395715709804872384269463897503936971384019.82361436591484229964552907887172032', '-10705813706184352649413600364408885130948697893', '1.2577966941558200952545222297066909948861880602268612682361436591484229964552907887172032e+53'); + T('-2218129701029502833268536.3661385527823829459113120296928740', '25227558478464802399374718020711143953033396', '2.5227558478464802397156588319681641119764859633861447217617054088687970307126e+43'); + T('15922278874844168795624334393750706784541723182329429804868920436645833815588763261631529887040208280', '-26296.887413892620188356349250229', '1.5922278874844168795624334393750706784541723182329429804868920436645833815588763261631529887040181983112586107379811643650749771e+100'); + T('1869337163952851887099278621758788.4912775488811143022866151909022695202327782530199655924124637283188619937985055306138431', '25.12', '1.8693371639528518870992786217588136112775488811143022866151909022695202327782530199655924124637283188619937985055306138431e+33'); + T('-0.063341123812589258651794426063119957591863528264980035743077602252627967706982211651872386199270743459561294', '-0.000000000068714090541923937797208713394623709878340222046720399207', '-0.063341123881303349193718363860328670986487238143320257789798001459627967706982211651872386199270743459561294'); + T('-123065986062521895461889579855429054876.865438792794260927192006', '7084594017255215876752497968505767888079486468316419822128516563096248999466202123.38787540885020434', '7.084594017255215876752497968505767888079486345250433759606621101206669144037147246522436616055943412807994e+81'); + T('179397967161885408347722783468000236145781976956498009525966031884761882791548055245739198861467543753736467441189809830950974868855035870976.038552', '-6573750410552527157063328131505255371227573474471234861827269.61525370370996879661223', '1.7939796716188540834772278346800023614578197695649800952596603188476188279154804867198878830894038669040833593593443860337750039762017404370642329829629003120338777e+140'); + T('-139353860859081662533478815947566213452966893244463520929326236932221117460953128298317531935014131121470.4619756268309', '169812848393858427202383142897502241915472009842575593156979023589.9908950026432880351156036902370299251473942264824787465775921562579669735', '-1.393538608590816625334788159475662134527970803960696625021238537893236152190376562884749563418571520978804710806241876119648843963097629700748526057735175212534224078437420330265e+104'); + T('-0.00000000056135129922386681', '-595119376867293381235464924', '-5.9511937686729338123546492400000000056135129922386681e+26'); + T('9999400699648583439.910165407231452805204397263', '-239336712014958618084045176038.81761359335921757157899131356', '-2.3933671200495921738439659259890744818612776476637459405056e+29'); + T('0.000002623585411494924528522745861928371567645115623878', '-5636993000244072951029.8588310419570237', '-5.636993000244072951029858828418371612205075471477254138071628432354884376122e+21'); + T('-16469.08018532953044652581289843852712919053726120839851886233541371893823', '6420210.71382431387667941690927', '6403741.63363898434623289109637156147287080946273879160148113766458628106177'); + T('0.0000000001500611664251128666574118039477481282151196384889645376085403596652469864102626694482747', '263135384759861159877959298119330040825421757978037356875485701572152302094162243110', '2.631353847598611598779592981193300408254217579780373568754857015721523020941622431100000000001500611664251128666574118039477481282151196384889645376085403596652469864102626694482747e+83'); + T('-12317435659483.46', '-238178727623943.57770836536163790335018945716578328065826254', '-250496163283427.03770836536163790335018945716578328065826254'); + T('705138698371479924718654705441277066425', '-264458728957414529691672105440971342620756281273769616148413659.83139211549669420724473557409844984235683219270687462430060909545589521338825', '-2.6445872895741452969167140030227297114083156261906417487134723483139211549669420724473557409844984235683219270687462430060909545589521338825e+62'); + T('26845297854.21830300459071341439856406557876499767147640691523616826235445154220875683891282566002689437474534485000263914', '-787376261006598490249180340720309857956285707959849.0204685624653359640496048535548108297789532801386418120', '-7.8737626100659849024918034072030985795625886266199480216555787462254965104078797604583210747687322340564373764554845779124316108717433997310562525465514999736086e+50'); + T('55036049768.146079287001237352665049000674092', '-22143566056427860768945972894580679205849885116613091602005627.33897358443738987438843476838059361711849053157259882779343', '-2.214356605642786076894597289458067920584988511661303656595585919289429743615252172338576770650161711849053157259882779343e+61'); + T('-299420594788150782543317652372306174815941523345478009592090041773731019434882.753119389560259765940107169762142160679052728098688521999921', '-12453366463782072599491184208879912917463798673347144858330325.3505439835880291946926163036554982195666987139373567106718470730123422', '-2.994205947881507949966841161543787743071257322253909270558887151208758777652081036633731482889606327234734176403802457514420360452326717680730123422e+77'); + T('-256022815746044576351192361407997374095362780421849294332421070473692422546466754095230.656295542710250921847773406', '2439108134.33476347036328940422149059899605979832', '-2.5602281574604457635119236140799737409536278042184929433242107047369242254646431498709632153207234696151762628280700394020168e+86'); + T('-137304230559003045184479307675479065631585995407517838007075545485391216662724836', '-1173188488432045163948013790.3943256082040520817421175529478290364828174703361614075880892748696574370905742309087558', '-1.373042305590030451844793076754790656315859954075178391802640339174363806107386263943256082040520817421175529478290364828174703361614075880892748696574370905742309087558e+80'); + T('520707804236215170390228230926413098433541569396930548508375720908453157589569499547054273496534756616492929935502789', '275182891299865137595.3277925634463705149893539835817542834549123082412850143300233066529878447078650880805064450173373918062760558', '5.207078042362151703902282309264130984335415693969305485083757209084531575895694995470542734965350317993842298006403843277925634463705149893539835817542834549123082412850143300233066529878447078650880805064450173373918062760558e+116'); + T('2960407629256095014394492264783919104375530133643554797532898.80192159867955337779238068661889924', '276684036811079285530960359872097261579493580.0498287546202754687941154667048', '2.96040762925609529107852907586320463533589000574081637702647885175035329982884658649615332369924e+60'); + T('-5517355901446910.93833484348629903096547', '-642213064278646161225254.78548483470', '-6.4221306979600206267216572381967818629903096547e+23'); + T('152801618545615441308342159364435799274895358751942316139180186', '-44665364463201090323324.0002892895', '1.528016185456154413083421593644357992748506933874791150488568619997107105e+62'); + T('-42990335950341162574017016', '-155734841164152934379337800729168607491698641563818839018593201886.9108295077085945123926518226547', '-1.557348411641529343793378007291686074917416318997691801811672189029108295077085945123926518226547e+65'); + T('42132979000424460466648083857741221621925059', '230035200616600947476235404386815897149843926902113349799669418017872910933828', '2.30035200616600947476235404386815939282822927326573816447753275759094532858887e+77'); + T('-13721903019805428754977193786.436261994441376688889424250392449552098872713999965025277', '10194877.68498209368023', '-1.3721903019805428754966998908751279900761146688889424250392449552098872713999965025277e+28'); + T('0.0000000000000000000124951715848249957980344035116', '265848190673836152145387.561232311400411988900021332089088465444147046461212646850', '2.6584819067383615214538756123231140041198891251650367391346124218144997281264685e+23'); + T('-2478.622067383552773557059143603127982', '0.32513599534141365489000782897237000600555505333921918961022131484515789518698137637587', '-2478.29693138821135990216913577415561199399444494666078081038977868515484210481301862362413'); + T('1279542454.892945577837995361708396', '-135890698074837524994261181604433.067602982488449328126084049766962', '-1.35890698074837524994259902061978174657404650453966417688049766962e+32'); + T('0.00000011558150572741272723618033490943108053756815783338338515794075800230701762335698251644854707498749273387290233658497030939253228419', '10177968039270056306413680.184343176766129455291207155884626542169167703074423510915329626878514', '1.017796803927005630641368018434329234763518270393439206496145160024824064258134429871478481927200230701762335698251644854707498749273387290233658497030939253228419e+25'); + T('-1435068.618647657046101438708930395218818069312124176746881282174539906140539486722465500068653075714727202174518522871035823011751', '17.77', '-1435050.848647657046101438708930395218818069312124176746881282174539906140539486722465500068653075714727202174518522871035823011751'); + T('1133468285512298621716517199739886057755521547545846865283277167663070426262818957724352964984613242138379271360556', '-141537307411.00826429536495677705445', '1.13346828551229862171651719973988605775552154754584686528327716766307042626281895772435296498461324213823773405314499173570463504322294555e+114'); + T('-3578677705738240793482085438614614551372365641536961576081303950220125233969517175095644.5329094147681', '6370326210773977367247462308.43303220494101174275111504449143', '-3.57867770573824079348208543861461455137236564153696157608129757989391445999214992763333609987720982708825724888495550857e+87'); + T('4539369410251014415308963272777018911975282268127892682157655.2687008509', '0.000000000000000001809319965416452365878526603785327342157425587339349', '4.539369410251014415308963272777018911975282268127892682157655268700850900000001809319965416452365878526603785327342157425587339349e+60'); + T('-11612662163115798192491748988208694545917762161675688590981743152130989015346035128837953127650326301679404956035505966175985535696091516284466656479', '-129128951232580369482047739685813992608602054001765557698178402197589395906493483213995', '-1.1612662163115798192491748988208694545917762161675688590981743281259940247926404610885692813464318910281458957801063664354387733285487422777949870474e+148'); + T('0.0000720244123748728799957336555523697', '71791325249354506431814914086989', '7.17913252493545064318149140869890000720244123748728799957336555523697e+31'); + T('-133560.04', '0.0364781487240002253276365093066436254283459521449826381477605260349961957510696178085420533616152821352777161063017', '-133560.0035218512759997746723634906933563745716540478550173618522394739650038042489303821914579466383847178647222838936983'); + T('224439133349456441836858561541114452976410738191588.76028', '7143422387100306585012321998.95338744534500001350', '2.244391333494564418368657049635015532829957505135877136674453450000135e+50'); + T('0.000000000098363222378328329588864342385890675532349142951521770288606050467173967001464527333472294637844', '0.000005565523790105586010252525454', '0.000005565622153327964338582114318342385890675532349142951521770288606050467173967001464527333472294637844'); + T('-19302672950888869853468603175885975100580447783425209560751846890885724469162939072204904025589809680230949.15', '-5221907579579195185631992055573', '-1.930267295088886985346860317588597510058044778342520956075184689088572446916816097978448322077544167228652215e+106'); + T('446571007966420189521982224619283959966447939678911167542457919503539937579809547715586812124362669', '-0.000000001532941453246004602861225513798223406668763246640071116663063458244535088282298106516453270820501460262785607', '4.46571007966420189521982224619283959966447939678911167542457919503539937579809547715586812124362668999999998467058546753995397138774486201776593331236753359928883336936541755464911717701893483546729179498539737214393e+98'); + T('162256387512654913999487367376656275516', '-16092263592753754060348826948877883484399357352376898503109928037035273000095267537045095647020.9340480402341251915539575258', '-1.60922635927537540603488269488778834843993573523768985029476716495226180860957801696684393715049340480402341251915539575258e+94'); + T('-86.282711884059841689767705467465544410310216259432751729', '-92429065419108217418705866104650901.759952292192027196592545226813152124130603195434172370', '-9.2429065419108217418705866104650988042664176251868886360250694278696534440819454866924099e+34'); + T('-75868293.338801243263000230664880224491442311102621282662689408530004543', '2944972.7213068711096384504382609733072677', '-72923320.617494372153361780226619251184174611102621282662689408530004543'); + T('-238444972635059326925252856448297027255504596325494840989337749695326400426034906266359680165724.6162269656460992471659583387303201989744940449', '-63316025717469', '-2.384449726350593269252528564482970272555045963254948409893377496953264004260349063296757058831936162269656460992471659583387303201989744940449e+95'); + T('-0.00000000000000000002628376740857869992666514908906633928490609752241821541445544366572977726597123951321896262451176771066761534225489543173636033414059', '-0.00001057742323776455463981263889953456044073157406788745965110714274589491766184028326935', '-0.00001057742323776458092358004747823448710588066313422674455720466516411033211728394899912726597123951321896262451176771066761534225489543173636033414059'); + T('-0.00000000000003565805735839291765636742503', '0.000000000000000989774781039626', '-3.466828257735329165636742503e-14'); + T('0.00000000000000375655426038511007746679974331400659776884912884102085329769227537463698444', '546526458201961217312998279716410991.2240626147007447545948388', '5.4652645820196121731299827971641099122406261470074851114909918511007746679974331400659776884912884102085329769227537463698444e+35'); + T('-14278318423785251476284397565212.1237964463782332', '-37174052283987138.47044217178181655468224887601671623199409260448279688190513294184710815453374043139975669500607120979735080911231772347', '-1.427831842378528865033668155235059423861816004975468224887601671623199409260448279688190513294184710815453374043139975669500607120979735080911231772347e+31'); + T('-17330.438895896038328483940004', '8350320541724405487824535323446674.061386758095913411145749626626909634263800865346657', '8.350320541724405487824535323429343622490862057584927205745626626909634263800865346657e+33'); + T('-0.0000000000003788156589604414602956818964327013143296398421560231778437969245', '1634246393878053828481992729777312078472156.145364321882169640446334568077598604110397446683352082023376014305304686515469544910814539917743927216291855', '1.634246393878053828481992729777312078472156145364321881790824787374126617302922213964745369022442181219991127460889590969544910814539917743927216291855e+42'); + T('408110915553257916118522792717017858639986473034925463411181033631049938756007592', '-4438008.684761039161', '4.08110915553257916118522792717017858639986473034925463411181033631049938751569583315238960839e+80'); + T('-204903173380829791053251747', '-191455970489532344774803952466.94684645095468153608792233241808335603853244943133837112979971481605', '-1.9166087366291317456585720421394684645095468153608792233241808335603853244943133837112979971481605e+29'); + T('132721140690308763835711368030783660696277559510011717622014.3314196', '0.00554064704637147709273658476408607464726088564072789893070411751226529035714577466777850716116505710506906049773777298273003529699', '1.3272114069030876383571136803078366069627755951001171762201433696024704637147709273658476408607464726088564072789893070411751226529035714577466777850716116505710506906049773777298273003529699e+59'); + T('0.0000000000000000265193728860055071583880736', '-0.0000000000000000011892979550800567635892667658882072063', '2.53300749309254503947988068341117927937e-17'); + T('1924004.96231', '-7445082351600096.3980954490079933041653479391080501268670868688846572103759932357179141189615092741415678649052246409361594010562380231156977081147310', '-7445082349676091.435785449007993304165347939108050126867086868884657210375993235717914118961509274141567864905224640936159401056238023115697708114731'); + T('0.000000000000000000013903352680411740283535242027183387301940111406117407562975303647341986279', '0.000000193241459485855551124461468088220083733257451375352357494658457700846322832086915983440402233205', '1.93241459485869454477141879828503618975284634762654297606064575108409298135734257969719402233205e-7'); + T('-0.000000000003326499271235431532653228418183469394009927691863875127864766277232493921924691425777066908583580479571', '38538.5', '38538.499999999996673500728764568467346771581816530605990072308136124872135233722767506078075308574222933091416419520429'); + T('-20818471791668358551694729332150711.171307610', '-0.00708772819104515753090752104339593647529198186926535557761440185947368079580', '-2.08184717916683585516947293321507111783953381910451575309075210433959364752919818692653555776144018594736807958e+34'); + T('-752467347549701119616683978206438108', '0.00000000000000133182829836217784813241401889873', '-7.5246734754970111961668397820643810799999999999999866817170163782215186758598110127e+35'); + T('-71331.43876400219162800429885965449977637326182916850599237355086577534159328324037916425312333490817913501686724307', '-0.0000032139466257383829211495727047401282848726415697991943119851858819503701337097998682466465136331', '-71331.43876721613825374268178080407248111339011404114756217274517776052747523361051287405299158155469276811686724307'); + T('0.00000000003870179783985381063243324820910313', '-548412148702636016270138827097973238704618012095820424598631550144908156181914050173920.55528708694731', '-5.4841214870263601627013882709797323870461801209582042459863155014490815618191405017392055528708690860820216014618936756675179089687e+86'); + T('0.000000000000000159733765895', '2415466722403145928603501563265788955.65674020714185313333653211954046063741077995756304216513522037423497068589560605814929217258491053368146', '2.41546672240314592860350156326578895565674020714185329307029801454046063741077995756304216513522037423497068589560605814929217258491053368146e+36'); + T('227954506189379566132.3531049565054147523709893227464306251862462550700080825380345883105195752839361334678871895593932042077071912003898512892', '-0.000000000000000243005506005006402417515376832343523332630896909903184829530830475018969291441011676442441851780434411064620687143851249145363683686213768587121', '227954506189379566132.353104956505414509365483317740028207670869422726484749907137678407334745753105658448917898118381527765265339419955440224579312856148750854636316313786231412879'); + T('7973988940224355015214336919379953485029536', '-46903881814522001507986816.99248409698766603253677611753397276067931254075552578', '7.97398894022435496831045510485795197704271900751590301233396746322388246602723932068745924447422e+42'); + T('-28179553528461976563', '248852934964030510956645790197846644600695689011471340357218184219306881752129281687476727', '2.48852934964030510956645790197846644600695689011471340357218184219306853572575753225500164e+89'); + T('-0.00000038749442098332718476018064732023168357745188079514035581267126125927216662843067618614699072618739224559403486391045982462716534370262', '4925006594013147257537583640291677799280156031827105', '4.92500659401314725753758364029167779928015603182710499999961250557901667281523981935267976831642254811920485964418732873874072783337156932381385300927381260775440596513608954017537283465629738e+51'); + T('15886467257912495.75689320719759657353210920879083109402692609', '-1849440876713050806208487397730416627460.30935631710582208341731553877239172695260308652973787159595347848456382322348819127147788006459039327206090843', '-1.84944087671305080620847151126315871496455246310990822550988520632998156063292567699652973787159595347848456382322348819127147788006459039327206090843e+39'); + T('-5026233483715918355642138258166736347547068019235638147637409254751306580678549839', '0.00000000000019779052536990808660692', '-5.02623348371591835564213825816673634754706801923563814763740925475130658067854983899999999999980220947463009191339308e+81'); + T('0.000000000000000000062846132155934866382475838803414329167925640917238247929247187597144605858850', '-28375804842138366819355751075050288391048198685203076654182288294782980828652856275283802825108048295625084622829828083365524827680002246249410431', '-2.837580484213836681935575107505028839104819868520307665418228829478298082865285627528380282510804829562508462282982808336552482768000224624941043099999999999999999993715386784406513361752416119658567083207435908276175207075281240285539414115e+145'); + T('-48863470201397.143927278109695419367309919023804132', '-168361072783150231412254024286758558795677828805121174243492869928073465709719014.023363549742186056665143055249248475718140936364', '-1.68361072783150231412254024286758558795677828805121174243492869928122329179920411167290827851881476032452974273052607718140936364e+80'); + T('0.0000000000000018997661230877089423253849452578256073300966468605209561343912897439707821108359408910538145364970969403440848507153309', '-0.000385522197', '-0.0003855221969981002338769122910576746150547421743926699033531394790438656087102560292178891640591089461854635029030596559151492846691'); + T('865008.237475', '-141572245488815215559.668813721278969595937436750693180747505198056296244191362365981067', '-141572245488814350551.431338721278969595937436750693180747505198056296244191362365981067'); + T('4531430332.974369182979674290738630476176408845410151617472188112662759', '-0.000000000000002990088033905170812634080622222063618156981784899967819720909679583969232226858480299674669693921077115362022886', '4531430332.974369182979671300650596571005596211329529395408569955680974100032180279090320416030767773141519700325330306078922884637977114'); + T('1713604693153132011650052009647770010715862661891416010.39872031838645104', '-5209348059320160498592207950890250846.48', '1.71360469315313200644070395032760951212365471100116516391872031838645104e+54'); + T('298.64569377145669370010760887428305419049211767076463966663182890471105450765507454904166021', '0.0000000513282401911235340888997773718547011660029236548742535384576211684698905846807631716329563685023698', '298.6456938227849338912311429631828315623468188367675633215060824431686756761249651337224233816329563685023698'); + T('153158125588135275971624448998303827924375983937687494263.6', '522574.2172656390720935407437590923430209583762529523179633299440845173022407980283974345034782042', '1.531581255881352759716244489983038279243759839376880168378172656390720935407437590923430209583762529523179633299440845173022407980283974345034782042e+56'); + T('-37584369371625804653778917725.04710852052873625022089539878880649643091488064967', '387289160645786908822166966661304359256521.40416120883', '3.8728916064574932445279534085665058033879635705268830126374977910460121119350356908511935033e+41'); + T('333145493405211943110181488709393444800555889546483.25', '337039689069037487854189149366025543071617091671893617361194217844843723876472794060690078788349535879526770512127905359.772', '3.37039689069037487854189149366025543071617091671893617361194217844844057021966199272633188969838245272971571068017451843022e+119'); + T('-0.00000000000000000875947840124838794446714154793538138133101442657807977884554262860149896878671504', '6121126413234312706434650834319645665575176210124040301876334782352.2701746892166273345074659234578320327195185867786496894475416', '6.12112641323431270643465083431964566557517621012404030187633478235227017468921662732574798752220944408825237703884326830811652717342192022115445737139850103121328496e+66'); + T('-27101285266584198282389701705604910688467857152047550105271200946392221564235258269.0800011597617806021545806843947528587392169', '-93984277.78258808561', '-2.71012852665841982823897017056049106884678571520475501052712009463922215643292425468625892453717806021545806843947528587392169e+82'); + T('-19256051893600692288537586.59353458509306480025521794532051383696889407478585008231545758785', '-8963065351854.7878237484328880211387666531886258820788775118', '-1.925605189360965535388944138135833352595282139398459850913971904777158658585008231545758785e+25'); + T('11569497283022449921394189469855978299381812519350940701313946487504335257098102797076761168675477401606', '354878912159213729324887521064557506231700037558958924247470744332285142081086865543601683607743.711010177974', '1.1569497637901362080607918794743499363939318751050978260272870734975079589383244878163626712277161009349711010177974e+103'); + T('31410760334069399540603136630010363.370516', '-0.00000000000000000250028865888009060099213589080181239288708801576170886559433463009608557725740080566463813772802697909277043093845092263791985', '3.141076033406939954060313663001036337051599999999999749971134111990939900786410919818760711291198423829113440566536990391442274259919433536186227197302090722956906154907736208015e+34'); + T('48450334100677709.292858595098179054162833212046954235133498994154015488631434964418926099', '-5452278790911076.131563791561554078354880486603279', '42998055309766633.161294803536624975807952725443675235133498994154015488631434964418926099'); + T('-726362472599493167754185550127976323995131102302190474448.022897051088265272546787050801660', '-26697.1300027', '-7.2636247259949316775418555012797632399513110230219050114515289975108826527254678705080166e+56'); + T('-5169217768018238832429254316846393556631723341237749333387854823.66306235977379827807976904396539087620041043309411525365990764018230223245161', '21048346121126363354727928959697501228648890358940.20948083990111835371727450225140678862878629117909606507623912415702402888341685852', '-5.16921776801821778408313319048303882870276364373652068449749588345358151987267992436249454171398408757162414191501918858366851602527820356819314148e+63'); + T('0', '3880335331987075756173782777964278144918139052756795465605564193503574084038075', '3.880335331987075756173782777964278144918139052756795465605564193503574084038075e+78'); + T('1471118130122845147276641392737353012928182703107626659491246625014486338076282524169910132047730182612396587213027711271216.07461', '-9022200078219.61142095898083863316225395343911361206316438521617777', '1.47111813012284514727664139273735301292818270310762665949124662501448633807628252416991013204773018261239658720400551119299646318904101916136683774604656088638793683561478382223e+123'); + T('1961360640267', '-8237317626242593351740131071931066270126645544302536441310151862831895121602611.6685378785733350998', '-8.2373176262425933517401310719310662701266455443025364413101518628299337609623446685378785733350998e+78'); + T('250056193902937472244979.030455795040281239421914909457299497068011838527472729233340186411522', '-389637478200780623396903050063520125697228676163384342985662391907774888793755259018717015963204238731047741576614654499.6', '-3.89637478200780623396903050063520125697228676163384342985662391907774888793755259018717015963203988674853838639142409520569544204959718760578085090542700502931988161472527270766659813588478e+119'); + T('-41.0667685182669426103291702409386770119233174954666626675833072533459819908153', '-24683428468133023718789488350081878137388951325390325606955366999359.7544', '-2.46834284681330237187894883500818781373889513253903256069553669994008211685182669426103291702409386770119233174954666626675833072533459819908153e+67'); + T('-1465078045399636479827859198546113217231061854355552775', '286781605726130466373594446109778466785174261888370270594913242', '2.86781604261052420973957966281919268239061044657308416239360467e+62'); + T('-0.00000000000000004372082675620531277773860157001154109814365737979121603370264972266779787151695587487529163780797491077618453622889827822', '0.0000000000000000115010056472096691762701979992534492116764302820728655795640758846469523814776292792892505', '-3.221982110899564360146840357075809188646722709771835045413857383802084549003932659558604113780797491077618453622889827822e-17'); + T('-5915475824828715769525622713448197545310987686571625215824865265460902144119719.60667712865151405621927923268842958349404793882328736294067066', '8289599618691777653744294128182319598849442999.3869210944639310536363962387071546926', '-5.91547582482871576952562271344818925571136899479397147153073708314130329467672021975603418758300258288299398127489089404793882328736294067066e+78'); + T('-6781589283952862541042634770259255399053423179553784209358601916774267083862536888853055882080202198759767010533235152604760503522710009', '0.000000000162', '-6.781589283952862541042634770259255399053423179553784209358601916774267083862536888853055882080202198759767010533235152604760503522710008999999999838e+135'); + T('-7401754762477043478410731850924229267152.1385806493837710954211647499789972995005461407065862284241906466005572091609381993770', '6814772121230277085632920582844817329083526354461024137801607310774405037993936581203797318438915758471288490759159235041741129', '6.814772121230277085632920582844817329083526354461024137801607310774405037993936581203789916684153281427810080027308310812473976861419350616228904578835250021002700499453859293413771575809353399442790839061800623e+126'); + T('-8', '21559462366454603856476372397626468240404955163730871821082532003169939666641.3471758', '2.15594623664546038564763723976264682404049551637308718210825320031699396666333471758e+76'); + T('-10740658919737638642657973180452168052201470445', '0.0000000082551674495554316423778277737071293814860377807246652498052504231443776872267372379', '-1.07406589197376386426579731804521680522014704449999999917448325504445683576221722262928706185139622192753347501947495768556223127732627621e+46'); + T('95996905118671016719266871729.520398129746', '1424664524272137031863748414508.04407607261068488341354804735012808909858790022643537811522935701269430843913849', '1.52066142939080804858301528623756447420235668488341354804735012808909858790022643537811522935701269430843913849e+30'); + T('7545686522420.04', '-110343136.2377175', '7545576179283.8022825'); + T('-3778460127635156232285998080.7598066400530666299808051012', '-0.00056022982056213327166370574884842481363234', '-3.77846012763515623228599808076036686987362876325246880694884842481363234e+27'); + T('-205.787', '40023148.03084250896', '40022942.24384250896'); + T('-10469.58581784685565292886210019593298608566213', '0.00000000000000055769617173', '-10469.58581784685565237116592846593298608566213'); + T('-1697421104198498565372', '130856814871284869392577271881365150502943114887052960993846', '1.30856814871284869392577271881365150501245693782854462428474e+59'); + T('-0.000000414035245121759801970634606896989047228634707532', '-38870447038068433224878605004808090705226214661500574171036129739107587668370820311143094.957', '-3.8870447038068433224878605004808090705226214661500574171036129739107587668370820311143094957000414035245121759801970634606896989047228634707532e+88'); + T('-2028389003568384286508207197206771601505013066674015630980.40648010665804431311941439248759845544570040200920378245684409301143522362121397976187113415', '-0.00000000000000000001828002844616325557520485512882126384242054987542132167273332845067757', '-2.02838900356838428650820719720677160150501306667401563098040648010665804431313769442093376171102090525713802504629926464288685654529394730821254870415e+57'); + T('-0.00000188443084941099579692438787131849288418100707817192098239393848434584554053801905703996798261121316300897664557', '-3594409179355959594852497571834744071660256911.32474274552929134136288086348918314067885678172370772397', '-3.59440917935595959485249757183474407166025691132474462996014075235867778787705445917174096273078589589098239393848434584554053801905703996798261121316300897664557e+45'); + T('-0.85273', '-279017792692170227516916053414297917923905837082261296273831887211350843745548269287411294.07131470147929582735586577119', '-2.7901779269217022751691605341429791792390583708226129627383188721135084374554826928741129492404470147929582735586577119e+89'); + T('1465314670123686042148720875703178202039648.513007703872541159651633499734046400788', '777575543578333746326.8333028060', '1.465314670123686042149498451246756535785975346310509872541159651633499734046400788e+42'); + T('-26920347118432602525813368030981387.1405710723', '-9.7088124301334057558783763899332243970338509361338006057662744040169648799290478801660095182592839804430939342926', '-2.69203471184326025258133680309813968493835024334057558783763899332243970338509361338006057662744040169648799290478801660095182592839804430939342926e+34'); + T('1316027450661167908370945255095582684.489766006179613245381691072', '-27247880103214807605061248065261158542.238847334604', '-2.5931852652553639696690302810165575857749081328424386754618308928e+37'); + T('0.00000000000000060630789744883065327236848700992137069065181792024986218307439791524854229166347681155', '23583422975999413573947442313781193552150628103226534113902', '2.358342297599941357394744231378119355215062810322653411390200000000000000060630789744883065327236848700992137069065181792024986218307439791524854229166347681155e+58'); + T('-270309750628324546215936875977251097460648729.2740106846988640562244700895457240150700468834022435265506238503209610561582721812729822740951287073436', '6623510422802645083643613990747833105477640970454392196256901453016184756585217878929893750.897051821348362132957036238424470', '6.6235104228026450836436139907478331054776409701840824456285769068002478806079667814692450216230411366494980767325661488787459849299531165977564734493761496790389438417278187270177259048712926564e+90'); + T('56833947334627412648354391179890', '-0.00000000000000020974557897099293264846', '5.683394733462741264835439117988999999999999999979025442102900706735154e+31'); + T('-32374924556195581487094651860979067186648013640229524477572717027565077414917194641088084918165166494.4007630', '0.00000000000494296301119272380546991072751573073742664686905799391552910274849845882330521177213047667', '-3.237492455619558148709465186097906718664801364022952447757271702756507741491719464108808491816516649440076299999505703698880727619453008927248426926257335313094200608447089725150154117669478822786952333e+100'); + T('-1797058201757575606389544872285070938241126244.769314657904583268612759343503712876640776918509', '-123578693378839714952814254501905650483998928961025522981908260845901294079261880178955413386', '-1.23578693378839714952814254501905650483998928962822581183665836452290838951546951117196539630769314657904583268612759343503712876640776918509e+92'); + T('-225494018080889118537669713.9577313306531049801615408808777093224321509314', '-682519588810576318453197726941395968412861.368346014111618610229581846002026209517358035441594633629722053374906068945767849660172087', '-6.82519588810576543947215807830514506082575326077344764723590391122726879735531949508966841594633629722053374906068945767849660172087e+41'); + T('-146483103623737636574187312839618731854', '-164095488530068730324672.278737858685739790237796055945', '-1.46483103623737800669675842908349056526278737858685739790237796055945e+38'); + T('288065905331021752942013707735111579224784706910.9694544539500946696884975171333618909754943414924752306735638546017809645829364174230805972', '-1879997868031626.13530883243794860502747913408966454', '2.880659053310217529420137077351096992269166752848341456215121460646610183830436973509754943414924752306735638546017809645829364174230805972e+47'); + T('-30585397102026875650261239591045069897098845982837987425500176089534774480799.196611528585829637554', '-8.2', '-3.0585397102026875650261239591045069897098845982837987425500176089534774480807396611528585829637554e+76'); + T('0.0032143', '-0.00000327364505987922707888345463293127602039856777788995949286363555265326340970495', '0.00321102635494012077292111654536706872397960143222211004050713636444734673659029505'); + T('0.0000000000000122089', '-0.00000000009606197314249053393037900593870599194195536081517004235811304298818227827198075675001652859716008205203077623130159549042380478073889176477922188', '-9.604976424249053393037900593870599194195536081517004235811304298818227827198075675001652859716008205203077623130159549042380478073889176477922188e-11'); + T('-1519120.89697395603485201266905849077718172383773866152054', '-1252690569967.49008', '-1252692089088.38705395603485201266905849077718172383773866152054'); + T('135272242707147130668128741572727753877823517.5267897682843968097498958339590924822841849811607010672', '5323052067036940514642933493723371314528945383203996481350033868198902738290466758895359108447.5', '5.3230520670369405146429334937233713145289453832041317535927410153295708670320394866492369319650267897682843968097498958339590924822841849811607010672e+93'); + T('1373517886847509715943778293771477989783556837632514732917942', '-0.0002918853', '1.3735178868475097159437782937714779897835568376325147329179419997081147e+60'); + T('-7.74', '-0.677942863330392341680315597792114620456629945201714481742115371479319069952739078864753759584', '-8.417942863330392341680315597792114620456629945201714481742115371479319069952739078864753759584'); + T('0.000000000000020414435064555641261166870351580734289075091673294774203415476224497625497586758753668', '-295256622638190096478809549470566', '-2.95256622638190096478809549470565999999999999979585564935444358738833129648419265710924908326705225796584523775502374502413241246332e+32'); + T('0.00000000043262197364654223753368765660064439474065876064265664457730559389', '7732179149449785953403196073740747199538706014956074135203031279754730991083612056065.08514009015794758031660841', '7.73217914944978595340319607374074719953870601495607413520303127975473099108361205606508514009059056955396315064753368765660064439474065876064265664457730559389e+84'); + T('-31545120553641346250429.2041019063650382985', '-0.00000000000000322497856922376578447917222257195', '-3.154512055364134625042920410190636504152347856922376578447917222257195e+22'); + T('-0.00000001491640137712266436315173456229606458713951581451514404607758964925714049589638484422967721927256', '875664170041898483278650.4', '8.7566417004189848327865039999998508359862287733563684826543770393541286048418548485595392241035074285950410361515577032278072744e+23'); + T('0.000000014725515297168007', '-0.1721217425079357563094435985505347277188701680317422409696115500647420231', '-0.1721217277824204591414365985505347277188701680317422409696115500647420231'); + T('-0.0000000000000000074805926405562', '-32346407643566307755196.3614356592764197829600176806496', '-3.23464076435663077551963614356592764197904406103212058e+22'); + T('-313255500747185422178551717566317427599882739101058623548833613806257.69583741347200945021282349083047007656822121171291826489554745460530313085870235', '-0.0000000000000277730681342000948755480478956572325828011175067392454201615642985418337229601771222072988252633636962852384552843309099649046742455014449802537116792', '-3.132555007471854221785517175663174275998827391010586235488336138062576958374134720372232809576909253456246161168689455010660130541938507232924230008918337229601771222072988252633636962852384552843309099649046742455014449802537116792e+68'); + T('796875527749558859721941966594505581298971405919740366253609646289883816950441012', '0.000000000000000106051762207090679888452342439518714917029053485988097086863407642961157123252080954014447191265506482837715480', '7.9687552774955885972194196659450558129897140591974036625360964628988381695044101200000000000000010605176220709067988845234243951871491702905348598809708686340764296115712325208095401444719126550648283771548e+80'); + T('-2799308221255727632154376162818591439464534253442269002690075449594707354769913622', '-2653089999757580649494973458723447833943060689063627290.948', '-2.799308221255727632154376165471681439222114902937242461413523283537768043833540912948e+81'); + T('5230.6', '-1457159088427391036497085292606459576.080762789887425314064087931228782784478984069210492316', '-1.457159088427391036497085292606454345480762789887425314064087931228782784478984069210492316e+36'); + T('2265111540331847.44385', '0.0000000000000000026399730647357391221240416795810255729781114791438489591810343937780321771723301295667448186691762052166888791236524529182049438', '2265111540331847.4438500000000000026399730647357391221240416795810255729781114791438489591810343937780321771723301295667448186691762052166888791236524529182049438'); + T('-0.000000000000000000130351174611495679446350395997550522969873358970359485781', '6837379692457094204055811341371130548614625165355.865146', '6.837379692457094204055811341371130548614625165355865145999999999999869648825388504320553649604002449477030126641029640514219e+48'); + T('7777457612952579632757962073721379887227173983203369078658939826377158630604554480732826290762', '738745470.90386876186959774624', '7.77745761295257963275796207372137988722717398320336907865893982637715863060455448073356503623290386876186959774624e+93'); + T('2091587164056284398722371839269632038542800738624345517942031403189897878173896765128677273428424903855243972440613077101074439732042713569', '-4951053013270976201467725287896995979570086801989189606256031245422534338962187224417', '2.091587164056284398722371839269632038542800738624345512990978389918921676706171477231681293858338101866054366184581831678540100769855489152e+138'); + T('15596526663192771382682194043241293744360284406119405225927225287207668035938290350623.0136029816344460485336790911173723056262086400741246575531343349', '-0.00000929115562', '1.55965266631927713826821940432412937443602844061194052259272252872076680359382903506230135936904788260485336790911173723056262086400741246575531343349e+85'); + T('-0.143235913932920000943491996904423637', '105465669771635331021255530853326638414654835668447488251.44604956381929966', '1.05465669771635331021255530853326638414654835668447488251302813649886379659056508003095576363e+56'); + T('-131.66335836273650457236601594959663422039552341367012898208021864544080993', '0.000000000102821561249286522291590439126847620376937400555244959227688218488059751276284980726909295138051809044', '-131.663358362633683011116729427305043781268675793293191581524973686213121711511940248723715019273090704861948190956'); + T('-8211501623.467468766754729150340637983678978062348865062714034523840862885354594840', '4138.57064149204825240856224917824913', '-8211497484.89682727470647674177838880542984806234886506271403452384086288535459484'); + T('448392812.1018844354312957', '0.000001316332446359801420119858000840615513663646321599278426150890005786837699907597501844047946311701498712958992807897', '448392812.101885751763742059801420119858000840615513663646321599278426150890005786837699907597501844047946311701498712958992807897'); + T('-0.0000515081990743416226512970055332416111901', '9721676157492236482889538449332613888622823236564458642190.9068670871984057788931368828097465243944915994782715793742390978277016751898427038', '9.7216761574922364828895384493326138886228232365644586421909068155789993314372704855858042132827833014994782715793742390978277016751898427038e+57'); + T('0.00000016348993711366066763304174336589379906596596798355118', '27092941593289173149253532518.630793971858294366753', '2.709294159328917314925353251863079413534823148041366763304174336589379906596596798355118e+28'); + T('1750188741743624090823079726633157080090405425107855229635890.59733375', '0.00000000000000253442', '1.75018874174362409082307972663315708009040542510785522963589059733375000000253442e+60'); + T('-120.632964973', '5599333570130562863508293629418111213773068135437215884309301113811346990002242140', '5.599333570130562863508293629418111213773068135437215884309301113811346990002242019367035027e+81'); + T('-12956.8', '-28125616598.519875442790896131080979434706515929141364365696194890485115866976051969974226520962106271082896', '-28125629555.319875442790896131080979434706515929141364365696194890485115866976051969974226520962106271082896'); + T('0.000000291488949451719436740561621135104503110544381471384117075881655619830678129379740688277538395366270063296614253757547811832765458961027261', '742031645768480260456626682374347039419606586767893047218475327818790868744906.4174591102001653101442893099824528369555', '7.42031645768480260456626682374347039419606586767893047218475327818790868744906417459401689114761863726050544073972060003110544381471384117075881655619830678129379740688277538395366270063296614253757547811832765458961027261e+77'); + T('-87648513454369557979997099620411798538786483894671.07140', '-1', '-8.76485134543695579799970996204117985387864838946720714e+49'); + T('11680.216847571', '15545171141903075635187317512728638503.5120154558326692202036513424672740379112385241218565405732440132', '1.55451711419030756351873175127286501837288630268326692202036513424672740379112385241218565405732440132e+37'); + T('217933206105480443145202005696333545459278284908.49635092233713353554300078449954457018472363340', '851760835565720226699101062761084114408263270495330844773733382141014174507794413266810316.1227643422652856425756237116285709', '8.517608355657202266991010627610841144082634884285369502541765273430198708413398725450952246191152646024191781186244961281154701847236334e+89'); + T('131096.71', '-92311622283713248650111150643196971194314788501758170221195801273003488.29608754610346056452229667146067507425547000551040945788003726', '-9.231162228371324865011115064319697119431478850175817022119580127287239158608754610346056452229667146067507425547000551040945788003726e+70'); + T('-7.3', '-0.0000000091386734958004013759891573873629383131', '-7.3000000091386734958004013759891573873629383131'); + T('-83570037032769234234524544857963', '-16329401826664066011232.5825604925166033769207446067722340786326', '-8.35700370490986360611886108691955825604925166033769207446067722340786326e+31'); + T('207724189276.2354966467766137168630074255', '368.36464299671427627280350157241857056036300267791934105571800636754609729339278308276622409777940247912804080708853009235428453986', '207724189644.60013964349088998966650899791857056036300267791934105571800636754609729339278308276622409777940247912804080708853009235428453986'); + T('1036451349506118936704271313996579271029057412.5954933332585621063133644518747511868339417', '1919224338475644109', '1.0364513495061189367042713159158036095047015215954933332585621063133644518747511868339417e+45'); + T('4594184.672287496737761641402840568569137816292501654869263256716904015818', '9', '4594193.672287496737761641402840568569137816292501654869263256716904015818'); + T('50922584112695986965179537750579107265371590444561808302376506246479343493.0485900097493874734', '-105588622877722030471490473554330788644165258321036318195143132112931', '5.09224785240731092431490662601055529345829462793034872660583111033472305620485900097493874734e+73'); + T('8762733230291549920959.461299029519859816221596648161', '-0.0000000000000031719158', '8.762733230291549920959461299029519856644305796648161e+21'); + T('-0.000000000001088450644628700841462499123795267689859321764189574607336877911119745839851152785101218885203868', '225068092611409981730971194567763438117689044018909866535690426664845083547381487510884944286310222323340655938142842019712684', '2.25068092611409981730971194567763438117689044018909866535690426664845083547381487510884944286310222323340655938142842019712683999999999998911549355371299158537500876204732310140678235810425392663122088880254160148847214898781114796132e+125'); + T('-0.0000000739096483131943', '0.0077245546142820934802776687821282016447278885', '0.0077244807046337802859776687821282016447278885'); + T('13773756.65', '82341713701089392.952', '82341713714863149.602'); + T('0.210858539297226184666150871507845048599002989549496974738305', '893397778957253392646834827705840161788170516925929814290917857496573588954994819301103.84678150026', '8.93397778957253392646834827705840161788170516925929814290917857496573588954994819301104057640039557226184666150871507845048599002989549496974738305e+86'); + T('-311598106485014524446810253701.9', '-273597385676217579425078047906355.35858548639357', '-2.7390898378270259394952485816005725858548639357e+32'); + T('0.0000000000000010949761538307759705645612635463870582102620259', '-642669739487957339653187054422612017200108895155999822088234612866942591002244842.544328938390312037134789574351984286413492175445739315', '-6.426697394879573396531870544226120172001088951559998220882346128669425910022448425443289383903109421586357435760137218522286290586811047379741e+80'); + T('-1413496343761296278143773037357799924448219743939.91034833304743349454253527380297135637064998230', '-0.0967154985326414596487190403709602844792653613', '-1.4134963437612962781437730373577999244482197439400070638315800749541912543141739316408499153436e+48'); + T('88324430808176237552938.25850832460', '-1355506260987917851790849984926562224803792482721611489882549294623263720214603522264447050471402562893267497494827198102938336997669.605991', '-1.3555062609879178517908499849265622248037924827216114898825492946232637202146035222644470504714025628932674974065027672947620994447313474826754e+132'); + T('1913616274506284536238001245388057898244388034.32351451667730419851', '-0.000000000000007988642436925641812976903901681868680726375828237077834585228067490119284435811740642127567200765018765914463975898057', '1.913616274506284536238001245388057898244388034323514516677296209867563074358187023096098318131319273624171762922165414771932509880715564188259357872432799234981234085536024101943e+45'); + T('-0.00016620663104623655416647045', '-12686797041.8875795703189682', '-12686797041.88774577695001443655416647045'); + T('-955318682044891602024512908305401581438484362308395.3064608014', '2405264255243858252389318787930524.596646933647908', '-9.55318682044891599619248653061543329049165574377870709813867752092e+50'); + T('38251344747049710395611359429944', '0.000000000025044307069557002354176630069758745187110935106932295261690460', '3.825134474704971039561135942994400000000002504430706955700235417663006975874518711093510693229526169046e+31'); + T('6556082.32', '-0.000000000000001855587562856033456366238361224693109198376760772204394200539703419686910321614077786337510464951', '6556082.319999999999998144412437143966543633761638775306890801623239227795605799460296580313089678385922213662489535049'); + T('-601066282116.773646944861803892913655', '0.45869929801033616081412998252506077240747661632297824035019059504580212743644756970631731956591592148421555634', '-601066282116.31494764685146773209952501747493922759252338367702175964980940495419787256355243029368268043408407851578444366'); + T('-23.6504678041285333307941', '9322173289440937942221726663585040711544412727245532618749747902349893601059242945545713822289661475003325571215052971921099787751298.5', '9.3221732894409379422217266635850407115444127272455326187497479023498936010592429455457138222896614750033255712150529719210997877512748495321958714666692059e+132'); + T('13954.05335659426859124804949201546230433799858282911276550573060408965278409946479104625725605515184113476163', '54942938376898283461251972594178875731793459692.69288668376868', '5.494293837689828346125197259417887573179347364674624327803727124804949201546230433799858282911276550573060408965278409946479104625725605515184113476163e+46'); + T('38338476138349711098378.3943108022013227510', '184968761212298160660521125177275265078971984111374634082506646317710944619077959845438.025316842804835238303934013763002232693292615810218', '1.84968761212298160660521125177275265078971984111374634082506646356049420757427670943816419627645006157989303934013763002232693292615810218e+86'); + T('-535317800652152416.666011782506679594256929333292104206593745014', '206357700474622846234363174929527883904699924195458.1468414719961788534413928358700225430521698882933015922823192348467761048', '2.063577004746228462343631749295273485868992720430414808296894894992591844635025779183364584248742933015922823192348467761048e+50'); + T('2833257851650449534329564356827343715273182823625486392869199675024054992102672521.4119632200042590623653138732343284', '27874145222289935847607844819151291', '2.8332578516504495343295643568273437152731828236533605380914896108716628369218238124119632200042590623653138732343284e+81'); + T('0.00000000000000000002618552546853233266995429732175655051680150038461910732084518605757265', '-139.1176780483072', '-139.11767804830719999997381447453146766733004570267824344948319849961538089267915481394242735'); + T('-5231728462708550604235813229', '-91296185221416978065707502278539916045872.674264172531093353580151543119', '-9.1296185221422209794170210829144151859101674264172531093353580151543119e+40'); + T('0.000000106213737285740538348043261083184649640660300492624731818517303939576491624096820480026083363433', '-22201770785094963881965679358073543814802495287033739904412088335159142995847539301013.995757400073858039256583163281728323829172117', '-2.2201770785094963881965679358073543814802495287033739904412088335159142995847539301013995757293860120753516044815238467240644522476339699507375268181482696060423508375903179519973916636567e+85'); + T('-67911351036760640240904249364595686607959826796143043932178763791112125413384969479427858233781973657171072664684275848926309593074.2736408437759912', '-77343795081059041036255490247057579', '-6.79113510367606402409042493645956866079598267961430439321787637911121254133849694794278582337820510009661537237253121044165566506532736408437759912e+130'); + T('-365663287930535233624529826657412624347925682105954594671581052959938622', '6954200.1293731825636', '-3.656632879305352336245298266574126243479256821059545946715810529529844218706268174364e+71'); + T('-86904523910181630995087116839233134949554297554466494568778841810992441.93482682', '8131622.282657081038690', '-8.690452391018163099508711683923313494955429755446649456877884180286081965216973896131e+70'); + T('-1625898821893719962579186943572639572628075158134', '154905121706840975019322074123957122201752614177688556257506327062930427205660262365762413912612.3699041018353', '1.549051217068409750193220741239571222017526141760626574356126071003512402620876227931343387544783699041018353e+95'); + T('7155707429106159594597753.602', '-8825753984190829367467677923527023814575827126015236448.1769432522585118457684798455299849721603516850', '-8.825753984190829367467677923519868107146720966420638694574943252258511845768479845529984972160351685e+54'); + T('14702524453269326207746839725456981418982455947784576163899708846627563947982587259694248527512065356328701857996383.8405344660118236145367576964488171', '0.000000000000279801481414509128', '1.47025244532693262077468397254569814189824559477845761638997088466275639479825872596942485275120653563287018579963838405344660121034160181722055768171e+115'); + T('-225100394111865994732205121145289659406.81347348992302868556770481345355033428867007077210213924805668907831310175342503282790874586923576524594', '16536197888541991489345013693415581039371231147607496617201758269219830229742518663209266982586909041114114', '1.653619788854199148934501369341558103937123114760749661720175826921960512934840679721453477746576375145470718652651007697131443229518654644966571132992922789786075194331092168689824657496717209125413076423475406e+106'); + T('-147016978159508669835046590756636450424769212453306265233290290589028698490660334843817522777298255009234097047902836152977047399695261588489020507996', '-3385444909290343226731953993543122186484062389074939550327086795043944171', '-1.47016978159508669835046590756636450424769212453306265233290290589028698490663720288726813120524986963227640170089320215366122339245588675284064452167e+149'); + T('-199818369850480446138557902023384546574063876954063983588740826564571725789062130098498070856521310723010198313678089493931618667410', '-82297155933721780656979816142942540102465515796252492877737040', '-1.9981836985048044613855790202338454657406387695406398358874082656457180808621806382027872783633745366555030077919388574642449640445e+131'); + T('1224211946370320242988310.539593783414725138865000500768803244328120208411774168803312677659248392891734554652728756344327699042687781768182371130', '146158963047904046913411919077533655315762900865.56618168609343', '1.4615896304790404691341314328948002563600588917610577546950815513886500050076880324432812020841177416880331267765924839289173455465272875634432769904268778176818237113e+47'); + T('0.00000000000000000008559294799519157774769508766803', '-0.551609783500231605091545012587226546044881570184707190', '-0.55160978350023160500595206459203496829718648251667719'); + T('-0.00000000000000364248749061745076846426096689761350484416821596341761277974108029120654192812240270659121286544404842359764995', '0.00000000000000012915182634025629462517104694343718453070590970719003893358456085974950708638362321445540916204635318582523370886863628537009101151163541', '-3.51333566427719447383908991995417632031346230625622757384615651943145703484173877949213580370339769523777241624113136371462990898848836459e-15'); + T('-0.0000012159213941933105485030856059051020630869271620812934680783745913', '435177388107137395111544818911495302729591053552420773207670273108531988732273993785286.67035351430698075129626580', '4.351773881071373951115448189114953027295910535524207732076702731085319887322739937852866703522983855865579857172969143940948979369130728379187065319216254087e+86'); + T('-244127359165.119239441740', '-156775332029133323786340200106246008327217172695025168660963117705504796367803174489432334620737960393.807345425858853639626141', '-1.56775332029133323786340200106246008327217172695025168660963117705504796367803174489432334864865319558926584867598853639626141e+101'); + T('-1.3', '38822623294205506.9130785519203', '38822623294205505.6130785519203'); + T('-0.000000000000000200529323920298995078835589947427959287114325689776790905715952540392301944664052487332084825933878060366283983109838980691230645368608610691238118', '8.9235511422835689686003636129516379856485298', '8.923551142283568768071039692652642906812939852572040712885674310223209094284047459607698055335947512667915174066121939633716016890161019308769354631391389308761882'); + T('-2957229910068789430753016717681830773467703355331693598573435320975440031813155744826634542489276009415208500102073', '1387116781565930070372821993801771.117', '-2.957229910068789430753016717681830773467703355331693598573435320975440031813155743439517760923345939042386506300301883e+114'); + T('1700002853156086652196589662796447571836354710587680189245495702990262116528669877736.14002354840708066274724201698188364950277252310355226408545', '0.00000000000000001040670152065846069679024081862566530541721990959996195085462554562276036783860750708035', '1.70000285315608665219658966279644757183635471058768018924549570299026211652866987773614002354840708067315394353764034434629301334172921756950266990959996195085462554562276036783860750708035e+84'); + T('275376444375379941033818605.172279107271998841', '479542807197295799803972994083414159220618900334356109151914563415527998484615170546961833405749594109884901428553537510172052.3945910', '4.79542807197295799803972994083414159220618900334356109151914563415527998484615170546961833405749594385261345803933478543990657566870107271998841e+125'); + T('201072.84', '-18291007075346088677522680107496617786379481993162852.5235791884', '-1.82910070753460886775226801074966177863794819929617796835791884e+52'); + T('4.79698005010389753070269243940420243222736581061677999244886345403385181646604209917629845674090797104700400712679893585', '9488800450.896868361907362310326', '9488800455.69384841201125984102869243940420243222736581061677999244886345403385181646604209917629845674090797104700400712679893585'); + T('1079602565226551350070617572381861809880919380670631.1941110380393840344419101968428407597315561768248982401339351384570356479736868707938705396478', '-976453379501315909711332105625801476050587869483628203480762777882592729043296523674472960763347999942046454132907563626456686905612777665215490', '-9.764533795013159097113321056258014760505878694836282034807627778825927290432965236744729607622683973768199027828369460540748250957318582845448588058889619606159655580898031571592402684438231751017598660648615429643520263131292061294603522e+143'); + T('-0.00000000644271271718069271020345607284106825430330344982447309294205280695455856', '-4416.748357493646036829616437', '-4416.74835750008874954679712971020345607284106825430330344982447309294205280695455856'); + T('3445711155679699718853304199017871443351956851656285424813892934989061182900239514362410627083188779604842513142', '-0.0000000016502205307974697933105166599651672169912797927812530032512206464857476224692850052', '3.4457111556796997188533041990178714433519568516562854248138929349890611829002395143624106270831887796048425131419999999983497794692025302066894833400348327830087202072187469967487793535142523775307149948e+111'); + T('-0.000000000000000001721243717528274638265294074343297487403293013692904865481482446596237956150738926135318544866402636735967915186120920316527028', '0.000000000000000436433664131032429923892680858273396689173735933956', '4.34712420413504155285627386783930099201770442920263095134518517553403762043849261073864681455133597363264032084813879079683472972e-16'); + T('1204447398244110346590693828919979918701287883959208424098228210909783249592980543967052564154', '-1.202', '1.204447398244110346590693828919979918701287883959208424098228210909783249592980543967052564152798e+93'); + T('-0.00000000000000000003511', '-36043841896699925', '-36043841896699925.00000000000000000003511'); + T('-3025613431812032994475405709985.7993469679039433736384733579074386422934426781633847239705968789457410845', '-1002588615531.9649364944823485872292540973546318938467102', '-3.0256134318120329954779943255177642834623862919608677274552620705361401528781633847239705968789457410845e+30'); + T('-0.00000034223095611049552775891228859686202901218738308167914660966601362250385709703952480432247', '-972934111420524554955644957601045537.987527746161528768501935193004724606168511203759505291457031083199089815', '-9.7293411142052455495564495760104553798752808839248487899746295191701320303054021594688837313617769286510343750385709703952480432247e+35'); + T('-260.8020033716610908017940221805155296272264320025030641582384857795184385939216818072400908848372378517124042819164098083213511102035', '17001.46833548258145536106307267277476995298424211430854042389081593596901026449283938670366734353012622907027133923538851172235700848608201622', '16740.66633211092036455926905049225924032575781011180547626565233015645057167057115757946357645869288837735786705731897870340100589828258201622'); + T('4753081575672367265214388.9329438810676699994575479313858093392877635113982018254535256873963800876321781902066650227606038529159973094772009', '-7324419798632309384717050.254499146068562829441638', '-2.5713382229599421195026613215552650008928299840900686141906607122364886017981745464743126036199123678218097933349772393961470840026905227991e+24'); + T('261907813073953576038800700421412.5334378919400078993318520596126658082471977395259716516663364', '-0.0000000086951723661290447823645735627390797806202562817264370379556867453', '2.619078130739535760388007004214125334378832448355332028072772480922455081179589057153699398993620443132547e+32'); + T('-21057062244163808361926294417077492805710.769766499111898332671', '-540838928.18483069140526251205066101016721497478267885509539520800221', '-2.105706224416380836192629441707803364463895459719051716084472166101016721497478267885509539520800221e+40'); + T('-158255.62893406', '-31604958588557863785879282950522895919205970023779482993880870538808826806472714286351962262535559188830287123905862547286466', '-3.160495858855786378587928295052289591920597002377948299388087053880882680647271428635196226253555918883028712390586254744472162893406e+124'); + T('-0.00872805303919760722958348618910955647808183701772080233955945973054140753844133709507372345122366634238497203383151041725907235916579449430863', '-101853444464243101382759799835868417551993254203707661817114852', '-1.0185344446424310138275979983586841755199325420370766181711485200872805303919760722958348618910955647808183701772080233955945973054140753844133709507372345122366634238497203383151041725907235916579449430863e+62'); + T('-45631392014.68038550439368025039999458620767416686726', '-16083812762280564885084.27247572', '-1.608381276232619627709895286122439368025039999458620767416686726e+22'); + T('-1439626983041987850913974184983601119473089147100564746927844789096157891.4841085238151384299', '0.000000000000000000031951455735478942002429224112959031269033600382871577234131203139', '-1.439626983041987850913974184983601119473089147100564746927844789096157891484108523815138429868048544264521057997570775887040968730966399617128422765868796861e+72'); + T('-3773188261867111267717109.48643521972869867743466506227122436366440807932802199071587048', '-10773530952405638442737529189330991723231726109739.439911386600615356849445155509285190', '-1.077353095240563844273753296251925359034299382684892634660632931403428411021778050955366440807932802199071587048e+49'); + T('5276177017268.35565399021279131413495227030075', '33380791872.126', '5309557809140.48165399021279131413495227030075'); + T('-128.032971413512325119332251541126003042400653717001958956874845360597144465880718042889612181', '3394406625963422663090321402154499517163312515368646.5438894836165998162937', '3.394406625963422663090321402154499517163312515368518510918070104274696961448458873996957599346282998041043125154639402855534119281957110387819e+51'); + T('-0.00000000000000000319057978729978801053247482850854', '-5970871936587764739377055460041397843015391161297703354420885181193398466623676.491266129426', '-5.97087193658776473937705546004139784301539116129770335442088518119339846662367649126612942600000319057978729978801053247482850854e+78'); + T('-1059900849522366748033951746353058622121879424133545530750.9681536282', '0.0000643997702370519405494192784251815344112451050443536256021694283534059757585612317456776719019257679238083053', '-1.0599008495223667480339517463530586221218794241335455307509680892284297629480594505807215748184655887548949556463743978305716465940242414387682543223280980742320761916947e+57'); + T('912258587155780697120724221920358016075695895559841256853912713603948747888.0315678411874212150256690949682329867739341', '2.256661', '9.122585871557806971207242219203580160756958955598412568539127136039487478902882288411874212150256690949682329867739341e+74'); + T('-0.0000000000010627444491654438', '413858262712309329471602287282236771662.23037198528863973813156909657677576430461650127105324676789469187837272211762396717083479560627202188', '4.1385826271230932947160228728223677166223037198528757699368240365277677576430461650127105324676789469187837272211762396717083479560627202188e+38'); + T('10889284485250482936848754210451881764666355121565381521609141220124805252627779969564893095316988849809.140913232560678725', '265462397841083205283689782772736396048751613685021523052966574884200782708580692276859125750962879382252839837', '2.65462408730367690534172719621490606500633378351376644618348096493342002833385944904639095315855974699241689646140913232560678725e+110'); + T('-3940354048038348812232523779780977.34694963308484986947203317656721412409336941345032192250794544448871277436178166955124911913191273620514614922051333', '108461342576678368692525128056407844311709242137736115728865741966953.265427848893134917162575927126158297967830952', '1.0846134257667836869252512805640784037135519409938730349634196218597591847821580828504769054275055894417387446153854967807749205455551128722563821833044875088086808726379485385077948667e+68'); + T('26059607473911021896148097458633904533525723836841783.8770871138672438759194942708994459838051487010227902', '-455763990053647411202608788023.11837212224235256867341260022328839083293408', '2.60596074739110218961476416946438508861145212280537607587149916248913072460816706761575929722146210227902e+52'); + T('7485939927194657722950.3195815053046002170111816290687951', '3027.358', '7.4859399271946577259776775815053046002170111816290687951e+21'); + T('-0.00000000000005599703632158865779999224097099964286077696620548833919840351030138988682760507', '3.5', '3.49999999999994400296367841134220000775902900035713922303379451166080159648969861011317239493'); + T('-0.0000000000000000653970485009455424706348378806364512481181501902433188498531335390353104396782305272068893617841048746913384690805807406227445668817807', '-173224891091130915632980803868987591469417896552426790538575965839932016256122849190', '-1.732248910911309156329808038689875914694178965524267905385759658399320162561228491900000000000000000653970485009455424706348378806364512481181501902433188498531335390353104396782305272068893617841048746913384690805807406227445668817807e+83'); + + + T('1.06832442449657e+9', '5.31512565221766313e+1', '1068324477.6478265221766313'); + T('-8.9672012052076147472375857e-20', '6.391778063682e+4', '63917.780636819999999999910327987947923852527624143'); + T('0e+0', '3.803634150690184e+15', '3803634150690184'); + T('0e+0', '-2.250919143163409794163082811e+1', '-22.50919143163409794163082811'); + T('2.8352844e+1', '-9.8421821e+10', '-98421820971.647156'); + T('-3.96169309707604251e+17', '-3.28373582e+3', '-396169309707607534.73582'); + T('9.436349291685128603888e-8', '-2.264108528075248e-4', '-0.00022631648931460794871396112'); + T('0e+0', '7.2004864761158514004448e+17', '720048647611585140.04448'); + T('-4.8717347274e-19', '3.61737685608086525157404817e+26', '3.6173768560808652515740481699999999999999999951282652726e+26'); + T('-2.168389290841e+6', '5.223e+2', '-2167866.990841'); + T('-4.38725314493094e+12', '1.40054785697916026635598226844e+11', '-4247198359233.023973364401773156'); + T('7.1223378147664003e-7', '3e+0', '3.00000071223378147664003'); + T('-1.0656660973e+10', '-2.97209463056314635542851541186e+2', '-10656661270.209463056314635542851541186'); + T('1.2883277094e+1', '-5.54548048203261067457185e+22', '-5.5454804820326106745705616722906e+22'); + T('-1.504e-14', '2.71e+2', '270.99999999999998496'); + T('4.7287555806698e+13', '-3.5935329574452318e+14', '-312065739937825.18'); + T('5.4e-15', '-8.35468469007e+0', '-8.3546846900699946'); + T('-1.735565e+4', '-2e+0', '-17357.65'); + T('-6.89525e-18', '6.7229852843e+10', '67229852842.99999999999999999310475'); + T('-2.63508402e+2', '-2.478965e+4', '-25053.158402'); + T('6.4909990971742952e+9', '8.633411384049431980845536589e+27', '8.6334113840494319873365356861742952e+27'); + T('2.87817691607168594282e+13', '3.695e-1', '28781769160717.2289282'); + T('1.2558509833653622e-12', '9.46079802e+0', '9.4607980200012558509833653622'); + T('3.2795331525179582319e-17', '-9.431388519232451406922e+21', '-9.431388519232451406921999999999999999967204668474820417681e+21'); + T('-2.7943785679585251935425773745e+1', '1.177045839871050879e+18', '1177045839871050851.056214320414748064574226255'); + T('-6.73086857309438227946149e+24', '1.71905552920711054538516e-15', '-6.73086857309438227946148999999999999999828094447079288945461484e+24'); + T('1.9905292e+5', '3.0839223106e+3', '202136.8423106'); + T('8.31048846338017e+14', '2.83123673288364500197794e+22', '2.83123681598852963577964e+22'); + T('8.36725e+4', '0e+0', '83672.5'); + T('-2.110811501755e+8', '1.646035246034983555808013262e+16', '16460352249268685.38258013262'); + T('8e+0', '-8.45386934e+4', '-84530.6934'); + T('-1.5014313151e+11', '-1.3943193159404694868e+9', '-151537450825.9404694868'); + T('-6.19826535590383384678e+19', '1.45912696e+4', '-61982653559038323876.5304'); + T('-2.30128559243369e-20', '-1.74358e-1', '-0.1743580000000000000230128559243369'); + T('7e+0', '2.9175e+4', '29182'); + T('0e+0', '8.074398952e-13', '8.074398952e-13'); + T('-1.10169992553226e-6', '-1.489521419796568135223154e+3', '-1489.521420898268060755414'); + T('-1.2847222948669e-8', '6e+0', '5.999999987152777051331'); + T('-2.0748595e+6', '1.7737013267831817855508474e+17', '177370132676243319.05508474'); + T('-1.3e+1', '-5.537580936457497529591215129e+27', '-5.537580936457497529591215142e+27'); + T('1.53041098285404062449166636e-20', '-1.09698519e+5', '-109698.5189999999999999999846958901714595937550833364'); + T('-9.0549157165169081301152736658e+13', '1.71861116418514e+4', '-90549157147982.969659301336658'); + T('-6.84667133296448035e+4', '-1.2552e+3', '-69721.9133296448035'); + T('-3.38133320737533874e-3', '-3.6195193454909046017940982507e+23', '-3.6195193454909046017940982845133320737533874e+23'); + T('5.28063684109958995e+11', '3e+0', '528063684112.958995'); + T('5.6486677840434364930096077898e+6', '7.7345049656351983276666e+2', '5649441.2345400000128423744498'); + T('1.071698848e+5', '8.09702667e+6', '8204196.5548'); + T('-2.56438e+1', '-4.7752581981e-15', '-25.6438000000000047752581981'); + T('1.11255906527629e+3', '0e+0', '1112.55906527629'); + T('5.29214639434e+5', '0e+0', '529214.639434'); + T('1.907665907177150817777618e-16', '3.996484323e+1', '39.9648432300000001907665907177150817777618'); + T('-2.284817838850737484e+0', '1.70660375373e-10', '-2.284817838680077108627'); + T('-2e+0', '1.2057236765392598216859e+0', '-0.7942763234607401783141'); + T('9.5417e+3', '1.19709798011e-10', '9541.700000000119709798011'); + T('-2.1e-6', '1.73249589179219564051e-11', '-0.0000020999826750410820780435949'); + T('3.33966813434843e+8', '-4.33492101363039e+8', '-99525287.928196'); + T('-7.6863012322962e+0', '5.40256e+5', '540248.3136987677038'); + T('1.893278638203e+10', '-2.79127597942747e+9', '16141510402.60253'); + T('8.708419184498120859374e+8', '-2.125e+2', '870841705.9498120859374'); + T('-3.79886239868039785166793949e+26', '1.9e-15', '-3.798862398680397851667939489999999999999981e+26'); + T('1e+0', '-3.2066099723526e-8', '0.999999967933900276474'); + T('-2.101824983e-20', '3.3833950371681e+13', '33833950371680.99999999999999999997898175017'); + T('-6.1088406176222166146368e+22', '-2.00280388042170752227327721005e+18', '-6.109040898010258785389027327721005e+22'); + T('-2.0983e+0', '-1.1343932020174e+5', '-113441.41850174'); + T('-2e+0', '-1.19204063249021e+4', '-11922.4063249021'); + T('3e+0', '-2.989e+0', '0.011'); + T('-1.5828496509e+0', '-2.60683254419027318e-15', '-1.58284965090000260683254419027318'); + T('1.078440230361e-17', '-1.7739037620412430484912549e-12', '-1.7738929776389394384912549e-12'); + T('1.711170067502562238123015e+13', '2.259516522692505152e+18', '2259533634393180177.62238123015'); + T('-1.1997027e+5', '9e+0', '-119961.27'); + T('-6.7259257776601e+7', '5.960973996e-14', '-67259257.77660099999994039026004'); + T('2.85992183e+2', '-6.064117834028922826e+4', '-60355.18615728922826'); + T('7.934778e+6', '-9.4139862782877690738251378918e+28', '-9.413986278287769073824344414e+28'); + T('-6.263942705879383579638312222e+18', '3.2403266e+2', '-6263942705879383255.605652222'); + T('-2.329980632158e+5', '-1.08e-19', '-232998.063215800000000000108'); + T('-2.60095989544433e-14', '2.56e-5', '0.0000255999999739904010455567'); + T('-1.001038173511924331447439e+24', '-3e+0', '-1.001038173511924331447442e+24'); + T('3.68958378497693152e+6', '2.3811e+1', '3689607.59597693152'); + T('-7.20153952e-2', '-1.14726471710912029765e+1', '-11.5446625662912029765'); + T('4.66584406082341e+12', '-6.1465061983e+5', '4665843446172.79017'); + T('-7.088494e+5', '9.24436069228226918e+0', '-708840.15563930771773082'); + T('3.45085557305234282971e-8', '1.40482921012791804198897e+23', '1.404829210127918041988970000000345085557305234282971e+23'); + T('-2.8679709521880775607842e+21', '-5e+0', '-2.8679709521880775607892e+21'); + T('6.49984583317234152952e+17', '-2.9114532734232268763826e-20', '649984583317234152.951999999999999999970885467265767731236174'); + T('2.6e+0', '7.759622397664468658e+14', '775962239766449.4658'); + T('1.12464142221080461622674e-17', '4.39864275886353589274384e+23', '4.398642758863535892743840000000000000000112464142221080461622674e+23'); + T('-1.0485669677437140330013740955e+14', '5.37355740951565887959624082769e+5', '-104856696237015.662348571521590375917231'); + T('8.019083936288e+12', '2.1955080947893037e-5', '8019083936288.000021955080947893037'); + T('-6.2275998681220583433895e+8', '5.5575382458820654178885565e+23', '5.5575382458820591902886883779416566105e+23'); + T('-1e+0', '-1.8359922820027707246784e+6', '-1835993.2820027707246784'); + T('6.8845860200016e+9', '3.53338102476e+5', '6884939358.104076'); + T('9.89004923e-1', '9.5157252327953911020394e-15', '0.9890049230000095157252327953911020394'); + T('1.95366847613052662290905e-1', '4.61089e+1', '46.304266847613052662290905'); + T('1.52850891752130568e+1', '3.8790643093207712266859866e-16', '15.28508917521305718790643093207712266859866'); + T('1e+0', '-3.351589594322899987e-13', '0.9999999999996648410405677100013'); + T('4e+0', '-2.25635728971207153477e-17', '3.9999999999999999774364271028792846523'); + T('-7.1521e+0', '3e+0', '-4.1521'); + T('5.73130841108862822977457839205e-6', '-2.0226350480263253215e+10', '-20226350480.26324748369158891137177022542160795'); + T('2.38700916108487e+10', '4.6410211658583484277994722e+24', '4.6410211658583722978910830487e+24'); + T('-1.10178448051944844475771905272e-15', '-6.39395321758408376910624e+18', '-6393953217584083769.10624000000000110178448051944844475771905272'); + T('-3.013637e-14', '1.2228170261603e+3', '1222.81702616029996986363'); + T('5.701362229840513e+1', '-4.1266579254956732345e+1', '15.747043043448397655'); + T('-1.26549524e+4', '7.114747175586575423929900617e+4', '58492.51935586575423929900617'); + T('2e+0', '-6.19566611167700965419057181e-4', '1.999380433388832299034580942819'); + T('-1.59294729923996920972246e-17', '2.05841676458664250980624366171e+12', '2058416764586.6425098062436616940705270076003079027754'); + T('-3.611261022614801981543826e+5', '-5.4e+0', '-361131.5022614801981543826'); + T('-1.382436556533e+2', '-2.0005230510874070622654e+4', '-20143.474166527370622654'); + T('2.725e+1', '6.5907103031686003312192e+10', '65907103058.936003312192'); + T('1.7102043e+1', '1.630185891228e+5', '163035.6911658'); + T('1.06251e+1', '8.86362042342990151231977e+15', '8863620423429912.13741977'); + T('-2.0075903158e+3', '4.632965490155132e+15', '4632965490153124.4096842'); + T('1.57481186e+8', '1.9928e+2', '157481385.28'); + T('-4.4540881340084554082e+12', '-8.567827997230912244e-19', '-4454088134008.4554082000000000008567827997230912244'); + T('3.0149809456450947682607926e+26', '1.52e+4', '3.0149809456450947682609446e+26'); + T('3.55773e+1', '-1.296139601615599519887e-2', '35.56433860398384400480113'); + T('-2.88697527177e-7', '8.20473793e+9', '8204737929.999999711302472823'); + T('1.22209473e+8', '-2.071859795614941e+13', '-20718475746676.41'); + T('-4.29227481925874031992865289e+13', '-3.3e-4', '-42922748192587.4035292865289'); + T('-1.12e+0', '-3.656079060826e-5', '-1.12003656079060826'); + T('-5.6653957709162986e+0', '1.8713973e-1', '-5.4782560409162986'); + T('-7.598187175103e+12', '2.95663854017257699181848633626e+17', '295656255830082596.181848633626'); + T('-7.904686344760362698443617622e+19', '1.980883539639923746866474445e-3', '-79046863447603626984.434195336460360076253133525555'); + T('-1.887416922022595192028e+16', '-4.59e-20', '-18874169220225951.9202800000000000000459'); + T('-8.148255639724e+10', '2.891684342e+8', '-81193387963.04'); + T('6.23847007946890103e-19', '-8.4455421112902026239156794885e+9', '-8445542111.290202623915679487876152992053109897'); + T('-1.625684355377512651803808e+7', '-1.348895528074479183e+18', '-1348895528090736026.55377512651803808'); + T('-6.535179015515075206e+8', '-8.95738948608652714735e-10', '-653517901.551507521495738948608652714735'); + T('-8.153e-7', '1.65820611454448412e-13', '-8.15299834179388545551588e-7'); + T('5.051843689061792432745588e+1', '2.8243308408e+8', '282433134.59843689061792432745588'); + T('-1.8e+0', '9.44922368261817e+2', '943.122368261817'); + T('-4.6e+0', '1.636104301545649956e-6', '-4.599998363895698454350044'); + T('3.9366814707165145667343522e-12', '3.0389e+4', '30389.0000000000039366814707165145667343522'); + T('7.436644701432e+7', '2.6484854e+0', '74366449.6628054'); + T('6.072728e-6', '1.091e-13', '0.0000060727281091'); + T('-9.57628017436746e+6', '-5.39066706500255775e+13', '-53906680226305.75186746'); + T('4.09624190548576e-18', '-9.6749e+2', '-967.48999999999999999590375809451424'); + T('-8.6632e+3', '2.120751089392768905787515e+24', '2.1207510893927689057788518e+24'); + T('1.857536e+2', '6.75400474e+1', '253.2936474'); + T('-5.6e-18', '-2.0950506003186642599853e+3', '-2095.0506003186642599909'); + T('3.33788850991236125e+12', '-1.58862526437795e+14', '-155524637927882.63875'); + T('3.1483e+1', '2.28650378766881198016e+12', '2286503787700.29498016'); + T('1.234624954152162611e-19', '-7.4619712e+2', '-746.1971199999999999998765375045847837389'); + T('1.080098052386732090801e+17', '3.09363317193526857948304e-13', '108009805238673209.080100000000309363317193526857948304'); + T('-2.51e+0', '1.409033443601486029357e-19', '-2.5099999999999999998590966556398513970643'); + T('5.427853163e+2', '-1.29492978844337839542353e+23', '-1.294929788443378395418102146837e+23'); + T('-2.02e+2', '5.4765009943616783637932886e+25', '5.4765009943616783637932684e+25'); + T('6.0089899644e+8', '8.77139309e+7', '688612927.34'); + T('-2.52975e+2', '-8.063181606e-8', '-252.97500008063181606'); + T('4.5094208494899584309066e+0', '-1.103e+0', '3.4064208494899584309066'); + T('3.0782e+0', '8.6800615973178390115257e-7', '3.07820086800615973178390115257'); + T('1.242839052621980122206838e+18', '3.9218504671511828734123451441e+14', '1243231237668695240.49417923451441'); + T('3e+0', '9.0309539359826e+1', '93.309539359826'); + T('-7.79925520165e-12', '2.4e-16', '-7.79901520165e-12'); + T('-7.82454855580508259123083736e+4', '-1.4505891967290641474446448e+14', '-145058919751151.9003025153059123083736'); + T('-3.23795969916119488744e-19', '6.13973898934392e+6', '6139738.989343919999999999676204030083880511256'); + T('-3.2125638937067043056e+16', '6.26147244159010381015573613741e-5', '-32125638937067043.0559373852755840989618984426386259'); + T('-5.6388596462772628354639232512e+27', '-8.7402462294e+3', '-5.6388596462772628354639319914462294e+27'); + T('-5.18916166140020398584e+3', '-2.286072187548843381829615e+12', '-2286072192738.00504322981898584'); + T('4.07978e+3', '6.009589348894649131e+1', '4139.87589348894649131'); + T('1.24981916598699796711558874e+20', '-6.097e+0', '124981916598699796705.461874'); + T('3.40205966339e+9', '-5e+0', '3402059658.39'); + T('-2.011230243535947305604087574e-1', '8.09834868377e-6', '-0.2011149260049109605604087574'); + T('1.823304324438653941487094855e+6', '-4.755e-7', '1823304.324438178441487094855'); + T('1.984404125928134e-20', '-6.0867637168658727533522913e+25', '-6.086763716865872753352291299999999999999999998015595874071866e+25'); + T('2.15e-7', '1.40111e+5', '140111.000000215'); + T('1.8919e-20', '7.1771e+4', '71771.000000000000000000018919'); + T('9.95146e+3', '-3.9373688835252249931e+10', '-39373678883.792249931'); + T('-1.014255162652494738303244155e+7', '-2.67797715547e-5', '-10142551.62655172715458714155'); + T('-4.428e+0', '1.3437431538744606393264041272e+3', '1339.3151538744606393264041272'); + T('-2e+0', '-2.229409910360055e+4', '-22296.09910360055'); + T('4.0148389757764685838e+4', '3.07591618307944204e+15', '3075916183119590.429757764685838'); + T('1.5e+0', '3.204179e+2', '321.9179'); + T('1.7628168176292522230070264e-9', '-7.857162462055267e+5', '-785716.2462055249371831823707477769929736'); + T('-4.7068322333826667e+2', '2.6204796284915915378e+6', '2620008.94526825327113'); + T('-5.7849662e+6', '-1.67379927e+8', '-173164893.2'); + T('6.36341614538e+4', '-5.684708914970007106903e+11', '-568470827862.8392568903'); + T('-9.8170683973203026118362784916e-18', '-4.76099856150535148899823166528e+24', '-4.7609985615053514889982316652800000000000098170683973203026118362784916e+24'); + T('-1.450475441789747351396091722e-14', '9.5e-16', '-1.355475441789747351396091722e-14'); + T('-1.2401309543790470973e+12', '-3.283421840845701731666242363e-14', '-1240130954379.04709730000003283421840845701731666242363'); + T('3.8284741521518e+9', '1.040053292332476e+7', '3838874685.07512476'); + T('-3.629548186614033358094334214e+14', '3.88460431849184e-13', '-362954818661403.335809433421011539568150816'); + T('4.492353541896215e+4', '4.2278871477030354988345988e+12', '4227887192626.5709177967488'); + T('1.39125503887158081793020576e+12', '7.107400120480733e+4', '1391255109945.58202273753576'); + T('4.29162281457350835270745e-1', '-8.29e+0', '-7.860837718542649164729255'); + T('9.8480007978020274403298876e-14', '-9e+0', '-8.999999999999901519992021979725596701124'); + T('-6.065629590943247e+11', '2.1353939336e-5', '-606562959094.324678646060664'); + T('-1.90520093211683e-14', '2.6011329423597853e+3', '2601.1329423597852809479906788317'); + T('-5.258159e-8', '1.79707627e+3', '1797.07626994741841'); + T('4.39e-13', '3.909008772398642e-9', '3.909447772398642e-9'); + T('-5.5413711e+1', '1.72056051290943960725138e+22', '1.7205605129094396072458386289e+22'); + T('-2.653033e+6', '-2.3e+2', '-2653263'); + T('2.1e+0', '-1.03e-12', '2.09999999999897'); + T('4.5e+0', '5.57773e+5', '557777.5'); + T('-1.31252712310416354e-17', '-5.34133135e+6', '-5341331.3500000000000000131252712310416354'); + T('3.5452349200934969e+11', '8.46089262134099e+10', '439132418222.75959'); + T('-2.39151247297029e+0', '-3.4e+1', '-36.39151247297029'); + T('1.04933449400897990977690656e+16', '-2.0991e+0', '10493344940089796.9986690656'); + T('-2.3192197014588986e+10', '1.3582e-16', '-23192197014.58898599999999986418'); + T('7.142194053338425321066077e+5', '1.90025134243757962899e+1', '714238.4078472669079028976'); + T('-1.136854e-7', '9.38832e+5', '938831.9999998863146'); + T('3.32614494028772216103868273496e+27', '2.7733154489672324e+9', '3.3261449402877221638119981839272324e+27'); + T('8.53310299029659557937678946674e+29', '-2.171026229e-18', '8.53310299029659557937678946673999999999999999997828973771e+29'); + T('-8.7775827884702947387676403e+9', '-2.24368450892611e+10', '-31214427877.7313947387676403'); + T('-5.2404730569306871e-14', '-1.95066228095626569312714706e+26', '-1.95066228095626569312714706000000000000052404730569306871e+26'); + T('-1.3962539732462279142518e+9', '5.818337806672885323307992101e+8', '-814420192.5789393819210007899'); + T('-3e+0', '-3.758144520778459805048058852e+16', '-37581445207784601.05048058852'); + T('4.533812642503788216091413e-2', '0e+0', '0.04533812642503788216091413'); + T('2.2345667600317984449936934959e+28', '-2.312549676277765984005310857e+23', '2.23454363453503566733385344279143e+28'); + T('5.890444410932411361081252e+15', '3.886333434874616465e-9', '5890444410932411.361081255886333434874616465'); + T('7.0771471576147436232551549e+25', '3.31023407231546910086281e+14', '7.0771471576478459639783095910086281e+25'); + T('-4.579025795557e+9', '-9.412662879882994536113862e+19', '-94126628803408971156.69562'); + T('6.68976500113452229442881759e+16', '9.35885176e+2', '66897650011346158.8294641759'); + T('1.8481649705340526197387e+16', '-2.6037916468e+0', '18481649705340523.5935953532'); + T('4.57418412e+2', '1.2332172148052647e+6', '1233674.6332172647'); + T('1.11e+1', '-2.6e+0', '8.5'); + T('-2.1661e+3', '-3.7327283613e-10', '-2166.10000000037327283613'); + T('1.756224491703e-3', '4.5319398279654e+6', '4531939.829721624491703'); + T('-1.34077579411e+7', '8.24170643747189e+13', '82417050966960.9589'); + T('-2.0495814528228973658098e+10', '-5.20314966589367e-15', '-20495814528.22897365809800520314966589367'); + T('8.541190743467170007744156375e-13', '7.0401506297973216018710560963e+28', '7.04015062979732160187105609630000000000008541190743467170007744156375e+28'); + T('-9.61633628e+7', '-3.613868352359377835e+11', '-361482998598.7377835'); + T('-2.767001037506171092080557112e+14', '9.244954929589141444423604e-17', '-276700103750617.10920805571119990755045070410858555576396'); + T('1.89901678657288039300855105894e-13', '-1.58598406112309192413155018311e+25', '-1.5859840611230919241315501831099999999810098321342711960699144894106e+25'); + T('1.268441520208713701742930596e+15', '4.970632009043856853119754828e+18', '4971900450564065566.821497758596'); + T('-1.9274080087e-7', '-1.226582591e+3', '-1226.58259119274080087'); + T('7.6027378901641e+4', '5.6020622089981e+2', '76587.58512254081'); + T('-8.955651e+4', '-2.311647517004775402486236216e+27', '-2.31164751700477540248632577251e+27'); + T('-8.640119777677045398616e+19', '7.1041062169678654e-10', '-86401197776770453986.15999999928958937830321346'); + T('-4.9472e+1', '-9.5254025997e+4', '-95303.497997'); + T('4.9115e+4', '1.1091035133e+10', '11091084248'); + T('2.00178779e-3', '2.3e+0', '2.30200178779'); + T('-1.22635159837898393566542487e+7', '7.6174490056742349880855e-11', '-12263515.983789839280479758643257650119145'); + T('5e+0', '4.83e+0', '9.83'); + T('-5.18305e+1', '2.06741e+0', '-49.76309'); + T('4.732184851555942426024763e-20', '1.536847890671368e+15', '1536847890671368.00000000000000000004732184851555942426024763'); + T('1.88358776282573960911e+15', '-5.5178544e-9', '1883587762825739.6091099944821456'); + T('-7.250860069e+9', '-2.0722613389416e-6', '-7250860069.0000020722613389416'); + T('-9.37492384e-16', '-3.59438537290428941803686306e+26', '-3.59438537290428941803686306000000000000000937492384e+26'); + T('2.29612282112427409597796e+6', '-2.44261697753e+0', '2296120.37850729656597796'); + T('-4.410025312651288094581277836e+21', '-1.448656017e-16', '-4.4100253126512880945812778360000000001448656017e+21'); + T('-1.7181773728e+9', '-1.896321199e+7', '-1737140584.79'); + T('4.3098015497657959948133e+20', '1.274986092270260964754410066e+11', '430980155104078208708.3560964754410066'); + T('-2.1959570176e+10', '5.725576310292088e-18', '-21959570175.999999999999999994274423689707912'); + T('-1.44792248534417343390548623e+21', '1e+0', '-1.44792248534417343390448623e+21'); + T('1.040704879928354425713e+2', '4.86388848511334545e+2', '590.4593365041699875713'); + T('4.241468133452732043755761186e+16', '-2.73798399968495e+11', '42414407536127351.94255761186'); + T('-2e+0', '6.24224662705e+11', '624224662703'); + T('5.6641294006148610219533163e+0', '-2.12295174799e+11', '-212295174793.3358705993851389780466837'); + T('2.865e+0', '-4.095879034404159898232e-16', '2.8649999999999995904120965595840101768'); + T('1.897905e+1', '6.596474438004821e+15', '6596474438004839.97905'); + T('2.8032755954946389580459726817e+0', '-3.504845500434e+4', '-35045.6517287445053610419540273183'); + T('3.2100930836673e+7', '1.7556652634247164889788e+3', '32102686.5019364247164889788'); + T('3.94508726739917261971194668167e+20', '3.2678976e-12', '394508726739917261971.1946681670032678976'); + T('1.013478996e+6', '-1.35851240932e+11', '-135850227453.004'); + T('5.76471020553517e+10', '9.361663010412251704182487e+1', '57647102148.96833010412251704182487'); + T('8.039198206551479e-19', '-4.7304610153534734555e+11', '-473046101535.3473455499999999991960801793448521'); + T('1.08616611370746e+10', '1.63357530853972701257283441042e+29', '1.633575308539727012681451021790746e+29'); + T('8.985857919040188655e+18', '6.9122771945490484660606087488e+22', '6.9131757803409524849261087488e+22'); + T('8.55516146e+6', '-5.20868e-6', '8555161.45999479132'); + T('1.35007756418551e+5', '2.1871207843576e-10', '135007.75641855121871207843576'); + T('1.997393922577102e+15', '2.04297682524767e+14', '2201691605101869'); + T('-2.8299e+0', '-2.0533e+1', '-23.3629'); + T('9.801120776319968546478e-1', '-5.506831779512856926053754757e-6', '0.980106570800217341790873946245243'); + T('4.7906337242e+7', '-3.024012845303e+0', '47906334.217987154697'); + T('-1.27217277089e+6', '-2.5964435963219617e+8', '-260916532.40308617'); + T('-9.42191e-10', '2.844075292805153735859165701e+3', '2844.075292804211544859165701'); + T('-2.6967949047958223297482e+19', '9.67282581408114114e+13', '-26967852319700082486.0706'); + T('-1.1745879912966672172374876e+14', '-5.942752909258700258e-14', '-117458799129666.72172374876005942752909258700258'); + T('1.17492331131707e+14', '-1.85e+2', '117492331131522'); + T('3.8237936883565271658e-7', '-7.468507e+1', '-74.68506961762063116434728342'); + T('2.080597621127443899864e+7', '2.0363911e+2', '20806179.85038443899864'); + T('-1.317672639296246e+11', '-3.47791814748480321636668116e+26', '-3.477918147484804534039320456246e+26'); + T('4.02924099e+1', '5.28393737349807e+9', '5283937413.7904799'); + T('3.62917205826288627489788295e+18', '2.49970474597037787872e+12', '3629174557967632245.27576167'); + T('3.08272649390034127669268182e-2', '3e+0', '3.0308272649390034127669268182'); + T('5.85719579984856882552621456e+26', '-2e+0', '5.85719579984856882552621454e+26'); + T('-2.50225156633622568317671509e-9', '-2.2582829e+2', '-225.82829000250225156633622568317671509'); + T('-5.15193401834588205516587050994e-14', '1.4e+0', '1.3999999999999484806598165411794483412949006'); + T('1e+0', '8.8924e+0', '9.8924'); + T('-3.3e+0', '-7.8502049490351637397e-8', '-3.300000078502049490351637397'); + T('-7.33960473805391e+11', '7.439838102434947302e+0', '-733960473797.951161897565052698'); + T('-3.16e-5', '1.726737549992789265e+13', '17267375499927.8926184'); + T('4.270228010774903285941e+15', '3.46096007736828546415995945e+26', '3.46096007741098774426770848285941e+26'); + T('-2.10368325850606703058e+20', '-2.08133369e+0', '-210368325850606703060.08133369'); + T('1.7e+1', '-1.0122120905476e+13', '-10122120905459'); + T('-7.07684131786e+1', '2.63774583435255785325881638e+25', '2.63774583435255785325880930315868214e+25'); + T('9.1072366943654984307009963e+25', '1.439998771392437399072989e+2', '9.10723669436549843070101069998771392437399072989e+25'); + T('-2.291554e-12', '2.61075274155651389913495756e-20', '-2.2915539738924725844348610086504244e-12'); + T('1.7602843372492822519e+15', '-8.1404508102e+7', '1760284255844774.1499'); + T('-4e+0', '-1.944878631711881888860126e+0', '-5.944878631711881888860126'); + T('-2.187281084011878193e+17', '-7.474048902432652904641e-13', '-218728108401187819.3000000000007474048902432652904641'); + T('3.2e-19', '3.681598265268061504382107e+7', '36815982.65268061504382107032'); + T('-7.99963142249e+5', '-1.10759709047786981579e+17', '-110759709048586944.721249'); + T('8.6126004e+7', '-2.260854106319155e+12', '-2260767980315.155'); + T('-1.545857065710954713345527676e+7', '1.693211571e+2', '-15458401.33595244713345527676'); + T('1.7634085229179948402e-1', '-7.72257679334452942471286361e+10', '-77225767933.26895339483683661598'); + T('-4.09737779175073422506155472749e+17', '-9.371187455652828779751905571e-19', '-409737779175073422.5061554727490000009371187455652828779751905571'); + T('2.94436782641191186e+1', '-1.757436041e+0', '27.6862422231191186'); + T('1e+0', '6.393155e+4', '63932.55'); + T('6.94692049e-4', '1.1351884189267733e+13', '11351884189267.733694692049'); + T('-6.30461698646036622857426e-5', '-4.09097e+1', '-40.9097630461698646036622857426'); + T('-2.0402e-20', '1.67107872884e+7', '16710787.288399999999999999979598'); + T('5.532395277106440788e+9', '-7.24995e+5', '5531670282.106440788'); + T('6.000727e-18', '6.917267560158418e+11', '691726756015.841800000000000006000727'); + T('1.166055456823e+12', '-5.5020976743949e+12', '-4336042217571.9'); + T('-3.91173319151e-2', '4.41620271855e-17', '-0.0391173319150999558379728145'); + T('4.91856485935137e-1', '-1.08457423464500916876e+19', '-10845742346450091687.108143514064863'); + T('2.09824848244684254866384581e+26', '3.638246794566e+10', '2.0982484824468429124885252666e+26'); + T('-3.2e-8', '-7.140239683783e-17', '-3.200000007140239683783e-8'); + T('1.2946e+4', '6.4275853487855044216637711965e+27', '6.4275853487855044216637841425e+27'); + T('-2.31e+1', '-5.1e+0', '-28.2'); + T('-5.98100271250578949179e+8', '2.012527542898146781797867e+2', '-598100069.9978246593643218202133'); + T('-2.2616174364e+6', '1.808741032320373831865e+21', '1.8087410323203715702475636e+21'); + T('-1.59844056581e+11', '-3.677066761421338e-2', '-159844056581.03677066761421338'); + T('-3.070121910623175279e-4', '-8.191845955248936529857e+0', '-8.1921529674399988473849'); + T('3e+0', '-3.131384399e+0', '-0.131384399'); + T('5.493193351746495014e+9', '1.0058110782705526011700063e+10', '15551304134.452021025700063'); + T('3.7662480770326031342303292983e+26', '-1.532179017e+5', '3.766248077032603134228797119283e+26'); + T('2.2078732616074486433852e+19', '-8.0117272927216e+5', '22078732616073685261.12272784'); + T('-1.101469921604903937413697e+24', '-5.6493478665614358249763e+22', '-1.15796340027051829566346e+24'); + T('4.002068393e+2', '3.88674498621732e-19', '400.206839300000000000388674498621732'); + T('1.18924625762106479751351e+1', '2.12367151349326e-7', '11.8924627885777993244611'); + T('6.18899636825e+1', '-1.34517400616695669045e-3', '61.88861850849383304330955'); + T('-1.727166e+4', '-1.232546640708229439e-7', '-17271.6600001232546640708229439'); + T('-7.39e-16', '2.158174383154757e-7', '2.158174375764757e-7'); + T('5.95645368014790753037091178681e-18', '8.9194691702199e+13', '89194691702199.00000000000000000595645368014790753037091178681'); + T('2.4544990425537516895759e+6', '1.2777961e+5', '2582278.6525537516895759'); + T('-5.185388510885e+1', '-7.693787224e-8', '-51.85388518578787224'); + T('-2.7398396455549889037919557e+23', '-4.220983829023255e+0', '-2.73983964555498890379199790983829023255e+23'); + T('1.02153991719e+1', '9.3244708599174510285e-9', '10.2153991812244708599174510285'); + T('4.60472064169766494e+16', '-1.0328246092260039e+0', '46047206416976648.3671753907739961'); + T('-2.38454077437299e+14', '-4e+0', '-238454077437303'); + T('8.370371680400711505807e+17', '7.56e-7', '837037168040071150.580700756'); + T('2.10262406584177455194e+6', '-7.99673704574e+1', '2102544.09847131715194'); + T('1.35918051082554629399892854005e+7', '-9.05428949025616791486522594e+1', '13591714.5653605603783101367482406'); + T('4.19333658548894567e+0', '1e+0', '5.19333658548894567'); + T('-1.12684363429737223640594383707e+22', '8.25876483519322470373806e+21', '-3.0096715077804976603213783707e+21'); + T('0e+0', '6.04e+2', '604'); + T('1.8364537e+2', '1.0468696299566552286716e+22', '1.046869629956655228689964537e+22'); + T('-5.073984e+6', '6.9887615721504817196587e+8', '693802173.21504817196587'); + T('2.5457e+2', '1.341466050473471653464e+9', '1341466305.043471653464'); + T('5.448451501591168054051559931e+5', '6.906967417242e-6', '544845.1501660237728223979931'); + T('-1.194671553787672e+1', '-1.91896603190801227e+3', '-1930.91274744588899'); + T('1.279395975361696355442e+8', '-6.96569613221558540371e+7', '58282636.2140137815071'); + T('-5.97073932850348e-7', '-2.2291090891563813e+4', '-22291.090892160886932850348'); + T('1.464561173e+9', '1e+0', '1464561174'); + T('-9.4963284032193e+3', '6.16644216458418847e+10', '61664412149.5134814807'); + T('-5.4865356898608376e+9', '5e+0', '-5486535684.8608376'); + T('1.807335611418e+5', '0e+0', '180733.5611418'); + T('4.79648059622793e+11', '-5.79415144368e+3', '479648053828.64155632'); + T('-1.19816450616e+11', '-5.716149095e-7', '-119816450616.0000005716149095'); + T('-2.3561102073882235262820415e-17', '-1.608713271019924e-3', '-0.001608713271019947561102073882235262820415'); + T('4.34065400608679942e+8', '-6.6465252539670797297214992789e+4', '433998935.356140271202702785007211'); + T('3.0930179144e+10', '0e+0', '30930179144'); + T('5.366042e+2', '2.270835328764610647e+18', '2270835328764611183.6042'); + T('7.48097472370778786852679e-7', '9.4767671341211803315002015e+26', '9.47676713412118033150020150000000748097472370778786852679e+26'); + T('-8.23842e+4', '1.229458568566523723615668197597e+14', '122945856774268.1723615668197597'); + T('-8.7862458629211487549e+19', '-1.1019849690697e+0', '-87862458629211487550.1019849690697'); + T('0e+0', '1.089862696164931e+15', '1089862696164931'); + T('-1.4492938845e+8', '-1.42921263881025236036504955e+26', '-1.4292126388102523618143434345e+26'); + T('-1.6381521194899074907e+6', '5.6572651171333e-11', '-1638152.119489907434127348828667'); + T('-4.396054117495148392356145377e+21', '-1.829550398438512721241206e+17', '-4.3962370725349922436282694976e+21'); + T('3.742420087218951e+10', '-1.730936977e+2', '37424200699.0958123'); + T('-1.1285098282e+2', '3.0174920978669756069e-1', '-112.54923361021330243931'); + T('3.328692e-19', '-3.74463079e+10', '-37446307899.9999999999999999996671308'); + T('1.28232894392211733573999076556e+29', '1.149729331569322243219279e+20', '1.282328945071846667309313008779279e+29'); + T('1.07034e+2', '1.4997e+1', '122.031'); + T('-2.76584099e-19', '-3.3993789e-8', '-3.3993789000276584099e-8'); + T('-4.60271074562e+11', '-3.45574059291359666323689575e+15', '-3456200863988158.66323689575'); + T('1.73104292971e+10', '7.220485847821601e+10', '89515287775.31601'); + T('2.26079231553066e+14', '-3.429835324275129e+15', '-3203756092722063'); + T('4.909949450328607351257e+9', '1.693032494154686e+15', '1693037404104136.328607351257'); + T('2.804004587e+1', '3.054e-4', '28.04035127'); + T('-1.21373e+4', '-1.7051357521743463e+13', '-17051357533880.763'); + T('-2.010863577144665818021832751e+17', '-1.1990113e+7', '-201086357726456694.8021832751'); + T('-7.1235473e+6', '-3.145986004148e+9', '-3153109551.448'); + T('1.3665398036864664266039e+22', '4.089516e-2', '1.366539803686466426603904089516e+22'); + T('1.727799e+0', '-4.8149925e+4', '-48148.197201'); + T('6.6630744630002551658489e+11', '-5.8410410897522728193e+12', '-5174733643452.24730271511'); + T('2.0767364695045007623516126e+11', '6.25410192352696e+8', '208299057142.80277223516126'); + T('7.75e+0', '-1.569335603101854838490073823e-12', '7.749999999998430664396898145161509926177'); + T('5e+0', '-7.431618517651602908e+18', '-7431618517651602903'); + T('-1.5453e+3', '-3.9000399435568029e-6', '-1545.3000039000399435568029'); + T('-7.0748737648616353693e+0', '2.591961010757e+5', '259189.0262019351383646307'); + T('1.651e+4', '-2.8703125534636e+9', '-2870296043.4636'); + T('3.087702748515e-12', '8.3067008464351e+3', '8306.700846435103087702748515'); + T('7.7880835734433871606349974196e+9', '2.82154e+4', '7788111788.8433871606349974196'); + T('-1.9482797447534242447e+5', '4.172181002194178915e-13', '-194827.9744753424240527818997805821085'); + T('1.23e+0', '1.22e+0', '2.45'); + T('1.692421753e-9', '8.9292167159609532663074588e+4', '89292.167159611225084827588'); + T('-4.003138001375e+6', '-3.6225528729195e+13', '-36225532732333.001375'); + T('-1.043499514e+8', '1.85379394110541607112156303315e+27', '1.85379394110541607101721308175e+27'); + T('1.2e+0', '-2.2e+0', '-1'); + T('-4.59964147358e+0', '-1.245052236142679713264875449e+25', '-1.245052236142679713264875908964147358e+25'); + T('1.435745816367079985483e-17', '-2.2506199410005066316855e-13', '-2.2504763664188699236869517e-13'); + T('3.9212949955518e+12', '-6.253e+2', '3921294994926.5'); + T('3.272898632836139464918e+14', '-1.125321770879687081334515545e+6', '327289862158292.175612112918665484455'); + T('-7.0051742181e+0', '-3.558851591145309897e+6', '-3558858.596319527997'); + T('-1.17791e-5', '-2.8283187205369969776764952883e+28', '-2.82831872053699697767649528830000117791e+28'); + T('8.6191671e-12', '-8.66936689467088e+10', '-86693668946.7087999999913808329'); + T('3.67300220532035e-3', '-2.20592e+2', '-220.58832699779467965'); + T('5.307907765699952590606427e+24', '-8.116566770561e+12', '5.307907765691836023835866e+24'); + T('1.3693156074977e+1', '-1.86125e+3', '-1847.556843925023'); + T('-1.305776227522e+0', '3.1e+0', '1.794223772478'); + T('-5.8e+0', '-4.2864143878e-14', '-5.800000000000042864143878'); + T('7.3171907466448357479336251741e-7', '-3.6643373621770251e-1', '-0.36643300449862784551642520663748259'); + T('9.5507944480252871732e+8', '-1.473719301517056667482e+7', '940342251.78735815064518'); + T('-1.594802356375808285e+18', '2.2091549349442255368551009e+23', '2.2091389869206617787722509e+23'); + T('-1.38180012856133843768288e+23', '-1.4881225686551882e+12', '-1.381800128576219663369431882e+23'); + T('3.9944940533448e-11', '-1.42182826302e+9', '-1421828263.019999999960055059466552'); + T('2.1246e+0', '-1.190013e-18', '2.124599999999999998809987'); + T('-1.6725888942e+5', '5.22591577449581327e+5', '355332.688029581327'); + T('6.2523356350387526825216271e-1', '5.8015517e+6', '5801552.32523356350387526825216271'); + T('-3.5042195675619e+11', '-1.61923859937529243154197361e+19', '-16192386344174881071.6097361'); + T('5.326226512685426512311428421e+15', '-2.14826116e+2', '5326226512685211.686195428421'); + T('-2.033908204665857e-20', '5.0334987e-20', '2.999590495334143e-20'); + T('4.92122690634e+11', '-1e+0', '492122690633'); + T('-1.850639822486488995e+3', '2.2247255806523203254e+6', '2222874.940829833836405'); + T('-1.4652329507e-8', '-2.2e+0', '-2.200000014652329507'); + T('1.031983768655972e+3', '3.196384720063040238523e+7', '31964879.18439905835723'); + T('-3.95755151236389821e+0', '8.219752462201035868e+15', '8219752462201031.91044848763610179'); + T('4.960062e-7', '-4.48e-18', '4.9600619999552e-7'); + T('8.424039578e+8', '-1.3745220992603451351702e+8', '704951747.87396548648298'); + T('5.306671354863915213e-8', '9.108152565584071569e-2', '0.09108157872255426432915213'); + T('-1.469495615534e+1', '4.847e-3', '-14.69010915534'); + T('3.5853e+3', '1.7093298564986700250582085e+15', '1709329856502255.3250582085'); + T('5.482e+2', '-4.105575442089757e+15', '-4105575442089208.8'); + T('1.99e+2', '3.8145468189e-3', '199.0038145468189'); + T('-3.49258722592820006912e-2', '-1.949843151114522843231e+2', '-195.0192409837115663237912'); + T('-1.1936922e+2', '1.94667093809609e+10', '19466709261.59168'); + T('3.0612779617e+9', '5.5021749870968147533e-4', '3061277961.70055021749870968147533'); + T('1.6469577765954843637144527776e+25', '-3.53617804087992991e+1', '1.64695777659548436371444924142195912007009e+25'); + T('5.762086232617e+3', '-1e+0', '5761.086232617'); + T('-2.085492256313382505e+20', '2.73885062e-11', '-208549225631338250499.9999999999726114938'); + T('-1.0504694638041059389625e+14', '1.2117447209021816889456469472e+27', '1.21174472090207664199926653660610375e+27'); + T('3.266124155553289418147501e+25', '-1.196361921508326229864197918e+8', '3.26612415555328940618388178491673770135802082e+25'); + T('-3.681434944093545137202e-11', '-9.8172931644e-9', '-9.85410751384093545137202e-9'); + T('-5.5110319265e+9', '2.511e+2', '-5511031675.4'); + T('2.24384830388360906481037e+4', '-6.688e+4', '-44441.5169611639093518963'); + T('1.30685382594601602875155e-13', '-2.9e-7', '-2.89999869314617405398397124845e-7'); + T('1.256635121672088721271099e+24', '9.2e+0', '1.2566351216720887212711082e+24'); + T('4.25e+1', '2.097673647e+5', '209809.8647'); + T('-1.0834844778746335e+4', '5.724238385893731161972e-7', '-10834.8447781739111614106268838028'); + T('-1.3622153693079e+13', '-1.82203795563644950428091436626e+29', '-1.82203795563644964050245129705e+29'); + T('6.124567392189732e-10', '2.086068109112e-5', '0.0000208612935478592189732'); + T('-1.01e-15', '-1.6428548827105e+6', '-1642854.88271050000000101'); + T('-4.277650516254732251e-20', '5.58481757486e+1', '55.84817574859999999995722349483745267749'); + T('-3.9947160422255e+13', '1.230577e+0', '-39947160422253.769423'); + T('-6.97056460621311741e+17', '-1.19084697861e-14', '-697056460621311741.0000000000000119084697861'); + T('1.99e+0', '2.432670941489e+2', '245.2570941489'); + T('2.8e+0', '-6e-13', '2.7999999999994'); + T('1.48e+1', '-4.493331507903141119919e+20', '-449333150790314111977.1'); + T('1.5212827e+1', '2.37852664031269644800630723e+6', '2378541.85313969644800630723'); + T('-8.68972e+3', '-3.409629e+3', '-12099.349'); + T('8.7e+0', '1.053877931698399708032024498e+3', '1062.577931698399708032024498'); + T('-5.569516602e+2', '-7.674336919779554845819e+9', '-7674337476.731215045819'); + T('-2.33172e+4', '-1.1357215e+6', '-1159038.7'); + T('-7.728437483e+4', '-1.954891686102566032254774334e-1', '-77284.5703191686102566032254774334'); + T('-1.794108984118418586e+19', '4.29563121585293316012291166e+26', '4.29563103644203474828105306e+26'); + T('-2.5159616882775e+7', '0e+0', '-25159616.882775'); + T('-1.1497021250372501e+2', '8.3582955257533834133933719723e+22', '8.358295525753383413381874951049627499e+22'); + T('2.8314056900555843e+12', '4.23695829388274243636e-6', '2831405690055.58430423695829388274243636'); + T('-1.31709787273518408e+17', '8.014510794225900917778e+4', '-131709787273438262.89205774099082222'); + T('0e+0', '-1.629e+2', '-162.9'); + T('7.65253317420838491672142405e-2', '-7.99262139691085667872536301e+15', '-7992621396910856.6022000312679161508327857595'); + T('1.890960123000345821183126769e+14', '7.20788924150109e+9', '189103220189276.0832083126769'); + T('-1.3e+0', '8.319553612816369962e+7', '83195534.82816369962'); + T('-3.5558858e+7', '-8.10954e-10', '-35558858.000000000810954'); + T('-6.59635684e-11', '-1.12991511439649957747410439089e+29', '-1.129915114396499577474104390890000000000659635684e+29'); + T('2.84985498518035e+0', '-2.69695005783e+4', '-26966.65072331481965'); + T('-6.85881760429450007919e+20', '-4.2520891329373816896808041239e-11', '-685881760429450007919.000000000042520891329373816896808041239'); + T('-7.60611902357978e+5', '0e+0', '-760611.902357978'); + T('-2.8400853393896819e-12', '3.9346602572408205959634e+10', '39346602572.4082059596311599146606103181'); + T('-6.2918148769550413935353223e-6', '-1.46926127598445193e+7', '-14692612.7598508111148769550413935353223'); + T('-6.6e+0', '5.29e+2', '522.4'); + T('-5.32901866812117076e+16', '5.923499732512e+7', '-53290186621976710.27488'); + T('2.8826366994411923511e-4', '9.0827607747846942e+14', '908276077478469.42028826366994411923511'); + T('-1.16063858058205683e+17', '1.63197623001574371048e+1', '-116063858058205666.6802376998425628952'); + T('2.33448774537387e-8', '-2.344769e+1', '-23.4476899766551225462613'); + T('5.221324777342731268951204567e+27', '5.2831642468607302614700095e+25', '5.274156419811338571565904662e+27'); + T('3.176941232598488925334e+19', '-5.78631858983696974141e+20', '-546862446657712084887.66'); + T('-9.83148865e-8', '2.162567052649e-8', '-7.668921597351e-8'); + T('1.45780087267250652143848567879e+17', '2.31e+1', '145780087267250675.243848567879'); + T('1.938157e+6', '2.60157906e+1', '1938183.0157906'); + T('2.428e-6', '-5.322e+3', '-5321.999997572'); + T('8.2046484844e+3', '2.1549373877917e+14', '215493738787374.6484844'); + T('-8.834664968e+2', '-2.55430491293e+5', '-256313.9577898'); + T('2.3572045735847686172e+12', '-1.3818314700215998e+16', '-13815957495642413.2313828'); + T('-3.2657953413e-16', '4.1453273974121236811839e-18', '-3.224342067325878763188161e-16'); + T('3.9e+1', '9.93455000207993341247941942e-15', '39.00000000000000993455000207993341247941942'); + T('9.37900728e+0', '-7.836904346001529841e-17', '9.37900727999999992163095653998470159'); + T('-3.0891e+0', '-9.719267672741339831199e+21', '-9.7192676727413398312020891e+21'); + T('1.76267171902379081421e-4', '4.274711452739918e+15', '4274711452739918.000176267171902379081421'); + T('1.3371e-5', '-2.337338537516546e+15', '-2337338537516545.999986629'); + T('5.1552633575093e+3', '-4.78079e-3', '5155.2585767193'); + T('-5.5504722943333778362e+19', '8.8121340924893706238e+8', '-55504722942452564952.75106293762'); + T('-9.56289179492575435222173761e+9', '-1.5507589407486e+14', '-155085456966654.92575435222173761'); + T('1.813253984710071e+8', '-1.19293200963040761850166359388e+11', '-119111875564.569754750166359388'); + T('4.813328953637197259781466269e-12', '-4.47e+0', '-4.469999999995186671046362802740218533731'); + + log('\n ' + passed + ' of ' + total + ' tests passed in ' + (+new Date() - start) + ' ms \n'); + return [passed, total];; +})(this.BigNumber); +if (typeof module !== 'undefined' && module.exports) module.exports = count; diff --git a/node_modules/mysql/node_modules/bignumber.js/test/pow.js b/node_modules/mysql/node_modules/bignumber.js/test/pow.js new file mode 100644 index 0000000..896d5cd --- /dev/null +++ b/node_modules/mysql/node_modules/bignumber.js/test/pow.js @@ -0,0 +1,1535 @@ +var count = (function pow(BigNumber) { + var start = +new Date(), + log, + error, + undefined, + passed = 0, + total = 0, + MAX_POWER = 1e6; + + if (typeof window === 'undefined') { + log = console.log; + error = console.error; + } else { + log = function (str) { document.body.innerHTML += str.replace('\n', '
      ') }; + error = function (str) { document.body.innerHTML += '
      ' + + str.replace('\n', '
      ') + '
      ' }; + } + + if (!BigNumber && typeof require === 'function') BigNumber = require('../bignumber'); + + function assert(expected, actual) { + total++; + if (expected !== actual) { + error('\n Test number: ' + total + ' failed'); + error(' Expected: ' + expected); + error(' Actual: ' + actual); + //process.exit(); + } + else { + passed++; + //log('\n Expected and actual: ' + actual); + } + } + + function assertException(func, message) { + var actual; + total++; + try { + func(); + } catch (e) { + actual = e; + } + if (actual && actual.name == 'BigNumber Error') { + passed++; + //log('\n Expected and actual: ' + actual); + } else { + error('\n Test number: ' + total + ' failed'); + error('\n Expected: ' + message + ' to raise a BigNumber Error.'); + error(' Actual: ' + (actual || 'no exception')); + //process.exit(); + } + } + + function T(expected, n, exp) { + assert(String(expected), String(new BigNumber(n).pow(exp))) + } + + log('\n Testing pow...'); + + BigNumber.config({ + DECIMAL_PLACES : 20, + ROUNDING_MODE : 4, + ERRORS : false, + RANGE : 1E9, + EXPONENTIAL_AT : [-7, 21] + }); + + // ---------------------------------------------------------------- v8 start + // Tests the special cases specified by ES 15.8.2.13 + + + T(4, 2, 2); + T(2147483648, 2, 31); + T(0.25, 2, -2); + T(0.0625, 2, -4); + T(1, 1, 100); + T(0, 0, 1000); + + T(NaN, 2, NaN); + T(NaN, +0, NaN); + T(NaN, -0, NaN); + T(NaN, Infinity, NaN); + T(NaN, -Infinity, NaN); + + T(1, NaN, +0); + T(1, NaN, -0); + + T(NaN, NaN, NaN); + T(NaN, NaN, 2.2); + T(NaN, NaN, 1); + T(NaN, NaN, -1); + T(NaN, NaN, -2.2); + T(NaN, NaN, Infinity); + T(NaN, NaN, -Infinity); + + T(Infinity, 1.1, Infinity); + T(Infinity, -1.1, Infinity); + T(Infinity, 2, Infinity); + T(Infinity, -2, Infinity); + T(0, 2, -Infinity); + T(0, -2, -Infinity); + + T(+Infinity, 1/1.1, -Infinity); + T(+Infinity, 1/-1.1, -Infinity); + T(+Infinity, 1/2, -Infinity); + T(+Infinity, 1/-2, -Infinity); + + T(NaN, 1, Infinity); + T(NaN, 1, -Infinity); + T(NaN, -1, Infinity); + T(NaN, -1, -Infinity); + + T(+0, 0.1, Infinity); + T(+0, -0.1, Infinity); + T(+0, 0.999, Infinity); + T(+0, -0.999, Infinity); + + T(Infinity, 0.1, -Infinity); + T(Infinity, -0.1, -Infinity); + T(Infinity, 0.999, -Infinity); + T(Infinity, -0.999, -Infinity); + + T(Infinity, Infinity, 2); + T(+Infinity, 1/Infinity, -2); + T(Infinity, -Infinity, 2); + + T(-Infinity, -Infinity, 3); + T(-Infinity, -Infinity, 13); + + T(-Infinity, 1/-Infinity, -3); + T(-Infinity, 1/-Infinity, -13); + T(-Infinity, 1/-0, 3); + T(-Infinity, 1/-0, 13); + T(-Infinity, -0, -3); + T(-Infinity, -0, -13); + T(-Infinity, -0, -1); + + // Note: Out of range exponents become +-Infinity, + // so the result will not match Math.pow. + T(Infinity, -0, -10000000001); // Math.pow(-0, -10000000001) == -Infinity + + T(+Infinity, 1/-Infinity, -2); + + T(+Infinity, 1/+0, 1.1); + T(+Infinity, 1/+0, 2); + + T(Infinity, +0, -1.1); + T(Infinity, +0, -2); + + T(+Infinity, 1/-0, 2); + T(Infinity, -0, -2); + + T(-0.00001, -0.00001, 1.1); + T(-100000, -0.00001, -1.1); + + T(-Infinity, 1/-0, 1); + T(Infinity, 1/-0, 10000000001); // Math.pow(1/-0, 10000000001) == -Infinity + + T(NaN, 2, null); // Math.pow(2, null) == 1 + T(NaN, 2, undefined); + T(NaN, 2, NaN); + T(NaN, 2, 'erger'); + T(NaN, 2, {}); + T(NaN, 2, []); // Math.pow(2, []) == 1 + T(Infinity, 2, 1e6 + 1); + T(0, 2, -1e6 - 1); + T(Infinity, -2, 1e6 + 1); // Test 75 // Math.pow(-2, 1e6 + 1) == -Infinity + T(0, -2, -1e6 - 1); + T(0, -0.2, 1e6 + 1); + T(Infinity, -0.2, -1e6 - 1); // Math.pow(-0.2, -1e6 - 1) == -Infinity + T(0, 0.2, 1e6 + 1); + T(Infinity, 0.2, -1e6 - 1); + + // The following differ to Math.pow as the exponent will be truncated to 0, + // so the result will always be 1. + T(1, 1/-0, 0.5); // Math.pow(1/-0, 0.5) == Infinity + T(1, -0, -0.5); // Math.pow(-0, -0.5) == Infinity + T(1, 1/-0, 0.6); // Math.pow(1/-0, 0.6) == Infinity + T(1, -0, -0.6); // Math.pow(-0, -0.6) == Infinity + T(1, Infinity, 0.1); // Math.pow(Infinity, 0.1) == Infinity + T(1, 1/Infinity, -0.1); // Math.pow(1/Infinity, -0.1) == Infinity + + // ------------------------------------------------------------------ v8 end + + T(16, 2, 4.01); + T(8, 2, 3.99); + + T('4096', '8', 4); + T('-1.331', '-1.1', 3); + T('5.125696', '-2.264', 2); + T('6.7266e-7', '6.7266E-7', 1); + T('1', '-1', 8); + T('4142779.6499215776', '21.06', 5); + T('731.1616', '-5.2', 4); + T('1', '61818', 0); + T('3.2', '3.2', 1); + T('5.4139923025768140625e-41', '-1.945E-7', 6); + T('1280630.81718016', '5.8', 8); + T('3965.318943552', '15.828', 3); + T('53.721', '53.721', 1); + T('1', '-1.9', 0); + T('4.58357323731267363492522744606954913014016e-39', '-0.0000161306', 8); + T('-8560814308.6108448224', '-96.94', 5); + T('4.4127502627834341562081e-74', '-6.77E-10', 8); + T('79327261142.56790234534719652175488087744161', '23.0371', 8); + T('3.101121e-38', '1.761E-19', 2); + T('1', '-1', 4); + T('6.23201296e-28', '-1.58E-7', 4); + T('-8.50893402176e-19', '-9.476E-7', 3); + T('16', '4', 2); + T('90368789.0625', '-97.5', 4); + T('1', '-112.8', 0); + T('4.122181458338334221291398681640625e+27', '40042.5', 6); + T('5.94467302491009e+21', '1290.0', 7); + T('5.6599836943004175019970957e+25', '141437', 5); + T('9', '3', 2); + T('69.75757441', '1.7', 8); + T('1e-42', '0.0000010', 7); + T('8', '8', 1); + T('-2.5090696333749305038864384e+25', '-664', 9); + T('24794.911296', '5.4', 6); + T('7077398515.1515538432', '93.32', 5); + T('-1.4520042511984659693722813984375e-130', '-2.8295E-19', 7); + T('4', '4', 1); + T('372088627687.312953646321', '781.019', 4); + T('-5.3864523289963490660381317787272961329536e-23', '-0.000658806', 7); + T('-1.8', '-1.8', 1); + T('1', '-5.9', 0); + T('1', '2', 0); + T('-6.4097340625', '-1.45', 5); + T('170859375', '15', 7); + T('595732589817199.440265999920799232', '43.82', 9); + T('1.7080198121677824e+36', '-4200', 10); + T('1', '658.8', 0); + T('136.460505366756569881', '2.269', 6); + T('-1', '-1', 3); + T('236007.159691873761', '-22.041', 4); + T('1', '-1.1', 0); + T('287803125756.085809269657829376', '18.76', 9); + T('4.1069049025e-34', '-2.02655E-17', 2); + T('-8', '-2', 3); + T('-5.0787635527751e-52', '-5.51E-11', 5); + T('-8', '-2', 3); + T('1704883919.2576', '203.2', 4); + T('22106814.0740608', '11.2', 7); + T('3.7481851264119295287828498195966142655968201e+23', '227.71', 10); + T('-3', '-3', 1); + T('5.308416e-54', '4.8E-14', 4); + T('1', '-1', 8); + T('1', '-4.1', 0); + T('398', '398', 1); + T('1', '1.17981E-18', 0); + T('255896509713547.45824', '761.4', 5); + T('16807', '7', 5); + T('1', '232.6', 0); + T('2.67066142562472466573674890357652039841e+30', '-6358.1', 8); + T('390625', '-5', 8); + T('85766121', '21.0', 6); + T('2206809.987903620081317314341735861401', '4.309', 10); + T('6.1917364224e-80', '-1.2E-8', 10); + T('64', '-2', 6); + T('-1', '-1', 7); + T('-39.8778220049', '-2.09', 5); + T('892496818.033068251283537321', '-31.029', 6); + T('1.1289646949223432899980166202016362758071452681629968849e+25', '320.087', 10); + T('1932991.455312009', '124.569', 3); + T('635307227133823.258624', '-293.2', 6); + T('784', '-28', 2); + T('-43361725294765860565.175323475675341312', '-152.02', 9); + T('1589.6036888689492933115234375', '4.36775', 5); + T('1', '-18.4', 0); + T('20832.8532313216810321678408500840248440324096', '3.46612', 8); + T('6.5536', '-1.6', 4); + T('174729381067.247616', '5590.56', 3); + T('-4.084101e-14', '-0.0021', 5); + T('7.46848810699576790739263937619996819197249e+21', '153.93', 10); + T('2.09881105970752e-16', '0.0000059428', 3); + T('23298085122481', '-169', 6); + T('1', '-4.095E-11', 0); + T('30016915.773120638290557721', '17.629', 6); + T('16807', '7', 5); + T('130666515.5580240243056896', '-10.34', 8); + T('-5.97080224872032e-91', '-9.02E-19', 5); + T('-3450.25251', '-5.1', 5); + T('43046721', '-9', 8); + T('1', '1', 1); + T('3545.66529682492339392399', '5.1279', 5); + T('3396.171616714297', '15.0313', 3); + T('4.622674003397519975764019459730496e+33', '-408146', 6); + T('1', '918.0', 0); + T('7.59375', '1.5', 5); + T('-67822.3072849', '-4.90', 7); + T('3.7588592026706176e-104', '-1.18E-13', 8); + T('1', '1', 3); + T('5237990.22862336', '47.84', 4); + T('11698.5856', '10.4', 4); + T('110075314176', '24', 8); + T('3.24210716131761936e-27', '2.38620E-7', 4); + T('9', '3', 2); + T('14641', '121', 2); + T('62.81386652381601821841', '2.81523', 4); + T('1', '8', 0); + T('4.29981696e-160', '-1.2E-20', 8); + T('1.692652673311521044295612689449216e-7', '-0.14242', 8); + T('1', '-19.5', 0); + T('1', '8621.8', 0); + T('7.907e-7', '7.907E-7', 1); + T('1.61051', '1.1', 5); + T('1.553e-14', '1.553E-14', 1); + T('858461358961485360081', '171171', 4); + T('64', '-2', 6); + T('-2.9', '-2.9', 1); + T('-2.0661046784e-179', '-1.4E-20', 9); + T('39.0625', '-2.5', 4); + T('-391460020121.8781037', '-45.3', 7); + T('-80.1', '-80.1', 1); + T('3.5831808', '1.2', 7); + T('41.08469075197275390625', '-1.45', 10); + T('-128', '-2', 7); + T('-5277043158.170301334052958483', '-12.03', 9); + T('100.31024025', '10.0155', 2); + T('262144', '4', 9); + T('-2.66450474490105494016e-70', '-1.86E-8', 9); + T('1.58541338622748269695158625134808009096449e+21', '-131.83', 10); + T('1.69e-14', '1.3E-7', 2); + T('81', '-3', 4); + T('1.3979045762098993055105649e+25', '327', 10); + T('-2.8334269484119140625e-17', '-0.0145', 9); + T('8455365204.69607', '96.7', 5); + T('4.826809', '-1.3', 6); + T('-4.2027e-14', '-4.2027E-14', 1); + T('-3671885391606530844.02199', '-5163.9', 5); + T('1.4833', '1.4833', 1); + T('1078702060.96', '32843.6', 2); + T('16384', '4', 7); + T('0.000041046707114327285209693732389121', '-0.185729', 6); + T('9.04141586678594150656e-76', '1.73404E-19', 4); + T('7', '7', 1); + T('-5.408864751631992324037382349788164206309e+39', '-25989', 9); + T('3.6213725246884329693766314512921496510839580087890625e-58', '0.00000180255', 10); + T('51.58686976', '-2.68', 4); + T('32562222.2784028467808485507564561204461862636001', '5.6399', 10); + T('1.5269627878770126091369423832739776731492122624e-24', '-0.0041532', 10); + T('2.27128515349184346452713121698128944001e-82', '-6.849E-9', 10); + T('788.12330352545906108118941549114886272', '2.59298', 7); + T('-128', '-2', 7); + T('2.43585613160298150834272926486523151679435546875e+29', '1841.55', 9); + T('3573226485.213841', '39.1', 6); + T('5.0912', '5.0912', 1); + T('1.302260124847515625e-102', '1.0450E-17', 6); + T('-1097881.796860068547323829', '-4.69', 9); + T('24.137569', '1.70', 6); + T('67.937289638464', '-2.02', 6); + T('-91125', '-45.0', 3); + T('3.5658406477912053139330818066558837890625e-96', '1.17225E-12', 8); + T('5.11226325150500959599107782635087831282590275214649e-160', '-1.17723E-16', 10); + T('67.937289638464', '-2.02', 6); + T('-3125', '-5', 5); + T('-3125', '-5', 5); + T('-2983765.0756983032103435524997723277', '-8.4133', 7); + T('4535877.137495584829386816', '-12.866', 6); + T('256', '-2', 8); + T('-7.9', '-7.9', 1); + T('4.18161601', '1.430', 4); + T('2.3591116836e-38', '-1.53594E-19', 2); + T('6648326359.9150104576', '9.6', 10); + T('65536', '-4', 8); + T('22777216155500625', '-12285', 4); + T('1', '-1.14E-9', 0); + T('1', '7.4', 0); + T('1.21', '1.1', 2); + T('0.248', '0.248', 1); + T('-2187', '-3', 7); + T('1.48996e-23', '-3.86E-12', 2); + T('2.49173e-14', '2.49173E-14', 1); + T('-2738.124199', '-13.99', 3); + T('-2.7044661231722633428249e-63', '-3.0649E-13', 5); + T('0.0000998001', '-0.00999', 2); + T('9', '3', 2); + T('-331.370935156703232', '-3.192', 5); + T('2.611824102393094023763', '1.147', 7); + T('-527', '-527', 1); + T('27', '3', 3); + T('2.313441e-34', '3.90E-9', 4); + T('1', '-8.00148E-16', 0); + T('6.427669793976056365481141274099681e+25', '-1682.7', 8); + T('-27', '-3', 3); + T('256', '-2', 8); + T('59049', '-3', 10); + T('8.7713801081173367580884490451432713332434379776e+26', '494.66', 10); + T('20234327779106168.4159474599729911316138226499265176167424', '42.7178', 10); + T('-27', '-3', 3); + T('0.009411328144', '-0.097012', 2); + T('349044.64', '-590.8', 2); + T('4750.104241', '-4.1', 6); + T('-173928970714601588962.8103429', '-778.9', 7); + T('3656158440062976', '-36', 10); + T('6.12220032e+22', '1800', 7); + T('1', '3.4', 0); + T('9.70097321773035876225154576358130561e-37', '0.000031503', 8); + T('-12.812904', '-2.34', 3); + T('-1.7340444960685031988323168e+25', '-111638', 5); + T('282475249', '7', 10); + T('-81.746504', '-4.34', 3); + T('-7.219028320823404915424e-24', '-0.000023534', 5); + T('41.0338673', '1.7', 7); + T('2.0415562993764162403236821478431932029075456e-128', '6.4896E-15', 9); + T('82955.444920574689', '43.6129', 3); + T('-160578147647843', '-107', 7); + T('3450.25251', '5.1', 5); + T('82854921260716023991.1435387164164096', '308.88', 8); + T('1', '-285', 0); + T('390625', '-5', 8); + T('1.8189597967773564082837969e-101', '1.6217E-17', 6); + T('2.825761e-74', '4.1E-19', 4); + T('1355738723022659.5905381376', '-32.6', 10); + T('1', '26.5', 0); + T('1', '-1', 4); + T('9', '3', 2); + T('8.02677619844494861156679981606477327016984576e-140', '4.10268E-18', 8); + T('6', '6', 1); + T('-97.65625', '-2.5', 5); + T('47524', '218', 2); + T('4.70681', '4.70681', 1); + T('3588.01', '59.9', 2); + T('1', '-52.1233', 0); + T('150837370166.726828752896', '-72.960', 6); + T('1', '-202722', 0); + T('531441', '9.0', 6); + T('1', '1', 8); + T('16', '-2', 4); + T('10.5413504', '1.4', 7); + T('-43003385433558549', '-350349', 3); + T('11656', '11656.0', 1); + T('2.5937424601e-80', '-1.1E-8', 10); + T('380008', '380008', 1); + T('1', '1', 10); + T('65248.283129848297112850803864372537279713', '3.4273', 9); + T('-1147575293595.98432', '-258.2', 5); + T('1.3689e-20', '1.17E-10', 2); + T('5.9969536e-41', '-8.80E-11', 4); + T('36', '6', 2); + T('8.38561807e-52', '9.43E-18', 3); + T('4248380.5456', '45.4', 4); + T('15400296222.263289476715621650663041', '-18.769', 8); + T('2381343457183.27934976', '1242.24', 4); + T('1', '1', 4); + T('4.78918476762052235286361700161e+21', '512.9', 8); + T('2089309226.032466059985824', '73.114', 5); + T('2641.807540224', '2.4', 9); + T('1', '430.260', 0); + T('6.1917364224', '1.2', 10); + T('19407735094418288.17030696889622168576', '42.54', 10); + T('1', '-10.7661', 0); + T('-3125', '-5', 5); + T('481.890304', '2.8', 6); + T('3.341488431860881e-53', '-7.603E-14', 4); + T('1', '2.8', 0); + T('14214.495945642721', '-10.919', 4); + T('40353607', '7', 9); + T('2.033478055981629545259599e-91', '7.2719E-19', 5); + T('1.0007101809887004032e-16', '0.00518', 7); + T('82653950016', '66', 6); + T('287365339.799', '659.9', 3); + T('1.2675964125399273523216299738998904467161547776e+26', '-407.66', 10); + T('64', '-2', 6); + T('41933.25113121', '-14.31', 4); + T('-300763', '-67', 3); + T('2187', '3.00', 7); + T('1085328071.651663', '1027.670', 3); + T('3.02024876193621053068500168512434520049e-112', '7.047E-12', 10); + T('-50817457664', '-3704', 3); + T('1.2167e-14', '0.0000230', 3); + T('-47932.2', '-47932.2', 1); + T('-2187', '-3', 7); + T('-10.611843208841110742516870554084117001', '-1.3001', 9); + T('1', '-1', 2); + T('-80473337380004.2860993293', '-604.13', 5); + T('574015339044', '-757638', 2); + T('1', '1', 5); + T('2.53295162119140625e-13', '0.055', 10); + T('-6.12220032e-20', '-0.00180', 7); + T('-27', '-3', 3); + T('11040808032', '102', 5); + T('416336.3127196737601536', '5.04', 8); + T('269175550798.26432', '193.2', 5); + T('-1.528', '-1.528', 1); + T('4.782969e-127', '9.0E-19', 7); + T('-7.51e-8', '-7.51E-8', 1); + T('1024', '-2', 10); + T('607.850029476310544160862292358275390625', '2.0385', 9); + T('-11.8', '-11.8', 1); + T('1.076079329936225357094692222242816e+27', '32011.6', 6); + T('-351982550989147112', '-706058', 3); + T('1', '1', 0); + T('9', '-3', 2); + T('86.44348156327976252176', '-3.04918', 4); + T('1.382898042825325230836148576046154775429376e+34', '18518.2', 8); + T('193.180743258112', '5.7808', 3); + T('-38.98', '-38.98', 1); + T('456976', '-26', 4); + T('-5.156993509526072073746875e+24', '-87595', 5); + T('-3311111.840687797824457', '-20.137', 5); + T('-3854601532649', '-329', 5); + T('1', '-8011', 0); + T('1', '2', 0); + T('1', '-0.0185', 0); + T('245925124', '15682', 2); + T('-5.774467426440121643433984e-21', '-0.00564', 9); + T('1207.269217792', '2.2', 9); + T('4552.045708313044707921', '-4.071', 6); + T('1', '-29.2', 0); + T('-4.3847739074110089716547584e-136', '-4.604E-20', 7); + T('-7776', '-6', 5); + T('3.0745786029631524271923429376e+28', '498376', 5); + T('-322.687697779', '-1.9', 9); + T('-31084123244.396440017759765625', '-14.65', 9); + T('1.4641e-56', '1.1E-14', 4); + T('-172.10368', '-2.8', 5); + T('3894161181.1810745401', '-9.1', 10); + T('1296', '-6', 4); + T('1', '6.2', 0); + T('2.91506581425215873264648192e+26', '872', 9); + T('1.85843153221037962890625e-175', '3.85E-20', 9); + T('2534495.8401', '-39.9', 4); + T('-1.85738630687872790421037608793067224429e-7', '-0.17869', 9); + T('20711912.837890625', '6.5', 9); + T('216270112.515625', '24.5', 6); + T('1.61051e-30', '0.0000011', 5); + T('192541.45824', '11.40', 5); + T('1', '-6.91E-13', 0); + T('2313060.765625', '-11.5', 6); + T('31653832624.2576', '421.8', 4); + T('0.000008916100448256', '-0.144', 6); + T('1', '6.074', 0); + T('200476.12231936', '-4.6', 8); + T('-2097152', '-8', 7); + T('1', '1', 7); + T('1.024e-37', '-3.200E-19', 2); + T('-7.56680642578125e-40', '-0.0000450', 9); + T('22363441', '-4729', 2); + T('0.326940373369', '0.83', 6); + T('0.0653', '0.0653', 1); + T('67937289.638464', '-20.2', 6); + T('1', '-6935.7', 0); + T('37366.9453125', '4.5', 7); + T('84736910327822.09024', '610.4', 5); + T('89.3871739', '1.9', 7); + T('-74088', '-42', 3); + T('2.6', '2.6', 1); + T('-2.74625e-52', '-6.5E-18', 3); + T('7.25211296602410832237035188113814152676619241652224e-20', '0.0121912', 10); + T('-0.231616946283203125', '-0.85', 9); + T('136117620759552651.464603466304', '-717.22', 6); + T('7149.24299', '5.9', 5); + T('-105748.898523294431279732941', '-5.221', 7); + T('4', '-2', 2); + T('2.177e-10', '2.177E-10', 1); + T('729', '3', 6); + T('62050623946302131.87381413659819', '250.59', 7); + T('39413.40648961', '-14.09', 4); + T('1', '1', 0); + T('6561', '3.0', 8); + T('0.000039304', '0.034', 3); + T('343', '7', 3); + T('256', '4', 4); + T('187914065609.1136', '658.4', 4); + T('-2017403668.061600505811231934445020891', '-10.811', 9); + T('1', '-1', 2); + T('-1', '-1.0', 7); + T('-5', '-5', 1); + T('-9892530380752880769', '-129', 9); + T('6.6241549228613285241719980684340096e-106', '9.4286E-16', 7); + T('3.43333904131263903194677248e-46', '0.00000888', 9); + T('-9.7699019384092441818970744182751232e-92', '-9.9668E-14', 7); + T('22518.75390625', '-3.5', 8); + T('9.90817568487338826820891768064226576961e-66', '-7.49030E-9', 8); + T('-2', '-2', 1); + T('3.7805311079775207424e-77', '1.832E-13', 6); + T('-14326936981.650438436683776', '-107.456', 5); + T('31509057.52576', '31.6', 5); + T('-1729271944.97024', '-70.4', 5); + T('4.182119424e-81', '8.4E-17', 5); + T('5406147534197334.84011776', '-92.6', 8); + T('-0.00000363167', '-0.00000363167', 1); + T('9536.7431640625', '-2.5', 10); + T('11094619561', '-105331', 2); + T('3.0073480681463454661678314208984375e-137', '6.775E-16', 9); + T('1.5374535781262326309644119647446644001e+29', '-4449.9', 8); + T('9.70138473177843532176348676096e+29', '99496', 6); + T('127.45506816', '-3.36', 4); + T('1', '-84.7', 0); + T('1.7499128828948144488585826444218125390625e+40', '-107245', 8); + T('3577.714596', '-59.814', 2); + T('-13012.5', '-13012.5', 1); + T('-1', '-1', 1); + T('16', '2', 4); + T('254016', '504.0', 2); + T('-1607.369262344', '-11.714', 3); + T('1', '1.251E-11', 0); + T('208.5136', '3.8', 4); + T('387420489', '9', 9); + T('1', '4.2', 0); + T('6104030772588134.765625', '-427.5', 6); + T('161.29', '12.7', 2); + T('9', '3', 2); + T('-2181835737885608.101460104333373352538009179', '-50.619', 9); + T('-3997.92155722610103', '-3.27', 7); + T('2565164201769', '-117', 6); + T('-512', '-8', 3); + T('6.04380441302073327515625e+23', '-9195', 6); + T('1', '1', 5); + T('-9.2389579776e-25', '-0.0000156', 5); + T('7.997656216391946134348627101293601e+33', '17293', 8); + T('39520792565978809.524305593609', '-583.63', 6); + T('16', '-2', 4); + T('7807.4896', '-9.4', 4); + T('248832', '12.0', 5); + T('496981290961', '-89', 6); + T('-4.3606774182392e-44', '-3.5198E-15', 3); + T('16777216', '64', 4); + T('1', '1.0', 6); + T('1', '91.4', 0); + T('9.851127637605409e-117', '-4.63E-20', 6); + T('1', '-1.4E-9', 0); + T('-4.52470110728381829e-7', '-0.00767709', 3); + T('282475249', '7.0', 10); + T('16651779441254092864', '1598', 6); + T('729', '3', 6); + T('6.90946358996746999370693799867018948630842395035736169049e-104', '-4.82997E-11', 10); + T('684.84796416', '26.1696', 2); + T('-1', '-1', 5); + T('1', '-6', 0); + T('0.0000078310985281', '-0.23', 8); + T('2.274064', '-1.508', 2); + T('3.04122555034158459939649e-47', '-0.0000223', 10); + T('696452982073287.871843324909094936562277581368328192', '44.5872', 9); + T('-7.5151448e-29', '-4.22E-10', 3); + T('1', '6', 0); + T('-12.708', '-12.708', 1); + T('70', '70', 1); + T('2187', '3', 7); + T('-1.628413597910449e-174', '-4.9E-20', 9); + T('-6.312457192887951173182283446626151709594241e-66', '-5.6961E-8', 9); + T('0.000299069043583441159212021318210939', '0.4059', 9); + T('15.995353981724701', '1.741', 5); + T('1', '97857', 0); + T('0.221585791441', '-0.470729', 2); + T('1', '52.0023', 0); + T('-26015680550432', '-482', 5); + T('22903.7956', '151.34', 2); + T('6.561e-17', '-8.1E-9', 2); + T('-93189625398108974.44387339079552', '-265.58', 7); + T('-3086125724460522.34468469084288', '-163.22', 7); + T('0.0000051', '0.0000051', 1); + T('19683', '3', 9); + T('-2.4507253464874125175251e+22', '-30051', 5); + T('-38.907147732329430154371456512', '-1.502', 9); + T('4.68733667816790896452997907438948199465216e+41', '161758', 8); + T('64', '-2', 6); + T('27541696650101.74182563635028557824', '-22.08', 10); + T('1.352771823277379852935844331805603817270014056494234420224e-23', '-0.00516562', 10); + T('1', '1', 4); + T('-2350072823968', '-298', 5); + T('8941.5936', '-94.56', 2); + T('97241.5', '97241.5', 1); + T('6.93207873781332929149e-50', '9.49E-8', 7); + T('-59049', '-9', 5); + T('-8882.144880086754771640625', '-3.665', 7); + T('8100981934880.472', '20083.8', 3); + T('16', '4.0', 2); + T('6.561e-49', '-9.00E-13', 4); + T('-446592952.353220867168501', '-53.701', 5); + T('-3.2466525536194576823494051652634346881e-125', '-1.47210E-14', 9); + T('3.89751', '3.89751', 1); + T('3.8443359375e-107', '1.5E-12', 9); + T('493.039', '7.9', 3); + T('-16807', '-7', 5); + T('-4.7471727261300877329502034895519256591796875e+34', '-7127.5', 9); + T('49', '-7', 2); + T('1.27e-12', '1.27E-12', 1); + T('30373391.06115737305088', '11.72', 7); + T('1', '-1', 6); + T('-19349.17632', '-7.2', 5); + T('361', '19.0', 2); + T('1', '0', 0); + T('-10077696', '-6', 9); + T('42180.533641', '5.9', 6); + T('38.443359375', '1.5', 9); + T('1643032', '118', 3); + T('16', '-2', 4); + T('1962.49', '-44.3', 2); + T('640.09', '-25.3', 2); + T('8693.75638483077329986588967330173480782272550321318049', '-2.47697', 10); + T('8105445187812500000', '6050', 5); + T('3106365092236328976', '41982', 4); + T('1.9e-18', '1.9E-18', 1); + T('1388437454689.837102639637015104', '105.622', 6); + T('217.67', '217.67', 1); + T('-1', '-1', 1); + T('-40.84101', '-2.1', 5); + T('1.542564e-12', '-0.0000012420', 2); + T('-1.18009517625e-37', '-4.9050E-13', 3); + T('5549069137356750625', '-48535', 4); + T('1172.7599043051', '4.11', 5); + T('1.024e-39', '-3.2E-20', 2); + T('64', '-2', 6); + T('9765625', '-5', 10); + T('10174708482.4576', '317.6', 4); + T('4596.544052624786837880243001942570369016159210753', '2.55233', 9); + T('4096', '8', 4); + T('729', '-3', 6); + T('19034163', '267.0', 3); + T('7.13342911662882601e-183', '-6.1E-19', 10); + T('-8', '-2', 3); + T('7.458836077824580594735138491702651752566987e+24', '580.27', 9); + T('-1.488656882033767469315065509517197312e-126', '-1.0452E-14', 9); + T('-22512044836648447.5871232', '-216.8', 7); + T('1', '1.0', 2); + T('-1048576', '-16.0', 5); + T('2.96566225198439749053708901e+26', '196981', 5); + T('387361397731.0852349972153162834577841407848071071001', '-14.4149', 10); + T('2.5937424601', '1.1', 10); + T('1', '-132.84', 0); + T('1', '4642.2', 0); + T('-7.3499661205554469210497482752e+28', '-1612', 9); + T('2.56745903401e-35', '-5.06701E-18', 2); + T('-8.0416926477372443174045490389e-14', '-0.013469', 7); + T('481.890304', '2.8', 6); + T('-2.0079766520165347109375e+22', '-1535', 7); + T('-3.34255384e-7', '-0.00694', 3); + T('65536', '-4', 8); + T('15700.150160096030724096', '5.004', 6); + T('3', '3', 1); + T('-1024', '-4.0', 5); + T('1', '-0.0000026', 0); + T('3.75e-11', '3.75E-11', 1); + T('-2.197e-33', '-1.3E-11', 3); + T('850260.560009615038237114368', '7.032', 7); + T('1.165611915415579117119882256009e-48', '-1.02587E-8', 6); + T('1.874746414628249416823686235041e+30', '-6083', 8); + T('3541035030023585410.9685579776', '-71.6', 10); + T('159873594510682.812023861622308942042241', '59.631', 8); + T('964', '964', 1); + T('1', '7', 0); + T('1', '1', 7); + T('959554720546.9939335182868736', '-31.46', 8); + T('390625', '5', 8); + T('8.58117156760783434066136732224e-67', '9.7482E-12', 6); + T('1', '1.10E-19', 0); + T('2.7206534396294947e-38', '0.000067', 9); + T('-2.7993930117296371229848579851719540736e+30', '-22365.6', 7); + T('5531947943217503125', '5605', 5); + T('2.77921878692682183940201e+33', '2210', 10); + T('-1.34775901066369285240390603125e+29', '-669765', 5); + T('1', '1', 8); + T('-187.539', '-187.539', 1); + T('114983.567789585767578125', '3.65', 9); + T('1', '1', 6); + T('9.5563709286130016454092290324007041e+28', '-67615.9', 6); + T('2.39576999392237432790890516398336', '-1.1154', 8); + T('-23.924567789936824982851522063', '-1.423', 9); + T('39.4384', '-6.28', 2); + T('46411484401953', '33', 9); + T('3864', '3864', 1); + T('20554002898923904', '214', 7); + T('1', '-481', 0); + T('1073741824', '8', 10); + T('64', '-2', 6); + T('-15633814.156853823', '-6.3', 9); + T('7.9', '7.9', 1); + T('-284.68', '-284.68', 1); + T('1', '92.6', 0); + T('256', '4', 4); + T('-4233837892.359375', '-1617.75', 3); + T('1.01054975167057821704275308297863156222443369140625e+40', '10010.5', 10); + T('4.15867265447116306999621451776e-171', '-9.16E-18', 10); + T('14796.346375', '24.55', 3); + T('0.000003596774583043934673428448834277192142749696', '-0.208684', 8); + T('19619412024963200000', '7220', 5); + T('203.33219575276960518721', '3.77617', 4); + T('2187', '3', 7); + T('-512', '-2', 9); + T('1', '2.4E-15', 0); + T('-79', '-79', 1); + T('-281399112371155271', '-311', 7); + T('2.0441457156547956272121e-32', '-0.000005229', 6); + T('164546156906.7655853425459503979807203014092043691201', '13.2321', 10); + T('-46.13', '-46.13', 1); + T('191707312997281', '-61', 8); + T('1019.4513038883292709315124224', '3.99644', 5); + T('1', '3', 0); + T('1', '-44.4', 0); + T('545516.0701056', '6.6', 7); + T('-4177', '-4177', 1); + T('358050', '358050', 1); + T('229.97659811731444699830505796029057408', '2.17462', 7); + T('2.6108288368639387032909799e-70', '1.21159E-14', 5); + T('4325169905.757', '1629.3', 3); + T('122.5', '122.50', 1); + T('1', '-0.0001858', 0); + T('3.17145729137553882999930496108165023687245824e+34', '2819.2', 10); + T('-1', '-1', 3); + T('-49.358166606568', '-3.6682', 3); + T('-3.0228559084421978498330001408', '-1.17120', 7); + T('24.76099', '1.9', 5); + T('-17.576', '-2.6', 3); + T('-20', '-20', 1); + T('-1', '-1', 1); + T('30804.095140913337149030892729572601', '2.811', 10); + T('15625', '-5', 6); + T('117649', '7', 6); + T('27', '3', 3); + T('-65939.264', '-40.4', 3); + T('4.56976e-27', '2.6E-7', 4); + T('3052847.6176', '41.8', 4); + T('18440755681.001536', '51.4', 6); + T('693.43957', '3.7', 5); + T('-10187688835060.27636096761856', '-72.16', 7); + T('-290.1', '-290.1', 1); + T('-2097152', '-8', 7); + T('63.582', '63.582', 1); + T('-92713.643576', '-45.26', 3); + T('58778272623218534616.288838935169', '1971.83', 6); + T('606071.1605323', '6.7', 7); + T('49478904727733663575.051582184770446498259493718971258958961046708278746324459568256251259157238318185790764612200843144821137580796334089638532287323488178607687532035618686192601481827902773410791645057647691925965756808571011539462511641266331263543939501901006735272661302011976870015625991111560481188335365459566760212844848008439578745211448299643484693328447464460429576345111356618402802188681216', '-1.60380', 96); + T('1.17647340482075248419254427344376045314316013640615098803852731448350843468375614975229837000370025634765625e+81', '-1312.5', 26); + T('7.0251816660378376802360594609084621021532608383100803495211258733288152327693358768741786747381360859889479870288549139760601303377485234176e+87', '-2391.76', 26); + T('85.717123455378345835968064', '2.0998', 6); + T('7.8189586726154755713303078223442071754329e+40', '187', 18); + T('9.145283009860369082115124525217171723626500086794105722560960199131059600008740516579605574000306840952542591838726900925804876261491646795282472377021036430500854987560433039755667787412917103148092128371355207976203112911565783359385741850905996481e+41', '-6.4113', 52); + T('2.05766289512932241998482631797034621069017517962263802542480365981262536498089637707776e+86', '26', 61); + T('98190573319064.214163360748608660888346857427032348178060040012159036566957731914573312588336568078808326155328828092023492584783227218123097647282496144318320115860427194595696623235777670393347299594686642872330179664094829207439052010438267983369137644871417464586087393161049', '-1.6293', 66); + T('1.392598192044227355988772015943279484446048049140235246881310663971517522995991944491655264930301742862780134225258915488062891063359354742689683631308848403923615202977361e+171', '109', 84); + T('1.5469996446227372120183605762031536360861258626528255060075983309687394111102266369973688377324297491658050323998067994446097153176237864040180207896595918522219595889946775556217e+64', '13.37', 57); + T('417.53905413413116367045797', '1.3', 23); + T('1.624290817967129588779052613030846258081e+39', '79677', 8); + T('-6.3573488855626874208656330920509964477352567129457629687143164320289038602869782661489925857813432230614125728607177734375e-576', '-0.00000000000000935', 41); + T('4.64886146511675512184781529230310759569090675635563199653956477629674515058124652544e-866', '0.0000000000014', 73); + T('6.613998972307900952958925063693292646912001305426127894831260851822286968476028114198011923029274945784114379928252947652708965396453170282038903005249536e-263', '0.00000908', 52); + T('17179869184', '2', 34); + T('9.7756260861181096053516970094092017016032995016954767790504110039917368643756356818044285001644705953440430468819149794081183248976623767084182482857941562203266736374606395800621259352114936429301555533971456e+141', '131.6', 67); + T('4294967296', '2', 32); + T('131621703842267136', '-6', 22); + T('7.9228162514264337593543950336e+28', '2', 96); + T('-1', '-1', 41); + T('5.0096959237841976223015468271587016074738912992534254294320102857326166341642003475731604090433896328441157235303061782495282575910872792923981113856240569836427242032573810996210128117467500761653330557379347005097932959928243111015057764620250811725789666461853189934772359267843261626881e+197', '140.9', 92); + T('2.404907604760405225358828131112281116032698930082119547604265954848982041717359046106827774346003151904701415424e+111', '32', 74); + T('2.69721605590607563262106870407286853611938890184108047911269431464974473521e+22', '-2.7', 52); + T('18.174', '18.174', 1); + T('1.36891479058588375991326027382088315966463695625337436471480190078368997177499076593800206155688941388250484440597994042813512732765695774566001e+43', '2.7', 100); + T('1.25668660115116491467662710973545031109788152235501170924313646703423681882164573441433515503588152722789494580469301248e+72', '34.2', 47); + T('1.56438420672167084519979701497174364597412396629019101951505612890666817698608365177006994887516584111152450449887451995069033040411213741933147153316594951835865202053237255800944727011696760985308614176976019463960094165747239428884158901702435389388132623055120422260406418255249330452909476806656e+299', '1308', 96); + T('-3.3612593878633377323120299366598552550657318092430645826641551765299195886060921308858703945250378295445932063495284056402608601041200858277129191414584253234377130155413110017511561906751453442173764185430889086682955797697564561876544299009572864e-463', '-0.00000030640', 71); + T('-1.366174308182025187777528918308146941320736787278460889575749404867695325446359807161410602138908197731224033169833047036778978022709170976735608988099868310813030127497812540494011203545816852288666658682985428600019476831917843e+58', '-4.83', 85); + T('2.966806088806219456880539423158152815514806645521282752514016241570099725287916962770395912230014801025390625e+28', '-5.15', 40); + T('8589934592', '2', 33); + T('3.92012913845865034844198476089476040042936801910400390625e+28', '-10.5', 28); + T('6.26204859896956162110746451442214931102399028194694661966016701109504299345041406486245804277657094315831017177064948219797627444240188709011456e+72', '10.6', 71); + T('-7.4010922571797388655581604684527426699437277457499992187268655958229686891933340740793991046504324130585438416249947232728346081088006867719609592595610095069331022367447133421906806310032697675369409918188139600222703781482594772971289070262621142441874895437059567046831661495957273728351051362944953711082346089727330717918651409489163662706555003193741825901442633007312863953564385259087744338361955671878877893732351367361843585968017578125e+364', '-31956.5', 81); + T('6.192736416792149755132475219493405669399778858602560762871794455317449717448580836229845787580888290473782381059983387805505374173265513677435445890655671110840202944429668728225878544903602239e-270', '0.000319', 77); + T('2.321827472731847506187210910989207010589651530892302311791322352855446782760907718473019283821056753242967949096791603718944064726033664384082861996009850744961116407128920163494805886357836270766853975184523023642990429569615539676822828070446559161161124635674389704743948383107212919966543969471039720464085404567773913503635201792672811032312063265454094042341369554833714443413857449688164664657173315113983032808001e+220', '159.83', 100); + T('4.953736650985698001275587761883016173298229503362193331584010106486052779761329981195411366329068322677550960044762649449732919438910119549694010717647780952298320287365138145210431380601324547389442337520392258009e+27', '-2.797', 62); + T('-338678221586896.02233451034424755534030583977124338116841050703894756829829935320421996887', '-2.47', 37); + T('-3.181403788572786716059998378326698266679069780899509454959934125355133265193e-226', '-0.0000057', 43); + T('2.2481244795444847556680083178853571141700204725943661497539185751725919215990484669445118877448657555202573745174750533635052209260608084995835891707958259234271442982681066779696130155696868114346639852814575962457281749995256623713554214237458259176913852401064878760784275382146658972801541462348779288776844691139086889351786721e+179', '229.03', 76); + T('1.09544203269304121665791452848994634135137143229447033238750572549632571476402641497730897157401184093614916314911584167715115647604065370616785146866296916632437569033863034458711783186506727022529378159297811462454675308057682780534190256280910865229376785975491743196806996272790525705427972427376758443312371576466422700240638756574402393677191376501159420836822933903938571935476091044876631814554274289087939783553959776485376e+31', '-2.0436', 100); + T('-18437563379.178327736384102280592359424', '-2.4', 27); + T('-2.565217290810806995636762133271387046711787821113755094865559403845937698002650308359872294490245896048511431844327060222279092126522644090602653932364773936569690704345703125e-1286', '-0.00000000000000000245', 73); + T('-9.9938258857146531850367031e-85', '-0.0000000231', 11); + T('2.45673281757908854552870925433471410070214400334169452520459965621921664416713287959754208329284439619509099451538227140937811535553399003066102795766261859069268099803838998995339331311912275460846260697085073312049264485545427543086425664188963659692922005683716104197951717376e+78', '-6.08', 100); + T('-1.270210714458885172439348525985048001607770314656078008119108251089872343340175575576722621917724609375e+24', '-4.15', 39); + T('1209.5', '1209.5', 1); + T('1220703125', '5.0', 13); + T('2.2282376678496302739664556233420633e-74', '0.000000006553', 9); + T('-2.0143178310003212256300583293456672172631020531521918361472772972889521239226102046625809514969363623444910359830312781808037277269448486731571232348276098930038993446113250228220070581715505392835999598313673094262893473819122138457089550860895343281662272401621942844086800579631762991581889839022236592407099699255051163050728007905851774204682372669170991112060985568225152641619715730738207580551834481069203501503809308865543720800327e-380', '-0.000067223', 91); + T('2.218088039378445352751296336694731578146959285984085545221611060271486214348079661041003283535646898758718143100202167951881147633680620698026648392938984778649e+159', '893', 54); + T('2.10030968607618842407969732186669026418164521383378412734005003194384320968659491239802049483617846390172315534146347011074332799904332281963786542263761412332465321180532568441958976108339460464558490863953503079336356338135760894630619724493454777575270501253639608281424341291617698518141921861556244699796561591915201261004739209197698527393965924844797945393999012105081714167479170123104969e-75', '-0.16053', 94); + T('2.5812157101662325924336748344070521698410946762506012782923924916938485004644329931151074914373301798478548152505612780265485671672098712055026947247254600014458282820627468534250894082132928621697659949721616819635951012296371246281717642419683893063297904005186874144169940879165882368e+286', '25488', 65); + T('-15.625', '-2.5', 3); + T('2.9729685996261878754343622542880008372085710279050331084451543295302017053107644303792930816e+59', '-72.2', 32); + T('8.15730721', '1.3', 8); + T('1027.334860999330573407176938442293022889', '-1.47', 18); + T('1.20109289910050514343148045475506579676136202628631781424931463646123976128634333627993215283736800191296195442718065238702508520055513255346146658609301480565930380776363581062628797012612519067602295957218821773367819208495782017345400726347727499503218384384326417098721424389373157748956399698521853695814977704822352568748499324367082691064737392226159651276162776412093080580234527587890625e+315', '8679.5', 80); + T('-6.00774319642841528092711102659123449286352750007573133369794363392e-33', '-0.22', 49); + T('-4.399348626310072691340857398671747903319767685984244866658805429802943497233040561059795990923598510826890908258017493538766494536483606174431755682553269424176946343755577041745496403493430254087811474250251864009392456889456030217048416123130922140883015639602300329038985615284964386359900403921860549312983015992252637174331659470716194350399038561704290046291e+177', '-81.31', 93); + T('-2.8207084178214872249481823288498698761858927113247705134064774975584407746875292397517412079545141630385439164566258891612557809688920433687345470043533104587152797682527671453716396264049694524828296706083384902442044310310028264740195536658201877924115112455928789057407729309051948428713154253269588754827200494136242524139799015813072692354239567376152196027070283776e-140', '-0.022816', 85); + T('-3.05410827582876268390180635074883196222812916959850956275590047122226930793718597160851022493537771838978253152932907298258251555751167476560688772053768410645587233357374279876239597797393798828125e-247', '-0.000000217485', 37); + T('5.94029530519133658573841651381893916937282220672559984930445801765696530117833330901747112098660456061962952244422396324466169433806822249922825538552986841011e-19', '0.491', 59); + T('6.30523820693302485362185385323378612453984181696300485861970499164041182778517073604560519798249286847423997356860449832519236757706844668669858983416671702949907296869514603475482872905487176008793424936405673085021973514041591620544995041842415714193527926259387876594710020672351902248919941484928131103515625e+217', '-207.5', 94); + T('1.3437482898194084408359108790569717431056936319064040016470306278420649755238589129250716839755182586596297106623509972801915917688676116852207e-198', '0.0047', 85); + T('-7.2125976851811538835264180669311252876757309817127885777282268797579465235996423577991265862898834402822899090972405912847104748143261578733778979456054998346007864343435284069799588577484912513898046820531311312862161018665360468415091050892814436289818311468501837802070896183140379745282036670643116477155731121958797307187300620339307163520531060733946755523082115115646976e+279', '-767.6', 97); + T('-3.6014175419419889979825978713404525121917028354184157603813105843373968813713708575013260529677555144144724689493141661197266911743582631754736205113266715503341523389605232359965730457026715491821102337726896541765297511282920487936650122950956509166185123335946923710632464810273024751e+116', '-23.51', 85); + T('864441744884.215763637320205869663958329635842919446190153261333597518371076208416885489806126587561695103959519298009135858834566699504679568405218950836778578735139166130606578479646072479355927241854902595925015466294859320621226069690609744261681250304', '1.404', 81); + T('2.1740698194376449374483147468467027620784304276072222988616865620688896e+52', '808.4', 18); + T('3.8358611506121121577937e+22', '113', 11); + T('7.708142065054490966774434895299862856570563111111152865942369472254266622057906176e-375', '0.0000000000000002582', 24); + T('1.697054670829812124918589801369405630774787179949418285317226086899030607907838200923128944336540480137932154797404155642362243064347816887752994688507537824596616056930370261936449615792564115353680658971035397858675806419291627327666883921628766762017e+153', '35.3', 99); + T('-4.710128697246244834921603689e+27', '-9', 29); + T('3.2505902718449668133084058626546515621706592677748264541998335302067693284031047914414370910433910917853346703702752017311701370087768406221174636457161634693311184118695477205673579866365261461786447054994132502457715569269165081396243597525386428206972507983546973520886724081775555138991647659604473279e+52', '6.8159', 63); + T('10125003344964.40019736846338763496828575459544161517257186895064610033021488387585533013795387142569984', '1.4', 89); + T('2.42345584530855605369352607812401621812969514892052587699595659920444177232215830190610734163995767659717739085262295176867928060719223680015363045876418329825526462245791557686517318912084055326038644410192581225881763601238326486032097397313474568621301371994854117791159281618952104825018353797567777238802251899860635626775962501422496596274647502903894924414615487350912292031481351426623112873751676007424245517123533625171075882961511452925284934841852786866383531618051093655741591513417469573410554311639321196001e-979', '-0.000000000163623', 100); + T('-1.4631650542473900277009650505078819321358806229e+27', '-26.90', 19); + T('0.000005295825289418576524939548312590198218162176', '0.468', 16); + T('3.05549283928318655080789264037405744521084525112150000840590011398025015062827701972944507923133274963552582295751430636384831621423236859444282002625831436173279343347208611168256e-1317', '0.0000000000000000000436', 68); + T('6.8737496584907426626313819245031248376837843308744720028536801727310422590256416090562808800210844531270544472690018733914673078562856645346395894509829890694096382823686071373178326267458718358846285479617141539840116621230393837804338664073754005311299301249174709116759875425996420794047622228612301608179896688165566947248834248141957503280864708798493297587091913325875132574818764391975237904072613078649529818121345346997223704868660928398187111003322117526971179779471513066563912173514255531973497213908454568244522179614576040541056831042204810866674499062704103999143936e+424', '147892459.992', 52); + T('-2.8146479662541597081274416178733121860079696712353521349953087140279328650573199835200989048752954416072723266612561673395327067860385419926496980826273624648819979832189443473160998127180490840670643347268997115172483666046588726408061842543063557107507571471460449079090247848491631453237051551777817536688202337705039020111356944014738131800368308453481235885327559176247859131329636754873006899345889798004981220291943445182637375840333548122722503521409219604293110110218239977642014577818005413689988750976249287035141420798845245155557117360125630350198594871668428356167381408479509575844631810711980641599329408885428661560190538079795413218925648499321738196539353823363150418207529405972685060870280312509298991051194276419276281665021145145231388777163604743396002252126683136e+708', '-928355316.6', 79); + T('4.1550056575303757228119633897485161478257545991080710781246444078890480445595483297162130879326322767394020818992612209273113282741423297800374026062917889514219222760102972249776783705399405702208500983661432328199077976712616889331132073633345739451305161947343186063845584853370234906486236182246156880042982439581300028796255911192143593205953934116870666334468549426713036166883165227311236788431588170407270107831386834377236415331046139978378131343210669779889432793552847716954802965953947383085829332369100621026610341613919587586441133939688279844321511780619910499072915827001583773089715651976020809993294119257087611233862264828674135126902550664589266837280471718998978964104111815396251418310806010610004963036079972123625916091809522896488981728056893575146362581153784045875486607998050213627823201e-26', '-0.433918499439', 70); + T('-2.13825209215512828440269455240169347772084407562319954177735966744864590012014618496355742013223900851293500036195697397558882293948621657334016332630442341312358031641684225772703692879077286212410249112292259617578818732032e+224', '-203479518', 27); + T('4.07921626152759874706750636234610711277511981267140799487233110013700434628310396204835945123342429644616677263924098409140271398300308140751898877152374852101672423561384671338353950413166856702896620695812471792217562634286857498132969913812033679861984845959241689697235821203390602245450598886660048044481023188506388871537857616153846606889656647661553925800233006508370220964183808519443488054785371171178458637493447718543668982370416902695149696323193977948327786874993513535986236378654219637640158954029160466244562872094676729043997615005949784734421964950592990177655538750040478391007794104382875758798061808214848367338145330473927905182075863984150597953008335668923177942931986912633579578368880902417004108428955078125e-349', '0.0000007725113250445', 57); + T('5.444517870735015415413993718908291383296e+39', '8', 44); + T('-33338.549041729', '-33338.549041729', 1); + T('2.7214030202002235259872217354276868322505756236796101744750922254072943468398158090938361760503196297567571421573431913968089480080443473498108606049915577803053551131894096917430267992139228904833591260925102332702863889641131058350845466180073805176058062062511496305436593986927276878340795001904960142635221849217162104418149855782368706167456898339731322626805338533602069310753044118499679070391659043014863756212342671519561753648641528938961249781667596503442752009505056776106357574462890625e+355', '25403380.775', 48); + T('7.488967886646769020135665775188919173982517766411546419429833806092666779946692720558606535250488757150058796202968413241639517383652620019580992048245618242802791919565261399799275748008372859035772846386750851749482155871108863512939378067436886935381752737141129513585362569208124557454386670272939418822453438670913670149714787757724915875534683373244734438381987473430196456436990814262346701710120113213932002664424213764208834743329181661358839573220074737883074138029822996500442023856383570524772344040729242866145735668954219795903770313321694206678450634108956120637363083442475459132238765735069225942833258958556032448438304510175681777905847909119739292131657606066356382458693278659384332038729633098815077443043626686315515128390302721e+430', '5400237.28783', 64); + T('-134217728', '-8.00', 9); + T('6.4919612772480684272077477598407081955951769084986853540654908040236664132468736e+31', '4.6', 48); + T('-2.19516244547091597952961625454695348245614659050655334765404613313384017646438800510561124115050347626607557413049526710505947787909678168881471450760692589194458296975014469481607782428972426101228030076378151928725802874208326366011927330053807955414428037618766935246244704158022651997839e-412', '-0.000000000027838959', 39); + T('-408518.488', '-74.2', 3); + T('2.6122383559387081296537383480965114437482497294603331038492821930754511334614082451247995976011754175948033208350877260508339210350470971773483611262598975948388081226982520139805939801386768827832059816233575763932242012655210850575522139572300856461682889553829554870249034765972111622144e-53', '0.119534', 57); + T('4.9850229727065564838552075936058884072483546836617925693918734591757063770692197370714015506959425473376386516711436607268208277636503475437445688665069491061323537515635105084625953963084527783397499370629700852265394871597666675552871197319798769732286411073611671053518019648674881861991039408411419655406435532953187363560760310907326462424912442938917143874903625529560559341987014054017728254155646042683657020960066518571091535493426634709747560461439105274695605741238558071638728063086433086290881426724576410242527931842535143281385481835738259965154613661873378195341787543569962613719963795456e-148', '-0.02709904', 94); + T('1.56946509471456053067919046607778209965771259504948582489855492239980383980825548822368765834159376513519684340813231776441618746842197628264511664812727788324193189716236172201170988327488959873357917098281e-1180', '0.00000000000121', 99); + T('1.88522188856624562372708154656751441041381726119427387599765763695834615013232142421520586436232009071932931843172032205056661409003338693915273301223126561630347970098203184279906247655542800284362476149094060315694708604230353242909365032002466875120342181047689475694706227284673985251088619705863125778538982501735383260557349198668384156297528069830916927729430864813333996813440323955895348081117644429414429531206777610934118661932545955356203081687958272101e+350', '1396953.01', 57); + T('-7.4641079962956705920034912695642465787383566977879750308559196923222402311665962335871104200586964218306687527948988363660881738310704671349709669487610144905689251123467238632699575375039822099609504292687413249132266915915320573775450823119373280252201183083672896166447786672561808861768782076443312543759437244643146889964363933455672502577964296155349186564340392078021387512970362139779496580009767098175116221996336815276032e+365', '-425417.2', 65); + T('1.915651048048760989675223006710502095760272088541579446290639477213455428121307995153274075329786132157611746651e+72', '363227.051', 13); + T('-7.65032026817518248876564402449082201253180407179105772287243705588834467106246226864795794350056707139677395342984049031608196167e-158', '-0.0000000000008205956327', 13); + T('1.5286700631942576193765185769276826401e+37', '7', 44); + T('1073741824', '8', 10); + T('-7.492788722116264058568890205770570774859100309722464309788118049412229345772411480224300523702767256086276612012745150464681862935165491623598382139203570285583278591609354972796097254467143774807748614976801272704624819215123157317922738427454525033948883547809409740884056108275497786621497433099431568320476275959806764951584862378486525479494452910448127181400467328943711415916384184330110378180608e+38', '-2.6742', 91); + T('-9.9615483925456314514941835282258027490657130453558630944504898425429565393128463181577359582035968e+22', '-34.13672', 15); + T('1.399922200750534682219817715626042346444265577310152832656021878942015248035909712686518235139333930615671437276362060231490721869741275050613538630628001507198150040959125681675660226363983554975062957910826317184614904091530578807538850671607301864207908455029708464592014690257839027200102495492869235566493012545340996194182688131148892605629158333606816661843824439253963260085811270982958376407623291015625e+181', '8668.79595', 46); + T('1.1972515182562019788602740026717047105681e+40', '9', 42); + T('2.202115503151472939378975945429179012130502358719841711078827390192395746343741047199171734327335651520251442046215323779489495715592781811364085280202651471923814503516348966730262218625708815960745017538450289188340543284914566286787264564178893226078936128988787471928557990525062334846282320996222324625945765877847033774462855391128649374296526404082041033729448885939056214542657236719090328218184247313009075703142241933320700374462796901110200768625476731302618344824136736084289091354487089946804741870143078521211017751418875276281149037837553896673998109493098384421833504725859181031374464775140113274356212635994412769954920908641601e+645', '-116623347', 80); + T('2.809433795080632851709145012225734908409054034941321241601987773815883609706743541544402166343924517939889529050536360240983658675834106822309237371584880050176e+67', '29.26', 46); + T('1.07868398780558185107374474403020532661797776728251416174497323943011899689646635171198704732611201406021634948916076829493438856010253804362200645063540951721664626993793950535311074968979486772512114485903108974813153787515086384110800820767447561947653627148706348696137405309393089297059509877094341371443072935310278087678490134404105182181366232864420501488011018398616532312274978834403446637210442398221579810182631353067504903643457223517919753185513169702647264458151237138501509960401271778857785196059943376161475076004628662470655380785641707995265694079267410121449453510909358494365516418648346056999086350031787200888670260526532745451073436638759925695050423663041216049456771565033256332270529303132799570858912705564112506445240662496492805855959005388730223329638719134014885120936603994232094072118708951475531280218682408087208751084100846868818757315278245976624833064394058879581085028991210887627047410825276390136344004466080305862737728217342821469057995832117084467798274844185879951131300757779959691834097216917003287899924056620049926974974109199191606737920319507952408320236800792559969771048293815035062609730066303408711203037138390978875350456123554886388685750150167745416719567226420868939694324912807423373360490897739135611243033809540137389420138490212707060759530504538976563026719537360751101833747910242549437103469735149162329286577965743319935974856372834520558206976e-156', '-0.0256152689843076', 98); + T('2.88578006478481109681709292955455719460704031113277109068984071037918062293570113975476734737301949530731913632979303450186466568369318518876187546075767065504326813e-502', '0.000000000000027853', 37); + T('-1.130764362193076554708917348657069436161383119992010510285626112959278426786936465605907875370782367006311207257151205709430547608789956273155866459033031412425747753017041228269946019068798157376004812291000927158419091251680264057450083682494989856683271885476193403159681085354715517423876371812000883161101039915298940406738346701704184093773206563783365396974283025554248166993067633181013835776e+229', '-495.16', 85); + T('1.4079204473765793611205659398747988324553877949122198881761823569037754286497795555255078328593539192688183469346829895557363028984266513451480429352198565079209701785014261786299007878956587947295766448428517173439894654471188272662954572295701492355589193513351750151274620765557903307460230125360124013361832687856567900491820049531825904083512531047613995244068915188374911719721681159419255851678650464403431153812796388113981457279816536052532029022159116363377812871507097009696999094856073325011666162559051661029942614061375069471909443382620314251546452011990276242995027453796323946493608369520697971319607477108850805623943653859336240552463433942656966057268476396727643619402363764661755104039596942016778012443861853146848694945561138583599984515041713806683288152679908819567129262792401029872485370102439410128369121641465473638876158320127373102022232994888209825736760912929558531292428824599483050405979156494140625e+234', '-219.5259075', 100); + T('-3.077228040283419501485435148888847716813106712632276671229710377509021026817676725408321326107948661263691709915698886286976007892051135335651197784824163323643144277812710153968406419716183905139635176333083510237302643593683953953477494067043109636077672667948180821005422658784541128359007025402810248257138220199195378601727145592714535208968044372704483391015842523268884989073259915535384596690721656759730286732238685451797332150695395077171985430070293527840123294365665570804795301448909420756992e+418', '-5398620298.48', 43); + T('2591500643510.8703986391408896', '35.620', 8); + T('3.477283234494247174955772981135213481734078932418183722882598073322692286025940951446621170551672753962398590460771481424186923218942154108093532866071869012357999740676113816609494789228401437424825811561820654792528325225812752470383184957891230592748660748903040466372367629077067239697577276390325455061343687182891385586253067945740768918704902176664219044850100644662536723412908533903648591296570565588579797033639391045393005317694425271135677214884155349799855536719234969547130129e-1361', '0.00000000000000000041249830', 74); + T('-3.35390966929685775566428232543003229321430942684482327393890454463616e+26', '-6156.933746', 7); + T('-4911940958770.721866380729238693889243243167048192', '-25.7122', 9); + T('-7.2098871027996882164550848582893324736206875895159968045387594761033704208535510362468505731281582425298017917320284602282447985874106953873551e-295', '-0.0000000000001626351', 23); + T('2.09670982511886308779364382461226064522913244291274975553909045464953985730555995547122852179186171376596687978705841751285402054060384366505333092240660435368377833186306191605049e+179', '2093', 54); + T('-1.3120135409024675389197377e-32', '-0.0000000000235855553', 3); + T('3.06580286249339590556181770635869764259023245764469206004664101e-78', '0.0061', 35); + T('-4.429293345196932276984549040219058245905488651609667018402382745119170674779904528756935495114384894434070998056621967747005022674509457845620395626349316891933712941619646377506486625368600115937614507993729672492431012578899815005421568e+37', '-32.051870380', 25); + T('1.299270565684257922619246441017034698039805547412943905460754496572097300952165266370194652051376805296279609746312644347199238836765289306640625e+56', '-18.85', 44); + T('1.566108714385843340192620380546546555641735293434509574033302065853656477829384746549085411912657151882140111651595251043453318950397645765893613409097202898027341727466585518405768283017471302953847629952837298920882176e+24', '41.0192888808596', 15); + T('2.61958676888190130160363553014940478261307337527924200329289138176e+65', '-1866', 20); + T('3.23590932372253866812859949454563891250217856922745576253641197253435665205998361592799809e+89', '2474977', 14); + T('-9.7368504802272205153595678239454304952368475046930119079817985916928e+67', '-12', 63); + T('3.44552147465294110719732986332367243247925798357929806000836849e+62', '-7', 74); + T('-1.452398236000580121072066902680504451473423787336338424980953647832201352052465847557295963455561081881743103593061176242491787910639717141192177431170020387387239122306327928120484949004627255099437140135623570858068768556995906899604425201341758241176605224609375e-198', '-0.0000000003794433436895', 21); + T('128', '2', 7); + T('5.65251025822228531444194278761233641822281792819659230058333528631972497846690920646507426317458140864925211864848848044857090776165664263450974899867329254381660849739991179791628529582217569168185463633540183106805961127540063207424e+251', '-96880334819820', 18); + T('1.14107582607108828738727786705842372956085739834768525725464902794127546836243697599408154971875430236598124720627825695807225748800206865776759209466523560191022176894495595957948456740052589766169910566748987526231116768317131023909655394007055203701522554585739267475902349909475429549403555539653461493158398661311247261808161537169043101921093658271479583004747121113491003276556799338354235965632672999762610653218768326389269215399799820616040039956676066934784e-213', '-0.00000054573252549798', 34); + T('2.694661255697411397638382996364833318896569132107254175704475656993408149148787257876989709118912535228351106752665777548202167498537778413043897904425246334243516040510224069308160416421621694293323335359415777019643686364603342500176348207942392201863311693577378702165646022467014567507350758519739242895637828787757898674096128347546314083698792347687986627552406389069409804518896369803168004318670513348178554684863589395170672076476692813070782506346023243347685532106534664790313142896989018262863589145173454075951584755268325058105333073378797737002280203168643844576066486206631537822243062881472854331833497932080918039317893726556287893765343937829144478219032999389426126114377441753098232009323368937575158666282216495169817356507116769115165201637431411429901795895447411017897288700508354934492324978841890388723566094744246181121450362989343657238605524996170413474765724415123048917997930643380598337786915363082241543058132144906707064242590005607032784044327110468761297341884902367668493103410518314292043153000929758576269862004120759966136121319405434151364177997201999380295579576988910231518865392237933271936797413045669678563984190093867545214722525723761e-162', '0.0119276152381013', 84); + T('6.819668312352580735571062160710567114849175817831511892010723043920379092031215450236971346081546538898709343868035480833649809755005794379226534646933878314382300734811205288513924832344426178927991401393582816473921386210239936761734834845537558625877346857367488344220978330978463797202471868399404300493221286022793154457818428986435946448801449065938442082235318928992721704504378480165785082979441671849270351366472512862482347465713408854026594512160429600282728718794411008926422853751208126199019311146437195308261518055169159585380164716319779975316169881503852676219525036820498468552310784e+393', '510194.414', 69); + T('1.214529036103353599078303402353988354368901290518483617131872964733929620706476271152496337890625e+43', '6.5', 53); + T('-6.347837933056513353722482549802422893506022350398412637063463118408446866348060970316579990161491662971791431669434501980107126871004910084045827612746953888709955252364570683937894037212845688709149304388261135750051460016927221140392539241810645976791531257356157419153359404750948111183767643741377517979124849570287898660377838281034265223482576628270475748463593328028769895760141786535396100135700043132605861966879736164432625165034941381798797087075873047582570991477092202474033008636487673565486409112008997813187783434059853722747545465564823272494338930887139620822174942289758209743101745474476030369348174618632813079185886197394019109147868498920361931074940617039630508529285432884170952988080710596227749489369515496826666987363170244800209006727739277360232390906096945537367274422272e-1224', '-0.0000000000000007921325322', 81); + T('4.427788351999056892908779661304294204303506505740727156388644268519265092320054815319679560671232535269063116229417433542825837713401836579398864981866891524018752289794372972338646723907744000865693630274469282762772410301411230122599123677701587004286800853942816776387032063244935274501241310871747398849676492965589671571039172675061157921330595997693266588428933017692954803972839671865559553974412513763174029378195757001005995534096180268496099336902456639779966934268998934512369301143425326651935144496827467217523298707659499118081164646205877729620930792063706409045131266902206188922084763864137797951942027404778289235617846011440638260873801319970320165240018403702195879801694584203559689412731527544179035983805204513123788649219706079228081e-76', '0.0355539787671237', 52); + T('-1.2019514515640847575586926976222420288880922930930392632826439389028070216309009753873171550956237644053737905713930601182266550298694556856644221165736835506561041710133625619715943531598437067853105931820970146527606676211927176997675395162032067921680902917533169975496828556060791015625e-332', '-0.00000000000050893518745', 27); + T('-1.3089738102615705488950036718911116878301386483323342409513651601949943841095689259436086715966084434967103664037924413474102289403813212913777522181382481044473580351805322191321973e+181', '-78533', 37); + T('3.96435664551023166009432527884162006067853796367737813024190430384615252569493823212334015555476045223745267710440584785405114790003193045416759973795409712664077896837596687988358977963017261551575085886339378601753188813933464452096512526061746367179589942239837535849629855994642069316614543080293743786862266272667077293905812061925850138605681557967339405649099920095406780826427052068862402508544030914598887413326170889080842118181707782092869110288450380556681201356803298480762937106754408669544846715047370740072553230754652098629105895209895679440213970887252806092019885007412267948350528687016986211524428725145096245261205664457425524504259402407667126129396321622738877790982973827629236592975050954770759254867539024593007061691314559144608057254973749886498871153697476316002651798291357530399789489708421091129587128561305692205004611764864589809192513065786225109359726736441344e-1183', '0.000000000000000440688901534', 77); + T('2.678568043734091619878005678603454046890065730319059041066922617779738732552013071823964867731789481610691269440500962742418256182423074462657908268651743482014494029327824586172450705847083812144127819545703393146264767652584905037972471212033862288363332136481985535835026012527790465668040492097675469321915742224501044837369992177682352931842218853184230289300338298905895371981623996281414258096442423897257161265043380604655709475991898216307163238525390625e-458', '-0.0000106265', 92); + T('1.726146302297509640766292449752859764903022078656430010248920859830072010352007366328438911617657425649650367170506346895173396486476847725257574613405822496736182549233608967999820941307875511369188178896525716609263902445331754066625178138893213646783862066055205225450522717549872978272577099559202040965374304210695726239275248389809683461472065386641615538014939133369785455245219942798762563171967930161818698263654632146616677273270255164005761339575073597428814125346630365394507885993312732399706334184762774047407763728952601184374357825368624589796928083783689318973871597143367328054205245865104545174016228334760205754534111255523758589108503454315120311926536799827472005648122589642825287832641320048477707961989609306835298991026782291839544666294097047274554107822412948625252397092571160782378777183761424371215388093802134334984812532390805884157055020448204417356561101547571620503859926648120658212095674300954695082023275140281418952276189324248672101519574402708232154221216402609706003426735616605880789673740701217723552955825804146586105232550363059826111286997462404300893227116277343564362324133906878692598854932115522796052836850267098160405721244179608199869338374556585830298585958747040887791760204298688011390939627724800498866877415562066410814257206608746120224395781406201422214508056640625e+222', '260.387665955795', 92); + T('1.252453015827223091648143056289e+30', '47', 18); + T('4.593884321465082753417847006029094939767153045428871371185146539475234934788078659649525017869031479813190380591953477672897146298354193774199686172307595609685062957351072442717423824419651156326307969688849329e+172', '34973.7', 38); + T('6.4993779802563991313942147088910855038980304493628711994552936552675080091715543868582664478495863312478503560216160496462563144213423384672637506819444007554298505039521124189159003567749810227911510054190116940785207230365438230686589958633589792785739898681640625e+25', '19.527362557915', 20); + T('22876792454961', '3', 28); + T('429643228077338878294.90980773552148447232', '13385.0992', 5); + T('-7316.89', '-7316.89', 1); + T('6.87914590155026303370980110789497161335603936645395950008039524549423998547430459718690832485899591715423495939905041962091003793736119955958518759896414837384978971473726237305516963629287255286872328980051210041042418780821291070799434690334936525030793157741585829279074161542016174895927147907012499623328711921362945061656483581268375800046383063714806105729927399779641951702986991589688809363278120544452733946185051027375853021790353396740959054941411469330354238589831745170722278547542572570113574396538111546572410672138305451026720042576080626158546636278154541296219048542847365418147562911738603614657265796029784007988955899036541413836373006221312e+589', '120217094.2', 73); + T('1.239574795810526079748489147215724813987666305795348774093301305206857104388667872792722298696320762041716833793171380166642565938543813063965908215730138726274640558732378376081345774829243873301016011042987213064608498952230404692092930689186546931537772947407974492191946655043420261314494731696589682500096515708673465576418083366037746066181944261200756080966915362706737228961228094676733386508269067016989638785370510316351486703825902385195520744639816051326954756067123576368987864531312848054804595825163440506228252295842312598308190174979485478767598866319117877799314143909178603119708443578223570915610468469949806392232326089217551025083863958495966830034713358088911166327675839869180039029601144061805857957059401720225647922270097400056178339656509407631860651339114653575907071912293895974822551650560599072628850817170660484929519400346271419914740172937356080849208976491109534798334462570451085006567233874961401450283993130878770062700272556416772479998171111870509759292224746999678148420295642269858123285894535197188590937033092112714248284586801385841210089015311172545935949730111157433149124120743103281523326976e-1070', '0.00000000000025873908155486', 85); + T('5234016485162380478.15409743331356736233224871362317808951664029477472141754368438049197212877764328120319129016485361', '2.41', 49); + T('2.3587523476214488265105602233384822170431351571499949327792901375176219636953224670476463392373342279772850838452001851364491120595912397303760903286261541146631936830192308870389073374785895767836490477131403524578795077182693968484924474587814719179230245985331005838316256612823429831217004241217996728082675400098261089625533152223187450996066900095561520954236869900406302680423400482744491187930028993448348081190342732950402585676045621897388802838551757987655079454177981594526914994900926245046947484718071152759157721281932920908780781390332713691860960870572770040761154320419837824189071690254844854593343459633607733189681415999534694236173627509165089552965354274533408153893430075897901955566030923516936720199506503090119996175174794124435874644332511673899164593545913859009450879811276894036262929185905062064201251350256407499186307953211211742221462225577354600131030662462776599229715013951102968270099539931356477033894609326532954524810067603029689715219319863214513567526378103385141785789916386486343106420900301324775823843071160771421983879429528958998947915991010621806091931816141987852367290525737e+34', '2.386282102713', 91); + T('936715201610276565.121219177846759965092294037184459655112420506770954861339939295097568524612228771176779451285540872548572669139410080641220337509779355970915039117791045026675942372796217903566744371329096278047272159067195543527515016330528461268617826559677152033625945241108753484887834868554776141004652395753058963525578493344234441729097555557721919163232938285249196150226085243092573393734731092201479606268037047533934826431548289543047983548470548923290980238572301772673775072264037139381648624711690145835765678758822594470249537696766900852116381823037280731383416971641039263361', '-2.368146093671', 48); + T('1.3458439131498195323786528583479606393575536164255741666418955356844345324579594678199724544070952537313508949217012282459611297214665778807265341646101943507184150142509791982872347949683325035172100020000154912216772842085357404197730651656947685019039027437632994864578420850298458434675021508281598421364790325204120523582697615926276683088910375524563225657663644596592216948974056331399590460267403223032587644165524444425820025328591360851973651333314015380853968023632372287350054207185599371069878908668849043723938217393218749026137508121697823922573029674248393275179922555863853082171000692921875494766992093057203484510278165328340192460964396895589377301082266621542097676974077616873128400267882521248810555224844925459156239671725294657022129911051697181823809807228700964467590836700654852334498610034031401231488158553123767644737259941517947087785101465826866359735042387848014989852599568750748869928849235262872434098103652425750975704592582899579447794113208368377654003816485721230449311530271585346790530790428425713522163601027306457750920785462406436356452477565333325504326467125792987644672393798828125e-410', '0.0000087069115374365', 81); + T('-6.1929235359377507312281131012038351587368950153152975357535571845644005480462974619161439022738726479946690750026534164068777632032187658972625047122850721897565751294389171057608669479324287486532007867156146673581246410700360784140288599508760017944860321480468003345825664794759524541276131175689087951776415011273003161501760326678723814154494949608727351108658698662447773169903947201447280945550901147241628131791799019695838180988668491614860985218842845383323542953554350520436926580209264504224289641207101059908641550039414260263864284289634535580271422536744706681662746231304579346896472244224610217365387765143127793708245503177386221263366770715991973516535247445600197317181214103464901242633208165352628228359009946968657720259318250928483525927379586656228952459195584561227411138226350339186199256456210254130733123824550545306156294840068619857494045273956142065000283386051662650884544228310001e+238', '-1527.186030801', 75); + T('-9.18448171920669942200338050009727274073573579465100492416464784644248864677562331387086995022599687737054074140424187879986024804042070022603490146718362719056788563440317890910682257768632925460866552260450415793672740716743856864948011399578402033107962721324762764871499139470157293091799845778141752390211181570286270362089589942764421437922022663206638528993662330911966459538905107421403529415706249287725923857606476849002798755812680628308770502507877888997449832630062999974358780733e+247', '-11613.6333', 61); + T('9.00534500151871393968393182204789895254808009774083925739583913139744428258820018895294210766290738563245192706173741434367174311803991979819858136383571385689405915210566734194237574513700408103748220971184119700751936043969773600887138954770719916145764591788895536769504424586656704372424183902701252759414411596149470601541857251360631738659563583649636774213282738217476649973300597538010960389409378261220341346226990122343134167832094311982679300076141215464857703660864924210486350832131660412093540844768322422730252869897097733912901747800467318861862225211148617574307735346975751376032341961536913141883210606579274491424216450106329517468829186737530608281956211322014174714075245950188408511119277135829814966934159576369452442208992213257734675865633857771370587246881314008195421762766997418140893877428847481759362859431583598206066370359444199841730507231732351726597037154719568424203772133372253713759753114003013627088700294122141177777020252868547836359305587452020511868681628046227604546542259628717458912576794483424426690392370814102629028715884512020934842234539838799872e+1097', '181614013181552', 77); + T('-1.23528311430017745980681640966956076652030679452919906158752021718722301574640224534929754544956717572460637538159556600593377996815523698860198279346656557673391582603822239136397525796715515594924893485174002763423256737401358209070784994372919823627795438659925045145838110381445677693346919667629645750108678235386703421232818567784359923933722891257791623191263321196551881442530246560410717585179292007822202786185443194364605326148507122824090647294413224330381273679824886549106621139051707355050164555704989028861454165044951508278420052199256381844433504794321028008032654947772671808005663922922038567755972745149376920700771177235017180770498424038993156220009935199044697962770631826942473822311984815669248e+475', '-61431287.1198', 61); + T('2.648409294963988844015616e-24', '0.0000000138355056', 3); + T('2.40863472207038829716951461596425356200891165327233287498341065017430044564718221477455813374032856667895504085743031089347856425830213625711815509685491800628989456526993157007511653813393067316060298253585492583958097263354394562221211900373157618798878275619835293896301261289133749847496154802330721946407650402052956106639135229248180394944200385403412146150497882700273381421471626181859523581299015700836664867216504968658889499860010034200157321932124862289179191239642591047175122517733014555125735104472403712501002006088016431555682009e+357', '6337.73', 94); + T('-3502571449.82200575261531309080576', '-2.6', 23); + T('3.476476818948845998001030650476295453181247545559522084788918535203260597551626095245998397584095580303926090518042805770647508288690085639158825885044253780231438163844934309393e-520', '0.00000000000021393', 41); + T('3.01264602077503396553028159046697775952364093583950024836015253833440897836386470207048971682950128610418919156549188373312577357571717925360563881487841993249907698003381917913550805575200795765716052288892628051588664016510473689746879884622780863018244491731859793637242017876542348273336934204544690232710638389609197987886252503990407378825398639153993405459244929392649916196490420428591295051414371300821828051366484998485944752317128395695896528773542603956895037622256170062938519314235861903738115128360302046928256980541146446559607826088951046677218861706599854555915276720853351646088067836131525708447208119772629571725216339427934609234459201358526789418029470210806603721281e+161', '2312.83553970261', 48); + T('9.005184717176930478102791782076862228006327352615805784783146333035706197635879005693552412099811970184378799956879273e-246', '0.00000003753', 33); + T('1', '1', 25); + T('4.05129929545010159177895753388178150581456809338867612606558959308891452424132880822384248894555509941430703770187352267719278049966852159867408411313868048284652990968283076525530668485093689102888375971926511478236021580486207199815304541755517361681744424769768925178687424398875682126555432767026580854082660116786254097997542073404521882149466694962687119267533030305371904385001716197248516783116746628128159682519599799144439980293050507629744383718958560423968444215424641122740550965524020102239043491734038919336670135222799567722578231175799352527458223575143415900224592903685252952681818992387167675100469288777308071037639375810753979067339068471e+77', '6.310711', 97); + T('-1.1809125003067061836785344667120764389443931749265317457525459548456128442105786285468877390219672806038351135283671645849621670658638427296075188535296e+27', '-7.46960', 31); + T('-7804725.584345565904628551916716032', '-1.8', 27); + T('652.68343537143736977925527144667849979675453569710942641839519790994481', '-1.1', 68); + T('6.347632690470980780771578675552276637061059382774318001265539984506213934765263884921639481863522855446850248190640384975242547827559674641143687363586046653926918728263293566118669512822042487976415052111413256676605941161792519436820477099825895274456934341461395679285131684015935258759683653353217057215413375333241770058757608263160466756836580028579606957497117342564425931824695481220509415164212500845154298184282125397297745919183962458931412844756465334244299196320609660981439919849161615207060803762786556888490763055537968954854206553722868857068202003810763342647095974540704073677096870053573460935331503249667563019861185471271460943390068145540005687872827e-1245', '0.000000000000000002992906323', 71); + T('2.15563894172196024093920977150538929699155317817435721941139671042584098028409386483275286853014376052273085179955316467499415655783131107622838141170698636978879185262823690153018555305556315588279210146398953033272874508316308577279223442110325742384869562140427172170238905749958161250632960545305389673718773669576798283170556914818983685326769736551061354350641792755121899728402406494468077316475802887495468901294965903992610334661015465862948472103491723924769010992037621122249854108885083324606934823928420467636542974980236452139793226916820487035909041906512281298939379459990899889643386394707926539730879629157307711871371840222169925653434081781148892704580585587764074713326028394355564539751395890997165055128928791058726295150819453922316393488593599284988720811174363504621711710563117496721630026298161236567852610043373993852510501083512789025524730162959143248393084069076712374797747281972636928788000180283289392557e+413', '324425.0251253', 75); + T('1', '-3', 0); + T('4.26825223812027400796974891518773732342988745354489429495479078935112929549619739019072139340757097296812815466676129830954465240517595242384015591919845376e+55', '3.6', 100); + T('1.143346541001259437465016483752642875340200408207372315398374410086504054045958634479945641547514904516533919702060746490155830653988883705469429546657675670673347514271976875109918113055399954802405065425692486675365016543448426931378922954782957026636988416e+190', '-388997.14', 34); + T('1.391479860226959780852496779461260634580951060711489905798047445581119629509685004732118558920853318033429289719854192097911392274604744812177542476869031306237630906988638098552100901480110526866015997536096860367785128698535455722265589251495705036009334110148089566472594008624482378925581538366245059147829461639938451131334656e+162', '785.994', 56); + T('-2.039429275458086101347617297850948854294429450037773018607110681185721614063201210356599410953e+93', '-27753', 21); + T('1.8072708076715752612606017458825273480777271963492548142293548724970849500539908571180569517655791008990836891664536992680448e+43', '64022.984420938', 9); + T('-155568095557812224', '-14', 15); + T('2.18753957001465798602093911444285519704647324430365134831536108015616e+44', '4954.46', 12); + + BigNumber.config({EXPONENTIAL_AT : 0}); + + T('5.0600621890668482322956892808849303e+20', '907.27', 7); + T('-7e+0', '-7', 1); + T('6.1095374220609e+13', '7816353', 2.435); + T('-9.01e+2', '-901', 1); + T('1.016984074247269470395836690098169093010136836967e+39', '21584.7', 9); + T('1.497639134680472576e+18', '4316', 5.55); + T('4.1717657571404248e+16', '346822', 3.00435); + T('-8.983272e+1', '-89.83272', 1); + T('5.308416e+6', '-48', 4); + T('2.09764e+3', '45.8', 2.9999); + T('3.83432050166120236679168e+23', '52088', 5); + T('4.096e+3', '-4', 6.120937); + T('-2.679971527468745095582058350756311201706813294321409e+51', '-517889', 9); + T('5.067853299870089529116832768e+2', '3.47508', 5); + T('3.48822062687911109850066182676769e+32', '4129', 9); + T('1e+0', '-429.32321', 0); + T('-4.2773e+0', '-4.2773', 1); + T('-5.8169306081172252508071119604378757744768e+12', '-66.6082', 7); + T('1e+0', '-7.0654', 0); + T('-1.51655708279450944384385164853883404204414169862685507e+46', '-3956084.3', 7); + T('8.1e+1', '-3', 4); + T('1.296e+3', '-6', 4); + T('2.9e+0', '2.9', 1); + T('1.764e+3', '-42', 2); + T('-9.3418332730097368870513138581415704704611459349313e+49', '-356673', 9); + T('1.517108809906561e+15', '79', 8); + T('3.1063e+4', '31063', 1); + T('1e+0', '-21914.49416', 0); + T('1.4586250332983909737249e+10', '49.43', 6); + T('-4.208092749838142546109102616048103440952842087045576022556672e+46', '-4577028.48', 7); + T('3e+0', '3', 1); + T('1.4301918832998497740081358663795354088849575358074712812593899025686055664154241e+71', '784195396.7', 8); + T('1.914994057877243921847839041839022064004621019747303000421532785660701999616e+57', '2315715.86', 9); + T('1.40379741624014849127481344e+26', '804', 9); + T('2.1305364420464979969795870610432e+21', '18437.32', 5); + T('1e+0', '-48', 0); + T('7.018e+3', '7018', 1); + T('-5.8149737003040059690390169e+25', '-729', 9); + T('2.537640625e+9', '50375', 2); + T('1e+0', '-287', 0); + T('-1.879616311308566413901e+11', '-179.81', 5); + T('-3.73314280039567349e+17', '-3269', 5); + T('8.503056e+6', '-54', 4); + T('1.114538684361769559136325232186960408417483078419495901986816e+28', '3205.4344', 8); + T('-4.27504205e+3', '-4275.04205', 1); + T('-4.18195493e+8', '-53', 5); + T('-1.32651e+5', '-51', 3); + T('-4.309348e+6', '-4309348', 1); + T('5.2697770766776504576e+19', '-7259323024', 2); + T('7.334473e+6', '7334473', 1); + + T('4.2587208337796928798976e+22', '-674', 8); + T('2.5398714208994744315474847375553672678449979949471296663472852498581058264323e+76', '82219173067', 7); + T('3.8595867893817789e+16', '38595867893817789', 1); + T('1e+0', '6607929.612', 0); + T('2.03571124747179512510686558355453870501244709050625e+34', '-377727882.4895', 4); + T('2.45293306092383728169089251608498030232760591201e+47', '-838901', 8); + T('1e+0', '-3', 0); + T('3.834566459566834602823771544700625e+33', '248845085', 4); + T('9.9603189655699799982630929090395077799549456e+43', '-99900649454', 4); + T('4.96981290961e+11', '-89', 6); + T('1.587141827118019619140350040987490145402132153698899021243321868668968193390822866803131555419115810065' + + '08901525889227579394470766224134369e+74', '175595288.8066529', 9); + T('1.326409999413464946341631126231535779147856072448189797080406801e+19', '-60348.91227522707', 4); + T('-2.050107090202653994550415295865311714194868710425929507925126964581376e+69', '-72837546696276', 5); + T('2.0550048143314549586011369057890711537772093948321e+49', '-2129135057417', 4); + T('1e+0', '3943801.89538088', 0); + T('2.17438998607457e+14', '737', 5); + T('-2.273581752472e+10', '-22735817524.72', 1); + T('1.51891070159203e+12', '1518910701592.03', 1); + T('-6.42199562432576e+14', '-86276', 3); + T('1.33010089e+8', '11533', 2); + T('5.1662108991396663099278667856407361e+26', '-4767525.59', 4); + T('-2.197e+3', '-13', 3); + T('5.7261215932713209368576e+22', '489176', 4); + T('2.63105908732834720740862027188940646962896811537209872829318157804817881e+71', '800488505731', 6); + T('-7.8151742291e+2', '-781.51742291', 1); + T('-2.5619022164869008875e+19', '-2947955', 3); + T('1.888497394256858387595532951034741052100428552247961627495355202904723558656e+3', '-6.592180609971056972', + 4); + T('1.227102111503512992112190463e+27', '1023', 9); + T('4.762033342402709161761620616017059035607e+39', '86210167', 5); + T('1.0526899962331857933889886363874543386374239042307e+34', '6374705.107', 5); + T('8.3043861038534085480857730707894983974895341475449922046323943309856240866914720437665233e+61', + '7584431.953', 9); + T('5.4787291089024129877918140548999194405505068584642366052046899220357579072497678119620025119214429570421' + + '679076944647727607529032984620150444553526120397e+151', '72419131838243117', 9); + T('6.1203577224967e+13', '61203577224967', 1); + T('-2.6742593337474927167986914400257603e+34', '-82827', 7); + T('3.490938536648870448335810684618787855050175354916141007545163425555957335829e+75', '247548469', 9); + T('6.634204312890625e+15', '-95', 8); + T('-9.171271e+1', '-91.71271', 1); + T('5.65625765123605544067809018296482219675982471958093705254464e+59', '-9093998202', 6); + T('3.518743761e+9', '-39', 6); + T('1e+0', '-5420353171006060062', 0); + T('5.93548365959371477646876280183482286894691258676416e+26', '840398698.65610156', 3); + T('3.05021119744369888239209417566581849921624834657246971302432870103990316674041818082170961e+89', '-82045' + + '5414011161', 6); + T('3.2696530375744e+11', '571808.8', 2); + T('7.5976962512577721e+4', '-275.639189', 2); + T('1.902906615566371112511312310657143013376e+4', '7.1760176', 5); + T('1.518464318469541965652429354308518011195184133938752135708801e+60', '33317743', 8); + T('2.1320058778623362693743157943232639078619851096757416882191780337397507274264845664066920942408900138964' + + '6413824e+92', '2444169945946508.968', 6); + T('2.22147484530834915265639755288996e+8', '-14904.612860817114', 2); + T('1.492078384275163354935132877205588401e+36', '-1105217899', 4); + T('-8.706315974131812740752872336328574378946466095300435988405613445608906916485832445671913193616433992611' + + '1276712486987242162931090900645752178720048529774274761e+31', '-3538.91793390607241', 9); + + T('-2.137188356786572105085597593380951428481871335229083554584070474976079844687257680784073933135806738155' + + '846154867946651092729083821725815874768375163982851482102962410568100645181922392637169148087702583906275806' + + '254987676848814681203987550808366160736707783273633323341494160195050788402536450819951456112231044987896082' + + '054284953492245429169226582932327802987445013148530522433068163661483119195972210188504560615278918448219025' + + '00302159789434488225792e+125', '-43837.525307806238', 27); + T('6.6067183217034216835242910438119195789788339709493349261334009277024675568767116522521737472677079426635' + + '748603259327817717050761351617610783486587612028204471198915744801916514515768618923473461233676712402753179' + + '616115705829361991013069927369820940249862144e+28', '-63581.52864975395137421365938883267810362492', 6); + T('3.4979655423042386318207008930737637967359866053138998526505479068249644854876701482811561341347105355107' + + '695596776164641704434681969517211923069874207364828070027467521475982678466251216378786468053405366050900916' + + '905682920934733855175647035328921497719019616796867272653837232009633511918699584196136643032274244642212313' + + '884180837128156688381283842300678798685499010807063746785776492193558002382725297304258913361e+62', '8606583' + + '55.93419774133511168973596889241553275604551215135281', 7); + T('2.43e+2', '3', 5); + T('1.1341259418236998571758990926811782086077524757263871423863079766086030645673726799115988350322336274469' + + '528121736526520039192242333771040454545272536238688950013853620343757910936524944674880346697808001951639020' + + '756685105416346426508389541123017097529060283829118103883424462596062875341251599735321937114348037712815556' + + '934333412355272212045907182873831909566029976608100685207198148793211027456e+142', '-77969657.57799062937836', 18); + T('-3.002868635110885376257819498476291928435426781135644398581841720946695913529443732738563280115637723690' + + '527669601811845008088443533185638348230873897655818695558823986816170233733475974743919539739293881958257711' + + '082964428156108562084141530748801048154746755861630902751665438161045606541506565311391326592002987029794247' + + '9155862011879884534002975129045737955826661617772520189976935251896803639204375428428030749e+58', '-3144155.' + + '647351179442684823966727126493552586749', 9); + T('1.2017535763663944855319855165568672417473424918240625939835372525654871294098024731568097136162414533196' + + '302209237255696285222881479316995572849461193750229851490507274307754777241507309897136938873682646559601827' + + '818522406048398360528045183412226195227922260847969487653141933223147699460606337223535312433317282585307625' + + '14582945950418550784e+31', '27540.61485935537676544614263765574563131573245204', 7); + T('3.3715504067877824494301254520391898692874566929517185069539454439093971130103103995461456226946881594407' + + '231961561136789085959653748072704542114811853522742743643494246976010868257225332083632035616264964911458078' + + '6938367825230347818905248996593031355662611333376e+4', '-3.68110925219710489918033269313682', 8); + T('-1.157385562678413511184308898769846329872668259271078544423253372613586833033423503791374542602879075132' + + '311305638124240471079826030985837104460703581522437292662638238646090030670166015625e+186', '-7784665', 27); + T('5.7216584769709576633639728428105243709762039786762015993329350164736e+39', '-8697220540.1137988', 4); + T('3.605080945893673836738483946060969335788919921875e+3', '2.48435', 9); + T('-1.362404507662848650537496030549874060243136512349225493914817345823216048548172723419966950986850374951' + + '739062406422122991421171819900345266361503090008226665166641608549693639479556058501083403734722051283642171' + + '702315664077013568676066027004539719689871686866966504316666900974963459985167975529154752566435990494883222' + + '43247996920458277719083301674288561258518312772229949771006312491204843363917607453589630126953125e+161', '-' + + '3009460118.872263767875045', 17); + T('-3.843371297315665982931203359606126137800390271392237908468836564381335317605019011842110932416054439429' + + '378863667709490793077731714107684101027634234502991961374605763957702424230907755584087764579064955483406351' + + '493859629284536525094600819056677481423671987511092619602892825089212125285973667322259735000675496129438960' + + '5594296221696e+157', '-271616.155606', 29); + T('8.880125173267286184293229956929e+30', '-143903', 6); + T('1.2933690030633029978317864458950890700698349292432976269804895466563737201880939364145851524416113479708' + + '518067001609042030295271670130750045121e+14', '-7.62048571', 16); + T('4.4911854404409149925571757890570413318443326899494030577850505583635288027204483770002925339061413234579' + + '0751503571600332872e+26', '765808758.66956931514481639498062905791538', 3); + T('-1.128193052103617375313057818469912250487118062091774976e+29', '-646363.29196', 5); + T('-3.852842458277771128223673975490918109e+4', '-38528.42458277771128223673975490918109', 1); + T('4.4731752932054401250767895500165212172045977003048118078740540509372027814009045673824755086223811265665' + + '9162732461713512251836889602737214995151906586537236627456e+105', '5932.48', 28); + T('1e+0', '-13.97065588562499', 0); + T('3.600545803275794460618862354918801e+11', '600045.48188248151', 2); + T('2.5693800113130673596912052579425172401156285606894961933662611589081996263592777487294665112945054695374' + + '79575614097255886064905027804073982599354300474897943e+129', '62080.7', 27); + T('5.8184614940398660397269861002282485754727820202610984176867121393228080929668759435750127783038726637982' + + '733623328431481036051105505754347945097758662358771120575735317995690686375214099713422708363500801239117100' + + '825191190580442024497060759059174441880072773407853158923191005671440255110099432788599963091463491081295880' + + '09524947393206783018441414022970002633906397294399684375635228021017590940658971148436650082905540838555648e' + + '+102', '6398.880593717242', 27); + T('1.3497135645575897529253431118705664765245378061900400303221733155570426158512526184604071289685694603714' + + '4900053640398406244356726653396169868958721875222540716653887768486266703330919098362921e+11', '4.1528548909', + 18); + T('-1.77396388128500114222945974047586725531284545911409446577e+56', '-913', 19); + T('-1.234934401068907372254145669800965657224014404194120877473524432765749324191815980973795365542372548417' + + '270938366077639126652036699333110108213095940749940674117006576189505444008333197068723155539463584326235225' + + '64358319794505880365894233180227408889879677018966524371664896e+230', '-90520083747.46', 21); + T('-2.175250019420677231502945585316047309543226583810643532856810988679256810815060837059831560661631867460' + + '91443633027643554689317160117967955473175500964155968361524273945120598810972722792061e+14', '-3.121741', 29); + T('1e+0', '-562610.16179592649796590823394093366548', 0); + T('5.5399516545866639955830015026176e+11', '14.94', 10); + T('1.4941893958492691882112550397099333090864242597784459064194649425760971480442163767897353189803927503362' + + '856448046387436008075500742061282723456500292550169543216112640021419198404623695509050987637232549016751357' + + '87504979910497931539962354019230845564318816091666473025536e+126', '-32698949771.110178432792', 12); + T('1.1504940871276742926708823617505372960241390892442547940194260102743306128298973371802547471453755938653' + + '944600792141533514422490556963535378521856840746722206160260148176604222079226186281680715577736316488196108' + + '040509176925372372483300649927835887344415603493563915019264675154039059770309142781930141352329958156926976' + + 'e+15', '-8.7358521345995835476', 16); + + BigNumber.config({DECIMAL_PLACES : 1000}); + + T('5.5626846462680034577255817933310101605480399511558295763833185422180110870347954896357078975312775514101' + + '683493275895275128810854038836502721400309634442970528269449838300058261990253686064590901798039126173562593' + + '355209381270166265416453973718012279499214790991212515897719252957621869994522193843748736289511290126272884' + + '996414561770466127838448395124802899527144151299810833802858809753719892490239782222290074816037776586657834' + + '841586939662825734294051183140794537141608771803070715941051121170285190347786926570042246331102750604036185' + + '540464179153763503857127117918822547579033069472418242684328083352174724579376695971173152319349449321466491' + + '373527284227385153411689217559966957882267024615e-309', 2, -1024); + + BigNumber.config({EXPONENTIAL_AT : 1000}); + + T('179769313486231590772930519078902473361797697894230657273430081157732675805500963132708477322407536021120' + + '113879871393357658789768814416622492847430639474124377767893424865485276302219601246094119453082952085005768' + + '838150682342462881473913110540827237163350510684586298239947245938479716304835356329624224137216', 2, 1024); + + BigNumber.config({ERRORS : true}); + + T(2, 2, '1.0'); + + assertException(function () {new BigNumber(2).pow(4.4)}, ".pow(4.4)"); + assertException(function () {new BigNumber(2).pow('5.5')}, ".pow('5.5')"); + assertException(function () {new BigNumber(2).pow(-2.1)}, ".pow(-2.1)"); + assertException(function () {new BigNumber(2).pow('-11.5')}, ".pow('-11.5')"); + assertException(function () {new BigNumber(2).pow(0.99)}, ".pow(0.99)"); + assertException(function () {new BigNumber(2).pow('0.04e2')}, ".pow('0.04e2')"); + + assertException(function () {new BigNumber('12.345').pow(undefined)}, ".pow(undefined)"); + assertException(function () {new BigNumber('12.345').pow(null)}, ".pow(null)"); + assertException(function () {new BigNumber('12.345').pow(true)}, ".pow(true)"); + assertException(function () {new BigNumber('12.345').pow(false)}, ".pow(false)"); + assertException(function () {new BigNumber('12.345').pow(NaN)}, ".pow(NaN)"); + assertException(function () {new BigNumber('12.345').pow('NaN')}, ".pow('NaN')"); + assertException(function () {new BigNumber('12.345').pow([])}, ".pow([])"); + assertException(function () {new BigNumber('12.345').pow({})}, ".pow({})"); + assertException(function () {new BigNumber('12.345').pow('')}, ".pow('')"); + assertException(function () {new BigNumber('12.345').pow(' ')}, ".pow(' ')"); + assertException(function () {new BigNumber('12.345').pow('2e+1')}, ".pow('2e+1')"); + assertException(function () {new BigNumber('12.345').pow('4e')}, ".pow('4e')"); + assertException(function () {new BigNumber('12.345').pow('hello')}, ".pow('hello')"); + assertException(function () {new BigNumber('12.345').pow('\t')}, ".pow('\t')"); + assertException(function () {new BigNumber('12.345').pow(new Date)}, ".pow(new Date)"); + assertException(function () {new BigNumber('12.345').pow(new RegExp)}, ".pow(new RegExp)"); + assertException(function () {new BigNumber('12.345').pow(function (){})}, ".pow(function (){})"); + assertException(function () {new BigNumber('12.345').pow(7.5)}, ".pow(7.5)"); + assertException(function () {new BigNumber('12.345').pow('1.1e1')}, ".pow('1.1e1')"); + + assertException(function () {new BigNumber('12.345').pow(1e9 + 1)}, ".pow(1e9 + 1)"); + assertException(function () {new BigNumber('12.345').pow(1e9 + 0.1)}, ".pow(1e9 + 1)"); + assertException(function () {new BigNumber('12.345').pow('-0.01')}, ".pow('-0.01')"); + assertException(function () {new BigNumber('12.345').pow('-1e-1')}, ".pow('-1e-1')"); + assertException(function () {new BigNumber('12.345').pow(Infinity)}, ".pow(Infinity)"); + assertException(function () {new BigNumber('12.345').pow('-Infinity')}, ".pow('-Infinity')"); + + assertException(function () {new BigNumber('2').pow(Infinity)}, ".pow(Infinity)"); + assertException(function () {new BigNumber('2').pow('-Infinity')}, ".pow('-Infinity')"); + + // Test limit for exponent. + assertException(function () {new BigNumber(1).pow(MAX_POWER + 1)}, ".pow(MAX_POWER + 1)"); + T(1, 1, MAX_POWER); + + T('16', 2, '4.00000000'); + T('0.0625', 2, -4); + + // As negative exponents involve a division, the result depends on the + // decimal places and rounding mode specified: + + BigNumber.config({DECIMAL_PLACES : 20, ROUNDING_MODE : 0, EXPONENTIAL_AT : 0}); + + T('-5.196101e-14', '-453.8', -5); + T('1e-20', '8308633', -17); + T('1e-20', '834', -23); + T('1.6666666666666666667e-1', '6', -1); + T('-1e-20', '-71', -29); + T('9.765625e-4', '-2', -10); + T('1e-20', '62.8159321', -18); + T('-6.333754988633e-8', '-2.0557545', -23); + T('1e-20', '33', -24); + T('-1e-20', '-5235.7923', -27); + T('-1.29728108e-12', '-9169', -3); + T('2.323057312542e-8', '3', -16); + T('1e-20', '1523620.62', -20); + T('1e+0', '1', -16); + T('1e-20', '13', -25); + T('1.5241579027587259e-4', '-9', -4); + T('1e-20', '531385.4', -11); + T('8.4322648810503e-7', '-33', -4); + T('1e-20', '480546.8181', -13); + T('-1e-20', '-83591', -9); + T('1e-20', '457.54', -29); + + BigNumber.config({DECIMAL_PLACES : 40, ROUNDING_MODE : 1}); + + T('0e+0', '41', -25); + T('0e+0', '-26403', -25); + T('-1.83965573171075e-25', '-28.5112', -17); + T('1.3846500590693220280355384e-15', '72', -8); + T('0e+0', '388528.736', -15); + T('3.934117957191277521704056558e-13', '9', -13); + T('0e+0', '523512', -7); + T('0e+0', '65', -30); + T('0e+0', '-43284153', -10); + T('0e+0', '825797.7867', -9); + T('1.45171e-35', '14.49674917', -30); + T('4.11323023e-32', '713.2735', -11); + T('6.75896391888332043299090622098e-11', '-2.8992', -22); + T('0e+0', '9006558087', -9); + T('2.35898248759e-29', '9', -30); + T('4.2316349570524877e-24', '-835', -8); + T('2.306295e-33', '-18', -26); + T('2.735111227791253388712174e-16', '6', -20); + T('2.11e-38', '-5855.32565', -10); + T('0e+0', '-3338', -20); + + BigNumber.config({DECIMAL_PLACES : 2, ROUNDING_MODE : 2}); + + T('1e-2', '95636', -15); + T('1e-2', '802.942', -28); + T('0e+0', '-31645', -27); + T('1e-2', '-839791.83', -2); + T('1e-2', '-2.8383287', -6); + T('1e-2', '61689855', -2); + T('1e-2', '7.404284', -20); + T('1e-2', '898183.004', -11); + T('1e-2', '-771825.7331', -16); + T('1e-2', '-33080.258', -12); + T('2.6e-1', '1.4064', -4); + T('1e-2', '-21411.3', -8); + T('1e-2', '-444', -8); + T('1e-2', '-456', -26); + T('0e+0', '-84450.1821', -15); + T('0e+0', '-393', -15); + T('2e-1', '5', -1); + T('0e+0', '-7902377.6', -27); + T('1e-2', '4695.5', -19); + T('0e+0', '-198', -25); + + BigNumber.config({DECIMAL_PLACES : 50, ROUNDING_MODE : 3}); + + T('2.5224883818467056168924068720414334436865e-10', '-62963', -2); + T('0e+0', '231061', -19); + T('-1.33787022089433001581801823890617687241090613775e-2', '-74.74566549', -1); + T('-1e-50', '-64577145', -15); + T('-9.2e-49', '-7293822', -7); + T('0e+0', '6853973492', -16); + T('5.2813339504e-40', '61', -22); + T('0e+0', '-376283', -30); + T('0e+0', '728444.059', -27); + T('-1e-50', '-368631.5722', -23); + T('4.704e-47', '52631521', -6); + T('3.57224508459076360310928212162780064014631915e-6', '6', -7); + T('4.406926288364964664194824943180564261e-14', '469', -5); + T('1.4551915228366851806640625e-11', '-4', -18); + T('2.44140625e-4', '8', -4); + T('0e+0', '32065.3618', -15); + T('3.7252902984619140625e-9', '-4', -14); + T('0e+0', '911', -18); + T('-4e-50', '-226', -21); + T('0e+0', '6584.1', -26); + + BigNumber.config({DECIMAL_PLACES : 101, ROUNDING_MODE : 4}); + + T('2.59086221967070203169073279093835370593438251373865163612424184820637293172653704e-21', '7280902.7', -3); + T('0e+0', '-864898946', -18); + T('-6.92056804675353e-87', '-4243081.8', -13); + T('4.535096358699077993843952445171547362594555572598969066238446195262298595680218449724146e-14', '28041.71', -3); + T('3.935198147655009521015158343912785620124855179789168611080864740903996079598197380173314783859e-8', '-71', -4); + T('0e+0', '-22174.6', -24); + T('-2.99258857055507737893205013175602880569082447633970771174973412126870110482831422782576004e-12', '-44.287279', -7); + T('0e+0', '470977.3', -28); + T('0e+0', '1491202647', -13); + T('7.6416831024439568243705975297501568471970365586580909307933089678e-37', '-63.95', -20); + T('1.265999063160693261086986795629771233969286862727721581486029700338021749863905100710225474433149e-5', '78989', -1); + T('0e+0', '4669863', -27); + T('0e+0', '68895.202', -25); + T('2.739979564368301888555652244200021058884694833454583774293368045917370205983074157e-20', '8174.2993', -5); + T('0e+0', '-84777.31264', -24); + T('-1.61732012052302022569648421623255682672403613813784e-51', '-8072.642', -13); + T('9.226701330968798029567410873712667474511623e-59', '86', -30); + T('-4.52671289980544818356121416933990316474525113390656357838131753149833770190909867e-21', '-805.966', -7); + T('0e+0', '-62548432.8', -25); + T('1.2208830071779439347812238188621035387222053043582168736013775635140091964690008930489382362e-10', '-90503', -2); + + BigNumber.config({DECIMAL_PLACES : 77, ROUNDING_MODE : 5}); + + T('0e+0', '66772.53301', -27); + T('3.40661780943015419152e-57', '368.73348', -22); + T('5.601099885e-68', '5310955.57', -10); + T('4.7583024e-70', '4452', -19); + T('6.90016290197904917102412334010616805829465226173165163729397834725e-12', '-617', -4); + T('0e+0', '-107429', -28); + T('3.31141522e-69', '2654.601393', -20); + T('0e+0', '29989989', -29); + T('0e+0', '86252993', -26); + T('2.526578217600621656723144619575640216185522e-35', '27.64147', -24); + T('0e+0', '67591', -22); + T('1.045378162048104058782115833482674315266588732330848431111612381555126e-8', '95659163', -1); + T('0e+0', '-442', -30); + T('-1.1560137793600081456221291815651129339464282155352978388454e-19', '-13', -17); + T('5.58677799866283804991416971229e-48', '8664.361199', -12); + T('2.279303152972397504104114985089222523674913654876994600999395e-17', '352695', -3); + T('0e+0', '-1058', -27); + T('-1.59341022326498995406233262095617818e-42', '-6306.5', -11); + T('7.1812368392200578e-61', '-5741', -16); + T('-4.13699730669298062229277514676940165486322151495730381776e-21', '-71.29', -11); + + BigNumber.config({DECIMAL_PLACES : 99, ROUNDING_MODE : 6}); + + T('3.50565137890907848896561225350273375702045873464e-52', '282', -21); + T('2.5679471225603104166379068675724780241775210532444313569170923793768408333314758e-20', '91', -10); + T('-1.41295214664272077547931481358044650743763505172248724988734056104337e-30', '-57', -17); + T('-1.6987939248665576039846745813760545846750230030808816733060274510838e-32', '-47', -19); + T('2.5752032499330351923455285237362946185406503583972342814435847681120726508860096355483248328e-8', '78.94', -4); + T('0e+0', '171036487', -28); + T('-2.69509379734942915218278341741127616464435811759556667850711208302182540858969514716020661667e-7', '-3710446', -1); + T('0e+0', '186138.741', -19); + T('4.37024265074487259941007405227545667043223030296145105953223847971330338431363825001208e-13', '-5.922', -16); + T('0e+0', '-68229265', -23); + T('4.928268737732714614617566124770385834839673627880400464580256256e-35', '-522257', -6); + T('-2.022506359274224265530332563554654257153128338531e-51', '-7935', -13); + T('4.113745803364219006888865973815476523221392611155744131624798603545707151167823836246769e-12', '-79', -6); + T('1.58e-97', '7449', -25); + T('1.118728735197209316850322750834837614213911286885421936356799842846357177424981773587541512e-9', '19', -7); + T('2.30221163139014605760922065192648652054327053388946752033272296649e-32', '-433', -12); + T('-2.267272190443616852157926557261723579010324347431719319355102519288715860877837553741191e-12', '-7612', -3); + T('3.9978176310189055673570151190218519691760260637389486960244942965129919180092262453024314407659703e-2', '5.001364539', -2); + T('-7.116521605575577249405567849234479247439447514e-54', '-804088', -9); + T('8.903896183702542287639673e-75', '-294', -30); + T('8.07793566946316088741610050849573099185363389551639556884765625e-28', '8', -30); + T('0e+0', '-81529053.21', -19); + T('6.5536e-12', '-5', -16); + T('0e+0', '-393954461', -21); + T('8.6647113997049045695e-80', '-80579504', -10); + T('0e+0', '-148396', -20); + T('0e+0', '-9359', -27); + T('9.90263871916064254974009912780157486232613002968707056446243636671e-34', '-562.8', -12); + T('4.3492544377486037018080360300067123809538178904353011549513518579352205e-29', '-53325', -6); + T('-2.4321805935844144232493980416059793684e-61', '-323865', -11); + T('7.85857243441531254691813393990245178596730427987853282250959743319065590613e-25', '-52.694', -14); + T('2.0976497180691992906625338620920916459004443120221572748409028790029453e-29', '-62', -16); + T('2.364680619496191078868743412738756777204213983827334426304480201936157926992330323938307469e-8', '-6503', -2); + T('-1.6469853898171534943494115141107888422500959997099727812322359810844298906326507134302e-14', '-34', -9); + T('-2.8509481595561976509829554676872915624841643712635341972335222140599199298237e-23', '-32285.1', -5); + T('1.146039e-93', '2086', -28); + T('1.4679476870451975270004793115264473958785611246906228067920825392511892301766856e-20', '21', -15); + T('-2.7632000420131244245e-80', '-884.33', -27); + T('1.28e-5', '5', -7); + T('0e+0', '465056.3', -25); + T('-3.385374643100272485246768762282984762e-63', '-8732826', -9); + T('8.1099148118448025737743300061125240950246836242140801097075869941095902018e-26', '-24.771', -18); + T('0e+0', '41616', -24); + T('-4.600396873004638534957365480807567e-66', '-693.02361', -23); + T('4.743101317987169079986565102514233588322445597602857643390328860354941191426667037e-18', '-54', -10); + T('1.25187781672508763144717075613420130195292939409113670505758637956935403104656985478217325988983475e-1', '7.988', -1); + T('0e+0', '-28456394.82', -20); + T('0e+0', '65420941.8', -28); + T('6.936158419792753387019531369763661408e-63', '8063848', -9); + T('7.76868869438579094965029841442548135292087504293659500457724060495468797e-28', '8.0104161', -30); + T('1.418903330951799073514333098017321859067165230705198534199808126932321545716946e-21', '8899161', -3); + T('5.5856834219770636694175782782449695904056e-59', '-668794', -10); + T('1.459854014598540145985401459854014598540145985401459854014598540145985401459854014598540145985401e-3', '685', -1); + T('4.71680980075571e-85', '-186379', -16); + T('8.28459140195479963018738579860475551841921130300932e-49', '-2719', -14); + T('2.67077966735439243101042271765185051646201817465563634664049302592659362084276452403367853161e-7', '1935', -2); + T('0e+0', '3635', -29); + T('0e+0', '2554338', -24); + T('2.5540033620655455476185589070642885151916557690202314061872180456116463869710334413505216200293094e-2', '6.257333', -2); + T('3.90625e-3', '4', -4); + T('1.950390958369440429127151141521415628594542650755102593292842679774e-33', '282908.755', -6); + T('7.055018227999164719047034313928978751513528911694565147012740459916e-32', '19.86', -24); + T('-1.7926074978022214012194558178183164876939431544374262895950448410755196050436473373785e-14', '-92', -7); + T('4.17170159620302267465579950126198740043495589902397687214801e-40', '422', -15); + T('9.094947017729282379150390625e-13', '32', -8); + T('3.840702799092530418345764876794193332866602413557110156e-45', '-597', -16); + T('2.86244662448576320862533497809376104296326075367736978e-46', '56.45', -26); + T('-1.9579266376951475915762057927633263263525293205616726853270204e-38', '-32.2350348', -25); + T('1.25868312332880899610888409696274260282720434321518772464e-43', '52', -25); + T('0e+0', '262233', -24); + + BigNumber.config({DECIMAL_PLACES : 0, ROUNDING_MODE : 6}); + + T('0e+0', '-8645', -30); + T('0e+0', '7.24173993', -23); + + log('\n ' + passed + ' of ' + total + ' tests passed in ' + (+new Date() - start) + ' ms \n'); + return [passed, total];; +})(this.BigNumber); +if (typeof module !== 'undefined' && module.exports) module.exports = count; + +/* + +Notes: + +n to the power of 1 is n +Anything to the power of 0 is 1 +Math.pow(2, null) = 1 // NaN for BigNumber +Math.pow(2, undefined) = NaN +Math.pow(2, NaN) = NaN +Math.pow(2, 'rferf') = NaN +Math.pow(2, []) = 1 // NaN for BigNumber +Math.pow(2, {}) = NaN // NaN for BigNumber +Math.pow(2, 1e4) = Infinity +Math.pow(2, -1e4) = 0 +Math.pow(2, 1e-16) = 1 +Math.pow(2, -1e-17) = 1 +A negative number to a non-integer power is NaN +0 to negative power is Infinity + +-------------------------------------------------------------------------------- + +http://es5.github.com/#x15.8.2.13 +15.8.2.13 pow (x, y) +Returns an implementation-dependent approximation to the result of raising x to the power y. + +If y is NaN, the result is NaN. +If y is +0, the result is 1, even if x is NaN. +If y is -0, the result is 1, even if x is NaN. +If x is NaN and y is nonzero, the result is NaN. +If abs(x)>1 and y is +8, the result is +8. +If abs(x)>1 and y is -8, the result is +0. +If abs(x)==1 and y is +8, the result is NaN. +If abs(x)==1 and y is -8, the result is NaN. +If abs(x)<1 and y is +8, the result is +0. +If abs(x)<1 and y is -8, the result is +8. +If x is +8 and y>0, the result is +8. +If x is +8 and y<0, the result is +0. +If x is -8 and y>0 and y is an odd integer, the result is -8. +If x is -8 and y>0 and y is not an odd integer, the result is +8. +If x is -8 and y<0 and y is an odd integer, the result is -0. +If x is -8 and y<0 and y is not an odd integer, the result is +0. +If x is +0 and y>0, the result is +0. +If x is +0 and y<0, the result is +8. +If x is -0 and y>0 and y is an odd integer, the result is -0. +If x is -0 and y>0 and y is not an odd integer, the result is +0. +If x is -0 and y<0 and y is an odd integer, the result is -8. +If x is -0 and y<0 and y is not an odd integer, the result is +8. +If x<0 and x is finite and y is finite and y is not an integer, the result is NaN. + +*/ \ No newline at end of file diff --git a/node_modules/mysql/node_modules/bignumber.js/test/quick-test.js b/node_modules/mysql/node_modules/bignumber.js/test/quick-test.js new file mode 100644 index 0000000..dacf80d --- /dev/null +++ b/node_modules/mysql/node_modules/bignumber.js/test/quick-test.js @@ -0,0 +1,1416 @@ +var count = (function quickTest(BigNumber) { + + var start = +new Date(), + log, + error, + undefined, + passed = 0, + total = 0, + n = 'null', + N = 'NaN', + I = 'Infinity'; + + if (typeof window === 'undefined') { + log = console.log; + error = console.error; + } else { + log = function (str) { document.body.innerHTML += str.replace('\n', '
      ') }; + error = function (str) { document.body.innerHTML += '
      ' + + str.replace('\n', '
      ') + '
      ' }; + } + + if (!BigNumber && typeof require === 'function') BigNumber = require('../bignumber'); + + function assert(expected, actual) { + total++; + if (expected !== actual) { + error('\n Test number: ' + total + ' failed'); + error(' Expected: ' + expected); + error(' Actual: ' + actual); + //process.exit(); + } + else { + passed++; + //log('\n Expected and actual: ' + actual); + } + } + + BigNumber.config({ + DECIMAL_PLACES : 20, + ROUNDING_MODE : 4, + ERRORS : true, + RANGE : 1E9, + EXPONENTIAL_AT : 1E9 + }); + + log('\n Starting tests...'); + + function Tplus(addendA, addendB, expected) { + assert(String(expected), String(new BigNumber(addendA).plus(addendB))); + assert(String(expected), String(new BigNumber(addendA).plus(new BigNumber(addendB)))); + } + + Tplus('0.0000002081', '951', '951.0000002081'); + Tplus('-0.00000000000101', '290.41', '290.40999999999899'); + Tplus('591', '-0.0000000000000023311', '590.9999999999999976689'); + Tplus('0.000000000006331', '-0.0000901', '-0.000090099993669'); + Tplus('-0.000000000000000101', '8.811', '8.810999999999999899'); + Tplus('9.71', '25.2521', '34.9621'); + Tplus('12.61', '22581', '22593.61'); + Tplus('11', '-38.91', '-27.91'); + Tplus('-0.00000000138751', '2.11', '2.10999999861249'); + Tplus('3762.2711', '-744.88784434996040047048938241', '3017.38325565003959952951061759'); + Tplus('-0.000000000000000025415273976364280222001', '-492878574085250915901', '-492878574085250915901.000000000000000025415273976364280222001'); + Tplus('426904249750.96038450081242691', '56433.631', '426904306184.59138450081242691'); + Tplus('-0.000000000000000134741', '32233.1553231', '32233.155323099999999865259'); + Tplus('-20527603846670651', '-19635621.807985261', '-20527603866306272.807985261'); + Tplus('-86085754207.708686061', '-1', '-86085754208.708686061'); + Tplus('-4.96914656033745696212200401', '-1.241', '-6.21014656033745696212200401'); + Tplus('329060927228852916217075.1962341', '4100482994459676741454741', '4429543921688529657671816.1962341'); + Tplus('615901601', '-6473391841168.33422241481', '-6472775939567.33422241481'); + Tplus('-5812703356423471', '-0.0000000000000000000000000000000000000001512809242910987744755268662361', '-5812703356423471.0000000000000000000000000000000000000001512809242910987744755268662361'); + Tplus('-964262.331151767124531', '-56784.754061', '-1021047.085212767124531'); + Tplus('-10804741298331762053003.61', '-18727784577281', '-10804741317059546630284.61'); + Tplus('2455658857532054049742171.776541', '-11', '2455658857532054049742160.776541'); + Tplus('-8.419821', '-1121', '-1129.419821'); + Tplus('-14118910.8630102182791', '2231454017.61', '2217335106.7469897817209'); + Tplus('-35192.01', '30.31011', '-35161.69989'); + Tplus('21', '1214.75047979608491', '1235.75047979608491'); + + function Tminus(minuend, subtrahend, expected) { + assert(String(expected), String(new BigNumber(minuend).minus(subtrahend))); + assert(String(expected), String(new BigNumber(minuend).minus(new BigNumber(subtrahend)))); + } + + Tminus('4.851', '41', '-36.149'); + Tminus('21', '13081', '-13060'); + Tminus('0.00000000056061', '-0.1401', '0.14010000056061'); + Tminus('61', '11', '50'); + Tminus('-1137.71', '-74.211', '-1063.499'); + Tminus('-1', '-0.0000000000000131', '-0.9999999999999869'); + Tminus('-0.000513821', '0.261', '-0.261513821'); + Tminus('-0.000401', '-0.0002471', '-0.0001539'); + Tminus('1', '31', '-30'); + Tminus('-19851', '-1.51', '-19849.49'); + Tminus('8016778098131', '6331.62851', '8016778091799.37149'); + Tminus('-270.9996571', '23960950851', '-23960951121.9996571'); + Tminus('-7986807223743730.000000000000000000000000000000000001', '-7173955.760471', '-7986807216569774.239529000000000000000000000000000001'); + Tminus('1.48968081', '242980.00000000000000000000000000000000000000000000000001', '-242978.51031919000000000000000000000000000000000000000001'); + Tminus('-118422270.0000000000000000000000000001', '14530.0001', '-118436800.0001000000000000000000000001'); + Tminus('9330969181250.000000000000000000000000000000000000001', '50.71', '9330969181199.290000000000000000000000000000000000001'); + Tminus('152192135853041', '-12.46214721', '152192135853053.46214721'); + Tminus('29353.8632116991', '29.491', '29324.3722116991'); + Tminus('-24835555113.72271', '16121.144514291', '-24835571234.867224291'); + Tminus('-55940242410820.01', '384349225568820.00000001', '-440289467979640.01000001'); + Tminus('283535576260.000000000000000000000000000000001', '14.121', '283535576245.879000000000000000000000000000001'); + Tminus('480.0000000000000000000000000000001', '-164098203.91', '164098683.9100000000000000000000000000001'); + Tminus('29364155498.97581', '-2885650871', '32249806369.97581'); + Tminus('4.1021951', '-165723099860.0000000000000000000000000001', '165723099864.1021951000000000000000000001'); + Tminus('-530.81', '56840.01', '-57370.82'); + + function Ttimes(multiplicand, multiplier, expected) { + assert(String(expected), String(new BigNumber(multiplicand).times(multiplier))); + assert(String(expected), String(new BigNumber(multiplicand).times(new BigNumber(multiplier)))); + } + + Ttimes('-21', '131', '-2751'); + Ttimes('111', '0.000000000841', '0.000000093351'); + Ttimes('40.71', '21', '854.91'); + Ttimes('-0.0000000000036161', '-1', '0.0000000000036161'); + Ttimes('7.8121', '36.121', '282.1808641'); + Ttimes('1', '46.221', '46.221'); + Ttimes('-128.21', '-1', '128.21'); + Ttimes('-180766.9302821', '291', '-52603176.7120911'); + Ttimes('3714507177452301036251', '6867200.8062651448391', '25508266683878109110598887924.4875346622141'); + Ttimes('0.0000000000000000000000654341', '0.00000000000000034029824715606780001', '0.000000000000000000000000000000000000022267109534234856032634341'); + Ttimes('2902811542.1751', '21.7592802616132547300301', '63163089892.83378534432594919064247051'); + Ttimes('-0.0000004236706737870443510907850088041', '-2870.7155483080953029218351', '0.00121623799060263520422140469527350360094358075600762840391'); + Ttimes('806512666721.29120081', '-8211', '-6622275506448522.04985091'); + Ttimes('24.0654772221', '270.37988121', '6506.820872573358786741'); + Ttimes('128868235795911', '-4897225358224393204401', '-631096792209375818286886121943004311'); + Ttimes('-47584.99084549466512725031', '0.000000000000000000000000000000000000000000154041881', '-0.00000000000000000000000000000000000000733008149720777859166674211023311'); + Ttimes('-98.9161', '-18710464022168031', '1850766130263175171.1991'); + Ttimes('-141', '1387696355.96881144331', '-195665186191.60241350671'); + Ttimes('-546863822.0898879518644444391', '-16471500507546.2972881', '9007667723112297421676.09483644538995959345560471'); + Ttimes('0.32596723638370271', '833.075641', '271.55536439535165708668711'); + Ttimes('-363496.57279544085492428981', '-39403998991', '14323218587663509.49683689305463158171'); + Ttimes('3.11', '36726825625425561919475.9510331', '114220427695073497569570.207712941'); + + function Tdiv(dividend, divisor, expected) { + assert(String(expected), String(new BigNumber(dividend).div(divisor))); + assert(String(expected), String(new BigNumber(dividend).div(new BigNumber(divisor)))); + } + + BigNumber.config({DECIMAL_PLACES : 0, ROUNDING_MODE : 0}); + Tdiv('999.5', 1, '1000'); + BigNumber.config({DECIMAL_PLACES : 0, ROUNDING_MODE : 6}); + Tdiv('-223891', '-0.000000000000000000005965201', '37532850946682266029258696'); + BigNumber.config({DECIMAL_PLACES : 19, ROUNDING_MODE : 5}); + Tdiv('-2.51', '21', '-0.1195238095238095238'); + BigNumber.config({DECIMAL_PLACES : 4, ROUNDING_MODE : 0}); + Tdiv('-9.11', '-5.61', '1.6239'); + BigNumber.config({DECIMAL_PLACES : 18, ROUNDING_MODE : 5}); + Tdiv('-789.23741', '2996.9101', '-0.263350378778462524'); + BigNumber.config({DECIMAL_PLACES : 19, ROUNDING_MODE : 1}); + Tdiv('86.41', '0.00000000000000901', '9590455049944506.1043285238623751387'); + BigNumber.config({DECIMAL_PLACES : 12, ROUNDING_MODE : 2}); + Tdiv('-1.031', '-11', '0.093727272728'); + BigNumber.config({DECIMAL_PLACES : 2, ROUNDING_MODE : 1}); + Tdiv('1', '1.691', '0.59'); + BigNumber.config({DECIMAL_PLACES : 12, ROUNDING_MODE : 0}); + Tdiv('-0.0000000210121', '2.81', '-0.000000007478'); + BigNumber.config({DECIMAL_PLACES : 25, ROUNDING_MODE : 6}); + Tdiv('2844.11', '-1.681', '-1691.9155264723378941106484236'); + + BigNumber.config({EXPONENTIAL_AT : 0} ); + + BigNumber.config({DECIMAL_PLACES : 18, ROUNDING_MODE : 1}); + Tdiv('1.59425939501316841840968291765489155608078575071e+9', '-3.08038002682802076462608674211e+24', '-5.17e-16'); + BigNumber.config({DECIMAL_PLACES : 32, ROUNDING_MODE : 1}); + Tdiv('-2.7776797347790808834515841467871979111321511e+24', '3.3415875353512401063640184461e+3', '-8.3124553985000249637933047177077877273241264998630019e+20'); + BigNumber.config({DECIMAL_PLACES : 44, ROUNDING_MODE : 1}); + Tdiv('1.256012023778514778181132285841e+17', '-5.465631858655701463629691267993890472939145146541478599849959175484551e+15', '-2.298017971681387626003643396450012590362066053e+1'); + BigNumber.config({DECIMAL_PLACES : 14, ROUNDING_MODE : 0}); + Tdiv('1.378656411343789736916650471e+20', '-1.354076170203205324162874106485640621111e+19', '-1.018152775804995e+1'); + BigNumber.config({DECIMAL_PLACES : 37, ROUNDING_MODE : 4}); + Tdiv('1.577809310668934678754980869332886769208471e+23', '6.93677728955357384105850187632701172506828921e+11', '2.27455667784669044615322243776416258218503335378e+11'); + BigNumber.config({DECIMAL_PLACES : 14, ROUNDING_MODE : 3}); + Tdiv('-5.3967707960012001e+16', '9.289226824998276692885063155660376484197905615639719776994658491e+23', '-5.80971e-8'); + BigNumber.config({DECIMAL_PLACES : 16, ROUNDING_MODE : 0}); + Tdiv('-1.7511951356552580494958278051e+28', '3.1019236701050639775694537481e+28', '-5.645513306895602e-1'); + + BigNumber.config({EXPONENTIAL_AT : 1E9}); + + function Tsqrt(expected, actual) { + assert(expected, new BigNumber(actual).sqrt().toString()) + } + + BigNumber.config({DECIMAL_PLACES : 96, ROUNDING_MODE : 2}); + Tsqrt('4949554350723.461435143921800511302655747834828959172999243354749297834846074272605873894779037895263058987767', '24498088270765545887271078.495701603537518591752268455746'); + + BigNumber.config({DECIMAL_PLACES : 92, ROUNDING_MODE : 2}); + Tsqrt('34024250164506590698940450635557.52953427667455604566896038084827726129860253810440168217368794648838157166948213114635075589', '1157649599256926764239267638462457331268783688179593190844781949.0026'); + + BigNumber.config({DECIMAL_PLACES : 17, ROUNDING_MODE : 4}); + Tsqrt('44.40502294864850084', '1971.80606307'); + + BigNumber.config({DECIMAL_PLACES : 81, ROUNDING_MODE : 3}); + Tsqrt('53661161093118917.324727467936347226946388973481645944102836490011463645342312303037845424027327131', '2879520209861659438086912639838761.96836512'); + + BigNumber.config({DECIMAL_PLACES : 97, ROUNDING_MODE : 1}); + Tsqrt('14192376.643123461322847366137186892667087869800484670508360531721790645551341594437545247745705539930735', '201423554780276.3686384009255372'); + + BigNumber.config({DECIMAL_PLACES : 73, ROUNDING_MODE : 3}); + Tsqrt('4855847283088595702176944.8112532951528228009352578372167502504010846351042776625505257853252286361', '23579252836678896488410638492374748088831131237827.786414707871968195569'); + + BigNumber.config({DECIMAL_PLACES : 4, ROUNDING_MODE : 4}); + Tsqrt('2553252336.0331', '6519097491458426345.3554782053764871036657698339691144086'); + + BigNumber.config({DECIMAL_PLACES : 61, ROUNDING_MODE : 5}); + Tsqrt('313415140.8429479671745256541153927986977746351343070479080617690487091', '98229050509604911'); + + BigNumber.config({DECIMAL_PLACES : 24, ROUNDING_MODE : 0}); + Tsqrt('1.537808174192351787259717', '2.3648539806128145775'); + + BigNumber.config({DECIMAL_PLACES : 20, ROUNDING_MODE : 4}); + Tsqrt('62.30949119560079364913', '3882.4726930546528212066'); + + BigNumber.config({DECIMAL_PLACES : 60, ROUNDING_MODE : 1}); + Tsqrt('20416269776260474006.927083982432268806569265768750039002235065141713481228428261', '416824071577046905366185925400975939799.8'); + + BigNumber.config({DECIMAL_PLACES : 82, ROUNDING_MODE : 4}); + Tsqrt('174228234.709795821707519878032640346805381350977820681861118903584344693715322225768054125', '30355477770091701.53717021425249799086667828628302277998976752563'); + + BigNumber.config({DECIMAL_PLACES : 86, ROUNDING_MODE : 0}); + Tsqrt('8346080245081.12842427016192329441165264650792513611706834892396914269233387534464159247031782538653', '69657055457333468703224935.763141948224298'); + + BigNumber.config({DECIMAL_PLACES : 20, ROUNDING_MODE : 4}); + + function Tpow(expected, n, exp) { + assert(String(expected), String(new BigNumber(n).pow(exp))) + } + + BigNumber.config({EXPONENTIAL_AT : 0}); + + Tpow('6.1203577224967e+13', '61203577224967', 1); + Tpow('-2.6742593337474927167986914400257603e+34', '-82827', 7); + Tpow('3.490938536648870448335810684618787855050175354916141007545163425555957335829e+75', '247548469', 9); + Tpow('6.634204312890625e+15', '-95', 8); + Tpow('-9.171271e+1', '-91.71271', 1); + Tpow('5.65625765123605544067809018296482219675982471958093705254464e+59', '-9093998202', 6); + Tpow('1e+0', '-5420353171006060062', 0); + Tpow('5.93548365959371477646876280183482286894691258676416e+26', '840398698.65610156', 3); + Tpow('1.016984074247269470395836690098169093010136836967e+39', '21584.7', 9); + Tpow('-8.983272e+1', '-89.83272', 1); + Tpow('5.308416e+6', '-48', 4); + Tpow('3.83432050166120236679168e+23', '52088', 5); + + BigNumber.config({ROUNDING_MODE : 0}); + + Tpow('-5.196101e-14', '-453.8', -5); + Tpow('1e-20', '8308633', -17); + Tpow('1e-20', '834', -23); + Tpow('1.6666666666666666667e-1', '6', -1); + Tpow('-1e-20', '-71', -29); + Tpow('9.765625e-4', '-2', -10); + Tpow('1e-20', '62.8159321', -18); + Tpow('-6.333754988633e-8', '-2.0557545', -23); + Tpow('1e-20', '33', -24); + Tpow('-1e-20', '-5235.7923', -27); + Tpow('-1.29728108e-12', '-9169', -3); + Tpow('2.323057312542e-8', '3', -16); + + BigNumber.config({DECIMAL_PLACES : 20, ROUNDING_MODE : 4, EXPONENTIAL_AT : 1E9}); + + function Tmod(a, b, expected) { + assert(String(expected), String(new BigNumber(a).mod(new BigNumber(b)))); + } + + Tmod('-6591', '8.81', '-1.12'); + Tmod('1.11', '11', '1.11'); + Tmod('0.00000000432701', '271', '0.00000000432701'); + Tmod('0.0000000000215581', '-0.000000000002301', '0.0000000000008491'); + Tmod('-0.0000000000000591', '-1.71', '-0.0000000000000591'); + Tmod('-0.0000841', '6.981', '-0.0000841'); + Tmod('-2.4471', '-14359441882754.391', '-2.4471'); + Tmod('2.31614421', '2097.74828131', '2.31614421'); + Tmod('203239281', '-1092.361', '55.145'); + Tmod('-46.3306582161', '133931.6342079549871', '-46.3306582161'); + Tmod('-6038925.2969825025061', '-331548954963.41', '-6038925.2969825025061'); + Tmod('1338199.302617179356379591035511', '568.441', '89.188617179356379591035511'); + Tmod('-71', '2935538995927946.15230380421', '-71'); + + function TcomparedTo(a, b, expected) { + assert(String(expected), String(new BigNumber(a).cmp(b))); + assert(String(expected), String(new BigNumber(a).cmp(new BigNumber(b)))); + } + + TcomparedTo(1, 0, 1); + TcomparedTo(1, -0, 1); + TcomparedTo(-1, 0, -1); + TcomparedTo(-1, -0, -1); + TcomparedTo(1, Infinity, -1); + TcomparedTo(1, -Infinity, 1); + TcomparedTo(-1, Infinity, -1); + TcomparedTo(-1, -Infinity, 1); + TcomparedTo(0, 1, -1); + TcomparedTo(0, -1, 1); + TcomparedTo(-0, 1, -1); + TcomparedTo(-0, -1, 1); + TcomparedTo('51065.7214018651', '21', '1'); + TcomparedTo('1', '-16594.7051', '1'); + TcomparedTo('0.0000000000000000000010511609090481', '-11020751', '1'); + TcomparedTo('-5.8551401', '-0.000000000000000000000001123091759805151', '-1'); + TcomparedTo('11527.63339771', '-0.00000000000000000000004429516529932561', '1'); + TcomparedTo('45875.11', '405079444.71', '-1'); + TcomparedTo('1426.641', '20.9286431', '1'); + TcomparedTo('4.657171', '-50001.941', '1'); + TcomparedTo('-190771', '-686381.317791', '1'); + TcomparedTo('-0.0000000000000000000161', '12855824.31', '-1'); + TcomparedTo('21', '353565391626181', '-1'); + TcomparedTo('398788950.02241', '-46.7685077791', '1'); + TcomparedTo('-78.15411', '-105.31471806641', '1'); + TcomparedTo('41', '-71', '1'); + TcomparedTo('-51', '-0.00000474054791', '-1'); + TcomparedTo('-41', '17.241', '-1'); + TcomparedTo('11', '113010.8763991', '-1'); + TcomparedTo('-61', '3702421785.491', '-1'); + TcomparedTo('-0.00000000000000000000000000000003464171', '220.26991', '-1'); + TcomparedTo('0.000013781', '0.00000000501652742971', '1'); + TcomparedTo('-14762.331', '-1.11', '-1'); + TcomparedTo('31', '61', '-1'); + TcomparedTo('0.0000000000000000000000000000000000000000145668763947641', '398563006.4471', '-1'); + TcomparedTo('493.11824741', '736531', '-1'); + TcomparedTo('75077024.211', '1', '1'); + TcomparedTo('-90.74569446258221', '-21', '-1'); + TcomparedTo('15654315.61266191', '-11', '1'); + TcomparedTo('1.494421', '41821961', '-1'); + TcomparedTo('-26.51', '-0.00863321', '-1'); + TcomparedTo('-3.21', '30292255112081', '-1'); + TcomparedTo('-3.20191e+3', '5.11e-30', '-1'); + TcomparedTo('-1.08821e+5', '1.939813191e+9', '-1'); + TcomparedTo('-7.592791e-17', '-9.291e-27', '-1'); + TcomparedTo('-4.901e+0', '-1.39230141e-31', '-1'); + TcomparedTo('-2.8785721351e+5', '-1.084971e+3', '-1'); + TcomparedTo('6.8649111e+1', '2.1e+1', '1'); + TcomparedTo('1.4421e+4', '8.7711e+1', '1'); + TcomparedTo('1.497851e-9', '1.81661e+2', '-1'); + TcomparedTo('-8.631953001e+6', '6.310131231e+0', '-1'); + TcomparedTo('4.91e+0', '5.381e-15', '1'); + TcomparedTo('4.21e+0', '-1.63069631e+3', '1'); + TcomparedTo('-4.081e+1', '-7.801e+1', '1'); + TcomparedTo('-3.1e+1', '-8.41e+0', '-1'); + TcomparedTo('-1.1e+1', '1.037475521e+4', '-1'); + TcomparedTo('-1e+0', '1.6500661e+5', '-1'); + TcomparedTo('2.07751e-24', '2.88755811e+5', '-1'); + TcomparedTo('1e+0', '-1e+0', '1'); + TcomparedTo('3.821e-23', '4.25729041e-22', '-1'); + TcomparedTo('4.831e+1', '-1.01e+0', '1'); + TcomparedTo('-1.61071e+1', '8.22705601e+8', '-1'); + TcomparedTo('2.474493111e-20', '-9.0664201e+7', '1'); + TcomparedTo('4.27903551e+8', '1e+0', '1'); + TcomparedTo('1.1e+1', '-3.1e+1', '1'); + TcomparedTo('-6.3993191e+3', '2.9980701e+0', '-1'); + TcomparedTo('-3.7599935031e+1', '-1.14011e+5', '1'); + TcomparedTo('-1.631920621e+1', '-5.947675381e+5', '1'); + TcomparedTo('2.0690564941e-24', '-5.690831e+4', '1'); + TcomparedTo('-1.30864281e+0', '-6.1e+1', '1'); + + function Tabs(expected, value){ + assert(String(expected), new BigNumber(String(value)).abs().toString()); + } + + Tabs(1, 1); + Tabs(1, -1); + Tabs(0.5, '0.5'); + Tabs(0.5, '-0.5'); + Tabs(0.1, 0.1); + Tabs(0.1, -0.1); + Tabs(1.1, 1.1); + Tabs(1.1, -1.1); + Tabs(1.5, '1.5'); + Tabs(1.5, '-1.5'); + Tabs('Infinity', Infinity); + Tabs('Infinity', -Infinity); + Tabs(NaN, NaN); + Tabs(0, 0); + Tabs(0, -0); + + function Tneg(expected, value){ + assert(String(expected), new BigNumber(value).neg().toString()); + } + + Tneg(-4, 4); + Tneg(-2147483648, 2147483648); + Tneg(-0.25, 0.25); + Tneg(-0.0625, 0.0625); + Tneg(-1, 1); + Tneg(1, -1); + Tneg(0, 0); + Tneg(NaN, NaN); + Tneg(-Infinity, Infinity); + Tneg(Infinity, -Infinity); + Tneg('-5.0600621890668482322956892808849303', '5.0600621890668482322956892808849303'); + Tneg('7', '-7'); + Tneg('-6.1095374220609', '6.1095374220609'); + Tneg('9.01', '-9.01'); + Tneg('-1.016984074247269470395836690098169093010136836967', '1.016984074247269470395836690098169093010136836967'); + Tneg('-1.497639134680472576', '1.497639134680472576'); + Tneg('-4.1717657571404248', '4.1717657571404248'); + + function Tceil(expected, value) { + assert(String(expected), new BigNumber(String(value)).ceil().toString()); + } + + Tceil(0, 0); + Tceil(0, '0.000'); + Tceil(0, -0); + Tceil(Infinity, Infinity); + Tceil(-Infinity, -Infinity); + Tceil(NaN, NaN); + Tceil(1, 0.1); + Tceil(1, 0.49999999999999994); + Tceil(1, 0.5); + Tceil(1, 0.7); + Tceil(0, -0.1); + Tceil(0, -0.49999999999999994); + Tceil(0, -0.5); + Tceil(0, -0.7); + Tceil(1, 1); + Tceil(2, 1.1); + Tceil(2, 1.5); + Tceil(2, 1.7); + Tceil(-1, -1); + Tceil(-1, -1.1); + Tceil(-1, -1.5); + Tceil(-1, -1.7); + Tceil('-2075364', '-2075364.364286541923'); + Tceil('60593539780450631', '60593539780450631'); + Tceil('65937898671515', '65937898671515'); + Tceil('-39719494751819198566798', '-39719494751819198566798.578'); + Tceil('92627382695288166557', '92627382695288166556.8683774524284866028260448205069'); + Tceil('-881574', '-881574'); + Tceil('-3633239209', '-3633239209.654526163275621746013315304191073405508491056'); + Tceil('-23970335459820625362', '-23970335459820625362'); + Tceil('131869457416154038', '131869457416154038'); + Tceil('-2685', '-2685'); + Tceil('-4542227860', '-4542227860.9511298545226'); + Tceil('2416872282', '2416872281.963955669484225137349193306323379254936827'); + Tceil('-757684868752087594264588207655', '-757684868752087594264588207655.27838048392835556'); + Tceil('-438798503526', '-438798503526.2317623894721299587561697'); + Tceil('801625782231888715214665', '801625782231888715214665'); + Tceil('-91881984778675238', '-91881984778675238'); + Tceil('327765350218284325239839632047', '327765350218284325239839632046.91682741746683081459605386'); + Tceil('-7469045007691432294', '-7469045007691432294.362757245'); + Tceil('8365540212937142194319515218790', '8365540212937142194319515218789.4106658678537421977827'); + Tceil('-14108', '-14108.495051214515'); + Tceil('49104502', '49104501.10055989379655329194309526150310568683504206945625'); + Tceil('131370407', '131370406.330005158136313262837556068534122953'); + Tceil('3017', '3017'); + + function Tfloor(expected, value) { + assert(String(expected), new BigNumber(String(value)).floor().toString()); + } + + Tfloor(0, 0); + Tfloor(0, '0.000'); + Tfloor(-0, -0); + Tfloor(Infinity, Infinity); + Tfloor(-Infinity, -Infinity); + Tfloor(NaN, NaN); + Tfloor(0, 0.1); + Tfloor(0, 0.49999999999999994); + Tfloor(0, 0.5); + Tfloor(0, 0.7); + Tfloor(-1, -0.1); + Tfloor(-1, -0.49999999999999994); + Tfloor(-1, -0.5); + Tfloor(-1, -0.7); + Tfloor(1, 1); + Tfloor(1, 1.1); + Tfloor(1, 1.5); + Tfloor(1, 1.7); + Tfloor(-1, -1); + Tfloor(-2, -1.1); + Tfloor(-2, -1.5); + Tfloor(-2, -1.7); + Tfloor('-2075365', '-2075364.364286541923'); + Tfloor('60593539780450631', '60593539780450631'); + Tfloor('65937898671515', '65937898671515'); + Tfloor('-39719494751819198566799', '-39719494751819198566798.578'); + Tfloor('92627382695288166556', '92627382695288166556.8683774524284866028260448205069'); + Tfloor('-881574', '-881574'); + Tfloor('-3633239210', '-3633239209.654526163275621746013315304191073405508491056'); + Tfloor('-23970335459820625362', '-23970335459820625362'); + Tfloor('131869457416154038', '131869457416154038'); + Tfloor('-4542227861', '-4542227860.9511298545226'); + Tfloor('2416872281', '2416872281.963955669484225137349193306323379254936827'); + Tfloor('-757684868752087594264588207656', '-757684868752087594264588207655.27838048392835556'); + Tfloor('-438798503527', '-438798503526.2317623894721299587561697'); + Tfloor('801625782231888715214665', '801625782231888715214665'); + Tfloor('-91881984778675238', '-91881984778675238'); + Tfloor('327765350218284325239839632046', '327765350218284325239839632046.91682741746683081459605386'); + Tfloor('-7469045007691432295', '-7469045007691432294.362757245'); + Tfloor('8365540212937142194319515218789', '8365540212937142194319515218789.4106658678537421977827'); + Tfloor('-14109', '-14108.495051214515'); + Tfloor('49104501', '49104501.10055989379655329194309526150310568683504206945625'); + Tfloor('131370406', '131370406.330005158136313262837556068534122953'); + Tfloor('3017', '3017'); + + function Tround(expected, value, decimalPlaces, roundingMode) { + assert(String(expected), new BigNumber(String(value)).round(decimalPlaces, roundingMode).toString()); + } + + BigNumber.config({ROUNDING_MODE : 7}); + + Tround(0, 0); + Tround(0, -0); + Tround(Infinity, Infinity); + Tround(-Infinity, -Infinity); + Tround(NaN, NaN); + Tround(1, 0.5); + Tround(1, 0.7); + Tround(1, 1); + Tround(1, 1.1); + Tround(1, 1.49999); + Tround(0, -0.5); + Tround(-1, -0.5000000000000001); + Tround(-1, -0.7); + Tround(-1, -1); + Tround(-1, -1.1); + Tround(-1, -1.49999); + Tround(-1, -1.5); + Tround(9007199254740990, 9007199254740990); + Tround(9007199254740991, 9007199254740991); + Tround(-9007199254740990, -9007199254740990); + Tround(-9007199254740991, -9007199254740991); + Tround('-4.1787893', '-4.178789328', 7, 1); + Tround('372', '372', 3, 6); + Tround('-9.1645', '-9.1645354', 4, 6); + Tround('83.241462', '83.241462', 6, 6); + Tround('-0.00001262', '-0.00001262', 8, 6); + Tround('63.4147', '63.414735', 4, 3); + Tround('-2', '-2', 3, 5); + Tround('538601216', '538601216', 2, 3); + Tround('2138522', '2138522', 6, 1); + Tround('301527.309', '301527.309', 3, 5); + Tround('-7.568', '-7.5683', 3, 5); + Tround('-1969563', '-1969563', 8, 1); + Tround('-249815496353142605063083339706423770452529255711064841247978.1649', '-249815496353142605063083339706423770452529255711064841247978.16482575714251625720191747855256', 4, 3); + Tround('-8757939868931375459275247990933877309', '-8757939868931375459275247990933877309', 37, 5); + Tround('556228688742576287254121716253667920283844645854057755303259369', '556228688742576287254121716253667920283844645854057755303259369', 25, 3); + Tround('0', '0.00000000000000000000000000000000000000000000000029171651270270187897342247995644546232788426', 35, 3); + Tround('-0.0000058979376152458865088785307705', '-0.000005897937615245886508878530770431196412050562641578155968', 34, 0); + Tround('-0.00000000000000847145658', '-0.00000000000000847145657888758222743159237', 23, 3); + Tround('-6049825281564367887763596943301191584240212075976455', '-6049825281564367887763596943301191584240212075976455', 53, 0); + Tround('-64680661822322715719008107701612.741312367131318202976964422', '-64680661822322715719008107701612.74131236713131820297696442216284615573809', 27, 4); + Tround('0', '-0.0000000000000000000000000000000000048810387700772580768508931440796984745771392', 29, 2); + Tround('232730083859746141163.7653402888578932348762190816502', '232730083859746141163.76534028885789323487621908165018267559238917447610653431235463768839108', 31, 5); + Tround('-499311204526771278437755030091270601.471802335', '-499311204526771278437755030091270601.47180233568698638607829334564', 9, 2); + Tround('-4793558721695298336734196955569628362250.1', '-4793558721695298336734196955569628362250.107513868618556605590137359591047843592593', 1, 6); + Tround('0.0000000000000000000000000000000000000622', '0.000000000000000000000000000000000000062176566496', 40, 5); + Tround('-393323198834362857317921391989917230.1575124832953752419421908305674188204', '-393323198834362857317921391989917230.15751248329537524194219083056741882044261538788798', 37, 5); + Tround('0', '-0.000000000000000169092170076859363', 3, 5); + + function TbaseIn(expected, value, base) { + assert(expected, new BigNumber(value, base).toString()) + } + + BigNumber.config({DECIMAL_PLACES : 40, ROUNDING_MODE : 2}); + + TbaseIn('-729.0001524157902758725803993293705227861606', '-1000000.00000001', 3); + TbaseIn('-4096.0000152587890625', '-1000000.00000001', 4); + TbaseIn('-15625.00000256', '-1000000.00000001', 5); + TbaseIn('-46656.0000005953741807651272671848803536046334', '-1000000.00000001', 6); + TbaseIn('-117649.0000001734665255574303432156634721649541', '-1000000.00000001', 7); + TbaseIn('-262144.000000059604644775390625', '-1000000.00000001', 8); + TbaseIn('-531441.0000000232305731254187746379102835730507', '-1000000.00000001', 9); + TbaseIn('-1000000.00000001', '-1000000.00000001', 10); + TbaseIn('-1771561.0000000046650738020973341431092840981941', '-1000000.00000001', 11); + TbaseIn('-2985984.000000002325680393613778387440938881268', '-1000000.00000001', 12); + TbaseIn('-4826809.0000000012258947398402566721524761600832', '-1000000.00000001', 13); + TbaseIn('-7529536.0000000006776036154587122781861854381443', '-1000000.00000001', 14); + TbaseIn('-11390625.0000000003901844231062338058222831885383', '-1000000.00000001', 15); + TbaseIn('-16777216.00000000023283064365386962890625', '-1000000.00000001', 16); + TbaseIn('-24137569.0000000001433536083296850401481727781882', '-1000000.00000001', 17); + TbaseIn('-34012224.0000000000907444262711670884293370452072', '-1000000.00000001', 18); + TbaseIn('-47045881.0000000000588804597472215429921222500439', '-1000000.00000001', 19); + TbaseIn('-64000000.0000000000390625', '-1000000.00000001', 20); + TbaseIn('-85766121.0000000000264390375792455941496210138949', '-1000000.00000001', 21); + TbaseIn('-113379904.0000000000182229445394427114965206410085', '-1000000.00000001', 22); + TbaseIn('-148035889.0000000000127696005408659110598172017909', '-1000000.00000001', 23); + TbaseIn('-191102976.0000000000090846890375538218259411675049', '-1000000.00000001', 24); + TbaseIn('-244140625.0000000000065536', '-1000000.00000001', 25); + TbaseIn('-308915776.0000000000047886513275010026255956100003', '-1000000.00000001', 26); + TbaseIn('-387420489.0000000000035407061614721497695336509027', '-1000000.00000001', 27); + TbaseIn('-481890304.0000000000026468891228855948366647868677', '-1000000.00000001', 28); + TbaseIn('-594823321.000000000001999014833671504164315094574', '-1000000.00000001', 29); + TbaseIn('-729000000.0000000000015241579027587258039932937052', '-1000000.00000001', 30); + TbaseIn('-887503681.0000000000011724827159637921277158030113', '-1000000.00000001', 31); + TbaseIn('-1073741824.0000000000009094947017729282379150390625', '-1000000.00000001', 32); + TbaseIn('-1291467969.0000000000007110309102419347878538765581', '-1000000.00000001', 33); + TbaseIn('-1544804416.0000000000005599750325378321880787999147', '-1000000.00000001', 34); + TbaseIn('-1838265625.0000000000004440743054270216786320984887', '-1000000.00000001', 35); + TbaseIn('-2176782336.0000000000003544704151217464391770978328', '-1000000.00000001', 36); + + BigNumber.config({DECIMAL_PLACES : 51, ROUNDING_MODE : 4}); + TbaseIn('1072424547177.982891327541533302850175278158817253467459228776101', 'donxvwix.zdts', 36); + + BigNumber.config({DECIMAL_PLACES : 86}); + TbaseIn('824178538787196749922434027872451367594239056.93473392033316110609748881918323116875731371037529199959272159196515804304815690839727', '402kfhkd37bt5n8scr1ir9ndlrnipig.s17oe7rkhi91bh', 30); + + BigNumber.config({DECIMAL_PLACES : 84}); + TbaseIn('9560389177469634483515162.499335215204179931606951906984830542647805834768203380512715304247460734647288652625', '195qdkkqsa8shmhp9e.edr89', 29); + + BigNumber.config({DECIMAL_PLACES : 65}); + TbaseIn('5955289028666603391738616069969.70235175643053599414353772852590894151261634747374296179598348968', '8qp28dk3js2iqksmqaqnq.lntnif5qh', 31); + + BigNumber.config({DECIMAL_PLACES : 49}); + TbaseIn('27603501710202437282037.4945845176631161140013607910579053986520224457133', '42545302442500101544532043113.254455200225412543300022520330204033', 6); + + BigNumber.config({DECIMAL_PLACES : 39}); + TbaseIn('9464300204295306111422098057.77248824166891668678144149703717008528', '25473f3dbce5cf3hg8318d7.dg52d120b14ea966a7ag06a2gh03', 18); + + BigNumber.config({DECIMAL_PLACES : 15}); + TbaseIn('133262758349237628352120716402.993431117739119', '3bkobquqthhfbndsmv3i.vp8o0sc4ldtji02mmgqr7blpdjgk', 32); + + BigNumber.config({DECIMAL_PLACES : 65}); + TbaseIn('171510920999634527633.53051379043557196404057602235264411208736518600450525086556631034', '1fqecn4264r1is.ijur8yj41twl9', 35); + + BigNumber.config({DECIMAL_PLACES : 48}); + TbaseIn('325927753012307620476767402981591827744994693483231017778102969592507', 'c16de7aa5bf90c3755ef4dea45e982b351b6e00cd25a82dcfe0646abb', 16); + + BigNumber.config({DECIMAL_PLACES : 48}); + TbaseIn('72783.559378210242248003991012349918599484318629885897', '11c4f.8f33690f15e13146d99092446da', 16); + + BigNumber.config({DECIMAL_PLACES : 81}); + TbaseIn('8535432796511493691316991730196733707212461.36382685871580896850891461623808', '9l0ah4mf8a0kcgn44oji4kh7l6fbenb.929jlggo43612jfn', 25); + + function TbaseOut(expected, value, base) { + assert(expected, new BigNumber(value).toString(base)) + } + + BigNumber.config({DECIMAL_PLACES : 40}); + + TbaseOut('1111100111.11111111101111100111011011001000101101', '999.999', 2); + TbaseOut('1101000.2222220210221200021112101120001001102122', '999.999', 3); + TbaseOut('33213.3333233213123020231003211120010012021032', '999.999', 4); + TbaseOut('12444.4444141414141414141414141414141414141414', '999.999', 5); + TbaseOut('4343.5554412021453552313300510342441202145355', '999.999', 6); + TbaseOut('2625.6664412312515410253566644123125154102536', '999.999', 7); + TbaseOut('1747.7773716662132071260101422335136152375747', '999.999', 8); + TbaseOut('1330.8882385024534603137817105667427164213206', '999.999', 9); + TbaseOut('999.999', '999.999', 10); + TbaseOut('829.aa973a4913443083925788751826a12209617036', '999.999', 11); + TbaseOut('6b3.bba3320237938b1770119a7a5699606ab3b294a9', '999.999', 12); + TbaseOut('5bb.ccaa5926381c699320b4278283cb62c494684889', '999.999', 13); + TbaseOut('515.ddb38266d3049bdac14b5d165539a5b770ad942', '999.999', 14); + TbaseOut('469.eeb9595959595959595959595959595959595959', '999.999', 15); + TbaseOut('3e7.ffbe76c8b4395810624dd2f1a9fbe76c8b439581', '999.999', 16); + TbaseOut('37d.ggc18275989641138dge6d54eg08g529aeb6faa1', '999.999', 17); + TbaseOut('319.hhc307dh7b6deeha40a6b43307dh7b6deeha40a7', '999.999', 18); + TbaseOut('2eb.iic2ch24i43efhgd61307b0e199g6fb74a55dcac', '999.999', 19); + TbaseOut('29j.jjc', '999.999', 20); + TbaseOut('25c.kkbfaii9d8gg7b6ee594cc372aa15087k2j65i0h', '999.999', 21); + TbaseOut('219.llb7g822a4ceh5a0fag44k937cak18la89ii6f3', '999.999', 22); + TbaseOut('1ka.mmaj3f2cgc81fe490kebi8f9m173blcfb08mj6j3', '999.999', 23); + TbaseOut('1hf.nna4590djiena4590djiena4590djiena4590djj', '999.999', 24); + TbaseOut('1eo.oo99999999999999999999999999999999999999', '999.999', 25); + TbaseOut('1cb.pp8b0g5lb0g5lb0g5lb0g5lb0g5lb0g5lb0g5lb1', '999.999', 26); + TbaseOut('1a0.qq78f2dle09cnjl9h6mblfcj9ij58geni8qkbn0n', '999.999', 27); + TbaseOut('17j.rr619hjdigg3g9nr2pf067h6qc2j7ar95474jjq6', '999.999', 28); + TbaseOut('15d.ss4hkojk13n4rnf1dpo9ham09782ifbgg63d28cl', '999.999', 29); + TbaseOut('139.tt3', '999.999', 30); + TbaseOut('117.uu16eq9rha657cl1g2ngcbdir7m8tmihjp2dsf4t', '999.999', 31); + TbaseOut('v7.vuv7di5k75c10oidqboqjuv7di5k75c10oidqbor', '999.999', 32); + TbaseOut('u9.wvu22k10p1i619fhuaq3d5gsfqkr584weg2bahcu', '999.999', 33); + TbaseOut('td.xwsnmjjt3i7kw38x68nvs0igtcqmabee4ufqd1up', '999.999', 34); + TbaseOut('sj.yxr4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4', '999.999', 35); + TbaseOut('rr.zypcdtnwjl0v3qs82axzf9i56mgpcdtnwjl0v3qs', '999.999', 36); + + BigNumber.config({DECIMAL_PLACES : 20}); + TbaseOut('b8b057c619.881cda90778727315519', '240240367775.61294728461437827', 14); + + BigNumber.config({DECIMAL_PLACES : 57}); + TbaseOut('3uke1r.qog7jpuls3wumhw9r6ij66xbtr9fxmcxo7pjkdsets6obc03cdkpohtp4', '177198677.78587988442236198004', 34); + + BigNumber.config({DECIMAL_PLACES : 53}); + TbaseOut('rxp7iouofqsa.5xr0ytex5w3u84ss4bmqr4d2r58uk0w6vou7okvti3sqaf8xdt7m4', '2699846669670878465.17042631933406076262750289627556', 35); + + BigNumber.config({DECIMAL_PLACES : 10}); + TbaseOut('71.4dadah84a6', '127.26419', 18); + + BigNumber.config({DECIMAL_PLACES : 62}); + TbaseOut('pho3b9iei6hp0dcf72fih.ph9881jc7d7c0c0mgpgd1ji1k02ola0l976leng417ng4dma8k5jj95gommail', '511945071604551808598197283361.9872166378092262156654881169655510', 26); + + BigNumber.config({DECIMAL_PLACES : 16}); + TbaseOut('98.1902712204800298', '107.16547', 11); + + BigNumber.config({DECIMAL_PLACES : 20}); + + function TtoString(expected, value) { + assert(expected, new BigNumber(value).toString()) + } + + TtoString('NaN', NaN); + TtoString('Infinity', 1/0); + TtoString('-Infinity', -1/0); + TtoString('0', 0); + TtoString('9', 9); + TtoString('90', 90); + TtoString('90.12', 90.12); + TtoString('0.1', 0.1); + TtoString('0.01', 0.01); + TtoString('0.0123', 0.0123); + TtoString('111111111111111111111', '111111111111111111111'); + TtoString('1111111111111111111111', '1111111111111111111111'); + TtoString('11111111111111111111111', '11111111111111111111111'); + TtoString('0.00001', 0.00001); + TtoString('0.000001', 0.000001); + + BigNumber.config({EXPONENTIAL_AT : 0}); + + TtoString('5.73447902457635174479825134e+14', '573447902457635.174479825134'); + TtoString('1.07688e+1', '10.7688'); + TtoString('3.171194102379077141557759899307946350455841e+27', '3171194102379077141557759899.307946350455841'); + TtoString('4.924353466898191177698653319742594890634579e+37', '49243534668981911776986533197425948906.34579'); + TtoString('6.85558243926569397328633907445409866949445343654692955e+18', '6855582439265693973.28633907445409866949445343654692955'); + TtoString('1e+0', '1'); + TtoString('2.1320000803e+7', '21320000.803'); + TtoString('5.0878741e+4', '50878.741'); + TtoString('5.1932898288391e+8', '519328982.88391'); + TtoString('5.690616778176956027307884725933410349604387915634524e+49', '56906167781769560273078847259334103496043879156345.24'); + TtoString('3.25099780528575457273246693147645e+15', '3250997805285754.572732466931476450'); + TtoString('3e+0', '3'); + TtoString('2.5811494197573291905990947355226e+13', '25811494197573.291905990947355226'); + TtoString('5.60372259169833930471746454125e+13', '56037225916983.3930471746454125'); + TtoString('1.2615810663732236602461593613783e+7', '12615810.663732236602461593613783'); + TtoString('1.4654366449266911507705477499035407722184965108377032e+11', '146543664492.66911507705477499035407722184965108377032'); + TtoString('6.4986735507448912857131832908423940757e+38', '649867355074489128571318329084239407570.0'); + TtoString('3.6146989180120676857245474944e+3', '3614.6989180120676857245474944'); + TtoString('9.928654762302286149994896625074e+4', '99286.54762302286149994896625074'); + TtoString('3.46424170787806074650506079e+3', '3464.24170787806074650506079'); + TtoString('1.25934313355319666474752550204680303068865719647e+33', '1259343133553196664747525502046803.03068865719647'); + TtoString('1.23014105337660651106978059198916100450966081493207e+27', '1230141053376606511069780591.98916100450966081493207'); + TtoString('1.386164712267169624993434287237e+23', '138616471226716962499343.4287237'); + TtoString('2.66076369930322488334961932e+3', '2660.76369930322488334961932'); + + BigNumber.config({EXPONENTIAL_AT : 1E9}); + + function TtoExponential(expected, value, decimalPlaces){ + assert(String(expected), new BigNumber(value).toExponential(decimalPlaces)); + } + + TtoExponential('1e+0', 1, undefined); + TtoExponential('1.1e+1', 11, undefined); + TtoExponential('1.12e+2', 112, undefined); + TtoExponential('1e+0', 1, 0); + TtoExponential('1e+1', 11, 0); + TtoExponential('1e+2', 112, 0); + TtoExponential('1.0e+0', 1, 1); + TtoExponential('1.1e+1', 11, 1); + TtoExponential('1.1e+2', 112, 1); + TtoExponential('1.00e+0', 1, 2); + TtoExponential('1.10e+1', 11, 2); + TtoExponential('1.12e+2', 112, 2); + TtoExponential('1.000e+0', 1, 3); + TtoExponential('1.100e+1', 11, 3); + TtoExponential('1.120e+2', 112, 3); + TtoExponential('1e-1', 0.1, undefined); + TtoExponential('1.1e-1', 0.11, undefined); + TtoExponential('1.12e-1', 0.112, undefined); + TtoExponential('1e-1', 0.1, 0); + TtoExponential('1e-1', 0.11, 0); + TtoExponential('1e-1', 0.112, 0); + TtoExponential('1.0e-1', 0.1, 1); + TtoExponential('1.1e-1', 0.11, 1); + TtoExponential('1.1e-1', 0.112, 1); + TtoExponential('1.00e-1', 0.1, 2); + TtoExponential('1.10e-1', 0.11, 2); + TtoExponential('1.12e-1', 0.112, 2); + TtoExponential('1.000e-1', 0.1, 3); + TtoExponential('1.100e-1', 0.11, 3); + TtoExponential('1.120e-1', 0.112, 3); + + BigNumber.config({ROUNDING_MODE : 0}); + + TtoExponential('-5.3453435435e+8', '-53453.435435E4', undefined); + TtoExponential('-8.8254658100092746334967191957167916942544e+17', '-882546581000927463.34967191957167916942543286', 40); + TtoExponential('-4.794121828559674450610889008537305783490457e-9', '-0.00000000479412182855967445061088900853730578349045628396662493370334888944406719979291547717079', 42); + TtoExponential('3.6149e+33', '3614844933096444884855774574994631.0106397808', 4); + TtoExponential('5.582954000000000e-12', '0.000000000005582954', 15); + TtoExponential('-3.88740271991885914774802363151163005925700000000000000000e-24', '-0.000000000000000000000003887402719918859147748023631511630059257', 56); + + BigNumber.config({ROUNDING_MODE : 1}); + + TtoExponential('0e+0', '-0.0E-0', undefined); + TtoExponential('-2.856376815219143184897347685012382222462687620998915470135915e+6', '-2856376.815219143184897347685012382222462687620998915470135915511363444', 60); + TtoExponential('7.75700e-24', '0.000000000000000000000007757', 5); + TtoExponential('7.0e-1', '0.7', 1); + TtoExponential('5.2109749078977455423107465583658126e+37', '52109749078977455423107465583658126637', 34); + TtoExponential('3.631093819552528994444977110063007461579154042777868294000e-29', '0.00000000000000000000000000003631093819552528994444977110063007461579154042777868294', 57); + TtoExponential('-9.893937860425888e+8', '-989393786.042588804219191', 15); + + BigNumber.config({ROUNDING_MODE : 2}); + + TtoExponential('-5.28860565e-16', '-0.00000000000000052886056528317233012115396784629214632', 8); + TtoExponential('6.4114675970838738000e-18', '0.0000000000000000064114675970838738', 19); + TtoExponential('8.00000000000000000000e-20', '0.00000000000000000008', 20); + TtoExponential('2.74000064578288771723078597711103520450391668117802304078152085625023633681179e+24', '2740000645782887717230785.977111035204503916681178023040781520856250236336811781347278', 77); + TtoExponential('8.1936742669491704846805837777816457628e-16', '0.00000000000000081936742669491704846805837777816457628', 37); + TtoExponential('-7.2157448e+14', '-721574484716710.00141299844961546', 7); + TtoExponential('-5.321807464703650000000e-15', '-0.00000000000000532180746470365', 21); + TtoExponential('-4.449e+27', '-4449471658582621135143349142.228707647170080816912435271162', 3); + + BigNumber.config({ROUNDING_MODE : 3}); + + TtoExponential('-9.99999999000000009e+8', '-999999999.000000009e-0', undefined); + TtoExponential('-3.99764422903251220452704763278376060858663250289320247532595e+24', '-3997644229032512204527047.63278376060858663250289320247532594416986984981431156065660613', 59); + TtoExponential('5.534083545686157907280686578717428772e+12', '5534083545686.157907280686578717428772', 36); + TtoExponential('5.00000000e-9', '0.000000005', 8); + TtoExponential('-4.08363116583051e+14', '-408363116583051', 14); + TtoExponential('9.278230415634296945273818e+19', '92782304156342969452.738186255580532649103987374718221928871873054827841260470670536425', 24); + + BigNumber.config({ROUNDING_MODE : 4}); + + TtoExponential('-5.002239116605888927178702930656e-39', '-0.00000000000000000000000000000000000000500223911660588892717870293065633642', 30); + TtoExponential('-8.52292947230244775435e+29', '-852292947230244775434968241532.494643593912804433318745222587246680109833509655450267792446', 20); + TtoExponential('-6.1169514510867e+10', '-61169514510.8673382', 13); + TtoExponential('-8.05745763527307676170759722175169266017831695215e+48', '-8057457635273076761707597221751692660178316952146', 47); + TtoExponential('-4.923572102098e+10', '-49235721020.9847017846898652687600227388412980598816', 12); + TtoExponential('-7.981341661715027117746906076515945e+41', '-798134166171502711774690607651594491039629', 33); + TtoExponential('-8.00e-3', '-0.008', 2); + + BigNumber.config({ROUNDING_MODE : 5}); + + TtoExponential('4.95474614815842e+38', '495474614815842191683004449862568813538.573064401156', 14); + TtoExponential('-8.9667567079038139e+16', '-89667567079038139', 16); + TtoExponential('-7.0e+2', '-703', 1); + TtoExponential('-2.6249e+33', '-2624861185343559570287214983819906', 4); + TtoExponential('-6.510119186347371697501169416839709631422185436811698613000000000000000000000000000000e-31', '-0.0000000000000000000000000000006510119186347371697501169416839709631422185436811698613', 84); + TtoExponential('7.73e+3', '7729', 2); + TtoExponential('1.4393781011009257793117531801549e+4', '14393.781011009257793117531801548751', 31); + + BigNumber.config({ROUNDING_MODE : 6}); + + TtoExponential('-4.3502707501164e+36', '-4350270750116411997402439304498892819', 13); + TtoExponential('9.5e-21', '0.0000000000000000000094520280724178734152', 1); + TtoExponential('1.39631186750554172785676012693418617250072200744214625994656047727270672248243741907e+34', '13963118675055417278567601269341861.725007220074421462599465604772727067224824374190703237660781', 83); + TtoExponential('5.9446570e-26', '0.00000000000000000000000005944657036540768164877637239177740419063920648', 7); + TtoExponential('7.00000e-12', '0.000000000007', 5); + + BigNumber.config({ROUNDING_MODE : 4}); + + TtoExponential('-2.033619450856645241153977e+0', '-2.03361945085664524115397653636144859', 24); + TtoExponential('1.130e+8', '112955590.0430616', 3); + TtoExponential('-2.1366468193419876852426155614364269e+10', '-21366468193.419876852426155614364269', 34); + TtoExponential('5.82086615659566151529e+7', '58208661.56595661515285734890860077163', 20); + + function TtoFixed(expected, value, decimalPlaces){ + assert(String(expected), new BigNumber(value).toFixed(decimalPlaces)); + } + + TtoFixed('NaN', NaN, 2); + TtoFixed('Infinity', 1/0, 2); + TtoFixed('-Infinity', -1/0, 2); + + TtoFixed('1111111111111111111111.00000000', '1111111111111111111111', 8); + TtoFixed('0.1', 0.1, 1); + TtoFixed('0.10', 0.1, 2); + TtoFixed('0.100', 0.1, 3); + TtoFixed('0.01', 0.01, 2); + TtoFixed('0.010', 0.01, 3); + TtoFixed('0.0100', 0.01, 4); + TtoFixed('0.00', 0.001, 2); + TtoFixed('0.001', 0.001, 3); + TtoFixed('0.0010', 0.001, 4); + TtoFixed('1.0000', 1, 4); + TtoFixed('1.0', 1, 1); + TtoFixed('1', 1, 0); + TtoFixed('12', 12, 0); + TtoFixed('1', 1.1, 0); + TtoFixed('12', 12.1, 0); + TtoFixed('1', 1.12, 0); + TtoFixed('12', 12.12, 0); + TtoFixed('0.0000006', 0.0000006, 7); + TtoFixed('0.00000006', 0.00000006, 8); + TtoFixed('0.000000060', 0.00000006, 9); + TtoFixed('0.0000000600', 0.00000006, 10); + TtoFixed('0', 0, 0); + TtoFixed('0.0', 0, 1); + TtoFixed('0.00', 0, 2); + + BigNumber.config({ROUNDING_MODE : 0}); + + TtoFixed('6552606716539719300271040797809220.3', '6552606716539719300271040797809220.237838405', 1); + TtoFixed('25605410.260045950231371', '25605410.260045950231370974066', 15); + TtoFixed('-65593283.0000', '-65593283', 4); + TtoFixed('-2238743875407788208860272230040067273281097722822075126.88000000000', '-2238743875407788208860272230040067273281097722822075126.88', 11); + TtoFixed('-1714042659419404211.0000000', '-1714042659419404211', 7); + TtoFixed('580861301.000', '580861301', 3); + TtoFixed('-495746734.000', '-495746734', 3); + TtoFixed('-909962202.00000', '-909962202', 5); + TtoFixed('-6588.00', '-6588', 2); + + BigNumber.config({ROUNDING_MODE : 1}); + + TtoFixed('0.3', '0.3', 1); + TtoFixed('-200258348374.3', '-200258348374.3595802551014614089785610548492885372322083789', 1); + TtoFixed('-8996550690041157178188143247448286757711.5580857413', '-8996550690041157178188143247448286757711.55808574133329', 10); + TtoFixed('-3172413669280032477.00', '-3172413669280032477', 2); + TtoFixed('6547946357820.750067107731812021675', '6547946357820.750067107731812021675351468709784004', 21); + TtoFixed('24188393190716631282750407915133817062572333100239.0000000000000000000', '24188393190716631282750407915133817062572333100239', 19); + TtoFixed('539982361589798324286450574560330534901309503.82000000', '539982361589798324286450574560330534901309503.82', 8); + TtoFixed('829898800701640360552652.0000', '829898800701640360552652', 4); + TtoFixed('-1585782773394.4', '-1585782773394.44501382110847', 1); + TtoFixed('-7604844176594943774211951887242195107.399', '-7604844176594943774211951887242195107.399576743428669618164', 3); + + BigNumber.config({ROUNDING_MODE : 2}); + + TtoFixed('7810971819938620325901899057970512790433.0000000000000000', '7810971819938620325901899057970512790433', 16); + TtoFixed('-623395.0', '-623395', 1); + TtoFixed('81334094079413997693749807.000000000000', '81334094079413997693749807', 12); + TtoFixed('790143966.5', '790143966.406169480041929356421', 1); + TtoFixed('-0.000485', '-0.0004851099615478', 6); + TtoFixed('843581583868277359263.9721265', '843581583868277359263.97212648230399373761717', 7); + TtoFixed('-921038771017147427324121032.000000', '-921038771017147427324121032', 6); + TtoFixed('-823.0', '-823', 1); + TtoFixed('505.0', '505', 1); + + BigNumber.config({ROUNDING_MODE : 3}); + + TtoFixed('0.0000', '0.00000000000584', 4); + TtoFixed('-79055907138737329232.165677999092552368', '-79055907138737329232.1656779990925523674', 18); + TtoFixed('47206303530045536472421888342339.00000000', '47206303530045536472421888342339', 8); + TtoFixed('3974.0', '3974', 1); + TtoFixed('1296297430771.39', '1296297430771.391670729445980444292', 2); + TtoFixed('0.000016', '0.00001686928031', 6); + TtoFixed('-0.00001', '-0.0000000000008', 5); + TtoFixed('4883938724383.000', '4883938724383', 3); + TtoFixed('-5.4115622307', '-5.411562230628539329345282639155988044655000352687981880842', 10); + TtoFixed('-0.01', '-0.0000000000155280115429218804426906540524', 2); + TtoFixed('-2730930776035874709906.00000', '-2730930776035874709906', 5); + TtoFixed('8419336352549424092369623.00000', '8419336352549424092369623', 5); + + BigNumber.config({ROUNDING_MODE : 4}); + + TtoFixed('733744593401073823825766410831877679446.0000000000000000000', '733744593401073823825766410831877679446', 19); + TtoFixed('-64.6849459', '-64.6849458687691227978', 7); + TtoFixed('-0.000000', '-0.00000000009', 6); + TtoFixed('-62537287527837589298857228059657673223234916.95923265430000000', '-62537287527837589298857228059657673223234916.9592326543', 17); + TtoFixed('3393668096256773847245721315080265089731.000000', '3393668096256773847245721315080265089731', 6); + TtoFixed('0.0', '0.0000000000000056674956638008432348702401392', 1); + TtoFixed('72516372734.6', '72516372734.6447', 1); + TtoFixed('-418.28', '-418.2800731793741351', 2); + TtoFixed('0.00', '0.001', 2); + + BigNumber.config({ROUNDING_MODE : 5}); + + TtoFixed('0.00', '0.00000000000000070362', 2); + TtoFixed('682377946933004839.0000000', '682377946933004839', 7); + TtoFixed('0.000000000', '0.00000000000000301722508588270616971784651380892069087869575', 9); + TtoFixed('-356330174906.7', '-356330174906.737986270704', 1); + TtoFixed('771875969530483104163034745359742192923504.000000000000000', '771875969530483104163034745359742192923504', 15); + TtoFixed('-85.57612133364', '-85.576121333642541652128540737082', 11); + TtoFixed('-796870619982006783.00000000', '-796870619982006783', 8); + TtoFixed('985819.0', '985819', 1); + + BigNumber.config({ROUNDING_MODE : 6}); + + TtoFixed('-6614662975368684488885953285955838893900074215956.00', '-6614662975368684488885953285955838893900074215956', 2); + TtoFixed('8642393776898.000', '8642393776898', 3); + TtoFixed('3612207878528.1106344698085142865', '3612207878528.1106344698085142865438924419', 19); + TtoFixed('977910386.93', '977910386.9343537', 2); + TtoFixed('-8937937492688941768401276851642629965923372.0', '-8937937492688941768401276851642629965923372', 1); + TtoFixed('-8327876772303865517454752161.4376112752921904774', '-8327876772303865517454752161.43761127529219047742910886', 19); + TtoFixed('-27707.00', '-27707', 2); + TtoFixed('-7287595765894242586375.92700435484', '-7287595765894242586375.927004354837723619581861634319', 11); + TtoFixed('-0.00000', '-0.000000000000023670858459165486137218740358207859', 5); + TtoFixed('574676836802209077.64156', '574676836802209077.641563875647945277493356873895', 5); + TtoFixed('-3041038455237222898218053653661.87952947815', '-3041038455237222898218053653661.87952947815', 11); + TtoFixed('-628244132307.000', '-628244132307', 3); + + BigNumber.config({ROUNDING_MODE : 4}); + + function TtoFraction(expected, value, maxDenominator){ + assert(expected, new BigNumber(value).toFraction(maxDenominator).toString()); + } + + TtoFraction('5,1', '5.1582612935891', '3'); + TtoFraction('14645,1797', '8.14969395596340', '4682'); + TtoFraction('350921,81990', '4.28004634702', '82418'); + TtoFraction('923754598113149102531799372705758450549,100000000', '9237545981131491025317993727057.58450549'); + TtoFraction('23665467152910525354658972818814752082,49447', '478602688796297558085606261629921.9787246948249979233505266225354557384', '57466'); + TtoFraction('12401124714135748113774134798397,2', '6200562357067874056887067399198.66971421701', '2'); + TtoFraction('5747456325233732815460960864983211610837351385715799969377,100000000000000000000000000000', '57474563252337328154609608649.83211610837351385715799969377'); + TtoFraction('4744,61', '77.7705294446793765233206385561288346447', '86'); + TtoFraction('230406626515463254737498487452583023685806305331639,100000000000000000000000000', '2304066265154632547374984.87452583023685806305331639'); + TtoFraction('8452816572418429518944119647,5000', '1690563314483685903788823.9294'); + TtoFraction('48239499471878294436129777581,10000000000000000', '4823949947187.82944361297775810'); + TtoFraction('45172634468362586403517152343110493066053,74300', '607976237797612199239800166125309462.530995962577562', '89241'); + TtoFraction('245629009658126699398365025147112883705717,1250000000000000000000000000000', '196503207726.5013595186920201176903069645736'); + TtoFraction('19575206081236584421562241755643406299,500000000000000000000000000000000000', '39.150412162473168843124483511286812598'); + TtoFraction('124335953351113119989680198250484096210027176457861877,20000000000000000000000', '6216797667555655999484009912524.20481050135882289309385'); + TtoFraction('62359286968916651021817694022163661098254437249041482587,100000000000000000000000000', '623592869689166510218176940221.63661098254437249041482587'); + TtoFraction('1406253392003122107350210973,50', '28125067840062442147004219.46', '90'); + TtoFraction('736337826,1', '736337826.0', '1'); + TtoFraction('2294354321,3019', '759971.62007285863174441704674479534091075', '5946'); + TtoFraction('342555042697121035185957633789368546657896318423873,50000000000000000000000000', '6851100853942420703719152.67578737093315792636847746'); + TtoFraction('3511582655801640591,52', '67530435688493088.2885316751682999639624370547426320', '73'); + TtoFraction('697806103903081,1', '697806103903081.3297023089715266281593302923590', '1'); + TtoFraction('504239849856718524776121635107896338763895,26083', '19332126283660565302155489595057943440.70448184108567544983900489517214731', '26482'); + TtoFraction('3513961,10', '351396.0988885676988110229927700324193', '11'); + TtoFraction('1514998954038665195379885,15263', '99259578984384799540.056673', '55079'); + TtoFraction('1190687310674838338273481559,50000', '23813746213496766765469.63118'); + TtoFraction('31747884008318370382077439489,40', '793697100207959259551935987.225181146039', '45'); + TtoFraction('39451289109544785156061546711681,59993', '657598204949657212609163514.271348320970259397527780637349273932', '61325'); + TtoFraction('3859539118592118171061,65', '59377524901417202631.7076617756627530296590420377861', '248'); + TtoFraction('2529860848590369124121129138,36761', '68819152052184900414056.449443703377131320899467509', '59208'); + TtoFraction('17331073,2', '8665536.3781112033855216846406980971689', '2'); + TtoFraction('11088761069693879,25000', '443550442787.75516'); + TtoFraction('37298162459148947522489,474', '78688106453900733169.80801275320205353359142143262532', '517'); + TtoFraction('12411782390212011049587005051032466579057,100000000000000000000000000000000000000', '124.11782390212011049587005051032466579057'); + TtoFraction('288377889236302421024476469650301879883847,50000000000000000000000', '5767557784726048420.48952939300603759767694'); + TtoFraction('64269805556832147,1', '64269805556832146.8921574533060466484388410550211', '2'); + TtoFraction('1019428223041680221,2', '509714111520840110.44623631764611004359625363775303233110', '2'); + TtoFraction('15446409508173177876456900755482517,250000', '61785638032692711505827603021.9300680'); + TtoFraction('794012664285496747924956753856029102507539,10000000', '79401266428549674792495675385602910.2507539'); + TtoFraction('1254937597799095507639361,5', '250987519559819101527872.2'); + TtoFraction('6200289913593672418541428454415821,29', '213803100468747324777290636359166.2447131068603257501', '29'); + TtoFraction('28363420172665408049802993720278,1', '28363420172665408049802993720278.0', '53164'); + TtoFraction('614972069955669535218947919309413188717428438,76097', '8081423314397013485668921499000133891183.99461213951158548435230604703', '85075'); + TtoFraction('456397843623966327008858405616124567381,62500000000000000000', '7302365497983461232.141734489857993078096'); + TtoFraction('18578778016377890885386246496020651,1000000000000000000000000', '18578778016.377890885386246496020651'); + + function TtoPrecision(expected, value, precision){ + assert(String(expected), new BigNumber(value).toPrecision(precision)); + } + + BigNumber.config({EXPONENTIAL_AT : [-7, 40]}); + + TtoPrecision('1e+27', '1.2345e+27', 1); + TtoPrecision('1.2e+27', '1.2345e+27', 2); + TtoPrecision('1.23e+27', '1.2345e+27', 3); + TtoPrecision('1.235e+27', '1.2345e+27', 4); + TtoPrecision('1.2345e+27', '1.2345e+27', 5); + TtoPrecision('1.23450e+27', '1.2345e+27', 6); + TtoPrecision('1.234500e+27', '1.2345e+27', 7); + + TtoPrecision('-1e+27', '-1.2345e+27', 1); + TtoPrecision('-1.2e+27', '-1.2345e+27', 2); + TtoPrecision('-1.23e+27', '-1.2345e+27', 3); + TtoPrecision('-1.235e+27', '-1.2345e+27', 4); + TtoPrecision('-1.2345e+27', '-1.2345e+27', 5); + TtoPrecision('-1.23450e+27', '-1.2345e+27', 6); + TtoPrecision('-1.234500e+27', '-1.2345e+27', 7); + + BigNumber.config({ROUNDING_MODE : 0}); + + TtoPrecision('-0.000090000000', '-0.00009', 8); + TtoPrecision('-7e-7', '-0.0000007', 1); + TtoPrecision('68.9316834061848', '68.931683406184761912218250317', 15); + TtoPrecision('7.8601018089704732e+27', '7860101808970473167417935916.60087069', 17); + TtoPrecision('3.21445885399803244067719798337437062000000e-11', '0.0000000000321445885399803244067719798337437062', 42); + TtoPrecision('-8171786349835057630612358814.162756978', '-8171786349835057630612358814.162756977984', 37); + TtoPrecision('3340.9039701', '3340.903970019817086594869184429527413533291595472085', 11); + TtoPrecision('-7269097658095414435895.9161181115739745427300313060', '-7269097658095414435895.916118111573974542730031306', 50); + TtoPrecision('0.00000632207', '0.00000632206077863', 6); + TtoPrecision('6e+2', '573', 1); + TtoPrecision('7.4e-7', '0.000000738', 2); + TtoPrecision('-5.031561e-7', '-0.0000005031560306227217140253964236911907612837', 7); + TtoPrecision('-4.291e+11', '-429050053964', 4); + TtoPrecision('8.514e+7', '85131637', 4); + TtoPrecision('-3.4e-9', '-0.000000003326783057540398442677461', 2); + TtoPrecision('6.9404295962722512e-20', '0.00000000000000000006940429596272251146200868514973032594273', 17); + TtoPrecision('-828376248340605120247.15155295014', '-828376248340605120247.15155295013990774586360178257303370779', 32); + + + BigNumber.config({ROUNDING_MODE : 1}); + + TtoPrecision('-844789036.5239726', '-844789036.52397268892', 16); + TtoPrecision('-5056.20629012767878749185273209679064306054', '-5056.206290127678787491852732096790643060542', 42); + TtoPrecision('-0.3287519131314873763501859870298952500', '-0.32875191313148737635018598702989525', 37); + TtoPrecision('-60729764', '-60729764', 8); + TtoPrecision('-7.622e-14', '-0.00000000000007622481594531380999826456196664586', 4); + TtoPrecision('-4686402261639729535.736324492474', '-4686402261639729535.7363244924747488', 31); + TtoPrecision('-2.0', '-2', 2); + TtoPrecision('-13801188035233586637950193108.13592574381473451125649500', '-13801188035233586637950193108.135925743814734511256495', 55); + TtoPrecision('0.0000807327587149839799300000', '0.00008073275871498397993', 24); + TtoPrecision('-6.000000e-8', '-0.00000006', 7); + TtoPrecision('-3.83574993e+11', '-383574993535', 9); + TtoPrecision('7.6987000000000000e-14', '0.000000000000076987', 17); + TtoPrecision('80928866804.6112050947427973', '80928866804.6112050947427973864826014844575374353', 27); + TtoPrecision('-0.00730140', '-0.0073014067221009206110062377503733', 6); + + BigNumber.config({ROUNDING_MODE : 2}); + + TtoPrecision('-0.0300', '-0.0300921721159558', 3); + TtoPrecision('65317841202.20949859371772273480125', '65317841202.2094985937177227348012464402154', 34); + TtoPrecision('-8.9231575495202e+29', '-892315754952021994731329589682.1894180393920044085713', 14); + TtoPrecision('-2.8075679202e-8', '-0.0000000280756792028583066', 11); + TtoPrecision('9.71456e+9', '9714558552', 6); + TtoPrecision('2.9514099281e-10', '0.00000000029514099281', 11); + TtoPrecision('-1.24459e+14', '-124459985101107', 6); + TtoPrecision('0.0000734657394154607815562372000000', '0.0000734657394154607815562372', 30); + TtoPrecision('1.78719530353972e+15', '1787195303539715', 15); + TtoPrecision('-2.8e+9', '-2861102528', 2); + TtoPrecision('-8.74480375581000e-9', '-0.00000000874480375581', 15); + TtoPrecision('-1792404726015427380.248150830448457643618022', '-1792404726015427380.248150830448457643618022', 43); + TtoPrecision('-678437320202616518.2220157912209286', '-678437320202616518.22201579122092864', 34); + + BigNumber.config({ROUNDING_MODE : 3}); + + TtoPrecision('-39449414270333.925852213835', '-39449414270333.925852213834759031494508489474', 26); + TtoPrecision('-7.50437989976', '-7.50437989975503711836768', 12); + TtoPrecision('-0.000004303975760000000', '-0.00000430397576', 16); + TtoPrecision('-16040233916257241895.97650633973989', '-16040233916257241895.9765063397398857', 34); + TtoPrecision('-7438.9287248601393819', '-7438.9287248601393818639176907606', 20); + TtoPrecision('9.857465584298e-7', '0.000000985746558429876825600458537705318327799', 13); + TtoPrecision('532637.9095983547284850466577958315920', '532637.90959835472848504665779583159203905641996', 37); + TtoPrecision('-1.40416695292e+30', '-1404166952915258058306475434520.7856110230505157', 12); + TtoPrecision('60346876.6670832429026869255506808488', '60346876.6670832429026869255506808488', 36); + TtoPrecision('-2.52466133e+23', '-252466132238128405832984', 9); + TtoPrecision('55', '55', 2); + TtoPrecision('8', '8', 1); + + BigNumber.config({ROUNDING_MODE : 4}); + + TtoPrecision('7.905300379788e+16', '79053003797878062.6454954', 13); + TtoPrecision('-6.83490000000e-13', '-0.00000000000068349', 12); + TtoPrecision('-62760641815.69084973661201201', '-62760641815.690849736612012010742308663', 28); + TtoPrecision('0.000704', '0.000704496313', 3); + TtoPrecision('82926865286287.8852357368342860830310721063079299643', '82926865286287.88523573683428608303107210630792996432', 51); + TtoPrecision('-0.00032388272393900301214220090249', '-0.00032388272393900301214220090248744799603424908', 29); + TtoPrecision('8.6e+12', '8621641486938.4837308885005093571508566552428700982454', 2); + TtoPrecision('2', '2', 1); + TtoPrecision('1.4641440117052559075e+20', '146414401170525590746.047955203899370771105088', 20); + TtoPrecision('3511.925583', '3511.925583', 10); + TtoPrecision('2861824.253079699095728', '2861824.253079699095727765750377038689', 22); + TtoPrecision('-3.940097756e+10', '-39400977564.548924098664431671700066962', 10); + TtoPrecision('-888', '-888', 3); + TtoPrecision('-0.000302106125213724988141721256104', '-0.00030210612521372498814172125610432438685', 30); + TtoPrecision('6943.4804552555315615809650428503', '6943.480455255531561580965042850266831249032130818358478956', 32); + + BigNumber.config({ROUNDING_MODE : 5}); + + TtoPrecision('-1408003897645960.648499616456', '-1408003897645960.648499616456', 28); + TtoPrecision('-7719307749101742537.6299396338672184', '-7719307749101742537.6299396338672184334306', 35); + TtoPrecision('-1.0', '-1', 2); + TtoPrecision('-8.28e+14', '-827860423543649', 3); + TtoPrecision('0.00054398953021585321711560388890', '0.00054398953021585321711560388889590290139888', 29); + TtoPrecision('-4.409e-9', '-0.000000004408792', 4); + TtoPrecision('4.0000e-10', '0.0000000004', 5); + TtoPrecision('3.40e+16', '34001779327925905', 3); + TtoPrecision('-9.03e+34', '-90332622851356543193546536340366547', 3); + TtoPrecision('-4.5320e+16', '-45320100856429143.39155209710530673318222777', 5); + TtoPrecision('3.618e+30', '3618328715720583671291544414202', 4); + TtoPrecision('-1003.61140', '-1003.61139687804673322250551', 9); + TtoPrecision('-8139415035028632370.38737', '-8139415035028632370.38736602659835', 24); + TtoPrecision('8e+7', '83198058', 1); + + BigNumber.config({ROUNDING_MODE : 6}); + + TtoPrecision('0.08000', '0.08', 4); + TtoPrecision('-4.5132e+21', '-4513243388120382069815.8508153058993058875', 5); + TtoPrecision('-73549', '-73549.2594630551663822238', 5); + TtoPrecision('1.275868004728922895890883e+29', '127586800472892289589088296800.6', 25); + TtoPrecision('-0.0003715444034899460421534099962225699000', '-0.0003715444034899460421534099962225699', 37); + TtoPrecision('-6.9625565265e+24', '-6962556526511822306135536', 11); + TtoPrecision('1.67583703641e+13', '16758370364138.915293525076269061228714877', 12); + TtoPrecision('-173594.95064085553515176707313947534918109631092170', '-173594.950640855535151767073139475349181096310921699', 50); + TtoPrecision('-6.9503965525e+19', '-69503965525000308384.151383', 11); + TtoPrecision('4.411225e+20', '441122486054080817112', 7); + TtoPrecision('2.467044064783596937642371770e+31', '24670440647835969376423717700462.39', 28); + TtoPrecision('3.9711897549481645654e+24', '3971189754948164565361634.8039734590476326224193520402091769', 20); + TtoPrecision('-1.4757613208690e+21', '-1475761320868963235919.64499841336073105746686372924161', 14); + TtoPrecision('91683083887068.6191146', '91683083887068.61911461351134520171343337804061135', 21); + TtoPrecision('-7923074181102822.578', '-7923074181102822.5778', 19); + + n = new BigNumber(1); + assert(true, n.isFinite()); + assert(false, n.isNaN()); + assert(false, n.isNegative()); + assert(false, n.isZero()); + assert(true, n.equals(n)); + assert(true, n.equals(n, 2)); + assert(true, n.equals('1.0', 20)); + assert(true, n.equals(new BigNumber(1, 10), 26)); + assert(true, n.equals(new BigNumber(1), 27)); + assert(true, n.equals(1, 36)); + assert(true, n.greaterThan(0.99999)); + assert(false, n.greaterThanOrEqualTo(1.1)); + assert(true, n.lessThan(1.001)); + assert(true, n.lessThanOrEqualTo(2)); + assert(n.toString(), n.valueOf()); + + n = new BigNumber('-0.1'); + assert(true, n.isF()); + assert(false, n.isNaN()); + assert(true, n.isNeg()); + assert(false, n.isZ()); + assert(false, n.equals(0.1)); + assert(false, n.greaterThan(-0.1)); + assert(true, n.greaterThanOrEqualTo(-1)); + assert(true, n.lessThan(-0.01)); + assert(false, n.lessThanOrEqualTo(-1)); + assert(n.toString(), n.valueOf()); + + n = new BigNumber(Infinity); + assert(false, n.isFinite()); + assert(false, n.isNaN()); + assert(false, n.isNegative()); + assert(false, n.isZero()); + assert(true, n.eq('Infinity')); + assert(true, n.eq(1/0)); + assert(true, n.gt('9e999')); + assert(true, n.gte(Infinity)); + assert(false, n.lt(Infinity)); + assert(true, n.lte(Infinity)); + assert(n.toString(), n.valueOf()); + + n = new BigNumber('-Infinity'); + assert(false, n.isF()); + assert(false, n.isNaN()); + assert(true, n.isNeg()); + assert(false, n.isZ()); + assert(false, n.equals(Infinity)); + assert(true, n.equals(-1/0)); + assert(false, n.greaterThan(-Infinity)); + assert(true, n.greaterThanOrEqualTo('-Infinity', 8)); + assert(true, n.lessThan(0)); + assert(true, n.lessThanOrEqualTo(Infinity)); + assert(n.toString(), n.valueOf()); + + n = new BigNumber('0.0000000'); + assert(true, n.isFinite()); + assert(false, n.isNaN()); + assert(false, n.isNegative()); + assert(true, n.isZero()); + assert(true, n.eq(-0)); + assert(true, n.gt(-0.000001)); + assert(false, n.gte(0.1)); + assert(true, n.lt(0.0001)); + assert(true, n.lte(-0)); + assert(n.toString(), n.valueOf()); + + n = new BigNumber(-0); + assert(true, n.isF()); + assert(false, n.isNaN()); + assert(true, n.isNeg()); + assert(true, n.isZ()); + assert(true, n.equals('0.000')); + assert(true, n.greaterThan(-1)); + assert(false, n.greaterThanOrEqualTo(0.1)); + assert(false, n.lessThan(0)); + assert(false, n.lessThan(0, 36)); + assert(true, n.lessThan(0.1)); + assert(true, n.lessThanOrEqualTo(0)); + assert(n.toString(), n.valueOf()); + + n = new BigNumber('NaN'); + assert(false, n.isFinite()); + assert(true, n.isNaN()); + assert(false, n.isNegative()); + assert(false, n.isZero()); + assert(false, n.eq(NaN)); + assert(false, n.eq(Infinity)); + assert(false, n.gt(0)); + assert(false, n.gte(0)); + assert(false, n.lt(1)); + assert(false, n.lte(-0)); + assert(false, n.lte(-1)); + assert(n.toString(), n.valueOf()); + + BigNumber.config({ ERRORS : false }); + + n = new BigNumber('hiya'); + assert(false, n.isFinite()); + assert(true, n.isNaN()); + assert(false, n.isNegative()); + assert(false, n.isZero()); + assert(false, n.equals(0)); + assert(false, n.greaterThan(0)); + assert(false, n.greaterThanOrEqualTo(-Infinity)); + assert(false, n.lessThan(Infinity)); + assert(false, n.lessThanOrEqualTo(0)); + assert(n.toString(), n.valueOf()); + + BigNumber.config({ ERRORS : true }); + + n = new BigNumber('-1.234e+2'); + assert(true, n.isF()); + assert(false, n.isNaN()); + assert(true, n.isNeg()); + assert(false, n.isZ()); + assert(true, n.eq(-123.4, 10)); + assert(true, n.gt('-ff', 16)); + assert(true, n.gte('-1.234e+3')); + assert(true, n.lt(-123.39999)); + assert(true, n.lte('-123.4e+0')); + assert(n.toString(), n.valueOf()); + + n = new BigNumber('5e-200'); + assert(true, n.isFinite()); + assert(false, n.isNaN()); + assert(false, n.isNegative()); + assert(false, n.isZero()); + assert(true, n.equals(5e-200)); + assert(true, n.greaterThan(5e-201)); + assert(false, n.greaterThanOrEqualTo(1)); + assert(true, n.lessThan(6e-200)); + assert(true, n.lessThanOrEqualTo(5.1e-200)); + assert(n.toString(), n.valueOf()); + + n = new BigNumber('1'); + assert(true, n.equals(n)); + assert(true, n.equals(n.toS())); + assert(true, n.equals(n.toString())); + assert(true, n.equals(n.valueOf())); + assert(true, n.equals(n.toFixed())); + assert(true, n.equals(1)); + assert(true, n.equals('1e+0')); + assert(false, n.equals(-1)); + assert(false, n.equals(0.1)); + + BigNumber.config({ ERRORS : false }); + + assert(false, new BigNumber(NaN).equals(0)); + assert(false, new BigNumber(null).equals(0)); + assert(false, new BigNumber(undefined).equals(0)); + assert(false, new BigNumber(Infinity).equals(0)); + assert(false, new BigNumber([]).equals(0)); + assert(false, new BigNumber([]).equals(0)); + assert(false, new BigNumber({}).equals(0)); + assert(false, new BigNumber('').equals(0)); + assert(false, new BigNumber(' ').equals(0)); + assert(false, new BigNumber('\t').equals(0)); + assert(false, new BigNumber('gerg').equals(0)); + assert(false, new BigNumber(new Date).equals(0)); + assert(false, new BigNumber(new RegExp).equals(0)); + assert(false, new BigNumber(0.1).equals(0)); + assert(false, new BigNumber(1e9 + 1).equals(1e9)); + assert(false, new BigNumber(1e9 - 1).equals(1e9)); + assert(true, new BigNumber(1e9 + 1).equals(1e9 + 1)); + assert(true, new BigNumber(1).equals(1)); + assert(false, new BigNumber(1).equals(-1)); + assert(false, new BigNumber(NaN).equals('efffe')); + + assert(false, new BigNumber('b').greaterThan('a')); + assert(false, new BigNumber('a').lessThan('b', 10)); + assert(true, new BigNumber('a', 16).lessThanOrEqualTo('ff', 16)); + assert(true, new BigNumber('b', 16).greaterThanOrEqualTo(9, 16)); + + BigNumber.config({ ERRORS : true }); + + assert(true, new BigNumber(10).greaterThan(10, 2)); + assert(true, new BigNumber(10).lessThan(10, 36)); + assert(false, new BigNumber(NaN).lessThan(NaN)); + assert(false, new BigNumber(Infinity).lessThan(-Infinity)); + assert(false, new BigNumber(Infinity).lessThan(Infinity)); + assert(true, new BigNumber(Infinity, 10).lessThanOrEqualTo(Infinity, 2)); + assert(false, new BigNumber(NaN).greaterThanOrEqualTo(NaN)); + assert(true, new BigNumber(Infinity).greaterThanOrEqualTo(Infinity)); + assert(true, new BigNumber(Infinity).greaterThanOrEqualTo(-Infinity)); + assert(false, new BigNumber(NaN).greaterThanOrEqualTo(-Infinity)); + assert(true, new BigNumber(-Infinity).greaterThanOrEqualTo(-Infinity)); + + assert(false, new BigNumber(2, 10).greaterThan(10, 2)); + assert(false, new BigNumber(10, 2).lessThan(2, 10)); + assert(true, new BigNumber(255).lessThanOrEqualTo('ff', 16)); + assert(true, new BigNumber('a', 16).greaterThanOrEqualTo(9, 16)); + assert(false, new BigNumber(0).lessThanOrEqualTo('NaN')); + assert(false, new BigNumber(0).greaterThanOrEqualTo(NaN)); + assert(false, new BigNumber(NaN, 2).lessThanOrEqualTo('NaN', 36)); + assert(false, new BigNumber(NaN, 36).greaterThanOrEqualTo(NaN, 2)); + assert(false, new BigNumber(0).lessThanOrEqualTo(-Infinity)); + assert(true, new BigNumber(0).greaterThanOrEqualTo(-Infinity)); + assert(true, new BigNumber(0).lessThanOrEqualTo('Infinity', 36)); + assert(false, new BigNumber(0).greaterThanOrEqualTo('Infinity', 36)); + assert(false, new BigNumber(10).lessThanOrEqualTo(20, 4)); + assert(true, new BigNumber(10).lessThanOrEqualTo(20, 5)); + assert(false, new BigNumber(10).greaterThanOrEqualTo(20, 6)); + + assert(false, new BigNumber(1.23001e-2).lessThan(1.23e-2)); + assert(true, new BigNumber(1.23e-2).lt(1.23001e-2)); + assert(false, new BigNumber(1e-2).lessThan(9.999999e-3)); + assert(true, new BigNumber(9.999999e-3).lt(1e-2)); + + assert(false, new BigNumber(1.23001e+2).lessThan(1.23e+2)); + assert(true, new BigNumber(1.23e+2).lt(1.23001e+2)); + assert(true, new BigNumber(9.999999e+2).lessThan(1e+3)); + assert(false, new BigNumber(1e+3).lt(9.9999999e+2)); + + assert(false, new BigNumber(1.23001e-2).lessThanOrEqualTo(1.23e-2)); + assert(true, new BigNumber(1.23e-2).lte(1.23001e-2)); + assert(false, new BigNumber(1e-2).lessThanOrEqualTo(9.999999e-3)); + assert(true, new BigNumber(9.999999e-3).lte(1e-2)); + + assert(false, new BigNumber(1.23001e+2).lessThanOrEqualTo(1.23e+2)); + assert(true, new BigNumber(1.23e+2).lte(1.23001e+2)); + assert(true, new BigNumber(9.999999e+2).lessThanOrEqualTo(1e+3)); + assert(false, new BigNumber(1e+3).lte(9.9999999e+2)); + + assert(true, new BigNumber(1.23001e-2).greaterThan(1.23e-2)); + assert(false, new BigNumber(1.23e-2).gt(1.23001e-2)); + assert(true, new BigNumber(1e-2).greaterThan(9.999999e-3)); + assert(false, new BigNumber(9.999999e-3).gt(1e-2)); + + assert(true, new BigNumber(1.23001e+2).greaterThan(1.23e+2)); + assert(false, new BigNumber(1.23e+2).gt(1.23001e+2)); + assert(false, new BigNumber(9.999999e+2).greaterThan(1e+3)); + assert(true, new BigNumber(1e+3).gt(9.9999999e+2)); + + assert(true, new BigNumber(1.23001e-2).greaterThanOrEqualTo(1.23e-2)); + assert(false, new BigNumber(1.23e-2).gte(1.23001e-2)); + assert(true, new BigNumber(1e-2).greaterThanOrEqualTo(9.999999e-3)); + assert(false, new BigNumber(9.999999e-3).gte(1e-2)); + + assert(true, new BigNumber(1.23001e+2).greaterThanOrEqualTo(1.23e+2)); + assert(false, new BigNumber(1.23e+2).gte(1.23001e+2)); + assert(false, new BigNumber(9.999999e+2).greaterThanOrEqualTo(1e+3)); + assert(true, new BigNumber(1e+3).gte(9.9999999e+2)); + + log('\n ' + passed + ' of ' + total + ' tests passed in ' + (+new Date() - start) + ' ms \n'); + return [passed, total];; +})(this.BigNumber); +if (typeof module !== 'undefined' && module.exports) module.exports = count; \ No newline at end of file diff --git a/node_modules/mysql/node_modules/bignumber.js/test/round.js b/node_modules/mysql/node_modules/bignumber.js/test/round.js new file mode 100644 index 0000000..6738f0d --- /dev/null +++ b/node_modules/mysql/node_modules/bignumber.js/test/round.js @@ -0,0 +1,2380 @@ +var count = (function round(BigNumber) { + var start = +new Date(), + log, + error, + u, + passed = 0, + total = 0; + + if (typeof window === 'undefined') { + log = console.log; + error = console.error; + } else { + log = function (str) { document.body.innerHTML += str.replace('\n', '
      ') }; + error = function (str) { document.body.innerHTML += '
      ' + + str.replace('\n', '
      ') + '
      ' }; + } + + if (!BigNumber && typeof require === 'function') BigNumber = require('../bignumber'); + + function assert(expected, actual) { + total++; + if (expected !== actual) { + error('\n Test number: ' + total + ' failed'); + error(' Expected: ' + expected); + error(' Actual: ' + actual); + //process.exit(); + } + else { + passed++; + //log('\n Expected and actual: ' + actual); + } + } + + function assertException(func, message) { + var actual; + total++; + try { + func(); + } catch (e) { + actual = e; + } + if (actual && actual.name == 'BigNumber Error') { + passed++; + //log('\n Expected and actual: ' + actual); + } else { + error('\n Test number: ' + total + ' failed'); + error('\n Expected: ' + message + ' to raise a BigNumber Error.'); + error(' Actual: ' + (actual || 'no exception')); + //process.exit(); + } + } + + function T(expected, value, decimalPlaces, roundingMode) { + assert(String(expected), new BigNumber(String(value)).round(decimalPlaces, roundingMode).toString()); + } + + log('\n Testing round...'); + + BigNumber.config({ + DECIMAL_PLACES : 20, + ROUNDING_MODE : 7, + ERRORS : true, + RANGE : 1E9, + EXPONENTIAL_AT : 1E9 + }); + + + T('0', '0.000084888060736883027314038572334303632'); + + T('-79998', '-79998'); + T('30845717889906383053', '30845717889906383052.56472015469740823'); + T('-446807', '-446806.9227761147047517'); + T('76', '76.0719'); + T('0', '-0.00686876124450101884528'); + T('71710176', '71710176'); + T('79', '79'); + T('-20187079148819697784', '-20187079148819697784'); + T('6309793381', '6309793381'); + T('76162410487880977', '76162410487880976.81307140573688335764284'); + T('7491318926', '7491318926.312122759153805942088431'); + T('74909422733607112719', '74909422733607112719.13179009875'); + T('559', '559.2110851431205'); + T('-20306363016185', '-20306363016184.760368254019194925'); + T('-6717914940586242526', '-6717914940586242525.574537480672174624149'); + T('-5', '-5'); + T('8', '8.0606265529'); + T('24701408591129838', '24701408591129838.22163'); + T('3806471925924246437202', '3806471925924246437201.71339576511057957'); + T('-85883753924431578007564277', '-85883753924431578007564277.399776'); + T('826068555927524695', '826068555927524695'); + T('0', '0.000058441452091833136219167587256'); + T('47353089', '47353089.2019161006899898'); + T('-372', '-372.03039745'); + T('3103', '3103'); + T('5620', '5620.48101861977'); + T('9105547112', '9105547112.1319443692'); + T('7472595749413646784408602', '7472595749413646784408602.1095168949'); + T('335816732795', '335816732794.51601276961965281205689254'); + T('-7911332887831436027', '-7911332887831436027.40569259650318'); + T('-52182567851715', '-52182567851715'); + T('439059239410', '439059239409.55703238112278'); + T('43465109466157505', '43465109466157505'); + T('5390894521', '5390894520.8738091063016'); + T('-583532700278695860335147', '-583532700278695860335146.6674153779'); + T('485669', '485669'); + T('3', '3.284095344472285718254591781467536534546'); + T('0', '-0.4210910538061556801483189'); + T('3134', '3133.654494231705614'); + T('8136642604255255554627376', '8136642604255255554627375.87998'); + T('-54301', '-54301.2807534165371279131810401278'); + T('27796900', '27796900.0685101'); + T('-36', '-36'); + T('-7930085746684', '-7930085746684.2599205'); + T('736988809325', '736988809325'); + T('-181606874378737533', '-181606874378737532.738571718716743'); + T('577064478018279', '577064478018279'); + T('-862419646909', '-862419646909'); + T('3269018763090', '3269018763089.5711045989917554'); + + // ---------------------------------------------------------------- v8 start + + T(0, 0); + T(0, -0); + T(Infinity, Infinity); + T(-Infinity, -Infinity); + T(NaN, NaN); + + T(1, 0.5); + T(1, 0.7); + T(1, 1); + T(1, 1.1); + T(1, 1.49999); + T(0, -0.5); // + T(-1, -0.5000000000000001); + T(-1, -0.7); + T(-1, -1); + T(-1, -1.1); + T(-1, -1.49999); + T(-1, -1.5); // + + T(9007199254740990, 9007199254740990); + T(9007199254740991, 9007199254740991); + T(-9007199254740990, -9007199254740990); + T(-9007199254740991, -9007199254740991); + + BigNumber.config({EXPONENTIAL_AT : 100}); + + T(Number.MAX_VALUE, Number.MAX_VALUE); + T(-Number.MAX_VALUE, -Number.MAX_VALUE); + + T(536870911, 536870910.5); + T(536870911, 536870911); + T(536870911, 536870911.4); + T(536870912, 536870911.5); + T(536870912, 536870912); + T(536870912, 536870912.4); + T(536870913, 536870912.5); + T(536870913, 536870913); + T(536870913, 536870913.4); + T(1073741823, 1073741822.5); + T(1073741823, 1073741823); + T(1073741823, 1073741823.4); + T(1073741824, 1073741823.5); + T(1073741824, 1073741824); + T(1073741824, 1073741824.4); + T(1073741825, 1073741824.5); + T(2147483647, 2147483646.5); + T(2147483647, 2147483647); + T(2147483647, 2147483647.4); + T(2147483648, 2147483647.5); + T(2147483648, 2147483648); + T(2147483648, 2147483648.4); + T(2147483649, 2147483648.5); + + T(0, 0.4); + T(-0, -0.4); + T(-0, -0.5); // + T(1, 0.6); + T(-1, -0.6); + T(2, 1.5); + T(2, 1.6); + T(-2, -1.6); + T(8640000000000000, 8640000000000000); + T(8640000000000001, 8640000000000001); + T(8640000000000002, 8640000000000002); + T(9007199254740990, 9007199254740990); + T(9007199254740991, 9007199254740991); + T(1.7976931348623157e+308, 1.7976931348623157e+308); + T(-8640000000000000, -8640000000000000); + T(-8640000000000001, -8640000000000001); + T(-8640000000000002, -8640000000000002); + T(-9007199254740990, -9007199254740990); + T(-9007199254740991, -9007199254740991); + T(-1.7976931348623157e+308, -1.7976931348623157e+308); + T(Infinity, Infinity); + T(-Infinity, -Infinity); + + var ulp = Math.pow(2, -1022 - 52); + var max_denormal = (Math.pow(2, 52) - 1) * ulp; + var min_normal = Math.pow(2, -1022); + var max_fraction = Math.pow(2, 52) - 0.5; + var min_nonfraction = Math.pow(2, 52); + var max_non_infinite = Number.MAX_VALUE; + + var max_smi31 = Math.pow(2,30) - 1; + var min_smi31 = -Math.pow(2,30); + var max_smi32 = Math.pow(2,31) - 1; + var min_smi32 = -Math.pow(2,31); + + T(0, ulp); + T(0, max_denormal); + T(0, min_normal); + T(0, 0.49999999999999994); + T(1, 0.5); + T(Math.pow(2,52), max_fraction); + T(min_nonfraction, min_nonfraction); + T(max_non_infinite, max_non_infinite); + + T(max_smi31, max_smi31 - 0.5); + T(max_smi31 + 1, max_smi31 + 0.5); + T(max_smi32, max_smi32 - 0.5); + T(max_smi32 + 1, max_smi32 + 0.5); + + T(-0, -ulp); + T(-0, -max_denormal); + T(-0, -min_normal); + T(-0, -0.49999999999999994); + T(-Math.pow(2,52)+1, -max_fraction); // + T(-min_nonfraction, -min_nonfraction); + T(-max_non_infinite, -max_non_infinite); + + T(min_smi31, min_smi31 - 0.5); // + T(min_smi31 + 1, min_smi31 + 0.5); // + T(min_smi32, min_smi32 - 0.5); // + T(min_smi32 + 1, min_smi32 + 0.5); // + + // ------------------------------------------------------------------ v8 end + + BigNumber.config({EXPONENTIAL_AT : 1E9}); + + T('0', '0', 0); + T('0', '-0', 1); + T('0', '-0', 1, 0); + T('0', '-0', 1, 3); + T('0', '-0', 1, 6); + T('0', '0', 10); + T('0', '-0', 20); + + // Tests generated using java BigDecimal and random values. + T('0.0039', '0.0039', 4, 3); + T('-41620.65299', '-41620.65299', 6, 5); + T('0.0011117', '0.0011117', 7, 0); + T('938116', '938116', 6, 5); + T('-7187', '-7187', 4, 4); + T('-2.4263', '-2.426346', 4, 6); + T('-0.537', '-0.5374743', 3, 5); + T('652506', '652506', 3, 6); + T('-178587', '-178587', 3, 2); + T('4093', '4093', 3, 0); + T('44', '44', 1, 2); + T('-0.0496', '-0.049635', 4, 4); + T('-1', '-0.05', 0, 0); + T('520216039', '520216039', 7, 1); + T('-2932289', '-2932289', 8, 3); + T('53937.3', '53937.399', 1, 1); + T('63101619', '63101619', 5, 0); + T('-0.00207', '-0.00207', 6, 0); + T('-0.032', '-0.03169086', 3, 0); + T('-755', '-755', 5, 3); + T('-3583', '-3583', 5, 1); + T('-6.616', '-6.615375', 3, 0); + T('7528739', '7528739', 8, 0); + T('-0.9028', '-0.9028782', 4, 2); + T('-8.78762908', '-8.78762908', 8, 2); + T('-0.000262', '-0.0002613', 6, 0); + T('-888980.3', '-888980.3', 1, 6); + T('0.00009075', '0.00009075', 8, 0); + T('-4.42', '-4.4195', 2, 0); + T('-0.336889', '-0.336888682', 6, 6); + T('43759', '43759', 6, 4); + T('0.0000804', '0.0000804', 8, 6); + T('-4', '-4', 0, 2); + T('-3', '-3.614204', 0, 2); + T('336379823', '336379823', 4, 1); + T('310614', '310614', 7, 0); + T('-375811635', '-375811635', 8, 3); + T('-5446775', '-5446775', 7, 4); + T('59.7954405', '59.7954405', 7, 0); + T('47086', '47085.84', 0, 4); + T('-2564', '-2564', 3, 4); + T('1.4069997', '1.40699967', 7, 2); + T('-0.4', '-0.42528874', 1, 6); + T('-0.00005573', '-0.000055732', 8, 1); + T('-0.00003014', '-0.000030137', 8, 6); + T('57', '57', 3, 6); + T('365474.9164', '365474.9164', 4, 5); + T('-7', '-7', 0, 4); + T('0.843206', '0.84320562', 6, 5); + T('-62734', '-62734', 5, 3); + T('-51246', '-51246', 7, 2); + T('0.0003', '0.000332', 4, 5); + T('-609', '-609', 2, 0); + T('-0.00004595', '-0.00004595', 8, 1); + T('-22243', '-22243', 0, 1); + T('54693', '54693', 5, 0); + T('5', '5', 1, 6); + T('2', '2', 2, 6); + T('3808', '3808', 0, 4); + T('2616', '2616', 0, 5); + T('-2477', '-2477', 3, 2); + T('0.00009', '0.00008892', 5, 4); + T('8.8953', '8.8953', 5, 5); + T('0.07', '0.06922', 2, 4); + T('0.08', '0.08', 3, 2); + T('-773.0965536', '-773.0965536', 8, 2); + T('-326', '-326', 2, 1); + T('-0.356', '-0.3564473', 3, 6); + T('-312283993', '-312283992.7', 0, 3); + T('-2.3995861', '-2.39958606', 7, 3); + T('-0.0449', '-0.0449', 4, 3); + T('0', '-0.003', 0, 4); + T('85942', '85942', 2, 5); + T('6738', '6738.1977', 0, 3); + T('-0.003', '-0.002995', 5, 3); + T('-572936', '-572936', 3, 6); + T('684.2426407', '684.2426407', 8, 6); + T('0', '-0.0007851', 1, 6); + T('0', '-0.002', 0, 5); + T('85.05', '85.05', 3, 3); + T('1.66', '1.66', 3, 3); + T('-17.14', '-17.14', 2, 0); + T('80182', '80182', 6, 5); + T('-0.00064', '-0.00063953', 6, 6); + T('-3.76703298', '-3.767032983', 8, 4); + T('-0.000378', '-0.00037877', 6, 2); + T('675', '675.76294', 0, 3); + T('0.0003', '0.00023235', 4, 0); + T('-0.0155175', '-0.0155175', 7, 0); + T('-645406477.5', '-645406477.5', 2, 1); + T('-0.89603', '-0.8960278', 5, 6); + T('866034', '866034', 7, 3); + T('484.002', '484.002', 4, 6); + T('420', '419.83', 0, 6); + T('4611867124', '4611867124', 4, 4); + T('0.0080252', '0.0080252', 8, 0); + T('0', '-0.02829833', 1, 4); + T('-8', '-8', 0, 4); + T('-0.0073554', '-0.00735541', 7, 4); + T('28', '28', 3, 5); + T('-3903', '-3903', 6, 0); + T('228', '228', 3, 4); + T('0.88', '0.883', 2, 5); + T('-0.01', '-0.009', 2, 3); + T('7796.6', '7796.6', 2, 2); + T('0', '0.005', 0, 6); + T('805.25', '805.2467', 2, 0); + T('-85023', '-85023', 4, 3); + T('0', '-0.008097491', 0, 2); + T('-0.026', '-0.0259', 3, 4); + T('-0.00801', '-0.008007359', 5, 4); + T('30745', '30745', 6, 5); + T('-81', '-81', 4, 6); + T('-386', '-386', 4, 2); + T('-2876', '-2876', 5, 6); + T('0', '0.00002329', 4, 5); + T('-62453828', '-62453828', 7, 6); + T('0.317', '0.317', 3, 3); + T('-706', '-706', 0, 1); + T('36.911', '36.9109527', 4, 4); + T('5040908', '5040908', 1, 0); + T('-0.08', '-0.08', 2, 4); + T('-0.352847', '-0.352847085', 6, 6); + T('0.001', '0.00006', 3, 2); + T('-0.4389', '-0.438905', 4, 1); + T('0.00390964', '0.00390964', 8, 2); + T('-35105.1', '-35105.1788', 1, 2); + T('-8858843.829', '-8858843.829', 3, 1); + T('-5946.90816', '-5946.90816', 5, 3); + T('608475', '608475', 6, 6); + T('3.5873016', '3.58730156', 7, 5); + T('-7988864', '-7988864', 8, 0); + T('-6056.29', '-6056.29', 3, 0); + T('-4481788', '-4481788', 3, 5); + T('-1.6', '-1.5678', 1, 6); + T('-351561391', '-351561391', 5, 5); + T('3104642', '3104642', 8, 2); + T('-7.30071897', '-7.30071897', 8, 2); + T('-0.0256033', '-0.02560321', 7, 3); + T('-0.5', '-0.5', 1, 0); + T('-7.173', '-7.173', 4, 6); + T('0.1', '0.05', 1, 2); + T('0.0006736', '0.0006736', 7, 3); + T('-54.37621076', '-54.37621076', 8, 4); + T('4823.725785', '4823.725785', 7, 4); + T('0', '-0.000084', 1, 4); + T('-7491', '-7491', 4, 6); + T('-226', '-226.80088', 0, 2); + T('-0.8', '-0.8109', 1, 6); + T('-0.0548897', '-0.054889654', 7, 0); + T('-91.1579356', '-91.15793558', 7, 6); + T('47988267', '47988267', 1, 3); + T('91', '91', 3, 5); + T('-5.0091', '-5.009088', 4, 0); + T('-1382.949', '-1382.949', 4, 0); + T('-697', '-697', 2, 5); + T('-5376196', '-5376196', 1, 6); + T('-0.6', '-0.6', 1, 6); + T('-887591', '-887591', 8, 2); + T('0.02000666', '0.020006669', 8, 3); + T('-39983.5195', '-39983.5195', 5, 6); + T('-0.723', '-0.722771', 3, 4); + T('-0.0007', '-0.0007', 5, 5); + T('-8637388', '-8637388', 4, 1); + T('-775918', '-775918', 8, 0); + T('3281682.74', '3281682.74', 2, 3); + T('193', '193', 4, 6); + T('0', '-0.369577856', 0, 5); + T('-0.34504', '-0.34504336', 5, 2); + T('-22', '-22', 0, 5); + T('-548324', '-548324', 4, 2); + T('-28', '-28', 3, 5); + T('-6.70773', '-6.707727', 5, 0); + T('11.062', '11.06169236', 3, 5); + T('0.00052', '0.00051869', 5, 6); + T('-0.0421539', '-0.0421539', 7, 3); + T('-0.248552', '-0.248552', 6, 4); + T('-864296', '-864296', 8, 0); + T('0.8599583', '0.8599583', 7, 6); + T('-49755.36744', '-49755.36744', 5, 5); + T('-605.095664', '-605.095664', 6, 3); + T('-103637', '-103637', 5, 2); + T('868619', '868619', 3, 4); + T('-0.0003926', '-0.0003926', 7, 4); + T('1', '0.9', 0, 0); + T('4.3567', '4.35670557', 4, 4); + T('-238', '-238', 3, 1); + T('1271.594054', '1271.594054', 7, 4); + T('-4.1787893', '-4.178789328', 7, 1); + T('372', '372', 3, 6); + T('-9.1645', '-9.1645354', 4, 6); + T('83.241462', '83.241462', 6, 6); + T('-0.00001262', '-0.00001262', 8, 6); + T('63.4147', '63.414735', 4, 3); + T('-2', '-2', 3, 5); + T('538601216', '538601216', 2, 3); + T('2138522', '2138522', 6, 1); + T('301527.309', '301527.309', 3, 5); + T('-7.568', '-7.5683', 3, 5); + T('-1969563', '-1969563', 8, 1); + + T('-249815496353142605063083339706423770452529255711064841247978.1649', '-249815496353142605063083339706423770452529255711064841247978.16482575714251625720191747855256', 4, 3); + T('-8757939868931375459275247990933877309', '-8757939868931375459275247990933877309', 37, 5); + T('556228688742576287254121716253667920283844645854057755303259369', '556228688742576287254121716253667920283844645854057755303259369', 25, 3); + T('0', '0.00000000000000000000000000000000000000000000000029171651270270187897342247995644546232788426', 35, 3); + T('-0.0000058979376152458865088785307705', '-0.000005897937615245886508878530770431196412050562641578155968', 34, 0); + T('-0.00000000000000847145658', '-0.00000000000000847145657888758222743159237', 23, 3); + T('-6049825281564367887763596943301191584240212075976455', '-6049825281564367887763596943301191584240212075976455', 53, 0); + T('-64680661822322715719008107701612.741312367131318202976964422', '-64680661822322715719008107701612.74131236713131820297696442216284615573809', 27, 4); + T('0', '-0.0000000000000000000000000000000000048810387700772580768508931440796984745771392', 29, 2); + T('232730083859746141163.7653402888578932348762190816502', '232730083859746141163.76534028885789323487621908165018267559238917447610653431235463768839108', 31, 5); + T('-499311204526771278437755030091270601.471802335', '-499311204526771278437755030091270601.47180233568698638607829334564', 9, 2); + T('-4793558721695298336734196955569628362250.1', '-4793558721695298336734196955569628362250.107513868618556605590137359591047843592593', 1, 6); + T('0.0000000000000000000000000000000000000622', '0.000000000000000000000000000000000000062176566496', 40, 5); + T('-393323198834362857317921391989917230.1575124832953752419421908305674188204', '-393323198834362857317921391989917230.15751248329537524194219083056741882044261538788798', 37, 5); + T('0', '-0.000000000000000169092170076859363', 3, 5); + T('0.00085774283834918184933525579624189945402764', '0.0008577428383491818493352557962418994540276420616048890965876345513', 44, 4); + T('-127706837731025454069338274697755478243.226555768723254468591', '-127706837731025454069338274697755478243.226555768723254468591', 21, 4); + T('0.0000000000000000000000000000002', '0.00000000000000000000000000000024', 31, 6); + T('0', '0.0000000000000000006', 0, 4); + T('0.000000000000000000000007810237984104', '0.00000000000000000000000781023798410401506609033130277607174', 36, 6); + T('-0.0000000000000000000000000000000000000000000003', '-0.00000000000000000000000000000000000000000000030032464295099044566372323', 46, 1); + T('-685966223751248103958158215191994961086468451812432', '-685966223751248103958158215191994961086468451812432', 15, 6); + T('-342139733926317660019.326340161146875487297', '-342139733926317660019.326340161146875487297346019153178', 21, 6); + T('0', '0.000000000000000000000000000000000000000000901836202', 15, 4); + T('54703159147681578.1514852895273075959730711237955491690133829927977209580124', '54703159147681578.1514852895273075959730711237955491690133829927977209580124', 59, 0); + T('-460718430436988680547605508933197195738591668941440213118174196', '-460718430436988680547605508933197195738591668941440213118174196', 16, 6); + T('70597943458486911871858911963104830835210711517857117431432573585719054629372', '70597943458486911871858911963104830835210711517857117431432573585719054629372', 17, 3); + T('0', '0.0000000000000000000000005', 17, 1); + T('612277653819449429818059108521923195679275819340316389136081740197236376194', '612277653819449429818059108521923195679275819340316389136081740197236376194', 24, 6); + T('0', '0.000004077002116450599035175933786605407147118579202271612670066923117668943811493201471493894', 0, 3); + T('0', '0.0000000000000000454362126792715044166595091', 4, 5); + T('-0.00000000000000000000000247815', '-0.00000000000000000000000247815', 29, 2); + T('-0.000000000000000000000000000000039578053693', '-0.000000000000000000000000000000039578053693375996216932325600263217353654', 42, 4); + T('-232816283401672701377791127757043050155711815150567236808118951', '-232816283401672701377791127757043050155711815150567236808118951', 5, 2); + T('-29071348593675752783607764808066026', '-29071348593675752783607764808066026', 0, 3); + T('0', '-0.0000000000000000000000000000001261801374206123908708248209346534624420321535319795165638569', 3, 5); + T('-400979013779505784551704647545324555644743917317817725', '-400979013779505784551704647545324555644743917317817725', 51, 0); + T('-707984518604562445981560648691697348187535181109991331112833004096934116229906958', '-707984518604562445981560648691697348187535181109991331112833004096934116229906958', 33, 3); + T('-0.00000000000000000000054943542078511748325889425', '-0.00000000000000000000054943542078511748325889425029425118', 48, 2); + T('0.000000000000000000000000000001', '0.0000000000000000000000000000000004', 30, 2); + T('8361324754302.257', '8361324754302.25608823898722021345099998761427662952277448263515002938433228636937277798222125', 3, 2); + T('47845474280015515238795364952786480611238289992139357357828.2393536', '47845474280015515238795364952786480611238289992139357357828.23935359', 7, 2); + T('2549907485257905040787802731022172814.032473410309278713663931353982863019132463', '2549907485257905040787802731022172814.03247341030927871366393135398286301913246263649610180999011', 42, 4); + T('7245563391265598645357861460253613932139592382610560614764364520097782949512752649', '7245563391265598645357861460253613932139592382610560614764364520097782949512752649', 40, 1); + T('80140230840302995211398777354070268652682793260175436489292', '80140230840302995211398777354070268652682793260175436489292', 35, 5); + T('-6237457908203764779831412120415113057397781437576879126960196359736451276', '-6237457908203764779831412120415113057397781437576879126960196359736451276', 46, 3); + T('-64022435787355811014521281511793708435812347405139910972682589', '-64022435787355811014521281511793708435812347405139910972682589', 59, 4); + T('23773726397.29160222442891928943538179152516815326677387048397317891529', '23773726397.291602224428919289435381791525168153266773870483973178915287792', 59, 2); + T('-0.0000000000000000009191736362201691567821986127083610325635', '-0.00000000000000000091917363622016915678219861270836103256344707473557037101545788367584278310776658', 58, 3); + T('576493832674677623548573635478304255.82263895978273', '576493832674677623548573635478304255.82263895978273', 14, 5); + T('0.00000000001', '0.00000000000000000000000000000000000000000000000007822968340296738406', 11, 2); + T('0', '-0.00000000000000000000000000000000000000000000000803017739', 16, 2); + T('-76782672919180281245123823777032511965124724736456274885479622075418722', '-76782672919180281245123823777032511965124724736456274885479622075418722', 48, 4); + T('4455851923984827076883518360355220330356', '4455851923984827076883518360355220330356', 36, 6); + T('6861599706553109843427643365400432566541688718985576240352998201999416183743', '6861599706553109843427643365400432566541688718985576240352998201999416183743', 2, 2); + T('0', '0.0000083135366316053183734543904737952651532784316140061929170739473518406297062533554026617147464', 0, 1); + T('72361127388902796012114362477322144735533135802605580980837229637633107.0925818254603', '72361127388902796012114362477322144735533135802605580980837229637633107.09258182546029609579105130429', 13, 5); + T('-273219046129778472266.058485499109338596573075', '-273219046129778472266.0584854991093385965730749815531346353045049027336176088162559', 24, 4); + T('-0.00000000000007280978660680040221854732703892674800762227646', '-0.00000000000007280978660680040221854732703892674800762227646226836240552990665555', 59, 5); + T('6276464097096605785329824864148.527049815380996985914', '6276464097096605785329824864148.52704981538099698591393138250952524233217779', 21, 0); + T('-597198', '-597197.628834953506966767991553710700934413500204012426446876175175114500037146677042239668', 0, 0); + T('-433359038877962603713455049783', '-433359038877962603713455049783', 30, 0); + T('0.0000000000000000000000000000000006381735336173415547900207', '0.0000000000000000000000000000000006381735336173415547900206847223271181528556195', 58, 0); + T('807050820.676699481791051456', '807050820.676699481791051455096629111775329549493444751897213743866128850061622892', 18, 2); + T('0.0000000000000000000000000000489752745584111598026871408099', '0.000000000000000000000000000048975274558411159802687140809907', 58, 3); + T('0', '0.0000000000000000000000000000000000000000000226067497099004331941912856', 36, 6); + T('39094507220356523575213839820749561678857032020620050894656716293.67495126324', '39094507220356523575213839820749561678857032020620050894656716293.67495126323710280607325675762434', 11, 2); + T('-22678769.817248435493696742588538', '-22678769.817248435493696742588538331241538369550386799148219117165563326051964281', 24, 4); + T('5767307789536064608781837241295188919', '5767307789536064608781837241295188919', 30, 0); + T('168139421336703751454723348941581.0989620502676347173183006762310303463068390391675336175', '168139421336703751454723348941581.0989620502676347173183006762310303463068390391675336175', 55, 6); + T('-88504154823150878334701258558002569539793415193610842759120001088201133334307983', '-88504154823150878334701258558002569539793415193610842759120001088201133334307983', 44, 4); + T('-329655464734888739743767364510089523323', '-329655464734888739743767364510089523323', 25, 1); + T('0.00000000000000000000084501920385200277918', '0.000000000000000000000845019203852002779189', 41, 1); + T('-5840123488663376216608124416421102623453621285401805153644515702191', '-5840123488663376216608124416421102623453621285401805153644515702191', 59, 3); + T('-0.00000062136', '-0.00000062135994705765807424168688040116009865960794', 13, 3); + T('-0.000000000000000000001', '-0.00000000000000000000000000000000000000001462340018509', 21, 0); + T('0.006', '0.0059936079684973012978514720463815026319867172', 4, 2); + T('526400924922583880463185416850358172941032433541198785132036360013561525242705246671523133061757', '526400924922583880463185416850358172941032433541198785132036360013561525242705246671523133061757', 38, 6); + T('-882873192309626516849737955750920016208815071464396145314', '-882873192309626516849737955750920016208815071464396145314', 46, 6); + T('-6758735221049379519.2572393', '-6758735221049379519.25723934716782621573177906', 7, 2); + T('-0.000000790786371520517683432954223230156393', '-0.00000079078637152051768343295422323015639290504929', 42, 4); + T('-0.00000000000000000000000000000000000091966', '-0.0000000000000000000000000000000000009196610338039484256720548095', 41, 6); + T('-0.00000000000541933780252974657673566396725809671507', '-0.0000000000054193378025297465767356639672580967150744942399', 50, 4); + T('-0.000000000000000000000583479626', '-0.000000000000000000000583479626800396501245049473177007318461587644875162633137088', 30, 2); + T('11604528953141243475', '11604528953141243475', 13, 3); + T('566807769866890.02801522720838416179840190775794257854696482', '566807769866890.02801522720838416179840190775794257854696482590456963092114076898', 44, 3); + T('-35620697798492911.0669248410687861643251268323797667576839159303711022', '-35620697798492911.066924841068786164325126832379766757683915930371102255700535220012496346147093317', 52, 1); + T('-0.0000000000000000000050597138398214172387021051', '-0.000000000000000000005059713839821417238702105087169671933387005', 46, 0); + T('-0.8174627036499993060703761337876311', '-0.81746270364999930607037613378763105641195817852303184573911882', 34, 4); + T('0.0000000000000000000016801618027332596946', '0.000000000000000000001680161802733259694523102897059933026814910108114561982575916856344241', 40, 2); + T('-0.0005550919624693963627417354876271038367574907', '-0.000555091962469396362741735487627103836757490736793688', 46, 6); + T('0.00000000000001', '0.0000000000000000005989657036', 14, 2); + T('26923162467831521466200388799932149017792464401239965995848900909703513553682', '26923162467831521466200388799932149017792464401239965995848900909703513553682', 59, 0); + T('0.000000000000034716604224301619113605162061332208', '0.0000000000000347166042243016191136051620613322078875442915881933', 48, 5); + T('4554587644116353728395891927482', '4554587644116353728395891927482', 4, 4); + T('83', '83', 1, 4); + T('-0.0000000000000000679512312597136188846870750884127001656543', '-0.0000000000000000679512312597136188846870750884127001656543162955358', 58, 5); + T('-0.000000000000000005843127017405787209162333', '-0.0000000000000000058431270174057872091623337743081992327769648', 42, 2); + T('698142412071442689875148052035405913655358215178078673989', '698142412071442689875148052035405913655358215178078673989', 31, 2); + T('-0.000000000000000000000000001', '-0.0000000000000000000000000000000000000009', 27, 3); + T('0', '0.000000000000000000000000000000000000000000000000086322062431379058693358', 36, 6); + T('-7097679626212584135194693334505819500.76271239784243114877303953752095973790591', '-7097679626212584135194693334505819500.7627123978424311487730395375209597379059174819443305631091738', 41, 1); + T('720941616590530465684319461159925340787620861616050215112729354513077297889437424470222725372.4341', '720941616590530465684319461159925340787620861616050215112729354513077297889437424470222725372.43418', 4, 1); + T('-8565045.0741813', '-8565045.07418120224', 7, 3); + T('7179182230007440380654240229988748528461622212340003478705', '7179182230007440380654240229988748528461622212340003478705', 16, 1); + T('128138852434106311723518159896099183377408757231649238006509175039', '128138852434106311723518159896099183377408757231649238006509175039', 51, 0); + T('0.0000000000000000000000000000000000071444116240971906475', '0.000000000000000000000000000000000007144411624097190647497044019271703768941206', 56, 5); + T('0', '0.00000000000000000000000000000000000000000000021714481944', 43, 6); + T('-0.0000000000000001', '-0.0000000000000000000000000034534834', 16, 0); + T('-0.0000000000000000000008286492885892336366506247591678062602', '-0.00000000000000000000082864928858923363665062475916780626021532507656936043414109352811732', 58, 1); + T('31161421229261423772494491055755169247634601491928', '31161421229261423772494491055755169247634601491928', 51, 3); + T('1748715317929813133410156549170209422179478560908330825848622104018934659066', '1748715317929813133410156549170209422179478560908330825848622104018934659066', 57, 4); + T('-554303811557294466.269761483473739646624314242607077', '-554303811557294466.269761483473739646624314242607077815435340758612837177421989342652', 33, 1); + T('-0.19004485', '-0.19004485473016995992614957080209680408919713640428488619', 8, 1); + T('0.000252525605711892', '0.000252525605711891731866212005527221984514215823140269482997380211714402276122070798053', 18, 6); + T('86245969707619', '86245969707619', 14, 3); + T('-31435925010862195008998682761', '-31435925010862195008998682761', 9, 3); + T('-7376.12482208', '-7376.124822087908447175101', 8, 2); + T('0.000080221434577125714125624728141606555230430450054', '0.0000802214345771257141256247281416065552304304500535613033078792598113626175', 51, 0); + T('-6050582615205191601389958119203059837835097590785064613410822037914417495686026661', '-6050582615205191601389958119203059837835097590785064613410822037914417495686026661', 31, 1); + T('0.00000000000000003455493043277403696896050418463562482', '0.0000000000000000345549304327740369689605041846356248273019036250593274409786087865531980510674', 53, 3); + T('-20967.65067808575', '-20967.6506780857520813447701235001803657407937', 11, 6); + T('568254966593770.553753276551449605949', '568254966593770.553753276551449605948238816764309803642928261672349658172008375162162314878680613', 21, 0); + T('-451.149170475956331479335', '-451.1491704759563314793340102771090380475440750267088321862964226523091325726805634622304958123379', 21, 3); + T('-0.00000000000000000000000089587927281631480799', '-0.00000000000000000000000089587927281631480798176250533957436898566513857011780218162097370714526', 44, 0); + T('0.00006', '0.00005989898942742447311513559', 6, 2); + T('0.00000000000000000000000000000000000084666165975', '0.000000000000000000000000000000000000846661659751645', 47, 6); + T('-274912.8896024699', '-274912.8896024699118787839924993246206752520896053416203239133353705', 10, 1); + T('2884607226068313798651836226110538860137007975185098848', '2884607226068313798651836226110538860137007975185098848', 55, 6); + T('-0.00000000000000000002773912168', '-0.000000000000000000027739121678637743521714908420713523555500095414277237781740952561559672', 29, 3); + T('-2651358523359639', '-2651358523359639', 16, 4); + T('-4813276596516131663456402092.38944176', '-4813276596516131663456402092.3894417517916213734867', 8, 3); + T('-0.000000000000000000000000000000000000112895859', '-0.000000000000000000000000000000000000112895858119340820153717620708673416', 45, 0); + T('-0.0000000000000000021', '-0.0000000000000000020224974226159732231298241899365279396237510862449464734463589', 19, 3); + T('-7589382547973376572325815568183010749314649708', '-7589382547973376572325815568183010749314649708', 33, 5); + T('842229243093860852173.05443961588175098377444082861489172139756969332835', '842229243093860852173.0544396158817509837744408286148917213975696933283408713841831638764', 50, 0); + T('-699708233495.712278374225898965891885496', '-699708233495.71227837422589896589188549642075052667001859282382939797996992686357419809583', 27, 4); + T('-0.00000000071616892037859054', '-0.000000000716168920378590537721800581109521242491374877', 26, 0); + T('3951438403.277181863849692687044689923289027507211228628773736', '3951438403.2771818638496926870446899232890275072112286287737359542096', 51, 2); + T('109559.01297171197941271991562118124015322', '109559.012971711979412719915621181240153223610175595763848035079898263530366', 35, 3); + T('-0.00000000000000000000000000000000000000000000489005761683947', '-0.00000000000000000000000000000000000000000000489005761683946256390055271579820502403', 59, 3); + T('-0.00158', '-0.00158276409341184629828973465939702170102740363504722102864514069935682480434491', 5, 2); + T('-2625562538887919963240549817430379735187837775384', '-2625562538887919963240549817430379735187837775384', 44, 0); + T('0', '0.00000000000000000000002', 9, 1); + T('6744808.28630410992583043657159413157574982400492', '6744808.28630410992583043657159413157574982400491999838773235902794700459508120619939892', 42, 6); + T('0.000000000000000009', '0.000000000000000009', 18, 3); + T('6067881766683695479556751950119377724336039886809300136812181462', '6067881766683695479556751950119377724336039886809300136812181462', 31, 1); + T('0.000000000000000000000000000000000000000077241022793', '0.0000000000000000000000000000000000000000772410227935606591033087412064412570098277', 51, 1); + T('743268323094543466714.5656060177009296968524561226948074051004264', '743268323094543466714.565606017700929696852456122694807405100426400624651576046667459841457817767865', 43, 3); + T('-596135', '-596135', 3, 2); + T('0.07662404229928167815820747802086592943344134084819', '0.0766240422992816781582074780208659294334413408481864862625859275536716954542357278357044523255', 50, 4); + T('-0.000000000000000000000000000885256', '-0.000000000000000000000000000885255222637729340070545710310579917592457286140653', 33, 0); + T('55893020145100569857309952693924435456669213.356281068124371401302229274073839082240544043386519', '55893020145100569857309952693924435456669213.356281068124371401302229274073839082240544043386519', 51, 0); + T('0.000000000044398802543439239843437872656117', '0.000000000044398802543439239843437872656117345711426288269229', 42, 1); + T('0.000000000000000000000000000026311845042475573561274888459', '0.00000000000000000000000000002631184504247557356127488845876295156781061349824020867304', 57, 6); + T('-127546673151161350153045221729711', '-127546673151161350153045221729711', 2, 5); + T('0.0000000000000000000000846081', '0.00000000000000000000008460817346743347251678412215465432867047065857', 28, 3); + T('-51296363216658187515760473402291', '-51296363216658187515760473402291', 27, 4); + T('-8623967090632480689370959269411792112227821530531202541003992985', '-8623967090632480689370959269411792112227821530531202541003992985', 54, 5); + T('-966322003490784535731979767036707880939452169502093813823674817588484', '-966322003490784535731979767036707880939452169502093813823674817588484', 56, 5); + T('-272472379898107893040761485379027824396136886208', '-272472379898107893040761485379027824396136886208', 40, 1); + T('0.000000000000000000007578294653267877535740172858883482', '0.00000000000000000000757829465326787753574017285888348202441720573692830214583542806201', 55, 6); + T('25958781094763030494523126276550672249453141421083859868561356127876297714106602172585', '25958781094763030494523126276550672249453141421083859868561356127876297714106602172585', 29, 5); + T('0.00000000000000000000000000000000000002', '0.000000000000000000000000000000000000015806075051053843417566111132263641553843698646164', 38, 5); + T('-73099329416955017257739991488405608089647281115099586', '-73099329416955017257739991488405608089647281115099586', 21, 6); + T('-88307320.90319141093816288808957670297463', '-88307320.903191410938162888089576702974638474154077235587259266824247410860533478169707304792818', 32, 2); + T('-35236814557361445958969411965214520.30399877405421', '-35236814557361445958969411965214520.303998774054210302477326477', 14, 2); + T('-2908087206403224796868158372851057.39782067611', '-2908087206403224796868158372851057.3978206761117082535006786132666114643644421715709235528929678', 11, 4); + T('-19581413994383784948718328954653', '-19581413994383784948718328954653', 28, 1); + T('0.00000000000000000000000000004', '0.000000000000000000000000000040608230569366379665209245709785291404206510745612419401142658', 29, 3); + T('-0.906238977426875501362745', '-0.9062389774268755013627459831223515271076867650054627805581400941104277662892230888597201', 24, 2); + T('0', '0.000000000000000000000025517761823978244291048210421988594612225022695964910425529', 21, 1); + T('663336.45734367931832199866', '663336.4573436793183219986595282312647796998714487327022132545955984591825466144183', 20, 4); + T('-461221276.52047063868261544207237644195170184', '-461221276.5204706386826154420723764419517018397461911607', 36, 4); + T('92664692270788697481952993240101', '92664692270788697481952993240101', 9, 1); + T('0.00000000000001', '0.0000000000000000417218487798321067688965201563233239322412080713783058725771499175637', 14, 0); + T('-0.00000000000000291161', '-0.0000000000000029116100944057582762735577555', 21, 6); + T('3593092835933826522602826541522473977510499517734180584911059518', '3593092835933826522602826541522473977510499517734180584911059518', 39, 2); + T('0.00000000000240671872382434259', '0.00000000000240671872382434258731759266816542514881094906467645247797685306920193421', 29, 6); + T('98445608185462908936594271820438358882244286228', '98445608185462908936594271820438358882244286228', 43, 4); + T('-38275693035627727048820160757435988950513161', '-38275693035627727048820160757435988950513161', 28, 2); + T('0.000000000000000007838540274247171557849126', '0.000000000000000007838540274247171557849125417291807341828802631329086161031903106930206518314803525', 42, 0); + T('0', '0.0000000000000000000000000000000000000008760161376', 38, 6); + T('-274462946120897177140732986024361620867165740004629583369799434.752624497847', '-274462946120897177140732986024361620867165740004629583369799434.7526244978472107528071824755321251', 12, 1); + T('805407519521180265118391229', '805407519521180265118391229', 27, 0); + T('4837.60752412303502514', '4837.60752412303502513085517977565448616961234363618524491896285197928079211821305450283483280681236', 17, 0); + T('19446.966116400627008657626752077217581388920002', '19446.966116400627008657626752077217581388920001650492489914443643730475', 42, 6); + T('259711114990641', '259711114990641', 1, 3); + T('-0.0000000001', '-0.0000000000000000002', 10, 0); + T('80565580.149080509196072203611545842035798415', '80565580.1490805091960722036115458420357984148292066084650845696757793247885015079193577022206528568', 36, 5); + T('0.000000005126609951384222369644011060208031', '0.00000000512660995138422236964401106020803193692417523731220078957765716642', 42, 3); + T('1758006742538130240388703498480688686072955030356.7524172233646685', '1758006742538130240388703498480688686072955030356.75241722336466855', 16, 1); + T('-128086989690.52297791537155595882257011356310571016034760745375196584546', '-128086989690.5229779153715559588225701135631057101603476074537519658454607884909539951', 59, 2); + T('-361166416734639117275346911473316661252428418964862.401', '-361166416734639117275346911473316661252428418964862.400974469693342990746', 4, 5); + T('71633752430127836728495483808.07484204148983764432608854793881189', '71633752430127836728495483808.074842041489837644326088547938811892934755621628332271860178432369', 35, 4); + T('5744453717566208360238616812981884481035389801', '5744453717566208360238616812981884481035389801', 46, 1); + T('2988347090930431122495200201632971168964831173901728', '2988347090930431122495200201632971168964831173901728', 31, 0); + T('2320482568655945754105081468655336561175857', '2320482568655945754105081468655336561175857', 13, 6); + T('0.0000000000000000000000381190632343589292', '0.0000000000000000000000381190632343589291525554226892790057468635150617798724', 40, 6); + T('150674298726358630368887.96642348553527918072509638013912555500029', '150674298726358630368887.966423485535279180725096380139125555000281054567239883226587200104', 41, 0); + T('6381234380831959100617925908319665780846.339213369897450587263631892568406353114597203918925', '6381234380831959100617925908319665780846.339213369897450587263631892568406353114597203918925036', 52, 6); + T('0', '-0.000000000000000000008153818897577980935667335', 11, 6); + T('0.42425', '0.4242532985015934975349331325449597502579863812797694513697436078382', 5, 6); + T('-9492241803854916508301408875627456379508228876824584339472513249476134', '-9492241803854916508301408875627456379508228876824584339472513249476134', 40, 3); + T('0.00000000070312', '0.00000000070312002679979045924', 16, 6); + T('0.00000000000000000000001', '0.0000000000000000000000000000000588002549246249768755359919888343240679086056339612762', 23, 0); + T('0.0000023310091287510842138474107374781945319497631823824', '0.000002331009128751084213847410737478194531949763182382321012031067524722385571777894', 55, 0); + T('1032461863864997072747819312364575151426447594160280088333654341664616268438.32980502', '1032461863864997072747819312364575151426447594160280088333654341664616268438.3298050176666367344933', 8, 0); + T('-0.596499', '-0.5964989918041972', 8, 3); + T('0.00000000729829591', '0.000000007298295908208407232392829275577759290253056591354761667316714193254528425439374', 17, 0); + T('-0.00000000000072754727282', '-0.000000000000727547272816813510126252359571002375852804848057969667686650624217565437395780898', 23, 3); + T('-10046269443437939423878986686151143710819158649636347587133691874104534887801867140686292', '-10046269443437939423878986686151143710819158649636347587133691874104534887801867140686292', 27, 4); + T('-0.0000000000000000008264058640698', '-0.00000000000000000082640586406982678835', 31, 6); + T('0', '-0.00000000000000000000000003', 4, 2); + T('0', '-0.00000000000000000000000000003', 10, 5); + T('-0.000000000000000000000000000000000063243952023', '-0.00000000000000000000000000000000006324395202396400840212', 45, 1); + T('-87462022143445554762309727721395432699696551899513954523', '-87462022143445554762309727721395432699696551899513954523', 34, 3); + T('-74961550733018', '-74961550733018', 3, 2); + T('-0.0000762276772207934863238537452', '-0.000076227677220793486323853745211809223538788353453336644181293192727858100277468114', 31, 1); + T('677858883593.5379217458786753765661983639736854979', '677858883593.53792174587867537656619836397368549787113022327012837856', 37, 0); + T('-681966362209838078248167523', '-681966362209838078248167523', 3, 3); + T('-0.0000000912679235575807736981', '-0.00000009126792355758077369811497315481776589586611502', 28, 6); + T('0', '-0.000000000000000000000000000052634779034188540046239', 18, 1); + T('-482621290791225899125767045587660152129007959948148807767495544739447223766118', '-482621290791225899125767045587660152129007959948148807767495544739447223766118', 54, 2); + T('-2457603484411630301158179244599424', '-2457603484411630301158179244599424', 0, 5); + T('-40619874105070540993401576950183421101632408', '-40619874105070540993401576950183421101632408', 21, 3); + T('0.000000000000000000001', '0.000000000000000000000000000000000000000000000036589692229297589126710894495725996984366827', 21, 0); + T('0', '0.000000000000000000000000000000000007697850604448866757088056283820271725848286928', 27, 1); + T('2545.02415115677316212239', '2545.0241511567731621223858827267448711169160082660710108790421759089', 20, 4); + T('7077834165184988414848217637710910868788', '7077834165184988414848217637710910868788', 1, 2); + T('0.0000000000007378707001477130995722524252437998233512333191', '0.00000000000073787070014771309957225242524379982335123331910271174142678466671942', 59, 5); + T('886722233239112661944981617508479963315641616414109829288', '886722233239112661944981617508479963315641616414109829288', 25, 1); + T('812428046316564095375052061800123688188698505372578.955270821798095254315857427809', '812428046316564095375052061800123688188698505372578.955270821798095254315857427809', 30, 1); + T('1438455226828583407739908136218110419280473454035031999178004364062408', '1438455226828583407739908136218110419280473454035031999178004364062408', 37, 6); + T('0', '0.0000000000000000000000000000000000000000000000001348157598970921392138758145247802207211', 46, 3); + T('8620798.4029829269497633530936626', '8620798.402982926949763353093662637749577322989003026264137629102694703457796723', 25, 3); + T('751975428988.635400218944734023463354339122072205244589', '751975428988.6354002189447340234633543391220722052445885192557635746411940404597083340565', 42, 2); + T('8829610679653473597763374223696575198221475058', '8829610679653473597763374223696575198221475058', 41, 1); + T('-714009623555639702450738551.145067501536358187497', '-714009623555639702450738551.145067501536358187497017675344121707361', 22, 1); + T('-91951388.565056345983796225029824384051390812152355713461736499009', '-91951388.5650563459837962250298243840513908121523557134617364990085137853372087283116655848', 57, 3); + T('0.0000000000000000000000000000000000000000542781491', '0.0000000000000000000000000000000000000000542781490608507', 49, 4); + T('-918330560556906040463237216497732461443', '-918330560556906040463237216497732461443', 26, 5); + T('-0.00000000002283026704705211170643908282642668304190779', '-0.0000000000228302670470521117064390828264266830419077982617173461771678023456426697428455618', 53, 1); + T('59904336933832006778100229635633495994764541035048455.00685752534587785481499778785', '59904336933832006778100229635633495994764541035048455.00685752534587785481499778785', 29, 4); + T('43327692187687528267656066572368503890833128899944', '43327692187687528267656066572368503890833128899944', 9, 0); + T('0', '-0.0000000000000000000000000000000000000000000000002695', 35, 4); + T('-777052914895060678617199377851347.5589977794726166264477644804368', '-777052914895060678617199377851347.55899777947261662644776448043676196992892646996390102480483', 31, 6); + T('0.000000000000006551347385', '0.0000000000000065513473845779768621371949710746347910674197', 24, 5); + T('0', '0.000000000000000000000000000000000000000000000470471271824608482', 35, 3); + T('0.00000000000000000000000000074155927643355', '0.000000000000000000000000000741559276433554007067939207218187264014389', 41, 5); + T('-0.00000000000000000000000000006', '-0.0000000000000000000000000000542442671677483510134381455061499028186524037533', 29, 3); + T('182677642047881.78165441673019155464219406264001214565556885348479', '182677642047881.78165441673019155464219406264001214565556885348478627713505384459736760885446', 50, 4); + T('0', '-0.00000000000000000000000000000858982569563495450566974610707502362885052556461927131884762464', 11, 6); + T('-66550.5958713958756', '-66550.59587139587555170096651751421783721693', 13, 3); + T('0.079645', '0.0796449604330762624732668777200614644533142680923684958378555199983606783579469672288424123399', 7, 5); + T('56438173260305527207719104.511696429', '56438173260305527207719104.5116964286835910881140135476295960487687321558005814404822', 9, 2); + T('0', '0.000000000000000000000000000000000000091993511185191449503021969935560319635', 37, 3); + T('391931928701260491527786928262480614065303505453326538607192588983468700108524088153624', '391931928701260491527786928262480614065303505453326538607192588983468700108524088153624', 22, 3); + T('0.000000000000000000000000000042665152', '0.0000000000000000000000000000426651524086', 36, 6); + T('-0.00000000000000000000000000000000000551985053689556', '-0.00000000000000000000000000000000000551985053689555651547913', 50, 4); + T('444439156087385667746972959760087580376298869566168', '444439156087385667746972959760087580376298869566168', 35, 5); + T('11036262983412.43034', '11036262983412.43033528368482450310801430632754197929230502318864896161821328429506937237954870210095', 5, 6); + T('114826904256612733.386864222161825009298982005624415354243438170865464426025', '114826904256612733.3868642221618250092989820056244153542434381708654644260250420408639727676555', 58, 6); + T('-577359880659584271099782733770129532093949030313381759511', '-577359880659584271099782733770129532093949030313381759511', 58, 3); + T('-44532141731964071674958', '-44532141731964071674958', 19, 0); + T('-531493422957995027553658.0152656', '-531493422957995027553658.01526560425994156916529061354056445595443554505916649107700199156398', 7, 2); + T('-5530039742938541509225190148354298332277611200.665402397065792402231196232513009208', '-5530039742938541509225190148354298332277611200.665402397065792402231196232513009208', 36, 3); + T('0', '0.000000000000000000000000000000677545257330276611824', 24, 5); + T('-0.012993495776054845588950537203826106468', '-0.01299349577605484558895053720382610646775576321', 39, 4); + T('0.00000000000000000000042757024280062', '0.00000000000000000000042757024280061750977250160981050270300489211926017361343', 35, 4); + T('51635888852808817365000118067', '51635888852808817365000118067', 22, 5); + T('0.000000000000000000000000000000000603396', '0.000000000000000000000000000000000603395945277167356481154505825030896299189393402', 39, 5); + T('0', '-0.00000000000000000000000000000000000635911', 8, 6); + T('-9221344189318249072741906770568381333452267699521431676394690183761281215217417612', '-9221344189318249072741906770568381333452267699521431676394690183761281215217417612', 22, 5); + T('-0.000000000000198393562', '-0.0000000000001983935629747875006466687380426976581147913876793006421232132970749204', 21, 2); + T('-786436693838.7', '-786436693838.60830508946831272795106698745669695326924668266049292676146076463', 1, 3); + T('40246366508270205742209645855527350916237478820639394287714514966410603115762211835', '40246366508270205742209645855527350916237478820639394287714514966410603115762211835', 58, 2); + T('555474.69496086509055978', '555474.6949608650905597751694947446839037372128', 17, 5); + T('8022325851625826110929789153501954481551485.5', '8022325851625826110929789153501954481551485.53871', 1, 5); + T('4297429245247860561728651321437204111140731778009688377629142154614688', '4297429245247860561728651321437204111140731778009688377629142154614688', 52, 0); + T('777513737240382763744724918104359012326554895457341753355494648093023051263742525018117', '777513737240382763744724918104359012326554895457341753355494648093023051263742525018117', 48, 2); + T('-63505.14654339787504452160585107121514668311657241064416542113167', '-63505.1465433978750445216058510712151466831165724106441654211316601988813466429148514', 59, 0); + T('0.0000000000000000000000000000000000000000000000002132', '0.0000000000000000000000000000000000000000000000002131584245576870011395143175854664918396', 52, 6); + T('19014788003727720623764101959539818230764908892692480197047', '19014788003727720623764101959539818230764908892692480197047', 58, 1); + T('33939997624.0197921818931949496918774963224187187', '33939997624.01979218189319494969187749632241871866115828172706446', 37, 4); + T('-0.00000000437', '-0.00000000437044548720085802473659895081938205039437794', 12, 6); + T('-0.00001', '-0.00000000008', 5, 0); + T('0.00023979483633295840978657582202107097322330670894', '0.0002397948363329584097865758220210709732233067089358025735733289993174', 50, 2); + T('-711428494121714888531607863770583992472769521259376456808708067109440833105179', '-711428494121714888531607863770583992472769521259376456808708067109440833105179', 28, 6); + T('70933783348593982835568459890416.0753238571138802414615804703685410118914879', '70933783348593982835568459890416.07532385711388024146158047036854101189148788148847143786341', 43, 6); + T('0.00013443010000122739', '0.000134430100001227389387332790313969924187247172103522415803', 20, 4); + T('594572866009', '594572866009', 11, 2); + T('0', '-0.0000000000000000000000000000000004', 9, 5); + T('0.00000000000000000000324829343842244367023387519850894', '0.0000000000000000000032482934384224436702338751985089395375621763002572355324477891525815325', 53, 4); + T('0.0000000000000000000000000000000000000080325957441397992219', '0.000000000000000000000000000000000000008032595744139799221910158364696096013396500786388556806', 58, 5); + T('-209.9943998837517521171865', '-209.9943998837517521171865', 22, 1); + T('368594811778601966053268169', '368594811778601966053268169', 14, 3); + T('2230531204252229043182083968194792253467124991147983364421488274258087435683', '2230531204252229043182083968194792253467124991147983364421488274258087435683', 16, 5); + T('-71115775450983349128763558836649132287', '-71115775450983349128763558836649132287', 23, 1); + T('-483654527751509330685538809742484358245140579666376151497197', '-483654527751509330685538809742484358245140579666376151497197', 56, 6); + T('-5091778328', '-5091778328', 3, 4); + T('-256102825585696490271420790932070946958683447238', '-256102825585696490271420790932070946958683447238', 16, 1); + T('7200079680269727637144953340960521911223150535738461003051', '7200079680269727637144953340960521911223150535738461003051', 46, 5); + T('0.12237956363887424653903641168389546218306318289244', '0.122379563638874246539036411683895462183063182892438860817851', 50, 6); + T('0', '0.0000000000000000000017330538236509731544529580860737930783953450084798359954428313202503031054', 3, 6); + T('-7307466372310844673325729456353434', '-7307466372310844673325729456353434', 11, 5); + T('450885530532123553546806459524324682026463783', '450885530532123553546806459524324682026463783', 41, 1); + T('-46895193988088327212394383852584799863173436374526341947', '-46895193988088327212394383852584799863173436374526341947', 31, 1); + T('-0.00000000000000000000000000000006245724297', '-0.00000000000000000000000000000006245724297115808171139353612583649806973748910846638239545613215419', 41, 5); + T('-0.00000001404979970762467943', '-0.000000014049799707624679436414100982684927402505487462368435636661232', 26, 2); + T('-0.00000000000079152154548705699405289418014456022', '-0.00000000000079152154548705699405289418014456022009611438790933023626729', 47, 2); + T('891231598035185094864874932491664', '891231598035185094864874932491664', 34, 1); + T('-21623630838130.41753786411051466836143', '-21623630838130.41753786411051466836142541353', 23, 4); + T('0', '-0.000000000000000000050344267763315930908573638914842950751277', 4, 1); + T('0.0000000000000000001', '0.00000000000000000000000000300465169060014934587800113159517165498719502916', 19, 0); + T('-8649178.18', '-8649178.18048714649483284871538420752288818', 3, 5); + T('0.0000000000000000000000000000000004963883754245', '0.000000000000000000000000000000000496388375424498127114868980814', 46, 0); + T('-10974421088223640446696', '-10974421088223640446696', 20, 5); + T('61312908452999172017014058433.355839803569328946823364243283374629933567367136', '61312908452999172017014058433.35583980356932894682336424328337462993356736713518814151050627295366', 48, 2); + T('-0.00000000000000000000000000000000000000000336353', '-0.00000000000000000000000000000000000000000336353', 48, 6); + T('0', '-0.000000000000000000000000000000000000906129945659174995729787364905385796', 13, 2); + T('0.006', '0.0062358322221514410119027818669885643269659203708743396114652392713131263018122602098661', 3, 3); + T('16627860442751852915382651943208084134328', '16627860442751852915382651943208084134328', 32, 6); + T('0.01670470626375882709919052077738319859836353121358428', '0.01670470626375882709919052077738319859836353121358428381884805750145', 53, 6); + T('0', '0.000000000000000000007', 18, 5); + T('-0.00007215749036271791941521566318078882873853148647784214', '-0.0000721574903627179194152156631807888287385314864778421351738105827688353', 56, 4); + T('3548263666.582689458461665694669644358', '3548263666.582689458461665694669644358336891947634669931', 27, 3); + T('60399519401632991079247752823778179593673529', '60399519401632991079247752823778179593673529', 22, 5); + T('0.000000000000233104769165177107585997076128792', '0.00000000000023310476916517710758599707612879202633127248344707016405290189235744990032222', 45, 1); + T('843965301062452449522948600607', '843965301062452449522948600607', 25, 6); + T('-0.0000000000000000000000000000000001', '-0.000000000000000000000000000000000085032621910742886084799453146101567282871', 34, 6); + T('46886807836678689688638922017651004255677288992864679552776076502293724674686314835', '46886807836678689688638922017651004255677288992864679552776076502293724674686314835', 34, 5); + T('-678740886303261267240.1239864904330523466883632237562037876', '-678740886303261267240.1239864904330523466883632237562037876164582', 37, 2); + T('-0.000000000000000000000000003066472712192994', '-0.0000000000000000000000000030664727121929943743232462354894897120672997544666290457788144220575', 42, 4); + T('200973057640705826285554717494.6405080060649747545974566436926', '200973057640705826285554717494.64050800606497475459745664369255835236446509521462789289', 31, 2); + T('-0.000000000000000000051634708278695104973', '-0.00000000000000000005163470827869510497289920040400838424017896443243312029801753587875534', 39, 6); + T('0.00000000000000000000000000000000000000000000003', '0.000000000000000000000000000000000000000000000031050069069237', 47, 5); + T('68206233796834824043797769872734137955118693676156480446872816.8518492721', '68206233796834824043797769872734137955118693676156480446872816.8518492721', 10, 0); + T('366211876730525184.2112925847409', '366211876730525184.2112925847408882079013862619705659971494103242295', 13, 6); + T('-28807871103897.272528960587971967675130166801', '-28807871103897.272528960587971967675130166801514140074724279602', 30, 2); + T('614620959.71471965275572405064779427741657286', '614620959.71471965275572405064779427741657286365469689495728000154430488188257888436646377190255908', 35, 4); + T('-0.00000000000000000000000000000000000000000000000089569140974', '-0.00000000000000000000000000000000000000000000000089569140973898433038300266513138758892568395944807', 59, 4); + T('368726531601472541757005559', '368726531601472541757005559', 22, 1); + T('185087426761612490062', '185087426761612490062', 10, 6); + T('-0.000000000004801489265532052458447318275442325425429984', '-0.0000000000048014892655320524584473182754423254254299839958730570547833935253', 56, 6); + T('1010261342.998866261745786097198968434321083737387072668528701921554', '1010261342.9988662617457860971989684343210837373870726685287019215543856058268', 57, 3); + T('-7.4410130019668366481281', '-7.44101300196683664812816428831629929', 22, 2); + T('0', '0.00000000000000000000000000000000000010766614619304664816351956826', 29, 5); + T('43602302059280765272143387205410250266701746805853.7362679778148565141761499585818918', '43602302059280765272143387205410250266701746805853.73626797781485651417614995858189170052', 34, 2); + T('3275597767569392135242802401183979090547557454995', '3275597767569392135242802401183979090547557454995.0002151574698063113783887531071555180731', 3, 4); + T('-0.000000861448005696963823990190602172681039031672943', '-0.00000086144800569696382399019060217268103903167294337421574', 51, 6); + T('-0.000000000718', '-0.000000000718175217221857329067204632862589275369371649657488041167798', 12, 2); + T('7241100033055179060849224143084272528685', '7241100033055179060849224143084272528685', 9, 6); + T('376930688703097473231056.140603329417775643180186381618', '376930688703097473231056.14060332941777564318018638161819677', 30, 5); + T('-335971623127888104123118574609591.54117174980023793282384339085373172820351', '-335971623127888104123118574609591.5411717498002379328238433908537317282035103147883860427215696679434', 41, 2); + T('0', '-0.000000000000000003', 17, 4); + T('-748898896256442137389196280.23031', '-748898896256442137389196280.230301813855222', 5, 3); + T('86874389451266246842831776279891856093449827972726827047273353918588358382027307437483326', '86874389451266246842831776279891856093449827972726827047273353918588358382027307437483326', 39, 5); + T('0.00081378123325625046095444674524950183268906906', '0.0008137812332562504609544467452495018326890690605771240762295999653129452516984857208', 48, 1); + T('-725450248090600004049167587080239402701356513779359607967489181865', '-725450248090600004049167587080239402701356513779359607967489181865', 21, 1); + T('24145300356288528084078711212894384414734655496038619409625797965831', '24145300356288528084078711212894384414734655496038619409625797965831', 25, 5); + T('22790948246303245', '22790948246303245', 2, 1); + T('26063.51488387693273367995592341542227268081315828530152', '26063.51488387693273367995592341542227268081315828530152248204562165099342', 50, 1); + T('0.000000000000000000000000006245246349730684267507002191086', '0.000000000000000000000000006245246349730684267507002191086872975015194060738411939654043163861', 57, 3); + T('0', '-0.0000000000000000000000000601239333161651028525297370999283901806959', 22, 5); + T('-7837268670151009998118347281852918290117079531785', '-7837268670151009998118347281852918290117079531785', 30, 6); + T('-0.0000000000000000000000000029961775048293', '-0.00000000000000000000000000299617750482926278941', 40, 5); + T('7697726478481038997299694825766803440383452890589677184654250970055060131212130077568341259760777047', '7697726478481038997299694825766803440383452890589677184654250970055060131212130077568341259760777047', 46, 2); + T('3339891140949070830.699260440247664205', '3339891140949070830.6992604402476642050432122493196994256397882111', 19, 5); + T('52884809054155176454341672916484263984322480794139167239467359676888945', '52884809054155176454341672916484263984322480794139167239467359676888945', 50, 6); + T('-172796003942538519677094591694286.6871237311', '-172796003942538519677094591694286.68712373112737765917257', 10, 4); + T('177347646033111167332285715', '177347646033111167332285715', 19, 2); + T('7476674346050072822509313046812.7766604692', '7476674346050072822509313046812.7766604692', 11, 2); + T('82575172816978114.87683857936991415384457', '82575172816978114.876838579369914153844570011199517178441757629522946782860018297776571802906754196', 24, 4); + T('7158070632454719426581379086266518238712824559043518252514520974817379095158141323665044775646', '7158070632454719426581379086266518238712824559043518252514520974817379095158141323665044775646', 17, 6); + T('917115601052562718812283551186941547064940933626510928987.4562952', '917115601052562718812283551186941547064940933626510928987.45629517752', 7, 0); + T('-65119253549637159293086371328298510.229376017664092812944609', '-65119253549637159293086371328298510.22937601766409281294460900299739094729288137887', 24, 1); + T('-579005874942088042877307886802326941', '-579005874942088042877307886802326941', 37, 5); + T('-2601068115420615446305982791459.426', '-2601068115420615446305982791459.425989121248575552659129706', 3, 5); + T('60808268310943453653', '60808268310943453653', 5, 0); + T('0.00000000000000000000000000000000000000000005', '0.00000000000000000000000000000000000000000005256617601108', 44, 1); + T('249699615589458766148275472771371667542386092', '249699615589458766148275472771371667542386092', 41, 4); + T('197124783477415252140047709100049763856382077536494207', '197124783477415252140047709100049763856382077536494207', 38, 6); + T('814489916413714424739999786410796548452821032.87345595765165005591329846', '814489916413714424739999786410796548452821032.87345595765165005591329846329301564522512436756', 26, 6); + T('-49538016657893548118648418565252666426527317632760162518667129336789273', '-49538016657893548118648418565252666426527317632760162518667129336789273', 48, 6); + T('-135962402495274524139379723587561300376789400012147878152663948.959882330347226358434638817587', '-135962402495274524139379723587561300376789400012147878152663948.959882330347226358434638817587336', 30, 4); + T('-4358076197279432775165677949552222928787316311', '-4358076197279432775165677949552222928787316311', 26, 5); + T('0.000000009549660800446030405915591714374', '0.0000000095496608004460304059155917143740402066739073312691924883427', 39, 6); + T('-2437094615.41350858123042926442269584680387347048427179419', '-2437094615.4135085812304292644226958468038734704842717941889573519082323297558840308', 47, 6); + T('358466133.8601641175863834378441113254257530617354281379949', '358466133.8601641175863834378441113254257530617354281379949', 49, 0); + T('-154871213567638221959950687949306409.746351834947226354559186488773883', '-154871213567638221959950687949306409.74635183494722635455918648877388290383966146367365785249', 34, 0); + T('87976555906224409024900072725833110552887623978068697732792.9607157608696', '87976555906224409024900072725833110552887623978068697732792.96071576086966754763036', 13, 3); + T('-590375526445828770053040658061151605713512472014244563701327', '-590375526445828770053040658061151605713512472014244563701327', 1, 5); + T('-1353905521062450729740654018889029895510321597436677310509112', '-1353905521062450729740654018889029895510321597436677310509112', 14, 4); + T('332180937526303', '332180937526303', 11, 6); + T('-45680079491730638451939229416160824932393128593694', '-45680079491730638451939229416160824932393128593694', 22, 6); + T('-0.000000000000000000000000000000020571686416292021497594053', '-0.000000000000000000000000000000020571686416292021497594052393236318666913399684096461', 57, 3); + T('0', '0.00000000000000000000000000211213791085573837356864067911953194887302837267780203724344126645', 3, 3); + T('892521802506509803646883747443168', '892521802506509803646883747443168', 2, 0); + T('-0.0000000068819004877595917438112866483406192855698741553', '-0.00000000688190048775959174381128664834061928556987415527831307983170062116415194754', 55, 5); + T('-49804930268043916112990775622805558821229045379525', '-49804930268043916112990775622805558821229045379525', 49, 4); + T('-0.00000000003844997', '-0.0000000000384499609113122581', 17, 0); + T('73509462899114913097162.936659564199247116284287739794425748', '73509462899114913097162.93665956419924711628428773979442574807443872985516875078680777000792039', 36, 6); + T('-8664068510121727818868488574074194031123824480425809', '-8664068510121727818868488574074194031123824480425809', 33, 3); + T('0', '-0.000000000000082925154369503381952218', 3, 4); + T('0.00000000000000000000000000000494371559', '0.00000000000000000000000000000494371558998398758931188718756430525144657522366194157303586974', 40, 6); + T('-794260065998077.13884134275780911657238759893', '-794260065998077.13884134275780911657238759892090024486502952023782930417809262337', 29, 3); + T('7838449608010724090333915161039617854245', '7838449608010724090333915161039617854245', 22, 2); + T('-0.000000000000000000000000090299235692899474107765497', '-0.00000000000000000000000009029923569289947410776549697487571276313069', 51, 6); + T('129880371850258.61412133178439830260206194863575968506722', '129880371850258.6141213317843983026020619486357596850672151597348420116071764738002312480591', 41, 2); + T('0', '-0.000000000000000000000000000069654324810754007197818319458155515746102410831', 16, 6); + T('6917074928997406802340600287671366643463094979793703', '6917074928997406802340600287671366643463094979793703', 11, 1); + T('638352.2306719047482582143371628643608514910846959631257', '638352.23067190474825821433716286436085149108469596312565254436460123392767413281842895306628777', 49, 2); + T('7707946181531948', '7707946181531948', 15, 2); + T('-309838422086.048', '-309838422086.04808185', 3, 1); + T('2192824211.0080201985789590980919632264255672632048439891468', '2192824211.0080201985789590980919632264255672632048439891468602698480648434545311112376637021504392', 49, 3); + T('0', '-0.00000000000000000000000003969191310224666076414045470704912231091500221968441708', 21, 2); + T('0.000000059490243929978874247171531061445881135951312465129', '0.000000059490243929978874247171531061445881135951312465128875040394691104895', 57, 2); + T('0', '0.00000000000000000000000000000000000000000000430795892406074968248098271778852650237875158191', 8, 3); + T('0', '0.00000000000000000000000000000000000000005514079663792325895423321318316302278796368854622155', 34, 4); + T('493569761100274010110454077911624728967134', '493569761100274010110454077911624728967134', 3, 1); + T('0.0000000000000000000000002350261513856073030241856209142', '0.00000000000000000000000023502615138560730302418562091419767176841', 56, 2); + T('0.000000000001', '0.000000000000000000000046445881046455824754584852684456291036351797', 12, 2); + T('-5908575948461246157379027387757419774048142302098485973238118063421813737397525', '-5908575948461246157379027387757419774048142302098485973238118063421813737397525', 34, 0); + T('0.000000000000000005399089004454655777227', '0.00000000000000000539908900445465577722722971033069332071477587781', 39, 4); + T('0.00000000000000000000000946098557678120770671083814', '0.000000000000000000000009460985576781207706710838140980751323648544309161', 50, 1); + T('0', '-0.0000000000000000000000000000000000000000440403318867241576885154196', 0, 5); + T('3747046262', '3747046262', 5, 1); + T('0.0000001', '0.0000000000000000000000000000000000758646', 7, 2); + T('0', '-0.00000000000000000000000009', 15, 5); + T('596882052577426293863257301421465966502279', '596882052577426293863257301421465966502279', 33, 0); + T('4473039625977222144334479458063492239418825.96014198784271458', '4473039625977222144334479458063492239418825.960141987842714579094764752465747291142009', 17, 2); + T('0', '0.000000000000000000000000000000000008840970191233691325423106101165338878559781109762868155273', 30, 5); + T('0', '0.00000000000000000000000000000004', 16, 5); + T('169029712348.55170414716062751882592912346872779338106493155966548277055', '169029712348.551704147160627518825929123468727793381064931559665482770557368651', 59, 1); + T('-40067736333095467.909018103042482184697237903897840593507536857833592926589', '-40067736333095467.9090181030424821846972379038978405935075368578335929265886811466250958381', 57, 0); + T('-879372926673376715647525088389987030762829133462771771854', '-879372926673376715647525088389987030762829133462771771854', 12, 3); + T('29923919417788684712505451388250973913525516205739.62177676', '29923919417788684712505451388250973913525516205739.621776762470308785065158523', 8, 5); + T('-50200282715661012003363003', '-50200282715661012003363003', 6, 0); + T('0', '-0.000000000000000000000000000000000000000000000011547', 26, 5); + T('5538533228138305238117805063', '5538533228138305238117805063', 0, 0); + T('-8.98259597', '-8.9825959693939731006579032794091529508335050728015406034432905524309056850714530113740093', 9, 0); + T('-7138142982581499581552578584558628530515907316812965044194805157928305296221837271', '-7138142982581499581552578584558628530515907316812965044194805157928305296221837271', 25, 1); + T('-414052004150361683820310924925020.9862395245441307980875407937909', '-414052004150361683820310924925020.9862395245441307980875407937908147411525882356716741678', 31, 3); + T('-503755672587004363319584711242281208', '-503755672587004363319584711242281208', 0, 2); + T('-0.0000000000000000000000000000078587947', '-0.00000000000000000000000000000785879472681', 37, 1); + T('-3', '-3', 0, 2); + T('724326828597266930679679932585984135363842086368099478984203778942630037200185834576870973751', '724326828597266930679679932585984135363842086368099478984203778942630037200185834576870973751', 58, 0); + T('0', '-0.0000000000000000000001069196569505157465239433501017695267116353907894886133969', 17, 5); + T('85972608415515722814484953328108168327861432', '85972608415515722814484953328108168327861432', 27, 3); + T('735203353605367618463183405487305335425', '735203353605367618463183405487305335425', 3, 4); + T('-0.000000000000038685598587815953783879233', '-0.00000000000003868559858781595378387923293510596996438543568027764671', 39, 4); + T('39417777876786859925775897228.414515103190999545938444157261853177310365', '39417777876786859925775897228.4145151031909995459384441572618531773103646804525566998911941365927', 42, 6); + T('-0.00042729698662369', '-0.0004272969866236854339301384420491548821671090593596154031221535925979534328791', 17, 3); + T('-0.001', '-0.000000000000000000000000000000000005405329234046634574698589533972367873335830589026185244', 3, 3); + T('780253449349101270418037346037809619092763848109347741511253928090145408496147938502521', '780253449349101270418037346037809619092763848109347741511253928090145408496147938502521', 54, 4); + T('-0.00000000000000000000000000000000067451325390149', '-0.0000000000000000000000000000000006745132539014862711234', 47, 0); + T('31.0602835210115', '31.06028352101159116694707249229172391419071049341139', 13, 1); + T('0.0000000000000000000000000000000000000000000000000495', '0.000000000000000000000000000000000000000000000000049499482322322842956811022466314', 54, 0); + T('0.00000000000000000000000000036747356681216113823925277207', '0.0000000000000000000000000003674735668121611382392527720704138622451221314733501', 57, 1); + T('320701762086356051254296033221502209341446339599208346957463888343997136', '320701762086356051254296033221502209341446339599208346957463888343997136', 32, 0); + T('0.0000000000000000006229756350932003529439584563700569061023', '0.0000000000000000006229756350932003529439584563700569061023', 59, 0); + T('-0.00000000000000000000000000000001', '-0.000000000000000000000000000000000002779554968030959772451850537321855864675620017588372276903500536', 32, 3); + T('19504345494555478351182477703565457647566876858685627027379505944698694624726169090861984', '19504345494555478351182477703565457647566876858685627027379505944698694624726169090861984', 0, 4); + T('-884684852128576325857920870487060224224863003891902747660876195738072', '-884684852128576325857920870487060224224863003891902747660876195738072', 29, 2); + T('-0.00000000000000001927120482', '-0.000000000000000019271204816104208235432769229247337783831896121690184707573452963345555747139521261', 26, 3); + T('-17476187434.5449326082784577197411497434939321355651616981523713348786', '-17476187434.544932608278457719741149743493932135565161698152371334878519825208420735438717588271', 58, 3); + T('0.000000000000000000000000000000000000000000000000671942359', '0.000000000000000000000000000000000000000000000000671942359005812', 59, 1); + T('0.0000000000000000000000000000000004917118136701612', '0.000000000000000000000000000000000491711813670161116275010479557699441078855323071908', 49, 0); + T('634166172293272998158876.8413', '634166172293272998158876.84128062603520572376508413295607032369731651393103539143496669193918096843', 4, 0); + T('-28119944334730255826834221613922194267786170327968560369991839067', '-28119944334730255826834221613922194267786170327968560369991839067', 32, 6); + T('0.00154819734046993', '0.00154819734046992352816640604555843660775840335436322950452318455817', 17, 0); + T('-105913645497507508669973802578229519978763548843414114661.54980455412849338374', '-105913645497507508669973802578229519978763548843414114661.549804554128493383737493', 20, 4); + T('7289695139546080448297917061342289649234847530317672856838500148', '7289695139546080448297917061342289649234847530317672856838500148', 20, 1); + T('0', '0.000000042979420754347314988434544000447696776811769466455886485920655', 0, 4); + T('0', '0.000000000000000000000000000000000924077178027327', 24, 6); + T('282942634910281488152070543.81977405730745731368050238', '282942634910281488152070543.81977405730745731368050238222825081313', 26, 5); + T('9829583855774518751527887659888828937143309416650.01061691363', '9829583855774518751527887659888828937143309416650.010616913621011666291387767132900103741582580722946', 11, 2); + T('2843.5579809036184', '2843.5579809036184434137308509550969034869063413306363790685675', 13, 3); + T('0.0000000000000000000000000000006935112798', '0.000000000000000000000000000000693511279803301217125480155013139742885382224949324725789805812', 40, 5); + T('38402002761517.0373', '38402002761517.03726339201008642458566869258242930397372981070695839443682553444750792077030923352', 4, 2); + T('-0.00000000000000001', '-0.00000000000000000000000000000000000284', 17, 0); + T('-0.00000000000000000000000000000000000000000328559961', '-0.0000000000000000000000000000000000000000032855996112178825812918129', 50, 2); + T('-10857376233280.74203', '-10857376233280.74203521516266128862336259662162270285388060400166956185959712257522107', 5, 2); + T('-0.00000000000000000000000000000001', '-0.000000000000000000000000000000011428328539927202527982255539515744018395155', 32, 1); + T('0', '0.0000000000000000006362859957256', 11, 4); + T('4325993183488742208455442659071054631148', '4325993183488742208455442659071054631148', 11, 3); + T('-1163899294989774891167097029980639467528238979769081614588667904', '-1163899294989774891167097029980639467528238979769081614588667904', 27, 3); + T('-0.000008771176272398358315944222330846161437656443089', '-0.000008771176272398358315944222330846161437656443089372426117023897251811651901343373735604735', 51, 2); + T('-0.000000000000000000000003961015971842', '-0.000000000000000000000003961015971841840897153173232191143604645950090459018394', 36, 3); + T('-0.000000000000044516333', '-0.0000000000000445163325234697173332966370812630194498631820837056547152354402952422626816765', 21, 0); + T('-0.001', '-0.000000000000000000000000560288645294823225485858180788451420057727431', 3, 3); + T('70431396474321596927755.0616724357770297517853368489945852116010015382199953', '70431396474321596927755.061672435777029751785336848994585211601001538219995373286052198980239404', 52, 1); + T('-290563347.4018618590644496547932201955716045339506671235383081837373', '-290563347.40186185906444965479322019557160453395066712353830818373739840892194032111993775', 58, 1); + T('-49838122704426512042478', '-49838122704426512042478', 12, 4); + T('65731122722942661959967857762.18', '65731122722942661959967857762.18226768355365269085129302733326389972791821455019761189700189', 2, 4); + T('684132827465730082618383537053250641255400578134', '684132827465730082618383537053250641255400578134', 39, 1); + T('710427365331082486088196567.85693834564371170948582954685019', '710427365331082486088196567.8569383456437117094858295468501870885566575655950543328963118398231759', 32, 4); + T('36646445.4', '36646445.42824516523285194093354092096642673855547686910006', 1, 4); + T('0.43424917263886958982405140577413037118', '0.43424917263886958982405140577413037118797467795184', 38, 1); + T('-0.00000000000000000000000036588414680611016888031201521581', '-0.000000000000000000000000365884146806110168880312015215814', 56, 5); + T('-0.00000000000000000000051018357371038710352736277553359016842', '-0.0000000000000000000005101835737103871035273627755335901684125664187418843827676645536966728787', 59, 3); + T('-35159732781823.97716511119720206064558667', '-35159732781823.977165111197202060645586672946470926242812549089110584121041', 26, 4); + T('0.000000000000000000000000000000000003364306363591', '0.000000000000000000000000000000000003364306363590521522380481558802243742946674208931', 48, 4); + T('-4306747914757314388890273349986190769173944.39291819807120899471231887129063365500089582609', '-4306747914757314388890273349986190769173944.39291819807120899471231887129063365500089582608837', 47, 3); + T('-0.0000206161005604222009966692502', '-0.00002061610056042220099666925021597014337038232489136426449787194485033490838383', 31, 5); + T('29588529819920739172563477650035803968437251317221514791', '29588529819920739172563477650035803968437251317221514791', 38, 4); + T('0', '0.00000000000000000000000000000076512226709342597183392545931193073264251232258187043154966155', 10, 4); + T('642634746714122.488629063706747265885497766263668674846', '642634746714122.4886290637067472658854977662636686748455506370584335783149463152080002791966876190272', 39, 5); + T('-0.000000000001', '-0.0000000000000000000000068031607833728788218500078443799438145', 12, 0); + T('4478793059557.919366066899688681937166624937', '4478793059557.919366066899688681937166624937037651207942775207986303596524642642692579', 31, 1); + T('719126016681991174787244179437135662886106', '719126016681991174787244179437135662886106', 21, 6); + T('612370379.042280015162966981091543536169122', '612370379.04228001516296698109154353616912118620911001007', 33, 0); + T('-0.000000000000000000381148646471375542749', '-0.00000000000000000038114864647137554274933758', 39, 1); + T('-0.00000336921984240686812663817912975898', '-0.00000336921984240686812663817912975898003855606655763928424753588827973199516045', 38, 1); + T('6614908420764830574613829691575811991052782880888895087915', '6614908420764830574613829691575811991052782880888895087915', 1, 5); + T('-75576843314854333307451548', '-75576843314854333307451548', 8, 2); + T('-7094775936348915.769263075129454561542743852557970402', '-7094775936348915.7692630751294545615427438525579704015758356635999962', 36, 4); + T('0.000000000000000647255404244969058746125607', '0.0000000000000006472554042449690587461256070155216132767410199433477488145722851174', 43, 4); + T('212191747967678055259704020533185819.7153877789442928970247278', '212191747967678055259704020533185819.7153877789442928970247278005685961467993140759589633126', 25, 5); + T('0.000000000000000000000000000000086866886236741', '0.000000000000000000000000000000086866886236741491884373982593431074047696748', 45, 5); + T('-21896707599295196444127', '-21896707599295196444127', 7, 6); + T('67963466958486868433411681965', '67963466958486868433411681965', 8, 1); + T('-0.0004618114320999748548', '-0.0004618114320999748548227742586597847789768814695996979397676648662277615278571112727802', 22, 1); + T('0', '0.000000000000000000000000000000000000000072014201946018446425103586624', 34, 3); + T('0.000000000000000000000000040626999', '0.000000000000000000000000040626998084581879309101940084150929007748602990641311915569084218', 33, 0); + T('-0.00000000000000000000000000000000000002364670058488838781', '-0.000000000000000000000000000000000000023646700584888387803963852870078295754301293417634319', 56, 0); + T('-61312195050009621627250721752682.05458', '-61312195050009621627250721752682.05458776416651498653588646631355122', 5, 2); + T('88558823477934754368770485901911168548905661612129649349536492903025217066', '88558823477934754368770485901911168548905661612129649349536492903025217066', 27, 3); + T('-5761274593909054578402071821461472994565942226296450524728000900348368713263854424411989', '-5761274593909054578402071821461472994565942226296450524728000900348368713263854424411989', 54, 4); + T('4397525934482', '4397525934482', 10, 1); + T('0', '0.000000000000008', 3, 3); + T('3832505074710.8772241868692955359876737605513385536', '3832505074710.8772241868692955359876737605513385535657156382235008771952598281484', 37, 5); + T('0.0000000000000000000000000000000000000000000064039785838957', '0.00000000000000000000000000000000000000000000640397858389567536112989058804434974', 58, 6); + T('6899986941802317801470081277005392880851864737732161265779438709', '6899986941802317801470081277005392880851864737732161265779438709', 36, 2); + T('0.048906322648425185632628713058196452313509', '0.0489063226484251856326287130581964523135085310426446391', 42, 5); + T('-29068667316141265922020323299656223961691022983876401059969277924346', '-29068667316141265922020323299656223961691022983876401059969277924346', 52, 1); + T('57896564283529490722728198636247192473162.955437706', '57896564283529490722728198636247192473162.955437706585876490347082', 9, 1); + T('-1377052660765266598224922578884764678982220316470617198042071.84', '-1377052660765266598224922578884764678982220316470617198042071.842763168339803148921', 2, 6); + T('-0.0000008472294237476439209693038490556088683', '-0.00000084722942374764392096930384905560886836719554554921990211', 43, 2); + T('-0.00000000000006211378313284557438319018', '-0.0000000000000621137831328455743831901849526312006248559047579838', 38, 6); + T('-64132448927708626844067839788020.56104426721067307770150847932963341750262', '-64132448927708626844067839788020.56104426721067307770150847932963341750262451491448713527', 41, 4); + T('-0.00080510769276', '-0.0008051076927558161863905844170590891349375387966097254255501665792278513428990177180729', 14, 4); + T('-0.000000000523495070412194527222', '-0.000000000523495070412194527222245530916445', 30, 6); + T('-776981501784122653016725778489064077038674642417508137241453166338683', '-776981501784122653016725778489064077038674642417508137241453166338683', 25, 6); + T('-85.754361554275952592904696122168206579', '-85.754361554275952592904696122168206579375505261', 36, 6); + T('41971686031617689086324682083921394293937303185646952166039268116965193583', '41971686031617689086324682083921394293937303185646952166039268116965193583', 7, 5); + T('0.00039420287057734077878369443635344083421129327830247522826', '0.0003942028705773407787836944363534408342112932783024752282629774898259222473719', 59, 3); + T('0.00000000000000000000000000000000000000000000000675866720473', '0.0000000000000000000000000000000000000000000000067586672047328993602503820470338', 59, 5); + T('0', '-0.000000000000000000000000000000000000000000000088705230880406784828084160640801289390145869866', 36, 1); + T('-304191535324135351444668650070326671', '-304191535324135351444668650070326671', 28, 0); + T('-0.000000001', '-0.000000000000000000000000000000000000645202999', 9, 3); + T('-1475932977772754862911365548920235009', '-1475932977772754862911365548920235009', 1, 1); + T('0.00000000000000748482924758', '0.00000000000000748482924758907665350364240578489492856151184272179973', 26, 1); + T('-1', '-0.0000800368117241283577308465283698286330423189888237592540844483', 0, 3); + T('0.00000000000000000005436973621557718727915791605', '0.0000000000000000000543697362155771872791579160464793433', 47, 4); + T('0', '-0.000000000000000000000000008105812474775967121736315163', 10, 2); + T('-162061415319361123389400237365697567694754077666970.95367098983987825787039', '-162061415319361123389400237365697567694754077666970.95367098983987825787039768461541526', 23, 1); + T('-0.00000000000000000000000078141830260660528317962609581', '-0.0000000000000000000000007814183026066052831796260958153167081281', 53, 2); + T('-760450372966873218121690338416694511378045594432280482201.6', '-760450372966873218121690338416694511378045594432280482201.5743953451455', 1, 6); + T('-8969924824887750.078167576440491913960555993', '-8969924824887750.0781675764404919139605559934327012046423719029', 27, 6); + T('-0.00000000000000000000000000000000000000000008850594039644162', '-0.00000000000000000000000000000000000000000008850594039644162037424244532346653', 59, 2); + T('-260213417057955846142647463609725738084865895592932493537647341857', '-260213417057955846142647463609725738084865895592932493537647341857', 51, 2); + T('565141621099385566886468464466', '565141621099385566886468464466', 10, 1); + T('83664.29974759139108443286033487', '83664.2997475913910844328603348762233403', 26, 1); + T('159684867991933938188684086.84829503153331708926629620984773984546340485586957818589', '159684867991933938188684086.84829503153331708926629620984773984546340485586957818589283205', 56, 4); + T('4783482240722.889565506051950025731026748125580032', '4783482240722.88956550605195002573102674812558003270323257226548107196735812', 36, 1); + T('0', '0.0000000000000000003', 9, 1); + T('-73191538351494680542101.097679556493531497949879615674615869073278632189', '-73191538351494680542101.09767955649353149794987961567461586907327863218941724713424903198', 48, 6); + T('1377196679485199902841228391473638877532', '1377196679485199902841228391473638877532', 20, 0); + T('-17772153798727918242886392361333023042650831518530553', '-17772153798727918242886392361333023042650831518530553', 46, 0); + T('0.08328506397736199', '0.08328506397736199281189505020297381756462266529288847578', 17, 6); + T('0.000000000000000000000073181265651336435623978981763', '0.000000000000000000000073181265651336435623978981762922547674290225409720410306838731933043556', 52, 0); + T('2290053898142311723842871344607971300300.4', '2290053898142311723842871344607971300300.434151478993367452964917933417740817968087394784172', 1, 4); + T('-4526903994128138106185254976553.417454138027126670650882487065659163773887419248789373', '-4526903994128138106185254976553.4174541380271266706508824870656591637738874192487893725731607711', 54, 4); + T('0.000000000000000000000000000004529650848633752087137797', '0.00000000000000000000000000000452965084863375208713779692', 54, 2); + T('41790148346489387876273166411501052202', '41790148346489387876273166411501052202', 8, 0); + T('-0.000000000069328660259658436177', '-0.0000000000693286602596584361762589565091715124753019116431269', 30, 0); + T('934822253075684362315304330796079406852179', '934822253075684362315304330796079406852179', 20, 0); + T('6138685955473706895.27191846437634217823067', '6138685955473706895.271918464376342178230674192673963926883446477458738606505318684196487099828273', 23, 1); + T('-4995207495760013820781008', '-4995207495760013820781008', 9, 5); + T('-315575628071433482711097581911695580094607581401113654130956785', '-315575628071433482711097581911695580094607581401113654130956785', 53, 2); + T('14237742301009518268544482664657681590264.3699281317800082179089', '14237742301009518268544482664657681590264.36992813178000821790889652431207007693905617376813211534954', 22, 6); + T('6933324085798448906217582066829684616544680559688340085427', '6933324085798448906217582066829684616544680559688340085427', 59, 5); + T('0.00000000000000076326740786404408348160812965284434866778', '0.00000000000000076326740786404408348160812965284434866778747625162316325969396896612585666', 56, 3); + T('0.000000000000086813905963104592136996896057455896843', '0.000000000000086813905963104592136996896057455896843175022732573388730069970550757', 51, 5); + T('51801898867306672572496403839561629956832174080646016677953156', '51801898867306672572496403839561629956832174080646016677953156', 8, 6); + T('-0.000000007315101480415581536176467876648223789983200337', '-0.00000000731510148041558153617646787664822378998320033685682677794506948090883516907520915603842', 54, 6); + T('0', '0.0000000000000000002560972936441568309868552845452461441', 1, 4); + T('-4148384973258837308705900867312127926039628611927712693805299864565985491', '-4148384973258837308705900867312127926039628611927712693805299864565985491', 57, 2); + T('0', '0.00000000000008081392179', 11, 3); + T('0', '-0.00000000000000000000000000000000000000000000000045718218551581160547165', 32, 5); + T('126371519643424683947919776390544767992024526388', '126371519643424683947919776390544767992024526388', 33, 3); + T('-148196', '-148195.22330505940168207920977604763714302872718112527157', 0, 3); + T('0.000000002384518595846426', '0.00000000238451859584642619680666569487976797096982144404778137134898742245621718069', 24, 1); + T('0.0000000000000000000001', '0.000000000000000000000000000000004625', 22, 0); + T('-16911.7419832374869', '-16911.7419832374868955960680613558461083659651878098', 13, 5); + T('-0.000012', '-0.0000122184223277020419635939917289023624698188785457519029895428324113502565328671558', 6, 2); + T('0.0000000000000000020288542156920825061442115612294420237', '0.000000000000000002028854215692082506144211561229442023610384333574312922', 55, 0); + T('-926348619407629319522119393447968619', '-926348619407629319522119393447968619', 9, 6); + T('0.000000000000000011172996664320313188853949533840233', '0.00000000000000001117299666432031318885394953384023300040666548394933514811631768406408144820507299', 51, 6); + T('8676085578448129636.46125142815995954615633699159686307427564866280997975', '8676085578448129636.461251428159959546156336991596863074275648662809979754896', 53, 6); + T('0.000000000000000000006911673453476612828647988180511', '0.00000000000000000000691167345347661282864798818051074447846', 51, 5); + T('0', '-0.000000000000000000000000000000000000000037274661429910134438335779699', 20, 6); + T('0', '-0.00000000000000000000000000000022912429406409774126564962929569092713860155341547', 5, 2); + T('0', '0.00000000000000000000007', 9, 4); + T('-0.000000000000000000000000000647', '-0.00000000000000000000000000064679122351281910373', 30, 6); + T('628253552286979258688877224011928439269818309', '628253552286979258688877224011928439269818309', 39, 2); + T('-7473225474290375395406057107593674409', '-7473225474290375395406057107593674409', 9, 4); + T('0', '-0.000000000000000000000000000000000000000000044980341254278389339188217614184616236700512663', 42, 1); + T('0', '-0.0000000000000000000000008169851496807201249112045355202923', 10, 4); + T('44979151873456538589159481816187996063744819950498068666276244930081', '44979151873456538589159481816187996063744819950498068666276244930081', 44, 2); + T('-5656502680950453.307129232', '-5656502680950453.3071292317099969560559506107', 9, 6); + T('0.000012916983213677608946870037474', '0.00001291698321367760894687003747317197534115902429539309092', 33, 0); + T('186614411842436994154261287798158888894696101481267805116', '186614411842436994154261287798158888894696101481267805116', 48, 4); + T('707.380045900803464776244462046183', '707.380045900803464776244462046182987', 31, 6); + T('632194297368023228055660745485057870911107495734770014', '632194297368023228055660745485057870911107495734770014', 46, 6); + T('35280495669924811181641930079387327223136396121465358386312882495656970347', '35280495669924811181641930079387327223136396121465358386312882495656970347', 1, 4); + T('-6325867003724294.663698111988027895808356539794935974343081043', '-6325867003724294.66369811198802789580835653979493597434308104291301033018168875746098749871551255682', 45, 0); + T('-799353555477135814839251032527782560596504969267009081682848404947106492', '-799353555477135814839251032527782560596504969267009081682848404947106492', 39, 1); + T('66595791053662779211189537167463453717540557304309464', '66595791053662779211189537167463453717540557304309464', 27, 0); + T('86863819.0795207560566246205038942404911', '86863819.07952075605662462050389424049106413333666160054769765', 31, 4); + T('-0.000000000000000000000000000000001', '-0.00000000000000000000000000000000000000000000008', 33, 3); + T('0.0000000000000000275', '0.0000000000000000275440961091735938216613771820776939226812444657855328490901237788725', 19, 1); + T('0', '-0.00000000000000000000000000000000000000000000000225083583687450018290901147795588587262327956', 21, 4); + T('106844609528473355525467772516478055461312403965348968485756541728796', '106844609528473355525467772516478055461312403965348968485756541728796', 16, 4); + T('-0.000000000000000814523751192634198253241238297485319828', '-0.0000000000000008145237511926341982532412382974853198275271819634843873247036611', 54, 0); + T('2606400896622366889946488350737590139429931326875963144243247149520.3226059185533490213723413754', '2606400896622366889946488350737590139429931326875963144243247149520.3226059185533490213723413754', 28, 6); + T('-183452660943051448746754671284613', '-183452660943051448746754671284613', 10, 2); + T('839807437987291944449694079569638219', '839807437987291944449694079569638219', 36, 0); + T('-8132217764461224416834766794322810048760447551363872095', '-8132217764461224416834766794322810048760447551363872095', 48, 0); + T('-0.0000000000000000000000000000001', '-0.00000000000000000000000000000000084013749996116337258106', 31, 3); + T('0.00000000000000000000000000000000056286653735314698', '0.000000000000000000000000000000000562866537353146980064941975206481554805', 52, 3); + T('8826215431283658953381909149090157677663835064029813383632728867019103467383915169736679', '8826215431283658953381909149090157677663835064029813383632728867019103467383915169736679', 35, 1); + T('65532958561624805787499.79879743257742173928432822969962227122981569885', '65532958561624805787499.79879743257742173928432822969962227122981569885', 48, 1); + T('-2776707353947863935313425463872380342255574023352080451291774137989569263228187316199185', '-2776707353947863935313425463872380342255574023352080451291774137989569263228187316199185', 45, 3); + T('84870733020575140260092508553754661695.368114319072', '84870733020575140260092508553754661695.36811431907190335719', 12, 4); + T('-83503440279939.973261442707162100212414583470064391568958643329', '-83503440279939.9732614427071621002124145834700643915689586433289964', 49, 0); + T('0', '-0.00000000000000000000000000000000000000000000000593635309628535746', 10, 2); + T('0.00001', '0.0000000000000000000000000000000000000000000005286316917406446218605705578095483616474', 5, 0); + T('0', '0.000000000000000000000000000000000000000008', 21, 1); + T('-0.000000000000000000000000000000896870792', '-0.000000000000000000000000000000896870791266', 39, 0); + T('6740911664689729', '6740911664689729', 17, 0); + T('-0.00000690323521226292545282', '-0.0000069032352122629254528255683555238', 26, 1); + T('-0.00000000000000000000913384438905427651481080851110444839', '-0.000000000000000000009133844389054276514810808511104448390238589693895571906', 56, 4); + T('-37939815047550295525500362964223610089693995885662719445639226194590163762795367', '-37939815047550295525500362964223610089693995885662719445639226194590163762795367', 40, 2); + T('0', '-0.000000000000000003', 3, 6); + T('0.000000000000000000000000000000005425', '0.000000000000000000000000000000005424109435043055109323846477896259', 36, 2); + T('-0.00864924723907831760464760343418947', '-0.00864924723907831760464760343418946520325901534', 35, 6); + T('0', '0.0000000000000000005374923', 14, 5); + T('11960649002', '11960649002', 11, 1); + T('6205972.6375129878468500799969491683169898210504634996318', '6205972.6375129878468500799969491683169898210504634996317075719512025074532662', 49, 0); + T('-0.0000327696652066428583356559', '-0.000032769665206642858335655876746559995630835559846294876125981984', 28, 0); + T('-7106283670343099889326720878025602271833620303', '-7106283670343099889326720878025602271833620303', 13, 1); + T('-0.000000000000000000000001', '-0.000000000000000000000000000000009', 24, 3); + T('-0.00001', '-0.0000000000000008', 5, 3); + T('-6133916442630955317842810214.86821373617414489008214917421152', '-6133916442630955317842810214.868213736174144890082149174211518886339289911249129630570965984027', 32, 5); + T('-23881.773402249', '-23881.7734022481', 9, 3); + T('-7943072313454728932408805268809876911677807547292409069069320924', '-7943072313454728932408805268809876911677807547292409069069320924', 53, 3); + T('-0.0000000000000000000000005184238277412160705490261079943', '-0.000000000000000000000000518423827741216070549026107994302914', 55, 6); + T('-6502553383150595', '-6502553383150595', 18, 6); + T('-0.00000000000000000000000000000000690227527', '-0.00000000000000000000000000000000690227526594856364875794508690356161782941768', 41, 6); + T('-0.056303708323832222458882734633919', '-0.0563037083238322224588827346339194', 33, 5); + T('146170653842047607933686838505110978214296', '146170653842047607933686838505110978214296', 43, 4); + T('-6440173.72698277131181168466528058795104036685676747477', '-6440173.726982771311811684665280587951040366856767474768344', 47, 3); + T('435822485701161806484754025865621399846162883184293991478109154521248459436', '435822485701161806484754025865621399846162883184293991478109154521248459436', 4, 3); + T('-0.000000000000000037815186790363', '-0.00000000000000003781518679036284917443497339141496107319487738088629444641566971505', 30, 4); + T('565930492095544460683321420785084911874956.4375793957430882229833768389375836010018', '565930492095544460683321420785084911874956.43757939574308822298337683893758360100179', 40, 2); + T('0.00000000000000000000004152', '0.000000000000000000000041522594866881469408628302850804768779275384292937914047860237548127164352', 26, 6); + T('-17034881662549539727165518222983064951722670573249', '-17034881662549539727165518222983064951722670573248.5125902187644045205097633', 0, 6); + T('276253842420715594878582609882869589958601896297494973', '276253842420715594878582609882869589958601896297494973', 36, 3); + T('-2486857760541953491833813995388.9805692056860091745889', '-2486857760541953491833813995388.9805692056860091745889748664644781', 22, 1); + T('-0.00000000001', '-0.00000000000000000000000000000000001343364842101594718687600286348068', 11, 3); + T('0.00000000000000000000000000000000000000000000007224', '0.0000000000000000000000000000000000000000000000722473881816060373641', 50, 1); + T('142224026751646621535876997526167808747124874491.8218160208781636', '142224026751646621535876997526167808747124874491.82181602087816353785918805465', 16, 2); + T('2054722951827331212352617437865565678128465963', '2054722951827331212352617437865565678128465963', 46, 0); + T('-0.00000000000000000259639195619', '-0.000000000000000002596391956187822298458567687533150431', 29, 0); + T('0', '-0.0000000000000000000000000000000000000000000000004783091262527', 35, 1); + T('0', '-0.00000000000000000000503086613010142201530941795090898678065118486089549316623317411283716858', 6, 1); + T('-679.96730494488662265292122816939430658266', '-679.96730494488662265292122816939430658266', 38, 6); + T('-4377850752966056', '-4377850752966056', 6, 5); + T('445003949563154132133680872348175496003398462600208906574865645004', '445003949563154132133680872348175496003398462600208906574865645004', 39, 2); + T('0', '-0.00000000000000000000000000000000000000001178758870852233489202054', 33, 6); + T('91936091236094033738149099398253993909296246976317855675164622956828', '91936091236094033738149099398253993909296246976317855675164622956828', 40, 4); + T('0', '0.00000000000000000000000000000000000003', 31, 1); + T('-898629194744631919581491799266418977651679996825530874', '-898629194744631919581491799266418977651679996825530874', 34, 3); + T('0.000003467700718336729714643811584256', '0.0000034677007183367297146438115842561720677348016451716438690590079270204', 36, 3); + T('-22546644480772822606187389406474962988389256779810505350888', '-22546644480772822606187389406474962988389256779810505350888', 52, 4); + T('-55082020290223830995673899832810918291437742407509337067868', '-55082020290223830995673899832810918291437742407509337067868', 2, 0); + T('1', '0.00000000000000000000000000000000000000007958953405109879', 0, 0); + T('-6621241335299355957642029172.6', '-6621241335299355957642029172.6111786502352678896678324397010972489567', 1, 4); + T('-0.0033627', '-0.00336269742972398707755429219378413396', 8, 0); + T('22743478716848471813054723697837.9399566865524', '22743478716848471813054723697837.9399566865524005957435185765916723113785', 13, 3); + T('0.0000000005992973504613566123673628822458384541', '0.0000000005992973504613566123673628822458384541', 46, 3); + T('1042630777875163117448109887506935525', '1042630777875163117448109887506935525', 15, 4); + T('221830139371014042990375785475202619672388755376281035547439322905698500192065908918841004849327', '221830139371014042990375785475202619672388755376281035547439322905698500192065908918841004849327', 1, 4); + T('-77589.796358', '-77589.7963584873098058997214465516938135824363', 6, 1); + T('0.000000000001819253160967', '0.0000000000018192531609674821174014441217356', 24, 5); + T('0', '0.00000000000000000000000000000023716920156897944671996308882014675', 13, 5); + T('-44856.778787975729305979715', '-44856.77878797572930597971463489707665657021962477424374876719956949220865646499239709551116', 21, 5); + T('-824225425379483553475089927776690875947364334175898675', '-824225425379483553475089927776690875947364334175898675', 2, 0); + T('87122038423032466553825622664295676697747152041634317', '87122038423032466553825622664295676697747152041634317', 31, 3); + T('-0.000000000000000070582005393075667', '-0.00000000000000007058200539307566721824589217372033295032', 33, 6); + T('489167543699462369.29206154', '489167543699462369.2920615397068117518054274410906616895686747969646065180181122832961', 8, 4); + T('0.000000000000000000000000000047024525824', '0.00000000000000000000000000004702452582390298338191679929233670770515206599960650313812431598721', 40, 2); + T('0.000000000000000000000000015966925641239639', '0.000000000000000000000000015966925641239638324777906483140603500193', 42, 0); + T('0.000000000000000000000000000000000001', '0.000000000000000000000000000000000000000072802411951783460267416348', 36, 0); + T('-7140703693356903422350486769685753717988557066347312584825633769978886.3629', '-7140703693356903422350486769685753717988557066347312584825633769978886.362931', 4, 2); + T('1736062301921704.3544399700210783', '1736062301921704.354439970021078301187861306249924535576', 17, 4); + T('2', '2', 2, 6); + T('0', '0.00000000000000000000000000000000000000000000000024894143738651545275937572115200791168651', 34, 6); + T('-68729847089572652805731356629429656670148403900488325598543', '-68729847089572652805731356629429656670148403900488325598543', 59, 6); + T('-346930759824.8932559917769593999', '-346930759824.893255991776959399952245588688', 19, 1); + T('-4340547831472081803462962486388614438943892232', '-4340547831472081803462962486388614438943892232', 48, 1); + T('61616001329905068913964', '61616001329905068913964', 16, 0); + T('0', '0.000000000000000006', 5, 5); + T('-49307863225330198431734', '-49307863225330198431734', 13, 4); + T('298024701456973658362011859788351474', '298024701456973658362011859788351474', 30, 5); + T('-425424728525125303177668913491238360367678741', '-425424728525125303177668913491238360367678741', 36, 2); + T('24056413149115583034277863478145', '24056413149115583034277863478145', 33, 5); + T('-68662564068039829470775924161168787917897062354279632533471702872755.986663', '-68662564068039829470775924161168787917897062354279632533471702872755.9866639308147823', 6, 2); + T('-27101699509736837178436357.31', '-27101699509736837178436357.3100268139', 4, 1); + T('0', '-0.00000000000000000000419594981553879981941810661', 1, 4); + T('273877393288860727439964596728486053482512130635.909', '273877393288860727439964596728486053482512130635.90913019', 3, 1); + T('102473879333862989052456171039164098', '102473879333862989052456171039164098', 15, 4); + T('-39381337887967273.903118568586532771031839637750510080526', '-39381337887967273.90311856858653277103183963775051008052576239248866475699378', 39, 3); + T('-3388998591124688079', '-3388998591124688079', 13, 5); + T('-150567903893972682463213974956', '-150567903893972682463213974956', 16, 4); + T('-0.0000000000000000000000000000000000000000493095312761862', '-0.0000000000000000000000000000000000000000493095312761861866451073373325095600742298256276', 55, 0); + T('-7953667604', '-7953667604', 5, 1); + T('4604171467545769381273154343552810484270535161', '4604171467545769381273154343552810484270535161', 40, 3); + T('590588071250370946139445102570765117263428130058924147992458327492312529138', '590588071250370946139445102570765117263428130058924147992458327492312529138', 23, 5); + T('-480177823684830812634801592253452743963534397293491478160746754380654483824166', '-480177823684830812634801592253452743963534397293491478160746754380654483824166', 50, 2); + T('0', '-0.0000000000000000000000038859594862', 21, 5); + T('0', '0.00000000000000000000748620339565797', 8, 5); + T('0.00002499835647695345918605661945571070775336188', '0.00002499835647695345918605661945571070775336187978592874439346863', 47, 0); + T('4159973699834074325565638', '4159973699834074325565638', 4, 5); + T('0.000000000000000000000055715176658', '0.00000000000000000000005571517665842097957139681288363708572', 33, 6); + T('0.00000001', '0.0000000000000000000000000000000000041593906324710134345258956249480933017685', 8, 0); + T('278216706345217684734', '278216706345217684734', 4, 0); + T('-515039538585', '-515039538585', 12, 5); + T('-5156282216060787005389201808449011961455755', '-5156282216060787005389201808449011961455755', 32, 1); + T('1771197246191236979629384473461.83606571991', '1771197246191236979629384473461.8360657199109008737', 11, 1); + T('0.0011131469353', '0.0011131469352378249447935166749689277812743785507290928314830661852468909137787363822177', 13, 0); + T('92115423409743', '92115423409743', 12, 5); + T('858.2661281409167634547302646312611320956987', '858.26612814091676345473026463126113209569860657925193123562', 40, 2); + T('-1', '-0.0719443', 0, 3); + T('-0.0000000000000009', '-0.00000000000000081331379483643709', 16, 0); + T('0.00002697436643419847452779353409412459199', '0.0000269743664341984745277935340941245919918623531756557204282278703617', 41, 5); + T('0.00000000000000000000001', '0.000000000000000000000000000000000000000000023801773695682720261287808392663674484132464627', 23, 0); + T('-0.00068344382770949159674695980739380635445', '-0.0006834438277094915967469598073938063544463198925827927897963802449983538', 41, 4); + T('0', '0.0000000000000000000000000000000000000000000000050279214787679199305', 11, 4); + T('-588947409514785639282485632722383004287882037069573499096951.3145927013550028697730488', '-588947409514785639282485632722383004287882037069573499096951.31459270135500286977304875961', 25, 6); + T('0', '-0.00000000000000000000000000000000186436816132981351522904214050221580878', 3, 4); + T('-2372.6417339151826508053284670230939641484', '-2372.6417339151826508053284670230939641484398', 37, 1); + T('62178674327740811042508553727964', '62178674327740811042508553727964', 27, 5); + T('0', '0.0000000000000000000000000000000547293246671362566489950300676458220362775126945519', 7, 4); + T('49251652967453539726484585223974655821592759', '49251652967453539726484585223974655821592759', 31, 5); + T('-296495898199.58115237407948666112', '-296495898199.5811523740794866611232178652873298488744263', 20, 6); + T('-95652710114780760171030049795936499140918623272399896688565724875008683384093', '-95652710114780760171030049795936499140918623272399896688565724875008683384093', 57, 1); + T('0.00000000000058426002118757843091739264518599980607', '0.00000000000058426002118757843091739264518599980606639684373685326021916693294', 50, 2); + T('2772843216253911884822930634835873229720748.35205347294264485414722818229074309092764957', '2772843216253911884822930634835873229720748.35205347294264485414722818229074309092764957', 45, 1); + T('0', '0.0002', 0, 1); + T('0.0000000000000000000009', '0.0000000000000000000009', 22, 4); + T('-0.00000063377460212762032425176962047901364151137812855454938', '-0.000000633774602127620324251769620479013641511378128554549388907545372024969906304253032', 59, 1); + T('-0.00000006646203569453454444708452552277428018333642748745699', '-0.0000000664620356945345444470845255227742801833364274874569813785409098392133873982373960550117596', 59, 0); + T('0', '0.000000000000000000000000000000000000000000018538496533514574221730165720097', 31, 5); + T('128484998383401376820534767951931012435370666908970446', '128484998383401376820534767951931012435370666908970446', 44, 1); + T('4387738573794731066916336352026833902940795.8852740466656380585076098286734723', '4387738573794731066916336352026833902940795.8852740466656380585076098286734723472438018787975', 34, 5); + T('-0.00000000000000000003405365175859259155568376', '-0.0000000000000000000340536517585925915556837608377203983174081729250328', 44, 6); + T('-187112408058.7234570771077', '-187112408058.723457077107737466758', 13, 5); + T('531063677635775810446921905944792595119327655554346497', '531063677635775810446921905944792595119327655554346497', 21, 1); + T('-0.0000000000000000000000006791908058045691073817', '-0.00000000000000000000000067919080580456910738169344941664639835178052777348953964845369', 46, 0); + T('307899704537986547769348847994164364550840818783793849762539', '307899704537986547769348847994164364550840818783793849762539', 14, 4); + T('-435801778695359687591423580.427694338967317762706300283493834282886549420729852', '-435801778695359687591423580.427694338967317762706300283493834282886549420729852017', 52, 5); + T('-0.00000000003917777044145525747611380850933123472924171119', '-0.000000000039177770441455257476113808509331234729241711186132211007540710149907', 56, 6); + T('62928039693272623682271.27541008736912709308116480951633335017303574647668632724622', '62928039693272623682271.27541008736912709308116480951633335017303574647668632724621535388', 59, 5); + T('-0.0000000000000000000000000000000000000000001', '-0.000000000000000000000000000000000000000000000007000182632515075', 43, 0); + T('907824547333163182771486955205512585202844466110951892146887907879200198061176', '907824547333163182771486955205512585202844466110951892146887907879200198061176', 24, 1); + T('-1544386137499412381886438484', '-1544386137499412381886438484', 25, 6); + T('-0.0000000000000000000000000076', '-0.00000000000000000000000000768056506477829996048633181519', 28, 2); + T('4890192706601958001267805328506308744627862445358671612', '4890192706601958001267805328506308744627862445358671612', 43, 4); + T('-0.001', '-0.000000000000000000000000000000000000000003024424622329171771637603264679763397312441', 3, 0); + T('-0.000000232115524236009432926', '-0.0000002321155242360094329258', 27, 0); + T('49465993391406248092231222.0801712487751425033643', '49465993391406248092231222.08017124877514250336430361542116940315722', 23, 3); + T('4180158455264386144163419573028038177659222536720952339274298247333816505172', '4180158455264386144163419573028038177659222536720952339274298247333816505172', 45, 3); + T('-0.000000000000000000000000000060254658062', '-0.0000000000000000000000000000602546580626641397565454810564671579837553', 39, 1); + T('0.0000019257899344941444964', '0.00000192578993449414449637565345019538269354146347', 25, 0); + T('0', '0.0000000000000007', 13, 4); + T('-0.000000000000000000000000000000000000007', '-0.0000000000000000000000000000000000000077279149653677340608947700558217181', 39, 2); + T('-448376506822431348847333799886', '-448376506822431348847333799886', 0, 1); + T('69867122143002481442816258286999167805918307181607743074904979008771841710463824003', '69867122143002481442816258286999167805918307181607743074904979008771841710463824003', 27, 3); + T('2178943445964550611', '2178943445964550611', 17, 0); + T('588387425474973011615137458350384132121857043644620739740517932.762', '588387425474973011615137458350384132121857043644620739740517932.76207074', 4, 3); + T('0.000000000000000891030290232918573851', '0.0000000000000008910302902329185738510097719', 36, 1); + T('3082156529442568521513326353208207517976381714116608.9434238802561825638640926017', '3082156529442568521513326353208207517976381714116608.943423880256182563864092601674468', 28, 6); + T('-269047218334585112717070569715', '-269047218334585112717070569715', 20, 3); + T('794322372403220770530191708', '794322372403220770530191708', 17, 4); + T('-0.0000088706942874980615965377284', '-0.0000088706942874980615965377283623276238900639610011564988041972', 31, 3); + T('-18762392383129800103435772599858039146861024540145071643', '-18762392383129800103435772599858039146861024540145071643', 39, 0); + T('0.00000000000000000005418504797326945324468962601702987844065', '0.000000000000000000054185047973269453244689626017029878440651506342739333005455074', 59, 6); + T('0', '0.00000000000000000000000000000001455552106862800727428835727449445351956', 2, 6); + T('-845184120395843729177378264132032391293931221704496190873', '-845184120395843729177378264132032391293931221704496190873', 3, 2); + T('-22928704982133259844820264310150045267.8329497378477851667', '-22928704982133259844820264310150045267.8329497378477851666787234740604182218327262831065786', 19, 0); + T('-753282787421295813612681585527569219114746603', '-753282787421295813612681585527569219114746603', 6, 3); + T('0', '-0.000000000000000000000000000001114691322399392322421', 0, 5); + T('-4470337.856339789341346743328195402056', '-4470337.8563397893413467433281954020555766465023528610798962516623771308', 30, 4); + T('-30259936572085000771571577042343302258005437254494921143265833920775250590681264568', '-30259936572085000771571577042343302258005437254494921143265833920775250590681264568', 37, 5); + T('0.00000000046019029818715', '0.000000000460190298187149944541124538982908213632543612794526400527723071339103700250052883', 24, 2); + T('488789246040736024354688778283025974423012332029061586465391.05657634342713960705278', '488789246040736024354688778283025974423012332029061586465391.0565763434271396070527794705650531927', 23, 0); + T('-6754886810347257311369815292802990704436078888019328596021676996446581588371838421302183', '-6754886810347257311369815292802990704436078888019328596021676996446581588371838421302183', 17, 5); + T('-2219143949146.543192979755734', '-2219143949146.5431929797557336049181837818262147309272936749984443073357094259', 15, 3); + T('25642596132200847246923459489123979011650156', '25642596132200847246923459489123979011650156', 34, 4); + T('-869559474794910580.4702422545', '-869559474794910580.470242254580425701508344203389450340088616045503344062196', 10, 1); + T('873581632317363936846913522953208947257070629891494175.1987423890811633389352647', '873581632317363936846913522953208947257070629891494175.19874238908116333893526471237141433112991286', 25, 4); + T('-149595188298843646987316097444673881', '-149595188298843646987316097444673881', 36, 5); + T('1314405778222365740681306509390140309', '1314405778222365740681306509390140309', 23, 5); + T('-43669276969497246217249931136079143593668679948650792993674045.547575505339753429132018021618569924', '-43669276969497246217249931136079143593668679948650792993674045.547575505339753429132018021618569924', 36, 2); + T('778437789780670221576981092962324328921406844694078635347625850330135239051380.593313827', '778437789780670221576981092962324328921406844694078635347625850330135239051380.5933138270296', 9, 3); + T('0', '-0.000000000000000000000670532931448014402320805028695397125747680104246730672291510758362070539', 0, 4); + T('-269860226.555168110686802', '-269860226.555168110686802406496811651255242690733933523277397815449890266344932488292555', 15, 6); + T('-0.00000000000000000000000000000000000001', '-0.00000000000000000000000000000000000000000000001', 38, 3); + T('8255334830426368087757667915495316773111372', '8255334830426368087757667915495316773111372', 20, 4); + T('-498.288', '-498.2877551595647284860735236925190739383420573843285964682707105606057458671350918750993', 3, 6); + T('90275906866311700418329778663.453021601770244972374', '90275906866311700418329778663.4530216017702449723738726140283616676480577425596798642530312', 21, 4); + T('-58249061380532235.683643040770210682572744295', '-58249061380532235.68364304077021068257274429468', 27, 4); + T('-0.00000000000000000005874732963', '-0.00000000000000000005874732963903011696675103873912247327240795349388835921', 29, 1); + T('-0.00000000000000000000000891849846684592', '-0.00000000000000000000000891849846684592', 39, 0); + T('-317305030488680572949072951462138920358812787719661772458316652068525445', '-317305030488680572949072951462138920358812787719661772458316652068525445', 58, 0); + T('154344118085858988045736881532862450933453810805000737193200.8311028461495237875501818767647353', '154344118085858988045736881532862450933453810805000737193200.8311028461495237875501818767647353', 34, 0); + T('-0.00000000000000000006151217562036449', '-0.00000000000000000006151217562036449913306415978013249544', 35, 2); + T('0.00000000000000000000000000000000000000635481634', '0.000000000000000000000000000000000000006354816333226622007293085007542785238974690455300658', 47, 0); + T('-72104134714968004316834628241028266449839170680955147176037571084261', '-72104134714968004316834628241028266449839170680955147176037571084261', 54, 6); + T('449011810931249785286308861907624', '449011810931249785286308861907624', 8, 0); + T('-5344557217.952340951684183652094', '-5344557217.9523409516841836520936077337920245188603000165', 21, 0); + T('26763304918.6071132280297527249552897014', '26763304918.607113228029752724955289701414261410830249608167321604531533418376564217', 28, 5); + T('-5.9354', '-5.935401329955359917419849571921209501551', 4, 2); + T('0.0000000000000002842770147295499709278', '0.000000000000000284277014729549970927748689066908625707440474139245449815727102349121121703585184', 37, 2); + T('-0.00000006536334906818', '-0.00000006536334906818007245367103563161239', 21, 1); + T('3987294744.961449803344679269558748056110724042180299042772', '3987294744.961449803344679269558748056110724042180299042771934156686853', 48, 0); + T('3670550979301523677411452367600923241928927', '3670550979301523677411452367600923241928927', 16, 6); + T('8186460244315446238612369289', '8186460244315446238612369289', 14, 5); + T('0.0000000000001205038039008310782739771735999409', '0.0000000000001205038039008310782739771735999408450010198815947147909379151151097718078660678', 46, 2); + T('17790773861566.9127491793774523928', '17790773861566.9127491793774523927742086885', 19, 6); + T('-45973691512980904832772447657128646184729588347720906399317356124291', '-45973691512980904832772447657128646184729588347720906399317356124291', 6, 0); + T('-0.000052578846594552360365003261412', '-0.00005257884659455236036500326141292751072228323274374276273184032573733734930586182920538869496014', 33, 1); + T('-8451030.38187527151851343992271353120147534273330863994132400507052', '-8451030.38187527151851343992271353120147534273330863994132400507052', 59, 5); + T('-6913729808236204745703016735366143142854267317875', '-6913729808236204745703016735366143142854267317875', 48, 6); + T('0', '-0.000000000000000000515816546619846222740519650659244354', 14, 1); + T('-0.0000000000000000000000000059770244313969237968717', '-0.0000000000000000000000000059770244313969237968717414549698422124221759010405670994', 49, 2); + T('727784599805850866261167964.5891386990587296184', '727784599805850866261167964.5891386990587296183810717', 19, 0); + T('60455336921761571297330062708834209593753553971798623628973754356', '60455336921761571297330062708834209593753553971798623628973754356', 34, 5); + T('0', '-0.00000000000000000000000000000000000000000000002', 14, 2); + T('-0.1', '-0.0000000000000000000000000000000000000000268246264078205', 1, 3); + T('7867937945277457921518274222617202749835981396620016683948282927454552756', '7867937945277457921518274222617202749835981396620016683948282927454552756', 45, 5); + T('10798101545970440531103848', '10798101545970440531103848', 17, 5); + T('-662862030859665015252209082020387338342609', '-662862030859665015252209082020387338342609', 41, 6); + T('-44509783950769310032819987921393220034667288606302636', '-44509783950769310032819987921393220034667288606302636', 10, 2); + T('0.000721', '0.000721015686405377087216290192146931451368869346018108792313779', 7, 3); + T('-429429431898.92798147529486', '-429429431898.9279814752948602', 15, 5); + T('0.000000000001', '0.00000000000000000000004107', 12, 0); + T('-1523647444816999427298977167480522782325629813153844', '-1523647444816999427298977167480522782325629813153844', 27, 0); + T('159233142565064172480281097992202157794955635367088722816913405230709', '159233142565064172480281097992202157794955635367088722816913405230709', 52, 3); + T('17734356336750552208117881', '17734356336750552208117881', 13, 3); + T('0.00000000000000000010516440931', '0.000000000000000000105164409309278409833867961542984330406756444964971586826869142', 29, 0); + T('-0.000000005607865232286053212511', '-0.0000000056078652322860532125106865502282497985819996577284499049194079530138833114274376005211', 30, 5); + T('-1848824671208162.036118636322531620559621761039257152', '-1848824671208162.0361186363225316205596217610392571519859349877420578173659325511361795', 36, 6); + T('474121748.258771413359324788', '474121748.258771413359324788219351236297274357376611118786304644016953198682051204228387618', 18, 5); + T('0', '0.000000000000000000000000000000000000002', 9, 6); + T('-4082518153742954140701880216101112933681579', '-4082518153742954140701880216101112933681579', 2, 6); + T('485561797431709913', '485561797431709913', 8, 5); + T('-0.00000005169583157473170767787', '-0.000000051695831574731707677872752277227315759207157035374591647416039798341232', 29, 5); + T('-31444130984617191013282867777267050079417810443829', '-31444130984617191013282867777267050079417810443829', 43, 3); + T('8800583786371595440869107', '8800583786371595440869107', 4, 6); + T('-8815.8895192223252405825465547234263054813143616472980391', '-8815.889519222325240582546554723426305481314361647298039143773292329917612441361288012832403085661674', 52, 4); + T('24193532123207943347431137579390758056362200617916927652557', '24193532123207943347431137579390758056362200617916927652557', 8, 6); + T('-1.337926538823846889672640236908474426590700086', '-1.3379265388238468896726402369084744265907000856185156132950540139555844532982184035787153238', 45, 4); + T('1558843239.299544313206143220207974', '1558843239.299544313206143220207974153124813171090852680122860660088788288026393496', 24, 3); + T('-59589972311323891941872406112978568670975162132927304.08231126490356', '-59589972311323891941872406112978568670975162132927304.08231126490356049195534195298897388522', 15, 1); + T('-743294747766629171048480641662764189036069326862056657538375964541286934', '-743294747766629171048480641662764189036069326862056657538375964541286934', 5, 4); + T('22265', '22265', 3, 4); + T('960209483951475422891115334433638881085096.26588580775357747606657536401221311373248396571', '960209483951475422891115334433638881085096.265885807753577476066575364012213113732483965707', 47, 0); + T('44550253.862798116411937890173846464380254722540077', '44550253.862798116411937890173846464380254722540076612180961686217459396341111804577388882586249791', 42, 6); + T('43402590248081760572362131719223.753209477296474800070796246196620361', '43402590248081760572362131719223.753209477296474800070796246196620360891', 36, 2); + T('23302193755473927447547.0400871612708276023203865329170219302115999767999', '23302193755473927447547.0400871612708276023203865329170219302115999767999489', 49, 4); + T('0.00000000000000000000000809577123038853204379', '0.0000000000000000000000080957712303885320437905131515608754123689963443056574402556634345', 44, 4); + T('5757764236108545477867413983', '5757764236108545477867413983', 19, 3); + T('0.0000000000000000000000000000000000000009', '0.0000000000000000000000000000000000000009', 40, 0); + T('3559280912885112533280423534223324103634509100163633301839596057', '3559280912885112533280423534223324103634509100163633301839596057', 59, 1); + T('-417080158865542582854655944868550771791.046398310335547707041055645769929951581637541553712', '-417080158865542582854655944868550771791.04639831033554770704105564576992995158163754155371200816', 52, 6); + T('89983719097904808464', '89983719097904808464', 1, 4); + T('-735429992378182205630619451123590.3947291140982175810651340488182275175', '-735429992378182205630619451123590.394729114098217581065134048818227517476', 37, 6); + T('419077969568256244823720087754694848763408887642073576695421791', '419077969568256244823720087754694848763408887642073576695421791', 36, 1); + T('191461.889031503960878427762073940304873639', '191461.88903150396087842776207394030487363817696768685154419315097935845754622181742599271', 36, 2); + T('-0.00000000000000000000062342', '-0.000000000000000000000623414', 26, 3); + T('127194045893446729075351171047', '127194045893446729075351171047', 21, 0); + T('-229500965923850.70051429223116003250968598721393599828363661825696333', '-229500965923850.700514292231160032509685987213935998283636618256963339786490679495749782904303115', 53, 1); + T('-0.0000000000000000001', '-0.0000000000000000000056041231775239402844541555853241836954476161592639531971958216635667906218', 19, 3); + T('0', '-0.00000000000000000000000000000000000000000000000037582095633137036754003160897330055440194309661', 35, 5); + T('3374255136237325085491942038388147404432627458905669250744778', '3374255136237325085491942038388147404432627458905669250744778', 45, 0); + T('7690224951153160774526032743679621', '7690224951153160774526032743679621', 33, 6); + T('0.00000000000000000000000000000000017074840686264748628337821', '0.000000000000000000000000000000000170748406862647486283378213576419477915575', 59, 5); + T('-0.00000000004637857649826847069795159309827675', '-0.000000000046378576498268470697951593098276745844317758', 44, 5); + T('0.00017652709951498133638383919005461463529305123', '0.000176527099514981336383839190054614635293051230467643495742837724131', 47, 1); + T('0', '-0.000000000000000000000000000000000000000000000112634125418', 33, 4); + T('723368046640065130294742958718721773826602583088486440698866940503225379031577817', '723368046640065130294742958718721773826602583088486440698866940503225379031577817', 51, 4); + T('-50933665584184852038671079863303718636397390288718740018317103418.102', '-50933665584184852038671079863303718636397390288718740018317103418.102293292287286568351413551802', 3, 5); + T('-2410200702497', '-2410200702497', 11, 1); + T('0', '0.0000000000000000000000000000000000000000000042239344371306878587914753063390073941', 34, 4); + T('-0.00000000000000000000000000000000000000000000001', '-0.0000000000000000000000000000000000000000000000000575180898854911', 47, 0); + T('0.000000000000000004344458301', '0.000000000000000004344458300844696324', 27, 5); + T('36415144993270477751194428581026117927500927.44375086964836279651713', '36415144993270477751194428581026117927500927.443750869648362796517124098901167909583083796664632', 23, 0); + T('5334215483112576666595260269852476258881', '5334215483112576666595260269852476258881', 11, 2); + T('3572677626411797212153520390351.131380872979421133958812687842550117369', '3572677626411797212153520390351.131380872979421133958812687842550117369055722382', 40, 1); + T('0', '-0.000000000317959455183002008629386273613319488458668668911799807504500387889375132126574196359', 2, 1); + T('0', '0.00000000000000000000000000508716881203357016907853303274028327363526105723619349316', 9, 5); + T('0', '0.00000000000000000000000000000000000000000000007059146600634404411', 2, 6); + T('0.00000000000000000008044178973467803785', '0.000000000000000000080441789734678037845949859474890695888', 38, 5); + T('0.00055142638660941844622938085879706786353818237626618', '0.0005514263866094184462293808587970678635381823762661734377953648597433', 53, 0); + T('-17599444586797881418318563414502812139457', '-17599444586797881418318563414502812139457', 29, 1); + T('1134429695712029417607873744122149717054918253194205124127', '1134429695712029417607873744122149717054918253194205124127', 56, 5); + T('0', '-0.0000000000000000000000000000032833397936417991775542735318772256', 18, 4); + T('-0.00000000000082748682928206867048022608063733', '-0.00000000000082748682928206867048022608063733', 44, 0); + T('-892190137424331421784517600329772157761277945477908134895153411935646898622686045781365887203805522', '-892190137424331421784517600329772157761277945477908134895153411935646898622686045781365887203805522', 21, 2); + T('-57225378653330495581042999105043387285455715448557023450921912.731', '-57225378653330495581042999105043387285455715448557023450921912.730815794217451434674350759', 3, 3); + T('88944978837600241675413451540.41662447490467530719484465416514', '88944978837600241675413451540.41662447490467530719484465416513364729285517299279519760671836409', 32, 0); + T('-0.00566575519125872879638699056271355696758097', '-0.00566575519125872879638699056271355696758097875409951260368210651006', 44, 1); + T('52101710101744937632626526544984055.2507495489669041508372470444630234511783474876012526', '52101710101744937632626526544984055.25074954896690415083724704446302345117834748760125260024', 54, 6); + T('25552542841746347884157299301699166856285838610487.074735318379', '25552542841746347884157299301699166856285838610487.074735318379', 13, 4); + T('0', '-0.00000000000000000000000008442227169', 0, 5); + T('0', '-0.000000000000000000000000000000000000000000000024981374014605917033767473869314720387745536', 7, 2); + T('-480402927391768064318296499265102782166804733100958844081491000.164525046348783775063556224', '-480402927391768064318296499265102782166804733100958844081491000.16452504634878377506355622448905', 27, 6); + T('-83963278511727947.84244986971165729356', '-83963278511727947.8424498697116572935579418275332796753821475270524', 20, 3); + T('905516486335617027566122447589928241315669260318', '905516486335617027566122447589928241315669260318', 35, 4); + T('6552963687555211427868764317.90444524', '6552963687555211427868764317.90444524617', 8, 1); + T('-0.0000000000000000000000000000000000000296558323', '-0.0000000000000000000000000000000000000296558322254714710784144978368282230551424514', 46, 0); + T('71233459565941813768643527698052038451814432324674330534.182221666', '71233459565941813768643527698052038451814432324674330534.182221665956151724061357615822583899564696', 9, 0); + T('-0.000000000000000000000000000000000000000007692392', '-0.000000000000000000000000000000000000000007692392232033940021796786860993673', 48, 2); + T('0.0000004142741301072051705173415526', '0.000000414274130107205170517341552625080742', 34, 4); + T('0.00000000000000000000000000000049', '0.0000000000000000000000000000004844225578184253767706840696504802592', 32, 0); + T('0', '0.00000000000000000000000000000000000000000000586004362384730418793774932852260308', 42, 5); + T('0.000000000000000000000000000000000057244859768', '0.000000000000000000000000000000000057244859768035439766499099449028148846', 45, 5); + T('-827141688560282316577471043529435271414984', '-827141688560282316577471043529435271414984', 27, 2); + T('-368402916220866.36823893036045234503764', '-368402916220866.36823893036045234503764172264459272073949130478550198453350142034438121269721972', 23, 5); + T('9103003038081670721316405', '9103003038081670721316405', 18, 6); + T('-7852165677474979.5938719858816080949974229232217347241', '-7852165677474979.59387198588160809499742292322173472401655014999447181095216397', 37, 0); + T('-6715185377564.74139538353174075359773259963669721907215595224', '-6715185377564.7413953835317407535977325996366972190721559522323030678428100131570087002950444421', 47, 0); + T('1706349694.76350749557800040706127419362257045545428491995', '1706349694.763507495578000407061274193622570455454284919951774181697932220714269', 47, 4); + T('78588826016299437743619705479876210302676979259827058565445', '78588826016299437743619705479876210302676979259827058565445', 30, 4); + T('0.000000000001', '0.000000000000000000001', 12, 2); + T('-2589582973458706776296834369656361634439983', '-2589582973458706776296834369656361634439983', 39, 0); + T('1743441368337597162867911.2951052396023395109004737465489', '1743441368337597162867911.29510523960233951090047374654895392832378911231920027143594963', 31, 3); + T('-73199678471', '-73199678471', 3, 0); + T('0', '0.00000000000000000000000000000000000000000003', 40, 1); + T('0.0000000000000000000000000000000004667447051117350698', '0.000000000000000000000000000000000466744705111735069864674296158720400075859650953', 52, 3); + T('-0.000000000007594399656167355193566547921', '-0.0000000000075943996561673551935665479215549769984862601569756133629823648103539458', 39, 2); + T('3.1652680597256250889013415555546409571597090799265', '3.1652680597256250889013415555546409571597090799264826416835791052587978940383354082674008433382', 49, 5); + T('50502759777095272980458734330295487385.5034260436783855', '50502759777095272980458734330295487385.5034260436783854754464126887951593337', 16, 2); + T('-349476928883536309320539866916636955806193888951300354548141473494386', '-349476928883536309320539866916636955806193888951300354548141473494386', 55, 1); + T('841906075761357751506861189609878618918101934357106', '841906075761357751506861189609878618918101934357106', 25, 3); + T('-59181751544129813715475076424907785097207348427962139893929324499', '-59181751544129813715475076424907785097207348427962139893929324499', 35, 2); + T('-1521196888137155531754333457458022000831356615', '-1521196888137155531754333457458022000831356615', 41, 3); + T('0', '-0.000000000000000000000000000000000000009', 8, 4); + T('-8289795629.1717218118944', '-8289795629.171721811894356069463885446122', 13, 0); + T('-0.000000000000223889609679829899532021178692653007372269973', '-0.0000000000002238896096798298995320211786926530073722699726206380829817413519982043525', 57, 6); + T('-7258143388738798481910452159781024994720650112469214442658774256937667959953614727386289', '-7258143388738798481910452159781024994720650112469214442658774256937667959953614727386289', 22, 2); + T('-359558549295372353924483405244841350664470.360298499922130388371586275901555831355657233897572726855', '-359558549295372353924483405244841350664470.360298499922130388371586275901555831355657233897572726855', 58, 1); + T('-0.000000000000000000000000000000000000000000237870554', '-0.0000000000000000000000000000000000000000002378705539415969705231398235316441614230302', 52, 0); + T('0.2393241059673690394127252863371489989987293405009221276', '0.2393241059673690394127252863371489989987293405009221275481644601266835423187167949827392', 55, 0); + T('-689590028428083520425141553232150041665855900447213740339177308861649878', '-689590028428083520425141553232150041665855900447213740339177308861649878', 18, 0); + T('0.000000078110011766889375023084610838180269', '0.0000000781100117668893750230846108381802696891356733714996828302', 42, 1); + T('-0.0000000739636485110881770771812970480784085432490937791404', '-0.000000073963648511088177077181297048078408543249093779140448174989076410926', 58, 6); + T('839622336342426602772908498745047009924846092679316564429', '839622336342426602772908498745047009924846092679316564429', 57, 6); + T('-0.0000000000000000000004456538488579841701862456826545336942', '-0.00000000000000000000044565384885798417018624568265453369416231186707532116823535364936', 58, 5); + T('5457344694848495013.70758306793373443062303840408774687096091471', '5457344694848495013.70758306793373443062303840408774687096091470997296538132975451', 45, 6); + T('278810146198025452859993052541559705412200658428450141592249279860660994', '278810146198025452859993052541559705412200658428450141592249279860660994', 53, 6); + T('-0.0000000000000000000000000000001', '-0.0000000000000000000000000000000008', 31, 0); + T('0.00000003870782543245692370508', '0.000000038707825432456923705079513311568', 29, 2); + T('0.00000000000000028905839185125858911474408672313456633629', '0.00000000000000028905839185125858911474408672313456633629272919468390905836955324418317503957', 56, 4); + T('-51357247691860499903562435980838.792767', '-51357247691860499903562435980838.79276727924860634529292348327', 6, 4); + T('36984058670396140.944950463552746216537895105829140616432610621131124', '36984058670396140.9449504635527462165378951058291406164326106211311240265980364777353', 52, 3); + T('4324247714235544003727336020912959171914181632133', '4324247714235544003727336020912959171914181632133', 26, 1); + T('-0.0000000000000000000000000000000000000000000000008937166', '-0.0000000000000000000000000000000000000000000000008937166', 55, 1); + T('-2442300682026632859154542947848984516683026198562824', '-2442300682026632859154542947848984516683026198562824', 31, 6); + T('0.0000000000000000000040559', '0.000000000000000000004055940890427693898528647800483601', 25, 4); + T('-0.0000000000000000000000000000000000000000000000005', '-0.000000000000000000000000000000000000000000000000533883534094325559019527373422252174198', 49, 1); + T('-601022544723155145451207670010213497437.14164798', '-601022544723155145451207670010213497437.1416479757860807842495953660628318061595534', 8, 6); + T('70433022521741511411711454.3981934256304734737098098', '70433022521741511411711454.398193425630473473709809802903058576643802930136306958583', 26, 6); + T('10908799783188529757366993500335', '10908799783188529757366993500335', 21, 3); + T('87532.4007713298943414092792987798224322373504067', '87532.400771329894341409279298779822432237350406676898594464428537143159348548268047779886855749206', 43, 0); + T('-0.519371276718530514624846800754582116141529266132757', '-0.5193712767185305146248468007545821161415292661327570320784267894852821486214528653', 51, 1); + T('9843596527442895375096439245255836073.70931062242142483683526808', '9843596527442895375096439245255836073.70931062242142483683526807533268520820713372314', 26, 0); + T('0.001', '0.0000000000000058501267284656327224026025031332724569171393523546241494751676984130276', 3, 2); + T('88204244847517941308668679833512765096788828649032102210342660386515548133512234443', '88204244847517941308668679833512765096788828649032102210342660386515548133512234443', 9, 2); + T('-72474655403865728422919', '-72474655403865728422919', 25, 2); + T('-64978799280092373.2357486192905225486909493417592884977935811274', '-64978799280092373.23574861929052254869094934175928849779358112736784', 46, 3); + T('-3900549976428555791621079898632755518751734773176044166588963', '-3900549976428555791621079898632755518751734773176044166588963', 45, 5); + T('-0.000000000000000000000000000082479', '-0.00000000000000000000000000008247901689204830195155306799530867952682774163311949867', 34, 6); + T('0', '0.0000000000000000000000000338254327291878442621187444947666248001402914296565659898518000736', 11, 3); + T('-0.00000000223134', '-0.000000002231341114998828837864161402405342720671858261823364908867', 14, 6); + + // rounding mode 7 + T('-4227925468727766007369594003870427.86133603669917314695806481136062429', '-4227925468727766007369594003870427.86133603669917314695806481136062429149585050333617751', 35, 7); + T('0.00000000000000002542497815049223865530599542', '0.000000000000000025424978150492238655305995417803361817364414794153572487661433133', 44, 7); + T('-52231667.228724632', '-52231667.22872463243810129366255', 9, 7); + T('34077267364474763.91234860081333406989016992096282251', '34077267364474763.9123486008133340698901699209628225111620410327006274894046060867566994460704', 35, 7); + T('5856401617744968221752230029308.1679768661242918708685642495558141063641674034', '5856401617744968221752230029308.167976866124291870868564249555814106364167403351653', 46, 7); + T('23796511434278450866104444583677797487678290864898492636634411901159527', '23796511434278450866104444583677797487678290864898492636634411901159527', 49, 7); + T('0', '-0.00000000000000000001622749974913381', 8, 7); + T('63101238791571926526656526888', '63101238791571926526656526888', 26, 7); + T('119975362395419219788856351528506147606875253314643205183185766', '119975362395419219788856351528506147606875253314643205183185766', 37, 7); + T('0.00000000000000028638823981166558781214435', '0.0000000000000002863882398116655878121443495241084176650123383124435451', 41, 7); + T('0', '-0.0000000000000646493344101476775', 4, 7); + T('3727665898156798714702225969249372097434686068956916500942749774019588426536', '3727665898156798714702225969249372097434686068956916500942749774019588426536', 55, 7); + T('409593411642458946972739997054469022719146.491026', '409593411642458946972739997054469022719146.491025521359231357', 6, 7); + T('13404825779782337.686240571775407373089634963', '13404825779782337.686240571775407373089634962567081893468942784631003987766301470481820407103286888', 27, 7); + T('661581721939770480643', '661581721939770480643', 0, 7); + T('82201282103354391377948704606454107732823853693730778633', '82201282103354391377948704606454107732823853693730778632.679770307020989736730343202980605582', 0, 7); + T('188489334274192797369124659824920031586552510451', '188489334274192797369124659824920031586552510451', 20, 7); + T('-350373000061738168422367720730846856693416103657170981784.47171168192426', '-350373000061738168422367720730846856693416103657170981784.47171168192426', 14, 7); + T('-371822329041221965657417973472237384192854529035779701345758861333.911', '-371822329041221965657417973472237384192854529035779701345758861333.91125259284165', 3, 7); + T('11390.30218059', '11390.3021805893183128284582351157607918846791695198255651493155092893025770778456684', 8, 7); + T('31051565651391', '31051565651391', 10, 7); + T('3381673772647503796291366133103', '3381673772647503796291366133103', 24, 7); + T('543390727353666255169063924082693597248278069190643870027', '543390727353666255169063924082693597248278069190643870027', 55, 7); + T('799421038004579749157298710029180393', '799421038004579749157298710029180393', 9, 7); + T('-0.0362677922831722959112878701030537328697742', '-0.036267792283172295911287870103053732869774154760781501898753153437796985370382553866', 43, 7); + T('-0.00000000000000048840974104900508184409730782', '-0.00000000000000048840974104900508184409730782', 44, 7); + T('90721186387234427125851848111061056765611723546', '90721186387234427125851848111061056765611723546', 39, 7); + T('0.00000000000478987425349763447387328875752791010733067', '0.0000000000047898742534976344738732887575279101073306690331160727348729434112548998768887148899', 53, 7); + T('15590509654436423421185143897507920201916474372180041409856165500105', '15590509654436423421185143897507920201916474372180041409856165500105', 30, 7); + T('20.749566685219600998729078427300664316775', '20.7495666852196009987290784273006643167750133692770467181607553093280822', 39, 7); + T('-0.000053459060231372', '-0.00005345906023137227399335260530503765672935', 18, 7); + T('-0.0000000003951749339568017915631', '-0.000000000395174933956801791563099248827925205492855063788550039874086544657303197463564591312', 32, 7); + T('8679339310554212663278369614448693.5454104727306164118703439386963341', '8679339310554212663278369614448693.545410472730616411870343938696334073', 34, 7); + T('33955284728592200348127638127333126188369126163765426829286263844316', '33955284728592200348127638127333126188369126163765426829286263844316', 58, 7); + T('-594503494522354581672092284773632917525938683919588064506930195373570676846343387.84', '-594503494522354581672092284773632917525938683919588064506930195373570676846343387.8422460203946', 2, 7); + T('-0.000000000039360661299713', '-0.000000000039360661299713264121639691847249043522176561382860930019972250155868911494243265848', 24, 7); + T('772954079526310860071529507548873740833690851501083576478349475089452727853278468874693', '772954079526310860071529507548873740833690851501083576478349475089452727853278468874693', 43, 7); + T('0.0000000000000087453797413879451313', '0.000000000000008745379741387945131324297953447', 34, 7); + T('5367560449328479105254540606212332013053671843660775766151', '5367560449328479105254540606212332013053671843660775766151', 48, 7); + T('323195274385200326456762447968768', '323195274385200326456762447968768', 32, 7); + T('-0.00666873745951635736846493280695487641727423448', '-0.00666873745951635736846493280695487641727423447512328693008180656151418503780844889026', 47, 7); + T('-7926588167337833445785869654809557874339194445079754658952051495268464651', '-7926588167337833445785869654809557874339194445079754658952051495268464651', 52, 7); + T('773169576814793176793181528896362236450108', '773169576814793176793181528896362236450108', 30, 7); + T('-8.1575381767765005493134495350395', '-8.15753817677650054931344953503948694358980563360390907469324255712308578813630240549552277566', 31, 7); + T('-21.0687436857970456', '-21.068743685797045585476881980189937156684', 16, 7); + T('170893057097642104712842895333915433672.71614098604436028244004249890377265867813183634', '170893057097642104712842895333915433672.71614098604436028244004249890377265867813183634', 48, 7); + T('1419314989888991829914000521', '1419314989888991829914000521', 27, 7); + T('60.82455319459720635738568680187', '60.82455319459720635738568680186527959160858773466033409815105410886097854659665276583589', 29, 7); + T('-326121410879335855857666649461844584751.890652900789444294337811561299374410085', '-326121410879335855857666649461844584751.8906529007894442943378115612993744100850340106799465', 39, 7); + T('0', '-0.00000000047316992670949883926600553413571239606520662308124419529296046257305486386553', 9, 7); + T('8727742090301337651614326326111889945767014507', '8727742090301337651614326326111889945767014507', 7, 7); + T('-53786060748605241244291153266999830828105314220961448804386112379126610916027104677231615675462', '-53786060748605241244291153266999830828105314220961448804386112379126610916027104677231615675462', 41, 7); + T('-7291471902884803069229597050854712688481', '-7291471902884803069229597050854712688481', 38, 7); + T('847593479', '847593479', 4, 7); + T('1373363663030811404110606699087734488483568208061113004937904474604557886571038', '1373363663030811404110606699087734488483568208061113004937904474604557886571038', 51, 7); + T('-40747376548681307346900781782230386637811935441.3112009014674226146734340597796810731578811', '-40747376548681307346900781782230386637811935441.31120090146742261467343405977968107315788114674885', 43, 7); + T('-9195689298211729379676090128793323261891000554', '-9195689298211729379676090128793323261891000554', 35, 7); + T('-0.0034576620308478723296001292094731200618886', '-0.0034576620308478723296001292094731200618885915140945281', 43, 7); + T('-834830377500140623938088', '-834830377500140623938088', 13, 7); + T('-2591671475562784513632.7426072061600211', '-2591671475562784513632.7426072061600211449224236386965047917900134074059687266614653350608538539233', 16, 7); + T('-0.000000071830212114487276777707572429272192915812377', '-0.00000007183021211448727677770757242927219291581237659932896988676370766529', 51, 7); + T('-640413896696784439726742018298253474508645956359', '-640413896696784439726742018298253474508645956359', 17, 7); + T('-0.0000000007984874929607838512528277745379438139977', '-0.0000000007984874929607838512528277745379438139976936507024', 49, 7); + T('-191366559030669593366830590135909135496110802292432471355483754482684086882649187.03963614483', '-191366559030669593366830590135909135496110802292432471355483754482684086882649187.039636144827732224', 11, 7); + T('8142815084790919737688042342962162664546160121642099901931307232971548145567222', '8142815084790919737688042342962162664546160121642099901931307232971548145567222', 39, 7); + T('-332782287617659420418475853661', '-332782287617659420418475853661', 8, 7); + T('0.000000000000000090055750282893', '0.000000000000000090055750282893334403507', 30, 7); + T('-21214000845.333611178419231112230625322747176660692', '-21214000845.3336111784192311122306253227471766606919954698312144738447328491967907213627789511', 41, 7); + T('-3308503261988645767218602554122821282075149204084296957091595953533605', '-3308503261988645767218602554122821282075149204084296957091595953533605', 50, 7); + T('0.0000000000148313954826', '0.000000000014831395482560045753365765821761099871603901006599292947641903057294622382', 22, 7); + T('-2540286161517932530549634211256175558471.6859862264011445254812864800971', '-2540286161517932530549634211256175558471.685986226401144525481286480097095411420704429841593275576', 32, 7); + T('53072382348521019562214270117475451722847127807.9201176137241464512', '53072382348521019562214270117475451722847127807.920117613724146451247168428976198', 19, 7); + T('254629197539322919418061.82042110551640609842973441', '254629197539322919418061.8204211055164060984297344124295121369080688739190169652019849566879168623229', 26, 7); + T('-0.000000000000000078419972351846537383122302261056', '-0.0000000000000000784199723518465373831223022610558577146950907022375450619', 48, 7); + T('11595408011.00123572', '11595408011.001235716255147528059507314235781168368767750180889928736025154811960130245171531056', 8, 7); + T('-88737685279585592831151984911995996', '-88737685279585592831151984911995996', 34, 7); + T('-37552253678559041341461701227356.158965', '-37552253678559041341461701227356.15896541954380463879908913349547402024', 6, 7); + T('9003148188594382524113049819941839640533061131950519887235499386135779479186433401692', '9003148188594382524113049819941839640533061131950519887235499386135779479186433401692', 28, 7); + T('5361439166674927508874087692620586593056959', '5361439166674927508874087692620586593056959', 27, 7); + T('0.000000000091', '0.00000000009088521688422520393209050649016376675636278197884083029252', 12, 7); + T('-85657245717942136252098076569728416271774563165859', '-85657245717942136252098076569728416271774563165859', 43, 7); + T('-3646212560971909.35373247444', '-3646212560971909.3537324744426713329988288580585598165569188254140994718', 11, 7); + T('370765.6513425131872580849719776983168312523', '370765.651342513187258084971977698316831252349262543626', 37, 7); + T('-0.000000000000000000079137759978805203671743111106', '-0.00000000000000000007913775997880520367174311110627', 48, 7); + T('-1611465593139807523207984983928164779476993618071493833576191', '-1611465593139807523207984983928164779476993618071493833576191', 54, 7); + T('-0.00000000033726114', '-0.000000000337261144121803302303977879693673326581217799', 17, 7); + T('-6903218163', '-6903218163', 0, 7); + T('-7394201623023154', '-7394201623023154', 6, 7); + T('-89820218178368462032325999901068153419219023209648734123533475637571406377255460273403483', '-89820218178368462032325999901068153419219023209648734123533475637571406377255460273403483', 56, 7); + T('6856221590550350247215669709857430594517289.154687344282048067223977700265786705429299', '6856221590550350247215669709857430594517289.1546873442820480672239777002657867054292985437290849', 42, 7); + T('1713217233116965517209765946255483359142721898296301440743911736', '1713217233116965517209765946255483359142721898296301440743911736', 49, 7); + T('-61567856267375488815199698038892', '-61567856267375488815199698038892', 31, 7); + T('34856837444274112573644196165166306557489218761519232806183215580575570476', '34856837444274112573644196165166306557489218761519232806183215580575570476', 19, 7); + T('-605776974882763519', '-605776974882763519', 13, 7); + T('-47418341187456097944575634049467431694845063678', '-47418341187456097944575634049467431694845063678', 18, 7); + T('1585.955173007361693854365', '1585.95517300736169385436496480295446937143592132714724734106024847451264683205302947963649', 21, 7); + T('-0.000000000645133213415476611350444263216682276825945168', '-0.0000000006451332134154766113504442632166822768259451679249815370738204997714034783482', 54, 7); + T('8302757044275405219378536899241030582612132769226851500125963466033484914477.69666886019', '8302757044275405219378536899241030582612132769226851500125963466033484914477.6966688601893948', 11, 7); + T('45270612179603070143114444578079928392447807.32', '45270612179603070143114444578079928392447807.31953', 3, 7); + T('7301116759454965528151147816987787832077100563626120303568921', '7301116759454965528151147816987787832077100563626120303568921', 44, 7); + T('1347.918925815662323176162011734192369953734988907893741421192', '1347.9189258156623231761620117341923699537349889078937414211917111615784661239064', 57, 7); + T('2745551364781081262572434756', '2745551364781081262572434756', 25, 7); + T('-0.0000000000000000007702847033377973269515', '-0.0000000000000000007702847033377973269514520366', 40, 7); + T('-779091641487404784136567.4569597590049318948543232527454505450307', '-779091641487404784136567.4569597590049318948543232527454505450306884403', 40, 7); + T('0.0000000000000000454', '0.000000000000000045425771078016534055033094636873778207765101376805036792267244437277308175', 19, 7); + T('56037886202598118256341767914293907027232', '56037886202598118256341767914293907027232', 38, 7); + T('456832180283905827046262334942695632683335636856760196', '456832180283905827046262334942695632683335636856760196', 7, 7); + T('835408846081276629656740640207846703234335963484085602007567975275144', '835408846081276629656740640207846703234335963484085602007567975275144', 10, 7); + T('5892208545916340693141737610813531078984299948', '5892208545916340693141737610813531078984299948', 43, 7); + T('0.0000000000000000648486346789469454376605', '0.0000000000000000648486346789469454376604957149144419097073694775265833471038380610746092239', 41, 7); + T('262034975067781367618641670843831216012635510399715', '262034975067781367618641670843831216012635510399715', 48, 7); + T('0.0000000000001753084053965545624370536153934309', '0.0000000000001753084053965545624370536153934309', 46, 7); + T('322685018236508000449322148450559922708614699674162314336435015392855585932088', '322685018236508000449322148450559922708614699674162314336435015392855585932088', 6, 7); + T('-0.0000751245672641759875031068805293967164447087335563', '-0.00007512456726417598750310688052939671644470873355631128944237042822656', 52, 7); + T('119777479.69030463302136982513942340039304882524620509', '119777479.69030463302136982513942340039304882524620508857791460878231096405985356133971', 44, 7); + T('35553204237558471570629583797360426827090262465551670477505712708774604078722600420011', '35553204237558471570629583797360426827090262465551670477505712708774604078722600420011', 19, 7); + T('-291943404908366202882510361495002297845826668767795046772085261154931', '-291943404908366202882510361495002297845826668767795046772085261154931', 35, 7); + T('-4534915638090657787513612506781133713200439475.0867572558553302530492308505380074065078701', '-4534915638090657787513612506781133713200439475.086757255855330253049230850538007406507870065', 43, 7); + T('-4628007825261462798342072.911906258290433814410271477744026909511632016076', '-4628007825261462798342072.91190625829043381441027147774402690951163201607620251591', 48, 7); + T('4.4783487885384154042674977520386158763493723', '4.478348788538415404267497752038615876349372276082911556304299004285541926525363120311938399325', 43, 7); + T('994636826214072644153969326141', '994636826214072644153969326141', 15, 7); + T('-5505235444849638686149329852308536500811963484639683908157841253614298429625', '-5505235444849638686149329852308536500811963484639683908157841253614298429625', 4, 7); + T('614148606644556790188235.0255904986548346451861728211971653475326466503852137269737', '614148606644556790188235.0255904986548346451861728211971653475326466503852137269737', 59, 7); + T('2193724261100974203871998310680424123017389161396709538479', '2193724261100974203871998310680424123017389161396709538479', 57, 7); + T('-1956878070881025122270372.337521825043239627169969252259537214', '-1956878070881025122270372.337521825043239627169969252259537214113849107454904456961545052', 36, 7); + T('-0.000000085351', '-0.00000008535110476842370597384', 12, 7); + T('641105.998789180105078291507747673', '641105.9987891801050782915077476729519884908863536991235498773209022192197109739345514224', 27, 7); + T('-21.197585767523889474671349269775310955379095', '-21.197585767523889474671349269775310955379095140158', 42, 7); + T('116146.494005975894598315121282665834747215927459854167', '116146.49400597589459831512128266583474721592745985416695', 48, 7); + T('7485928.847855308413604360975395065166506118993796', '7485928.8478553084136043609753950651665061189937957371746846213016715624539634852', 42, 7); + T('6076054393834960260724553991126463655232706.998159020156971123267673392190851428162156', '6076054393834960260724553991126463655232706.9981590201569711232676733921908514281621564918', 42, 7); + T('-826178119212535027', '-826178119212535027', 15, 7); + T('-208338831092277473', '-208338831092277473', 6, 7); + T('69243933206144181076562868181368044771717426832955483549265453790367.885941195178679', '69243933206144181076562868181368044771717426832955483549265453790367.8859411951786792008', 15, 7); + T('-2967', '-2967', 4, 7); + T('-41501138725996819959124846804770912118526003045.185796167930212824055822', '-41501138725996819959124846804770912118526003045.185796167930212824055821995991', 25, 7); + T('-18057852043794248196575675918109156108791090767', '-18057852043794248196575675918109156108791090767', 20, 7); + T('281718409203896229312414254327976677356070865725930122957218157', '281718409203896229312414254327976677356070865725930122957218157', 58, 7); + T('-57791881810902060710765', '-57791881810902060710765', 6, 7); + T('897687437107677390019954648718257777584106700283464841488202716343791452515', '897687437107677390019954648718257777584106700283464841488202716343791452515', 15, 7); + T('-2074411348618460421873509155369584886131842509398520763333892604629272098166', '-2074411348618460421873509155369584886131842509398520763333892604629272098166', 56, 7); + T('6412163494823707737671130186405578927125993163390203934159490599840161448487', '6412163494823707737671130186405578927125993163390203934159490599840161448487', 38, 7); + T('2570935346175677196878', '2570935346175677196878', 9, 7); + T('2922237829561344881354422214117488.09791032403417844482040226257725168516472', '2922237829561344881354422214117488.0979103240341784448204022625772516851647155', 41, 7); + T('-360113314811150792166325832443', '-360113314811150792166325832443', 27, 7); + T('60014328059462865087436739179650691113359513', '60014328059462865087436739179650691113359513', 19, 7); + T('-0.000000000006304400685027434212478867369219111834780823862', '-0.000000000006304400685027434212478867369219111834780823862330243813719233306', 57, 7); + T('-7205740883575345558.3035609312', '-7205740883575345558.303560931199598', 12, 7); + T('53085840415323322403425172031495', '53085840415323322403425172031495', 13, 7); + T('501486.7129443291838593479218597548273888277689050437', '501486.71294432918385934792185975482738882776890504370426', 46, 7); + T('0.000000000000000908932850021752246249043079995293384916', '0.00000000000000090893285002175224624904307999529338491636808', 54, 7); + T('-0.00000000043256345933043079995692824366141', '-0.0000000004325634593304307999569282436614050910377417779512451575', 41, 7); + T('-57356950707173599793269435282846849386194446656814419867723389602143804102082390505', '-57356950707173599793269435282846849386194446656814419867723389602143804102082390505', 54, 7); + T('708838339642304601261089699220144910531439729426156936490112289', '708838339642304601261089699220144910531439729426156936490112289', 34, 7); + T('-0.0046078939476187', '-0.0046078939476187097406433991788939813592464396622249737415711345731', 16, 7); + T('-0.12323576577', '-0.123235765770465267088639292854754', 11, 7); + T('0.00000000000000000095580555623555550814768224905099', '0.00000000000000000095580555623555550814768224905099420276782483589081456723662215426756599134555', 50, 7); + T('-2570339352145966269634677761640260169032119', '-2570339352145966269634677761640260169032119', 28, 7); + T('38236133483427843764612112447', '38236133483427843764612112447', 15, 7); + T('-336931025688483976222819902541535', '-336931025688483976222819902541535', 4, 7); + T('-9131418940.626118397155251', '-9131418940.6261183971552511339709100767636897756353245436849948601735074456013276755274', 15, 7); + T('-0.5390546818595212848113530704801476758617232550071935366093', '-0.539054681859521284811353070480147675861723255007193536609276138828242044691640655011489223249255041', 58, 7); + T('-71416755738083832515056950347140525452730269982573.3282170765632710695719312', '-71416755738083832515056950347140525452730269982573.32821707656327106957193116691737786397252', 25, 7); + T('0.00000000000000000255991442876714392607715869138', '0.000000000000000002559914428767143926077158691380360601109197', 48, 7); + T('0.0008012312849268656243687029355101489200440567', '0.0008012312849268656243687029355101489200440566607892247', 46, 7); + T('244.1299004975136113934851571373', '244.129900497513611393485157137342367594', 28, 7); + T('8873145.130771366', '8873145.13077136613329539431464116435056918385440213780105794207728379404299861', 9, 7); + T('90421830817071276704486549442201016086558530905157803796367055646.90135601654869', '90421830817071276704486549442201016086558530905157803796367055646.90135601654868751923854163', 14, 7); + T('-36.526533442608873306192392', '-36.5265334426088733061923917926640502233384568457377017150304742119162081602297', 24, 7); + T('7756944055327836674900630471616647295.05850876072750123732246', '7756944055327836674900630471616647295.0585087607275012373224596', 23, 7); + T('0.000000000000045081619273154020727317734277869142539661', '0.0000000000000450816192731540207273177342778691425396607541', 54, 7); + T('-6657777084968602905612118294092900774663152', '-6657777084968602905612118294092900774663152', 43, 7); + T('-0.000000000000000005188433862917015864715902', '-0.0000000000000000051884338629170158647159019984830235182423', 42, 7); + T('0', '0.00000000000000000317', 15, 7); + T('-0.4149264099071581632611228387619456297727645178621012', '-0.414926409907158163261122838761945629772764517862101198886202115978635194007190868314555521133717701', 52, 7); + T('-6864484.8819017398097', '-6864484.88190173980971584504271598165', 13, 7); + T('-0.000000000000000001679161583143115920667389957545331', '-0.000000000000000001679161583143115920667389957545331037811592028938944353273214379643791129', 51, 7); + T('2757136.4258217552704766493458823230944375263657904360372', '2757136.4258217552704766493458823230944375263657904360372469', 49, 7); + T('73592128777516437498892', '73592128777516437498892', 16, 7); + T('0.07257197707618528010135723118752', '0.07257197707618528010135723118751971071518538894191478337895115762517662900499752291', 33, 7); + T('-0.000004438131', '-0.0000044381314450238844267302840448432030161991750345428173', 12, 7); + T('-595708298116615541357228353744113762188591036583833859568474759300695041038994506', '-595708298116615541357228353744113762188591036583833859568474759300695041038994506', 26, 7); + T('-199080228621514339171672812459767795971.316371238367118391139875956069', '-199080228621514339171672812459767795971.316371238367118391139875956069353409632336022093730932235', 30, 7); + T('373244977600891908151269122085847490535520152535249519596826077513', '373244977600891908151269122085847490535520152535249519596826077513', 29, 7); + T('-5639594880101200527887384823782946761462906320.140387160404385845875304739793220257', '-5639594880101200527887384823782946761462906320.140387160404385845875304739793220257', 36, 7); + T('-0.0000000000087947389416162510202344444769', '-0.000000000008794738941616251020234444476890906037567993523566767799162529587006731256066852047615', 40, 7); + T('-2811163289244542298.314552033404146359617103886433288499526162438312', '-2811163289244542298.314552033404146359617103886433288499526162438312107482463', 48, 7); + T('71312169853960180892335621188140367568370992911790488', '71312169853960180892335621188140367568370992911790488', 6, 7); + T('-62901173098.92897012666077517055378671774520634', '-62901173098.92897012666077517055378671774520634147', 35, 7); + T('-225945189426218018978712161605939563187347', '-225945189426218018978712161605939563187347', 43, 7); + T('0.00000000000007', '0.0000000000000670546442643248060364526003698781540676945356538481', 14, 7); + T('-80283941091068212735380828801414422106056308023', '-80283941091068212735380828801414422106056308023', 49, 7); + T('-582347756606942164157330806711292105702409851721143752567190054087620149322902471723806842', '-582347756606942164157330806711292105702409851721143752567190054087620149322902471723806842', 1, 7); + T('-789926098528886434848959110622484454631207369243255613772447578642734', '-789926098528886434848959110622484454631207369243255613772447578642734', 47, 7); + T('-635798687539890156072639669428587757239', '-635798687539890156072639669428587757239', 8, 7); + T('-772569903906438796789911092772836.040164878760556480065413195516497', '-772569903906438796789911092772836.0401648787605564800654131955164969017', 33, 7); + T('27480851396278530398639821633448999360391209592648305694853077032079.542019003323', '27480851396278530398639821633448999360391209592648305694853077032079.542019003323244917259654092', 12, 7); + T('-37187774977797692205929824486204948247323', '-37187774977797692205929824486204948247323', 8, 7); + T('-3066994074128464238846827107369679938251453783778612958797836976139626988170384146746054', '-3066994074128464238846827107369679938251453783778612958797836976139626988170384146746054', 25, 7); + T('1080460621508171861173510076169499142582659362076277316', '1080460621508171861173510076169499142582659362076277316', 26, 7); + + T('-815303438910393610000000000000000000000000000', '-815303438910393610000000000000000000000000000.5', 0, 7); + T('48079804879135055337410501154945563557501499846191760613365317572636043210233866737200001', '48079804879135055337410501154945563557501499846191760613365317572636043210233866737200000.5', 0, 7); + T('775141321458031580151353003447938403271713528287267233801607476638641728594600000000001', '775141321458031580151353003447938403271713528287267233801607476638641728594600000000000.5', 0, 7); + T('-3246099003639468003580507000000000000000000000000000000000000000000000000000000000000000000000000000', '-3246099003639468003580507000000000000000000000000000000000000000000000000000000000000000000000000000.5', 0, 7); + T('616052744557652711', '616052744557652710.5', 0, 7); + T('-47298707260000000000000000000000000000000', '-47298707260000000000000000000000000000000.5', 0, 7); + T('431370739475777039213491701837719630211035950221951900000000000000000001', '431370739475777039213491701837719630211035950221951900000000000000000000.5', 0, 7); + T('54683100000000000000000000000000000000000000000000000000000000000000000000000000000000000000001', '54683100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.5', 0, 7); + T('672783487870821678831521822264427999625400000000000000000000000000000000000000001', '672783487870821678831521822264427999625400000000000000000000000000000000000000000.5', 0, 7); + T('85750000000000000000000000000000000000000001', '85750000000000000000000000000000000000000000.5', 0, 7); + T('-357280726879877087440504485199000000000000000000000', '-357280726879877087440504485199000000000000000000000.5', 0, 7); + T('-4341299477000000000000000000000', '-4341299477000000000000000000000.5', 0, 7); + T('31902000001', '31902000000.5', 0, 7); + T('333458122140379389691720067000000000000000000000000000000000000000000001', '333458122140379389691720067000000000000000000000000000000000000000000000.5', 0, 7); + T('-459839025400000000000000000000', '-459839025400000000000000000000.5', 0, 7); + T('-82390000000000', '-82390000000000.5', 0, 7); + T('76701', '76700.5', 0, 7); + T('190430490057932227000000000000000000000000000000000000001', '190430490057932227000000000000000000000000000000000000000.5', 0, 7); + T('60159411740605592996051862591038032930184607684088677320000000000000000000000001', '60159411740605592996051862591038032930184607684088677320000000000000000000000000.5', 0, 7); + T('-2234900000', '-2234900000.5', 0, 7); + T('56189665877093832601689082910000000000000000000000000000000000000001', '56189665877093832601689082910000000000000000000000000000000000000000.5', 0, 7); + T('2320000000000000000000000000001', '2320000000000000000000000000000.5', 0, 7); + T('-6305981611547961162835048322675738149574948489012480000000000000', '-6305981611547961162835048322675738149574948489012480000000000000.5', 0, 7); + T('7135722984978446900000000000000000000000000000000000001', '7135722984978446900000000000000000000000000000000000000.5', 0, 7); + T('7739620000000000000000000000000000000000000000000000001', '7739620000000000000000000000000000000000000000000000000.5', 0, 7); + T('-7310071091565097458378697755962864041334940666867342517847595229165394387202247229680000000', '-7310071091565097458378697755962864041334940666867342517847595229165394387202247229680000000.5', 0, 7); + T('5138337172269533148524367880141880518489245800000000000001', '5138337172269533148524367880141880518489245800000000000000.5', 0, 7); + T('-6000', '-6000.5', 0, 7); + T('463879090754017750000000000000001', '463879090754017750000000000000000.5', 0, 7); + T('-629850000000000000000', '-629850000000000000000.5', 0, 7); + T('-205429044500000000000000000000', '-205429044500000000000000000000.5', 0, 7); + T('-5416257015618874559905147873000000000000000000000000000000000000000000000000', '-5416257015618874559905147873000000000000000000000000000000000000000000000000.5', 0, 7); + T('623364421289248201317000000000000001', '623364421289248201317000000000000000.5', 0, 7); + T('911141136528601', '911141136528600.5', 0, 7); + T('-276055672501612195718314543393745315761189100000', '-276055672501612195718314543393745315761189100000.5', 0, 7); + T('-51740866419136700582070000', '-51740866419136700582070000.5', 0, 7); + T('56999862161113789759865220000000000000000000000000000000000000000001', '56999862161113789759865220000000000000000000000000000000000000000000.5', 0, 7); + T('-4111633071145139947224365900000', '-4111633071145139947224365900000.5', 0, 7); + T('697451872400000000000000000000000000000000000000000000000000000000000000000000000000000001', '697451872400000000000000000000000000000000000000000000000000000000000000000000000000000000.5', 0, 7); + T('5000000000000000000000001', '5000000000000000000000000.5', 0, 7); + T('5350000000000000000000000000000000000000000000000000000001', '5350000000000000000000000000000000000000000000000000000000.5', 0, 7); + T('10529587347000000000000000000000000000000000000000001', '10529587347000000000000000000000000000000000000000000.5', 0, 7); + T('-2219716000000000000000000000000000', '-2219716000000000000000000000000000.5', 0, 7); + T('2211360517426407426481005085784959830631111751668394294258799150000000000001', '2211360517426407426481005085784959830631111751668394294258799150000000000000.5', 0, 7); + T('91550904625902200434312440338781865630142094511605342285084477183074410000000000000000000000001', '91550904625902200434312440338781865630142094511605342285084477183074410000000000000000000000000.5', 0, 7); + T('658054801757836432123543171404589184297504018642564438772090020000000000000000000001', '658054801757836432123543171404589184297504018642564438772090020000000000000000000000.5', 0, 7); + T('79944791864921246971621269400000000000000000000001', '79944791864921246971621269400000000000000000000000.5', 0, 7); + T('360829991900000000000000000000000000000000000000000000000000000000000000000000000000000001', '360829991900000000000000000000000000000000000000000000000000000000000000000000000000000000.5', 0, 7); + T('-1480000000000000000000000000', '-1480000000000000000000000000.5', 0, 7); + T('-64280200000000', '-64280200000000.5', 0, 7); + T('-75061307733616254618964203889755925762439000000', '-75061307733616254618964203889755925762439000000.5', 0, 7); + T('44130000000000000000000001', '44130000000000000000000000.5', 0, 7); + T('44702568841946912396571635908221096745886412397401280570000000000000000000000000001', '44702568841946912396571635908221096745886412397401280570000000000000000000000000000.5', 0, 7); + T('604039501485544598558831356363400000000000000001', '604039501485544598558831356363400000000000000000.5', 0, 7); + T('-19917984485520', '-19917984485520.5', 0, 7); + T('-311996565804449030000000000000000000000000000000000000000000000000000000000000000', '-311996565804449030000000000000000000000000000000000000000000000000000000000000000.5', 0, 7); + T('-173984786383490515959556081806759606423524092895768000000', '-173984786383490515959556081806759606423524092895768000000.5', 0, 7); + T('-53469189427189740866342899750820440774650016000000000000000000000000000000000000000000000000', '-53469189427189740866342899750820440774650016000000000000000000000000000000000000000000000000.5', 0, 7); + T('-75', '-75.5', 0, 7); + T('27983400000000000000000001', '27983400000000000000000000.5', 0, 7); + T('-55866209', '-55866209.5', 0, 7); + T('-4236500000000', '-4236500000000.5', 0, 7); + T('2698000000000000000000001', '2698000000000000000000000.5', 0, 7); + T('176755986000000000000000000000000000000000000000000000001', '176755986000000000000000000000000000000000000000000000000.5', 0, 7); + T('10061938000001', '10061938000000.5', 0, 7); + T('-6910178749421869055443921431000000000', '-6910178749421869055443921431000000000.5', 0, 7); + T('3577828651898578960680400000000000000000000000000000000000000000000000001', '3577828651898578960680400000000000000000000000000000000000000000000000000.5', 0, 7); + T('68020066499785661939171192017417847730323210000000000000000000000000000000000001', '68020066499785661939171192017417847730323210000000000000000000000000000000000000.5', 0, 7); + T('-670000000000000000000000000000', '-670000000000000000000000000000.5', 0, 7); + T('-40412630000000000000', '-40412630000000000000.5', 0, 7); + T('-61065894754899019888087081382802643548863976547845002280076808300000000000000', '-61065894754899019888087081382802643548863976547845002280076808300000000000000.5', 0, 7); + T('100000001', '100000000.5', 0, 7); + T('-14822039000000000000000000000000', '-14822039000000000000000000000000.5', 0, 7); + T('-63700', '-63700.5', 0, 7); + T('-15144885754320000000000000000', '-15144885754320000000000000000.5', 0, 7); + T('-5272200000000000000000', '-5272200000000000000000.5', 0, 7); + T('-3247040000000000000', '-3247040000000000000.5', 0, 7); + T('-2681260809546501000', '-2681260809546501000.5', 0, 7); + T('87599201647856572613610170000000000000000000000000000000000000001', '87599201647856572613610170000000000000000000000000000000000000000.5', 0, 7); + T('250000000000000000000000000000000000000000001', '250000000000000000000000000000000000000000000.5', 0, 7); + T('14130422050230001', '14130422050230000.5', 0, 7); + T('-215000000000000000000000000000000000000000000000000000000000000000000000000', '-215000000000000000000000000000000000000000000000000000000000000000000000000.5', 0, 7); + T('-43726827420000000', '-43726827420000000.5', 0, 7); + T('-4800000000000000000000000000000000000000000000000000000000000000000', '-4800000000000000000000000000000000000000000000000000000000000000000.5', 0, 7); + T('-7300000000000000000000000000', '-7300000000000000000000000000.5', 0, 7); + T('491352128092860358920632352122032679985453000001', '491352128092860358920632352122032679985453000000.5', 0, 7); + T('-882188546069284263665240261471556461467006545965824525162469092995249760000', '-882188546069284263665240261471556461467006545965824525162469092995249760000.5', 0, 7); + T('-85741667839249074', '-85741667839249074.5', 0, 7); + T('-527599500272614000000000000000000000000000000000000000000000000000000000000000000000000000000000', '-527599500272614000000000000000000000000000000000000000000000000000000000000000000000000000000000.5', 0, 7); + T('-832820000000000', '-832820000000000.5', 0, 7); + T('-198601973381063265872709695924943530652918000000000000000000', '-198601973381063265872709695924943530652918000000000000000000.5', 0, 7); + T('-10000', '-10000.5', 0, 7); + T('-673944669918113000000000000000000000000000000', '-673944669918113000000000000000000000000000000.5', 0, 7); + T('-84188225', '-84188225.5', 0, 7); + T('771154817579711197000000000000000000000000000000000000000000000000001', '771154817579711197000000000000000000000000000000000000000000000000000.5', 0, 7); + T('-87389583669272781200000000000000000000000000000000000', '-87389583669272781200000000000000000000000000000000000.5', 0, 7); + T('2626469664216538014114045286014123593449500000001', '2626469664216538014114045286014123593449500000000.5', 0, 7); + T('-696131077975000000000000', '-696131077975000000000000.5', 0, 7); + T('-78690000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000', '-78690000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.5', 0, 7); + T('-442122610891418980859993032200000', '-442122610891418980859993032200000.5', 0, 7); + T('5661090000000000000000000000000000000000000000000000000000000000000000000000000000001', '5661090000000000000000000000000000000000000000000000000000000000000000000000000000000.5', 0, 7); + T('-407000000000000000000', '-407000000000000000000.5', 0, 7); + T('729350422974116892063715545463978850831800000000001', '729350422974116892063715545463978850831800000000000.5', 0, 7); + T('637954990213103000000001', '637954990213103000000000.5', 0, 7); + T('-1138365762514721521483834034584523726374412779304481429041180049963600000', '-1138365762514721521483834034584523726374412779304481429041180049963600000.5', 0, 7); + T('2475696728487804739525182918139219026008027679054000000000000000000000000000000000001', '2475696728487804739525182918139219026008027679054000000000000000000000000000000000000.5', 0, 7); + T('66193237237200326100000000000000000001', '66193237237200326100000000000000000000.5', 0, 7); + T('663179971604113808385191042094969369727970974320403970845752700000000001', '663179971604113808385191042094969369727970974320403970845752700000000000.5', 0, 7); + T('596157270311242', '596157270311241.5', 0, 7); + T('-430859454062137256578640000000000000000000000000000000000000000', '-430859454062137256578640000000000000000000000000000000000000000.5', 0, 7); + T('7032813000000000001', '7032813000000000000.5', 0, 7); + T('767314152225968313318624830508438163176729385050170000000000000000001', '767314152225968313318624830508438163176729385050170000000000000000000.5', 0, 7); + T('-321648005175685895332610984400000000000', '-321648005175685895332610984400000000000.5', 0, 7); + T('-5914848242008475427391535555998338828544179518249385611394025548931079438027758333803040000000000', '-5914848242008475427391535555998338828544179518249385611394025548931079438027758333803040000000000.5', 0, 7); + T('73480016864560536978879028863212252705530701', '73480016864560536978879028863212252705530700.5', 0, 7); + T('8976064818931304755883643401472118930622270000000000000001', '8976064818931304755883643401472118930622270000000000000000.5', 0, 7); + T('-5079754732761006567963078886040778070', '-5079754732761006567963078886040778070.5', 0, 7); + T('-51002521076071416214838521445923939000000000', '-51002521076071416214838521445923939000000000.5', 0, 7); + T('8684049955981816069703979854267267479779343491340480759376275884260000000000000000000000000001', '8684049955981816069703979854267267479779343491340480759376275884260000000000000000000000000000.5', 0, 7); + T('37507194800178617805104432695868625191287264624719442564304569000000000000000000000000000000001', '37507194800178617805104432695868625191287264624719442564304569000000000000000000000000000000000.5', 0, 7); + T('-4281839065682230128346600112666094892582742848537366052855118901071834009400000000000000', '-4281839065682230128346600112666094892582742848537366052855118901071834009400000000000000.5', 0, 7); + T('-333000', '-333000.5', 0, 7); + T('-502583575785454685986915469822211140422238465305000000000000000000000000000000000000', '-502583575785454685986915469822211140422238465305000000000000000000000000000000000000.5', 0, 7); + T('-32030575969596778652213137431653825274000000000000000000', '-32030575969596778652213137431653825274000000000000000000.5', 0, 7); + T('-4506117101680962000000000000000000000000', '-4506117101680962000000000000000000000000.5', 0, 7); + T('-64730463575631254944664602047280130000000000000000000000000000000000000', '-64730463575631254944664602047280130000000000000000000000000000000000000.5', 0, 7); + T('27570663944600021244014689614081019825668139000000000000000000000000001', '27570663944600021244014689614081019825668139000000000000000000000000000.5', 0, 7); + T('-350302102100000000000000000', '-350302102100000000000000000.5', 0, 7); + T('-3918501626000000000', '-3918501626000000000.5', 0, 7); + T('51812774862668048505100000000000000000000000000000000000000000000000000000000001', '51812774862668048505100000000000000000000000000000000000000000000000000000000000.5', 0, 7); + T('-61696491490996741116958188157141279933341663428216950000000000000000000000', '-61696491490996741116958188157141279933341663428216950000000000000000000000.5', 0, 7); + T('4656808510000000000000000000000000000000000000000000000000000000000000000001', '4656808510000000000000000000000000000000000000000000000000000000000000000000.5', 0, 7); + T('23272197523886798346038846952829185419450839280000000000000000000000000000000000000001', '23272197523886798346038846952829185419450839280000000000000000000000000000000000000000.5', 0, 7); + T('4065544662345173976170000000000000000000000000000000001', '4065544662345173976170000000000000000000000000000000000.5', 0, 7); + T('-422635258000000000000000000000000000000000000000000000000000', '-422635258000000000000000000000000000000000000000000000000000.5', 0, 7); + T('-3582000', '-3582000.5', 0, 7); + T('7740826542065848739126877465966868569935787226324870000000000000000001', '7740826542065848739126877465966868569935787226324870000000000000000000.5', 0, 7); + T('1614965644012243386199869835574326000000001', '1614965644012243386199869835574326000000000.5', 0, 7); + T('-20000', '-20000.5', 0, 7); + T('-2291933618897112688229402464046600000000000000000000000000000000000000000000000000000000000000', '-2291933618897112688229402464046600000000000000000000000000000000000000000000000000000000000000.5', 0, 7); + T('-663605069281623297326832485568849000000000000000000000000000000000000000000000000000000000000000000', '-663605069281623297326832485568849000000000000000000000000000000000000000000000000000000000000000000.5', 0, 7); + T('1939060273775317149434400000000000000000000000000000000000000000000000000000000000000000000001', '1939060273775317149434400000000000000000000000000000000000000000000000000000000000000000000000.5', 0, 7); + T('-726114440793216017690000000000000000000000', '-726114440793216017690000000000000000000000.5', 0, 7); + T('-8529164154875627047383959874881458179234088946000000000000000000000000000000000000000000000000000', '-8529164154875627047383959874881458179234088946000000000000000000000000000000000000000000000000000.5', 0, 7); + T('359551952970277110582000000000000000000000000000000000001', '359551952970277110582000000000000000000000000000000000000.5', 0, 7); + T('-6822800000000000000000000000000000000000000000000000', '-6822800000000000000000000000000000000000000000000000.5', 0, 7); + T('28024094231179167233916852000000000000000000000000000000001', '28024094231179167233916852000000000000000000000000000000000.5', 0, 7); + T('-5768619642107599734543714041179604138353000000000000', '-5768619642107599734543714041179604138353000000000000.5', 0, 7); + T('-4336937232847962038320625210133958133684710802758818489207914168472208196240530780800000', '-4336937232847962038320625210133958133684710802758818489207914168472208196240530780800000.5', 0, 7); + T('294276367161162465235912532501878152936548550758709465137169762240500722165978566', '294276367161162465235912532501878152936548550758709465137169762240500722165978565.5', 0, 7); + T('-5853377924485346629722284422247261298818024606786760212628942481993981005105147485025005541304000', '-5853377924485346629722284422247261298818024606786760212628942481993981005105147485025005541304000.5', 0, 7); + T('-57376528507859392114198303459327987043203713812970277355663102705761801186615364048872085338570', '-57376528507859392114198303459327987043203713812970277355663102705761801186615364048872085338570.5', 0, 7); + T('8981899774674151341273723045246779558611526093370000000000000000000000000000001', '8981899774674151341273723045246779558611526093370000000000000000000000000000000.5', 0, 7); + T('6880184505510000000000000000000000000000000000000000000000000000000000000000000000001', '6880184505510000000000000000000000000000000000000000000000000000000000000000000000000.5', 0, 7); + T('-9144765542574759986504560099796367000000000000000000000000000000000000000000000000000000000000000000', '-9144765542574759986504560099796367000000000000000000000000000000000000000000000000000000000000000000.5', 0, 7); + T('-33550940230832658386583641510', '-33550940230832658386583641510.5', 0, 7); + T('570500000001', '570500000000.5', 0, 7); + T('21171552652016197991647323966415490225947817225636864710000000000000000000000000001', '21171552652016197991647323966415490225947817225636864710000000000000000000000000000.5', 0, 7); + T('-219451479377926100000000000000000000000', '-219451479377926100000000000000000000000.5', 0, 7); + T('-46023648500000000000000000000000000000000000000000000000', '-46023648500000000000000000000000000000000000000000000000.5', 0, 7); + T('-5788386698147635042359128255204287799666980072971472360314579333990755726292753882057820000', '-5788386698147635042359128255204287799666980072971472360314579333990755726292753882057820000.5', 0, 7); + T('48425486699992611674833028561543095971459492320411160921', '48425486699992611674833028561543095971459492320411160920.5', 0, 7); + T('-59344633366981652200000000000', '-59344633366981652200000000000.5', 0, 7); + T('-65482014253687833342600000000000000000000000', '-65482014253687833342600000000000000000000000.5', 0, 7); + T('-30128014553929563000000000000000000000000000000000000000000000000000000000000', '-30128014553929563000000000000000000000000000000000000000000000000000000000000.5', 0, 7); + T('794768001', '794768000.5', 0, 7); + T('-150865959000000000000000000000000000000000000000000000000000000000000000000000000000000', '-150865959000000000000000000000000000000000000000000000000000000000000000000000000000000.5', 0, 7); + T('873381282566874884976602503384155621488078946785261238', '873381282566874884976602503384155621488078946785261237.5', 0, 7); + T('-76364822618102400000000000000000000000000000000000000000000000000', '-76364822618102400000000000000000000000000000000000000000000000000.5', 0, 7); + T('1590000000000000000000000000000000000000000000000000000000001', '1590000000000000000000000000000000000000000000000000000000000.5', 0, 7); + T('15883352501', '15883352500.5', 0, 7); + T('-1678796930161119374892', '-1678796930161119374892.5', 0, 7); + T('7519225332612480000000000000001', '7519225332612480000000000000000.5', 0, 7); + T('26782458868551013018628206420511402980374696236993201', '26782458868551013018628206420511402980374696236993200.5', 0, 7); + T('84182962247257426278629190001', '84182962247257426278629190000.5', 0, 7); + T('-674633568509895706371390517304490463246553534599391649648000000', '-674633568509895706371390517304490463246553534599391649648000000.5', 0, 7); + T('2036599383754410655598351317310763047828000000000000000000000000000001', '2036599383754410655598351317310763047828000000000000000000000000000000.5', 0, 7); + T('-1747000000', '-1747000000.5', 0, 7); + T('3960685307896400000000000001', '3960685307896400000000000000.5', 0, 7); + T('-1', '-1.5', 0, 7); + T('5', '4.5', 0, 7); + T('-8542007911699875753350816000000000', '-8542007911699875753350816000000000.5', 0, 7); + T('229448019839399741', '229448019839399740.5', 0, 7); + T('4340972004000000000000000000000000000000000001', '4340972004000000000000000000000000000000000000.5', 0, 7); + T('-773300000000', '-773300000000.5', 0, 7); + T('7155533863912051817808706333952649054169243324075500000000000000000000000000000000001', '7155533863912051817808706333952649054169243324075500000000000000000000000000000000000.5', 0, 7); + T('994879015661912752196001000000000000000001', '994879015661912752196001000000000000000000.5', 0, 7); + T('9735231726716596452594218428908047051010710000000000000000000000000000000001', '9735231726716596452594218428908047051010710000000000000000000000000000000000.5', 0, 7); + T('830000001', '830000000.5', 0, 7); + T('-621154', '-621154.5', 0, 7); + T('-7026505943196190557292140834274961200000000', '-7026505943196190557292140834274961200000000.5', 0, 7); + T('-5698210301557000000000000000000000000000', '-5698210301557000000000000000000000000000.5', 0, 7); + T('633325185790000001', '633325185790000000.5', 0, 7); + T('-64165596081004870', '-64165596081004870.5', 0, 7); + T('-41646941216693066756777307741427764177371639363417043000000000000000000000000000000000000000', '-41646941216693066756777307741427764177371639363417043000000000000000000000000000000000000000.5', 0, 7); + T('-30276599950453', '-30276599950453.5', 0, 7); + T('844934410001', '844934410000.5', 0, 7); + T('193536068479533070654088534028865405146725922969081990000000000000000000000000001', '193536068479533070654088534028865405146725922969081990000000000000000000000000000.5', 0, 7); + T('3571390090807278635466910226000000000001', '3571390090807278635466910226000000000000.5', 0, 7); + T('33758731615573853269038256552240314238547949393669248932000000000000000000000000000000000000000001', '33758731615573853269038256552240314238547949393669248932000000000000000000000000000000000000000000.5', 0, 7); + + // rounding mode 8 + T('66201703687996196493948073895661219741.79732939050299983848272445', '66201703687996196493948073895661219741.79732939050299983848272444531659415942809827190951', 26, 8); + T('-432784391834045276975262545157922', '-432784391834045276975262545157922', 28, 8); + T('1149345737914160007440457748332143986414.9571', '1149345737914160007440457748332143986414.957136799115537152433594986979', 4, 8); + T('-8955086490844848921210649185442547', '-8955086490844848921210649185442547', 35, 8); + T('425088038661656538743278817856878424164093767.85670041722429249440202331857043', '425088038661656538743278817856878424164093767.85670041722429249440202331857043013807', 33, 8); + T('-309644694334054373034963302293381012433965117503313464512444644', '-309644694334054373034963302293381012433965117503313464512444644', 15, 8); + T('-6113258580590430007589739873373442564851315606055053637944', '-6113258580590430007589739873373442564851315606055053637944', 20, 8); + T('-79578809228411034521778967729244470830365009197702327546767865195836773388369068481948969.900741', '-79578809228411034521778967729244470830365009197702327546767865195836773388369068481948969.9007405268', 6, 8); + T('-98635952437161220.96618', '-98635952437161220.9661782723695091452045447927505345126085', 5, 8); + T('5306244228965561737.62447596491901907069113187489713', '5306244228965561737.62447596491901907069113187489712907837802453330192181391370636667897993', 32, 8); + T('881494696226260293271264.36459456081728760273917638738994049272140009', '881494696226260293271264.36459456081728760273917638738994049272140008956721', 45, 8); + T('0', '0.0000000000000000398975254', 1, 8); + T('-2966907742563204474300609285105763571411556718257633358168823625207636310562902929129639632', '-2966907742563204474300609285105763571411556718257633358168823625207636310562902929129639632', 59, 8); + T('4815226942078558754202763870371111530259178454324372013168459692655444158537', '4815226942078558754202763870371111530259178454324372013168459692655444158537', 58, 8); + T('89735736519038061687.396102956878866121243318078603705593756032576774631567136', '89735736519038061687.396102956878866121243318078603705593756032576774631567136', 57, 8); + T('-5139206863826452924558709317549576110217185', '-5139206863826452924558709317549576110217185', 10, 8); + T('410799450059.233711597011245238081176283367945619000645947401973880735', '410799450059.23371159701124523808117628336794561900064594740197388073499637579092523992206', 59, 8); + T('-1861173217597843873200339700375118033056165470698896905908777053211294087744', '-1861173217597843873200339700375118033056165470698896905908777053211294087744', 38, 8); + T('0', '-0.00000000000000006595', 11, 8); + T('-5407783849362963393803124142731051275240080145012', '-5407783849362963393803124142731051275240080145012', 20, 8); + T('-34168517091385789116719661427034183841563988149', '-34168517091385789116719661427034183841563988149', 17, 8); + T('5795445846', '5795445846', 2, 8); + T('-208487757.4947118655668802941616876105973734970142836273035', '-208487757.49471186556688029416168761059737349701428362730350350449276293511255885603228665646', 49, 8); + T('796420627119046.3257623490013937727996276166953155756033788473505312', '796420627119046.325762349001393772799627616695315575603378847350531229664668561098545265510186232639', 52, 8); + T('-764919.2520201660863571182709007', '-764919.252020166086357118270900678004721225081351152', 25, 8); + T('1711778256244239.6432803280511675051780680294577052774533541577657', '1711778256244239.643280328051167505178068029457705277453354157765665691237184194081804579550628', 49, 8); + T('-5303437679211478868344273161947940791429451823884596427841.337465439843', '-5303437679211478868344273161947940791429451823884596427841.337465439843017473765793878253395', 12, 8); + T('7894537442022400587189513519.07614612464633', '7894537442022400587189513519.0761461246463343271909512896919921757738101749442', 14, 8); + T('-852162476174009362657224788407373904292.060834168512303', '-852162476174009362657224788407373904292.0608341685123032205848264284500246825574591705678252075211', 15, 8); + T('12263206466360474155347209378267179331790532796950452218705592936654936382476475166224', '12263206466360474155347209378267179331790532796950452218705592936654936382476475166224', 50, 8); + T('286739.751858335177', '286739.75185833517663282910779633883075386374977590348991259883429540928694021465959067075843', 12, 8); + T('-1762282392342322391451423.95138646013724750227039851', '-1762282392342322391451423.9513864601372475022703985059087755006296016821468', 26, 8); + T('-87248674085961920378373182112140016225793103119799077836448861613155523873993867027371', '-87248674085961920378373182112140016225793103119799077836448861613155523873993867027371', 18, 8); + T('-74092308.573751689088057271221141335221234751439463510099422792', '-74092308.5737516890880572712211413352212347514394635100994227920017954257506493659703', 55, 8); + T('-20760047489279', '-20760047489279', 11, 8); + T('-0.0000000000000000000513', '-0.00000000000000000005125373071584388602667', 22, 8); + T('553838249451575699354166087894479427887538748821541', '553838249451575699354166087894479427887538748821541', 49, 8); + T('1423248954610786032951054974531156745902169', '1423248954610786032951054974531156745902169', 18, 8); + T('-455513127477032432052165898762670896803882354533268751050143', '-455513127477032432052165898762670896803882354533268751050143', 59, 8); + T('-0.112326948668716031138310473397726709406273', '-0.1123269486687160311383104733977267094062725419900260888852399393388797266733492952', 42, 8); + T('220496431007708742488102987834369132032989458669949404568519039366030060413', '220496431007708742488102987834369132032989458669949404568519039366030060413', 50, 8); + T('-0.00000000000325811433456091828013955203891346578756293444537', '-0.000000000003258114334560918280139552038913465787562934445372834409816', 59, 8); + T('-457504832634108650876363681507414265221', '-457504832634108650876363681507414265221', 40, 8); + T('-424186796605368850991004250916', '-424186796605368850991004250916', 31, 8); + T('656926.697474746923763802615025035828093602941156686984327', '656926.6974747469237638026150250358280936029411566869843273144638083499809', 51, 8); + T('0.000000000000000005397242366818203996', '0.00000000000000000539724236681820399616017543171572414502390014285527039717119783434813739074418', 36, 8); + T('1090684201.48935564', '1090684201.4893556381714726135555970595559735352509535058941537207185560561831', 8, 8); + T('69374039942373.3254580716722156975426911', '69374039942373.32545807167221569754269111', 25, 8); + T('9113500111924420134168224777108947212846008765793966704145', '9113500111924420134168224777108947212846008765793966704145.431817424332', 0, 8); + T('30823.68236248962442', '30823.682362489624415303797164930829692243120825797614790110298558566891', 14, 8); + T('69510854030784689448691205235110864752020705135715463000353620416781464635565813359264377', '69510854030784689448691205235110864752020705135715463000353620416781464635565813359264377', 31, 8); + T('0.000000000000058862529560768', '0.0000000000000588625295607683198127617212575718008706568858558601170114', 27, 8); + T('-17848760834059263091993243721898202503622421343253601508', '-17848760834059263091993243721898202503622421343253601508', 23, 8); + T('-236803670466123595831349021922016939098010857534796192', '-236803670466123595831349021922016939098010857534796192', 21, 8); + T('-102.198091649633311839521389772950955038', '-102.198091649633311839521389772950955038425200879430185191719111255573192340640709444075063237279', 36, 8); + T('326989728850104213753.8335807775873', '326989728850104213753.833580777587346167082725672681674988508273423', 13, 8); + T('-122.0291061318001501339747396650645162229074064349133', '-122.029106131800150133974739665064516222907406434913336614242606358', 49, 8); + T('-831410519711671441355', '-831410519711671441355', 16, 8); + T('-253620339160158444333927384234542070578', '-253620339160158444333927384234542070578', 9, 8); + T('-7348280719663124699843895522030312381252008175705772142979880256543246476384943464878409', '-7348280719663124699843895522030312381252008175705772142979880256543246476384943464878409', 50, 8); + T('6664146236447212814277572.0999056094992', '6664146236447212814277572.099905609499231171', 13, 8); + T('-45131966684154664823729921239622741743388388032363350525350351', '-45131966684154664823729921239622741743388388032363350525350351', 54, 8); + T('-40833932047032323008.1477121334939888606975457955366723579560220387882733564215', '-40833932047032323008.14771213349398886069754579553667235795602203878827335642149629', 59, 8); + T('-610147668317151494655953188414347.513062160034037994471478116919185602379422684392', '-610147668317151494655953188414347.5130621600340379944714781169191856023794226843916275138433253', 48, 8); + T('68480060832241105622.0309399631877587294933', '68480060832241105622.0309399631877587294932744437074077578726838602811862463', 22, 8); + T('194232568635561193478658679661926001447122084303161530447723323350451591165847396942433467', '194232568635561193478658679661926001447122084303161530447723323350451591165847396942433467', 53, 8); + T('301488112835117984681216562501634945527931425479867644918437173989635003275', '301488112835117984681216562501634945527931425479867644918437173989635003275', 45, 8); + T('-6851957382967116770156790585389162381351471623360536810366727929091181605285629993', '-6851957382967116770156790585389162381351471623360536810366727929091181605285629993', 58, 8); + T('-47712893537299565607733312598395281973889458872107933076', '-47712893537299565607733312598395281973889458872107933076', 22, 8); + T('0', '0.0000000000000000859670879420002853724584828504688225809552905002764241975507797099562754888', 9, 8); + T('0.004432633947152', '0.00443263394715151891254682580745644237652322307', 15, 8); + T('69262889569389462605539771733767837082438188', '69262889569389462605539771733767837082438188', 44, 8); + T('-3891963561578294887852441074022523556630020645085806037968401206141034018227239650504315', '-3891963561578294887852441074022523556630020645085806037968401206141034018227239650504315', 29, 8); + T('517455700713583735581011224355747758835072', '517455700713583735581011224355747758835072', 33, 8); + T('3286559014183405381681284382257494050726761990059', '3286559014183405381681284382257494050726761990059', 8, 8); + T('-63655023123174740325953043492297676892760601721778538384', '-63655023123174740325953043492297676892760601721778538384', 38, 8); + T('-3616486456360129835721411345', '-3616486456360129835721411345', 25, 8); + T('5302046753446852414769871718814521746.07821211750152648928158273941305583283', '5302046753446852414769871718814521746.07821211750152648928158273941305583283', 39, 8); + T('7748631583295908.9', '7748631583295908.93', 1, 8); + T('698840974194462996670670779801788898006147', '698840974194462996670670779801788898006147', 39, 8); + T('5115298308143358514121930351981670511745255186478118611705507709680743067049815465', '5115298308143358514121930351981670511745255186478118611705507709680743067049815465', 3, 8); + T('-612675133207.913892413366818256954190842994', '-612675133207.91389241336681825695419084299362927950456589721655286975937658897251713491', 30, 8); + T('-23760765404011175917916548731905430881375361039', '-23760765404011175917916548731905430881375361039', 37, 8); + T('1.537325640830455556577284161295194462534093392', '1.53732564083045555657728416129519446253409339155685994767622443301510890518218163627512409985028874', 45, 8); + T('85488099619561530625377.4192191219015077695264716986497372124636', '85488099619561530625377.41921912190150776952647169864973721246357123472247253263193079654814', 40, 8); + T('-0.000000000000000000050862650388973728733959', '-0.00000000000000000005086265038897372873395911474890963231183754251032093750396822', 42, 8); + T('5526230849632961555873105581682031232032076652', '5526230849632961555873105581682031232032076652', 33, 8); + T('5.35603726623675478881750325031077857085', '5.3560372662367547888175032503107785708523437510821741384889170003345091454641716', 38, 8); + T('-269', '-268.5690822533536300367', 0, 8); + T('5757355935873247215361', '5757355935873247215361', 7, 8); + T('246850624649836235549257820435684838216256457058297475944623153518238931267', '246850624649836235549257820435684838216256457058297475944623153518238931267', 29, 8); + T('-692278289514395596822246030611', '-692278289514395596822246030611', 29, 8); + T('5011884712679298647620944560807194982963074154957144073408073782.012902676141595080232825022', '5011884712679298647620944560807194982963074154957144073408073782.01290267614159508023282502208799', 27, 8); + T('-1601088319576953191651975449908738521284', '-1601088319576953191651975449908738521284', 13, 8); + T('-4414644735536629652380210044243136361770887495321', '-4414644735536629652380210044243136361770887495321', 1, 8); + T('0.0000000266191991852311627685858864306795', '0.0000000266191991852311627685858864306795247265183872439736762861', 40, 8); + T('0.000428744212691549043417829548631538073876', '0.0004287442126915490434178295486315380738764488424270530614427525474179623980503815', 42, 8); + T('-0.000000000047', '-0.000000000046905000977649660171', 12, 8); + T('-0.0000000000000000012796854596101', '-0.0000000000000000012796854596101112', 31, 8); + T('0', '0.00000000000000007196452', 10, 8); + T('-86284478039635020.88154442791139797502881588209234679333543929358069793135', '-86284478039635020.8815444279113979750288158820923467933354392935806979313474421195014946654603', 56, 8); + T('345.7906584145207214494773389942349751491', '345.79065841452072144947733899423497514905046668326852378724478389764822926854507387015', 37, 8); + T('-30568645130233018977700516286545868158267620169281990416832482986193', '-30568645130233018977700516286545868158267620169281990416832482986193', 43, 8); + T('37665450910098298765355672911622917', '37665450910098298765355672911622917', 25, 8); + T('-47992849', '-47992849', 1, 8); + T('-2289649689772323.458246269770512751882357714601759751619429', '-2289649689772323.458246269770512751882357714601759751619428559799708215001792781583', 42, 8); + T('205469749210966781349300242506558230047710955467288617413646386581699317243', '205469749210966781349300242506558230047710955467288617413646386581699317243', 25, 8); + T('-32056221565262365438607056649704856185526855802381047619081869', '-32056221565262365438607056649704856185526855802381047619081869', 58, 8); + T('-69387756776107867448507.5597896113493378218866042115232132608', '-69387756776107867448507.5597896113493378218866042115232132608308527098602632063024', 37, 8); + T('0.000000820570605855677101583661555709', '0.00000082057060585567710158366155570875342023482713606', 36, 8); + T('69207211379716780147073990298041848170635366340631501124460602562', '69207211379716780147073990298041848170635366340631501124460602562', 14, 8); + T('74433853443.711309574611828991681415199898999', '74433853443.711309574611828991681415199898998743211590771456662685697848481543071016889', 33, 8); + T('560136636765721.54952783053237', '560136636765721.5495278305323717513438', 14, 8); + T('66999767298684323378394675772410013.28969441028366360358403105373652837191570809785171273', '66999767298684323378394675772410013.28969441028366360358403105373652837191570809785171273', 54, 8); + T('68347634798085780973515205391681470162522109665463538490773666914168258894444', '68347634798085780973515205391681470162522109665463538490773666914168258894444', 24, 8); + T('7697922274864830543190030076775438', '7697922274864830543190030076775438', 20, 8); + T('278983937451071130016483992277822580223855875348190818.113846802586205314111233', '278983937451071130016483992277822580223855875348190818.11384680258620531411123264767447310686', 24, 8); + T('-18302541929262108151338961040808216477301', '-18302541929262108151338961040808216477301', 13, 8); + T('-917241354938259400580805453251192909557123968816077324554688.2632819065881148284', '-917241354938259400580805453251192909557123968816077324554688.263281906588114828403637', 20, 8); + T('45819385064609897668758693853072194843813609788794421314', '45819385064609897668758693853072194843813609788794421314', 24, 8); + T('-523986068289618485266030887200551590040084842900599214834165319686', '-523986068289618485266030887200551590040084842900599214834165319686', 18, 8); + T('7852063910359971787869622352527374328444882187005886753422152922497829760479356719', '7852063910359971787869622352527374328444882187005886753422152922497829760479356719', 38, 8); + T('0.0000000000247091', '0.00000000002470914629639547358185782547191865524156377299551121577023612761119607882', 16, 8); + T('440821431387771614013770385588.03139517196419817521106343238223731692566664358823035313142', '440821431387771614013770385588.03139517196419817521106343238223731692566664358823035313142186102', 59, 8); + T('-7.391761264366265837615347413187815498740935', '-7.391761264366265837615347413187815498740934589988129058805961426', 42, 8); + T('41794466666300650385807822364400569925816612741244088085922306361105114', '41794466666300650385807822364400569925816612741244088085922306361105114', 48, 8); + T('0', '0.0000000000000000038802542700538271039582060794252268615576361549601345439908', 15, 8); + T('35343256389819549943056605473715229852', '35343256389819549943056605473715229852', 9, 8); + T('-818984458678111129545223433258309212674764516267725284171918954770229.24954611425', '-818984458678111129545223433258309212674764516267725284171918954770229.249546114248715', 11, 8); + T('-7230691209.6753920167936103432715638', '-7230691209.67539201679361034327156375593719410288588', 25, 8); + T('-37368231656156642628245727340400846248755238210404670712676232100034223145733', '-37368231656156642628245727340400846248755238210404670712676232100034223145733', 9, 8); + T('-21531849930403836723.549953750896490206543923575188', '-21531849930403836723.549953750896490206543923575188115922', 30, 8); + T('0.00255705840261906787264907412348588448784776243920353187679', '0.0025570584026190678726490741234858844878477624392035318767939168622896408327924273682986', 59, 8); + T('-72553243708', '-72553243708', 12, 8); + T('-0.0000000000008856317899193899991568647156407142735462649', '-0.0000000000008856317899193899991568647156407142735462649439073', 55, 8); + T('0.00000000000000002567536449680036305412256336138415403', '0.0000000000000000256753644968003630541225633613841540257438901', 53, 8); + T('-2861414563473219891469834741889616', '-2861414563473219891469834741889616', 23, 8); + T('76315153632082828597570739187599689956646538104750912445681366544986223082108062643693', '76315153632082828597570739187599689956646538104750912445681366544986223082108062643693', 58, 8); + T('-36017699886964287552542855178455727562394623', '-36017699886964287552542855178455727562394623', 10, 8); + T('-8039050083841916177617168262552140531689510609781882', '-8039050083841916177617168262552140531689510609781882', 7, 8); + T('-75564522183815281041495497607512529468573045762495628', '-75564522183815281041495497607512529468573045762495628', 47, 8); + T('-0.0000000000000028959465568008886578', '-0.000000000000002895946556800888657768819798024109048410779074303487219485197865657', 34, 8); + T('284523781858209826579679727341459643256753883111577735224', '284523781858209826579679727341459643256753883111577735224', 17, 8); + T('855998775255794984240155453520859416491', '855998775255794984240155453520859416491', 2, 8); + T('-138150439221363970723340802061921303881866895', '-138150439221363970723340802061921303881866895', 10, 8); + T('-4733097249983425263123260326467561884629992599437098006772507345.39029977752721930256', '-4733097249983425263123260326467561884629992599437098006772507345.39029977752721930256036990911', 21, 8); + T('-0.000000000000007891361298828364332998396426', '-0.0000000000000078913612988283643329983964258020880117022087729997106646341', 42, 8); + T('0', '-0.00000000000000000005232135595017205522', 14, 8); + T('6004269558735103787710387970518297095870881046535997656345481925243412966194', '6004269558735103787710387970518297095870881046535997656345481925243412966194', 47, 8); + T('-79790582292297723097183916661305043162178089556664159', '-79790582292297723097183916661305043162178089556664159', 50, 8); + T('868633879339750610248.8719201777840534154224473677127177', '868633879339750610248.8719201777840534154224473677127177456222197014169473933', 34, 8); + T('-35193645352688585041808187638769417251065373576.318111185472303777399956841', '-35193645352688585041808187638769417251065373576.3181111854723037773999568411745', 27, 8); + T('-914456499778647874582727776237', '-914456499778647874582727776237', 32, 8); + T('-0.0000000082872578546868214209908047326678355', '-0.0000000082872578546868214209908047326678354507848678952930148008797982168429352770394', 43, 8); + T('43709030067329728774375267529433280243651742049220974', '43709030067329728774375267529433280243651742049220974', 33, 8); + T('-118010.225141375666233966986827467153774', '-118010.2251413756662339669868274671537736196650024082171238583391369', 33, 8); + T('23068625486429.2799608174027102', '23068625486429.279960817402710215', 16, 8); + T('-704545071947407222321207465462220615566', '-704545071947407222321207465462220615566', 11, 8); + T('14375372697678701853.68596153637061158763127684500719629374218600432501980003', '14375372697678701853.68596153637061158763127684500719629374218600432501980003395932938491', 56, 8); + T('-634203070629093.01725952920860266543339878670159', '-634203070629093.01725952920860266543339878670158808711459045809411073373681', 32, 8); + T('-3341330166644850447365712680571164098505980754357561658133', '-3341330166644850447365712680571164098505980754357561658133', 40, 8); + T('910.78407278867854608277033163963661161209449973499620413', '910.784072788678546082770331639636611612094499734996204129162575412', 53, 8); + T('-74657560210242704554422776032639005330.452019595638291987749374750110848265985', '-74657560210242704554422776032639005330.45201959563829198774937475011084826598462291919991235622365', 39, 8); + T('-470224275317729788265083630786402723652606489581196807283808757461349811868180256', '-470224275317729788265083630786402723652606489581196807283808757461349811868180256', 30, 8); + T('1548861035159077785270281667791270424763253422330193371408', '1548861035159077785270281667791270424763253422330193371408', 39, 8); + T('572490113577029960833837229080147476156510343599468021', '572490113577029960833837229080147476156510343599468021', 53, 8); + T('643806729774291640618659309341323785812549216455045455115986466479734', '643806729774291640618659309341323785812549216455045455115986466479734', 59, 8); + T('-0.0000000000000028832370380139686337031164', '-0.00000000000000288323703801396863370311643469222712049186100527525476992', 40, 8); + T('-7189938709688507888323269632860908682422507867792553339856907644331197', '-7189938709688507888323269632860908682422507867792553339856907644331197', 30, 8); + T('-146458270834000351215786805348778503451274270331400574216733292', '-146458270834000351215786805348778503451274270331400574216733292', 53, 8); + T('-0.00000354623728604661459577622785392304170907', '-0.00000354623728604661459577622785392304170906690465556766249117223748961549701782239', 44, 8); + T('2952633202166896462404492499220990667245459193', '2952633202166896462404492499220990667245459193', 18, 8); + T('-40658243711269788486614574882823442616218332307814675126120483345884287', '-40658243711269788486614574882823442616218332307814675126120483345884287', 35, 8); + T('-834746.130874791201613251929057183287554326432137609', '-834746.13087479120161325192905718328755432643213760902671', 45, 8); + T('-2740259405495848461193558179879029219965128521581766328834436598769356651654532', '-2740259405495848461193558179879029219965128521581766328834436598769356651654532', 21, 8); + T('-8698435709878691464261', '-8698435709878691464261', 24, 8); + T('-4854.3960864787394404064207224627696634919', '-4854.39608647873944040642072246276966349186696614541346739', 37, 8); + T('-9046342079405156048260593050430368806', '-9046342079405156048260593050430368806', 13, 8); + T('-0.0004000833397214913009450572039483114734165469785', '-0.0004000833397214913009450572039483114734165469785253268388', 49, 8); + T('-23588224945151001125418674123739250937217610361057096547', '-23588224945151001125418674123739250937217610361057096547', 50, 8); + T('-7464158850661582447.135098739', '-7464158850661582447.135098739246', 9, 8); + T('-1120821804664354.438155', '-1120821804664354.438154570308756776805085557342686456892402105759461492146293434', 6, 8); + T('0', '0.00000000000000702791991239841893249958321', 6, 8); + T('-0.0000000000000000000919', '-0.00000000000000000009190566893831833839554', 22, 8); + T('64989966866.84348665817102620621477817048264530787181', '64989966866.8434866581710262062147781704826453078718131', 41, 8); + T('-264353242609519937462651086142583415212476095512802343', '-264353242609519937462651086142583415212476095512802343', 45, 8); + T('-319660042.9060556155850335364548437', '-319660042.90605561558503353645484368385673087962874009065861', 25, 8); + T('782876222924236185663713124322579837808875447927.750634733', '782876222924236185663713124322579837808875447927.750634732835826802912809356260197', 9, 8); + T('-4820197230775172031472341884498005296391387635256546231303736492', '-4820197230775172031472341884498005296391387635256546231303736492', 59, 8); + T('-45476814068689923138802955966005002117064', '-45476814068689923138802955966005002117064', 40, 8); + T('86962370844284513181.323731711208686245837285176301766411', '86962370844284513181.323731711208686245837285176301766411023449553787804266696487', 36, 8); + T('404346421681633141340078973828115038719203880378027932732656742417', '404346421681633141340078973828115038719203880378027932732656742417', 20, 8); + T('-53694967597040342895345907112.207745463281021175645491335763', '-53694967597040342895345907112.207745463281021175645491335763004711756325', 30, 8); + T('-6559.90160086515960335469008322764225267411067302815351', '-6559.901600865159603354690083227642252674110673028153509381229252097346854', 50, 8); + T('-0.00000000061377507317560820930017891219268306', '-0.00000000061377507317560820930017891219268306242240809651039096286454694883355904014170354', 44, 8); + T('8466762839492012821866.4647006439743751275401538868809', '8466762839492012821866.464700643974375127540153886880890946782195395', 31, 8); + T('8475.6568', '8475.656838687006572512673250060913774957342621772685866238642718847562956066296778675046839230187', 4, 8); + T('3994107783920982224771924508121993204610124753099359206657026721569631', '3994107783920982224771924508121993204610124753099359206657026721569631', 29, 8); + T('-32449538518104.832133372196883764549982574662552753596186838341', '-32449538518104.832133372196883764549982574662552753596186838341255300262261822662991490178499', 48, 8); + T('0.00000000000000005', '0.0000000000000000488345616040752827', 17, 8); + + T('8225834668202811700000', '8225834668202811700000.5', 0, 8); + T('-67268029621398311238261431331851556661886545942854113916050734581000000000001', '-67268029621398311238261431331851556661886545942854113916050734581000000000000.5', 0, 8); + T('4100000', '4100000.5', 0, 8); + T('694900000000000', '694900000000000.5', 0, 8); + T('-2668752017792840000000000000000000000000000000000000000000000000000000000001', '-2668752017792840000000000000000000000000000000000000000000000000000000000000.5', 0, 8); + T('5138303265393258323808903836559900000000000000000', '5138303265393258323808903836559900000000000000000.5', 0, 8); + T('-61599472977109463564534878506157000000000000000000000000000000001', '-61599472977109463564534878506157000000000000000000000000000000000.5', 0, 8); + T('-706579187032566119663804136174620000000000000000001', '-706579187032566119663804136174620000000000000000000.5', 0, 8); + T('10', '10.5', 0, 8); + T('903942469098308100136613765218227935820271584538277900367517300000000000000000', '903942469098308100136613765218227935820271584538277900367517300000000000000000.5', 0, 8); + T('7259090494485579718152684060350290000000000000000000000000000000000000000000000000000000000', '7259090494485579718152684060350290000000000000000000000000000000000000000000000000000000000.5', 0, 8); + T('50', '50.5', 0, 8); + T('-336051', '-336050.5', 0, 8); + T('-359851700000000000000000000000000000000000000000000000000000000000000000000000000000001', '-359851700000000000000000000000000000000000000000000000000000000000000000000000000000000.5', 0, 8); + T('8300', '8300.5', 0, 8); + T('-5230000000000000000000000000000000000000000000000001', '-5230000000000000000000000000000000000000000000000000.5', 0, 8); + T('-832637338257576743857980873934631876338729504830820328750000000000000000000000000000000001', '-832637338257576743857980873934631876338729504830820328750000000000000000000000000000000000.5', 0, 8); + T('2170', '2170.5', 0, 8); + T('7530960067300000', '7530960067300000.5', 0, 8); + T('-69761077704964968462722176065747076185154464193791511210000000000000000000000000000000000000001', '-69761077704964968462722176065747076185154464193791511210000000000000000000000000000000000000000.5', 0, 8); + T('8951', '8951.5', 0, 8); + T('-62816928986109317245318155705980721116645949369247436234018847714093151000000000001', '-62816928986109317245318155705980721116645949369247436234018847714093151000000000000.5', 0, 8); + T('-273450712038160000001', '-273450712038160000000.5', 0, 8); + T('870651868531859742020859624838429666098184966539196792393834098130000000000000000000', '870651868531859742020859624838429666098184966539196792393834098130000000000000000000.5', 0, 8); + T('7467352850531742535166203140000', '7467352850531742535166203140000.5', 0, 8); + T('-27739701695659117725205758576200000000000001', '-27739701695659117725205758576200000000000000.5', 0, 8); + T('-21575913877090003604970871615441236644670000000000001', '-21575913877090003604970871615441236644670000000000000.5', 0, 8); + T('-84684097772847106401567201003729899910000000000001', '-84684097772847106401567201003729899910000000000000.5', 0, 8); + T('5639766204672194231584787000000000000000000000000000000000000000000000000000000000000000000000', '5639766204672194231584787000000000000000000000000000000000000000000000000000000000000000000000.5', 0, 8); + T('15504935934287862095572900000000000000000000000', '15504935934287862095572900000000000000000000000.5', 0, 8); + T('-1400577619554361844128289470441748896959600001', '-1400577619554361844128289470441748896959600000.5', 0, 8); + T('-562508502033790781280182919180003097225841259584126808028780000001', '-562508502033790781280182919180003097225841259584126808028780000000.5', 0, 8); + T('462676260328650000000000000000000', '462676260328650000000000000000000.5', 0, 8); + T('80610550887265206737088350828621745655000000000000000000000000000000000000000000000000000000', '80610550887265206737088350828621745655000000000000000000000000000000000000000000000000000000.5', 0, 8); + T('-802119959634183327467393167608755000000000000000000000000000000001', '-802119959634183327467393167608755000000000000000000000000000000000.5', 0, 8); + T('78620000000000000000000000000000000000000', '78620000000000000000000000000000000000000.5', 0, 8); + T('810000000000000000000000000000000000', '810000000000000000000000000000000000.5', 0, 8); + T('-3676779349655275521581849548079800000000000000000000000000000000000000000000000000000000001', '-3676779349655275521581849548079800000000000000000000000000000000000000000000000000000000000.5', 0, 8); + T('-81572917297627759505118569656972784453878787892500000000000001', '-81572917297627759505118569656972784453878787892500000000000000.5', 0, 8); + T('-198003769523621', '-198003769523620.5', 0, 8); + T('5306', '5306.5', 0, 8); + T('-4000000000000000000000000000000000000000001', '-4000000000000000000000000000000000000000000.5', 0, 8); + T('-6964300000000000000000000000000000001', '-6964300000000000000000000000000000000.5', 0, 8); + T('5993000000000000000000', '5993000000000000000000.5', 0, 8); + T('-58', '-57.5', 0, 8); + T('-314705009617969030000000000000000000000000000000000000000001', '-314705009617969030000000000000000000000000000000000000000000.5', 0, 8); + T('6', '6.5', 0, 8); + T('4588255716462680467926051688938462657411100947687253979336100000000000000', '4588255716462680467926051688938462657411100947687253979336100000000000000.5', 0, 8); + T('300', '300.5', 0, 8); + T('-8095535225924203212402801', '-8095535225924203212402800.5', 0, 8); + T('30838279901100000000000000000000000000000000000000000000', '30838279901100000000000000000000000000000000000000000000.5', 0, 8); + T('-644246265100306600000000000001', '-644246265100306600000000000000.5', 0, 8); + T('-7949436643533748183697968284137159105717056926000000000000000000000000000000001', '-7949436643533748183697968284137159105717056926000000000000000000000000000000000.5', 0, 8); + T('5961899981183314783500000000', '5961899981183314783500000000.5', 0, 8); + T('329320658758032654290364416883005342614380587029114737580920000000000000', '329320658758032654290364416883005342614380587029114737580920000000000000.5', 0, 8); + T('-70000000000000000000000000001', '-70000000000000000000000000000.5', 0, 8); + T('-773550954099185953800000000000000000000000000000001', '-773550954099185953800000000000000000000000000000000.5', 0, 8); + T('-71820001', '-71820000.5', 0, 8); + T('6824221413055181208880629906440161900000000000000000000000000000000000000000000', '6824221413055181208880629906440161900000000000000000000000000000000000000000000.5', 0, 8); + T('-293663761783147249577441951060981857156831085100000000000000000000000000000000000000000001', '-293663761783147249577441951060981857156831085100000000000000000000000000000000000000000000.5', 0, 8); + T('-805331726532205040286379140828190238797602490000000000000000000000000000000000000000001', '-805331726532205040286379140828190238797602490000000000000000000000000000000000000000000.5', 0, 8); + T('2627542620785923273450000000000000000000', '2627542620785923273450000000000000000000.5', 0, 8); + T('190055193848119613272218981746041232571688473321679545800000000000000000000000000000000000000000', '190055193848119613272218981746041232571688473321679545800000000000000000000000000000000000000000.5', 0, 8); + T('-61621063888036802203530857476475979818427083600000000000000000000000000000000000000000000000001', '-61621063888036802203530857476475979818427083600000000000000000000000000000000000000000000000000.5', 0, 8); + T('-652127458000489992750000000000000000000000000000000000000000000000001', '-652127458000489992750000000000000000000000000000000000000000000000000.5', 0, 8); + T('7000000000000000000000000', '7000000000000000000000000.5', 0, 8); + T('6533676582995433778209424794015171896011423181700000000000000', '6533676582995433778209424794015171896011423181700000000000000.5', 0, 8); + T('27456600275687693800000000000000000000000000000000000000000000000000000000000000000000000000000000', '27456600275687693800000000000000000000000000000000000000000000000000000000000000000000000000000000.5', 0, 8); + T('-194516150000000000000000001', '-194516150000000000000000000.5', 0, 8); + T('-176140000000001', '-176140000000000.5', 0, 8); + T('85012661713649137873180295487285610000000000000000000000000000000000000', '85012661713649137873180295487285610000000000000000000000000000000000000.5', 0, 8); + T('-37523700000000000000000000000000000000000000000000000000000000000000000000000000000001', '-37523700000000000000000000000000000000000000000000000000000000000000000000000000000000.5', 0, 8); + T('-15124465952376999197073295421688223628463231603610811', '-15124465952376999197073295421688223628463231603610810.5', 0, 8); + T('-5432100777163613256132439687382900000000000000000000000000000000000000000000000001', '-5432100777163613256132439687382900000000000000000000000000000000000000000000000000.5', 0, 8); + T('652000000', '652000000.5', 0, 8); + T('-8507892174157676630256932627461950536321146344662200000000000000000000000000000001', '-8507892174157676630256932627461950536321146344662200000000000000000000000000000000.5', 0, 8); + T('-5780286273116071692453993336522250324675081', '-5780286273116071692453993336522250324675080.5', 0, 8); + T('2885286893929064654337716318113439600000000000000000000000000000000000000000', '2885286893929064654337716318113439600000000000000000000000000000000000000000.5', 0, 8); + T('158421702922228687046272106697601990957751203100000000000000000000000000000000000000000000000000', '158421702922228687046272106697601990957751203100000000000000000000000000000000000000000000000000.5', 0, 8); + T('77845803952870686913386535517781103587210960982825399080400000000000000000000000', '77845803952870686913386535517781103587210960982825399080400000000000000000000000.5', 0, 8); + T('-65458261744123585088042880333251536411447000000000000000000000000000000000000000000000000001', '-65458261744123585088042880333251536411447000000000000000000000000000000000000000000000000000.5', 0, 8); + T('-5514810000000000001', '-5514810000000000000.5', 0, 8); + T('-3837413074391000000000000000000000000000001', '-3837413074391000000000000000000000000000000.5', 0, 8); + T('1891485546514380015490000000000000000000000000', '1891485546514380015490000000000000000000000000.5', 0, 8); + T('-670001', '-670000.5', 0, 8); + T('7365874638887372900000000000', '7365874638887372900000000000.5', 0, 8); + T('80464947550', '80464947550.5', 0, 8); + T('-913091300000000000000000000000000000000000000000000001', '-913091300000000000000000000000000000000000000000000000.5', 0, 8); + T('25911127696762546866341398944677062000000000000000000000000', '25911127696762546866341398944677062000000000000000000000000.5', 0, 8); + T('41448246317918170624465120157939322903000000000000000000000000000000000000000000000000000000000000', '41448246317918170624465120157939322903000000000000000000000000000000000000000000000000000000000000.5', 0, 8); + T('-800000000000000000000000000000000000000000000000000001', '-800000000000000000000000000000000000000000000000000000.5', 0, 8); + T('577447040809749466752886339212451433404458549958939957382201980490000000000000', '577447040809749466752886339212451433404458549958939957382201980490000000000000.5', 0, 8); + T('-57572272809174825641085924940000000000000000000000001', '-57572272809174825641085924940000000000000000000000000.5', 0, 8); + T('31581459400000000000000000000000000000000000000000000000000000000000000000000000000', '31581459400000000000000000000000000000000000000000000000000000000000000000000000000.5', 0, 8); + T('-27140000000000000000000000000000000000000000000000000000000000000001', '-27140000000000000000000000000000000000000000000000000000000000000000.5', 0, 8); + T('51603647184997719522882897042563846663899024307208600000000000000000000000', '51603647184997719522882897042563846663899024307208600000000000000000000000.5', 0, 8); + T('1644323000000', '1644323000000.5', 0, 8); + T('-9', '-8.5', 0, 8); + T('-902809102825706989238470350820560000000000000000000000000000000000000000000000000001', '-902809102825706989238470350820560000000000000000000000000000000000000000000000000000.5', 0, 8); + T('-6868477001', '-6868477000.5', 0, 8); + T('91714927731569000000000000000000000000000000000', '91714927731569000000000000000000000000000000000.5', 0, 8); + T('-8000000000000000000000000000000000000000000000000000000000000000001', '-8000000000000000000000000000000000000000000000000000000000000000000.5', 0, 8); + T('-233083085304449000000000000000000000000000000000000000000000000000000000000000000000000000001', '-233083085304449000000000000000000000000000000000000000000000000000000000000000000000000000000.5', 0, 8); + T('46509073700000', '46509073700000.5', 0, 8); + T('-1973764439115071357288670461800000000000000001', '-1973764439115071357288670461800000000000000000.5', 0, 8); + T('-2568500000000000000000001', '-2568500000000000000000000.5', 0, 8); + T('-24809330903268410000000000000000000000000000000000000000000000000000001', '-24809330903268410000000000000000000000000000000000000000000000000000000.5', 0, 8); + T('7449994364098414600000000000000000000000000000000000000000000', '7449994364098414600000000000000000000000000000000000000000000.5', 0, 8); + T('2867488032797172375145449433748008158236530896489051275000000000000000000000000000000000', '2867488032797172375145449433748008158236530896489051275000000000000000000000000000000000.5', 0, 8); + T('-4900000000000000000000000000000000000000000000000000000000000000000000000000001', '-4900000000000000000000000000000000000000000000000000000000000000000000000000000.5', 0, 8); + T('4929000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000', '4929000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.5', 0, 8); + T('8267546457668258513715771480132070472862216176570000000000000000000000000', '8267546457668258513715771480132070472862216176570000000000000000000000000.5', 0, 8); + T('593747187059615072947679001676736984922713680000000000000000000000000000000000000000000000', '593747187059615072947679001676736984922713680000000000000000000000000000000000000000000000.5', 0, 8); + T('2483270425435993889589154244481827665973478012000000000', '2483270425435993889589154244481827665973478012000000000.5', 0, 8); + T('39543791425933526768174519227303827374238075020570198950767961859654305403206119372345770250000', '39543791425933526768174519227303827374238075020570198950767961859654305403206119372345770250000.5', 0, 8); + T('67', '67.5', 0, 8); + T('-219470058205534357335831751487551261713170336001', '-219470058205534357335831751487551261713170336000.5', 0, 8); + T('-183690000000000000000000000000000000000001', '-183690000000000000000000000000000000000000.5', 0, 8); + T('3450876609649939508104514905806066940000000000000000000000', '3450876609649939508104514905806066940000000000000000000000.5', 0, 8); + T('-80540000001', '-80540000000.5', 0, 8); + T('-62971517498372655372935973087516265926164530906763170287790', '-62971517498372655372935973087516265926164530906763170287789.5', 0, 8); + T('23409228118870000000', '23409228118870000000.5', 0, 8); + T('-7000000000000000000000000000000000000001', '-7000000000000000000000000000000000000000.5', 0, 8); + T('-9031', '-9030.5', 0, 8); + T('3492817610000000000000000000000000000000000000000000000000000', '3492817610000000000000000000000000000000000000000000000000000.5', 0, 8); + T('-57688287613641931000000000000000000000000001', '-57688287613641931000000000000000000000000000.5', 0, 8); + T('1984116330670000000000000000000000000000000000000000000000000000000000', '1984116330670000000000000000000000000000000000000000000000000000000000.5', 0, 8); + T('6512025216557000000000000000000000000000000000000000000000000000000', '6512025216557000000000000000000000000000000000000000000000000000000.5', 0, 8); + T('12182501403550393384353169696000000000000000000000000000000000000000000000000000000000000000000', '12182501403550393384353169696000000000000000000000000000000000000000000000000000000000000000000.5', 0, 8); + T('-7425931783170916885202085702943899676988400000000000000000000000000000000000000001', '-7425931783170916885202085702943899676988400000000000000000000000000000000000000000.5', 0, 8); + T('-4070000000000000000000000000000000000001', '-4070000000000000000000000000000000000000.5', 0, 8); + T('8647459874624869698149020230000000000000000000000000000000000000000000000000000000000', '8647459874624869698149020230000000000000000000000000000000000000000000000000000000000.5', 0, 8); + T('46599000', '46599000.5', 0, 8); + T('-5010000000000000000000000000000000000000000000000000000000000000000000000000000000000000001', '-5010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.5', 0, 8); + T('39508000', '39508000.5', 0, 8); + T('603089057835800884421518508711417801', '603089057835800884421518508711417801.5', 0, 8); + T('-79471558363526485324781700384768609724195801918000000000000000000000000000001', '-79471558363526485324781700384768609724195801918000000000000000000000000000000.5', 0, 8); + T('69404910310759646801954680033844865865649000000000000000000000000000000000000000000000000', '69404910310759646801954680033844865865649000000000000000000000000000000000000000000000000.5', 0, 8); + T('1907980209926030560252116696113309208138159500662562258522400000000000000000000000000000000', '1907980209926030560252116696113309208138159500662562258522400000000000000000000000000000000.5', 0, 8); + T('329472654458195399229095412173156277813634317805761763485596051933469610596000', '329472654458195399229095412173156277813634317805761763485596051933469610596000.5', 0, 8); + T('276349000000000', '276349000000000.5', 0, 8); + T('787126144338547000000000000000000000000000000000000000000000', '787126144338547000000000000000000000000000000000000000000000.5', 0, 8); + T('1471099043691184058624460905988224213538031110904992774958270704956863896897997000000000000000', '1471099043691184058624460905988224213538031110904992774958270704956863896897997000000000000000.5', 0, 8); + T('370113010930715428293470648815487051030769793281763667800000000000000000000000', '370113010930715428293470648815487051030769793281763667800000000000000000000000.5', 0, 8); + T('2065922690807733136485062524396416121715082253637965000000000000000000000000000000000000000000', '2065922690807733136485062524396416121715082253637965000000000000000000000000000000000000000000.5', 0, 8); + T('-7382816558182407799471782300849610860474300000000000000000000000000000000000000000001', '-7382816558182407799471782300849610860474300000000000000000000000000000000000000000000.5', 0, 8); + T('-20097560535463220697432958047617508689581603082766010090000000000000000000001', '-20097560535463220697432958047617508689581603082766010090000000000000000000000.5', 0, 8); + T('628909746633683135845125129915144934623519151508200000', '628909746633683135845125129915144934623519151508200000.5', 0, 8); + T('-81192352241330340442871946386698010000000000000001', '-81192352241330340442871946386698010000000000000000.5', 0, 8); + T('6450', '6450.5', 0, 8); + T('37293916349890940922992467416776788689073657558307952866668243095547190629248951386344800000000', '37293916349890940922992467416776788689073657558307952866668243095547190629248951386344800000000.5', 0, 8); + T('1718544737998848', '1718544737998848.5', 0, 8); + T('87231983170377993831727615571315627607167084700000000000', '87231983170377993831727615571315627607167084700000000000.5', 0, 8); + T('-86061664983179049931693406385826804039300476826004230043833291400000000000001', '-86061664983179049931693406385826804039300476826004230043833291400000000000000.5', 0, 8); + T('-51891604836621651634017359747812499890000000000000000000000000000000000000000000000000001', '-51891604836621651634017359747812499890000000000000000000000000000000000000000000000000000.5', 0, 8); + T('8745224135400000000000000000000', '8745224135400000000000000000000.5', 0, 8); + T('-30620233581205628000000000000000001', '-30620233581205628000000000000000000.5', 0, 8); + T('14863144633163334418622520000000000000000', '14863144633163334418622520000000000000000.5', 0, 8); + T('-7820166128000000000000000000000000000000000000000000000000001', '-7820166128000000000000000000000000000000000000000000000000000.5', 0, 8); + T('490301854395822993260221610000000000000000000000000000000000000000000000000000000000000000000000000', '490301854395822993260221610000000000000000000000000000000000000000000000000000000000000000000000000.5', 0, 8); + T('89435429126192621776997940079101579134477637123767783805081890000', '89435429126192621776997940079101579134477637123767783805081890000.5', 0, 8); + T('-8', '-7.5', 0, 8); + T('48028980775647633995683237409146256399109720500000000000000000000000000000000000000', '48028980775647633995683237409146256399109720500000000000000000000000000000000000000.5', 0, 8); + T('6335331194137189544436447913317232855829543152436874057500', '6335331194137189544436447913317232855829543152436874057500.5', 0, 8); + T('-628254630769343648758471830148888672377000000000000000000000000000000000000000000000001', '-628254630769343648758471830148888672377000000000000000000000000000000000000000000000000.5', 0, 8); + T('57839375650970125223236315959022043520630147028794000000000000000000000', '57839375650970125223236315959022043520630147028794000000000000000000000.5', 0, 8); + T('-771743548959352866414440497741988370454011151128027700000000000001', '-771743548959352866414440497741988370454011151128027700000000000000.5', 0, 8); + T('-53429592007706646032950000000000001', '-53429592007706646032950000000000000.5', 0, 8); + T('499380000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000', '499380000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.5', 0, 8); + T('-641898557705670000001', '-641898557705670000000.5', 0, 8); + T('600220992462460556877273974257288999278181263177202351996538136181825896120000', '600220992462460556877273974257288999278181263177202351996538136181825896120000.5', 0, 8); + T('4060100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000', '4060100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.5', 0, 8); + T('-8364590709247094923425000000000000000000000000001', '-8364590709247094923425000000000000000000000000000.5', 0, 8); + T('519409844212193540764606418404780000000000000000000000000000000000000000', '519409844212193540764606418404780000000000000000000000000000000000000000.5', 0, 8); + T('-3833671650388000000000000000000000000000000000000000000000000000000000000000000000000000000000000001', '-3833671650388000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.5', 0, 8); + T('48557176761800000000000000000000000000000000000000', '48557176761800000000000000000000000000000000000000.5', 0, 8); + T('-7711489971', '-7711489970.5', 0, 8); + T('75000000000000000000', '75000000000000000000.5', 0, 8); + T('3229580853248988018262985670791998740861538127939000', '3229580853248988018262985670791998740861538127939000.5', 0, 8); + T('5248316551608552493188922201763221117178358562272408864992232158101702807890000000000000000', '5248316551608552493188922201763221117178358562272408864992232158101702807890000000000000000.5', 0, 8); + T('-65467380782429716204000000000001', '-65467380782429716204000000000000.5', 0, 8); + T('-7205690650357445181000000001', '-7205690650357445181000000000.5', 0, 8); + T('-276409666783477000000000001', '-276409666783477000000000000.5', 0, 8); + T('-58428012013195193142046078040582490000000000000000000000000000000000001', '-58428012013195193142046078040582490000000000000000000000000000000000000.5', 0, 8); + T('-751950207597055427000000000000000000000000000001', '-751950207597055427000000000000000000000000000000.5', 0, 8); + T('-599626209998027538223544864628000000000000000000000000001', '-599626209998027538223544864628000000000000000000000000000.5', 0, 8); + T('493818820446671117064848278738045865755408340205207514513699818290870000000000000000000000000', '493818820446671117064848278738045865755408340205207514513699818290870000000000000000000000000.5', 0, 8); + T('72115246495423678068962420259406315700000', '72115246495423678068962420259406315700000.5', 0, 8); + T('8355575817405490000000000000000', '8355575817405490000000000000000.5', 0, 8); + T('-760420001', '-760420000.5', 0, 8); + T('-2637320151000000000000000000000000000000000000000001', '-2637320151000000000000000000000000000000000000000000.5', 0, 8); + T('365188058248000000000000000000000000000000000000000000000000000000000000000000000000000000', '365188058248000000000000000000000000000000000000000000000000000000000000000000000000000000.5', 0, 8); + T('24776070252572097097332452000000000', '24776070252572097097332452000000000.5', 0, 8); + T('-51423316645779393318000000000000001', '-51423316645779393318000000000000000.5', 0, 8); + T('623144979783067430949482841363102540602541201810000000000000000000000000000000000000000000000', '623144979783067430949482841363102540602541201810000000000000000000000000000000000000000000000.5', 0, 8); + T('-393701403238457991332600000000000000001', '-393701403238457991332600000000000000000.5', 0, 8); + T('255574900000000000000000000000000000000000000000000000', '255574900000000000000000000000000000000000000000000000.5', 0, 8); + T('361300718195583086529006200000000000000', '361300718195583086529006200000000000000.5', 0, 8); + T('61381935060212901891392491994620938159434302730207737183495000000000000', '61381935060212901891392491994620938159434302730207737183495000000000000.5', 0, 8); + T('17103494622240782188191669794453543590000000000000000000000000000000', '17103494622240782188191669794453543590000000000000000000000000000000.5', 0, 8); + T('12.35', '12.345', new BigNumber('2')); + T('12', '12.345', null); + T('12', '12.345', u); + T('12', '12.345', 0); + T('12', '12.345', '-0'); + + assertException(function () {new BigNumber('12.345').round(NaN)}, ".round(NaN)"); + assertException(function () {new BigNumber('12.345').round('NaN')}, ".round('NaN')"); + assertException(function () {new BigNumber('12.345').round([])}, ".round([])"); + assertException(function () {new BigNumber('12.345').round({})}, ".round({})"); + assertException(function () {new BigNumber('12.345').round('')}, ".round('')"); + assertException(function () {new BigNumber('12.345').round(' ')}, ".round(' ')"); + assertException(function () {new BigNumber('12.345').round('hello')}, ".round('hello')"); + assertException(function () {new BigNumber('12.345').round('\t')}, ".round('\t')"); + assertException(function () {new BigNumber('12.345').round(new Date)}, ".round(new Date)"); + assertException(function () {new BigNumber('12.345').round(new RegExp)}, ".round(new RegExp)"); + assertException(function () {new BigNumber('12.345').round(7.5)}, ".round(7.5)"); + assertException(function () {new BigNumber('12.345').round('1.1e1')}, ".round('1.1e1')"); + + assertException(function () {new BigNumber('12.345').round('-1')}, ".round('-1')"); + assertException(function () {new BigNumber('12.345').round(-23)}, ".round(-23)"); + assertException(function () {new BigNumber('12.345').round(1e9 + 1)}, ".round(1e9 + 1)"); + assertException(function () {new BigNumber('12.345').round(1e9 + 0.1)}, ".round(1e9 + 1)"); + assertException(function () {new BigNumber('12.345').round('-0.01')}, ".round('-0.01')"); + assertException(function () {new BigNumber('12.345').round('-1e-1')}, ".round('-1e-1')"); + assertException(function () {new BigNumber('12.345').round(Infinity)}, ".round(Infinity)"); + assertException(function () {new BigNumber('12.345').round('-Infinity')}, ".round('-Infinity')"); + + T('13', '12.345', u, new BigNumber('2')); + T('12', '12.345', u, null); + T('12', '12.345', u, u); + T('13', '12.345', u, 0); + T('13', '12.345', u, '-0'); + + assertException(function () {new BigNumber('12.345').round(u, NaN)}, ".round(u, NaN)"); + assertException(function () {new BigNumber('12.345').round(u, 'NaN')}, ".round(u, 'NaN')"); + assertException(function () {new BigNumber('12.345').round(u, [])}, ".round(u, [])"); + assertException(function () {new BigNumber('12.345').round(u, {})}, ".round(u, {})"); + assertException(function () {new BigNumber('12.345').round(u, '')}, ".round(u, '')"); + assertException(function () {new BigNumber('12.345').round(u, ' ')}, ".round(u, ' ')"); + assertException(function () {new BigNumber('12.345').round(u, 'hello')}, ".round(u, 'hello')"); + assertException(function () {new BigNumber('12.345').round(u, '\t')}, ".round(u, '\t')"); + assertException(function () {new BigNumber('12.345').round(u, new Date)}, ".round(u, new Date)"); + assertException(function () {new BigNumber('12.345').round(u, new RegExp)}, ".round(u, new RegExp)"); + assertException(function () {new BigNumber('12.345').round(u, 7.5)}, ".round(u, 7.5)"); + assertException(function () {new BigNumber('12.345').round(u, '1.1e1')}, ".round(u, '1.1e1')"); + + assertException(function () {new BigNumber('12.345').round(u, '-1')}, ".round('u, -1')"); + assertException(function () {new BigNumber('12.345').round(u, -23)}, ".round(u, -23)"); + assertException(function () {new BigNumber('12.345').round(u, 8.01)}, ".round(u, 8.01)"); + assertException(function () {new BigNumber('12.345').round(u, 9)}, ".round(u, 9)"); + assertException(function () {new BigNumber('12.345').round(u, -1)}, ".round(u, -1)"); + assertException(function () {new BigNumber('12.345').round(u, '-0.01')}, ".round(u, '-0.01')"); + assertException(function () {new BigNumber('12.345').round(u, '-1e-1')}, ".round(u, '-1e-1')"); + assertException(function () {new BigNumber('12.345').round(u, Infinity)}, ".round(u, Infinity)"); + assertException(function () {new BigNumber('12.345').round(u, '-Infinity')}, ".round(u, '-Infinity')"); + + BigNumber.config({ERRORS : false}); + + T('12.35', '12.345', new BigNumber('2')); + T('12', '12.345', null); + T('12', '12.345', u); + T('12', '12.345', NaN); + T('12', '12.345', 'NaN'); + T('12', '12.345', []); + T('12', '12.345', {}); + T('12', '12.345', ''); + T('12', '12.345', ' '); + T('12', '12.345', 'hello'); + T('12', '12.345', '\t'); + T('12', '12.345', new Date); + T('12', '12.345', new RegExp); + T('12', '12.345', 0); + T('12', '12.345', '-0'); + T('12.345', '12.345', 7.5); + T('12.345', '12.345', '1.1e1'); + T('12', '12.345', '-1'); + T('12', '12.345', -23); + T('12', '12.345', 1e9 + 1); + T('12', '12.345', 1e9 + 0.1); + T('12', '12.345', '-0.01'); + T('12', '12.345', '-1e-1'); + T('12', '12.345', Infinity); + T('12', '12.345', '-Infinity'); + + T('13', '12.345', u, new BigNumber('2')); + T('12', '12.345', u, null); + T('12', '12.345', u, u); + T('12', '12.345', u, NaN); + T('12', '12.345', u, 'NaN'); + T('12', '12.345', u, []); + T('12', '12.345', u, {}); + T('12', '12.345', u, ''); + T('12', '12.345', u, ' '); + T('12', '12.345', u, 'hello'); + T('12', '12.345', u, '\t'); + T('12', '12.345', u, new Date); + T('12', '12.345', u, new RegExp); + T('13', '12.345', u, 0); + T('12', '12.345', u, 7.5); + + T('12', '12.345', u, '-1'); + T('12', '12.345', u, -23); + T('12', '12.345', u, 8.01); + T('12', '12.345', u, 9); + T('12', '12.345', u, -1); + T('12', '12.345', u, '-0.01'); + T('12', '12.345', u, '-1e-1'); + T('12', '12.345', u, Infinity); + T('12', '12.345', u, '-Infinity'); + + T('12', '12.345', u, u); + T('12.3', '12.345', 1, NaN); + + BigNumber.config({ ROUNDING_MODE : 4 }); + + T('13', '12.345', u, 0); + T('13', '12.345', u, '0'); + T('13', '12.345', u, -0); + + log('\n ' + passed + ' of ' + total + ' tests passed in ' + (+new Date() - start) + ' ms \n'); + return [passed, total];; +})(this.BigNumber); +if (typeof module !== 'undefined' && module.exports) module.exports = count; \ No newline at end of file diff --git a/node_modules/mysql/node_modules/bignumber.js/test/sqrt.js b/node_modules/mysql/node_modules/bignumber.js/test/sqrt.js new file mode 100644 index 0000000..12a59ad --- /dev/null +++ b/node_modules/mysql/node_modules/bignumber.js/test/sqrt.js @@ -0,0 +1,2565 @@ +// Note: Some of the longer tests are commented-out. +var count = (function sqrt(BigNumber) { + var start = +new Date(), + log, + error, + passed = 0, + total = 0; + + if (typeof window === 'undefined') { + log = console.log; + error = console.error; + } else { + log = function (str) { document.body.innerHTML += str.replace('\n', '
      ') }; + error = function (str) { document.body.innerHTML += '
      ' + + str.replace('\n', '
      ') + '
      ' }; + } + + if (!BigNumber && typeof require === 'function') BigNumber = require('../bignumber'); + + function assert(expected, actual) { + total++; + if (expected !== actual) { + error('\n Test number: ' + total + ' failed'); + error(' Expected: ' + expected); + error(' Actual: ' + actual); + //process.exit(); + } + else { + passed++; + //log('\n Expected and actual: ' + actual); + } + } + + function T(root, value) { + assert(root, new BigNumber(value).sqrt().toString()) + } + + function isMinusZero(n) { + return n.toString() === '0' && n.s == -1; + } + + log('\n Testing sqrt...'); + + BigNumber.config({ + DECIMAL_PLACES : 20, + ROUNDING_MODE : 4, + ERRORS : true, + RANGE : 1E9, + EXPONENTIAL_AT : 1E9 + }); + + // Test the special cases specified by ES 15.8.2.17 + T('NaN', NaN); + T('2', 4); + T('0.1', 0.01); + + assert(false, isMinusZero(new BigNumber(0).sqrt())); + assert(false, isMinusZero(new BigNumber('0').sqrt())); + assert(true, isMinusZero(new BigNumber(-0).sqrt())); + assert(true, isMinusZero(new BigNumber('-0').sqrt())); + + T('Infinity', Infinity); + T('NaN', -Infinity); + + BigNumber.config({ERRORS : false}); + + T('NaN', undefined); + T('NaN', null); + T('NaN', []); + + BigNumber.config({ERRORS : true}); + + T('NaN', -1); + T('NaN', -35.999); + T('NaN', '-0.00000000000001'); + + // Test against Math.sqrt of squared integers. + for (var i = 0; i < 1e4; i++) { + var j = Math.floor(Math.random() * Math.pow(2, Math.floor(Math.random() * 26) + 1)); + j = Math.pow(j, 2); + T(Math.sqrt(j).toString(), j.toString()); + } + + // Initial rounding tests. + BigNumber.config({DECIMAL_PLACES : 0, ROUNDING_MODE : 0}); + T('11', '101'); // 10.04... + T('11', '111'); // 10.53... + T('1000', 999000.25); // 999.5 + T('1', 0.25); // 0.5 + + BigNumber.config({ROUNDING_MODE : 1}); + T('10', '101'); + T('10', '111'); + T('999', 999000.25); + T('0', 0.25); + + BigNumber.config({ROUNDING_MODE : 2}); + T('11', '101'); + T('11', '111'); + T('1000', 999000.25); + T('1', 0.25); + + BigNumber.config({ROUNDING_MODE : 3}); + T('10', '101'); + T('10', '111'); + T('999', 999000.25); + T('0', 0.25); + + BigNumber.config({ROUNDING_MODE : 4}); + T('10', '101'); + T('11', '111'); + T('1000', 999000.25); + T('1', 0.25); + + BigNumber.config({ROUNDING_MODE : 5}); + T('10', '101'); + T('11', '111'); + T('999', 999000.25); + T('0', 0.25); + + BigNumber.config({ROUNDING_MODE : 6}); + T('10', '101'); + T('11', '111'); + T('1000', 999000.25); + T('0', 0.25); + + BigNumber.config({ROUNDING_MODE : 7}); + T('10', '101'); + T('11', '111'); + T('1000', 999000.25); + T('1', 0.25); + + BigNumber.config({ROUNDING_MODE : 8}); + T('10', '101'); + T('11', '111'); + T('999', 999000.25); + T('0', 0.25); + + T('1850249442642802149156602', '3423.423e45'); + + BigNumber.config({DECIMAL_PLACES : 2, ROUNDING_MODE : 0}); + T('0.01', '0.0000001'); + + BigNumber.config({DECIMAL_PLACES : 2, ROUNDING_MODE : 1}); + T('0', '0.0000001'); + + BigNumber.config({DECIMAL_PLACES : 1, ROUNDING_MODE : 4}); + T('2.6', '7'); + T('30490054086086012186828338', '929643398172450327852909723850478224408368639961857.22035621170'); + T('10.6', '112.439121106'); + T('1007.1', '1014216.88354115504848'); + T('14496268662.7', '210141805141682355705.090'); + T('220983929785.7', '48833897223529771949253.378778868849049559624562513592321569'); + T('1180052939140.7', '1392524939174533146207410.12619352287'); + T('120468836204612.6', '14512740496493785900839846763.82328768609126547'); + + BigNumber.config({DECIMAL_PLACES : 10}); + T('1.0998820819', '1.20974059415009437172900'); + T('4372247436270791523.3453396636', '19116547643976509183347719022510178407.6659485696744517151189447'); + T('645.6559215353', '416871.569013637'); + T('9.3832989934', '88.0463'); + T('20195394139.0634492424', '407853944432118316238.060'); + T('203574.8431903851', '41442716779.9898655080652537763202594320363763900771333411614469322118841'); + T('434835511792648.9460364767', '189081922315974940615057855618.468666216438821105981678672603'); + T('1870631871126475697594310.8568506983', '3499263597274139582669747936294437345027253159338.2893957584'); + T('76418328144.477890944', '5839760876397101738682.29836547353'); + + BigNumber.config({DECIMAL_PLACES : 20}); + T('346.00153309920463414559', '119717.060907'); + T('263359760985014.62241224437474495709', '69358363706084030080212405554.3002793975414740876419285502'); + T('4.14645859760929707104', '17.193118901688058566035426'); + T('140510858365741634743828657.01509424473320174184', '19743301318677505942122892989445395975381650127203766.2408172612421'); + T('492974271191746.46231483998877250102', '243023632057033585989741137703.800100153395469328387'); + T('164.78781194238374484766', '27155.022964758430758944789724435'); + T('7366.78400597487165781255', '54269506.59068717789735301787194313247'); + T('23762326490698.34975320239967323205', '564648160250544549780100380.5514166040523'); + T('213634053277525452.46978666514569063831', '45639508719784583520579147409415270.488869'); + T('5.291502622129181181', '28'); + T('11.47156968462642430546', '131.59691102924'); + T('316358493873927157.1740897995245240711', '100082696646179606634487051294887359.5035240594546'); + T('500048686.48939798981543930512', '250048688859772239.7160140065116884182948058142834537'); + T('6022.37550162532363706717', '36269006.68257686850553015065182301017562876'); + T('6.8460154244205197188', '46.86792719140366873824501484885278'); + T('45189.48536114270306146252', '2042089587.204930656134881238462876156607'); + T('856160326.88774167756915629603', '733010505336524684.93087677'); + T('522130.17609423801622137924', '272619920788.2'); + T('52292561.72399606203863014237', '2734512011657938'); + + BigNumber.config({DECIMAL_PLACES : 73}); + T('26887623635.3707912464629567820776000467035000476700672842803068855485151227900078069', '722944304757350004189.2345'); + T('114762757369717325768.5268370835012953651076368760452481091507997658004031794079990971409285748', '13170490479100608368417468277815894123421.4484497151693769463078329436779'); + T('196.9765983083095309326276839454825311907994129311587833723243476358522465777', '38799.78028111312916322430363229763959902004100996'); + T('120016703223.6151811849913819241621570830640571538995217287681670128389432142005932891', '14404009052665322623144.3467403'); + T('91537950494500774895026544968.0163490860552716188715682357057804200505025482975033902996558184955299368', '8379196380733674659135406615691779599176042234171010036822.5636818392'); + T('15.1179067962466285341140019013436699388546686629569704817549228235938583883', '228.5511059'); + T('88.8125725884151110485104354919995585100283886785637267479492612921303631122', '7887.6730497725031780'); + T('3218172063439012577521546329.9090241863260351466688419917169048515469580394951005515857084741579831863', '10356631429899311993763656402168917661960022178561764021'); + T('19107253881509743.3779260316306131671181869224843248420235662435238492667857670998535738552', '365087150892469154433642273521263.83276841'); + T('400.3068500117233817006410985991134968372763336206911625632292309118077689013', '160245.5741663084'); + + BigNumber.config({DECIMAL_PLACES : 100}); + T('1.7320508075688772935274463415058723669428052538103806280558069794519330169088000370811461867572485757', 3); + T('1.0488088481701515469914535136799375984752718576815039848757557635800059255011006914193852889331944178', 1.1); + T('0.3162277660168379331998893544432718533719555139325216826857504852792594438639238221344248108379300295', 0.1); + T('0.9486832980505137995996680633298155601158665417975650480572514558377783315917714664032744325137900886', 0.9); + T('0.99999999999999999999999999999999999999994999999999999999999999999999999999999999875', '0.9999999999999999999999999999999999999999'); + T('11111.1110609999998870049994903925471271162312358157188236047401971668110785559489100264545730662845742184','123456789.00987654321'); + + BigNumber.config({DECIMAL_PLACES : 96, ROUNDING_MODE : 2}); + T('4949554350723.461435143921800511302655747834828959172999243354749297834846074272605873894779037895263058987767', '24498088270765545887271078.495701603537518591752268455746'); + + BigNumber.config({DECIMAL_PLACES : 92, ROUNDING_MODE : 2}); + T('34024250164506590698940450635557.52953427667455604566896038084827726129860253810440168217368794648838157166948213114635075589', '1157649599256926764239267638462457331268783688179593190844781949.0026'); + + BigNumber.config({DECIMAL_PLACES : 17, ROUNDING_MODE : 4}); + T('44.40502294864850084', '1971.80606307'); + + BigNumber.config({DECIMAL_PLACES : 81, ROUNDING_MODE : 3}); + T('53661161093118917.324727467936347226946388973481645944102836490011463645342312303037845424027327131', '2879520209861659438086912639838761.96836512'); + + BigNumber.config({DECIMAL_PLACES : 97, ROUNDING_MODE : 1}); + T('14192376.643123461322847366137186892667087869800484670508360531721790645551341594437545247745705539930735', '201423554780276.3686384009255372'); + + BigNumber.config({DECIMAL_PLACES : 73, ROUNDING_MODE : 3}); + T('4855847283088595702176944.8112532951528228009352578372167502504010846351042776625505257853252286361', '23579252836678896488410638492374748088831131237827.786414707871968195569'); + + BigNumber.config({DECIMAL_PLACES : 4, ROUNDING_MODE : 4}); + T('2553252336.0331', '6519097491458426345.3554782053764871036657698339691144086'); + + BigNumber.config({DECIMAL_PLACES : 61, ROUNDING_MODE : 5}); + T('313415140.8429479671745256541153927986977746351343070479080617690487091', '98229050509604911'); + + BigNumber.config({DECIMAL_PLACES : 24, ROUNDING_MODE : 0}); + T('1.537808174192351787259717', '2.3648539806128145775'); + + BigNumber.config({DECIMAL_PLACES : 20, ROUNDING_MODE : 4}); + T('62.30949119560079364913', '3882.4726930546528212066'); + + BigNumber.config({DECIMAL_PLACES : 60, ROUNDING_MODE : 1}); + T('20416269776260474006.927083982432268806569265768750039002235065141713481228428261', '416824071577046905366185925400975939799.8'); + + BigNumber.config({DECIMAL_PLACES : 82, ROUNDING_MODE : 4}); + T('174228234.709795821707519878032640346805381350977820681861118903584344693715322225768054125', '30355477770091701.53717021425249799086667828628302277998976752563'); + + BigNumber.config({DECIMAL_PLACES : 86, ROUNDING_MODE : 0}); + T('8346080245081.12842427016192329441165264650792513611706834892396914269233387534464159247031782538653', '69657055457333468703224935.763141948224298'); + + BigNumber.config({DECIMAL_PLACES : 92, ROUNDING_MODE : 3}); + T('272.7796965259930339886508185007545884578607374328807903817278380417881107290650631082406652753', '74408.76283681285609575234724616'); + + BigNumber.config({DECIMAL_PLACES : 5, ROUNDING_MODE : 0}); + T('2576.47265', '6638211.30041'); + + BigNumber.config({DECIMAL_PLACES : 54, ROUNDING_MODE : 6}); + T('163256493.009563679477426538597267934928790668772138046453329418', '26652682509781714.54341292267818515442604'); + + BigNumber.config({DECIMAL_PLACES : 57, ROUNDING_MODE : 6}); + T('6413898755.503103237879757203310804711689478588298288050385897319721', '41138097245844256487.4'); + + BigNumber.config({DECIMAL_PLACES : 41, ROUNDING_MODE : 4}); + T('651.83586891179899229526795359574620017366743', '424890'); + + BigNumber.config({DECIMAL_PLACES : 48, ROUNDING_MODE : 3}); + T('9.840172762711028743800750259911398446280416492345', '96.829'); + + BigNumber.config({DECIMAL_PLACES : 38, ROUNDING_MODE : 4}); + T('936008582670169403.24586736956499382709796268807769178807', '876112066832219350113028056940121643.4989897905396802'); + + BigNumber.config({DECIMAL_PLACES : 67, ROUNDING_MODE : 1}); + T('3.1691816831920187703897673787206897581382652839389771357354751032132', '10.043712541079797228859738302727066114683041689841812835450076520'); + + BigNumber.config({DECIMAL_PLACES : 34, ROUNDING_MODE : 2}); + T('201959414.0905242545521797507742344926679143', '40787604939787846.812484750440288725205988'); + + BigNumber.config({DECIMAL_PLACES : 87, ROUNDING_MODE : 2}); + T('3.235364585328831221179338900994013430389718885202447735097146763445925265374153439191445', '10.4675840'); + + BigNumber.config({DECIMAL_PLACES : 75, ROUNDING_MODE : 2}); + T('1391.926691686756208298398279775140528179063627807536777764086771937670002756456', '1937459.9150300380745526266059714001651697913188367053087'); + + BigNumber.config({DECIMAL_PLACES : 45, ROUNDING_MODE : 2}); + T('869.8354526359820716456765000567449871995222312', '756613.7146624438099121'); + + BigNumber.config({DECIMAL_PLACES : 97, ROUNDING_MODE : 6}); + T('118594.4273063315320244062844564170472198563498805200012242127200252960812599679770627273052218882949925', '14064638188.1167541187722341530354253926613230053009933342'); + + BigNumber.config({DECIMAL_PLACES : 43, ROUNDING_MODE : 2}); + T('15459965429.4176806583122774869069153370447277862964242', '239010531078789811116.914'); + + BigNumber.config({DECIMAL_PLACES : 5, ROUNDING_MODE : 4}); + T('5248173.56787', '27543325798538.753780506094441280733789361778933753426582596791104'); + + BigNumber.config({DECIMAL_PLACES : 23, ROUNDING_MODE : 6}); + T('6.05855328019481326674235', '36.7060678489593315124567'); + + BigNumber.config({DECIMAL_PLACES : 27, ROUNDING_MODE : 0}); + T('907424493602245756936.066129375330541537462629768', '823419211589292150660922033473258691103594.23268549807171826865266573694'); + + BigNumber.config({DECIMAL_PLACES : 73, ROUNDING_MODE : 2}); + T('11439280.9959241551974895751378888566402750717305622394543095198836564669553210222', '130857149703711.532'); + + BigNumber.config({DECIMAL_PLACES : 93, ROUNDING_MODE : 6}); + T('164207.20075782859923311531097410558094817321169039986325465336651402772907533144002814794168144323', '26964004780.7218252942882108'); + + BigNumber.config({DECIMAL_PLACES : 14, ROUNDING_MODE : 5}); + T('67866.91300857901339', '4605917881.314031310494203432328648'); + + BigNumber.config({DECIMAL_PLACES : 54, ROUNDING_MODE : 6}); + T('2.723397260313830449769700482256736114679660269490922765', '7.4168926374848775741132294'); + + BigNumber.config({DECIMAL_PLACES : 75, ROUNDING_MODE : 6}); + T('145626737347.699863159799647089039014085200730659988131836086866937945539247414906654868', '21207146630535962175511.4592'); + + BigNumber.config({DECIMAL_PLACES : 48, ROUNDING_MODE : 2}); + T('3198723.293675674761595756274163847124886137068077187912', '10231830709503.357046273671271695065871403474525'); + + BigNumber.config({DECIMAL_PLACES : 23, ROUNDING_MODE : 0}); + T('19699.655043109373052433709', '388076408.8175045546569'); + + BigNumber.config({DECIMAL_PLACES : 69, ROUNDING_MODE : 1}); + T('15625591.477694858909123645800863577029584072458683168542082897370551849161553', '244159109027810.20442572274363387'); + + BigNumber.config({DECIMAL_PLACES : 16, ROUNDING_MODE : 1}); + T('85762713.1327157666976061', '7355242963884497.437336977648000579022368327415840055129120741942567239'); + + BigNumber.config({DECIMAL_PLACES : 49, ROUNDING_MODE : 0}); + T('41.0148460976104358708576256643898030638770464836414', '1682.21760041067'); + + BigNumber.config({DECIMAL_PLACES : 92, ROUNDING_MODE : 3}); + T('627.06679575379477143240692835573346249172484449442579029111338455375888695749139590976427077308', '393212.7663369313683879605008384834086623'); + + BigNumber.config({DECIMAL_PLACES : 39, ROUNDING_MODE : 5}); + T('5.880136052847757025272423749873232616784', '34.576'); + + BigNumber.config({DECIMAL_PLACES : 55, ROUNDING_MODE : 2}); + T('74542661576900.1739714442102128431140459355738187797819043083309413315', '5556608394968269531202589612.9'); + + BigNumber.config({DECIMAL_PLACES : 43, ROUNDING_MODE : 5}); + T('7719200214.3705019090215357285448226659983404326837819', '59586051949537602626.95016591737228440200846895047666959869445081113'); + + BigNumber.config({DECIMAL_PLACES : 2, ROUNDING_MODE : 1}); + T('74629.64', '5569583803.0907402'); + + BigNumber.config({DECIMAL_PLACES : 62, ROUNDING_MODE : 6}); + T('44.05501263636205450407476438041804283847324427155286698836103844', '1940.8441383900203'); + + BigNumber.config({DECIMAL_PLACES : 24, ROUNDING_MODE : 1}); + T('1119.912102354466031064620923', '1254203.117'); + + BigNumber.config({DECIMAL_PLACES : 64, ROUNDING_MODE : 1}); + T('92093628036.6480124503328403126750210810151658188780763586760022178450462311', '8481236324952480852423.718960437545027'); + + BigNumber.config({DECIMAL_PLACES : 32, ROUNDING_MODE : 0}); + T('7.55149177315316950216695542333911', '57.025028'); + + BigNumber.config({DECIMAL_PLACES : 34, ROUNDING_MODE : 4}); + T('1947605507655512.1474872179815308192647511525219417', '3793167213450085186132700081381'); + + BigNumber.config({DECIMAL_PLACES : 60, ROUNDING_MODE : 2}); + T('897186472920280057757.758955997894245720068203481844645803566957566661460082190511', '804943567191132421390195361422932115503582.03422'); + + BigNumber.config({DECIMAL_PLACES : 38, ROUNDING_MODE : 0}); + T('8775397.48306750827108348789044450160735393428', '77007600985827.5591133'); + + BigNumber.config({DECIMAL_PLACES : 94, ROUNDING_MODE : 6}); + T('557716086077.5080956743653150675842959387446784555727262266063122593621607958161147001199667165261203780317', '311047232669614419511648.6130023664452767398438696'); + + BigNumber.config({DECIMAL_PLACES : 19, ROUNDING_MODE : 1}); + T('3.6766253682232922013', '13.517574098263058968167681315043395710343763189956497798543'); + + BigNumber.config({DECIMAL_PLACES : 66, ROUNDING_MODE : 3}); + T('364.437601989709154496727744417233984148798720533510776338306467381487', '132814.76574400966188457585354574350011547665650395112601058'); + + BigNumber.config({DECIMAL_PLACES : 34, ROUNDING_MODE : 5}); + T('29784617918.0127174734394784458305404701929975', '887123464522004224898.5545193466489'); + + BigNumber.config({DECIMAL_PLACES : 40, ROUNDING_MODE : 4}); + T('374863740368.0156985152529892838083189109926642299794', '140522823842699082383715.919571886197001394994582'); + + BigNumber.config({DECIMAL_PLACES : 55, ROUNDING_MODE : 5}); + T('3321962129060763825931501.6171393711588977731624802456157919679857160686287774881', '11035432386913922898118885283020330437836330418535.765864'); + + BigNumber.config({DECIMAL_PLACES : 63, ROUNDING_MODE : 1}); + T('3039991938095044282.834999396730197828406224765246402870200714765906547758763203772', '9241550983682863551151813316288949279.9625949439074666'); + + BigNumber.config({DECIMAL_PLACES : 73, ROUNDING_MODE : 5}); + T('5.5727910421977962406401022785010286010813965565340383771288278905072628945', '31.056'); + + BigNumber.config({DECIMAL_PLACES : 79, ROUNDING_MODE : 2}); + T('1809373906.386837382140423787863676125946315451309506008234344142479881132815536036260566', '3273833933113563766.3701096193056864'); + + BigNumber.config({DECIMAL_PLACES : 29, ROUNDING_MODE : 4}); + T('948722.35086770259132293410301310241', '900074099035.9401838348750892'); + + BigNumber.config({DECIMAL_PLACES : 36, ROUNDING_MODE : 1}); + T('23603002885797536.790280728725364655699852314300322649', '557101745226966849549415425061219.969394346783798760227'); + + BigNumber.config({DECIMAL_PLACES : 71, ROUNDING_MODE : 0}); + T('1.3760699520736582089086174843894761768111119574016193232032195760251607', '1.893568513'); + + BigNumber.config({DECIMAL_PLACES : 21, ROUNDING_MODE : 0}); + T('14865553.721249212888439807434', '220984687439346.321003197181614764009809253917'); + + BigNumber.config({DECIMAL_PLACES : 79, ROUNDING_MODE : 1}); + T('3293155557597199373259839225.706003736695865575939572351947834646050410715323588632698181660823328571895043', '10844873526533321118731760593542551681937887331657167954.4066926866'); + + BigNumber.config({DECIMAL_PLACES : 55, ROUNDING_MODE : 0}); + T('1.4602844538376761066216387158903803538206186160126991802', '2.13243068612'); + + BigNumber.config({DECIMAL_PLACES : 82, ROUNDING_MODE : 0}); + T('52497683.2535666615551547765238857555777973908683364642662996875860780953333112481757317373', '2756006746991813.49967765680'); + + BigNumber.config({DECIMAL_PLACES : 96, ROUNDING_MODE : 2}); + T('229.108483256294986105584052287445152310628239217404673001762961439710445106676980785785353195978212', '52490.6971'); + + BigNumber.config({DECIMAL_PLACES : 18, ROUNDING_MODE : 1}); + T('247788926631.668855265587728589', '61399352161274570866824.398764295216033428917127'); + + BigNumber.config({DECIMAL_PLACES : 51, ROUNDING_MODE : 3}); + T('21424.038976941299431640698751966107735138702410669278306', '458989446.0855'); + + BigNumber.config({DECIMAL_PLACES : 90, ROUNDING_MODE : 0}); + T('719485.015161442678887199799035233897302403555352773104081712230052841078911919691996286833814524', '517658687041.861401507658'); + + BigNumber.config({DECIMAL_PLACES : 16, ROUNDING_MODE : 1}); + T('5.8309518948453004', '34'); + + BigNumber.config({DECIMAL_PLACES : 35, ROUNDING_MODE : 1}); + T('756731558.25262830674557663857258007802853198', '572642651255450988.3807853'); + + BigNumber.config({DECIMAL_PLACES : 60, ROUNDING_MODE : 5}); + T('56599816.250503709163296236449780271198341341082422352679019828047161', '3203539199590783.75467227017766942'); + + BigNumber.config({DECIMAL_PLACES : 29, ROUNDING_MODE : 1}); + T('315.35186696767786854256245741213', '99446.8'); + + BigNumber.config({DECIMAL_PLACES : 28, ROUNDING_MODE : 1}); + T('21743622919.6152043904934006640996008653', '472785137670415625131.3819412384141603569725008109774351813892945'); + + BigNumber.config({DECIMAL_PLACES : 59, ROUNDING_MODE : 1}); + T('9931.93848832625073050157085444478223645326098496189725178399175', '98643402.13589633051811977376659116574508796'); + + BigNumber.config({DECIMAL_PLACES : 32, ROUNDING_MODE : 6}); + T('12491945070243173325.00123703924746770276608629177675', '156048691637972720536868554818649758614'); + + BigNumber.config({DECIMAL_PLACES : 13, ROUNDING_MODE : 3}); + T('31142.7911241108894', '969873439'); + + BigNumber.config({DECIMAL_PLACES : 8, ROUNDING_MODE : 5}); + T('323.97605471', '104960.4840234371387'); + + BigNumber.config({DECIMAL_PLACES : 16, ROUNDING_MODE : 5}); + T('5715183064.0940040641822561', '32663317456106928967.132035290253014719696309540999261182915037018712'); + + BigNumber.config({DECIMAL_PLACES : 99, ROUNDING_MODE : 2}); + T('135.35229191926174097438753947924689763303130529240391689831443968668652723708826191007753307865150657', '18320.242927797047184106'); + + BigNumber.config({DECIMAL_PLACES : 42, ROUNDING_MODE : 4}); + T('1.986294948124507296707366989944167364007457', '3.94536762094493913289346223994950919328456012507449654266826'); + + BigNumber.config({DECIMAL_PLACES : 62, ROUNDING_MODE : 6}); + T('1854467167302463060.67001538852537388423828924920448451675904798181668319798201139', '3439048474602821519577229021879982239.2082'); + + BigNumber.config({DECIMAL_PLACES : 47, ROUNDING_MODE : 2}); + T('81193654.78972507709037814751156680233229599082421344592', '6592409578113045.952464677461833939906456779681791713165521338857097972'); + + BigNumber.config({DECIMAL_PLACES : 53, ROUNDING_MODE : 2}); + T('243658571.81955213863332506453273200107839362175562305528292871', '59369499621143847.5904454643435133899921413'); + + BigNumber.config({DECIMAL_PLACES : 15, ROUNDING_MODE : 2}); + T('1.972442648088913', '3.89053'); + + BigNumber.config({DECIMAL_PLACES : 44, ROUNDING_MODE : 5}); + T('29173231718.778879604378348144121047338664684120880285', '851077448917566101882.514088939153719024901521'); + + BigNumber.config({DECIMAL_PLACES : 70, ROUNDING_MODE : 6}); + T('2663045169970861026925375.635420072098834063612997764970291415141689017483375036375781735588621', '7091809577305132096990572152434051531398473618829.89422557768661926'); + + BigNumber.config({DECIMAL_PLACES : 88, ROUNDING_MODE : 5}); + T('220761.160604830397059610011998293759083892046977144231182486245187301213113818936381230594214', '48735490031.5917204821'); + + BigNumber.config({DECIMAL_PLACES : 28, ROUNDING_MODE : 0}); + T('161677855435317442406.2546035610007912236205334351', '26139728938163405854159841438358732967516.30006485122550144217058909'); + + BigNumber.config({DECIMAL_PLACES : 27, ROUNDING_MODE : 6}); + T('244041886899114069999190717.069960065813984399980837008', '59556442561279983551883153005400521473838950253623262'); + + BigNumber.config({DECIMAL_PLACES : 61, ROUNDING_MODE : 3}); + T('1107466938973440740730667939506694.2638801341959912170851419737317922658410730057816703901502302', '1226483020919202717870476287034767333832211470320394554682503342877'); + + BigNumber.config({DECIMAL_PLACES : 51, ROUNDING_MODE : 1}); + T('2088927.797138422758659686170900239830365738839263869523289', '4363619341657.58350562244267149496471405124'); + + BigNumber.config({DECIMAL_PLACES : 61, ROUNDING_MODE : 6}); + T('90061141477839967.2682846126818450599184988316687847204716382695549492605718861', '8111009204291506563499764980695382.1759246268375'); + + BigNumber.config({DECIMAL_PLACES : 90, ROUNDING_MODE : 3}); + T('5429621071395721.253939502546988879109480438494987866198414850987001042506015656799576011128802517427918324', '29480784978944419958421524887597.42349107833570174813'); + + BigNumber.config({DECIMAL_PLACES : 10, ROUNDING_MODE : 6}); + T('1476747291384.9099630858', '2180782562612668171679967.63324'); + + BigNumber.config({DECIMAL_PLACES : 84, ROUNDING_MODE : 6}); + T('9210807993.639856342437524083401141956511342156180578284602614905116773271331676341823693120447', '84838983895699875876'); + + BigNumber.config({DECIMAL_PLACES : 48, ROUNDING_MODE : 2}); + T('2.388242031285774017289777195752330791381535517849', '5.7037'); + + BigNumber.config({DECIMAL_PLACES : 26, ROUNDING_MODE : 6}); + T('3.37200237247840619012635848', '11.3704'); + + BigNumber.config({DECIMAL_PLACES : 28, ROUNDING_MODE : 6}); + T('113893455834773270196180930512.9915840908366637690221083458', '12971719281987449465429560596505161586489324719573129843872.171'); + + BigNumber.config({DECIMAL_PLACES : 8, ROUNDING_MODE : 2}); + T('90231.00398976', '8141634081'); + + BigNumber.config({DECIMAL_PLACES : 99, ROUNDING_MODE : 5}); + T('1597579508606622211.845652947503721264640830072971865988482347827730509123712404166521804347520039996034940695234128954', '2552260286319776493852490523528001935.48994776557'); + + BigNumber.config({DECIMAL_PLACES : 17, ROUNDING_MODE : 2}); + T('1299424183315225375029397575.07015635096795459', '1688503208184440439916254126997862516329616872207524279.05763620'); + + BigNumber.config({DECIMAL_PLACES : 16, ROUNDING_MODE : 4}); + T('2693874.2163861651089144', '7256958293710.1751161960'); + + BigNumber.config({DECIMAL_PLACES : 74, ROUNDING_MODE : 6}); + T('5732941347.55256238286493674720703619067740838113000509955135586822000095629002988639', '32866616494477789872.3518055761631860371'); + + BigNumber.config({DECIMAL_PLACES : 15, ROUNDING_MODE : 2}); + T('68038.789982024004217', '4629276942.217969996065357856482669982723691716245127238'); + + BigNumber.config({DECIMAL_PLACES : 4, ROUNDING_MODE : 6}); + T('16288419988283588.674', '265312625714716342994884296792766'); + + BigNumber.config({DECIMAL_PLACES : 82, ROUNDING_MODE : 3}); + T('3.0446674695276658405945560356807623150745767505665219956760952761834211468101552516', '9.27'); + + BigNumber.config({DECIMAL_PLACES : 52, ROUNDING_MODE : 2}); + T('79.6969259131116047841695097300091923882482217290138206', '6351.60'); + + BigNumber.config({DECIMAL_PLACES : 99, ROUNDING_MODE : 0}); + T('126.370571227352967491262772615456540499132900009240252107883825190012068734134048217720997378442783801', '15969.52127232748969252'); + + BigNumber.config({DECIMAL_PLACES : 37, ROUNDING_MODE : 0}); + T('88796173.2384202907121064495468439111066566843', '7884760381787547.81840923'); + + BigNumber.config({DECIMAL_PLACES : 37, ROUNDING_MODE : 4}); + T('365543004.8061649872764474380277913079084143042', '133621688362719958.9872107366'); + + BigNumber.config({DECIMAL_PLACES : 100, ROUNDING_MODE : 0}); + T('143498617762600.4140327037226405237893689515984193391783866884659658377021608257588943250828403643110208744660318261', '20591853299776899056200145422.1846447111664776'); + + BigNumber.config({DECIMAL_PLACES : 61, ROUNDING_MODE : 4}); + T('12782418240925459479.2031797451385115697726882124289981424172567856909899486963994', '163390216085943917855551726128161143915.02664633'); + + BigNumber.config({DECIMAL_PLACES : 43, ROUNDING_MODE : 4}); + T('12.07324881148295353275508188921102928327377', '145.76333686397455005144032806105'); + + BigNumber.config({DECIMAL_PLACES : 66, ROUNDING_MODE : 0}); + T('211449127401352679264090.403777356355051577835784756039917073614638523204498613898150412748', '44710733478793476460089809808062830465327473341.01106'); + + BigNumber.config({DECIMAL_PLACES : 89, ROUNDING_MODE : 0}); + T('8434.69565989858107121020381907194564097406849153317203553829228632792387361758032492018751318', '71144090.8751119600030'); + + BigNumber.config({DECIMAL_PLACES : 90, ROUNDING_MODE : 3}); + T('431.790690033956151299657456473777574071370518767442408773272403696713563734140114626948052851', '186443.2'); + + BigNumber.config({DECIMAL_PLACES : 33, ROUNDING_MODE : 3}); + T('1.108018699799390988378447956003009', '1.22770543910513292750985'); + + BigNumber.config({DECIMAL_PLACES : 12, ROUNDING_MODE : 2}); + T('9581559.366976805376', '91806279902900.9593482950972'); + + BigNumber.config({DECIMAL_PLACES : 94, ROUNDING_MODE : 5}); + T('2418839541.0987386261807014430009304412452809170287221944718963714320359391426925314537124868517232384773', '5850784725582756467.469546239192868802578236912006511'); + + BigNumber.config({DECIMAL_PLACES : 90, ROUNDING_MODE : 6}); + T('11040265120287567759934269.263029933332634568404407042737837112821286414662597953247828811089203658709412952839364191', '121887453926238263019360388091188570494838624535471'); + + BigNumber.config({DECIMAL_PLACES : 49, ROUNDING_MODE : 3}); + T('233.2570187785530519308734053376321961140912819913698', '54408.8368094582511025342'); + + BigNumber.config({DECIMAL_PLACES : 40, ROUNDING_MODE : 4}); + T('29.6490992649274348544759045400715775766925', '879.06908722152055781935911221883768070437'); + + BigNumber.config({DECIMAL_PLACES : 19, ROUNDING_MODE : 3}); + T('7505560981.6906822826179406598', '56333445649877598342.8475019094481329264104906070647412405735303985455'); + + BigNumber.config({DECIMAL_PLACES : 51, ROUNDING_MODE : 6}); + T('4.666365343768356140513396346961342877525930132228624', '21.7749655215223685799362730400310696'); + + BigNumber.config({DECIMAL_PLACES : 22, ROUNDING_MODE : 5}); + T('209228165501008616561872.1477049513127309490959', '43776425238917452235867870727072879650986013517.690781514934992668'); + + BigNumber.config({DECIMAL_PLACES : 42, ROUNDING_MODE : 1}); + T('17.122151356727858418696401754969183602519558', '293.168067082697642757847'); + + BigNumber.config({DECIMAL_PLACES : 68, ROUNDING_MODE : 2}); + T('32739585325.26765210723377428518717434262024156135815886665844964799952569026833', '1071880447270480993629.4640435138594357807725479611653996305'); + + BigNumber.config({DECIMAL_PLACES : 11, ROUNDING_MODE : 5}); + T('1.6928161743', '2.86562659997131621752114765980023438405067892440724267945937722378861'); + + BigNumber.config({DECIMAL_PLACES : 90, ROUNDING_MODE : 0}); + T('16417.554697867626966836606837813475423042958767384549424626836426490725472399363532843792074346', '269536102.25747538817901717219695597174449981'); + + BigNumber.config({DECIMAL_PLACES : 29, ROUNDING_MODE : 6}); + T('109652272385643.1603769184581163062699906986', '12023620839335281581899617727.8772961473185586727206798164'); + + BigNumber.config({DECIMAL_PLACES : 90, ROUNDING_MODE : 6}); + T('13489.123629030538320414969169194877155101718802208604977345597134035561855309153297129880622467', '181956456.27927'); + + BigNumber.config({DECIMAL_PLACES : 46, ROUNDING_MODE : 3}); + T('15162908032.86965932250477929505589077613516814656108803', '229913780013263241677.3791'); + + BigNumber.config({DECIMAL_PLACES : 48, ROUNDING_MODE : 4}); + T('2.372129844675455365912878765809140727257324413647', '5.627'); + + BigNumber.config({DECIMAL_PLACES : 54, ROUNDING_MODE : 0}); + T('148.820093791127547454620941738144491984235834280198020332', '22147.420316'); + + BigNumber.config({DECIMAL_PLACES : 41, ROUNDING_MODE : 1}); + T('739871537758100310.43883822919081011754036378492392360075543', '547409892384536053343836850938988791.2508666160979'); + + BigNumber.config({DECIMAL_PLACES : 89, ROUNDING_MODE : 2}); + T('63478.7126270666964166648665771468502603343618655904464016578865228572987361391362408539907916', '4029546956.789716846462443886848'); + + BigNumber.config({DECIMAL_PLACES : 54, ROUNDING_MODE : 1}); + T('77140.793792105688747751462443855549841986175279935245610391', '5950702066.8761715670568717062071879678486494595966218026'); + + BigNumber.config({DECIMAL_PLACES : 93, ROUNDING_MODE : 1}); + T('162820594803834668.752129825654424512211529624619694188452350414129430986701621110932095616631076098099130503248', '26510546092274513134180208644185957.57422670990654'); + + BigNumber.config({DECIMAL_PLACES : 73, ROUNDING_MODE : 5}); + T('204494310168.4671924285173237222417467622712661919483412527661975953571549254104320801', '41817922891277264574994.94380'); + + BigNumber.config({DECIMAL_PLACES : 30, ROUNDING_MODE : 0}); + T('4395.909427668232162220120918266434', '19324019.69626244445210257981'); + + BigNumber.config({DECIMAL_PLACES : 50, ROUNDING_MODE : 0}); + T('5.22775235102390824796354516485007398148629306999271', '27.329394643636'); + + BigNumber.config({DECIMAL_PLACES : 68, ROUNDING_MODE : 3}); + T('997295.09412022112243931640765631069576943976068322455480694643995328956477', '994597504756.26070722226025041925449713707868740387903881304557'); + + BigNumber.config({DECIMAL_PLACES : 67, ROUNDING_MODE : 5}); + T('203637147057.7748844672269277496593344371356921412578700817688601724867963410626', '41468087661829834285659.350412232933496521226586662970934783390865142'); + + BigNumber.config({DECIMAL_PLACES : 84, ROUNDING_MODE : 1}); + T('939333.959604513485668563847772506141997730133849933463092593953521840168273751255714815246', '882348287666.2937728893202363'); + + BigNumber.config({DECIMAL_PLACES : 9, ROUNDING_MODE : 4}); + T('4.568369512', '20.87'); + + BigNumber.config({DECIMAL_PLACES : 87, ROUNDING_MODE : 4}); + T('370.818280526354041083927163168590728498008550586626184882319882834674931772525681078764889', '137506.1971725218006486309891482928119051089854653'); + + BigNumber.config({DECIMAL_PLACES : 77, ROUNDING_MODE : 0}); + T('9677366.13442750739243118863157357061982716666842510521012211042628756371590553458718', '93651415299764.397079279228147695065210419679'); + + BigNumber.config({DECIMAL_PLACES : 32, ROUNDING_MODE : 4}); + T('459260874.20127731126343992531130965108732', '210920550572121463.814947484719373265508800614967431627085952061224891'); + + BigNumber.config({DECIMAL_PLACES : 94, ROUNDING_MODE : 2}); + T('31.9734264663642204389422311887643391814535306082202464098568847002787713669652098830099427401843', '1022.3'); + + BigNumber.config({DECIMAL_PLACES : 2, ROUNDING_MODE : 0}); + T('2973063742', '8839108013968540509.06630564811'); + + BigNumber.config({DECIMAL_PLACES : 43, ROUNDING_MODE : 4}); + T('34146881023818508.954756503743080316053431668549275132795068', '1166009483654816582318330803409852.007911'); + + BigNumber.config({DECIMAL_PLACES : 12, ROUNDING_MODE : 5}); + T('7.549834435271', '57'); + + BigNumber.config({DECIMAL_PLACES : 96, ROUNDING_MODE : 5}); + T('457768114718.924178666375597479663315126937742538839621311715859853903792113549247134805042232897618803407927', '209551646853318127271063.5596189'); + + BigNumber.config({DECIMAL_PLACES : 99, ROUNDING_MODE : 2}); + T('2458857125246799394445091629.502227209261508743296310153768826317308293252686594142446545917844105369673045257530483701916834102', '6045978362376954524014907890057287078792404475852907401'); + + BigNumber.config({DECIMAL_PLACES : 89, ROUNDING_MODE : 3}); + T('232.95426589783669381174298578564010084473683056750226995822363784044724761408941752678312753', '54267.69'); + + BigNumber.config({DECIMAL_PLACES : 26, ROUNDING_MODE : 6}); + T('411369926586282.35173941504630680193130958', '169225216499603331644025273726.130552532747109702369176231397148094894'); + + BigNumber.config({DECIMAL_PLACES : 42, ROUNDING_MODE : 4}); + T('146.837594711181641908188613240193044745216301', '21561.27922056523889531529752'); + + BigNumber.config({DECIMAL_PLACES : 80, ROUNDING_MODE : 1}); + T('2436.80241424922206290898076140846108744470830585565672963845308477988719476570192112', '5938006.00609083724509944'); + + BigNumber.config({DECIMAL_PLACES : 51, ROUNDING_MODE : 3}); + T('237641.142572063817719734051264723120416667001252355959725', '56473312642.9559622068518833017478'); + + BigNumber.config({DECIMAL_PLACES : 29, ROUNDING_MODE : 5}); + T('2.54986118578098487598754727764', '6.50179206675241026831530806973871597654152197264612412571'); + + BigNumber.config({DECIMAL_PLACES : 40, ROUNDING_MODE : 1}); + T('5968940791314695.9391845388865719907476112181090409748506', '35628254170220508537420332407309.79446040'); + + BigNumber.config({DECIMAL_PLACES : 9, ROUNDING_MODE : 6}); + T('7757883860673599094.299765297', '60184761995699906684011270143497832606.405945309948'); + + BigNumber.config({DECIMAL_PLACES : 43, ROUNDING_MODE : 6}); + T('2.2181073012818834324103200205219865836926753', '4.92'); + + BigNumber.config({DECIMAL_PLACES : 73, ROUNDING_MODE : 2}); + T('603896.1020372225715031692835372960243779222201981644175886120182699827032153603', '364690502055.7515356757459417779202315'); + + BigNumber.config({DECIMAL_PLACES : 73, ROUNDING_MODE : 4}); + T('910.9629520458008175934592151820959436914447449057963517034109551518362704397', '829853.5'); + + BigNumber.config({DECIMAL_PLACES : 81, ROUNDING_MODE : 6}); + T('4.242640687119285146405066172629094235709015626130844219530039213972197435386321117', '18'); + + BigNumber.config({DECIMAL_PLACES : 12, ROUNDING_MODE : 4}); + T('1259229966702.622212273094', '1585660109041887045436663.9'); + + BigNumber.config({DECIMAL_PLACES : 26, ROUNDING_MODE : 1}); + T('163.04833062468649267909332731', '26584.7581194970792'); + + BigNumber.config({DECIMAL_PLACES : 64, ROUNDING_MODE : 6}); + T('4204818551811.1334068235516094940662770670832347987097641633616076970760141535', '17680499053655077194352936.9862782964932'); + + BigNumber.config({DECIMAL_PLACES : 9, ROUNDING_MODE : 4}); + T('39405180.06334322', '1552768215824502'); + + BigNumber.config({DECIMAL_PLACES : 2, ROUNDING_MODE : 6}); + T('11019819.18', '121436414839837.12468'); + + BigNumber.config({DECIMAL_PLACES : 34, ROUNDING_MODE : 0}); + T('827301397472.2029918861527516536634619742535183', '684427602259459998932963.33834317372593105949228354646289796636815'); + + BigNumber.config({DECIMAL_PLACES : 46, ROUNDING_MODE : 1}); + T('2.7666477911002694164386944265228742439351110337', '7.65434'); + + BigNumber.config({DECIMAL_PLACES : 86, ROUNDING_MODE : 2}); + T('423.17097521237558847890270524607668156801132098651031712232154305066696431425891584532068', '179073.674262192994730735440'); + + BigNumber.config({DECIMAL_PLACES : 22, ROUNDING_MODE : 4}); + T('79.8964796181302813829514', '6383.4474553703074736391804543616'); + + BigNumber.config({DECIMAL_PLACES : 97, ROUNDING_MODE : 4}); + T('256884.8986204117896931254014585418288760261941990857711922965396545498637125556442506103725098664222399', '65989851139.2192430115427289'); + + BigNumber.config({DECIMAL_PLACES : 90, ROUNDING_MODE : 5}); + T('208901.771039551638948558459935195746717360564690378279861596712182280143337256297483637095086136', '43639949943.461255846177212498507'); + + BigNumber.config({DECIMAL_PLACES : 96, ROUNDING_MODE : 0}); + T('16935269806518296805647.546457060582195325905464915681524239174883463381011239795201896196859153349350411010935076375029', '286803363419570270122726919163225156875554457.5998001852'); + + BigNumber.config({DECIMAL_PLACES : 26, ROUNDING_MODE : 4}); + T('51576.16987553369007338491641136', '2660101299.0299088953962881552848995811'); + + BigNumber.config({DECIMAL_PLACES : 22, ROUNDING_MODE : 5}); + T('19594015.1384231226764662349318', '383925429244754.5033'); + + BigNumber.config({DECIMAL_PLACES : 84, ROUNDING_MODE : 2}); + T('13803.380831002140583034541319780513750531431940983173205661145824004926065412840500070745', '190533322.36567734512665230751076729702896'); + + BigNumber.config({DECIMAL_PLACES : 17, ROUNDING_MODE : 2}); + T('3.87298334620741689', '15'); + + BigNumber.config({DECIMAL_PLACES : 11, ROUNDING_MODE : 5}); + T('2.59229627936', '6.72'); + + BigNumber.config({DECIMAL_PLACES : 38, ROUNDING_MODE : 2}); + T('27378680.92056694834550996640150630587355668564', '749592168950216.6421'); + + BigNumber.config({DECIMAL_PLACES : 87, ROUNDING_MODE : 3}); + T('153816531.812650974480814609014611069782098313441090291614251952157913199023826783428321238042213', '23659525458872269.27721846475011520302565099737'); + + BigNumber.config({DECIMAL_PLACES : 10, ROUNDING_MODE : 0}); + T('2029498.8125968959', '4118865430332.21'); + + BigNumber.config({DECIMAL_PLACES : 70, ROUNDING_MODE : 5}); + T('7473970526006.1604681414601953537014727721512435634625424159607807892328716740512518', '55860235423608802990631308.948719255851037211256093771306843473391914'); + + BigNumber.config({DECIMAL_PLACES : 12, ROUNDING_MODE : 3}); + T('2241646555429607930993.608927689837', '5024979279469426302209565333918945376304889.403534974'); + + BigNumber.config({DECIMAL_PLACES : 30, ROUNDING_MODE : 4}); + T('83117929425.537107714299371091957543379566', '6908590191988567392806.80486418318444628'); + + BigNumber.config({DECIMAL_PLACES : 41, ROUNDING_MODE : 1}); + T('65772725.59339738278078887228018658173869609912689', '4326051431984351.09884157745017974'); + + BigNumber.config({DECIMAL_PLACES : 62, ROUNDING_MODE : 6}); + T('40227541142203473010813785626410.19087001878840388060497980542506597235802568540711096477426661', '1618255066347673101991637745640498016905970250767945408572170702'); + + BigNumber.config({DECIMAL_PLACES : 46, ROUNDING_MODE : 5}); + T('5470786820.0139452521385135579833672428710925952543352056', '29929508430038295403.2021080448706293'); + + BigNumber.config({DECIMAL_PLACES : 98, ROUNDING_MODE : 1}); + T('353254.68729598168174020062443678572940775163547873542847911555211434402472387360698376451692274187949171', '124788874096.581801769341529731'); + + BigNumber.config({DECIMAL_PLACES : 24, ROUNDING_MODE : 1}); + T('4710250560799.345071943574342121547002', '22186460345510544746149875.21079977475782182108767576173806601062569351'); + + BigNumber.config({DECIMAL_PLACES : 42, ROUNDING_MODE : 0}); + T('889742696550533491635.902878780831679082243711108150405478590463', '791642066065014722475930480934055487526379.2980796495'); + + BigNumber.config({DECIMAL_PLACES : 59, ROUNDING_MODE : 3}); + T('54.68423930325994760604974477176105234826564193829924891568556', '2990.36602817620'); + + BigNumber.config({DECIMAL_PLACES : 35, ROUNDING_MODE : 3}); + T('687.69813872076169812204913554689609442', '472928.73'); + + BigNumber.config({DECIMAL_PLACES : 58, ROUNDING_MODE : 1}); + T('1922328.5814452710447231491355356265501994748371717620744762610836', '3695347175041.3880723243439344'); + + BigNumber.config({DECIMAL_PLACES : 21, ROUNDING_MODE : 5}); + T('259.814919028223566794421', '67503.79214964236844196364376129941576224666'); + + BigNumber.config({DECIMAL_PLACES : 15, ROUNDING_MODE : 4}); + T('89116010281422470.490792878028479', '7941663288478595468163012949770631.031610'); + + BigNumber.config({DECIMAL_PLACES : 36, ROUNDING_MODE : 3}); + T('5932381112762754622904981552.373251673627440940633090556721714745', '35193145667064258780606184878777954613913495498807552110.674'); + + BigNumber.config({DECIMAL_PLACES : 55, ROUNDING_MODE : 4}); + T('893056745827291.2797429722245393357197289561968389609411292397482876045', '797550351267631140592697284483.78129'); + + BigNumber.config({DECIMAL_PLACES : 79, ROUNDING_MODE : 3}); + T('3763501642015094266579640.1219523405439829814657228094809771542386037789129194751290098235201476058052607', '14163944609450310758114750482357005006752272738570.57225865671032927'); + + BigNumber.config({DECIMAL_PLACES : 91, ROUNDING_MODE : 1}); + T('776.5090582120990070056744810742483620827196187879468568581488531077672537925651203290541573461', '602966.31748544096431040937268'); + + BigNumber.config({DECIMAL_PLACES : 81, ROUNDING_MODE : 2}); + T('48.604526538173376182800519112210650467428825886317769747923817613773340459260266201', '2362.40'); + + BigNumber.config({DECIMAL_PLACES : 5, ROUNDING_MODE : 3}); + T('1619107165354498184885.5242', '2621508012902278327380962859916298137513959.447556874953217092'); + + BigNumber.config({DECIMAL_PLACES : 93, ROUNDING_MODE : 1}); + T('2995751.634073306004244447026435588871407905052680216908898588671550117511803869048557530431723092132', '8974527853052.88312'); + + BigNumber.config({DECIMAL_PLACES : 10, ROUNDING_MODE : 2}); + T('75467153073996458962915131484.3993555081', '5695291193094013185500551046546949646554620436546808622591.516878456685'); + + BigNumber.config({DECIMAL_PLACES : 18, ROUNDING_MODE : 4}); + T('10256041108976420629.199454567907275476', '105186379229014287888491059604397048384.620569192314'); + + BigNumber.config({DECIMAL_PLACES : 40, ROUNDING_MODE : 5}); + T('1663.8453977796919070850392655525052909309077', '2768381.5077126611909711080090814986835313295705839'); + + BigNumber.config({DECIMAL_PLACES : 42, ROUNDING_MODE : 6}); + T('123529131429703819443118.54931511124012408797939563765987050611899', '15259446311777039991024049097756900338962157854'); + + BigNumber.config({DECIMAL_PLACES : 57, ROUNDING_MODE : 5}); + T('5560438.142579741702366402248857210395589101314248740685263570978', '30918472337455.6479130284098891831113215775590418915104774'); + + BigNumber.config({DECIMAL_PLACES : 68, ROUNDING_MODE : 0}); + T('36281644.76988135818686116202939957191270810974653912706871975492103944369636', '1316357747207859.31266167'); + + BigNumber.config({DECIMAL_PLACES : 57, ROUNDING_MODE : 5}); + T('5.282991576748916225741027424914998052144656285680852715908', '27.91'); + + BigNumber.config({DECIMAL_PLACES : 67, ROUNDING_MODE : 2}); + T('26826.4127493781769703743437728144843044287785972406934806238303342625783', '719656421'); + + BigNumber.config({DECIMAL_PLACES : 0, ROUNDING_MODE : 3}); + T('2', '5.37625548458271122007'); + + BigNumber.config({DECIMAL_PLACES : 31, ROUNDING_MODE : 4}); + T('1668.6764282929150311920750595338744', '2784481.0223404'); + + BigNumber.config({DECIMAL_PLACES : 67, ROUNDING_MODE : 1}); + T('10.2385664037012525496880466372434589015640964461096948083431020419951', '104.828242003'); + + BigNumber.config({DECIMAL_PLACES : 86, ROUNDING_MODE : 3}); + T('66372960095452040.45994587668260499913729362119803066270517659552152382678744234600982770351253058209521', '4405369831832468935843830578406093.2565156168971'); + + BigNumber.config({DECIMAL_PLACES : 4, ROUNDING_MODE : 0}); + T('473407875637291658578.9019', '224115016715413405092267530282257875406682.49835382'); + + BigNumber.config({DECIMAL_PLACES : 84, ROUNDING_MODE : 1}); + T('68651941131739807.174750106032127662294695087292808832370099322483965602512157211426100868174677659683', '4713089021155867956380018732563084.26698833111'); + + BigNumber.config({DECIMAL_PLACES : 8, ROUNDING_MODE : 2}); + T('7348028468128439177110.54556973', '53993522368425976483646062280915010569224044'); + + BigNumber.config({DECIMAL_PLACES : 21, ROUNDING_MODE : 6}); + T('2119642072.680265413658964490823', '4492882516276291566.29881022242536487557872701343389871875'); + + BigNumber.config({DECIMAL_PLACES : 16, ROUNDING_MODE : 0}); + T('759911.9536428739189649', '577466177289.32936'); + + BigNumber.config({DECIMAL_PLACES : 28, ROUNDING_MODE : 0}); + T('106553761.162264246284252054647064491', '11353704017824852.4611643486114409049688739044'); + + BigNumber.config({DECIMAL_PLACES : 100, ROUNDING_MODE : 5}); + T('14.7456978008019568614040993673761366504625708181901764989192874845947809143096249709002564722127596636', '217.4356036325756670544458007125524938'); + + BigNumber.config({DECIMAL_PLACES : 98, ROUNDING_MODE : 6}); + T('295414.57241487468020923791493376733960197400575508671338810222236013093392808359746725949898886883126268', '87269769595.06323634741877845138'); + + BigNumber.config({DECIMAL_PLACES : 33, ROUNDING_MODE : 6}); + T('37516617.579099132622513300879884121967683', '1407496594576370.06261787957718'); + + BigNumber.config({DECIMAL_PLACES : 60, ROUNDING_MODE : 3}); + T('1131208352281613015.555408144638994057195008122161118805442530013839952441611311', '1279632336271681894535673114499118754.39788237415185486830'); + + BigNumber.config({DECIMAL_PLACES : 95, ROUNDING_MODE : 0}); + T('32966.69405563486904244570818399194304016536448224495617094756766158966137083438144470645864678778946', '1086802916.95783141'); + + BigNumber.config({DECIMAL_PLACES : 58, ROUNDING_MODE : 0}); + T('31309.0857947795921595950486356877036608601136216829953948182363', '980258853.30486924605479'); + + BigNumber.config({DECIMAL_PLACES : 28, ROUNDING_MODE : 4}); + T('1770073.1489207444615594580039659422', '3133158952530.2'); + + BigNumber.config({DECIMAL_PLACES : 52, ROUNDING_MODE : 3}); + T('1914337.5501650280798142520555737935991361014908729126592669', '3664688255971.8414000128737374263789123210685'); + + BigNumber.config({DECIMAL_PLACES : 90, ROUNDING_MODE : 4}); + T('2062559182194.651333939625538780888106868996091400331597659659567648164339407129332825200701125200486512', '4254150380055468916249334.9191129113190464726018607977'); + + BigNumber.config({DECIMAL_PLACES : 8, ROUNDING_MODE : 4}); + T('12.07145393', '145.72'); + + BigNumber.config({DECIMAL_PLACES : 79, ROUNDING_MODE : 0}); + T('1317013851091420.6561408685542383805866756541198653673575459876412143969639093098412316192938882', '1734525483966654741818421922573.810904219017657492124021067226646767023'); + + BigNumber.config({DECIMAL_PLACES : 51, ROUNDING_MODE : 0}); + T('20690303.52001400622355151906987833847090254985134637242281', '428088659750303.9764329'); + + BigNumber.config({DECIMAL_PLACES : 43, ROUNDING_MODE : 2}); + T('11606.7592352505839337735348351151776393253628311', '134716859.94507472'); + + BigNumber.config({DECIMAL_PLACES : 4, ROUNDING_MODE : 6}); + T('128962450782451915346224.663', '16631313711816332632714461413913179482268224163.627580'); + + BigNumber.config({DECIMAL_PLACES : 97, ROUNDING_MODE : 4}); + T('25034434221195.1626546646428355078518084227214031163523557198228259498967796293623093732280578488089414910009545', '626722896775347450122233568.221736229089870371148583168'); + + BigNumber.config({DECIMAL_PLACES : 77, ROUNDING_MODE : 5}); + T('5280981018824947175.23073432389104277713300016379472042681039852099605839769140560424539432101265', '27888760521189377071172993311260489494.9228964746031216476847321190'); + + BigNumber.config({DECIMAL_PLACES : 90, ROUNDING_MODE : 2}); + T('162673090405691503.024889494298383043507184034396478832316388582171564767570698269884558142411454657165336758', '26462534342138280932191837518704625.0840975098546'); + + BigNumber.config({DECIMAL_PLACES : 21, ROUNDING_MODE : 0}); + T('5.56776436283002192212', '31'); + + BigNumber.config({DECIMAL_PLACES : 45, ROUNDING_MODE : 0}); + T('7682710.552671708235374165899366979310815641756553575', '59024041436133.2246'); + + BigNumber.config({DECIMAL_PLACES : 4, ROUNDING_MODE : 5}); + T('6391.5469', '40851871.991'); + + BigNumber.config({DECIMAL_PLACES : 30, ROUNDING_MODE : 5}); + T('1834507.975076828570245235511028215397', '3365419510620.485874651367130674850280070521899330536764207749717544'); + + BigNumber.config({DECIMAL_PLACES : 95, ROUNDING_MODE : 5}); + T('3495480.38256147827415476994571475428636224261289845004330975322527090233565328776690121708467858140792', '12218383104872.1385087696898062860761518572'); + + BigNumber.config({DECIMAL_PLACES : 35, ROUNDING_MODE : 3}); + T('1.26009423159539937638421724613120826', '1.5878374725'); + + BigNumber.config({DECIMAL_PLACES : 50, ROUNDING_MODE : 4}); + T('1369370604956.05098382437442746815592765507526977434916820834002', '1875175853717701043262789.163'); + + BigNumber.config({DECIMAL_PLACES : 75, ROUNDING_MODE : 4}); + T('61111046097989.562614478991002463202122550327564207016373610481385147575687339517642575745', '3734559955190605346508566151.747128467087991987800252614000906073017'); + + BigNumber.config({DECIMAL_PLACES : 9, ROUNDING_MODE : 6}); + T('487839154280.605258799', '237987040449216180199565.97996551897500100835854353148858639128012'); + + BigNumber.config({DECIMAL_PLACES : 46, ROUNDING_MODE : 0}); + T('26026.3809206474465998782648730859947008804679763994', '677372503.826641430068000281530877034016405774877793'); + + BigNumber.config({DECIMAL_PLACES : 79, ROUNDING_MODE : 2}); + T('3.5355339059327376220042218105242451964241796884423701829416993449768311961552676', '12.5'); + + BigNumber.config({DECIMAL_PLACES : 80, ROUNDING_MODE : 2}); + T('189237794910982562213.25636508486094088772004804584906546011408616284058885391779627042175154320806668', '35810943022771097721298012826864918201819.2991'); + + BigNumber.config({DECIMAL_PLACES : 30, ROUNDING_MODE : 1}); + T('3771198.65750627716579658341655388678', '14221939314377.1471847'); + + BigNumber.config({DECIMAL_PLACES : 21, ROUNDING_MODE : 2}); + T('29135124.530018624988827182698', '848855481379693.0036377'); + + BigNumber.config({DECIMAL_PLACES : 91, ROUNDING_MODE : 1}); + T('998223.9287829203446196803384884403292209921824958032442949937536171090461827984654389784946553623', '996451011994.8088280477062132'); + + BigNumber.config({DECIMAL_PLACES : 10, ROUNDING_MODE : 4}); + T('5126338484054822038.6885613203', '26279346253101490909404023029363590984.22045482623574089'); + + BigNumber.config({DECIMAL_PLACES : 76, ROUNDING_MODE : 0}); + T('320594084.2355540715784886905782644237424727036120667152617154249798799923426746035027', '102780566846833539.6758377523578'); + + BigNumber.config({DECIMAL_PLACES : 70, ROUNDING_MODE : 0}); + T('2180790.7087754998512230743198519235426181143993335287947509925434061761510853', '4755848115481.5470038067258431'); + + BigNumber.config({DECIMAL_PLACES : 37, ROUNDING_MODE : 1}); + T('4435299142639732.0386665272768109416139138688675365733', '19671878484700742088824375591214.762823606521949640217195100557734'); + + BigNumber.config({DECIMAL_PLACES : 10, ROUNDING_MODE : 2}); + T('355924722776.6529947424', '126682408283637287091499.8123529985117620693781205410971392972914'); + + BigNumber.config({DECIMAL_PLACES : 29, ROUNDING_MODE : 1}); + T('1840.27953983121746818190253230579', '3386628.78472139752'); + + BigNumber.config({DECIMAL_PLACES : 29, ROUNDING_MODE : 4}); + T('18505.45444317533478496724906701013', '342451844.14843774'); + + BigNumber.config({DECIMAL_PLACES : 74, ROUNDING_MODE : 0}); + T('1380998315760.07536639428018906694759131234868833646200425311534294649362527033527763552', '1907156348132164826104731.69607807136577'); + + BigNumber.config({DECIMAL_PLACES : 84, ROUNDING_MODE : 4}); + T('15478.581565616610788736047569976878217626279567162328064930393795809558245153963295159638', '239586487.28344637'); + + BigNumber.config({DECIMAL_PLACES : 23, ROUNDING_MODE : 5}); + T('20814354.1066762193292296130907', '433237336878109.19638027119868364020593141'); + + BigNumber.config({DECIMAL_PLACES : 7, ROUNDING_MODE : 3}); + T('65411343534377893951480143.0687813', '4278643862972400711315519535941613397047166597617356.53505313610762'); + + BigNumber.config({DECIMAL_PLACES : 75, ROUNDING_MODE : 3}); + T('26.161836991932925045265787369493587190351416331869263156799084171994782512198', '684.44171479247'); + + BigNumber.config({DECIMAL_PLACES : 98, ROUNDING_MODE : 5}); + T('4.01130901327733662798257776541675440146186278181542626669368510258079411649993922721806882261901641', '16.0906'); + + BigNumber.config({DECIMAL_PLACES : 47, ROUNDING_MODE : 3}); + T('1149242295355.33233473660241121236631015179107791864017709795', '1320757853433592920847063.41923783204587387124699776335'); + + BigNumber.config({DECIMAL_PLACES : 9, ROUNDING_MODE : 3}); + T('9474.726373832', '89770439.858993859142728578146543311908'); + + BigNumber.config({DECIMAL_PLACES : 80, ROUNDING_MODE : 1}); + T('8.83176086632784685476404272695925396417463948093141782621020297255713993823544284', '78'); + + BigNumber.config({DECIMAL_PLACES : 28, ROUNDING_MODE : 0}); + T('3830962978040350811709514.1639124190557328292714921812', '14676277339115793415584423492635818739231491629096.2'); + + BigNumber.config({DECIMAL_PLACES : 55, ROUNDING_MODE : 1}); + T('904094739518026362.276858998253417589801385050899447007512426103468322262', '817387298024167938863983875545245626.80'); + + BigNumber.config({DECIMAL_PLACES : 4, ROUNDING_MODE : 2}); + T('3898018.2159', '15194546010949.81802721206885605'); + + BigNumber.config({DECIMAL_PLACES : 69, ROUNDING_MODE : 3}); + T('184916754268166424.532451013579940568421105901355402407206681792452037755126944803242074', '34194206009073445584566849436943803.6680118993321070740'); + + BigNumber.config({DECIMAL_PLACES : 54, ROUNDING_MODE : 2}); + T('10728918189914538012.14436634401825539813105200873037997842267828754845567', '115109685525879046747891569700090752540.64852941266'); + + BigNumber.config({DECIMAL_PLACES : 53, ROUNDING_MODE : 5}); + T('5173978485.87510754763548985924623523505620610130206120024600441', '26770053372298470472.82008752828'); + + BigNumber.config({DECIMAL_PLACES : 57, ROUNDING_MODE : 5}); + T('12448083579765518960272733448.844733656410419557424433748732709492340453674614639609498', '154954784808827937239154352490553377950290394508934428937.6950287957173019'); + + BigNumber.config({DECIMAL_PLACES : 96, ROUNDING_MODE : 6}); + T('21937056544951997887838.266472241058656756241231521937385200509335828305313379527318257363340679517701971098439856037229', '481234449856421286927459543035431540893700257.7118353406076308244033'); + + BigNumber.config({DECIMAL_PLACES : 96, ROUNDING_MODE : 2}); + T('8705805512511376.661415004088266418167596075698134210732650646137955094273212000791730326866575509931229837909597', '75791049621673473659571306712104.5913470'); + + BigNumber.config({DECIMAL_PLACES : 54, ROUNDING_MODE : 2}); + T('21744792388806330.69543805888148448016988971611269397259934845377013557', '472835996032289729681394667373604.66074661819409142691068'); + + BigNumber.config({DECIMAL_PLACES : 69, ROUNDING_MODE : 3}); + T('364148032238911.207459019623811970686792287639949655428263721201429401774057623001667', '132603789383471116094969998370.54564120810660443599509'); + + BigNumber.config({DECIMAL_PLACES : 86, ROUNDING_MODE : 1}); + T('6130.86992934880235087497305800565551205615083568452544051362005512506946811033000392166546', '37587566.09059338872940942140'); + + BigNumber.config({DECIMAL_PLACES : 77, ROUNDING_MODE : 1}); + T('148902754396098661216264733282.2432677199650259537991922683099806354990954412183841781360864322902131461744', '22172030266744879178523766174920227318932007998329511426386.71431306'); + + BigNumber.config({DECIMAL_PLACES : 9, ROUNDING_MODE : 0}); + T('2.485558288', '6.178'); + + BigNumber.config({DECIMAL_PLACES : 71, ROUNDING_MODE : 3}); + T('48675762028559728895548.12665897790225369108328127728148623968749329776515932108839536622078517', '2369329809060977133824105060183733685306224037.8'); + + BigNumber.config({DECIMAL_PLACES : 76, ROUNDING_MODE : 4}); + T('24.7386337537059632989284591358444621508831953522417226063918014385697260780257', '612.0'); + + BigNumber.config({DECIMAL_PLACES : 30, ROUNDING_MODE : 1}); + T('31.610335068913719526253073315531', '999.2132831689965253909026235101062925484544085049'); + + BigNumber.config({DECIMAL_PLACES : 48, ROUNDING_MODE : 3}); + T('381.951720361337291359017000726333760115427476940754', '145887.116686985200'); + + BigNumber.config({DECIMAL_PLACES : 37, ROUNDING_MODE : 4}); + T('10249810.4776964144606649104434449145329654563', '105058614828695.2'); + + BigNumber.config({DECIMAL_PLACES : 97, ROUNDING_MODE : 2}); + T('4565314072683631718401.4254286569265369656898689812980558791518310535475002322479184308757040096111213195929252587721798', '20842092582243208192634490035016683394003768.897'); + + BigNumber.config({DECIMAL_PLACES : 81, ROUNDING_MODE : 5}); + T('11921.919157895436980161095883273297050465674732349580111298784795959952105486977509191', '142132156.40739424522513940329925953476743994585969'); + + BigNumber.config({DECIMAL_PLACES : 38, ROUNDING_MODE : 5}); + T('42221784994101.50903525126461999032247998888873167843', '1782679128088135365358664827.18789866270490430767365565'); + + BigNumber.config({DECIMAL_PLACES : 65, ROUNDING_MODE : 3}); + T('97847.44665485852461064907480959656322328400159999501985784579886747875', '9574122816.8753846778'); + + BigNumber.config({DECIMAL_PLACES : 13, ROUNDING_MODE : 5}); + T('234205.612503318998', '54852268928.0548121688'); + + BigNumber.config({DECIMAL_PLACES : 24, ROUNDING_MODE : 1}); + T('25529284068924417.312616362288832310787818', '651744345071838052967175093720670.309523048811416290'); + + BigNumber.config({DECIMAL_PLACES : 7, ROUNDING_MODE : 0}); + T('90387.925862', '8169977141.632377593'); + + BigNumber.config({DECIMAL_PLACES : 13, ROUNDING_MODE : 5}); + T('39727850756.6674266118418', '1578302125744040621188.10968243099467673952848'); + + BigNumber.config({DECIMAL_PLACES : 32, ROUNDING_MODE : 5}); + T('10922946652.61277809893232338572941735232941', '119310763575824694072.67899'); + + BigNumber.config({DECIMAL_PLACES : 41, ROUNDING_MODE : 3}); + T('1204691748.01962453331240668450742564575254687343257', '1451282207746578530.68'); + + BigNumber.config({DECIMAL_PLACES : 79, ROUNDING_MODE : 0}); + T('2168167871148394953234.1925145526882349014061487960355124218083724786535449969286840357060655099527403', '4700951917480162980663868559509055318620701.436239024401270'); + + BigNumber.config({DECIMAL_PLACES : 22, ROUNDING_MODE : 4}); + T('468012.3980129886634423908716', '219035604693.86811504914527871748991009824119534'); + + BigNumber.config({DECIMAL_PLACES : 34, ROUNDING_MODE : 3}); + T('152027.9034509030131743006877834012496725', '23112483427.6770883018541414'); + + BigNumber.config({DECIMAL_PLACES : 6, ROUNDING_MODE : 1}); + T('39070.768987', '1526524989.297643871802383576028102147694626812685590152575'); + + BigNumber.config({DECIMAL_PLACES : 46, ROUNDING_MODE : 4}); + T('1250964.0328412267817990068707571462032258488049181937', '1564911011462.3859182790021956920389318080447013349220674'); + + BigNumber.config({DECIMAL_PLACES : 78, ROUNDING_MODE : 5}); + T('1.574747598823379695455819287781216314798721967909499025165940557210793017153248', '2.47983'); + + BigNumber.config({DECIMAL_PLACES : 95, ROUNDING_MODE : 3}); + T('99.82965166080369078090076790080975783846377844493852381966581290508065966343620655848892826147126', '9965.959350717405097'); + + BigNumber.config({DECIMAL_PLACES : 60, ROUNDING_MODE : 5}); + T('647.729457744512342323271374802023230498738468582236031741072278', '419553.45043'); + + BigNumber.config({DECIMAL_PLACES : 80, ROUNDING_MODE : 6}); + T('24697777055157274614045404601142553.70406771835510501104735791650848400272399441549342218507230159973062171502661103', '609980191466253139733233884276803110291097008877197723579364303731893'); + + BigNumber.config({DECIMAL_PLACES : 17, ROUNDING_MODE : 2}); + T('13.6431266042795337', '186.1349035404'); + + BigNumber.config({DECIMAL_PLACES : 91, ROUNDING_MODE : 5}); + T('173.2188929263660950499725455519748713007516020857763370494332244159518279439900397902257637451', '30004.784866635882'); + + BigNumber.config({DECIMAL_PLACES : 81, ROUNDING_MODE : 4}); + T('46143126703751828496.866649027371445895940007418220059475791917987944465104919918209683758208288829164', '2129188141998495085389252895218765450927.7063857106'); + + BigNumber.config({DECIMAL_PLACES : 60, ROUNDING_MODE : 4}); + T('64866.977655547797763275486444509839974560207365651674817907766434', '4207724790.165337269565'); + + BigNumber.config({DECIMAL_PLACES : 99, ROUNDING_MODE : 2}); + T('17584290857147344.415797971139463901060315043736480054621679443194306011937028118601468078448454466113714486390327668', '309207284948755688576114250910516.74'); + + BigNumber.config({DECIMAL_PLACES : 84, ROUNDING_MODE : 6}); + T('2.94358860030385493881670889399291911046241548916385003586188315285977498131365266043', '8.664713847838807868001451403595636253922161359756547'); + + BigNumber.config({DECIMAL_PLACES : 83, ROUNDING_MODE : 6}); + T('424.99280768859670787492492363122383472286022111724084853084296368784059306715270358792', '180618.886587036545015612122512773593063212916813764199769387313'); + + BigNumber.config({DECIMAL_PLACES : 59, ROUNDING_MODE : 2}); + T('18.31090032843085055141567877490619869051620042759275170646107', '335.2890708377290305906582988852002980024'); + + BigNumber.config({DECIMAL_PLACES : 51, ROUNDING_MODE : 1}); + T('126427741490350.05876064315047378101790577982019123921425265937548', '15983973818350781697093926569.612618127837088601804542393750879971390'); + + BigNumber.config({DECIMAL_PLACES : 33, ROUNDING_MODE : 3}); + T('16.692445803416586201775384489366982', '278.6377469'); + + BigNumber.config({DECIMAL_PLACES : 26, ROUNDING_MODE : 2}); + T('349210873373756.75981101873418700429959408', '121948234082461977906208449874.02898224579023209742993297127871656'); + + BigNumber.config({DECIMAL_PLACES : 36, ROUNDING_MODE : 4}); + T('10.406728592598156155682425873215240545', '108.30'); + + BigNumber.config({DECIMAL_PLACES : 95, ROUNDING_MODE : 2}); + T('154577239693381679058287.97436120925772268748839189894586354157517982123268495410171938553647222928153513557194250214191', '23894123031225172524806703141007699579590862366.2631'); + + BigNumber.config({DECIMAL_PLACES : 91, ROUNDING_MODE : 4}); + T('1183519938.0327546884078159164077132538648035819895600967199921207723839756282768130542759614616292199', '1400719443721055497.588328093817233056244752470'); + + BigNumber.config({DECIMAL_PLACES : 32, ROUNDING_MODE : 4}); + T('241257503.34869155337527048121955221501097', '58205182922043916.0906037558925342272671667138'); + + BigNumber.config({DECIMAL_PLACES : 58, ROUNDING_MODE : 0}); + T('20.3943935923576801013979387591948549133326048632573667789299', '415.93129'); + + BigNumber.config({DECIMAL_PLACES : 69, ROUNDING_MODE : 6}); + T('1.486678588956157516725362331766399749551245061708835963596471115535207', '2.2102132268606715586559333071481289982224051499'); + + BigNumber.config({DECIMAL_PLACES : 43, ROUNDING_MODE : 4}); + T('5480561357126273281877150.2516417121681290163460862339136083441886517', '30036552789225778387170901122576813278108089781372.771583915452'); + + BigNumber.config({DECIMAL_PLACES : 2, ROUNDING_MODE : 3}); + T('186290.73', '34704239588.561202019698480025986856466562575839'); + + BigNumber.config({DECIMAL_PLACES : 7, ROUNDING_MODE : 3}); + T('1019119990.3697989', '1038605554771339166.6912148749760860679670771315340046767'); + + BigNumber.config({DECIMAL_PLACES : 32, ROUNDING_MODE : 0}); + T('5.51382659658824384028874579869515', '30.402283737243896279380556624294805637164470'); + + BigNumber.config({DECIMAL_PLACES : 90, ROUNDING_MODE : 0}); + T('132128402859245050100.944755960799740493288068513067396744451394670499181597586057807458829316094508487338595892', '17457914842134955530797594713735952482525.87431286629942757'); + + BigNumber.config({DECIMAL_PLACES : 25, ROUNDING_MODE : 2}); + T('11194229425.7115257840132096032453966', '125310772435465796361.6'); + + BigNumber.config({DECIMAL_PLACES : 65, ROUNDING_MODE : 1}); + T('2514912879934.47954895904718779302011160467785506374230597396840365067162301819', '6324786793660337947551689.6597215'); + + BigNumber.config({DECIMAL_PLACES : 1, ROUNDING_MODE : 5}); + T('23110048.3', '534074334023039.0646'); + + BigNumber.config({DECIMAL_PLACES : 52, ROUNDING_MODE : 4}); + T('2.8178317099209633246681281054844265828694464028893106', '7.94017554543610'); + + BigNumber.config({DECIMAL_PLACES : 17, ROUNDING_MODE : 0}); + T('83922723879121100060348.00424897481020168', '7043023583291202900493646259695479821033571894.5162'); + + BigNumber.config({DECIMAL_PLACES : 9, ROUNDING_MODE : 0}); + T('247358400344048909864251401578.275102984', '61186178220766775849900540163098993844125752619416049989983.33'); + + BigNumber.config({DECIMAL_PLACES : 51, ROUNDING_MODE : 6}); + T('81.917085580481926713094910295288886277402363899734148', '6710.40891'); + + BigNumber.config({DECIMAL_PLACES : 50, ROUNDING_MODE : 1}); + T('1881948645458414392373493267.44076491245651937895770407455779709686155608638313', '3541730704142760714361731732288699331881581040832341249.39126'); + + BigNumber.config({DECIMAL_PLACES : 32, ROUNDING_MODE : 4}); + T('324.26623374592211771183741217403875', '105148.590347765'); + + BigNumber.config({DECIMAL_PLACES : 43, ROUNDING_MODE : 4}); + T('1662149798843078.4069237887302461551370934948249024202080631', '2762741953794086012243855678967.8'); + + BigNumber.config({DECIMAL_PLACES : 96, ROUNDING_MODE : 3}); + T('675642835238849681736474.578123268849552096600873729347635703046100261327366969339596447149784597367597431761384272288381', '456493240809591377271607984202883887598233546223.73731084236993405421'); + + BigNumber.config({DECIMAL_PLACES : 91, ROUNDING_MODE : 5}); + T('5789496541496.6234418909569785217083510247010199083639377506967258726477304725684424188767358767048961015', '33518270204001364079261054.6956981043060432728471824679780846396880826203'); + + BigNumber.config({DECIMAL_PLACES : 78, ROUNDING_MODE : 2}); + T('3898118405075.003146968384302560049987066028159380764464068397263645779570408017201600465061', '15195327099984486320266383.0779'); + + BigNumber.config({DECIMAL_PLACES : 89, ROUNDING_MODE : 1}); + T('75328512486.03568083840615998761042897028410187816426562961651629515834372852207961734642188953302492', '5674384793358833469158.7800150542809744853291679751200'); + + BigNumber.config({DECIMAL_PLACES : 81, ROUNDING_MODE : 4}); + T('5798169.528389841210757172244446608220276215346825819225777169316424526085117502743814039', '33618769879948.4736420937'); + + BigNumber.config({DECIMAL_PLACES : 96, ROUNDING_MODE : 1}); + T('29119162498.850656252014862720939576335974293913751260474542935386631954376862430745731464008616766564510391', '847925624634470395269.44447102349587477'); + + BigNumber.config({DECIMAL_PLACES : 38, ROUNDING_MODE : 6}); + T('168.23340288442161387499486814301418324124', '28302.477846072118591243169889731912227'); + + BigNumber.config({DECIMAL_PLACES : 13, ROUNDING_MODE : 4}); + T('84.717176534632', '7177'); + + BigNumber.config({DECIMAL_PLACES : 94, ROUNDING_MODE : 5}); + T('446.6528853595373338635581695148843692555354568157075769833229135178150603561840120444549015301812', '199498.80'); + + BigNumber.config({DECIMAL_PLACES : 27, ROUNDING_MODE : 1}); + T('13.385220437154074004622844494', '179.1641261512071'); + + BigNumber.config({DECIMAL_PLACES : 18, ROUNDING_MODE : 5}); + T('25187.464910513177055609', '634408388.6183325662617834169211144795841400981156'); + + BigNumber.config({DECIMAL_PLACES : 98, ROUNDING_MODE : 3}); + T('10422.15813601939556380841988779887735492607695215255973816250455181808482251151607984617041577195472527', '108621380.21219528176229683714575'); + + BigNumber.config({DECIMAL_PLACES : 73, ROUNDING_MODE : 5}); + T('2208553892153424409400475031042.6572327746873142396027723799591270120723216684906399117752180406894099292', '4877710294546039817041980082316047470007304183838484383878968.2209'); + + BigNumber.config({DECIMAL_PLACES : 97, ROUNDING_MODE : 5}); + T('14.4260892287582664239790267726919919828624026033250319230120150996965846303871869390740935534225811', '208.11205043609527416641080601664504139952660870888'); + + BigNumber.config({DECIMAL_PLACES : 23, ROUNDING_MODE : 1}); + T('50518253294056311797.1731845046869551098465', '2552093915882431397702073747003243930704.039747494091408300134971'); + + BigNumber.config({DECIMAL_PLACES : 93, ROUNDING_MODE : 1}); + T('23832299110227469789029554304.948356558865989463643235875638019404450568339468087397165994402723017298021132402151310599948', '567978480879349048201333612155955923171671328708933141291.1'); + + BigNumber.config({DECIMAL_PLACES : 52, ROUNDING_MODE : 4}); + T('97932545.8343664485428157368834804942294639641837112693533951', '9590783533600285.2329863436120504074140917839'); + + BigNumber.config({DECIMAL_PLACES : 58, ROUNDING_MODE : 4}); + T('662542878881.876031608894840844837559122854993420182484052151826850145', '438963066357084252820457.6516316337481795'); + + BigNumber.config({DECIMAL_PLACES : 75, ROUNDING_MODE : 1}); + T('2.408258174236454324395775462046657264396664516691587445008530664989455090566', '5.7997074337767003950634583826104408675441912175'); + + BigNumber.config({DECIMAL_PLACES : 67, ROUNDING_MODE : 2}); + T('19840.4326250311386701679603718626113117527540565797995311111902694479563', '393642766.7484'); + + BigNumber.config({DECIMAL_PLACES : 58, ROUNDING_MODE : 0}); + T('15364571.38004578150166243985432371567701531656413692847732610913', '236070053692521.93070035438755932153027579886205373478180'); + + BigNumber.config({DECIMAL_PLACES : 12, ROUNDING_MODE : 5}); + T('557.884441439264', '311235.05'); + + BigNumber.config({DECIMAL_PLACES : 16, ROUNDING_MODE : 4}); + T('973.3437664448876512', '947398.08767712'); + + BigNumber.config({DECIMAL_PLACES : 8, ROUNDING_MODE : 4}); + T('253803.10166048', '64416014412.481521657597915615475256293'); + + BigNumber.config({DECIMAL_PLACES : 48, ROUNDING_MODE : 4}); + T('10979495135456507.342255564998728572391728604678115723240759397693', '120549313429513108511981910613966.523081580'); + + BigNumber.config({DECIMAL_PLACES : 89, ROUNDING_MODE : 4}); + T('275756032001872551178215198414.24547397537996419327607093729301388962050404448273494643547281384033137267141232586354706', '76041389185417758565246602361525083482592333735384806760948.73885982708'); + + BigNumber.config({DECIMAL_PLACES : 70, ROUNDING_MODE : 3}); + T('622715720.6863237085763126032498599017169901239797664342712392168097039974270476', '387774868789887525.14937758830956496718493909569236992782655630649990'); + + BigNumber.config({DECIMAL_PLACES : 86, ROUNDING_MODE : 0}); + T('168020.06571690822552882775092697246077349555511570099299844483404809694983876654837809362564', '28230742483.514158818734'); + + BigNumber.config({DECIMAL_PLACES : 64, ROUNDING_MODE : 3}); + T('11.7588160560738046080529419704288531653704396950661705922012083704', '138.269755040579104756364889'); + + BigNumber.config({DECIMAL_PLACES : 33, ROUNDING_MODE : 5}); + T('32912865546108258981522.757929715992045216906368802942491', '1083256718456200104722022580166775873143293905.1344841968439478203'); + + BigNumber.config({DECIMAL_PLACES : 30, ROUNDING_MODE : 3}); + T('4.166533331199931730602544326927', '17.36'); + + BigNumber.config({DECIMAL_PLACES : 50, ROUNDING_MODE : 4}); + T('13.1438229181471400406148696794413041749550438491914', '172.76008090361'); + + BigNumber.config({DECIMAL_PLACES : 38, ROUNDING_MODE : 1}); + T('140388.44002034207101031451179095355772785653', '19708914091.345183231428356292375830226197664009'); + + BigNumber.config({DECIMAL_PLACES : 6, ROUNDING_MODE : 6}); + T('242308.729399', '58713520342.9660909760390092854509'); + + BigNumber.config({DECIMAL_PLACES : 21, ROUNDING_MODE : 6}); + T('563619360203.007379904114453023253', '317666783195647379114879.695054964988341456801'); + + BigNumber.config({DECIMAL_PLACES : 28, ROUNDING_MODE : 5}); + T('59647218914478876.7858096522484430132157141971', '3557790724231766676348271355770172.83342006'); + + BigNumber.config({DECIMAL_PLACES : 50, ROUNDING_MODE : 2}); + T('1615983789784.28557364029229913482567909068840532382641403331829', '2611403608845582067513660.0062671164003418'); + + BigNumber.config({DECIMAL_PLACES : 35, ROUNDING_MODE : 3}); + T('49824048.11723328394671314846823689101965932', '2482435770788377.54686097356795579347173'); + + BigNumber.config({DECIMAL_PLACES : 60, ROUNDING_MODE : 6}); + T('3873399959291556633217.406801030839980478563896498128017913070289853996800649949943', '15003227244639832583385968352771422955089431.37902415349699763'); + + BigNumber.config({DECIMAL_PLACES : 13, ROUNDING_MODE : 5}); + T('1069094409.0917779579569', '1142962855551297884.450653020529661'); + + BigNumber.config({DECIMAL_PLACES : 90, ROUNDING_MODE : 4}); + T('722662624195087368689595270662669.143097757212534864309051652910227081852406821943121855819128756801032825995791664965218054', '522241268408530075571015801012379480742910546734575022468778895822.7'); + + BigNumber.config({DECIMAL_PLACES : 5, ROUNDING_MODE : 2}); + T('30862804.01109', '952512671426425.6135331321216487473802'); + + BigNumber.config({DECIMAL_PLACES : 99, ROUNDING_MODE : 4}); + T('1102616829129019317396593.875343928415659074623558923629097274645985317064624881354801034751875382964051628994443076758824026', '1215763871878532982271799732726570299157805883536.58539'); + + BigNumber.config({DECIMAL_PLACES : 21, ROUNDING_MODE : 4}); + T('1.732050807568877293527', '3'); + + BigNumber.config({DECIMAL_PLACES : 40, ROUNDING_MODE : 2}); + T('168694642.8213633884274824334697145155532567219877', '28457882516627370.2'); + + BigNumber.config({DECIMAL_PLACES : 77, ROUNDING_MODE : 5}); + T('38.82141524469451899324885987106050839542190648554377069441850531749678620576749', '1507.102281601'); + + BigNumber.config({DECIMAL_PLACES : 64, ROUNDING_MODE : 0}); + T('3708639695.845872597235507175528689024964901895541187165232455597159738447', '13754008393603766407.7561988'); + + BigNumber.config({DECIMAL_PLACES : 68, ROUNDING_MODE : 5}); + T('38154.94717636627489849459718350118176052576391544419824369739236599682079', '1455799994.031300773784046392217039165082991'); + + BigNumber.config({DECIMAL_PLACES : 33, ROUNDING_MODE : 4}); + T('53861660.242327701941421642702708321820603', '2901078444059944.6398231'); + + BigNumber.config({DECIMAL_PLACES : 44, ROUNDING_MODE : 4}); + T('66519636.90005441495284260944015149981502627014844358', '4424862093315080.93581004496660187296078112048061051'); + + BigNumber.config({DECIMAL_PLACES : 2, ROUNDING_MODE : 4}); + T('637.68', '406636.4438334'); + + BigNumber.config({DECIMAL_PLACES : 21, ROUNDING_MODE : 2}); + T('41351116245595004128.850620728637405181715', '1709914814756711069822067981893933170323'); + + BigNumber.config({DECIMAL_PLACES : 22, ROUNDING_MODE : 1}); + T('22459732672013415497.3853699921391046229573', '504439591698306876553874829950080159407.2170874815252123'); + + BigNumber.config({DECIMAL_PLACES : 71, ROUNDING_MODE : 6}); + T('11157237081923757329367254.81266156634018984033545412569365748968958548685350160685800062464993237', '124483939302254559619977058929566395439363258244559.727038073080997530'); + + BigNumber.config({DECIMAL_PLACES : 11, ROUNDING_MODE : 3}); + T('95493319361.43998295249', '9118974042665968313514'); + + BigNumber.config({DECIMAL_PLACES : 36, ROUNDING_MODE : 5}); + T('29.769596290034456365817227089424776835', '886.2288632716332683'); + + BigNumber.config({DECIMAL_PLACES : 85, ROUNDING_MODE : 1}); + T('5397955557584682.9062196137312779972149743250300061250217778253358986584900136549913495459719480101042', '29137924201659364934764001707116.55318205283801807954313080327696327'); + + BigNumber.config({DECIMAL_PLACES : 49, ROUNDING_MODE : 3}); + T('445909149943912057897653.3061127067661639263187209140228907079537075199638', '198834970003702246826932602696089951470569651509.383300823252946843936'); + + BigNumber.config({DECIMAL_PLACES : 31, ROUNDING_MODE : 6}); + T('138070606399.4147429423070318301311902897789', '19063492351502107366289.2467253642099'); + + BigNumber.config({DECIMAL_PLACES : 96, ROUNDING_MODE : 0}); + T('2.828427124746190097603377448419396157139343750753896146353359475981464956924214077700775068655284', '8'); + + BigNumber.config({DECIMAL_PLACES : 48, ROUNDING_MODE : 4}); + T('2064697698243932846.565435522719237034364504912661784788335223237983', '4262976585133794377599987093885187119.23'); + + BigNumber.config({DECIMAL_PLACES : 29, ROUNDING_MODE : 4}); + T('1178718920.97866576388857757648973129508', '1389378294673110105.461225'); + + BigNumber.config({DECIMAL_PLACES : 83, ROUNDING_MODE : 4}); + T('127622.9679188807821988228260439983645956713934866081244383838758589369960872848880087674', '16287621940.42367333133099782844035945474356067647612931678720139496987'); + + BigNumber.config({DECIMAL_PLACES : 91, ROUNDING_MODE : 5}); + T('4184557.3924000870910318746615706242234077254404466436266097920196360998523801490310121360756808685', '17510520570290.216452602485725796055410479930910699820524114'); + + BigNumber.config({DECIMAL_PLACES : 51, ROUNDING_MODE : 1}); + T('5052352182213.797005876498492011065356236496707214014862642148319', '25526262573120516662336097.11698538677217835690'); + + BigNumber.config({DECIMAL_PLACES : 37, ROUNDING_MODE : 2}); + T('42962929756.4524874753904254242420999449242014725', '1845813333257870594777.54199726872487979735452840824704377894604164'); + + BigNumber.config({DECIMAL_PLACES : 15, ROUNDING_MODE : 2}); + T('168552520711834568.361558662238009', '28409952238313421147614420010576914.875572232'); + + BigNumber.config({DECIMAL_PLACES : 28, ROUNDING_MODE : 1}); + T('2657299207.955928329491651283753102211', '7061239080603204033.72779831'); + + BigNumber.config({DECIMAL_PLACES : 24, ROUNDING_MODE : 1}); + T('3457111251941.512647403949385333329309', '11951618208300612934484424.7889623678041889110925531673150994095'); + + BigNumber.config({DECIMAL_PLACES : 56, ROUNDING_MODE : 5}); + T('16589542242815120252699.92265991917398936543675728311599787724806007026073243495', '275212911826147330293614584060085860179008690.253010639947'); + + BigNumber.config({DECIMAL_PLACES : 64, ROUNDING_MODE : 1}); + T('9804797931985.8334842704072729046935810090146497008995969314820034132254912985', '96134062487073676975741888.206515315310498601298549'); + + BigNumber.config({DECIMAL_PLACES : 59, ROUNDING_MODE : 4}); + T('225892.20559798985395295116237397587419516789890792906677567114604', '51027288549.924518711712074082612750594'); + + BigNumber.config({DECIMAL_PLACES : 66, ROUNDING_MODE : 4}); + T('212361356175642374.977190707414996501630173108910035758593734944529542910622890148761', '45097345596758041873283619282123892'); + + BigNumber.config({DECIMAL_PLACES : 35, ROUNDING_MODE : 5}); + T('29439920525604978702137963975872.69380730159987832221210796568237689', '866708920553937325445884613300050781747349007538519310874214296.8110223'); + + BigNumber.config({DECIMAL_PLACES : 59, ROUNDING_MODE : 4}); + T('1794661.69950729989940645822298294821075937317947091890782289675406', '3220810615678.43'); + + BigNumber.config({DECIMAL_PLACES : 34, ROUNDING_MODE : 0}); + T('70943035594.1874458255551741147170761086757974', '5032914299318146884584.65'); + + BigNumber.config({DECIMAL_PLACES : 32, ROUNDING_MODE : 0}); + T('99675095.36380397144700231541652768934274', '9935124635783415.963067816149336'); + + BigNumber.config({DECIMAL_PLACES : 51, ROUNDING_MODE : 0}); + T('338.977137872157980140325006163392742535324091920552022', '114905.5'); + + BigNumber.config({DECIMAL_PLACES : 99, ROUNDING_MODE : 4}); + T('40323.511502232159196214269860943981338317851981421978663218667848589388654136721795079462638130870006184', '1625985579.870649244041736269081'); + + BigNumber.config({DECIMAL_PLACES : 19, ROUNDING_MODE : 2}); + T('295.1603373872948769259', '87119.62476658174193358770628953642875013784920139'); + + BigNumber.config({DECIMAL_PLACES : 86, ROUNDING_MODE : 1}); + T('325.42058050006609869285755826829582236913188764341404269672712729886860377826386017746564', '105898.554213'); + + BigNumber.config({DECIMAL_PLACES : 31, ROUNDING_MODE : 5}); + T('1.4142135623730950488016887242097', '2'); + + BigNumber.config({DECIMAL_PLACES : 38, ROUNDING_MODE : 3}); + T('6983926090.66911511517713486643086264164426147359', '48775223639928789120.645609367588844026447525761410'); + + BigNumber.config({DECIMAL_PLACES : 54, ROUNDING_MODE : 3}); + T('2393.370169129531592840167459790940738107671625604470887826', '5728220.7664791226615102'); + + BigNumber.config({DECIMAL_PLACES : 24, ROUNDING_MODE : 1}); + T('5.493632677928148482954946', '30.180'); + + BigNumber.config({DECIMAL_PLACES : 5, ROUNDING_MODE : 6}); + T('285181133.07225', '81328278660373834.0857869874879'); + + BigNumber.config({DECIMAL_PLACES : 4, ROUNDING_MODE : 5}); + T('9542652739457662719.528', '91062221305878834929293220504352063866.753627'); + + BigNumber.config({DECIMAL_PLACES : 78, ROUNDING_MODE : 6}); + T('12098280403299808.817491296272404617641688923237454622741160966458759689038562738845236283437224', '146368388716868184691692991958045.0'); + + BigNumber.config({DECIMAL_PLACES : 59, ROUNDING_MODE : 2}); + T('25105674989.27196694892019569379756456643245439196899838495631560703289', '630294916666955977775.754761194822998662848290817493307378901564640345'); + + BigNumber.config({DECIMAL_PLACES : 36, ROUNDING_MODE : 4}); + T('298760546437220458.455423225771015955168504223011027135', '89257864107466561972186848476830462.4'); + + BigNumber.config({DECIMAL_PLACES : 1, ROUNDING_MODE : 1}); + T('1.1', '1.393474'); + + BigNumber.config({DECIMAL_PLACES : 22, ROUNDING_MODE : 1}); + T('25453431235727183076231582.0045002428296642817772', '647877161671892234077761466199978409616134323779669.066906'); + + BigNumber.config({DECIMAL_PLACES : 33, ROUNDING_MODE : 6}); + T('1166849378.009584249870469632351477502709648', '1361537470961353636'); + + BigNumber.config({DECIMAL_PLACES : 9, ROUNDING_MODE : 0}); + T('120735117546849.465916751', '14576968609051557796737216230.279553123'); + + BigNumber.config({DECIMAL_PLACES : 84, ROUNDING_MODE : 0}); + T('180.802933832667757267699871900802757327723388473217684830187551089875783911937647806249', '32689.7008825000351504'); + + BigNumber.config({DECIMAL_PLACES : 31, ROUNDING_MODE : 6}); + T('1723788708991912690.6979822127245358278366754115883', '2971447513248005056078047539326528478.011258578775759932105013136721'); + + BigNumber.config({DECIMAL_PLACES : 35, ROUNDING_MODE : 6}); + T('41.31839758166512923717904870453658035', '1707.209978716550800090464759416961234'); + + BigNumber.config({DECIMAL_PLACES : 27, ROUNDING_MODE : 5}); + T('12.2574125193918108917955657', '150.244161670543100821504558563'); + + BigNumber.config({DECIMAL_PLACES : 96, ROUNDING_MODE : 1}); + T('1971415909727091.042395951589950091275895878232674723637406777994288306294009519427713077175092202052917069713678', '3886480689125093978070206267175.340387'); + + BigNumber.config({DECIMAL_PLACES : 100, ROUNDING_MODE : 2}); + T('29818.1986588727388202116378654602160649072880350624797884079437903955143243950832588490362445279127949134', '889124971.26'); + + BigNumber.config({DECIMAL_PLACES : 58, ROUNDING_MODE : 0}); + T('1104096573655.7434508163966770646809860896275509688219219768440479417337', '1219029243958352523057154.72'); + + BigNumber.config({DECIMAL_PLACES : 28, ROUNDING_MODE : 1}); + T('8.3212032754884674791676327316', '69.242423952'); + + BigNumber.config({DECIMAL_PLACES : 14, ROUNDING_MODE : 3}); + T('2.83003939901903', '8.009123'); + + BigNumber.config({DECIMAL_PLACES : 83, ROUNDING_MODE : 3}); + T('340.03323361794512720886720764159962236524054263630048376346443471719835370047017804718', '115622.59996467604822471094600529392511693650574987150'); + + BigNumber.config({DECIMAL_PLACES : 43, ROUNDING_MODE : 1}); + T('275469969089.0278368513030849885226902642614972231941872', '75883703869909951923056.9925972076612838068953091606028'); + + BigNumber.config({DECIMAL_PLACES : 73, ROUNDING_MODE : 3}); + T('1.7381024135533556067543983015209908994079067310222845767824051781162295524', '3.021'); + + BigNumber.config({DECIMAL_PLACES : 66, ROUNDING_MODE : 5}); + T('147188.397533864935817557107794698076331354474102470320276846588830452486', '21664424368.58705752'); + + BigNumber.config({DECIMAL_PLACES : 81, ROUNDING_MODE : 3}); + T('13205967.790168468376219309952073343238141391650648614253222880670277752337543824936186866', '174397585274967.06'); + + BigNumber.config({DECIMAL_PLACES : 70, ROUNDING_MODE : 3}); + T('476378245.2022326695078600546489393633852826695925662433781243683416850986996053', '226936232501958513.404536825694807'); + + BigNumber.config({DECIMAL_PLACES : 58, ROUNDING_MODE : 0}); + T('65441262.7320917904408200255581619450931183912735051626126918347697', '4282558867970665.8685319872056422875263001'); + + BigNumber.config({DECIMAL_PLACES : 0, ROUNDING_MODE : 2}); + T('16370078535249', '267979471250201715812551325.0'); + + BigNumber.config({DECIMAL_PLACES : 77, ROUNDING_MODE : 3}); + T('58598535224572228344606081143.86965847762937769186434110613067109010826343324179566657415332264633113223594', '3433788330465432215791468757905667403887370264585778014417.069465'); + + BigNumber.config({DECIMAL_PLACES : 64, ROUNDING_MODE : 2}); + T('318363725.1170424420783194862296940836221974113987521316095299779738219371', '101355461470399760.7'); + + BigNumber.config({DECIMAL_PLACES : 8, ROUNDING_MODE : 1}); + T('14365771163.04683583', '206375381109028038378.8968049886952690030430276282428851486182857624'); + + BigNumber.config({DECIMAL_PLACES : 62, ROUNDING_MODE : 1}); + T('2841081846208924.95006940291133134386661306911437159092547083699830973529759836', '8071746056857913481680923737647.56'); + + BigNumber.config({DECIMAL_PLACES : 19, ROUNDING_MODE : 2}); + T('131.3328926430846569131', '17248.32869'); + + BigNumber.config({DECIMAL_PLACES : 26, ROUNDING_MODE : 0}); + T('2450172181.50221018709980940566629037', '6003343719007299620.145731224358202401202766492638826695870673033440'); + + BigNumber.config({DECIMAL_PLACES : 30, ROUNDING_MODE : 1}); + T('175.721010954473741615074590589138', '30877.87369086228070118'); + + BigNumber.config({DECIMAL_PLACES : 8, ROUNDING_MODE : 3}); + T('35222503818695.83554274', '1240624775258042717246577010.284467326536941313249177'); + + BigNumber.config({DECIMAL_PLACES : 57, ROUNDING_MODE : 4}); + T('275332.808008853169433992082394650601012733904717450517250251808', '75808155166.04'); + + BigNumber.config({DECIMAL_PLACES : 68, ROUNDING_MODE : 4}); + T('650535575.02591020903090816952476015222892057257466848913366015211767330519338', '423196534374291650.4612554166'); + + BigNumber.config({DECIMAL_PLACES : 47, ROUNDING_MODE : 1}); + T('406927200.63717875393669232657792854954820044504469731078', '165589746618410732.8838911359'); + + BigNumber.config({DECIMAL_PLACES : 1, ROUNDING_MODE : 5}); + T('3.5', '12.2'); + + BigNumber.config({DECIMAL_PLACES : 33, ROUNDING_MODE : 1}); + T('37755263902.770333976947348906520419869045275', '1425459952367832590789.24209908593868009183303760839070054881073325'); + + BigNumber.config({DECIMAL_PLACES : 30, ROUNDING_MODE : 4}); + T('5', '25'); + + BigNumber.config({DECIMAL_PLACES : 93, ROUNDING_MODE : 5}); + T('207981785245332.655650133225843609703074411112915893328590968293802716495668521411178574935737507656194691295', '43256422993835672341998199525.8710'); + + BigNumber.config({DECIMAL_PLACES : 12, ROUNDING_MODE : 1}); + T('5567.151876678055', '30993180.018'); + + BigNumber.config({DECIMAL_PLACES : 44, ROUNDING_MODE : 4}); + T('230454239.20351432886371300553461777852426637742579329', '53109156366870600.60918351286261378516983689388197643'); + + BigNumber.config({DECIMAL_PLACES : 35, ROUNDING_MODE : 5}); + T('1', '1'); + + BigNumber.config({DECIMAL_PLACES : 11, ROUNDING_MODE : 1}); + T('93700655057314214506084.06304464429', '8779812758169783883346075569138347125163328358.876'); + + BigNumber.config({DECIMAL_PLACES : 33, ROUNDING_MODE : 5}); + T('9.852661929651296017820353932148571', '97.0749471'); + + BigNumber.config({DECIMAL_PLACES : 10, ROUNDING_MODE : 0}); + T('567906032003800411043011528704.9630913901', '322517261186301576710825760318275219851051098240516062527531'); + + BigNumber.config({DECIMAL_PLACES : 11, ROUNDING_MODE : 6}); + T('1.14593577918', '1.31316881'); + + BigNumber.config({DECIMAL_PLACES : 21, ROUNDING_MODE : 5}); + T('136701658884103.983801784031791378405', '18687343541665925641857895181.7974776695004112848393'); + + BigNumber.config({DECIMAL_PLACES : 0, ROUNDING_MODE : 0}); + T('9', '77.476'); + + BigNumber.config({DECIMAL_PLACES : 75, ROUNDING_MODE : 0}); + T('5939114.486012363442761208219053271364071174533711946796290607324372252717149892498', '35273080877961.90'); + + BigNumber.config({DECIMAL_PLACES : 3, ROUNDING_MODE : 4}); + T('758230332146782649.038', '574913236587420337445176452427091337.30'); + + BigNumber.config({DECIMAL_PLACES : 6, ROUNDING_MODE : 5}); + T('9666198.978421', '93435402690422.29441946383951996502994575376130537'); + + BigNumber.config({DECIMAL_PLACES : 75, ROUNDING_MODE : 0}); + T('2.590278911712160295850740530343268793109490349355580782704975797477636584901', '6.709544840460733512694560285948463771031066891686610162271281426162621'); + + BigNumber.config({DECIMAL_PLACES : 57, ROUNDING_MODE : 2}); + T('5.518061253737584236314019174438934514502897225542757968064', '30.449'); + + BigNumber.config({DECIMAL_PLACES : 70, ROUNDING_MODE : 6}); + T('2649559.3276549431175517495047876221738510158494831871465587320520938465946988', '7020164630763.31422095634109838375574'); + + BigNumber.config({DECIMAL_PLACES : 40, ROUNDING_MODE : 3}); + T('567.9550364780740745791662861971589109151899', '322572.92346081045270510896663891363296'); + + BigNumber.config({DECIMAL_PLACES : 99, ROUNDING_MODE : 2}); + T('3150748169414198847840463.18235887773465431759166732173861612818759700849401971501876448272195126779179581325159644604856019', '9927214027066925084042058637410661418578292156497'); + + BigNumber.config({DECIMAL_PLACES : 54, ROUNDING_MODE : 2}); + T('6230.779757580163866697716030430928315350835358299363369491', '38822616.38747072560206254107330849348366896430098893811980691'); + + BigNumber.config({DECIMAL_PLACES : 48, ROUNDING_MODE : 2}); + T('2.716247411411559909781469174249066399553542751307', '7.378'); + + BigNumber.config({DECIMAL_PLACES : 90, ROUNDING_MODE : 5}); + T('1003856.804189946449097794004928186526019323205855400434577744585139331157822001974710614149317739', '1007728483318.452486681'); + + BigNumber.config({DECIMAL_PLACES : 72, ROUNDING_MODE : 5}); + T('58545618495785373747.978660683381606360982662056343866125407934242953992920901245175791334319', '3427589445054046448675910703464645073846.568134490845289998323'); + + BigNumber.config({DECIMAL_PLACES : 39, ROUNDING_MODE : 4}); + T('152936840373282.069033230237997018443718074008255872817', '23389677143362760272547678245.15312539480334913939812559754408447298'); + + BigNumber.config({DECIMAL_PLACES : 85, ROUNDING_MODE : 3}); + T('5925.3196723393751424830150929842214599276197242531387756086505181454007563045132273149778', '35109413.219412'); + + BigNumber.config({DECIMAL_PLACES : 80, ROUNDING_MODE : 3}); + T('38561228.56697678575069939167914746425178007661373044851182281245001919601239245478067382', '1486968348594626.53354241638419629718421662019251450932947890'); + + BigNumber.config({DECIMAL_PLACES : 10, ROUNDING_MODE : 5}); + T('150.4509587455', '22635.4909874539178687243'); + + BigNumber.config({DECIMAL_PLACES : 86, ROUNDING_MODE : 5}); + T('1.42777813310472190178856389527377945214335953146126319604328603730379698595792254248379', '2.03855039737200497185073691500462232203792065665077273244'); + + BigNumber.config({DECIMAL_PLACES : 55, ROUNDING_MODE : 5}); + T('516549215.787659938423166339922918873941357009613190991233143989', '266823092330846471.379278'); + + BigNumber.config({DECIMAL_PLACES : 0, ROUNDING_MODE : 0}); + T('2', '1.08767122699'); + + BigNumber.config({DECIMAL_PLACES : 52, ROUNDING_MODE : 0}); + T('6324067120009086551.5468269550550503238490888524340636718633012263225092', '39993824938380022323743029539005736229.3283338711988086216840448390248'); + + BigNumber.config({DECIMAL_PLACES : 36, ROUNDING_MODE : 2}); + T('144118.390048216955510241008109108904440825', '20770110350.090'); + + BigNumber.config({DECIMAL_PLACES : 17, ROUNDING_MODE : 6}); + T('18.78297101099823345', '352.8'); + + BigNumber.config({DECIMAL_PLACES : 19, ROUNDING_MODE : 4}); + T('625521102275061592166085.7029768359919241933', '391276649391408064574867871389972320049448749231.515233113926295781'); + + BigNumber.config({DECIMAL_PLACES : 50, ROUNDING_MODE : 1}); + T('15882418.01726333951134210284351839021652515057337109745443', '252251202075091.1486881249278033607224037158843540912'); + + BigNumber.config({DECIMAL_PLACES : 98, ROUNDING_MODE : 1}); + T('9246102.56100069809273634059139333855094718263186671420242936944261575893351481020001402555139465129260003', '85490412568543.6679950745889670338728'); + + BigNumber.config({DECIMAL_PLACES : 15, ROUNDING_MODE : 1}); + T('60961608.064554172663083', '3716317657816316.3414696396181849068766696759170'); + + BigNumber.config({DECIMAL_PLACES : 78, ROUNDING_MODE : 6}); + T('5246979273996.215099692426428798175290449427111226766305846934068259604146954605057636536678', '27530791501745848489064024.8188180632265280334699492709026'); + + BigNumber.config({DECIMAL_PLACES : 84, ROUNDING_MODE : 0}); + T('549012.663441058051793486405383817407015996732587541151595200978084268869699408419983990553', '301414904618.6444803'); + + BigNumber.config({DECIMAL_PLACES : 64, ROUNDING_MODE : 4}); + T('143455.7859397685383562199471977165574195449037114065988291931607472028', '20579562519.59669265955319'); + + BigNumber.config({DECIMAL_PLACES : 48, ROUNDING_MODE : 5}); + T('7323.414075814701603113726796738850491925289154116673', '53632393.7258409'); + + BigNumber.config({DECIMAL_PLACES : 45, ROUNDING_MODE : 0}); + T('314146057801896.072108842090558464557933909765109713994989546', '98687745632472227996598145632.74641148442027'); + + BigNumber.config({DECIMAL_PLACES : 93, ROUNDING_MODE : 3}); + T('1980077181169544258109.45175016109951535899380651346232425215206090353014542452514108138787115693996106945620698162', '3920705643388328194332944477286896844012715'); + + BigNumber.config({DECIMAL_PLACES : 1, ROUNDING_MODE : 3}); + T('6011.1', '36133937.82872246239'); + + BigNumber.config({DECIMAL_PLACES : 41, ROUNDING_MODE : 2}); + T('31921798365272.20937299799446076643740006676603681348599', '1019001210873095498660884207.3946941973644977'); + + BigNumber.config({DECIMAL_PLACES : 31, ROUNDING_MODE : 4}); + T('4.8579831205964476879084184791886', '23.6'); + + BigNumber.config({DECIMAL_PLACES : 96, ROUNDING_MODE : 4}); + T('532180335383422496024802938009316.437231456810652157973165941886814685643110949100858986799826492779541359875188007141128020804568', '283215909368812049909044402175454534173632261029912991407795749397.57'); + + BigNumber.config({DECIMAL_PLACES : 88, ROUNDING_MODE : 5}); + T('4117620393205561878616466439.3589035337592787404765061242925453323082755577389136298123562314912920363974305057593966', '16954797702542326015871361358548968955831149713211464473.1194145872'); + + BigNumber.config({DECIMAL_PLACES : 96, ROUNDING_MODE : 6}); + T('125845316.009946996954481751436769926191513940640832361751949762234621432238139835729629824687966125681673', '15837043561643421.95007453'); + + BigNumber.config({DECIMAL_PLACES : 43, ROUNDING_MODE : 2}); + T('43215736562696288.1278295788274110509465500800588178280120433', '1867599886656364788451547336030574.1042929'); + + BigNumber.config({DECIMAL_PLACES : 54, ROUNDING_MODE : 4}); + T('15621491479513403048.699533910172088405978421413948149996097276644744344976', '244030996044509850142368364708463636903.065970027514531227023'); + + BigNumber.config({DECIMAL_PLACES : 100, ROUNDING_MODE : 3}); + T('178337437922.3409184119906563307617679811185757303031127956447827491012301101339529853906621960842816952844554116', '31804241764704800710353.817213026160423493644719533'); + + BigNumber.config({DECIMAL_PLACES : 79, ROUNDING_MODE : 1}); + T('887156.5304358788486852760691897281127658626051846106550248530081803993620243050311642', '787046709495.026433990039530'); + + BigNumber.config({DECIMAL_PLACES : 63, ROUNDING_MODE : 1}); + T('507.236726280487857380940671340356658005564340464804099830756705102', '257289.096487746561'); + + BigNumber.config({DECIMAL_PLACES : 37, ROUNDING_MODE : 5}); + T('706928215661578.645391690986420023561721605027645326', '499747502098463447175418473761.2978027539601447630695939'); + + BigNumber.config({DECIMAL_PLACES : 16, ROUNDING_MODE : 6}); + T('517763510430698606317.0809006022190406', '268079052733520144503181249583007928315915.4142727240345924'); + + BigNumber.config({DECIMAL_PLACES : 82, ROUNDING_MODE : 4}); + T('28120380999784456871711599714211.3366834435766268345186681299717226185752325559124860129892133352608046765821533895', '790755827573038690221243071006380153898932673099784811839693348.2'); + + BigNumber.config({DECIMAL_PLACES : 77, ROUNDING_MODE : 6}); + T('15996.31328328727145297157844857483958854490192496672111354158713663533836276729421', '255882038.657072806407074465204520879667922106288826705864274522358957126'); + + BigNumber.config({DECIMAL_PLACES : 73, ROUNDING_MODE : 2}); + T('4529.2020575270077036355835603989646565391897334057016463815795973838051013483', '20513671.27790688'); + + BigNumber.config({DECIMAL_PLACES : 3, ROUNDING_MODE : 1}); + T('11.957', '142.978068453'); + + BigNumber.config({DECIMAL_PLACES : 62, ROUNDING_MODE : 5}); + T('1685976945242985678.95815067126816165675418912553152194874360838240711904223001193', '2842518259890869530436269343367542397.5276842644433823844843054994'); + + BigNumber.config({DECIMAL_PLACES : 87, ROUNDING_MODE : 4}); + T('375790983.100062192270906028735048485455706166096392111303292385474398132353985937006549336350115', '141218862979311228.19925'); + + BigNumber.config({DECIMAL_PLACES : 70, ROUNDING_MODE : 6}); + T('1.3582121735950112188773107283180479288740509274225903562199127996284062', '1.8447403085016848904555'); + + BigNumber.config({DECIMAL_PLACES : 61, ROUNDING_MODE : 1}); + T('373517970953920.4727120160117475904085285980006296740379565850799987331831582', '139515674625533777927629498890.02832807275'); + + BigNumber.config({DECIMAL_PLACES : 11, ROUNDING_MODE : 0}); + T('130670434621810838954485430.74993708051', '17074762484252940770822154406823463583074092132494098.1620220080582134'); + + BigNumber.config({DECIMAL_PLACES : 17, ROUNDING_MODE : 6}); + T('410862.91578166713390158', '168808335564.6133'); + + BigNumber.config({DECIMAL_PLACES : 52, ROUNDING_MODE : 5}); + T('1.056882207249227940185147536423171386481708667802783', '1.117'); + + BigNumber.config({DECIMAL_PLACES : 97, ROUNDING_MODE : 3}); + T('152.6779992371273697633357536044552314267940328982004863405769613320275457342815692626846477563670374', '23310.5714510522657034278023418482838530446'); + + BigNumber.config({DECIMAL_PLACES : 61, ROUNDING_MODE : 5}); + T('5045832252789636.3813168206783005421277846727380224180447331191378125099729439', '25460423123292136945025493632037.90746370'); + + BigNumber.config({DECIMAL_PLACES : 79, ROUNDING_MODE : 0}); + T('241.0932155085819555358790117930184281430544398516041254679339298261706270710481942', '58125.938564267542760919843105102271'); + + BigNumber.config({DECIMAL_PLACES : 75, ROUNDING_MODE : 0}); + T('817025.371828418518631071224096112860591604381801846574731525820101525218802811325', '667530458211.36553674192'); + + BigNumber.config({DECIMAL_PLACES : 21, ROUNDING_MODE : 5}); + T('28278311609946.326736102526929532491', '799662907509225213536765867.66273'); + + BigNumber.config({DECIMAL_PLACES : 56, ROUNDING_MODE : 6}); + T('1.60044993673654159696798740599151325319220173155080452821', '2.56144'); + + BigNumber.config({DECIMAL_PLACES : 8, ROUNDING_MODE : 2}); + T('57250.10343607', '3277574343.439725271285333261007'); + + BigNumber.config({DECIMAL_PLACES : 7, ROUNDING_MODE : 6}); + T('110855888.6785004', '12289028054700075.1523748772313326451842826700743417901399875438785852'); + + BigNumber.config({DECIMAL_PLACES : 83, ROUNDING_MODE : 6}); + T('317340360.91013300290215375746814647227032587585124984322407432345305135787860411883975304799', '100704904662573470.40604311931228040'); + + BigNumber.config({DECIMAL_PLACES : 43, ROUNDING_MODE : 2}); + T('30794104978259578447.5324907738864954704313972589515591946319482', '948276901412071352410750952884177783211.51'); + + BigNumber.config({DECIMAL_PLACES : 40, ROUNDING_MODE : 6}); + T('904743.1002686033189575318435946062559210433293', '818560077483.643999'); + + BigNumber.config({DECIMAL_PLACES : 59, ROUNDING_MODE : 2}); + T('814.22285241569076215709135504419403461514193802087829114916346', '662958.85339594374'); + + BigNumber.config({DECIMAL_PLACES : 40, ROUNDING_MODE : 0}); + T('143152984767.6392799439406910636477216233068934157431', '20492777047883963708442.98940241835545510'); + + BigNumber.config({DECIMAL_PLACES : 59, ROUNDING_MODE : 0}); + T('194263.56051042638141037702010101367144786906155207240685722988634', '37738330942.18809220193041257372062644812542074623487171376384576'); + + BigNumber.config({DECIMAL_PLACES : 49, ROUNDING_MODE : 6}); + T('125613206310637238.9999516821420060389669668726285618243029863493137', '15778677599638715084039823531413754'); + + BigNumber.config({DECIMAL_PLACES : 95, ROUNDING_MODE : 2}); + T('2.81203323799266774393606177414945136596491179572335714244696589280445996807268708486433927395365', '7.907530931575527548477411073438'); + + BigNumber.config({DECIMAL_PLACES : 37, ROUNDING_MODE : 5}); + T('97111976.5122288174252479213412431470964858043', '9430735982111681.5109964772635493531635006539282859130'); + + BigNumber.config({DECIMAL_PLACES : 54, ROUNDING_MODE : 6}); + T('3949738515.41597806049335653753381952486682043359067751877565231', '15600434340160414359.0242581826605547758376333581'); + + BigNumber.config({DECIMAL_PLACES : 73, ROUNDING_MODE : 1}); + T('3506245338782.0109313646218819195242298503032566600274291448066584621385570357489121387', '12293756375730578609336028'); + + BigNumber.config({DECIMAL_PLACES : 10, ROUNDING_MODE : 4}); + T('131730705.496855457', '17352978770699264.525247991247407117213299374535'); + + BigNumber.config({DECIMAL_PLACES : 7, ROUNDING_MODE : 0}); + T('11.2973449', '127.63'); + + BigNumber.config({DECIMAL_PLACES : 10, ROUNDING_MODE : 5}); + T('848.3895866356', '719764.8907118'); + + BigNumber.config({DECIMAL_PLACES : 93, ROUNDING_MODE : 5}); + T('5534.674100613332409185919669221553225849120645345046040040296971736869045359760082626174208915379', '30632617.4'); + + BigNumber.config({DECIMAL_PLACES : 50, ROUNDING_MODE : 2}); + T('10928938620655456801.29603452229846959727304567882485936765429318591408', '119441699374054398699281419105567220380.0967437459074243'); + + BigNumber.config({DECIMAL_PLACES : 28, ROUNDING_MODE : 5}); + T('8725513451707327112558.6421593666547417330120647038', '76134584995925513871275158019859409214493256'); + + BigNumber.config({DECIMAL_PLACES : 41, ROUNDING_MODE : 0}); + T('15138902098810276416.34547477556955649142152996550437235286286', '229186356757362192283401407016237741007.875'); + + BigNumber.config({DECIMAL_PLACES : 95, ROUNDING_MODE : 6}); + T('77016750197767918492761921.18729300767631826805523375696015268816409374420696804911556102049294908310575896539550300168736', '5931579811025384712266992972162620186506533282884778'); + + BigNumber.config({DECIMAL_PLACES : 28, ROUNDING_MODE : 4}); + T('204726156.573360406099498017635273106', '41912799185300080.215440520642760629606577'); + + BigNumber.config({DECIMAL_PLACES : 34, ROUNDING_MODE : 3}); + T('18354.9618575334846703385169041300559086', '336904624.79150907'); + + BigNumber.config({DECIMAL_PLACES : 94, ROUNDING_MODE : 1}); + T('5.2702941094401932817072533773788105939199657130326470941562465397903460264359252040580345287167', '27.776'); + + BigNumber.config({DECIMAL_PLACES : 84, ROUNDING_MODE : 2}); + T('1506899789309989.325166093578631118018664419471205880907150775938926778426237139996792273511931625682', '2270746975022490218466170988903.9034'); + + BigNumber.config({DECIMAL_PLACES : 93, ROUNDING_MODE : 1}); + T('215.141797893854182599917347182504049580948821046088961606891404751873995447073405879627656862967', '46285.993201'); + + BigNumber.config({DECIMAL_PLACES : 59, ROUNDING_MODE : 4}); + T('5619123349635224222077.73689475358389819964179507664344923519119631866482798769645', '31574547218415782317658255169091503768595218'); + + BigNumber.config({DECIMAL_PLACES : 74, ROUNDING_MODE : 6}); + T('3139311096862303881033372.8895562022105500271168912428067595756172195924006540181335036545047807615', '9855274162882801500447430900223953535768965599628.60066266'); + + BigNumber.config({DECIMAL_PLACES : 9, ROUNDING_MODE : 0}); + T('5188166.045323001', '26917066913842.5'); + + BigNumber.config({DECIMAL_PLACES : 60, ROUNDING_MODE : 5}); + T('48.006249593151931618014834046061943060009707858084284198526528', '2304.6'); + + BigNumber.config({DECIMAL_PLACES : 33, ROUNDING_MODE : 2}); + T('1.099164138733610613605106295601295', '1.208161803878'); + + BigNumber.config({DECIMAL_PLACES : 49, ROUNDING_MODE : 1}); + T('1215373388900855295845.5639091709273307937490329590109938808688535471517', '1477132474448349650830670930172186917647227.199322184697'); + + BigNumber.config({DECIMAL_PLACES : 11, ROUNDING_MODE : 3}); + T('41886.32804080003', '1754464476.741510996586572659655625634656330393988765738834499008646065'); + + BigNumber.config({DECIMAL_PLACES : 94, ROUNDING_MODE : 6}); + T('2930.8115486762881469691621854256971849413713695023369381527515359143547703303370877901349455103678', '8589656.33385430252628284912359208432320350710697'); + + BigNumber.config({DECIMAL_PLACES : 62, ROUNDING_MODE : 1}); + T('196113185633565235.48902239272865560851203376619671611896859555577833436790431753', '38460381579345217875459335568935383.8847449697048154978487350092029369484'); + + BigNumber.config({DECIMAL_PLACES : 91, ROUNDING_MODE : 1}); + T('1.3090836489697669430592230864645135220438796259107745885986886542431248034364317796928116096', '1.7137'); + + BigNumber.config({DECIMAL_PLACES : 34, ROUNDING_MODE : 4}); + T('6494.1269986060183145522727735872976974', '42173685.4740236118'); + + BigNumber.config({DECIMAL_PLACES : 89, ROUNDING_MODE : 6}); + T('1.73205080756887729352744634150587236694280525381038062805580697945193301690880003708114619', '3'); + + BigNumber.config({DECIMAL_PLACES : 84, ROUNDING_MODE : 1}); + T('510173005.753621652801505640054349100211743000777249630455648526090128271276356538524042100252', '260276495799684872.0535671973932244012807052944'); + + BigNumber.config({DECIMAL_PLACES : 96, ROUNDING_MODE : 4}); + T('26680.140555343682781267465538767291165017590933503085728684041740432806578026822495320310875029221617', '711829900.0528947178462167211'); + + BigNumber.config({DECIMAL_PLACES : 45, ROUNDING_MODE : 6}); + T('26863311087875171271392.514957801132618076235905273081446630753668319', '721637482603957117805410790743695797070814094.4'); + + BigNumber.config({DECIMAL_PLACES : 66, ROUNDING_MODE : 4}); + T('42.095644254289553432987753554042034809688485652611694000319150583822', '1772.04326518370109313123764508971031570992396357099'); + + BigNumber.config({DECIMAL_PLACES : 45, ROUNDING_MODE : 1}); + T('29.162455980379039696650800234586962597340058414', '850.44883880754521733664670163746907111624452011747340966506055962305864'); + + BigNumber.config({DECIMAL_PLACES : 20, ROUNDING_MODE : 2}); + T('174294956414350158.07876863178146700685', '30378731831480221313550099920962541.2005954592883112926466593'); + + BigNumber.config({DECIMAL_PLACES : 93, ROUNDING_MODE : 5}); + T('7.549834435270749697236684806946117058222194704623380138298626905710721953917811195582452074148', '57'); + + BigNumber.config({DECIMAL_PLACES : 89, ROUNDING_MODE : 0}); + T('47296675573534188016.13909410443959003286535401918757168674179806460628276222655770436524602843813149348446075', '2236975520308145512917915800636179158586.5092232275216783'); + + BigNumber.config({DECIMAL_PLACES : 28, ROUNDING_MODE : 6}); + T('1447945.6262667282803484290772440854', '2096546536624.94796979316325227120931989581'); + + BigNumber.config({DECIMAL_PLACES : 22, ROUNDING_MODE : 0}); + T('4.3292008813174583991369', '18.741980270799858523549010'); + + BigNumber.config({DECIMAL_PLACES : 52, ROUNDING_MODE : 1}); + T('2849247060619898470261078632206729.3993355880326702595070558832203445897791540572152075', '8118208812451131388164025563919715495922430919813078457425427917914'); + + BigNumber.config({DECIMAL_PLACES : 19, ROUNDING_MODE : 3}); + T('3.4829585125292549197', '12.1310'); + + BigNumber.config({DECIMAL_PLACES : 60, ROUNDING_MODE : 5}); + T('32.428290118351907948165411821421678725137118993804751360645501', '1051.594'); + + BigNumber.config({DECIMAL_PLACES : 86, ROUNDING_MODE : 3}); + T('7.2070479393438198497379099999716403294014366391234593782940686026097873630434300194405', '51.94154'); + + BigNumber.config({DECIMAL_PLACES : 15, ROUNDING_MODE : 6}); + T('3.605551275463989', '13'); + + BigNumber.config({DECIMAL_PLACES : 84, ROUNDING_MODE : 2}); + T('603824436782267945465764574485423.80547609420748446504714711955721919730100747232448916748085772070372661156640640062', '364603950455423098555431241498110457415113057007663996510897977425.745632'); + + BigNumber.config({DECIMAL_PLACES : 19, ROUNDING_MODE : 4}); + T('4.3574355751624058321', '18.987244791690926526060867101645214646023908888'); + + BigNumber.config({DECIMAL_PLACES : 84, ROUNDING_MODE : 0}); + T('504996390701500.435239100967145881400957693439105021537528696911649198853064966592673953962003822544', '255021354621542475250452411149.0055116842377539'); + + BigNumber.config({DECIMAL_PLACES : 42, ROUNDING_MODE : 1}); + T('2909.86260112701154717384254378546693847874984', '8467300.357437657503048755260363563653074'); + + BigNumber.config({DECIMAL_PLACES : 73, ROUNDING_MODE : 5}); + T('9.3053479247151205055515881569599031024893777073506787564241255718300181642', '86.5895'); + + BigNumber.config({DECIMAL_PLACES : 44, ROUNDING_MODE : 1}); + T('15184837.76261575421430103273013272422421584951851796', '230579297876961.4243352370777246641742839628933607349'); + + BigNumber.config({DECIMAL_PLACES : 64, ROUNDING_MODE : 0}); + T('50659385450.8214538694263336502871503348032787319532637210737215146773327181', '2566373334254900398902'); + + BigNumber.config({DECIMAL_PLACES : 77, ROUNDING_MODE : 0}); + T('226.60228379499643935590935027196664811910610985785113122241953538017762352877784', '51348.59502110810590185955521392268'); + + BigNumber.config({DECIMAL_PLACES : 22, ROUNDING_MODE : 0}); + T('9175842.8911770299558613410655', '84196092763564.036005'); + + BigNumber.config({DECIMAL_PLACES : 94, ROUNDING_MODE : 2}); + T('62524.6899557388029462095111297731720065761609804421739715387797639468988712711156019109649322575312', '3909336854.0612647523247262815157065521719556832865767218863239798'); + + BigNumber.config({DECIMAL_PLACES : 80, ROUNDING_MODE : 5}); + T('652.31309350134792806991152377498486054402221136563232349988445782260141722659661051', '425512.3719532982845082007576'); + + BigNumber.config({DECIMAL_PLACES : 55, ROUNDING_MODE : 5}); + T('186832499748734.4829944850442559429780865393108169056074459010304450005', '34906382962360870651268614097.94565831926234089039'); + + BigNumber.config({DECIMAL_PLACES : 95, ROUNDING_MODE : 2}); + T('3693959583316804.51199229840601385770877601259801966369268344952147731012934598215128326668350642370497748936308', '13645337403178060015123543336999.7073728144053018493'); + + BigNumber.config({DECIMAL_PLACES : 41, ROUNDING_MODE : 5}); + T('36.94471545431091826803359482480916267400888', '1364.912'); + + BigNumber.config({DECIMAL_PLACES : 17, ROUNDING_MODE : 1}); + T('43406.38666118846617211', '1884114402.9806'); + + BigNumber.config({DECIMAL_PLACES : 50, ROUNDING_MODE : 3}); + T('31987334765.001851900823021837506682024607261426616460152499', '1023189585368296079968.1551605'); + + BigNumber.config({DECIMAL_PLACES : 64, ROUNDING_MODE : 4}); + T('18838.0008560899974069055717427261526855765440186889008088955787710407', '354870276.254047475192657981134539079181359836556514113293'); + + BigNumber.config({DECIMAL_PLACES : 50, ROUNDING_MODE : 5}); + T('84947581.82669065818681578404113066561367677316674137015818', '7216091658202304.9799531382271756'); + + BigNumber.config({DECIMAL_PLACES : 46, ROUNDING_MODE : 1}); + T('1101.6975972788540124782719480347417662099926636854', '1213737.59585'); + + BigNumber.config({DECIMAL_PLACES : 12, ROUNDING_MODE : 4}); + T('167205274115.103780530647', '27957603691906994337374.3099966843916195600451'); + + BigNumber.config({DECIMAL_PLACES : 90, ROUNDING_MODE : 5}); + T('113.530603646298245333104493769623840715435780348102499661940881285297460005634412373532130963', '12889.19796429286843872'); + + BigNumber.config({DECIMAL_PLACES : 88, ROUNDING_MODE : 0}); + T('82445912016.2463318822900430706509122231808029943890719024634238434031416371678942728723333531287386', '6797328408190631297644.10179858770371764'); + + BigNumber.config({DECIMAL_PLACES : 56, ROUNDING_MODE : 6}); + T('207651.3290995157162487299892765302290963929658888771167106618', '43119074476.795382480774731451352243170'); + + BigNumber.config({DECIMAL_PLACES : 10, ROUNDING_MODE : 0}); + T('8552153877171979936586493.5446127951', '73139335938827728891918366925379870129969607150489.41'); + + BigNumber.config({DECIMAL_PLACES : 99, ROUNDING_MODE : 2}); + T('127053.542191315698254482051137112861614287006654322252567463225598634600921108288525772345080371829053454', '16142602583.360438243472020343390659992'); + + BigNumber.config({DECIMAL_PLACES : 1, ROUNDING_MODE : 5}); + T('225.1', '50649.6'); + + BigNumber.config({DECIMAL_PLACES : 34, ROUNDING_MODE : 3}); + T('11596007050.2163502967919818632722642459840343', '134467379508667301633.785635590876603169506'); + + BigNumber.config({DECIMAL_PLACES : 81, ROUNDING_MODE : 1}); + T('69437193.18414365787090023169347820662309913940132765325216924168874836547917544180140358', '4821523797292086.456524223677764683'); + + BigNumber.config({DECIMAL_PLACES : 1, ROUNDING_MODE : 3}); + T('5233576575683568887.6', '27390323773543750860832487238432062688.6624185028799484121035355694'); + + BigNumber.config({DECIMAL_PLACES : 10, ROUNDING_MODE : 1}); + T('46384.4029667643', '2151512838.58318'); + + BigNumber.config({DECIMAL_PLACES : 60, ROUNDING_MODE : 1}); + T('195576.992166358873062953962788281277982207581311538326506522826301', '38250359864.84'); + + BigNumber.config({DECIMAL_PLACES : 68, ROUNDING_MODE : 4}); + T('139866932291876214.19345627298588358215061823765973088810201696524681681453253341518481', '19562758748740285291218891169284396.9939195499727764062935729066980524'); + + BigNumber.config({DECIMAL_PLACES : 95, ROUNDING_MODE : 5}); + T('3666563896676760573917601692322.77212311488832397132809756567872530081505667435009858623027596887637272536145349022150950454966', '13443690808413470589583040162367634914502883969219377974038547.0'); + + BigNumber.config({DECIMAL_PLACES : 23, ROUNDING_MODE : 2}); + T('6961365655.56399610188128596984179', '48460611790465945211.698621678317269105061971842437574643735599856953314'); + + BigNumber.config({DECIMAL_PLACES : 5, ROUNDING_MODE : 6}); + T('1846705955.64084', '3410322886599335678.3442689068158599617426109752302'); + + BigNumber.config({DECIMAL_PLACES : 62, ROUNDING_MODE : 3}); + T('20383600747812483.68227625101786038548655392179182361804236021798711869594207098', '415491179446221643995603131550002.1039032281795321692412'); + + BigNumber.config({DECIMAL_PLACES : 70, ROUNDING_MODE : 0}); + T('646712979.5996517630443612769041002926810614019248010215062306018646711436498243', '418237677982659597.441624218'); + + BigNumber.config({DECIMAL_PLACES : 41, ROUNDING_MODE : 4}); + T('1.19496644978306365000998087438061877340396', '1.42794481610713918'); + + BigNumber.config({DECIMAL_PLACES : 33, ROUNDING_MODE : 5}); + T('23.211007210632864978030233482478479', '538.750855732050851236433'); + + BigNumber.config({DECIMAL_PLACES : 42, ROUNDING_MODE : 2}); + T('13144319811979.322618006430364389461341957559744602233547', '172773143319592135100403688.71821166'); + + BigNumber.config({DECIMAL_PLACES : 70, ROUNDING_MODE : 3}); + T('187740161098222151.1246717298374850292596863378927231390131419626237794062025199113420744', '35246368089186405941471994235233738.419206808'); + + BigNumber.config({DECIMAL_PLACES : 91, ROUNDING_MODE : 5}); + T('10178.8922729849318155784011624865183762792234558462424939879226978772185670426454331737205675199', '103609847.9050323516770459242872382420478556123172737547274829818796745411'); + + BigNumber.config({DECIMAL_PLACES : 16, ROUNDING_MODE : 1}); + T('118915484534858138581.323615778120248', '14140892462160085127547570668448789567436.5212757788'); + + BigNumber.config({DECIMAL_PLACES : 6, ROUNDING_MODE : 3}); + T('1381256041.58235', '1907868252407743284.86488650760'); + + BigNumber.config({DECIMAL_PLACES : 8, ROUNDING_MODE : 0}); + T('332932692.06871668', '110844177448122917.8860635946844763529034613752768046936282087236524'); + + BigNumber.config({DECIMAL_PLACES : 25, ROUNDING_MODE : 5}); + T('4066.8947213589552554383213699', '16539632.674617334307963480316101638407048800069358878699410140'); + + BigNumber.config({DECIMAL_PLACES : 65, ROUNDING_MODE : 4}); + T('22189652304.16065994787886588015884847951186574095167035995581747786105688131', '492380669379542485181.2474040'); + + BigNumber.config({DECIMAL_PLACES : 36, ROUNDING_MODE : 2}); + T('158353311059733655489.651998750507515328606317455210195317', '25075771123580765253407550077977888331941.700640558633406504581615363'); + + BigNumber.config({DECIMAL_PLACES : 24, ROUNDING_MODE : 2}); + T('1143117392445205.276951994811536971745352', '1306717372910725454386211774949.25170879486190843648039398'); + + BigNumber.config({DECIMAL_PLACES : 33, ROUNDING_MODE : 4}); + T('8040.191011551416394620773267580733826', '64644671.5022321884'); + + BigNumber.config({DECIMAL_PLACES : 71, ROUNDING_MODE : 0}); + T('561890.07913644314118462700408674766996898826917350839637746190609856169025443', '315720461031.95833577709317260'); + + BigNumber.config({DECIMAL_PLACES : 64, ROUNDING_MODE : 1}); + T('4.8039462944541750986312884225369797018444226801916417173216151656', '23.0779'); + + BigNumber.config({DECIMAL_PLACES : 0, ROUNDING_MODE : 6}); + T('9', '80'); + + BigNumber.config({DECIMAL_PLACES : 6, ROUNDING_MODE : 2}); + T('1326108751496903140357139441.556612', '1758564420796675206900880488447739278881655552577114313.23383192739240437'); + + BigNumber.config({DECIMAL_PLACES : 87, ROUNDING_MODE : 5}); + T('14151144510912448.473766149283465377648372312085324275310001302203928077203283587712858416110305268972089', '200254890968727520521220007130381.2005848441498962923460336400353828714'); + + BigNumber.config({DECIMAL_PLACES : 9, ROUNDING_MODE : 6}); + T('1563587460831009.71743044', '2444805747667964347315337272292.5'); + + BigNumber.config({DECIMAL_PLACES : 72, ROUNDING_MODE : 5}); + T('52.135400641023178004669430567271849421048932266185106328569016760444478187', '2718.1'); + + BigNumber.config({DECIMAL_PLACES : 13, ROUNDING_MODE : 6}); + T('1351268503014631893144505099260337.724034725277', '1825926567239404241691076828603758142583205695412586217329125535956.66'); + + BigNumber.config({DECIMAL_PLACES : 6, ROUNDING_MODE : 5}); + T('11695015362959112818180.313719', '136773384339849669329939661060606953014336914.9830023'); + + BigNumber.config({DECIMAL_PLACES : 23, ROUNDING_MODE : 0}); + T('7.14759622880307922056248', '51.08813185'); + + BigNumber.config({DECIMAL_PLACES : 33, ROUNDING_MODE : 6}); + T('77955097085870883368715827.917274179795960111351375993042359', '6076997161667555092341666871976429897795152678135287.8510389381'); + + BigNumber.config({DECIMAL_PLACES : 62, ROUNDING_MODE : 3}); + T('302769879390478259.67043697315910757236727400949100809491703248976382488199775657', '91669599866124752017570835756271700.413528435509'); + + BigNumber.config({DECIMAL_PLACES : 34, ROUNDING_MODE : 2}); + T('2282.2870108730847351310392476188091352', '5208834.0'); + + BigNumber.config({DECIMAL_PLACES : 34, ROUNDING_MODE : 4}); + T('17078631911484768.4490028733180418062149995467371729', '291679667967985875726407897209547.1387'); + + BigNumber.config({DECIMAL_PLACES : 0, ROUNDING_MODE : 1}); + T('10', '111.670519788005621906773268955014426'); + + BigNumber.config({DECIMAL_PLACES : 69, ROUNDING_MODE : 6}); + T('30174323609673224480.488459745551217192738545389494419174874058939462629781457993432294265', '910489805301282971552972612705593407831.71268096'); + + BigNumber.config({DECIMAL_PLACES : 37, ROUNDING_MODE : 5}); + T('14.624254852812159605249622627938622344', '213.868830'); + + BigNumber.config({DECIMAL_PLACES : 8, ROUNDING_MODE : 3}); + T('29466625146755603.86185507', '868281997539409712828877902435825'); + + BigNumber.config({DECIMAL_PLACES : 8, ROUNDING_MODE : 4}); + T('6927129100625732.43372701', '47985117576735868701359921592072.70372575612465393845774834727674'); + + BigNumber.config({DECIMAL_PLACES : 94, ROUNDING_MODE : 5}); + T('9642346281.31563248643896664520776898744585192834730152101992432409131888949068606645072468415514441421', '92974841808801406424.6547297963'); + + BigNumber.config({DECIMAL_PLACES : 82, ROUNDING_MODE : 2}); + T('3088984.5336327982458333177572065032974592687507455458620037359367363260748579302628662882', '9541825449022.6360771777341161'); + + BigNumber.config({DECIMAL_PLACES : 96, ROUNDING_MODE : 5}); + T('255.021597053934205856842576268995125858655341587771945346677594354254384952531873852274081014203538', '65036.01496393918362398639291683514922'); + + BigNumber.config({DECIMAL_PLACES : 28, ROUNDING_MODE : 6}); + T('1.6646941094584521805350551637', '2.7712064780656691696'); + + BigNumber.config({DECIMAL_PLACES : 89, ROUNDING_MODE : 5}); + T('19884686303023658767.08797961545126816028858276270712259956194324382612814640205061878988423416501222805073703', '395400749369656702132720990647874201569.1939430970209654'); + + BigNumber.config({DECIMAL_PLACES : 58, ROUNDING_MODE : 2}); + T('9.6166664915127248990027449407750613964822315991471685061583', '92.480274408983661791945'); + + BigNumber.config({DECIMAL_PLACES : 88, ROUNDING_MODE : 6}); + T('36686.0099950360970023090500579037458831558057639869287390847137799628072928071825825683327205', '1345863329.35588841'); + + BigNumber.config({DECIMAL_PLACES : 14, ROUNDING_MODE : 5}); + T('82540126.57450483338603', '6812872494935279.00063912455569141793822346070304115108'); + + BigNumber.config({DECIMAL_PLACES : 5, ROUNDING_MODE : 4}); + T('5968822849220.00895', '35626846205370865688433017.83222'); + + BigNumber.config({DECIMAL_PLACES : 98, ROUNDING_MODE : 4}); + T('4816036.61099593028962176834662170900210233124809910321599137332324694451063302849228481281532867578835396', '23194208638453.16557264455596232474012945340603152059440'); + + BigNumber.config({DECIMAL_PLACES : 35, ROUNDING_MODE : 6}); + T('462306278297631226.13050497526669222098203681114573462', '213727094953406852826524541520000863.7'); + + BigNumber.config({DECIMAL_PLACES : 76, ROUNDING_MODE : 6}); + T('1152247133339717980785389844.0669369155655882911665420542531405497051805584818042141420118135205037703317', '1327673456289597827892437378695792745399331158560266522'); + + BigNumber.config({DECIMAL_PLACES : 32, ROUNDING_MODE : 2}); + T('8440.29450824835258603622655681205756', '71238571.3859673'); + + BigNumber.config({DECIMAL_PLACES : 90, ROUNDING_MODE : 0}); + T('372.901628755987177132359193081806236478345155487248214227646402521533643140930822086713180088', '139055.62472886808277107884115049680'); + + BigNumber.config({DECIMAL_PLACES : 76, ROUNDING_MODE : 4}); + T('33636.1271745309846040761853747749832841960229355764342958756202876527205256997547', '1131389051.3012217576165671647512263221'); + + BigNumber.config({DECIMAL_PLACES : 67, ROUNDING_MODE : 5}); + T('730642441472613374.3703419923164107610452588300422615171223528468371378585782084037021', '533838377281061260221750424175452238.799786368085667707972'); + + BigNumber.config({DECIMAL_PLACES : 73, ROUNDING_MODE : 0}); + T('4.5788382806122340708247474338099311669807185394701277113796016932695447461', '20.96576'); + + BigNumber.config({DECIMAL_PLACES : 66, ROUNDING_MODE : 2}); + T('1864801744998620.013461802873958666465697174610674741137094975087863374090471208443', '3477485548149898222390988884771.11817149815840898839369209152890'); + + BigNumber.config({DECIMAL_PLACES : 100, ROUNDING_MODE : 1}); + T('563874215863580.2177451764691813196377888522148073482708829811406591604089329763209930727281872382057875471855029327', '317954131315767460486951695672.98301031763037726866477256860609405919575'); + + BigNumber.config({DECIMAL_PLACES : 31, ROUNDING_MODE : 3}); + T('421945583.1988849379362665405151159104233', '178038075181047131.2144288231'); + + BigNumber.config({DECIMAL_PLACES : 4, ROUNDING_MODE : 6}); + T('107729651834007850.9577', '11605677884276551125438030363905372.108250181197'); + + BigNumber.config({DECIMAL_PLACES : 36, ROUNDING_MODE : 5}); + T('40416496508882.880295518466489909876887230188810128', '1633493190052542050826387695.49412988761528497243381704242064847014101'); + + BigNumber.config({DECIMAL_PLACES : 20, ROUNDING_MODE : 1}); + T('152.2434280471558132361', '23178.0613835495093166083287924848173635972'); + + BigNumber.config({DECIMAL_PLACES : 43, ROUNDING_MODE : 3}); + T('2.6360766301456412706748188538578683408291152', '6.9489'); + + BigNumber.config({DECIMAL_PLACES : 58, ROUNDING_MODE : 0}); + T('5585761094110.8119307548005902880792769404176694786028672201071469437384', '31200727000482014779134653.665916381675162519321008239592797688'); + + BigNumber.config({DECIMAL_PLACES : 82, ROUNDING_MODE : 6}); + T('705554.1228818517008122812577645421096429956370245502968178545245876570204000353369717718', '497806620315.5790897792940015037475985377832001974452467227'); + + BigNumber.config({DECIMAL_PLACES : 6, ROUNDING_MODE : 3}); + T('12261723754.180635', '150349869423837649402.99929324676906802471173415'); + + BigNumber.config({DECIMAL_PLACES : 34, ROUNDING_MODE : 5}); + T('281477675403235918.2357151530419555292357090950366728', '79229681750409442645557612236437995.9476523401612199126960867'); + + BigNumber.config({DECIMAL_PLACES : 70, ROUNDING_MODE : 6}); + T('9952285418.2729610572401721588784084577508583224943467082894527238719302981248716', '99047985046768607423.38096514'); + + BigNumber.config({DECIMAL_PLACES : 3, ROUNDING_MODE : 6}); + T('13999.647', '195990129.039656321401845946648205546325683328673485939369440496168'); + + BigNumber.config({DECIMAL_PLACES : 84, ROUNDING_MODE : 1}); + T('14047571.047709437493635361374607055104972689228218006265314138529512357717625916281663520003', '197334252340444.4234'); + + BigNumber.config({DECIMAL_PLACES : 25, ROUNDING_MODE : 5}); + T('2205837.7005821761318559775242478', '4865719961309.6621197151014351797289406864523486396'); + + BigNumber.config({DECIMAL_PLACES : 21, ROUNDING_MODE : 5}); + T('758.30644993960060605864', '575028.67202'); + + BigNumber.config({DECIMAL_PLACES : 71, ROUNDING_MODE : 0}); + T('3.05122926047847148656588738870173096139590274766271145582324089671169013', '9.31'); + + BigNumber.config({DECIMAL_PLACES : 79, ROUNDING_MODE : 4}); + T('9987.0540005269950793629951267710033859502301660583410487260054767889497417917580627', '99741247.6094422566309427596792705224314859453123429533'); + + BigNumber.config({DECIMAL_PLACES : 55, ROUNDING_MODE : 1}); + T('153736.2249720002675176784618619275585698111135968831038733952', '23634826868.6414786551'); + + BigNumber.config({DECIMAL_PLACES : 99, ROUNDING_MODE : 2}); + T('124306362204054.700418459258259880707339315715942679895841027323391732672342072298858769481551839030444032097998078', '15452071684405638957675416841.87559955466718280375315'); + + BigNumber.config({DECIMAL_PLACES : 89, ROUNDING_MODE : 4}); + T('8354004408580181649765187.31783156135039411717464270711151376270906610358555385926351601775037854447124260858388496', '69789389658577110583494784782945375526722091196870.2723607941331503389'); + + BigNumber.config({DECIMAL_PLACES : 23, ROUNDING_MODE : 4}); + T('69612192477.44215090986896764071456', '4845857341516453584012.55400593651071611869'); + + BigNumber.config({DECIMAL_PLACES : 76, ROUNDING_MODE : 1}); + T('26894442745048233575.436901864421884016296340079004943902924557895292772056665868939809658762881', '723311050566677565290951117583555651705.50647920351246054353644335'); + + BigNumber.config({DECIMAL_PLACES : 87, ROUNDING_MODE : 6}); + T('718470177.271028322610907514636281025794525522162254026399567933688109176809379897895939350045484', '516199395627862862.91'); + + BigNumber.config({DECIMAL_PLACES : 24, ROUNDING_MODE : 1}); + T('624214653401002320394878594.342626363311637934460517', '389643933520533457715770790451497422021845205674084966.57462249521'); + + BigNumber.config({DECIMAL_PLACES : 83, ROUNDING_MODE : 5}); + T('14961.11077476503262776978477227891095270825535559491495043352456073683918164489113356909', '223834835.614790354856161392017958644437815'); + + BigNumber.config({DECIMAL_PLACES : 0, ROUNDING_MODE : 0}); + T('7', '43.66395760675375468584137073521451'); + + BigNumber.config({DECIMAL_PLACES : 23, ROUNDING_MODE : 1}); + T('1345.51506346178747090783855', '1810410.786002577965235589781993065428275582786284340392554'); + + BigNumber.config({DECIMAL_PLACES : 51, ROUNDING_MODE : 4}); + T('52557016.286119501062009568005557119407270734435843448903725', '2762239960899430.472320476603615601541'); + + BigNumber.config({DECIMAL_PLACES : 75, ROUNDING_MODE : 6}); + T('304128108642.66638543798285540424121063889329767580106958078233889375947456592753506621', '92493906466565488169925.03727298085107554398631873900964'); + + BigNumber.config({DECIMAL_PLACES : 7, ROUNDING_MODE : 1}); + T('130147293691930.7913013', '16938318055333688341214239428.8400763989063'); + + BigNumber.config({DECIMAL_PLACES : 63, ROUNDING_MODE : 5}); + T('380.30847711766825669015284843032870317433236412578443415674498103', '144634.53776756'); + + BigNumber.config({DECIMAL_PLACES : 78, ROUNDING_MODE : 3}); + T('72756584205966672305485804984603.352401313503269431826525164286447688973624911557811334526750753359694240719487', '5293520545319919032011373362935198316496639737287994460100006286.544679'); + + BigNumber.config({DECIMAL_PLACES : 93, ROUNDING_MODE : 3}); + T('76576.797797984240571846486238988876843143519708396246972607938595543560509008391915715743283102567', '5864005960.9933640357177527847992571777392026372877736596182'); + + BigNumber.config({DECIMAL_PLACES : 7, ROUNDING_MODE : 0}); + T('12178753964826187888951303.3249458', '148322048135769591351831540771148782675389671073614.2772432575'); + + BigNumber.config({DECIMAL_PLACES : 92, ROUNDING_MODE : 4}); + T('40.80297039432300938521588341960090555158418429841606635380853913866422389482874612382890570235', '1664.882393'); + + BigNumber.config({DECIMAL_PLACES : 66, ROUNDING_MODE : 0}); + T('8003.231428514446299367379006843513173610973656001982693440541673067266', '64051713.29836138476649526336604765435988757860210340327039402774'); + + BigNumber.config({DECIMAL_PLACES : 17, ROUNDING_MODE : 4}); + T('105.20351606648271594', '11067.779792750686945021773996405472111'); + + BigNumber.config({DECIMAL_PLACES : 52, ROUNDING_MODE : 3}); + T('19979049.779364305047782515786241164454568396483520587153712', '399162430086316.886209908431086170916983676744304561893703431115837965'); + + BigNumber.config({DECIMAL_PLACES : 18, ROUNDING_MODE : 0}); + T('36166928277228.730988109424899314', '1308046701010207183212414138.1873209010791907983'); + + BigNumber.config({DECIMAL_PLACES : 86, ROUNDING_MODE : 6}); + T('686799335895162784002331424287.2818926431403101047781274303105132057580624450031766616563460450210013819541610091966', '471693327786036635340416131163020770161082699744963321356476.24648141'); + + BigNumber.config({DECIMAL_PLACES : 93, ROUNDING_MODE : 0}); + T('427059.834923060848086980328496831458550638128577698933740189975808665668389059481658485647685358764', '182380102604.5119819638914025693'); + + BigNumber.config({DECIMAL_PLACES : 5, ROUNDING_MODE : 6}); + T('1355182862282090304776488.03585', '1836520590223078937218481593506430138446303673212.5687201599'); + + BigNumber.config({DECIMAL_PLACES : 48, ROUNDING_MODE : 3}); + T('13217886.656445116298311129371851749281920448872987595652', '174712527662629.85589582771304'); + + BigNumber.config({DECIMAL_PLACES : 52, ROUNDING_MODE : 6}); + T('86179288451453008625398100282.4917767047410320423825986277768734685720245779702133', '7426869757998741901399152994719251895695045225784410813119.4'); + + BigNumber.config({DECIMAL_PLACES : 87, ROUNDING_MODE : 2}); + T('145756.030733419668905069100873071310401624486529447576932195647882358629038395814721231824791', '21244820495.161579064939048774678'); + + BigNumber.config({DECIMAL_PLACES : 31, ROUNDING_MODE : 6}); + T('1.2553560373690457964806915022022', '1.57591878055891310621921366234841349460228'); + + BigNumber.config({DECIMAL_PLACES : 88, ROUNDING_MODE : 5}); + T('1980389898829432.2712605078486037862306810847539694712458886073478584925281882450847097667064103718895545', '3921944151385648986846968832057.6679856140253370947697275533733897527'); + + BigNumber.config({DECIMAL_PLACES : 34, ROUNDING_MODE : 6}); + T('2501.6649809177087331569494731239885899', '6258327.67675'); + + BigNumber.config({DECIMAL_PLACES : 12, ROUNDING_MODE : 6}); + T('2196196.716556668638', '4823280017814.292327'); + + BigNumber.config({DECIMAL_PLACES : 14, ROUNDING_MODE : 4}); + T('874813882040530524727754.39838037065528', '765299328210823255354810360214120241836069380387.27355428536'); + + BigNumber.config({DECIMAL_PLACES : 52, ROUNDING_MODE : 2}); + T('7165.9194827881318885066411753304818478310534939735256546', '51350402.0338025276330915356430492'); + + BigNumber.config({DECIMAL_PLACES : 7, ROUNDING_MODE : 3}); + T('3.4641016', '12'); + + BigNumber.config({DECIMAL_PLACES : 58, ROUNDING_MODE : 1}); + T('2581628832.3443659411183261224916944470874517039666191989033706133244', '6664807427991734308.81835798420895458431799580591091528807175336'); + + BigNumber.config({DECIMAL_PLACES : 63, ROUNDING_MODE : 1}); + T('36252.485247610266422965983738050016935932785999111018508294599446694', '1314242686.6282'); + + BigNumber.config({DECIMAL_PLACES : 37, ROUNDING_MODE : 4}); + T('1.113858159731300796830271790717030399', '1.24068'); + + BigNumber.config({DECIMAL_PLACES : 24, ROUNDING_MODE : 4}); + T('6.350335424211858118059869', '40.32676'); + + BigNumber.config({DECIMAL_PLACES : 1, ROUNDING_MODE : 6}); + T('157154.7', '24697591891.264796990694652886539719395624528788627616727785895955829'); + + BigNumber.config({DECIMAL_PLACES : 53, ROUNDING_MODE : 1}); + T('2496808231197550137.09602614853116445176036893767527178453680678846727346', '6234051343375838977712099106754338652.9448320'); + + BigNumber.config({DECIMAL_PLACES : 79, ROUNDING_MODE : 2}); + T('10324.2514732464973649724678228525764035909757738486664404504563868912514925606104179', '106590168.4828324712958760'); + + BigNumber.config({DECIMAL_PLACES : 27, ROUNDING_MODE : 6}); + T('386531949115297351728.142898431057482793224359928', '149406947686870821169328664677654478117516'); + + BigNumber.config({DECIMAL_PLACES : 0, ROUNDING_MODE : 1}); + T('4774', '22799696.79785731491262'); + + BigNumber.config({DECIMAL_PLACES : 83, ROUNDING_MODE : 5}); + T('251.45257784284141788311293466206354643346413863260081033788120457331898535528741326412', '63228.39890381022276846692010483321'); + + BigNumber.config({DECIMAL_PLACES : 36, ROUNDING_MODE : 5}); + T('1531518860296701459127.524799663297047232327147517392658905', '2345550019444507360974678507452524424491068.1160833888702371276524'); + + BigNumber.config({DECIMAL_PLACES : 54, ROUNDING_MODE : 3}); + T('29135561.909785745541160117186613533017688130999291885339151706', '848880967798958'); + + BigNumber.config({DECIMAL_PLACES : 58, ROUNDING_MODE : 2}); + T('1.6531787562148262737395863536342116867328098612496157055434', '2.733'); + + BigNumber.config({DECIMAL_PLACES : 1, ROUNDING_MODE : 2}); + T('8.5', '71.266173581517898007439610813'); + + BigNumber.config({DECIMAL_PLACES : 95, ROUNDING_MODE : 1}); + T('1293.62699352182397997386824883628486696727271220130303818496237941488924320676792238233671136280435', '1673470.7983683132214500750687162859347'); + + BigNumber.config({DECIMAL_PLACES : 38, ROUNDING_MODE : 5}); + T('71022849.96143668902502364469073874242232416113', '5044245216644747.49972893008'); + + BigNumber.config({DECIMAL_PLACES : 90, ROUNDING_MODE : 6}); + T('1169773.951601496071390789369787040569431646053789571885643406476450096643513202530182542812519318', '1368371097845.37927324536101610772653318635120755'); + + BigNumber.config({DECIMAL_PLACES : 65, ROUNDING_MODE : 3}); + T('762442649.06995637756037230561717976386559245889049246647051943766363369227', '581318793120812652.6480427310033696'); + + BigNumber.config({DECIMAL_PLACES : 17, ROUNDING_MODE : 3}); + T('20.02456159330336', '400.983067004'); + + /* + BigNumber.config({ROUNDING_MODE : 4}); + + BigNumber.config({DECIMAL_PLACES : 162}); + T('56956.133334288074055649096270448425887257859236300516446822612657765367909481348792658918577056212964517487314659149646507878360034362047738124408378251380663712880296', '3244001124.393201124203315112854063456225'); + T('8.654478609367522146986967465937732834299195635917473015566911783193688697212875063970818876014535054471159717340710683348537384638848599775961897310476836944774203', '74.9'); + T('2.090157855342270554221573582468214310613536016537697179653818592200887519700347392246743415543531332923171565100303846336657331022146874248351314711045809920119035', '4.368759860249'); + T('4.898979485566356196394568149411782783931894961313340256865385134501920754914630053079718866209280469637189202453228378249717730919675514683251567902474557105657825', '24'); + T('5.744562646538028659850611468218929318220264457982792367699877470565900721457404627027125365596788122419557476945650837869934822615203403401618532019562307772727978', '33'); + T('2761776864220467592773690125.261636709953648799225108854949552005927418667927585431550152627344259326832390700476831904159140150409161169310381661652182261480548883652702710905192306201153399', '7627411447743439090016907911169126086985950772934507394.445820'); + T('1016542.132684851351405985352421550427715149810639767584056678930969543043928600815438993175050555365846506655226675294372370499294878158021265695180065201424027976920607', '1033357907523.46593019166446894535290441918452466583813147208529350643'); + T('67416893557691730594377.689393229996593018164745728497408716814685783382213046224003027235822262763354330687209958508471208061724779548394876757652983131645878622964693470107017790602867', '4545037536969136767952040548173187304914752143.582107466151'); + T('931291993003973764424957570.943051255559335880882830118695138743017644168272132602760327188450198488698421979593757322045111416715065737343620373909805293078217072698779281254073818550714084', '867304776233313518982078261171691244956483307888374339.8'); + T('7949156432.018787509478522996179666181753678431098013792417245447999791336046537264938248517945929921988256639266549619633490785427215813297039897879841661734306307344111428', '63189087980705660327.62527705239541530402411702633104087462882'); + + BigNumber.config({DECIMAL_PLACES : 370}); + T('1809865.4646006170616739546078520411523015790932463877848464678333257743018277689819262142781464857679567195196165283927863805894754890115198595353876516167856225104865664069164914054910658837497837052107088079809127635832553363804364513985303062345471350909037103500826046492068332088151173009073561164990623048692985267110502955089488933796659145847257595817786679297018780916', '3275612999954.007450386437800884'); + T('15.467269449647536285076994289048952792417346402263779331615370527324047804918952006389255250887444861529354673321542742996531338786891880304667201838005095317222412003012101386939275591127834757079082739161518869565123311068788189396146419765711123314785783579057845157770289130253714499563733678728735780353326475011925555877160399757945810318742227262034456726810253364', '239.236424228'); + T('21515312700788.8445283321238112651368817617351069674058374989844530588669193691975020463789803512804134095628531146877959931040403076115365864125573069051677734320206655238129119512589782592335983752466615626386174785231997318261202374171285170556291668296113625567950158566625308039499284336455793814655198232231567816284588561787228106085162970376394887992755493290799749825112551493', '462908680612725763398121582.1988499361251936376406501063453105637'); + T('74521299.538521976899190350443219558946674884841824374949238074926728684231529951608824829578859140723045085427094885285460459390853176343907992141008355659931966765663861028960423841901422569042236880047925960465288786047115089356108425087999854467423897118283417884004208867563212081515310360937085763989389534476061158207010096784634714697440008094764047817723635160212611201', '5553424084910115.80715723353'); + T('1195846909.8136451949628200680969918871468342637166442528552430459926616316029985160802054349155727577926247240133710269402224145037039410361654704934859568454043181682255773043960693809830780634720080576036391829106533152077104572023692346636965236517235893617548662539881565621455421628698536701895553668525060605712336259944095451585719721016583710402332219225707779232668654387', '1430049831710844464.5'); + T('63.363458803814609930869562561468877004673338900304322840644175341400833525250548003632643676779722860896524366210225631392441735539731411621657232048800481726194808203828100942514894307898059274946673100310375760980610689938987663753721124115742622475359805871962619958182552829213760795254063144063662267166941269648405943630007682837690708592188638914255746685886657562', '4014.9279115827111984'); + T('1373.2346174982060050121030325620899957248769145184187327677463246552753848965766950735510496743337066151954054529870656708088991835100431884436734596808270643667093234708089558732282842724926267168039341016233235612898755425310217129820000361621133178074632555226320411936053443770992225078255443638854008065800708779022149941454885905152491670161465306374888415427437669047', '1885773.314695444154208'); + T('99039087799528681.3905138833923030877513778499442375472507806052812263260160068742079767622207118750338964200879423680059646588427359069818605754805574948873861241916211290058134240391945041506590998012465268591014107092271256564136984223735037018803536800185626368799784882325385180065015284472329021977308861285931031378317690220446799508322901392419207606647824465676961912238391025575', '9808740912162750909706883310050182.630527570227310645154'); + T('3.7549966711037175032676936665539744167725993728876755783348100730830605055312952529891445353338440126820518274797006625702148474699248805782797465540022583593955664081518990293569512283879169129175449735381912776937984799578622377264197905942888539479665214673739023726144209253217799902885022479674447157064859576103449224248517314930440882218595889166920009969275046849', '14.1'); + T('206071.9099345662880392539413524097442128237359131885717624301620021107001424182134616945091475733036367971785943678559801220356724867730180036789665163630501875994159091513263234064759811698332280709521477933310954189936526370887672959806770806072945194934626710227301991226774310750612896243496085684922345254659244357871503291966086952146902972859397840015475313905910082084', '42465632064.08'); + + BigNumber.config({DECIMAL_PLACES : 500}); + T('89817010695289.72578371683807498008284714528555535180774576243832060526469276583706655412471844057215592302486816618503186850287965389458117650040638501953754812900903677140548024632204429469967898609400125991154018500677065159619195677725360191990304667964228249993084865619207470251438905759438499669605919588917712329966593460182177256512515083462907857531175748343129201000221666928295926394404306298592439213726996025312323143449177688154398992378748586802380541165612583584316700420134596203072442651698983252', '8067095410237788990654508945.4938889620226978171380538868'); + T('186.91379248627563760392813675540099210378050749661641999000996750119358911115159296630333873386370549699551207601328525759106230341322609045770969551608159859115697029049776748016235872091886303045181663791045868196184184442196533834203793388185938722188507323334759581974443773297252169512928459122350262968374432650606625865642232545046019710829844705222543050921091232570671006274142816262680418047451611346801167563231483515250455068357839726457106935322253398592250219377292043183684947137995080635', '34936.765821602511000'); + T('292.92251535175646173232431728499234372421154418946156867421786152176227096294653007831356181142938132889371346675529071648577515728469391396601893486617422900836680345530254508647264899909100464612083986261265346005164216654675922351728655350260050928208855804233241090095534108831210571537049578731309192576632259878664884788879135261573200114727909644940386409994830780435119468243089463108989041078103645175912033463261798424149302644555980788660713206241347966250504060797821189239505007200036079705', '85803.6'); + T('87.99026650715407396765197446961570650402634143914903620761528887814661859660279310794320854730578987027187472233291266405007186843204281271710739248189201489451091841274017441508638469723085782460443376671758758899784113134866643875281588211922668056326695185017497400934539461041472568010022163207379422457239669042993592416973790381056817762649457565899290348718808685202005765019872456068078605894916581511896996069884199563861272506806598271531781334519497271503568279500098078388331561457291680397', '7742.287'); + + BigNumber.config({DECIMAL_PLACES : 546}); + T('9.964115615547623702713334497987282609345101391172570364849116418075816800113640413848859226514077074748449697076758383273301113543709109909215564170600206464958142454266490605912308358603735813671079804922222224887150495344623713603270259563840115497313009052230649783355536482654846683965583855936794259084015703511152134740957173368048269478700424790749310707209710341986660107034655477210204159808351721182045528640956247532335115997324595227811783575481533603875179445069446441375208735891932273626153407869944580993315321965826502787138270543', '99.2836'); + T('1.307100287867682515567807786801412047161737137612032679611924993481917045781734946943323223902612735068918688582083522849332454081551075797942682446349695592044164001986554222994267637605078971511529704949687080403427315218684552520061137105759437079989266294002711708038550421771209354048361232627247521144464653931131639432007805143883006541670565652328321108764304216848523001514451272005371748881596518362518185934727350138270219612720116871348545672028299730589386444001708243439232746226873799802838450712779197269114313367331740420673483739', '1.7085111625437785'); + T('2179715624641.104045451948581834441551779587152634672576510540355644708264438654277476265980691695066448533110871133836814682961495657626427294887178053496311230025672990968595927778033477830265241856037103266547607039668793835170188641774636594856220333273217160195552886973287073504687530341285661755863078114639819058730667005812528346789548066256665974549595181496892972941783341809790771728591496793467248475138025398858570306396853160195272474728879369794382569618121601470222156680464345972678848920184128051561184284016452602903346229119622194482045757', '4751160204304558385373451.3272332038165539477606810406144617'); + T('39700.822577241580199678797939419163898886687420779218247258787086313113076859180773033077810860147036816212863235098843384590784069398316497506974294775336733386252013568969235999557522683195367974539653911477425701468208578424416631114715708576208486734127431256111817135113173806314284300643116495170122929525074255758154469988956319381763329406201302760736651128326823314686997919541126017908099065125010684846684750979030402294608072194301572266690808347512619218310009474588358252587183377754733236309560561175738877889452782714224060764008968002', '1576155313.3096147862201867397559036886508'); + T('1.25794522328842464889802954979839811250322044212082313174176990936228267186851635174161106107130430165025307524401690618283690880517619898891441753062149884262103288048373107482275796232219249109268011616848844350466917383546494632887628802000805894961164041424123794218062370303230048277719411087505573740519315205969736920463416188404939520455876144966180409180303192875736712339448801403919111160506886246944037198526719945050982972666268955585211897123758272243907184437446082156997384618356833205776554862542099528216674650656658010050062231', '1.58242618479416454763664575065542265574614542'); + T('1.624807680927192072091976713653208069700840817345062565530315118906583360568134538999831520589587375487595902303174139599422604662135717284255618657549630378160122248467747111071314750502291444441102163105431957570130226305138621706071808286505297736384595648509872968772996129393038122816853427310850020078925936656695761188275301963596778663712697756996198695154835116221911512411787284450370861055864406526637410758400234987941681870570312002436208851096849359131928628121324230998619957793873321252762427349655447578019631964607840051797535418', '2.64'); + T('18717636231873067799.216510948844550745146581264323539180043356582323609699016487098997305478787718252655554063999956808135384833559712709262538242436026132212417100611618928564814091772415407036455749502462185745609885577739497207736237382361239184683282552834573776377544551919252603573173778169991084849083487588143333148865799493939248463005741865268503183685175205052842601336209845292039862576097287476259672443140291459083371484939336391166547726508221768343629133487223197760680035244638718987232096565446767519310698558767017657627306105991008804977618723991', '350349906108727416303231044881030663104.72849777316356826833515716205'); + T('1406647840009650.118863996881143742849154676375102411920435563067539895576725213355050743434710662527010561053318071130411761077372296190615719469716323240116449116038768804389193494725211826193028915331814451122261159238787939478074609835120057229806915907338375241900963530017435537812109185293173117802944350037251407192941405132508530625153810048779676085394020972072535926554304846973136440349018882339256154370074386916139960439011412622403829257294020556809081837690809972797912280848596346835691547349767211626827238693605471315108662202888476421988937787', '1978658145803814237711662058049.2544850135714954117875755770241265'); + T('16224378173956061607697862.633217842546427767370100855088171518705366007862250561754707243455931128283904259226113595005700826232879759488413300163002142315099475508032176198042904834129778691907469882290201099517369886984799723525714860875048918708175179481025780980785512861833918274288833606546216800173441803028496920438426672142753847581458627155975653306204761742838982103620921662180680218361989958267237075686446982867517247246816010479297470319222022775438943899994549052934785516690930630661752088290413832045273976791735833819617572894548667319311757989955998909', '263230447131541828089867036367977560519472832588035'); + + BigNumber.config({DECIMAL_PLACES : 632}); + T('3.86684626019706141613723825656699191004871243725435371952851102513193897300170783147869803597806359975114434638267696014418502590333002587206926390370265920607601489345602853935200922900139573459186086120455990493891388555877391847755178584266457035830275159909609535167181434973137025675857847818998237738460415581254272837772822208258242097068355115922762128443987625212248757154527289970249951218201075262114449980122023773692545156022247353209795532545041431858554008616906673871136025390102854614065356679474908404595273532216911231835866021312311702806567650395727590121314352963554602357180371548166632447396668297987703182598', '14.9525'); + T('6136762.26717905744611296480849548677883172137201795887253092440892121660504456966433584211515954953762017772580407928362904974338214424385785116489885777383448138309647350406214299077359122447734595685831178247253060071791025543499094904828078657524955810034216582881357125704944563248190767043385107964306199859119157271835974466792774248278303577397200213978694185732540975537354775071603950395990745619635709671790827074205226736000604510720564275623625311465188763715973066573171788415579221561790250264794581356922531739753608438715435448872139277604185884704559289000914307078242295952209310265904281185435952775847430570132829431484', '37659851123872.6452468949180815564659044706870951617310978456174564869'); + T('55584781983.24490696445791805408404378469879379761888397244664120330644772739351913528775184610233179267381874891789954760338007940124374026003041155925024622975618046085564412007615044940190982877876574993585348546104467074110944013210078722838691327953750473674565370730974387207982723611177965946904757209441712191363169109505165807521321899672463583311642877639945439852157230367246653362314539530980304123767170725630541393623958472950450526635784974484049786565210736734671468997713205366127380246276456634498806056301931312061784211915142498400899530080598267700949248388709352054923014180086178893193927288901542298741856815720408810426', '3089667988124867612740.083389049922345'); + T('1805064995.270685679369819389640432247172036506554563452359428083087328761361845652635553731357289990951745475326934025307848780337675451754210392546185393830016044551272507825821935983758954014040138643670810605163035656676595367710188204749719310806964242566460755804623103957354726598643871684791346043973374359934258681039001336439023622338991932038561462612292035112751670372206620090017313856898980333410467539643215942489844251168601645977120694640664003642300053879055949999123327998888486028967684255707894113041249429918747443321228571191289316571869868803697397454910198466063233810801875443876639885268362424418465737511676419844', '3258259637151560514.0297800164403204384'); + T('125608085.77042703662921929440576851258415350669039591021196510765322333997277721479170585932128266456989640874478239906029432251376275054410584089545239517498359890440064005754383089916535639818817512288635165379914355624246231855413853842721091980292116104830063838444932363335270696391961823972078627647993680508983028621966220040659701503608235895398573773969030627362781943814154637432716276122770088096908725956005011070226435272443863093204149560949439672185351571599604932488380558361146700216684520038630554153765869107472500236645669202075005111635063065232469777930428976428832531849390576765836025904341256201817451204276318678703', '15777391210910955'); + T('400136410988877553453582.37101163421699743482259029089762021744122736955079765363264351177743971980656087133988131526954003823716158204437583618123747540964307177407397030906491059469918005937208664667811006296696880134895202857597704648341649853175892159884095827375237964722988879265135211319838716432321482642548617255100570921567626849693162463365611013775481030077269042675179237005903008278699962449590513074693187300493182718210865710393790428022783178966907764188174129568850369221656184631847400442208130426552208194145273689796897187359838715920990228135785300048009159741600170382195085666098719445640520314294446983533576482734809632684663212616', '160109147399059929314877918876109427110612023604.056303'); + T('64425.39708677991402075085097430222723408726402575346205033002867968020486619151730572708995063516358815252500577128885851092173171595206567522039205583159322846821419081246805971111195118357652973497110646963488156724407496612917479150812759668015947988612070186616711130012713409715318722886985358698149495882008505150340412263757850467789892597196854389378140820673566768146692006440247742979249196409269612046734062701334694240456008673406876828634709710253057778438021730083759189755501262144599075931168939668888175040990882526418711846468669816130425272415774060047616063598593294412963338255219828974342389552617191145782209745534', '4150631789.7892698323562331016634257014646926299287710080'); + T('2348735572822814115892.26408027183370740113506236192664551809826630380561100793615743475343501311869598689198309313317112398706024097995873626836363321037439405890327574217792370459096267386514893897401545965801783674703449797383205640533682179139228566108876766321414465683099263110272385159768745386268309348310852289538873334789073960542826136816561584906159230939562245879068384254598940764221550586208646296806811463864282431442235899226384157724906001227498116520670108267462634019231455786976410894467414188400388964899956986375533986475289820788610178735962555060048758466647342357027384051113897165096975205112706486602166905905775844738974189124', '5516558791043312750956805399216206701389822'); + T('19103802792.01564371961775338869391426446448029286247977641509368293241906066424287682005366039677603554915595198800053308245870218297432073530945933295939680395210865727953275117534560571377076828346246298768896265547871244418699953520469341265486692862736845896173671301154158095469340988225077329614333663129688855004957099781613220058661676296497307424000643112303165084920380937145312220630345213927929149505102622408340154771991875263250438238123325276964888634956357905768104652580983969312174465484750475804611861727043684792253730740484442336788006549604123329617407383758260482554791627340811587637419676122565011048819721900614226661', '364955281116224704333.02204944536'); + T('786.66034601980542438553763403049983609539851928329220147388661995860830168191247746764643770838112443216591486730544324590358255064211791028661132434467570268525552578636466675861637897309153324177405101531421741979722830892607461959298447068614984201744211147154166256831083543381185024040849431152799003153201087012609166537695511250190586392519199228602942589459773862505985356810151934653735972412239324596989225867188473011661629585794534658478043644553227272995034111771271753677915199703704761728445313825636390237745870611713634838750078939991244597310336345791337461711284642126303822583081171392986526905442664045593489255837', '618834.5'); + T('484123309.97874763869513775027582083760255026422629367680383349228461771885785050876393607959363763562763934512375018110967693444089318521616498831171036375527664923123605952647435477649669320835658085436446422080237311136711591389890017124515694523108269386574671466685756523731039177122366440515798582799809939132135784826352950211725429348489639356434994276274903713471535999323126607571342955569317639976321722080574385327905662904910228854922313780512285515691527026937933195761382827883549497100022950886879913145746098441721130133524826420689100661999466875481778061645781459258894902002955465824742017940875767981672057269065469536219', '234375379264778573'); + T('60481.17814179171662585426325768194943112296504919133512658120011357361699298422464207199076657876167621169341810823582081006427726259877303866169887391022736822586491147183342565113223464521871784706899966618623012338886757864618596318826063555227727089240080604262744311440712982849273211826938920661172972338303097711545177717262755702859402796454231559971416344991871436949784360654196445387214315983072589147867091579864546816048090705979976439302638898419268726958146631934559321370862789950979122360237770183583617309004258400281803258965980586023033093791875491145215922928234063783157425179949277559990637828701834500469899317547', '3657972909.4191441244525931'); + + BigNumber.config({DECIMAL_PLACES : 736}); + T('2597183854328.5679091905600850947966546165753359857320959797758353429783579407079182939565903056335948426093650795717332704791479071528177519723191124947077728435798063428371161778782597345429371741476675515164182960273091825852969638261871905188816333787724804370693852910065686936635346834748197083291357776431587087848800111892221988002406355426392615087567342248786343354283235703582188835390882988811316410094207611114574124785705884308466258369161492987882300555227716609880303616554951040594534188187971605746361153720086319724295669667359878510806390096282081082192285001657224319276565070534065340503324866753603713794833032825245475870135528342060466443304262980556284100001276572690814262354674742134248012676070023441506227778586365371105', '6745363973184995853492478.5954'); + T('6774655005740.164037907899356400277125449228462111588353929941351964991999943642694024106002045654190469894640190593584143456920968883709637122260941740850619226234998910249288941064461839175935885418202698405604592790954509193961851585542921730413008144762195532966076043993178536807834225605865732009222042249139153172302609878922537826024024765317187183190793601555449704914268951048131236504332674153119659391120390475083522595748414072828021281006933882134638700653092554277006524993846324403138880161051477517078245698926520722382184525492883300322699107657083780701388937788565713142369080803278939033122119335669992754410484005485791854368115176247813286850021744435931737469007811125083823541974831435625884357393099194117719985023995309226', '45895950446800262033415363.0107589586980934'); + T('9.8994949366116653416118210694678865499877031276386365122367581659351273492347492719527127402934910091450969236163860791744738523909551604885088504796995508198925586614925391492905996535080694744240002907669198012417919217421780341030996219304862243902668663046133901610002501558783382253959667598559278107737758243226618074843443068084667653832202520143197321088490265423627229990794806222238594919301227082997948930337052138081945322151797347614794505584303510640492417811766809910911093299829106606470195648540287464840079528339429999802421027773045400050984119089599487743576041585398129111011611345309324458600582014599091265650208792257610596486142602179717725277099578410704164010928022305362395364280948034487315508458169196178987', '98'); + T('87181.6234142115525219620524691647002880373681637662664358089648865241053931751056720336743475573704667754469828869574971770860976622090504059965985957160672759992061409022462794221981547073047121333832741614179766660169320255090772060280986675121181149188392777041782943372931223028492877312925787086980314820336807572760207027632594701362292053256504201751684547275915772868234710319808033440202969911746099931970130960400927941767359496945988333067403190717036520674748830967881080827391448011943102976676893692584203783154822448864894042034636583043861494867962494678297073555456340277748807852218397069734889863567431741539523977203341337841540435143868785323742066976229168363835362478774511412078654288725506862167769261569623256490877', '7600635461.13740'); + T('4.5825756949558400065880471937280084889844565767679719026072421239068684255477708866043615594934450326776009053975857408733118991707556019635738633623447553702817228244277981919405969049143449200907589407063891768364965598654748231477641506627774586518102302361748154008139424109257393659219939175422411846714980804218526078649141055769578125547677613025186352569361961122418978100629104930136394500794769783448686170875778719949754100133598746930349723271067563482654740784196320965532158989549437375426406190866502980945808909769566178106179115952200007681424851342306651436695554446605650313382719148849087683899267628798139136482473790088818917079648337517673741700029719068290493626817167652340083439423393091048762655243512703702846', '21'); + + BigNumber.config({DECIMAL_PLACES : 848}); + T('379533758647.33202998025355894771830486671460954826351562848093352359089756978384860789725657951059073867429383079637341943322428876224868137020890589117272041215996572802315226952651591422629979697849613357409838019360130112971147443970457701882865210579938015503729060796093840510498092974918957475137648847670773105840478476180774814337983644367224768670934474545884964455308420763849854108455051079039927823221492636701262715567129335694288707429643301669699497029554944442286919275175462196928260780423046910979090241979424076642169272255969335731465485030674055509703481930565243394712596916609989415808863418419835631677700360441697210083653827363223966242987581200002526377610727629936341627933125420316464144353438091881740224503276222975587368345923672238451009927592206329287360888148821167396976641547561007365328906795045416630208044281045956444564', '144045873952971280443387.35507896'); + T('29280910699687273104284697299144.07732565567508749484602637961092769263535159046426239841768965764616197975075043919815786449076328689684216110222824295072121081997345891375218925808047569533170997772123590787790622766592641361527147653442819434809931915905219637858026995741191495013690327145578287454531481294854702286205399948005290251392013711014077536227775356988930049595580907927661449806384364243569981109141658673685934994029666133875734164693622860720260710554408636555912010467046231604717399110220057952965339477795911201244340638839241074392352601833736408661548059322837128092912263901889749977388312010067566997456646543486536129645809758335017030111183330787782491931288652088515560703734327816427347518899939257817316435042124357010083771290898500690085513377138936923205163016022860153854624965235876950834393909963448127891696108571214858469890656907205330389064', '857371731403060633386241816096841559023596513404769917799492267'); + T('168053.04565201524955446843348960783836388810418113245166824850488690908142778357772728901345436007400982876927959300542146773837124920813399432364711787980877197182718826668919533357860217297872518296792465703667850144785269168793146280553383246166503410178151205910689122332208239404835749221852981903152552178180222439382939101404418973062745842861363866266832597644550779142636812629347441140406958185996959809516768124071903548716934343215775054973484772291998064110162394410530239517557259046875734667137531966463173455499642893757346141380481602264381153514663075350700048417551424923591583912256618460494552096382446465611749335306415219871948883932584670263698301372130930285595038191486637767642010763257747895310053515488933059515998388551181750336022799922855572438292341639496128201699781316142673719517556328928078948111316144339893593051947', '28241826152.9183215732505128601928949420068589166172608979274924914576295'); + T('1.53638009381417855214702667564342109510652564612190733749841594063585238492794950136881162227066019813049456848975091045178675462617786165883956111632075830748654795458628807912771681561582305470619962729037215106906417797478639043759073671526233150625502278985764285240647638298730753064584097255132097117503260610789389208952460787617822842317892961282136931991642143510463540230197185978192801359575147064297679386685692745377174344652745131673928629270650815492384956061132688378461069498104923826104838586490333978324236045359018410309925372259501184209171535596493166826553453125808213238306178803667493845876133602921479334100929846229655991832177474753899009595435568508601133899514000384344943496815277376139253215613276576713699227714772914534633123209445267405754874955789973243763421775941905041695031197207082735610030092448816414167544', '2.36046379266846408899539510197326890965893678862224859555792838223'); + T('714.61241243068259484311371189785768955751306153276228425541721886979377905758882133446197375671353721565433127023956674702853562936178184807139172505791453268944641741010891530662590385073593152193455805953240947347607646479943534513966413454182559305296106776895316113963327870900366698599660151420070929801570405751345702353410644051682554211976059908915814146604831899204551744694140994594366464823764389570912629592676719346123171637726003544266618213687267325838123794874975527306940385282149798065123421458819840361280851912003779857428730583255104381030891533142101378117306978641247346815845252044894839537420273047299982385917944987149055257937383992606691257056568881397021059046488147159677518654506427704867625959014109859319284280932956098825423372240493017931941597922444987378795761902915931399027545696337420679858404395579037783661674', '510670.9'); + T('773.59472663687912451159535229389853939842605059162703128538789346863286440830494881075568422219621192333688675281822184873387170452981843472591508432370385971110199119193528015500760543414524536242455544083490104908083974792351201506935765119161643924169037264164099952814746396926161440416117565279304931119669840952024989118295794278477494347926021963207180850887861862534960178708980838985387368839444500154547698864030192542133112686175071539548217199903944950274902992241082394258689568848798217431438259861325777938469444568799288405922158163958958223163833937391698968594686798212843588496878387116515526389464647971296312524748306815742536620947543414457504426763294470951946122437335497099494910632585762600740409680286609238779306759977660554002182801075912581235512217070538480899809469699327979364989178344899103109616009308707414801940872', '598448.80108038774004895'); + T('19008878036934380567.84396002161007307494234445138537376816800048343616085674206626936199749636474720092004342883045275441459628576839920971330702661877884977464784187807450210290565316696580997145384562781682128000995898273298139743308228182662902555052057691717197189289590092259236658987055552383019917577612145454574579719020972478133587710937217336044281243302964649388576337469548420171603649754413233412982255987047582379037245718253216484000312226525699478281161585924999301376693452172203272239337852180725955560197800243914977419579018956725334811006235730357909615062778332245395221460477491786215707869006840640344479485584853728869293288919876710562517254695116835080137005037450411798398558498522188066156712112948975309706291905861236209197663377395628993573005290776392002172440861220587153770661110412322002802191380189193046537735515344097800652278112', '361337444223046269803581586105656008038'); + T('46167547682276.69659839142168613300984418968797481977026434015151042113254784992976400662854539508545353029755222531760805168040819029032876000018647210639969596871042153723516022413007597033768299999552605409537870966847134283383166186477065225427587170669800959221329223140225378864660505062217758873720294200147677451805234547441880387069084927910307749688653503693156999242010683739605876996616940672435261250941033196533134836202233289888667726447834984240822254637787801181963951894038647953211128853346780059900073416876543354577813540692889219448228728777909901391731624805683971528990295277436840161294579496431876765112237134229826779443182941938910283177882124027553167373791516105803517046194645899736931109009785536544701916275081569242392295709503599284148920065992874897610987646342569478342044371048498987276792566426432612227674148724386753297859', '2131442458995292379923442891.39619052405363168659553832'); + T('357.42144219667737476940723134311437237901070981997683604955545480813878989092658709890042422907764330003065939163827123844540310894482334918652641803484529491350116195509236941247526441637135860986047310858645732381561361417002489911900180310969665452837050841076667945444753611474726298122460938050651055487683172415032060683745296386129046642462594028333292429079902699978203730134661132884803238529838974477445191759967198471721764551979289888303016458787572583353512731118148130889821591351857798041593003937898405797601412782467072190053744174243225780844049835772183482949546683341934096818885756007124382254659796426711715080646604861045965994466209388552589568508290975087418855481674502829846363820364296679009102756062772768505880054488205022390142319706776092235958701849286052672927602214663014895377779429627657631859807708535799000791569', '127750.0873419527858363938899699529356795979'); + + BigNumber.config({DECIMAL_PLACES : 900}); + T('7962389669.802619226612420082472137241175608666661735561414607900997891208674399029037690473846801874885757356935098345580426591903055562834097030473393461243383271678522047266370481726950449902079177413029320835311617540338949723112537110203362427858192330773112242226738687601815379027664862463277214286567895961535965292898558369885348154321255856088316638660454457806259636801735717647353100345104124424309537274722443977557763052770155305495894443403910135805323387075986979884756306279940582254155475425470071419924272589017637263436788853746084045571609754415271337660969860121360062716460814804823355709978626612344057738355406928320053347312100043083244150469170748731787389950929048830984414804237666515908525165972258804621273737876286813438283880399279278335982619019392983109710369604460059859022468994373480045434248040713896862456845920018164581498873236394584793215632879036361684025776086529569', '63399649253779463637.88320468645646644051'); + T('36985.537435306622236467270937252825254026014721851309188254305389713697015230264185263378799026382334714397309571564625416241215217867149723572425854181806966554642360423829060014881901773199386994460664634062101904797359294551321318937235734678512961188607801986220680153014134029493832615546969623974916827167078654634358574333678389616366410278915565703581941672170730893983545040190300249274221426700113848290541507663318853535927775893362185694382544176373482231304831101837902849800951258220726268990677590958157914974175471404517996778205179950329995483136931650616286373118261630043285103533033040476431824360766396365422877272153761572905701234187642833656097211644081252236980059582418494584853215946576617549259994456993750322107749520964217795499374138097379418654677424839627787482713659455961703181646841698674573783883478313655188817893687086751450042662911182317161526490882315503431203481', '1367929979.37846755563562136'); + T('138.653825283302247079520109639909554830495824478735118824960659298570304260365235201452949658158554711469364399658798667165750129626981635907513515727752104322402093210187651015212649867280391248459370998127185412494794237194604573645718383791562171900088214128456904501530127980235949384533924069927959103110766006405141214543337550010111094563431666164054892460728841085337947430066655077091396441886965426495467949136348081716343859215231704926659844712690080814553677280196114278268613368774166884194655930307728924841441917187821902525242579401284440544702546289065296084983476636972703960454064127793719473325530264873714830294999070781526696237151909302447919905808564848939241449791664413964130684658760296224947984073972311661335447223880763498816716066907256956648196113869920459515551692886783038790708833001987620466496959254546687493058038109403699935644806603442158642646086655023039259769', '19224.883265692505457601247932291125354259868778652089681716374870935'); + T('50950.440174742357175572071690890164127102751485515727366550390683608820436132956072025681803295779371667169337127406084175358445300796083953408843705969018873810510032889756321223393470759559987454753284749000495070038043049225296587093286942372337838245436787768377078265062338033176995223379224008076742040545070485158584805287828654557110412928438688654162185555625503306254982210625622689237909265654674405693567429263013187828668914075564173639899430670900405284455694427199638591118702956228653269921902023423130819746958603054104765246190233159809281895358531923339811813637075650854380095230369039753422001934387105096606677337450258221260413504059391491686285381140987958601361542484696758005412715512502019501470056625769917175363496998761143393423591945956802212685363531078784887861348308753434147834816578247850672086197881232957501680862454026927989538997998521459117388396046360043657658205', '2595947354.0'); + T('10046454623254826961875382317790.784871452244144975743064060498244021304220015969466939024480223499960901641559066665153037197032593546502649980935727654208439388853861419936425552530271530035494928115227726482675679211892969869213891378152728772302193716001319517533416123919336946085430093922543201768660204280287527989092149328624358683559115176981914090302709863561780525393374380243154381915249441910602391360612168161991933174297686912644986231916957310635449019093633359598148150548731899729849141307548127201093974033939034042561257126753456557941211256135898280856479300825592342274773764495952079469431439741906942077077162075390603294007186657196505030105092603376243537890291750177091215762681318887536194545745370727643575228977262734270257261824137515623111996150864948935760969962110266201746190014377183448005770929873280926905656965694617633851807904103533078781099132125392433972079961527137877338300842675298415396', '100931250497118287147460895653422009190477535915527140997436145.5'); + T('50312147.895978789945318850814716769716556529351439472968676011531432412685095617354326688006158268280144448102851948493093105193248333706042845584818818717006618051899381392239777663697210274767993016068817609233147463673391458914578371028438213381481915193432915606333241411830951892952556850603476911011964242221281045401447599028993820263011805445545067496904941492500519891679173682065830498079066798970609902316454882840175774548136572667012712115571877757306654257623667462477526405934096044262931622005593806759836229355795092155596007885177190326989920383365286112949649812553854003818096593686636208662967380298108969324741181800273045253898252610330097550632621999520072653397155741940824966908033268285600350252107768305144976490584881544838157210518233799995832553321591285254897707500335337126009624774906497706411815347441932376790317896998001657977732263675649024815291900604673316858390505885', '2531312225906842.98'); + T('5.75006173879898440869241532260800496489142124887111833188883261579283008763735295296179041343250976501937101036585472900854336327489380123282821037481044202916203441849004689471000360958945402609580784572353735408452226943576599178952237206876788896067842553596176879865752033951176088455975165207593727159176177085095190710656229140725205998687018442446680477310130738465615556577329602100580746699396762667032579047007129320587668015965987773825003138735379716404415157863124832466280028377682906939092007140554677511356063954505216670858009340392141492467369216371170692156583092566735501630865322582512619490429963282482788624823392158158604152325793299574006823928013422664018092614581197981204160781788183807939164255353777192327520682879326632498396112963534952155920134048996062606067862129834413685924986614062985203382638465654985330058303916447123647081510424589324268892533850475930056739', '33.06321'); + T('2.028430427695266062116855907049682671555242569377976031112753398044812309192685964100965099265530959360284365757870326033053601551523629075378378856745863785169732838994844919825336134776071475304944281214520910583421287945003559393430216592924156944793703503429916620090936360805054797721801359569417127688057382996969292921041738603630480342967692998233877581650620914181744888433057925936957891749666196052068806893889255339075884495080504767342571830767185504079538214007613797919720564247610464573496500053065413926974012933910366107634249863611197215314558918759158057008769626766485169836568960326396402057910902853473776179915408801623228568357317462913587164892064775658027833999904990053550155044417555290139236050616243301785245316354941879867361509091783046268854502291693337916935351747382119202947309008531765489919678841207661025090634628632028473270852667224552478918030875120109633343', '4.11453'); + T('14733978519855.986227038024852091926922255130476070894431360177088165996112823755229640976682373714559133174204321582457357379198592714332912375824678967479352499320917276441508273646332050526613540155298794906758075083423887078200491328803728379571737163423282193094119893971969158039986280336661223358044916730250644983211811708805361569086764053956417999765164201297583468149451593886541587337271459070510498401319438130775438554793347084598691604611470750783139289554584374151809770130348507437456446993653835198138094762369827003035065371494357530678660768629856933317557149699487339377901600994041273525198654016009799518759093883882149332746270829795417341182432885267251862546055608965944281933745525115737980560603226764663919494161818265452113376337284183674111018389097369572010360312518568654815367830169145059770161568817087559064704425726854477168276312695713542835478594810618373570380952296080331906', '217090123023577598725208942.7547'); + */ + + log('\n ' + passed + ' of ' + total + ' tests passed in ' + (+new Date() - start) + ' ms \n'); + return [passed, total];; +})(this.BigNumber); +if (typeof module !== 'undefined' && module.exports) module.exports = count; \ No newline at end of file diff --git a/node_modules/mysql/node_modules/bignumber.js/test/times.js b/node_modules/mysql/node_modules/bignumber.js/test/times.js new file mode 100644 index 0000000..45819bf --- /dev/null +++ b/node_modules/mysql/node_modules/bignumber.js/test/times.js @@ -0,0 +1,2218 @@ +var count = (function times(BigNumber) { + var start = +new Date(), + log, + error, + undefined, + passed = 0, + total = 0, + n = 'null', + N = 'NaN', + I = 'Infinity'; + + if (typeof window === 'undefined') { + log = console.log; + error = console.error; + } else { + log = function (str) { document.body.innerHTML += str.replace('\n', '
      ') }; + error = function (str) { document.body.innerHTML += '
      ' + + str.replace('\n', '
      ') + '
      ' }; + } + + if (!BigNumber && typeof require === 'function') BigNumber = require('../bignumber'); + + function assert(expected, actual) { + total++; + if (expected !== actual) { + error('\n Test number: ' + total + ' failed'); + error(' Expected: ' + expected); + error(' Actual: ' + actual); + //process.exit(); + } + else { + passed++; + //log('\n Expected and actual: ' + actual); + } + } + + function T(multiplicand, multiplier, expected) { + assert(String(expected), String(new BigNumber(multiplicand).times(multiplier))); + assert(String(expected), String(new BigNumber(multiplicand).times(new BigNumber(multiplier)))); + } + + function isMinusZero(n) { + return n.toString() === '0' && n.s == -1; + } + + log('\n Testing times...'); + + BigNumber.config({ + DECIMAL_PLACES : 20, + ROUNDING_MODE : 4, + EXPONENTIAL_AT : [-7, 21], + RANGE : 1E9, + ERRORS : false + }); + + assert(false, isMinusZero(new BigNumber(1).times(0))); + assert(true, isMinusZero(new BigNumber(1).times(-0))); + assert(true, isMinusZero(new BigNumber(-1).times(0))); + assert(false, isMinusZero(new BigNumber(-1).times(-0))); + T(1, N, N); + T(-1, N, N); + T(1, I, I); + T(1, -I, -I); + T(-1, I, -I); + T(-1, -I, I); + assert(false, isMinusZero(new BigNumber(0).times(1))); + assert(true, isMinusZero(new BigNumber(0).times(-1))); + assert(true, isMinusZero(new BigNumber(-0).times(1))); + assert(false, isMinusZero(new BigNumber(-0).times(-1))); + assert(false, isMinusZero(new BigNumber(0).times(0))); + assert(true, isMinusZero(new BigNumber(0).times(-0))); + assert(true, isMinusZero(new BigNumber(-0).times(0))); + assert(false, isMinusZero(new BigNumber(-0).times(-0))); + T(0, N, N); + T(-0, N, N); + T(0, I, N); + T(0, -I, N); + T(-0, I, N); + T(-0, -I, N); + T(N, 1, N); + T(N, -1, N); + T(N, 0, N); + T(N, -0, N); + T(N, N, N); + T(N, I, N); + T(N, -I, N); + T(I, 1, I); + T(I, -1, -I); + T(-I, 1, -I); + T(-I, -1, I); + T(I, 0, N); + T(I, -0, N); + T(-I, 0, N); + T(-I, -0, N); + T(I, N, N); + T(-I, N, N); + T(I, I, I); + T(I, -I, -I); + T(-I, I, -I); + T(-I, -I, I); + + T(1, '1','1'); + T(1, '-45', '-45'); + T(1, '22', '22'); + T(1, 0144, '100'); + T(1, '0144', '144'); + T(1, '6.1915', '6.1915'); + T(1, '-1.02', '-1.02'); + T(1, '0.09', '0.09'); + T(1, '-0.0001', '-0.0001'); + T(1, '8e5', '800000'); + T(1, '9E12', '9000000000000'); + T(1, '1e-14', '1e-14'); + T(1, '3.345E-9', '3.345e-9'); + T(1, '-345.43e+4', '-3454300'); + T(1, '-94.12E+0', '-94.12'); + T(1, '', N); + T(1, ' ', N); + T(1, '\t\t', N); + T(1, 'ertgrt546', N); + T(1, 'qweqwdewee', N); + T(1, true, N); + T(1, false, N); + T(1, 'e 4.3', N); + T(1, '4 .3', N); + T(1, '4.0 01e', N); + T(1, ' 4.001', '4.001'); + T(1, '4.001 ', '4.001'); + T(1, ' 4.001 ', '4.001'); + T(1, ' 4.001', '4.001'); + T(1, ' 4.0 01', N); + T(1, '4. 001', N); + T(1, '4. 001 ', N); + T(1, ' 4.001e ', N); + T(1, ' 4 .001 e ', N); + T(1, undefined, N); + T(1, null, N); + T(1, Number.POSITIVE_INFINITY, I); + T(1, Number.NEGATIVE_INFINITY, -I); + T(1, new Date(2012, 11, 4), N); + T(1, new Object(), N); + T(1, function () {}, N); + T('0', 0, '0'); + T(0, '+0', '0'); + T('0', '0', '0'); + T(3, -0, '0'); + T(9.654, 0, '0'); + T(0, '0.001', '0'); + T(0, '111.1111111110000', '0'); + T(N, '0', N); + T(-1, 1, '-1'); + T(-0.01, 0.01, '-0.0001'); + T(54, -54, '-2916'); + T(9.99, '-9.99', '-99.8001'); + T('0.0000023432495704937', '-0.0000023432495704937', '-5.49081854961890952566173969e-12'); + T(NaN, NaN, N); + T(NaN, N, N); + T(N, NaN, N); + T(N, 4, N); + T(N, '4534534.45435435', N); + T(N, 99999.999, N); + T(Infinity, '354.345341', I); + T(3, -I, -I); + T(-Infinity, -I, I); + T(-I, -Infinity, I); + T(I, '-999e999', -I); + T(1.21123e43, -I, -I); + T('-999.0', I, -I); + T('657.342e-45', -I, -I); + T(I, 123, I); + T(-0, I, N); + T(100, 100, '10000'); + T(-999.99, '0.01', '-9.9999'); + T('10 ', 4, '40'); + T('03.333', -4, '-13.332'); + T(-1, -0.1, '0.1'); + T(43534.5435, '0.054645', '2378.9451295575'); + T('99999', '1', '99999'); + T('3e', 8, N); + T('-3..0', 13, N); + T('0 0', -0.4, N); + T(' +3e0', 4, '12'); + T(9.9806, '+ 1', N); + T(' +2 0', '1e1', N); + T('e3', 4, N); + T(' ', 0, N); + T(323, null, N); + T(undefined, undefined, N); + T('undefined', undefined, N); + T(null, null, N); + + T('-19.851', '69.11', '-1371.90261'); + T('-0.0251', '-1.09821', '0.027565071'); + T('-2.11', '-21', '44.31'); + T('-1', '7161', '-7161'); + T('-4.61', '1', '-4.61'); + T('11', '-0.0000271', '-0.0002981'); + T('-1', '0.0000224801', '-0.0000224801'); + T('-3.6', '-3336', '12009.6'); + T('0.000000219', '-110.42', '-0.00002418198'); + T('312', '22.87694', '7137.60528'); + T('0.29976', '-5', '-1.4988'); + T('0.00000000000000000010018', '-74.6', '-7.473428e-18'); + T('138.583905', '9.73380', '1348.948014489'); + T('5360260.6', '-12.12', '-64966358.472'); + T('-7.01', '-0.0000000988077', '6.92641977e-7'); + T('0.0000202', '-56583117802', '-1142978.9796004'); + T('116727.96', '0.0000000000000019308', '2.25378345168e-10'); + T('-136636.46', '6.5636554051', '-896834.639212729946'); + T('12.1712598149', '53.270389', '648.3677449597909961'); + T('76', '76019.61784', '5777490.95584'); + T('0.0000714939', '1425786', '101.9350017054'); + T('-3221.71685', '-230', '740994.8755'); + T('0.00000000237457904', '-892315', '-0.0021188724960776'); + T('6511.4', '0.0000000000000186', '1.2111204e-10'); + T('0.000000011188562', '0', '0'); + T('-25379.8', '3', '-76139.4'); + T('41.9279', '23.4198661', '981.94580385419'); + T('0.0000010', '58236.222', '0.058236222'); + T('0', '-16.39257632', '0'); + T('0.000000004846959', '1', '4.846959e-9'); + T('0', '-30878.5', '0'); + T('-8065.5', '-0.00000000058314173', '0.000004703329623315'); + T('-443850607', '-1', '443850607'); + T('-0.070884', '0.0000000000000000002106611401', '-1.49325042548484e-20'); + T('15510739.6998', '4.13', '64059354.960174'); + T('-1182.8', '0.00000000000006116702878', '-7.2348361640984e-11'); + T('0.000000000000000024429766', '1.492', '3.6449210872e-17'); + T('-521641.171', '0.000000044916564267', '-0.023430329181534636657'); + T('-1.4', '-50.3861389', '70.54059446'); + T('-906235823', '169450901242', '-153562476945135592166'); + T('818.5', '-0.0000000000000002572', '-2.105182e-13'); + T('0', '2', '0'); + T('0.00000000000000000723208622905', '7281.27407', '5.26588019315858457335e-14'); + T('-8.30486506', '-1110043.7', '9218763.139203122'); + T('1.8', '0', '0'); + T('-0.000000000000339156493611', '-0.000000000000000000167265', '5.6729010903843915e-32'); + T('0.00000000000000283', '4.074', '1.152942e-14'); + T('39.85', '33086328', '1318490170.8'); + T('4.1183805089', '-5.126069', '-21.1111026568765141'); + T('-464.2025675', '0.00000000000000000106831881858', '-4.9591633849340270415e-16'); + T('0', '-0.0000000000073', '0'); + T('-0.0000002358363833', '-37968.0', '0.0089542358011344'); + T('3.4', '-32545254.52', '-110653865.368'); + T('0.000000247', '12.88', '0.00000318136'); + T('-446908', '0.000000490399599', '-0.219163503989892'); + T('-0.0000000015', '91', '-1.365e-7'); + T('794881.3', '45.2898548', '36000058.66023524'); + T('5', '3046563.8', '15232819'); + T('-95094833817', '3.101', '-294889079666.517'); + T('-12786.5', '-0.0000000684878615', '0.00087572004106975'); + T('66754192.630', '7', '467279348.41'); + T('414951476.81', '-12.875', '-5342500263.92875'); + T('-2.486307', '0.00000000000131610556936', '-3.27224248983875352e-12'); + T('-0.000000000000000477405019421', '-1.1', '5.251455213631e-16'); + T('-367046.223', '-0.0000129', '4.7348962767'); + T('0', '0.000000000000093338247', '0'); + T('0.3341376', '-8', '-2.6731008'); + T('422580779', '-10829.0', '-4576127255791'); + T('-11.6639', '-56.51836497', '659.224557173583'); + T('-1', '-36577.4', '36577.4'); + T('61.5', '-68269.0', '-4198543.5'); + T('-18.10728', '0', '0'); + T('531751766', '41.50116', '22068315121.04856'); + T('-7.63315110', '3', '-22.8994533'); + T('1249.58475875', '38582.13', '48211641.6081111375'); + T('-2', '0.000000000000001022', '-2.044e-15'); + T('10.750', '0.000000000014145865', '1.5206804875e-10'); + T('14', '0.044276206', '0.619866884'); + T('12175855.915', '52.1893', '635449397.1047095'); + T('-1', '-0.00000000000029721', '2.9721e-13'); + T('311354.171224', '194857.1428', '60669584203.5706187872'); + T('0.0000008188', '6375.414052', '0.0052201890257776'); + T('0.00000055577528074', '3', '0.00000166732584222'); + T('526170.543', '6065.11546', '3191285094.94589478'); + T('0', '-27078031462', '0'); + T('0.0003450371', '4044.753', '1.3955898453363'); + T('0', '-5.681398758', '0'); + T('-2830933', '-1', '2830933'); + T('2.8', '14.36338836', '40.217487408'); + T('725.6556', '-0.000058977271', '-0.0427971869738676'); + T('0', '0', '0'); + T('591.1', '-182368.115408', '-107797793.0176688'); + T('1', '-8.44', '-8.44'); + T('-48988695', '3.99', '-195464893.05'); + T('-54145231.29', '-164.1', '8885232454.689'); + T('1.9615', '370.5', '726.73575'); + T('-2317170.34468', '-0.0000117290196265', '27.17813645069548986202'); + T('-3865301765', '9.90928729', '-38302385651.92906685'); + T('8.9648', '-3', '-26.8944'); + T('-10645.1', '-4208', '44794580.8'); + T('-390304.9', '-9.540', '3723508.746'); + T('0.00000000043946', '-0.0000000000135', '-5.93271e-21'); + T('11.167962', '907.089236', '10130.338118257032'); + T('328719912.6', '1.13', '371453501.238'); + T('8.0902', '3', '24.2706'); + T('-0.0000000000000000000103885880', '54949757', '-5.70850386173116e-13'); + T('-60096046', '147.9066', '-8888601837.3036'); + T('-1.1', '-4', '4.4'); + T('-2.3781033', '1.488', '-3.5386177104'); + T('18.64', '-13492494', '-251500088.16'); + T('0.0000000000000000078080114', '1362291', '1.06367836581174e-11'); + T('0.0000006699', '-0.0000000000000059', '-3.95241e-21'); + T('-279.40', '-4199.537182', '1173350.6886508'); + T('-346081282.623', '5715.5169', '-1978033419605.4328287'); + T('26098.51437', '-0.00004277160560', '-1.116275363379572472'); + T('-0.000000000038243914682', '6258350.6', '-0.0002393438263964435092'); + T('-0.23215784', '1.7', '-0.394668328'); + T('270.08569', '73.4', '19824.289646'); + T('0.000000000000000253826', '-1', '-2.53826e-16'); + T('1773.911', '167', '296243.137'); + T('-609057.1664', '-2', '1218114.3328'); + T('178326076.8', '-299396.226', '-53390154391306.1568'); + T('-99153591.8357', '-67230.718614', '6666167232273.3544197198'); + T('0.0000000000001596', '-0.00349909609', '-5.58455735964e-16'); + T('1.84', '0.00000000003464', '6.37376e-11'); + T('73.5', '0', '0'); + T('0.000000000000000049', '-198604', '-9.731596e-12'); + T('1052854077', '2.8', '2947991415.6'); + T('28.3', '5964', '168781.2'); + T('2085.7', '-338.192', '-705367.0544'); + T('59.12705', '-0.0000000000016294', '-9.634161527e-11'); + T('-0.0000000000000629', '-0.0000133901915', '8.4224304535e-19'); + T('0.000000000000000000010713336246', '12.8722', '1.379042068257612e-19'); + T('0.000620507896', '3.9', '0.0024199807944'); + T('3', '9.6', '28.8'); + T('-1', '7', '-7'); + T('4.07', '4', '16.28'); + T('-2473.25538', '12.3', '-30421.041174'); + T('-1310633', '-9', '11795697'); + T('-3.90', '3031.9', '-11824.41'); + T('150.0276', '0.00897', '1.345747572'); + T('2', '-8.8', '-17.6'); + T('-3030148.8', '229674', '-695946395491.2'); + T('2', '775.7549', '1551.5098'); + T('-613183.18515', '-3', '1839549.55545'); + T('-0.000000000001224', '367.376621', '-4.49668984104e-10'); + T('-0.00000000000000000737581', '1.3490', '-9.94996769e-18'); + T('0', '-1.15490644', '0'); + T('8.437', '-12103106905', '-102113912957.485'); + T('155.8091088', '3.465', '539.878561992'); + T('179142.3', '0.0060', '1074.8538'); + T('-301.3766', '9.6052', '-2894.78251832'); + T('48.15', '518165.306', '24949659.4839'); + T('4387518.42726', '-8069', '-35402886189.56094'); + T('-28.3', '-77.67', '2198.061'); + T('9', '0.00000000000001022', '9.198e-14'); + T('-1071.62294', '0.0000010', '-0.00107162294'); + T('-4.15', '-3', '12.45'); + T('-661.167', '453', '-299508.651'); + T('-104436', '-1098478.95443', '114720748084.85148'); + T('0', '3.630588', '0'); + T('0', '-13181687.0', '0'); + T('-1.111', '-3.78770', '4.2081347'); + T('0.000000042325027395', '2.89323850', '1.224563987727687075e-7'); + T('-21.7', '-0.00001926174637', '0.000417979896229'); + T('28151356.2', '0.00000000003236052', '0.000910992525337224'); + T('0.0120', '-862436.56', '-10349.23872'); + T('3649.71055', '-692509.6', '-2527459593.09628'); + T('-3', '-1', '3'); + T('-1135.91888551', '12.37808265', '-14060.4978485386674015'); + T('1', '2172752.822', '2172752.822'); + T('-0.00000000000001091997', '-117.1', '1.278728487e-12'); + T('-605.91910660', '2036476909', '-1233940269312.8094994'); + T('-85793626', '-403556966', '34622615410698716'); + T('387.034155496', '1.51', '584.42157479896'); + T('-212937', '7812.350', '-1663538371.95'); + T('838667.59', '-297101', '-249168979656.59'); + T('0.00382632083', '0.000316896', '0.00000121254576574368'); + T('0.000000000000002582', '-295757466.2', '-7.636457777284e-7'); + T('-0.000000000000798713', '21.52', '-1.718830376e-11'); + T('0.00000974', '-2.9', '-0.000028246'); + T('0.0000000000281', '38.82', '1.090842e-9'); + T('-3.237', '16967081.13', '-54922441.61781'); + T('9.8', '-0.0000000001333', '-1.30634e-9'); + T('5614.9', '-76.1668', '-427668.96532'); + T('-1.8', '3545.0927', '-6381.16686'); + T('0.00000249806256', '-1131.1175', '-0.0028256022777108'); + T('-0.20706', '11338.58322', '-2347.7670415332'); + T('1908.3417145', '-138.575', '-264448.4530868375'); + T('0', '0.0000669436', '0'); + T('325.22245849', '-14504.56', '-4717208.6625157144'); + T('-13.8825', '0', '0'); + T('0.0000000000869261985', '1.1243', '9.773112497355e-11'); + T('2588680', '-2.639437', '-6832657.77316'); + T('847973030.3', '1300.4', '1102704128602.12'); + T('-669.7', '-1150.41', '770429.577'); + T('-1', '-6.761867', '6.761867'); + T('-4', '-128.68', '514.72'); + T('-0.0000000000000000148', '-389336', '5.7621728e-12'); + T('5.1', '8.1', '41.31'); + T('959895377.84', '976.5', '937337836460.76'); + T('152', '-1325188.6822', '-201428679.6944'); + T('-1013851164640', '-116895', '118514131890592800'); + T('-0.555030', '0.0025719815451', '-0.001427526916976853'); + T('-8.61456', '-0.000000000050', '4.30728e-10'); + T('-0.10822', '-42439', '4592.74858'); + T('5', '248', '1240'); + T('1.00560719', '-0.00000000000000538', '-5.4101666822e-15'); + T('-0.0000000000000000880', '20.26149480', '-1.7830115424e-15'); + T('-215.544104755', '-4060438.71', '875203626.65949706605'); + T('0', '13031.6', '0'); + T('-0.0000000000000047877659854', '-208.19', '9.96765000500426e-13'); + T('-4', '-3160383', '12641532'); + T('-0.00104402960', '-6', '0.0062641776'); + T('-6', '-221362529.2', '1328175175.2'); + T('-5658.7', '-0.000009428149284', '0.0533510683533708'); + T('-3', '-0.0000000000000000171257563600', '5.137726908e-17'); + T('1577941089.0', '-0.0000000000000054178560', '-0.000008549057596685184'); + T('-3', '-19154.88287', '57464.64861'); + T('-5.3', '-0.000000000000000094150109', '4.989955777e-16'); + T('-275.9', '-618029.6', '170514366.64'); + T('-0.00277412', '-2.0', '0.00554824'); + T('20896.13', '-2', '-41792.26'); + T('0', '144.50', '0'); + T('0', '37399', '0'); + T('0.0000000103050173', '-6.752', '-6.95794768096e-8'); + T('-1679844', '0.00008795', '-147.7422798'); + T('1731362.632', '-0.0000000010867236', '-0.0018815126323525152'); + T('-116536', '8818.8637874', '-1027715110.3284464'); + T('112359.12', '-6.3736', '-716132.087232'); + T('0.02767509', '4.002781363', '0.11077733447134767'); + T('-942581.9', '7.504907', '-7073989.4993833'); + T('6603793', '1.604', '10592483.972'); + T('91689.093', '5', '458445.465'); + T('4351694708.6', '0.0003242690', '1411119.6914630134'); + T('-2.38', '-39', '92.82'); + T('-759.5', '0.000000324', '-0.000246078'); + T('-6.1623', '-10.1485', '62.53810155'); + T('1819.975133', '-1918.4931', '-3491609.7348320823'); + T('-544', '-2373759.39656', '1291325111.72864'); + T('-2143.2', '-0.000000000000000000162130', '3.47477016e-16'); + T('0.621559060', '53.8', '33.439877428'); + T('-4624.6', '0.0000000000000190537313036', '-8.811588578662856e-11'); + T('-6', '-50.943', '305.658'); + T('-3021.479', '3', '-9064.437'); + T('-965', '-0.000415509858', '0.40096701297'); + T('0', '6465897.6979', '0'); + T('74528068.573', '-119403349', '-8898900982117850.977'); + T('64.56', '0.000000017086', '0.00000110307216'); + T('-9626.07', '-1051902.812582', '10125690107.11121274'); + T('1.4514', '-1', '-1.4514'); + T('0.00120840179209', '-492240', '-594.8236981383816'); + T('-1.163', '-3.5', '4.0705'); + T('-390918.9935', '-3.9645296', '1549809.9209329576'); + T('1130.013737', '3', '3390.041211'); + T('-5', '-6733821263', '33669106315'); + T('27774.358123', '-0.0000000000000128441670', '-3.56738494049618541e-10'); + T('0.363631323', '-3819136980.1', '-1388757832.7919876723'); + T('-0.0000000065598472', '53857.08', '-0.000353294215438176'); + T('-240695', '2', '-481390'); + T('0.000059', '0.00000000000017987993', '1.061291587e-17'); + T('37.17', '-61.7668', '-2295.871956'); + T('1.475572354', '266461086.2', '393182612.2135309148'); + T('-0.000000000003907', '-31.5', '1.230705e-10'); + T('-0.0000000000000000000894018', '0.00000000000000001599913222', '-1.430351218905996e-36'); + T('0', '-0.00005850856211', '0'); + T('32.75', '-2.57293', '-84.2634575'); + T('0.00000131', '43', '0.00005633'); + T('-129602.62', '-0.000000000000000123490', '1.60046275438e-11'); + T('-2941.6442', '2.013048311', '-5921.6718883729462'); + T('1.01983639584', '10710047', '10922495.73175700448'); + T('0.4077750076', '-3', '-1.2233250228'); + T('0.359', '207160.173586', '74370.502317374'); + T('-26222.646879', '9.8', '-256981.9394142'); + T('-2', '-1.1360', '2.272'); + T('6717280984', '564735824499', '3.793489214890694027016e+21'); + T('-7', '0.000000000000000000179598', '-1.257186e-18'); + T('-0.000212', '754.3', '-0.1599116'); + T('-8.6', '-44061.183', '378926.1738'); + T('0.000000000000000000013', '956', '1.2428e-17'); + T('-3', '3.8968771877', '-11.6906315631'); + T('-4485.1947117', '444609963508', '-1994162257095211.5806436'); + T('0', '-3353199.6579', '0'); + T('0.0000000000000000000293', '-4', '-1.172e-19'); + T('-225', '5.09648', '-1146.708'); + T('0.00000036757', '0', '0'); + T('-78694.836', '-43.8', '3446833.8168'); + T('0.000000000000018028989162', '495', '8.92434963519e-12'); + T('-4036233', '-0.0000000000000000000134620360255', '5.43359140533119415e-14'); + T('-2.19', '-481624.5154', '1054757.688726'); + T('-6', '-33692.483', '202154.898'); + T('-0.00000000387466078726', '137145711.9', '-0.531393112039787150394'); + T('-52.6685', '-107972.8', '5686765.4168'); + T('-7.137137210', '3.06', '-21.8396398626'); + T('-174.1619', '-2084784202', '363089977710.3038'); + T('11', '-0.15', '-1.65'); + T('177.3211', '-85578219.525', '-15174824022.2144775'); + T('2', '-1', '-2'); + T('-681.685707574', '222753546489', '-151847908952971.868407686'); + T('2225288.04', '-2945.03251212', '-6553545626.6317910448'); + T('-829419822664', '0.000750870', '-622786462.24371768'); + T('-3.887', '-0.0000000000215299', '8.36867213e-11'); + T('14780708.1', '-2000820.86', '-29573549092050.966'); + T('-65280872367', '2756.0', '-179914084243452'); + T('-1.1', '-16652196529', '18317416181.9'); + T('6153.32891899', '3.07', '18890.7197812993'); + T('1.6664', '10.5', '17.4972'); + T('-335.16960', '25.16', '-8432.867136'); + T('20.7', '834', '17263.8'); + T('8029.51', '-1', '-8029.51'); + T('3544067.44', '0.00000000000000000108040', '3.829010462176e-12'); + T('-0.00000000000000861840983', '3', '-2.585522949e-14'); + T('-1', '-5.4071', '5.4071'); + T('-0.000000000000014799305202', '-77.4875919308', '1.1467625223519416640216e-12'); + T('0', '-31045268779', '0'); + T('-437', '640.03', '-279693.11'); + T('60', '0.000000000000000371281463', '2.227688778e-14'); + T('-1', '-0.019533338878', '0.019533338878'); + T('-1117.048', '8.967', '-10016.569416'); + T('-0.0000000000001992331', '17762516', '-0.0000035388811264796'); + T('-1.209', '-3960.47030', '4788.2085927'); + T('-994748.5', '-10809803.2', '10753035518495.2'); + T('-3.0521', '0', '0'); + T('4553015.460', '-6', '-27318092.76'); + T('0.00000000403775332', '0', '0'); + T('10628.68130', '-1.196558', '-12717.8336389654'); + T('-0.00000000003389', '-113275.58', '0.0000038389094062'); + T('0.0000000000000000000810', '-0.000000002954', '-2.39274e-28'); + T('0', '0.00000002678', '0'); + T('12309', '25980042.9', '319788348056.1'); + T('-7.6', '0', '0'); + T('-61.22', '-349.3', '21384.146'); + T('-1.845209', '0.000000052784913420', '-9.739919730680478e-8'); + T('395.326251', '-371872028', '-147010774681.007028'); + T('332.72', '3715', '1236054.8'); + T('-1681921.54', '76348.91498', '-128412884660.4906692'); + T('517583042', '-13.9', '-7194404283.8'); + T('-21.723616577', '-0.000013157028', '0.000285818231564853156'); + T('-116.13334149', '0.0000000006536', '-7.5904751997864e-8'); + T('-4.1', '-294.0876', '1205.75916'); + T('-22.05', '-6.7', '147.735'); + T('-22.9', '-0.00000217178', '0.000049733762'); + T('-50.5', '0.012432393', '-0.6278358465'); + T('-2', '-0.00000000000119764950', '2.395299e-12'); + T('19381.0141', '65.916071785', '1277520.3166816971685'); + T('-4.90', '-22.5701', '110.59349'); + T('0.00000000000192902409442', '289522860.5', '0.00055849657378990048841'); + T('-27006298.37', '-8164.7', '220498324301.539'); + T('-8776869', '-143972778', '1263630212072082'); + T('-79325483.3', '248065.2', '-19677891879911.16'); + T('-26.2', '28441.8', '-745175.16'); + T('18.71', '97792.4647', '1829697.014537'); + T('-150.68501', '-1.3460', '202.82202346'); + T('-43.0091494663', '-5.6724', '243.96509943264012'); + T('12.359', '-1.261', '-15.584699'); + T('0.0000000048694525', '-13', '-6.33028825e-8'); + T('-26799', '-3.0401', '81471.6399'); + T('0.000000000003271187802', '0', '0'); + T('1', '0.0000000000250081008', '2.50081008e-11'); + T('23.590033588', '0.000000000000000880594309', '2.0773249326711650692e-14'); + T('2.34', '-35556883', '-83203106.22'); + T('127410324', '48.0', '6115695552'); + T('2.4', '2.0', '4.8'); + T('17', '-0.00000000000000000467960391085', '-7.955326648445e-17'); + T('-5827035', '63.01', '-367161475.35'); + T('-452352446648', '13167459.5', '-5956332520963450756'); + T('0', '27.51619908', '0'); + T('-6.8253', '-203490405', '1388883061.2465'); + T('-663513.1', '235798', '-156455061953.8'); + T('45846991454.7', '0.000000000000011371170', '0.000521333933819940999'); + T('-6940453.30', '-0.0000000000000000000429869089', '2.9834863373180437e-13'); + T('-299.7692790', '-2.0', '599.538558'); + T('-0.000000000000781997707', '-0.00000000002498', '1.953430272086e-23'); + T('-211968.876', '-11448', '2426619692.448'); + T('-2', '224979.5', '-449959'); + T('0.0000000000007372', '3', '2.2116e-12'); + T('2.14', '-96.5220369', '-206.557158966'); + T('246.3484', '-119174406049', '-29358424251121.4716'); + T('2301100.91737', '-431951.5', '-993963992909.347555'); + T('-13819448.15', '0', '0'); + T('0.0000000155919108142', '8.51', '1.32687161028842e-7'); + T('124616457', '513907736', '64041361285211352'); + T('-5298.3584942', '-4.1932', '22217.07683787944'); + T('158463114', '0.0000000000000000001405398', '2.22703743489372e-11'); + T('-65667302.5', '7', '-459671117.5'); + T('-1693481.437', '-27743783', '46983581502656.171'); + T('-0.0000000000000003099934391', '125', '-3.87491798875e-14'); + T('-0.000000000000004272052', '0.0000005661', '-2.4184086372e-21'); + T('12.95933', '209420271.72', '2713946409.9091476'); + T('3.1', '-1.31573054798', '-4.078764698738'); + T('0.000086866', '-103057641552', '-8952205.091056032'); + T('11.1', '660.353292988', '7329.9215521668'); + T('-92.940180', '-1', '92.94018'); + T('97808795959', '-97', '-9487453208023'); + T('0.000000000000000388699', '-399', '-1.55090901e-13'); + T('227578760.552', '-40082.64751', '-9121959239968.50902552'); + T('-4.31547', '-29.771127352', '128.47640695373544'); + T('27.8', '60.0346682', '1668.96377596'); + T('12.7', '60805396.70', '772228538.09'); + T('6.808549', '434235.18', '2956511.50055382'); + T('-0.000000000000000000764', '798867', '-6.10334388e-13'); + T('0.000000000166682635066', '21.7', '3.6170131809322e-9'); + T('-17.0856584365', '-73.70395', '1259.280515120874175'); + T('-0.000032761108', '137.87702888', '-0.00451700423385679904'); + T('6.7467', '0.000000000000000000017375144', '1.172248840248e-19'); + T('156.9', '-90.01049', '-14122.645881'); + T('-294748892', '-46912.02', '13827265916481.84'); + T('-1145.2', '77', '-88180.4'); + T('0.000000000000000000049300', '336.35', '1.6582055e-17'); + T('1.0', '4', '4'); + T('2791.3', '372.0576', '1038524.37888'); + T('0', '-1.1', '0'); + T('-67196.498357', '36318.97052', '-2440507642.87511143564'); + T('0.00000000484838500152', '-0.00004296', '-2.082866196652992e-13'); + T('-1488.65084', '-2472469.6620', '3680644039.21081608'); + T('-0.000000000020', '-9.9', '1.98e-10'); + T('-2841.5725628', '-0.00000000000000000049499064214', '1.406551827547777476392e-15'); + T('75.099315636', '0.0000000000000014', '1.051390418904e-13'); + T('3', '-2.7', '-8.1'); + T('0.0000096', '-0.000000000027265607', '-2.617498272e-16'); + T('3256481', '-8.7', '-28331384.7'); + T('13650.44', '-53', '-723473.32'); + T('6', '-8.1', '-48.6'); + T('12.819672478', '-1.0', '-12.819672478'); + T('0', '-0.00000000000000000001480', '0'); + T('-0.00000000932497', '1', '-9.32497e-9'); + T('0.21304', '-0.000000000000159938', '-3.407319152e-14'); + T('-40', '-10124.4', '404976'); + T('-138.46343', '-72.2', '9997.059646'); + T('5', '-65625447009', '-328127235045'); + T('127.3760', '-572993.9', '-72985671.0064'); + T('3793.636', '-14016.5', '-53173498.994'); + T('-0.0000342', '-3.21', '0.000109782'); + T('1.054585905', '1', '1.054585905'); + T('-18462488840.1', '6264.198', '-115652685667176.7398'); + T('-55413', '-9808.30460312', '543507582.97268856'); + T('-1.11918007', '0.166606078', '-0.18646220203846546'); + T('-1.6', '68.418', '-109.4688'); + T('73090459.50', '2990.3', '218562401042.85'); + T('672.231', '19.8', '13310.1738'); + T('-0.000028', '4.8', '-0.0001344'); + T('-0.13900815895', '103606359', '-14402129.22010276305'); + T('0.000000000000054', '-0.0000000000000000492', '-2.6568e-30'); + T('-0.0000000000000000000484559', '5.193', '-2.516314887e-19'); + T('418.8538369', '0.0000000000000079', '3.30894531151e-12'); + T('0', '675966', '0'); + T('106621', '13.56840585', '1446677.00013285'); + T('12.198402747', '1', '12.198402747'); + T('65.314804858', '-0.0000000036124', '-2.359432010690392e-7'); + T('-16207.72', '-0.0000000000052877', '8.5701561044e-8'); + T('-26109.4977159', '-60149.26838', '1570467185.380666093242'); + T('-0.000000000000030215', '2614373', '-7.8993280195e-8'); + T('0.00001270329688', '2444.29', '0.0310505415308152'); + T('-871.457466', '2348528202.8', '-2046642436441.6221048'); + T('-0.00000000000000000063864554', '397.146', '-2.5363552162884e-16'); + T('-24310822171', '20.60', '-500802936722.6'); + T('-19.860', '47497302.8', '-943296433.608'); + T('-3.55', '0.402200053', '-1.42781018815'); + T('1311.50024013', '4.4', '5770.601056572'); + T('-361', '0.000000007669817618', '-0.000002768804160098'); + T('-0.00000001735304418', '164354775', '-2.8520556717689595'); + T('0', '194.3', '0'); + T('-3.7', '-1475870.0', '5460719'); + T('-5888926.57', '-1', '5888926.57'); + T('-11.644', '-83797427.047', '975737240.535268'); + T('-0.005286102', '25.9', '-0.1369100418'); + T('0.0000000000000545367483', '-176.8675', '-9.64577832995025e-12'); + T('-112.5258392', '0.05538900297', '-6.232694041650542424'); + T('-2032574', '4.7', '-9553097.8'); + T('44405.894', '8', '355247.152'); + T('1430.7023529', '15', '21460.5352935'); + T('-0.0000000000000000010538367753', '-5.05921', '5.331581551965513e-18'); + T('1107.1', '-660486.6', '-731224714.86'); + T('-0.000000001271832580', '0', '0'); + T('0.00000000003329420451', '-4.58', '-1.524874566558e-10'); + T('-1.1331472', '22318736.7503', '-25290414.05613954416'); + T('-1320771192.0', '0.000000000000000144797721037', '-1.91244658612921966104e-7'); + T('6.0088825', '-2.06', '-12.37829795'); + T('-0.00000000000000130', '-14.851119896', '1.93064558648e-14'); + T('1', '-54959924930', '-54959924930'); + T('1.22', '-0.000000000000000000447152061675', '-5.455255152435e-19'); + T('0', '2460.4318049', '0'); + T('-48926117262', '0.00000000000019101657111', '-0.00934569915711302150082'); + T('-1.9', '-0.0000000000152246057022', '2.892675083418e-11'); + T('-0.0000000000000000262046', '-18965.321', '4.969786506766e-13'); + T('-1.5349403', '-3984579.1', '6116091.03912773'); + T('-0.00000012', '663568053', '-79.62816636'); + T('-54228857.6', '0.162776', '-8827156.5246976'); + T('0.0000000000000000001875935465', '14.25202', '2.67358697658893e-18'); + T('-13.1992', '-8.93496384457', '117.934374777248344'); + T('1.4', '0', '0'); + T('383.512', '-4258970898.7', '-1633366447302.2344'); + T('0.00000000485581523775', '0.026476965410', '1.285672520872576762275e-10'); + T('-113.2617', '-1.3158604', '149.03658586668'); + T('229813.79204', '-4.40918501496', '-1013291.5280939017289184'); + T('-0.0000735399', '6', '-0.0004412394'); + T('20950', '18.05', '378147.5'); + T('-224.09235215', '-0.0000000000000000000330291504', '7.40158000265211336e-18'); + T('-1212.5', '-89187.79', '108140195.375'); + T('0.000000005360379781', '-5.853730207', '-3.1378217045031744667e-8'); + T('1.721', '-59400291.7', '-102227902.0157'); + T('3', '510831.1558', '1532493.4674'); + T('-79731.7076', '-0.00000000199301902', '0.000158906809743878552'); + T('1', '7', '7'); + T('1557292', '116069515', '180754127153380'); + T('13174514.5181', '0', '0'); + T('11.5557387', '-0.00000000000003525009362', '-4.07340871023257094e-13'); + + T('59429490631462462063898399891833', '85.00891132032463441584595955', '5.05203629890205609747397099201262363916734883085091009335515e+33'); + T('-0.000000000000000042109349317791897577655162141761006017167', '-13008827246961207056988713615056579178448396076639.2633976291', '5.477932507570985534957063193452340625430871365299670940723162464475095465880668702087454656216987597e+32'); + T('8591855.554373470161526044552421978378391766637549711729320', '-4.18144454943', '-35926367.5773248178055078206847122253956635626957707604812328535202876'); + T('-2283433141014849078.33114178969776355920', '-453.97', '1.036610143026511036089988438269093722970024e+21'); + T('-834090482593334176100123.7933568971710257756', '-2311068.681', '1.9276403914416302737519348190500409072951706328939836e+30'); + T('189532.2', '2968613550973672055370920.6', '5.6264785726585220673297239734332e+29'); + T('5.5765', '206791541', '1153173028.3865'); + T('223004397.925983046564773982957421494273449', '-0.00000765764399', '-1707.68828752147254136863163630226113151989615142151'); + T('-9', '-861605.04321559065136010082968313802', '7754445.38894031586224090746714824218'); + T('0.000000000000000000028090298007095127212699390661641605', '-6917964065283873879.11378929124954598', '-0.1943276721961993069547944346297165198267413742521737520171142577284979'); + T('-12902.95204428144349964281942884855605291385221512', '936511255610118037649.1', '-1.2083759820067154006199526430520916600744894425420426553143497592274392e+25'); + T('0.000000054421393267623019090', '0.0693540337668146867938144', '3.774343146319828330922834963772562065116896e-9'); + T('-0.00000000007483922', '11963887185334360.01202905021298539073645325022668', '-895367.9851184189424994447352806605141113868134295543896'); + T('-136818356017962729836947190424992612288254', '0.000001250702751', '-1.71119094258963391622539632506259119343595682786754e+35'); + T('89886141515.402264741', '165920325588054483132342147189817', '1.4913937866089484761163201125053970911515450613342397e+43'); + T('-4910559.69867254476135299557110880352698481', '-0.000000000000001251373615473295746877725841601861845423548', '6.14494484412532005943449278569391549262463086794696425713068030612078654982181230588e-9'); + T('188388334026044880874021952902236669508901633565820006', '-1428610610603915751990.6', '-2.691335729036024155624090667679961618627273975496253699574106150646158039436e+74'); + T('2569238997875.3944611244282198384307876980880850', '-45354701.13646736794503189060', '-116527066896795434703.141029468202286044275680813636330729593599972883501'); + T('-20273871998054251005', '-0.00001018031347', '206394372190847.50529696253735'); + T('0.000000000127882266384995374972957752031634640610096', '56084430050054721499878916115459816143192971582.9', '7.1722040237117373866688717282573432808847848059761445842371981626319357370527308468409584e+36'); + T('954627502168195877866647607616261900931', '9.96209474259629834949998607', '9.51008962048762055845159388440432218351076192328571371885622003117e+39'); + T('27452502565473996463690067929.18801932606917287121704780', '-15999511778834005759916561695256821.291408', '-4.392266381547719678372690910805800180664096055687896418712826017984317410615883824886612653024e+62'); + T('24739272583405.47186561318831947000688841802596024659835438', '0', '0'); + T('-14628477765152447836551575115758391.03361640644696947989', '1896549844807094292937664785889813670098706728.8', '-2.7743637235263904499250092914009953677085505785952534916815852412079339245487773243303684333379283832e+79'); + T('-0.0000000065376926', '400694118953983940534743481756583594', '-2.6196149763489805485528325035782515637752044e+27'); + T('6159556.6345747363', '12428.3903194610108', '76553374049.32049544464848654145204'); + T('1', '-214152.677228898078143751453160882566438516677', '-214152.677228898078143751453160882566438516677'); + T('1234245458508975352.84372029387871714', '711.09788699', '877669337572736089357.1591886677375895858960086'); + T('-12435092008252.828827', '-0.000000000000000130972832307119388', '0.001628659220320498210781727802616997876'); + T('1222155005674.47827107178853812873657', '-1.9217613579329307675966802225522', '-2348690263309.514070047950271986297573047714307144600821921806873954'); + T('-9610326782.75790', '-1925856563138573766.221666413429', '1.85081109084807161320054127390660041302158391e+28'); + T('1897933.1084909834795612591951194123752666123', '-19444.86721593176768385769', '-36905057279.327795521442821058258453663270782572671411150172721603587'); + T('0.000584193054195683632690208', '-15427224.032385517626932779704097', '-9012.477125240345688831570386428613444841606254309382176'); + T('-9193123344.97483292546402603464388933977', '3', '-27579370034.92449877639207810393166801931'); + T('-208355', '18.5077', '-3856171.8335'); + T('0', '-7.9', '0'); + T('-146.9974821', '27.85613660690160', '-4094.78194224817268246136'); + T('0.0000002221395758167297538432', '-11018022952341415341382543191308.248305367013916352', '-2.4475389449721144325377299337884145675514764946137036517351977553240064e+24'); + T('-62634425863308865890231971109828114770592016347.2857222333045', '-0.0000000000044191162667', '2.7678881018796339994185288016784587422371771822944265151385376844431015e+35'); + T('0.014785725196930589141008331862', '1405730020396633.72', '20784737782660.25819955773732132563645741958664'); + T('3060880958477929473167827.136432332645114184906595927797020', '-134990224.755007177950183445', '-4.131890085332574931410011369432785413898866996911658019131150911202211096837243339e+32'); + T('-251157.56', '-35553.75153', '8929593483.1210668'); + T('10660825.6584256928', '-54.80641419272238648411', '-584281626.672080870616452029619482941408'); + T('0.00000000000000000018196806510154644625549186906147312734531', '290466772346954491087868523893813560578350699536244189', '5.285567654026668587345538632825206167793448119823731989523008725260266169443990119026948390359e+34'); + T('801946936195133455122.3263199289', '3353455956475898285353850471499087737905097359235396953.528', '2.6892937299611674351748616442698675657013699635861635172559630870783247800626545335641592e+75'); + T('88876291341359997.22', '-242985336224765018278774996045975', '-2.15956355339905308693512776069018053139845369921895e+49'); + T('-677.8706245402', '-40041.8855', '27143217.9316521785471'); + T('3.1852520702012', '0.00000998870874036575237809441602188548308619567919990770190850', '0.0000318165551938868335179942506676244968068581347935045219680140052189902'); + T('-2897031868709978067512290.19826378134251899155435029', '-0.0000000000000313426136', '90800550447.862773034512424935249089493462002949664538517944'); + T('-286245211287.816038991926811942762853058522756387871', '-905725.51698541', '259259591978255100.08416583456412844730858064475954566698860796211'); + T('-301283745846510635986864779646783.59226306843', '164455867753899', '-4.954787986333307027587976990843711993792791415951383630857e+46'); + T('16627939773', '-24446.50', '-406494929660644.5'); + T('2835613541302657637165162939561661439198237', '-34702274210562114517526690656890036690211485', '-9.8402238665467925464317665495284869217720281504532926830801758242091305082784369151945e+85'); + T('0.000000000000167329000479220734904842317239446253923254', '-335462.843', '-5.6132662217107750155727738207852552086794690651122e-8'); + T('1606900543967463817538016297544283302866330961.38117', '-12172415089417043266077235.5931339752547820885496331722', '-1.9559860428582011548778770036179464667831089769951903599695351323242935536918541220406695361968160447474e+70'); + T('25175391597018424433550189069315474558138086224811394.9498', '2697842514071148.65', '6.791924175882585620347727294751149080055684613881481427569426305249508777e+67'); + T('33605644614556574.500804536703659893409117374', '-32.543409918351171133101366277860678601667282494', '-1093642268261945046.079483918411013199812861395190797870188216612955697572700923777661450756'); + T('-16194637333856709349021519708.8552324881761540256020238975', '-468.317375400951782165492196622874246631857734334382', '7.584230051762041449005379580598839525796458346850505580761259136785876093027076066542485326077054219893845e+30'); + T('45938105933592236851533187176.70670204189811056', '-23728.6', '-1.090046940455836751355290385241202650071383506234016e+33'); + T('0.0000019359500318287540988972385182980431073131086249', '-1.433', '-0.0000027742163956106046237197427967210957727796846594817'); + T('3.383292222691', '-0.00000000000000000008416407858503881', '-2.8475167250671594974339763771e-19'); + T('-1781216226076936151337005862078252102700230837', '-139003643961.53840777847576996', '2.4759554610811353724544585499901643072996118138112041996180785490331025652e+56'); + T('-4942215729757062263164723577.197780606517', '-15241705.579', '7.5327797060859772211128133542568249856768162658343e+34'); + T('20212448898283508798.6625218057881201405', '0.000000000000000000473337907308896740021174588136160473489005777205', '9.5673182631015315198993602152061224371243489547543953762429365302559862133611162973025'); + T('0.0000000000000000000336083585075308914988259705527435231286920', '-1042029834722073772731648833.0978', '-35020912.2608826168412442748054117197175486895048242174316983271784220776'); + T('2376653285350901814422.788590453876', '-7116898082702.215', '-1.691439920976175340680854757410757210391140053534e+34'); + T('-0.0000067077602282', '10325935005362413727223741709915.3224340753', '-6.926389614794815252662513824455946141306951378398346e+25'); + T('118620396179863704912953340.8484888231431511', '0.00002664482432944840555300828814', '3.160619618102041148915830017998160333002812044061355761312703976357954e+21'); + T('-0.0000000000152038475299141990408716170165065', '0.000000000000005856774815228245375399878344009978104812414293866282', '-8.9045511307771647940461821641351376995341987855772716940834996589432243659697783833e-26'); + T('-552929555032574543198346', '0.00000000031628803556881', '-174885002769189.22345730619750676118826'); + T('0.000000000000000045838', '3539579713.731326460', '1.6224725491801654227348e-7'); + T('1392529024903490704995506782982906.381429', '-696.803141131', '-9.70318598668840847367530799623705904459432004456199e+35'); + T('0.00000017046264046382452', '77820777096586290650583567570533323989282', '1.326553514683081867495692236827890756347852656781320879464e+34'); + T('173.2', '400230281235477723305446756183676238679630391', '6.93198847099847416765033781710127245393119837212e+46'); + T('441.339801980', '3859926956832539877913158087979570115173.37608', '1.7035393987857371577386465661853388929161435925152686384e+42'); + T('146444036588433930865962234014095372651938826216413', '-52287041949860150983876138.09252718579', '-7.65712548440629977355786783708824277254343945936126868688503521615280343003456839837127e+75'); + T('-152996991626635397079841283901340.65158799', '139164451.4055465586500905725256511816907743', '-2.1291742406419715449781823729219758981469966625530964344454535418866326578427680657e+40'); + T('-2392095943969007513831013778238', '283213.66941826693939894680290224', '-6.7747426989201568951320097088428601075588412800688116615345312e+35'); + T('-15192560288102281367737239879605.47240096086', '-81553445736510122', '1.23900564105440798918085016560369292282227123306201591582492e+48'); + T('1.7067661013360140299015089144175628', '-8518082392971818901480808577069938345874733', '-1.45383742767114563412540521449653172561766842289564535605710831784007839607324e+43'); + T('111116813960956208515375359292296052638950332201721672', '-6723639335232846900768096240894018745358463215413', '-7.47109381153635523540473499319528741906993971058857734750058361188185043050515216086975306279606530536e+101'); + T('-19017520.49675261317806237143645102654220495050', '4439261178196804.5636234243239638305', '-8.442374044679588557398641259522603028251217372386419857709859483039768004289025e+22'); + T('17312453768.05379', '1726.44336801935101862147113581125657128654142147602', '29888970991998.0896280136870221704774967797321308901016337045551158'); + T('-2', '-8.63876', '17.27752'); + T('734608.2', '0', '0'); + T('4.1351657034625927353146715451605855050687982255845069770', '29034498780299324669067501513285520', '1.2006246357352024765485891656111571028229380504313388083084112136514462841267544463307304e+35'); + T('8113870024531627718699652079910.7068190690295904975254176585', '16923534495569343509614671152502455712381.505727413', '1.373153592527270771522358333649474524182371877317191394431842566433920202044363434189424789373922626777224605e+71'); + T('-10.01', '-4864429445729841.069760518121786', '48692938751755709.10830278639907786'); + T('-2257142436339514797101935880.78', '361.115', '-8.150879908987438859554655755878697e+29'); + T('2334599.31164827194227', '-29960204503173960913.6', '-6.9945072809951386426110474550748535657872e+25'); + T('0.0000000000000042471515826788460724024393725389035009593598059706180678', '828398091382.612675070213', '0.0035183322649037987809384707757042363075619742175811901626183872501809043713944414'); + T('-0.0000000000000000000284493127383335026590175755701910596367998889566726', '-0.00000000000000000013237', '3.765835527173205746974156478226190564123201301194752062e-39'); + T('-0.025286262', '-0.10797436581647216600797099911020807463243214320798554', '0.00273026810331915910538504877190248824967123287037864285665148'); + T('-2.16564935772054852403', '123868749404533277771925133166764554.44147780538237283827', '-2.682562775895750704487504519843216927715513029094342900139628307846103986281e+35'); + T('488112856156098659519479388744402.61', '-3114334168535743226695852106494538175980162249914143.70', '-1.520146546028510353469309736526975923164123845906295275264771051373672808879616446195057e+84'); + T('13062458273.90637045335784972', '-422551949801626.741267985176602715381458097174737967000518', '-5.51956721284152853764296726669744927261362132472755924039708895768532345915860615496e+24'); + T('-1774897196938188058987.040101468413944266333770483137507', '-546064776871.3594927107191784', '9.692088418156530694143698199431520418181775404052225935078568528036161040292642488e+32'); + T('17667764535653225248288857836.95612603671740964890', '-0.0000000000000000319890032591629766', '-565174177313.13507635499469894977748029671843469133582435048491574'); + T('-281835819.9184911063', '-7175814054420814885484554.4', '2.02240143761032232334599327109026978241853272e+33'); + T('0.000000000000000001503903188910', '2473558551492927739005724.481043938460207033289961875', '3719992.59354581446800290523978683389613115250358419250482280625'); + T('224371010310.537303586', '-8046248744083810452149728.077812213', '-1.805344959919976464767416627850984855572049419079495818e+36'); + T('21241841371778633003043.69805019497112440', '3019928870075002318121482.417', '6.41488500121878843990786691028203447626143414100289387726373196748e+46'); + T('-0.000000000000000017364919937061080720023417741392471545683503908', '-0.0000000000000001101', '1.9118776850704249872745782933273111171797537802708e-33'); + T('439522909103802363083392888521183473696.816065', '-2.2', '-9.66950400028365198783464354746603642132995343e+38'); + T('0.0000000000000081177461857815960900264491259569062173810350', '0.0610415335877925918303617472579311', '4.955196764565624988836180976890473307042478930774835424434663605140744766885e-16'); + T('-186798563956757871041672400714377.094855823', '-1262567588714917541983982710.193577', '2.35845812470293091731202495176066945197325419055745256762489749711235648871e+59'); + T('202739871381.909125537', '20323942031180.7301604586345358572504650', '4.120473393374958139010105109821762644139100410749336624705e+24'); + T('-0.0000000000871057582376852096451379468926610553156501430073631916', '-0.00000000000000000204556363069958967723715901466977445824097114499093', '1.78180371075520049530019591335531323553330829840490421849868550913658281328132369671225257713629597852188e-28'); + T('43650.3286859870996376890566772833', '0.00000000000000000001310330289622533562857521522228834136757813518300419196026', '5.71963478292282611553143218521780871633322080859969244917523136988043505512171959238361658e-16'); + T('-1092205601185294', '2', '-2184411202370588'); + T('5860768904954696696.24176142662833543847', '0.0000000000000048972255', '28701.506930951217005600908223400663331828964985'); + T('-85896656824567.02163635501735158916726224558523587655', '32321.39', '-2776299344922992287.4470686942774805948582718361870079644045'); + T('0.00026', '95786603846831218908589843126114668233645', '2.49045170001761169162333592127898137407477e+37'); + T('4045878451917596479346482', '-2.2547', '-9.1222421455386047819825129654e+24'); + T('-0.00007402891873793970469482766866928008041088343139', '580', '-0.0429367728680050287230000478281824466383123902062'); + T('-294517422548703614947348777318332.649869292704089396942', '-0.000000000000018464905130542546160683866082', '5438236266653724351.349152153311431266266033202633265447500622081254643984468321244'); + T('-83.506', '-8171012757524040761112.5', '6.82328591329802547797460425e+23'); + T('0', '-0.000000000000000052054568154502662326801153388437977', '0'); + T('-848457792560875.315304639536969249869368391843456', '2786837672040308423168750746536175069.979124227', '-2.364514139444808677729215519365182902026897625419714103499744958027008402375235640420961008512e+51'); + T('3114192', '0.00000000000000007442771895146280027117559688227552768887141498150', '2.31782206936893840902092874406007390124461849564067448e-10'); + T('0.00000000000000000004917302646400565894337036110048', '-422918872', '-2.079620088498342188194690499484768025856e-11'); + T('-497313848.92', '72015813415347226684601.47954307807272704460158688818499730', '-3.5814461352690899900766892687894799291942231391683303086680262807916e+31'); + T('4026.7272674898467547880850473160814529617052037657449361', '-21157682685', '-85196217784587.2940970833078499068622793775121577888984306494014285'); + T('161789945200634672.93574932528', '-8005803048483811151653134568908048072385822541265', '-1.2952584365012698158369216496463941318557463003471359935387477829065387076792e+66'); + T('-0.00000000000021548823070578223953868560097628121116323968225230682924', '-49653567182460198793826479862157.077878', '10699759340379041130.65114538401855139934323670216223964167385329900350710562551938222192755272'); + T('-5565648526946998.206396582068274786458395468246488801913', '0.0022945055453979742566004395333553200630524525428518539025', '-12770411408815.9541406930749916678604063671114068656466120089976699763004963995450912686342679576306781385154825'); + T('3.271826', '-23890.6474306628013', '-78166.0414204757505261738'); + T('-0.0000000008805699092114903173390188646922', '9284821552.25745813417849639083469216233186', '-8.175934471316238510307959904561765618357930068136953080998844682973153492'); + T('361333176.6552043788873570', '425816532338214481.0652246362221874080822', '1.538616403020706012031174663425818903103785031033415757451967454e+26'); + T('2805.024', '3138666568668923617772609.35105', '8.8040350531139788020189957723196752e+27'); + T('15516261613526.6610074517562', '-0.00000000000000000236624580694534592762621412652683109621677385955', '-0.00003671528898247448920639683215816512848818717755547603887938060370189964171'); + T('-0.000000003258489294057571', '-0.0000000000000000001263694100620034334234551033555508871', '4.117733697834092773082498224393477748428351275212341e-28'); + T('-21061048707054855665564434392186020553808698597863.879494', '181831629693595281071297779845', '-3.82956480945997219565546562178683388176250894166635033461551679226752688144082199843e+78'); + T('-0.0000000000000004150087739116129831368627055614', '-1518028660414097725821098740744462450073.304250189994494', '6.299952131211430047024557585815135401837971947761937657558761468690680184406091789316e+23'); + T('-329353403844205335310.931518048486742714840512646142', '0.000000000004737902605006197777999824176859382087', '-1560444350.041118731605073747643365481135986445785795088564232590700292190358983404458354'); + T('-36414599958286461846528123709871289767333710768520', '-11982666807671338.82516899790506494507', '4.363440182347893057208595495864483712233866372669435753275016489496855915098212851964e+65'); + T('119742066861.890807047', '22054829383.984629241', '2.640890854724681514607753859168565061327e+21'); + T('-484485733573777836334476960525005005848019789', '-14406177805616860655.8627771810687838', '6.9795876221485617831711438674257823866674330443283469578093046623068838325626182e+63'); + T('5988848948477.078723617', '-6.5', '-38927518165101.0117035105'); + T('-1.0', '-63379703.864490098873312332', '63379703.864490098873312332'); + T('-0.506613427677516177791327725446313117452', '-0.000000000000025064675288473359447414244747114622651598944039', '1.2698101061517425226884571964189454600296022874042153446180321519393920461477382268628e-14'); + T('-23042537.21970212804132180', '10390764065108.50823342162627716811120', '-239429567711406187063.05734442567122738046800108051885738416'); + T('9812550833139441428690193893295885866528739.860970333644852', '-6934084675959416258239634601815942.0149731256600469716450344', '-6.80410583641450037528576307977037672169914839765125030421279633360096772675136555394720496053502446210349236989229088e+76'); + T('0.0000347689', '0.000000000085057549281766287602723911010', '2.957357425222803877030347389515589e-15'); + T('17309197932605.95272164347202723030822567422328', '10372291249693770815173154703247665392420536', '1.7953604225558623153970783373103876250250653717733283278048673842023984171292886092127808e+56'); + T('-10.68586744857482180099209534824648355512284245440', '674588.26676653525901087', '-7208560.801031027382439380269948592059745431252505648164243884987079328'); + T('-158425376406388668464703992996848728.8980383980010724', '516624932849644105480296.4740763529887132394681136194056', '-8.184649944763013743333361097416811851476935800617569830052596874617614630479435342869900779234127425056544e+58'); + T('43701371988184830897740842', '7444696727806908941269732116534493096172849746185.16', '3.2534346104111212105848066810541857916878449567515264310528659180255182630472e+74'); + T('18985671206766137596695783', '-4918195942924959263752039745340080571253768938', '-9.3375251102824433332331539143355814981375199246602425748207454160988454e+70'); + T('-8164454926564686613685695436631269148628112649072225137', '3017566861500503598.7', '-2.46367886286161259704778334978048504960179943566519245177920238542851005219e+73'); + T('-167.140200050688164319586013710074703990054053511303270', '-124707.791051624249704808849761672566349962496678', '20843685.14424789642526902036712772659312890967899817539551993752122248668554302671208072486282553706'); + T('0.00013717932814418', '-236889624553106847157555062629.1419261258', '-3.2496359540522243673339058837639891572432570371217844e+25'); + T('0', '-7377966474', '0'); + T('-1165159893843574357027338982426', '-7258741844369034621359206819796872729971572863114', '8.457594876822935516127237999861301735400382433503942145536493041682252149634564e+78'); + T('127327741', '-0.000000000000001314349415125924728376790639', '-1.67353141912655226200255348893816499e-7'); + T('-19', '674693830910632347225468600360472778098653805584.98', '-1.281918278730201459728390340684898278387442230611462e+49'); + T('1115499473064514172110108362485045185533368299248344166641563', '26727699066738.5277545215239', '2.98147342251737349166633853134205297966348378257402631237265170730493167637686598378557e+73'); + T('9531022923010697243825538443.3659', '-10497868918011538716', '-1.000554293003294813441624977396834705527412812041844e+47'); + T('36948.619152016593259861704969912416', '-109424973578674628984651491823525807602358729239', '-4.043101674477927092300739573396847025094408695070482727807518216276085630888331424e+51'); + T('-0.000224994118800115645797961334226721592496197539765940949883662', '231860.641001', '-52.167280606449958627644387092820869098935873225250256147940687697225662'); + T('-81737025015671727638688.506795636777200442300', '5419138.800783060', '-4.42944283723002262118621171335050352165263579845818347438e+29'); + T('-1466856541.9549101', '-24128674849693158122765920.4', '3.539330455197531614891444994295155372575604e+34'); + T('3719432135548', '54707696881', '2.03481565841010488825788e+23'); + T('0.0000000000000000347350240379700980370747179429442891350492370249744117', '0.0005534400198558475169798243101266211771697229801', '1.922375239326751185420171365530525629522813111237423841789162415238003577693927327244648617996830717e-20'); + T('2248441073845808666637746763786280194954645599162114623.5', '-6334923145497633015473724024497.97', '-1.4243701399993365995217919270799399913979461349413953499228708640778427689308423183064295e+85'); + T('-2833.50779749', '0.000000000000000000027787099520949762309607915049358999802', '-7.873496316224179511483613883698024416527436609698e-17'); + T('0.000000000004441882942767312311877169439858885409', '-0.9432493370398481379786084999178021934162', '-4.1898031409738770478382967231410155261701150266906290976528356507851700442258e-12'); + T('-2107306488.021444213082463895093082025238625832167567', '-0.000000016561760020640192077800', '34.9007043445492445900173806825761285679208256730753889935834487955007126'); + T('-129070822817.42205', '336811489052744821.06', '-4.3472536026398913255504341077748373e+28'); + T('0.0055725231631263368659868273181674133608110946135789308', '-152412560828753089910310350.5653132', '-8.4932252556962839520515736693985586025569561774936573592091065011026694067884882312656e+23'); + T('68902.0767970349411722981874624462811895157551795177137623704', '0.00000000000298788286086686468161985148648212755894442142', '2.05871334339993176415426311877635990320333360195205545566288301397039058040718828895421507390094595733968e-7'); + T('88153860095637039945277243438872776.064214155', '106.735', '9.409102257307819458559166578448085753213897833925e+36'); + T('3.7075516820964288985011546648796', '23633186593.70572408884166096265287527701858061993092', '87621260708.792430109916115951342109977008394099657174865349158237730095429102117232'); + T('-35505760506401161908713691885731701346896104.7570686644891', '-5457648514664450630675291184021238402035211', '1.937779610897920137400487822865364585421914753043232864073023463191678738063333894770237751635257001e+86'); + T('-120.55403235772170', '6237.155894', '-751914.2934654306175666998'); + T('-50246944566472610231911381270921126440112308695', '425722751177060307857193841626947340', '-2.13912674790799614679030549405709134417922674778586880217918152980768287325891213e+82'); + T('8119749715097219059818517125264159.064450132566482', '560418609424712067.0940695322762258473926083185', '4.550458844211485491057203230529751310726950775388516102150563306194801442473073934282587480517e+51'); + T('0.00014717424858', '-7244528491321.3877', '-1066208037.026626286030354466'); + T('-42181198581127024501.50753334291048422600', '-0.008682426489650895544', '366235155926002047.202675730675546783334970920687585688944'); + T('-57.3', '-96900776925224476370583151961084756', '5.5524145178153624960344146073701565188e+36'); + T('1083976078583942678025084625.271006', '-0.0000000000000000534905554182086699326584150063088902383604755', '-57982482503.506901999157564033733434733806444040999020955818569250676306523353'); + T('1058587.736740719', '2.2', '2328893.0208295818'); + T('-337676088587247469427246609', '2694990217595978128', '-9.10033755458704844211026116003411819226167952e+44'); + T('-180266997707357275243150935948776784257767.114595713620465125', '0.00000000000000012929550822108208448723385741716775647229370346', '-2.33077130840613978574569769854573934386258812596377482210267408630672963476159438278046789605387340218325e+25'); + T('667863393175854.7645678', '16647944315358092755156.00', '1.11185525798577381655823461635163932295615768e+37'); + T('-2607482796153.37663635999672298', '67905.1', '-177061380021074655.829689213473629198'); + T('0.02649777513989417670980608', '-3.7', '-0.098041768017608453826282496'); + T('41727029296529241379347405093482273986363238008823.7495', '-0.002796170808176706621979157103112461500671267733114714664', '-1.16675901230889282855531874612261889002345278810932959186816789276573413038428661947418401753559128959112668e+47'); + T('-11232695034932926234846674550549966790.9183', '-535612384919640506677833697180021817295233383415483', '6.0163705767354292540256743939915265501958563028272108803751138896375435530577152378000080389e+87'); + T('3.481826810306751', '0.01981896398982153971994255430994006244', '0.06900620017226469113521762438686245737379444049353244'); + T('-500336401148192185730936', '-0.0000000015351207243732', '768076778560892.7643589222652324493152'); + T('0.000000000000000010152819846152021274527085743667507483', '2034271405274844529575.93770552252121', '20653.59109593400315620700194269765880413700716562682807038424236270121443'); + T('-8', '14804.920611063196753', '-118439.364888505574024'); + T('-7644880', '32.933', '-251768833.04'); + T('0.0000000000000400490024778789822215877572796299412810612705023875', '0.00000000000023561893047293924977558189853184387736389392033215150171', '9.436303130345939646688036612188083884147595770701765354726302304762424603125782629215278913888534265332625e-27'); + T('-669622098209324787.5786201166', '-442008.19657257', '2.95978456014644004507422179531566173761662e+23'); + T('3750095561598843110.3554570', '-0.000000000921072821137', '-3454111098.455188785930556597852894609'); + T('509.01003417', '-0.0000000000695541947', '-3.5403783020913832899e-8'); + T('0.0000000000000000635110973210625767420869099697944141102671291', '-302.6', '-1.921845804935353572215549895685978970976683326566e-14'); + T('-10277403.8756777588787330367830', '3.73924958', '-38429778.12561843210264377872295730114'); + T('-566623967.574094904804042946014964033941069', '-0.00000000000001662953909014460365351667', '0.00000942269541818623958668998623752446360099484415277625603154138912023'); + T('0.0000000000000000060428627571787342505274', '18.65854757486578220960', '1.1275104224320402610478848029208041233734304e-16'); + T('6026260424.00', '18673139236042341642133200165212521277908.5537452', '1.125291999700035578262744750920904785263182229257757399648e+50'); + T('1351407130504734.056748656589882', '-16213.40426049972577134801362523633', '-21910910127395164076.55243444398575049081525274237838315413681306'); + T('-1749812757762436212668429.46101826944561361814636104616270309', '-259646', '4.5433188330198551287450703583554958847579349723006019196120650614e+29'); + T('70245313181709005413989461536786.3825442617', '-509184726219286329641748', '-3.57678405606165250356068075267063781878365698344246156333141574516e+55'); + T('-16.20', '-83495.2179048376073493099472538', '1352622.53005836923905882114551156'); + T('17522790821382422258618581410703033443568', '5481690529703238.18676804112985115150792', '9.605451649954285042649291504450317447918361312248424196122189225108309342505856e+55'); + T('3', '-0.0000000000000000000298256458973606523936524717292889013', '-8.94769376920819571809574151878667039e-20'); + T('-57135112812568.466051', '2713703246.301287433494800761485396936819', '-1.55047741117257327421574162146466373193666197915868993431769e+23'); + T('0.000000000000000018433', '224.613695971469169', '4.140304257842091192177e-15'); + T('351655210258904818533038059328', '-317039471793459879795242832647363526701869253095475', '-1.114885821139012575684668438594527497497409491712701452561241865985548506983408e+80'); + T('-1317999447639091934290806166798244489675877673.24510838', '51973652129741187036804.3069426597647651181729', '-6.8501244798785198639385417890806274968448700953804306642353363730416792643087698202422857568078902e+67'); + T('416970579045160473905951389152873165527755895', '900715.23677692450', '3.755717538336730295514426258945023234083011232063852048449275e+50'); + T('337048915259856.8484', '-0.0000000007165482473721426233042063689577689', '-241511.80950813224169860503564044515006631691904953476'); + T('-124735.945324536963828', '43656784749.045127925982651536524807752332', '-5445570315501972.252440976832268388353995138128083224266646896'); + T('-229.309150279271759668506974147516151893493701324327298', '-56277750392608320423429992502109.4808173149501499937169775', '1.2905003122157966621553106534643794501210439187980937861478914275127685562045563793515134308625165671789301795e+34'); + T('-773.26721', '506120106.96085084420866486187778058202', '-391366083034.5187115273789355692667516507815642'); + T('-16179029077993579729752892854', '-0.03205622515938674669127103', '5.1863859898442754973726890489016131925911697266421962e+26'); + T('-379694977175773597575402239067729598591749627164211967089', '427.4134', '-1.622867211576197909699344273675511380147349200949881951741975926e+59'); + T('-0.000000057593691704585518467986423410653803725013114132854316233', '24689.19870977557359290982947617857947691050', '-0.0014219420989240649383441724944840134755882327254494635758934109877771747341652064425031912888381465'); + T('-104', '15074917718070702275412', '-1.567791442679353036642848e+24'); + T('-2', '-971091107444027282033715.48309206', '1.94218221488805456406743096618412e+24'); + T('1.0', '0.00000000000563083386598228603', '5.63083386598228603e-12'); + T('219100199509205287520379236835.595422414343', '249215953689501338499522.46564075955864255', '5.460326517424660882913977937259236613421658567164008732143598687724455221273009465e+52'); + T('-3956981388.58456771827964370777', '-3850656424026801387755000322904.790283281327', '1.523697580370765854419130687951064298276236466076285768791284492428581079e+40'); + T('734.960286303554479116990306863761301115192463389214', '-130000607393220114986132790422441608', '-9.5545283629357036833302332771199553820796316440028291953441171730648555190680692016112e+37'); + T('-0.0000002666120264878701311448', '322570889825538918018562439468.0160867345870', '-8.60012786223824197974573415201224841889283841235410512800651976e+22'); + T('0.0000000004031032595796909999049', '-2712762676362394173603186', '-1093523477307807.4647872649597513148096163370114'); + T('0.0000054604495949732794611395765459328765263001334150', '-298907.681810114352964823611311466161', '-1.632170330074440811222971888249135550087671561067062039655656486575779653557869815'); + T('670489501929686.291032', '627223395167741302962881364608526379428084315920', '4.2054670182466566942266803112300612071880467870075440896463575082944e+62'); + T('53314.110410802505016043147844064319142110836740', '-290216592240562577134439451.5', '-1.547263944176020278887164669780998856796671698801721678198701042353164811e+31'); + T('0.00000000000587199496778346240428737868027766', '-551005.316277', '-0.00000323550044440047912772450593052565891047747182'); + T('-89694219111352199451730456185908593505562.881', '6.32', '-5.6686746478374590053493648309494231095515740792e+41'); + T('12678032520049858276397.8', '-0.0000000000000074933793548296330814995251238051875041756343', '-95001307.14560031424594545397066655517994845175009207951656553412454'); + T('-523228.1027985605', '2361103.2', '-1235395547847.6101519436'); + T('-422058160.089943171946211', '9455722182962.552320564582039151365712747392896268147', '-3.990864706862835827499020129041439986893906907628633530927174587244916641017e+21'); + T('-265.20593471797540408456443', '-1', '265.20593471797540408456443'); + T('-117096397.7', '0.0000000000020', '-0.0002341927954'); + T('-0.00000084780432839108612959331480507149065703369783040', '-0.000010825079810960431632673973072527105', '9.177549518911214340736347681158868989278870466087868848313439029850170283692992e-12'); + T('621.284586089902789096175355124878176656898069', '0.00000000000000000001841815997332304201462126563776625573631078', '1.144291889556362115393585911981542504972877752024640554149220155131163404208000456588382e-17'); + T('62838970696961.93575529768157435967750130012543934643251895', '7799025017418', '4.900827045344027526036434980262455014867740735222443957786401853650711e+26'); + T('-247353051265858.992388279974222435772900701328741022620334222', '13.03830659799478334978416300680018326059', '-3225064920353791.19824546858361898880804876150878659765687851458354866130547449520822131539552091098'); + T('-2139441231754725391266252450690990152166777909', '26220446827901878.81347', '-5.609710505864567774726728960484243595395230887890837315312192763423e+61'); + T('14286913921.940840650', '-1242844090.352406582', '-17756406537257697634.0436449596731583'); + T('2437674767843424972272.34179653188260607311276734', '403927988104479.6110322848268399591134551070', '9.8464506462804905964641906770409128324751565746334602350400894172348609324599790162580538e+35'); + T('-282975256.593232221485634', '0.0412485784400225687488894518785', '-11672327.068171452858593608252189019369153357222063469'); + T('-256178508.2486827293794161556160000481333795995', '0.00000060622407729698677', '-155.301579786376201792071982290374904153826835212494097939398615'); + T('-92215568824012627934.74189852734', '802821222.0162469626002', '-7.4032615652217143799840729492067368601093636437189468e+28'); + T('0.00000000000631216424157187020311390', '-28896.442960029403', '-1.823990939609188046299993634327261580017e-7'); + T('-5868684173183824149727150676541321228.27946209763645', '1767678018.67', '-1.03739440114535694186833871290131127571890503338033620259725215e+46'); + T('-1464504298805396118871695503432730.5230', '2208833322892572033925', '-3.234845896720779321449912432206390896261116508330538992775e+54'); + T('195.36', '-13214599838.47575096481496546334113027', '-2581604224444.6227084862516529183232095472'); + T('-178.8581172026568', '1542628302874005920400457301.7905298303732', '-2.7591159379557450261955452194656628921038300499237551776e+29'); + T('351875781344.0280054729542235343559317', '0.0000178856834451374927', '6293538.83712970189834558679045935052951438284631044859'); + T('-307.61455274208', '0.0000002438400533036931515021270613358401352036899', '-0.000075008748937620515500399556886599434410402744867379000992'); + T('8320.987246030626877296', '0.00000000723034', '0.00006016356692446508273598836064'); + T('0.3178832760474045258804752', '57.66675963865299188481', '18.331298472973254687278485883883193525626461712'); + T('0.000000000000000263835146673878760137331888121481766389116183835336431047', '-2.082954760', '-5.4955667461965393109095371006242790355341756731284907525076043372e-16'); + T('0.000000000233346878395806113798662159173733434871136164480744154169890', '10289471873381.87490244310848109593247868', '2401.0161419951076855155738296198869665643993521903141787021173990086767696510557356775276055229452'); + T('-0.0000000000301270068082410889159', '-18488503331.384508718698847', '0.5570032657388091474587525501237955790818099673'); + T('-538244397964164173070105649994388625', '-2280.52363653', '1.22747907178713620859177763155650252117906647125e+39'); + T('11816719921.6984115', '24346834400764849090360336454820099097991.85306443422359', '2.87699723093810199016709496254407379606350048843381923576632239138827285e+50'); + T('-0.00000000000000000614056701921479118164625780', '-0.0000000000000000004526129846', '2.77930036570313218519067348427902988e-36'); + T('0.0000000000000000000211718849571685401', '-21818432978682095763187832118707.42059881629', '-461937352970.349445849940275487640330004420702796016087398229'); + T('354307691910025309530301150.530797676735046789927', '-0.0000000267343273366', '-9472177813397840300.1738065546659359293415312312254736184282'); + T('-0.00000000000000000001564140879', '0.0000000000000000012127764653067414424836974110', '-1.896953246475399564472178411611564269e-38'); + T('-2192995405.921', '-1492963957482', '3.274063099963661175050922e+21'); + T('-69077326289723825817911969975.2', '-160.497210320954020046818', '1.10867181659309712810734480548942940388027429142989136e+31'); + T('-34636483655.3', '-57826095450336990.7625812016394354487909856618', '2.00289260991541487342513087342333948596839502091235357754e+27'); + T('0.00000000000000000918981946289', '1.09999674198752514', '1.01087714686325481931551720546e-17'); + T('213150740', '-13337847744665673.1379595', '-2.84297211678281928195418951503e+24'); + T('-7062099495908.198413696', '-1.058736021405', '7476899123064.10206563783530116288'); + T('0.000095694936784775916676475094824420202134897751844986130', '-336195659475425245294044969885823799340891152365601.95879727', '-3.21722223808168692686768515627014434144106705991738803812388959163318091496999877734952100401367322242946318651e+46'); + T('26868896167028748101420733486377', '480507267329881259405862882', '1.2910699873389304567069920812073966334143151295977876958514e+58'); + T('-17.084476787578052926829789715003022556', '-42587983371473135737559540519744259126585114576504024.779', '7.27593413339692893938094555667816327719803206600514992485982114723845688369293247684119915124e+53'); + T('-76372412484569384.3511', '9012097234036431278745.3269231299', '-6.8827560730887716103930962801811543430595527769250789e+38'); + T('60654377820540327528', '-0.000000000000015117053045659', '-916915.446964550856786185798600952'); + T('-1331839674', '0.00000000618492062771114573665144', '-8.23732267252668770406834370123056'); + T('57436192370710.8629215108579', '105737032624.1773726358981981702798798174015047365867', '6.07313254651038202363973449861725599835500772846363988048609447329832343472993e+24'); + T('-965563477.0996002946011879837917175', '-4271362438679787505570708994903.70810816', '4.1242715682442838707409662264403439596770359705507151544781327654021648e+39'); + T('-0.0000000316616', '-2.4', '7.598784e-8'); + T('-2.385', '27.5499221426824606177', '-65.7065643102976685732145'); + T('-2266803.57818655', '-765116.77815066069', '1734369450442.4824101199545717195'); + T('-32731559035569126148642.446165008', '53704467616503577993.2664889330721452187634866311652474', '-1.7578309522633972201948025668355694620574985124468833198585070981942000057664555429792e+42'); + T('0.000000000000000022575861041290712552639790861752973874588224619267844', '31.3944076810173444579596934007549380765', '7.08755785280277370389292313902506994649964414578494551292873810891605957242649610987662066e-16'); + T('-11.858586370905899290715', '-991047772227373783020319210519807971818.824767583950836915', '1.1752425604652188758145553608664648912870842306418133290829487635928729138744225e+40'); + T('-2011971696758986575760307857385008882209510.6', '-5525155372891673776761633609.52070459365483366973020593', '1.1116456230453892069924547730202138929609342602851169377795116783945568725725156231784447542517858e+70'); + T('101703650999596029193296586451725488', '25620023337044890752720058833900.03506', '2.60564991207231919895254185864449131548456396842795048651050944069560928e+66'); + T('0.89310', '-4483944764830427741251990095', '-4.0046110694700550157121523538445e+27'); + T('83.0660898', '380025540261.5474990692628313817425000', '31567235653659.2200446528027713580805854765'); + T('12249047873.6982', '-142475289409910528840622723.707048987614004620751135579865', '-1.745186640801000235481534461055817862532388247975966963088442739006743e+36'); + T('-0.000498899320558508419779744140203069146893', '-0.000059386343271843835168818993', '2.9627806308777237249170821580126645410922765507304403542845338749e-8'); + T('-2297433.28538549', '-285796548778125338857408803711103260149820899037579434872', '6.5659850401116294498139439137406267368280581599271391787641901086880728e+62'); + T('34167188438641414252422741077347811417020.59175671639136', '-1876839.0519778124207491962458916326915672158166', '-6.4126313557927024892196883907714297942957465376354294400472573526515361182444034644427066219867584576e+46'); + T('12880636073104135025.684594372389347', '0.00000000000002717486381885835955193357797034462478107970045332718', '350029.53118687937886399193088901600225479341922014167752066254086091217423503253755146'); + T('1602471.60609897', '4948980398.148665647375032297236242244605323466522685367809', '7930600567173612.25671087112877473741757520842649668372026733910210605673'); + T('370646280676040583641049478094.841', '1176.901804728', '4.36214276643352994796521564113760876046208248e+32'); + T('5547404728207', '-411636889958330609055.5065082479', '-2.2835164296592677798830108543636613032785153e+33'); + T('-0.0000000000000000717041779275895653254585995816746449', '0.00321217261726873009981380480107282271306898444464862589', '-2.30326196882768081444918769519152717431393087666881910579487955526028795479141279838696461e-19'); + T('0', '-399327.602', '0'); + T('157.8', '584.2802770', '92199.4277106'); + T('-10542363099197242246550684296314627705', '-4850153229755188101.33556814417023579013954', '5.11320764348234189624759367689059634200461502178300975633252267426243050999557e+55'); + T('-2562650836927093177981.565429254128045484667799300595712', '-0.000000000000000000317395222174952988716141595565429848789500451120', '813.37313174330395999646102020198262859585476827525658527707087140151929076326008633676971110873759744'); + T('-0.0021383531474526630012273967098296654028460337299367', '-1407391260514289948513', '3009499531618102701.7588489539730050863932112182078160238774067897491271'); + T('85399454218074127051769295076.287333823347313330158', '-0.4092038950326248225015994759', '-3.49457892996962542239070012424224836131258038173055372705839875319563364641922e+28'); + T('33.127135132152', '204.48590', '6774.0320419197206568'); + T('-20073920159741041234.22437514622641538676580', '71857.713649597096', '-1.4424660066635461364336974246302806972842556483481805121168e+24'); + T('-0.000007522084816187962395438426656921829236', '256085.25', '-1.926294970674698397026448350044490870358369'); + T('5220.8153048375064912183804758', '-0.0000848053870645192181', '-0.44275326271911063141541592413054755924692197198'); + T('218437.2', '-0.00000000000001820193740822812', '-3.975980242028607494064e-9'); + T('0.157577570127431677', '101.0319296822', '15.9203659846066164839488230494'); + T('-14.33490', '290.67243363958433117', '-4166.760268980077428888833'); + T('0.00000778430585574695128213792486514057213166437662675439', '-0.0000000000000658092384657839808153501892941795', '-5.12279240351449754074675940343526036050666862079292855468757563270534826950003073005e-19'); + T('45215297824632433459231894077144.81', '77667936.103345159', '3.51177886233727320835487431074370227708584865547479e+39'); + T('14342668379445830286426805277231689892104589', '-0.00000000153230966', '-2.197740930800139119461236060924109647979621945502974e+34'); + T('1087327540724260701412332282353.246979912226498912687', '-31181.1155292590461395304941342272532923707', '-3.39040856654682932656823122420611037707430356255272533055260947181604908300590629044625370709e+34'); + T('29098578027968222529887', '-0.0038633633262596785860098746949622820633214200572090', '-112418379199558110812.573170785518748243461139468530838004471322252305383'); + T('45167443.85086931970589523202133', '-0.13322343827726157227081356406399769062787658346986566850596', '-6017362.1680079665574862292748307786959075342072628967876653391403467312455019622919521268'); + T('-1277104346263109522212350488222850419104.598041084894694', '-0.000000000000872545304590848146374055', '1.11433140080444089775987766493651597528395567239169697675262925481314760876417e+27'); + T('347.048067026229351381168979388696389522228278049448558', '-580372453576496014579764354612', '-2.01417138168992971509920131695177453316685553118682774156732799236522441451364049496e+32'); + T('85.9498795419121819013954981', '0.086819059343222766234152013147244', '7.4620876924921221071832372576722493425329853011417540222364'); + T('0.000000000955538852', '2796816770377393398221585073517643123820923752.2574913', '2.6724670860207620944890322427693843122815393358116556452019876e+36'); + T('13.3499409389365943266698006822510800901', '-142605023.688711727210398330', '-1903768643.839955511708245141067882976861272713746574494353289533'); + T('0.000000000000000000780', '-722296330274145516124092200004225017552775396318.66', '-5.633911376138335025767919160032955136911648091285548e+29'); + T('0.00000000032533771679445565923566197211480872204653266', '-33902055423889399559039392315', '-11029617306247268880.3792855595203258365194772546962226666267013992005079'); + T('0.0000000000000000477109133480553184558657389005693925237508746393136844750692', '9544079599812049753877281093753.806913927594670', '455356754773575.186639624987152382218896113143126632346387917730524427522867133635682709085290515537801164'); + T('-0.000000000005212381313104274295521085956757682135609555632962511189216', '-0.20258211424784772185707', '1.05593522667463662312577979622174586506157166623770153687938400565136484167735712e-12'); + T('5.939336816620258503935', '-181.5', '-1077.9896322165769184642025'); + T('0.00000000000000028', '0.0000000807854522591970390113967313771890503193275103759', '2.2619926632575170923191084785612934089411702905252e-23'); + T('-1420735136825498697880142035376838692614.60263288147781831', '4794758649393115914238372958725703', '-6.81208208579077187760278480672518379981721734276502252436200522274670249079192835816102193e+72'); + T('-14302450490637670545279313.292191928068', '-0.00000000000000758231718292500972333975206250950391475327599176587054817182', '108445716113.09624528335189894213613395592525495466249866985446295108569636686802306848015834464376'); + T('-0.000000000008450771622', '-69748785787966613339823993495254469.001291622669751588', '5.89431059605905165095631246704409058304793926203868597659835736e+23'); + T('-1179004888.823228', '49931113655424934777966552716734550837488773547523258643790', '-5.886902710413423665263191856093556409577570847449923030469713801232995412e+67'); + T('-739484608100691619531927074065663059218837785449156', '27.88287', '-2.061895319467253133749818345565325454400115552276670835772e+52'); + T('366.123540796397283114420', '0.000183575228961067940921266500079', '0.06721121282973553030230705091816031104204619829603918'); + T('612.24659918919924258642657076118376830990940740', '412296990330.330273291603849583', '252427430185686.8746606867196534961374184185494504035865409741651638262671142'); + T('-1253.044774927718837481270804718997', '0', '0'); + T('89.955', '3.072147874', '276.35506200567'); + T('137440172231079014714878951462.97980416140395', '238.92817663651290090629461162158684942088308705117640', '3.283832974778000222556804923252233207004641698923980593985160071015425606241073037967932310678e+31'); + T('0.00000000000013007478162945817837283572658276879385007', '-9605773255988262156131.54662615327683681096194', '-1249468858.6547626741062732720588036874502171676524751175204550553355667396106328363358'); + T('-959.0561817087475466288631232777115', '6.5232691288079290675200146125939736359903603475043077091979', '-6256.18158293308052505705738568867991673577610410424533837553637598105441295850976942461260585'); + T('1232651308.483980691765841289013994011162', '0', '0'); + T('0.244059666606121846715993202008963667291853198185038924811401', '-91.8912', '-22.4269356360364638409486745244460821438491406050610488476294115712'); + T('0.000000000000009298467342175115268976111043399158', '298.30', '2.7737328081708368847355739242459688314e-12'); + T('222487581688568714558163241.2498688', '622765319764779384998.16290716', '1.38557549953973970068746587697772147617465686740636673376580608e+47'); + T('-0.0000000000000001094619824042797469992', '819334825', '-8.968601419736362575863380714e-8'); + T('-0.000000000003213357903869884', '502881.861925654510', '-0.00000161593940573160560373542857777684'); + T('-0.0000000000000225850887358266958', '-9657.24', '2.18109622343174999747592e-10'); + T('0.0040522596025230943461061874749446981', '-0.0000000000000035111456723673138306010083', '-1.422807376670785399057088730766337512497448065110252859909423e-17'); + T('50.4', '-0.000000000000000012807615227380978390330730165878274412863', '-6.455038074600013108726688003602650304082952e-16'); + T('34509655900.4271549037478532640245880287700031396795737736', '64.71924', '2233438702537.161140732834214879190678535092737997675858151324064'); + T('-0.00000110516283770184738962025591', '-12341997806576.504800', '13639917.318826066245556761603362081169343368'); + T('1443495892579134888970475033389', '-263878898.64', '-3.8090810632514586354552763528830654669096e+38'); + T('-0.00000000000000000069532890943744308434473313878', '-57497447967704543918096254112146', '39979637790820.12873785593753087723013293250902050457270162188'); + T('-0.0000000000000000007659553263900774084490506', '-46179282173901700884047955896435818818778979617487', '3.53712671499703607070284553536887181481970539221145787819001524983163078422e+31'); + T('-1', '-80.5351111304083830696255443', '80.5351111304083830696255443'); + T('0.00000444632', '7', '0.00003112424'); + T('1748652238406104265.08687786280471813580897620802429129', '0.000000000000000000175013', '0.30603687420016752574564975540304213510233635309495529153677'); + T('605.35473313', '-8105969267.633939755450293', '-4906986862768.52514719110958199530709'); + T('3531.27893', '303826595361824791936490465665622559869413', '1.07289645457484761411696267955090137099952167836809e+45'); + T('0.0000000000000000000139500802384964877256638688566332365116099', '-669823.809722799400662636451451747822858695293904', '-9.3440958912884554771068695881482229864014701239462146074951636707559395049094067886960496e-15'); + T('-14328.20453041484587995049563830419841249274151406721890138', '0.0000000001737045483', '-0.000002488874295905724415190916871212750963235628741729704355101435146654'); + T('435835890288235470264209317728368193', '2502287905711035099019387753673794537858483', '1.090586877143053196441416655157728683500541851046587666747641275079364352431219e+78'); + T('1481352883141719129158247138.8038050', '-606388568.443511765388700681359582935123762319163277946633', '-8.98275454167975836154301999007742562427000217610359536587169076287724303365227616247338565e+35'); + T('-2254195545465844946364682.85626170910', '-68792607248889229037631606.018565330920642673825', '1.550719888214274947292592996004771619292172071432516539437011341424210097883343075e+50'); + T('-26784210511779136785823800676221849936631.56183', '-0.00000000000005019147414519109521634075017431467167600186829521963593473', '1.3443390094013180964383583232553726446281441447994273009124279348757959259512742782394910442001518393559e+27'); + T('-8770530121852166665068897500281', '11987190432239629.9682', '-1.051340147623357682201798135592086804701933955210642e+47'); + T('-392092775092295510505846799423331218731967579086912', '-0.000000001347740911042761337967635461776381177269782335301', '5.28439473916174872080749764195178381030762509320641795527675022371094325058097973324110528604680512e+41'); + T('4015679.55', '4.713361052', '18927347.5882828866'); + T('-908765.598832994503098008148905108990', '-393227867096205311879272472100531195041.383622646628607', '3.5735195811950419553683668422021541455075148867700124530307768773407398811212098138687693e+44'); + T('-2369253560877872972694', '-11.60552475086080768', '2.749643084183325817302731177345942548992e+22'); + T('174098.34305585608863845094930842', '1.38', '240255.7134170814023210623100456196'); + T('116951064421932980', '4525883193151806788', '5.2930685688844070019747986244506824e+35'); + T('600225026818135855', '-127962986020756918725', '-7.6806586716037565057838021298243384875e+37'); + T('-355276.30', '457734732040.627839182124360081830', '-162622301980885708.381620168789740259629'); + T('-0.000000000023259793972698088534519974595546178', '-2551236.5', '0.000059341235365627366949498869167230146749097'); + T('-138631', '2.3', '-318851.3'); + T('795255541856527997999067123124137485004290563483625370482792', '-64991504618917159513144692611330263343972554177.85101068', '-5.168485422178800786099741762775612989901343114104453511664262171013611241941946296162984705040765106162199674821856e+106'); + T('96045012606945538626605174.6240481976236369294325652245732', '-0.000000000000000000038130457744062248428043049303932284765937539238468630', '-3662240.294737062792567245617774026857299030801472930205579945585215779769210281070679229934569639844413338716'); + T('421989371626234493675627719459467707.14836401276576921755856', '3', '1.26596811487870348102688315837840312144509203829730765267568e+36'); + T('0.00003674095297032643311401261648', '-25144265134553986531', '-923824262782066.66182891576601261318521398863088'); + T('-383466.04881547', '53724954971092', '-20601696205553692514.69239324'); + T('-0.000000000000000014783370871610989705993827634590792', '-5.75544555955339866871', '8.508488623824452763835260497721954711915248063842451832e-17'); + T('0.000000221838708829447458147931597976839', '29539052824125603227.9202610', '6552905338548.867330870922184373002548907167329945216834979'); + T('1417021083070041108879006664525950600252.582747034547', '20386.077908379675293435494662791207239424304698951', '2.8887502197282405761889040724952549395790613139212743588512735905545957366555623236526443052831660197e+43'); + T('442.735', '0.00000000000000878277865798641273232492264611347738525943901036', '3.8884435091436144410458746277270504101628377302517346e-12'); + T('0.00000000000892', '16797743856811194', '149835.87520275585048'); + T('-28.32380770960', '3481300309.0', '-98603680531.4870622664'); + T('-0.0000000000002514438408283789730670345516227699', '0.001175682622527705754776427124', '-2.956181542035476048733420921784296951833346097731013663707676e-16'); + T('-0.0000000000000125727922878', '-13.313', '1.673815837274814e-13'); + T('-0.00000000000000311161', '995915309552512177', '-3098.90003635669241507497'); + T('0.0000132726799331352407876197984124', '-0.00000000000000000145179351917753148242751859389117949850796347504360670810576', '-1.9269190709043414470286356436843451767202221286209940752290325354825996720087060259295424e-23'); + T('-1305365.7803110685680577657011785720', '-1.13', '1475063.33175150748190527524233178636'); + T('8499682132744325149884.2', '12753066384420249097484638996.8248053537637250207', '1.0839701048535906248094606671098895649828222408103379536302544124760294e+50'); + T('-27597428686882882379490857905609.4308', '0.001777076303502550583927', '-4.90427365570610811144061901744727200974205360973380987516e+28'); + T('3851.5801', '2.4681503', '9506.27857928903'); + T('-254136480693014397618955753399722664599889.09', '-23582875375875972784153503.3854654728889123761140614', '5.993268952647068812676163151455910299034928531722912670375198720068520525866107064371629450126e+66'); + T('-36756.5', '278541826958821478.87226349825573265453570107573513272911903', '-1.0238222662611921688168353273636837316441496590258406157863626195e+22'); + T('434677757893257627333239169971.36582235872933', '-0.000000000000068725189442692668129', '-29873311257739028.68226613696221684789246137143439950127182852357'); + T('13480614688014170819.34130485033', '-74790845792983147611.766920195511401471625734274890', '-1.0082265743258914745957730201044196850059871310317319787175533254133776825272137e+39'); + T('43288920440971609207698898895824622861', '-8750.436', '-3.78796927827813844188979922058384029569317396e+41'); + T('-0.00000000000016299662731892671518950597', '0.00000000189502990635948720606833476337904040553896306692718740072', '-3.088834834050979272599008422371925718929124189963816260765249621332298025452222984e-22'); + T('0.00000000000000014', '2825.871550945769438271943129439745088808390801', '3.9562201713240772135807203812156431243317471214e-13'); + T('-0.00000000000508', '0.000000000000002145872435', '-1.09010319698e-26'); + T('6668343.896256', '-30256115.746220409', '-201758184760723.915056805888704'); + T('1910671461073245653125406909', '-41009469551.2913732728', '-7.83556231054046679894479520055900512189070617752e+37'); + T('8289.8635', '-66806493292579558025822119188753113864024114483099524877158', '-5.53816710309150098924394843355494049132717469773268118146494087933e+62'); + T('-0.0000000000000005326', '2424634.43200073035390412054', '-1.291360298483588986489334599604e-9'); + T('424284.1840077187212673385', '970.3396784215570868735428784067', '411699778.66940253812593312501264900866190088462962956795'); + T('-35760922777.0406357', '-7761344319.06347958972953830', '277552834840052130228.57982929972823169949731'); + T('-0.0000561650355483525921131526685343539', '-111333300972076302345', '6253038806812103.7204293271893852389242141697156298955'); + T('13512458606466223813008490671514544370375', '764.975563481753223231576796031842139048653', '1.0336700636505365489288540708376614928455337024474216176633151377504345359376854875e+43'); + T('0', '-1183974879.82128974148434577518', '0'); + T('11143820497441188022611097072500689220.103841042188', '14333893036294350850719062076858.50886743820472767247', '1.5973433102598649386055415009433149402160776376532075449909743742363111723311690413638261800831616436e+68'); + T('-23955066895875385312189828216196343.2', '-0.000006008550114741720774296140761236324588', '1.439352199458576433136766578653842412823876234519218069316485509338466016e+29'); + T('-2668354.95894041993791850076178801129928639334916993835', '2120902450621765046861513300898', '-5.6593205715454758964489377686065817529188126202588690397558408061055411762596596383e+36'); + T('-357473707639070742000106223385951624969553570180519146672', '-2880014494.9', '1.0295294595461685945268041406912380369425230533019395520223390959728e+66'); + T('0.1576', '-17946110296096494652', '-2828306982664807557.1552'); + T('-0.0000018223152394757689929568141403865013237549366458944677798', '-5052597332068.33289300934043046685446478', '9207425.117162735564750314224408158434255360168962984445546645230422805472786347453701483895444'); + T('-0.0000000000018113502438791982724283161334170828780578698749690297210', '467569918734591161565.975984', '-846932886.330478617799083574720382758183324318393500300146312171222449646868220464'); + T('-43456291089.3917040495022986696', '0.00000000000000000160606215298685200471957781912132661', '-6.9793504427851792555934505781676792541584728405006755687190078056e-8'); + T('-850368', '-16365313992958404661804115212963911454627853490846168779', '1.3916539329564052655449041845417695455848978517303874852260672e+61'); + T('-573001586626626136559291430.708491137026124496587', '0.00000000000000659091710510594985802988231762972361602034', '-3776605958550.27888864268809093797447339962539247097589384819969254713146626305667085257958'); + T('944831849965628473424387135285.11628879031122854553239231', '-9167656497046734408050.66645416827001933707275561667810469', '-8.6618938479540792582928343057162520481532362870957700270661322678213334143541246056098522215623568551067323309339e+51'); + T('-0.00000026160509100', '24622004042950607868289417294478649240.52229821030', '-6.4412416082584616798891690256590608321239167108346686373e+30'); + T('-0.000004846613578004694945875951019296774584875442', '1', '-0.000004846613578004694945875951019296774584875442'); + T('0.01331120519980531178226823546536111232129742873981595748', '-566030091005684186432778.7962173603', '-7.534542690641137182401329425400191730488017551596028318788787538488664119896612542640044e+21'); + T('29160798123715526401', '81.21430510259265355460162080077758', '2.36827395585454415364839027902703656652482945981888958e+21'); + T('-0.000000000000000016948492474809672735628387832748072035504038167841614', '1562956864069228066615011300882107599329713429.314843972', '-2.6489762649129436461814187882951473845942013738702479876336587925692515948461245980490938479637262418650808e+28'); + T('12.90597368208644830150566402904732366667482473', '604431199603296.47474454963005587100955', '7800773154712085.1940792711683581731610862958146209226570359806010190800492344061715'); + T('-0.0000000207428179', '-197640319459879.188', '4099617.1562541003526838652'); + T('-1', '60210209731827764276966194255', '-6.0210209731827764276966194255e+28'); + T('4583913614531584761660.71', '-0.00004564661231066039596029736975879852374375394905', '-209240127628081229.8988189542842449222791835905813694075712860987268255'); + T('-79843798348570415955954652124494715927', '56861144183144013650375039269786414203977063811583167481', '-4.540009730027938310459807409573958130149645615816392783432439536138537446203669899681959169887e+93'); + T('-0.00000000000000000011314', '-3.526', '3.9893164e-19'); + T('132407155319180608772091166836747467896048163329803.57610', '-723665204004.7159777491682569458925', '-9.581845106573894955821546492296266642173629363834000697071816757006018496183651070616925e+61'); + T('-322521422170779513210597092315316261621', '41262058870589483714064.04798992976852435145735153', '-1.330789790863694859369204982948722773695665386328207265159910537452461498636765724463013e+61'); + T('45.38814', '269533555865235093537499029287212271314833820844669369384370', '1.22336267683091115583931011911520907801556615372327715913294993718e+61'); + T('1001606998247.1329297768570186489508291933755', '5.20052838227', '5208885622264.472940958083743279523476777800178015652385'); + T('-208725364670066089848651768887053413406981733447545233.37431', '46428363895460548499939303066133160314818660457470.1898', '-9.690777185114533186791052743948505833183422796131294760780293146823565795246823794373752025269078880430890144038e+102'); + T('-0.0000000000030479119204492183257505452809182072468706814247166', '0.1831953518167469517279635239571573090896007407998', '-5.5836329657315139902372580139052711078742199613978215448274609146206088053118483963543265377233668e-13'); + T('28.71', '0.0000000000061362523', '1.76171803533e-10'); + T('-76698670010634912042.111088324461002234771829964608794', '-204.3415360766065', '1.5672724045005890926079579860206010656480530112197034797251387577561e+22'); + T('-1524.1774171342348399240363', '-287256761224.40001067164619002', '437830268377351.631000336578138459542103286567115177726'); + T('-46386057531584301786849973746261104490857090', '-4.80529036', '2.228984750949274409036809536091615714528682827146524e+44'); + T('-1333480998557541026668203845446224930066438742734237449871', '0.000000363031301806973352170691602189509034079482081910252260722435', '-4.84095342841206873734133792646560873902386616947445713637359576061752353209536356871478780155826152779923290557555885e+50'); + T('0.0000000000000011328263767573913302830489935960640008976331311323634607', '86336988667731117573.758284472483734537177637', '97804.8180526097967631959070730320562045880918766169966194605514255032840380206192312923918439683659'); + T('0.00000000023383059155254587815392387016693739292933749', '-739769226366265.5531389494840049176644417', '-172980.675813593093567219554957028220425661619804809222561967458157553863975311729333'); + T('-6750356340240.984376193207629621761115', '6785896266076286.1666119258989601680226719364211', '-4.58072178839256802270353210343421354282744424281215396734873712247233250402922455265e+28'); + T('0.038352390', '4364267397803.554078375378060505', '167380085304.84704939994306577393135695'); + T('-3677.765452', '-153097604617851523106898348175.2705689839321002774', '5.630570810474899941481304477948773393614882215140213363848e+32'); + T('3564276717.02076515', '-3724708.5652442', '-13275892016787721.61135498059963'); + T('163961034566390719', '13906850976432268007907879396507766911641292643', '2.280181673656455617109020414398350949017013169011794072158180317e+63'); + T('-0.000000000000000000097053790888310241217758521607840846169737665', '-174167724848769605456951958316132823954.290613019997555', '16903637946965240719.160592454311893126986143375067836000624105979381554916207439134564513291409075'); + T('18174121469196263476021234179885', '598847655451717090028982590433609440', '1.08835300317228983812760587141239606682288560521096139829987941144e+67'); + T('2862482160141173353.377689153266444043', '-2.5521116576031457307341661427802694156525', '-7305374090577323175.0048432033414644577500405016939717138581879110681995830575'); + T('-0.00000000000000828251723257466281232072431185606927126573858797644180340', '59246603229200010807575028.948615845949794986267082749', '-490711012217.3627547204685981714157886628710287556950766147835640216213833020293343764393555822441764905895466'); + T('-0.0219725', '-42388.442458578279694893', '931.3800519211112505960364425'); + T('295211627171624947864455852710547075994077285904641205668', '-32114221914552039416309', '-9.480491706745564194049269607588763971795849392568309012222499652763032742439412e+78'); + T('18076895076744235516275796550556474017044744513472', '1110616783295453.907507694897679', '2.0076503062103110248911265925095057715921072859968017387492670202835863677031488e+64'); + T('-30509248597412319207476984175234018573.80700', '56489216853846845634764972404741.4102289', '-1.7234435600671472183595024375663260504322309432173684665884657236439010994144223e+69'); + T('0', '-37.8349097', '0'); + T('-2851475309', '21590640', '-61565176865507760'); + T('-82809184867575581.300036713702885747495702565', '1983849666549698977150.0321478', '-1.64280973786792195412167897641267648031706071732558941631564732096919107e+38'); + T('-0.000000000000015392923450383', '-100527447118222995497036068167.83978088878', '1547411298153231.68196185030647190431319404613997140274'); + T('-90815267.41287893625890527712', '-1377.468328268', '125095154584.42972566162438210224966962816'); + T('-61531326072626014632609689592827828109737644', '6514.9664391', '-4.008745243164772945370376441467418441994843425659034804e+47'); + T('-0.000000000000000127087490497875', '0.000000000001476615944219678865852759023586345893215179308071704', '-1.87659414780029158895646469218881896708577129747276999389159629e-28'); + T('-500.0464508771550', '3031251990944702206548861174233303005657140.843654', '-1.51576679978620832480902504570356096303779609394637710501532437e+45'); + T('-155.3658', '-1.487280412', '231.0725110347096'); + T('-7246163852901276.04365667671658743999435118996620258393', '5112736623675367552557768126133416.065405138439108', '-3.704772731188096277860254002053708999588540456247342592474290019026821786006110036086254157751656433444e+49'); + T('0.000000000000006689933708640329486606383032', '729332114805.1424421852307098335222592037429719271268', '0.0048791834996288611343551405747438154907187127049172382481758395023666868320324576'); + T('-1.8', '216561.426678096257755924379012116313', '-389810.5680205732639606638822218093634'); + T('-8058045.0444', '1329279770290237732458883752.79771', '-1.0711396265608420509738201250987261701168324e+34'); + T('-0.122934172485398496827140448263042340165490502305', '912702090990315108628442662833971663.8', '-1.12202276281587270916014575371637467822687977597732727219667936221931017460398585059e+35'); + T('0.00000000000000175417191262247437274343236218710277615977753', '159777383.0958810142116283', '2.80276997699115404345306815091460487951017642480659328034789667052099e-7'); + T('1.832596787409', '0.04233218045723559484149346857663058272000354', '0.07757781790994800381556406308518949782645811636510742786'); + T('7764032078986972842.005528691471157135', '3814413634570635467562869035571042157068430937090750616', '2.961522982133170619249946192718193418202399599536127455799771152758136779037896695123404516e+73'); + T('-17135339502484788763', '-115136630978196546781', '1.972905260983705133684367626946832621903e+39'); + T('2732768992944344069188.78233921094751884724609431', '547802187776316166043551795761072525805362767.4739838', '1.497016833022191997667345517507111060165004561416898656598340429974721721725596504177233879086212178e+66'); + T('0.00000000000137207147854597410975017122036947235', '-31922289389067969062352250596.5480447', '-43799662800630948.884223648169873969145520154519727429336909041963214045'); + T('794.15', '17485441159196003764239999', '1.388606309657550638937119520585e+28'); + T('1.7375578177138444239721', '5', '8.6877890885692221198605'); + T('67346906173389358', '-466873.6162827458603696333231123965906193638807697765', '-3.1442493630625071474606471872766565213027787746877671241569093138487e+22'); + T('0.00000000000000008330954900095391223717198750270140816415917', '-1255116.84123905597608550718171171454784329986782439', '-1.045632179871276258673769748937031166781342825771332297107555550761723897353461461042815681563e-10'); + T('-149004811516278801454193569023908186952042538093822927716', '-397664736597845838069915', '5.925395912343267570007772381296883214350181601356111567003076787081507599926414e+79'); + T('1000073564757252670366408149537245435047377806404.1015', '143493737303.17', '1.43504293385121986151561356719338126856345712035100585929836951755e+59'); + T('-120791171186.75073588795', '-3356641846898638185.78959337380788876290302345', '4.054526999413445597874488228850145076904199735090551400294754224275e+29'); + T('-0.000000000000000021645765186475073728477012180542023658755317897440133896819', '-2892.41876465002535699255875339650679491474379', '6.260861740056875851324591106893702672467555630128663303516124593419559504118801178122464786716968100401e-14'); + T('303590.733684425609632655982112479958446', '-1079042632393906270486', '-3.27587344445239960885966209642701728797406978059884116224756e+26'); + T('5560006241690.3561204958103356609', '-26134.5', '-145307983123456612.03109775521732979105'); + T('-21241252966066639793327', '-9918174602168819276153472753.0892247103917800902408030', '2.10674455686285247587982556750283161206049081499338374032384978521582521581e+50'); + T('0.00000000000000000011710898531900697150827118078795784040', '1416082645912.362', '1.658360017906513490504921316067138338281826491830248e-7'); + T('171974954737627841.3571', '12776560683821406610094.4', '2.19724844530274182316145798323728537865511024e+39'); + T('-0.00000000000000068754763933835169744516274824757850275393656608356918004', '-6.09469365736868', '4.1903922366142608309254800108912871683678914634852117466941692915771472e-15'); + T('0.000000000000000001400696', '8637225390591.816150963722258184', '0.000012098127055700394515390281912149296064'); + T('-360824784680774106563254315862091.5', '19099425092005944.36343728914640', '-6.8915459463496190545354254880571561783649870472046644721536956e+48'); + T('-61.150780875663855271841725817415551', '-0.0000023333939193095575001578508180794664583584954721238120', '0.000142688860256305217839982589618557627868898235253332040049384167607214599532790926200412'); + T('-29783331896.867208404770028328881856', '0.00000000160', '-47.6533310349875334476320453262109696'); + + T('-838472500998941781878534497598346150189438395681961909493802795126225423951505690327678802846577883568622319410118', '-2884829948773734005744162960155700874127.0681001892763437635520740604769472972181496111013', '2.4188505821049618555759179210300843443018778137981932674088381260022683344838428233063800820435344194302980110031387348601685636929132993133036482870813353080292469079495502993056630049417824321203429534e+153'); + T('796691.919974655750', '-344177691021', '-274203585471964324.87434102075'); + T('-0.000000000000000000037241136189493487515236242635317406', '-236633306915237035867656873537286323242534.531', '8.812493209800553514615822924219854143174591731693607256359134469397049100346586e+21'); + T('-36918999197803067902650019640975752121441727061986591604616945161242737830954924822209930.0610216157567', '-630816248640.220238311747288806', '2.32891045775094316018876017621573827476363455570577127733350185252461212627985116895575049148402627634872854943933909453127151295002e+100'); + T('-356285686518395271578252895087932787716516776378851836556183.490949109645090654856023328687155015449097603555460351788748359722414863145', '536192552176752561042209607723742909268910764247931780563.2', '-1.91037731558344763167084704445859558938320679866577929319697485737868113003820206731226346686676150919266490086231386325706954806002421869189844369048659180671649946432503759091893660299023264e+116'); + T('-10868240043.323', '-0.0000006987483137538548533133640114148563911523216092560534998', '7594.1644037440686677326890935142678911031312404730399664663577718354'); + T('-0.00000000000011591017649385438295796980510866337031921451760232710693439920068628049494341909991139678975519329366780780539554769715433124600', '26133984739171981586185319', '-3029194783605.121387520277919164440375428744596566999709645269433197968011145816158998774967743687046263521357854521385482216635698201872145379668177474'); + T('-1711273540905209744011506141193.37033113722759550410761924564724', '0.0000000001293732763469758906747311439702612890496046217356893762894231050676460791112722303394750148856', '-221393064712797651093.576041646381279748254325855686348423517448454794870494445248164160406818767744894597164595179089851596941716698075867505673842006555744'); + T('-63062954745.8598353024049107700099585768452939988302739544094597635', '-0.0000000000000000007066107653369429290153271704760473112899492658449746935736601687393998875372553088763481649809909245944916440347928986666226', '4.45609627173810154902373805273164378070520471666107189671611539018934456392187448488034184668558120645401564953529878995106460890572197110823797727327567501341707822274253599872751551397551e-8'); + T('-0.05396306543212365254900360568584', '0.000000135925517648212', '-7.33495760274574245053942000380666682810971808e-9'); + T('-51311181621759783527978578699650628367670018837603370537970304306.5', '-0.0000000000000171073617238152543', '8.7779894447982604608252727389859997980275463423154981803549625152925376395768264295e+50'); + T('780360810680597937530828803485426316757997822572046380524663475663587783713055764905934635773988266249773631591980851269802869685048538490187809566', '0.0000000000021114006241457087', '1.6476543027298657092509209956166007749872751971298560901265194443520620935869459922698982198083609063920515096925628739206594316734184930365483909751507976717094242e+135'); + T('-0.0000000000000001558591643933212408712480642149933587830724439341932663613727360989832586450936995132509861377299507330923270242750447693180038078839868789871', '-899234589140276920.9563731186', '140.15395165697510406375504229464266777072446771644043491265354600675571562268623460258428521212930915552512830838365872392420849552201444571287189837930690619037363617006'); + T('-192128620208427347208760897481755790502927310252099946847941391701541372730741701901004842683652084499599551669587901.095113423628696460069833', '-150027.013347965686304316841127', '2.8824483068535959518771144524961420793873335181555629802553828843970441540984506755823649963472492988719283593979140183046911245632653583841810467259116227616668386421791e+121'); + T('-0.00000000000088119558575179620805745334627526', '-2342970366196339369130467230746566743437618438527.293007742982263818470063380858096529305084867946540343494845177603781376', '2.06461514423948373213684382167619940227586580537675167441830145669955691286212463457073538034124876268856699464885544965251476720909351479389090095755776e+36'); + T('-6635456782135376051461227670659894416124826680462504047183309508524677837974389566804395212269550349799505694436932101464692080338', '-36033.774951979165187136955049120300', '2.391005563910499861359276356470099138701070047532575485529233046218042255556441673237652214828582412128576389116490428262479007258867518065861096006448051838266614e+134'); + T('1.0795693', '-0.000000000000000006209261744497244037804821960982585015091967690457481640260325487223225820327780029749670765451353356', '-6.7033283550236685978221251810425966169333249952098001341386914040137368425931872572708312434887817265895708e-18'); + T('0.0000000003205206100151839365357713821428922286825107015046701389076172910755564034571464044704259976070021361285911146439621197151315883353504731', '181280954003418224438635307210393590651533286700798186230089972712042801144671899167602413575288941132381001', '5.81042819613101098829202896183160808144566548341644020145672547798396356491584355574818346795299101366223635188614907521125965341055497357077467758341149862217405975928504053356664898994511933823140023871980627595465353142713441016064148015731e+97'); + T('60.273280', '-1948051519028114.87884169', '-117415454660806895.9645912570432'); + T('-83193336723730904831044', '-8597513002342', '7.15255794190492657393641372686305048e+35'); + T('-20357731434704594485933.435192883517106779904094737872189392050585959795325610691798979690389882855327158774541534046886050', '57101254487124.26556892385946827693467498483828207557125700861375680904187175758285473565759248405589101', '-1.1624520034335964384881547289755586531335208559562766632031511288008463494925147406785220580646246607391536758053170339436847553410796246157934498139151632371860559137134623242512914876401966834601783673486087092780486894105e+36'); + T('0.000000000000196393242447331955075189676455271786947264076645295021258862881929479958110333580', '194877.520544633956108976283205922142563827316236038257841914758325718909245819798140', '3.82726281398572106089641076236903647054748740721743415697957940132522454065934785001420361718935697399839562856732355534966588993484025198806123215220764836635412e-8'); + T('-8071576425880681257819461150', '-1591541556785189268475083517665125202173160434133152.98399538151538621882421945398094', '1.2846249310556773308688003659431424152963795381736069812397375172279784904016650744805487687134414853173170481e+79'); + T('6215707454580399344821610342', '145319540897984402903779835609411326583090144758472486922947576644983828825850438698150473186142966520100265693', '9.03263753655802873031730925036374079283112281131923966584171630907427735951790460941752213245331152538824074995769485027917034562316597006e+137'); + T('-129348079468144673220614626836759706', '-88248178940421789818564716716211678654401184759743634646878788943183256531349288163631708018145656009375447214258101552585320093130', '1.141473246250472885515118898707262713605663944616163164881785239559268827685334536245384449464192711247404249908389352393586709492073897298343118518559610042335141978e+166'); + T('-5780259200186462371596484655187034250137478170873403737601291296553629304246338.1', '20317804349924669254706871559', '-1.174421755212405947511968636545739798982946944457429152629522410545955272538056812944623926565594717327880979e+107'); + T('-774.0', '31209403299230592237921875076234864775333333322171087161573695825372946329.47956111641', '-2.415607815360447839215153130900578533610799999136042146305804056883866045901718030410134e+76'); + T('-35300012822981309972161307966314653.5746532880996436', '0.000000000000000000330318102723213448', '-11660233261792292.2796305229097940998500752778977839907195278155271328'); + T('-372377963884127526301703864441812802765174863559283045963633022003526893443086066813180.3717468998054326701855782319548515', '0.93426382293185456943254764459757361885785459231935724261799663689196168735639052920121741580138452492', '-3.4789926011396505505944781064660804224349193623867972766690000964018527357693140898258100416659583488178405935796093105315794205956790824509036660608118406568210299647359494344226952122917410385314738577518950473221664938e+86'); + T('24266165641723085835767787003697599948414575.4598063181549354935463146230534386950113305', '-114046436224578769506685348541641847469702436631296179876858707928490406027412029206934467.22255852787626', '-2.76746971227383645895497368320257172653365323571255355106207704032170926692669369847993108061766552826817226048614230592101594822309797349385303976310250855456022415694582167365528080196393e+132'); + T('3296856412996342216590213367517526056709903701721644610.791416', '-17873043539632614693589701036988.4471469786937536273599351623416309394', '-5.89248582134006296943775735259576640781981176325731275908604121314963017378308625998703430431944837580972601701118670108255361904e+85'); + T('-579102350347312720630005129054780607559620407558223441199264163920137899902249163147321939579047776302298780448678174736222915', '-219492399337234160290652558813948662413370806048542871624923.1888570368753037439767245955297245131205931820059590', '1.27108564339563247096015910701131062607103942871909341223369812880561545119021551254208157534581993545107836369462180155951136922383213991699434467561508645543330227906067804094605876984754845169252387320636979899325902200224418682350485e+185'); + T('-0.00000000000000006163518675166495062601637166684339458092498600493044751669369089730774084108109728725760785705955545530', '-0.0000000006634126736829635005496725883566808801526308721290044433770358933738076656970776547028344255382880585757916925487', '4.088956403587081499616844261176845350066362599955649570127728925758519680545486693543687506509190342330458809847232254048349532057461695086500962967500458536634636810198879285867211023138454828380781894359544592311e-26'); + T('749330908047468986174543866383750336261268464649133307531895834594094676053587911029106522535833685617906328029183872567352948262609142814490', '1.72', '1.2888491618416466562202154501800505783693817591965092889548608355018428428121712069700632187616339392627988842101962608158470710116877256409228e+141'); + T('-135986987299837104129797979843691621285208421388144053924300522288644.5900287109133895483', '-17962494534979782634275.37015590780316964667993394', '2.442665516201689090665690743015967257236753951326674341795336278365795371226492213646697861453424431171591440002808134392672856130439302e+90'); + T('44006442863122570049153802624466247185058307274072774466983112669894864433785226136933.2', '46790892915789.3411524668861472382045424537291525565291001608139420856967742081828733644952251814', '2.05910075561317027401508721128826736996297356066394448240229549087424917958568533386066515904891204498637800861760830895225068854234088512703986966936540011209421699582958756520968248e+99'); + T('-0.000000000001357086727370149233250058639705046544732320894727648668175942', '-879468576980759082.033452675408474697409162575095118715838878', '1193515.132959700504049250941775088529954670578739886689678357661665327443107825618722158521731867085586347456416627873076'); + T('9809841.727201839210709', '-0.0000000000368880827799595678609037922161591383619613563735115949331671506211385891506096678952335776345631106186087', '-0.0003618662536913229896876574465145932640958294417169072448132935373449094813864973395333355003851497225742989014305327367357205683'); + T('-126.76', '-302985778493402807197323438', '3.840647728182373984033271900088e+28'); + T('124867100493.457541072094721668121610280880363817443143804305', '-2790.963779772728898849783002651075720477860575346862492661675565992697657575735773', '-348499554762481.440673495837344907334116857684623288727299421812123101984255650489865544241755462317555675735472100548275529499295106699902765'); + T('15521419716240482198113978224037109244552806478255554247304501803343108406125114544385881082700492397181091385635182384771169625695908585249481', '-2836586261373793936479454372136.74149007596046739828188227468752645', '-4.402784592410408295066853625044872038760273286404138338015606642746110634158840973424236636715346429517243853338608937452735485971423525672323975187535426255868008698725535902235665305652922137074089203627245e+172'); + T('39568702947499980.31043424352839120626194373', '-0.0000000000000000110532060314654733243303464490568893422715164279635383512851140023129429730151730074105250113850458826687408847800122155909183172465757401122037579', '-0.437361026076572434440085826634462269408809302675686544261100147571961623746441124718245098250484230095790472367852085991196762852617202769222972427292049884929603478563067747014298264342967'); + T('-99609250253802741981.4964874360244285', '883485457775161795418874408210783527590114513274007831727657306342804460473168388.873823683132057229380427284612779592765741821135482015', '-8.80033240591215667544412145489909369089691076369957723858897861506204032139051216834675560840680969094658338799237500038744626460350984691160948888063757133290716624034275e+100'); + T('23.384657', '6358331922737965853097929789343578523627007160605428122392114297855155.13891249819092314840480065973772043562526917541987676891872705', '1.4868741110537783235240747553388183892758395838730184898029361236013863860525612320785833880636058134030234898750019986664922343269294087185e+71'); + T('-14723458729544396106728.8730102546343094999696645194153', '-133727558.268817344562', '1.9689321851736756223818822532522079871040093348444209468925006088388745986e+30'); + T('14302541264229922914', '-0.000000000235627544641501596076737344190020766746331735586147665546911192908467378811964334722559869070841801090200096029602404948591646484821330808', '-3370072680.224254836492035508073157091195119213264445104738613033613662085628770149276109216999634545944893478819818145213075837742045845104662438460733334512'); + T('11859540992913956563027495896462810455142079490183890981402926486193538086518056969511874125054152356620542433.487767032922718042853047303427', '955192395684300504821406379834312349326154.0693', '1.13281433727376500867653857943948863816132096768226862985682668025650778093862402486711549896946612114014654961667306187363301784449098292029152064116984771872264804563492799411078854911e+151'); + T('-89992.89188302466393156671880484242772885323991845613962309150678501746987154469202208826173765453391736170812306681487216203314', '46028644449145217432303817391775774045082825030.2022387362122235067512142165', '-4.14225082343410889148864685916871924839200546263861436771489245494114989348152499951206927264038619116817258198774738485287373362091029303295538404627178066368057815540301560861820242440073822631213481e+51'); + T('322550604700426997899532770743249875139977021368583.850723996627574052487902691354294316078353979975', '5051247930821098558310030929577132446128131203947693097941889018946508950010.817010609850054994957659209938580530674194319', '1.629283074578125979757678549954520448550932971582730260571009370631223791910921098102919850864213539220310377679206053786662498134329234965312607315294965577812311728138336208121595820208987331544983981561498920184762025e+126'); + T('-18162869148539225267245', '-0.0000000004082605569565299430913769521458041940383792216884928840151413981544379047647242539071550738140637320695619458956310444200164926', '7415183074511.198888443043591378591772024538336265966741297786740921169768779262078997101641290939777807031074347273941892988987901012164049542564887'); + T('56.437', '-0.0000000000000000363636129586261117394059679281224058126111740191432401889546', '-2.0522532245459818682368546119594442168463368281183870465440307602e-15'); + T('0.0000000000000098328737846670488651996142598', '-0.0000021680510741625274383109785118138365114445962436956704809668310586255130207174432385040177431879924758023695894509584', '-2.131817257095195181206361651183585087468603124720413551197211179755387449478899738202568963063585962944228052493622001429362279056649894941659232e-20'); + T('15353773892289910580447352912374084465426576602840471898589013750906506890933921327042063374884073.37459230997064', '-0.0000000000010024383418176318716576007775600816833200531168899324061052647625728403071186802669732334255658386493460274446', '-1.5391211641229945537862597203687187815529728355277111549164845611017692299846743962405790219289790424490140365517893874940113367036665712735367218576203409806863531895103340714121294126379877846187972625242851311660226544e+85'); + T('-131317855179200803975486750.21706572131621841705391042457406222193797630804760305734762283213938032', '0.0292170474534535827560241963251081294772380763588549279699135998743535144719442580701100219852823099329042846816782892289228', '-3.836720006256455223034915613925802473646371948151381349060669000949432685656690149745351896865724762974757845038322594373778118540209910046753684013004635293983638022635663512882017379734293615901239976258135149413119296e+24'); + T('-1.2652', '-11354', '14365.0808'); + T('9907551115374943050635613568695786302517118070997561724624950969636860315016878905709.592450615294116872101107020677899332545772518264112371602200', '-1.4', '-1.387057156152492027088985899617410082352396529939658641447493135749160444102363046799342943086141176362094154982894905906556408152556975732024308e+85'); + T('-490.0344807942463855', '-9323932874.185090992679891416847', '4569048604961.6964723167091758356936009232035565185'); + T('3604969916487266.77582902266201875313967241643046258256599229303814897912723083869145048', '-32491432188732331176981674049239559807795.05', '-1.17130635583966083474238734587571010296057134092517034186160396265057194098968738205898514560270240397013328401070407840495064124e+56'); + T('34703234002309873855644196344429559904012545590136.8731266774035', '-30509195306542390332337786607824589011847240852960.400475884124826629604413425289601053748170330700373748814', '-1.058767743945114695217780865659236851886438030887854601194770945013467876376008466686358099101594157300090732314055284541644607734865797363613111496055241101601318724449e+99'); + T('-0.00000000000000000001846850219978014536016505660530611315774081617188936233750581313204111802184283556512413812', '172294.1773686139898820857102416866146212540421600646329719718', '-3.182015393741558008777043196173134950988956232467393142872076553361750999454632625636035727486190076054675229759462180914335313087408443832697591945016e-15'); + T('-18106034022632087299566240966', '0.1062593952762739525593394732713320570280318748229897368327', '-1.9239362260965274886455362609833980864707868629715502819707822658572629454695338283882e+27'); + T('-15954726647545197343337193.777996734931237024726479085', '0.0000004481748063179037', '-7150506525118665829.3250763667151579960827175193664627204716990941145'); + T('-0.0072925304890', '-1691234031.569314001265549', '12333375.739253610871043600667823461'); + T('-1865227748847755571775855702643769331381101998226093529507611331692677750602855545329939048493285354105512957820154901.7086', '2210049489063501217982642732440647263267341254731067280328753568541239370364.8214774408688801128406378268765465307868425869089870377072', '-4.12224563332804677406698803644377193820506176786228016964994619508823923498100669710299638948960004422089468802904369403398678960200548365227202005570666224092394691081191293375038692545892613850007520900934668836420552876480141825643798919514009790652192e+192'); + T('-29657447.9015389403059670276084073033511112446764971506273354986137667779619286113465', '-1827855316102176003105358531801341705072592351.135', '5.42095238088512761081531495719462889138251775255086295922416345110850703827501143639893274817453208270263341869965571991680731532775e+52'); + T('0.000000002303893648170578350944498774746492391128813731693885869943488294353601573494998681870582486295872268039945356590815', '-32442262.91320156091101969855721550263008139081880143903731313592785661221100831', '-0.07474352345800499923522516975799224318500890706048459253531640566042618663498550717397089326803150428347426693483873444675443808499665437424291063143582928567184402307096634148635840535523467265'); + T('0.0000000000016576004870465706885062', '-55848857027244311015.8188471734270775276780246873885866419886637427519716023962487120351937093495264631807155', '-92575092.6093544619318438795137350300013067044584954352726853911684860351652174681495037636300286854678776361173457113848293421861'); + T('4060428408888.0232603235503282900294503488016711959024243468046984749052603493273497544632749564430853860097672053826937821420346478', '-56342167050275452604675195079699398.2675991078629882729119248786198064047635210295605913955475957472202624', '-2.2877333570925316685876047368022072172371889058683599394540501407358757119526517889443532452252466779232915679501821225464672490791576862382231853032125642473217365895411111636095821515831491602289971848581424815174345498160459900758272e+47'); + T('26299685148174659.21498806517835627517278416660123809400463889', '-0.00000000000000002810938946123709113663641801589824230970112320150509166', '-0.7392680925379544113700127042857131426674666337496775201943962811858815880839349410511049278268042443619259946506574'); + T('-0.0000000000000000000237245065931924834498369898311931358407431388348456381998654995741405648243043023156623847512508812546011581686473004618459451222129595962653', '78470.0567305612051127506377842349815403261', '-1.86166337827238752251588053847936462363465535270736342476553827797069992977676755247798085804488792284146627152984361709483184324719876052483334166262924374381677162633704456690411433e-15'); + T('-183824463031586708', '143807363604069401113874611858643135635193494053567940110697592615174793997761093.2327486120912246439210504605813271646434876', '-2.64353113945062034769011701589673384301679059470040712450349324003153646920125387527703799373682836286840975022033298195495859192205669228208e+97'); + T('4709101207483984726787440699170240831795242716.2138423114488136479566547686742376976336667025624304570806054934', '-1', '-4.7091012074839847267874406991702408317952427162138423114488136479566547686742376976336667025624304570806054934e+45'); + T('0.000000000000000000038532944598313834956548814879372', '-40661.8380161978165598078232608918885279594361853172147', '-1.5668203515437617982746501980121696087743512254235020270033803551407710522231355251684e-15'); + T('2334886001264116563500830341789350499377618860287461405266703471620193083331061.9777697176990366889825738659887530082768575891812891822435971810032332', '26035538.8683211892476845585304290220478694825782227287031175818318794980679029048408253481320254733533048872460665035942196191856378829543', '6.079001523901094420088368729082607832663817841432796296671692743644677805701345873443864752415327061436957752682222783317280683048921810139315200905217552914921575411464462577484189557662106960763012918216551898062340176680217599395447139612485659290222974247963252522982643623146784276e+85'); + T('-7778469807.563', '38672644915681385296338808681298386088589', '-3.00814000855232415447033790891667731035489355100198607e+50'); + T('64622392353741.4865906677596431143150394253242646025467', '0.00003378584792447508795371328648463423391931923728963301558475258018764078318119181', '2183322320.579271598509382338738236518894882788661215479990430711558769726756727680434235068590712469349522851338102909922320467182527'); + T('-0.000000000000000001648136935803060530512720919823086792624816339685214001103485134801966927382343845709538610434741849', '-4391532746732420685914713997682658712351988556515487377264609238454668698925221533684202870806667745235943356', '7.237847324678369711768998633093781574995948295740118328002527697546317476553671589822452609098233955280840336196399777925163783629478472302267347352300512328538053758750290707036775767388047947510115846705244e+90'); + T('10333000414188250420538344710287739407808614536951039.810025625233444425363102180125538936079684897578202747788108257631148570', '9335', '9.645855886644731767572544787053604737189341670243795662658921155420371076455885147190596830385851889252265060199058498677190095e+55'); + T('0', '0.0000000000000601453886227057059980502655211529623918792629968455990334450008543269999122651600055853233978797789838530557724224959611814658608426039511317644', '0'); + T('-2297750624251138979504978190262936680523712405752289172826124262469129120913490453904199762531745620.96952540734690968359393491107', '-40416204690650952371389732084289462889292036515283404683019111928741464.2687913586781776783223', '9.2866359557805037179029429569778710628234868409496948754232191472442648400693401233340833685175058579432758055493241234301333517014914341123314199162326187649292261109846406979086483744843709435080273472996954914317297861e+169'); + T('4343355589964158622184590891340741623549153108779.436816', '-0.0000001064974529896251240308460910120111005761688204576301219728', '-4.625563077594334790148387774508543628581450404563732480957583510623242646260781687362461885461530966385708706048e+41'); + T('-11563484501688268.66686509003783', '1322408781913756518185807148018074515.664891437493116279057', '-1.529165345455618514610777438327506360176848752673257181206491978239020817017600896672631e+52'); + T('-7105422094.2179667', '30559895492351516.966189644412389996', '-2.171409566283465162387924857949138932897137105411332e+26'); + T('0', '111016869919462691384357858914534606927438531477.1293238954660357640541427103317553925', '0'); + T('0.0000000060932574133709382983', '-22.267165855523514466854715520800113116277499916129314878467293624269528017916046898922489352991777889888803407846', '-1.356795734239288861313869942530919648656125995428613119992994317378914675143711278820250703114800246598130872149242193747276361084618e-7'); + T('-44333.76', '-0.000000000000000001470079352177070580940', '6.51741451803737246384545344e-14'); + T('-21357371607823146.894996126592622902999367699791992019397626730636288058416175548036595334380731548047707750374539844136475793453543167632520829674', '-2082610833875897815259749572708491274194096.1328444788624505568347915241817370559885019276541831998071798466253171806140327187679310', '4.4479093493565988402652146155895503067864965364415050875276153305362992271006919883790488712645218749008589188930440013166012155736226914204651235463946650075417869390037652928234175055618130254249241986895815834958749240488411354040161221049340462201305247819550627184384494e+58'); + T('0.00000038779', '904315692695033441415603523306856029010929442362969497588323373295.4261037009085085062076151428035395486146494122744116706', '3.50684582470207018246556890303165699490148328453935941469775920930233288754175310513622251076227784601557274895585894101741974e+59'); + T('-108092399126602892192263936618253.11634898323699426667272696837431678187861415020697', '-10577768091951217923840244460858974390254947969430786022673684947578297621240080038309605361343066868902863031903186141346699486064112972330793516', '1.14337633046383576973976076259460800215089889515619540807214976204561990493150424651385392676061643973011767877937603525233712134586553308518682088934561533581793269433365489470332685181218952765840412804140387512176915573400652e+177'); + T('15467641140816407251201603.17330929847758676216749067445955101305983585263772950', '-577622788567995038.889222735426051145123753952194531865720030753211409854898055689387177412129339425045834175708407053831', '-8.9344620083274171838850431285315863222279965262274085151307500736726521153163765171506606924039712216379344449734092210186563577666902614357166638103925323472931546721201173791263892223252481167145e+42'); + T('-147577569629276477202061028275376955899710718777', '-1836553374816.4194414', '2.710340835498528403441827678365194491127557859039387630435108311678e+59'); + T('19607260477306481515065963386476904146461.13', '0', '0'); + T('-7587887623467943790564171894728147122394166719543547263769028178587424899740120.3214878', '-0.00000016920971191816124290279600506057889818397766687630546391612272642869578133220841440723450090978526958058420544559571', '1.283944278834391917935678304507329917170307310293334436436941584511090251795678415124232910095377726352226968886370226267649132152891311373385442150371798069034937442982381537637461944916510337784497338e+72'); + T('2183744843588421584150515470170983080333529023791.649929295654521467545253432380589261845763800323659', '7388076664655153708968991031349105352802.87524801859750438051677178784807521032697033391834', '1.613367432047663606017519920365670781068592286431464441643858801885153492675086468494328491512664083724900475004088922960826586460789211331922609342243762356185315284210154800101939767600606e+88'); + T('47663056245673578412988857668839696666285127435258253279539956729954000870254229114622792532345', '346546822020292249515761823895055766746157088669680742020667195407870883898961673353876509569868596891010435068343.891429081941502924502622209358', '1.651748066971262047841009039410535405983991643212862547257807586948128858978665397570993212728686939913279771853555026022126342707912524337215453128506654700200787070955669974964782729940854858026583385489299889179192801828417090757668451e+208'); + T('-108127035861913115550264284316138800046955088009916843670136654902573526429629906417162564166515174290526454135619208.14401004096640476727920000', '-41876811.2693259587009484684', '4.52801547390097523332116417273670654479155983631591114406304348746150113439265113473586255636518700022503707400603551613864908028442586791089724406027095241367517728e+123'); + T('-22930937565270017519558999696163059408815.2103786274010528531899481200409337071', '442710909275310619619476456914560821720723777371027183.19798799', '-1.0151776220056066916079907416732180895063328275280083903607063874114903814021738290370272558746844782372813173058269500111226243281691977729e+94'); + T('-0.000000000000935', '-1394991975035345206923314783009363790456653341293996952.89914882995729104423', '1.30431749665804776847329932211375514407697087410988715096070415601006712635505e+42'); + T('-0.00046024', '0.01162786573878994938984477754797863400638858513306671988962769958859110982', '-0.0000053516089276206863071821604186816865151002824216426271620022524586531723835568'); + T('-1627.2108799123697489132363803597735986233989579218110364523089725598273552977977776687575769964049313924', '56699994277601502191648', '-9.22628475794822699354291906781040053919455063547635119292864057974253393511179708715340019643722079742642013165442036762906752e+25'); + T('-27116910291.9182040738629485', '12691061832825245519.40893289319955481488011346305686826840916092434155363686258532264816410801529729986396433852053976574899754971', '-3.44142385229909206506408450914121490994466313457211336682505249135405026892531659087017902656062527076358954643091265672241689615713870521464190780855919935e+29'); + T('74334146952185.622333564428648946767', '476584680993387873045.31749635019901122634977692103894159588456540699130081843563616833608386', '3.542651571212300025591240199136282046613545603127423889427355578233920699125928663269397001117473297183365853355090147038788062e+34'); + T('-0.0000000000157591044652124620704467757472117236708299027185378061', '825889432875054704437419479225672139169234.4648865373257367774758779311867911088245084945960951054201828797', '-1.301527784939306255868774017049829614469141796766685094069536216576279534218241902166490354194411368867404472498297448815923977414878533155578679521444041822617e+31'); + T('0.000000000000001100192990777212594294335234679657995433198981402645', '0.000000000000000000432645284322379079219999', '4.75993309304295726917904095312991723862503538234489037361811165973555497355e-34'); + T('-300700711.27857809815492793761168238841641169113962704371', '2796485968452997110905186933271347618098487118212692028161371341773219361074458463009437202075408782.868217914378353128764067341119788514123', '-8.4090531979437954393871330563049695911136868591602684229475806517303872799072423007746634357788114292441025309971392965563899108585661101482006280251358427683195796604902336825200320040807331633e+107'); + T('1001261567690509940798222741590486780493666562063067481645961.90629710999960001', '-1650177790476279206501558139505.7050853', '-1.652259601460341163039584257033432854399411843740615967044468360193262523967905931854751303094262379472596022930853e+90'); + T('110.8604067291480106069111398751254426097826209058897035561124403844051579732', '3550086474131605383663436798312168506354131157360313848273263892613620358824680555084478737815742184487956353593187968793241400.17721303537436259886645', '3.9356403044587676036027794309018622288005376717971688259462205139902681207884104868717633863448326626441423669459931832858572563749403841913604929877516515276589416960678197046131472363670530588356080270487825651541549947914e+128'); + T('-9565239171980107624419624526395838241183446774838567911610629737292737676405985674082492.7402072097442088866372528167684894637964203298148137737241', '-36054341543178006514284988556899580296546999631717365906312843826084434013452', '3.448684000487559907760299189700848766200218042465011401311363613150401470742277874500718876731897516621371622912032460093110240951501324564382188117403446347500943089873810691365498189390424553234241009759752460955435365932e+164'); + T('0.00000000000000021536749330373908821656161952581400559880285070951784338817932051856533596270829157789717921906316591168026012467390896523070770210560122939454467353', '663477678146178303688345264055398845777282913816.2865250058407981284027739848602730238855', '1.42891524405327413808513101984282436944310120570351565859962360818367363905163907249459291799819814848604018845827474322713798614022002843947155226737103321232324111623370722541558737029258436237486465744476494522921928738155070489600815e+32'); + T('0.00000945', '-18898734150623755402431379573.925485263576945358998697169620788', '-1.785930377233944885529765369735958357408021336425376882529164466e+23'); + T('-118155484782065759745414566117547423380595772557270766076629821949550123865.7556876205552', '-3222725953437374057075335595917494.78154846586409115254934373165610464807636269976395928338097797032693881785669329213286427799731102411887254283256', '3.80782747348138016629045371008871196005073810159724255259507985221047370481336261384421677347963935331112831607680385035083546977933094742953609409763116007720964740775926559725243391158892800768754854303883925126424611683360687837312e+107'); + T('-190628036687751797516.3923598265032797533714657001', '865709203990726346661478248439122009697620464322316832519149040247619305112126151915240.927219690074057652788651697648519684669722701', '-1.650284458992685868486399903806413990004373003855903554255634262462272823920733859164088044294272768929194834986945666561794180291325817436074210916748703508868419322426333998279701e+107'); + T('-788627400197335866651447870.157709244984248131980873718306382781375', '-86747290916497451031316747659315856743776649872846183098534827784400266496743256523741518237922.2996321602121937', '6.84112905096393537461269413785832954919219508550269374591141540623116216431585547212308389464605406974151833014851983606637628384743188851383796216195778432408403881159962523375e+121'); + T('-1.04017', '148558325637199565292759778627500454502992119749146789207503706844555418', '-1.5452591357804587183056993893496714776037731319947001572996913074850120914106e+71'); + T('-0.00000000000000000071132398470582962692145075368461', '387290994676565.8926187930695693123250251643', '-0.000275489373574019100458714153409095201115930261231849509402017099019195631423'); + T('215107310441729713046298412931278726261089816.7425287833514081638904884659853465814509169056957391447566', '-0.000000000000000079530922946391176631073888012201003836910614023124515004051787554271', '-1.71076829319466519842618108119001097767954970538486717238178897562962688286230746264794767938468573458599488912245410770935262628286074407769931453705541079989415475854386e+28'); + T('15.20', '0.00000000168020242551215734349782244623375617292165135038473086956135734916317120833176', '2.5539076867784791621166901182753093828409100525847909217332631707280202366642752e-8'); + T('53.7', '-203077092210298580698048848822677', '-1.09052398516930337834852231817777549e+34'); + T('3762.1500774483361388784232631064469116842540525321933222132260527508280723', '-0.00000000000451157562475195223090446528742025080950824631951180', '-1.697322458607458258725685631392223266464385065379983966983024481605281774480724387957456810916611803963822277644621467110314e-8'); + T('10153060082382209456279162718229817773.21414954173571898129540', '13877.5946499736990', '1.409000522801288735724123829540759783413794325474382601016313019646829496846e+41'); + T('18897399203675243.753780', '-1910633732732845629536812142230308713253202119068241546428657394632038831097695534323128365467560033377437820071074546249694941907476629', '-3.610600837946073550532020697653346279388929417890343273657708768347378585716753592761967644855725372607255782094846473883590443720333438235921023941358040762e+151'); + T('-227851381988110698228234897200521545909.8859817013555168022664133019970486786396950937267160151127235063398214239139286950658576124761', '-1268874936070643773798575676971891302001120798002567287940.21946823635809002112374440535791936322353876611612756137359816293380527820953454', '2.89114907753771796464127821062921785105163932083151495322011931184509082675890958425989774091841783969857985176854191074417481688593300580341868089326459718767784372087364119694552216708565314138516855049665928747274756209929360259354799135676979673768285573391477874494e+95'); + T('696500910829095709265254100912961.759143821807206113527355359619517140', '1114499552366341774527606900484796988675131209334791717032223696865951521317145662953110337604968236933370458980418848545855167865.33', '7.762499533417764961744733643290572565963244168792774190520762259732634644303990430873725013181100121300237274692989559835517257654859131921380793007417874521366460660750927680178271377182536191467562e+161'); + T('-70.10', '-2517567781055870080456863350280219592820297586247709916931434675762.61506437297379043545134128087973548639372915', '1.76481501452016492640026120854643393456702860795964465176893570770959316012545462709525139023789669457596200413415e+68'); + T('0.000000000000002306594150940581693662924121203297813803898269978979627841840215966618235769199313660292073294', '116992676693387498070382.7747684654799920318525566565823', '269854623.7638501167227065187659703931498533193140103582402361671530932334102659535168542374567463444185883703688336666394633637064104492276191430962'); + T('-0.00000000001181358510850947772334650728239469358105', '-481890547669680463659904229596086456299864735360996516824114722268856.54851170927985881751230609513583653813147810', '5.692854997882013727740130126310283585722443259230619411261749891601386990764956284506368357210347041750883604578383235465621769499444496072167018650005e+57'); + T('-1834.126675', '0.00000000000008674517502282013089240795076167689517217195581862368207764378830001739241505540256750749795374881231669246429195318071966775335388150', '-1.591016394368981357967569774740781611664593018538591570853258932691148023923957854519289902594786129196141965293563166090383235636747739390125e-10'); + T('0.00000000000035250317144887670812951006342432995417313795500599613972504272719157358113604799695738826228638715709865929871185179926814011340468405980601224', '-0.000000000000000000021272512743884326405045478763658819652652411080930898072232071938774490149150675831747076538', '-7.49862820690587140909540970755250892258210729930767016105970954978799195506491402524535800885748254897893970247659807375624928755168639617915215048372226158776475176073323855448724956084743637169140454360251047844711344183201584482512e-33'); + T('15721631316833446647076872477517236.12954053920703267418936679341513919357706705809389209070714586294463311338245994298023554035379477', '-357511350671198870300372232100538.1303938329586437211936443603854018463080112537158549352615274628829848363889696735642169838', '-5.620661646835744415086989091837302307955447632522363902002938200959151381457803806059537394592953324800087575638876011854291111449657686052527475421964247595605170282782797258746087685871582969776908398036007564256205557694516425413130055587991480013614726e+66'); + T('3253729487345424036939309028740036451', '41382.193', '1.34646461615119395163461615513962735242317043e+41'); + T('-53618931066856441239525329925922774166747059804.731067937979588616198646926180', '428.71708', '-2.29873515597039782674008800318782280462672325780696736316522303311379246101428651544e+49'); + T('0.00460104302362018630202736794501376789373696947488687556056401041393190634456941939438735', '0.0097403733746400832576516808174515324023665911967721621686382928687157274600680878342008', '0.00004481587696284356635234124520882413754979811951974130365547261171837147431228113809768987174613255553265451013766186937944499945070524997906900028884951249482196583289287988'); + T('1677453254494.8933968213578859249745170393218098919671494230225238019960047762641999542148114948195560618412253838', '21698.9831813409037769663882983019728670821859931084790618654907569761557036686614568057014715225588686176', '36399029956770254.61815647295605403222195084034899389723728455774968833742619776793560171529933737657028158467430352145406981302848175254658241102272245868058796169820204651822347385243123767173210904612588453433543488'); + T('-0.0000000002919695530321722484984277810687310403212039464661356722375751251668297055979816704921817077930395835966342868337436171143003475385582696559', '0.0000467435515211462536099607610605749574554406010634606838859023639329665349097075031538491899684093202279174', '-1.364769384476538686936225893376326381400072912004108048321079964657333163471060859282060687267616249897947560336772938595308007366926166649543531172638654882898076593187120930620811092498003694929915967620884049583354836924979303135355647162266e-14'); + T('603854611243120547.787810466452796370957795270702329858515593134870178861102533', '-1.443648977792806959560328531759843896504517453521508829432901295106075946137', '-871754092256603815.457694771840809554026399109994406269191599674109909866767981863687374560559981613911867626356905487893301607765864732838103294942265021'); + T('-40.440526242216028465959594055135360244752337785292869659524201380035562721496158514354001447065595303342069691098', '-6241679606047503379025590422716839198006778643413679187399633462', '2.52416807903868662768373787395500221586271219331254483212435251241310894921233219736835628583965316050937610054902736153912767627312787284137615949322472984890293258224764321276e+65'); + T('190202434.508038647841031698547078216727', '-94800.49', '-18031283990554.97275426724712779530301404579623'); + T('240457787673551.0553964370137451859068301029702133344054038041468987152326', '-113811730.49021', '-2.7366916924974332953445795236260775735980418505302834775806957412715746250777592172846e+22'); + T('-0.000000000000000037347671655579143058079422192039757670106144334496120979342554992077029390338777020220866582016017618507350840075639338', '-66002749861804986801728090866144973725446555526.44841912823309868929360696717462761165075411', '2.46504903020401430710916622478946584523872946340038310101035741960964095064955939570946178742591696202144017351188867915011670426023840138265647815988159839485263479191111855834656201283339042728373652808117918e+30'); + T('2217096250855392361576457107363.550101329506097526554933312928808962970058721968159857675935', '-119.02573598179826220767289082192322334412324905093960546113476851847137178273867550322447', '-2.6389151300054870078699458746934883192689259758705923255722692155151793736620554306044775120676679617433953726881548219320386556081319536307857183199189515857363954254037282212945e+32'); + T('-7810543038413013183543974906750692474736112.830520775223157129955459725598357936920887935346548627357711660362938363582877899220351', '-0.000000024840601734880447844125586432330812489626056994428818563969', '1.94018588950360699674928168207639163235428509329502583916963340815490425553873121778659312254666940895194771657722665285619316279071834113799397487954421488584967639435397144832420520133119e+35'); + T('-215969900665491429229701.3940073328175247468', '115249.193647', '-2.48903569037205758977126520019369452248876591678435796e+28'); + T('-4035575127405764517339706203.4788226338445902', '-88902309983026598393661019935338468232233526534344738519100289640088125353379283048690019987369761984422527235042814970844399233265479337257', '3.587719509364193355575242986206913087493287494035221267169492881995478618778834577094297983987290045033929823209982268817160327957706935779582674240650855654673552267470295842307570814e+167'); + T('-28499916611563776888621.53827878180215801449832746', '5995.369746918629670729501318845959128845800374147641916915834504403849426193388405031670359811808264465541348192', '-1.7086753784267317072023465954287299476765112854412427476967519098923744309002169668338318340958052443834272196779007400662171578997777665622369069868825749495232e+26'); + T('33940277567855896556536207237998924729047510555567616051277715731698465468759889055793654824231539562678564552090900045034922322.1690641489242517', '-58557275066496364264951120471607827120696885728717812654290030305387606748831.9183665907629793676083704092979597697586525', '-1.98745016937417395543833870238306804764880834969233299088069121150704606919273152334891301543693138976149441332170609730695515633779077917894486225657656974898750258313446228915338253648124299689091087492416283574756990938405638221490525215652696287427161316283425e+204'); + T('-0.000000000000000001047064413365314260621529874256953696906592212846819', '-434397528124418421.6091661017223', '0.4548421929529367773911801643725801508623453120069985877346513296252893958219763637'); + T('-33370590738262171579.39614973283917480277678311111671774535779751556185640913284598686491', '-99094653.33173767906444057476506', '3.3068471206833860362071327479835859150736781389077457604266441207582457927611004156098420714391130319622364115692080446e+27'); + T('-0.00000000135893504172734', '-145791096031983569080162023719458335233663720930454033985903749.924827775901017923575087659941838981388109045', '1.981206291696982245471792411246101316206613787316920816048059429054568140323128384390929922747612723701453667023730777903e+53'); + T('-13865781910.2079575101787283939774081870084', '0.000000000000005111340576657977529690857668009570333996738347099523635843713836084214963667601914442680495175289459369931831218047341605612305371', '-0.0000708727337047360947483712809665199876351338098500645907437129231083200095113355222531742276112479425377592938317792723399224219930646266745465349945511268888900466157421164'); + T('2221303.063062607', '-2.525965215750429650596003299885690890329317816527744727340100271151083414522167788474814497266651607680421514303744', '-5610934.270936028330697409054729056703155654194124398987862017089179613782122545869272030899868261055124767892056053009313886500608'); + T('2955433876854127435547184981659750312874750', '-0.000039202878947452162560625708217061180169183736624538113434241595982106528764', '-1.15861516511511599582586163812175464411359319256995079161567403334139282606046617827274676780880858338633660404309e+38'); + T('-1925003256423680784876.1957689269203', '-0.0000000000000614144439205338076312802493579740530216692609642343477458243733481030491978062242259372884320561187326591221623660', '118223004.5384771047512790006924893059325401413863133808621379188835488070846162209706362064697933581769897034762423998928884355927161113795649414298'); + T('0.0001074280907302126774691277050759016234153511565364175703838489020817316583420637215', '0.0001532977223327450369874510044074807629409774927247949577150151195776859623266960380925487660870709945455405380437750382992', '1.64684816234970840550538622604713249522114056250203424510426725871022595010818109545611749855873201375214405305332022403202928107807661566637499538331414567985551667985554396394756099731355830293824728e-8'); + T('-51719564234003853480795874799029206659495378941873129625597250275327964731715068962774998751', '466532423420562663.592331220126361', '-2.4128853640345274449820011797672270168670456082913030458542405572274060582037181131606130323033781460111131337883517837175111e+109'); + T('-1724059986073957512357853.05703381906907621063941826220185749299041791046931825802106508069', '-2665994918609117220274024374289170787044923934794140833582674324712895082643859871981.5384174394916234884976873', '4.596335162250476126397000620689369599669734677111641881617412368616916429689082558324657810003289232013968094235442049486840526116938235377972333081125575786496773286246190410954882029026469852888237e+108'); + T('0.00000000000002795129561961146401319754718204318652084938036308535981529129883306076220009274119013027424', '-367284334695386275069239735137863507066443274836293057467619925457742005840610489941285870890827991341527453.1239055840633353121379761935', '-1.026607301552306124313300154008632390701208483751483889410351517683637370661669822560424911336313305943490756696083944005783385779384493150385978269507423733524787840537586575485518520814488626005350057699017603079788874630544e+94'); + T('0.065024658867154009934139288250506881782640024913856247796477081504212332678', '-665460681339474763575385930611037367230025491535512485820105677925713917024055708892630604.560260598070556046', '-4.3271353793603226678150325769871841452491924531112895833715271367485564019397270216591883369859017756012808701471442567394097379898539481503530181916728520372454137708175982196271188e+88'); + T('-276510.208587680613648136603273411746807332340011833', '2605351321798093.990970489610', '-720406237434580367010.08789881220282603686585579572198020594015398214120355513'); + T('-1141731373426523828', '0.00000000001228914544864000403177026028329087085', '-14030902.9113140661455213068073751399665217637223956138'); + T('-6945202132900812232267754762195507765101114.626933181713698994880961083764777532865251281976086752243853355949851812697573518483229325256100662271783', '198.500596182566233231418150714777497924550531544984107394883271', '-1.378626763989241829423752237699325897620912267936419616678649561070893719008729731590007841901671107837003264905764835754363036476641340160319240720502391830298256035482481144857802524759297321191775928962042193e+45'); + T('-0.00000000000003508292319046289357668381194881192144875489890254082933630984748085694196310674317752270255439632992013292438026236847255227135350509221', '-12646.289', '4.4366878563139579594698714752632876528625314168731416208665252478883885572167521207173040056393420870934788012794380752838459114284655905930869e-10'); + T('-0.287610207934561349588295090691549344568062900733', '43561994519313302798849015634739297829426206398579890440129222701736044543165037398693801937437.9243029452694915', '-1.25288743017439209045579990822356125048347677549255399828298801437378973121007271697418144364441489766184499365629256770107139603488677894036054186818978872695e+94'); + T('0.000000000000000192', '-12108079130041324.8599910305913709996877522568944631978562414383996429587415771634862023459492435054277466841987842715088475336753781193', '-2.3247511929679343731182778735432319400484333237369339883983561727314480783828153893508504222547530421273633661665801296987264656725989056'); + T('-20568177346839726327867757072303820722593133821514591458610274374266.37198646', '-534342814455338031486092101151521752991657451149454616317240974476834470502228759280758223653930620503606363601006870', '1.09904577717268667573895775359758445299657810692590923812884672106543889507154870122646024207383034114557837930915217170509202835912718118550506629814473881108189227609033460252466188180069802e+184'); + T('-1182.3299256870', '-147162546450055552210266162228061556539.797326023627550726867910750435749282172653416371899801978172967970344774632377', '1.73994682608203866701785740185594706489760121335556873257063559751827647851659356907682594962027863260816409968610867061154167999e+41'); + T('9106311100510091578555175.291251271962559609876', '1014206950166689350187558262800656656127736355378743002804820184380658978941538.13338393728923507197611', '9.23568400851740850405690546305915901453077329283645359090099261781771022159231929782452163389786781433252697559132084134612891947899159122199206236e+102'); + T('0.00000000002380790398795067678584772975148957851144823495943191934104092082796285119597281', '-311335492270699981.8187024249236948798391482088578', '-7412245.508022185205534542741414892061741870570633829375932307947952750675656606815024557059080304215250354778137764084129956418'); + T('-459107433083516704803135533549.9370726940122774506638331684', '5216864295258985882129407260355552822654299758311025336128418645120106444368253186174452684656258241404364726655870378516906394208438578086566108931', '-2.3951011753414023938728351576018231982234001717277301016858655888837322273016599246665882605588507148724528061606913078187945915687420371837702713713354429660018711277008065538782057324960908955177252669804e+177'); + T('0.0000000000321891162991981855413480133794894989319146938941669481853712504240526430027314092932643025', '-134763534415664538713532770059667389.177391730107496493', '-4.3379190821968230280422342891216605083499498614921463348518339967882865388159072601421584951618987475295234426996826071260203876918460408411325e+24'); + T('33279.339415206582540482746683123451895750217730735', '2358123523728734728589743.77319797', '7.847679312915151656953999591683173680703507048673633215999463330697682756730860795e+28'); + T('0.000000000000353739089246492910027064870427354171506304617311189028621762245079583293104983994786058488849', '89.2', '3.15535267607871675744141864421199920983623718641580613530611922610988297449645723349164172053308e-11'); + T('171.11526841158167203333557925506243707903346', '-892230436.9596630521366514219721041194232334089033401680786089416696171067640821518918159', '-152674250705.335543438952814693411686830371790621030553860131456031688753597684538585227522590915650930288422940391639997604056260014'); + T('-733600573426', '0.00000033040751206672045761849003644598960142858564314273065863456912502993453964294661705657514355828281447882514699', '-242387.14031640414208016942107704561068604361659765821593779056830839506769730896756901035759801454275354730316665273788774'); + T('5.407060250', '894983509287282057739447083.8543243233619681646503346546908188657720214623', '4.839229757472768644941169184087133839458644424846279660576202729065982810949203575e+27'); + T('-808729895781.624674969350592579908381307343041664310702922570660', '-0.000018', '14557138.12406924414944831066643835086353217474995759265260627188'); + T('-7874173051342200985556358445162694781995734030142926506325840936292568550580411005561682118906679842482219.0492', '-0.0000012325012891970851064894932661125', '9.704928437140208129135757974157260618986599406272057601438444485095519271950063154371970461800830427187707721546146166916789646799572330235e+99'); + T('-0.000000430107308276532278514', '224144306746606979302588712185931212406889.197263709151077', '-9.6406104440292501862428318854477364480895829071122484854759676386315467059578e+34'); + T('-78447932062514438523504874.05548646556284585439748424869932707256764818646061107800377213587367912600020326136', '-3618396947489172957173653777903437148775132', '2.8385575791184026440804730054109713727456120179794155436480050335238908442702365065025115219164988251654681117750347278731430170767508687816655566449952e+68'); + T('398344525499512577582336511121666224709052905420447547608128587685795296475632034766287454674444514141282803194155553367745120537420220770', '-27125618478287015045404726742380927685738591197795175985782379683976.193104266048757690370843265062495822', '-1.080534162161405142653380276457947626239920154503690438713413845124333388848808189678412350793281352453783298170743129726689403893393610196781463690430258145190692262396630679800143839228210109253361757862038429643553279024184277250644262294e+205'); + T('560555227022785413491923481073654909048982696.2480925260763', '-0.000000000055945909195749319312168314920740513457467773655137010097489061064437802811189813038277307920819234756363832360445689012158203384', '-3.13607718302193977963347461210034229231284614823237752102010861278943979945733599665261238405005674005758593157383769276422304789339955395466489473545510344991715182034227247859789021992e+34'); + T('53683812799175377405416129296695521380051667500787926235235161394163291.6772285236819124409364862784464258457438293794967799666118416541092194902', '1002085239338631.91098069654292203203638801404514242082065101889787248609067618438261168776', '5.3795756397471969187136355919525769970238781938603258307213243094992246282155354543484962264142098786182227068998815395594712635092562656959880937968190303422424114781273414341203880090074688223986213775703111763870360005321708779952e+85'); + T('85251406536953414226544773130024365036572408507583595068846068418600.1205319812043138751554685608133508306427759344342315262715891140344502', '-14640.836750817778351989018346781730874633202', '-1.2481519258851345347885051287664718872340382940818875870448237208943268320517859270539035447679237658640425284982425765828931101626280359992735997817678878451142046283911403167355404e+72'); + T('-1168964957570.815587458251340', '56538572696115.72608565692028718229319011374125733775862205437667843677102186943732802', '-6.60916102328293923983280676454563885183081101391883074333220411142712357555724202247544863269382868083511845468e+25'); + T('-0.0000035740568614143300428297245610418', '-220936232135526', '789638656.3990059006672364554989705373573509868'); + T('1346034386225456518679533104316275599194652955318802468313820086088149624400847.185', '54939560960135761994417267108815425036339300614381.4483866588714259041240857418173085472293222902548715740451745805798856530861', '7.39505382164723930246517776761647354791771483640955760963662039805511757685269752798232203634586599328591387494964164173089232999789108334073422192252509759081688578894765226433014479831461369862878497476285e+127'); + T('-155646778363951461204593301246056264317969228058189198896139899890727803045.11936198483334033209653315521827243605631548584036361770', '70010086124901511162734982850', '-1.0896844358323698924028061858087281789212298425539029658881075600265807741939071442787428242144667285959576990020034537638802277308860865062577335864173456445e+103'); + T('-96230341173782142876521207175875305814979162902343913723999663923462086933.11747987173088004223522808909664360812790761033270386408', '-32312766854681308785639606074893295460039.2098266500874834272005936578144638474562541816848168427108675212737366956591462833878750808347288369144371132', '3.109468578694861657044341174482395073888223668003904483303702568979989305498812009034748469873885971391784305796766553860166319366182690854126591215571252169482729464411083827831940112574078691557408084659925085229544889092188654423122525035195011188050614487145148823899800373856e+114'); + T('-0.000000548494172595574330396761429371414006142446808314253568896786945188386738792461354439029277', '-23599662.27946574215991340', '12.9442772355105479080497098082314463897599465046293055191920810370276950781896553331072508851470742134787983846118'); + T('-714491311271945967722626072689371246725304', '-354207932078705268748581131.065984233837379302661', '2.53078489853838501514954773016484025244072911508100754790233958626529737581211243343233944e+68'); + T('-2652957183438', '-195185962067717725512037169887386249542535008172118583806939423414913218407717522397396925805258634149', '5.17820000173808723699241726590004932229973891258816030817795368301911879552134013341717829627238806141061924024262e+113'); + T('-0.00000000000000000880590826878036444443656266764836587490740155586607932367514263056628321181262993864472136637', '221.48126943989476644014754266743958579083215022106146593457414', '-1.9503437419407411606247922977674915717900791357974569097861654104985704464836690328779827178384445759527338871093471950304259661832134813136971685648676718e-15'); + T('-347873602.23510519131378528375967688328126', '-0.00000000000000345204441953134921260412723999268616841434091539516160053217948913648444927706020879947861434828121114161104100848431013272935429403082369582072600641', '0.0000012008751272979631661860642678932206188355136599447128288384619284997247859154163277648673794145259219010025658692572618722220704615506152641552019366413559230553625413995603960631242165928766'); + T('0.0000000000000001442618965364152298486684187600173330090418464315351795690935142411476466184129035934014488253341654078976849545022104268819111681009555', '0.0000000000249240364882037699910299485535757120039682410050255081964884056237893758868', '3.5955887731310902548303070850838164719748874637094192870760300960851465410299817503704107844345957619545899785709783227712047477876114102968736355229590341265414695145023045767563414004483980850712921197398374e-27'); + T('11203361460741696775550516477439054249886501188874281520876798975981497083993389664224944576772981555476668884535000964169301021', '-0.009425091022859976408210896617129512523351916940774040126129926398280814501901637533674397', '-1.05592701529491998289184550400386588919196745317033009594950262014856245582393791969590569776888682089563381256271169054068993633728958894678614097027273021445496799602248296257190716802772690940886533141705293659337e+125'); + T('-50257275098882173690313530324319207319.7', '-0.00000000000002613102305812786358153112867873275089759049662992988804013925307324391675101078591150104728275428248350857948737528851613002722', '1.313274014447565385918882096099252569252443657688483069512563244738248437919967250811168909580079875716332790199500861141616087147571179420643034295663475485584242234e+24'); + T('-0.00000000019732481798', '11713877058294598799452.6300621325958315801323987275857206144411781296421875252993224990921811411', '-2311438658368.079557319116750642590563091456361363221635925091739233848401495958715457150683358908746196978'); + T('16669921204672133066496720461645831860294144062172262348452206781980345719813505226331586428501288033918045572872571033439052885163185959983499', '-251909114234', '-4.199305085019531263164571072959105073744794265399005234122464071331276442675313245235919630379775040752398208810774467987877807125340295724868202346024766e+153'); + T('127594991665.979', '2931972609362423110559000705020991756049379484274406531578719920328328631360570935031987.8511584086593935337222578544201427', '3.741050206564770789405448806731198284533698395535872424847129715200781225838343397951497453223347295962658413239336292329816540879152033e+98'); + T('146200133592544330684264498065226245560031705674109303503477692120859154893091630.871735716026997526317545935283624142687003866188151982212989698909', '46730789676874137872952436533.29531686073021669792243838852461391282932511897427150915122385179702857290277711857', '6.83204769364409047271650618653599900430147034336920824087779336527502529052104798054004653483290666541743622267860756708314673328113463875187686742000697177806992937541292873782614801211759243277925667772455483685539661134063357932775410662696035415889264013e+108'); + T('3305168235.08883', '-0.00000000015960253276367470672820299075290130045238822873945326349880534378217699817857400746554521112484146318053536850963687569374932812857474', '-0.5275132215302218955363945278671543840140049260367406641422620161137050522156464498199756178493590046194472374663980497123349110510329792890451941542'); + T('-14662664077162165311256', '0.000000141784657393925274142572490861043212868340562120628819802636951941686924487200580031', '-2078940802662653.108290285852001564512570305578867791848575532841089886824260278364785279496635830853128936'); + T('-0.0000000000000056998852880676332652472177552050285678774883196500512', '-36498373273900144419354144402538260265.64880867165981459073157696308446822865007237717278768', '2.08036540862304331717677642102316632522246004626115723942329232479603003027974589958566297786436869850538183264991752492295191922735133158729216e+23'); + T('-67968411827513303349511763330956716200597055731528479256856033995905188987752276494336231454282073.2592237192851649247647340481118', '-0.0000000000004483593999475811573860351927852363194231748110211408', '3.047427634237394269949752053446075793452954414318045278492820191953525157364829988068926830766709378481812043618023757341388343262182042155382714412297436468809738064216143412194144e+85'); + T('-39147071622153.33743465738395064998231007612242609707852571665922928037980935209746718640869047087190554662186743691289', '63424511281756665049556884134307448242418039636636009044809552022044426453480310050617427620937346481967898179810376485', '-2.48288388574700054052521039639443124893165696752230434717540647035194354741975215494021537917119812595584047998724074329330913195295973963059478012613800118844862490179027576674476090214756182225141979897773406174093090617028873704939165e+132'); + T('-0.0000000000000000000212', '166963558962441896333912989698468664503074325140998167446135880665447621153757238111137.174513086233214289455390442249465', '-3.539627450003768202278955381607535687465175692989161149858080670107489568459653447956108099677428144142936454277375688658e+66'); + T('-860642938911.89435988366786337586704323346250899248118740045', '140830725536103329346326306.425423317117473697116679279', '-1.2120496951448633875490135507286030453466902766109934494954321323997081079892561368828279080230440233059839027555e+38'); + T('5120155281492.6960891', '0', '0'); + T('483497234304151.93475846468237990040573513326581342398440051651712771865349390238040778985950490599787315241732009163910863036888245878997967132752', '-0.000000000000002446148373855415167', '-1.18270597345669190978054478684634031633264057012297038134354632718936884883092588556284387957205148298464894749852350309479922902362917548718181008887660019563249584'); + T('49107229571.216725255807725802556664025020334907', '0.0183027672070302023790702223019211', '898798191.0241693052645246478450553949374710665324134212540239364754063914898377'); + T('4777991472272023913003337327759575484434911659878.9391160', '-272.978878813339754436881', '-1.304290755080515609320060076869253031973150159686523391389068499267988263937196e+51'); + T('691961893816226173138683615558104657029075119080', '20888395139664451446632.865882039316262400286', '1.445397345962386803567566022135550445519666093682044976235972214321728596830297084207605688e+70'); + T('0.0000000000003033805695921308583790907838465039054504904757732225737126675767790336448122804692481183103833', '1205.341037096038791925207662937489878783324398262713191296436049856974303800264977495244455397149', '3.656770503869659792755630630441878632712190709939383192077151780666062487640831547779168381626737843643632860934266858208328198722651475946630361327414380262986385955514241668191884519172117e-10'); + T('-0.000000000000000013736762253040628738016656811899978900772420917465579992026756713474712981645066867464219941729626816955275801365161507762', '85532614698100819357606499054389025847104053990809', '-1.174941192988739408334389452599416522954290918785451326292660032528327766954585591614133632582363824486991674256064796714808554605539806946168016562596219749595467730159458e+33'); + T('-0.000000000000000000015811255247299305828768713319620074244982509614182062286978069545537489406407030102060780870055866980118153434550305', '-401137413593688737860912906172596426086830141009', '6.342486035571282948613963880018634581799042582084278022045824002489491031661976947293164151517578765536914386152201758345969760642775856850743822412630635653957745e+27'); + T('868871903240454856454229094081624011359909603881418403823490415408076494742619348242915473328227861764639800179679657635955448452.19436', '-0.00000000006357246685755280701854672125777125138', '-5.52363302722126457498705427469309802606911867827348426238286090544579757343893328680598652010805938682728728170222222699144643350355823304335981947914590621447842841782168e+118'); + T('-817490632.47780', '-0.05082', '41544873.942521796'); + T('-2566509873328000254011581163819375336312675622809818.499935237794106355143', '-14085586641244278298102529457882882173828.1386', '3.61507971863704252530700366641383269581722371260221251588353625777177940442779032699974632687837606902398909382268198e+91'); + T('503419281104.463633640902474726192736893485104591050840525886329718599066457645293563757497708980772570127618974706495417595', '-121337599145999931368859624997930779.73179', '-6.108368693302086597981507602493580554469919267653677670683934587044246440236052848418720220332789575988975507246301734145970281303551608797453924222097493814684505e+46'); + T('154.0752879034465903', '-0.008726217915728513196107992191445520422089690044688368256659372978169115950', '-1.344494537674084306953324167403048279838310386922350436364043480401117060195371791792845285'); + T('-0.000000000000000011925048592029545210459398688308718254092506044948381860935240918133166559166620982921389189346569737569028538401055', '2083276415584377368536532532727643929994867840790251749.88373757843573756621600', '-2.484317248647283703600678453474259458742779398299485727046453258915073511408926866511770738523415042481132395288773086582850710882881051220356645201811022177650375833106965396711340182675788e+37'); + T('0.00000000000000446904154566584455897206481462213986849554065179928600359644945423277723320322131526226161353244832569', '2848064161461423289727866756193778408645084968560840504840991868260331965438561614918967119347024529487381145007808689.574200435202790467855', '1.272811706229305662213683326319709782050267108388413502237287169373774908480672399099191144562736507324487505708069393969774714426776963142634656549866268950975004320862082201493957308813283909556739183697464382316012026987207034028651569495e+103'); + T('-0.00000004733747496524284528744980210835293091798469780', '-60369256501669614091439562465874779052299549893280439175064875222.062643118496795029', '2.8577281683181092272030103013062657800563801201278542890132513734588525148374106855868764763504825752739825308041149449651072362e+57'); + T('96456491774549605983464536192479065464697606538688448511393590515441846121829477068030573224599124', '552591880159850811255567071754556187177795094968199872657.3807356618203751867762303325381820718525675700180057477640927815410828', '5.33010741433215513846896037986563851532355661394443362975026204428856124749065340874569306244290877879518226101551796386327528977418142095601897892583643746390474594920802738822250754452900709400116274658794833132949668914672e+154'); + T('0.00000435296825302837417997979246513279920760355177075128726543859320043830213235385947701661297471019483638796996791390033912786070', '-2358972609625663685288774473895.6434231', '-1.026853287946401014950993771491057785216233603666290400912634027422541733751360917945594249383195357423341794633440301199534687372368265325725161906863912592796217e+25'); + T('-999234622854868865674773818245832433202378284835.73666608911561114433921', '-7.254', '7.24844795418921875160480927755526847045005207819843377581044464324103662934e+48'); + T('-78760433369517189268813718850989812439872780124626693423016073535122', '-11.0900738491866377', '8.734590224618892006011443929973965209196433850642586975929968912375943222522040392994e+68'); + T('-1510939307579695343987573960', '0.00000004320067801896720565303672103306587888166187016245346353772091834756228523943136134993165134358763411118907', '-65273602532951674469.8274051759179425105664207275230087993219234918464759004305190552070563017062681064499654251448984977190801686172'); + T('0.0894174964177934303779732054608056301726883008695547961408331314203105438641593697918217224788171493946008016972690054132568541347357906742329332833', '1542.6581508582549101995706396231', '137.94062967824784574736167582697025827541997000463104865008652399044560913829513820967821268072546354439954364140784723516217249346765923537667015058098902147542450230708975752423'); + T('-34577745227575239042650497034045377305765805548524711395.5081303310220196', '766658358890973242394467250763846956795577882707608858967751880636.0954859315385805368772376186546221646109', '-2.650931741032301486599844865029472285624680782442203783493297156082528515125839636070674383514156414623150702190980592575815090407165174168924973668598655192785690042142376617364e+121'); + T('83.3290153999204844106326', '1311627337486915320509440687345026266029743794924400721935513620655368692498627634744007885.7578920', '1.092966146044038692204564531458641541903270444270154411744236954983690234590929647426240374543484806952751680089941624792e+92'); + T('-1192151.908799751109585637800720757640651255179973011410490516408835753100899', '-6097036742802358386983942122025791952308256986659597643479361457987833051908958694867787164384275533358919693.249523575055559871322198016668187', '7.268593990954048718183298042908900396708340089605455889963655461676079135319303447970644868475734604822116794986972434401410410290069948464123089061651877757219473044801702473574398904984445482549630675240973614400113e+114'); + T('12873087032432609726511318658818382838704088', '-11137.85789449932987810195', '-1.433786140307564932441456398853868326855191909251446120695471457716e+47'); + T('-514407318470542052534960135899863052948602062295713.404163', '0.57617979470448909978527108240023648361885980490885247972540173726145900170394342', '-2.9639110315084366361019792930292554963023439694418106043485007867268143561606223483230236306497936769993015568968024431726476622934445746e+50'); + T('19864031434939435816482549499647863708767614292250', '266674221057214323300502059.20145204832171982196589122398', '5.297225109968493345109943564396209963433048692089789948298291839648394867940757685353484913375893928155e+75'); + T('-4754055625084332185755418342.562', '342203501523496667277706676371384769113403050858703638741982429.86030457236777579646956050309789441181343032128562816083443', '-1.62685448134133416999696896663497605074404274391890811668228808135026703965039960122943110479134355342110442043580444401677907314671327937812747350400966e+90'); + T('150750927242228755712.122222703133987729780', '11153110586322698752791057735178422360301.378975227', '1.68134176252326445776964103880327253856485045353577333614876702243490238494407508859016006e+60'); + T('0.0000000005454515643719086225314528110151760642884722399372', '-0.000000015543649516517081944335531513584387020723567068639189715742064587530870420218940682937593923251202031320330', '-8.478307944832903460053527019222484930464321162422574722274786852848535790350689038575946698474468453359077459886259429789018774414058766868470265072283276e-18'); + T('-2767036068909663273137653237379082714767201822111902341892857916392935025490148010094342382799970940711420469586533427545731180775808468923.9088539', '-106163436291247150687286.993186225478584736592', '2.937580574172739975981907042564559944340709871604734255385615604239771087687041986895276609517297709801222177972170328755157939564075490962060559952941922254377647597925548092640347481119088e+161'); + T('322929059228302.42232788641548949211838', '-18539056294225888575098493056536343700876218241905416897333383900668766550246400797654743627780376379843529081553892', '-5.98680000807490479064022688673406386728717075134452992916398938660729018368078136257909679075702485459797355840674648444941273018869686024213037721373496e+129'); + T('-0.0000119088486605', '-678482308015968521186583296185550742292089152413308996093003534425067540438719433029394014', '8.079943124988915136143008357350970716799926602463815180494764874359731216575673502367418360750618247e+84'); + T('-15743621782091209915924278', '3274082843013731438255081795999294296956951330200864645074905956456916040.35509269056', '-5.154592196364209761725129736597728957541850874359227108512452329645582903082160123855441179599042326424541568e+97'); + T('-22.04', '-5944551299976709752172805837341550253708966615717585971886595904737262.553978573497219171324864133558843421716871647969330963830798611962604850', '1.31017910651486682937888640655007767591745624210415594820380573740409266689687759878710536000005503636909014639851121244054442830801407655810894e+71'); + T('-0.00000000000000000555645728539942948834543543660522131579870362355003609281304516197635570002691794651513876516995679257618212853838', '-29306695827152569391012711584981295617371666610349814272.592165236226105635164951770704628516992499358459197490584668922484814646542200', '1.62841403539766953518495453372218761268090502299476097416218349383440252143468559124456611158096941013793431583395346583297449705537413859250236966991939668836100087684424197338992971973055292271335773446637724947073443337667809840027147206989636e+38'); + T('-0.000000000000020742270836226952980998683613591994841969458265756792', '0.0000085068798515187907992734965918590053220157266548600897228989451266931328328578374770020103860942048211855612454052631692704585242999552', '-1.764520058514448864430556069534618615275204892312035230025568038037623488871862099421613268028548477427078877470868347138110966013281940578093221932329336549462641760519469552917396957184e-19'); + T('0.0000000002219866544727448068271267401609565019963347224974926712349689958555511499', '112575212318901234841480884640021.488017899845441345152302010098074629364453', '2.49901947592318130801503047727550173178035497206246305960969166018454548964265488494296651336239176806475308333361242019778922151710635090703345047e+22'); + T('1315378829978163097323201091487091023884510464263405789489832239136944342027634418586990942689761050161994364084475', '-0.0000000000005431717253475371481154070141404996706352278219461841093282411', '-7.144765885648635691663776677388815688808217253830298250560692436430854724042690565481563931808762010822550658080798534063657410136765651632899419238667830655937868686635669225e+101'); + T('-11.974214873897', '-69620602709317858077606.7777617143271605405821834772501233928978990960832960289391723644435809527901763729636', '8.336520564915876725076403852155386259151906493644770055032514166066102032748457719926765893410251855328880867224141711492e+23'); + T('0.5799373425407396613321531402639174796275099785413933819926994175405948655805025226256707030596694071531988549812177396212002923068020219', '-0.000027700615530600411086471711309277', '-0.0000160646213575591435303047842679851674438314220751425839463942452348275488872543258932816330972165180823475893661313040152587644081646971818065194220662714757232798271663'); + T('3552978384198918.49229744871077180734861394888625630207038892347651291160127968', '576121651802272791027406554970', '2.0469477755224511189481484697284307523813499893489378816814079522112320677347783327847826609021022722640096e+45'); + T('-18851687060584485145327914172608439977632012360714293181151849.676443352833892494771644740339', '-710051449483.09545735', '1.338566772256972884671120004800472882868495911897525532968781498881932306536347328148798533337590085679119904165e+73'); + T('-0.00000000000000000288249562210477058762080967034190536380', '11030576382737761767940218.42753523411870710120067239740266744266743407186080051248604580', '-31795588.13253387463958232003043592787423655701203989880802112096311021607776492918973045954883598861925991488365393167246204'); + T('0.0002651045160796089842082260007521946896171492324757847312814436724243594046468985409527086868800904047336619267796004334725939839850264', '1.5', '0.0003976567741194134763123390011282920344257238487136770969221655086365391069703478114290630303201356071004928901694006502088909759775396'); + T('-45630450424356227610905727217979234106654796.6161863250137780341068134637326896292372723834060729494223789898', '-0.001886550312601736573060142331616041564292703429340077718703409523396153539560814169322896332023638792684056481', '8.60841405122272844640400481006709825973377910773092658383432035084194649814689826091063041039246763382818233815115923828311073497379982604148882785954606467953532261460988494258202205778413397486064962158760109228938e+40'); + T('1189249849326945544423032382429163536272388440707777088772904521287431570230109527744855960682093580486474033014', '6504.8683354042275751628267409987442515379734097114877784676929229119207894859954124', '7.7359136877710967170429074459214076095443123103950889587500385890668195031469937128361362071610022299701776151817353045025434440446556587282911741416992344550889955487947858660554683425301449736e+114'); + T('1128441920157431650427749624713171449845850142623381662768791487676773466730760868814283339962300837813340670485089015543152474935830631262056277625', '79061776144493796403585114968361776195990966081.4355019441515980323901471378982885369231', '8.92166224835496029459276238758633651524460082513027939264421048853489989185952160214129336946076678283640307013713880795010401659801489431413165623876916877756744842119523338662139879091814025301405422477576287618845313203749568756375e+193'); + T('0.0000000000000082641501664127551186707163886525969338633571732489264646653134052232915073527623626871791859115793743174790277', '77102203524923153670', '637184.188091283794704877392959386970281584723592270762046140361002187615856825504876006527697363766914328733379224518124369286659'); + T('-154596.64783108125962775029015421009207072050712414460575385753089518786884795842152456687953719640163452440709563114', '0.00000953332223165578725654281988611433', '-1.4738196597075074167285758911774621445701892232319827414730606050858237209327721967567187682158190683858892715205135805644946318114951019760935482362'); + T('626094027960191400373416029.419', '5878856.79754771959507653634625689098360680482358703172927092067871619778735053759313320563725801048848752364854140567987016428762009823015837615', '3.68071713217780322698039882190698318126112699362991022750878399644122991392056045799737440726628318401494664115665446003913196526833417240938632301385924540360002145766795685e+33'); + T('142.135419283057828760365017829388355940936300046104351305886714809787574819399072768256095762422384093950730185429', '-0.0000000000278515979862993195214307567411728513299170817121298333088852493894670155456948388404536227491002693927300401260266753267364837037', '-3.9586985574858228931018800299373061499410310433476663516734373778684106112589529389671174026955027434401703451041795013355130980833809943565348714743599848089313344119919746925003574800408491140122381937990968341446536009851615571381376933873e-9'); + T('-3414337375638988582664180574338695013525096328524003701356935598956539630495832919756207376.096050041684723108331618893085565788050841', '2373966573751563392591661339321041667260.9102329522532997791967528732655638468045668247650320116224114705207987248257276765954175435815311222155414632', '-8.1055228012775943922611598191168220209920422725184693447914123413517420845343602166955572458315096659666380761391540010074112348208219442252225691108563375371596959919631253585651006293756277244412869691262300395317383824508608721200136269451608738907028690741099725299413451305512e+129'); + T('-302467810214374958256067.032373830', '5575069632929333955431348.9768', '-1.686279103664794846091850650203678409366941699204314045597144e+48'); + T('82697078376296338907581778590825184109578442102991030323732250149625618801404609650700917759037258851030792.4579476961905660977126995470583812166076', '209841367832573904068305526440706142.946', '1.73532680422395935522579385025838046972848188875755297012803632653935308780712618867460319171676636851490602740492068944818297966533205669240452066743937774780200047624598512303547899896e+142'); + T('-8610723620694674804743328843770809170499375.7454758671', '-390208977887824714144', '3.3599816629058183220228074369266852148945886756309325082365153093080342624e+63'); + T('0.000000000001665736409252239537708350662977465625669000790963980', '-0.00000000005397325311245537834096132969282540541809141350200755301957235584804115716973637524555508536156078477308323210', '-8.9905212835203683504110846121534305137961327547168950515670333480752564275581116048493890275734599276350080922308328478982195507458726674696580816210133079758e-23'); + T('-55009.833387304033632191465037502050438168517958786455204058304623268020750747185676992712088', '-29561521305527851502676865044574530904951941035976693977553088501233865440936246487818963545187685243602080828543148264209993996454896778956464642639', '1.626174361692325529945956942756425331503823214619006101333940515950960317910361711714132411783105515670069490701197466001427788281114415821163283764678271096259297038980050657582474248326862791843561305280964954948600547092666115456335520232e+153'); + T('0.0000005510346818658465664306888534549271604193320861182474130165534720766271492178988616151168719125', '-0.01183566974341274034927329940717360016909321111795523305608990101374740733837917774832376107936390300470266447548265172072145593380615098624169574', '-6.52186451173066523843915450437892584263602058413986588969423688481780355800652939405885567360640536676093311565481528848197657456939614662844329592819951096602632005849951491911991775291110362116460575276787590328868726322084826837690275e-9'); + T('-0.000001849521254273283959945614449797', '-0.0000000015253958577166611145202508909209879321211559950068605128152947738844883802079744653882403', '2.8212520600273908617019782505256127608067239079286482382697098430394398747360047423507203058647464997472737712785222191e-15'); + T('-309.68', '-96055.1516378444925', '29746359.3592076824374'); + T('-168028626126473481129367789758521978889200869466491962302048311336890634520017.5719333163304589587068817821858799825706754229048601236351696679905637', '0.00000000000000040505144173091841345427692344370044084035179023758893212083311438716720662223829934353555898735535197317508971014099022876688542096545250', '-6.806023726459354860300059210154347949752163001995863383108662941548990570394989515646898112331550406123056248481183044010335252896104139538361899382958674774865348411475636358567387218161462977943906814852515597246369885881277132093738749070553676123096546436403361124299691370057425e+61'); + T('0.0000041405315442707777667317116430726678375268137201769082592971414397218413001195015562151372405002624925536507988661290804269379616336095616', '0.00000000020534154280912678549286088770865816', '8.50223135350417750807611605428001794994175049772882453947533102952716919656365787338607257071961225914246011148972124658358852928539815938659942645226103867281485281862656e-16'); + T('1043304625.7986054483292567142119628829071667318336', '-0.00000000000000000003922920237128071855393930461155089778347745292989380337114027290711582558804238092936477', '-4.0928008300346795587963967318969522795914555559316007448013653233486980241052075387119842284031574844035339709938086685807849050185342272e-11'); + T('0.0000000000577244850492733199753691968434531131534014494738041562671682385265947122048380667867064559302522087090151313923160444265178252188520771169749', '-2993829090737873263916664.0234418356069276036115961287838007488804067542802424350078567987894997758950299', '-172817242588377.90289435436410530982271580018756182908074690988652090894327112554557513833605455776187642341828319053607251432332962573366023560105756765820651824786361583489449624159271997847165480283033635286456942690484125635118492744583304951'); + T('-0.000000000019733986238945494869277217117479256444529951600715483268803452518656509029860', '0.00000000000000164627700103694856499141527646022342482582124935390975524916641794007931969687515151257818754024349160456008195507607', '-3.24876076839556011689439563662251683467519484990438085916787388341510942412905771246984808263084148148601145015559577022588882488930808591955187411190280597100157082627777854794533428182014502e-26'); + T('-11427925335330818004816066050106833418219402199072704112963107004970597981437954806793580004070019399256039487816876806901413994111491.92397663856039', '-10254398713648367399130671587602705.557162008583916929614232815559112128534704736523', '1.1718650285828592780495104592683632759974828335670562590852557778855769937220071548729686706912740577068594561471384906191535657977013468872849927726389729680735882934586903957393565745867332347237612282016833288027776053697412397e+167'); + T('194053275594004162536549158604917941716280933587153407126108810987941717.1', '29178', '5.6620864752818534544914313497742957033976450802059621131256028870061634215438e+75'); + T('2.93518376745944436515386335020372331712985006976884316865242', '-966659011212373171674223610192618777699658.9609647969094449683040295199948844301663048672586994151702046353417857765604445661', '-2.837321838378954758771215418938164310917942593004475873952183940640231881169627087395424110407746819193011896535794052106353148150659770269806093135838159918310696520280932274648614962e+42'); + T('-0.00000000000000000868510085783592320951067786028338014000842721104291268902134885144965679501434098211679237543640508019493070439633157498534035049527', '1.66186927561028596926036092509335854186047127558602856573976536260498222833648503213450552687521363067', '-1.44335022712140589682935718532287891186909515934902995812983197529942616459692310661388930461065190889143976230808707540505066234871399330617979826977854860688501351020336858399810037738138869688388995164376763031097320446355893619309e-17'); + T('-1181859428272891621990692513.97972526073548792078905838349464918869621234377765379776830944783886329774493550743931156263730', '2.9941', '-3.53860531419186480540233245610669540316812438363451970602132913587532937850467323589809531777434059977811140282404274969233993e+27'); + T('0.0407860495', '-0.00000000000000000067006193014429870550943276612546055857881417429492755101247850388305957467261270841516039308586250108088434662298612276060', '-2.73291790509309091456936475161149575524931645640945426945087233770604100240461282197497983428394457192787524651402698407269082497e-20'); + T('3534937774831542866352533130845566313027721824245809049775432305752915295270444679.5880933827075988', '-2.2480869970190', '-7.9468476468700692010170378639263153729049188935676493712057455085625903839492076731999624985988712896442479772e+81'); + T('-2313111414785056499431180531976979973.274', '7671974887242891859494.557233282222057816576248', '-1.7746132685625829899267375266227186594583558197192135674091228488559599633565223195952e+58'); + T('-0.049506264282575986354429257789413492175083859994025520010200438659280593549597224675611141989487638448856569022072780436586696496251665748576110537033', '-0.000000000000000002289376387781964560762840433567145550', '1.1333847249582310289779818259083630345427337255960896766203043455335894797786980608848419608105331975026702045607659909764116027289661369664795559011503382603816675539847618267537615315e-19'); + T('-0.00000000875646084168554507977167823489990902563799552509732315823818127203671896010029263145066030926978731172618906161505494', '-12149799422754916719269147530161643795542307713126182634497110622412638327814575847624536131684703485487672095750214266758123266193160', '1.063892428796870678069788900402015365706552939454485642953799687841866869693207537469912665183234951380917914005709858797891441500773219383040079223313752838870891947612334390210947680627998406712051291289215921823307231964371826198854050237980522104e+125'); + T('72132913784335037210708416954845481013.4936052396', '0.000000034758907396517145945375764660651269929701596542982929267988814344071126980935379146949580197412941449868688705948558', '2.5072612704706567177369364733761303227157324401681208246105574307760108529931727084685203750541786884736657231851778565267996322876935570476425834209668059168644968e+30'); + T('319.66733043418522086907604142851830292549270071301298537533804754923073658110499293992079580', '-151.725', '-48501.525710126752636360562385741939511370380015681895206073165264407033507768155053809482742755'); + T('0.00000000000000000062968826433918348928022932804766807886926653', '-0.000000000000000030428038130246925313880152590782914692618238491169604901884578172392510096079664807819', '-1.916017851748168043720386562747740471345349440563638610201143130913848507924678149083014143799108415035645952111410793293793899807e-35'); + T('-1180774887.3', '-1449.996894078842975987074068709452557439051769626362706935102826112305930', '1712119919191.295852285533989737156299954793129899433988390218967916669531638871689'); + T('3647164297747831538659156395004173038414109110759206277814463425856379161036312539485631.38948348284728053244339540610363604645614853959905', '-44392.7', '-1.61907470520630161146234332096501752442406021521200216529134130525014483182136711671623788583923408994470492599919244536883919513865273858746935e+92'); + T('17498312279239.00932701739727337804928343115988922324826729272279616797560451780334324648186406856', '-165176662774787477578875.101155425022270058043785237734912330043953397824558634005249868631913924077857553397476499801921399000', '-2.89031282647578469354264890469746211626219999574969073812160564852073608013566136037691524827633370435651099998507837807111037742964559522767880633090381980310349646177225049281653222840024159118865374106303342746711544e+36'); + T('-0.000000000000000000924379194701874135396133614362003093078303247619775269472734328426147105167965036903810455485324946', '-0.072771076651632335504153815223990944', '6.7268069232824253584377498803810917142357774490329000970581887327408582544296355494518772848722889546489345140622499161796902801289024e-20'); + T('-120631710673724347689914070602312.9151429', '-0.00002802807358811', '3.381074463822740563254319054484144416394255156390919e+27'); + T('512196210721455510182901457014276459874633282215822699880063790892256101411937345231821904839765586258', '0.0000000000000003806505766975721', '1.949677829934332018345035402585815281370286067595371424284055069028866856886403261381419605884609510991608281217242018e+86'); + T('-12004236887475073738586111006769029393080783935378309149099727.68396298775060968922', '-463794927584484417474190358889847435118899635706815444621012022509301590070944948658314884349', '5.56750417793349844330521891159840232636935946658560169085150684088850605724977314027337726117947637117197173970007342920606127105666878224551145677898907304818177310313201778e+153'); + T('6584641990290656838269978401214918847381615636.518803901787', '-10753941414172447057853743167450817.50583947377863062378420539493289850486515772906013498800287501534', '-7.081085419688558260857966029738760695277290042994837834892489736689162992602408154398193125842351999687246222800816463918193016012785992028984897208947841258e+79'); + T('-24326422199657762368640227996078927157504200019578797624814562110060901133357274750788.36441683868312318843748', '-0.0000000000006902888661514497196311777408365084768865919183378538264433157093409003947610911', '1.6792258397723212195313963158909185623783542066080048568383342089993434418422010559055047531507911817998642508826398204207544200195899037683811355076482082358044434397074053955290508934428e+73'); + T('21501938889227442926984999198582213780754593552865516434.28095561', '1275573970012590600214127925446975918013722828276558737918022879.290868107247330446595401054145784513619143055092036112746185085177017939280940668661320', '2.74273135518999619237055481685367562157141441273837681617196746425111391922129347808060414256695769199642463364622072974665066305632558241309767154727027823910405233929660720731520333952798686255808870704290440052e+118'); + T('-71541409973383879506417184487015218354.023574350361463350873760009451721040985761853384121351993525', '5992111795695111627085788865.512914195836892777247907010', '-4.2868412658217344634387154093342340829086139811418993420175349903462119580242132265078555221121329803402221988433584258370336736020674652911879732211025e+65'); + T('34142255447580822559151401211062905510', '-263926755678947832441215581540094557891886476037097583650654682043897799149499355822112508751738221779921998856296667571952006518196822431846845', '-9.01105471184188942905690908904627239542616349082031787011252961375696523930047374090057038095264861536129494798476922062541028503074147788683121044719759772706042769498406102661595e+180'); + T('291910578907226789405906209195597276379329314216442687970828.12263463390116587613', '905766156845279032080418309.2899374863460', '2.6440272319927938125314442437268631851150779004590992519957935351389114318457620877828712701683102714405409392300232098e+86'); + T('0.1447018135289410248822059919088140128370855413338568649453428485887', '-31531043177144606534540520126449707592.441165834043265865498607709043737814229488899678036083217728937497668745235164920031109748', '-4.5625991301921670224436171827297160639926118138546258979023381434676064727971907159899790572618884224647144712250542121029109924335769933935852618344978968520165094454255764789533981971966126476e+36'); + T('-431470847375352240973824243957438268864164144677055441855.1122835808', '-283926397264833307842262874592214804147456.35181960193341', '1.22505963220088520133492369378146202611227577382619697690196693448533411156116335413333343159557018405513846376263877954528e+98'); + T('43.645259992317026943608411', '0.0000000000000000000343476666438615307467230521728116897722871849771845212242115930032028373012984891992888161271678789193222138335354663458270965038', '1.4991128408007717160640135031205392680494419814377001223461964538550601533847575845289929527748139763281076549960076386814116184051973077956967114943734618e-18'); + T('-5333642642837544.62687709591677124286121489157762662337705954241856563514693012115', '0.000001092403520420007654847736885', '-5826489999.69800727677170880845575478173936457495066350494224786180067840981405695080871119365234031637361775'); + T('-72389949638529267084220162178469797619868037471866853897782590886837793391170450755475695445589382444913313865539107.825554816619359474078198937945329', '670516724101646254739075469170811171513447894797271200380414002599176331305558057030387883188608917', '-4.8538671889509795604939125299480164673783805114262471410372408819538068738391487961206173796503249288962752085213903270623213542356008521417558442327238499890085384270939054062390701273409174804755549787657232352912465878135282338593044925707898693e+214'); + T('0.00000000000093389590550371354609879546798604119093458584514838', '-436244725.94251597789915707849842497816062786670486162986', '-0.0004074071633553053150284952158066178287741661729136343492697908838085289189761762237068783682124527003386268'); + T('-210380536819319.64260798498975775170296381658684501981152412255070635544143685331980809905', '0.00030621239427093550265058736827171066633126148745977590497591435654761612693434536026517812303379', '-64421127887.4485697052582576831125251079439300578331516148925455276348682374579663836142871112701981303186673805005030452875519450671912320654524554714586680026745270896999533988168995'); + T('-2986425419210684489372385430630802680.1700076164378161986', '-0.000000000000000000174383713906052937878565432107027682509555072891773406016182697852642942595757484268776430171027151127581004748120018091764749919908464469126', '520783955905400215.3593326533209447186843411978634958052248208818590205254321998670705004791818240022569816115585565216755711284287526937950905747371255207376455031602089558157107952374519123844236'); + T('1005275502281605.7203063810011538411846251379520165504332670989327995886451', '-0.000000000000004001673036573006142766297120381368448210468914793665305672717', '-4.0227838718076871277132373250062298425694133513895898591969064598434150270288761898553450928567831052706301853626314400639691300657367'); + T('-592443055123445281554039884803217796883007011697299809752867837', '-128767025696067370042375219001771824840953470096164458063850.3083988758376157095926583752', '7.62871301025373359356475793746178927840450521702002697787427513491791642079585760593083059843100862890831979506992101025525289259825474551988167584424e+121'); + T('440119636500787798119778.1614067114799921393251', '-0.00000000000000000008016651264632167527854789402319094526310291781550499853504152970195676032634610434380960951927984204641071043406830501', '-35282.856405434903813597479779632705556601606542704671605957970152900017367125637334582859462287579739167125492423421901400646478981405910526064055108265969922348751'); + T('-71579.2', '0.00000000000000993906325920139009275587686844510659032911932338073755273459775736935248889756221559252800727756986462003224559457716', '-7.11430196843028141727391461541805973650486097872134489434700319794292355673296385342340680738522628853610212113863357451072e-10'); + T('-0.0000000000000000028252704404880797079738', '205661433462063.7105307433432819704421946280137966217786600779', '-0.00058104916870877463514486303435785934208231367367250497766551677412065596208835915902'); + T('31511547820580.4394382615198628132988414617215767834965945746200468417564092109397320304169501963915067332074901099286788653074716563043835', '39899961813398664937157171453593.90023813309746209966498824019924844847011387015958705088743565647183663555197208597527', '1.257309554722245458313010717601632793452987822633399487410911056875703458652204694414418020975982056391949850738256638817586034701650856414371301609334505840392336061143829107090319885694135741359164686790967904196966939338727755954779566674337378573596045e+45'); + T('-495789074385555943868529017377472010212654135435451505422731855063537551062677555928072920281877990746962752595360995056758586999317669647', '17819185082774026694204023148577882778297684550452324826832075039839807470403992920788019844375217029982704245209320846148492.201', '-8.834557278493440769527646032308030350371362475818934570787903683344802633346230326610094249834365327683855191264428319975098552784711089348596608431374093713258545096383387667958040878506159831317309788540734024264316478718947843168246822604530057437227626073923047e+261'); + T('-12262785235810622775007408988251878393679277845775461370985491116596241792393397087453508079734404478228220643516598880369382712979645406460335974', '-17339.4599485985180854570917062071088513028304627905849022429965380282572583049408147112553558507464317495273478217946882351121108297352639325', '2.12630073454603527661886448347291489452541354119893214674919284918523671819041714914484722504179832434598604666638655329939148126697219715586452788601752336764716691015791681243794848208962144155133293203564192719333981843088873686066209217435640467778541139472308985673249979514457755e+149'); + T('-114396868590854104192672352367580744901653263217987528344911658496559573111650716561664806136683756515973087947398968856550342371023724981841598828474', '-0.000000000905511055947334', '1.03587629274772706348234847002960858371371655011375374225792356944117914008860239779411591084427150020831085014159874092768298943748156678048631480006184964643588316e+140'); + T('-1112241862840106360548102452612787954701297842442745550953310708233414570014516673446141946344195030870599027775528597.64281848005244542515', '-6348759644967567183872592130062154839790.5635484413196596709331464307', '7.061356254242819213528914158861347824577247501609657702110667409707299733668207944491015232613785616142229000235550257974209644089293373052607176525740858805900274429133922740980503476595397297785266512105e+156'); + T('1108564966618799.684583511467562033896416379326883221554515730782746395008239020932004268892597106459172116648365972554761', '-980241488498709.989691822562361049071', '-1.086661372975934954665249154869827138993085763955003193792673025483663764315894189566505244862737823287988968852517424536981368134752599081608376589955677031e+30'); + T('0.00000000000000000002838698369819955658555277373271853993941828559300730453309757421421453', '43513833879.28', '1.2352264929772849320906997234371440706324351943721359734528135469244723396680419384e-9'); + T('-8511924985976613630478857403041973777452.09177107175699163666864323186579824676938621436941711058306956193771462975562483458844', '0.00000000000000002272278230386744849803445244424', '-1.934146184431965759189809035913423340545514889094246651943997790659345002151610321611910790026540789359818166350027713628491983499298272486356031374524485856e+23'); + T('-0.0000000000000000004316812723968992118505000444628085260048886312014882985221720513162602276841485038550245898508488835', '-76290177257460517.999473', '0.0329330407898855391252124225768438464877945578562524623859269076191844422317697448247001533505237464666728778267802556383955'); + T('-315381216106477443798809516461.945916162611156190552321997295114376958046547275354056014333919065425673748199256144380585548066158378662409475843035', '3589.161838511444431440733729960263707637958181400868325358533381567057455464602280029192715692411789833427', '-1.131954225432699752649141397708477473892667834397120107511962996304791377678417665209758473239521558381343101328776946782981992193865294194693770979873300748942276223781245879606796533776372414124841041914736508348886070269056497656762529089763048130945e+33'); + T('-429554289753358320963153203206734665772198736780.45185520786347258238318355302967532112035290', '0', '0'); + T('1463451471384605194456038106049436218092078691173664424376798273282402411629304', '5.34145410132810384872275111495210652002710418898122721083801583300401806143614616798518502693357282268142295737452661760061198730650979349477', '7.81695886392194762437336924065337257968714608565726584447407244448623703884415455226257285276362586454773057274509044560620808790280438685449822124417639104621469226432169534908781180559594976229125827018100297590274008e+78'); + T('473586353851131907618376944471474603970238923713969727224418527992189433742423567976837249481727621512554255639.8', '1286427255593.352272327514643909503984179320306560931658975694284708', '6.092343934711738377612937734307383870923174240356564095828149119059002227331699554845917346771273434048376444070758413332992760270463202297025312107690635975666422869160358961784e+122'); + T('-4048155812027991860998261874719005077642504207127030646327029367933424762620898655788666633040116830297381192885448334', '106705036497734766140329279268252590446.2335278949', '-4.319586136709639909348938311306692360922506424385494354567553905770000978932851239614330898183516223949738019390821277918151726982015490940436949045524065702817320966e+155'); + T('0.0000000000000000000915543732852883697633526279049753860806942872601198742215774747341', '-34152105784317312126489961356698852045721114680628002017655109882376030549039796836.83153535701271122760014588481469402075074299376935', '-3.126774641456043327979536556784366250157747125357071312778820430770070528036829464402201655884092881178626009467738410063014596140203388175163040146059581509034963217801746892436203877630743347979835e+63'); + T('0.000000606056178575650297523536090137837690540483833323054730991196951139940145168062878729776556286621722228058423687246723575421211', '-0.2110854059592627472281909321180610299910818145371006157746105830582652226002916315944873681237089216185278265414045060813822588197350141208020650990498', '-1.279296144887605810262234886377441922843377685091005337867319233708631851469414819167991307615079977909703057135546912192644428529187862612840717830395670958420462971297341460134768276466347220568187569616383072997479301070810241184256490139848082355340819140700544014708653078e-7'); + T('-0.0000000174023009167704116970725301110863248980544485359112331870888076484651233171728545', '812850723207869191281548186903956096.809765707322509394052629000163', '-1.41454728856777941909802731675169558153278554336163713719217823280456330004090313022045897019660317794534957404145735837838652198044782601796752835e+28'); + T('-2130698.0548286272900651895094179021589945303831135867320568', '-9165947089300259943733983387964594800521219964489263104.59571046797687349727612030295852399844295170184636', '1.9529865633834181981295933885978264475195798583990822467641671177002901506455322929500790695192903123945610282587760480932085484711958893867394353314006055160393248e+61'); + T('-326083155399690502439723947025744049762670117683.432074400669883911818553035189833194671636060400687941284537881087120570924444', '-0.000003445571861995590614007298331872337442294157873364826604749208387112491508', '1.123542944915909132217079826299777527201239718962104484441084589157856017183525173415387994466036390860102540946603848752279383640837621156142175767860780613378089921458710577851612660512939659621552e+42'); + T('-23.2079521420353162165629346282760720426054683804749740406', '0.0000000000000000100667680781319844905727827890837263875737788345658863306751556891847753254997696006873526462699281042889508598121471367829087954284592931196522647093', '-2.3362907178225593297823553952359877724440294726489222805197185879544455403490267478912169784494515330509275220029014923616029924211711606761207039492261868123451812767302600437565610895313205736991700539758e-16'); + T('2285581244840240639260487167234266.6210924312942573974763401176849472', '-0.000000000000000000918107', '-2098408139956538.8125895280916479508246913088182767764248101964273738189504'); + T('0.01199215867887013759356474044', '59219069282514349738400251796939074988014798278062054247507850372485277499304966991398291720701282976974931657695.89320830399601932636241718811893409', '7.101644756509164313135142859363774349015749437363131851507359602111507670252881439883943580721027909131341909904887723338723647408378876006443896747938535856090800949803175996e+110'); + T('10418927567085948892137885878723808945364687260625931932.039351', '599680853267121291448.38087680537808199', '6.24803137355843394317878805129936255762113268577294303839429005376139089696541797413362353758438849e+75'); + T('50831867721704613054022871310081961685717811744979380239875687986166840752637964249209739.95742211098733326424751917109066551862656', '-1632931078636285445774108746380428401452629936953024735101', '-8.300493658790009540471378875888368284941161669991237260884060249140601673097481745352940033672506184736998843139872004445042382050600280557809637308250946613651294900726384303212534288256e+145'); + T('7100289077488660412990.83', '0.842207839712975032430755755635', '5.97991912528935706872007298550620521929833614697582705e+21'); + T('71.01883', '1761970243586301256729933.7274571136169644922999518937631730701127745550670073949565808130784043676096', '1.25133065194314119280489519301543084253886394686592551344848526917216954629436791164270145276976454523688768e+26'); + T('39875156712019325311551200466142836628229123594325201379832637310133453471608904683559565236344258.967154811777952228563', '-0.00000000000000000070081075140934755506891264428157216975205610555238498806', '-2.794493853791575200615635819282954125975165218925920550666607458660524754995294291334846227959636949211292863866638640564674087684191891139999119222389967229521626102314595778e+79'); + T('5797150130947834056182621078494110956594842841052090075870166233975375056203178648058074850906399043556974734623', '5994943195099.1328888761373637634842940850229730116836324780692494703604483', '3.47535857284937649148307887121857419057110304246614305622459943600636593236940298049819575939494986921577262671435104495090825963819204860688181879997983293665235062953417708960478114909e+124'); + T('264016746346020173260674845542.56087744794671212', '44725565833116388541385131784578311136952.11515649206925514017678106974916075594822233327402018434035090', '1.1808298369744115980724840684122092341038122639077601880904123414433464879079693475998082113642766387031979298492866976697783365167381515796702082908e+70'); + T('-1204258217830.1047572987899835756536353', '3745937592881714229717990115898213651381593777161096717540301831660255825874475111361207039098321786912324541172077464946165364.14390772997939018900027', '-4.511076129706525686579204142051251397641532749272813862145610194389074922134315457597697830334597270566875350716009107169694204547970082327051675594936881425342543316554216670569498181531e+138'); + T('0.00001085056051858810623505714593197033408403035596225606886953365', '-392929408749548979689032253667965895311572351400702674561774493496364595721866845891578496858294676481040176.798243172529157', '-4.26350432917002414454392491493274497473851341095485596409214868708449409899775190195407623094650897889780302985371766392684564356442617678251382828651108441963579450892957153361763305e+102'); + T('5029414448475920188151028145401135310150737258101072206698406572639528330082067.9336479422747818663155268690086170021619688524908875089697158589347416', '-0.0005229224526200471446836303862066185994349069612658407253355478392257635933309390353751513396483385196163571877433495709051459895367873144796893', '-2.62999373863972991595232699135390284144005436661268919696790615365070651823630721931258425392749116101462135216825040904659228944045018325148257573243654477716244945479320745317393867583646412220760107366403103406898337360145950155726573614185125610071875889949474494080865196631936734378488e+75'); + T('-0.0000000000149459394556759606943604866160845855165524674884428420450005789266873424201139870021367301867234201955279838923502786908774569432473681039899', '0.000000000000072681121445777643724015525', '-1.0862876406992243098110834770746303342214020691767313742628853277726465868820586019765285955443439023247300317509304826500549194884609623643817234580349404842020431975e-24'); + T('-424139.3397723', '24.9352665519292948435181504860531561629245676859909123534754923791320492627466971516264644236625241080447', '-10576027.49238160664772089118930618199418545494982358874950081130097372753242050309994330560576035740865221100909622181'); + T('-6547933974356063515673579783328852017212683547729632232078003886270959230998276343908132763800852667899598581090407618744044143894167068562238.97', '-11922174512798027988.715520057164002099095961564815407735892440769625640988450493600253780499938690761112753154279778415248891368390538551750986', '7.806561154055215663901405645925227739464677757390641017715015265801022422067920560519544881469304761133200469523238148889436630472098386093418009954492665836535393992406767441416546896285667079520157050657599018677219464362114136929451396800416962537931259941624014093037081081406512442e+160'); + T('116971949153.5479374797237476837460980054925', '-7392852461118226343653879737274414841079276534234761286995956308826140702012532258763158080532', '-8.6475636218160290233694135116834390249179472139880806248404813419843222333387482382624808997980446329708149926437827055618140989332201e+104'); + T('0.094736370343830975556009350140982661429417188805833955451765939740836399749318571449220541572349173464405792553494108387767327206545387797', '-14063088472465823296636520114.7840889695829209677553679799383909290850887704576208141405158860265325506024127861905793354266036', '-1.3322859577055824770031704859177438035519692243531107997889353707418395463470343576295679587059797728931003195157525260292910231399354545892908442725681827168435407603526548235032165419174525789568586355685792534406527613767949403942954190037378443595809925962692e+27'); + T('0.0000000060238848102401094509085687708934429831403505207577935573', '-26397976144679538690.6353645112721463552724006844', '-159018367519.01583899352216272937345079686163173486566881281209888168576630569925947787199801314243061612'); + T('-3054832823620065247866462699675075655044.24965543051115834991093974', '-2755412779439299724.2984036924450889829105682176654094195240144615415006313170056714410711837165723063574799946207221645', '8.41732540125336804197906254683195597019539860395893943850239114957397624723405493043107443806607146233611284249167142426017200712427976573775245903141353510518411863114852845764186723e+57'); + T('-2450974019399956698469496563794.9748364333942615279874848551026505204635039431974104398444982010445818729382963397261226755940436258158321945719', '-997.24040302293', '2.444210318905143470429111243581921471467515949023475365592695716839122688195540502841004451264728108191685433698308378621706762322759533121835213000697233667e+33'); + T('-1593.003418430705083401260653839458373', '81482817738806321636670141568925456324894595.35515', '-1.2980240720128456541718518746184368534776478125249076285377131164060683232627757617095e+47'); + T('98261907174900314009700603815243346086200.8875197975215499156', '128758244401452895992559910962986981947835519218827223291426174867182696533638857.4611504455387701659979843027781766', '1.265203065937869250805348094516614652285677394459393456309889824224472248261724047240316582653646970392779473698285791164886759948690959417233989768983784053494623305125189496e+121'); + T('346496136331578345.6139565562', '-770.118198136243584727', '-266842980172845321727.9109640073233064983318371574'); + T('8094462815401859042799401705641425818247198451174542181431184727369479972319.283362207236223116403463114800998274436638818181016', '-44716739326169.50679740', '-3.619579837016970552211688799002785780552856029741836983454305219747190234820032824275611045529918418220339456506414179332920358828891256009156381584e+89'); + T('2729467653762704.3220008736708120084460677187730093661396089914034', '-0.000000000055233920094409680756264812311791211428686742640081962817736283081966745025774163718774682975', '-150759.198288205079331338550122412955542882826158428646159812354506434469254169683873619612365382943072278940175544745711284510129905967399982740638335337115'); + T('1', '98776520222261745669591551900242713389385936698028187815152403272299821654553681210659893142881686053028403096887300880878591448.26475', '9.877652022226174566959155190024271338938593669802818781515240327229982165455368121065989314288168605302840309688730088087859144826475e+127'); + T('0.0000000000000000576769268158760793228889322171711548712267346092999553202187549995149774466310618281592827181436884024', '7214897443070769737.590335358131669664171271', '416.1331118080442374873530552327247807419822048775263491897727868156732966268031408562709186237110762022701532092252726416209067252838924499674504'); + T('2563816381746605865113037452511580729789619725008213300126058517120912912629866105171095179961598', '-155142400902758369245790224073470757889134578664867029684200360213407983500899972118045933740420731880423071611781.6961697019774959718821', '-3.977566289379913215989211867005456529599318466838788807437369058021539398823672950585044348343474526479765303904605036245529631372734211590112787398817987454064611577927370338439226841015272470235504418419674575665836030379657835958e+209'); + T('21021355066083990352764111626531024748686292365672970531361459847295.43100373125999514720142962920161062', '-8692703317497385289852042779299.702257622199418950085745', '-1.827324029212387699226954866895393730056663738212949267989848701641289722199007782369745673635690581526275165825369689624008225949130316222067517051411026119e+98'); + T('-281371829459700411922161394173847749045', '4262.059148155501', '-1.199223379781965638825029107725389720131878012484246545e+42'); + T('-0.000000000002953739179434260253787432770866951567504749973', '309547007791848826075373946352866230269769314074366092085025869.7201225815415300560895', '-9.143211247914261165868175330266593984659858074863087669862336974871905611291966919042811817692587876933585012091675114363636105835e+50'); + T('-0.00000000000239144278978796819150765880370364103148388159945376101153092134918047349666341937807866834', '0.00000000000017790542655638507387717413464523193083130128517052867317685503104374366725848235452275428161059560313199945661107215', '-4.25450649602420004053833718175053649747723590806183497288310789806254330950196751041980603311711723907162265791776589017621131644531690317327724762991500539399348391156280420594867129685071798617771660731e-25'); + T('-418172866061503521911971552233519656327026674166049022680423475766548238660534576', '-90576902506171370108917411667870811129738963466006966688282481517335876800502911324072307434897211522733182430116410086632830502124065921343765439120', '3.787680291997906303359954806060523264425173800836418334594593478681399250024197130234921086970287168083653907490426018256804158591064373885502948936834304787910451280809462727218951755689222074507604311322831439358572513258301312e+229'); + T('-3430311267169742574955929826622072681758112689207488355884200258692448298952.3897753652042205852531267397500939984515487', '29178195104748190876234156211954739009200852852565396294', '-1.000902914234947463302590931129086303752468365453949881103219746142108956587996112362845161460507830640398391094393578265988318777026054838820693518977773210730880397735405178e+131'); + T('1217229941749445.9572811858261781662798606', '-7688.762839498170', '-9358992343247662165.263684546710966628782232475881555102'); + T('0.00000000000000074169408783659430746120211730010355927129635815598173767929633977753817875737683684742368617111968470780652946190285273916758224772647017665583547211', '20277751314053396744396463.85165787361341700070969293684', '15039888264.2541356850348902729846895882151710461905734702387731438442631412304238135592144651640509390778276828843359389845898882091777630101738827628755435200638106447703368100930825028533561255938115324'); + T('564381466888810169919601150245392062064224480660735222387818244250114897197669997801703266070021836470489338410440', '-0.0000000000000000002645655440014235375760091744435849282689052519875067111364162666736597818970677355465081835', '-1.4931588981175946834283111355443773198028167610654600849890869545798597157736617913162581558616543097793344871513878994482479287199763866058458885636014581139878719012494628251898131796309084420634183574e+95'); + T('0.0002901387540443867013405807910333533336446690397588380128405647147868703703433303126537291208249472115', '1532908562403392492424723937748.472475940195350', '4.44756180359692297666882276804364242887051626129128210500015334075754912171335276467442794092825498742382966447793841999956236194956994747766525e+26'); + T('-0.000000000225264190604268810784537320407445', '14950.700814220268672859713833679549117660443531292433032865528784491376833526537556454874844228048068717928075898239', '-0.000003367857517881911505578414004206612694308367570237761083545225919631139495505710310659653325677787421658102687518302736419664735602327222663837989355'); + T('-0.00000000000000000132422391255571832661986637', '-8685.9441213328949678022978068', '1.1502134908591787160769054777064094203031244635960077316e-14'); + T('0.00000000009742067142157691787222596751006921098920279989592268344573189495144592', '-118923723014528400203978798877563012809910061320326.53737153377573592386', '-1.15856289440289961067833399896083071996865135302176383556314783677919776746205807113913241561786412522310269565833727285343010237305940276512e+40'); + T('-0.00005563546373241014529561050614463373299027558680685062277259553861178444745012994288955540119513731389', '43565560449530398941183073235722526166955055524605404664121285806765679773941818978977694475240560247441941103738049224883.328637095', '-2.42379015837197033639269209261239035396339708689516443560833885654548577622441367344082188020100430582832598711242044837458341177912171781239207907145798643930933786640347757166079449567939368292304555736474640815549897983291274955e+117'); + T('-0.00000000000427087426712799927089415837629262439038369512842420608188380156879105597329387384339607914876727209877963249157620642500', '925233928141580102390081693311444.71', '-3.95155777477363086022568547662201291712827700290280460065453355510078335629837128123107501594590100763786464243066847452995303895192418602700657793426175e+21'); + T('-0.000000000005091071907525480076989317935464438083994221617598954017569512203716892574912245558148612628718382099960321042186876280738556548120017521', '-29849639725760264066839307790055758277806690063171510919436665089162295348507536342284533528662967910860808922458810578140340107788205629605', '1.51966662257574655588783076840748333702840299074683399397337485352697121303070516861952435606970784590094155132031721724526937976956111602321500551446919936325059565949482713352248442850374534543475972410515760725383665948678467615176539411200064096625744148848636243436309205e+128'); + T('-2532623712961933744380270221514261860541083273159263155049.929201610', '-0.000000000000000000012646589646423131239682610662957792721023875661746627573361000945171', '3.202905282663009949513269540690749564425465035038152243969308063023239476727318839202045865432868677151160472201684195600784341492531e+37'); + T('0.0000000113044864730', '0.0000000000000601669081479195180359444266582823155394447964452777', '6.801559992803896747300132989382930294307713993458802443785521e-22'); + T('33142360002065196584755139040522165.652289540188139925590361076693810562392719569608216426237486549208210658659065', '131866276226694967054888110190126225070936217278.208055190299743946923315513586077993', '4.370359598836895991628989736519636562344422619159613116474448702113850541696634666515624356906681122560009861221133939297280288166624498899890285407603655628297984634754638006796334523457886456545e+81'); + T('-28271980269206475098440832341.0', '0.00000000000000001997128856200158301984619314093468302232590147010149380231144706644261177500747535724053029495', '-564627876175.53771205568655371502005478701323612123758214517745046808228380387390782642610030197268449800392442510422897795'); + T('-613824085218213402416390718799790910276979950485725176851655692450022488003571999524663227579006467246542215327798466491629903216135', '144351', '-8.8606120525334322852208416649468617689392332832564915003713350860853196165803621703384661564257162553505615324783036436533268159152303385e+136'); + T('-2.6', '83102555490369.945045038594374940850', '-216066644274961.85711710034537484621'); + T('-19356482713244897360632880493785297953636172550378939890381044618408211766861486580267956414189437617939.34723659706434', '2096663623111671700117269467244749170.87006096167689688793276499897977784848766593786643930915441409', '-4.05840331762504879192862674091277246812216284989188033185403840621110675874956150938505763166302102413483441063564098934208044556598498878291756337336898624598153836135376440509322121089075137894784969112914467325506e+139'); + T('-0.0000000000961833377275620802044513471680247526397846980939658945385489196881637745633153811677968300170851695260551929219', '-0.00000000000015523082518616051240657860119777317366287857462125986656514276221641140341472994194237', '1.4930618884608626385191111567704817106628003163415171598035214188415333416493921720574942746386069040797685559452034643996408611374739944262662458626993363351126829421325696180467755211836761710903e-23'); + T('219117317452336788720880703911762541205752470989076742619261301626536476137450009416861100269148147444076', '1703053723960030665485934204490791810931377645235473549551623.9346390876850553262664923156', '3.731685634713343871742198830618170312603304239495468980986930004166517969952154798942905166375391398101794403344384735628903779970526327721072669544702681593941605616683824986240005980347423856e+164'); + T('-229026139172552757937028186554164451744686.4623797082584117720', '142692877312662716284497225068488555041426628476953112845882495240122781240223136406046110921847532189803193193212616817958104193853628', '-3.2680398778341887238160775782128956864982778025883686830736123355786002576636730049750417595903040868869020303794371246492434867047430164188551479071257052965280634450368893979035874971520108816e+175'); + T('-1073665452168840118738785397447323896819780779969711513798521784434976119794308932309275291527935867797575529606291327909398442666759773299', '-2201739131.40829642230910815', '2.36393124008131787118729847898108542201223436609958551819420766250456830353949023025701558031680369332682327153434667887063193820677205089342493716611601619687328685e+147'); + T('75900276157586733312083235.382581622118846776984080849994704930212640859922732548092821867297114657673701742587369980172993', '-148738026482687430520904431699391318319406299324616632922', '-1.1289257285170424910960307900697967942479647538118082242484827272252207217650225144658178111388034339556050832590401486962625381452243039292709188298700811929089250125886739075546e+82'); + T('3674513449.5', '0.123520835051992626211564329410225789797398349299387483082158104725685223328601760497980995245750734368030304555231401223', '453878969.6920179367892193608523230674423001146096982086973436692999598612243583269792089846259066311598292369117788993786442487385'); + T('-0.00000000000000000003630523450169119195624332326712988718220493077008794952403238435717494340472630938510', '-63664735097223219209774981628599525664223257757965282787982134793736977272874143846.500', '2.31136313719273856014857129786830896070271022062940478374598697364961332865316791963355096598256182029643618880489361616574337962520294943300606808278625781284036378715e+63'); + T('16255476060889702058292641519175308063089604.27385206453835321058', '-179922219665363.16403587084722191165281635104378752030512', '-2.9247213345924492933598059283240736222331848885894205158919467816021766897744680020212514605436690223674872782932121696e+57'); + T('-37337860121811988659501056235845132337764643336213883612586814001890615154275803513.70825146506875697717604166850546696', '-0.00000000000000499312215357184649280143043628595160134265705278153950603622340397592808084159267174620857129590490362315100615527713253386', '1.864324965411862434361080737439842005056233440510613636437519526417257892974279749554865180460594721444483260908377047401237999183242090755697516312142757552953410741754553786322115284832812113468103953081138139580969418569870010178873112656e+68'); + T('595287249.54365530407831622115559910904721', '-1768420334499109507714731763995306162286136171277649865409003891266116172008027525', '-1.05271807696104578648763801372031670967180464094032778762503630348461739223752684712175511968739692938359619321797420445525e+90'); + T('0.002815450816912', '-0.00000000000000018862881579393125180980026941613678890399387821675560344766145135638', '-5.3107515352016691075986894697522001159488606156481160553297195685733162144309856e-19'); + T('1746219149830810782027149888420786044489923228652389093.034680474110962166857959336903', '-1668828010190656.963346733783314', '-2.914139429168972634501569834110127443990322655116665224756513968188822900984956290803407975336799390526947925836542e+69'); + T('64662722228212130661621650365.32166567378954381', '-151753087137277233145197949.129178182548659416754566676577139611814504364107493968621776', '-9.81276772083142891387388835588024421410101593988612095879269873008015700198765486880253915926871899215898047800746249703290547200656e+54'); + T('84653669316972.30754613548716676668630807374200076888152269704972414345399368365406435043236681022822051377689088018808589089790', '-891907791289670302078281451791247530469932219962285948', '-7.55032672250669035947286471317344472517407746317731670298580361066330532006715429733763760659799434857873085352566481727017961595406096340089709578771542056983935886992682102727092e+67'); + T('4345027127164155965936089847807081938532105519246471030938300717258607661737728621832645960975070377608443948838275506481065283884757.660457292004587', '-0.0031549860729161313643870355404353', '-1.37085000726457005604716494913217288695044606549706377095554606468800726719208784612404038925962557552104905114304146931613984052107356347854256094879310971318422341980712315767211e+130'); + T('-61520610530668063822131867448046406754862343293090074441673351607446445867575168630626', '35605600761.929728479163049', '-2.190478297185136890729555264108152753112278766935841211441225374439764529201743516915979466007768687467908938674e+96'); + T('0.000000000000001947822987703', '-33311862590868220285105571017136406095755495416393335802876470598016841787968672731566765403', '-6.4885611717696735160488683809368479132926370588940189388177405221668999878153400559367803107491154839309e+76'); + T('-72035384592407021674980.84729507555', '40650025408409173438512516280344375884605.60024427411502645869761254054503221638189674172185', '-2.9282402139858721209738248775767586249381088104728312874024564502752576950437939324991537671241774101883194117425137328357675e+63'); + T('13803733920957278337452274188531173497859274744002844428727547285003127728359.612974872709554753729793023049535183014700983630415660322292927376558448', '1362366267088885135733900716922.19506685185416683405604525950523770517636717536975000710349005385816611', '1.880574145378278711827375831194045930202239941319475711762021264109852456142716124505511107065080979058954130330974983743544175658555804894085980685328101923082779320611251686876404105639204387659101043361189777091188374895482149778850837141250779728e+106'); + T('99584230876132495816697493861076736200925464688036538302231243310765908574488488858315092454091884601410984087967.53071632699032523', '-125146154822705515.5242914429658322722160073394188945992631305', '-1.2462583575124528246919426619953914719378688358583931729348000794287085154257080128549535423454367290540927132043549939350598411440675286201751061031732125669579309586594569286579560542932515e+130'); + T('-0.00000000012758277143478046864136383313563417', '-16907614855016026181418628647663025463883570088670313587786762910136346.2239859700447043819351603364622', '2.157120361554808579905490037140343865957737705652239636688633884876362102934163912327493095734496347577324386761512911704717665571233374e+60'); + T('11129202925396407157427240475525317417101748679895585149981795954110715244429638119040083910255519563482482.88385201997256314', '21121732286510044978255138780723583329997392678716700.9365222644226293', '2.35068044752467336469513267242489085155640464226702784189610421069783258880761029174834312728324802606762609982209717555410045636138013876460541334152485164353688420275011580410260339339064002e+158'); + T('0.0007623108288892070002324554289862', '-85942313073979832197394484133961158027209650751540287422505752621999709082525249310360508378232261949707995297970944910223297349', '-6.55147559160812975392489905452196370592406606471681012737363795317578187614200614611166153102989166031105288845674348069177007346051710313415670312952762175838e+124'); + T('0.000000000000000044051571525227145682264900344291236843501956911752', '0.000000000017712290570674458162141325247384093633836742093', '7.80254234949672231546338647163006869638114832232612780787802882189163497793578826950951184776936e-28'); + T('2497912210234.005032121063', '-36215243145530210288660899586798506035608544499.347970495067719072170763689884', '-9.0462498049813268339455589123940089929239003754340990669581623284783162621680610224389952660876426692e+58'); + T('1502959485835975870623286636747688.63', '-18.6', '-2.7955046436549151193593131443507008518e+34'); + T('0.0000000000000002380492844605809635389684807457429719545734217366913382', '-0.0000000691300263175410058423613287987265961212556285556225346008695026090127373853991949000359920026136176879063299466975538116975010485068', '-1.645635329963176721222121671096715786436871824519931699863275362362108471140125039004626432868692100285050495434763779725307894808337972261206505074892100990010512693296587878317760379976e-23'); + T('254809590039852410310539126422956405351723766563016602332405.68422228', '-0.00065877273880782339590525760713666216419301807744760105200422', '-1.678616115050522497913933697207225162184024783104908394273110760014145206072260328917980848745450315587200941660750818259780216e+56'); + T('0.0000000000000278510475015254355758436577787533929830', '457360.858470081742985', '1.2737978994588698477266685597352939795610307887931308474255e-8'); + T('-29020220592844713119041607050693801334769100420291179736770161092227817.69', '21673233203860610976626552967575106778601581986955436993267108076405912742379179', '-6.2896200853620150098094834197552528045796701728777707177496046234367216918962571321926709133055901673078103556052889626187364066099134572001385766387651e+149'); + T('-0.078265485392684407726026843083593796846197554496715815079396449815003056610109470601087662461730977229533667789541208863921705388520252404620853855', '0.0000000000000000206254796419314596280180899887058415', '-1.6142631756326962818018348319288616709731477037044772633530435371256854543702769134066969398322149439228993616976959581068599334680519507769306737453547711855684460684428941562939825e-18'); + T('4795305568846848112838662002421291203736834738342747362288755835416190464055590424568070003158113658996255292.35950008158232661087', '-8285467911375377.9458513915656103724404947804473238339', '-3.9731350415920213266579109721401773253848863967652965582593311148492458733327726591229165001156155949294034378674742185027297365357231327284258441411135637685909564095376656361814493e+124'); + T('19117591065319548455532984279934187350039995069275770.12929477022443443469354713128796911998383266548606048053491', '-65695070326024876590276239417471386610369211243031736907459699925951944200466086828836449.27041754314379361686911712287570702272', '-1.2559314895003525759288047359281823933287108050703977637835742243565477054442990115080659989437373048015263572203486399172864054362529301399064585328306575664987751933695137203217341064876484312700608044517901164971224777248000985491231552e+141'); + T('-4449958.97652133495121566', '-252540313515710072725302657773.59471991586456171844177757978469637150589979632648440614666063', '1.1237940350627462471642735367835141315103130147959353855777341370569264164618648847956641021208508179253842679614658e+36'); + T('-1258441607483954377789927095378751802020005502122407.10214476628115698182122581797494', '80891657196033813941356884134762328483.27517852967702319172611835658583660879767525096710103201452929464', '-1.017974271138177784694027841372230917155036713620577632485672383505466603972062360612431726994977661204677518975067557466197345901755339173598338486348474216803531725823378534129113963216e+89'); + T('39808017028002860936031338217973215314567637.102901794', '-57902551664450505458473980503658853607888324171.49605292290375427619687232427940212558542266526276651604284541035424385620765024160046792819', '-2.30498576262326111905050241194114191659986825956183943894195202199609220277997857123964697896577008957095100523340998232771311496428225722320228966585150676608054417194697150023556808021417286e+90'); + T('-25293916752365259143834809987793203971606533992589538543882915368792362597533769162577303959554268549391839092976944430801.45', '-18870536.1312144', '4.7730976997543781813462001933060950776383666075435301423297088056421996528868308501593986755779476128550409285754930853295224839815378088e+128'); + T('0.6419603235395239183208947139633444062611507467701373727615510595813003', '0.000000000000000000017952483446429057318650827831163686139172587165173817840377201106607889427351733260566157112519038473019359253459211', '1.15247820816075450454750045127898262549290759007121217263958499250330256525778703472457460506113402017388245419660594286457976772844458813380078355709054799484514557844989901980643920633e-20'); + T('-7754484348993.123525069214650584107205341890439441675333976581900424068864364093826806102195', '-1752105446017682.49037253813167091733073426140377278798600289379784348182745501211856094498254897275180116436441751208660573331994338298842267191', '1.358667425892973493966955704447747036342266355969033025086821842915237172969178185006052744518082018289583598988482542984184766184862727882606439182799978323965924231683530282046591309550608146208712260753677314753286354780307441584245e+28'); + T('116204805405208024790396987614152308611917319625528164258053148681924874821595877349738878308604676525193568190095523284.4546294386699942279642', '-0.00000708667732873965881702012704870812130887887783663833386408', '-8.23505959955691471303838517278590066464473883263415152528959807184051797771275805894703979322626180999206021924871332410324136063220356505352392864892088775379405012455775331410005572958884177905936e+113'); + T('0.00000000010139065992977811728', '0.2823639034545530635547682690320968784587487', '2.8629062511605290206092872865262220006122998552333654430647536e-11'); + T('-182348440817089344.0', '-365494613346284385774359945728371759418255497043130583704938461995522713031855368282526623182864551158365546976602079453.8724', '6.66473728707398913969618817118679541450450804984276803582504571866881111782170812402431629687112708340501385877734505804826605490564775757056e+136'); + T('35078436593053772121948478354132824046030742485793509661339795486768350160379351940260957647345172644134739', '-470315326468850136120.98841520254693896261066046950478030733711497927705290819414286702121213017731741', '-1.649792635827894394262863251819308110416062211172951136883946185746058880577253761809396392427026832922884334966951567100285510447677219200061048033820977456094076440088034531057882865490348221044489361050599e+127'); + T('-2329710971489131138898317317972150487.226887180882642662346810938', '0.00000000000000080780934683985383898326280513685583649350582', '-1.88196229820427637454825838040513247697835727714033766676609406173243323151115501339627651370238022434265916e+21'); + T('1689256363719086734358832495291997380220279912721648779060.022015003200579854886304', '-2259059589029194007856573438.47207932659178007', '-3.81613078678819075313019801142236253002420775187972657992120430084415285628119278545102507880850081033723214556951631082316128e+84'); + T('50563883339463774987198862916277845601202057166416042879.417778572998829235141574907848222440125486172315940364098463976083652560077213', '380058072907244.784369350321644073081361404543907907939563914660519351353607790299736723712817719111414068853481728614572841297911762329370311135686891', '1.9217212060703343272665422309643023974471329394919471100483903476011902558587720793118211708282887302802938658740501486070477164588947572483424138819524122982371487252360991540904867150086111696239666594880341944141794568786850282040411150653341851298511444181398173001624310751914783e+70'); + T('46294959374709179919178793118885893663797283026751959408680198256485686362073381865322911852807891547580600.01450863642145', '-172254', '-7.9744919321311550777982238299005707271637371904901320159827988704726854186125883198293328582935705506369486748991706581404483e+111'); + T('0.0000005527834082142680454399157347331241068314235320652520705781207217168327100784683628889780310703', '0.00000000000000266632277268185128455781020487589646959589371419742000347748975254376924718637309495578143940081972955041', '1.473898989682390821841521121371414207169953198718769475649011583919402328920280159796586990896854154136491120298716299421424991847787084749540756307376833028770272042850712186481647279973624030103823e-21'); + T('-3018957351229289626132713890715830302577902789980653248950686120322288204403609991088469882148969888336650704961738500782', '0.000000001082120521596790393125823482055072836760853689259276513674877920764922256435650861059862899919835', '-3.26687570359070362516085008576334548950877338799335353420537013795825989339548239608169241156257202285080364129276771767713053661332672872002678878052870887315156625253726777042206003909947050207392523720502088481097e+111'); + T('0.00010578119530223846946702960127201887002317294288', '-6085787778834088.70933788474669577642209247160329424394222', '-643761905600.8247941857377235732296308415119494854462530749858584648799519132617834281892261058500803936'); + T('0.000000000000000039289970150049295306833630957794488396625415545568122904585548214355360114104351072386053992611376825118885803929657418065649', '-4605169823674888008751577292618614971794.977555723667587656862637975931940238288328992', '-1.80936984908094126427921442372226709393792657401598962039210959706690306344862877971519465406694496205108752617960289681246511462795560122095156580067059723548593631880883004929720338763881489190940653165995808e+23'); + T('2514613511.2170783808206929866132543988564534527876194954598859691571100338559560', '-1964495794114274085237575951315085841.361649436638538985888913723131864823298797343859193187321313839924840812597640408726788696766685', '-4.93994766660887745881096220582576848896286904471239767301554888303067612828309748777331041576614562636212559985704314683156812973279114418194558517790467846327290437698974640024899151989425196795301938022962586e+45'); + T('5799359.56694741019279510257555786015925813988005191176124258432699765886085', '-0.0000000000007231844570746320510997217888', '-0.00000419400669980343608737887111010110559927717748555612552954077474280846281811020478125660977836613228848'); + T('-1791068145886144126734036774645051199503204286826392100458612918035133189286803934233671078314145954721325200457399093789769043791391200626757', '1.902', '-3.406611613475446129048137945374887381455094553543797775072281770102823326023501082912442390953505605879960531269973076388140721291226063592091814e+141'); + T('809656351460719225181711866.1488944461227535', '-33867.144809805871082384828278160351409245109', '-2.74207489010992553148307158515078420513099421238160223165035288480514204794793834876315e+31'); + T('-15343174181682054141420677206782114884223299540732121123190447946670136382584737580470391369', '987099689944419071747444299624152052403106779038923393493086986368730055942594131963617011747402639883887116360086428917.245', '-1.5145242477501571458201031358834948135288567189066332534201297139323596513233299183085395688552572218144560229423247824057601351422866714799537508985833062886631036720671807768726086293443750449585213823804063258405e+211'); + T('-6.1499', '-14122475646217852912636972117760232196408460299060710372963438774127.30802263764662251543254158300069146620610278670238171347884347702832', '8.6851812976675173627426114827013651984692389993193462722687852117005531608419262963807658587481295952448020911527940977299723539499376465168e+67'); + T('-252103580004042401308.937513693319696445897233569009398', '322191.07259437929639208064231154', '-8.122552284638533411190811393904476674853317117242659440655935323513978821796270385292e+25'); + T('-332385.3378738577828707399978866231142878436743418042927022688847501694303446138653358154658874513293895263254386919164060798805928631172377176121', '-1788688861556141964646237161499263851038929089394372356769751862189978338244963495542562526495618342381239342', '5.945339515995442741438198459409608195257376497495695646466626108763151210023427170436149956435379334122608797739249630758718894850267317176420365157416700495312818386418495814195596242152257323833373715286243473836090341661932706350920849774582188152382e+113'); + T('-2460917323354918446645703674853641464.424607984385990612569219446652731606596614873511538897698788038533', '-0.000000019704561911223284586046679188808477807835576405248282475083383206973764355330345760276507856652823084974', '4.8491297756448881664126623064115779205015987535516032622595439441897517259719875348865351513634911289023687531425512745832163192476366584227547545673644644097372482366494539257564003995127411984043445303142e+28'); + T('162243669579467948721172981736248370537958026297935040744.847805681773372416035821372548485508877545367724814214913560686058189175343393608601489512', '0.00000000000000043034872397155', '6.98213561759858159315183613323524194776931640410698827712570108401602008047713604207319502488289379085249184148133416471274154998412862192528868878238703113836e+40'); + T('2942112647049268674939521727079875936312678683322556734336248.11424534652681157516904544382063913587308466251549871327575873372911717', '-0.0000000160518477504399168052667437532822966025370257875590966186547766187236177521021479405317977917073345500604689071434454454499836553580673874665532292', '-4.7226344275078632315398240344022433291786804929459211275348315431326149856316741173727784448214255046618190169485768234658926420021181206553535921500696882020342752168452799288030099975139315001872319829531828024996830308930197541236951052531735501834035920248180157363728665364e+52'); + T('0.000000000000085659689652397679263363379344304760754897339', '6.8', '5.824858896363042189908709795412723731333019052e-13'); + T('-5.7783188901971298313183550831107549667729942738531150581362739386230606910679155155791688758', '-221439820124804823862034700.57305405733456151859741120374945380903497467757168028277653394776910998991571631868', '1.279549895669014265673487530332542622307080646887562219389924149894188918975837243317437652487919487957552517902434975981852190469467703844441311320668017835940689319709278323479039083091077241610139944e+27'); + T('-2847941374822', '0.00000000000000000333453862751515460136267946372896613495219431745263240560720335', '-0.0000094965705232425743530447087065739774971604318716917458420879678503055240537'); + T('4600164782241764006590425774876842089865111591027822696582831157578.739719314165811327385420927586685826049515030783212', '24936677097532922790671460124317897120172195409691302414459854884214881356875622080300.40462', '1.1471282377020572147332327802533044122369637791300506227907535665141877615112393905214612571695198704856557157162943485152720303637986357916099145417183717023786789993994223448696820674347492278452767910323944e+152'); + T('-0.00000260679215621874990889590646697464210606210167340857181603112129227967025884261071747351602786622983212594677321781361453743686420364802073156', '-0.000000001556976867693202856950382092896216853975131678027766508144349094921207161', '4.05871508611667956997596806284421681761326338922686367392307074925675080478202951240305304779651248204530654676779205376458787347615247100101002125251986813572273619622642745986755165968519176975902222802953070116e-15'); + T('112005422206895581683067200.66464306253548778644799733891467497177', '-569288990012093221416615337507679289992168170439593101496410.0385811397750145927182473472588677939073196039082322785618764898744620304415', '-6.3763453684041663102425299537134781104795400180652201585238496486086184313570463723811857606393356939337147660320432983174726251428956040334352123843908741307666227939307913535913017213265015893136455e+85'); + T('9234638972249568361641387675279591873348137130244080421631134092282316805807483776006033822789591399832066971', '-67062258760784733815191025025646336427603744103904997634972806618201463866617680780550570309742758409129550780654178901', '-6.19295748319427746239309128664117623036037907234855321924344705389173421377284837396403653127764945278959634318829418910758542716822570206539596799575970845747768528847286120187750160040083010843243686852268940286480535647178871e+227'); + T('-0.0000000000000000213737912857665573638079572432586728390000134190', '-181285730.138353', '3.874763359064957107044461619607858392925857065967379726558907e-9'); + T('-2506504.0733758501826133673932299604035650762719626337255035252843580215290504920568908', '-0.0000000000000000063307590401488217267263854328109316460163087745601605669460055525432479875260852024893294778103375548445194197525199702769907', '1.586807332169400912551173916660722325707840899719608136941744779695862574081783246376975996756197880571888252763332023979673897643998859766655287848000511959009182082181258704230204193519120752866923945862251556e-11'); + T('0.000000000000000029191265291623096374212238517809915598918566680688197689722067072109843781983891539215143111679796529799027', '-144459614607567236763647582499049882580370335188691777.776222539161298865028936239380239788850306312227587059786395648441342513', '-4.216958933935126326569517318236903884107951508793088777740048528137080091324499213666957905481836509907780548281139659624937009921418073052266920044400057847392420013165462539973879514483989622402887652609685114451199224677961134851e+36'); + T('-0.00000000000000000011367487320425818863869979220926084589271902620348942087918357405316552888186055679751253463369024199347442851320519227185478', '-21839', '2.48254555590779458168056476205804761345109081325800546258049007374708198525095269990087624386516119489548804429988819402503654042e-15'); + T('70555122248707171314736', '-81101086022274692488621411837767361950248378195397909.200440873455379623557692889032043422151272310592459622568950827', '-5.722097038804507341200180488072549073313712476829304641270901056694148836393515478119400477210997323863769882713087618465778390141724486672e+75'); + T('-2328737444159883.22585049478830', '-465474361749661451599.9951730137496', '1.08396757550285951917153850391172159248110224634381083904120968e+36'); + T('-20.3014066928633757647889348362325618964962565804945772008656587579802123642954157', '-329435370768184084561406820034073934012588977709700270652517248023565145783776412004629743988394401273.28545348', '6.688001440979140070188345542361244069517729332398623464379411528839275521534924214116901390055160850670677514105783601320874524580245478001576704187186030310275122663282192690671340259611636e+102'); + T('-32476062941804823808177212128.37047244026179396179206', '-23170264858.839398780672784729575796922981615252587039', '7.5247897993395677581189377054108136654093646195424085291052102413168985736328290334867475461403556911034e+38'); + T('0.00000000000000078020818918877022784107814476742023039526884490519321760350204369809967323559671586528756587388436', '0.000000000205123365786662618531603763262183979221647', '1.6003892978071778645361752741729365945858649779217485973276644181520266580188064434359630899417624168875864924106561648427968680391728674092e-25'); + T('16411.97479231952475505598642359391159894419529343140530675214816439312142161965104995811520160184950', '0.0000000000000027918217792698757486367905214734859040448642073369967425369035344103512043731', '4.581930866602584512178030964640390866062580122108157686730832013698006926287481502511491005515718454308878140351176787687577295267975260433555460720995298677352745266944804845e-11'); + T('-64342576782108353170532624771581267539756520906919.37', '10.7', '-6.88465571568559378924699085055919562675394773704037259e+50'); + T('-8221425425564202135543311357128878704299939907773337451688454087709054980064079701204709862893688091178322203851683767887893871786', '-0.0053653210895499081114778560023351704116389771011759394571181993140755819983', '4.41105872219414419707174038902324084811431456260158178418632957765849297276315251194170903369456489104239536734987785292755508500736273353438544501239198533098378964478014299793109607485495440119098699638e+127'); + T('-0.00000000001910608511655268019857813374990127054476192504583955285846583482452368825713345318314648457310037047203752064778987032587853577350', '642301865080793548011195664841322815727082571813145907.638646106551631362492680834939823385729510144767143760057', '-1.22718741047541772674654955433282115912253583024496254728712579960888844323021707984449130867906756160401346562961603346122134581742784760100299534939794183794586063570878664967245581007170245594883361157548393966363447660442291523748990895e+43'); + T('0.000000000000001899500268191217', '883952560680798125471977636433525656958767.4329146255465789678475476012476204472687459005798142889552058775500478237', '1.6790681260814890585836193220538636972839642793176878790660318627202422075166836170289452406463821318133532926386268184542463044429e+27'); + T('-506222074114478440.4212018359818757090468806843375176631454826045115958516526575279719878856236353605111026111752257846026439938084657014050761145504', '-5159467544042334960313178363211289944335613842064316815811191728903.574367721298576480151967142002627219994962105347353373165540336969132995273967', '2.6118363614714449452582198430103897223785994901299317101044259761348107189762413607706765732326606750493547847042725797461693311578242536847852702975212843374994786292094043375579903644474919183423720511760494827145234240751467691929508470719482500262148133264801792166487508484367183230294368e+84'); + T('8650434955204837420156251340980467125431552732.08397236030027468302684214339589220209558182529147', '-0.303570960693217884327420647078548564916276955021262691277956348864969879961811223297756', '-2.62602084976572571043981976309152638775264794392233958131099791715831899377187947876427492733764795120380985528043759980136856459126265934320288206950485593122394243946315413929694132e+45'); + T('166664781364.0082914723488023478368828305505987873686361307000655181790946128760191770642121717143556656346592000446628174724572', '-480041.0942847509055712529720906841565497160321331762055830088670429871444554935489589608266394637805469063', '-80005944024707299.88369343694993429517249943540140207247881593079529829548920836320477337300843753304432472775747784579377690170478442441481497272861023856984874550780497963725202716372180855504618999968964525770542110325165291916036'); + T('-43211558252159093527866775647205601084011492340.205459697805340231598755202803639527161744593', '0.00000000001119203318598549392536941753377009590965307584900110755022862027840043858728011387253539611180', '-4.836251939763099008266531873875699139740918027346229229666486821933921583162396652285702155362998553549998984080376784393703700976212048695921578240422117362224246009514826407968734974e+35'); + T('22228080669906830995384898726318434540920054474075066362723430068303595334', '0.0000000000000005446682564983826904165557014954366345827192263245436061673439169771964847765827397722973716801924439429612435686218283131447915481741738621944216616', '1.21069299437835559678074390552059815249561615752757133499522502582835547433276587506411508638591250461101776265492507290334698412116695650224909917771154983775120278858482062610470094757493360226297555949389464060902869744e+58'); + T('-0.0000000003773157928', '43297647023077445.54510130448338353765777486', '-16336886.012887026261648726857462053937811976384809008'); + T('-704246.0642491', '-4876468942183457666260007295840240729718873395834733463009561654592496364003930788774251638836263860.464149571397235826605163', '3.4342340599656720408721350433721409241108083813038963987160054952477748964430703827960612606796544474314358764054099696015239692357781033e+105'); + T('90714014677317257217388754359562724228350422511592300196367622823480490782750230695', '0.10551171877203891416100509846755006675817523511356135349573800436749642311', '9.57139160531570883071608150743717558732170393411960576472278636404390923564848224638754968731571966908325157310107689739849841961000661380686664893982936145e+81'); + T('16256367650251592857824070659043447853047682031758021447060795635763437999068158011730593356058028259231482670.842728511458309985368672626159', '167180302632355.05677826254070883700709474391390089985215716385024', '2.71774446347188795843522760152851417095331335558235538784521529465054664495076688729866682142620092642030334321689665117663066458919556787136329889313558843246657535262982668786110905407308427324058242816e+123'); + T('-0.000000000000000005140869693986476129573937292110832444827883905213371700103686737472419302083991260187191661701298052551015422048926889376', '-23431072984.29109719929265906334268220161090515289622128095638741310550195556470', '1.204560930025273608708687379702964400245754501914517994869604548744993478713638266232843096136298708651286988188211879699693589237471003927285113544165412103336583365360013429733201256002657445106272e-7'); + T('-600918601565864357615830916531004971541558836', '0.0002398203266606694050330194859330980464992506791531578245580976766372221543075302994826964325096371', '-1.441124953239982356850028499314436394823612382489365920407488055245261701578444032269000578787663442887261399958157232897473876372957266584156e+41'); + T('-0.000002378573545299614819606175997977561025598320050', '-2882653077216085525237966723240931593332010153721729409.189099950085184011450067199947461092968807651228141791418167', '6.85660234974270886050574307192845780707197555258670774440795390596137425374082134400993260259690471606609110758329634878468480296762286592478289418958225034835e+48'); + T('0.000000000000000022357617532781889076479320065100116692254213222725326015200603762919174701589837856906', '-896457719826992659089225870644004458751127732719124385827686320360654074025236', '-2.0042658834201645580346859820519392326977523701452584805357472701178299220185960756765568847872663515490447098727456428199599156161369223396351318781899083200879816e+61'); + T('-0.0000037591700832106546820837009314715135833879626195863911405199', '0.00000000128660973296737392590374219331743360889744123526004704657440431966332363276599678510386', '-4.836584816938601241595643894689727875085794631034207181521858384737358785559745009296624885016550841630384096559285949624409877337769212375896814e-15'); + T('-10897404485088933268299142109127940457874105398307905112497480738702104026493870', '6459527220783833615589828721781406862908330296731571946257487596628.142', '-7.039208090732380052543394587491979904440526984139707627324909518932550024566922074139234694919548719030400279757073454088117750506466392244643248954e+145'); + T('1252391487512578363516059332047552591823815440694963818513488609376352517930673851276.19244762777307975100', '22549776.9253795732526305732013511684558623600507908536351482864251791287592196740297262530719650195640957326260', '2.8241148666652939539350687862707201683973473917640485175382134027259511907319776870024731139293000940076904783362318907295063149688420418024813050345759700762391301983348609040284923961341431326021436020670656126e+91'); + T('-0.000000000004618950388937140493422755399930264176038354392749822437964314306322496775785511138074695877738144276032647315124913748488917', '-2713380462202072657447653028643460793172301', '1.2532969741222701540713742524625604310117116627579838128477044145948287310122585599028058960352298239073038474733050249887724953498915163176662179193294848309569888017e+31'); + T('-0.00000000000000000004741599927671153114706', '0.0000098605921767576416944956043265259701017397049855054246352774023236279136700079166226671683330780112375', '-4.6754983152108772107589021499824280537386842022454892219026854810089318448711395624891020610400431916945696952628194508675e-25'); + T('-600334522639128350301416069108895484950049158632569154577774908833218708159964256760025260070745036754849229258748618.286225296633751065085057954880221', '-20603943628058420.9233', '1.23692586624339624137684561274248493253093335427682675519597952187340115485564971154200167383285889714823571236526154847178654496322656526986532466296684549399002517280493e+133'); + T('-0.0028569903450426823012406248893590913347605950672345342794', '0.000000000000000000380602538484379176276476072502', '-1.0873777777486072321414819892742916452188931452780514481064796648209244384695987250588e-21'); + T('7633371138864371851511200109335895009200379214065654.14141197969364686617958181976', '46557774899433776362769332468929072168263071780847173536.32424609893425634', '3.553927752070818711219752919654829713936648328701795633611695455871498173222792379572585838047775680404274006272352702005591443767922861383251901395172784e+107'); + T('11816689310524760.33060749', '3240086146153074.763149055913088596613954276720424786571958312186345692516028911031344618033329875358392613', '3.828709132842640485458626662093761049902194180604315455762384568460513896245457880390402922939380711647608722106357184891221847137e+31'); + T('15417668979208863688007903355418023589336919725455814', '-2287252965683244062854057265399517873076559773521003653290361219949584429534587223153067', '-3.5264109096618027617770541672930242149319875097968700968868729901509384897856549235466082618911136178623675867468948846074586307080867081538e+139'); + T('-44231051261766981720932141949492661571946235314205992269845098822302266502035476097047272345277610.27', '-21829364252494551993461871095.1405414373418522117', '9.65535729263870199707274609187215999675619566645960063838135526473595293696284813052387836041619820102648568607484181212361915051957155111290134159e+125'); + T('-0.010471648280929367353726533714112845102028595890585874570958083', '31', '-0.324621096708810387965522545137498198162886472608162111699700573'); + T('9801144054.04251480', '-79669022889354091.1326070042372454589141728234307836693721872475118', '-7.8084756998336986277926157641231569523889190793366151638111003547152953122771467464e+26'); + T('29857288634175691192253935741525569423464902722491247366897306044982457983212231816738628626832523979506745945', '133673.6558945837023809692393557234541133', '3.9911329268300663632380133640663780097335900438380448470493780783062334184720774070186349410361053454199720794804033925701541209810757057340083455685e+114'); + T('-13620158075540606.0220850459251063150637623012169134311683793968716003579443803708152', '-14094712052845720944279961661927524928294844400168253261.8801483866631477108668134130846798999339316583941852334437626140968', '1.9197220618898615906375442169544326587585370014151488298656204877054492796167185482130313382428085300372006548553535032109971116684812746007217292632043932773898787721990877866744793392082655385848282771136e+71'); + T('118440515054.96300744924345961909763451770037124776047596926946', '3978918406101218410350317969873779924817925511337423100533163173007579791459856530353048879996496120205533862684343054321905', '4.712651453803007726438461712612354142589559988228956502605819373002120961113842720385180079632764208616661380363663300333950937121937309186788267547560787574638782242683284222185255213e+134'); + T('0.0000000000000000004979626118', '119953.13939299602151864098685411551208280009209744651134782647617437471653240473066119015267896990648067942927449283677891199638584032687735555', '5.973217858574576550243146820040482597564559171812500490156201032898210607636089901472178932446062156472087484005983212281811688264520970961370795522549e-14'); + T('4133032609317612147361.233208455670', '60149718767070729539657807610332371421265360276297353368024670202.145813386468110250239535755215076073418035935987159939685', '2.4860074910558688193760888076283428107792208632944279345307661267298591118711344604905557070531163947655318143762909457571230898163106422046776822919626395e+86'); + T('-0.000000000000000025988801412726981607051504723536759179533093115290316536803305521555847577878002593862833182498872', '-62190864847540861920221512167077698610328189518126509.945114225', '1.6162660362084827318707380558579363611834016595419194188990226173706520381985407013085330782761618687291735642283204415795057016756891900469697853795529736542e+36'); + T('-517391939544713325422033696525596189851051748767955039585693350056993951682945080450723027214906277369681756055494613881445451892', '-6355737319244501.33875834602457354455598517141883018726489236', '3.28840725884062937342287062927549804683222950446951497853928995858263827438383088820860677614531136832120859449547463148055636204133361775822367974808862660315286528874721657070976693834512e+144'); + T('248488108396888727192484307620472597201728811.43632801228625119529655174763542491519552462322578674423725814425253', '-244376619784336994670734053495423487949530922624294868474118463232994026818752162901576014805701186113050589437429269164232162718718', '-6.072468398663559342194397673594158367331416443540937376483832956458681282701204862291922555840434608500693418850945313497296767648108091241452234573071111256003091374254946595152378328332428736545902967819673107271115746769252798457479074985654e+175'); + + // Exponentials + T('1.153024e+0', '5.28973573008e+2', '609.919225043976192'); + T('-3.699875785122930862283231104748329088664056423999601e+15', '1.1e+0', '-4069863363635223.9485115542152231619975304620663995611'); + T('-1.2682525953252723e+14', '1.788378029508237622037088155833989378609386207655e+18', '-2.2681150773465187729527785601467557683746716925715084680772194565e+32'); + T('-3.87722166e+2', '-1.74278705869601992403691e+8', '67571717327.438998052674620914706'); + T('-3e+0', '-3.64329808384254180872888049513111969646643282968e+25', '1.092989425152762542618664148539335908939929848904e+26'); + T('6.953012278719261355e+11', '-4e+0', '-2781204911487.704542'); + T('-7.04663671550547513365402564941508037562051247993316079593e+15', '5.535517336770122093358205271769744142052184795629511766877e-18', '-0.03900677970460142822373864049115522460524845334243105937826127540936694775384656847162726619838459694385924193041061'); + T('5.08438408986e-9', '-2.606367e+4', '-0.0001325177090713613862'); + T('-1.2967e+0', '5.94990983e+8', '-771524807.6561'); + T('1.3117e+3', '-1.959557842524477358350764324331855847355274e+37', '-2.5703520220393569509486975642260953149759129058e+40'); + T('-5.3548e-11', '1.742694574037778940228462366629620551e+11', '-9.3317809050574986691353702808282921264948'); + T('4.34526424962996265825639250671e+21', '-3.754914933534859756171859142125715053796299171e+1', '-1.631609762109069348677868227008975151085048810070540943592037216417378493741e+23'); + T('4.7426914347369245430071315112274335473949505818891357635e+55', '2.099290936966289806252483785990857067e+13', '9.9562891457708756252380705318075217577762765683497811755225761339325645531279572292864156545e+68'); + T('1.2197662968047362383e+19', '-7.9257e+3', '-9.66750173858529800389431e+22'); + T('-2.18492048239986982664891448764e+26', '5.0217571e+0', '-1.0972139945426971341049955535599032244e+27'); + T('2.8477441033458111e-12', '-2.6015762266879431727233849707015975771758956198e+40', '-7.40862335895523532800693698581126602552353137494951139716821978e+28'); + T('1.17305251157767339030842411702548e-7', '3.1679877726710109082864387936446078459964397e+14', '37162160.13379088759968293791782997863641886182709969796604371507532234183556'); + T('5.516400791447843686549580838221025644959140288781e+40', '-4.534755696021348164010120097087738141133999137556364474656e+25', '-2.5015529910554782273339735168586403296046609840907360623635477256369630649686086353650780443350045195634336e+66'); + T('-1.086178703865e+6', '-5.412964e+6', '5879446221587.90586'); + T('2.193003362433320722921995078848109409779629e-11', '-1.87156484301625964803880921322257778262063404562091823011824e+56', '-4.10434799374664745958524117450745644772403340614160247100180995137281346990234693655901738534901333296e+45'); + T('5.690242268084896613323736558476149127814487192716110263e+4', '5.85123113232510962819522680703136616268672961423348513284699e+54', '3.329492270949058963099905818513145552769091859265632399465562585831994642969765945460416258196265143264172794765837e+59'); + T('-2.2964852129902920477142981e+11', '-1.01192386417445983894690800351420572044711646857422992584148e+47', '2.323868190748643763813766975749316051539457362388056941019107244885259571701270065188e+58'); + T('1.64014114524e-9', '2.33457695670849217356126573862065622e+13', '38290.357234267802543783512378452575905911293928'); + T('4.52030709268304468292307103018250587082757e-13', '2.4202633390406694150089337e+3', '1.0940333537626286438097741446790925743401036958119194290469762262109e-9'); + T('-2.531530179588420531938806173298571611356854e+42', '-3.7916295786409190517918e-6', '9.5986247081496130774858068268051041666243771242517966898979109972e+36'); + T('-1.1137e-20', '3.15532351096658148747044e+19', '-0.3514083794163481802595829028'); + T('1.26704207115899080748696654617058814620502905910804474e+17', '-1.1036640030158560360573681189153991777396167698e+36', '-1.398388724244832908797767208849960696897136903372124358147141607664782163824521550287804299792680852e+53'); + T('-1.92043925491801737087120450765880605794833102824745131e+40', '1.48390768547e+10', '-2.8497545698511264714107436784310097859137225929760606638486194657e+50'); + T('3.8135622104716384192078983238750322e+13', '-2.39302666425671400328234877933630532203640643176e-15', '-0.09125956055460405574747767900047040915488905349535492182534023415362543138557102672'); + T('-3.234931242339998871854389747974137006095446e+30', '-5.92883411067302421812958123642550690642906114730631103678724e+9', '1.917937069526724859889065751200796792104177866908520783368616010428214659504892064497475599582063490904e+40'); + T('3e+0', '1.99273095508512817553537488885e+0', '5.97819286525538452660612466655'); + T('-1.953336949e-2', '7.78542087974602115e+8', '-15207550.26792398884803047135'); + T('-6.76927248655350571291737558944587651874684243378e+47', '2.106647491079819039765594992079775666086664783295561e+10', '-1.426047090023359087715991793962565118985535044059537158764939014517624689564606363869607106631045058e+58'); + T('2.84765064643062294633e+0', '2.55136e+1', '72.653819532772341603485088'); + T('3.03393155013395755198972274893138442728102576e+11', '-1.794588238175697749312009789507e-7', '-54446.5787530056249211726327679537663382541795271931196078506483571264470032'); + T('-7.4371366140844e+11', '9.1277001754e+8', '-678839531768519399904.0376'); + T('2.56791237096035223695516010175181403674163385e-14', '-5.44464273285261087885992104112953082914e-20', '-1.3981365429151599690537623761404625947844618835506028383097657567011072106548790389e-33'); + T('-6.879908191615608804901708679355480110539e-15', '-4.0968480016502745852031526855040036466e+37', '2.81859381263577613382981765247793574699886457413439013342011267606204270915174e+23'); + T('1.407896156490752151388208148659e-8', '-1.377363868116052e+8', '-1.939185296009824854218448713898983585080174268'); + T('2.425103747079320530219213960814750892199747341e-18', '-2.365116997875961139721649192832330725431640562e+24', '-5735654.093829986735467358771314018265857755686256663053548830868280136074150452583527245642'); + T('-1.0967188654311383e-17', '5.50107804404633954170295415508097739e-8', '-6.033136071114646945658547999340034265651011304263037e-25'); + T('-3.2712219404248354159015350722161266784e+4', '1.40636e+2', '-4600515.688135871535507282864161871915434624'); + T('2.7739526916093949721614335309760564882447898334454312345e+55', '1.24528453636520646201893749622334742900013735e+0', '3.454360391469821959459359614081123116456332059470735649519645107811472952525654511905494830480058575e+55'); + T('-3.26272930891827103933126340157752087353407692e+13', '2.0026083903335067609700262e-19', '-0.000006533969089426773691398112669586901327358725244893395121554920405215304'); + T('-1.06137697482182359209772074638146895e+28', '3.0663106098e+10', '-3.25451147889358514503318856302707319949426571e+38'); + T('-7.1333686145776974736348748988848e+21', '1.62872571577602913313701931021625476208216466585507507747565e+15', '-1.161830090267232160311720624731057789079310830776668256181105708907630639297571581978415512e+37'); + T('3.271164612807454534123020114329520320585016126992181854263e+9', '1.2e+0', '3925397535.3689454409476241371954243847020193523906182251156'); + T('5.65403478840648195280973451110905199e-11', '-8.18034629055388719783063246807413028100652148732e+15', '-462519.625080035971400064460401798364338310053450183034154989804876490732716900057668'); + T('9.44482836533037505193155281233841e+7', '-2.067341641721856797e+18', '-1.952568697856325861901776699253387295308175672267277e+26'); + T('2.5111226381792956734986397e+9', '-3.65360655537789827590991569211646510131461e+40', '-9.174654132209716853544084660541570252769600723604642707862516736017e+49'); + T('3.28741239410951819553626698975108924106326e-4', '-2.62227844885453731582e+18', '-862051067357068.82790743503875251297002496305525999591232187732'); + T('2.2772892974034099e+15', '6.177601666756392528944e+9', '1.40681861593257990831209635468300461456e+25'); + T('-6.50848921524116628e+6', '-1.144580764938138569486790679009e+30', '7.44949156457235930691999052822025420513027461652e+36'); + T('-1.4551927019037e+5', '-1.3e+0', '189175.051247481'); + T('-2.2911981542413e-12', '-4.53314582071257190328650375668441355537191e+31', '103863353373233077959.40247540692426855128645966365381883'); + T('-1.4602128592500770116678944302583044846446637e+30', '-1.427582797083786e-16', '208457475794593.76574073813183484779514002948555208066927682'); + T('1.6700609441460181151986345895359954232196252236e+46', '1.68243152329e+7', '2.809763178246720865741573493401128674173862301164254857644e+53'); + T('1.05083997100929235995740938763615497143966041793319335e+49', '-2.524496056110348375423188927e+27', '-2.65284136241607138569403868866619712437928400385166771000044188224282590147003545e+76'); + T('3.100786363878827739e-10', '-2.86304063902707066e+17', '-88776773.7272606582182668524792103774'); + T('2.502713517421925552323011065985443554034244e+42', '-1.22434e+2', '-3.06417226792036033073115536852861796094628629896e+44'); + T('-7.9489222898867596260428e-12', '-1.0788548012690995443645e+20', '857573297.73592957352865844131522518881758006'); + T('-1.0755932899013878523165928263944458509156806951399812108e-5', '-1.11614e+3', '0.01200512694590535037484641917251896792041027851073538628622312'); + T('-6.4497917487303e-17', '-1.004446091246e+12', '0.000064784681113628528184449538'); + T('3.084474103157632963053e-3', '-1.340722625329e+11', '-413542421.7344814434949807418969437'); + T('2.007409677882519495029550241974657552014828965e-7', '5.222151840789271106861316521519869023311e-5', '1.0482998144572396943190891671428030237589403912003291601853143252123470079223263003115e-11'); + T('-2.488498956742602121296262808732706422946353052713e+14', '-2.23172e+0', '555363289174160.000613929563550495557821783503480065636'); + T('-2.9688672164600521862302335509380676629e+23', '-2.34340486619e+9', '6.957257882124446358953277414968471000555340527351e+32'); + T('9.6116339631e+3', '4.941558826e-16', '4.74964546426381633206e-12'); + T('-3.510917030490276336587658593367687803429e-5', '1.180564327372e+12', '-41448634.02559652698690017440995500011934045540158588'); + T('1.249503228e-13', '5.879424084035664549067080010774031325182324371002647085e+2', '7.34635937178350612118448086199642691938843199011087712925229038e-11'); + T('4.5e-14', '1.6224776733813843876610106340899993022215e+40', '7.30114953021622974447454785340499685999675e+26'); + T('-5.98567638319111415891202402487540407421463486631972864107e+17', '-4.54793136981650498391485340038861239718e-18', '2.72224453926846670043530235188742096666820419395601557608672857967843105674091877295333165001826'); + T('8.92108677749256373753068098541e-2', '-4.701266425389385608e+0', '-0.4194040574501097838530020557051108449340791197928'); + T('1.0445719060110887517378867373770257738782319e+19', '5.799e-7', '6057472482958.3036713280051900493724627198667881'); + T('-1.03890765460564576e-14', '-1.34206940160748687807435785969646342084e+11', '0.0013942861743420366640453267735350857670895370671868416384'); + T('6.39749371e+3', '2.5234527992374730183240434196649804550511817034984615e+13', '161437734106036264.31022782519073602768462872676198492440927165'); + T('7.914175439604437611967814601653913774828611014407671e-5', '8.32100403850523895222657658496599490340606e+15', '658538857943.8750019874631462394490423060270196984652115300400533954357304447023953861129188626'); + T('-2.77837203022891121310898693340776679571778100244092e-20', '-1.29e-1', '3.5840999189952954649105931440960191664759374931487868e-21'); + T('2e+0', '-3.785802336743340316719402396217939978601e+36', '-7.571604673486680633438804792435879957202e+36'); + T('4.743769864188027932328495491240985e+24', '-5.9891655632114551610420257227248006595584101099705918e-15', '-28411223110.395218469762107537426925959156755933965249012600778016167994609252836864923'); + T('-1.696501776305087785563120340668939029159482e+36', '-2.20704482451194839742722899349253308746537e-4', '3.74425546516947120760454369427493495577833827584040523256623062924543284078088213834e+32'); + T('4.0131499023574625019065378616938094123e+12', '1.177461924351806545225557804503154113578719e+28', '4.7253312067420823358733892576894302742518304481762080832752336264184374791768437e+40'); + T('-4.62155685185e+11', '1.65583875e+7', '-7652552920621239187.5'); + T('-2.776598951854774016146205e+24', '3.5341178108401263600119940986415244381516593e+29', '-9.8128278093099833546223999989350419583424311768423158174047121479565e+53'); + T('1.12e+1', '-1.313e-3', '-0.0147056'); + T('-1.400922738050340928068459005e-15', '1.669774637213352507258799185019866e+5', '-2.33922525669194448953065643831459603361384442257691893159333e-10'); + T('7.50109935679466448466358706299522e+28', '-5.03e+0', '-3.77305297646771623578578429268659566e+29'); + T('-2.38556354949153835408756963109992783478e+26', '-4.99378748e+0', '1.19129973861952045985823120474150382502278725544e+27'); + T('-2.94e+3', '-8.61615789244720791078571983086407412571238524628016e+2', '2533150.42037947912577100163027403779295944126240636704'); + T('-5.80381041944064404262216137492215065819338e+3', '5.677138821495566551897442869075850448375293389320539675033e+37', '-3.294903744480694771704130256831336545059429064900653708388680125250845128363784484521559308407188154e+41'); + T('4.58722638789532058289643e+4', '-2.292585677620131398099727011e+18', '-1.051660951688994125699713239960797492772817868647073e+23'); + T('-2.288825775843864143902825178240786758e-14', '-1.022792029007781346809e+13', '0.2340992759320655142089938144423568704277940784273012755222'); + T('-1.432063323237600412250117767285385708080998075274668364678e-14', '-9.23012609141738073365221260162e-7', '1.321812504437725779783150336060293956648246141009265660188911448444031899918334929357836e-20'); + T('-6.0806e+3', '-2.9505713511085379204927821042777582523174534e-19', '1.794124415755057567934841086327133682904150714404e-15'); + T('-2.1971689665281316657e+12', '5.06674545635318811308850459987394e+4', '-111324958779966411.74779876603862140385999575942221858'); + T('2e+0', '-7.9498279886418403969498688721389799731931074e-8', '-1.58996559772836807938997377442779599463862148e-7'); + T('-4.31446036399049665749135715315413935059097082785e-3', '-5.09957831192823753379633205333620130303488425232090581e-8', '2.20019284998799462125934843416682842768267375970275614241257898190943464155895136069876374903975748085e-10'); + T('5.6684216814938374789992297e+22', '-2.466e+0', '-1.39783278665638032232121004402e+23'); + T('1.4726466812656072908248567521825181138629034e+8', '-3.47948862867465172229571384341201136985691220463e+47', '-5.124057381519144835787886917183826378015360092082220951469308136228382069243924518066722742e+55'); + T('4.3284361218626063643720235128240704200079650833e+42', '1.4641063731834e-17', '6.33729091193628179321704177525739784198638290425046666717722e+25'); + T('-8.504503345e+0', '-1.6126451605490274984274251623885903733401871912282447644089e+21', '1.37147461621872663968730195332709350199064207907267622573942269977705e+22'); + T('7.7309990341924055295760169328629798135433331298237e+42', '-5.99563576510407238824175823080622306644936962384464739893e+32', '-4.6352254309389028017492862352717241512621152128519099776509088009611537721357769693774958840413184214468641e+75'); + T('1.31099220633236524445967265953445007243e-2', '1.7160044747e+6', '22496.68492363164434927557667458365943093619102521'); + T('-4.71244448219168433e+17', '-3.661845152473087014511441938e+27', '1.725624198341216588965585001399981214121943154e+45'); + T('-1.6192523166690470927016735287431037161e+8', '2.1063669951791069077512605999904333513315096716248026e+52', '-3.41073963669898840947516853657748402318394608095484774905332123128295765265305433698894186e+60'); + T('-7.9546255726227721651851197010394795e+32', '-1.6352825346150572721595214349862e+4', '1.30080602683123181981363225429281630656820439050469581096187376829e+37'); + T('-4.65033001e+1', '-1.78402957430342048751447188050189199e+35', '8.2963262681107211387373788951990821828756199e+36'); + T('-1.0747111621539139354559268707283340006236738352646385975e+55', '3.4569644402407395181922991072e+11', '-3.715238271095879729064413458963542564475178869110977001563130120111735883029910152e+66'); + T('6.3652937877835233734658553177768102e+23', '-2.739191316024006563208208745870453e+33', '-1.74357574674381829401359393298451323167803405210747026007699767690206e+57'); + T('-1.38596e+1', '-2.01668654e+0', '27.950468769784'); + T('3.1e+1', '3.99532408029111361202961444968519230785160272779405533506e+35', '1.2385504648902452197291804794024096154339968456161571538686e+37'); + T('8.752130293411895486461455570456266543110235191058256368242e-9', '4e+0', '3.5008521173647581945845822281825066172440940764233025472968e-8'); + T('1.7666567718645722011538689771389140608479155e+5', '5.79849364509293864972181107177185722325631e+34', '1.0243948064717127403933357900393416605736130527033851840351793404944700646104585721805e+40'); + T('-1.88074285551825927e-1', '-3.5892420997049074284601888671967281230296723689451e+31', '6.750441435745360244959256403222145003141120524314248902529158196077e+30'); + T('-1.47443449855473683902404463491959178173791276282416e+11', '-1e+0', '147443449855.473683902404463491959178173791276282416'); + T('3.6674516424397608e+15', '-1.621851622618484198437145865398587268422606620129963582e+14', '-5.9480623971657509801533671437416378775411584549470454175597505327911856e+29'); + T('1.852799859644936708675646349852062e+33', '-4.07939656803717490972435529358637164801722794978e+42', '-7.55830538869531417546824622551390200682044219768001754254044667676246763456544636e+75'); + T('-3.6242110037e+0', '-1.1278795340499000045446830565915076472512673379718862044e+0', '4.08767341815167642135552034202789183114074114504811682323070735628'); + T('1.4274012216017920060904e-5', '7.3181715e-4', '1.04459669389914186078985917036e-8'); + T('-2.3756329516520898291145904664793103180184540970355072e+42', '-2.270259567e+3', '5.3933034361686053900907941458116470570432078963452065594973824e+45'); + T('4.929295626989455124178205785e+23', '-2.09905e+2', '-1.034683798583221577840626285300425e+26'); + T('2e+0', '-7.18e+2', '-1436'); + T('-6.31146996107278795852155517509682305e+35', '0e+0', '0'); + T('5.62374544362317131178832531913e+25', '-5.028617311364517574605216817082040721294634e+10', '-2.827966369251080786848400856170544022762054465978646727405142173480654842e+36'); + T('1.117412077388384866590003439477599421523143e+1', '-1.61338414788659224331375974470976667613219454556537612e-14', '-1.80281493231544618608867814708290945943864723087524854355671733079894613280168308370993407954516e-13'); + T('-4.2815998483904942107791375e-20', '6.9376170311235847480494e+17', '-0.0297041000286500510137199365646358515056073393925'); + T('-5.86940489151059825558e+20', '1.186355039910488859404215239846695660365360637322362023701281e+45', '-6.96319807431887432746494916572974977870149668248845809245935171579248369361139798e+65'); + T('-1.18405412e+8', '-2.8902735e+7', '3422240245601820'); + T('8.642504975809385471415e+17', '7.5109001974465513712091271541148798280521311221e+5', '6.49129923292395160193292467556975546756516371487956307369563014247715e+23'); + T('1.9923555553060256693196663e+21', '-7.20338812908556886039013517835885875517875e+8', '-1.4351710356009111862906055289239352924294602722052150633824346851125e+30'); + T('2.47767224522360228025008764692368247199028078613e+13', '0e+0', '0'); + T('9.159951983506971778872e-16', '4.35572412991174861535348709e-17', '3.989822388339430055462173193590823971110558676248e-32'); + T('-1.2584903289619528522717972e+12', '-1.9048067354292e-12', '2.39718085507923740095024952130919735824'); + T('4.8222e+3', '-3.915307e+6', '-18880393415.4'); + T('-1.145743e+0', '-1.40499568633e+6', '1609763.97264279319'); + T('2.2428057847026326379001011260518421703171e+33', '-5.8239094523813465985489463975171171984367780708670099e-3', '-1.306189780938522558635234193371919783301088290650039938567007189410557075386960930089941183929e+31'); + T('-6.26193904e-2', '-5e+0', '0.313096952'); + T('3.0019845694844821786908363e-13', '2.59803721322e+2', '7.799267625032905531560694408803215886e-11'); + T('-4.6771111417557737587832171805566392575e+17', '-2.41963969908791889847485e-18', '1.1316923795638693208841937864685962710236300920790258386423875'); + T('1.368790147448792225307101642172296e+32', '2.382834531191820192940003254735240956141547e+34', '3.261600429296125258884096700972863323244136904532628866746657143899537981912e+66'); + T('2.5158133090673533e+6', '-4.50742632133e-15', '-1.1339843128842514618218435889e-8'); + T('5.45290152125555300060203251343e+25', '-2.3624677987030823546e+17', '-1.2882304253465295333570852578315749764228120522278e+43'); + T('9.10645280474914206117691354111985771303355e-16', '-7.46868647274590839548386658906247692173836809486984638e-1', '-6.8013240877528954266058199752847353931423569799021123026453827361109324522139420649351012286049e-16'); + T('-2.8051865003118537531e-11', '5.348454627859893296622387289464589021238848335043530157e+29', '-15003412719603032216.1087879676948803801286988008339781735642916313334822367'); + T('-1.7561380718435796202851095012247e-5', '6.128268306422028776297429697021742180071567401e+35', '-1.07620852873801007780502248253390491162313640920758504239716098138490580960047e+31'); + T('-4.378710689215449958543087541470086791901689639419136544e+54', '-1.9783905014509610108940939605033592e+20', '8.6627996361456371392438623941839474271341962222925165084899855051115783079519792754786048e+74'); + T('1.121716338034368180915e+5', '-8.734522008301422444882962812919703e+24', '-9.797656041632466817652476303536047619163255652072068245e+29'); + T('-4.8582993368534106923769355421057e+16', '6.98715048402856908663443073960052421774798629769213e+50', '-3.3945668563050984730942842784405126039162330280795884968022377310599078522350518141e+67'); + T('-1.147697695159307927e+18', '-3.14666e+5', '3.61141442944998788157382e+23'); + T('5.21292708738338107676256190382983420967375413562063935697e+56', '2.0716e+0', '1.0799099754223412238621323239973884548760149067351716491899052e+57'); + T('2.40767713664497193342119078614448816473118895591100004e+6', '-1.9484666614e-19', '-4.691278632167740060209890691091392232345592973376458043474066456e-13'); + T('8.84323002496195395098550834342755e-16', '2.074843038583988890307904822332637330993388021856189e-20', '1.834831425588922445909395217500126101937521988613705732420133880473831365442944060695e-35'); + T('1.4139590392221052468075225255352223739775768735149e+28', '-8.5071158697e+10', '-1.202871338167213628815991013832091374398315253263031540940853e+39'); + T('7.60905256044027294859360806368103238783888705635835726e+22', '7.626236267e+6', '5.802843259393881904794360045962793471613853022211697708475474842e+29'); + T('-6.49983097039610238828951299410887525e+23', '4.100424999934130974333860679470965920172048633176651e+51', '-2.665206940635830060248743820457885128628819326617038782969842356414737979985236017178775e+75'); + T('-6.44091388086048854999712e-2', '-6.4903080679715410063843348214810202569974e+22', '4.1803515326058717691453471440857864505008045873090454741429847488e+21'); + T('2.78029662683945916043494079823001566462283856388915e+47', '1.72292937157713197163667918785093807960421637821735095106e+24', '4.790254720078529163251026200113350912677847102429264772360101417505440468715765792439145764556851324914999e+71'); + T('-4.4878498622339775396888494885583054208940416614412529627e+46', '1.724e+2', '-7.7370531624913772784235765182745185456213278243247201076948e+48'); + T('1.352549686604181695307046110709197982598092383194e+48', '-2.3555586703119991494894059087716726417170242847945e-13', '-3.186010141308257402498477975479367405804581618494048262835305948601981051698397443353715881543633e+35'); + T('-2.019515564917190266675805443119046e-17', '-1.4788018868472268212026912165159431467984470085815808703e+27', '29864634279.168841526151723443673432805367034874393502449296552705312364840770199191857338'); + T('-2.1655275560855920418985633841581563513185032946266e+30', '-5.9625533125793712547572194147395797672923522437e+21', '1.291207350302005700228376617552289919885062421326450164415825007449363425520444307151212866370242e+52'); + T('1.012506744028479038160052533215313925528515964937e-1', '-2.212147e+0', '-0.2239813756282367818828645731194657054416130006287489739'); + T('1.433496071288945453514799813e+23', '1.3979267765863662e+5', '2.0039225421861753263084300184572426981095206e+28'); + T('-1.0851e+3', '8.013590881173773221229825407826356e-3', '-8.6955474651616613223564835500323788956'); + T('1.0544140083165e-20', '2.7639893671307065522219750157782938300627387865356111e-13', '2.91438910754047439029710260584090912925195329258292696061880971315e-33'); + T('6.9910144713252743945138327844029390845842716601381876e+52', '-8.482563824399426864364409762208780384877e-12', '-5.93017264503166569047842082409955073105581203136314428395603709690554785251717257461332289252e+41'); + T('-5.359798702e+9', '-4.932148432974659892667336636982770197907445436167e+48', '2.6435322769128916091609850224697296903108609164903710455234e+58'); + T('-1.71427280396517551988450013042709589140000549e+38', '2.403519034309521273463675792599073e+22', '-4.12028731432945393654068892074968286875285779764235024381198392132877356891077e+60'); + T('-3.1889196169851645e+16', '6.3303265668790672589901e+16', '-2.018690257104300648907301509647095237145e+33'); + T('-1.23339224241833842568898143251348600283e+19', '3.077450385078067e+0', '-37957034313826161513.8572222562474073059332490133292961'); + T('2.92677040682294450913892109671419035013083833e+15', '-1.8864e-13', '-552.1059695430802522039660756841648676486813425712'); + T('-8.6400999e+3', '-3e+0', '25920.2997'); + T('2.8174216976e+7', '-3.80064379799368614537758774048216223e+5', '-10708016301316.282693791323644782201752565201648'); + T('1.025429e+3', '-3.7942691388774640999508942702866141989404398978535327058969e-11', '-3.8907536088099791345485455606857325114052963440160501890751522701e-8'); + T('7.5475945189824540258952479977984445146259416e+1', '2.241307785984759464484472e-1', '16.9164823608512696233027083957170305568142612592815464214011615788352'); + T('-2.390294178360939572894052478069342172015510960221e-5', '1.0258531018946647560644677321558488928826911786e+6', '-24.520906973123289161325866068624287873503133376117055452224336029773591730793542320906922064706'); + T('4.13335e+0', '-4.9088577675430835705980477517385482283e+2', '-2029.0027253474204476531440674648528319443805'); + T('-9.49e+0', '3.11206e+1', '-295.334494'); + T('-3.08616078174107176e+14', '2.076558336804330489690054e+22', '-6.40859290004299236964222747218844417227504e+36'); + T('5.34715396168270921229718951112033768e+33', '1.185276582214392362269858422207e+30', '6.33785637227742951291731320592812398407062758490420416723385085976e+63'); + T('3.09857552788127670265426890018069173e+27', '-2.775660244927720047697549780961273164125e+26', '-8.60059290864598393204134197688911975222918946093511063812459672352832018625e+53'); + T('-2.152994e+4', '2.65842427162e+2', '-5723571.50625223028'); + T('5.330956358309028663608422004436504723721138561972562601791e+36', '-2.7e+0', '-1.43935821674343773917427394119785627540470741173259190248357e+37'); + T('-9.47262472923053e-20', '1.7815435405588685078649855417813049031471e-4', '-1.6875893398498851540266228993423166652387013603958400963e-23'); + T('-3.7245117604208154109238688461979388885871895e-5', '1.099513130741858342635426870578056147376018748384434822302e-13', '-4.095149586185160991329081422183979955901725647516234149636345755464052206534381389581417571266100229e-18'); + T('1.0834155200334824535073546679153022e+1', '-3.2878072e+3', '-35620.6134735782785171514593012553956333584'); + T('4.1364165902025092463453669062207235153719556580492365e+19', '6.95e+0', '287480953019074392621.00299998234028431835091823442193675'); + T('8.42371582961533136243e+0', '-4.7071941235449e-10', '-3.9652065651577439895485473058278107e-9'); + T('-7.45065795641536747833628483446224560146193991951403486e+17', '1.27523917338709350722670736519147669728e+36', '-9.5013708935291045870600560683168551870317994342017416888060151292391323390390803175995871808e+53'); + T('2.05416636316876816247008603104084729112e+37', '-2.67555245581664e+14', '-5.4960298576321336552408203766121162314254132314202368e+51'); + T('6.02518139223983254774103596e+1', '-5.541610436514578623372748271926826526e+28', '-3.338920808512969500784406497155751094267976654888337866644787496e+30'); + T('-1.886901000866449319960349324191903886e+27', '2.9119588739125107881913973682892608e-14', '-54945781136674.553048031354602674611785517327046962179124845815195874688'); + T('-3.167630633483217259922541256223568e+20', '-1.976822247538314258143070135525568198864845149591441e-1', '62618427082535077150.84042450833457702256004904708731141210786339513630567393755281488'); + T('-4.342121805414178979168499106872259725865474348828e+4', '2.87800764291519653e+5', '-12496659742.45073888635509104978249087676725149425279111442739516684'); + T('3.48934964368845845248178606547230673370875533672897e+45', '3.60994798002748312248366391691804980174190472460657e+19', '1.25963706978427685634963685436483508162346103715778631358243181904380097203373116193801232752539713329e+65'); + T('5.42527560030712498895e+17', '3.3118136084722e+4', '1.796750156280932065622648405138219e+22'); + T('1.1270004847878401285903765398526874938853992e+30', '2.0458381647e+0', '2.30566060341436511755234793837415859085314757145484824e+30'); + T('6.25593016708055943396626471164327645453174090870769922934835e+33', '5e+0', '3.127965083540279716983132355821638227265870454353849614674175e+34'); + T('2.3033584574555686865161618899734095161045e+20', '1.3010709745e+8', '2.99683283286453354141726776018746569820565525883525e+28'); + T('1.34211871248298281139772721139220298063196737768440691e-20', '-1.478359144e+9', '-1.98413347093272458362465744377928424672132387150944450161528504e-11'); + T('-6e+0', '1.05671309643762e-9', '-6.34027857862572e-9'); + T('6.4756599396864465846766547296e+24', '2.94968462813429622e+16', '1.9101154581118175282669146567918601241230402112e+41'); + T('-3.091e+1', '5.667830565788117917508080275569794124182460349e+18', '-175192642788510724830.17476131786233637847984938759'); + T('1e+0', '-4.6172103778523998784e+19', '-46172103778523998784'); + T('-2.5570672065082385679679091913879025e+1', '-1.2063049743853270960595806834829465677969295004031501739e+29', '3.08460289104848063763132960929740754910194979655799625586510645610283250550119127523124475e+30'); + T('-3.70293468184958402068082830264510960391603268883687825303e+45', '1.411163039553177355119999727715e+20', '-5.22544456090573674099746706657675074188431054961983786246940351702162084606420487372645e+65'); + T('1.74787882197705299292198556022976167231705195e+35', '7.7333671996220816e+0', '1.351698875079142520032926258655417527276870238724265543433912e+36'); + T('-4.096618331817365021e+11', '-1.013711236829518925258935118422711554106672e+5', '41527880359650616.57506268237434302892786107960903774595520112'); + T('2.12048782119154454967332210439e+28', '-9.2197418205e+4', '-1.9550350244900609425611967419011549641995e+33'); + T('-1.1505865830923532120744213733257299415660413583393e+16', '-8.46565236265629547979844640868246149886017535754876e-14', '974.0466025596414007536363196582134432561026804409558931080223917261617484174979797491453160432374268'); + T('9.07420636404752362993662380875781571271e-14', '2.51474955483770475273773727474896143461917754897697324764e-9', '2.28193564144939774816732185434917998866319599098823390828301213887829237747907197261589099255044e-22'); + T('1.246260472438897833535289124112549387151e+19', '-6.680412909470472488789414671059720951e+11', '-8.325534548643583067029478564395020366314784333266559701669016772756124900601e+30'); + T('4.0294278740792929940247525071574944742596836e+33', '6.00085175738377949776908065147e+14', '2.4179999339419911926322112001876929096606969209945947707543711809044074892e+48'); + T('1.55945832e+8', '1.1527307e+3', '179763548083.4424'); + T('-3.211101384979001257677085706325437228950660943386036671e+5', '9.228686729748967e+7', '-29634248739434.237821402397860319787760148942989060826624350048886368857'); + T('7.1768007105380238999489810862e+28', '-3.15802039762103328762026415391128e+24', '-2.2664483033540204459973246271168430597758318255590370472832336e+53'); + T('-8.146245193307731671e+1', '2.43845e+5', '-19864211.59162123829314995'); + T('-1.7260614660794362658661235883950941802e+20', '-6.765975e+4', '1.1678488727956813788943545545991497345878695e+25'); + T('-1.0423339556844604967203052423172210806005595277e-15', '-1.65790186e-3', '1.728087403870424630609117961005471539558877558014551522e-18'); + T('3.3874450138496810026558092372911790009595011319748e-7', '-1.844083119777027949884472374398549549372684360122809715262e+1', '-0.0000062467301692130573949905677401149904072205407708817196623282883165369601854286961699466138329393918717593976'); + T('-4.5677632943648704446515762998538554442851348e-17', '3.582872388623075466216438867772511708e+23', '-16365712.9851458715575421433474376658852503648131234292126180950207040799233582384'); + T('-2.86829101569688038860522495486e+2', '3.7e+0', '-1061.2676758078457437839332332982'); + T('1.06077027679826318938182294804181993899494704147284057e+37', '-3.261253544293047623648926725904240616776040078855e+31', '-3.45944082488905300826935851931788717711099607836502248838085413796777056450136214579772327128364314735e+68'); + T('-2.18507353576174076070959256350000774887e+0', '-1.59831147321681301466931141149354431e+1', '34.924281020304184328565238680515232418857862826204480512208558649806974297'); + T('-1.99647745343238059689196134517981116780466772090884720632224e-1', '8.6467613748664636508931985451006098243078232494163917e+32', '-1.7263064130130867409299452087506032624045135897393310593388261234352860098403285199668529693824805691038528261408e+32'); + T('-6e+0', '-3.4876006775596915566721213748733893e+7', '209256040.653581493400327282492403358'); + T('5.28124391735772273591469590185765758579874870468433745e+33', '-2.147e+0', '-1.133883069056703071400885210128839083670991346895727250515e+34'); + T('6.85038e+0', '-1.5901255569632960384981532502369e-9', '-1.0892964312910223916206979062357855022e-8'); + T('7.983812710598619216930700499e-18', '-1.335137072858e+8', '-1.0659484332675135134229403579270339956142e-9'); + T('-1.960334206940101e+2', '-2.959228e-9', '5.801075874534941202028e-7'); + T('1e+0', '-9.164e+1', '-91.64'); + T('2.027899432561029386047096809176e+12', '1.40213651157523255556127427614979949106e-5', '28433918.3619651531093388731497850317019747168257172892378111473796656'); + T('-8.3594749784821954269345060852858640828490521460887e-13', '-7.164172033751721e-15', '5.98887168576894141563842978474039341215235493797906672056370436527e-27'); + T('4.550077739716154666542802337e+11', '-2.7306574188036000270848865e+19', '-1.24247035360890335495046606524591731837703486895797505e+31'); + T('9.4633378246343026774101810918412358e+19', '1.578450860979302005254127126947731754671912e+27', '1.49374137370320099547200047736473092846440961340814649863546698920428216288496e+47'); + T('-5.2190603156319182229289905569617150480323e+40', '4.04355690292489982440257971296300398805279069834596e+48', '-2.1103567366054849391298527839468485796895719049012578983409941699614247722561603581562654508e+89'); + T('-5.13097206174328014241389093854003358779365258633983078e+53', '-1.59332306217979e+12', '8.1752961173757536414155211183332535775263410017806193494494865359362e+65'); + T('-3.00025764484794075488331e+16', '1.21837943722606727484247960651563238163989e+31', '-3.6554522208630400771401722295434531318286045235250273221033912359e+47'); + T('-8.034506919e+9', '9.59917303867585553e-16', '-0.000007712462219591941585402941207'); + T('-1.03623135167581303e+11', '-6.0727847191820070012464062e-17', '0.000006292809917994193771401113453514323750632786'); + T('-1.776830835655537305590797996218970905e+19', '1.4297825967432706650609604367607227448e+19', '-2.540481806177089727480969780595820579837949700040264880146150148682940044e+38'); + T('-7.06672750227869765640275129774849369371986497683548567624e+47', '0e+0', '0'); + T('1.201486e+6', '-6.4618819204288244e+10', '-77638606610483465.130584'); + T('-8.392439e+1', '-4.559646760722e+0', '382.66557300906980958'); + T('-4.892684791905e+0', '1.325742128654573684900693679335408e+0', '-6.48643835085599458713483949506930948917827224'); + T('-5.583623025078921446646733308770747651954925640892627777043e+48', '-2.49487928392226886507353963712136114e+9', '1.393046541450079222756134578078800193311267254493670540053212261265672987328881907800860430902e+58'); + T('-2.96526320854720999501457709614986308646e+12', '1.58934709e+3', '-4712832451588571.3331953326153464351003636194014'); + T('-2.278047134327102481e-9', '6.53948173493481078043032097446045568663006609238767572331335e+59', '-1.489724762625267407514295696211403251163397687148157704642933789435816632542135e+51'); + T('-4.34649668141838505956e+10', '2.7566141566303188003001360098750592488e+19', '-1.1981614283744620987582158070935888399955230644767716858528e+30'); + T('-3e-10', '3.285427839965717144526763107629871339325200898862235e+18', '-985628351.9897151433580289322889614017975602696586705'); + T('2.6431444802225494336841837930134668e+25', '1.5757672131509605631302369006921e-6', '41649804115556309200.4022799068651144359462695399494757742954037228'); + T('5.4197814884600979459047471764155193322e+12', '-3.45317672489168691123605172192567891610375269351773e-14', '-0.18715463289949233044577799707655967434015297575177174844144791767778460868554918438459906'); + T('2.1804041368605641467299918902653637965488411876504e-18', '1.5595945850567196835592942943641516156866395747026257882e+46', '3.40054648508300657595934821590957250693570708065275875065240265811212908037363934338779869619908640604528e+28'); + T('1.6644802913995172764608435e+25', '-1.64481887574951745057302561e+14', '-2.737768601606983206750201541817125086018588487702035e+39'); + T('1.345297580765936668864521475544600213e+34', '5.255894981691269736920878216903973555596e+1', '7.070742803629092178385260348541240791936901232154070386845812623023948941948e+35'); + T('-1.236303590387333100113303929204537712340659855471201673025413e+21', '-7.9e+2', '9.7667983640599314908951010407158479274912128582224932169007627e+23'); + T('1.8325580806128635358765e+2', '-3.171748e+0', '-581.2412427067688694189217122'); + T('-1.0243e+2', '-3.409589101402e-3', '0.34924421165660686'); + T('-1.273997601117917175698667546852761764039275631891486e-10', '7.856245279828564906705161224850856859963860198e+2', '-1.0008837640295551637408536690012436719563557239798756225068083188519724150459019497133976810474228e-7'); + T('2e+0', '2.0782554146127983844e+17', '415651082922559676.88'); + T('-1.0017426e+1', '1.05631201445e+2', '-1058.15274376638057'); + T('1.23321e+0', '2.76e+2', '340.36596'); + T('6.5482994824671797204789687e+6', '-1.810350618538593530488926394601031399259372856417988086e+12', '-11854718018460410708.6469761335753156476928972597617168054353701088346263301669082'); + T('-1.8464263e+0', '1.2578353631044943640519616250643946541369931149527985242e-12', '-2.32250029550618804198731651110963748297794789036777045368406646e-12'); + T('2.306905117986512123647e-15', '1.92224194054550245e-13', '4.43442977065274435217191058558414143515e-28'); + T('-7.7660157326825169689845327710896583341071831411984679e+23', '3.6431726508659866242336616738158288e+18', '-2.829293612350392270265658763343483917211646344882471424632373955590786112801497332869552e+42'); + T('-1.804410431608216174757910743628838673593296632e-7', '-2.708299883920527521842766517861172987221865596e+20', '48868845624695.20830931105195115261702836652954741973993651473991827943522861106002863472672'); + T('-1.800090865364229e+5', '-5.8264534155111055348482827550238e+10', '10488145570731753.6804095274061076304171665636502'); + T('-3.60855354781654573978597356957428456e-15', '1.866546962201332812e-19', '-6.73553466261781541696603311041890681571157507335298272e-34'); + T('-4.513629265554556014503659605626189283778885640833465154e+54', '-1.6679267957795545731497e-20', '7.5284031982332348463844383049275530663291324432825482209928639026696189755538e+34'); + T('1.0941972e-2', '3.45343163878253161341020408675072450114411418654261458e+9', '37787352.29547257500304927763151199847123286539395206554115176'); + T('1.24194883524432e-3', '0e+0', '0'); + T('4.5115e-19', '-4.72349600277e+11', '-2.1310052216496855e-7'); + T('5.7379616e+1', '-1.014091e-3', '-0.058188152169056'); + T('3.665008e-19', '1.20318611886502374360861219376e+18', '0.440968675112926294051551255902795008'); + T('3.33610310938677239000000947724228838577011e+13', '-6.096671817812092833664313029588e+1', '-2033912580831362.881020502005617192477576549025176845225368255784259601468'); + T('2.583458940580655231541895311105492814e+17', '-1.5156221815587830068151379463e+26', '-3.9155476754903950432396966951972758516587513180224498790533678882e+43'); + T('3.702736747441730847035655529e+20', '1.0018677975945079169067e+10', '3.7096527102316985801620293314995993182468964321443e+30'); + T('-2.83630154283079925e+17', '6.41074464694029283507262773575118086890104876e+10', '-1.818280493281103999466755581106175564517622369590252755402143e+28'); + T('4.4674110594344555786220486754e+28', '-6.727853004096336279764957767621729768e+4', '-3.00560849167492982673836524473329588821711484064022839144411493072e+33'); + T('-1.5688404306246196345593833419224858e+19', '2.63605019e+6', '-4.135542115227710406357993024757603658362302e+25'); + T('0e+0', '-2.64954402306017667049973249287275628634791783589648e+50', '0'); + T('-3.5009076896538e+3', '-6.6430229e+3', '23256609.95315628647202'); + T('-1.521924675204764636287003e-12', '3.7693609744915860629583e-20', '-5.7366834768326222380785330790588380575060209749e-32'); + T('1.11236129544558345600503719108591547020411211e+44', '-3.1253884214607362312987e+14', '-3.476561113266691720093444060759595557505158595083676675212825697257e+58'); + T('1.33815573609017992048200249790557568805710357380887861899e+52', '-2.5e+0', '-3.345389340225449801205006244763939220142758934522196547475e+52'); + T('1.611548475376932804e-7', '4.9802375112902234248e+15', '802589416.83347697323623227532963471392'); + T('4.166575179521503556226149051605877512974975774232e+25', '6.399872460241347446318418520381529620092936e+33', '2.6665549744944818866755013936324316057322003893851265592949522620090738985837783100394025152e+59'); + T('2.35506389265e+0', '4.006712248230173437693154988324e-9', '9.4360633440453853293582738230620847394186e-9'); + T('-7.242328039718679745240983432e-1', '-6.92464621048019340876524126396387834446077132758404786e+24', '5.015055941529240335287534191035479214939020902123532657328599638598099582175505552e+24'); + T('-4.193894403896958727143737666044e+30', '3.261588840189662e-1', '-1.3678759184684195494824524833564292922177237128e+30'); + T('1.5765195258987684156516463952714058260238e+39', '-6.4745770126610248e+16', '-1.020729708239542312739313896297935609020156882675181719024e+56'); + T('-2.040489518370981132782249800266e+7', '-1.174334689904e+12', '23962176258085484397.98077967950839046714464'); + T('-2.999e+0', '-2.745829033902881255806415521483615257e+36', '8.234741272674740886163440148929362155743e+36'); + T('-1.421995402238039424217983713e-10', '-6.62685949e+4', '0.00000942336372605751879737308119715948637'); + T('-2.91998097054133242068815e+15', '-2.008599636825475699484477749463054e+31', '5.8650727169666203572881875569551215932356120857036806101e+46'); + T('2.6e+0', '7.4773359790825494286810609654593232269035859893021495060685e-13', '1.94410735456146285145707585101942403899493235721855887157781e-12'); + T('7.50302677e+7', '-9.16389319e+6', '-687569359219906.963'); + T('-3.4496300003784699749429090893221619407742937e+17', '2e+0', '-689926000075693994.98858181786443238815485874'); + T('5.58909651552271e+14', '-2.9302356759838764984959768e+18', '-1.6377370006301816824127798758929684033128e+33'); + T('-3.21467608558886180085443357632011447658817714543954802587541e+59', '-6.05654450954627843543147e+21', '1.94698287961429431939792169536178895975298009949974623312844888292490502665078131527e+81'); + T('1.4473044599244751554764848267885956615840337279448e+31', '3.2978760548379995995551379e-19', '4773030722445.16982161490157947831158781808944842335126216028865139564758792'); + T('-1.52212585961814532229294847288693e+27', '5.4807677063154665054707604339457540829262049e-20', '-83424182.56342800099858567431320449627410280372645389871308978482983651711957'); + T('-9.90550793992759173966e+6', '3.335265462233194052458441615728696e+23', '-3.303749851791717304829547839188687665630386634122328336e+30'); + T('2.51287438279233642085429923935090523723e+30', '-9.451335136867210002148028438967398611467216454584204034e+38', '-2.375001794861871280485178924285492901455882867966860732042873907744155803603055976356149298582e+69'); + T('3.4082333651834518484189e+13', '4.35506385179170328272063457227625384554944253e+44', '1.4843073927180842671942017049002743738759608944705687993398956915817e+58'); + T('6.5818547070316952187958008e-6', '-3.73951282e+8', '-2461.2930056322368417019602053766256'); + T('1.97206174719719816981292592386e+16', '-9.0105789e+2', '-17769417968792207968.034967276795922554'); + T('3.6619571048211390692219928266376703435e+7', '-2.4799589894315235042761055970638006e+26', '-9.0815034410138196343173744241842493541845089867523197724164419200175061e+33'); + T('-7.84666331967208510490549760574105355103150267368e+19', '1.619717764380338390313718e+9', '-1.270937996998447419567301371334187807713815536655396765563064753098154224e+29'); + T('9.483006538328174932945681176608e+30', '-5.3373488401022043702090517246506626e+23', '-5.06141139480275047286128600549610642611475683804095134453348204608e+54'); + T('-1.4803912145480433328776377901902060963e+8', '-1.582058e+1', '2342064764.1054483391257298870727370763001854'); + T('8.9882523984348881655495577517148277303020468059964733526e-10', '-1.9880593317254807355650321572764e-8', '-1.786917905661241317492297819003818060408519912904334361445796515881479577099002479285864e-17'); + T('-1.28471301581497146597153639797443e+32', '1.42004323959128318e+2', '-1.8243480329229795026092654483949144472588365290874e+34'); + T('9.7783e+3', '-1.36173859052909811217858436668287617315269353636409624e+45', '-1.3315488459770680070315851512735168083938983206629042263592e+49'); + T('-4.67119137023742882426401e+14', '-1.212047464364320398948015745451394730100809445563379321597567e-2', '5661705655856.77098789712337972493426181265394901439758588512945491280590876618166367'); + T('4.21209472e-13', '-4.905686e-9', '-2.066321409857792e-21'); + T('-8.0534398142355474142562564558981481e+19', '-3.52823954947651480531133809737181713783475797e+44', '2.8414464861914654893810641177621530490552863751100871276411283589068922334715357e+64'); + T('4.1668071977029939763287789711116957000695558377e-7', '-1.3024216206228e+9', '-542.693978325508121622979460863479145783998910882101044971956'); + T('2.14936794322219777817392300235280096983947067201554505296068e-1', '5.56270924878341e+7', '11956308.9368006948399328359990270847329026003904275869850287225663085663188'); + T('4.4808187810392761874440073637915549517e+38', '-7.646754766255997951108787766099794e+20', '-3.42637223706414760467636032872081913139464887999833237904238953370499498e+59'); + T('2.6590306926035e-19', '6.065851175402e+9', '1.6129284452158934622539107e-9'); + T('-2.99e-3', '5.30673982e+7', '-158671.520618'); + T('2.7453398931708285228618465251335055626300456581132e+13', '-3.22074749108902263854425833e+12', '-8.842046573116551400389407780741144904662936292441998341089622224330041182956e+25'); + T('-1.927554010995289666334e+11', '6.691946123062138e+4', '-12899087590872802.405021000232368662092'); + T('3.1043442867282686296635094758709963529734603e-10', '-6.9061694467717526338079e-19', '-2.143912766526321799419146642311363281841178348205083711921322847637e-28'); + T('-9.9460755574581062016784211082305572914306783520097982603599e+8', '-1.69419433e+4', '16850584815197.112739421417524916526495882012852028744317145606339367'); + T('2.61564884146360410916221e+1', '-3.37673411255562774e+10', '-883235066943.67590562874468917360320357054'); + T('-6.63e+3', '-2.3664010008e+2', '1568923.8635304'); + T('2.6042340596970639861661053132244e-13', '-4.19696881552846756035609e+12', '-1.0929889136885679117123078859859216841502622841450076596'); + T('9.66932408746122723475707863151647060844849114776240053344e+35', '3.543132415517187808951809e+20', '3.425969561042502580998764203892614576219316524854247783921994540516844698885299296e+56'); + T('-8.75613931133e+11', '2.85579203853134364863246620418932562599339642887412e+50', '-2.50057129335675362001562521254298208477229393538495184240597796e+62'); + T('-2.50801681357e+11', '5.6482598133343504471083657127414336e-11', '-14.165930579254300605382428195360012246785733952'); + T('-2.30985517042381424317138251138e+7', '-1.356837662673868976569988292803227160100334665194252e-8', '0.313409849055299940654534970732121932438107278390194102752542104703069838330058776'); + T('5.862908424337665828006849479349960917695532524969888e+2', '-7.671778766584342308528805252661904591265896365900259438e+11', '-449789363602621.67756677207730170927431389968466555033513219445179870196178056661700171117319697232337802944'); + T('9.581282282850454426590480159624386252965047e+42', '-3e+0', '-2.8743846848551363279771440478873158758895141e+43'); + T('6.80255891e+1', '6.4939628006286648775556960482793713797e-10', '4.4175564510625077864220559174474627948177228127e-8'); + T('1.17e+1', '4.39880043917181857989519e+14', '5146596513831027.7384773723'); + T('5.18057e+5', '1.12095183227955985516792e+15', '580716943375251939888.72713144'); + T('7.9079109607883946443459466318246948653463050994769e+5', '3.36736267476382737799206797447753274243e-8', '0.026628804204714596632325780373652132822901517398195299752987744361561977288621298015434867'); + T('1.9192337832e+6', '4.3746589806622647519097525128325765043728672520610978379588e-6', '8.39599330566629402128776374017937235269096935960460880109100828973216'); + T('1.97054154322487963934e-16', '-5.29966794868061391983563001785802904827e+35', '-104432158581725291847.012347689094982662143786123082010509418'); + T('6.9435803780806824e+0', '1.312029461736620484829099495123927022691450102807689e+51', '9.1101820259781574883358006463573816901697004118371527017012130869736e+51'); + T('-2.02777011165205949332910260826373220997764e+19', '1.719346099690327466591195210611602452021664087e+46', '-3.48643863253758833917742037463014837753623268813161576588808665593545590271493786101468e+65'); + T('-1.35689510306015930639203912344e-5', '-1.7775524374291928790914680036598415373039480612e+32', '2.411952197780322048592902790431885908730809493500413918235779385964135474528e+27'); + T('-1.197093336042660715753664692387461089572e+10', '9.30322759e-19', '-1.113683175167722258780864100982789097855769169148e-8'); + T('-7.22954e+3', '-1.80621201849899035625232371577275379091004324e-18', '1.30580820362191907401404243961277544415357940053096e-14'); + T('-2.5487146811e+1', '1.23224022125341461664322693e+11', '-3140628742550.490076943920877369882023'); + T('-1.18509703682338023839102000456883783748380745862220202e+28', '-6.3419775864e-20', '751585884.5242932927360537668009595161218552675515150636252804528'); + T('7.1388416426585452586630469980942729444722426421412280025841e+11', '2.2273053664463959959973918980036896886955225978954e+4', '15900380300904382.68571628113627797346230258274544097276905843398058418502349718417824485312566047149642150314'); + T('-4.048812287518331136928265811389922096053793e+42', '1.883843038956722868136968070669521788203167379034479609892e+28', '-7.627326843883853713943674629620475969636818573439332541709592124635715493176124730990752735286920356e+70'); + T('-4.40496773173133229276988080861e+25', '2.6836361405552532182670933448535260065953975259e+0', '-1.1821330602853900620632833373905984586754469500681938106134905203144285417999e+26'); + T('-2.10698470492551613923273067e+22', '4.9829981981459258350705361168e+25', '-1.0499100988164872148563717105895284884047064402922062256e+48'); + T('4.153010660772414005280043833935812744967827327617095506753e-20', '2.527751586e-1', '1.0497779284442377486895243175380771288291439046358254767908369460258e-20'); + T('-1.775786834688476262481212524832086861722161695595273e+16', '-7.18e-17', '1.275014947306325956461510592829438366716512097437406014'); + T('-8.4572173659763154903842071410504969649015559593e-5', '1.55e+1', '-0.0013108686917263289010095521068628270295597411736915'); + T('2.1957687570313298348687272820162816911371646883313165861e+55', '-2.38569977592e-5', '-5.238445031621780511465933279321833876337532446936158618177349386712e+50'); + T('-1.27304464823058989292690796372853e+19', '7.469e+2', '-9.50837047763427591027107558108839057e+21'); + T('1.075014243303345850436753650150338343736e+25', '6.02230306841873236690335765889046842703055475561e+27', '6.47406157603958142830356266103466419129027532770065365087223464829450025112366565435896e+52'); + T('5.4644781816078472076480587668e-10', '5.533388289372726449619555652757e+18', '3023707957.76416324809553379608185627596205958651886704400676'); + T('-3.51050282698153075e-6', '-2.38e+2', '0.0008354996728216043185'); + T('6.8429855416436924582601339528425e+26', '-5.06163347121826253493439522309e-18', '-3463668466.0646345473598332283493482158871668931014551327133325'); + T('-6.6943286454175063790486144e+19', '3.4328180225062095992833728348740385020789e+37', '-2.298041202256879703336604670399729877443829865654374596865856447616e+57'); + T('3.4586536216937580446126883522083952059e+12', '-2.88703672447082268049428783480859803803275492e+13', '-9.985260023053895125434393341048712560458518029877932175692101389180863832497638028e+25'); + T('1.544220975398677252000528288503556128937132048384443331e+49', '0e+0', '0'); + T('7.7e+0', '5.629239278180308472085767973107775059451282267e-16', '4.33451424419883752350604133929298679577748734559e-15'); + T('1.072717719201024052696349931792614756e+25', '1.3771846282397089347926178e-3', '1.4773303533240107890345190437679728361254161112010424681482568e+22'); + T('-6.2982194473322433078922784904265197191653069665364692e+7', '-2.8678684613182319044997019428886e-19', '1.806246491546528554076417787115541085256514512890108233024447001160805124352749293112e-11'); + T('-1.732465708088e+1', '2.71524489294637185383888961456871107141931061365e+31', '-4.7040686660906618703715451371754514270759411014339610482012e+32'); + T('-8.96598237114090468243115825396177729e-12', '7.604366591101533e+15', '-68180.61679950920120868401395898211540605801952358557'); + T('-9.71839881931499436381251357007593505557676492579357e+50', '6.57868431363921445315728822689471152257263421455e-10', '-6.39342778663174158137496675720663924284622907149091698424887623612741936565068134530253299923904435e+41'); + T('-1.006931641466488693025e-9', '-3.4521295426580450451664697531545584755870088979e+4', '0.000034760584669436241976889349243420680611555496619415686043504166671475'); + T('6.00947607e+5', '6.812758675764029679963178704882229955116307e+38', '4.094111023268882532850848090812335308350862098327349e+44'); + T('-9.6836087377e-15', '-2.6459022649270745998e-12', '2.562188229174803984792301067246e-26'); + T('1.055921827168468904939466656863008144e+27', '6.32912299980432425349782865630544e+17', '6.68305912232736312925806512224733448892859379422335164811681167150336e+44'); + T('-9.98028905218791239e+3', '3.3600371506928e+6', '-33534141990.004018666701074203792'); + T('-1.45239016384017840495355131293445684596538291022094579841e+42', '-5.6775437718634921734497447e+2', '8.246008729026601881844137255200165069034156821222471237266712949036717046752165927e+44'); + T('-2.2979549681655763076566677319272798755304678418e+1', '-3.183497604578998e+15', '73155341365855197.813621009301952050894390937967417408666665164'); + T('4.0066264588364721690045277668336e+31', '6.737893728955e+12', '2.6996223291259444273370994565149283876986888e+44'); + T('5.846436541728802080043719344611e+21', '-1.2e-10', '-701572385007.45624960524632135332'); + T('-3.182300165687177420393599644356615e+0', '2.365832971505851366517267883747439591747414512839432822e-15', '-7.52879065721125810057489253493734512785942465676134438014645481107031765439734970381753e-15'); + T('3.825832626826099559783359922877e-15', '-6.5955112433918682619536836375146720871309857645017e+49', '-2.52333221055669854343885405756298648535866081882102237578852058574273365963353909e+35'); + T('-2.86423604077436742725253566687e-18', '-3.9616e+1', '1.1346957499131733999803645297872192e-16'); + T('-5.81865579e+4', '-3.0827768621936331602e-20', '1.7937617438481015688733727558e-15'); + T('-3.65098386509026325842574744310157864397940281992715898768e+16', '7.543511472508780470316703042149589376987868468e+20', '-2.754123867225285049343404492717016138666722719241254048568925571123034276751089068825616530843187247424e+37'); + T('4.71978532088277616359995233744199725174e+38', '-2.90845032007102932970578279149703516018735003308119692077e-12', '-1.37272611271880562032081502654149993248115310939203471275734361729098063870184524627400905246398e+27'); + T('6.66954264794400293153673670798603436474391677055481161e-10', '-6.0831130005762409912165773287576e-8', '-4.0571581589605851371281721138429286134755181825367445092430588795115847031409503355736e-17'); + T('-1.5359590725191838049406967873638064365696777077105943281364e+38', '-3.46671719279686986011120227659402959170189585e-3', '5.32473572413458873765078208479002392295654434125039963877442769432916923725014543243576464416487739394e+35'); + T('-3.8918273124023755760911999559263803895614e+13', '-5.9049071497197518967775767842381303529437097e+25', '2.298087892247939399387630879792186664312313395569266522629770751383705096713167192558e+39'); + T('1.6494930061e+4', '-1.4134663182e+6', '-23315028062.2881714102'); + T('-1.38082e+2', '1.086557106158916053738635237440757e+4', '-1500339.78332635446532338230856294608074'); + T('-3.236453714001566320662909602293056422741e-12', '-2.6292012409417075744241522002879275006552063e+30', '8509288121103316508.9776133643121846506311098158231648344441177311116642919353664683'); + T('-5.56185157584785e-9', '-5.3863586550733398733233e+22', '299581273738013.61300657427800794659905'); + T('-7.306228492885575e+1', '8.01710749999e-16', '-5.857481924695357768938364425e-14'); + T('9.078851355998902214e+6', '-3e+0', '-27236554.067996706642'); + T('-7.471572766864317095e+11', '-9.947035107615899737979837388819482785995e+39', '7.4319996621106228158954275728754194694522889053163705084525e+51'); + T('-1.265903731885e-16', '-1.207e+1', '1.527945804385195e-15'); + T('-4.726326821555207871753620716339193235463e+9', '-6.4126109518e+10', '303080951376910103067.328380769000717453065099436834'); + T('-1.91406e-20', '-6.456816473704e+1', '1.235873413965787824e-18'); + T('-3.1983053456730161e-8', '9e+0', '-2.87847481110571449e-7'); + T('-1.1250473182304781788249e-4', '-1.657377060472918137667968348296e+8', '18646.276171817696089408668926562813557672385751973704'); + T('1.1497865844851967254212601851139326807506796369434785706622e+39', '-7.76071990827718702947360345575041554086866713806786843198744e+45', '-8.923171636484296086155235679649166775015520367811462823386249811629379239580605875232547783752918665760034624822882768e+84'); + T('-3.3497708586119180439409399519615946383638197694153e+35', '-4.8561981458432843062333291774478231682e+38', '1.626715103259106287442319579436450524467374682092885927992940109533202075360145310755346e+74'); + T('1.06339694463513e+14', '3.012233219e+5', '32031996016130424203.8347'); + T('1.9633039492389670984077672122431784083773501182422065509489e+19', '1.6692272776747540826414430546718929e-7', '3277200506436.25462718284982490613239885158226875205709983451693837979539541036807585665417281'); + T('1.1467e-4', '6.77733085233686770034e-10', '7.771565288374686191979878e-14'); + T('-5.1701628249523227514579183256087778174687577e-13', '2.132619358400722076540485378725800253187225047660162663738e+9', '-0.00110259893265770873100902961300808852480005642266384867114383755051015481735901792658688929318256982826'); + T('2.18348342946585692342012771e+25', '-3.81634959382e-10', '-8332936099154723.6892526392312710267522'); + T('1.023307551757890323892037392256508719427002369e+26', '-5.20694036686411877720526e+13', '-5.32830139896505265680420021857733687673247020557939546162596921926094e+39'); + T('-2.8265491339447e+7', '-4.5434392049769450607387334481043271753316588900535258158e+55', '1.284225414995798036336141936613726795940619730566835387167617353958626e+63'); + T('-8.02970908483254769090703403995505109862035476919e-11', '2.3071404145426391103284923337981992716315980206711699715e+9', '-0.18525666346637359394264144605477583625489813085571289205234643919692091911432433571550028203557141378085'); + T('1.587431829883573713849409705849497e+25', '-1.49418e-12', '-23719088915754.3817175951099428620142746'); + T('1.6140449345603180298849693965438089354593840997322e+28', '-9.03841799979613578000119003816765e+23', '-1.458841278900975455540967582013269342009334677839779329905619862068104285214370333e+52'); + T('-3.723294e-8', '8.1668979393732624484790294912e+9', '-304.077620962808318348472796304080128'); + T('-2.145634432722793043073725435570720754433983080847542e+20', '1.465950677153e-4', '-31453942495727714.83031405298777297962982768524603399340055607926'); + T('2.278200008209245655472133211650862842e+14', '6.7270967926351916022156783304e-6', '1532567196.82058836270487268466918972063318028121075008094819589968'); + T('3.1343999e+5', '3.14336961975866116898902330896465119306450054556291e+20', '9.852577421834585592213077760716471803076251203562330547709e+25'); + T('-8.041439619908106697385565e+20', '7.78883706e+2', '-6.26334629272925752390308937810389e+23'); + T('1.77601311247551979976524852558057621908110590977554e+24', '-9.63987036475e+11', '-1.7120536170360171827608873268662828982548556336301315370428215e+36'); + T('9.807194626e+5', '-7.62599457122846035815911841262358376674896189395e-17', '-7.47896129768569306427921413491796612781212565774252219127e-11'); + T('-1.92719707950824442875770342240518e+16', '-1.70525973966481953e-11', '328637.15900850293995476091245818788722108232371654'); + T('1.16239377795254501916971749785697228868532854085e+35', '6.473102172409450243517628017455112739783779499e-12', '7.52429368925984729196132515935558757033934932864160658040770594113623888987378706054781403415e+23'); + T('-1.179784405848068e+16', '-4e+0', '47191376233922720'); + T('-7.538813675402315501713570566310033336449e+12', '3.41223043965380709597413486586383914131435e+12', '-2.572416950208617640223348424864689151961024519972222888201004983894402712962174315e+25'); + T('-2.519610125898322011290936135004574898e+10', '-1.363124864524128033329953790490685211016e+16', '3.434543211518771369514488568838182872952969792353237320906862717950506676368e+26'); + T('-4.4018359795112479954572037e+25', '8.064374150981933179268739012e+27', '-3.54980522900327467667853946121209296167777117106207444e+53'); + T('-5.5876311411746274e+7', '5.34197880056852641608623989794750613e+11', '-29849007101551382575.802997685240605484431232661965962'); + T('2.983561815076415871361124408351471429654035718756708688e-8', '1.118284411811800788510463e-16', '3.336470669476878476744869376687068610902363203935757551720993296308551931002544e-24'); + T('2.134734577507378691205480523075055640400370419357e+26', '-2.40845e-11', '-5141401493197646.20883383956580011775712227213650036665'); + T('3.47245322842069354627e-3', '-1.00754361885679357737028320286543060818544720573186927742e-9', '-3.4986480920739416255076813924095074265312312003153482496363088688338822362234e-12'); + T('-3.794245568368302794408011786555814e+20', '-8.37060859067434635093e-16', '317601.4454971178330815419624905170794066260320367580702'); + T('1.28940799891798555024002319648354556806250881774458599981e-9', '1.0028654150809960226369756911508906070980659188266e+9', '1.293102688043642049274122897660291144835301385402718280038596441757921696250413746340720089018990263022946'); + T('-4.27636406710816966834122598758048794168539e+7', '8.8982999317788742062040151406652152536669424005e+25', '-3.8052370086610255197545273472972163674292703635630344454164911934066209770042628022378695e+33'); + T('-2.948850630230385521369167273e+27', '6.672909985285753803977844488e+27', '-1.9677414815580527680894543930730406872388735650053041224e+55'); + T('-4.58435850212e-12', '-3.37588403664294220132546582786902937780785e+14', '1547.6262685555257703338148001260909269985470795177642'); + T('-2.5407577921477732e-3', '9.212688937755560725e+17', '-2340721120523603.242830965922612757'); + T('9.70814828823927437608576282702e-4', '-1.0450399929711279076844e+23', '-101454032189042387227.18166504580735273535431725952488'); + T('-8.986580647129736635012468025475589251e+25', '-2.32842674940416e+7', '2.092459476445462528863223485743121453574148915068416e+33'); + T('1.13e+1', '-4.694730618579590045444086579344431326591112917465804e+45', '-5.30504559899493675135181783465920739904795759673635852e+46'); + T('2.5304029888089e+11', '4.387914643257e-16', '0.000111031923279358510068465873'); + T('7.292170304772241302551375e+0', '-3.6216283825126026376967892815e+18', '-26409530945878724879.8331593964512856913252717030870625'); + T('9.49e+1', '-6.3604126376648187672456674994000370673e+26', '-6.0360315931439130101161384569306351768677e+28'); + T('-1.176852634451796072215996403677e+9', '2.44904391e+8', '-288216377737162735.922250619700705845707'); + T('1.373680713942569963597709e-10', '-4.5471428840104475371083297e+25', '-6246322483306348.1748793733532597161392782837366573'); + T('-5.3314956749576410979116539202451154407e+37', '2.70915269844828616659642472037869598192445e+24', '-1.4443835894576860174475218340998015353555909569592060809911322322844730795855115e+62'); + T('5.9e+0', '2.208687915206977e-18', '1.30312586997211643e-17'); + T('-4.933577839564e-2', '-5.81527983789613597327083109083065394990114741585e+20', '28690135739107706650.0330893037590591643386059592539244906894'); + T('-2.999683795083396322669132758034104118057863174352390023e+27', '-2.87555441825734267003450825531215971389862724174149604e+38', '8.62575399032701361118218619119383526371855243131272664024482478550553556850589314665513164176854330959000892e+65'); + T('4e+0', '4.73e-13', '1.892e-12'); + T('1.08754268552842900657636111617643472953987707185276968598108e+7', '1.81351345637832644608e-15', '1.9722732945916286331432129685647633013480203078627843626297182977144595945201664e-8'); + T('1.476869487377797869802075095495419497297018e+4', '9.16978415362210821336e+12', '135425744223249370.6870672636130364222488062879808291121723576048'); + T('-6.44960562766724813383113663723696894522318058842884424114e-4', '6.2987e+2', '-0.40624130966987695820562180336964496295277247572336761221668518'); + T('3.45e-18', '-4.5651228859493759221433089678212482448435184321088e+19', '-157.4967395652534693139441593898330644471013859077536'); + T('1.1116801887311179022882314500092e-16', '-2.3731060633715843891182383816509351972782343643683136984815e+27', '-263813499640.78831745125440250018216990705243508298365311908844491303220133333740292010298'); + T('-3.411622226349151970376832394365767151948e+39', '2.272882453750169129e+6', '-7.754216297093075438917262330382150382606746020237641813292e+45'); + T('4.813825375694300536878e-13', '-4.994458765e-10', '-2.404245234081581727695453283567e-22'); + T('-3.4004823042485333889969440789299923572353e+11', '-5.055670795945782666596715941784e+23', '1.71917190777197318977613475600295720724871164612058192437613842059897752e+35'); + T('-4.30182750049173941901359056714e-6', '-2.73059273e-2', '1.17465388985568150826129341738290608922e-7'); + T('-4.383659202779121282988e+9', '-3.26708101440047648993067e-10', '1.432176975500159562983467763399865447357044196'); + T('2.1032287098642227578833893517123706840232e+4', '-1.38738398481150077730631608976218467847e-19', '-2.917985828461377201803501253006512530189396739380234897663356402988476658020504e-15'); + T('-1.82989876256793e+1', '-1.42680066252682303444e+22', '2.6109007667889361627836979692295092e+23'); + T('-5.401957277401719742017451884201647908e-4', '5.57331798132165019229595829181742725699386949139427e-15', '-3.010682562847435019555936026646401099636466062637082424633510028806828395006935854868716e-18'); + T('-1.7025584579461e+1', '-1.89357506715785170663032403281086721920633943e-19', '3.223922246345454748113384654355437033006187500650177244723e-18'); + T('1.75701556278545512743452095698613449533241870186405314374e+21', '-8.0008069425919153153324522596175843489e+10', '-1.4057542312975910661097788666304204083938593139961296775572442278829856249685309185751666010886e+32'); + T('-6.0477171077679290199698548748670345744496299140266e+49', '-2.133215459449e-13', '1.29010836286647401512022142630193335625187354733582678886073434e+37'); + T('3.1064394721189e-1', '2.338713865381214106067869220656146181070789175e+10', '7265073065.4119709049662500151915998866163745003396324329075'); + T('6.6922115778644e+14', '-1.502476598814833512714989209432e-14', '-10.0548912900589540851343695771817446668970208'); + T('2.6e-17', '-2.671783935940821017261675012382562970940216397519591773e+33', '-69466382334461346.448803550321946637244445626335509386098'); + T('3.5201757425530436264024119194857657081987590263e+15', '9.331e-7', '3284675985.37624500779609056207216798232026204744053'); + T('-5.533255769459408437481792739718320122946890691e+22', '-3.531878e+2', '1.9542784320526756553356319177970861039193418399947698e+25'); + T('4.645259e+4', '-2.1e+0', '-97550.439'); + T('7.9497003230879251678395405634595e+18', '-6.1333445694821304513176871453320732006332281e+9', '-4.875825130562166374225780425406151552485642713795500618653851261127238861195e+28'); + T('-1.005369818933571484481949e+22', '3.135206365030571431738055544939894677892415929474640739e-9', '-31520418555301.66425121334176205932818570557123668182427124267161869460305520311'); + T('-4.60955142802279111987154280657676965775556e+21', '-6.999600895208299766764771673363791869163449812613584345e+21', '3.22650203020970252903982709059471354761827496584870916987798376422723879587819595266245394527082e+43'); + T('-4.42474356385592335769671439693513e-8', '1.265050947084194578462859951e-16', '-5.59752603606063023437875039568685608110784446235152882197863e-24'); + T('-7.077847732205e+4', '2.48584792112e+8', '-17594453071105.7057236696'); + T('-6.37752233724066550730707883629e+6', '-7.6039885222e-19', '4.8494606652452138136652467701959692830638e-12'); + T('-4.9433724780681818765776307e+5', '9.9959526923402244116455519e+25', '-4.941371743138620958161734043507096664065327269588333e+31'); + T('-7.687435480669860197725359437664161385731838770011635683114e-7', '-1.35484826677385443562865421591361401540341e+40', '1.041530863692139265267608718767277789101867106231335917307662291374878215844509357688744319363501874e+34'); + T('1.5012510295250038070878447757125272e+34', '2.88320380186540202497627762051674629931756151e+44', '4.328412675880839882083804634396863682183719498695681206471762208157714263548072e+78'); + T('-3.38921068317929605930700761538953746656360127100567655710865e+13', '5.69632435242926704290367713950973308658385274436e+8', '-1.9306043350107657372594071514185142475260849897600810020660411944811434813428061119686645756800301569194714e+22'); + T('-3.76914657349036275475693770766652109404782733181e+48', '3.827777748906093915789127662698600476674896035688672166e+4', '-1.442745538637205802306364313516282574241071243477898711033577246633708775227079459568580532954159340046e+53'); + T('6.662411223035412967621756635110157016806417500183356102e-11', '4.11713781541407721882458165080172938861902902e+10', '2.743006518819825052303708822086363491806643065891389452604894242568840422017902043029187832413208004'); + T('9.26006e+4', '1.782395040553430407053890679803958035e+8', '16505085019227.1987751434509284254396415821'); + T('1.669194958318640515063913971576976e-16', '-1.244248914671339151175490292104155e+12', '-0.000207689401526283965328871962139541102573486386336878117842659193528'); + T('3.16363014327124199446241593475618574106690619648e+25', '7.05008522459e+4', '2.23038621291441279938178011816995585372014349584271634674432e+30'); + T('-1.2499416265e-6', '-2.481016161522992373850612e-15', '3.101125376306835804917930031300418e-21'); + T('2.394272820993002468870139325593176e+14', '2.11414e-7', '50618279.4177414623953711635380955710864'); + T('1.1378282788937355438301626273e-8', '-2.48363251338640047864014818842048577888e-19', '-2.825947308110970660255163888048770257922851289911580643177307651424e-27'); + T('-1.117116020795727380964220670027372e+33', '1.2858e-9', '-1.4363877795391462664437949375211949176e+24'); + T('4.22729745775217473e+7', '2.7e+0', '114137031.35930871771'); + T('-3.209792098971668208636730400079e+8', '2.561617927875316631903780965290528364325200943605912675e+5', '-82222609854783.67957523073005932482022485150215647664198292591044805997494462687101325'); + T('2.791486045907779287369132431599698256688456376693553e+31', '3.01582028398776570554202910416394185546415e+41', '8.41862023971748410598194194885358670636908149176554482057465593277092965649017887260312762495e+72'); + T('-4.7987451889500086409222751881136004594238796502777e+3', '1.5763922061071358398417356638094106322793630666033e+48', '-7.56470451495490854118717493020497246765927486273345255064102022092233152887091090239341261644073641e+51'); + T('1.596e+0', '1.1278061910963898e-3', '0.0017999786809898381208'); + T('1.0019691597360265022444e+4', '-4.78747885958105888012393959e-8', '-0.0004796906170188423978033721353034376183189305015796'); + T('-7.840057154240753070926001e+13', '1.6771465194137118428e+11', '-1.31489245682394495937803684715730739761446428e+25'); + T('1.579380351053037416538973330388820879276958625730937001789542e+60', '-8.95594912974988579348053906659158935e+17', '-1.41448500805575195712136077006981122282508931148355054995764602589961835792946511370273959885777e+78'); + T('-8.6259000350458193370640181250303642061228049e+9', '2.50287016417625378022383686736285763674288500041793504864e+46', '-2.1589507836883083080681542896478167565436950513317074358030118564198671094847163184099349451694730336e+56'); + T('2.3565164149775678e-17', '3.29e-10', '7.752939005276198062e-27'); + + T('-7.3082509513985065717321588249117283909294426665053038123171823802E45', '8.1139587436599483304895082011722489767478591E-41', '-592988.4670796104848902291110510024833882877779324139587779775769322761921828542989063538752670078960459222982'); + T('4.1580690407774531635854811718695276837491313289E8', '4.51151976050001428945887983E-3', '1875921.0642990819646935715021378546121515533349338737465486653798953306087'); + T('-5.94098742155317032555791061122172112467693488807700534435506921715E-24', '4.61016941217052394016E20', '-0.0027388958488934255950077406845338327546662445400484871083292926528860519832777944645744'); + T('3.7504E-12', '-7.88007879736459852E17', '-2955344.7521636190289408'); + T('-2.1186022052008407937878760699384240447915477894859451125820040738844629725E-19', '-7.216767917254229694821186934734207628E33', '1528946042391748.997410886033946108685159225196274137373381385049759221715038347354480872320019684962009305423'); + T('-5E-13', '-2.75399279758638331766833072E26', '137699639879319.165883416536'); + T('6E-5', '2.417496760754967572844203198215987E23', '14504980564529805437.065219189295922'); + T('-4.945015198370467209539041539486792258261028978257673527352148835976343131637595762491692863E23', '3.21738997057546245991016675193089492784008451753637062802134E-9', '-1591004230358037.215453223084728812766073228229224818741711464362077222232342773738670279322956619570773005741693064394880256558629265661028200068969642'); + T('8.944326872147001036632309667E-41', '1.34989853214019743744001484188796117541380712420727841534671603347856989127834147166127622e+48', '120739337.1569336009465330585026690676314127638673504378646869299090176172459431821906069831664699038568059542346321874'); + T('-1.06387569312217787644613114942E-25', '-3.49651047707433733724368394353972842316097364325909366154237667988339210449181953609691895611E35', '37198525073.064174722364904333744771229085129180022174384101305415837978911883846550330098510374779170577866567699408319562'); + + log('\n ' + passed + ' of ' + total + ' tests passed in ' + (+new Date() - start) + ' ms \n'); + return [passed, total];; +})(this.BigNumber); +if (typeof module !== 'undefined' && module.exports) module.exports = count; \ No newline at end of file diff --git a/node_modules/mysql/node_modules/bignumber.js/test/toExponential.js b/node_modules/mysql/node_modules/bignumber.js/test/toExponential.js new file mode 100644 index 0000000..a0c8e99 --- /dev/null +++ b/node_modules/mysql/node_modules/bignumber.js/test/toExponential.js @@ -0,0 +1,845 @@ +var count = (function toExponential(BigNumber) { + var start = +new Date(), + log, + error, + undefined, + passed = 0, + total = 0; + + if (typeof window === 'undefined') { + log = console.log; + error = console.error; + } else { + log = function (str) { document.body.innerHTML += str.replace('\n', '
      ') }; + error = function (str) { document.body.innerHTML += '
      ' + + str.replace('\n', '
      ') + '
      ' }; + } + + if (!BigNumber && typeof require === 'function') BigNumber = require('../bignumber'); + + function assert(expected, actual) { + total++; + if (expected !== actual) { + error('\n Test number: ' + total + ' failed'); + error(' Expected: ' + expected); + error(' Actual: ' + actual); + //process.exit(); + } + else { + passed++; + //log('\n Expected and actual: ' + actual); + } + } + + function assertException(func, message) { + var actual; + total++; + try { + func(); + } catch (e) { + actual = e; + } + if (actual && actual.name == 'BigNumber Error') { + passed++; + //log('\n Expected and actual: ' + actual); + } else { + error('\n Test number: ' + total + ' failed'); + error('\n Expected: ' + message + ' to raise a BigNumber Error.'); + error(' Actual: ' + (actual || 'no exception')); + //process.exit(); + } + } + + function T(expected, value, decimalPlaces){ + assert(String(expected), new BigNumber(value).toExponential(decimalPlaces)); + } + + log('\n Testing toExponential...'); + + BigNumber.config({ + DECIMAL_PLACES : 20, + ROUNDING_MODE : 4, + ERRORS : true, + RANGE : 1E9, + EXPONENTIAL_AT : 1E9 + }); + + T('1e+0', 1, undefined); + T('1.1e+1', 11, undefined); + T('1.12e+2', 112, undefined); + + T('1e+0', 1, 0); + T('1e+1', 11, 0); + T('1e+2', 112, 0); + T('1.0e+0', 1, 1); + T('1.1e+1', 11, 1); + T('1.1e+2', 112, 1); + T('1.00e+0', 1, 2); + T('1.10e+1', 11, 2); + T('1.12e+2', 112, 2); + T('1.000e+0', 1, 3); + T('1.100e+1', 11, 3); + T('1.120e+2', 112, 3); + T('1e-1', 0.1, undefined); + T('1.1e-1', 0.11, undefined); + T('1.12e-1', 0.112, undefined); + T('1e-1', 0.1, 0); + T('1e-1', 0.11, 0); + T('1e-1', 0.112, 0); + T('1.0e-1', 0.1, 1); + T('1.1e-1', 0.11, 1); + T('1.1e-1', 0.112, 1); + T('1.00e-1', 0.1, 2); + T('1.10e-1', 0.11, 2); + T('1.12e-1', 0.112, 2); + T('1.000e-1', 0.1, 3); + T('1.100e-1', 0.11, 3); + T('1.120e-1', 0.112, 3); + + T('-1e+0', -1, undefined); + T('-1.1e+1', -11, undefined); + T('-1.12e+2', -112, undefined); + T('-1e+0', -1, 0); + T('-1e+1', -11, 0); + T('-1e+2', -112, 0); + T('-1.0e+0', -1, 1); + T('-1.1e+1', -11, 1); + T('-1.1e+2', -112, 1); + T('-1.00e+0', -1, 2); + T('-1.10e+1', -11, 2); + T('-1.12e+2', -112, 2); + T('-1.000e+0', -1, 3); + T('-1.100e+1', -11, 3); + T('-1.120e+2', -112, 3); + T('-1e-1', -0.1, undefined); + T('-1.1e-1', -0.11, undefined); + T('-1.12e-1', -0.112, undefined); + T('-1e-1', -0.1, 0); + T('-1e-1', -0.11, 0); + T('-1e-1', -0.112, 0); + T('-1.0e-1', -0.1, 1); + T('-1.1e-1', -0.11, 1); + T('-1.1e-1', -0.112, 1); + T('-1.00e-1', -0.1, 2); + T('-1.10e-1', -0.11, 2); + T('-1.12e-1', -0.112, 2); + T('-1.000e-1', -0.1, 3); + T('-1.100e-1', -0.11, 3); + T('-1.120e-1', -0.112, 3); + + T('NaN', NaN, undefined); + T('NaN', -NaN, 2); + T('Infinity', Infinity, undefined); + T('Infinity', Infinity, 10); + T('-Infinity', -Infinity, 0); + T('-Infinity', -Infinity, 1); + T('0e+0', 0, undefined); + T('0e+0', -0, undefined); + T('-5.0e-1', -0.5, 1); + T('0.00e+0', 0, 2); + T('1e+1', 11.2356, 0); + T('1.1236e+1', 11.2356, 4); + T('1.1236e-4', 0.000112356, 4); + T('-1.1236e-4', -0.000112356, 4); + T('1.12356e-4', 0.000112356, undefined); + T('-1.12356e-4', -0.000112356, undefined); + + T('1.00e+0', 0.99976, 2); + T('1.00e+2', 99.9979, 2); + T('1.00e+5', '99991.27839', 2); + T('1.000e+2', '99.999', 3); + T('1.000e+7', '9999512.8', 3); + T('1.00e+9', '999702726', 2); + T('1.000e+3', '999.964717', 3); + + BigNumber.config({ROUNDING_MODE : 0}); + + T('-5.3453435435e+8', '-53453.435435E4', undefined); + T('-8.8254658100092746334967191957167916942544e+17', '-882546581000927463.34967191957167916942543286', 40); + T('-4.794121828559674450610889008537305783490457e-9', '-0.00000000479412182855967445061088900853730578349045628396662493370334888944406719979291547717079', 42); + T('3.6149e+33', '3614844933096444884855774574994631.0106397808', 4); + T('5.582954000000000e-12', '0.000000000005582954', 15); + T('-3.88740271991885914774802363151163005925700000000000000000e-24', '-0.000000000000000000000003887402719918859147748023631511630059257', 56); + T('-6.87079645872437277236913190316306435274902613151676421e-20', '-0.00000000000000000006870796458724372772369131903163064352749026131516764202733298056929060151437', 53); + T('3.8181874087278104533737313621586530711155405443818235503358935045749888900678e+35', '381818740872781045337373136215865307.11155405443818235503358935045749888900677769535371296063', 76); + T('-7.11375441247784115059912118586189732891550e+20', '-711375441247784115059.91211858618973289154952986', 41); + T('6.5783e+24', '6578282366667302135641813.7249573246362582', 4); + T('6.000000000000000000000e-20', '0.00000000000000000006', 21); + T('-5.3799672107777e+13', '-53799672107777', 13); + T('-6.949e-23', '-0.00000000000000000000006948849870723', 3); + T('-8.073585184316705309757817e+25', '-80735851843167053097578169.623098209399637950843019109979317', 24); + T('-4.2956483e-12', '-0.0000000000042956482047751', 7); + T('-6.1162155721951440801240154580459651167830311633e+15', '-6116215572195144.0801240154580459651167830311633', 46); + T('-7.263265230767e-21', '-0.000000000000000000007263265230766073544739', 12); + T('-2.3013406115701776345891815e+18', '-2301340611570177634.5891814408272260224632', 25); + T('-6.0299793663e+30', '-6029979366232747481609455093247.705001183386474', 10); + T('-2.97544304967e+21', '-2975443049668038511693.75547178021412', 11); + T('-4.1471192639160032e+10', '-41471192639.1600315953295208128538183546', 16); + T('-3.61201776785294987e+27', '-3612017767852949869824542721.1595027189', 17); + T('-6.9983494044506115115e+17', '-699834940445061151.14676', 19); + T('-1.4580700323629245038287e+20', '-145807003236292450382.86958174', 22); + T('-8.54e+10', '-85390930743', 2); + T('-2.715269856970717e+19', '-27152698569707163435', 15); + T('-5.67681004e+20', '-567681003999187989540.627303416332508226276308449233', 8); + T('-2.06809e+27', '-2068085084336615438842661921.06985539576218546524301', 5); + T('-2.92273061370427012250925e+14', '-292273061370427.0122509240087955481845060858420928631', 23); + T('-4.3355e-17', '-0.0000000000000000433542', 4); + T('-3.491610942584e+21', '-3491610942583064798345', 12); + T('-8.701944635985129980360621e+16', '-87019446359851299.8036062002728328', 24); + T('-4.9e-10', '-0.000000000486409475991', 1); + T('-4.82125e+19', '-48212433366063403866', 5); + T('-7.95593941e-20', '-0.000000000000000000079559394098236', 8); + T('-2.00563e-10', '-0.0000000002005622924388', 5); + T('-6.9777057921142634382521825e+16', '-69777057921142634.3825218243275152606161149381', 25); + T('-8.42591e+14', '-842590769172062', 5); + T('-6.35123264409e+27', '-6351232644080754054285724566', 11); + T('-5.508835492577586495894259979e-28', '-0.00000000000000000000000000055088354925775864958942599785412', 27); + T('-2.667451876e+12', '-2667451875964', 9); + T('-6.6444610474323616283e+26', '-664446104743236162820999716', 19); + T('-2.419775049243e+12', '-2419775049242.726', 12); + T('-5.32e-18', '-0.000000000000000005319', 2); + T('-8.63030355223e-26', '-0.000000000000000000000000086303035522286938593814060049934', 11); + T('-2.5046920981956385048538613818080285657602718e+17', '-250469209819563850.48538613818080285657602717018', 43); + T('-3.78e+15', '-3779392491464393.04412843034387404882622864039', 2); + T('-3.3883802002818774e-21', '-0.0000000000000000000033883802002818773261717', 16); + T('-3.57205e+19', '-35720468100481047658.74549510716', 5); + T('-5.23810604e+18', '-5238106039196464333.4164490675655417554216049', 8); + T('-8.9851705212202749156714435676788925065e+21', '-8985170521220274915671.443567678892506483244', 37); + T('-4.8002620797467441513113e+15', '-4800262079746744.151311270846595944560084461404058322669896', 22); + T('-7.6602835119619761973713784765241687426415076035234065319212e+19', '-76602835119619761973.713784765241687426415076035234065319212', 58); + T('-5.381812197644510770977641728943e+29', '-538181219764451077097764172894.2045958494', 30); + T('-6.04171e+30', '-6041702557251805571827972925970.859227', 5); + T('-3.995516696587253269e+28', '-39955166965872532681529528721.070757896455736015403', 18); + T('-7.597966e+15', '-7597965080819292', 6); + T('-5.302339e+10', '-53023381796.8478', 6); + T('-9.02545540564356e+13', '-90254554056435.587103358700012', 14); + T('-4.90010261765297775855e+21', '-4900102617652977758549.72018756787751358174277326416937', 20); + T('-5.078904359675664732215233579164e+14', '-507890435967566.473221523357916309238214', 30); + T('-5.521012629302366870801695374639196986679745208450805993e+22', '-55210126293023668708016.9537463919698667974520845080599201807', 54); + T('-5.2937835496774926e-19', '-0.00000000000000000052937835496774925027979577384249493104941', 16); + T('-2.3554653675126963e+18', '-2355465367512696228', 16); + T('-2.891052510655698093e-17', '-0.000000000000000028910525106556980924149216708779185331', 18); + T('-3.68377e-16', '-0.0000000000000003683765961604816288244373051', 5); + T('-3.95708e+25', '-39570783738574043219687566.965221194063889914', 5); + T('-3.584456985168021826814122e-17', '-0.0000000000000000358445698516802182681412158196413726', 24); + T('-8.556316744104688591686120874555554808035e+28', '-85563167441046885916861208745.55554808034964', 39); + T('-6.02219e+18', '-6022186164465021650.884475588', 5); + T('-7.790612428288e+18', '-7790612428287383595.5394047', 12); + + BigNumber.config({ROUNDING_MODE : 1}); + + T('0e+0', '-0.0E-0', undefined); + T('-2.856376815219143184897347685012382222462687620998915470135915e+6', '-2856376.815219143184897347685012382222462687620998915470135915511363444', 60); + T('7.75700e-24', '0.000000000000000000000007757', 5); + T('7.0e-1', '0.7', 1); + T('5.2109749078977455423107465583658126e+37', '52109749078977455423107465583658126637', 34); + T('3.631093819552528994444977110063007461579154042777868294000e-29', '0.00000000000000000000000000003631093819552528994444977110063007461579154042777868294', 57); + T('-9.893937860425888e+8', '-989393786.042588804219191', 15); + T('8.7978043622607467e+42', '8797804362260746751563912625017414439944006.5804807', 16); + T('-4.6561702764394602621e-7', '-0.000000465617027643946026213823955447791862428108248596086901464075785390015', 19); + T('-2.542770482242902215596924884302407e+8', '-254277048.224290221559692488430240765024783', 33); + T('2.70000000e-8', '0.000000027', 8); + T('-8.0291821891769794408790934252924453237e+16', '-80291821891769794.408790934252924453237503615825249362166', 37); + T('-8.05295923004057358545854771e-16', '-0.0000000000000008052959230040573585458547716514262', 26); + T('-2.786758e-21', '-0.00000000000000000000278675879025858093817787290334306', 6); + T('-8.0160835624737225803853824687641777660406527e+20', '-801608356247372258038.538246876417776604065270622886204812876', 43); + T('-7.2849054887999144694619191770897589e+27', '-7284905488799914469461919177.08975892527524', 34); + T('-7.586e-17', '-0.00000000000000007586908', 3); + T('-5.9508150933636580674249602941673984254864e+20', '-595081509336365806742.496029416739842548642249', 40); + T('-3.526911897e-18', '-0.000000000000000003526911897770082481187', 9); + T('-5.774e-22', '-0.0000000000000000000005774729035676859', 3); + T('-6.4700957007714124190210074e-13', '-0.00000000000064700957007714124190210074383', 25); + T('-5.610492e+21', '-5610492566512449795573', 6); + T('-6.015e+23', '-601556443593022914280678', 3); + T('-6.0673361553344e+11', '-606733615533.448288878', 13); + T('-3.1e+26', '-315617199368461055533962323.071668327669249', 1); + T('-9.1391079512104562032343e+24', '-9139107951210456203234346', 22); + T('-2.0441e+21', '-2044198307917443182711', 4); + T('-8.21283723216249535240085606500821783973097233e+23', '-821283723216249535240085.606500821783973097233814324', 44); + T('-6.375e+14', '-637540984314799.4', 3); + T('-2.17797482005219478530856429744726e+29', '-217797482005219478530856429744.7268928676963181', 32); + T('-3.9547e+11', '-395476721391', 4); + T('-6.8927e+21', '-6892798573971046301111', 4); + T('-6.33842141402916538926e-12', '-0.000000000006338421414029165389261335065112712777', 20); + T('-4.5727e-30', '-0.000000000000000000000000000004572725511159166', 4); + T('-7.8847457779026882221249217577974e-17', '-0.000000000000000078847457779026882221249217577974', 31); + T('-2.64916231640264927e+12', '-2649162316402.649271824', 17); + T('-1.73604404e+28', '-17360440496948254515028685124.37795415803082546457797184294', 8); + T('-8.680224985623e+16', '-86802249856236148.11694273469092873', 12); + T('-4.3e-19', '-0.00000000000000000043859841576346037715462713764211635', 1); + T('-7.68867535389098159141717105e-11', '-0.000000000076886753538909815914171710501337139', 26); + T('-5.24325038611090505928389422325001606e+21', '-5243250386110905059283.894223250016067979080420266', 35); + T('-1.38e-21', '-0.0000000000000000000013874592057586367688528204069850262406', 2); + T('-7.308601949094508589445770582074109410615037e+24', '-7308601949094508589445770.5820741094106150373221910779', 42); + T('-3.2638e+13', '-32638405387645.3309565877781780222317335852159983', 4); + T('-3.55454737448094719019291183206515059962378e+22', '-35545473744809471901929.118320651505996237856336054914', 41); + T('-5.3906242252792e-11', '-0.00000000005390624225279268530907215395611', 13); + T('-8.86760873811213105078e+15', '-8867608738112131.050787', 20); + T('-4.78129254835567e-23', '-0.00000000000000000000004781292548355671480462711435866243551', 14); + T('-6.4694208834502691835879021438795583630205e-19', '-0.00000000000000000064694208834502691835879021438795583630205', 40); + T('-9.324e-25', '-0.00000000000000000000000093242969', 3); + T('-6.922220589076408182786e+19', '-69222205890764081827.8655148459740694252038421', 21); + T('-4.193207546161458e+19', '-41932075461614585862.215078', 15); + T('-7.98e+20', '-798827417648620333729.80696458197', 2); + T('-2.53e-27', '-0.0000000000000000000000000025361014542495516754818606153', 2); + T('-1.4930677606201e-20', '-0.0000000000000000000149306776062013560263804', 13); + T('-2.4385708957357e+19', '-24385708957357294486.03887038886025345320045340124898971786', 13); + T('-2.3170650157672525597815028610843e+18', '-2317065015767252559.781502861084367708776250552', 31); + T('-6.9178198e+18', '-6917819884210952360.76327902290237387108459707859893972', 7); + T('-5.8557793e-24', '-0.000000000000000000000005855779377', 7); + T('-2.9760848e-12', '-0.00000000000297608486674725722', 7); + T('-5.994209456542723342157e+23', '-599420945654272334215750.2697081334512770109182770472941827', 21); + T('-2.176318765141873189550724e+24', '-2176318765141873189550724', 24); + T('-3.015068240172763167642991583362591462e+17', '-301506824017276316.76429915833625914624', 36); + T('-4.092360120459492827213341546580282588568024330771e+25', '-40923601204594928272133415.465802825885680243307714368088538', 48); + T('-1.241037736e-28', '-0.00000000000000000000000000012410377364', 9); + + BigNumber.config({ROUNDING_MODE : 2}); + + T('0e+0', '0E0000000000', undefined); + T('0e+0', '-0E01', undefined); + T('0.00e+0', '-0E00000000001', 2); + T('3.0465655253692145345165166442116e-14', '0.0000000000000304656552536921453451651664421156', 31); + T('9.0573943842008592406279608542923313381394286641978907203396551e+22', '90573943842008592406279.60854292331338139428664197890720339655043720040907662489784', 61); + T('-1.17181502970008783734855040984899000e-1', '-0.117181502970008783734855040984899', 35); + T('-5.28860565e-16', '-0.00000000000000052886056528317233012115396784629214632', 8); + T('6.4114675970838738000e-18', '0.0000000000000000064114675970838738', 19); + T('8.00000000000000000000e-20', '0.00000000000000000008', 20); + T('2.74000064578288771723078597711103520450391668117802304078152085625023633681179e+24', '2740000645782887717230785.977111035204503916681178023040781520856250236336811781347278', 77); + T('8.1936742669491704846805837777816457628e-16', '0.00000000000000081936742669491704846805837777816457628', 37); + T('-7.2157448e+14', '-721574484716710.00141299844961546', 7); + T('-5.321807464703650000000e-15', '-0.00000000000000532180746470365', 21); + T('-4.449e+27', '-4449471658582621135143349142.228707647170080816912435271162', 3); + T('-4.922915821313919623758e+19', '-49229158213139196237.584', 21); + T('-6.996668225774098e-14', '-0.000000000000069966682257740984029052', 15); + T('-8.6856039174822133942616012424795168e+11', '-868560391748.2213394261601242479516861829472792', 34); + T('-8.461e+21', '-8461810373307862460504', 3); + T('-3.898716627703194625824411967e+25', '-38987166277031946258244119.67718', 27); + T('-2.821935496755e+26', '-282193549675582402670759843.23655', 12); + T('-3.49e-22', '-0.0000000000000000000003491662482987', 2); + T('-3.362111778576231615366457333e-14', '-0.0000000000000336211177857623161536645733316587527475522615', 27); + T('-5.9933e-13', '-0.00000000000059933412636903331', 4); + T('-2.77927721e+29', '-277927721100404435781172100113.4136636412460458083951', 8); + T('-1.876833722329e-10', '-0.0000000001876833722329987477942', 12); + T('-6.5e+14', '-653341175209856', 1); + T('-8.627291840173867961e+14', '-862729184017386.7961', 18); + T('-3.9137457165597668391301218029e-11', '-0.00000000003913745716559766839130121802935022889', 28); + T('-8.95e+10', '-89532775488', 2); + T('-2.1395541875015568986238e-17', '-0.000000000000000021395541875015568986238771696', 22); + T('-4.98575853353890809143399546448630559732119628e-12', '-0.00000000000498575853353890809143399546448630559732119628509', 44); + T('-8.99e+16', '-89989591559494822', 2); + T('-3.49346327e+22', '-34934632714180035424463', 8); + T('-3.5699537605753905457597e-14', '-0.00000000000003569953760575390545759785014980652333323889116', 22); + T('-2.9892536880349975618286e+12', '-2989253688034.9975618286212199904979534461637613', 22); + T('-3.04383919217904949618e+10', '-30438391921.790494961888803732171', 20); + T('-8.232411544e+17', '-823241154405701456', 9); + T('-5.809151226990464016815e-16', '-0.00000000000000058091512269904640168152354', 21); + T('-8.522042397326932431e+13', '-85220423973269.324312660179132118', 18); + T('-7.5210942e-22', '-0.000000000000000000000752109428925015', 7); + T('-5.2018321449543e+23', '-520183214495439298725191.09', 13); + T('-6.04084045453711395629268198016245611021901815e+21', '-6040840454537113956292.68198016245611021901815486929628647', 44); + T('-1.495478178996755138125934544343674798e-13', '-0.00000000000014954781789967551381259345443436747983317353423', 36); + T('-6.881484497510733524151245220630282259985306546537e+16', '-68814844975107335.241512452206302822599853065465371507616758', 48); + T('-4.7121389019956e-14', '-0.00000000000004712138901995619', 13); + T('-8.8332728504053108443425344711e-15', '-0.00000000000000883327285040531084434253447119282', 28); + T('-8.2e+14', '-822000812447305', 1); + T('-7.772164697477093877214551050634072755e+21', '-7772164697477093877214.55105063407275517068350805', 36); + T('-3.9087122838427126623505550357872e+10', '-39087122838.4271266235055503578721071128', 31); + T('-2.312032777966762704192668904908578897e+20', '-231203277796676270419.266890490857889726891117', 36); + T('-6.145717261905789834140342e+10', '-61457172619.0578983414034269108488849155084479', 24); + T('-1.22122395777234009028954105999904e+23', '-122122395777234009028954.10599990431', 32); + T('-8.11092557e-19', '-0.000000000000000000811092557221182808185409783', 8); + T('-2.0148183904e+12', '-2014818390421', 10); + T('-8.5895e+12', '-8589543094837', 4); + T('-4.52948430169449249063e+13', '-45294843016944.92490631367483828208567689248', 20); + T('-5.5627328016242253171e+18', '-5562732801624225317.15482034912', 19); + T('-2.299e+22', '-22994771657263381474221.8393766046648504992', 3); + T('-4.886104291748549e+15', '-4886104291748549.177', 15); + T('-3.7192656464776e-11', '-0.00000000003719265646477604172611', 13); + T('-6.135956620537e+25', '-61359566205370067856449153.5', 12); + T('-3.35703853285800120218674208960269655701e-14', '-0.000000000000033570385328580012021867420896026965570155917', 38); + T('-8.713884178791321311224703e+22', '-87138841787913213112247.03564225163096', 24); + T('-7.073358e+12', '-7073358766762', 6); + T('-6.829e+30', '-6829360758600890577632541121747.862424035', 3); + T('-3.05687463293e+22', '-30568746329329110731433.300963185825462157574537899186', 11); + T('-8.761781e+24', '-8761781624975891699172893.0141633817001124644', 6); + T('-1.477e+12', '-1477134517234.0307742', 3); + T('-5.78904078729758522168774487851811e+16', '-57890407872975852.216877448785181168776187771353947582', 32); + T('-7.74939714942520320266429137e+12', '-7749397149425.20320266429137053013', 26); + T('-8.3224649681672648581370532515e-14', '-0.00000000000008322464968167264858137053251586527433370546682', 28); + T('-7.04146154016765195683657078079536e-22', '-0.000000000000000000000704146154016765195683657078079536', 32); + T('-1.914289454756549529781861916925090389e+16', '-19142894547565495.29781861916925090389840210707205', 36); + T('-8.840670154325523051759462672e+27', '-8840670154325523051759462672.142803216', 27); + T('-2.823e-11', '-0.00000000002823852806134378210195515771768582269146178698', 3); + T('-1.5186417607496557534159723950506e+29', '-151864176074965575341597239505.06547275781526923', 31); + T('-7.397218e+16', '-73972184449181471.152912157', 6); + T('-3.581193819284374099989e+22', '-35811938192843740999895.1573225646377886389016478830802218237', 21); + T('-4.563585432210043885759681337791545e+29', '-456358543221004388575968133779.154510217739887576756399', 33); + T('-1.8176465832459836335875e-18', '-0.0000000000000000018176465832459836335875559', 22); + T('-3.784854627631e+20', '-378485462763141736445.9462626829154663', 12); + T('-3.8510536744200399243363367786406618e+23', '-385105367442003992433633.6778640661831754293129488068676868', 34); + T('-8.7323e+22', '-87323916569164596208111.88101028771355420576029037973', 4); + T('-7.578e+11', '-757882758255.76', 3); + T('-8.5977102122033e+20', '-859771021220338061040.041580289025031', 13); + T('-7.3998697893908579137880913e+17', '-739986978939085791.37880913509684330685', 25); + T('-6.71117252123290052432148305375254e-19', '-0.00000000000000000067111725212329005243214830537525418', 32); + T('-6.6762993760195471322427204620426381935201299178096e+11', '-667629937601.9547132242720462042638193520129917809665', 49); + T('-2.852022020015364818597602e+15', '-2852022020015364.818597602673413917443', 24); + T('-3.151044e+30', '-3151044929117854676102403114231.56823295246', 6); + T('-4.47120537692951873038916592e+10', '-44712053769.29518730389165927694', 26); + T('-7.4041969e+23', '-740419699691346150775964.049522110341852844412207474667958', 7); + T('-6.311838e-10', '-0.000000000631183849892543191', 6); + T('-7.2570104326587672213e+16', '-72570104326587672.213076838263780308795144628367752', 19); + T('-4.445769230869049803541e+15', '-4445769230869049.80354196820931591782233498498378174385', 21); + + BigNumber.config({ROUNDING_MODE : 3}); + + T('-9.99999999000000009e+8', '-999999999.000000009e-0', undefined); + T('-3.99764422903251220452704763278376060858663250289320247532595e+24', '-3997644229032512204527047.63278376060858663250289320247532594416986984981431156065660613', 59); + T('5.534083545686157907280686578717428772e+12', '5534083545686.157907280686578717428772', 36); + T('5.00000000e-9', '0.000000005', 8); + T('-4.08363116583051e+14', '-408363116583051', 14); + T('9.278230415634296945273818e+19', '92782304156342969452.738186255580532649103987374718221928871873054827841260470670536425', 24); + T('-1.08732508998603085454662e-12', '-0.000000000001087325089986030854546619968259691229662152159029641023997866843605032534351388775075', 23); + T('3.5288804517377606688698e+32', '352888045173776066886981811418233.218955856086', 22); + T('4.32188781438877554e+16', '43218878143887755.42593887518334667202', 17); + T('-8.15e+2', '-815', 2); + T('1.515077312590223222678749527e+18', '1515077312590223222.678749527895871363186918977679783240817218232896076765321818445939718165', 27); + T('-8.0538186421664536509917032729912932814374102e+20', '-805381864216645365099.17032729912932814374101821', 43); + T('-3.4367097301002099047381e+14', '-343670973010020.990473804391071456587732173', 22); + T('-5.3421e-12', '-0.0000000000053420288504', 4); + T('-2.6320052e+23', '-263200517731973006983184.60341959097016190770542276', 7); + T('-4.5e-11', '-0.000000000044673422483', 1); + T('-7.232463101115829118145025733451801e-17', '-0.00000000000000007232463101115829118145025733451800457178', 33); + T('-1.18320100044154762448545914170978206041022039e+22', '-11832010004415476244854.5914170978206041022038489', 44); + T('-7.745237371276392645711e+21', '-7745237371276392645710.0521930569226728841707200771', 21); + T('-4.431559500053255695643e-10', '-0.000000000443155950005325569564213010993378905', 21); + T('-2.5e-24', '-0.000000000000000000000002443', 1); + T('-5.005027028439023958391203127005503621542e-11', '-0.0000000000500502702843902395839120312700550362154137', 39); + T('-6.453525377934213334367e-22', '-0.00000000000000000000064535253779342133343665123283565', 21); + T('-4.5594370326121718626850982373529e+13', '-45594370326121.71862685098237352845979966987', 31); + T('-1.709e+16', '-17088248121660259', 3); + T('-3.9047581533864713e+16', '-39047581533864712.6574405', 16); + T('-2.08804202e-17', '-0.000000000000000020880420127397564274443250271135', 8); + T('-6.801694635944774655689008216925036e+15', '-6801694635944774.65568900821692503508025', 33); + T('-8.7691286374104240967931800593734e+19', '-87691286374104240967.93180059373367907299683816381677816389', 31); + T('-2.802257731715238453e-29', '-0.000000000000000000000000000028022577317152384526775320012', 18); + T('-4.4705e+22', '-44704405768781565005877.813010169083', 4); + T('-4.17374908496486449232e-10', '-0.00000000041737490849648644923105632500267064', 20); + T('-2.2707e-10', '-0.00000000022706134122862417334386435', 4); + T('-2.85432e-24', '-0.0000000000000000000000028543100839983854161', 5); + T('-5.79188949e+12', '-5791889489461.643555240257', 8); + T('-7.46e+15', '-7459701910718662.03421293892346992893463534702', 2); + T('-1.0535086280629e+25', '-10535086280628995915087428.2423609320023833125322801559606', 13); + T('-2.9074412651647188367106e+30', '-2907441265164718836710598468491.31550321772', 22); + T('-5.010945976711327691649e+27', '-5010945976711327691648509517.2305', 21); + T('-8.8633960213386533e-20', '-0.0000000000000000000886339602133865324283362544', 16); + T('-3.1891844834898211661452730714015664837805e+19', '-31891844834898211661.45273071401566483780434051217', 40); + T('-5.083380976014365533843229882526437e+28', '-50833809760143655338432298825.264367948359', 33); + T('-6.8e-16', '-0.000000000000000678534987604148025611184', 1); + T('-7.9e+30', '-7838656097386639584904346062976.9346038436', 1); + T('-6.30535781e+20', '-630535780834495012856', 8); + T('-9.663e-30', '-0.00000000000000000000000000000966289400023904753107633012', 3); + T('-2.315198482309e+12', '-2315198482308.7361348', 12); + T('-8.158235289416e+18', '-8158235289415958939', 12); + T('-4.1618890517404316933699206360639988582832624525e+23', '-416188905174043169336992.063606399885828326245241437', 46); + T('-5.97550716981833990839441709632e+21', '-5975507169818339908394.41709631281058258352209', 29); + T('-6.3372e-18', '-0.000000000000000006337122571683959413228', 4); + T('-8.9189088e+18', '-8918908714500548003.38400978696756078013348', 7); + T('-2.30738494e+15', '-2307384939629592.5507643557167543121437', 8); + T('-5.5187220703008771818558364e+20', '-551872207030087718185.58363308126401300424', 25); + T('-6.6221540532808e+16', '-66221540532807215', 13); + T('-7.52280140768218860970644149216497725e+28', '-75228014076821886097064414921.6497724655', 35); + T('-4.50815289e-10', '-0.0000000004508152886241127131780051700309401', 8); + T('-8.05636473909e+28', '-80563647390897795982047004786.9809587987299506647489380735', 11); + T('-8.3e-22', '-0.00000000000000000000082867896643314771124884886449603747139', 1); + T('-8.3783e+13', '-83782644902152', 4); + T('-1.1939712427296807e+16', '-11939712427296807', 16); + T('-6.520492185955083727143468903725e+24', '-6520492185955083727143468.90372469799639', 30); + T('-5.468441290352576854e+22', '-54684412903525768532358.76123265640787599117379', 18); + T('-6.3213239044187e-12', '-0.000000000006321323904418628', 13); + T('-6.80758136e+10', '-68075813559.812083737218313494618879237157412', 8); + T('-2.32394435705096500766e+20', '-232394435705096500765.423311444507670516532857314906', 20); + T('-5.35396744204815374979010975360864002355e+14', '-535396744204815.374979010975360864002354465685768494008245896', 38); + T('-1.8388340153656061115e-24', '-0.0000000000000000000000018388340153656061114681', 19); + T('-2.09349812455746e+24', '-2093498124557455120865520.476275227', 14); + T('-2.888450139093515656e-25', '-0.0000000000000000000000002888450139093515656', 18); + T('-6.97756838052316890676e+30', '-6977568380523168906759075718628.73360426401485819654038588804', 20); + T('-8.05604538646883624239398132377048820023e+24', '-8056045386468836242393981.323770488200227820839', 38); + T('-4.13045948e+29', '-413045947014551860341804907208.7067642881758676', 8); + T('-7.990552461602111454165337515e+23', '-799055246160211145416533.75144940262265224221931', 27); + T('-7.84498851993324e+11', '-784498851993.323271787115869178093231451893938531755482687806', 14); + T('-8.63875584973951951712658379e-21', '-0.000000000000000000008638755849739519517126583785754757065', 26); + T('-8.61609302272300237447639006834635e-14', '-0.00000000000008616093022723002374476390068346342187746', 32); + T('-7.01300801762e+17', '-701300801761204790.177590913310762', 11); + T('-8.0318131135482342451545e-11', '-0.0000000000803181311354823424515442372680533', 22); + T('-8.310034087753417316659936093943321e+25', '-83100340877534173166599360.9394332099174859', 33); + T('-7.716088095718838665380730070082633435173897567e+30', '-7716088095718838665380730070082.6334351738975662966', 45); + T('-6.5207000918869e-14', '-0.00000000000006520700091886862177', 13); + T('-6.579884485936605389e+14', '-657988448593660.538847871', 18); + T('-5.31961604251455760419e+30', '-5319616042514557604183392605338.36600372994596807972708', 20); + T('-7.87765329352729e+16', '-78776532935272856.77806', 14); + T('-8.23e+11', '-822427564609', 2); + T('-1.2946e+16', '-12945401038582508.297183225785515084520662225', 4); + T('-4.3885535805231634787626423119240512694696e+14', '-438855358052316.347876264231192405126946952', 40); + T('-6.4067449547192616381924351e-29', '-0.00000000000000000000000000006406744954719261638192435066816', 25); + T('-9.41834953e+18', '-9418349527156084224.2', 8); + T('-3.19716162829318952418046452988e+13', '-31971616282931.895241804645298754890905582545633', 29); + + BigNumber.config({ROUNDING_MODE : 4}); + + T('-5.002239116605888927178702930656e-39', '-0.00000000000000000000000000000000000000500223911660588892717870293065633642', 30); + T('-8.52292947230244775435e+29', '-852292947230244775434968241532.494643593912804433318745222587246680109833509655450267792446', 20); + T('-6.1169514510867e+10', '-61169514510.8673382', 13); + T('-8.05745763527307676170759722175169266017831695215e+48', '-8057457635273076761707597221751692660178316952146', 47); + T('-4.923572102098e+10', '-49235721020.9847017846898652687600227388412980598816', 12); + T('-7.981341661715027117746906076515945e+41', '-798134166171502711774690607651594491039629', 33); + T('-8.00e-3', '-0.008', 2); + T('8.517466793430899278197016892000000000000e-15', '0.000000000000008517466793430899278197016892', 39); + T('-3.032293512e+0', '-3.0322935124071923328711934463341802038', 9); + T('-2.60682904403489305678908771323995810138267385200000000e-20', '-0.00000000000000000002606829044034893056789087713239958101382673852', 53); + T('-3.935816927273980e+20', '-393581692727398036652.850960055902271', 15); + T('-2.98297216346e-27', '-0.00000000000000000000000000298297216346039288935575576076143', 11); + T('-3.01319315e+23', '-301319315398414808376087.572306433', 8); + T('-8.870698526921188e-12', '-0.00000000000887069852692118832284144110732', 15); + T('-3.27e+23', '-326739927744903524706793.652546266488323001284674736489440831', 2); + T('-8.614e+12', '-8613828413581', 3); + T('-6.1382445990593346026804e+12', '-6138244599059.3346026803630253203', 22); + T('-7.9111971e+12', '-7911197130975', 7); + T('-8.5902152501051e+29', '-859021525010507210136559039003.689834129033952321238', 13); + T('-7.24491e-30', '-0.00000000000000000000000000000724490826045045451271534', 5); + T('-8.4948070285349193974989221504919380656715136165603325e+24', '-8494807028534919397498922.15049193806567151361656033246', 52); + T('-6.3295239596e-17', '-0.00000000000000006329523959626011114164', 10); + T('-3.1725692353e+30', '-3172569235260846783669130724638.711', 10); + T('-4.065727077e+11', '-406572707673.336570352310681187663765', 9); + T('-6.82883869249998075574247223155497e+18', '-6828838692499980755.7424722315549682855987375899188309581152', 32); + T('-2.56144400427045214943786338e+24', '-2561444004270452149437863.38354535663028539', 26); + T('-4.97637439956044400125498868e+23', '-497637439956044400125498.8682100590602459937304614141772', 26); + T('-4.307891929198702822746534506143e+29', '-430789192919870282274653450614.349564081', 30); + T('-8.55e-27', '-0.00000000000000000000000000855367295711812079', 2); + T('-7.906e+11', '-790612526329.410459220189562', 3); + T('-3.1841363e-22', '-0.00000000000000000000031841363', 7); + T('-6.2068049304845006e+20', '-620680493048450055389.3227069760888437941041', 16); + T('-8.4809476e+18', '-8480947614295114807.320148688', 7); + T('-2.287988570734255855e+23', '-228798857073425585542366.399034916953775', 18); + T('-8.148647139762925073276164486240320698e+21', '-8148647139762925073276.1644862403206980851079', 36); + T('-6.87643138785664756e-12', '-0.0000000000068764313878566475604352570287089535238582267443', 17); + T('-3.709587e+18', '-3709586618852569033.55141868', 6); + T('-6.8086794224e+28', '-68086794224433270564431694468.814537646575833889824621540849', 10); + T('-4.966301085179e+19', '-49663010851788946007', 12); + T('-5.34439184068052811184219234494114e+26', '-534439184068052811184219234.494113670484623394', 32); + T('-2.798732412e+16', '-27987324119455299', 9); + T('-1.554430791885961957e+15', '-1554430791885961.956863404519493346081223', 18); + T('-6.90619083822075003978e+24', '-6906190838220750039778836.289105048686876596', 20); + T('-1.108034176809770578315e+12', '-1108034176809.7705783154', 21); + T('-1.43e+22', '-14266566332440117777110.63461224926682073525873105', 2); + T('-9.15e+13', '-91477543307040.916791223', 2); + T('-1.1001e+26', '-110010856476508992391958436.9355559264588205214557001854', 4); + T('-1.2e+16', '-12148027447349021', 1); + T('-4.4e+13', '-44268551660889.40880208546489742632181832780494', 1); + T('-8.62058920338555484081691e+19', '-86205892033855548408.169086865949596390775', 23); + T('-5.2e-13', '-0.00000000000051876025261394172', 1); + T('-4.88063953404884862027221562057786242658496407473e-11', '-0.0000000000488063953404884862027221562057786242658496407473', 47); + T('-5.255e+18', '-5254530327311322805.9528217', 3); + T('-6.4630488003995117e-11', '-0.0000000000646304880039951167486', 16); + T('-3.15214e-23', '-0.00000000000000000000003152137339126187', 5); + T('-8.86563136e+11', '-886563136251.626990531858472111699416852', 8); + T('-8.638990742871e-16', '-0.0000000000000008638990742870608', 12); + T('-1.57817750020560815944470062e+12', '-1578177500205.60815944470062002898187', 26); + T('-3.6558384593093900422637e-27', '-0.00000000000000000000000000365583845930939004226367940618', 22); + T('-7.5e+12', '-7540535487033', 1); + T('-6.7647935206791247e+19', '-67647935206791246567', 16); + T('-3.0204818086245915027e+30', '-3020481808624591502749101182536.872936744534671794', 19); + T('-8.40498662e+12', '-8404986622734.85', 8); + T('-2.944135296894e-18', '-0.0000000000000000029441352968942548971', 12); + T('-8.826099694855290261753e+11', '-882609969485.52902617534731', 21); + T('-1.9717565867734925e-13', '-0.000000000000197175658677349252855292223369', 16); + T('-4.91451975824866130376722e+20', '-491451975824866130376.722358803861287205044883122152013315', 23); + T('-5.111649e+17', '-511164947156144375', 6); + T('-9.496473458673099e+11', '-949647345867.30987953779868637405061', 15); + T('-2.1903308925764762892e+21', '-2190330892576476289225', 19); + T('-3.47598363e+25', '-34759836338593591584288059.755482689269713', 8); + T('-2.9192144584989753156762701431e-24', '-0.0000000000000000000000029192144584989753156762701431', 28); + T('-4.0456517973466503588734928438425e+23', '-404565179734665035887349.28438424933669843', 31); + T('-1.297871549154944904150929e+17', '-129787154915494490.4150929407633398', 24); + T('-1.4566530316908752e+18', '-1456653031690875152.6306667', 16); + T('-3.5521e-12', '-0.00000000000355210483', 4); + T('-9.1838324864110351307221525161e+17', '-918383248641103513.07221525161442', 28); + T('-8.33245633316304149287131334e-22', '-0.00000000000000000000083324563331630414928713133382', 26); + T('-4.593824606634605622464043606094613988489104e+15', '-4593824606634605.62246404360609461398848910424547985108092894', 42); + T('-5.232e-26', '-0.0000000000000000000000000523185958604202852', 3); + T('-3.8319390497954462e+25', '-38319390497954461897251251.444', 16); + T('-1.00157678068191049988073716749599603712e+17', '-100157678068191049.9880737167495996037119953003896147', 38); + T('-4.169977410059689809645035174132294864e+20', '-416997741005968980964.50351741322948635363513285839302', 36); + T('-7.121660153198989278372512656775647e-11', '-0.0000000000712166015319898927837251265677564651728358', 33); + T('-7.98924570545536548623603750084330391943e+19', '-79892457054553654862.360375008433039194317394396964358522', 38); + + BigNumber.config({ROUNDING_MODE : 5}); + + T('4.95474614815842e+38', '495474614815842191683004449862568813538.573064401156', 14); + T('-8.9667567079038139e+16', '-89667567079038139', 16); + T('-7.0e+2', '-703', 1); + T('-2.6249e+33', '-2624861185343559570287214983819906', 4); + T('-6.510119186347371697501169416839709631422185436811698613000000000000000000000000000000e-31', '-0.0000000000000000000000000000006510119186347371697501169416839709631422185436811698613', 84); + T('7.73e+3', '7729', 2); + T('1.4393781011009257793117531801549e+4', '14393.781011009257793117531801548751', 31); + T('8.4e+6', '8404542', 1); + T('8.471284625267663009248667391059202502589207637435209861233007389000000000000000e-35', '0.00000000000000000000000000000000008471284625267663009248667391059202502589207637435209861233007389', 78); + T('-5.26079297227015e+31', '-52607929722701509263909039511536.9266822991', 14); + T('-4.63550600857003551411914120562163394e+15', '-4635506008570035.51411914120562163394396594237358863897062', 35); + T('-7.8219563406482338767189100434751303552919130625101491e+27', '-7821956340648233876718910043.4751303552919130625101491', 52); + T('-6.977184098e+17', '-697718409782854734', 9); + T('-8.1e+15', '-8092701222454628.9934935902179330839653799891168', 1); + T('-3.872944373744596915691884729973e+15', '-3872944373744596.91569188472997336351132980366520033057011287', 30); + T('-1.389676e+11', '-138967565295.146055555208419143848718279114979831585', 6); + T('-2.218316993130903882223e+19', '-22183169931309038822.22612', 21); + T('-3.370809304e-25', '-0.000000000000000000000000337080930401566', 9); + T('-6.1503e+19', '-61503417721509415792.24703', 4); + T('-3.13657134e-22', '-0.00000000000000000000031365713378439345', 8); + T('-1.9e-10', '-0.000000000187981', 1); + T('-2.596508353714425677970049724e+28', '-25965083537144256779700497237.5841327343962292316215149169', 27); + T('-4.151454545748277604112308101174917062e+11', '-415145454574.827760411230810117491706171981266892178', 36); + T('-1.3e-18', '-0.000000000000000001319061308619561567664259803361817', 1); + T('-1.5294854487046553159e+24', '-1529485448704655315921667', 19); + T('-1.9365487654708143765583400538310103350799e-13', '-0.000000000000193654876547081437655834005383101033507988', 40); + T('-3.88128259276357427027515474e+25', '-38812825927635742702751547.353', 26); + T('-5.64525474904155517374289736218e-11', '-0.00000000005645254749041555173742897362182099811344', 29); + T('-8.94963385755006409131430087734467745e+22', '-89496338575500640913143.0087734467744538', 35); + T('-3.7551731901764025e+17', '-375517319017640249', 16); + T('-7.601921e-16', '-0.00000000000000076019214974360137746140339586742455753', 6); + T('-6.93501087055e+20', '-693501087055377288564', 11); + T('-1.283656440009563e+24', '-1283656440009563292695670.575360580373829197017512', 15); + T('-4.9556506e+13', '-49556505932168.7211084603', 7); + T('-8.133584588946e+26', '-813358458894586332533196788.490201803951456991010654609646', 12); + T('-3.824207296e+22', '-38242072955850210158724', 9); + T('-4.2168087e-12', '-0.00000000000421680868317080291', 7); + T('-7.152812829e+15', '-7152812829336253.782723153403637377960530795', 9); + T('-8.0469635248612874571e+16', '-80469635248612874.5712104436', 19); + T('-2.726549954018643349550392804e+11', '-272654995401.8643349550392803783934819148125595437353472547', 27); + T('-2.477986360297097033217143e+30', '-2477986360297097033217143442370.539404', 24); + T('-2.7620555408e+15', '-2762055540757162', 10); + T('-5.044e+10', '-50436788962', 3); + T('-1.51176171306898543927009427965761639e+17', '-151176171306898543.9270094279657616389483779413616294465635', 35); + T('-3.76233131039732974161231568e+13', '-37623313103973.2974161231567776787873083163171', 26); + T('-1.77876313221062362e+17', '-177876313221062362.01', 17); + T('-4.28033364715744300662536e+13', '-42803336471574.430066253616', 23); + T('-6.053e-13', '-0.00000000000060527568964627046163209582', 3); + T('-3.9447068214322315685949701607748761e+16', '-39447068214322315.685949701607748760885392781169754754427622', 34); + T('-4.76203665586552028e+15', '-4762036655865520.285', 17); + T('-7.442141482296791204320219247230530359e+24', '-7442141482296791204320219.2472305303585223494415', 36); + T('-5.96279453376966633e+23', '-596279453376966633175009.6', 17); + T('-3.393419405169789e+24', '-3393419405169788742460001.267', 15); + T('-5.3001e+12', '-5300055380607', 4); + T('-5.6075017651299255742594578e+24', '-5607501765129925574259457.7938331743229', 25); + T('-1.7016332185618e-12', '-0.000000000001701633218561829307163951183908', 13); + T('-8.2586539997288574125e-29', '-0.0000000000000000000000000000825865399972885741250631446', 19); + T('-6.867e+11', '-686673700185', 3); + T('-6.77934398386662123284e+26', '-677934398386662123284378302.457585912', 20); + T('-1.68708254641574159341563239757e+14', '-168708254641574.159341563239757201959', 29); + T('-7.969791397195291274332017902569730510486538e+16', '-79697913971952912.74332017902569730510486538476172', 42); + T('-8.35460490386e+14', '-835460490386401.159749305581999482', 11); + T('-3.4904587e+10', '-34904586685.65531405315150234636', 7); + T('-7.655476116917648649e-10', '-0.0000000007655476116917648649345', 18); + T('-3.035704337e+17', '-303570433749270293', 9); + T('-1.4902739431686400585e-18', '-0.000000000000000001490273943168640058452103113', 19); + T('-2.57617086126164572e+17', '-257617086126164572', 17); + T('-6.9708e+16', '-69708261331391628', 4); + T('-8.61400120130585599610136e-12', '-0.00000000000861400120130585599610136066', 23); + T('-9.0670988886e-19', '-0.000000000000000000906709888862126926', 10); + T('-2.889463982215818248e-26', '-0.00000000000000000000000002889463982215818248', 18); + T('-3.7376459408597195073982491e+26', '-373764594085971950739824910.4572745527', 25); + T('-6.21372353850510695881280108179e-12', '-0.0000000000062137235385051069588128010817907', 29); + T('-2.4240953581712173951958e-21', '-0.00000000000000000000242409535817121739519585', 22); + T('-8.3687559027615173415e+18', '-8368755902761517341.46477685623835786273991', 19); + T('-7.18294352e-11', '-0.0000000000718294352479105', 8); + T('-3.52454012503419773886785e-25', '-0.000000000000000000000000352454012503419773886785342913143', 23); + + BigNumber.config({ROUNDING_MODE : 6}); + + T('-4.3502707501164e+36', '-4350270750116411997402439304498892819', 13); + T('9.5e-21', '0.0000000000000000000094520280724178734152', 1); + T('1.39631186750554172785676012693418617250072200744214625994656047727270672248243741907e+34', '13963118675055417278567601269341861.725007220074421462599465604772727067224824374190703237660781', 83); + T('5.9446570e-26', '0.00000000000000000000000005944657036540768164877637239177740419063920648', 7); + T('7.00000e-12', '0.000000000007', 5); + T('-2.87e+14', '-287060740776209.3950381715', 2); + T('3.411740542875509329e+24', '3411740542875509328514044', 18); + T('-6.20235112738687046118395830000000000000000000000e-29', '-0.000000000000000000000000000062023511273868704611839583', 47); + T('2.94349130121570276626863135396717336528655493e+19', '29434913012157027662.686313539671733652865549279174', 44); + T('4.01255076512828067130306533670644537832e-10', '0.000000000401255076512828067130306533670644537831678294548', 38); + T('-5.4277306444432e+11', '-542773064444.317654960431120452254700391693837992', 13); + T('-4.355706886680889557797360814402e+30', '-4355706886680889557797360814401.536556745674646509159280626', 30); + T('-1.29e-15', '-0.00000000000000128978312277001609181774216296380783932', 2); + T('-1.0588973816292989769e+25', '-10588973816292989768709129.1767038708798755780352204', 19); + T('-3.210569596e+10', '-32105695962.8803639621', 9); + T('-7.18504270173744681360682714959e+28', '-71850427017374468136068271495.87', 29); + T('-4.29794333519778779150824479010034817077204e-10', '-0.0000000004297943335197787791508244790100348170772040392', 41); + T('-4.615682142828269066227773895179987062919e+20', '-461568214282826906622.7773895179987062919071922', 39); + T('-1.3864477517287155526073e+13', '-13864477517287.15552607265', 22); + T('-6.793120028e+13', '-67931200280922.72252141789646787475433427482', 9); + T('-8.075e-18', '-0.000000000000000008074975073002274636799975', 3); + T('-8.360228691054180854419062530687032074820667001e+24', '-8360228691054180854419062.530687032074820667001120752628', 45); + T('-3.0763956760417194035216e-12', '-0.000000000003076395676041719403521594', 22); + T('-2.5288383e+25', '-25288383009460922631988717.84659997837058450749', 7); + T('-4.554185192e+29', '-455418519247311560996997520087.98189', 9); + T('-9.135175372324138467397264e+11', '-913517537232.413846739726417', 24); + T('-8.257259383044471855222900534859251889332388855848e-10', '-0.0000000008257259383044471855222900534859251889332388855848', 48); + T('-7.651597268450922707e-13', '-0.000000000000765159726845092270720405167100094', 18); + T('-8.952011763950994514e+26', '-895201176395099451377549961.34870447', 18); + T('-2.7395479569618982298152060567357e-10', '-0.00000000027395479569618982298152060567357', 31); + T('-1.31151451700453378841431e+24', '-1311514517004533788414313', 23); + T('-5.915297930316863891e-10', '-0.0000000005915297930316863890707686339684395', 18); + T('-1.449e-27', '-0.0000000000000000000000000014487033279693402845128265141859', 3); + T('-3.7e+10', '-36919550406.826974442743517918128', 1); + T('-3.945347688940382499631779106638865e+13', '-39453476889403.824996317791066388653', 33); + T('-8.547704e-29', '-0.0000000000000000000000000000854770378842608635356', 6); + T('-3.76e+25', '-37618296325402619735777629.467812385256281737441412', 2); + T('-8.031066086398624e+28', '-80310660863986235667567286452', 15); + T('-4.038276256088135496e-17', '-0.000000000000000040382762560881354955896694823328777602811', 18); + T('-1.77173574740860868e+25', '-17717357474086086837250852', 17); + T('-1.421967649e+21', '-1421967648805122645888', 9); + T('-4.7e+11', '-469485715327', 1); + T('-7.372223291560455075681748682810527006883e+16', '-73722232915604550.75681748682810527006882666313809409', 39); + T('-8.9539396357e+14', '-895393963565598', 10); + T('-8.14646103854802172250414801405e+10', '-81464610385.48021722504148014045579178726', 29); + T('-1.2053415734425581e+12', '-1205341573442.5581371841633131879', 16); + T('-8.35214176861046133596101313170854966756043001e+28', '-83521417686104613359610131317.0854966756043001041619492', 44); + T('-3.7610694152e-28', '-0.00000000000000000000000000037610694151517628351', 10); + T('-6.71e-12', '-0.00000000000670729337105720320122353', 2); + T('-4.005517304396006251e+13', '-40055173043960.0625088492324182094858', 18); + T('-6.0206e+28', '-60205974155921075891080012488.4566490314762809', 4); + T('-6.36287561326e+11', '-636287561325.9124444291802472', 11); + T('-3.11336117e-16', '-0.000000000000000311336117052129384933053792', 8); + T('-5.3927134886536e+30', '-5392713488653639958906162302264.424436642808', 13); + T('-3.82395446711276e-10', '-0.0000000003823954467112758458806849565215407952986440811', 14); + T('-4.2858082253423e-27', '-0.0000000000000000000000000042858082253422975', 13); + T('-2.9918792622984137284399075479267066e+14', '-299187926229841.3728439907547926706557', 34); + T('-3.1949909651023223034303544498737e+27', '-3194990965102322303430354449.8737', 31); + T('-9.1e-27', '-0.0000000000000000000000000090531861025', 1); + T('-2.8e+11', '-279301037794', 1); + T('-7.126913661498270214611054421e+13', '-71269136614982.70214611054420849', 27); + T('-4.86337579169293342736515180299340135e+13', '-48633757916929.334273651518029934013479777304', 35); + T('-3.406744915848058125e+25', '-34067449158480581246177934.3445612265793', 18); + T('-5.542902272865090080311949446460659235171860088660477e+16', '-55429022728650900.803119494464606592351718600886604770155246', 51); + T('-8.26224854264697737938997145336e+12', '-8262248542646.9773793899714533620028598662842221171', 29); + T('-3.16331e+18', '-3163306186318700887', 5); + T('-9.087531707575372e+25', '-90875317075753723792666377.6466517495', 15); + T('-8.758548512438e+14', '-875854851243824.87435', 12); + T('-3.9e-11', '-0.0000000000387093', 1); + T('-3.987015017148130889206385341736666180313e+11', '-398701501714.813088920638534173666618031251290587', 39); + T('-2.493129998e-11', '-0.00000000002493129997889845697168462', 9); + T('-7.0892393575673871055576e+17', '-708923935756738710.5557595392277447617', 22); + T('-4.931821627225927773384e-20', '-0.00000000000000000004931821627225927773384063578', 21); + T('-5.245261764976094777313893054196562e-17', '-0.0000000000000000524526176497609477731389305419656234', 33); + T('-6.66625797221972034223428591e+23', '-666625797221972034223428.590606426470365', 26); + T('-4.06575860462e+17', '-406575860461750182.91372176567693718', 11); + T('-8.90585675951e+19', '-89058567595113495345', 11); + + BigNumber.config({ROUNDING_MODE : 4}); + + T('-2.033619450856645241153977e+0', '-2.03361945085664524115397653636144859', 24); + T('1.130e+8', '112955590.0430616', 3); + T('-2.1366468193419876852426155614364269e+10', '-21366468193.419876852426155614364269', 34); + T('5.82086615659566151529e+7', '58208661.56595661515285734890860077163', 20); + T('9.1615809372817426111208e+6', '9161580.937281742611120838868847823478250167882379624', 22); + T('3.8976506901061164197e+1', '38.97650690106116419699490320634490920742414', 19); + T('9.0994914931570087194607344641722310104e+6', '9099491.4931570087194607344641722310103895224905', 37); + T('6.06e+5', '605633', 2); + T('2.6999974790473705518992117e+1', '26.9999747904737055189921170044987', 25); + T('6.7108801361722e+6', '6710880.136172156342982663450743452', 13); + T('-8.0e+0', '-8', 1); + T('3.000e-2', '0.03', 3); + T('-4.7e+2', '-469', 1); + T('-6.3000e+0', '-6.3', 4); + T('-5.4e+2', '-542', 1); + T('-5.2000e+0', '-5.2', 4); + T('-9.00000e-2', '-0.09', 5); + T('-3.1000e-1', '-0.31', 4); + T('-4.4e+2', '-436', 1); + T('-3.00e+0', '-3', 2); + T('-5.00e-2', '-0.05', 2); + T('1.00e-2', '0.01', 2); + + T('1.230e+2', '12.3e1',BigNumber('3')); + T('1.23e+2', '12.3e1', null); + T('1.23e+2', '12.3e1', undefined); + T('1e+2', '12.3e1', '0'); + T('1e+2', '12.3e1', '-0'); + T('1e+2', '12.3e1', '-0.000000'); + T('1e+2', '12.3e1', 0); + T('1e+2', '12.3e1', -0); + + assertException(function () {new BigNumber('1.23').toExponential(NaN)}, "('1.23').toExponential(NaN)"); + assertException(function () {new BigNumber('1.23').toExponential('NaN')}, "('1.23').toExponential('NaN')"); + assertException(function () {new BigNumber('1.23').toExponential([])}, "('1.23').toExponential([])"); + assertException(function () {new BigNumber('1.23').toExponential({})}, "('1.23').toExponential({})"); + assertException(function () {new BigNumber('1.23').toExponential('')}, "('1.23').toExponential('')"); + assertException(function () {new BigNumber('1.23').toExponential(' ')}, "('1.23').toExponential(' ')"); + assertException(function () {new BigNumber('1.23').toExponential('hello')}, "('1.23').toExponential('hello')"); + assertException(function () {new BigNumber('1.23').toExponential('\t')}, "('1.23').toExponential('\t')"); + assertException(function () {new BigNumber('1.23').toExponential(new Date)}, "('1.23').toExponential(new Date)"); + assertException(function () {new BigNumber('1.23').toExponential(new RegExp)}, "('1.23').toExponential(new RegExp)"); + assertException(function () {new BigNumber('1.23').toExponential(2.01)}, "('1.23').toExponential(2.01)"); + assertException(function () {new BigNumber('1.23').toExponential(10.5)}, "('1.23').toExponential(10.5)"); + assertException(function () {new BigNumber('1.23').toExponential('1.1e1')}, "('1.23').toExponential('1.1e1')"); + assertException(function () {new BigNumber('1.23').toExponential(true)}, "('1.23').toExponential(true)"); + assertException(function () {new BigNumber('1.23').toExponential(false)}, "('1.23').toExponential(false)"); + assertException(function () {new BigNumber('1.23').toExponential(function (){})}, "('1.23').toExponential(function (){})"); + + assertException(function () {new BigNumber(12.3).toExponential('-1')}, ".toExponential('-1')"); + assertException(function () {new BigNumber(12.3).toExponential(-23)}, ".toExponential(-23)"); + assertException(function () {new BigNumber(12.3).toExponential(1e9 + 1)}, ".toExponential(1e9 + 1)"); + assertException(function () {new BigNumber(12.3).toExponential(1e9 + 0.1)}, ".toExponential(1e9 + 0.1)"); + assertException(function () {new BigNumber(12.3).toExponential(-0.01)}, ".toExponential(-0.01)"); + assertException(function () {new BigNumber(12.3).toExponential('-1e-1')}, ".toExponential('-1e-1')"); + assertException(function () {new BigNumber(12.3).toExponential(Infinity)}, ".toExponential(Infinity)"); + assertException(function () {new BigNumber(12.3).toExponential('-Infinity')}, ".toExponential('-Infinity')"); + + BigNumber.config({ERRORS : false}); + + T('Infinity', Infinity, 0); + T('Infinity', Infinity, NaN); + T('Infinity', Infinity, null); + T('Infinity', Infinity, Infinity); + T('NaN', NaN, -Infinity); + + T('1.230e+2', '12.3e1', BigNumber(3)); + T('1.23e+2', '12.3e1', null); + T('1.23e+2', '12.3e1', undefined); + T('1.23e+2', '12.3e1', NaN); + T('1.23e+2', '12.3e1', 'NaN'); + T('1.23e+2', '12.3e1', []); + T('1.23e+2', '12.3e1', {}); + T('1.23e+2', '12.3e1', ''); + T('1.23e+2', '12.3e1', ' '); + T('1.23e+2', '12.3e1', 'hello'); + T('1.23e+2', '12.3e1', '\t'); + T('1.23e+2', '12.3e1', ' '); + T('1.23e+2', '12.3e1', new Date); + T('1.23e+2', '12.3e1', new RegExp); + + T('1e+2', '12.3e1', -0); + T('1.2e+2', '12.3e1', 1.999); + T('1.2300000e+2', '12.3e1', 7.5); + T('1.23000000000e+2', '12.3e1', '1.1e1'); + + T('1.23e+2', '12.3e1', '-1'); + T('1.23e+2', '12.3e1', -23); + T('1.23e+2', '12.3e1', 1e9 + 1); + T('1.23e+2', '12.3e1', 1e9 + 0.1); + T('1.23e+2', '12.3e1', -0.01); + T('1.23e+2', '12.3e1', '-1e-1'); + T('1.23e+2', '12.3e1', Infinity); + T('1.23e+2', '12.3e1', '-Infinity'); + + BigNumber.config({ + DECIMAL_PLACES : 20, + ROUNDING_MODE : 4, + ERRORS : true, + RANGE : 1E9, + EXPONENTIAL_AT : 1E9 + }); + + log('\n ' + passed + ' of ' + total + ' tests passed in ' + (+new Date() - start) + ' ms \n'); + return [passed, total];; +})(this.BigNumber); +if (typeof module !== 'undefined' && module.exports) module.exports = count; \ No newline at end of file diff --git a/node_modules/mysql/node_modules/bignumber.js/test/toFixed.js b/node_modules/mysql/node_modules/bignumber.js/test/toFixed.js new file mode 100644 index 0000000..93d91d7 --- /dev/null +++ b/node_modules/mysql/node_modules/bignumber.js/test/toFixed.js @@ -0,0 +1,1499 @@ +var count = (function toFixed(BigNumber) { + var start = +new Date(), + log, + error, + u, + passed = 0, + total = 0; + + if (typeof window === 'undefined') { + log = console.log; + error = console.error; + } else { + log = function (str) { document.body.innerHTML += str.replace('\n', '
      ') }; + error = function (str) { document.body.innerHTML += '
      ' + + str.replace('\n', '
      ') + '
      ' }; + } + + if (!BigNumber && typeof require === 'function') BigNumber = require('../bignumber'); + + function assert(expected, actual) { + total++; + if (expected !== actual) { + error('\n Test number: ' + total + ' failed'); + error(' Expected: ' + expected); + error(' Actual: ' + actual); + //process.exit(); + } + else { + passed++; + //log('\n Expected and actual: ' + actual); + } + } + + function assertException(func, message) { + var actual; + total++; + try { + func(); + } catch (e) { + actual = e; + } + if (actual && actual.name == 'BigNumber Error') { + passed++; + //log('\n Expected and actual: ' + actual); + } else { + error('\n Test number: ' + total + ' failed'); + error('\n Expected: ' + message + ' to raise a BigNumber Error.'); + error(' Actual: ' + (actual || 'no exception')); + //process.exit(); + } + } + + function T(expected, value, decimalPlaces){ + assert(String(expected), new BigNumber(value).toFixed(decimalPlaces)); + } + + log('\n Testing toFixed...'); + + BigNumber.config({ + DECIMAL_PLACES : 20, + ROUNDING_MODE : 4, + ERRORS : true, + RANGE : 1E9, + EXPONENTIAL_AT : 1E9 + }); + + // https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Number/toFixed + // Javascript: 2.26.toFixed(5) returns 2.26000 + // Javascript: -2.26.toFixed(5) returns -2.26 + // BigNumber: new BigNumber(-2.26).toFixed(5) returns -2.26000 + + T('100.0', 99.9512986, 1); + T('10.0', 9.95036, 1); + T('1.0', 0.99, 1); + T('0.10', 0.09906, 2); + T('0.010', 0.0098034, 3); + + T('NaN', NaN, 2); + T('Infinity', 1/0, 2); + T('-Infinity', -1/0, 2); + + T('1111111111111111111111.00000000', '1111111111111111111111', 8); + T('0.1', 0.1, 1); + T('0.10', 0.1, 2); + T('0.100', 0.1, 3); + T('0.01', 0.01, 2); + T('0.010', 0.01, 3); + T('0.0100', 0.01, 4); + T('0.00', 0.001, 2); + T('0.001', 0.001, 3); + T('0.0010', 0.001, 4); + T('1.0000', 1, 4); + T('1.0', 1, 1); + T('1', 1, 0); + T('12', 12, 0); + T('1', 1.1, 0); + T('12', 12.1, 0); + T('1', 1.12, 0); + T('12', 12.12, 0); + T('0.0000006', 0.0000006, 7); + T('0.00000006', 0.00000006, 8); + T('0.000000060', 0.00000006, 9); + T('0.0000000600', 0.00000006, 10); + T('0', 0, 0); + T('0.0', 0, 1); + T('0.00', 0, 2); + + T('-1111111111111111111111.00000000', '-1111111111111111111111', 8); + T('-0.1', -0.1, 1); + T('-0.10', -0.1, 2); + T('-0.100', -0.1, 3); + T('-0.01', -0.01, 2); + T('-0.010', -0.01, 3); + T('-0.0100', -0.01, 4); + T('-0.00', -0.001, 2); + T('-0.001', -0.001, 3); + T('-0.0010', -0.001, 4); + T('-1.0000', -1, 4); + T('-1.0', -1, 1); + T('-1', -1, 0); + T('-1', -1.1, 0); + T('-12', -12.1, 0); + T('-1', -1.12, 0); + T('-12', -12.12, 0); + T('-0.00000', -0.0000006, 5); + T('-0.0000006', -0.0000006, 7); + T('-0.00000006', -0.00000006, 8); + T('-0.000000060', -0.00000006, 9); + T('-0.0000000600', -0.00000006, 10); + T('0', 0, 0); + T('0', -0, 0); + T('0.0', -0, 1); + T('0.00', -0, 2); + T('0.00', '-0.0', 2); + T('0.00', '-0.0000', 2); + T('0.0000', -0, 4); + + T('1000', 1000, u); + T('0.00001', 0.00001, u); + T('0.00001', 0.00001, 5); + T('0.00000000000000000010', '0.0000000000000000001', 20); + T('0.00001000000000000', 0.00001, 17); + T('1.00000000000000000', 1, 17); + T('1000000000000000128', '1000000000000000128', u); + T('100000000000000128.0', '100000000000000128', 1); + T('10000000000000128.00', '10000000000000128', 2); + T('10000000000000128.00000000000000000000', '10000000000000128', 20); + T('0', 0, u); + T('-42.000', -42, 3); + T('-1000000000000000128', '-1000000000000000128', u); + T('-0.00000000000000000010', '-0.0000000000000000001', 20); + T('0.12312312312312300000', '0.123123123123123', 20); + + T('1', 0.5, 0); + T('-1', -0.5, 0); + T('1.3', 1.25, 1); + T('234.2041', 234.20405, 4); + T('234.2041', '234.204050000000000000000000000000006', 4); + + BigNumber.config({ROUNDING_MODE : 0}); + + T('6552606716539719300271040797809220.3', '6552606716539719300271040797809220.237838405', 1); + T('25605410.260045950231371', '25605410.260045950231370974066', 15); + T('-65593283.0000', '-65593283', 4); + T('-2238743875407788208860272230040067273281097722822075126.88000000000', '-2238743875407788208860272230040067273281097722822075126.88', 11); + T('-1714042659419404211.0000000', '-1714042659419404211', 7); + T('580861301.000', '580861301', 3); + T('-495746734.000', '-495746734', 3); + T('-909962202.00000', '-909962202', 5); + T('-6588.00', '-6588', 2); + T('-89235424125324.000000', '-89235424125324', 6); + T('-0.0001', '-0.0000000000177', 4); + T('-0.1', '-0.000000000000007', 1); + T('7086047552021418140460170703933026989776558656.864197000000000', '7086047552021418140460170703933026989776558656.864197', 15); + T('-0.0000000001', '-0.0000000000000000007707', 10); + T('6613833500.133407255728', '6613833500.133407255727325566781771', 12); + T('-0.60', '-0.6', 2); + T('-5800577761301861465745732694236894834.347199790459214393940', '-5800577761301861465745732694236894834.34719979045921439394', 21); + T('65495133621931312001260.90', '65495133621931312001260.89870016055223846451749943336585697', 2); + T('-0.0000001', '-0.0000000000021727264987520611266069544793244453321336', 7); + T('5138338134667513058267845351654.0073', '5138338134667513058267845351654.007282', 4); + T('-419591612781413402.1606094651083282', '-419591612781413402.16060946510832813452', 16); + T('-842984708.00000', '-842984708', 5); + T('6094679992788973717749530934167375519948195193196.00000000000', '6094679992788973717749530934167375519948195193196', 11); + T('3070926.00', '3070926', 2); + T('-49738484.22445560175', '-49738484.2244556017464380224443566512165424404', 11); + T('0.01', '0.007252154601', 2); + T('0.01', '0.0000000008450464516429601', 2); + T('64191341.1515', '64191341.151484', 4); + T('-0.0000000000000004274', '-0.00000000000000042733957907641417564294', 19); + T('-307434.0', '-307434', 1); + T('-7155930111672774753753.84501482871023', '-7155930111672774753753.845014828710226', 14); + T('-204638.0', '-204638', 1); + T('67354.81', '67354.801797', 2); + T('0.000042911675', '0.000042911674899533228107357062', 12); + T('-57865060735863.5903347110', '-57865060735863.590334711', 10); + T('-0.00889', '-0.0088857', 5); + T('655593535442553089245040020344044.000000000000', '655593535442553089245040020344044', 12); + T('-2077237944012133216588518213.9402', '-2077237944012133216588518213.9401561759783653376', 4); + T('3354.50', '3354.49314543', 2); + T('-0.00001', '-0.000000000000091204118667391473401958802734362777499449233', 5); + T('-2817626898661648124242602088971648489124280903.00000000000000000000000', '-2817626898661648124242602088971648489124280903', 23); + T('-0.1138', '-0.1137406345875745478881089475981775971743', 4); + T('372625.84', '372625.836933301', 2); + T('-0.0001', '-0.0000000000030295', 4); + T('-0.20133282610692', '-0.2013328261069183505168093992697', 14); + T('-674022381434.84086', '-674022381434.840858317', 5); + T('527.32194354633', '527.32194354632981665427056720389485101', 11); + T('0.0000000195361247565', '0.0000000195361247564008390550978147981600411', 19); + T('-2163002984808367617.0000', '-2163002984808367617', 4); + T('-4169664275471960031191605200147601022249457082609196211576.20000000000000000000000', '-4169664275471960031191605200147601022249457082609196211576.2', 23); + T('-0.00000000000555130', '-0.0000000000055512969161980904744035', 17); + T('119869956144.00', '119869956144', 2); + T('1.039', '1.038251882646323867920972358898559', 3); + T('-2.0', '-2', 1); + T('7410.197760931', '7410.197760930626987673', 9); + T('6638110167526.00', '6638110167526', 2); + T('30974929342171050427055113.00', '30974929342171050427055113', 2); + T('43480882950025886012415275271059692966.000', '43480882950025886012415275271059692966', 3); + T('-0.1', '-0.0000004587260575000190182731', 1); + T('-71828326035.100387343565950831', '-71828326035.100387343565950830073177108125', 18); + T('-552954262470932495380914766735683420381508430032672.0000000000000', '-552954262470932495380914766735683420381508430032672', 13); + T('-0.001', '-0.000000006438270583885530971500187308778545384', 3); + T('-1241063214283490729682249.3542720483313661438', '-1241063214283490729682249.35427204833136614379131332498', 19); + T('50729670708122152413903981650812767483.000000000000000000', '50729670708122152413903981650812767483', 18); + T('-0.8', '-0.73086389033', 1); + T('0.000000001', '0.0000000000035654453258182342271756', 9); + T('-37426128484776251838279429.00000', '-37426128484776251838279429', 5); + T('-8858815238086078991845344.00', '-8858815238086078991845344', 2); + T('715713000263082248.000', '715713000263082248', 3); + T('-1290.35664066483299', '-1290.35664066483298067128266141875', 14); + T('-0.00000008453', '-0.0000000845275307904197645672104', 11); + T('-435325479515.000000', '-435325479515', 6); + T('-55.026', '-55.0259854614935863191307', 3); + T('-111827547395883838719196940005789974871114521059.00000000000000000000000', '-111827547395883838719196940005789974871114521059', 23); + T('-0.80', '-0.8', 2); + T('-8.17139161520009', '-8.1713916152000874707093159619488493836845705', 14); + T('769000136593201.985181', '769000136593201.98518095', 6); + T('31159491831470011.07740834271415', '31159491831470011.0774083427141446999', 14); + T('89059.299592037965784', '89059.2995920379657839664222340962987295864685207', 15); + T('0.1', '0.06', 1); + T('-4570519.0000', '-4570519', 4); + T('-0.0000001518', '-0.000000151731483260580950465152613377577649917', 10); + T('-5555052692.071431452', '-5555052692.07143145120571654571684469634938224716', 9); + T('0.01', '0.0000000735211529638724323811564431527925439', 2); + T('-230061001007826663915617395042288.847216199000', '-230061001007826663915617395042288.847216199', 12); + T('-6453992990066244249806.375375876294395', '-6453992990066244249806.3753758762943945461637495930201559', 15); + T('-0.01', '-0.0000026377450289082142641925', 2); + T('-363618346.0', '-363618346', 1); + T('0.01', '0.00000000009', 2); + T('65432262394897701468848832.7', '65432262394897701468848832.607978068443545803141', 1); + T('567040263395365029.000', '567040263395365029', 3); + T('7431958669891786786543853147278.580', '7431958669891786786543853147278.58', 3); + T('0.0580', '0.0579400993437', 4); + T('-5364310483511374687804726517179019251624044430754.23807000000000', '-5364310483511374687804726517179019251624044430754.23807', 14); + T('81096.00', '81096', 2); + T('-0.000000766905', '-0.00000076690484881136751175461310751844214625312811858607148', 12); + T('837.0', '837', 1); + T('-0.000001', '-0.0000000003241605066758965441271096586120022721670744987061', 6); + T('18848356500282.000000', '18848356500282', 6); + T('-6865183293234767102.91096748000', '-6865183293234767102.91096748', 11); + + BigNumber.config({ROUNDING_MODE : 1}); + + T('0.3', '0.3', 1); + T('-200258348374.3', '-200258348374.3595802551014614089785610548492885372322083789', 1); + T('-8996550690041157178188143247448286757711.5580857413', '-8996550690041157178188143247448286757711.55808574133329', 10); + T('-3172413669280032477.00', '-3172413669280032477', 2); + T('6547946357820.750067107731812021675', '6547946357820.750067107731812021675351468709784004', 21); + T('24188393190716631282750407915133817062572333100239.0000000000000000000', '24188393190716631282750407915133817062572333100239', 19); + T('539982361589798324286450574560330534901309503.82000000', '539982361589798324286450574560330534901309503.82', 8); + T('829898800701640360552652.0000', '829898800701640360552652', 4); + T('-1585782773394.4', '-1585782773394.44501382110847', 1); + T('-7604844176594943774211951887242195107.399', '-7604844176594943774211951887242195107.399576743428669618164', 3); + T('-0.00', '-0.0000000000000005153003506839', 2); + T('0.000', '0.00003', 3); + T('-5454249481540317712.560293859013731302', '-5454249481540317712.56029385901373130215526009738012974642338', 18); + T('15352607654972198961429295651185206861818141054385638.00000000000000000', '15352607654972198961429295651185206861818141054385638', 17); + T('91494535411039025233040.292', '91494535411039025233040.29224903220309368507011', 3); + T('2043369316.0', '2043369316', 1); + T('-0.0000000782350618457', '-0.0000000782350618457630647420312027682238301541350414', 19); + T('2122652.0', '2122652', 1); + T('-0.00841365', '-0.00841365099301981489219310202029642', 8); + T('0.0', '0.0007035', 1); + T('-0.00000000000000374916', '-0.0000000000000037491685778894015479084539735777088', 20); + T('534883638.00', '534883638', 2); + T('-2.0', '-2', 1); + T('-5634442247266825358399629799939027370665.0000000000000000000', '-5634442247266825358399629799939027370665', 19); + T('3331187169219186569122.000000000', '3331187169219186569122', 9); + T('0.0000000000', '0.0000000000006604395609805032330367635527', 10); + T('-0.0000000000000576901', '-0.00000000000005769013292086168690493327', 19); + T('-661.8', '-661.828596629053201916486', 1); + T('-6073555395665254434249128854999349235744174928042756.1153000000000', '-6073555395665254434249128854999349235744174928042756.1153', 13); + T('-5013086846966.000', '-5013086846966', 3); + T('0.004015', '0.00401523226833', 6); + T('3140295374107374579919222510.1462722', '3140295374107374579919222510.1462722819395532', 7); + T('-0.000000', '-0.00000000000000799876460379334679831886', 6); + T('-0.00', '-0.0003', 2); + T('-0.026760766726884267', '-0.026760766726884267750393307117624838556001925491', 18); + T('-20821740502968847857923433558797.0899', '-20821740502968847857923433558797.08997487843745', 4); + T('0.00000000002', '0.000000000020346524414696573703092255317751132892', 11); + T('45492073832204366341299301624.000000000', '45492073832204366341299301624', 9); + T('-22166905155222048275755520049666636.000000000000000', '-22166905155222048275755520049666636', 15); + T('-0.0047749609085292677147', '-0.00477496090852926771478756451899887586311084', 22); + T('0.0000000000066505751320542', '0.000000000006650575132054209449586010993453988006221893652', 25); + T('-5987959.1630276586738', '-5987959.163027658673856586', 13); + T('-1666.00', '-1666', 2); + T('634686619827216246836355610829.00000', '634686619827216246836355610829', 5); + T('-4775591515709.469953191321103401', '-4775591515709.4699531913211034017874029213583522324151968262', 18); + T('-0.00209248872211', '-0.002092488722118037239933953031151990638700454763', 14); + T('4592542353054190400811174084.8269203906', '4592542353054190400811174084.826920390637', 10); + T('-2719622410429690231797721788738949434271171.000000000', '-2719622410429690231797721788738949434271171', 9); + T('7481081126833353571249877375770446139269602514514.000000000000000', '7481081126833353571249877375770446139269602514514', 15); + T('-717308374940.1455264110', '-717308374940.145526411005821148802846366045624291352081913', 10); + T('-0.000000007', '-0.000000007385554720977', 9); + T('-0.000861389378754506340', '-0.000861389378754506340296565696012302905659179798', 21); + T('-5053251493102402525630380749.678', '-5053251493102402525630380749.6785380807585', 3); + T('-4.0', '-4', 1); + T('-91608.490784509096643367058', '-91608.49078450909664336705884736640894006', 21); + T('0.000', '0.000000008', 3); + T('-60759551763816025544062865222.0000000000', '-60759551763816025544062865222', 10); + T('1052.9354577213309', '1052.93545772133093448862729794627180236152', 13); + T('45267509474.0', '45267509474', 1); + T('3157315152.00', '3157315152', 2); + T('-0.5', '-0.5', 1); + T('0.0057546', '0.005754639024965241832260499185230186', 7); + T('-0.000', '-0.0006', 3); + T('3230791870040253164174259086.74466486260', '3230791870040253164174259086.7446648626', 11); + T('-4344423254203589122222715762047.000000', '-4344423254203589122222715762047', 6); + T('0.000000', '0.00000000000000000005', 6); + T('-0.00000000', '-0.0000000000000032995964759', 8); + T('29342667392627.13800502090', '29342667392627.1380050209', 11); + T('3553322646.0000', '3553322646', 4); + T('0.0000000', '0.000000000000711595888783922', 7); + T('128714169681975260747586179339689165715468750318817.0', '128714169681975260747586179339689165715468750318817', 1); + T('-203846045708188631.7', '-203846045708188631.714385911896349', 1); + T('6732937084326281547153681265380857817.680', '6732937084326281547153681265380857817.68', 3); + T('-80645.000', '-80645', 3); + T('0.0091340467346905226', '0.0091340467346905226577831006050168789952519932147436292', 19); + T('765350910755641789513513452874635492095713.000000000000000000', '765350910755641789513513452874635492095713', 18); + T('7619917853284.00', '7619917853284', 2); + T('-7584198211496430223.4315410358218089229', '-7584198211496430223.43154103582180892294235232', 19); + T('-2946097370887492968389.2786430820000', '-2946097370887492968389.278643082', 13); + T('-400129748.000', '-400129748', 3); + T('-76362970460470638842230785495147305876.114384970200', '-76362970460470638842230785495147305876.1143849702', 12); + T('334029398796150851211670406157956664329.0000000000000', '334029398796150851211670406157956664329', 13); + T('-0.000000000000', '-0.000000000000000000881892851839338487244179354', 12); + T('-70475264003.0000', '-70475264003', 4); + T('0.080', '0.0809', 3); + T('16917787280140934145228.000', '16917787280140934145228', 3); + T('25909519297999779346.000000000', '25909519297999779346', 9); + T('-355224.19720319810644', '-355224.19720319810644496969482', 14); + T('8482635122899359930368306655493255835883236244.0000000000000', '8482635122899359930368306655493255835883236244', 13); + T('41268046802033799763539654473098094614587.00000000000000000', '41268046802033799763539654473098094614587', 17); + T('8564065673925609331469179144.0', '8564065673925609331469179144', 1); + T('-231732424.30838', '-231732424.3083887160672296965273691583237367', 5); + T('-597740668669015342275289261436747905744110289638.43026849', '-597740668669015342275289261436747905744110289638.430268497449', 8); + T('8297509140414599.000000', '8297509140414599', 6); + T('-17320207086212822899.00', '-17320207086212822899', 2); + T('0.00', '0.000000000002', 2); + T('4972.517305', '4972.51730546661166855901714', 6); + T('0.000000', '0.0000000162819653537555368724511902456803362906', 6); + T('29485932208290816133111088923502731.000000', '29485932208290816133111088923502731', 6); + T('0.0000', '0.000000000006', 4); + + BigNumber.config({ROUNDING_MODE : 2}); + + T('7810971819938620325901899057970512790433.0000000000000000', '7810971819938620325901899057970512790433', 16); + T('-623395.0', '-623395', 1); + T('81334094079413997693749807.000000000000', '81334094079413997693749807', 12); + T('790143966.5', '790143966.406169480041929356421', 1); + T('-0.000485', '-0.0004851099615478', 6); + T('843581583868277359263.9721265', '843581583868277359263.97212648230399373761717', 7); + T('-921038771017147427324121032.000000', '-921038771017147427324121032', 6); + T('-823.0', '-823', 1); + T('505.0', '505', 1); + T('-866703339332502.8636000', '-866703339332502.8636', 7); + T('46.0', '46', 1); + T('60042202798790129685.0000000', '60042202798790129685', 7); + T('-1847392.0000', '-1847392', 4); + T('-4580251343840510165820631684073999841789879.0000000000000000000000', '-4580251343840510165820631684073999841789879', 22); + T('3501378778000.539063748827265447', '3501378778000.5390637488272654464266281832626835121535730779', 18); + T('0.000000004686', '0.000000004685387489140232', 12); + T('-0.0', '-0.0006', 1); + T('-445677508.00', '-445677508', 2); + T('0.0002', '0.00015099822561012723', 4); + T('-2992505698074499692367794831646886.0000000000000000', '-2992505698074499692367794831646886', 16); + T('5297873.59', '5297873.5869265978056497873793730268', 2); + T('72978439324039191443182.00000000000', '72978439324039191443182', 11); + T('0.66028387', '0.660283869505570207917431271006277981914716620876', 8); + T('-232008389442485.0', '-232008389442485', 1); + T('-2.371568', '-2.37156855939356279513952542004820909', 6); + T('-0.36285', '-0.3628526972092455731139', 5); + T('-8119.0', '-8119', 1); + T('171846434549810597775.8595264010', '171846434549810597775.859526401', 10); + T('-765674124885597.6363120', '-765674124885597.636312053095690367', 7); + T('2682390283.000', '2682390283', 3); + T('7799670515191143398434802.0000000000', '7799670515191143398434802', 10); + T('731916154123696.1935', '731916154123696.193488323779184681349292529227446', 4); + T('-793941153937799250384382615553258074.00000', '-793941153937799250384382615553258074', 5); + T('651002.00', '651002', 2); + T('-61317874871.00', '-61317874871', 2); + T('8673.00', '8673', 2); + T('-14490519736189597435728386282.030655', '-14490519736189597435728386282.0306558561264348956674', 6); + T('0.001', '0.00000000000002', 3); + T('0.000009', '0.000008920984342', 6); + T('0.0000920957086395973679873', '0.000092095708639597367987279557138375172816422475', 25); + T('28125849913667924088615.25407023317734', '28125849913667924088615.2540702331773399078402875044891', 14); + T('87.55538597', '87.55538596435839691343147', 8); + T('939705902083425775202905619379.0000000', '939705902083425775202905619379', 7); + T('7303936681469130614.8345000', '7303936681469130614.8345', 7); + T('-5831852886782.68010000', '-5831852886782.6801', 8); + T('-0.0000000', '-0.0000000213769530812', 7); + T('3939846383149740457.10095420654', '3939846383149740457.1009542065397674933246710194598175764', 11); + T('590849835.0000', '590849835', 4); + T('-8275957863.1479060805971940', '-8275957863.14790608059719409463511261267671122', 16); + T('88601607840.97', '88601607840.97', 2); + T('-87.0', '-87', 1); + T('-0.00000000000059590334996', '-0.0000000000005959033499645216206226546715679135941845273', 23); + T('-20156162002512717731841.00', '-20156162002512717731841', 2); + T('-7651429939400798.00000000', '-7651429939400798', 8); + T('4054038.8271920833198564466870907131', '4054038.8271920833198564466870907130849589640579687753824767', 28); + T('0.000001', '0.0000000003', 6); + T('275300507469257287911954639302505046260690.99000000', '275300507469257287911954639302505046260690.99', 8); + T('642144861480907968070.771743458405005477', '642144861480907968070.77174345840500547656346', 18); + T('-889957451436631506823037014.12137026759445866404763', '-889957451436631506823037014.1213702675944586640476325', 23); + T('-0.06219606', '-0.062196067085235955835989272145756234722461994836174091995', 8); + T('-74213.0', '-74213', 1); + T('-1874944878399124299917948535549036295737418419.000', '-1874944878399124299917948535549036295737418419', 3); + T('83048495.1430455759922', '83048495.1430455759921014663361993386532235', 13); + T('-755506912.624491023612801925849', '-755506912.6244910236128019258495078668411577879440686', 21); + T('5321125710271045378833902102391466551386841083.00000000000', '5321125710271045378833902102391466551386841083', 11); + T('0.000004284427957821426529823151', '0.0000042844279578214265298231502546967595510818572110299927', 30); + T('472565886204.00000', '472565886204', 5); + T('31931010708026796882.0000000', '31931010708026796882', 7); + T('-4082183405971.00', '-4082183405971', 2); + T('43182719822263089032.0', '43182719822263089032', 1); + T('-74632497435577935327787910318876432.000000', '-74632497435577935327787910318876432', 6); + T('24236715602376164671.99119879565302925270845390802', '24236715602376164671.99119879565302925270845390801276995046', 29); + T('0.0002148', '0.00021473151048663639093342995904027', 7); + T('11552045377675783444804198150417717022744929.278', '11552045377675783444804198150417717022744929.2775103900527', 3); + T('0.0000007575', '0.000000757403681490224', 10); + T('-855.71', '-855.7117714955299728683318516625249', 2); + T('40834479174168915057442292427179095154620364684.0000000000000000000', '40834479174168915057442292427179095154620364684', 19); + T('270321444.000', '270321444', 3); + T('-30995028620287.03', '-30995028620287.032123746540311643282', 2); + T('-0.0', '-0.00009', 1); + T('-602729508268591597438320913.60658950848712687', '-602729508268591597438320913.60658950848712687918', 17); + T('-548567216043758894618461964890.694772532380790460115', '-548567216043758894618461964890.6947725323807904601157', 21); + T('82.0', '82', 1); + T('-55514405531090.06405191', '-55514405531090.06405191938240530830698', 8); + T('748298620904632711442812.4683', '748298620904632711442812.46822', 4); + T('682294636690140.7964265', '682294636690140.7964264385841075', 7); + T('-0.000000000', '-0.00000000000000000291', 9); + T('-6848806396346459932451282602470846060855488728.540000000000', '-6848806396346459932451282602470846060855488728.54', 12); + T('5276393.209', '5276393.2086599096026388085281', 3); + T('0.4', '0.4', 1); + T('8375483913668.000', '8375483913668', 3); + T('34817563688185836561554596.15000', '34817563688185836561554596.15', 5); + T('4367672.009', '4367672.00813881', 3); + T('-5013698209882323019634267579122589538355461264705883707.000000000000000000000000', '-5013698209882323019634267579122589538355461264705883707', 24); + T('0.001', '0.000000000000000745707393395393623687701759', 3); + T('76676945635878017064402467.00000', '76676945635878017064402467', 5); + T('-382435678755006.0000000', '-382435678755006', 7); + T('0.5', '0.5', 1); + T('-3063.0', '-3063', 1); + T('-3.0', '-3', 1); + + BigNumber.config({ROUNDING_MODE : 3}); + + T('0.0000', '0.00000000000584', 4); + T('-79055907138737329232.165677999092552368', '-79055907138737329232.1656779990925523674', 18); + T('47206303530045536472421888342339.00000000', '47206303530045536472421888342339', 8); + T('3974.0', '3974', 1); + T('1296297430771.39', '1296297430771.391670729445980444292', 2); + T('0.000016', '0.00001686928031', 6); + T('-0.00001', '-0.0000000000008', 5); + T('4883938724383.000', '4883938724383', 3); + T('-5.4115622307', '-5.411562230628539329345282639155988044655000352687981880842', 10); + T('-0.01', '-0.0000000000155280115429218804426906540524', 2); + T('-2730930776035874709906.00000', '-2730930776035874709906', 5); + T('8419336352549424092369623.00000', '8419336352549424092369623', 5); + T('52897.4', '52897.4', 1); + T('-783171007682720320053252521365465473997085.0', '-783171007682720320053252521365465473997085', 1); + T('0.8', '0.8', 1); + T('-0.00000000085280', '-0.000000000852796916216780032747621063045628213284', 14); + T('809486781065644418.9', '809486781065644418.939', 1); + T('-9.0', '-9', 1); + T('2399395.00', '2399395', 2); + T('-243707862514768528758611224374.0000000000000', '-243707862514768528758611224374', 13); + T('-87906.00', '-87906', 2); + T('-36206954271055061276640398631031143034683624940748.9970000000000000000000', '-36206954271055061276640398631031143034683624940748.997', 22); + T('0.00', '0.0000000000565885579252765288683939564608114096713', 2); + T('-8391656174313988740342135972218668561645437.0', '-8391656174313988740342135972218668561645437', 1); + T('14571897947566372593360811.00000000000', '14571897947566372593360811', 11); + T('-473156035623.70', '-473156035623.690373046925674588826', 2); + T('2798706581453003.177239111', '2798706581453003.17723911167031', 9); + T('607781292230803273523112111.091726721140', '607781292230803273523112111.09172672114', 12); + T('-0.3', '-0.3', 1); + T('3008522535782692059736852844809784198247000184.0', '3008522535782692059736852844809784198247000184', 1); + T('14227.00', '14227', 2); + T('7841760307718014116576857993957.0000', '7841760307718014116576857993957', 4); + T('-0.00001', '-0.00000000000002596', 5); + T('5247199732982111073.000000000', '5247199732982111073', 9); + T('-12.0', '-12', 1); + T('0.000', '0.00005', 3); + T('-1383703062.0000', '-1383703062', 4); + T('0.0051019245305169', '0.00510192453051698060366202631871161193', 16); + T('-45565092550117861497905653558246322559799.0', '-45565092550117861497905653558246322559799', 1); + T('-0.284', '-0.284', 3); + T('-8962.00', '-8962', 2); + T('49335989571.2173023', '49335989571.217302304037', 7); + T('-9.0', '-9', 1); + T('-26112007394118580909080488694986628.00000000', '-26112007394118580909080488694986628', 8); + T('-0.0000001', '-0.0000000000004', 7); + T('0.0000002341', '0.0000002341509570562590239', 10); + T('14533914.08264220677', '14533914.0826422067727128413377656933218789408', 11); + T('42170538403476604541324854403569069340562310909332579546.37600000000000000', '42170538403476604541324854403569069340562310909332579546.376', 17); + T('-4.0', '-4', 1); + T('-67678179481337765.66210000', '-67678179481337765.6621', 8); + T('257419830944838.0000000', '257419830944838', 7); + T('-324773537769898472911.277781339985241561477923', '-324773537769898472911.2777813399852415614779220499583265', 24); + T('-528485032702878171887338835619232399832.00000000000', '-528485032702878171887338835619232399832', 11); + T('-710189041499049633659311234.000', '-710189041499049633659311234', 3); + T('643084101102033.063753808679', '643084101102033.0637538086790219378107', 12); + T('825884431.000', '825884431', 3); + T('-543871854882673630364514781674939771106.38551140781759', '-543871854882673630364514781674939771106.385511407817581261', 14); + T('-798526.00', '-798526', 2); + T('297795786834144418744.0000', '297795786834144418744', 4); + T('0.00000', '0.0000000000016163586667107', 5); + T('0.0000000000', '0.00000000000007848361792826553641', 10); + T('-5.007308350876984680', '-5.007308350876984679530067590680338870257350613322626', 18); + T('-427.00', '-427', 2); + T('-515119.313431282058', '-515119.31343128205773478896638', 12); + T('-8.49', '-8.4804', 2); + T('2477.751471782877', '2477.751471782877726695914405313733773564569949039123496962', 12); + T('0.00000000', '0.000000000000000065892', 8); + T('7138.0', '7138.013', 1); + T('0.0000000000', '0.0000000000000004333337165355354317801382736832134', 10); + T('8658428891542726719576602828199407563445702034.00000000', '8658428891542726719576602828199407563445702034', 8); + T('0.3', '0.3', 1); + T('-56313246520419173728621429021902681217573545.50000000000000', '-56313246520419173728621429021902681217573545.5', 14); + T('-23.039752413764', '-23.03975241376398747770561587976', 12); + T('-19445726051618345902355920469.00000', '-19445726051618345902355920469', 5); + T('-0.1', '-0.040277481632393097542018589044285854989493888417936', 1); + T('-0.000000000001', '-0.000000000000000000288835285344547651291408208502608124', 12); + T('79030772762.92000', '79030772762.92', 5); + T('5700622112017639331911483394352164374087.00000000000000000', '5700622112017639331911483394352164374087', 17); + T('-90770899291595539313072309812380381240470505.000000000000', '-90770899291595539313072309812380381240470505', 12); + T('-41647595.5561', '-41647595.55603', 4); + T('222575273379018396575101654735581517852852286433973.4686000000000000', '222575273379018396575101654735581517852852286433973.4686', 16); + T('56275673822913529965328835.15006015303', '56275673822913529965328835.150060153034', 11); + T('-88903.69011778', '-88903.690117778621375708068659403797174645788', 8); + T('-115251.00', '-115251', 2); + T('-0.00001', '-0.0000079321934570619592061', 5); + T('9222185695996633788650562039735238902841130971959266.000000', '9222185695996633788650562039735238902841130971959266', 6); + T('-327381709334.18527398150845', '-327381709334.185273981508440153589241628279291', 14); + T('1.2070939', '1.207093941595', 7); + T('5631244336598787152545539244.614', '5631244336598787152545539244.614953046957418773850871532', 3); + T('7.585318', '7.58531893327', 6); + T('509177.0', '509177', 1); + T('-5922122769788.000000', '-5922122769788', 6); + T('204517097255774161136650103483266240865357614.000000000000', '204517097255774161136650103483266240865357614', 12); + T('-0.008817568208764', '-0.00881756820876361559226942398227', 15); + T('80111694.00', '80111694', 2); + T('-453349.000', '-453349', 3); + T('85122981744559018.00000000', '85122981744559018', 8); + T('0.027007', '0.027007420598954545854969297272268125483242465539', 6); + T('-2699105308.4', '-2699105308.3051738674733271523825325743', 1); + T('-0.000000000001', '-0.00000000000000883409579454508262166084385', 12); + + BigNumber.config({ROUNDING_MODE : 4, EXPONENTIAL_AT : 0}); + + T('733744593401073823825766410831877679446.0000000000000000000', '733744593401073823825766410831877679446', 19); + T('-64.6849459', '-64.6849458687691227978', 7); + T('-0.000000', '-0.00000000009', 6); + T('-62537287527837589298857228059657673223234916.95923265430000000', '-62537287527837589298857228059657673223234916.9592326543', 17); + T('3393668096256773847245721315080265089731.000000', '3393668096256773847245721315080265089731', 6); + T('0.0', '0.0000000000000056674956638008432348702401392', 1); + T('72516372734.6', '72516372734.6447', 1); + T('-418.28', '-418.2800731793741351', 2); + T('0.00', '0.001', 2); + T('8366217346845756726.00000000', '8366217346845756726', 8); + T('-0.000000', '-0.0000000000000092034548636370987112234384736726', 6); + T('0.35', '0.35474830751442135112334772517193392', 2); + T('64703289793894.5830', '64703289793894.58296866', 4); + T('-0.000000000000000036', '-0.000000000000000036461242408590182363418943891', 18); + T('5494508405056449117588.631948', '5494508405056449117588.631948458033233759999', 6); + T('-0.0', '-0.00393971618499838726739122333520030506235698', 1); + T('375581290738585826632.00000000', '375581290738585826632', 8); + T('254.96635275802300887', '254.96635275802300886544776010389418575738792480979736', 17); + T('21492347.69467571391498624445', '21492347.6946757139149862444482880595559468', 20); + T('313576441324233.0000000', '313576441324233', 7); + T('-8617.57089319166', '-8617.57089319166205141433276411273552139017', 11); + T('0.00000000014928376395', '0.00000000014928376394768755724252424022348932365406839448223', 20); + T('2.497624215622999568569', '2.49762421562299956856937732557160934323114203547832675', 21); + T('-288056106511636272271570523193926801058294502.000', '-288056106511636272271570523193926801058294502', 3); + T('-4798171567575228724.140', '-4798171567575228724.1400144613946894', 3); + T('8.49008', '8.49007655210654', 5); + T('-56633605.000', '-56633605', 3); + T('-4147381274685866.81753', '-4147381274685866.8175313', 5); + T('-534460490015293367127173277346694900936058.0000', '-534460490015293367127173277346694900936058', 4); + T('182707431911537249021116759327712693311898345504618668.43327000000000000000000', '182707431911537249021116759327712693311898345504618668.43327', 23); + T('210005324615278.4586839690045963321032', '210005324615278.458683969004596332103244549279', 22); + T('779837001772884165637922377221951347134695.644834', '779837001772884165637922377221951347134695.6448338', 6); + T('-0.000001', '-0.00000064188301390033596845335767993853284632527964514979079', 6); + T('13.0', '13', 1); + T('0.0000001269', '0.0000001269060795648365813491128357427111184222', 10); + T('18446632248354.00', '18446632248354', 2); + T('-1229249.79', '-1229249.7897249259', 2); + T('49082.0', '49082', 1); + T('-61.0', '-61', 1); + T('-893.0', '-893', 1); + T('5002282278.56974877690066484', '5002282278.569748776900664839184116538222902', 17); + T('41372.00', '41372', 2); + T('-4732022445962399687294885123498809.7625585825095', '-4732022445962399687294885123498809.7625585825095', 13); + T('-55484242.036895641', '-55484242.036895641', 9); + T('-41427133134.52583323427907663268339', '-41427133134.525833234279076632683393992706825', 23); + T('0.0', '0.00004300614085218825243480119971669264977421', 1); + T('-472025754597316278339412186866.7010659789', '-472025754597316278339412186866.701065978877597089729906019843', 10); + T('2.50869', '2.50869082352024406', 5); + T('-87154.000', '-87154', 3); + T('-0.0000000000071859183950976', '-0.0000000000071859183950975905578927950225183102336392', 25); + T('-10827138340266.44', '-10827138340266.44057558913', 2); + T('0.0000702', '0.0000701871613973530533582225769977', 7); + T('-4878237667448133503521416059497.376626000000', '-4878237667448133503521416059497.376626', 12); + T('8984687671347686046766702.01181862480', '8984687671347686046766702.0118186248', 11); + T('0.00000', '0.00000000076447711430809658905538', 5); + T('-184825.87743766370213607', '-184825.87743766370213606656669525883145102', 17); + T('-147007021210433212254058959161555.747000000000', '-147007021210433212254058959161555.747', 12); + T('641778680063060681850989295.4', '641778680063060681850989295.44394602812788754296411563', 1); + T('0.00', '0.000000000000000261099857', 2); + T('-69168585539.981086198312', '-69168585539.9810861983124008597329', 12); + T('-2441638.37765', '-2441638.37765405543', 5); + T('0.00', '0.00000005', 2); + T('-17865480328519059654833853633.668588983', '-17865480328519059654833853633.6685889825124607147114', 9); + T('5552449880075592383242782.42', '5552449880075592383242782.42273775283', 2); + T('-3.47445833771303714', '-3.4744583377130371421642122331960174443', 17); + T('-5543608156416096833838191852961329666675.00000000000000', '-5543608156416096833838191852961329666675', 14); + T('-6836042.000', '-6836042', 3); + T('0.00000912', '0.0000091177854552839774258855562071866', 8); + T('55986.00', '55986', 2); + T('0.0', '0.02', 1); + T('-0.0000', '-0.00000001', 4); + T('889659799897707059043156.0', '889659799897707059043156', 1); + T('0.000000', '0.00000000000000003', 6); + T('0.00000000000008179581450', '0.00000000000008179581449515246320423213581212698189913041', 23); + T('-981.4210', '-981.421', 4); + T('-3455913777070673553360330519337.00000000000000', '-3455913777070673553360330519337', 14); + T('0.00000000081700', '0.00000000081700228716634187537384600725', 14); + T('4822037.000', '4822037', 3); + T('-0.0000000064360437778', '-0.0000000064360437777672775206464043731', 19); + T('5290480.66496927901282867', '5290480.66496927901282867027658062129', 17); + T('-408612952552043095.000', '-408612952552043095', 3); + T('-513.0', '-513', 1); + T('-14964.000', '-14964', 3); + T('-19903753117563849440806175537514112075543387952.00000', '-19903753117563849440806175537514112075543387952', 5); + T('249443.0175143', '249443.0175142727704683419749', 7); + T('-74343756463586673907431837633.24', '-74343756463586673907431837633.23687651', 2); + T('-27.679', '-27.6785', 3); + T('-64259172643579684888737979.618833554815821332098', '-64259172643579684888737979.618833554815821332097716331', 21); + T('17230955766539391.00000000', '17230955766539391', 8); + T('582751886981240.177', '582751886981240.177383845390864465', 3); + T('191002031658424.51', '191002031658424.51247456500221220552332700327795408', 2); + T('-479015175846069070145.000000000', '-479015175846069070145', 9); + T('135507.00', '135507', 2); + T('-1819380757840.7931545894175', '-1819380757840.79315458941752033110677996441946221', 13); + T('56729395152942371.34113220', '56729395152942371.3411322', 8); + T('0.00000', '0.000000009', 5); + T('231631.31091406798', '231631.310914067979514934639396351953448', 11); + T('0.00', '0.00044659', 2); + T('-637697600918508531049573689760309.5119477000000000', '-637697600918508531049573689760309.5119477', 16); + T('-6.19247283', '-6.19247282501186063445037314', 8); + + BigNumber.config({ROUNDING_MODE : 5}); + + T('0.00', '0.00000000000000070362', 2); + T('682377946933004839.0000000', '682377946933004839', 7); + T('0.000000000', '0.00000000000000301722508588270616971784651380892069087869575', 9); + T('-356330174906.7', '-356330174906.737986270704', 1); + T('771875969530483104163034745359742192923504.000000000000000', '771875969530483104163034745359742192923504', 15); + T('-85.57612133364', '-85.576121333642541652128540737082', 11); + T('-796870619982006783.00000000', '-796870619982006783', 8); + T('985819.0', '985819', 1); + T('0.000000', '0.00000000000000000007093034243958', 6); + T('-0.0000', '-0.0000000006400178083107075310177579449', 4); + T('-105570971372984.0', '-105570971372984', 1); + T('4387745564661852845308.94229815083918', '4387745564661852845308.9422981508391799473309882', 14); + T('-3978043797116373.2', '-3978043797116373.159631', 1); + T('5.8961281424853232622595', '5.8961281424853232622594846548715356650909645537495738043051', 22); + T('-0.0000081539970551874384495', '-0.000008153997055187438449482684680130340977472796176926', 25); + T('-65.0', '-65', 1); + T('-24012940205869.000', '-24012940205869', 3); + T('0.000000', '0.000000000000000066985234999507396', 6); + T('2935194283452.35738951157832206907124', '2935194283452.357389511578322069071242729133894', 23); + T('542060.7771', '542060.77713479586821060591807145320317', 4); + T('890815036528241639534803534813.592588608837168425865025', '890815036528241639534803534813.59258860883716842586502472472', 24); + T('685877749980391051.17', '685877749980391051.1715', 2); + T('47820177163147405231185068730213.894293', '47820177163147405231185068730213.89429254869826585947429821', 6); + T('1536364305.00', '1536364305', 2); + T('-85825125.5810188', '-85825125.5810188298', 7); + T('-4983288214158634188.4572989', '-4983288214158634188.4572988600705359104', 7); + T('0.0000000000', '0.0000000000000000017929073', 10); + T('-1684136337600384671.00000000', '-1684136337600384671', 8); + T('567733137127609543.000000', '567733137127609543', 6); + T('607675679770387.000', '607675679770387', 3); + T('43727409067319.0', '43727409067319', 1); + T('-77274559773372606.00', '-77274559773372606', 2); + T('-28855643486070486857836.00000', '-28855643486070486857836', 5); + T('-915356570870.00', '-915356570870.00041832252262829437239', 2); + T('0.0', '0.00000000000004843552301428650828', 1); + T('-33295218517967296146307127.00000', '-33295218517967296146307127', 5); + T('279738383433666359352.0000000', '279738383433666359352', 7); + T('-30674028853766084158066396602.97', '-30674028853766084158066396602.97484778446', 2); + T('-0.323', '-0.32275988418995752362737918723', 3); + T('6129049976563004.000', '6129049976563004', 3); + T('-6.0', '-6', 1); + T('-66243945975700325606152500782471023774538548318.0000000000000000000000', '-66243945975700325606152500782471023774538548318', 22); + T('-138286369547644243875.0000000', '-138286369547644243875', 7); + T('5099535.00', '5099535', 2); + T('675.0', '675', 1); + T('0.0002717', '0.0002716602757', 7); + T('4649780225385110311483722.0000', '4649780225385110311483722', 4); + T('-22143045418555913412107884765016867198665971.10000000000000000000000', '-22143045418555913412107884765016867198665971.1', 23); + T('-71055639496050521326328010675.00000000', '-71055639496050521326328010675', 8); + T('0.00000000', '0.000000000077562570903960521', 8); + T('-0.000000021017500', '-0.000000021017500243085615932617', 15); + T('0.000000000000000024697', '0.00000000000000002469732084636233381651368431', 21); + T('760509941556107507425043304787283113918044183872.000000000000000000000000', '760509941556107507425043304787283113918044183872', 24); + T('-553489807182304143570302092614431846999972192129146.0608020000000000', '-553489807182304143570302092614431846999972192129146.060802', 16); + T('4616442457861540834390983504493684542810.99300000000', '4616442457861540834390983504493684542810.993', 11); + T('5836715007847225.0000', '5836715007847225', 4); + T('1056180.997', '1056180.99676966515555844225990248546', 3); + + BigNumber.config({ROUNDING_MODE : 6}); + + T('-6614662975368684488885953285955838893900074215956.00', '-6614662975368684488885953285955838893900074215956', 2); + T('8642393776898.000', '8642393776898', 3); + T('3612207878528.1106344698085142865', '3612207878528.1106344698085142865438924419', 19); + T('977910386.93', '977910386.9343537', 2); + T('-8937937492688941768401276851642629965923372.0', '-8937937492688941768401276851642629965923372', 1); + T('-8327876772303865517454752161.4376112752921904774', '-8327876772303865517454752161.43761127529219047742910886', 19); + T('-27707.00', '-27707', 2); + T('-7287595765894242586375.92700435484', '-7287595765894242586375.927004354837723619581861634319', 11); + T('-0.00000', '-0.000000000000023670858459165486137218740358207859', 5); + T('574676836802209077.64156', '574676836802209077.641563875647945277493356873895', 5); + T('-3041038455237222898218053653661.87952947815', '-3041038455237222898218053653661.87952947815', 11); + T('-628244132307.000', '-628244132307', 3); + T('316566935167341670725238.000', '316566935167341670725238', 3); + T('-77953301569468294124105528.0', '-77953301569468294124105528', 1); + T('0.0046', '0.00460227833968584', 4); + T('4323265763616518980379929221104.0', '4323265763616518980379929221104', 1); + T('1674500565014237781637959673471730398.1120033', '1674500565014237781637959673471730398.1120032995511774', 7); + T('872559441430499650732600166.00000', '872559441430499650732600166', 5); + T('-87858304.0000', '-87858304', 4); + T('-4158788.000', '-4158788', 3); + T('3983930437416823631395.9093', '3983930437416823631395.90934402583657', 4); + T('-14.5531937', '-14.5531936852106573016020290135814233645752955297443336', 7); + T('0.00000000002201', '0.00000000002200503795474854372849141363413146996972', 14); + T('0.0000000000000', '0.00000000000000000894955653982033503846831364474746320232', 13); + T('61564779.00', '61564779', 2); + T('-7.0', '-7', 1); + T('-0.000000000000028455976228', '-0.00000000000002845597622815028653703372125435938812845106', 24); + T('728982423193598397582409707715766595902844.0000000', '728982423193598397582409707715766595902844', 7); + T('14538075860529.2697937480', '14538075860529.269793748', 10); + T('0.000', '0.00000000000000000007021566096', 3); + T('-5136066535080.86830591678842264063462546263', '-5136066535080.86830591678842264063462546262988980471309228558', 29); + T('-3026751112367460839746524832112404665.000000000000000', '-3026751112367460839746524832112404665', 15); + T('-6694275398250090562.00', '-6694275398250090562', 2); + T('-50643997750937725516578696636829589244661366402743.000000000', '-50643997750937725516578696636829589244661366402743', 9); + T('2197374413.79714', '2197374413.7971355344377249354470626290268959873', 5); + T('0.0', '0.005020192658713355', 1); + T('-254956356194995318790657817617390203938.180000000', '-254956356194995318790657817617390203938.18', 9); + T('0.000', '0.000000000090726', 3); + T('-644164371869124953225087.14694842524000', '-644164371869124953225087.14694842524', 14); + T('-0.00000157175189018', '-0.0000015717518901763532026126676445445', 17); + T('883545726717772254369.08868386', '883545726717772254369.0886838593581297250598', 8); + T('-8890332541208932844712909996569216422867971798.000000000000000', '-8890332541208932844712909996569216422867971798', 15); + T('-0.000000000000', '-0.000000000000000019481454049470983547912235', 12); + T('740944636504591431790473918513.0000', '740944636504591431790473918513', 4); + T('-5679793084762496855854965276883350654245022549131067599715.800000', '-5679793084762496855854965276883350654245022549131067599715.8', 6); + T('51991398836962962151.4032644162159', '51991398836962962151.4032644162159099221', 13); + T('66958838053011544557752193.00000', '66958838053011544557752193', 5); + T('-670579843.2118208913941229137016', '-670579843.21182089139412291370155773837719883548843299002', 22); + T('-153613650899356538114572207.94248678450152160836', '-153613650899356538114572207.9424867845015216083607156497', 20); + T('-737846251706379871052.2861168', '-737846251706379871052.2861168267591416289887782899835', 7); + T('-65908055.0', '-65908055', 1); + T('3237039120306392313.80906374769', '3237039120306392313.80906374769434099092272015749692609', 11); + T('83640693821.00', '83640693821', 2); + T('-921776606869800052510163986912.6037663480501', '-921776606869800052510163986912.603766348050146856757561176111', 13); + T('6303883932563373.0', '6303883932563373', 1); + T('6373283811.5454531478622699', '6373283811.5454531478622698611321575271', 16); + T('6097017834070937658.000000000', '6097017834070937658', 9); + T('24524.17471335606758880', '24524.1747133560675887965670636565353165', 17); + T('82671976754257522256837287487178420454352.00000', '82671976754257522256837287487178420454352', 5); + T('-4134121508878287.32516638661', '-4134121508878287.32516638661094488', 11); + T('706494960751225536339363333.135485602348', '706494960751225536339363333.13548560234793', 12); + T('0.0000000', '0.00000000000000000005260494554647051', 7); + T('-2172823046.605754378126140867773679', '-2172823046.60575437812614086777367899344184998336', 24); + T('7182216670065915047.3', '7182216670065915047.265', 1); + T('-0.0001', '-0.00011347856', 4); + T('-1620.4750509689199484099', '-1620.475050968919948409915128915793493745056891952647', 19); + T('-2107001274569567393.00000000', '-2107001274569567393', 8); + T('0.00', '0.0000000004', 2); + T('-0.000', '-0.00000000000000000009622600511499459674774308', 3); + T('-1749656594942211427.14080828808148814976439530', '-1749656594942211427.1408082880814881497643953004161', 26); + T('-2483383057229762.00000000', '-2483383057229762', 8); + T('0.000000', '0.0000005', 6); + T('0.5', '0.5', u); + + T('-0', '-0.5', 0); + + T('10.5', '10.5', u); + T('0.05', '0.05', u); + T('0.4', '0.4', u); + T('0.6', '0.6', u); + T('1.5', '1.5', u); + T('-1.5', '-1.5', u); + + BigNumber.config({ROUNDING_MODE : 4}); + + T('-535564000.00', '-535564000', 2); + T('-80000000.000', '-80000000', 3); + T('-240.0', '-240', 1); + T('-7520000000.0', '-7520000000', 1); + T('306550.000', '306550', 3); + T('800000000.0', '800000000', 1); + T('-454000000.00000', '-454000000', 5); + T('60.0', '60', 1); + T('-4700000.000', '-4700000', 3); + T('25000.00', '25000', 2); + T('6847.0', '6847', 1); + T('780.0', '780', 1); + T('-50.0', '-50', 1); + T('700.0', '700', 1); + T('412598000.0000', '412598000', 4); + T('-84581600.0', '-84581600', 1); + T('5590000.00', '5590000', 2); + T('-66000.0', '-66000', 1); + T('600.0', '600', 1); + T('-513335000.000', '-513335000', 3); + T('-40.0', '-40', 1); + T('3401.00', '3401', 2); + T('8600.00', '8600', 2); + T('-5410000.0', '-5410000', 1); + T('5527170.0', '5527170', 1); + T('-3710700.0', '-3710700', 1); + T('-13230000.0', '-13230000', 1); + + T('-52536202527.13891931933498708496518913773517016037224', '-5.253620252713891931933498708496518913773517016037224E10', u); + T('0.0000000000000008761383898703999300297605784533730922', '8.761383898703999300297605784533730922E-16', u); + T('-0.0000000000000000000000000000000000004', '-4E-37', u); + T('2832044194940.47654015529986948208', '2.83204419494047654015529986948208E12', u); + T('0.00000000000000000000000064668155275864837', '6.4668155275864837E-25', u); + T('4.34128088694', '4.34128088694E0', u); + T('-851957.6572615611436542', '-8.519576572615611436542E5', u); + T('-89097468286.2561077879598798580253771544265682053', '-8.90974682862561077879598798580253771544265682053E10', u); + T('-0.000000000000000000000000000000000000000000000030409767', '-3.0409767E-47', u); + T('0.000000000000000000004295112484112357722747956581254', '4.295112484112357722747956581254E-21', u); + T('-839203207475651.6542808578', '-8.392032074756516542808578E14', u); + T('-0.00000000000000000078216', '-7.8216E-19', u); + T('-1782290274935701247734.21262413032385', '-1.78229027493570124773421262413032385E21', u); + T('31669451104144801337076433457.18511076', '3.166945110414480133707643345718511076E28', u); + T('0.000000000000000000000000000000000000472351852761', '4.72351852761E-37', u); + T('-50155220217523568901083623.78842580174913602672593731', '-5.015522021752356890108362378842580174913602672593731E25', u); + T('-291.37', '-2.9137E2', u); + T('-52474611936456205886027195352961212383.2279441143', '-5.24746119364562058860271953529612123832279441143E37', u); + T('-326.9376463292543', '-3.269376463292543E2', u); + T('0.00000000000044', '4.4E-13', u); + T('0.000000087792449', '8.7792449E-8', u); + T('497835793870987132484033.938845920610565887398960253648', '4.97835793870987132484033938845920610565887398960253648E23', u); + T('-33960439442302770058.74863962', '-3.396043944230277005874863962E19', u); + T('0.00000000000000000000000000000000000000020694696587293782', '2.0694696587293782E-40', u); + T('-0.8904319539', '-8.904319539E-1', u); + T('-86429552798.4', '-8.64295527984E10', u); + T('0.000000000000000000000000000003', '3E-30', u); + T('108595082003321932.8178949736608320767', '1.085950820033219328178949736608320767E17', u); + T('611126.73674534242367484008848341500334', '6.1112673674534242367484008848341500334E5', u); + T('4311.0597590893026685282662406924', '4.3110597590893026685282662406924E3', u); + T('0.000000000000000000000000000000000000000073309221', '7.3309221E-41', u); + T('-6864844854510.144926572184', '-6.864844854510144926572184E12', u); + T('-0.038', '-3.8E-2', u); + T('0.00000000000000794946369399591', '7.94946369399591E-15', u); + T('56020.6861005', '5.60206861005E4', u); + T('-0.00000000000896738912765063552834206018847', '-8.96738912765063552834206018847E-12', u); + T('0.00000000006755925523685348357189087468', '6.755925523685348357189087468E-11', u); + T('0.000000000000000000000000000000000072', '7.2E-35', u); + T('0.00000000000000000000000000000000000000000000000000006128', '6.128E-53', u); + T('-27010668344373144545282.061712584328482438690936897', '-2.7010668344373144545282061712584328482438690936897E22', u); + T('-0.000066720042169954586184178645', '-6.6720042169954586184178645E-5', u); + T('-0.00000000000000000000000000000000000003516', '-3.516E-38', u); + T('0.007458', '7.458E-3', u); + T('0.0670339647456587432138292225', '6.70339647456587432138292225E-2', u); + T('-49.59', '-4.959E1', u); + T('5.94', '5.94E0', u); + T('9185110977234279483303912931774514.67', '9.18511097723427948330391293177451467E33', u); + T('-127.11408592808048991219551891022999276273412536879573107525', '-1.2711408592808048991219551891022999276273412536879573107525E2', u); + T('0.00000013', '1.3E-7', u); + T('-0.00000000000000000000000000000000156', '-1.56E-33', u); + T('22', '2.2E1', u); + T('6644378197598065.943168375926', '6.644378197598065943168375926E15', u); + T('-0.00000000000000465403429687260725429254606083299909', '-4.65403429687260725429254606083299909E-15', u); + T('0.00000653586429286761580785105', '6.53586429286761580785105E-6', u); + T('-779132060.497697052423647343175672388834', '-7.79132060497697052423647343175672388834E8', u); + T('0.0000000000000000085996828590423169591835759758087548466494', '8.5996828590423169591835759758087548466494E-18', u); + T('-0.000000000000256285784', '-2.56285784E-13', u); + T('0.0000000000000017947', '1.7947E-15', u); + T('0.000000000060671249811126224597672813512109', '6.0671249811126224597672813512109E-11', u); + T('-800627106331596202.032250866963247864855868', '-8.00627106331596202032250866963247864855868E17', u); + T('-98402249.9358755191632299360339880127190049662097654206', '-9.84022499358755191632299360339880127190049662097654206E7', u); + T('-0.000000000000000000000014149882794818263963', '-1.4149882794818263963E-23', u); + T('-7060324311175919534626797409919718746390.10555', '-7.06032431117591953462679740991971874639010555E39', u); + T('821393911651350506858922608971571483.39201', '8.2139391165135050685892260897157148339201E35', u); + T('-721517626817.43734235970422357278172', '-7.2151762681743734235970422357278172E11', u); + T('-5124.504476910146380807047771', '-5.124504476910146380807047771E3', u); + T('0.0000000005697544867401308959870722352682904', '5.697544867401308959870722352682904E-10', u); + T('-0.00012871208613777', '-1.2871208613777E-4', u); + T('8567233928771894245.8242651905951092028701228506224699', '8.5672339287718942458242651905951092028701228506224699E18', u); + T('-0.0000000094881461545668728', '-9.4881461545668728E-9', u); + T('6045245.020177069527457656633132622', '6.045245020177069527457656633132622E6', u); + T('-7210271571379007035869444.1417241308887367042323559687840525', '-7.2102715713790070358694441417241308887367042323559687840525E24', u); + T('-2620220239077.66', '-2.62022023907766E12', u); + T('-0.001916564704980402478', '-1.916564704980402478E-3', u); + T('5371.947750065160966666612070818997', '5.371947750065160966666612070818997E3', u); + T('0.00000077036439397954895237124076', '7.7036439397954895237124076E-7', u); + T('-0.000000000002280137669447351084609656999367909206747800792', '-2.280137669447351084609656999367909206747800792E-12', u); + T('635945056777163867933996244.44612913038', '6.3594505677716386793399624444612913038E26', u); + T('5', '5E0', u); + T('48309.56', '4.830956E4', u); + T('2138.45865823930129961216391905305999251296833471869532168', '2.13845865823930129961216391905305999251296833471869532168E3', u); + T('3706073870.96925990345144', '3.70607387096925990345144E9', u); + T('-798.62', '-7.9862E2', u); + T('-521968106907526.65373750732297', '-5.2196810690752665373750732297E14', u); + T('0.7224996555', '7.224996555E-1', u); + T('-0.00000000000059452644215310796452483703709', '-5.9452644215310796452483703709E-13', u); + T('350818063006798017016671125.0434068891113', '3.508180630067980170166711250434068891113E26', u); + T('7968708424180299716816047189442601.3735762244', '7.9687084241802997168160471894426013735762244E33', u); + T('-0.5355520816318664361284739093852209293628562271329701', '-5.355520816318664361284739093852209293628562271329701E-1', u); + T('-906.9275233025623299867798', '-9.069275233025623299867798E2', u); + T('0.00045587', '4.5587E-4', u); + T('0.000004', '4E-6', u); + T('5857276704537340524.1431417907437', '5.8572767045373405241431417907437E18', u); + T('-3843554476637626791.87474208180361', '-3.84355447663762679187474208180361E18', u); + T('-60535943484683045495384222.313768035329647860053456457477', '-6.0535943484683045495384222313768035329647860053456457477E25', u); + T('0.0000000000000004444869762788836674404079577885262473', '4.444869762788836674404079577885262473E-16', u); + T('-0.005874931444844844350595746989373586841269114316', '-5.874931444844844350595746989373586841269114316E-3', u); + T('0.09', '9E-2', u); + T('86280010336.8017418950328178', '8.62800103368017418950328178E10', u); + T('227901.6305936588696902705189877626178015851261755', '2.279016305936588696902705189877626178015851261755E5', u); + T('-0.00002923', '-2.923E-5', u); + T('451.1251729802129507', '4.511251729802129507E2', u); + T('-2586077212890917651232310958.88201646914374247083', '-2.58607721289091765123231095888201646914374247083E27', u); + T('-0.08', '-8E-2', u); + T('7.996020827302694833122463304879649129610781362', '7.996020827302694833122463304879649129610781362E0', u); + T('-0.00000000000000000000000007933204829049175909186498799838', '-7.933204829049175909186498799838E-26', u); + T('-0.0000000000001882498592930501880542338117957263473489255', '-1.882498592930501880542338117957263473489255E-13', u); + T('-1172052648945437104144.7753679481957698417677', '-1.1720526489454371041447753679481957698417677E21', u); + T('287937985683292603.441526238031', '2.87937985683292603441526238031E17', u); + T('-0.0000000000134355091714731837192225455005', '-1.34355091714731837192225455005E-11', u); + T('0.000000000000000000000000000026170541344981279884209612', '2.6170541344981279884209612E-29', u); + T('0.0041336403', '4.1336403E-3', u); + T('8955011.51436146124079765380599870608206410057', '8.95501151436146124079765380599870608206410057E6', u); + T('76343535604093', '7.6343535604093E13', u); + T('-579109804573982925.9', '-5.791098045739829259E17', u); + T('-16248730541202.41645330499728414237866592099124270393892244', '-1.624873054120241645330499728414237866592099124270393892244E13', u); + T('299078130777696473774921407.8921386301', '2.990781307776964737749214078921386301E26', u); + T('0.00000000000005008659860139108', '5.008659860139108E-14', u); + T('-277409247924.47', '-2.7740924792447E11', u); + T('-0.516', '-5.16E-1', u); + T('-0.0000000000000000000000056338952424532568447556', '-5.6338952424532568447556E-24', u); + T('-0.000000217955', '-2.17955E-7', u); + T('8905335075021645253458124.63415988932826552', '8.90533507502164525345812463415988932826552E24', u); + T('-0.0044', '-4.4E-3', u); + T('-0.2373963', '-2.373963E-1', u); + T('-0.79088027341157244765444311372339', '-7.9088027341157244765444311372339E-1', u); + T('0.0026', '2.6E-3', u); + T('-835918193339364260673226.934', '-8.35918193339364260673226934E23', u); + T('-0.0009', '-9E-4', u); + T('6', '6E0', u); + T('-314214420212243283843403549.4470864901529365489404218274', '-3.142144202122432838434035494470864901529365489404218274E26', u); + T('0.00000000791545594251', '7.91545594251E-9', u); + T('191942230233.90984962570015373025283255557', '1.9194223023390984962570015373025283255557E11', u); + T('-0.0000000000078881545375574067765343323', '-7.8881545375574067765343323E-12', u); + T('-16802261058.36705', '-1.680226105836705E10', u); + T('0.0000000000000056017241520290338574647512149076190238', '5.6017241520290338574647512149076190238E-15', u); + T('-0.00000000003763962', '-3.763962E-11', u); + T('-0.000000000511737717217408462541465239', '-5.11737717217408462541465239E-10', u); + T('-0.000000000000000000000000000000000000000050368224614', '-5.0368224614E-41', u); + T('-0.018634708832478724474964945976701', '-1.8634708832478724474964945976701E-2', u); + T('6', '6E0', u); + T('-0.0000000000000000000745072058021090744018544591692', '-7.45072058021090744018544591692E-20', u); + T('724257535284104810664.4073', '7.242575352841048106644073E20', u); + T('12769.45510988046008277708155820993631711046', '1.276945510988046008277708155820993631711046E4', u); + T('631804730657678655927.137998704033924856965', '6.31804730657678655927137998704033924856965E20', u); + T('0.00000000000000000000000000000000798840870767288241343529097', '7.98840870767288241343529097E-33', u); + T('1696465.807207', '1.696465807207E6', u); + T('0.00000000000000000000000000000079804991500258221476735155', '7.9804991500258221476735155E-31', u); + T('-0.000000000000000000000598137708', '-5.98137708E-22', u); + T('0.000000000000000000000000065555369684822', '6.5555369684822E-26', u); + T('-35599704691194312186568857.06582774697883475886191', '-3.559970469119431218656885706582774697883475886191E25', u); + T('-0.0000000000000794908227013', '-7.94908227013E-14', u); + T('-0.0000000499730429264884151845723427055364', '-4.99730429264884151845723427055364E-8', u); + T('0.00000000000000064', '6.4E-16', u); + T('-572705', '-5.72705E5', u); + T('-0.000000000559274332', '-5.59274332E-10', u); + T('2924074735520802294144158.124247615661785268262895466645', '2.924074735520802294144158124247615661785268262895466645E24', u); + T('0.00000000000000000000001792', '1.792E-23', u); + T('-839757046612045970742723218746.08104510687271206453', '-8.3975704661204597074272321874608104510687271206453E29', u); + T('607849.09099201775466906352465117043', '6.0784909099201775466906352465117043E5', u); + T('-4654202085161.7295919153', '-4.6542020851617295919153E12', u); + T('350765025122274578259836720029858792277.93', '3.5076502512227457825983672002985879227793E38', u); + T('-0.000000000000000000000000000000000000528363561265895', '-5.28363561265895E-37', u); + T('-7', '-7E0', u); + T('4.57', '4.57E0', u); + T('-1214468.83483364', '-1.21446883483364E6', u); + T('-1.75890665039235813638669857754779113', '-1.75890665039235813638669857754779113E0', u); + T('-0.0001520617551991821956064', '-1.520617551991821956064E-4', u); + T('0.000000000000000000000000000000000000000000316862530006', '3.16862530006E-43', u); + T('3', '3E0', u); + T('82', '8.2E1', u); + T('-0.0000000000000000000000000000000773334716331177010647839', '-7.73334716331177010647839E-32', u); + T('708885924.332539635179', '7.08885924332539635179E8', u); + T('-64497329.71357360701588', '-6.449732971357360701588E7', u); + T('-0.7187', '-7.187E-1', u); + T('0.00000000000000000000000000000000000038135349688', '3.8135349688E-37', u); + T('0.00000000000000000000000000000000182717532099214054', '1.82717532099214054E-33', u); + T('19869092956779031884883390565185379047759848968501117153.4', '1.98690929567790318848833905651853790477598489685011171534E55', u); + T('620913861673.81857852920469094171232255417901159', '6.2091386167381857852920469094171232255417901159E11', u); + T('235690494.2', '2.356904942E8', u); + T('1952.848789', '1.952848789E3', u); + T('0.0000000000000000000000593857592909', '5.93857592909E-23', u); + T('-0.00000000000000688558900049482997723', '-6.88558900049482997723E-15', u); + T('-0.00000000000000000000000000007338347173289341804737', '-7.338347173289341804737E-29', u); + T('0.000000000000000202545915248826284620971210675', '2.02545915248826284620971210675E-16', u); + T('-724.280380099716494328413118123', '-7.24280380099716494328413118123E2', u); + T('-0.000000000000018969640124102058547183921', '-1.8969640124102058547183921E-14', u); + T('429623.23189016762963579', '4.2962323189016762963579E5', u); + T('-4440068176059478189.38961985114362', '-4.44006817605947818938961985114362E18', u); + T('388081523018426906543780329974051543542101.8221256689223182', '3.880815230184269065437803299740515435421018221256689223182E41', u); + T('454795752022.4749683607481963197156049975854', '4.547957520224749683607481963197156049975854E11', u); + T('-5.97', '-5.97E0', u); + T('-0.0000000651', '-6.51E-8', u); + T('0.000307481649349842471', '3.07481649349842471E-4', u); + T('-0.06005081686761154653757227654183441415861126', '-6.005081686761154653757227654183441415861126E-2', u); + T('0.00000000000000000000063579065', '6.3579065E-22', u); + T('900814801036731395557.6', '9.008148010367313955576E20', u); + T('4999', '4.999E3', u); + T('-7.3827865388155464662280547066599644534268122420403', '-7.3827865388155464662280547066599644534268122420403E0', u); + T('-17278399836268786075488221.51', '-1.727839983626878607548822151E25', u); + T('-0.0660146', '-6.60146E-2', u); + T('-781591906217028941735734533.343797893312168609257042055753', '-7.81591906217028941735734533343797893312168609257042055753E26', u); + T('-6278408649', '-6.278408649E9', u); + T('-0.000000000001', '-1E-12', u); + T('0.0018', '1.8E-3', u); + T('-437548970.255395047611134138987663791895761194803418316513197', '-4.37548970255395047611134138987663791895761194803418316513197E8', u); + T('-147885337323804329368530390734663845475933.77830435', '-1.4788533732380432936853039073466384547593377830435E41', u); + T('-753868987492754718849345711047082845957.640888486201188367', '-7.53868987492754718849345711047082845957640888486201188367E38', u); + T('-340168909098957.1241', '-3.401689090989571241E14', u); + T('-0.000000000000000000000000000000000000000585436735853', '-5.85436735853E-40', u); + T('0.0000000000000000756425339599187041535729604907751951301172', '7.56425339599187041535729604907751951301172E-17', u); + T('4632870.933', '4.632870933E6', u); + T('-4563559260.01', '-4.56355926001E9', u); + T('-0.00000000000000000000000294407952905593673865', '-2.94407952905593673865E-24', u); + T('0.00000000039555331064814', '3.9555331064814E-10', u); + T('-0.0000000000000000000000000000000066', '-6.6E-33', u); + T('0.00000000000000000000000002796', '2.796E-26', u); + T('0.006420974922080335', '6.420974922080335E-3', u); + T('62.09', '6.209E1', u); + T('0.000000000000000000000000000000000000000092019', '9.2019E-41', u); + T('31705406794.02881', '3.170540679402881E10', u); + T('85.877', '8.5877E1', u); + T('6183.522312', '6.183522312E3', u); + T('4299.15237475410462987616810012961', '4.29915237475410462987616810012961E3', u); + T('21900171506665946787994.9913441726189153092', '2.19001715066659467879949913441726189153092E22', u); + T('64432017665108304653.37748', '6.443201766510830465337748E19', u); + T('-859958206403439.8555459676', '-8.599582064034398555459676E14', u); + T('332.8856507997622171514594697481203953250774320862536', '3.328856507997622171514594697481203953250774320862536E2', u); + T('-0.0000000000000000000000000000007425', '-7.425E-31', u); + T('8.72361', '8.72361E0', u); + T('-0.0000000000000000000000000000000000000000000000025453', '-2.5453E-48', u); + T('129360586484988816847066041509256285.9834653851528560934', '1.293605864849888168470660415092562859834653851528560934E35', u); + T('-0.000000000000007222', '-7.222E-15', u); + T('-8098841403716381679540887.942710395311867043476849928102', '-8.098841403716381679540887942710395311867043476849928102E24', u); + T('-596359917165924096.74516895354130304259526279190192', '-5.9635991716592409674516895354130304259526279190192E17', u); + T('383728239984415462011.156111377322400391221501061013146359', '3.83728239984415462011156111377322400391221501061013146359E20', u); + T('-0.0000089', '-8.9E-6', u); + T('-0.000000000000000000000000008687857', '-8.687857E-27', u); + T('0.0000361135882323181', '3.61135882323181E-5', u); + T('-790530028343151500857311598079293.168169782009497538', '-7.90530028343151500857311598079293168169782009497538E32', u); + T('120280775320592531520673579931715496.413898', '1.20280775320592531520673579931715496413898E35', u); + T('-0.00000000000000330496', '-3.30496E-15', u); + T('0.00000000000000000000000000000000000000000009', '9E-44', u); + T('0.493800687846', '4.93800687846E-1', u); + T('0.00000000000000000000000000000000000000000000428917279063', '4.28917279063E-45', u); + T('2439161986343305.3977219293086130659', '2.4391619863433053977219293086130659E15', u); + T('0.00000000000000000000000000000001236416', '1.236416E-32', u); + T('-0.00000074534400936482826343789037997822705', '-7.4534400936482826343789037997822705E-7', u); + T('-21.1', '-2.11E1', u); + T('2572114652026268493653871881146558385361920.28081168806628264', '2.57211465202626849365387188114655838536192028081168806628264E42', u); + T('17124033483109159133818176268510442295426753249741457.875034', '1.7124033483109159133818176268510442295426753249741457875034E52', u); + T('-0.5129122224574351008', '-5.129122224574351008E-1', u); + T('-0.007927', '-7.927E-3', u); + T('-0.0000920899747', '-9.20899747E-5', u); + T('-0.004894338278755', '-4.894338278755E-3', u); + T('0.0000000000000000000061703', '6.1703E-21', u); + T('2326089407921647116369956641187720.969', '2.326089407921647116369956641187720969E33', u); + T('1166197836238509', '1.166197836238509E15', u); + T('3671781131154060908657.603137323342926541681254', '3.671781131154060908657603137323342926541681254E21', u); + T('0.0000000000000000000000000000000000000000000002260279', '2.260279E-46', u); + T('-0.00000000000000000000000000000000000000000000000000404', '-4.04E-51', u); + T('-652408413688213856070194.6216304473505375385271', '-6.524084136882138560701946216304473505375385271E23', u); + T('-6437.3786', '-6.4373786E3', u); + T('-0.00024', '-2.4E-4', u); + T('-0.000000000000000000000000000004', '-4E-30', u); + T('0.0000000000000009079496181315516965', '9.079496181315516965E-16', u); + T('-33759.06239', '-3.375906239E4', u); + T('-8249214.8143', '-8.2492148143E6', u); + T('76023.094878', '7.6023094878E4', u); + T('4750348149604126293082788358593492149985525371.3055161011554', '4.7503481496041262930827883585934921499855253713055161011554E45', u); + T('-347056242813575345437098678.19382', '-3.4705624281357534543709867819382E26', u); + T('-0.0044334994986839', '-4.4334994986839E-3', u); + T('-77579240.8814471085', '-7.75792408814471085E7', u); + T('0.00000000000005880190315', '5.880190315E-14', u); + T('5512594339298216692.2504515931248375537394173161332', '5.5125943392982166922504515931248375537394173161332E18', u); + T('897599613823052.78098021722556', '8.9759961382305278098021722556E14', u); + T('491849.74046716999671925', '4.9184974046716999671925E5', u); + T('0.00000000000000000000000000000026', '2.6E-31', u); + T('83831959917154625137362002.826519817779', '8.3831959917154625137362002826519817779E25', u); + T('0.0000000004824', '4.824E-10', u); + T('-0.0000000000000000000539954390007731983666483', '-5.39954390007731983666483E-20', u); + T('-5', '-5E0', u); + T('-0.0000000000000000000000000000000052105973', '-5.2105973E-33', u); + T('-51180818493453796222392326680632879', '-5.1180818493453796222392326680632879E34', u); + T('-0.0000000000000000000000000000000000240888314887894116', '-2.40888314887894116E-35', u); + T('-3.9884198', '-3.9884198E0', u); + T('-0.00292509420999319058434270507', '-2.92509420999319058434270507E-3', u); + T('-0.0471410502674988132847954859528693281', '-4.71410502674988132847954859528693281E-2', u); + T('-0.000383921003997213038329810979734179482203337059136937948', '-3.83921003997213038329810979734179482203337059136937948E-4', u); + T('868847355738186906225977.83933455357403132497074451153826473', '8.6884735573818690622597783933455357403132497074451153826473E23', u); + T('-74428485419.93786255558241', '-7.442848541993786255558241E10', u); + T('9.08353695983999662727523423580372295', '9.08353695983999662727523423580372295E0', u); + T('0.000000000000000000000000000000000000174340386756706026938', '1.74340386756706026938E-37', u); + T('0.00000000000000000000000003488223852390463813101', '3.488223852390463813101E-26', u); + T('6235893648937978707207460050453092026130252190198479.3', '6.2358936489379787072074600504530920261302521901984793E51', u); + T('288685778491241.9787664674', '2.886857784912419787664674E14', u); + T('0.000132721936833718', '1.32721936833718E-4', u); + T('-878.0561026970809281319399445768', '-8.780561026970809281319399445768E2', u); + T('0.00000000000000000000000000000164205860568335794182', '1.64205860568335794182E-30', u); + T('198.2447277', '1.982447277E2', u); + T('594893202379402597086528939812.686961108921', '5.94893202379402597086528939812686961108921E29', u); + T('815799379961431517563630941318305822656819.1819089536', '8.157993799614315175636309413183058226568191819089536E41', u); + T('7990092124827731099787724282235162054016305443.9448', '7.9900921248277310997877242822351620540163054439448E45', u); + T('663687681604087645522022865972.07146532571', '6.6368768160408764552202286597207146532571E29', u); + T('318669729285258750300170721357707298590338.45839229964442', '3.1866972928525875030017072135770729859033845839229964442E41', u); + T('-555699450886771049.424695515896915466268294356460403', '-5.55699450886771049424695515896915466268294356460403E17', u); + T('-0.00000000000000000000000000000000000000000001095071857', '-1.095071857E-44', u); + T('-9150620505556.07974725572726628538', '-9.15062050555607974725572726628538E12', u); + T('-0.00000000003194584', '-3.194584E-11', u); + T('-1913473.7214461866163373699149123', '-1.9134737214461866163373699149123E6', u); + T('226008983260172522.282738382841159863', '2.26008983260172522282738382841159863E17', u); + T('62674367141762718476.245255', '6.2674367141762718476245255E19', u); + T('-2', '-2E0', u); + T('-0.00000009178', '-9.178E-8', u); + T('0.00000000000000000629836181986423672328404795028', '6.29836181986423672328404795028E-18', u); + T('93586.02926647672', '9.358602926647672E4', u); + T('-0.0000000000000000000000005', '-5E-25', u); + T('-9207421318.2448691844836734269513121808514798', '-9.2074213182448691844836734269513121808514798E9', u); + T('-0.00000007307221392104978', '-7.307221392104978E-8', u); + T('-0.0000000000000066886943766783493967753683408289', '-6.6886943766783493967753683408289E-15', u); + T('-543304673129193.8', '-5.433046731291938E14', u); + T('-0.000000000000000136', '-1.36E-16', u); + T('-5548881134560.03611729206353518', '-5.54888113456003611729206353518E12', u); + T('12277666390.0592100569639588009142346505770647', '1.22776663900592100569639588009142346505770647E10', u); + T('-49886360742145249688090891445025578471363.463145336476', '-4.9886360742145249688090891445025578471363463145336476E40', u); + T('289734846955085106069130291953704075.5686911', '2.897348469550851060691302919537040755686911E35', u); + T('0.00000000046461', '4.6461E-10', u); + T('-62109960217702169495599.7856590374740584451730995867043611', '-6.21099602177021694955997856590374740584451730995867043611E22', u); + T('-0.00543899591266188574678', '-5.43899591266188574678E-3', u); + T('-0.000000000000655098180667', '-6.55098180667E-13', u); + T('16003803057504466354568876.721', '1.6003803057504466354568876721E25', u); + T('4.54663', '4.54663E0', u); + T('-0.0000090363058536', '-9.0363058536E-6', u); + T('0.00000000000000000000000000000000000000000000683169237734869', '6.83169237734869E-45', u); + T('-0.000007999285941677', '-7.999285941677E-6', u); + T('-0.0013289268682646', '-1.3289268682646E-3', u); + T('-676279445952.4758664434048894660778454544', '-6.762794459524758664434048894660778454544E11', u); + T('-0.00000000000009075526387', '-9.075526387E-14', u); + T('0.00000086974105048792231226652741684821263913885781939473', '8.6974105048792231226652741684821263913885781939473E-7', u); + T('0.000000066874978182439602812', '6.6874978182439602812E-8', u); + T('69460738505039771437626.5674', '6.94607385050397714376265674E22', u); + T('-496842225856320580039833.32412974875059', '-4.9684222585632058003983332412974875059E23', u); + T('-0.00000000089027363409225605342063967', '-8.9027363409225605342063967E-10', u); + T('0.000000000000000000000000000000000000000000013177025997876', '1.3177025997876E-44', u); + T('0.00000000000000000000000000000000000000000000000000767', '7.67E-51', u); + T('0.00000000000000000000051646585515', '5.1646585515E-22', u); + T('-77.0523658189', '-7.70523658189E1', u); + T('-2381011509343581230.1741806527782135341132', '-2.3810115093435812301741806527782135341132E18', u); + T('15355.8', '1.53558E4', u); + T('-6.99530180722252243035032591', '-6.99530180722252243035032591E0', u); + T('0.00000000000000000000000000000000000174189621024', '1.74189621024E-36', u); + T('-0.30429214832427054994311306579079362506404', '-3.0429214832427054994311306579079362506404E-1', u); + T('0.0000053681637', '5.3681637E-6', u); + T('-0.0000000000000000000580794214565094', '-5.80794214565094E-20', u); + T('0.00000000000000000000000000000000000000718', '7.18E-39', u); + T('0.00308106507', '3.08106507E-3', u); + T('-778826601182.03', '-7.7882660118203E11', u); + T('0.07', '7E-2', u); + T('-18429554314600.2502715009477102928634264509718651532399233353', '-1.84295543146002502715009477102928634264509718651532399233353E13', u); + T('1', '1E0', u); + T('-0.007671287604999', '-7.671287604999E-3', u); + T('7887909.816542736', '7.887909816542736E6', u); + T('749', '7.49E2', u); + T('0.00000000000000000000000000000000000000000000000000000000701', '7.01E-57', u); + T('19.83', '1.983E1', u); + T('6.09402754', '6.09402754E0', u); + T('424650217237.5591', '4.246502172375591E11', u); + T('-0.000049564535268301', '-4.9564535268301E-5', u); + T('-7149629423.847728553', '-7.149629423847728553E9', u); + T('886867.3497161434434805387149126261591812', '8.868673497161434434805387149126261591812E5', u); + T('5.26322950282017332236528', '5.26322950282017332236528E0', u); + T('-814.59758571746371817362831870047066741472348685917', '-8.1459758571746371817362831870047066741472348685917E2', u); + T('-0.3417309109605504', '-3.417309109605504E-1', u); + T('0.000000057039362368628403676633', '5.7039362368628403676633E-8', u); + T('-71880.393174366874491172325', '-7.1880393174366874491172325E4', u); + T('0.000000000000000000000000000000022058', '2.2058E-32', u); + T('-2.4', '-2.4E0', u); + T('228988936752996967.25464233211', '2.2898893675299696725464233211E17', u); + T('-5080707117552421.40044791548207099220514344', '-5.08070711755242140044791548207099220514344E15', u); + T('-0.00000000000000000000000000000000016', '-1.6E-34', u); + T('-0.00003625156420604915204366585038046', '-3.625156420604915204366585038046E-5', u); + T('464637966596604669241542203619416.3216624756173', '4.646379665966046692415422036194163216624756173E32', u); + T('0.9087655476734088654458558078829027886267006357', '9.087655476734088654458558078829027886267006357E-1', u); + T('38664124727384955142.767044860367795251877128009517', '3.8664124727384955142767044860367795251877128009517E19', u); + T('-0.04762788797', '-4.762788797E-2', u); + T('-0.00000005574134895606662617', '-5.574134895606662617E-8', u); + T('-0.0003', '-3E-4', u); + T('4722723.88281334997860228789', '4.72272388281334997860228789E6', u); + T('-23995836727515866107660.4330429236850044610474', '-2.39958367275158661076604330429236850044610474E22', u); + T('0.0000045734704681293061832577', '4.5734704681293061832577E-6', u); + T('-0.0000000000000000000000000000000182740798445987382441', '-1.82740798445987382441E-32', u); + T('255100617558.86883972286820342761', '2.5510061755886883972286820342761E11', u); + T('0.064171494091240642357663125', '6.4171494091240642357663125E-2', u); + T('0.000000000000000000000000000000000000000000000294', '2.94E-46', u); + T('-281546266519431813455047.7', '-2.815462665194318134550477E23', u); + T('-570257381822964838010877265', '-5.70257381822964838010877265E26', u); + T('0.00000505461928', '5.05461928E-6', u); + T('-0.0000000000000079383014842488', '-7.9383014842488E-15', u); + T('4902.6138179376447898508', '4.9026138179376447898508E3', u); + T('-0.0000715984', '-7.15984E-5', u); + T('0.000035824586044205294062412584', '3.5824586044205294062412584E-5', u); + T('0.000000000000000000000125960459847724978955518957', '1.25960459847724978955518957E-22', u); + T('0.028825661929052', '2.8825661929052E-2', u); + T('1', '1E0', u); + T('5515129992862248795518.6683048631996974', '5.5151299928622487955186683048631996974E21', u); + T('-0.00000000000000000000000000000000000000000080094098284978', '-8.0094098284978E-43', u); + T('0.0087634344566767751845291518372154140005282350718533575', '8.7634344566767751845291518372154140005282350718533575E-3', u); + T('-0.00000000000000000000000000087483068736', '-8.7483068736E-28', u); + T('-0.00000000000000000000003486', '-3.486E-23', u); + T('0.00000000000000000000000000000070504040638', '7.0504040638E-31', u); + T('8303509586343.2443141446152924467090885760476794115914091746', '8.3035095863432443141446152924467090885760476794115914091746E12', u); + T('-64990.51997', '-6.499051997E4', u); + T('-655394931216227242937434026113830.5297263576723976532', '-6.553949312162272429374340261138305297263576723976532E32', u); + T('-30636947149027568.3784157180980445146', '-3.06369471490275683784157180980445146E16', u); + T('-0.00000000000000000000000000000000000001208233572003', '-1.208233572003E-38', u); + T('-0.0000000000000011794152801815', '-1.1794152801815E-15', u); + T('1071378.3293', '1.0713783293E6', u); + T('-0.000000000003361089193578981719907614', '-3.361089193578981719907614E-12', u); + T('0.000000000000000007517993065604', '7.517993065604E-18', u); + T('-0.00000000000000000000000000523129187652012620622569673798', '-5.23129187652012620622569673798E-27', u); + T('0.0005386441729450879234', '5.386441729450879234E-4', u); + T('1956653.41224492311730384723219211', '1.95665341224492311730384723219211E6', u); + T('6896', '6.896E3', u); + T('0.0000000000744534597556481260346395203468455303201235567973', '7.44534597556481260346395203468455303201235567973E-11', u); + T('-292388805074045762115572488335407720919180203157229382665.559', '-2.92388805074045762115572488335407720919180203157229382665559E56', u); + T('0.0000000000161486329717318200324782054218311', '1.61486329717318200324782054218311E-11', u); + T('-0.000000007268', '-7.268E-9', u); + T('-301600646696.465', '-3.01600646696465E11', u); + T('433163.236977123475732966', '4.33163236977123475732966E5', u); + T('0.00000000000002', '2E-14', u); + T('77436648026076439631578359.44359576567', '7.743664802607643963157835944359576567E25', u); + T('548548914365689512587508708513155531344527.51142574657215155', '5.4854891436568951258750870851315553134452751142574657215155E41', u); + T('-34.831073457011317265120446795022234120450280951265737281038', '-3.4831073457011317265120446795022234120450280951265737281038E1', u); + T('-845.7703', '-8.457703E2', u); + T('-4855853589907390754493', '-4.855853589907390754493E21', u); + T('-0.000000000000000000000000000000000000000000000036', '-3.6E-47', u); + T('-0.00000000000000000000000000000000000000000000000000000065', '-6.5E-55', u); + T('-45187081404585.42115773362507', '-4.518708140458542115773362507E13', u); + T('-0.000323660879015412727290006070402289', '-3.23660879015412727290006070402289E-4', u); + T('0.0000000026140558644933293588', '2.6140558644933293588E-9', u); + T('845511912406451608.452066253429799', '8.45511912406451608452066253429799E17', u); + T('0.0000000004438916316433824501475', '4.438916316433824501475E-10', u); + T('-1.475814', '-1.475814E0', u); + T('-0.5938633', '-5.938633E-1', u); + T('-0.0000000000000000000000000000001', '-1E-31', u); + T('-5261012744021996107539939108.077860134', '-5.261012744021996107539939108077860134E27', u); + T('-0.0000000000000000000000000000000000000000000048147761739', '-4.8147761739E-45', u); + T('-768545505862649955130.58486163645042434421335', '-7.6854550586264995513058486163645042434421335E20', u); + T('-8704255.29406077171056688276987554', '-8.70425529406077171056688276987554E6', u); + T('-0.00000000049', '-4.9E-10', u); + T('-0.0000274005502702', '-2.74005502702E-5', u); + T('0.0000000000000000000000000000899782060188', '8.99782060188E-29', u); + T('2665032804405760472644.6495163233309696', '2.6650328044057604726446495163233309696E21', u); + T('-0.000000000000000030326850268940214303', '-3.0326850268940214303E-17', u); + T('0.0000612367883', '6.12367883E-5', u); + T('303609712270628568267916524914027172014687335.2872885723795', '3.036097122706285682679165249140271720146873352872885723795E44', u); + T('0.000475307072678608341', '4.75307072678608341E-4', u); + T('-0.889983831753818831790592735', '-8.89983831753818831790592735E-1', u); + T('-0.00066889767092099512366082', '-6.6889767092099512366082E-4', u); + T('-82', '-8.2E1', u); + T('0.000000000000000021', '2.1E-17', u); + T('-0.000000000000000000000000000000000000000000000179184', '-1.79184E-46', u); + T('-0.00000153', '-1.53E-6', u); + T('1515.50800161303015840906362948489', '1.51550800161303015840906362948489E3', u); + T('-0.000000065937444987966499626906986814867840872', '-6.5937444987966499626906986814867840872E-8', u); + T('-8.9396126344740419192589432399447838129620466', '-8.9396126344740419192589432399447838129620466E0', u); + T('-14954.93625698463935831538650997', '-1.495493625698463935831538650997E4', u); + T('9174945', '9.174945E6', u); + T('0.000000000000000000000000000000002802944759681178397', '2.802944759681178397E-33', u); + T('-43661507562386856914454118482535735284321568.8260068', '-4.36615075623868569144541184825357352843215688260068E43', u); + T('-0.0000000000000053', '-5.3E-15', u); + T('0.000000000000000088261', '8.8261E-17', u); + T('-3.5', '-3.5E0', u); + T('-0.0000000892690903256739084318630208528', '-8.92690903256739084318630208528E-8', u); + T('-6407107615634731793662054.643592714114255633352022546773', '-6.407107615634731793662054643592714114255633352022546773E24', u); + T('0.000000000000008', '8E-15', u); + T('-4113623798185597530479042260306405.169879539509', '-4.113623798185597530479042260306405169879539509E33', u); + T('-0.0000000000000000000000005949543693626028147554', '-5.949543693626028147554E-25', u); + T('-16486202099937.552352885944', '-1.6486202099937552352885944E13', u); + T('6904428088990.55342459', '6.90442808899055342459E12', u); + T('-82273669444.3011132490462', '-8.22736694443011132490462E10', u); + T('-0.00000000000416644372132', '-4.16644372132E-12', u); + T('-0.051168126904004539033', '-5.1168126904004539033E-2', u); + T('-0.000034398785', '-3.4398785E-5', u); + T('-714608413034.632588711', '-7.14608413034632588711E11', u); + T('31.7594171820640021654374655039', '3.17594171820640021654374655039E1', u); + T('87.4', '8.74E1', u); + T('0.00000000000000000000000483', '4.83E-24', u); + T('24.61775061167239603598621023987484627713284203', '2.461775061167239603598621023987484627713284203E1', u); + T('-0.0000000000000000000000000000005620531', '-5.620531E-31', u); + T('36514.26972606881494', '3.651426972606881494E4', u); + T('-0.00000000000000000000000000000000000000804143880989122008869', '-8.04143880989122008869E-39', u); + T('-0.0000000000000000000000000000000000000736020246', '-7.36020246E-38', u); + T('-0.00000000000510047724869054', '-5.10047724869054E-12', u); + T('905030924720385935277.8553538426257506345310051398387757', '9.050309247203859352778553538426257506345310051398387757E20', u); + T('-9.18', '-9.18E0', u); + T('32679523370662392206339543790659744869129539414', '3.2679523370662392206339543790659744869129539414E46', u); + T('90.2504892', '9.02504892E1', u); + T('-0.0000000000000000000000050446054506203873', '-5.0446054506203873E-24', u); + T('136427761390644472964118311128712026.442', '1.36427761390644472964118311128712026442E35', u); + + assert('-1478635511205065720411441088234634087783353090531769.175603436034231639743395165930222246484607747' + + '0460440794925193040344223656739741115687100160257607638', new BigNumber('-1478635511205065720411441088234634087783' + + '353090531769.175603436034231639743395165930222246484607747046044079492519304034422365673974111568710016025760763' + + '83664408162624867351605015229777701990865326902932136430587015275752666401315258528531504569482239').toFixed(100)); + + BigNumber.config({ERRORS : true}); + + T('123.450', '12.345e1', new BigNumber('3')); + T('123.45', '12.345e1', null); + T('123.45', '12.345e1', u); + T('123', '12.345e1', 0); + T('123', '12.345e1', -0); + T('123', '12.345e1', '-0'); + T('123', '12.345e1', '-0.0000000'); + + assertException(function () {new BigNumber(1.23).toFixed(NaN)}, "(1.23).toFixed(NaN)"); + assertException(function () {new BigNumber(1.23).toFixed('NaN')}, "(1.23).toFixed('NaN')"); + assertException(function () {new BigNumber(1.23).toFixed([])}, "(1.23).toFixed([])"); + assertException(function () {new BigNumber(1.23).toFixed({})}, "(1.23).toFixed({})"); + assertException(function () {new BigNumber(1.23).toFixed('')}, "(1.23).toFixed('')"); + assertException(function () {new BigNumber(1.23).toFixed(' ')}, "(1.23).toFixed(' ')"); + assertException(function () {new BigNumber(1.23).toFixed('hello')}, "(1.23).toFixed('hello')"); + assertException(function () {new BigNumber(1.23).toFixed('\t')}, "(1.23).toFixed('\t')"); + assertException(function () {new BigNumber(1.23).toFixed(new Date)}, "(1.23).toFixed(new Date)"); + assertException(function () {new BigNumber(1.23).toFixed(new RegExp)}, "(1.23).toFixed(new RegExp)"); + assertException(function () {new BigNumber(1.23).toFixed(2.01)}, "(1.23).toFixed(2.01)"); + assertException(function () {new BigNumber(1.23).toFixed(10.5)}, "(1.23).toFixed(10.5)"); + assertException(function () {new BigNumber(1.23).toFixed('1.1e1')}, "(1.23).toFixed('1.1e1')"); + assertException(function () {new BigNumber(1.23).toFixed(true)}, "(1.23).toFixed(true)"); + assertException(function () {new BigNumber(1.23).toFixed(false)}, "(1.23).toFixed(false)"); + assertException(function () {new BigNumber(1.23).toFixed(function (){})}, "(1.23).toFixed(function (){})"); + + assertException(function () {new BigNumber('12.345e1').toFixed('-1')}, ".toFixed('-1')"); + assertException(function () {new BigNumber('12.345e1').toFixed(-23)}, ".toFixed(-23)"); + assertException(function () {new BigNumber('12.345e1').toFixed(1e9 + 1)}, ".toFixed(1e9 + 1)"); + assertException(function () {new BigNumber('12.345e1').toFixed(1e9 + 0.1)}, ".toFixed(1e9 + 1)"); + assertException(function () {new BigNumber('12.345e1').toFixed('-0.01')}, ".toFixed('-0.01')"); + assertException(function () {new BigNumber('12.345e1').toFixed('-1e-1')}, ".toFixed('-1e-1')"); + assertException(function () {new BigNumber('12.345e1').toFixed(Infinity)}, ".toFixed(Infinity)"); + assertException(function () {new BigNumber('12.345e1').toFixed('-Infinity')}, ".toFixed('-Infinity')"); + + BigNumber.config({ERRORS : false}); + + T('Infinity', Infinity, 0); + T('Infinity', Infinity, NaN); + T('Infinity', Infinity, null); + T('Infinity', Infinity, Infinity); + T('NaN', NaN, -Infinity); + + T('123.450', '12.345e1', new BigNumber(3)); + T('123.45', '12.345e1', null); + T('123.45', '12.345e1', u); + T('123.45', '12.345e1', NaN); + T('123.45', '12.345e1', 'NaN'); + T('123.45', '12.345e1', []); + T('123.45', '12.345e1', {}); + T('123.45', '12.345e1', ''); + T('123.45', '12.345e1', ' '); + T('123.45', '12.345e1', 'hello'); + T('123.45', '12.345e1', '\t'); + T('123.45', '12.345e1', new Date); + T('123.45', '12.345e1', new RegExp); + + T('123', '12.345e1', -0); + + T('123.4500000', '12.345e1', 7.5); + T('123.45000000000', '12.345e1', '1.1e1'); + + T('123.5', '12.345e1', 1); + T('123.45', '12.345e1', '-1'); + T('123.45', '12.345e1', -23); + T('123.45', '12.345e1', 1e9 + 1); + T('123.45', '12.345e1', 1e9 + 0.1); + T('123.45', '12.345e1', '-0.01'); + T('123.45', '12.345e1', '-1e-1'); + T('123.45', '12.345e1', Infinity); + T('123.45', '12.345e1', '-Infinity'); + + // ROUND_HALF_CEIL + // Rounds towards nearest neighbour. If equidistant, rounds towards Infinity + BigNumber.config({ERRORS : true, ROUNDING_MODE : 7}); + + T('0.1', '0.05', 1); + T('1', 0.5, 0); + T('1', 0.54, 0); + T('1', 0.55, 0); + T('1', 0.56, 0); + T('-1', -0.54, 0); + T('-0', -0.5, 0); // test no. 1307 + T('-1', -0.56, 0); + T('-0.5', -0.5, 1); + T('1.3', 1.25, 1); + T('-1.2', -1.25, 1); + T('234.2041', 234.20405, 4); + T('-234.2040', -234.20405, 4); + T('234.2041', '234.204050000000000000000000000000006', 4); + T('-234.2045', '-234.20449', 4); + T('-234.2041', '-234.204050000000000000000000000000006', 4); + T('999.0', 999, 1); + T('1000', 999.5, 0); + T('-999', -999.5, 0); + T('-999.5', -999.5, 1); + T('1.00000000000000000', '1.000000000000000000005', 17) + T('1.00000000000000000001', '1.000000000000000000005', 20) + T('-1.00000000000000000', '-1.000000000000000000005', 17) + T('-1.00000000000000000000', '-1.000000000000000000005', 20) + + // ROUND_HALF_FLOOR + // Rounds towards nearest neighbour. If equidistant, rounds towards -Infinity + BigNumber.config({ROUNDING_MODE : 8}); + + T('0.0', '0.05', '1'); + T('0', 0.5, '0'); + T('1', 0.54, '0'); + T('1', 0.55, '0'); + T('1', 0.56, '0'); + T('-1', -0.54, '0'); + T('-1', -0.5, '0'); + T('-1', -0.56, '0'); + T('-0.5', -0.5, '1'); + T('1.2', 1.25, '1'); + T('-1.3', -1.25, '1'); + T('234.2040', 234.20405, '4'); + T('-234.2041', -234.20405, '4'); + T('234.2040', '234.20404999999999999999999999999999', '4'); + T('234.2041', '234.204050000000000000000000000000006', '4'); + T('-234.2045', '-234.20449', '4'); + T('-234.2041', '-234.204050000000000000000000000000006', '4'); + T('999.0', 999, '1'); + T('999', 999.5, '0'); + T('-1000', -999.5, '0'); + T('-999.5', -999.5, '1'); + T('1.00000000000000000', '1.000000000000000000005', '17') + T('1.00000000000000000000', '1.000000000000000000005', '20') + T('-1.00000000000000000', '-1.000000000000000000005', '17') + T('-1.00000000000000000001', '-1.000000000000000000005', '20') + + BigNumber.config({ + DECIMAL_PLACES : 20, + ROUNDING_MODE : 4, + ERRORS : true, + RANGE : 1E9, + EXPONENTIAL_AT : 1E9 + }); + + log('\n ' + passed + ' of ' + total + ' tests passed in ' + (+new Date() - start) + ' ms \n'); + return [passed, total];; +})(this.BigNumber); +if (typeof module !== 'undefined' && module.exports) module.exports = count; \ No newline at end of file diff --git a/node_modules/mysql/node_modules/bignumber.js/test/toFraction.js b/node_modules/mysql/node_modules/bignumber.js/test/toFraction.js new file mode 100644 index 0000000..f05067d --- /dev/null +++ b/node_modules/mysql/node_modules/bignumber.js/test/toFraction.js @@ -0,0 +1,3037 @@ +var count = (function toFraction(BigNumber) { + var start = +new Date(), + log, + error, + u, + passed = 0, + total = 0; + + if (typeof window === 'undefined') { + log = console.log; + error = console.error; + } else { + log = function (str) { document.body.innerHTML += str.replace('\n', '
      ') }; + error = function (str) { document.body.innerHTML += '
      ' + + str.replace('\n', '
      ') + '
      ' }; + } + + if (!BigNumber && typeof require === 'function') BigNumber = require('../bignumber'); + + function assert(expected, actual) { + total++; + if (expected !== actual) { + error('\n Test number: ' + total + ' failed'); + error(' Expected: ' + expected); + error(' Actual: ' + actual); + //process.exit(); + } + else { + passed++; + //log('\n Expected and actual: ' + actual); + } + } + + function assertException(func, message) { + var actual; + total++; + try { + func(); + } catch (e) { + actual = e; + } + if (actual && actual.name == 'BigNumber Error') { + passed++; + //log('\n Expected and actual: ' + actual); + } else { + error('\n Test number: ' + total + ' failed'); + error('\n Expected: ' + message + ' to raise a BigNumber Error.'); + error(' Actual: ' + (actual || 'no exception')); + //process.exit(); + } + } + + function T(expected, value, maxDenominator){ + assert(expected, new BigNumber(value).toFraction(maxDenominator).toString()); + } + + log('\n Testing toFraction...'); + + BigNumber.config({ + DECIMAL_PLACES : 20, + ROUNDING_MODE : 4, + ERRORS : true, + RANGE : 1E9, + EXPONENTIAL_AT : 1E9 + }); + + // Tests generated using Python's fraction module. + + T('1,10', '0.1', u); + T('-1,10', '-0.1', u); + T('1,100', '0.01', u); + T('-1,100', '-0.01', u); + T('1,1000', '0.001', u); + T('-1,1000', '-0.001', u); + T('54301793,100000', '543.017930', u); + T('-484693350148251574449,1000000000000', '-484693350.1482515744490', u); + T('-200111074540568980159529,25000000000000', '-8004442981.622759206381160', u); + T('-5965700213104829,1000000000000000', '-5.965700213104829', u); + T('-5124110209739113904928179,100000000000000', '-51241102097.39113904928179', u); + T('-1655017182533520595664837541,200000000000000', '-8275085912667.602978324187705', u); + T('-5,8', '-0.625', u); + T('-42394617,200000000', '-0.211973085', u); + T('-147453708173963291829,2500000000000000000', '-58.9814832695853167316', u); + T('-2733,100', '-27.33', u); + T('0,1', '0.0', u); + T('-2599897551866392365731491641,10000000000', '-259989755186639236.5731491641', u); + T('-9326331230765073371,5000000000000000', '-1865.2662461530146742', u); + T('-2483061,10000', '-248.3061', u); + T('-92864854181,10000000', '-9286.4854181', u); + T('-758516850228215193,100000000000000000', '-7.5851685022821519300', u); + T('0,1', '0.0', u); + T('-19570408085559589,20000000000', '-978520.404277979450', u); + T('-211,100', '-2.11', u); + T('-4789334439841,10000000000', '-478.9334439841', u); + T('2978320663077,10000000000000', '0.2978320663077', u); + T('-1221,25', '-48.84', u); + T('12456254053601331,5000000000000', '2491.25081072026620', u); + T('31969983,100000', '319.69983', u); + T('31852901149,400000000000', '0.0796322528725', u); + T('-456674099059,10000000000', '-45.6674099059', u); + T('-361907787,5000000', '-72.3815574', u); + T('-6521,100', '-65.21', u); + T('-11438080592941644302261353,10000000000000', '-1143808059294.1644302261353', u); + T('670431292887199,100000000000000', '6.70431292887199', u); + T('0,1', '0.0', u); + T('-12179876267417657784053129,390625000000', '-31180483244589.20392717601024', u); + T('-883842861294459426792636233,1250000000000000', '-707074289035.5675414341089864', u); + T('93,100', '0.93', u); + T('-4013,250', '-16.052', u); + T('-1813352184996169886155932687,10000000000000', '-181335218499616.9886155932687', u); + T('-79491022129556305898477,25000000000000', '-3179640885.18225223593908', u); + T('-6955532202842357103065812079,100000000000', '-69555322028423571.03065812079', u); + T('1,2', '0.5', u); + T('117679941425840963432274357541,6250000000000000', '18828790628134.55414916389720656', u); + T('-44419548531115044568503,5000000000000000000', '-8883.9097062230089137006', u); + T('-48,25', '-1.92', u); + T('3026554851926703631,10000000000000000000', '0.3026554851926703631', u); + T('-27597130550621,10000000', '-2759713.0550621', u); + T('-80047992603251,50000000000000', '-1.60095985206502', u); + T('-77860395508386749,1000000000000', '-77860.395508386749', u); + T('48601655379903990436811,10000000000000000', '4860165.5379903990436811', u); + T('310385178311182627346467559,100000000000000', '3103851783111.82627346467559', u); + T('-1866981502342301,5000000000000', '-373.3963004684602', u); + T('-263843686400376847,1000000000', '-263843686.4003768470', u); + T('2124759225302861,2500000000000000', '0.84990369012114440', u); + T('-664881551,125000', '-5319.052408', u); + T('-15340092011,500000000', '-30.6801840220', u); + T('-579129,1000', '-579.129', u); + T('31618159823455571971,6250000000000', '5058905.57175289151536', u); + T('-84886224665539,2500000000000', '-33.9544898662156', u); + T('-912648758578220220986367,1250000000000000000', '-730119.0068625761767890936', u); + T('-62977599666149191581,10000000000', '-6297759966.6149191581', u); + T('-5497168411400642219272521,100000000000000000', '-54971684.11400642219272521', u); + T('-5616409194059,1000000000', '-5616.409194059', u); + T('-283871646617001,1000000000', '-283871.646617001', u); + T('-485222200141938641,100000000000000000', '-4.85222200141938641', u); + T('-13782530592809417884043,2500000000000000000', '-5513.0122371237671536172', u); + T('-386323443,1250000000', '-0.3090587544', u); + T('-38961,1000', '-38.961', u); + T('21551091008117488357,2500000000000000000', '8.62043640324699534280', u); + T('173,100', '1.730', u); + T('5333399,6250000', '0.85334384', u); + T('-229251439697497,62500000000', '-3668.0230351599520', u); + T('-212582095021077222386880441,100000000000000000000', '-2125820.95021077222386880441', u); + T('-4509791479,500000', '-9019.582958', u); + T('-7,10', '-0.7', u); + T('171494582705307,50000000000', '3429.89165410614', u); + T('0,1', '0.0', u); + T('-116465991083,5000000', '-23293.19821660', u); + T('-123982957,1250000', '-99.1863656', u); + T('-11006669641979567,2000000000000', '-5503.3348209897835', u); + T('-2313,1000', '-2.313', u); + T('15409800999774967,10000000000000000', '1.5409800999774967', u); + T('-6614709,25000000', '-0.26458836', u); + T('0,1', '0.0', u); + T('-200386023,2500000', '-80.1544092', u); + T('-364278093789203,1000000000000', '-364.278093789203', u); + T('68468339471261366060229,1000000000000000000', '68468.339471261366060229', u); + T('-470519242528519,500000000', '-941038.485057038', u); + T('11,2', '5.5', u); + T('-9976509289,10000000', '-997.6509289', u); + T('0,1', '0.0', u); + T('-6916459729727082955260053,1000000000000000000', '-6916459.729727082955260053', u); + T('-140541,16000', '-8.7838125', u); + T('-49,5', '-9.8', u); + T('-47,50', '-0.94', u); + T('272783,100000', '2.72783', u); + T('4116487650822625882405778003,50000000000000000000', '82329753.01645251764811556006', u); + T('2919425337211,250000000000', '11.677701348844', u); + T('-4159828773,1250000', '-3327.8630184', u); + T('-79717565915722094623,10000000000000', '-7971756.5915722094623', u); + T('-317320236283,500000000', '-634.640472566', u); + T('-14147732160552271137,2500000000000000000', '-5.6590928642209084548', u); + T('-12059857,250000', '-48.239428', u); + T('681420956722259461,12500000000', '54513676.53778075688', u); + T('17774376511238461243,200000000000000', '88871.882556192306215', u); + T('4678001741059099871336323918049287,50000000000000000000', '93560034821181.99742672647836098574', u); + T('0,1', '0.0', u); + T('-7,10', '-0.7', u); + T('-23351644276078989,25000000000000', '-934.06577104315956', u); + T('-1765063,200000', '-8.825315', u); + T('16389704981,5000000000', '3.2779409962', u); + T('18121833053827129891,2000000000000', '9060916.526913564945500', u); + T('-2523281598830311,10000000000', '-252328.1598830311', u); + T('994977441308813,250000000', '3979909.765235252', u); + T('-50961713844809094829,5000000000000000', '-10192.3427689618189658', u); + T('-123997423829,20000000', '-6199.87119145', u); + T('-549246278950790194833129957,625000000000000', '-878794046321.2643117330079312', u); + T('-21647408712889002435857,200000000000000', '-108237043.564445012179285', u); + T('-2820570956057812319823086593,1000000000000000', '-2820570956057.812319823086593', u); + T('-110806033317345864067,20000000000000000', '-5540.30166586729320335', u); + T('-8353311,10000000', '-0.8353311', u); + T('-1357114760839431,200000000', '-6785573.804197155', u); + T('209320962852697355183332757976049,625000000000000000', '334913540564315.76829333241276167840', u); + T('0,1', '0.0', u); + T('-87920815397,10000000', '-8792.0815397', u); + T('42482569836133,1000000000000', '42.482569836133', u); + T('0,1', '0.0', u); + T('-29518137461,1000000000', '-29.518137461', u); + T('5192895093,100000', '51928.95093', u); + T('-40587909849427164111,1000000000000000', '-40587.909849427164111', u); + T('824746069,10000000', '82.4746069', u); + T('-245537748603430439,400000000000', '-613844.3715085760975', u); + T('-717771547151675126007258009,1250000000000000', '-574217237721.3401008058064072', u); + T('-532430787549785291,12500000000', '-42594463.00398282328', u); + T('-44797367524497867,5000000000000000', '-8.9594735048995734', u); + T('-468580303722092912184256627,2000000000000000000', '-234290151.8610464560921283135', u); + T('5657719391,1000000000', '5.657719391', u); + T('14090298821989,50000000', '281805.97643978', u); + T('-80762928268461244253,10000000000000000000', '-8.0762928268461244253', u); + T('3,5', '0.6', u); + T('-92113139197545733,10000000000000', '-9211.3139197545733', u); + T('-1556299,10000000', '-0.1556299', u); + T('2418948368754047020942979,250000000000000', '9675793475.0161880837719160', u); + T('19652697,62500', '314.443152', u); + T('-87839127276245656603537,125000000000000', '-702713018.209965252828296', u); + T('-14005169230761299788063,20000000000000', '-700258461.53806498940315', u); + T('-279,40', '-6.975', u); + T('0,1', '0.0', u); + T('-1806754525468682323,100000000000000', '-18067.54525468682323', u); + T('247972458841,10000000000', '24.7972458841', u); + T('451607951414070493,500000000000000', '903.215902828140986', u); + T('281482401773084158055523,50000000000000000000', '5629.64803546168316111046', u); + T('33,10', '3.3', u); + T('-290099,62500', '-4.641584', u); + T('-899598441,1000000', '-899.598441', u); + T('193325773941340501463237,100000000000000', '1933257739.41340501463237', u); + T('27357881161156398470035203,500000000000000000', '54715762.322312796940070406', u); + T('7215187086319853416331,100000000000000000', '72151.87086319853416331', u); + T('-823577,125000', '-6.588616', u); + T('-127409327138611,312500000000000', '-0.4077098468435552', u); + T('-142974608134492239968107843,1000000000', '-142974608134492239.9681078430', u); + T('-4537660598987301975574620667,10000000000000', '-453766059898730.1975574620667', u); + T('-18374189280291,5000000', '-3674837.8560582', u); + T('-4597156458983,250000000', '-18388.625835932', u); + T('-71670733247098307,1250000000000000', '-57.3365865976786456', u); + T('1987,2500', '0.7948', u); + T('0,1', '0.0', u); + T('-6097315591260183077181430951,100000000000000000', '-60973155912.60183077181430951', u); + T('30252232444541,100000000000', '302.52232444541', u); + T('-980689,125000', '-7.845512', u); + T('-535844087,1000000', '-535.844087', u); + T('-193035003,20000', '-9651.75015', u); + T('-1007194349453595010508023,6250000000000000000', '-161151.09591257520168128368', u); + T('-3658094692361441,200000000', '-18290473.461807205', u); + T('-719,100', '-7.19', u); + T('-958804210658146103495976847,20000000000000', '-47940210532907.30517479884235', u); + T('-89094216351,1000000', '-89094.216351', u); + T('-3582499868182265571,100000000000000000', '-35.82499868182265571', u); + T('2067,10000', '0.2067', u); + T('-9433,100', '-94.33', u); + T('-217068626544319,10000000000000', '-21.7068626544319', u); + T('37585828244413865266713,4000000000000', '9396457061.10346631667825', u); + T('-91498021630276586782019,25000000000000', '-3659920865.21106347128076', u); + T('-3836906826908540628227081,2000000000000', '-1918453413454.2703141135405', u); + T('-4353266163985119533,200000000000000', '-21766.330819925597665', u); + T('-9383241486201,25000000', '-375329.65944804', u); + T('0,1', '0.0', u); + T('-341601768966781,5000000000', '-68320.3537933562', u); + T('-1567555398070069,2500000000', '-627022.1592280276', u); + T('-33306019510179,100000000', '-333060.19510179', u); + T('-4863716727376251454133,1000000000000', '-4863716727.376251454133', u); + T('-574277977,100000000', '-5.74277977', u); + T('5350626629797780458100053761,1000000000000000000', '5350626629.797780458100053761', u); + T('-7636341311139689,1000000000', '-7636341.311139689', u); + T('-235940193945989693,100000000000', '-2359401.93945989693', u); + T('-6648926524329262739,1000000000000000', '-6648.926524329262739', u); + T('53408696765404895507753,100000000000000000000', '534.08696765404895507753', u); + T('-608550193099791,1000000000000000', '-0.608550193099791', u); + T('23166918429420757228938433,2500000000000000', '9266767371.76830289157537320', u); + T('8273,20', '413.650', u); + T('227757,5000', '45.5514', u); + T('348417664650569,100000000000', '3484.17664650569', u); + T('53142735643470026332735643192361,10000000000000000000', '5314273564347.0026332735643192361', u); + T('-89788064954218810252057051,100000000000000', '-897880649542.18810252057051', u); + T('-1306089141,250000000', '-5.224356564', u); + T('-45086702607022861843,1250000000000', '-36069362.0856182894744000', u); + T('-377,50', '-7.540', u); + T('-258447712404123545579762063,20000000000', '-12922385620206177.27898810315', u); + T('-628719551197,10000000', '-62871.9551197', u); + T('60612440731,312500', '193959.8103392', u); + T('-1597151323402131,50000000000', '-31943.026468042620', u); + T('-115594971935575014446009257,4000000000000000', '-28898742983.89375361150231425', u); + T('1,10', '0.1', u); + T('-18621,250', '-74.484', u); + T('-637961611566238281399,500000000000000000', '-1275.923223132476562798', u); + T('-584061819097005054409,100000000000000000', '-5840.618190970050544090', u); + T('-18813090881,200000000', '-94.065454405', u); + T('303,250', '1.212', u); + T('448557308974238577920704115565781,10000000000000000000', '44855730897423.85779207041155657810', u); + T('-1193270826256326041220780273,500000000', '-2386541652512652082.441560546', u); + T('-896023,2000000', '-0.4480115', u); + T('-41206366129433,10000000000', '-4120.6366129433', u); + T('-17988697610527989991481961,500000000000000', '-35977395221.055979982963922', u); + T('-1817173764903,10000000', '-181717.37649030', u); + T('-3,10', '-0.3', u); + T('-92549,1000', '-92.549', u); + T('-279096500654837006467612407,50000000000000000000', '-5581930.01309674012935224814', u); + T('-259968688776686799,500000000', '-519937377.553373598', u); + T('-5,2', '-2.5', u); + T('-3917,50', '-78.34', u); + T('0,1', '0.0', u); + T('-75607642540312935927,10000000000000000', '-7560.76425403129359270', u); + T('-2176542221453118621443981521,500000000000000000', '-4353084442.906237242887963042', u); + T('-5648864378490501415429342121,100000000000000000', '-56488643784.90501415429342121', u); + T('-76539862671139,1000000000', '-76539.862671139', u); + T('141796873549,500000', '283593.747098', u); + T('-948224946050543083414093,1250000000000', '-758579956840.4344667312744', u); + T('-2205228733,500000', '-4410.457466', u); + T('25694008107,1000000', '25694.008107', u); + T('-196113,2000', '-98.0565', u); + T('-66885450169789234267297,1000000000000', '-66885450169.789234267297', u); + T('-48529788189,500000', '-97059.576378', u); + T('-324221069,10000000', '-32.4221069', u); + T('-116146483434824230068673,50000000000000000000', '-2322.92966869648460137346', u); + T('-4051770395293,62500000', '-64828.326324688', u); + T('-83031469,100000000', '-0.830314690', u); + T('-28756998587475224546963,50000000000000000', '-575139.97174950449093926', u); + T('-1799450063972413799,10000000000', '-179945006.3972413799', u); + T('9167099921651200679035713391,1000000000000000', '9167099921651.20067903571339100', u); + T('1451,25', '58.04', u); + T('8253,200', '41.265', u); + T('12869,2500', '5.1476', u); + T('13856945667,1000000000', '13.856945667', u); + T('-43346967,100000000', '-0.43346967', u); + T('-3588675849064697,5000000000', '-717735.1698129394', u); + T('-940992729300541871141570909,2000000000000000000', '-470496364.6502709355707854545', u); + T('-956832531182962661827,2500000000000', '-382733012.4731850647308', u); + T('-152399,500', '-304.798', u); + T('-178527,10000', '-17.8527', u); + T('-342133,1000', '-342.133', u); + T('57078299482481,1000000', '57078299.48248100', u); + T('-79,10', '-7.9', u); + T('4747223909107687084386231,5000000000000000', '949444781.8215374168772462', u); + T('1731900848696547452986210971,5000000000000000', '346380169739.3094905972421942', u); + T('122108665581,500000000000', '0.244217331162', u); + T('-16865419490082861973881,200000000000', '-84327097450.414309869405', u); + T('213918705805395433,2500000000000', '85567.4823221581732', u); + T('-3281991687080891663567529581,1000000000000000', '-3281991687080.891663567529581', u); + T('-9341191082726085332133,500000000000000000', '-18682.382165452170664266', u); + T('-101666590217047,10000000000000', '-10.1666590217047', u); + T('-78831482291567,1000000000000', '-78.8314822915670', u); + T('0,1', '0.0', u); + T('188098837362734027,50000000000000', '3761.97674725468054', u); + T('7446591289029764406983,1000000000000', '7446591289.029764406983', u); + T('0,1', '0.0', u); + T('-237495928119,50000000000', '-4.74991856238', u); + T('-5470021580414601267,62500000000', '-87520345.286633620272', u); + T('20893480589331570804768497,100000000000000', '208934805893.3157080476849700', u); + T('-427402721,10000', '-42740.27210', u); + T('-418854065753,5000000', '-83770.81315060', u); + T('41378721951369,5000000000', '8275.7443902738', u); + T('11188608560931794787022677022582217,2000000000000000000', '5594304280465897.3935113385112911085', u); + T('-46338373,50000', '-926.76746', u); + T('-4074951117564368871187,100000000000000000', '-40749.51117564368871187', u); + T('-1707089291648182063827,100000000000', '-17070892916.48182063827', u); + T('-295010270384580559,100000000000000000', '-2.95010270384580559', u); + T('475514217,12500000', '38.04113736', u); + T('-456027,5000', '-91.2054', u); + T('-7485101,5000000', '-1.4970202', u); + T('-15596055181,100000000', '-155.96055181', u); + T('-5451370075707939,12500000000000000', '-0.436109606056635120', u); + T('0,1', '0.0', u); + T('-6218012505973,2500000', '-2487205.0023892', u); + T('92703,1000', '92.703', u); + T('-58672783,62500000', '-0.938764528', u); + T('26951106753311882431,1250000000000', '21560885.4026495059448', u); + T('0,1', '0.0', u); + T('72561,25000', '2.90244', u); + T('-370800597281,500000000', '-741.601194562', u); + T('161529914311,2000000000', '80.7649571555', u); + T('0,1', '0.0', u); + T('-7921733,1000000', '-7.921733', u); + T('-108370284181334449019037137,1562500000000', '-69356981876054.04737218376768', u); + T('-988987,1250', '-791.1896', u); + T('-22885050541036899,2500000000000000', '-9.1540202164147596', u); + T('-12248601426509,100000000', '-122486.01426509', u); + T('-53006782802519,7812500000', '-6784.868198722432', u); + T('-4098212714968971,1000000000000', '-4098.212714968971', u); + T('-916,25', '-36.64', u); + T('-1849979811,10000000000', '-0.18499798110', u); + T('-1163263320065980213721068337,250000000000000000', '-4653053280.263920854884273348', u); + T('-63,100', '-0.63', u); + T('-74849063976673,10000000000000', '-7.4849063976673', u); + T('-2627,50', '-52.54', u); + T('-76247965138404535127,50000000000', '-1524959302.76809070254', u); + T('-3226091329574799,5000000000000000', '-0.6452182659149598', u); + T('-4774481559,625000000', '-7.6391704944', u); + T('-3932199215959,10000000', '-393219.9215959', u); + T('-6463072565956442868764219,10000000000000', '-646307256595.6442868764219', u); + T('-1852637393024464507520764889,5000000000', '-370527478604892901.5041529778', u); + T('3118876937753549,20000000', '155943846.887677450', u); + T('-8469141306546569061,10000000000', '-846914130.6546569061', u); + T('9573949,2500000', '3.8295796', u); + T('54039659558876732100021006177771,10000000000000000000', '5403965955887.6732100021006177771', u); + T('886406857838383,100000000', '8864068.57838383', u); + T('-64180091,100000000', '-0.64180091', u); + T('-6864846571598899651,20000000000000', '-343242.32857994498255', u); + T('-2493931443,1000000', '-2493.931443', u); + T('31828328526786083786647,500000000000000', '63656657.053572167573294', u); + T('-3445415293,1000000', '-3445.415293', u); + T('-5024242230618045468013,10000000000000000000', '-502.4242230618045468013', u); + T('-9,5', '-1.8', u); + T('8099,25000', '0.32396', u); + T('-2055329312700326377528694739,500000000000', '-4110658625400652.755057389478', u); + T('-30505199589,100000000', '-305.05199589', u); + T('-1490759877124225470407,1000000000000', '-1490759877.124225470407', u); + T('-4618629729980580667366682107,10000000000000', '-461862972998058.0667366682107', u); + T('-1130319192716875137,625000000000', '-1808510.7083470002192', u); + T('-1691412373887639934138807167,5000000000000000', '-338282474777.5279868277614334', u); + T('-298703448990358147,2000000000000000000', '-0.1493517244951790735', u); + T('-33,10', '-3.3', u); + T('33370280255133778539,1000000000000000', '33370.280255133778539', u); + T('-4702252998317805383728740913,100000000000', '-47022529983178053.83728740913', u); + T('-6351,1000', '-6.351', u); + T('-8284856781150816282422064531,100000000000000', '-82848567811508.16282422064531', u); + T('-62846620813,12500000', '-5027.729665040', u); + T('92502823,50000', '1850.05646', u); + T('171431071233669112837,50000000000', '3428621424.673382256740', u); + T('-79113158708464277609,1000000000000000', '-79113.158708464277609', u); + T('-3588793696497311131,500000000000', '-7177587.3929946222620', u); + T('624073,1000', '624.0730', u); + T('-2911659018203,50000000', '-58233.18036406', u); + T('-69,100', '-0.69', u); + T('375641,10000', '37.5641', u); + T('2578379695534414471,2000000000000000', '1289.1898477672072355', u); + T('57798423261,20000000000', '2.88992116305', u); + T('-96869430091,250000000000', '-0.387477720364', u); + T('-54859400821,10000000', '-5485.9400821', u); + T('-38775303,50000000', '-0.77550606', u); + T('-460471243144930261,1250000000000000', '-368.3769945159442088', u); + T('-3335175516487387,10000000000000000', '-0.33351755164873870', u); + T('-174667238638380908738985811,20000000000000', '-8733361931919.04543694929055', u); + T('828129,1000', '828.129', u); + T('-117136909799345874651365657,2500000000000000000', '-46854763.9197383498605462628', u); + T('1779595760369,2500000', '711838.3041476', u); + T('-142341250379,250000000', '-569.365001516', u); + T('986200911,2500000000', '0.3944803644', u); + T('-182333559482602851520637,2000000000000', '-91166779741.3014257603185', u); + T('-60885611373,10000000000', '-6.0885611373', u); + T('-741206875556328299282294609,10000000000000000000', '-74120687.55563282992822946090', u); + T('1156674883,12500', '92533.99064', u); + T('-3627419,10000', '-362.7419', u); + T('-733771061870739,1250000000000000', '-0.5870168494965912', u); + T('-61116071,1000000000', '-0.061116071', u); + T('354993212041625507168357968471,5000000000000000000', '70998642408.3251014336715936942', u); + T('-34655833652810542670257,4000000000000000000', '-8663.95841320263566756425', u); + T('7,10', '0.7', u); + T('-47990699,100000', '-479.90699', u); + T('-3488630351881,5000000', '-697726.0703762', u); + T('123501469355491081,125000000', '988011754.843928648', u); + T('-3,5', '-0.60', u); + T('-605101,20000', '-30.25505', u); + T('-13853,5000', '-2.7706', u); + T('-251,125', '-2.008', u); + T('-332431900771,10000000', '-33243.190077100', u); + T('-83457932143284973896761,125000000000000000', '-667663.457146279791174088', u); + T('-1599464683,1000000', '-1599.464683', u); + T('107247619602970114431,125000000000', '857980956.8237609154480', u); + T('106276234212253,200000000000', '531.381171061265', u); + T('-78321709403185426102854771,100000000000000', '-783217094031.85426102854771', u); + T('-1382454139,1000000', '-1382.454139', u); + T('-22,5', '-4.4', u); + T('-1551647648312410077781031687,100000000000000000000', '-15516476.48312410077781031687', u); + T('-7,10', '-0.7', u); + T('7610856965538431,1250000000', '6088685.5724307448', u); + T('-8644394501214748574126749,1000000000000000', '-8644394501.214748574126749', u); + T('-935485113175581,25000000000000', '-37.419404527023240', u); + T('-1319,10000', '-0.1319', u); + T('-47315292288529,5000000000', '-9463.05845770580', u); + T('-111004268629921001873757,500000000000000', '-222008537.259842003747514', u); + T('-13,25', '-0.52', u); + T('197308716353,200000000000', '0.986543581765', u); + T('-21514078956751937905331,2000000000000000000', '-10757.0394783759689526655', u); + T('-56583509,100000', '-565.83509', u); + T('-310660495303969,5000000', '-62132099.06079380', u); + T('-4588911263109638518958719353,500000000000000', '-9177822526219.277037917438706', u); + T('638787883838178844837013,10000000000000', '63878788383.81788448370130', u); + T('-90023153,125000', '-720.1852240', u); + T('-24719448065802851827137557,10000000000000000000', '-2471944.8065802851827137557', u); + T('-1692163664077,5000000000', '-338.43273281540', u); + T('-3,10', '-0.3', u); + T('-37969027,10000000', '-3.7969027', u); + T('0,1', '0.0', u); + T('-729239769116052893303137,1000000000000', '-729239769116.052893303137', u); + T('-248567011649,5000000', '-49713.4023298', u); + T('0,1', '0.0', u); + T('33976492623521690540454280357369,10000000000000000000', '3397649262352.16905404542803573690', u); + T('-324129431756502447158554419,500000000', '-648258863513004894.3171088380', u); + T('-185535293743,250000', '-742141.174972', u); + T('-9511387,10000', '-951.1387', u); + T('-48277609,10000', '-4827.76090', u); + T('-5305507073516086201,1000000000', '-5305507073.5160862010', u); + T('4220388699670847,5000000000', '844077.73993416940', u); + T('-65603972997,10000000000', '-6.5603972997', u); + T('26,5', '5.2', u); + T('-499,1000', '-0.499', u); + T('-997797821500381,12500000000', '-79823.82572003048', u); + T('-35613001,50000000', '-0.71226002', u); + T('-34818109982526308537,100000000000000', '-348181.09982526308537', u); + T('-7249385948502190907,5000000000000000', '-1449.87718970043818140', u); + T('-4,5', '-0.8', u); + T('27901580717,1000000', '27901.580717', u); + T('-37138444464274424296356197,100000000000000000', '-371384444.64274424296356197', u); + T('-24952519,10000000', '-2.4952519', u); + T('-1183871,10000', '-118.3871', u); + T('-323836725046470278148447,100000000000000000', '-3238367.25046470278148447', u); + T('-458296522853,1000000', '-458296.522853', u); + T('-9896488459499919018798992969,10000000000000000', '-989648845949.9919018798992969', u); + T('-800498844471573993218284031,100000000000000000000', '-8004988.44471573993218284031', u); + T('19,100', '0.19', u); + T('-8819541616157661,1250000000000000', '-7.0556332929261288', u); + T('2464295177881259,100000000', '24642951.77881259', u); + T('-240160051143,25000000', '-9606.40204572', u); + T('-27,50', '-0.54', u); + T('-670912890009,500000000000', '-1.341825780018', u); + T('-41735377076387,100000000000', '-417.35377076387', u); + T('-18351814413232593,25000000000', '-734072.57652930372', u); + T('-1,10', '-0.1', u); + T('-120533530679991899967,50000000000000', '-2410670.61359983799934', u); + T('-341521322123,1000000', '-341521.322123', u); + T('4469363,5000000', '0.8938726', u); + T('-2300185559,500000', '-4600.371118', u); + T('-9,5', '-1.8', u); + T('-19061913987,312500000', '-60.9981247584', u); + T('216663475511333,1000000000', '216663.475511333', u); + T('-1659477,100000', '-16.59477', u); + T('-989884121025000977,200000000000', '-4949420.60512500488500', u); + T('-1913,100', '-19.13', u); + T('-425227820481,100000000000', '-4.25227820481', u); + T('-8376041,1000000', '-8.376041', u); + T('-2990304956561539891971,50000000000', '-59806099131.23079783942', u); + T('0,1', '0.0', u); + T('-46410885173793408759388939,500000000000000', '-92821770347.586817518777878', u); + T('-9499781269249,100000000', '-94997.81269249', u); + T('-1597534101,25000', '-63901.36404', u); + T('811,100', '8.11', u); + T('-4789,400000', '-0.0119725', u); + T('4757,50', '95.14', u); + T('-733,100', '-7.330', u); + T('-2546590947,5000000000', '-0.5093181894', u); + T('-79318790998372451,10000000000', '-7931879.0998372451', u); + T('-97970835166736806859507401,12500000000', '-7837666813338944.548760592080', u); + T('-729119841,1000000', '-729.119841', u); + T('-4324730954076108671,5000000000', '-864946190.8152217342', u); + T('-17759,20000', '-0.88795', u); + T('223387,500000', '0.446774', u); + T('-3495739634217069,1000000000000000', '-3.495739634217069', u); + T('2080645759193349226042432238271,25000000000000000', '83225830367733.96904169728953084', u); + T('-567002479,125000000', '-4.536019832', u); + T('-3271614601090267536275654641,500000000000', '-6543229202180535.072551309282', u); + T('-554616993923712942818718997,20000000000000000', '-27730849696.18564714093594985', u); + T('-112053,250', '-448.212', u); + T('-607248757361461263304116301,2500000000', '-242899502944584505.3216465204', u); + T('-18331,50', '-366.620', u); + T('-24317134245313276003253,250000000000000', '-97268536.981253104013012', u); + T('-1061159932891264014512925703,20000000000000', '-53057996644563.20072564628515', u); + T('36731261,12500000', '2.93850088', u); + T('318736713583604277266673749,5000000000000000000', '63747342.7167208554533347498', u); + T('-74227605737234405747389,100000000000', '-742276057372.344057473890', u); + T('0,1', '0.0', u); + T('-102451481711,250000000000', '-0.4098059268440', u); + T('3368162492642619086982967909376363443,10000000000000000000', '336816249264261908.6982967909376363443', u); + T('-17663710859989775919,1000000000000000000', '-17.663710859989775919', u); + T('-49264796837,10000000000', '-4.9264796837', u); + T('1381043641897743,500000000000', '2762.087283795486', u); + T('-9849,10000', '-0.9849', u); + T('-77,500', '-0.154', u); + T('-264191,6250', '-42.27056', u); + T('-8027691,100000', '-80.27691', u); + T('-18434760024216076621,25000000000', '-737390400.96864306484', u); + T('-535677556431210667261,1000000000000000', '-535677.556431210667261', u); + T('-8080033681,10000000', '-808.0033681', u); + T('-2793157211,250000', '-11172.628844', u); + + T('5,1', '5.1582612935891', '3'); + T('14645,1797', '8.14969395596340', '4682'); + T('350921,81990', '4.28004634702', '82418'); + T('923754598113149102531799372705758450549,100000000', '9237545981131491025317993727057.58450549'); + T('23665467152910525354658972818814752082,49447', '478602688796297558085606261629921.9787246948249979233505266225354557384', '57466'); + T('12401124714135748113774134798397,2', '6200562357067874056887067399198.66971421701', '2'); + T('5747456325233732815460960864983211610837351385715799969377,100000000000000000000000000000', '57474563252337328154609608649.83211610837351385715799969377'); + T('4744,61', '77.7705294446793765233206385561288346447', '86'); + T('230406626515463254737498487452583023685806305331639,100000000000000000000000000', '2304066265154632547374984.87452583023685806305331639'); + T('8452816572418429518944119647,5000', '1690563314483685903788823.9294'); + T('48239499471878294436129777581,10000000000000000', '4823949947187.82944361297775810'); + T('45172634468362586403517152343110493066053,74300', '607976237797612199239800166125309462.530995962577562', '89241'); + T('245629009658126699398365025147112883705717,1250000000000000000000000000000', '196503207726.5013595186920201176903069645736'); + T('19575206081236584421562241755643406299,500000000000000000000000000000000000', '39.150412162473168843124483511286812598'); + T('124335953351113119989680198250484096210027176457861877,20000000000000000000000', '6216797667555655999484009912524.20481050135882289309385'); + T('62359286968916651021817694022163661098254437249041482587,100000000000000000000000000', '623592869689166510218176940221.63661098254437249041482587'); + T('1406253392003122107350210973,50', '28125067840062442147004219.46', '90'); + T('736337826,1', '736337826.0', '1'); + T('2294354321,3019', '759971.62007285863174441704674479534091075', '5946'); + T('342555042697121035185957633789368546657896318423873,50000000000000000000000000', '6851100853942420703719152.67578737093315792636847746'); + T('3511582655801640591,52', '67530435688493088.2885316751682999639624370547426320', '73'); + T('697806103903081,1', '697806103903081.3297023089715266281593302923590', '1'); + T('504239849856718524776121635107896338763895,26083', '19332126283660565302155489595057943440.70448184108567544983900489517214731', '26482'); + T('3513961,10', '351396.0988885676988110229927700324193', '11'); + T('1514998954038665195379885,15263', '99259578984384799540.056673', '55079'); + T('1190687310674838338273481559,50000', '23813746213496766765469.63118'); + T('31747884008318370382077439489,40', '793697100207959259551935987.225181146039', '45'); + T('39451289109544785156061546711681,59993', '657598204949657212609163514.271348320970259397527780637349273932', '61325'); + T('3859539118592118171061,65', '59377524901417202631.7076617756627530296590420377861', '248'); + T('2529860848590369124121129138,36761', '68819152052184900414056.449443703377131320899467509', '59208'); + T('17331073,2', '8665536.3781112033855216846406980971689', '2'); + T('11088761069693879,25000', '443550442787.75516'); + T('37298162459148947522489,474', '78688106453900733169.80801275320205353359142143262532', '517'); + T('12411782390212011049587005051032466579057,100000000000000000000000000000000000000', '124.11782390212011049587005051032466579057'); + T('288377889236302421024476469650301879883847,50000000000000000000000', '5767557784726048420.48952939300603759767694'); + T('64269805556832147,1', '64269805556832146.8921574533060466484388410550211', '2'); + T('1019428223041680221,2', '509714111520840110.44623631764611004359625363775303233110', '2'); + T('15446409508173177876456900755482517,250000', '61785638032692711505827603021.9300680'); + T('794012664285496747924956753856029102507539,10000000', '79401266428549674792495675385602910.2507539'); + T('1254937597799095507639361,5', '250987519559819101527872.2'); + T('6200289913593672418541428454415821,29', '213803100468747324777290636359166.2447131068603257501', '29'); + T('28363420172665408049802993720278,1', '28363420172665408049802993720278.0', '53164'); + T('614972069955669535218947919309413188717428438,76097', '8081423314397013485668921499000133891183.99461213951158548435230604703', '85075'); + T('456397843623966327008858405616124567381,62500000000000000000', '7302365497983461232.141734489857993078096'); + T('18578778016377890885386246496020651,1000000000000000000000000', '18578778016.377890885386246496020651'); + T('22738060524436955,1', '22738060524436954.73553568', '1'); + T('631381816,2355', '268102.68195329664239686517327023024865590172', '20904'); + T('146503259847606731525818341,125000000000000000000000000', '1.172026078780853852206546728'); + T('14904502285493,500000', '29809004.570986'); + T('46687620560206903024816575649873835,3349', '13940764574561631240614086488466.35861452906998315', '6745'); + T('91662449024242718476521823,100', '916624490242427184765218.23'); + T('47716161226447671719905908024708011827667,1000000000000000000000000000000000000', '47716.161226447671719905908024708011827667'); + T('720670502490670418796980571060493068249181,5000', '144134100498134083759396114212098613649.8362'); + T('37873375501866534444667697433,2000000000000000000000000', '18936.6877509332672223338487165'); + T('9837105973,284029', '34634.1605012164224956', '586619'); + T('275962770820946621106879920859,1250000000000000000000000000000', '0.2207702166567572968855039366872'); + T('706513249010161459257,1', '706513249010161459256.864532197276', '1'); + T('595980268265874363487011727978412247,781189', '762914311729779046411318807584.86390233349524542', '1162874'); + T('94990393655983362634,1', '94990393655983362633.93540186786386734642706043938', '2'); + T('478995160185850544676215707045658234,1', '478995160185850544676215707045658234.2072935316895051189693', '1'); + T('900791612975363289,100000', '9007916129753.632890'); + T('3640161366680621782,5508865835', '660782359.87401239405933', '31221561655'); + T('153304,2409', '63.63802393447707212496311847412489674893', '2919'); + T('48894805199,100000', '488948.05199'); + T('764607208068,1', '764607208068.0', '9883952909'); + T('5247038043357340126406507,10000000000000000000', '524703.8043357340126406507'); + T('40752843984968450495935900024466301,100000', '407528439849684504959359000244.66301'); + T('1508393360078152986207294205073063553774739,10000000000000000000000000000000', '150839336007.8152986207294205073063553774739'); + T('15049415517,2500000', '6019.7662068', '25809809256'); + T('4679780279632085707608834877135150316333,500000000000000000000', '9359560559264171415.217669754270300632666'); + T('175108726296810783549,699340', '250391406607388.0852646781250551', '1790242'); + T('44702883860465549,10', '4470288386046554.9'); + T('7808104088649916822858776184466,1', '7808104088649916822858776184466.47052438758636053342', '1'); + T('281411919337,465805657858', '0.6041401914933113740581694868115147', '980851387140'); + T('695754534752369598767,100000', '6957545347523695.98767'); + T('14331404543988591592392002000575758391172,21068409', '680231931323745974002688195419775.569724890', '37960275'); + T('3320644402459621722827,625', '5313031043935394756.5232', '6613572437131'); + T('627120338836675613788452534272072859,1000000000000000000000000000000', '627120.338836675613788452534272072859'); + T('21062775182251,383134912', '54974.8261579748702201285', '452907837'); + T('18956932146202765099219634795464927,10000000', '1895693214620276509921963479.5464927'); + T('2600986773742994608412878821259213,10', '260098677374299460841287882125921.3'); + T('566726653824685741382851080165717726527122873,100000000000000000000000', '5667266538246857413828.51080165717726527122873'); + T('497588039427229066346312712229773035708653408397,10000000000000000000000', '49758803942722906634631271.2229773035708653408397'); + T('41666367526388418811711752302612627697101,2000', '20833183763194209405855876151306313848.5505'); + T('15363941484953032312420486,10851', '1415900975481801890371.43913003328099204929551975491363327', '49992'); + T('2409694437794006212469,622301', '3872232951247075.309968970', '5615242'); + T('39667592557377399116572645358849947597,100000000000', '396675925573773991165726453.58849947597'); + T('6631914348494357725061167,1000000000000000000000000', '6.631914348494357725061167'); + T('190389016168952767733346161974389684092039842699,50000000000', '3807780323379055354666923239487793681.84079685398'); + T('869903981761555555786475820853808311250191616816131,1000000000000000000', '869903981761555555786475820853808.311250191616816131'); + T('371292976710505868722177667462589039897488370705001117485935571,100000000000000000000000000000000', '3712929767105058687221776674625.89039897488370705001117485935571'); + T('46257442183069435630977238493,1000000000000000000', '46257442183.069435630977238493'); + T('440475560214540234869187803670278339051473119,1000000000000000000000000', '440475560214540234869.187803670278339051473119'); + T('1617847693417,5000', '323569538.6834'); + T('182074175724591638134600468349034330834991283,50000000000000000000000000000', '3641483514491832.762692009366980686616699825660'); + T('7589333034185993241367598309953157841,1000000', '7589333034185993241367598309953.157841'); + T('439885064966692635331338940060375403,74133607290968', '5933679488173046564651.89839254336877899980063174325', '77141789811679'); + T('1179158450722067213186968484863836861457157,100000000000000000000000000000000', '11791584507.22067213186968484863836861457157'); + T('12935263022381831236481986920256744104451045320357,50000000000000', '258705260447636624729639738405134882.08902090640714000'); + T('2395282895205309,25123683202843', '95.33963933020212599179070033', '38426420751904'); + T('17850307,215', '83024.683723', '963'); + T('32544916036253,50', '650898320725.06', '5793653961'); + T('60773532817161262237,66672547', '911522591407.24385761053946236159069413709389', '338084891'); + T('914770176848677528292843944387964798627453476861720317700876791,10000000000000000000000000000000000000000', '91477017684867752829284.3944387964798627453476861720317700876791'); + T('4587186380417513404538237108175442069452907,50000000000000000000000', '91743727608350268090.76474216350884138905814'); + T('8531233654030763235701612513100153212942822881,100000000000000000000000000', '85312336540307632357.01612513100153212942822881'); + T('107773450530064909662187359086117316399733950067153,500000000000000000000000000000000000000', '215546901060.129819324374718172234632799467900134306'); + T('769619176587614353053,1250000000000000', '615695.3412700914824424'); + T('12281666497073480840695662,211', '58206950223097065595714.0379184486359', '683'); + T('457196542212636540687669731893020947887,6883500', '66419196951062183582141313560401.0965187767850813634641', '9593745'); + T('4268227996137613294377196928631180903821983,40735441', '104779226426875145266678147135590870.4614731678', '830069295'); + T('575458315285885743858391,24', '23977429803578572660766.29105216999286300600008393459353040482', '52'); + T('8436494536336345240276183670676635057499,38398604', '219708365864976373627441864049970.0212408503184125498085096963579394842', '68059426'); + T('437912761,10', '43791276.1'); + T('18901384502804686897816143307188176228147,2500000000000000000000000000', '7560553801121.8747591264573228752704912588'); + T('25477273836466129096074485,6558', '3884915193117738501993.66956453300', '6559'); + T('7590779151577004043224428413071780976089,2000000000000000000000000000000000000', '3795.3895757885020216122142065358904880445'); + T('6056953730608206494408538120559,10', '605695373060820649440853812055.9', '5171809704'); + T('31849179082257267370211,88449', '360085236489471530.14970208743', '92072'); + T('178285814692139084253431718197878271715779878432662563,10000000000000000000000000000000000000000', '17828581469213.9084253431718197878271715779878432662563'); + T('1449138221474956614898,2029', '714213021919643477.03203547420265509578', '3820'); + T('183,821', '0.222897429282815755169043594043902608174', '974'); + T('433492537953390549272160099280439360005070313,5000000000000000000000000', '86698507590678109854.4320198560878720010140626'); + T('3862824701391243701393001605164434946489851,148867231', '25948119511884006906751705519157771.8436225296620181042509021019411', '552982978'); + T('2589933131557013289797231668,47', '55104960245893899782919822.723478083911298417430269312', '80'); + T('10890199899142835887,2137', '5096022414198800.13430078158019717882', '2446'); + T('3293945324962080603125,382', '8622893520843142940.11780071049874178362583458818054294', '421'); + T('436594379,1000000', '436.594379'); + T('168301463949156607668854677190355669536114773797741179468731574716495111,25000000000000000000000000000000000', '6732058557966264306754187087614226781.44459095190964717874926298865980444'); + T('24609496918349161226843361015480093061391925879787537781518362891719192377,5000000000000000000000000000000000000000', '4921899383669832245368672203096018.6122783851759575075563036725783438384754'); + T('101528584171956890122633497199277785333799099,100000000000', '1015285841719568901226334971992777.85333799099'); + T('21735,239', '90.941418', '302'); + T('118224122484187225351526044435841806374099,2693763154', '43888091018185790119960206581636.911933980295284713291', '2834067906'); + T('1,1', '0.775084028626235358553642', '1'); + T('19134122533504389120891,25000000', '765364901340175.56483564'); + T('342810849655223057065770739830569,10000000000000000000', '34281084965522.30570657707398305690'); + T('6725614005586035111245829205493452074108331,1000000000000000', '6725614005586035111245829205.493452074108331'); + T('1376371700067530025202571904028,1409', '976842938302008534565345567.088715501208', '2249'); + T('76801072988978594413391998963,10000000000000', '7680107298897859.44133919989630'); + T('12704762005671512260146338889,20', '635238100283575613007316944.45'); + T('2492573677322062578671959051439,108734', '22923590388673851588941444.731537513573028882768807925690476231785', '231654'); + T('31123084257678338385173981570213479239607677464746977165210081,12500000000000000000000', '2489846740614267070813918525617078339168.61419717975817321680648'); + T('3786296291638531133538327635741,100', '37862962916385311335383276357.41'); + T('586924625297711213018263802128176897964674915689,1000000000000000000000000000000000', '586924625297711.2130182638021281768979646749156890'); + T('9645358,1', '9645357.912453778903438267262181232435591944111', '4'); + T('5316031065626771333799,10', '531603106562677133379.9', '19'); + T('67278211304547861090569521693426588943,79', '851622927905669127728728122701602391.68360228044574465611893', '159'); + T('7021540690227758957176483359885192690352067153,81703854', '85938916543982845132084997604705314027.8066583370718350934', '97264150'); + T('60669129292299639447664369918689547710597272939435803927977438559,25000000000000000000000000000000000000', '2426765171691985577906574796.74758190842389091757743215711909754236'); + T('6288763899326986566293639459006397625,120589', '52150394308991587676269306976642.957691', '210871'); + T('615,1', '615.0', '56760255'); + T('17799,19', '936.7892332671682401846243', '97'); + T('1303385080467541077973,1000000', '1303385080467541.077973'); + T('21448859436681680760040806307936789975345193025273495023,500000000000000000000000000000', '42897718873363361520081612.615873579950690386050546990046'); + T('1291898345053434859844591463516855305911784995979,12500000000000000000', '103351867604274788787567317081.34842447294279967832'); + T('60507,1', '60506.9', '5'); + T('616317355277164831416386217627324701901,1000', '616317355277164831416386217627324701.901'); + T('2904921181742034,1', '2904921181742033.970138508789748538132238870774712', '1'); + T('3440569493092390376625126875391799,50000000000000000000', '68811389861847.80753250253750783598'); + T('15571280591820679565505108997031,5', '3114256118364135913101021799406.195951', '8'); + T('392321264085832586910672967559,611830431', '641225483741642440322.9347831490911899434269', '695282372'); + T('5577690959101259996527703333121313876972011192208077,625000000000000000000000000000000', '8924305534562015994.4443253329941022031552179075329232'); + T('16539986799609190872098179009446893,331524797', '49890647545164444734124002.82518502831629815787962712124518347', '544553707'); + T('8981681843839458445912808176057,20203', '444571689543110352220601305.55150225273', '22042'); + T('99325333489133639887283,11', '9029575771739421807934.81761', '13'); + T('6522,1', '6522.0'); + T('7187454479696854214600838,2125352003', '3381771334607886.2281528797655830003743', '3307131440'); + T('28117786498578019978223647606249,72838872', '386027209462799203950105.756803166858487810', '81837562'); + T('478254578956578786562047524831361309532201229,10000000000000000000000', '47825457895657878656204.752483136130953220122900'); + T('77058140608147483002424280179365952862962922218441255276651,1000000000000000000000000000000000', '77058140608147483002424280.179365952862962922218441255276651'); + T('803865379172081337096308068958767613527926677,327563', '2454078693784344804194332293203956532111.1562569643063947120941944927', '375003'); + T('2360034347428712012050231582155883,250000000000000000000000', '9440137389.714848048200926328623532'); + T('203318509580360624351812461951622123031368062580663,250000000000000000000', '813274038321442497407249847806.488492125472250322652'); + T('221965264758349084399,6470046354', '34306595751.2225088455680019382813053906996309752644', '7317562156'); + T('5099265696964671,12500000', '407941255.75717368'); + T('321755130,1', '321755130.0', '1'); + T('681406688936672531143794851254005123313841616787245936785722503,7812500000000000000000000', '87220056183894083986405740960512655784.171726948767479908572480384'); + T('153955479454984280174500893,4927686668', '31242952287278887.5492886539595216', '9598118777'); + T('23227,100000', '0.23227'); + T('43326473463554790328447035534276163421779557,1000000000000000000000000000000000000', '43326473.463554790328447035534276163421779557'); + T('41089006913283492613083959033772531785,2', '20544503456641746306541979516886265892.530283312918885713244232199421', '5'); + T('139407109288420981406975879448852798787333071448546598243307,1000000000000000000000000000000', '139407109288420981406975879448.852798787333071448546598243307'); + T('9781691985049606719084834150405960550336089,122674', '79737287322901403060834685022139659180.7236170663710128362032', '57088498'); + T('14022980999863417630135058657283616,2321', '6041784144706341072871632338338.481688949941106013243041338', '8154'); + T('5574653114539338322522057935820934,1', '5574653114539338322522057935820933.952578779342397522948776164237003865', '2'); + T('698597423090735413329970853695704980420,1', '698597423090735413329970853695704980420.0'); + T('41770388588086435767794101997,1', '41770388588086435767794101996.87800912334551920117198', '2'); + T('3969460977515807861628298607881363600942403072746116154451251370411,500000000000000000000000000000000000', '7938921955031615723256597215762.727201884806145492232308902502740822'); + T('818626449980780390596498633228169970328017564,951613', '860251436225419777363800865717649895837.927354922641714029', '2934871'); + T('2864942859671509919660119,10000000', '286494285967150991.96601190'); + T('145096137530603,3125', '46430764009.79295997627678788068274740859435028566', '3415'); + T('3175128188,8421', '377048.82888017296266613549723116278', '9892'); + T('353211267011180153249,10000000', '35321126701118.0153249'); + T('897447070318612896975557401374492140028592343673,10000000000', '89744707031861289697555740137449214002.8592343673'); + T('17536546982566421053425616271159751448175509509,5000000000000000', '3507309396513284210685123254231.9502896351019018'); + T('1498867800352844887470319343495958,17', '88168694138402640439430549617409.293', '22'); + T('14305398689362,15467073', '924893.7203155374', '22113082'); + T('436102839806788235096903,4', '109025709951697058774225.7362272869251737724', '9'); + T('308087699066,7807', '39463007.437684133317', '10839'); + T('2628342736773923291423096554670735302124820185693541213399,50000000000000000000', '52566854735478465828461931093414706042.49640371387082426798'); + T('64300989158077788880534179354276244873359,2195', '29294300299807648692726277610148630921.8036447', '3984'); + T('1593668215027228291921575913818,1', '1593668215027228291921575913817.9011053', '2'); + T('9464555700726947268792864782,1', '9464555700726947268792864781.94741904335358', '2'); + T('86501031784980810599118109920903,367173188', '235586460591400292003669.151138843504008795198121680193', '457966587'); + T('9745513313209888804669228133888956813799941097,10000000000000000', '974551331320988880466922813388.8956813799941097'); + T('31556786915280245846977588242899282449,10000000000000000', '3155678691528024584697.7588242899282449'); + T('472322148083391454920144185678364119,100000000000', '4723221480833914549201441.85678364119'); + T('518007801929481005201363369,625000000', '828812483087169608.3221813904'); + T('299535536454040965333171155703500161446096189553447,500000000000000000000000000000', '599071072908081930666.342311407000322892192379106894'); + T('5330869452533820313561195628056700122127092795967358371,250000000000000000000000000000000000', '21323477810135281254.244782512226800488508371183869433484'); + T('47795736745489295393396455460987004248591698840612598072778499,100000000000000000000000000000000000000', '477957367454892953933964.55460987004248591698840612598072778499'); + T('206470771234730604991708607179250628073439743340221,1000000000000', '206470771234730604991708607179250628073.439743340221'); + T('907,1', '907.239004086069', '1'); + T('19077064083517899785847151076434612550555316546848569573481919,500000000000000000000000000000000000000', '38154128167035799571694.302152869225101110633093697139146963838'); + T('88133212648357648517,100', '881332126483576485.17', '87089410'); + T('92145848597976720763683816246415023,100000', '921458485979767207636838162464.15023', '521344865'); + T('68539971794,6880585', '9961.358197595117284', '7875099'); + T('935168426589766229927456282413,1000000000000000000000', '935168426.589766229927456282413'); + T('97,1', '97.0'); + T('12846464199528950327,5000000000', '2569292839.9057900654'); + T('2196110114554495743126928176989085775661,247228124', '8882929979901864818287939510429.9936995072615605828834737982875357', '360433698'); + T('388166039,1', '388166039.0'); + T('341539978,1', '341539978.0', '195382934'); + T('781034514540009,100000000', '7810345.145400090'); + T('20877130490298631791495412013,5000000', '4175426098059726358299.0824026', '2413029349'); + T('620026697301098193277327524609895859849707,1000000000000', '620026697301098193277327524609.895859849707'); + T('899179602300830741337813,100000', '8991796023008307413.37813'); + T('122432635,1316', '93033.9171732715553792824649171231580', '8140'); + T('119126340085680938295485816698905,46045039', '2587169924770417466591478.32840156786489', '73781454'); + T('40751167179588164798660481,1000000', '40751167179588164798.660481'); + T('68346625258654521574,1', '68346625258654521574.0'); + T('750578575419957257,100000', '7505785754199.57257'); + T('1082551,2000000', '0.5412755'); + T('638082,1', '638082.0'); + T('142488629984756867662276702019849226999,23', '6195157825424211637490291392167357695.608', '50'); + T('738115949031,1', '738115949031.49784834425903489305746005970674', '1'); + T('762953733493512712065532091292988047,1000', '762953733493512712065532091292988.047'); + T('178822248219150690173,50', '3576444964383013803.46'); + T('1984025728,43281', '45840.570411959105408010583324095855', '43320'); + T('20761534807588043,10000', '2076153480758.8043'); + T('924518404356149235469334759956600273757163609,20000000000000', '46225920217807461773466737997830.01368785818045'); + T('129411352783937937234426479,4112', '31471632486366229872185.427772374363428597742550717671565', '6699'); + T('3411360513380150634213140127292339282533595063273539901300312481,400000000000000000000000', '8528401283450376585532850318230848206333.9876581838497532507812025'); + T('76,1', '75.994673795016', '1'); + T('494578703756754347,5770935', '85701659047.754713404327025764320339913', '7644022'); + T('6890929,100', '68909.29'); + T('1166392938478006378987508440139351590646756345929819,100000000000000', '11663929384780063789875084401393515906.46756345929819'); + T('313075076294541347576328789584368750721345183624469,100000000000000000000000000000000000000', '3130750762945.41347576328789584368750721345183624469'); + T('2662023247705491854869433606657653587,2000000000000000000000', '1331011623852745.9274347168033288267935'); + T('806080010264194,4727', '170526763330.694732378488764174454796737', '7478'); + T('65545519,78105263', '0.83919465196602580801751582896749717', '79437231'); + T('6248476043461963589910078747895049611946214109708513753,1000000000000000000000000000000000', '6248476043461963589910.078747895049611946214109708513753'); + T('54531559010653599,3030958223', '17991524.461422310735689741', '7731481918'); + T('429099569700734470147551061212192591773651008518,670838555', '639646553559722681931349430582731774821.2176154931941859', '704304148'); + T('844049999410175821526,1', '844049999410175821525.66', '1'); + T('60701048676262579463126309740310059202124189359,100000000000000000000000000000000000', '607010486762.62579463126309740310059202124189359'); + T('5279410855406353186734225099558276,77', '68563777342939651775769157137120.467524470763581', '95'); + T('842239448004271461702793995095761523551628413356036645106333,250000000000000000000', '3368957792017085846811175980383046094206.513653424146580425332'); + T('1182610690103,312500000000', '3.7843542083296'); + T('68524947508627870390245103423700023635275808281519987514918614853613,100000000000000000000000000000000000', '685249475086278703902451034237000.23635275808281519987514918614853613'); + T('98142576359019755098761,10000000000000', '9814257635.9019755098761'); + T('241800962281991517205884817297371,5000000000000000000000000', '48360192.4563983034411769634594742'); + T('79836993918410993594506591,1000', '79836993918410993594506.591'); + T('1973810204163989,4534064777', '435329.0703248347084653925795494', '5332316364'); + T('401580056542974086016353741391922659742781536879698656843919,50000000000000000000000000000', '8031601130859481720327074827838.45319485563073759397313687838'); + T('590663,750977', '0.7865260853527516321730', '780179'); + T('280079,1000', '280.079000'); + T('8287753156729,1000000', '8287753.156729'); + T('0,1', '0.123545182349443609735032', '1'); + T('57057377258668955092844388184203953190814195154676204418983523542264563023,100000000000000000000000000000000000', '570573772586689550928443881842039531908.14195154676204418983523542264563023'); + T('147604349147007341987769096030122333191422929,6471015', '22810076803562863320169880000297068263.853959386587721161799958796244241051', '8303141'); + T('6105498122564848444576189774,80267', '76064860061604998873462.192108836736339050132605', '141567'); + T('670639675445600472707497548714250172221625881188854267533121,100000000000000000000000000000000', '6706396754456004727074975487.14250172221625881188854267533121'); + T('478196505300332351297,1000000000000000', '478196.505300332351297'); + T('5375051998674067089293,50000000', '107501039973481.34178586'); + T('66584033541591402334601184478033648516971762649454147,1000000000000000000000000', '66584033541591402334601184478.033648516971762649454147'); + T('6689748165117193396726141393,1250000000000000000000000000', '5.3517985320937547173809131144'); + T('460631023076,645385145', '713.7304393270471076595464454721208755', '940592764'); + T('5276069320082913776121941721,56', '94215523572909174573606102.16045907376298740945874743718869112', '78'); + T('27476132817352,13', '2113548678257.84612197961789955018136', '856'); + T('202602298856965754329,41868', '4839072772928388.13244005', '42848'); + T('4464608676391498186364792490985185921,5000000000', '892921735278299637272958498.1970371842'); + T('5031980754741001166,1', '5031980754741001166.0'); + T('8023557799983,1294504', '6198171.500422555666059971291979899', '4419145'); + T('168103197472408099843,2', '84051598736204049921.4325681106454432215021', '4'); + T('22889257701907256349217661636051,500000', '45778515403814512698435323.272102'); + T('892403,100000', '8.92403'); + T('1914024621531154563928585,31', '61742729726811437546083.38708655997995899644906913601366359', '352'); + T('1895934054286044231883939226027166734,19', '99786002857160222730733643475114038.631477380741702788316870213097972253591', '65'); + T('488907941212895608156694986135107572664818936553,809421353', '604021551199299295180189033306992053945.5041242938398241170607073', '811259873'); + T('9558758078456554336102679663,10000000000000000', '955875807845.6554336102679663'); + T('2281310565857,50362', '45298251.972856518761138181026483534977097', '82487'); + T('2890669262797093295990028537,799', '3617858902124021647046343.6007512810038540029262532383', '994'); + T('7463509030548608549549784845908192540652431,1000000000000000000000000000000000000', '7463509.030548608549549784845908192540652431'); + T('2506595022495145502116175,2852121886', '878852700790623.04917082880938279787754319212190899', '5003324771'); + T('12700439554099,50', '254008791081.98', '925168108'); + T('1628787692156684658130881,10000000000000000000000000', '0.1628787692156684658130881'); + T('44847136057058496707418799843,50000000000000000', '896942721141.16993414837599686'); + T('21592764541,25000000', '863.71058164'); + T('47801148603152505431027216366549,100000000000000000000000', '478011486.03152505431027216366549'); + T('11423000733021287947376,5', '2284600146604257589475.18575178', '5'); + T('2732203040520419846369019510610,1', '2732203040520419846369019510609.688387071616656538889144285', '1'); + T('568956,96605', '5.889508824590992627401001', '840534'); + T('71266649783967665510339357353436865700959295147,1000000000000000000000000', '71266649783967665510339.357353436865700959295147'); + T('47566615560121136721952891543681047713870191381209033,500000000000000000000000000000', '95133231120242273443905.783087362095427740382762418066'); + T('46719848692300081220895684593,79867', '584970622313346954573173.959119536234', '447174'); + T('6512959508348312854935682614687474683779,45270', '143869218209593833773706264958857404.1037994256595241153200438542903873871', '89045'); + T('5439094235028724828058147496706,1', '5439094235028724828058147496706.08739593', '5'); + T('6914775066832852797746427420897025001305226852,9731571', '710550749394198819260161326562486673662.990985936391792772356968236196619', '9877188'); + T('9132456017491382812010830613993084921418431583790758069448731138967157,10000000000000000000000000000000000000000', '913245601749138281201083061399.3084921418431583790758069448731138967157'); + T('167000488634822153427980339,200', '835002443174110767139901.6950', '209'); + T('141817570803201010469485291685322472531441481,200000', '709087854016005052347426458426612362657.2074050'); + T('588070510408392162256205164465497,78125', '7527302533227419676879426105.1583616', '5624320'); + T('19513055373531609310745811785217,200', '97565276867658046553729058926.085', '662'); + T('138474825950618076159440491355711,250000000000000000000', '553899303802.472304637761965422844'); + T('415063278182543292471143901597284671215994230954413,5000000000000000000000000000000000000', '83012655636508.6584942287803194569342431988461908826'); + T('36464063274630813862074158403502015663924,4479', '8141117051714850158980611387252068690.315695463672930753117541745392976362780', '9949'); + T('77574321944149904065550232031471931458854752374018266928805594322125477,1000000000000000000000000000000000000', '77574321944149904065550232031471931.458854752374018266928805594322125477'); + T('860630077,2', '430315038.403217142', '2'); + T('15558187771473513998987651232806625351751827119199,10000000000', '1555818777147351399898765123280662535175.1827119199'); + T('3231091733918849478252448666476580370445734299,10000000000000000000', '323109173391884947825244866.6476580370445734299'); + T('11956064398957062636192043300176336503346154370545469406163,25000000000000000000', '478242575958282505447681732007053460133.84617482181877624652'); + T('13021206583561217782,1393', '9347599844623989.793252229114225593843', '1438'); + T('1205029771231704090691706271,10', '120502977123170409069170627.1'); + T('39427566041566908772215108783864070289307704169373367199,100000000000000000000000000000000000', '394275660415669087722.151087838640702893077041693733671990'); + T('20653796995853981466925025099001736339,1', '20653796995853981466925025099001736339.01178318512428457087673690149249703', '2'); + T('49185188690848465217210092151,1000000000000000000000000', '49185.188690848465217210092151'); + T('97698380055293281205698719426020,264416813', '369486262794088215584455.74119380979', '553766419'); + T('104240787201124446779050832403,11', '9476435200102222434459166582.0896', '42'); + T('23908923428339619,2000000', '11954461714.1698095'); + T('6443200626654394417539232110121866815091625569790751249399973169,10000000000000000000000000', '644320062665439441753923211012186681509.1625569790751249399973169'); + T('522824108366566300342606573753440692777606807910783,10000000000000', '52282410836656630034260657375344069277.7606807910783'); + T('9331495570471,10000', '933149557.0471'); + T('2288353143307282848483,625000000000000000', '3661.3650292916525575728'); + T('2540011169177460230281,658036', '3859988160491918.7252384368027830049697409', '870300'); + T('201,500', '0.402'); + T('10226950029331489136943365681209055845834606737970478522990929,10000000000000000000000000000000', '1022695002933148913694336568120.9055845834606737970478522990929'); + T('17113571783735766467,6250000000000', '2738171.48539772263472'); + T('607162793632634650613626558,109', '5570300859014996794620427.13759324128530102744', '279'); + T('23435545976038973604189644358770194,65959', '355304749557133576982514052043.999969678005', '66113'); + T('90547763901776187620780219732687,11', '8231614900161471601889110884789.730553504', '14'); + T('538495939889,1000000000', '538.495939889'); + T('892775,1771', '504.1078487171945391982883708896239694983', '2610'); + T('5143213613655381342618850465608,5333', '964412828362156636530817638.4039', '5396'); + T('39901895138105505,1', '39901895138105504.7809060487341642826622382411986', '1'); + T('1381529243092626455345386156196319406364914937,2000000000000000000000000000000000000', '690764621.5463132276726930780981597031824574685'); + T('9499945404778753956432849082641761055489266837114251,100000000000000000000000000000000000000', '94999454047787.53956432849082641761055489266837114251'); + T('83156369636439388647124221367308574466072835786176325890310492691,1000000000000000000000000000000000000000', '83156369636439388647124221.3673085744660728357861763258903104926910'); + T('476709938523129116704811850643225303462101,4991', '95513912747571451954480434911485735015.448006383504104143813484355284523646562', '6199'); + T('157890355707984,275', '574146748029.0327252791231876', '499'); + T('8019262547628511834980873806916156016716,947', '8468070272047002993644006131907239721.9809925284381006401', '5117'); + T('622115359848494409270460619,10000', '62211535984849440927046.0619'); + T('832436043530692186307700916007638657221,9338', '89145003590778773431966257871882486.3162347563616628086057549945343341', '9703'); + T('1197345815215160429787134483429457424748454,3797', '315339956601306407634220301140231083684.08058994774186577044230365470', '5784'); + T('423735152100855061347214859430967270991323541,10000000000000000000000000000000', '42373515210085.5061347214859430967270991323541'); + T('24083749929262503747426239253781575649811815722386688065407,50000000000000000000000000000000000000', '481674998585250074948.52478507563151299623631444773376130814'); + T('5303019589668854255151682937590376324897,10000000000000000000000000000000000', '530301.9589668854255151682937590376324897'); + T('85737211216718643688831414562125117156828541666351591,1000000000000000000000000000000', '85737211216718643688831.414562125117156828541666351591'); + T('528032868848420465249059811366153020793348383745543,100000000000000000000000', '5280328688484204652490598113.66153020793348383745543'); + T('1866752363992468250754020414,35', '53335781828356235735829154.68522878762736138731952941267', '47'); + T('35716735,553', '64587.224236228224605', '625'); + T('217921488209893967858247239220161357646029,31250000', '6973487622716606971463911655045163.444672928'); + T('74900978196398249235645033181449,56659483', '1321949552494120873564007.5145311332967863901290698034953', '95809931'); + T('4181810551795274201109494238031,6850', '610483292232886744687517407.011824823463664815517814', '9863'); + T('173659759502325661822,36351627', '4777221099411.194492670163016336584109466723444167542', '40565652'); + T('975617306643846126337774473247881968707228143,100000', '9756173066438461263377744732478819687072.281430'); + T('107162744108339267900049017055818023,400000000000000000000000000000', '267906.86027084816975012254263954505750'); + T('172824702408627980142888156188664041173157111,5000000000', '34564940481725596028577631237732808.23463142220'); + T('4661,1000', '4.661', '725484239'); + T('85630686880,2563', '33410334.3269603915296445267071067965485682', '2749'); + T('3650614799062559649462274868183699,1000', '3650614799062559649462274868183.6990'); + T('228678,30631', '7.46557409177', '61028'); + T('351824463570227805968918689708954570800044191,500000000000000000000000000000000000000', '703648.927140455611937837379417909141600088382'); + T('488087329866628899580567813575317229184103113,100000000000000000000000000000000000000', '4880873.29866628899580567813575317229184103113'); + T('15364099762357780872271701893453303984731614629318015521954234513,25000000000000000000000000', '614563990494311234890868075738132159389.26458517272062087816938052'); + T('4191173857019885158075164088272787562741,2000000000000000000000000000000000', '2095586.9285099425790375820441363937813705'); + T('891299363389677085414626945889,4000000000000000000', '222824840847.41927135365673647225'); + T('27963428850565537315601806701616541673936819779,10000000000000000000000000000000000000', '2796342885.0565537315601806701616541673936819779'); + T('571401796386043738811955172893452900347780492106439462254983,1000000000000000000000000000000', '571401796386043738811955172893.4529003477804921064394622549830'); + T('366690412973,10000000', '36669.0412973'); + T('12875015217651127,146130874', '88106057.70859296304489358653746605217', '448798288'); + T('24696724779197162265975356937723632,5', '4939344955839432453195071387544726.4'); + T('2985624149040533370866,254972185', '11709607261829.4947382829229', '310816918'); + T('205145083837395729,3524939951', '58198178.3205122545930144839521', '3928265791'); + T('792952739262136340728303572788453059228501933,2000000000000000000000000000000000000', '396476369.6310681703641517863942265296142509665'); + T('1320227697516244557850056741,15625000000000000000', '84494572.6410396517024036314240'); + T('37219214107473809786834936594940667709,10000000000000000000000000', '3721921410747.38097868349365949406677090'); + T('5575556813194831758332268154,56297415', '99037527978768328143.170839265', '60858604'); + T('249706733132241788592404281174823647611951769482541265522444180644991,50000000000000000000000000000000', '4994134662644835771848085623496472952.23903538965082531044888361289982'); + T('295382366467493833160483758,359', '822792107151793407132266.73533894441115275877029700384684359997', '368'); + T('295805371652277510092410438965536011,673881', '438957874835879791969814312861.671439022616798329375629138173', '2521756'); + T('5844753078362685375500413573063352892766873,10000', '584475307836268537550041357306335289276.6873'); + T('638178878607660002139073283695192160794,6631617', '96232770771843428554313870010163.759576887507235421822943361938', '8897582'); + T('22432938154584,39169', '572721748.1831039851864432568917', '41092'); + T('106706350515532352182646089407,29', '3679529328121805247677451358.861708158318085', '61'); + T('1006727,2905', '346.54974185099960', '2920'); + T('506555946665035572178858654593077910567905546515259539016213,62500000000000000000000000000000000000', '8104895146640569154861.738473489246569086488744244152624259408'); + T('5667347843,1', '5667347843.0'); + T('494398222717274926488483225499160,1', '494398222717274926488483225499159.98', '2'); + T('837794972781085082959914787434100934327883671639127,1000000000000000000000000000000000', '837794972781085082.959914787434100934327883671639127'); + T('2557367721562609913879206622896959,50000000000000000000000', '51147354431.25219827758413245793918'); + T('87843192004882899,10', '8784319200488289.9'); + T('19,25', '0.760207454590321431534164054874637479559', '39'); + T('147128541247,43', '3421593982.48867', '44'); + T('368946937,500', '737893.8740'); + T('190832298553383334575954,647488127', '294727100923942.246397290308923302', '2820909477'); + T('2073843380993671359645467586457708477,10', '207384338099367135964546758645770847.7', '90210557'); + T('142023011523698529831928453508889478348921,10000000000000000000000', '14202301152369852983.1928453508889478348921'); + T('131523705761031644569208707101725314627,20000000000000', '6576185288051582228460435.355086265731350'); + T('107614457850081791201223888580314663474567,100000000000000000000000000', '1076144578500817.91201223888580314663474567'); + T('7424203392370085459633617400060995558887,1', '7424203392370085459633617400060995558886.92627', '2'); + T('1150595474009947183249,500000000000', '2301190948.019894366498'); + T('107132561823987752087271387138926902232412924373,100000000000000000000', '1071325618239877520872713871.38926902232412924373'); + T('66592083512795708829,97656250000000', '681902.93517102805840896'); + T('2383461165589395538962556182433727539343280817092285028907,500000000000000000000000000', '4766922331178791077925112364867.455078686561634184570057814'); + T('4752189583313890783247219222481531,10000000000000000000000000000', '475218.9583313890783247219222481531'); + T('742246581737,1', '742246581736.60', '1'); + T('217582569729319048394786382926204527678365,278', '782671114134241181276210010525915567188.36330596838736296846323412', '353'); + T('8,5', '1.6'); + T('77516567,1', '77516567.0', '2529'); + T('187771783050301517419414783195509184163970763,5000000000000000000000000000000000000000', '37554.3566100603034838829566391018368327941526'); + T('75775984617422245988100638579,50000000000000000000', '1515519692.34844491976201277158'); + T('27025750270934149627304743094,27', '1000953713738301838048323818.295980629760086538462', '55'); + + T('45331,5000', '9.0662'); + T('1,2', '0.26678469618283923562166896359509235073451784352063763', '2'); + T('2533,681', '3.719523969530026850479571156532323136048917552796680071910875141219321593975575609179027', '697'); + T('6,1', '5.95670176075546656061641857369584534119416380474162703019059921749378', '4'); + T('1611,263', '6.1254796583797468286994317214330688018450504512208169605280714777631573', '348'); + T('4575219,841429', '5.437439165988931940772741700237239451817319934504577438827546421794517317551497622237902', '905300'); + T('544,87', '6.25275513583617822405786324552333236913767738896504459666064910547852535280664715894565', '90'); + T('9398,2267', '4.14556674388769106671553518476960309922345613865422241156', '3348'); + T('3,1', '3.1912389255634557180255978654316265495460980977830957259345681346972112849133326200582984', '2'); + T('90833,188310', '0.482358876323596164805577916312592462921530658660338105311161525274025', '829071'); + T('79,8', '9.87749219827141149', '9'); + T('0,1', '0.0', '484'); + T('126,13', '9.695091451492871', '20'); + T('2344,401', '5.8453758518246010129661980734406695366765558069122949118835193553349723', '492'); + T('1288,2105', '0.611876458127545613370', '6810'); + T('15,8', '1.91843965975015244765459863481866326921442203181383237784729', '8'); + T('0,1', '0.409838221056570951533841', '1'); + T('1783,21429', '0.0832050036602382863605408078022770284912449098792064253887456750250300671442273197567215669397533539', '37533'); + T('45,8', '5.6372753722674653472810042478599375756026972396886320541634716311399615308115964737620290729', '9'); + T('3731,503', '7.41749596112475033273240678217035352204496655512439751763538750951822', '879'); + T('68,261', '0.2605320118176922', '418'); + T('1,1', '0.873516707890829872596691063080472230824856618229083662104844156119886415612785045', '2'); + T('298,5781', '0.051548', '5872'); + T('1,2', '0.493490546390034810538790', '2'); + T('194103,39860', '4.8696186653773687510967391401128197073966271363341369329403328795737499798898813154928081356102', '67047'); + T('8,1', '8.24255476352493964464539856548405279481376105856089797340403340770555106189715421415058338308', '1'); + T('3504,6943', '0.504680921122223324202661672653248024256463340120222953245027413565995719', '7749'); + T('1,2', '0.491444664060778917796646216056433250881566732430439598453611', '8'); + T('5,1', '5.174287049199459942513839348622840616091614563710554596545393655504425427310533622274177087224827743', '2'); + T('48,17', '2.8244956913919378299574044583308527', '38'); + T('13,2', '6.5123694703010445805148101381793203139145534810051830232704726181238111389305273667', '10'); + T('24566962284749476680485,474039', '51824770292633046.39593999650204923557888735082449292', '494735'); + T('3368493619886411272795065960341766914829350143,646', '5214386408492896707113105201767441044627477.00108781345538244652891489457688743808616951764106898054577612254593670957661783381212694042072880', '646'); + T('2586853155389978187,4', '646713288847494546.759357782181814033868900465999081587869086726952721777767314153318', '7'); + T('7790857,1', '7790857.0819506998029689765', '6'); + T('20316021176247877123927349918982151279842758053,328679', '61811132370026308720445632118213062835906.030056681445118198111988670764482507178630313908793827175849924091992', '379056'); + T('1859,400', '4.6475', '506'); + T('3049623920905,54', '56474517053.79685033296077', '54'); + T('955619588917617544364192167390384622044661,1', '955619588917617544364192167390384622044660.58683083203739003688389119086331771452663428', '1'); + T('23729431076324650550683769,2', '11864715538162325275341884.628306443723097500514117908401946557366479217553160881729', '2'); + T('602177639398434193,12', '50181469949869516.0836841857315775159797349427875', '57'); + T('140119378421058440906693944186090478181701459,23487', '5965826986037316000625620308514943508396.196151063587153500718548824147376690362082681', '32245'); + T('7923555977836074006224698706360493883275129309417457,87511', '90543542844169007395923926207682392879468058980.213424597970479050473902729928963099224064941742', '92677'); + T('54774151891479696845053139444,1', '54774151891479696845053139444.32158102581962967272783934830487680739269', '1'); + T('19487924786960507453065915479,493', '39529259202759650006218895.4949277990322529722833768257687422896', '761'); + T('140444,271', '518.243545484623519007809525661667018545612793583718813418801027794258962294070595146', '447'); + T('448303887586360873569623,41995', '10675172939310891143.460483390962390167622207695401198601781636467015533654852801916441417159108770772582258763991743677', '93301'); + T('5308934360728177543766425862582,19', '279417597933061975987706624346.42105975966853513862473278487385291152772263985624372', '565'); + T('671757917955898917816836249302738,1', '671757917955898917816836249302737.83748346114250347811329609441825552892855517748573774083', '1'); + T('6923438,7041', '983.3032239648939942067850769366628571834182477091616462640', '8574'); + T('8681,1', '8680.554499202744390742254279390116166894742281104651898357648636131885616626172960139623', '1'); + T('8296090754,1', '8296090753.77808799719854507879129386685898155948713328498119893342154782002735', '1'); + T('449550842508002469586005256134656634,263', '1709318792806093040250970555645082.25858528116754388519315876056635084792675358257245998246599064750318560', '313'); + T('2384258830294857351266823482459306002060,89', '26789425059492779227717117780441640472.584265827825756685558321547464547903622405705748281747905025875364873', '244'); + T('3099059767,369', '8398535.95393019688934', '716'); + T('1118567,8', '139820.8675991643206836269', '11'); + T('54501975717322825161701857159922629,617907', '88204172662427881803737224468.9291899913754653160726311160386', '687952'); + T('292065600267078038277,360587', '809972628705632.866068382943176993810432', '473708'); + T('60865545773557068449101563,352490', '172673113488487810857.33372010556289892591424474886122627772863302106575690', '362845'); + T('43910364284205515720513,57', '770357268143956416149.350857167011834016095423796125853', '82'); + T('2768,1', '2768.0056248196618573', '9'); + T('24707,61104', '0.40434341444406601572079746049739999661378', '138159'); + T('62398,1', '62398.049758341992', '3'); + T('106402023318778195146268840340215196296057694978,1711', '62187038760244415631951397042790880360057098.175336027856651274924796443646769049038890419014107906', '5296'); + T('0,1', '0.0', '50251'); + T('1,1', '0.977479149688', '1'); + T('286761116711598046630263181694725313446508186,9', '31862346301288671847807020188302812605167576.2167633900367016409879668147081261089855665558671456', '11'); + T('493854667771423,1', '493854667771423.254959180508897738136194526024260', '1'); + T('59770,50369', '1.186642577786729', '657935'); + T('50670898227060364508301169119,2', '25335449113530182254150584559.576505095152042462067029896885530025096832963272421507985849118924294', '2'); + T('4,7', '0.539885108909598446106149715395519', '7'); + T('7436629,41', '181381.195088', '90'); + T('31167367322965637719365091694651,71', '438977004548811798864297066121.844953873132264903410589240583520033403555493637587973009095', '84'); + T('2598472288366433446623870668432105,96', '27067419670483681735665319462834.427090009020254549190095557820154764669675729935', '626'); + T('1,1', '0.922067456510097025954699039976943', '5'); + T('294229548281191410,241', '1220869494942702.94605133401949538', '427'); + T('241625399655500291,253225', '954192515176.227825056771711519082815948456167', '682290'); + T('1195655939518580983871186713470668235614408053376357058667333,423677', '2822093102808462540735481778502652340378184450362793020.78548752891313966613182857481605202157821315686948713904923560', '424333'); + T('2618811517,1', '2618811516.931208050937507288604652795688621819503341112255782020992459900662114311111088545100179', '5'); + T('4131144162729913,1055', '3915776457563.8985781325507805186370493303', '1489'); + T('582466848848638,23255', '25046951143.7814663542320116521870304194984491696195', '27057'); + T('6455766824570,83', '77780323187.590347796893974704799', '265'); + T('53455832886999353767497945728788540143157488885248223281,59', '906031065881344979110134673369297290561991337038105479.336253413994200448040788970880967169296448933722265614219121230464551', '60'); + T('34684817227394711572160619503375408,71983', '481847342114036808304191538326.7633746855360502891294804519887966739426931804349338553', '73666'); + T('170771191765582963,51940', '3287855059021.6203889101733530', '91639'); + T('59489,802', '74.175817224433680910672', '860'); + T('79898665639094718393482676981,4', '19974666409773679598370669245.22684378060267947984678026612709838', '8'); + T('7517924493744156919811183,286', '26286449278825723495843.297196347604166787095605578145803015483232937733237769524617002712850157698634151602400', '475'); + T('27132562808975269,342', '79334978973611.897660511616985808318420102330091', '4677'); + T('60272291702537718907780263,10573', '5700585614540595754069.8253097510065828573367376877437092127528369415566888', '94840'); + T('1,2', '0.51', '2'); + T('216897821528130673257,53', '4092411726945861759.566036761275728746134069907357892874', '94'); + T('3163857791132342485290267882552370855322887,545326', '5801773234968335427414551814056859301.26729149169554685226093744763268316765389373680859617450067621955512471523', '888336'); + T('31893079,51', '625354.490182800115515495968616197567291321495007057703788292149', '218'); + T('45189870731246404,15181', '2976738734684.566497593258376965224195020258733405076577662', '20203'); + T('239861,472', '508.180083770484715', '880'); + T('33499101710863017,2', '16749550855431508.69914410240779698148517248391235817', '2'); + T('2141207850036582856465048433,329419', '6499952492225957994120.097605177654579789782944540260769802900107062218301666704054646611', '330997'); + T('22193392902987826122559599877876897,58', '382644705223928036595855170308222.362212252887839179829725912772009160714747747554090412224', '62'); + T('90543357024529043405978879144258275090780578649,2', '45271678512264521702989439572129137545390289324.6726991725126164245656717069363903985212602605238565780325239301101476316356964391514481', '2'); + T('37600782476781126884139203431600472982966839780023429919897,1', '37600782476781126884139203431600472982966839780023429919897.24287512927437642710013783433910340431924976940125246127078', '1'); + T('64961559075,8', '8120194884.3724681021129254915288817', '8'); + T('620318090519481009,8560', '72467066649472.0804906532075275', '9472'); + T('8163482,849', '9615.4087173', '869'); + T('7377,17', '433.9414759956934328436361859748327855391332306426', '49'); + T('611,3', '203.6725705400', '8'); + T('89171,1000', '89.171', '55217'); + T('51270493819699846152993496,65', '788776827995382248507592.24720791353857126515444468431677377534114643955968022584267028953553278893503', '65'); + T('952437397670186727964934896572895455572,2039', '467110052805388292282949924753749610.383521318013377289176993384359404280274806527340713677500761934497938212', '6194'); + T('115107039410294795197,2', '57553519705147397598.52569349659929993375319668989846544486260551837544', '2'); + T('22,1', '22.365923', '1'); + T('1990972334583731,2697', '738217402515.2877271240567969345615', '8197'); + T('85750361597402603631603273118666,21', '4083350552257266839600155862793.619499612682355814294752644386270178753962225708928418572214290985761742439416042', '70'); + T('8635686977961,268079', '32213216.9172557343179410005696124075', '549886'); + T('66531984494429,15', '4435465632961.93350703161015018', '61'); + T('0,1', '0.18167201504679', '2'); + T('10529,27', '389.9630', '38'); + T('2934260971563580194491472182109802377517454,5583', '525570655841586995251920505482679988808.42808527488170902078803003616929756884458514431718406108322520', '8718'); + T('5108200665966863073353288070176030051511632153746,7109', '718554039382031660339469414851038127938054881.66352511082081319890207684459946872434550056671', '8537'); + T('1,3', '0.3465753923796479102166177077330555737271920233165265624927052833', '5'); + T('16875360180472543035698945274090527182525755485603,531840', '31730144743668289402261855584556496657877849.51414523164777408433594873822056099197640611496223398710564', '965422'); + T('114634251053546388025309,12', '9552854254462199002109.0865339064408202873873764199', '18'); + T('183409270415172374488271,315', '582251652111658331708.79682520032387306155850071007553282614176099535489744326559', '2814'); + T('2,1', '1.94', '2'); + T('182903874405130637649185200486,34217', '5345409428212018518548826.6208609757260577676285922746405052706839876854656056193106274576096695371939222', '61801'); + T('5095786559079370391313919886663340905109333948827,1', '5095786559079370391313919886663340905109333948827.456737121375509845692166705486257168106577499425369656222842111805457906', '1'); + T('781826702775423639656188,34805', '22463057111777722731.10725470482914830289184811512575254583329325', '310121'); + T('17,21', '0.81', '24'); + T('642449847968682862604540,1', '642449847968682862604539.50719286706858188848922666523', '1'); + T('2232932,29507', '75.6746534717435458614870249', '35207'); + T('188417858747526768690461499725073001733,3250', '57974725768469774981680461453868615.917846152487377706532523813340718234379', '80249'); + T('2512235463,11', '228385042.090496856693737836687110835528901075269402072', '104'); + T('844375191952747415306,142731', '5915850039253893.09474465953436249', '562376'); + T('5398821357017249826283471756217066750564780611585,71', '76039737422778166567372841636860095078377191712.464788995235824488719493358582451477426725287196562573274150399', '20788'); + T('2678627417245,1', '2678627417244.5539595554458498441512623087660882055', '1'); + T('5937979,886', '6702.0079', '913'); + T('93,5', '18.60', '58090'); + T('726330087886628639542796583938445152543562444469390135628,1', '726330087886628639542796583938445152543562444469390135627.99091884025141082950358349062777831341655621667599142195853205636838136485595', '15'); + T('80273,1', '80273.01388365199', '14'); + T('65,4221', '0.0153991811534756810765664526560', '9509'); + T('537861620698135920565351,1', '537861620698135920565351.273301952640253473856107229450', '1'); + T('21589045207819,26', '830347892608.4230723287683895554447840899', '972'); + T('577595426226192934612626685,1', '577595426226192934612626685.0286363631751288945392409001532685640518541279892202642453992056486281846257604', '1'); + T('1675,4', '418.7484751712328113764323953', '26'); + T('19556084872373,345', '56684303977.892786055289803608591940101556713', '352'); + T('19,7', '2.71902394', '9'); + T('5529474308079205564524774009772451131,1', '5529474308079205564524774009772451130.51761287042846642080574332180546078965538812745557608038', '1'); + T('209346348003047912995736,11471', '18250052131727653473.6061372099726072866405051', '11515'); + T('776986810,1', '776986810.1594219281755754257102', '1'); + T('244164980163078814691433439911704751189317,21291', '11467990238273393203298738429933058625.20863275581273538021661214252911409518043401674563445995768940072042555829137104208000', '113505'); + T('1335963025004702580265523343526,35', '38170372142991502293300666957.8857742784242579029128174713642', '173'); + T('29021817758099544970572197889,34', '853582875238221910899182290.852626803328881395374231956097046035', '36'); + T('25607,5205', '4.919692611', '9786'); + T('101904493912965638284134197405,2', '50952246956482819142067098702.5713155960069352658952883488314532333725811763112', '2'); + T('137744409497385418682848482707483773,4443', '31002567971502457502329165587999.94890844640229953492819622422667457964936363221', '4647'); + T('3153045199217207368076364837,1', '3153045199217207368076364836.85821697552566256162690119145512', '1'); + T('1,1', '0.98820163097883359337765041974973089352398769777740690629811505014740114696', '9'); + T('6347903215,1', '6347903214.98333714357446671154140415601041950', '1'); + T('7865439544,1', '7865439543.64842980606939915292766451085112', '1'); + T('3237690453781443948931054435307536847022633061,63987', '50599191301068091158064207343796971994665.0579180143954472511934222589835395025939549529049341055670604818599814635787218355355744623771', '68323'); + T('16547,500', '33.094', '35944'); + T('198,25', '7.92', '879'); + T('48136900151439,5', '9627380030287.78227662306223327607211090', '8'); + T('810188023876443978252916,240291', '3371695252325072425.73760981476647528684572725155145126012755201643744911640005908457166013810637', '594953'); + T('29122019,133', '218962.54888005640775', '570'); + T('42600929421,11', '3872811765.545957776549217228', '37'); + T('1835567,2179', '842.389628282959984577403026165282107385446131435327480129911', '9427'); + T('10715045877924720610637328562303816539523,609238', '17587619087983219383290813380491395.0533666645856507178226823958979342511581839203713355424821734358638', '614310'); + T('5255724839155,1', '5255724839155.35294116304683192133028279893695924503895137408737492483521789962049', '1'); + T('1,1', '0.8978468872480801693946442849195311956942575461556562092198261658', '2'); + T('262004018028579753610099210362465283,291450', '898967294659734958346540436995.935093498025522742208259700262919468727383538368456777271618508283980760681', '449006'); + T('7719603971110112789459092487129510355,11', '701782179191828435405372044284500941.367257069803941074325532535698775501470540336095', '11'); + T('191185328300455108074421,29218', '6543409141640601960.244404134198278885577292621401052797106803852078359839960114', '36394'); + T('10465166381522661,74', '141421167317873.7972970342414003516709434322011311188209619349951980125136084535342139027758', '240'); + T('7902040135126365394659608,1', '7902040135126365394659608.077726021750747291286722149059246102412021295790775165293274649572871360', '2'); + T('116492401903663116224172913052825042248229707047214,155', '751563883249439459510792987437580917730514239014.28387332355496359942769428955017512246414862817961697422654477855510889819244572169952641417683018', '190'); + T('1161,2', '580.6213', '2'); + T('4999366848067334,51', '98026800942496.74502522271320672697996', '83'); + T('155052967013059677537669297640306143,21064', '7361040970995996844743130347526.877278769440031446596394275560016869303377072002659486154804941895737040887923', '42555'); + T('4915589395,87363', '56266.26140356895501876786714596805105223390662', '96564'); + T('1996814563251707684865255053446343344056628802563603747544300835419,35111', '56871480825146184525227280722461432145385457621930555881185407.29170344881337650276681031440473191594935108291821236856625185470036', '36542'); + T('350611450,530451', '660.96859087832849141227', '828317'); + T('595025607,730', '815103.5712333824167995605685', '994'); + T('91,1', '90.9474373813', '7'); + T('520640397828785313386029881258886527,57796', '9008242747400950124334380947797.19231434781804453269843126509668', '58523'); + T('1,1', '0.7', '1'); + T('2432192303,2', '1216096151.53824349736', '2'); + T('182088255527725530185924136198820811105,5994', '30378421008963218249236592625762564.415248549875433131587553202118349363105537060676313739107816391730307', '6684'); + T('2852721959,44162', '64596.75646483388', '93026'); + T('22240697755,6364', '3494767.08909490781227389975332975981042527092609989513703885638542988746801587017415743745', '31237'); + T('638,89', '7.16857182142575386243468931653698455419954180851', '119'); + T('6365209086547966173670265664612892931202087175837077590,1', '6365209086547966173670265664612892931202087175837077590.307044947141883547127069233591193089391933585385866946904448320602686297092942', '1'); + T('447415936707462873637430969941367936988468633406659,17686', '25297746053797516320108049866638467544298803200.6479136045407721264362934913054716728108054995868628807078498679271321502402341540158940227697648', '41076'); + T('556766636479654782236989106,6405', '86926875328595594416391.74176424353622475555994', '9157'); + T('16,5', '3.1934183459202528284347244885465199377401', '11'); + T('69366814480303229226256659588662,1', '69366814480303229226256659588661.85385468147818494724215139782478923263860687041151715994378816519729624732503782164002', '3'); + T('206872032674988736528870510540636795271597443,1590', '130108196650936312282308497195369053629935.4987418677695164526182963222692423472284907274366595734056060718094172585913', '1956'); + T('3296663,352883', '9.342085053684726', '920944'); + T('1901467916531,38371', '49554817.87107450941333', '87559'); + T('35236497328086505353582711620562,1', '35236497328086505353582711620561.9401992755513250318288838292367937207', '1'); + T('2156393081917549337270143486668378869841014072477,9077', '237566716086542837641306983217844978499615960.3918695610681834957819094833282531753966844370947863377761477800766935462547138240866128882311', '40639'); + T('80227083104542559289996173436021300960849044229167256111161292357,10', '8022708310454255928999617343602130096084904422916725611116129235.70048092770865523338951907230464003175896000457756548821368253282172627341860630323893179952355', '40'); + T('14646654367694222221940854473824917,2', '7323327183847111110970427236912458.2637426177732172114494620983511178446999858023257859333622402678207150389963999824040809470078503', '2'); + T('2,3', '0.663', '7'); + T('27963875636216786940514230252872638062266663119606641289638039128214075044862928694740648165,713284', '39204406149888104794884268051537169012997155578432491531617194733393816551139418092569.927497322247096619019101878129041174149753190001476011543505686258781332861014187754125', '898421'); + T('11522420634707,298017', '38663635.41243284778334005538792', '304106'); + T('157263777436938477441584837,17', '9250810437466969261269696.2904128954351819175969727761318768772961877204484176247921068491788133398523250', '23'); + T('2276529,37', '61527.810269929938376521343109850668138767761631527', '52'); + T('4677043,136', '34390.022052748042318976850337684966011768593413342120365', '222'); + T('49253974531233847037400608287727,1', '49253974531233847037400608287727.060540048192515048222477969304021589766722976717090718681939735386', '2'); + T('2160607509685172123,79', '27349462147913571.177199397582134523253856176684228053461559176285030516574874756952', '105'); + T('78052129404159796516380569,250594', '311468468535399077856.53514848720455080879540146109259080789155707071914631548609', '287111'); + T('40103944258853846056256735013082291791174170619985429502015036,737', '54415121111063563169954864332540423054510407896859470151987.83718927418708473127959038816066084224533120453216547984773003205060234', '775'); + T('9213413,115215', '79.967131015930047430988598240344339327429', '146382'); + T('1313141867085165037876810634168452559775493,28', '46897923824470179924171808363159019991981.892596651603443078583217313699611602451988188888733555496625642547664131296842', '37'); + T('8533218224569738665099332127984434063538646794116239739804343876879184515887519,24546', '347641905995670930705586740323654936182622292598233510136248019102060804851.605923571866483092045258463240562511296361654119265411211336042019198176927208580711456953', '79843'); + T('214162254366433222852,219', '977909837289649419.41552439968900800332241887585088624500224888', '461'); + T('1524141790335346850,3649', '417687528181788.6681282293544866931614625951230414', '6410'); + T('8305836543976713538118348277180340222586336935040977205971736934,1289', '6443628040323284358509191836447121972526250531451495117123147.349883517025494372135199719073787587581983279739058143878476420396334557651148941312712594381002', '2421'); + T('12625344856297573143960857366368117442436018000143718905329627,17413', '725052825836878949288511879995871902741401137089744380941.2293688631111047258667617297890350092651444230980392383355854871853724988293848', '29957'); + T('49799008287031995307745299546,201', '247756260134487538844503977.8407984495287628804649309589792969473029', '886'); + T('44230,1', '44229.8640940746684332711646269', '2'); + T('695341392387473187615708533688053494612321911735732263004072039989,12', '57945116032289432301309044474004457884360159311311021917006003332.419123618616690370149051021044082250337110267237814259673029440937922237595010738707535760151768', '12'); + T('1048610192448716663976442300874466291435985376302590107183025006833039111667021956,3711', '282568092818301445426149905921440660586360920588140691776616816715990059732423.05470231283500539106621844843522303682651413708748707464182560598910098632280380429225', '4185'); + T('564179730,41', '13760481.2195468173', '99'); + T('1535358,3677', '417.55724768958258887221999802356746577772806585929098618110903690609575310', '4909'); + T('9432220623393,1', '9432220623393.0361844246328616666243628939101171241757', '2'); + T('2564823,38662', '66.33963581834778293420676990546', '54629'); + T('1,10', '0.1', '5209'); + T('45861865321787548161276827663395729,7180', '6387446423647290830261396610500.797910864788713778286585490522140448230159951171', '8297'); + T('19345,2', '9672.47045', '2'); + T('1621235027393185648213757671997956512719559180709550368213,46478', '34881772610550919751576179525753184575918911758456697.10858900988357153434887154833422609206799928958299650146498864771982234211', '152688'); + T('1,10', '0.10', '571'); + T('14037083559893857042646225061800058376951690953612422931418795682,15209', '922945858366352622963128743625488748566749355882202835914182.1080938918800941797499465697485803927015797682325657123828892678', '74299'); + T('214990,3', '71663.30911497342580428530022113794390987325723075', '5'); + T('307488726044879510002660981395,529', '581264132409980170137355352.35349658712969215704186070305948528667158789544493835023232021586095779408143518', '1469'); + T('7986140723,12950', '616690.4033204624183575117582891638', '45213'); + T('186442582640609698457372644742287508248773821,608', '306648984606265951410152376220867612251272.73190810532616003961033029139820173162304625273178016', '636'); + T('402342388451303346208638031,162144', '2481389311052541852974.134294207606755500782850967202793230491650542666651668050739706230056896340969275037488', '320928'); + T('78241853523003572280986839112347001594408862797249859718,8531', '9171475034931845303128219330951471292276270401740693.906693228378227059405060756165776641079149233773669394894276125419046799506956656383', '12127'); + T('400,2969', '0.1347255413647743121776508902102719647076843003868088', '3453'); + T('3923238860902840839626291104694492525371269916682029,446965', '8777507994815792824105446969437187532292841534.97931381652037574964251891911468943081965790985704', '758290'); + T('35646747251,457', '78001635.1225357380236558357960166239621978669699089151772761258494596715203598593743346261565262019417704', '706'); + T('2683468334240429143171526,38457', '69778410542695195755.558831942122856930461609481624295211857604995876954854137975872813613', '199109'); + T('857821143787449574697977573812019342762480425225461812882950230507,2', '428910571893724787348988786906009671381240212612730906441475115253.25776495579890393989612727541338942514948359370113611786812146845315324593620', '2'); + T('201510238869457784262139645580084027788,1', '201510238869457784262139645580084027788.433065800897233736582903597431923327846329', '1'); + T('38608781052273175033830581491417961344934552,7', '5515540150324739290547225927345423049276364.575944943254543085974802343286568634911541631917053639543590794169', '10'); + T('292623487,68388', '4278.87183424', '74336'); + T('793792872031,9', '88199208003.45664265953995372', '9'); + T('10201,1338', '7.6240657658623830734267630', '54376'); + T('22992066679053461303,552597', '41607295513825.556966469235264236204961015671182279735261042008326101516531', '606489'); + T('314113031689,42767', '7344752.5355764958912381877823', '945136'); + T('22786552661743835954280087582255152144518703,34', '670192725345406939831767281831033886603491.26455918123167096367780477819074132459587344526801847361091447403001267800', '64'); + T('17573479348385910412048883205603677,38771', '453263504897627360966931036228.20347682580886838529942674548009547499946688868816182510007585234388', '46381'); + T('75473594247,8350', '9038753.802035928500', '73489'); + T('261517467644150958487,5053', '51754891677053425.3882842133773049001841242098677038847975074900593966523958', '7047'); + T('7134449311548606923639346547,1', '7134449311548606923639346547.112804404073069945060714830706555901856818370048110134601278840469', '1'); + T('37806932836871856297021727733724124238343972270363,43', '879230996206322239465621575202886610194045866752.62806530892044737038187480030241392596263055431188445162729153784215811022', '47'); + T('7333274067095990846,1', '7333274067095990846.351138936980520182083044922', '1'); + T('1216547636340968,255', '4770775044474.3843159801874529573386574217', '767'); + T('504431408656563019198096470328071071180957480250246834023199409,5242', '96228807450698782754310658208330994120747325496040983216939.986455552080186728491640321801261184902364920421299986856683243744', '5930'); + T('11078314997991539069143123025050347457581,2', '5539157498995769534571561512525173728790.5320269718590661495828504888068010731730753957949', '8'); + T('1564271697783336061228018441408289997,3440', '454730144704458157333726291107061.0456395345856333688836200385200217', '4460'); + T('186593194550751772022221789989,2117', '88140384766533666519707978.265942337331545158189132168003333366607627322769794', '3564'); + T('7628876005219,132254', '57683518.1183102212280', '310461'); + T('85478687995924280983954436,2811', '30408640340065557091410.329420030100682263063726019261554456880639675662867805458887878168290', '4191'); + T('6470726792910130860277335858754095217788330802569343716026302897754173285980528060,691', '9364293477438684312991802979383639967855760929912219560095952095157993177974714.99276540727387009268720823298457991691888717815907421435881615376920831023127122321923253385357011', '939'); + T('4523198057239453672050446673969751,1', '4523198057239453672050446673969750.982888715114504843151109238914542962690753455459880331059163673987075278756', '15'); + T('73447073503191914407442232,2281', '32199506139058270235616.93643140080846067688709303', '6162'); + T('15,2', '7.68', '2'); + T('78438145023100581358518585507076222143917169875433,211', '371744763142656783689661542687565033857427345381.19905314983923110968122150777959792708922490953099', '571'); + T('1,2', '0.5', '7499'); + T('1150752865721854191422680744753413845124279744986,33211', '34649750556196868249154820533962056099613975.6401794585917699904699257964671446961247221389248149631404474350964027899932797090', '288970'); + T('16076493965732650145955199661686357106768139698004095413613703910,17831', '901603609765725430203308825174491453466891352027597746262896.2991419437676397998410373969724327013846829822983652684993660181094261958331254042736453820712', '526347'); + T('59952990463187638,6003', '9987171491452.21355988365672831891871115833105277946211529145', '8517'); + T('437481101068975804785076879586290013500861083645889947003529075931870456655071,479', '913321714131473496419784717299144078289897878175135588733881160609332894895.7640894704400779282366881441709170514130408442820253311598876929674239971303006388', '571'); + T('942821117939,1', '942821117939.0565371890037804928059719232795905869562990', '2'); + T('2935001420859380000157762707121042737,1', '2935001420859380000157762707121042736.786463962708882551445456874895215017511777450740305104656019625159421350155320318', '2'); + T('1202935830992033229631564824298161983619110510518805373783051328257731091663742,273', '4406358355282173002313424264828432174428976229006613090780407795815864804629.091573522116851474330839252731895239804995755007457036768565079804281386796112572872744', '988'); + T('214575955168277704587734045462020765792071421909315615775398203182854444483,74', '2899675069841590602536946560297577916109073269044805618586462205173708709.230122092385266218497768440824927539562064322829675284011146374975633484236446356139989037833789440', '77'); + T('50045992670555904787210785904349993086628482049506558835722589483755503086379483349,2470', '20261535494152188172959832349939268456124891518018849731061777118929353476266997.3072874276195536175288188310939039502675866973828697179032965565983562956493102277329078', '7679'); + T('108,19', '5.682899045', '20'); + T('95920780265488699585348723900916407585247076296,1', '95920780265488699585348723900916407585247076295.9722011782231104515584864013490244939631472605433519900458718986879', '11'); + T('553600997,74', '7481094.55435674169522', '77'); + T('144433407482676852197679175735237771398114384568707349,171', '844639809840215509927948396112501587123475933150335.374342960334521507675621856380306927386460319339374458276206878079117', '173'); + T('6868766813211978712457243,8542', '804116929666586128828.991219864750604264260222291459642492956899214044143458845929414919104910105083368993', '8858'); + T('1208445098905305130465909241337086457990767085995,831', '1454205895192906294182802937830428950650742582.42478544512467032570845257550424907273378267749042187915529412467328062395677178', '847'); + T('71541469,14', '5110104.926816824', '14'); + T('85305914129449392893425526497554757292362463826540038888586101763289670816704873,1716', '49712071171007804716448442014892049704173929968846176508500059302616358284793.0495345021247989668017828545182900215671406666272584768815635473370187911747761623186498587', '1955'); + T('34910355329147790705808594414928780898400374709520341716387506640744,260471', '134027800903547000264169886148280541397700222710091878621372462.349912274303723867421927305257380152124131927422266182255099973219', '500555'); + T('2443149449559899,68934', '35441863950.44388835629755412356920533972949735', '72105'); + T('10235833030110696450984055472910862445487735415,46713', '219121722649170390490528449744415097413733.5520090766481292920641152585608933353122716914574714147115271201821924', '81445'); + T('2412282,65', '37112.030602327213004965512285789841303110099812346432158134090838533603521058186494', '68'); + T('197727336539381948963943498780602681817294393124640440907866490545352,205', '964523592875033897385090237954159423498997039632392394672519466074.8877983219803431837713331765228187870876208300323215077046996150117195232993', '319'); + T('15,2', '7.5', '68659'); + T('29693788745631893429990333506515902428051472103452,706235', '42045195643988040000835888205081739687287478.110617570638404585755831163301839410670137680785270602419771', '744617'); + T('73297180366617098,1', '73297180366617098.3144078057048487400', '1'); + T('1183788966238,17', '69634645072.82347802778257521139329875246046832067292347716607881216167245956951211505074357948', '580'); + T('337857977447058978741478048573512513964055992298298429352553483782737183,5899', '57273771392957955372347524762419480244796743905458286040439648039114.626716392720723625021095618796943542634113675561622196537826531821852407006351', '373605'); + T('59745671209268865703423430945,2', '29872835604634432851711715472.453145834917249137580363606422723099328289141421318324960362064961', '6'); + T('859671161301,148', '5808588927.709477965543', '158'); + T('327826595930709915652253567185,117', '2801936717356495005574816813.547008571112938049893857162154471', '2682'); + T('208334,583', '357.34820', '985'); + T('417920309434403655587245399148447,5', '83584061886880731117449079829689.3970122523691827620394154188956126026896151043485425601', '11'); + T('332161,36', '9226.69454628762590761188160545639599510876405724295839599630525', '95'); + T('492939727089,697975', '706242.669277552920397338754', '908453'); + T('1060742245237932,1', '1060742245237932.1437804740224071805053424640287668142484799633802423091065073873258946063378900279156089046', '1'); + T('43273220994074199614838155038679231161,1576', '27457627534311040364745022232664486.777284267145378185527688171290545838090904705362680992', '21199'); + T('37269,200', '186.345', '5642'); + T('10102884,718535', '14.060392326052129', '967773'); + T('1219084532009380132581392727265570983021563997,14', '87077466572098580898670909090397927358683142.64373446162321728317853561861789635745516311592864', '32'); + T('171,307', '0.557', '460'); + T('356651164544964166146468975252,5', '71330232908992833229293795050.392421805278026288006060731316131740551778431198546677842557461594293258596467893254118405', '5'); + T('2206833385925938227905409311,36', '61300927386831617441816925.3056000492614958215838075939699', '95'); + T('2717956424176196011003730333667350,1', '2717956424176196011003730333667349.7306970440606935095598372413709729268', '1'); + T('5785393455764129633036790208876423850860836737707710175673874728149225089964815672236,7767', '744868476344036260208161479190990582060105154848424124587855636429667193248978456.577314278497503536146945605079240467181174559062273212358677378627319841643644350778240', '76564'); + T('1161,5', '232.1980', '44'); + T('24726923024624909624212763782,25299', '977387368062963343381665.8279773904190662818049691495617687914', '309921'); + T('90987255907509062168543931363687667620909919141734393421873391,368455', '246942654890038300928319418555013957256408297191609269576.6739249026294236002555892691179015779033299594359428884187399481034374064629205214720091827', '444997'); + T('6107945601448519394102630769235213774292217827152610948371675819819794650452964,1', '6107945601448519394102630769235213774292217827152610948371675819819794650452963.911972351804484891326252430492737744797210771982506527128972981079255477625007979629605229', '2'); + T('60582631603433937,8795', '6888303763892.4317225732362317829730210699185957', '13023'); + T('924269334814001,207', '4465069250309.1835743819175830981731288956258299854260859884448829672511937457501', '293'); + T('6639539158116313497,206', '32230772612215114.0631244318936864176600857945579315355413334651806017', '294'); + T('5041241320711878795159,22', '229147332759630854325.410203402656522969600', '34'); + T('583,1', '583.3709375101662808436673731501019705754894240048302559234903760275308517229172', '1'); + T('78633259182155920440744871,101874', '771867789447316493322.58349529813193835020381', '205541'); + T('82102,271', '302.9594088297030760145', '393'); + T('14074604229494197,668215', '21062987555.64331390345832', '882097'); + T('38059055655073430300661325288520231229,4615', '8246815959929237334921197245616518.14279523235188926660945402784286683812836715240105189956436644363941258265156731324437', '9220'); + T('486761604513222981,17381', '28005385450389.6772912944793568949303', '31501'); + T('175551139999215326573815807,242', '725417933881055068486842.1776848404920362490446391323254203047651712', '654'); + T('83,1', '83.4546729624154107891414754194986886501010566249251149259469106168', '1'); + T('414475,1', '414474.886867910455898589', '2'); + T('10888695234363590494551796761105710263060721374178557358201,12', '907391269530299207879316396758809188588393447848213113183.416301978225238330934261320589911002579118705166590028299156884288694543667054408155068376964606', '79'); + T('286464034178,3', '95488011392.68165187332682534905110794125997507098491840188910335502196279864989624086867102546849244', '4'); + T('668447227940,43947', '15210303.955673880085109578181067218136526836139659839', '95990'); + T('1967,6688', '0.2941088588343008701843', '9768'); + T('75109477871,485', '154864902.826805976232816926890145049168468569260391930749888426437423962', '607'); + T('213183802966400860090647,263', '810584802153615437607.022810961591907292757102947541669', '598'); + T('43056714838957186,32235', '1335713194942.05633628090090583329650340', '42219'); + T('268353852074,5', '53670770414.80032170547125902473828206966175034334621779372380824973952480291058107718671403832311691055877', '170'); + T('2186335470375799,701', '3118880842190.868759139435558849448310039566842312194008045', '2332'); + T('57411860,1', '57411859.9022270896768046667038700171202296361618483869857700616072411266642815342383915741', '2'); + T('267977324713872263310162785716701711718,1', '267977324713872263310162785716701711717.723363678989761781788396613638357558534985574238', '1'); + T('1,1', '0.93975044', '2'); + T('5220050569,33611', '155307.8030704234564212140039371642554614853869565892270988882219659485221018', '40474'); + T('929196388431713792942501463987504635208031773362379819037,10', '92919638843171379294250146398750463520803177336237981903.6998915282781857375325494762319240056440144680509967422813830936344214429604941', '161'); + T('135189175314691708540514427,34', '3976152215137991427662189.029089859359115789727429472083152955', '44'); + T('178496793807305,3', '59498931269101.67341651289764334798299', '10'); + T('28953864542244521672518662959329064963,1302', '22237991199880585001934456958010034.533794189847734064794558196958783605867923015359980997857492', '7709'); + T('63453473492536727313152722,1', '63453473492536727313152722.117501523352379698983442205150925604583299973094118972659206526799924556265155676677565655996784819', '1'); + T('2354616796181372,3', '784872265393790.7899857377275372165161613720867003677895', '3'); + T('751530355586715733980909778114787014730961080,9', '83503372842968414886767753123865223858995675.55044820224824632303844521455280789663171560785577862318186544211959819', '9'); + T('22356002,299325', '74.68805478994431561057', '475984'); + T('1004346799,3847', '261072.7317390373573439501681537210331007400524043782883748343985532566718630458', '6781'); + T('153494881923896158957371,262882', '583892704422121556.2776112476168651952528665744272702680374729523657500274346100536469900767949261833977217955', '303274'); + T('914429817632267,109905', '8320183955.5276557027198219649678748529779134912036046830590971420068279283602748367072877', '158163'); + T('9787288468125405218949937571075629551994420536796208677387264,5', '1957457693625081043789987514215125910398884107359241735477452.8020344719128402729740667465646566172893416633248347553225784565', '9'); + T('972383851579928284342475475240744,1', '972383851579928284342475475240743.93833057061207062377573942707899328841206929761487155707619', '1'); + T('227161,15754', '14.4192586', '42794'); + T('24,43', '0.55814928', '50'); + T('86815,883', '98.318233883469928701242143703889452452189640274700389087359375180495206739', '1295'); + T('158102075545494626716142158943501696850901702,27', '5855632427610912100597857738648210994477840.8148706240869250708802459205761650371721955732529677375775213714657834564033767693895', '53'); + T('4573874572374703,123057', '37168747591.560845786911529343095322680071068130368028', '713297'); + T('94137508309,1', '94137508309.12944203063142389', '2'); + T('128263524729405205764013306079835664513219670002964257195470632782718792,96061', '1335229955230584792621493697544640015336293292834389161006762711014.03058473261439886528254630252502628596554777041358913090264220653599909490115329', '343998'); + T('62696361050395475983517,313445', '200023484344607430.278093445431579320407235', '369284'); + T('11477001729,2', '5738500864.606603032325764061', '2'); + T('6522584,7473', '872.8200187578967040279', '9244'); + T('52287796137932885846742481073302755432,37439', '1396613054246451183171091136870716.510376879576631687165374051269033365927122943423452', '44514'); + T('11042,541', '20.41035109316777251868202719496081724', '7581'); + T('3607458421641129939414052,74321', '48538884321270299638.245610258206316802894', '274601'); + T('5695785474134027899942879,1422', '4005475016971890224994.99226471327230623639080467989', '2042'); + T('8878654273655,9012', '985203536.801486935043294', '9665'); + T('65,16', '4.06247646638986069242804', '411'); + T('29908,3', '9969.299545', '6'); + T('3234129973440988418535787398987835234217977885694939183658,1', '3234129973440988418535787398987835234217977885694939183658.0555777579527219596665429746310422846678601273328325482789110754280233239741', '1'); + T('38763,524', '73.97519', '728'); + T('7,1', '6.56', '1'); + T('287773507776094924831763292813488774703439511,5539', '51954054482053606216241793250313914913060.030871977269534757984962396972028182875803654912773216689075089542071374319', '6975'); + T('135902709964850252402968509809,145', '937260068723105188985989722.82062844541535607143554252535789346214610335738887862350472', '173'); + T('12272393029782069191611244866640477536622317952693272516,1915', '6408560328867921248883156588324009157505126868247139.695038408447774384790132755871611355838250229705452357706632277610603203384972', '2031'); + T('2225,192', '11.5885417757514787571566159059881098551576095026723816', '9297'); + T('53371779627153865605630667958238412899341574421446540565563726321002579114955251781202163,5836', '9145267242486954353260909519917479934774087460837309898143201905586459752391235740439.02724468894046585153819806105344749411841071667196589490983824705161267037058650756988034162768018', '73957'); + T('2446436726419359505665677336229199860520232227,534', '4581342184305916677276549318781273147041633.3838917648266110125209840196281133496676870967557119215942174589504706059079700', '557'); + T('492176,8321', '59.14866', '8502'); + T('9,1', '9.01348435261992079442197040', '9'); + T('328435344544083927300588344986968685085,1', '328435344544083927300588344986968685084.696665368175202653355800835276350404235962273399764329774312731281859536060585323082333783861', '1'); + T('159247659795083,438555', '363119015.391645289643', '560287'); + T('6,1', '5.70', '1'); + T('72150594429471845730,319963', '225496680645799.18843741307358458329580279139701535416802994965032378655564757028', '549282'); + T('8,1', '7.95841526551959133597120', '2'); + T('426677,11', '38788.81813330', '24'); + T('1751990915929005698023297071945011392910508303508376261581982019497491952385038529603989010476,18689', '93744497615121499171881698964364674028065081251451456021294987398870563025578603970463321.2304564170567292002043552709059704140869790828468039869462307264644682137220664645749338191124', '21564'); + T('247438600592095556152258502462038301212815837584618493182,487', '508087475548450833988210477334780905981141350276424010.64065691758941436115799603577450664221966964524772848474790743487607130855363168196131673164233', '4945'); + T('1830602979532381493889680621382105980461277,751704', '2435271036913973444187713011214661596.1352833030042512463024221180036627596838788009350350', '861635'); + T('3920365916916176786055106017,46', '85225346019916886653371869.93476900513189071699081282383598839961655611874932469229156603202305772110380915189992118499498858', '520'); + T('472649930038,123', '3842682358.03251262860394055442674', '147'); + T('1322110218557217605016482876416321878749760304812247,155948', '8477891467394372515303068179241297604007491630.6220470926214830053246154267443752408560398235344548438873690519655363049727184587649', '186638'); + T('23547504929176,55', '428136453257.745545520225605', '65'); + T('17121761490301749308279011219417223490311,232710', '73575529587476899610154317474183419.235576468560490943788124174995507987278744551812', '543753'); + T('16210026155636340189350564224854481593345828818610444963909203142193849898,239', '67824377220235733009834996756713312106049492964897259263218423189095606.26777934017026855940357410680016571583242046733124370322513732722378950028598', '692'); + T('190721792400863327458476761464009950717029,30', '6357393080028777581949225382133665023900.9666170639928048559949862724415791705119899615018742118160129182', '79'); + T('61,200', '0.305', '244093'); + T('1716239054042743503675603092,2003', '856834275607959812119622.1128307556027562949206592525403122428', '7036'); + T('43,1', '42.926', '2'); + T('27358642114,8563', '3194983.31355833866', '9623'); + T('26693152565727887582,12127', '2201134045165983.9681701980199628544994221693300315787693850757330347383069440481917705451090', '48076'); + T('6108091753110008516780,1', '6108091753110008516779.73479487754085449867983587832803285557110100750079855828473226', '1'); + T('2,3', '0.718905305925227067205880082792710', '3'); + T('3473047534252762578370964997,58594', '59273091686055954165460.02998600522350350905681210811307517203796586454683', '61501'); + T('214822703242583,56', '3836119700760.4108921624057841119514683803433710971136', '64'); + T('26939714,3', '8979904.64498692634635572320542201896798645625719108607536315732247799297935360779199341966787552114794600', '5'); + T('2888884587551576320,29', '99616709915571597.240972811959289242975553142', '34'); + T('947939103218542770831,1', '947939103218542770831.0521624243633591645983271158385778064925689940216692520225367', '1'); + T('9933088375957272302206358007975451939487,2', '4966544187978636151103179003987725969743.72438467636183210768718000533720409321549827235614', '2'); + T('2384620985464,48617', '49049118.322068409482196547648333', '50827'); + T('1481114193489213622796229711,159566', '9282141518175636556636.31168920697604560950832652295984016490111948393975418960516033185', '434728'); + T('83229715325,52', '1600571448.5577172712032806916796048084329678112100319702869128418611147806748', '97'); + T('259,9', '28.786385', '9'); + T('18421000231117295985083192807209645332,25', '736840009244691839403327712288385813.280233799772105420526583646770509765903251570390', '65'); + T('699729069573093,1', '699729069573092.9415209617669715638690428130440588', '2'); + T('1269145537981521474122771320340177027273014491011926684206752265265583667980863639117069,46', '27590120390902640741799376529134283201587271543737536613190266636208340608279644328631.9347579670840456037995587812140760559559266417811221041968023988665383416259781405442396223206087', '88'); + T('7035913928382432889095670790,1', '7035913928382432889095670789.9451603279584465650713190452458435039596863298954339307519647608553073011741266856074291808762823441', '1'); + T('5380967249116311236814136453793462678035221359070439177808760415,14197', '379021430521681428246399693864440563360936913366939436346323.900471930297520912068842457020834544905293996118477045554870916446118758909841288498400493527105', '91913'); + T('5340404069347070913584555456280093652528470496019424627166576,7', '762914867049581559083507922325727664646924356574203518166653.71250635103031314100742496440500618527676618848777566910526532273', '12'); + T('198596768231311216444471847625266,1', '198596768231311216444471847625265.83726507122160159383594314037463792212479812445545510304752094547024953', '1'); + T('334,53', '6.301655789150', '56'); + T('9482145824073019,308', '30786187740496.81493576082236077814823570323411336136297997538465529623724716057733663574274358863', '518'); + T('49564672028692779312869265853690250389636933591279,1', '49564672028692779312869265853690250389636933591279.05690047648396367999804886767002033615206952728024860778041603073475913559839990', '2'); + T('180043559436755584546341153685052792171032546504943274982733,271928', '662100112664953901570787685288211556629080295169836408.83885808006294519499163145424494176495048682043552813068297869819085051', '323702'); + T('135402176306147,40', '3385054407653.6752566904201890867915343261767717538895', '41'); + T('487749,5656', '86.23567892818914544812557542982186431015804303', '27597'); + T('689353268,161', '4281697.316772446980582095053374575467875610055', '661'); + T('2341601,3', '780533.72419690', '3'); + T('133253,2', '66626.369877360981293176690373014842055920029', '2'); + T('23614,1', '23614.044401474469046155210490395', '1'); + T('281757167099338050985151947541415731483,42890', '6569297437615715807534435708589781.568733970826316638832067132912947392456994401031191534637582563566923232', '64820'); + T('7,30', '0.2334', '77'); + T('188159408735932593,55153', '3411589736477.3011984841415382', '62884'); + T('49893755664003300784200999639,5755', '8669636084101355479444135.471589937556905646874989257298383710889254914096760398878896706072509550992971893614682', '5837'); + T('180209,22', '8191.3248002765501146181', '22'); + T('70415704682823093030143170,135531', '519554232484251522014.4702687945814801414708882557', '370767'); + T('309703964089501625654278146528831017909611280781,531191', '583036919092194004895184870468119787250934.7499882339908947319021034086598173362092896910180810566025185828', '568168'); + T('6311026676431831888549757346533448414306654210393,1', '6311026676431831888549757346533448414306654210392.54151415748259382280340911118846529021380341028941701654077953763414807744375826120008106076828300', '1'); + T('677239979042028152601158,7949', '85198135494027947238.79204931221625179624149473557938172126847707', '9883'); + T('1829735554262281,259', '7064616039622.706568544570626683229950243512536015093535101968887493794302873092483253629579230290', '331'); + T('1,2', '0.317925082', '2'); + T('65422,9439', '6.9310308267754', '17120'); + T('46961497053061382777609130118847271892089775387846767743314411513423583155027,5', '9392299410612276555521826023769454378417955077569353548662882302684716631005.400654014794318218848509928000496866762016629616754055629753036755426927256260779921696553', '67'); + T('500194857457135627698,665', '752172717980655079.2451135360411912947058454904697242572660767', '687'); + T('47471355958725273634,1', '47471355958725273634.16168212923451461593072522210510640420155857994234198580802495272039820633735570319533813', '1'); + T('36696342857496890219,1', '36696342857496890218.90572359364080164761627035720048698', '3'); + T('4695131986657142516305076,510781', '9192064674796326637.649160794940805998501189986', '747475'); + T('349103010796287846089941527434273199124602123798955453463589836132521373235273,71', '4916943814032223184365373625834833790487353856323316245966054030035512299088.352127776626217594251476581025885809792618906667335429116230898910825304240224', '299'); + T('1358220866465871480816463658707268378971,16', '84888804154116967551028978669204273685.687886576615307696608953854116834104494900462161862843643799426800222', '91'); + T('27194039930406868209865840701464121302724394008919831130512956946096037284286,47', '578596594263975919358847674499236623462221149125953853840701211619064623069.9146866857902214919864171822857086850016715830174570427578437592194338070650774544060278', '58'); + T('2751902407120,23', '119647930744.3479655249971735656329573846182167', '43'); + T('4469030866140915638532462562432305966504,1', '4469030866140915638532462562432305966504.192178572338167275494797670860545892956073433782578010264482847', '2'); + T('4704489769335751301445685485486877217294,103', '45674657954716032052870732868804633177.6116627025867182700549754236229291028015465033707982024', '443'); + T('1475216297524085707694311943977667,151', '9769644354464143759564979761441.503308131238849125841196958844356073790374671626586526675819233898553472', '734'); + T('4907983733090076808453942390,57', '86104977773510119446560392.807235262788300753240131745761023198496136680383768897782992', '59'); + T('585074587,61012', '9589.5002130729144884804491184088195014563319127651629128080417190511729', '67046'); + T('7,1', '6.9', '2'); + T('504,601', '0.8386', '776'); + T('47984,267191', '0.17958688728350164035953663206762777096380577875511144865128', '335603'); + T('10388140798372,2093', '4963277973.421882452088446982138192961421705231905173423353291761058587', '13798'); + T('20168990044874146939541,7160', '2816898050960076388.204050292237501110723265705833631209539445571975161631843126782', '8609'); + T('46896058387748469269291854711564296983,110836', '423112151176048118565194113027935.8419917716416221340193798283264901', '155719'); + T('10955549766043717068313994547,128018', '85578198113106883940648.9286428471045878019343568927449610831989116', '378555'); + T('647078048579323459391277902984368763031859387250426744686475450876664538395892114032,1', '647078048579323459391277902984368763031859387250426744686475450876664538395892114032.3902894368682962019659983250422182774256220836412025664532446636812180965587379981258', '1'); + T('18638867424143570538275250698558378620490371,4', '4659716856035892634568812674639594655122592.7613196710958960564528035771871961517785715362059753295820571', '4'); + + T('-766693107209001147673676223300000000,1', '-7.666931072090011476736762233E+35', u); + T('-449394937314220211511925695600000000000000000000000000000000000000000000000000000000000000,1', '-4.493949373142202115119256956E+89', u); + T('579061232699508282365391682698798449087639,5000000000000000000000000000000000000000000', '0.1158122465399016564730783365397596898175278', u); + T('-5514336245609206034070613442000000,1', '-5.514336245609206034070613442E+33', u); + T('-1626302750634169116141012001000000000000000000000000000000000000000000,1', '-1.626302750634169116141012001E+69', u); + T('-1795503669658780056331087359,20000000', '-89775183482939002816.55436795', u); + T('-478536837039153,200000000', '-2392684.185195765', u); + T('-19898168880712128313811543240000000000,1', '-1.989816888071212831381154324E+37', u); + T('-363762350297028160717513248300,1', '-3.637623502970281607175132483E+29', u); + T('-8468355353839925110875467363,10000000000000000000000', '-846835.5353839925110875467363', u); + T('-45775371,10000', '-4577.5371', u); + T('113017973534801596808086521,1250000000000000000000000', '90.4143788278412774464692168', u); + T('-60641938108001991714010900430,1', '-6.064193810800199171401090043E+28', u); + T('-6268106205338927353362914493000,1', '-6.268106205338927353362914493E+30', u); + T('-62639169752501205441274039740000000000000000000000000000000000000000000000000,1', '-6.263916975250120544127403974E+76', u); + T('538570638075066218029616939267858613539095601141862844311,10000000000000000000000000000000', '53857063807506621802961693.9267858613539095601141862844311', u); + T('-458667133551,1000000000', '-458.667133551', u); + T('-1856541268082778545036889427,2500000000000000', '-742616507233.1114180147557708', u); + T('401060653077651395227747,12500000000000000000', '32084.85224621211161821976', u); + T('-4144323558304702676396445443000000000000000000000000,1', '-4.144323558304702676396445443E+51', u); + T('-5542449392944384114719343577000,1', '-5.542449392944384114719343577E+30', u); + T('33218113354409142794187676923560201901246573,125000000000000000000000', '265744906835273142353.501415388481615209972584', u); + T('-313400727241063772788345397,10000000000000', '-31340072724106.37727883453970', u); + T('-2001790975721803137,2500000000', '-800716390.2887212548', u); + T('-2000194173750641732491991877,5000000', '-400038834750128346498.3983754', u); + T('-4665510204000006565975869513,50000000000000000000', '-93310204.08000013131951739026', u); + T('2153528479648597306374181609165668498526259590105002419225534999299,39062500000000000000000000000000000000000000000000000', '55130329079004.0910431790491946411135622722455066880619321736959820544', u); + T('-30666677738567071,5000000000000', '-6133.3355477134142', u); + T('-4703545825363662923055913431,50000000', '-94070916507273258461.11826862', u); + T('-7623267021806768883120286367,100000000000000000000', '-76232670.21806768883120286367', u); + T('-47613686004517,1000000000', '-47613.686004517', u); + T('-4426382462876620839114533,10000000000000000000000000', '-0.4426382462876620839114533', u); + T('-3208666589586606174447191,100000000000000', '-32086665895.86606174447191', u); + T('-7729062348415188688065314918000000000000000000000000000000000,1', '-7.729062348415188688065314918E+60', u); + T('-2160223698870209381629363153,25000000', '-86408947954808375265.17452612', u); + T('-2004385076106459382854411831000000000000000000000,1', '-2.004385076106459382854411831E+48', u); + T('-8002741891355462634094119996000000000000,1', '-8.002741891355462634094119996E+39', u); + T('-4368891335671811,100000000', '-43688913.35671811', u); + T('-400258929245951237,2000000000000000000', '-0.2001294646229756185', u); + T('42762676503070237126609626887821888428451673288895043501,100000000000000000000000000000', '427626765030702371266096268.87821888428451673288895043501', u); + T('-58304052117107641964012899950000000000000000000000000,1', '-5.830405211710764196401289995E+52', u); + T('15248669391693474071160842935287056367141428182921376132980388727,5000000000000000000000000000000000000', '3049733878338694814232168587.0574112734282856365842752265960777454', u); + T('-8078047970318036600976065350000000000000000000000000000000,1', '-8.078047970318036600976065350E+57', u); + T('7,1', '7.0', u); + T('-6226798387179777853909992923000000,1', '-6.226798387179777853909992923E+33', u); + T('-7448516509843407495470415780000000000000000000000000000000,1', '-7.448516509843407495470415780E+57', u); + T('-78852027500722155037504331190000000000000000000000000000000,1', '-7.885202750072215503750433119E+58', u); + T('-3342348042119829837180052129,500000000000', '-6684696084239659.674360104258', u); + T('15672687176259210859051407089930945124489111085110817031431,40000000000000000000000000000', '391817179406480271476285177248.273628112227777127770425785775', u); + T('39866154729780717195080337049315868519050979213540479786966580509961183,1000000000000000000000000000000000000', '39866154729780717195080337049315868.519050979213540479786966580509961183', u); + T('-993671543846886085686711917800000,1', '-9.936715438468860856867119178E+32', u); + T('532028339563122259746625760616140111884633179604572642613837,500000000000000000000000000000000000000', '1064056679126244519493.2515212322802237692663592091452852276740', u); + T('-697966803816803579573431799,25000000000000000000', '-27918672.15267214318293727196', u); + T('-48787459362042945333251298680000000000000000,1', '-4.878745936204294533325129868E+43', u); + T('-353168187829651949299,4000000000000000000', '-88.29204695741298732475', u); + T('-1403470827451558036088375821,20000000000000000000000000', '-70.17354137257790180441879105', u); + T('-68304813987155896442052862570,1', '-6.830481398715589644205286257E+28', u); + T('-28707593804742896781267400000000000,1', '-2.870759380474289678126740000E+34', u); + T('-1791426377870978262043979561,1000000000000000000000000', '-1791.426377870978262043979561', u); + T('179838406674297924775572988142470977688025003111919,25000000000000000000000000000000000', '7193536266971916.99102291952569883910752100012447676', u); + T('-2423075550414669291292735759,5000', '-484615110082933858258547.1518', u); + T('-776725396418999866033600668900000000000000000000000000000000000000000000000000000000000000,1', '-7.767253964189998660336006689E+89', u); + T('-369087919583602506700335119,50000', '-7381758391672050134006.702380', u); + T('-65769870411112553029542951,200000000000000', '-328849352055.5627651477147550', u); + T('-1198038835922050392798019,200000000000000000000', '-5990.194179610251963990095', u); + T('-40097191351465303957388254440000,1', '-4.009719135146530395738825444E+31', u); + T('-3236635346912723615834792627,5000000000000000', '-647327069382.5447231669585254', u); + T('-2365771,250000', '-9.463084', u); + T('-160497076958746128902700099,3125000000000', '-51359064626798.76124886403168', u); + T('157938109732784046764321035938547478521587349076387,20000000000000000000000000000000000000000000', '7896905.48663920233821605179692737392607936745381935', u); + T('3516380051744022949626313427473,5000000000000000000000', '703276010.3488045899252626854946', u); + T('-86489135514398778941814310290000,1', '-8.648913551439877894181431029E+31', u); + T('-301393313166931162873106807500000000000000000000,1', '-3.013933131669311628731068075E+47', u); + T('-518869594507859770521243546000000,1', '-5.188695945078597705212435460E+32', u); + T('-1950909743929332443100687271,50', '-39018194878586648862013745.42', u); + T('-8773131005595091487081140354,1', '-8773131005595091487081140354', u); + T('-4355596294471508983960024769,100', '-43555962944715089839600247.69', u); + T('-2880570808953415045636806327,50000000000000000000000', '-57611.41617906830091273612654', u); + T('-9320214110050561347793210341000000000000000000,1', '-9.320214110050561347793210341E+45', u); + T('-2028302171,1000000000', '-2.028302171', u); + T('-232946686791834523955513553,5000000000000000000000', '-46589.3373583669047911027106', u); + T('32153248599816465463513302064276865531758911323110724293,2500000000000000000000000000000000000000000', '12861299439926.5861854053208257107462127035645292442897172', u); + T('-8744838688036249566782650227,1000000000000000', '-8744838688036.249566782650227', u); + T('-623804321303869879672219319900000000000000000,1', '-6.238043213038698796722193199E+44', u); + T('-5226891267180881946811097711000000000,1', '-5.226891267180881946811097711E+36', u); + T('6104731674327122118125159140803482511,50000000000000000000', '122094633486542442.36250318281606965022', u); + T('-3631918259327646858473441459,100000000000000000', '-36319182593.27646858473441459', u); + T('-1848392047279159333633594727,500000000000000', '-3696784094558.318667267189454', u); + T('-264510547222964010201402067,2500000000', '-105804218889185604.0805608268', u); + T('23965604410399646104889267,100000000000000', '239656044103.99646104889267', u); + T('-7462093867393361276933908373000000,1', '-7.462093867393361276933908373E+33', u); + T('24323093395343447761780819,25000000000000000', '972923735.81373791047123276', u); + T('820159670097111265573137140169274052235176656378637635665429413451,10000000000000000000000000000000000000000000000000000', '82015967009711.1265573137140169274052235176656378637635665429413451', u); + T('-13218678465057612022150417,10000000000000', '-1321867846505.761202215041700', u); + T('-6699947761211673976391555178000000000000000000000000000,1', '-6.699947761211673976391555178E+54', u); + T('-6087775300361116653641781722,1', '-6087775300361116653641781722', u); + T('-1174267411076461674383873197,12500000', '-93941392886116933950.70985576', u); + T('-9622612849795128416976470129,10000000000000000', '-962261284979.5128416976470129', u); + T('-430267205006530807363136683,200000000', '-2151336025032654036.815683415', u); + T('-1842468826711949238742823267,2000', '-921234413355974619371411.6335', u); + T('-896792855550853822680165595000000000000000000,1', '-8.967928555508538226801655950E+44', u); + T('-7249373999522375642630010999,10000000000', '-724937399952237564.2630010999', u); + T('-867584543901195289988590669,5000', '-173516908780239057997718.1338', u); + T('-7172260193178638618675644585000000000000,1', '-7.172260193178638618675644585E+39', u); + T('-589873963727757525194937079400,1', '-5.898739637277575251949370794E+29', u); + T('-5890981801970379206238029411,10000000000', '-589098180197037920.6238029411', u); + T('-452864647493799097082782472200000000000000000000,1', '-4.528646474937990970827824722E+47', u); + T('-600618187610370877245711717700000000,1', '-6.006181876103708772457117177E+35', u); + T('-667,100', '-6.67', u); + T('-535739501101785482356483511,20000000000000000', '-26786975055.08927411782417555', u); + T('-2189002367733133,500000000000000', '-4.378004735466266', u); + T('-4135862533810979636019397675000,1', '-4.135862533810979636019397675E+30', u); + T('-14984699501047789,1000000000000', '-14984.699501047789', u); + T('-2644213426631746862661931503,10000', '-264421342663174686266193.1503', u); + T('-2092299259157497414090361017,5', '-418459851831499482818072203.4', u); + T('-77,100', '-0.77', u); + T('-54276151887,1000000000', '-54.276151887', u); + T('-7316738873979211718601112500000000000000000000000000000000,1', '-7.316738873979211718601112500E+57', u); + T('-389683579126928886377631531,2500000000000000', '-155873431650.7715545510526124', u); + T('46789726161807116524384304297700033991397937633588752307,10000000000000000000000000000000000000', '4678972616180711652.4384304297700033991397937633588752307', u); + T('-9196858034762943045297291137,10000', '-919685803476294304529729.1137', u); + T('-12757819,25000', '-510.31276', u); + T('-2751580109664699528322719473,50', '-55031602193293990566454389.46', u); + T('-1397067073903866232334961397,200000000000', '-6985335369519331.161674806985', u); + T('-4812745393643600076996562763000000000000000000000000000000000000000000000000000000,1', '-4.812745393643600076996562763E+81', u); + T('-13515907799732096505704651000000,1', '-1.351590779973209650570465100E+31', u); + T('5425915792163208468016304413313938329266256242679179675690564113030627,1000000000000000000000000000000000000000000', '5425915792163208468016304413.313938329266256242679179675690564113030627', u); + T('-10827300142961420614583582960000000000000000000000000000000000000000000,1', '-1.082730014296142061458358296E+70', u); + T('488478745829,50000000', '9769.57491658', u); + T('-2319703638146144907642415179,250000000000000000000000000', '-9.278814552584579630569660716', u); + T('8199609,1000000', '8.199609', u); + T('-1132520281920903148966859641,50000000000', '-22650405638418062.97933719282', u); + T('-9435372448691264711,10000000000', '-943537244.8691264711', u); + T('-5430432705270926972283794348000000000000000,1', '-5.430432705270926972283794348E+42', u); + T('2547106921,10000000', '254.7106921', u); + T('-2013361060932518973304030049,250000000000', '-8053444243730075.893216120196', u); + T('-299071373209294751127694543,4000', '-74767843302323687781923.63575', u); + T('161261,5000', '32.2522', u); + T('-2149015945426180798371334522,1', '-2149015945426180798371334522', u); + T('-1219052557726696173105236523,1250000000000000', '-975242046181.3569384841892184', u); + T('-6635702255618430700913831019,1000000', '-6635702255618430700913.831019', u); + T('-4229092410987972953057006873,100', '-42290924109879729530570068.73', u); + T('800876757958087347097942687332875742929708200305858327085977609,100000000000000000000000000000000000', '8008767579580873470979426873.32875742929708200305858327085977609', u); + T('-2665484396670548074136945193,50', '-53309687933410961482738903.86', u); + T('-3156306908006626264325676067,100000000000000000', '-31563069080.06626264325676067', u); + T('-3,5', '-0.6', u); + T('-8680573119149141897627467752000000000000000000000000,1', '-8.680573119149141897627467752E+51', u); + T('-82860324718555460591215170260000000000000000,1', '-8.286032471855546059121517026E+43', u); + T('-4531829930266176401806361441000000000000000,1', '-4.531829930266176401806361441E+42', u); + T('-5737601975600871638965999673,1000000000000', '-5737601975600871.638965999673', u); + T('-37760607898500795218600331790000000,1', '-3.776060789850079521860033179E+34', u); + T('-27369129037741,50000000000', '-547.38258075482', u); + T('2477983988516065743406448097218451318402450481,10000000000000000000000000', '247798398851606574340.6448097218451318402450481', u); + T('-705385142506364347385362693,1', '-705385142506364347385362693.0', u); + T('-4969675047511558769703779774000000000000000000000000000000000000000,1', '-4.969675047511558769703779774E+66', u); + T('-85382944582940147310728016560000000000000000000,1', '-8.538294458294014731072801656E+46', u); + T('-1782322041330569224195797189000000000000000,1', '-1.782322041330569224195797189E+42', u); + T('-290994034468272029485971361100000,1', '-2.909940344682720294859713611E+32', u); + T('-988966648479804202907677518800000000000000000000000000000000000000000000000000000,1', '-9.889666484798042029076775188E+80', u); + T('-4566915368931602815051783606,5', '-913383073786320563010356721.2', u); + T('270653156797430209033263481,625000000000000000000000', '433.0450508758883344532215696', u); + T('-48999796485280572833341497940000000000000,1', '-4.899979648528057283334149794E+40', u); + T('-72525550030522147167279582110000,1', '-7.252555003052214716727958211E+31', u); + T('-2432675193330427851698809509,100000000000000000000000', '-24326.75193330427851698809509', u); + T('-403266406094322401449840190200000000000000000000000000000000000000000000000000000000000000000,1', '-4.032664060943224014498401902E+92', u); + T('-7328622424224698690222269711,10000000000', '-732862242422469869.0222269711', u); + T('-47237342255413479773733697,25000000000000000000', '-1889493.690216539190949347880', u); + T('78835631855459381,10000000000000', '7883.5631855459381', u); + T('-14,5', '-2.8', u); + T('-9866329513673835238514096493,100', '-98663295136738352385140964.93', u); + T('-13089959190012611177126518580000000000000000000,1', '-1.308995919001261117712651858E+46', u); + T('-4967358948172051919497159739,500', '-9934717896344103838994319.478', u); + T('-6833646028032836687349866821,100000', '-68336460280328366873498.66821', u); + T('649637135613968795105908969145470711,250000000000000000000000000000', '2598548.5424558751804236358765818828440', u); + T('-61363709817705515400922815730000000000000000000000000000000000000000000000000,1', '-6.136370981770551540092281573E+76', u); + T('-100998083624843426300911688400000000000000000000000000,1', '-1.009980836248434263009116884E+53', u); + T('-3590001814306412202538592043,1000000000000000000000000000', '-3.590001814306412202538592043', u); + T('-873319590748158544964033381600000000000000000000000000000000000,1', '-8.733195907481585449640333816E+62', u); + T('1753,50', '35.06', u); + T('-52231905436704456949438551980000000000000000000000000000,1', '-5.223190543670445694943855198E+55', u); + T('-4348525293879767179803795097,5000000000', '-869705058775953435.9607590194', u); + T('-1628925349793270623943546973,1000000000000000000000000000', '-1.628925349793270623943546973', u); + T('-78494014309,5000000', '-15698.8028618', u); + T('-9245876360737547772734914910000000000000000000000000000,1', '-9.245876360737547772734914910E+54', u); + T('-807754225571147376128169812100000000,1', '-8.077542255711473761281698121E+35', u); + T('-6150194754154627890562649755,1', '-6150194754154627890562649755', u); + T('-2471953954534824409680038307,25000', '-98878158181392976387201.53228', u); + T('-970474827218905069338978816700,1', '-9.704748272189050693389788167E+29', u); + T('-24039,10000', '-2.4039', u); + T('-19253676936551703,1000000000000000', '-19.253676936551703', u); + T('-3673854325985073740352036342000000000000000000000,1', '-3.673854325985073740352036342E+48', u); + T('-160934801,25000', '-6437.39204', u); + T('-32833225394240539484189003,2500000000000', '-13133290157696.21579367560120', u); + T('-879576295241677088569196885100,1', '-8.795762952416770885691968851E+29', u); + T('-34723705196925586591,2500000000000000000', '-13.8894820787702346364', u); + T('58699728651,2500000', '23479.8914604', u); + T('25989415788377713434433189687,1000000000000000000000000000', '25.989415788377713434433189687', u); + T('-1528267418236634262738364747,1000000', '-1528267418236634262738.364747', u); + T('-6671686359029212455119744847,100000000000000', '-66716863590292.12455119744847', u); + T('144580847646431960012829985973482546613221338871,200000000000000000000000000000000000000000', '722904.238232159800064149929867412733066106694355', u); + T('-33981629178302642259388602190000000000000000000000000000000000,1', '-3.398162917830264225938860219E+61', u); + T('-64240817973350524445496942010000000000000,1', '-6.424081797335052444549694201E+40', u); + T('-990485401974653806265390505600000,1', '-9.904854019746538062653905056E+32', u); + T('-6028091377718570445490225453,1000000000', '-6028091377718570445.490225453', u); + T('-231645924266279,200000000', '-1158229.621331395', u); + T('-356048892709504881374103191700000,1', '-3.560488927095048813741031917E+32', u); + T('-96293143562099332540946672560000000000000,1', '-9.629314356209933254094667256E+40', u); + T('-637588725404145616579243109,200000000', '-3187943627020728082.896215545', u); + T('-5533803323992652056012670321,10000000000000000000000000', '-553.3803323992652056012670321', u); + T('82096165597399152387073083,10000000000000', '8209616559739.9152387073083', u); + T('-84046624737814576667252743050000000000,1', '-8.404662473781457666725274305E+37', u); + T('-760070190521772257789348512700000000000000000000,1', '-7.600701905217722577893485127E+47', u); + T('33848173936588017661795890663826550420632434137913501,500000000000000000000000000000', '67696347873176035323591.781327653100841264868275827002', u); + T('-67816336411542138315185300640000000000000000,1', '-6.781633641154213831518530064E+43', u); + T('-1204357960160460298667925175000000,1', '-1.204357960160460298667925175E+33', u); + T('-7970186008547782569239312038000000000000000000000,1', '-7.970186008547782569239312038E+48', u); + T('-3710232124874852163479109505000000000000000000000000000000000000000000000000000000,1', '-3.710232124874852163479109505E+81', u); + T('-4889555265921636364438094567,5000000000000000', '-977911053184.3272728876189134', u); + T('3117,500', '6.234', u); + T('-699740571071362462935070191800,1', '-6.997405710713624629350701918E+29', u); + T('-70248014967,250000000', '-280.992059868', u); + T('-857100231280874948737999933,200000000000000', '-4285501156404.374743689999665', u); + T('467297342335727,10000000000', '46729.7342335727', u); + T('-27212862586658598118090814040000000000000000000000000000000000000000000,1', '-2.721286258665859811809081404E+70', u); + T('-3777590780331387653794428909,100000', '-37775907803313876537944.28909', u); + T('-207858091537398998838496056000000000000000000000,1', '-2.078580915373989988384960560E+47', u); + T('-6020540505342374731212772184000000000000000000000000000000,1', '-6.020540505342374731212772184E+57', u); + T('-38563435471069083574670403660000000000000000000000000000000000000000,1', '-3.856343547106908357467040366E+67', u); + T('12925583620733632059,250000000000', '51702334.482934528236', u); + T('-64127811,100000000', '-0.64127811', u); + + /* + T('30396,38195', '0.79581097', '74409'); + T('2125057574,3289', '646110.5424140842277760913716223149175043516912866283522989430448583852673477181054', '4314'); + T('18251,16', '1140.688086121119279582816178812726653910', '37'); + T('61348765027081784476232889631422618917241085602257,2', '30674382513540892238116444815711309458620542801128.559859020834676491532682063017825303001913079937413732204504474950978211332225018371420', '2'); + T('238354711696434965227174225040046402291933791409568617910,25981', '9174193129457486826033417691391647830796882006449660.0558100148468970808679278895365813792370050009058167954469', '61710'); + T('7355967799241738309628763754835483150582416687842544374137,8', '919495974905217288703595469354435393822802085980318046767.1338999658963927824509929378965804777221331548975659545056488845295998946309871474144010438', '9'); + T('1125354937387110207464744146511518,247481', '4547237716782743755943866989.8356560705677241346146759866583370949', '863202'); + T('22627259137083636694372928354252733658397903083652793951,13169', '1718221515459308732202363759909843849828984971042052.8476725643837742907709281227796422726432771727035925851544494828706899020', '266434'); + T('8704956917621873401344326514156520003279612669326092644945779992398046340851791,127', '68542967855290341742868712709893858293540257238788131062565196790535797959462.9212696722706718117183841431994103691974707194398390091180486522725873390891717', '171'); + T('58400904696,8737', '6684320.09797413893379904985072385250774250364224704531308514779353223', '14426'); + T('4765998700799,481932', '9889359.28886025414277', '551989'); + T('84446319074008288318841993796319916,1', '84446319074008288318841993796319916.4290214679797552828327089099139280188', '1'); + T('208579935771852505416338,29', '7192411578339741566080.621098672624218880520368888346887640903578755437931806539999680994582938', '38'); + T('1222506164843897615007151221018141468,521', '2346460968990206554716221153585684.199616425445388739418159378389564040736054', '706'); + T('63993391879749765751,9', '7110376875527751750.114919085901505100980521292031066797810839927388501365930465', '11'); + T('36707708314,1', '36707708314.345688574511854258055215898538289601221976670300216981023491', '1'); + T('1006862373895650813218257996159822111779222738385202718573234201031,335', '3005559325061644218561964167641260035161858920552843936039505077.70447752609278095294701366298104650604976387611568135143174113323780682', '7063'); + T('12180512204,290477', '41932.7940043445804168810482554121918927813650259', '895566'); + T('972851014381591,18170', '53541607836.080957621939096312239677792878740188648258030024875', '31555'); + T('383576424003665,59', '6501295322096.01707059843465672720153308', '88'); + T('456059695649,731697', '623290.372447884850674344473049816049238992052574671', '770999'); + T('1,2', '0.5716202415873544262986953173753852278285193332218646822626651', '2'); + T('13802410789886736953383903846755867001633124596437299605748175709981308048573814,2523', '5470634478750193005701111314607953627282253109963257869896225013864965536493.782798186996737913044082377221550214034629772236938011947896897722075720890727218714', '2580'); + T('1720546690653497270570006270472130851,1', '1720546690653497270570006270472130851.14006845543964920673232647491053082791301585407937041734157349507526701334664232654756777642845206', '1'); + T('275492732803212658371830121443811803,6273', '43917221872024973437243762385431.5005579559793624838126175850466341579997661657132448932942532299', '11453'); + T('88013352536654826423613115136850148349568967,93', '946380134802740069071108764912367186554505.02139414761736578247940104106009403877307019264568966335689948628094', '100'); + T('0,1', '0.16188799510329961', '2'); + T('31257777609885493076027897164441747647216000811363789460,63', '496155200156912588508379320070503930908190489069266499.364683462978985476107209780379101750930177884309470340386147403736530', '73'); + T('1,4', '0.247', '5'); + T('139940391692584759336872579028566139849626387938102,9', '15548932410287195481874731003174015538847376437566.916769682876782912934506396938577003712568789804114047347942880', '9'); + T('2695380025444014713279737860623,4', '673845006361003678319934465155.7153220774931558972103241774927225665361206328689645904684305800', '6'); + T('212541,1', '212541.15765900911813807562731698106746376864402272303473059993656512959159467385761060217667309', '2'); + T('24404077187137405965287142997346562978162191083070727134647177951283348456202109976721557879,358982', '67981339418515151080798321356910828337248639438943253797257739806684871264303251908790.85268620710740817674022927818400975732259671102671740536686565452412022811045315287709605606', '524757'); + T('4639813710478702096,63125', '73501999373920.033203960389538229718685812256959445512319514858711642307834404391479542025114608466188853802', '975593'); + T('6313823485926856046033387,79', '79921816277555139823207.43038835415731205809303875306226403799816963841913838777893750', '309'); + T('156447551951667418528348,10581', '14785705694326379220.1444097907069652381615089410990740501255021747836566834256552197426931481109', '28853'); + T('5939913817183935713420272651319175,1', '5939913817183935713420272651319175.15560997078079301798352616505127598762535051904836053714139307939449564', '2'); + T('2612459,3290', '794.06048625538280973740786635286809420954121949534447211174', '3834'); + T('44771360338621,79', '566726080235.708661152424012356777601', '84'); + T('19411423,337', '57600.661728879757757929764351499408564549978771807173536885876073886506463832955', '390'); + T('1847,2', '923.31354', '2'); + T('2652776,545', '4867.4789', '848'); + T('2469,20', '12.345e1', new BigNumber('123')); + + T('-2991910323532143367251432461,50000000', '-59838206470642867345.02864922', u); + T('-972745200863972039012044288500000000000000000000000000000,1', '-9.727452008639720390120442885E+56', u); + T('-759,100', '-7.59', u); + T('-27827258151452494934863201,100', '-278272581514524949348632.0100', u); + T('-284626800809,50000000', '-5692.53601618', u); + T('-74421663208247269188483431,80000000000000000', '-930270790.1030908648560428875', u); + T('-1082016448333999416859837516000,1', '-1.082016448333999416859837516E+30', u); + T('-21,25', '-0.84', u); + T('-67246554173689300336047211,8000000', '-8405819271711162542.005901375', u); + T('-2196812392790282979771359770000000000000,1', '-2.196812392790282979771359770E+39', u); + T('-93367638440645772883402889310000,1', '-9.336763844064577288340288931E+31', u); + T('-35989199713272470893896397640000000000,1', '-3.598919971327247089389639764E+37', u); + T('-21641213684333939876179569040,1', '-2.164121368433393987617956904E+28', u); + T('-91309127692139566014327039220000000000000000000000000000000000000,1', '-9.130912769213956601432703922E+64', u); + T('-1991444477322661912100056959,50000000000', '-39828889546453238.24200113918', u); + T('-553515865616749148505592781,10000000000000000000000000', '-55.35158656167491485055927810', u); + T('-2736653830100392487693621031,500000', '-5473307660200784975387.242062', u); + T('-1434910778309587281399577109,5000000000', '-286982155661917456.2799154218', u); + T('4088837688828123100698969622178669612073,5000000000000000000000000', '817767537765624.6201397939244357339224146', u); + T('-43637769341168890990138963370000,1', '-4.363776934116889099013896337E+31', u); + T('-972943330653707493150695821,2000000000', '-486471665326853746.5753479105', u); + T('-1782595711624723281402457991,1', '-1782595711624723281402457991', u); + T('-1587179980733649965762666577,25000000000000000', '-63487199229.34599863050666308', u); + T('-1869019007722241613978741151000000000000000000000000000000000000000000,1', '-1.869019007722241613978741151E+69', u); + T('-9534407406159040849329043501,1000000000000000000000000000', '-9.534407406159040849329043501', u); + T('884870737759390069055513857366081428271482267261449,1000000000000000000000000000000000', '884870737759390069.055513857366081428271482267261449', u); + T('-139160500164081906232225785000000000000000000000000000000000000000000000000000000000000000,1', '-1.391605001640819062322257850E+89', u); + T('-9077283717131739693270257533,1000000000', '-9077283717131739693.270257533', u); + T('-3546952154463187872567980253000000000,1', '-3.546952154463187872567980253E+36', u); + T('-2998349233065239662673433121,50000000000000000', '-59966984661.30479325346866242', u); + T('-49202917142412402713948777780,1', '-4.920291714241240271394877778E+28', u); + T('181577327136618327510814084031821584885623912603171067071894881,2500000000000000000000000000000000', '72630930854647331004325633612.7286339542495650412684268287579524', u); + T('-5299277021247306829333111683000000000000,1', '-5.299277021247306829333111683E+39', u); + T('-859302244477761340074208133600000000000000000000000000000000000,1', '-8.593022444777613400742081336E+62', u); + T('-6501829741620523766984105281,1', '-6501829741620523766984105281', u); + T('-2677415014831874236017310386000000000000000000,1', '-2.677415014831874236017310386E+45', u); + T('-4734450690396580389539539453000000000000000000000000000000000000000000000000000000000,1', '-4.734450690396580389539539453E+84', u); + T('573,1000', '0.573', u); + T('170553245440322276130662336624985791859,390625000000000000000', '436616308327225026.89449558175996362715904', u); + T('-198470325592748654691786431,100000000000000', '-1984703255927.486546917864310', u); + T('-3234474304795759429822944851,100', '-32344743047957594298229448.51', u); + T('-76846093771110548259822724440,1', '-7.684609377111054825982272444E+28', u); + T('-131857323335983571776045123,156250000', '-843886869350294859.3666887872', u); + T('-4663443251439907783224263307,5000000000000000000', '-932688650.2879815566448526614', u); + T('63123252215861327828078184797456511902545223118271893387,100000000000000000000000000000000', '631232522158613278280781.847974565119025452231182718933870', u); + T('-618918292260085378971410121400000000000000000000,1', '-6.189182922600853789714101214E+47', u); + T('-999,1000', '-0.999', u); + T('-5117190266823165989390291807,10000000000000000', '-511719026682.3165989390291807', u); + T('-7326556356501682719117834871,100000000000000000000', '-73265563.56501682719117834871', u); + T('-6104631144035504571891715845000,1', '-6.104631144035504571891715845E+30', u); + T('-553580276933846729294149065500000,1', '-5.535802769338467292941490655E+32', u); + T('-2029603585167950725930322651,2500', '-811841434067180290372129.0604', u); + T('-3840678439599650124602555357,500000000000', '-7681356879199300.249205110714', u); + T('-1811414587273530335470170277,10000000000000000000000000000', '-0.1811414587273530335470170277', u); + T('-3184069685558819408138516175000000000000000000000000000000000000000,1', '-3.184069685558819408138516175E+66', u); + T('-149520028664451586711286719,250000000', '-598080114657806346.8451468760', u); + T('-39829,100000', '-0.398290', u); + T('-76787660914545531460526626510000000000000000000000000000000000000,1', '-7.678766091454553146052662651E+64', u); + T('-2015496795339941642277997653,5000000000', '-403099359067988328.4555995306', u); + T('-1318336013779584857221166649,20000000', '-65916800688979242861.05833245', u); + T('-724089949757367,100000000000', '-7240.89949757367', u); + T('-15952866815190919594236189370000000000000000000000000,1', '-1.595286681519091959423618937E+52', u); + T('-1342078101586766284616393,100000000000000000000', '-13420.78101586766284616393', u); + T('-6812055517286162590000532611,10000000000000000000000', '-681205.5517286162590000532611', u); + T('-567847685641009361520749225200000000000000000000000000000000000000000000000,1', '-5.678476856410093615207492252E+74', u); + T('-1580251794203221398959714431000000000000000000000,1', '-1.580251794203221398959714431E+48', u); + T('-6574603652290596029643069989,10000000000000000000', '-657460365.2290596029643069989', u); + T('-7311541940635831348361450069,100000000000000000000000000', '-73.11541940635831348361450069', u); + T('-14723103323,10000000000', '-1.4723103323', u); + T('3285075251527965969147,12500000000000000000', '262.80602012223727753176', u); + T('-820320298626362566428108475000000000000000000000000000000000000000000000000000000000000000000,1', '-8.203202986263625664281084750E+92', u); + T('252919151006836181107958661434555503428356126246362605748877,500000000000000000000000000000000', '505838302013672362215917322.869111006856712252492725211497754', u); + T('-1179378935267,5000000000000', '-0.2358757870534', u); + T('-1383313883094030650884742084,5', '-276662776618806130176948416.8', u); + T('-3721825945463317461862875941,5000000000000000', '-744365189092.6634923725751882', u); + T('-772585031312025977266466033,20000', '-38629251565601298863323.30165', u); + T('-1022325206901044018628878242000000000000000000,1', '-1.022325206901044018628878242E+45', u); + T('-9331233103994018282451022848000000000,1', '-9.331233103994018282451022848E+36', u); + T('-76778786132507991606924452380,1', '-7.677878613250799160692445238E+28', u); + T('-1075535026526469098011554507000000,1', '-1.075535026526469098011554507E+33', u); + T('-6734357,2000', '-3367.1785', u); + T('292826785068446808328398273711158229435617047159402888673901,5000000000000000000000000000000000000000000000000', '58565357013.6893616656796547422316458871234094318805777347802', u); + T('-5742288086224317836910104718000000000000000000000000000,1', '-5.742288086224317836910104718E+54', u); + T('8423,25000', '0.33692', u); + T('48097700873717796851032061929605079278183,20000000000000000000000000000000000', '2404885.043685889842551603096480253963909150', u); + T('6023634370460703429713558622417776109096525391939,1000000000000000000000000000000000000000000000000', '6.023634370460703429713558622417776109096525391939', u); + T('106758008007385450139,100000000000000000', '1067.58008007385450139', u); + T('-3849580463489122904112780999000000000000000000000000000000000000,1', '-3.849580463489122904112780999E+63', u); + T('-88275520431316339743958679610000000,1', '-8.827552043131633974395867961E+34', u); + T('-472042305926729955808146449,1000', '-472042305926729955808146.4490', u); + T('-6245867883108091,1000000000', '-6245867.883108091', u); + T('-183356236298435289867506669,2000000000000000', '-91678118149.21764493375333450', u); + T('-74562808732179833652840115180000000000000000000000000000000000000000000000000000000000,1', '-7.456280873217983365284011518E+85', u); + T('-5104625575258744026028197501,1000000000000000000000', '-5104625.575258744026028197501', u); + T('-344922559321915510291490087500000000000000000000000000000000000000000000000000000000,1', '-3.449225593219155102914900875E+83', u); + T('-8563598459050660434249519489,100000000000000000', '-85635984590.50660434249519489', u); + T('17500814267583629590589899612077,250000000000000000', '70003257070334.518362359598448308', u); + T('45401405910540076895910506821437320717666680221,6250000000000000000000000000000000000000', '7264224.94568641230334568109142997131482666883536', u); + T('-84509536465048048632507,1250000000000000', '-67607629.1720384389060056', u); + T('-1751326137777370498636433863,25000', '-70053045511094819945457.35452', u); + T('-867111630064241604638707847400000000000000000000,1', '-8.671116300642416046387078474E+47', u); + T('-21318256746158533732802277550,1', '-2.131825674615853373280227755E+28', u); + T('-67579403706761435205295261900000000000000000000000000000000000000,1', '-6.757940370676143520529526190E+64', u); + T('-1417367504555887528141746601,2500000000000', '-566947001822355.0112566986404', u); + T('-25974847707227382380557472,625', '-41559756331563811808891.95520', u); + T('-981439911205743478966598319,100', '-9814399112057434789665983.190', u); + T('-610789624400704048725520972100000000000000000000,1', '-6.107896244007040487255209721E+47', u); + T('-1893232078819503172511076559,50000000000000', '-37864641576390.06345022153118', u); + T('-27975984885306222968321285120000000000000000000000,1', '-2.797598488530622296832128512E+49', u); + T('-2612911727298316430264079,62500000000000000000', '-41806.587636773062884225264', u); + T('50680230444767491,1000000000', '50680230.444767491', u); + T('-373274225495445311979038119300000000000000000000000000,1', '-3.732742254954453119790381193E+53', u); + T('-8327620769338584623732488387,100000000000000000000', '-83276207.69338584623732488387', u); + T('-4868628906895320112426939731,100000000', '-48686289068953201124.26939731', u); + T('-1193567448524866936588184537,20000000000000000000000', '-59678.37242624334682940922685', u); + T('-86830341,10000', '-8683.0341', u); + T('-6646694931396004582423920897,100000000000000', '-66466949313960.04582423920897', u); + T('-5348172887765880895603201513,100000000000000', '-53481728877658.80895603201513', u); + T('-8919495454891628197011164031,10000000000000000', '-891949545489.1628197011164031', u); + T('1559360912667,1000000000000', '1.559360912667', u); + T('-7711382430758007094636047839000,1', '-7.711382430758007094636047839E+30', u); + T('-6741391809448013052641540557,1000000', '-6741391809448013052641.540557', u); + T('-301,500', '-0.602', u); + T('-86974760786594923670130517580000000000000000000000000000,1', '-8.697476078659492367013051758E+55', u); + T('-3,5', '-0.6', u); + T('-83297684778142804104535372320000000000000000000000000000000000000000000000000000000000000,1', '-8.329768477814280410453537232E+88', u); + T('-163673076457158327,1250000000', '-130938461.1657266616', u); + T('-38956087033937387393159766230000000000,1', '-3.895608703393738739315976623E+37', u); + T('-1534311654615354489262951441,200000000000000000', '-7671558273.076772446314757205', u); + T('-8060394441780008075571792928000000000000000000,1', '-8.060394441780008075571792928E+45', u); + T('-280124687988949117330427391,2500000000000000000000', '-112049.8751955796469321709564', u); + T('-30114151670681354095135826370000000000000000000000000000000000000000,1', '-3.011415167068135409513582637E+67', u); + T('-812,125', '-6.4960', u); + T('-1370772417711,2000000000000', '-0.6853862088555', u); + T('-9001273695034747863562885281,100000000000000000000', '-90012736.95034747863562885281', u); + T('-94895895660508854551459723340000000000000000000000000000000000000000000000000000,1', '-9.489589566050885455145972334E+79', u); + T('33927,1000', '33.927', u); + T('-221228229074405139018236415000000000000000000000000000000000000000000000000,1', '-2.212282290744051390182364150E+74', u); + T('-72357217092268759,1000000000000', '-72357.217092268759', u); + T('3,5', '0.6', u); + T('-8999705506879032909995262466000,1', '-8.999705506879032909995262466E+30', u); + T('-34801868215741663768869349060,1', '-3.480186821574166376886934906E+28', u); + T('-638899147521386374389705727,250000000000', '-2555596590085545.497558822908', u); + T('-576341894025935781,10000000000000', '-57634.1894025935781', u); + T('-4499426107906193213910836749,1000000000000000000000000000', '-4.499426107906193213910836749', u); + T('-1187772132418630901316882007,12500000', '-95021770593490472105.35056056', u); + T('-328174941647878676105511874800000000000000,1', '-3.281749416478786761055118748E+41', u); + T('-3472215593316048786969586545000000000000000000000000000000,1', '-3.472215593316048786969586545E+57', u); + T('-819049308491114964745499902800000000000000000,1', '-8.190493084911149647454999028E+44', u); + T('-6323108380621192986595369,200000000000000000000', '-31615.541903105964932976845', u); + T('-111264401026058917823810189,100000000000000000000000', '-1112.644010260589178238101890', u); + T('-375536277598104783062275796800000000000,1', '-3.755362775981047830622757968E+38', u); + T('-101660024857,1000000', '-101660.024857', u); + T('-2004125726691987151280986843,25000000000000000000000000', '-80.16502906767948605123947372', u); + T('-7642170031922907778643381,100000000000000000000', '-76421.70031922907778643381', u); + T('-3602317098842106506606624929,1000', '-3602317098842106506606624.929', u); + T('-1299346412819078024158481,20000000000000000000', '-64967.32064095390120792405', u); + T('-1239554900011232365384901487,125000000000000000', '-9916439200.089858923079211896', u); + T('-4626908109136214769997540471,50000000000000000000000', '-92538.16218272429539995080942', u); + T('393786126653440528814656629984919695629424483,20000000000000000000000000000000000000', '19689306.332672026440732831499245984781471224150', u); + T('79,400', '0.1975', u); + T('-70926474960683674023948242490000000000000000000000000000000000000,1', '-7.092647496068367402394824249E+64', u); + T('-717448177428239400724351357200000000000000,1', '-7.174481774282394007243513572E+41', u); + T('93965062239421527657876691002319056463449204972859618248841032392337,5000000000000000000000000000000000000000000000', '18793012447884305531575.3382004638112926898409945719236497682064784674', u); + T('-742455691111299272393671478500000000,1', '-7.424556911112992723936714785E+35', u); + T('4327353232599424133161482714110773218878025952012887889286000677,10000000000000000000000000000000000000', '432735323259942413316148271.4110773218878025952012887889286000677', u); + T('-6406522453382260785242123219,100000', '-64065224533822607852421.23219', u); + T('-8755758445067880087438735551000000000000000000000000000,1', '-8.755758445067880087438735551E+54', u); + T('-3641369340200941843410397,100000000000000000000000', '-36.41369340200941843410397', u); + T('-784260557922398380334392781600000,1', '-7.842605579223983803343927816E+32', u); + T('-662071018037510735810792187000000000000000000000000000000,1', '-6.620710180375107358107921870E+56', u); + T('2,1', '2.0', u); + T('-6471005670399478287255928531,10000000000000000000000', '-647100.5670399478287255928531', u); + T('-8213251496116568092258251293,10000000000000000000000000000', '-0.8213251496116568092258251293', u); + T('-2433095402981113505171684571,500000000000000', '-4866190805962.227010343369142', u); + T('-7073268678570322756074595191,100000000000000000000', '-70732686.78570322756074595191', u); + T('-5922619520639844865780847779000000000000000,1', '-5.922619520639844865780847779E+42', u); + T('765719072830121,100000000000000', '7.65719072830121', u); + T('-3110127455285391882932859,10000000000000000000000000', '-0.3110127455285391882932859', u); + T('-626969950393688092623498764800000000000000000000000,1', '-6.269699503936880926234987648E+50', u); + T('-45963737194150293757063245860000000000000000000000000000000000000000000000000,1', '-4.596373719415029375706324586E+76', u); + T('778051713899,100000000', '7780.51713899', u); + T('-4459718171731138401213154589,50000000000000', '-89194363434622.76802426309178', u); + T('-1071777034967899856015183850000000000000000000000,1', '-1.071777034967899856015183850E+48', u); + T('-17597792014189525803930088410000,1', '-1.759779201418952580393008841E+31', u); + T('-73583607563995328344161936390,1', '-7.358360756399532834416193639E+28', u); + T('78478899969144273,1000000000', '78478899.969144273', u); + T('-355286094740091330430709,1250000000000000000', '-284228.8757920730643445672', u); + T('-41,50', '-0.82', u); + T('-9907765598680476853217019311,100000000000000000', '-99077655986.80476853217019311', u); + T('-2404392782688999157305680689,100000000000000', '-24043927826889.99157305680689', u); + T('-2650994750421622104977287881,1000000000000000000', '-2650994750.421622104977287881', u); + T('39983073582040014866844804541291,100000000000000000000000000', '399830.73582040014866844804541291', u); + T('-8807898557101190300230101932000000000000000000000000000000000000000000,1', '-8.807898557101190300230101932E+69', u); + T('-695393182113783444341458924,5', '-139078636422756688868291784.8', u); + T('-1706659473239464584561002977,100000', '-17066594732394645845610.02977', u); + T('-165933152156143937454202761,2000000000000000000000', '-82966.57607807196872710138050', u); + T('1538291813397103572148216063922845985226928827759,250000000000000000000000000000000000', '6153167253588.414288592864255691383940907715311036', u); + T('-13,250', '-0.052', u); + T('-2294062859474990814031336269,5000000000000000000', '-458812571.8949981628062672538', u); + T('149418055166367757421653263494051015159636829951,5000000000000000000000000000', '29883611033273551484.3306526988102030319273659902', u); + T('-4629861263429484977299994121000000000000000000000000000000000,1', '-4.629861263429484977299994121E+60', u); + T('-76174501687600226360492968090000,1', '-7.617450168760022636049296809E+31', u); + T('-6350678364890072941143667763,1000000000000000000', '-6350678364.890072941143667763', u); + + T('7325643,10000000', '0.7325643'); + T('8129753468709152191211051855224273832281,100000000000000000000000', '81297534687091521.91211051855224273832281'); + T('26846080372036394639591396,6672793', '4023214922452471497.25630571786057289667012386513324609', '72150416'); + T('151169465630612379481675652813336817561189321,200000000000000000000000000000000000000', '755847.328153061897408378264066684087805946605'); + T('48650152878444478499756261104359,1000000', '48650152878444478499756261.104359'); + T('310291026486294288245548,3136069', '98942665638509321.1423434879780971949357099446690852', '4194429'); + T('281148949800335203180214,28247', '9953232194581201656.11264913171363754779711915', '40003'); + T('8070991737,10', '807099173.7'); + T('2105837647496797835243555428994974365746550495259,2500000000000000000000000', '842335058998719134097422.1715979897462986201981036'); + T('7050549406715449007260719040610995681,100000000000000000000', '70505494067154490.07260719040610995681'); + T('4712375599056588823223,5', '942475119811317764644.6', '23351170'); + T('1812890500714000446600040219589,6454218482', '280884588237897901176.13812435378291552542223517750505532', '8240308776'); + T('1485521639981158765714509531187624755829128849,100000000000000000000000', '14855216399811587657145.09531187624755829128849'); + T('179195624045698698709602380291841534992963,397', '451374367873296470301265441541162556657.33752912', '654'); + T('60786881043136,81', '750455321520.1975303545477874468301224681956212', '6955'); + T('54350058946186575767248586,111', '489640170686365547452689.9639497075875189553277274425649764720088', '136'); + T('207448313353211937938706154109749,2500000000000000000000000', '82979325.34128477517548246164389960'); + T('18637328030895697373,20000000000', '931866401.54478486865'); + T('77127230808472816894238711,10000000000000000', '7712723080.8472816894238711'); + T('29126173556928305215214880165709856062,7', '4160881936704043602173554309387122294.5709328', '7'); + T('43333053556734019842,614489', '70518843391393.531604308619475952242596538499476346', '675048'); + T('53377793855957,559250504', '95445.231562915140439462747444833608100863907', '1363996915'); + T('347448038601,1158528605', '299.9045833667611513140004251012084', '3206002475'); + T('4723559025392992686163722415183139,100000000000000000000', '47235590253929.92686163722415183139'); + T('178091379773085237300450763077988415217238,1811184275', '98328691470714782625004163686209.3533896422549273776361277', '1811232885'); + T('805514724831305204420874185699445105715750883,100000000000000', '8055147248313052044208741856994.45105715750883'); + T('65819,6849', '9.610016056348', '8529'); + T('319168767950612554460346534967,625000000000000', '510670028720980.0871365544559472'); + T('5710296907,88986', '64170.7336772078034895641687140263', '92775'); + T('556588363946502498333308725135986051213680185539426551525214239244852201,500000000000000000000000000000000000000', '1113176727893004996666617450271972.102427360371078853103050428478489704402'); + T('20826873980146981695459788919411033,31250000', '666459967364703414254713245.421153056'); + T('2499361049528080561202511540068978284974386343138634241,1000000000000000000000000000000000000', '2499361049528080561.202511540068978284974386343138634241'); + T('418298807255269058527019236340986131039447727889611856636829077,50000000000000000000000000000000000', '8365976145105381170540384726.81972262078895455779223713273658154'); + T('6913324275323537689724784638569909,100000000000000', '69133242753235376897.24784638569909'); + T('13962383460375585294405129665013837633,2000', '6981191730187792647202564832506918.8165'); + T('373341224221778946139808778111541154755014783291201,500000000000000000000000', '746682448443557892279617556.223082309510029566582402'); + T('2605595932904747914340060901727110356316231797,100000000000000000000000000000000000000', '26055959.32904747914340060901727110356316231797'); + T('5404218768000268681499,58562496', '92281223259341.07524206277', '59176667'); + T('837600757847923350654714829279011772308108410631278941774977080884126219,1000000000000000000000000000000000000', '837600757847923350654714829279011772.308108410631278941774977080884126219'); + T('39732046116239133,500000000000000', '79.464092232478266'); + T('3508566582308615186460661,50', '70171331646172303729213.22', '689'); + T('55037110921169089073232054697568652125721273823943129,1000000000000000', '55037110921169089073232054697568652125.7212738239431290'); + T('566293124809467513,2', '283146562404733756.42441', '2'); + T('43320564587705861,41', '1056599136285508.80459063125943036359093410684247', '43'); + T('959454884256,1', '959454884256.0872639565266385531414960733727818427', '1'); + T('91278743653117380466990456156,1', '91278743653117380466990456155.68579170481078286369193', '1'); + T('10122,25', '404.88', '8317919834'); + T('12366919721,2285', '5412218.69628', '3581'); + T('6717391976887166914502653755927330777815,1', '6717391976887166914502653755927330777814.993', '7'); + T('13432031244267392897695975,26625836', '504473596407166065.98553281106366012670736', '962581771'); + T('198826963117874099525548139368203,2', '99413481558937049762774069684101.4789260648567440', '2'); + T('1348726,601', '2244.1364219063828677', '603'); + T('976694301668980861868663901012070434704655861333,1000000000000000000000000000000000000', '976694301668.980861868663901012070434704655861333'); + T('297178549846227440886808646486219,32786695', '9063998364160444988029706.7602031555788099950276275841962', '66781952'); + T('22339526413138422840472802051271868021571230079710624149228880060499,100000000000000000000000000000000000000', '223395264131384228404728020512.71868021571230079710624149228880060499'); + T('9135248819601092928115011665372155588037116079546743946559,1000000000000000000000000', '9135248819601092928115011665372155.588037116079546743946559'); + T('5286330697037762023749,10', '528633069703776202374.9'); + T('107227092928577441190850028,357', '300356002601057258237675.148458846976702', '1739'); + T('9567629701592580680115114528171473874982843,10000000000000000000000000', '956762970159258068.0115114528171473874982843'); + T('16087152277929474327956249483660452531,7812500000000000000000', '2059155491574972.713978399933908537923968'); + T('89875669677258766402915335437973697536104973046538128991,1000000000000000000000000000000000', '89875669677258766402915.3354379736975361049730465381289910'); + T('923938919,1', '923938919.0', '9691412392'); + T('48428060142308830168757150336059283056510851633772347,1000000000000000000000000000000000000', '48428060142308830.168757150336059283056510851633772347'); + T('93051527972639804714713550878952900355,496672', '187350057930867463264918398619114.62767178339', '4005220'); + T('3497280820822833818,1', '3497280820822833818.0', '7323674'); + T('923369267213275370382645033,200', '4616846336066376851913225.165'); + T('83964374249481,1000000000', '83964.374249481'); + T('194123595638199705708781601234299234156024384,573715909', '338361883630805339422410197159617608.156695518792036842720875013789726', '847457002'); + T('5637607,236111', '23.87693500091710301251170853372825835205', '293373'); + T('96319079573841658175275890975870,1', '96319079573841658175275890975869.869419481278952979', '2'); + T('35413177676239984779155768701462876116,5', '7082635535247996955831153740292575223.20'); + T('17525144964454,27791', '630605050.716203087332881753643518191177425472803', '459536'); + T('99069927604575118603830348579,20000000000', '4953496380228755930.19151742895'); + T('4625959927338367711360075575124826216422187184789056538633051077924197,500000000000000000000000000000000', '9251919854676735422720151150249652432.8443743695781130772661021558483940'); + T('16687954096803,461', '36199466587.4251659487445747440075096128888226597', '715'); + T('48983711168012156360736451565279496359797,62500000000000000000000000000000', '783739378.688194501771783225044471941756752'); + T('951604336538762886268589543789943349215119,100000000000', '9516043365387628862685895437899.43349215119'); + T('3170484800431125268583,9881458', '320851922907644.324206306397298875', '10955847'); + T('2209917901057085830155650409703230456398682421,500000000000', '4419835802114171660311300819406460.912797364842'); + T('257559146244597067867426507016,341085825', '755115362078142848262.38823327237360274380050695878', '370161150'); + T('52302828211946727812235521578754597,100000000000000000000', '523028282119467.27812235521578754597'); + T('1548611009582576944501513330034309618,3581483467', '432393734007589359758871484.98019567096887564653', '4247950750'); + T('4160735782556259525559,100000000000000', '41607357.82556259525559'); + T('7810032276912931435247371001442767211661887,10000000000', '781003227691293143524737100144276.7211661887'); + T('2699214678525489726487560119191725243,6772462978', '398557317669177478741406878.339929884663593948389215779911509998918', '8700679367'); + T('234005756036522310409974828052077,2792665138', '83792987871115935565481.6170273247418609771373578473125', '3496871917'); + T('888930141417205,472', '1883326570799.16313674359847883331', '494'); + T('93731,249276', '0.3760129334673260070153210504', '257553'); + T('1884739237,5388890', '349.745353310236416512548553007633265749648', '7464665'); + T('43774993705091173299491664598042468178382578189423014141380153967959,1250000000000000000000000000000', '35019994964072938639593331678433974542.70606255153841131310412317436720'); + T('4990606690039884835950094377597511034291,50000000000000000000000000', '99812133800797.69671900188755195022068582'); + T('880848777307,10', '88084877730.70', '10550849'); + T('117189165353141,500000000000000', '0.234378330706282'); + T('3696766657880426699915213404988822821636621907807,500000000000000000', '7393533315760853399830426809977.6456432732438156140'); + T('136878149428912649758117905461610548699832354530413221,1000000000000000', '136878149428912649758117905461610548699.832354530413221'); + T('247112873960438003987375929845431961097478236423759,50000000000000000000000000000', '4942257479208760079747.51859690863922194956472847518'); + T('32090761171034587720265676015278308236143,372372', '86179307711198983060664271253688000.8060299915140599804368969', '803032'); + T('3614723886086134485880643254470683475022113,2000000', '1807361943043067242940321627235341737.5110565'); + T('865224903023822325262781,300218', '2881988764910239643.4017314085126964034449762676', '532601'); + T('611185005509628,9139', '66876573532.07440639019695013008058748', '4159302'); + T('1518595063109297520311975384,5', '303719012621859504062395076.8'); + T('49679411118006488713997,857', '57968974466752028837.802807564217277428', '895'); + T('88166434473746490289165987929145035778940246272,282622141', '311958695669729889595472238422909108805.2448313736325421133448741444545', '385416267'); + T('18629257493748797005,3', '6209752497916265668.3441723459', '10'); + T('3105722390606004795903600587554457,8015259', '387476236339462616978889963.2007471', '8184974'); + T('186363420925320576328934,21515', '8662022817816433945.104996514626241666816484709452865', '37212'); + T('2487576402639632794634694150901775257367,500000000000000000000000', '4975152805279265.589269388301803550514734'); + T('124421130067284418607320404,18230353', '6824943547022069106.79789930562507372336112189652537764238', '26966531'); + T('7137130635754072199223,3556', '2007067107917343138.139201473525306155357', '3856'); + T('112942288681912873203,25000', '4517691547276514.92812', '505601099'); + T('1431788138645392811436351585868528725106020877729648867279053,1562500000000000000000000000000', '916344408733051399319265014955.85838406785336174697527505859392'); + T('3234595666430613200570074711,125000000000000000000000000', '25.876765331444905604560597688'); + T('3771991535846550543543187642939268809849,113246271', '33307865261599214543171912856532.545869426464382214773370432169717071927', '1862546449'); + T('159328743982472447,10889954', '14630800459.07195264553', '62191463'); + T('19156099060539,200000000000', '95.780495302695'); + T('2459812065130292014604235393568931103851693517,25000000000000000000000000000000', '98392482605211.68058416941574275724415406774068'); + T('14081093976643671519,2', '7040546988321835759.5'); + T('1398718931796139131570704959571446329,250000', '5594875727184556526282819838285.785316'); + T('226057240496116726752712879,73578', '3072348263014987180308.147530511915', '99443'); + T('794112996051185221451708830987876881997,100000', '7941129960511852214517088309878768.81997', '106276919'); + T('8216044054806771996810629067,22837', '359768973805962779559952.229583565335247922821497', '25456'); + T('23807055304320404163339151165491853782535135991908506357626995217,500000000000000000000000000000000000', '47614110608640808326678302330.983707565070271983817012715253990434'); + T('3531469840127598977918199412295084056732447544259170233,500000000000000000000000', '7062939680255197955836398824590.168113464895088518340466'); + T('7074869431756164165861127913754839263,188036', '37625079409028931512375970100166.13447956773725419869171', '551328'); + T('116727432190485304215216347036665233873946214267,200000000000000000000', '583637160952426521076081735.1833261693697310713350'); + T('322222287817074340496094,4519846351', '71290540163115.0139280683703046524993660939348992959', '4821696804'); + T('3220195518339602136340818267702090777236019441295,6573210637', '489896900642954724826783041016686466674.0816389412472740753393', '6620677169'); + T('4979158772221132031066953552941723189,1000000', '4979158772221132031066953552941.723189'); + T('8737425880160915911998771,1', '8737425880160915911998771.12725422920', '1'); + T('323045767198973747297480019029873,446', '724317863674829029814977621143.2130109419902482321169979691406', '573'); + T('640289857462018471811912,23805611', '26896594145893523.6659925258797173744700212383', '26827286'); + T('4449327148350034505583562687233,50000000', '88986542967000690111671.25374466'); + T('25753316144627889753,100', '257533161446278897.53', '6528003920'); + T('3986906378997449549838631393557,100000000000000000', '39869063789974.49549838631393557'); + T('6265774677875908010545250165153745,700772', '8941245765920881557118792082.380210681934346581057360805031205825124', '928104'); + T('230083713653,500000', '460167.427306'); + T('19377991,21577587', '0.89806107606008', '49239725'); + T('38710794736631001569771,1', '38710794736631001569771.012260896821016342565', '28'); + T('10037882653,349139894', '28.750317066316116827', '647871852'); + T('3333245366687,4471008', '745524.3575245224343350924369527004181', '6167413'); + T('26769493351047347344386695666057,50000000000000', '535389867020946946.88773391332114'); + T('1621363436291186251405436340171,5232692', '309852641105416915691853.512526821758252648366658861942981640', '7299049'); + T('4550392744783143007699048628173,20000000000000000000000000000', '227.51963723915715038495243140865'); + T('797141000219512098778764678119786879,867317228', '919088165765700780912845741.5119936704405', '962488946'); + T('14904132191968276587297737169053358300443,200000000000', '74520660959841382936488685845.266791502215'); + T('91470701131037383295747,1000000', '91470701131037383.295747'); + T('27753892633682075,3', '9251297544560691.601', '4'); + T('1788334345204020429620861096201,50000000000000000000', '35766686904.08040859241722192402'); + T('4612688956079856295802362391039,100000000000000000000000000000', '46.12688956079856295802362391039'); + T('161347204015,23', '7015095826.738876208769833554', '47'); + T('20600465972959782785256431550761005019024,339', '60768336203421188157098618143837772917.474927302472', '502'); + T('1062891113749632541,702810', '1512344892289.00064170970827727498908573320667399924', '2943629'); + T('286820046488752611155983,5611503', '51112874124588833.1799845781067795486147680004500944874455', '9222645'); + T('55268920261272895079460750602209,6', '9211486710212149179910125100368.0869540216384846614405', '6'); + T('147110482766595420803446985119783296,1', '147110482766595420803446985119783295.962905368965408966', '8'); + T('8584260220485230830750630108611597500009840276389875279,100000000000000000', '85842602204852308307506301086115975000.09840276389875279'); + T('45997967047497611745453,100', '459979670474976117454.53'); + T('25322562031741252483400559,1000000000000000000000000', '25.322562031741252483400559'); + T('7588887,2056', '3691.09289882762466516742', '8887'); + T('823890318784964048554080494714815498182966138912381,100000000000000000000000', '8238903187849640485540804947.14815498182966138912381'); + T('9304855287990530136771405094519,1', '9304855287990530136771405094518.82504', '2'); + T('47011776728314188266315200417504146431,1000000000000000000000000000000000000', '47.011776728314188266315200417504146431'); + T('2466085134442399070795709748333417449542855462250787166784205121205109,500000000000000000000000000000000000', '4932170268884798141591419496666834.899085710924501574333568410242410218'); + T('3442044952553264476,7', '491720707507609210.91163844234598216', '7'); + T('80868288238431,874004803', '92526.1371114353018034864163941998778367260', '931966805'); + T('6985103397660981071,7353', '949966462350194.624098996515677191782270599392137132201', '7793'); + T('468653409753396391457767631,5000000000000000000000000', '93.7306819506792782915535262'); + T('60,1', '59.9083995049887984453397720', '2'); + T('1585744058865312687896395129349,250000', '6342976235461250751585580.517396'); + T('20479199716624053465947561943251653,500000', '40958399433248106931895123886.503306', '4535856588'); + T('3479780591056475652402107167313793111293,5', '695956118211295130480421433462758622258.6'); + T('467879214344174541429051133613371644281991908668101132848827627,50000000000000000000000000000000000000', '9357584286883490828581022.67226743288563983817336202265697655254'); + T('3780398268842275439375533,500000000000000', '7560796537.684550878751066'); + T('599108489,11', '54464408.05188181950959', '11'); + T('215021045713727250783388053394109267617,4166009', '51613197598403472192063928185010.9463558528077204341344511373832016128195', '4179908'); + T('159241433857,5000000', '31848.2867714'); + T('160936670389208853641372968978236488980668850585131,500000000000000', '321873340778417707282745937956472977.961337701170262'); + T('2370282706660426694332478,23799509', '99593765008363268.9368708404866667088069121270797650', '24298070'); + T('597763381558982555051400082606522098999937129,100000000000', '5977633815589825550514000826065220.98999937129'); + T('4431461,1000', '4431.461'); + T('8250115774778471280985677882646125194730659155862382409,100000000000000000000000000', '82501157747784712809856778826.46125194730659155862382409'); + T('12205438,45', '271231.955313', '47'); + T('19202320927991171,2', '9601160463995585.5'); + T('73746355649075260,3', '24582118549691753.331713657589540437', '9'); + T('47309,1769001', '0.026743342711584657', '4015485'); + T('1926643365791669364845561,8927875671', '215800873218910.819759058112', '8935017174'); + T('8952538174202125514384339,585', '15303484058465171819460.40854848482726775573160880288331876238', '946'); + T('171044475643258691052591881190402011,2500000000000000000000000000000000', '68.4177902573034764210367524761608044'); + T('1417176227509505,17149674', '82635753.164142070572304998841', '20372906'); + T('3380729603876017655487973251773669209031,27845', '121412447616305177069059912076626655.0199676781941', '40016'); + T('890269765213404348432913996063275824595152162733,100000000000000000000000000000000000', '8902697652134.04348432913996063275824595152162733'); + T('664601293959812682633636004618957911435231667680903297856881,20000000000000000000000', '33230064697990634131681800230947895571.76158338404516489284405'); + T('778481676645324115540463089347,20000000000', '38924083832266205777.02315446735'); + T('75705502543433,7812500000000', '9.6903043255594240'); + T('81546124479956359876565726669992644826500740941,100000000', '815461244799563598765657266699926448265.00740941'); + T('24701,4', '6175.250206214726482', '51'); + T('5311817589061598103376746873687003094342952495326331677278701943,12500000000000000000000000000000000', '424945407124927848270139749894.96024754743619962610653418229615544'); + T('587612851301963849841025647818575969,100000000000000000000000000000000000', '5.876128513019638498410256478185759690'); + T('717873356,808272029', '0.88815810796788070', '942302647'); + T('8684149473480042958819491590345594042855,92', '94392929059565684334994473808104283074.5108197400739669029736', '109'); + T('557213,6836', '81.51155646233081505773189164', '13939'); + T('6358852540742501026007669889675383610909273172987401669,100000000000000000000', '63588525407425010260076698896753836.10909273172987401669'); + T('9613,1', '9612.9773812129992689657249691195343', '10'); + T('286113583488621159688740779858763238199941269901,1000000000000000000000000000000000000', '286113583488.621159688740779858763238199941269901'); + T('462642039300426299179091176857436950199,413144', '1119808200773643812276327810297225.54411778943845784669037258980', '1448446'); + T('627912942633907772006040,1', '627912942633907772006040.0'); + T('8887831015869015364122580184912527,100000000000000000000000', '88878310158.69015364122580184912527'); + T('25269814867297462150639281025731,5000000000000000000000000000', '5053.9629734594924301278562051462'); + T('99529184605,1', '99529184605.0', '650785'); + T('1658758680465486368314728898678949517,1981', '837334013359659953717682432447728.17617366544553', '11197'); + T('7,1', '7.056759118252905562', '2'); + T('2194117028293242686416582588432860977,5000000000000000000', '438823405658648537.2833165176865721954'); + T('47876011607044241,59126929', '809715850.573674154461835825714251915075523523', '4052259112'); + T('10497951457730554025955004980575188440216805387873,200000000000000000', '52489757288652770129775024902875.94220108402693936500'); + T('185573471761473313640214816617129543,200000000000000000000000000000000000', '0.927867358807366568201074083085647715'); + T('13136066791,2000', '6568033.3955', '857278646'); + T('786449314441,10000000', '78644.93144410'); + T('258069327759691253346816792459688368610750867,50000000000000000000000000000', '5161386555193825.06693633584919376737221501734'); + T('2400603934155970960994087661933,100', '24006039341559709609940876619.33', '52973663'); + T('53787312868755909573338050263817591013,1000000000000000000', '53787312868755909573.338050263817591013'); + T('65846043893884622068872344771627703174979234269,1000000000000000000000000000000', '65846043893884622.068872344771627703174979234269'); + T('413208107310727259011301805,1', '413208107310727259011301804.818566766164839933798622982', '1'); + T('380767438123951525794980657112504797825,680920177', '559195410835874710458140319012.02539607663880400492014675272', '689501446'); + T('3834864268417157885795059233263411,50000000000000000000', '76697285368343.15771590118466526822'); + T('291722167388405104196504,669403279', '435794350789854.8913389831184259847904358843278386', '904770649'); + T('32620215359,500', '65240430.718'); + T('1796562823633852909577,2', '898281411816926454788.285872', '2'); + T('427388755061110023176602282445173618523399130350681998042193349558569077343,5000000000000000000000000000000000000000', '85477751012222004635320456489034723.7046798260701363996084386699117138154686'); + T('6120788215815611148178349402985667902090005391,2500000000000000000000000', '2448315286326244459271.3397611942671608360021564'); + T('5152513511677523,168', '30669723283794.7797667708156960783', '283'); + T('310212151,2', '155106075.4712372', '4'); + T('4699524488896952877010,3', '1566508162965650959003.35067266814212548734090212433985', '5'); + T('70596591,100000', '705.96591'); + T('69579827425857277909,7355044059', '9460151002.1841295279996092270403052', '7426098425'); + T('96855367597936633192863,100000000', '968553675979366.331928630'); + T('8688367572560606063,100000', '86883675725606.06063'); + T('28879513,100000', '288.79513'); + T('18800652833943208658107123506275565438787,40', '470016320848580216452678087656889135969.675'); + T('1146931396095000518282937400043083943334700,4602527', '249196016904409364308549933556736102.435618520', '8225878'); + T('2019756551427915738961933054973199346876419,5000000000', '403951310285583147792386610994639.8693752838', '741757710767379773640708586558'); + T('159260774150855645667623300326629,10000000000000000000000000', '15926077.4150855645667623300326629'); + T('63365344813375864020105079652680969461686025291,10000000000000000', '6336534481337586402010507965268.09694616860252910', '688235748647978162333833362258291330722279331'); + T('1461532669,5000000000', '0.2923065338'); + T('390058219943639629654109687634774504333495620881,1000000000000000000000000000000000', '390058219943639.629654109687634774504333495620881'); + T('299225805773161690264821787540667,5000000000000000000', '59845161154632.3380529643575081334', '2584812000841991553143215804559645'); + T('81603234217578447206418101677952309588084613059984751910997827257167,156250000000000000000000000000000000000', '522260698992502062121075850738.8947813637415235839024122303860944458688'); + T('2565677724908492708768279520615817013536305135641817470099879036,374196298701793888137550171191', '6856502145557413849706463648425482.701677508664756140796680003271200', '869790929515477340097538635993'); + T('9612780561,1000', '9612780.561'); + T('936512323689541548094571523023523188200531,1000000000', '936512323689541548094571523023523.188200531'); + T('152234006509072541435610651574042873,25000000000000000000000000000', '6089360.26036290165742442606296171492', '11857604157972831619815396931384638829511784605'); + T('64208688601822739753865109352559333654371,2631857012', '24396723799606914113715957967308.95259380109514855361003', '576672018138'); + T('13680813615256177,5000000', '2736162723.0512354', '5926568749173865070557'); + T('12399570290333756330011977724487093294866653,500000000000000000000', '24799140580667512660023.955448974186589733306', '67333132803983266789655187746269204'); + T('4506349014426198904317777807334981419,500000000000000000000000', '9012698028852.397808635555614669962838'); + T('725431855797035508085239096174824869288283239,100000000', '7254318557970355080852390961748248692.882832390'); + T('355915386841717685353688119260713,100000000000', '3559153868417176853536.88119260713'); + T('2914867717398323136217,100000000', '29148677173983.23136217'); + T('1326209433713162649634239109961037850584868175033,10000000000000000000000000000000000000000', '132620943.3713162649634239109961037850584868175033'); + T('4778160350176337979760052281234320029,10000000000000000000000000000000', '477816.0350176337979760052281234320029'); + T('86665339051641131146005186162442032968947419505854245963,125000000000000000000000000', '693322712413129049168041489299.536263751579356046833967704'); + T('430351447085339973547588264756339950843789831043,500000000000000000000', '860702894170679947095176529.512679901687579662086'); + T('55525130114430055347694274663,763982638008', '72678523505724782.1378481069695424350', '850916842740'); + T('220792158460126762184413874181,10000000000', '22079215846012676218.4413874181'); + T('94783059874905327086792198452757929148500148142136001437,250000000000000000', '379132239499621308347168793811031716594.000592568544005748'); + T('6488407113121033385211896005019711681817,100000000000000000000', '64884071131210333852.11896005019711681817'); + T('47333842438492360793095254962373810441359677680855935665786394332060804133207,500000000000000000000000000000000000000', '94667684876984721586190509924747620882.719355361711871331572788664121608266414'); + T('2367138419900331631616148353601561797867243729737608115661,100000000000000000000000000', '23671384199003316316161483536015.61797867243729737608115661'); + T('88626039212907148865042680324936804431893182827,10000000000000000000000', '8862603921290714886504268.0324936804431893182827'); + T('134036367111046300205853082693215909752923821078333787,2000000000000000000000000', '67018183555523150102926541346.6079548764619105391668935'); + T('1290426619008005556475919972597725061539536069,25000000000000000000000000000000000000', '51617064.76032022225903679890390900246158144276', '964910734608101784280721264706455020684'); + T('51515831610611387382745267,6250000000000', '8242533057697.82198123924272'); + T('7952216990048092855359353056111362078447011828178913246364701327,10000000000000000000000000000000000', '795221699004809285535935305611.1362078447011828178913246364701327'); + T('538015045243626212422430662564753243027945021916339128227,100000000000000000', '5380150452436262124224306625647532430279.4502191633912822700'); + T('43577529369368712265446116906547230280422309612453,500000000000', '87155058738737424530892233813094460560.844619224906', '796419722408512060993'); + T('1161347707886748476637875642925084188220298315962357581,891732452430846866981741483', '1302349942206247176394632274.42078366656260573729837386635563', '979302956680189066606017794'); + T('1528624826136387009578521,25000000000000', '61144993045.45548038314084', '8024287939412517568729347651281075'); + T('3355746698476190015402680252180735699888853,50000000000000000000', '67114933969523800308053.60504361471399777706', '8915896738291537715389083695879542442064029'); + T('980289651663460623618247173,100000000000000000000000000', '9.80289651663460623618247173', '644505847543429115712324396'); + T('51055624915620324003432130818561734442539,10000000', '5105562491562032400343213081856173.4442539', '2809024769655863489136966521'); + T('41875396716460469922985854768609021869387681761,125000000000000000000000', '335003173731683759383886.838148872174955101454088', '216625103073443887003029267945'); + T('105780502837966983,13631', '7760289255224.633775993192903826796476494397758857808', '13861'); + T('1938155266888975965598512083832127,251657941372', '7701546219135603482029.870015176732906490144727404299117584', '547888565206'); + T('99954595750029,10', '9995459575002.9'); + T('4249542002102445996878781,10000000000000000000000000', '0.4249542002102445996878781'); + T('485671,250000', '1.942684'); + T('13356987302624015208420862387472998,746681507193', '17888466734413902028886.0311842409055156116317714302570867', '849696537110'); + T('2668448503233496883227988430416595281601,1000000000', '2668448503233496883227988430416.595281601'); + T('3640373983168722911281713865270438495806072129379784031313632242881734911,50000000000000000000000000000000000', '72807479663374458225634277305408769916.12144258759568062627264485763469822'); + T('1818728887,200', '9093644.435', '476185163436332077972781497090111043581420'); + T('802345758447757541858014527779737950265044017,1000000000000000000', '802345758447757541858014527.779737950265044017', '8387249919619107142865224089883458341020176321'); + T('595208804134258162637737,100000000000000000000000', '5.95208804134258162637737', '900644264372865329335187168932351592714013'); + T('13988441958679191876839735942604595286414864789,100000000000000000000', '139884419586791918768397359.42604595286414864789', '5655831590440584955875'); + T('2085083269139810791270306641073124298284478872355022690995133,50000000000000000000000', '41701665382796215825406132821462485965.68957744710045381990266'); + T('63143145632769116262051260423942651269,1000000000000000', '63143145632769116262051.260423942651269'); + T('1407997631298057561573924769518255515279313425669860717,10000000000000000000000000', '140799763129805756157392476951.8255515279313425669860717', '327937261477572180619558003617237646356733892'); + T('270833075343099303551865182416448009,1000000000000000000000000000000000', '270.833075343099303551865182416448009'); + T('9108779,100000', '91.08779'); + T('1290586935123071,1000000', '1290586935.123071'); + T('469132037299556835463,1000000000', '469132037299.556835463'); + T('455380269621149826,1', '455380269621149826.0', '29816950548028'); + T('59036688354560778646766626225702807845034056189868056799,100000000000000000000000000000000', '590366883545607786467666.26225702807845034056189868056799'); + T('134877717700773438669846465447856699885143,400000000000000000000000000000', '337194294251.9335966746161636196417497128575'); + T('16122989466646638395384532997642495,812372', '19846805978845453062617289859.377840447480619999019072107458825800245', '1022628'); + T('41676689473,419541', '99338.776122', '477053'); + T('948783386589836295531621640054416694045428069792652292815184843252620407087997,10000000000000000000000000000000000000000', '94878338658983629553162164005441669404.5428069792652292815184843252620407087997'); + T('183987075285353368451987553220870945911,100', '1839870752853533684519875532208709459.11', '4771405818636333119008616393205342343236'); + T('8284467081338201094106418401321,1000000000000000000000000000000', '8.284467081338201094106418401321'); + T('126835799338565188592427149928234243606839,20000', '6341789966928259429621357496411712180.34195', '487302037789409112102552330066366980508855813174'); + T('202777274382581430728017680787579982546489517,229892480925189939516479', '882052660298045344051.7919993163515770841250643782458114275328', '746044076719153861455150'); + T('3738015590431,5', '747603118086.2'); + T('301106896154595422209552298959107137373547203141065553859057389421821,250000000000000000000000000000', '1204427584618381688838209195836428549494.188812564262215436229557687284'); + T('341334346359,543174817', '628.406059478637427329224571381873725166216', '876128137'); + T('465138295089535296259774745663038553386930899198195570591,20000000000000000000000000000000000', '23256914754476764812988.73728315192766934654495990977852955'); + T('82769483306049,10000000000', '8276.9483306049', '33839355334'); + T('556953498133884269,68', '8190492619615945.13225248677717', '92'); + T('45318755494241836794770073,1000000000000000', '45318755494.241836794770073', '1253935394801806614019883297829417163126525'); + T('1858914525035831826768925339743,200000000000', '9294572625179159133.844626698715', '31391560509860145405596'); + T('425343351349790045976513159948568763820438862683367,100000000000000000000000000000', '4253433513497900459765.13159948568763820438862683367', '7721074673031296384304307266121470119427'); + T('71354211162897369216945850343222823881026041367233,100000000000000000000000000000', '713542111628973692169.458503432228238810260413672330', '144939713832937271061627357504826456742'); + T('144714939860168363453308091038982,4284977', '33772629318703079025466902.398538428561', '5618239'); + T('2317035080099534328156555098955006964997947989671,5000000000000000000000000000000000000000', '463407016.0199068656313110197910013929995895979342'); + T('12220710712628394678137945125840492835,295726726654365551281703', '41324336325243.639147174633347897967505321910146183513', '461406359261841272137912'); + T('4164103,50000000', '0.08328206'); + T('7502614012109051682244916192266750188051123,100000000000000000000', '75026140121090516822449.16192266750188051123'); + T('323880445913,500000', '647760.891826'); + T('58136053747539046641739287759965480752,70045887', '829970983842906388518419186553.60136637287497', '86239491'); + T('50255437,100', '502554.37'); + T('450233554293111245876449378888745591234681102067569,5000000000000000000000000', '90046710858622249175289875.7777491182469362204135138', '3810754204488023014210763363'); + T('200222822546125679699429097695077,100000000000000000000000', '2002228225.46125679699429097695077'); + T('3783671589181030205501527752342356874517572828977,500000000000000000000000000000000000000', '7567343178.362060411003055504684713749035145657954'); + T('40048820082402526973,30', '1334960669413417565.766541760088934259233455362', '55'); + T('19682241,5000000', '3.9364482', '2938089409064663302584899743202354591655563930'); + T('3847570170988597157763381309021862223325329,1000000000', '3847570170988597157763381309021862.223325329'); + T('302871942581513778978519519,50000000000000000000000000', '6.05743885163027557957039038', '7739846393033927255652731261656491478657146'); + T('326080663059742589574506673375771249877,100000000000000000', '3260806630597425895745.06673375771249877', '550868828960159419120535470417267167'); + T('96832187539664765931343834203105130885992737,2500000000000000000000', '38732875015865906372537.5336812420523543970948', '3389413421383652579250716211200348'); + T('271852185141591302785258831339,100000000', '2718521851415913027852.58831339', '326060519878426625637075641056508361'); + T('48700692997319228087245485443026803016745947787367383,5000000000000000000000000000000000', '9740138599463845617.4490970886053606033491895574734766'); + T('40758214623530792633726096531289862600019220056526601,50000000000000000', '815164292470615852674521930625797252.00038440113053202', '5221210587873615917315733'); + T('1241221035324719632397392464340037510556481149089904847941523,10000000000000000000000', '124122103532471963239739246434003751055.6481149089904847941523'); + T('48037863508976458691221362323501021215551,4882812500000000', '9838154446638378739962135.0038530091449448448'); + T('193622000346959273707446061164100672839811,2143395561', '90334235952520606021468783458071.49539011805390223029', '2265033200'); + T('67783685294777359438349711011,20000000000000000000000000', '3389.18426473886797191748555055'); + T('12617473737636720451218269740609659622541624,159627839', '79043065524659019227957284697750369.36095854808884558276454809642992365632', '174329681'); + T('9684474818082811551223783413257727824992067,1562500000000', '6198063883572999392783221384484.94580799492288', '49209400621412262419'); + T('17505591753702885777016987703565333702388539,2500000000000000000000000000000000000000', '7002.2367014811543108067950814261334809554156'); + T('947913360646751474137651443537325162671,95614802879262668687699', '9913876639412481.794682748986875680160639360860844', '97032668484031432706648'); + T('87432797,2000', '43716.3985'); + T('52266359279671923770562530491,1000000000000000000000000000', '52.266359279671923770562530491'); + T('934519820781022674420129570582560225765920330071,12500000000000000000', '74761585662481813953610365646.60481806127362640568', '8642213980970552163513'); + T('50083810531494711281387558,56570303851847', '885337484887.12586165119274913582149678253727190', '78326898482642'); + T('3972190938628200176537,10000000000', '397219093862.8200176537'); + T('18121256332358987866268770477428593607665037,200000000000000000000000000000', '90606281661794.939331343852387142968038325185', '921193442621072417175235574539201255016'); + T('14987898155158472518478544881232078802611860873609524963,2500000000000000000000000', '5995159262063389007391417952492.8315210447443494438099852'); + T('3239212309823789165605527377995418545725605705,14170665490304070723367973333508266', '228585757813.57202362946598425863064253567493626119', '86979626336746925002222279115462537'); + T('122185041583802144366142,5', '24437008316760428873228.4', '8000951389854267175050'); + T('657574695679001861295665451464661555661,10000', '65757469567900186129566545146466155.5661', '2507718086460574385741706208476049260047621469'); + T('6360428604897138048594396059747553,10000000000000', '636042860489713804859.4396059747553', '244160781758980'); + T('21351223921251662111677047871929368,23', '928314083532680961377262950953450.7838973425314927418923934606452990487', '30'); + T('289499461511853909335456535686028099405454280671300094239293194461506601099,5000000000000000000000000000000000000000', '57899892302370781867091307137205619.8810908561342600188478586388923013202198'); + T('976859569751666674770433143725255060903,2000000000000000000000000000000000', '488429.7848758333373852165718626275304515', '192870444813125961651197355653979526967'); + T('8711911,24', '362996.29144884884', '91'); + T('47961961919420699035752271439053656196891,1000000000000000', '47961961919420699035752271.439053656196891', '1432836513794575009230872452783621'); + T('36002186243558704970796134460620318473988856831,2500000000000000000', '14400874497423481988318453784.2481273895955427324'); + T('347658515811,125000000', '2781.268126488', '18168322069934165333666594401837841045656351551'); + T('4744824007215869949704323431169019043851337919936522927179,10000000000000000000', '474482400721586994970432343116901904385.1337919936522927179'); + T('18647457854156074231876861461127052818609195520980488636185434563,50000000000000000000000000000000000', '372949157083121484637537229222.54105637218391041960977272370869126'); + T('88636422031310834818570712943870555589,10000000000', '8863642203131083481857071294.3870555589'); + T('8907393333063962550030633954046846122487647,500000', '17814786666127925100061267908093692244.975294', '738024193644869313081788449951849'); + T('5347810730899001839326028336703,1000000', '5347810730899001839326028.336703'); + T('83499427757,10000000', '8349.9427757', '537893050789928685742496508297'); + T('91030793284677869802,1', '91030793284677869802.0', '54365179780137798417812339693'); + T('139576870289544319,15393617308715296', '9.0671911280086886680514259430164', '34314606681915854'); + T('526728365945557273665550256298589878104412618423937,1250000000000000000000', '421382692756445818932440205038.8719024835300947391496', '914852587643922476861639338196683814291555'); + T('818477009119923314771842558536624613582668934883,20000000000000000000000000', '40923850455996165738592.12792683123067913344674415'); + T('164078868342751098016,64915', '2527595599518618.1624586', '69194'); + T('293978517263308243537157587247782681150732925,5389019', '54551397436770633678811966936428073671.80054941353888320018', '5423880'); + T('16896047083967,200', '84480235419.835'); + T('104972899545933771066622411344760258240458360899093,10000000000000', '10497289954593377106662241134476025824.0458360899093', '7205746832408993529175409871720727602599'); + T('721550565141436165,78491572038293', '9192.7138978617930051035079340183063425', '114711958041391'); + T('642808470971740957339375857676583667488830045491443,2500000000000000', '257123388388696382935750343070633466.9955320181965772'); + T('25547609239638147055212848154480190930531,1000000000000000', '25547609239638147055212848.154480190930531', '956611854763149744692116271165'); + T('63725524120161766602391195314216892192697,100000000000000000000000000', '637255241201617.66602391195314216892192697'); + T('5135812052028819027098843325324594885149,100000000000000000000000000', '51358120520288.19027098843325324594885149'); + T('53823225503436626111601,100000000000000000', '538232.255034366261116010'); + T('84772164557665415263075633416115167894928760949624252554563147439736263703,10000000000000000000000000000000000', '8477216455766541526307563341611516789492.8760949624252554563147439736263703'); + T('6769664484487816999120299051126228678705642768668574797742,193743613880784562681728605', '34941355479481073234753500993749.9459542322571041925382270549294049381061', '211314918688969418804736477'); + T('924366516845377679336424,1162633928094070467838273', '0.7950623962614875520469822998', '1975805181618643839348076'); + T('77572007179,100000000', '775.72007179', '11829149976320'); + T('334089623626745537032388435915351225103753617,50000000000', '6681792472534910740647768718307024.50207507234'); + T('13498748436005386978369839564419223032439008199537017,100000000000000000', '134987484360053869783698395644192230.32439008199537017'); + T('90490381500830768647702025423,125000000000', '723923052006646149.181616203384', '961797459451554264950219276775915317946969734'); + T('5122161348451940740499291,10', '512216134845194074049929.1', '394574323186626013065489993123031'); + T('647855253,1', '647855253.0'); + T('6739958677034739744526166360174781560887228448458551401840878517716909,1000000000000000000000000000000000000000', '6739958677034739744526166360174.781560887228448458551401840878517716909'); + T('29091323665776070746692915891291406784815,515462320066', '56437342814992192098354407772.812600292121', '529393438698'); + T('496334264543794411305432918384584691,50000000000000000000000000', '9926685290.87588822610865836769169382', '29049581566777794866190221032687140418'); + T('8753315153638170826059223897506472318301157473753,1000000000000', '8753315153638170826059223897506472318.301157473753', '85364248144953441121602575793592689255772062'); + T('403542021675968571796035012464419951,4287', '94131565588049585210178449373552.589456498753402006170187050920091', '7569'); + T('594350241966914532560460828210265427161371137,10000000000', '59435024196691453256046082821026542.7161371137', '37574267571308361093683177199409609584373'); + T('15073005193012506,4955', '3041978848236.630877878990635453002381471', '5133'); + T('13262456470877201216542736093570139,200000000000000000000000000000000', '66.31228235438600608271368046785069500', '774102365994926801596084747934965835393944101916'); + T('294594117792262322334048360348006989133,100000', '2945941177922623223340483603480069.89133', '5284650921380'); + T('2036856646580353988754209669686648294707,1000000000000000000', '2036856646580353988754.209669686648294707', '29099065293427480893828927261338'); + T('180007401117801177,24077', '7476321847314.9136935645446918134', '26301'); + T('754812580262694694896295635929668953,1000000000000000', '754812580262694694896.295635929668953'); + T('46737787953832186777355613171050728218666711,500000000', '93475575907664373554711226342101456.437333422', '691648681170749354'); + T('190706002804671951924923171009850382212424001290162408147668760121797397,100000000000000000000000000000000000', '1907060028046719519249231710098503822.12424001290162408147668760121797397'); + T('876656568077577748604467778917147906790921181,5000000000000000', '175331313615515549720893555783.4295813581842362'); + T('6537572759474510978019763055947,2500000000000000000', '2615029103789.8043912079052223788'); + T('4084064084496559348260554164312115397804071,10000', '408406408449655934826055416431211539780.4071'); + T('7624072166846972160236154899045401668245306574381,10000000000000000000', '762407216684697216023615489904.5401668245306574381'); + T('177905487516777613587301880159113906479,195312500', '910876096085901381566985626414.66320117248', '6176184286'); + T('61831932067541525703246230050884,1', '61831932067541525703246230050884.0', '38989042121550969073469994280949'); + T('2726,501', '5.4411176792808', '776'); + T('303592203692208117214,635873', '477441570395673.5342025844991732249', '649536'); + T('550810457267856795577333963103167983,1000000000000000000000000000000', '550810.457267856795577333963103167983', '613145053953638371365146050566423'); + T('9612212037,125000000', '76.897696296'); + T('19854238142631550950262260304626082745471,37901467699', '523838240257787937603272504463.70854524809625103906310953', '40952250789'); + T('4544923928273434665236266014745010426628274,1096333144070264351987790901', '4145568299978486.279365051939148738458218639823299', '8537712898310208075262736912'); + T('290281008735066620365246906258552421932457445333,10000000000', '29028100873506662036524690625855242193.2457445333'); + T('1241037210471406591442469574953248591923111373602168667041493,2500000000000000000000000000', '496414884188562636576987829981299.4367692445494408674668165972'); + T('1861288631961340435812093,5000000000000000', '372257726.3922680871624186'); + T('4606419796132285145444663293643444818654488971283369022438656603,1000000000000000000000000000000000000000', '4606419796132285145444663.293643444818654488971283369022438656603'); + T('1669553057719,10', '166955305771.9', '8904226427748599439'); + T('12986349851069138804910894156891141,10000000', '1298634985106913880491089415.6891141', '899784234279572148861700827'); + T('67976496070837962006325629822530505039572859443166349265322123,1000000000000000000000000000000000000', '67976496070837962006325629.822530505039572859443166349265322123'); + T('14888274078142413593939188117,30', '496275802604747119797972937.2341911747299802284464386794810513', '39'); + T('1864264547760926364924249007253274324985177177877,100000000000000000000', '18642645477609263649242490072.53274324985177177877'); + T('641495287700451270339673,1782139719136440677413', '359.957909479339969376522560097960864', '3056779573484499009088'); + T('35386938150365066827946983062788302882742764047401931324672517379,500000000000000000000000000', '70773876300730133655893966125576605765.485528094803862649345034758'); + T('4777468662711829819443534803439171840234159,178583972921', '26751945230971166111811483364592.179982673703975838988713621959299431584', '437519908206'); + T('3483541015477817879719467546289485218183998679,2000000000000', '1741770507738908939859733773144742.60909199933950', '83159072643084822474226334121133568627'); + T('111029882872498,4311275609', '25753.3716101836903', '5409449457'); + T('5720723061390066,1169615', '4891116359.990309631802', '4121879'); + T('231690198058125307182393583380655131,100000000', '2316901980581253071823935833.80655131'); + T('785496570070925429293,20', '39274828503546271464.652502190252240978711699', '22'); + T('32844860194853812869198888570842117997979071035777472888657362673,5000000000000000000000000', '6568972038970762573839777714168423599595.8142071554945777314725346', '905302824861571794974789992'); + T('16498218387700361806672647974301337909169,6250000000000000000000000', '2639714942032057.88906762367588821406546704'); + T('242421647746889969,6067935407799844', '39.951257133567439718340905', '190386947376923275'); + T('84558420761363869643064360953349,10000000000', '8455842076136386964306.4360953349', '6083651091899923443690'); + T('3598344761346319138456455141169710488001767817863349,500000000000', '7196689522692638276912910282339420976003.535635726698', '6036430781596647112651702874946851436073'); + T('824416533850205237891728394872441,1', '824416533850205237891728394872441.0', '1270229614801297875'); + T('335030447307372600715767872105686598725232815951617004014831,50000000000000000000000000000000000', '6700608946147452014315357.44211373197450465631903234008029662'); + T('5315911067632204213000620089949667373095344325293668193104565,2501970004127297621628283', '2124690167693048092976376585227236996.721538833089666153400428951073', '171422422880513480794848980'); + T('82399859561,1000000', '82399.859561', '8007741850781315'); + T('9892854397114191944592435550624273099,500000000', '19785708794228383889184871101.248546198'); + T('482407510494718039597752127429518561787157,100000000000000000000000000000000000000', '4824.07510494718039597752127429518561787157'); + T('999219844563549589130339540247689,5000000000000000000000000', '199843968.9127099178260679080495378'); + T('32624665975434667774707373884930901627548640830986443495723665279,50000000000000000000000000000', '652493319508693355494147477698618032.55097281661972886991447330558'); + T('73322735201975172815448646322842399037093611,10000000000000000000000000000000000000', '7332273.520197517281544864632284239903709361100'); + T('5584344580393,2000000', '2792172.2901965', '67978301406759380237407609039081408522371172962'); + T('170698813505081259998189073431460004483981154768324955353,100000000000000000000000000', '1706988135050812599981890734314.60004483981154768324955353', '8303823206850919910010652520558244731932'); + T('703,10000', '0.0703'); + T('21213217171037545905806,1377', '15405386471341718159.6267247682855942563690178641195095', '2077'); + T('8296927175846011,250000000000', '33187.708703384044', '211191546934584837648'); + T('409552981550509729869340257571088152877592694961334449207,50000000000000000000000000000', '8191059631010194597386805151.42176305755185389922668898414'); + T('155027340589770073651612776,1737956327', '89200941462880657.099280939526163363777810267831118712467', '4986922301'); + T('167120807435010524556182779027297683324205827407507983577,436666647901481563398', '382719422786590845258091621853314922.96446004593674086717010', '702557026070523204786'); + T('441178720520318407454911830068962225120047224526619130534738920629112747,100000000000000000000000000000000', '4411787205203184074549118300689622251200.47224526619130534738920629112747'); + T('1869381106689425601212408179,250000', '7477524426757702404849.632716', '4624982'); + T('3317200487984067615668861775794559427256935200,6585479539550110485794411', '503714341235457458568.866804056313036956801153194', '6681245709808538985864323'); + T('3,4', '0.76011435975445459973959', '6'); + T('354884114822406966217620182813482001432151618849817803161826753,50000000000000000000000000000000000', '7097682296448139324352403656.26964002864303237699635606323653506'); + T('25087,50', '501.74', '85274653480326161797'); + T('650965999980720974038905679127117623356653858122009681,100000000000000000000000000000', '6509659999807209740389056.79127117623356653858122009681', '183925089257431510839976366871018952574324990'); + T('1751490441040021871522373727331,2000000000000000000000000', '875745.2205200109357611868636655', '75633648534698941212843963259058'); + T('26023193025631228939744774315993248032983335603365475283635011873374371768389,40000000000000000000000000000000000000', '650579825640780723493619357899831200824.583390084136882090875296834359294209725'); + T('321404575157883362782850293105646894530775907836460116367,3125000000000000000000000000000', '102849464050522676090512093.79380700624984829050766723723744'); + T('676431378140908951740507719346273515877844188802588789,125000000000000', '5411451025127271613924061754770188127022.753510420710312'); + T('3527866022768742962936331430909250221,1000000000000', '3527866022768742962936331.4309092502210'); + T('768670768316183532755914505999,1000000000000000000000', '768670768.3161835327559145059990'); + T('2363639937483203621,39891', '59252461394379.775413', '43820'); + T('1935991763481,5000000', '387198.3526962'); + T('84869849518884530417484124084533612955218764283953737717972,10107032631283871345', '8397108490200226398800083828224629264362.359197032737297920889324', '13064222726791451522'); + T('204886710340038538694354698793188156503362390502152775076648235731,5000000000000000000000000000000', '40977342068007707738870939758637631.3006724781004305550153296471462'); + T('1835971874232282120848076240479727,50000000000000000000000000', '36719437.48464564241696152480959454'); + T('18757216144126861202054952112882561,31250000000000000000000000000000', '600.230916612059558465758467612241952'); + T('1513207436951935998024078252323,21502756', '70372720452761311062827.400000399948732291662947549700417847500', '79362321'); + T('492152380966786320942977,1000000000000000000000000', '0.492152380966786320942977'); + T('322784976894366795182672726861732071108792529212189953293,500000000000000000000000000000000000000', '645569953788733590.365345453723464142217585058424379906586'); + T('6599835778515480731397541233194527935698039249154668674834348842207421,100000000000000000000000000000000000000', '65998357785154807313975412331945.27935698039249154668674834348842207421'); + T('2763733882920963372134959827,6250', '442197421267354139541593.57232'); + T('4493052127468834914347681261358393,1000000000000000000000', '4493052127468.834914347681261358393', '1917366645721044702863943'); + T('4165243072706279649913855214769337205676562643099363,50000000000000000', '83304861454125592998277104295386744.11353125286198726', '3369568246882905246798'); + T('40214993092834747603004055,592133223718', '67915447878984.246803347100480455192908487360291259358', '593784905929'); + T('104927737922243,5000000', '20985547.5844486', '74521293546'); + T('447244182767234345092627470873244541,1000000000000000000000', '447244182767234.345092627470873244541'); + T('3729,5000', '0.74580'); + T('1984341587249242120813988003214936078446236041737736626984039187,25000000000000000000000000000000000000', '79373663489969684832559520.12859744313784944166950946507936156748'); + T('109334915848204042748090967078741604879,500000000000000000', '218669831696408085496.181934157483209758'); + T('799850280431550021052452766407947249271905583022189,100000000000000000000000', '7998502804315500210524527664.07947249271905583022189', '2265487815011911855578344877035753'); + T('15005645256328535134146956704896053721,50000000', '300112905126570702682939134097.92107442', '959098942294647858855310128844058600617'); + T('284513580039738865694794020417628789,51896427813614457', '5482334565715520355.9164123103552051805461339353164', '608885290702033051'); + T('5611435160230836724036677212897508778352647894406598273,2500000000000000000000000', '2244574064092334689614670885159.0035113410591577626393092', '22586430234193957631479883247974'); + T('2257504637009351837615338885305884515151,24014872062235743869129', '94004441546010134.51153698433238353406039907857785325251', '337497026107271498961543'); + T('11961030675420279947461068675448705351,125000000', '95688245403362239579688549403.589642808'); + T('55042147389211604287,250000000000000000', '220.168589556846417148'); + T('8096641935000626379617912817593887056966796040651323,10000000000000000000000000000', '809664193500062637961791.2817593887056966796040651323'); + T('80403698814496577881,100000000', '804036988144.96577881'); + T('56530236925584442258099719084525496045476821,100000', '565302369255844422580997190845254960454.768210', '2085478950022'); + T('176510083304138788597014159,100000000', '1765100833041387885.970141590'); + T('194695119504918441713815809,100000000', '1946951195049184417.13815809'); + T('10419880141383547192692795964599686190836397501179348604845271327,10000000000000000000000000000', '1041988014138354719269279596459968619.0836397501179348604845271327'); + T('39904704373914275932765408749964211,10000', '3990470437391427593276540874996.4211'); + T('377154718786378953829563586363,500000000000000000', '754309437572.757907659127172726', '71111432644498937002116249698'); + T('4887809210859915472422967794086028102845277,100000000', '48878092108599154724229677940860281.02845277', '3695479757465231553301692211346874715665'); + T('2793736636935987847283419755276112581519780097583042817577,2000000000000000000000000000000000000', '1396868318467993923641.7098776380562907598900487915214087885'); + T('659750104347511676142213993755263489310617528836766246359807,1000000000000000000000', '659750104347511676142213993755263489310.617528836766246359807', '627804966532681570527289793642365197'); + T('465885672960721647139447,50000000', '9317713459214432.94278894'); + T('24074397538666586878367593,25000', '962975901546663475134.70372'); + T('5245705435294637571119386528576989827690767746698047845736131163241291317,100000000000000000000000000000000000', '52457054352946375711193865285769898276.90767746698047845736131163241291317'); + T('5068049704,72321', '70077.1519199125397539945071314731245643424', '83843'); + T('874564740796402183581390256952998902,9589359007', '91201585023356732021180261.663447689293503994887169401', '9860123179'); + T('181553923535320179726588305557,250000000000000000000000000', '726.215694141280718906353222228'); + T('6556143591220725641,1000000000000000000', '6.556143591220725641'); + T('2352354979582086906566789472880974692741621,500000000', '4704709959164173813133578945761949.385483242', '784087081050622276'); + T('1488083617458385838438378349131388911543068115734032699085102951249497989,5000000000000000000000000000000000', '297616723491677167687675669826277782308.6136231468065398170205902498995978'); + T('264579815467469,1000000', '264579815.467469'); + T('1538352201070219502279514358536457,20000000000000', '76917610053510975113.97571792682285', '21354906117089650290111715638'); + T('15722329841355833,100000', '157223298413.55833'); + T('4714260957941010403796629429189999850855093929869,50000000000000000000000000000', '94285219158820208075.93258858379999701710187859738', '30803072331334882951224000809043660'); + T('618425801728323030200807,10000000000000', '61842580172.8323030200807', '105985138218996171314403646219921'); + T('17448382674796873946013108235649557747459,50000000000000000000000', '348967653495937478.92026216471299115494918'); + T('45529397794072630857138473073,100000000000000000000000', '455293.977940726308571384730730'); + T('141465087,250000', '565.860348'); + T('17246099925359016508879876148711553304736078191,250000000', '68984399701436066035519504594846213218.944312764'); + T('2101258579700648429883582010633539413193707979287,50000000000000000000000000000', '42025171594012968597.67164021267078826387415958574'); + T('19873369192189503070833114340215357,100000000000000000000000000000000000', '0.19873369192189503070833114340215357'); + T('466815777276437858935139719637380455775922,237005', '1969645270253529921036010715543471470.120554418689640661226062605044220', '326529'); + T('269959,670534', '0.402603', '711489'); + T('34387358377391124546143226397815411955083664951,100000000000000000000000000000000', '343873583773911.24546143226397815411955083664951'); + T('37847045428231017995951348454896363,10000000', '3784704542823101799595134845.4896363', '720339608750233689017491098687232050524085'); + T('1735960832955491713580107966534128965678953034168488818485380597,25000000000000000000000000000000', '69438433318219668543204318661365.158627158121366739552739415223880'); + T('224192437577613620930013362114213113494689048262177491313573197479539,5000000000000000000000000000000000000', '44838487515522724186002672422842.6226989378096524354982627146394959078'); + T('12484340282845391902600,13508059694802606664561', '0.9242141776771164633050356530775932610539', '37252541001935408317724'); + T('115214077261487,10000000000000', '11.5214077261487'); + T('2958050889912784841,3643159', '811946689648.4026200887745906887963452131998', '5561403'); + T('827694940730584623592642676724234945522897,100000000000000000000', '8276949407305846235926.42676724234945522897'); + T('2546353200289710117989769402906610426930099,50000000000000000000000', '50927064005794202359.79538805813220853860198'); + T('6948521267340375164028079892940653337857575858806325681799,10000000000000000000000', '694852126734037516402807989294065333.7857575858806325681799'); + T('51227168953999260924,54854698290641', '933870.216231584893753966795960727850255527896', '81456633392018'); + T('3268599004367296653150629333,250000000000000000000000000', '13.074396017469186612602517332', '63486303090385390571705929886419628708915825065754'); + T('2942166843387188808794605445,4769444899383008874', '616878254.273950668243175338972426161', '5339655230978177566'); + T('239413121903268737233555547588419461449,5000000000000000000000000000', '47882624380.6537474467111095176838922898'); + T('63412373159131395132401586380914861773878046941905927937911236161547,1000000000000000000000000000000000', '63412373159131395132401586380914861.773878046941905927937911236161547'); + T('471747654685695831508453690945802340660145053437,800000000000000000000', '589684568357119789385567113.68225292582518131679625'); + T('891764513109420861505160319263,1', '891764513109420861505160319263.0', '918689638838436368865522030712717248752750323'); + T('3191887595,4', '797971898.75'); + T('121856597397345862613024522353232674108567324439,5000000000000000000000000000000000000000', '24371319.4794691725226049044706465348217134648878', '607506204583168148325583885842871519015786327'); + T('339040389167328399663612233561450019484519844493,50000000000000000000000000', '6780807783346567993272.24467122900038969039688986'); + T('38243,100000', '0.38243', '29337860446'); + T('8250342179921020599,1000', '8250342179921020.599'); + T('103452041851274523230988200830011,2500000', '41380816740509809292395280.3320044', '183359155743182533907906050197722073594351162073'); + T('252848083743402827,100000000000000', '2528.48083743402827', '503743383711879521120013355828612195'); + T('98069574418320559223875778928515122947287741711497297,1000000000000000000000000', '98069574418320559223875778928.5151229472877417114972970'); + T('63210643808681380191879692959261598285204021,10000000000000000000000000000000', '6321064380868.1380191879692959261598285204021'); + T('18241982295796176045680696249,250000000000000', '72967929183184.704182722784996'); + T('940517435169296832108127451,2', '470258717584648416054063725.5'); + T('55842359310373546663302494925523543342262143787999046184363835703,10000000000000000000000000', '5584235931037354666330249492552354334226.2143787999046184363835703'); + T('298991506390580492859083808694073988657502789821,10000000000000000000000000000', '29899150639058049285.9083808694073988657502789821'); + T('6930195055948617,10000000000000', '693.0195055948617', '5757907609830118853131884806500'); + T('3614496879689787374430705036518,101841455572128247685', '35491410245.30874016786935666286319487941134579', '195190430043812451482'); + T('153016231039501975524480588156505131693512848094041350606332993,34188657170984476841125800', '4475643201610302041685982836005246034.654308295479849660834145713924093080', '46378851978993763287521043'); + T('10030484490,1', '10030484490.0', '6598579459658967203976644647349896921'); + T('1355896469090076356140549902302865199527128695725221,2500000000000000000000', '542358587636030542456219960921.1460798108514782900884'); + T('38099363522125304202166422476325079802687,500000000000000000', '76198727044250608404332.8449526501596053740', '1090889184708266087570263218992'); + T('45445894379730855842101669571055419344067331,50000000000000000000000000000000', '908917887594.61711684203339142110838688134662'); + T('48387017662752417884217,5000000000000000000000', '9.6774035325504835768434'); + T('143145652784899539,50', '2862913055697990.78'); + T('89829636046825131956593468,1', '89829636046825131956593467.96758068078087', '1'); + T('2396938114331990504523927741558933050260578381,4400452737740717', '544702615204686384863075977771.218589328031376415328281017228242917', '4414423939286874'); + T('3647034409547,125000000000', '29.176275276376', '315898686604743'); + T('5657225048612832243372055670023410281,100000000000000000000000000000000000', '56.57225048612832243372055670023410281'); + T('2048923042589181698150868951283041,500000000', '4097846085178363396301737.902566082'); + T('22265,3654', '6.09332237707570340312178966387447', '7353'); + T('248385231997710097553022283051971775382681228677873,1000000000000000000', '248385231997710097553022283051971.7753826812286778730', '807422358051844497008514434773778070855'); + T('263427757666534908045161273191351480,3', '87809252555511636015053757730450493.35240699180867869447737776738648', '4'); + T('280765588944227665193509257500853588850373,4000000000000000000000000', '70191397236056916.29837731437521339721259325', '66471574477550907802775072350732179636393120'); + T('36902302597391526140987033687,5000', '7380460519478305228197406.7374'); + T('467727844444957446621571,530243516999456689', '882100.0718532815202598878323222458558', '2374163188160596325'); + T('7485818045096143742403867459891607342912851163218831484413,1000000000000000000000000000', '7485818045096143742403867459891.607342912851163218831484413'); + T('6617976493555127256572099691726271,878490192697848883004', '7533352732409.31694657454587818166126423', '1597982807060692539038'); + T('329306133931896629549389727842553925953320055555,37084658199', '8879848161598439046985423392402720037.627926029870431056848013', '90166908885'); + T('4454671579284887267233133029196547900999664983,100000000000000000000000', '44546715792848872672331.33029196547900999664983', '312066601531489140643249426'); + T('2118844361164150744985300682261162411140053906424859259689007681661137,500000000000000000000000000000000000', '4237688722328301489970601364522324.822280107812849718519378015363322274'); + T('18513646046835945,109', '169849963732439.86237889670792909799300509767365', '190'); + T('80056584734477457616078211168206873374318213792897,50000000000000000000', '1601131694689549152321564223364.13746748636427585794', '7664647609675678867596695298'); + T('297303657379426370759382568,33333', '8919198913371924842029.8973389736300643077988817', '64991'); + T('103432169127096395317863672765426134926680268209844331529227,5000000000000000000000000000000000000', '20686433825419279063572.7345530852269853360536419688663058454'); + T('71251826759954175648215320529575384132956249082986677350937829,1000000000000000000000000000000', '71251826759954175648215320529575.3841329562490829866773509378290'); + T('641201328368559843571245009607921346857269477,1000000000000000000000000', '641201328368559843571.245009607921346857269477'); + T('4882048845842468103103485015911,10000000000000000000000', '488204884.5842468103103485015911'); + T('224791477,1', '224791477.0', '726177065211931040302050912338320716'); + T('476719932128485235601740674,631706300099407547', '754654389.3158369544946287762236', '936155391544004023'); + T('56347229254417904350177815,1', '56347229254417904350177815.0', '10148255980165242466385019381283504'); + T('3247176969,50000', '64943.53938', '5737853151156754534369320427420819473538787'); + T('148680609085343851516935023,25000000000000', '5947224363413.75406067740092', '3299703385992240915628547545324147430534'); + T('1,10', '0.10', '60676600'); + T('33888285831283524427,5', '6777657166256704885.4', '8419970403584865379780209059074'); + T('708030949802968823378286961,10000000000000000000', '70803094.9802968823378286961'); + T('544304014187971143672362107687657,1000000000000000', '544304014187971143.6723621076876570'); + T('205971513796048941402022334203083,50000000000000000000', '4119430275920.97882804044668406166'); + T('77292325648780699681,25000000', '3091693025951.22798724', '39764580440463487'); + T('2309917737614290424010537409984194531,26393218442', '87519365729890563984994483.37889805167096566858300647613', '41528749227'); + T('1350005508097927361466501541112951711,1', '1350005508097927361466501541112951711.0'); + T('479515933263403410783578189085467270740481972776756061209,1000000000000000000', '479515933263403410783578189085467270740.481972776756061209'); + T('5468820184309309381471350304120512393962862818693211,100000000000000', '54688201843093093814713503041205123939.62862818693211'); + T('129723834937825709698545211076130124,26403603915209861863899', '4913110928129.700171713296448609990870295676076015185', '55134610153115101837033'); + T('232780859367591812749509510144676014553783,400000000000000000000000000', '581952148418979.5318737737753616900363844575', '8362349325310445745344747979264146251506102'); + T('26526026292549267547430447894201,31250000000000', '848832841361576561.517774332614432'); + T('19890543181073850618089831198136526047676310776189255009170995711093373,2500000000000000000000000000000', '7956217272429540247235932479254610419070.5243104757020036683982844373492'); + T('30493213502290966437312425842604482987,1000000000000000000000000', '30493213502290.966437312425842604482987', '724744520119961789856512230962935140768926990'); + T('275344194003530259835120378143,50000', '5506883880070605196702407.56286'); + T('280641866494800916387325846054898697443,500000000', '561283732989601832774651692109.79739488600'); + T('816489328,1', '816489328.211266', '1'); + T('186929316741636687784817442181,50000000000000000', '3738586334832.73375569634884362', '847366608343837425110540459931506231838'); + T('112563301820705703136709010962115946,426227402670606553', '264092128088010144.981654762325530158196731698433', '529348397551579750'); + T('435191728671575057019159870521595631,1000000', '435191728671575057019159870521.595631'); + T('297734036862960068140512298506553,33525048786443771', '8880942687348218.29539231419286944799431547446739362', '66580157811010440'); + T('644491386590497383264428696888480290002513,100000000', '6444913865904973832644286968884802.90002513'); + T('692870436323024990207,2000000', '346435218161512.4951035'); + T('16731325404663519753103973595257782597,5000000000', '3346265080932703950620794719.0515565194'); + T('7678382551,10', '767838255.1', '563996631510634040120890403050803455723'); + T('301101154009241217644497759979222592173429957444321800273,5000000000000000000000000', '60220230801848243528899551995844.5184346859914888643600546'); + T('3287369581548004161063138286884405777483908660733707180700133,500000000000000000000000000000000', '6574739163096008322126276573.768811554967817321467414361400266'); + T('7072616405346678239433829996523626553492305980858871567461,100000000000000000000000', '70726164053466782394338299965236265.53492305980858871567461', '4156731482608469668334695763987365235929934687'); + T('4206726322500320286718351,500000000', '8413452645000640.573436702'); + T('8042280713465517964325469588870746568338611,100000', '80422807134655179643254695888707465683.38611'); + T('26905465406799944428340969750110533073398836737,10000000000000000000000', '2690546540679994442834096.9750110533073398836737', '8335668443865329061594075961775870790796125'); + T('781397951264870786241984162,53412969887938978591', '14629367.2286759680365043324657384094905107442051', '79799519873530341684'); + T('11272468788367824600929293072031224512269133,500000000000', '22544937576735649201858586144062.449024538266'); + T('35062259331242087386880791,3774248', '9289866307471604247.225087222673259247488484429220179469', '5015595'); + T('40684596467754525130528154364962148818,4282358620351909', '9500511301038867618025.61680375343530528695710569699373987', '4516893654064672'); + T('11718831363175661697070030246145843821,3243', '3613577355280808417227884750584595.689485', '4424'); + T('723075924168109306363,129', '5605239722233405475.682148', '246'); + T('1425315029,100000000', '14.25315029'); + T('23081969548598774686163,261431419053327', '88290725.0864537257072290999928', '439109518021570'); + T('74432727113,5', '14886545422.6'); + T('5043881924600298710923,5283123823581648', '954715.82590711316746962783430632190', '8464867636721848'); + T('1199912974622736146774960640527,101153498187505481', '11862298349766.31444753914108283160', '864586429503386891'); + T('2671282759101377354629,5000000000000', '534256551.8202754709258'); + T('4428522968683635809406603927474774548389467299,1000000000000000', '4428522968683635809406603927474.774548389467299'); + T('29178029301,5000', '5835605.8602'); + T('606209140346077832367770959,20000000000000000', '30310457017.30389161838854795'); + T('950780223241033310711461629624186798117525059147,10000000000000000000', '95078022324103331071146162962.4186798117525059147'); + T('12431119464175333997,5000000000000000000', '2.4862238928350667994'); + T('234188333,2500', '93675.3332'); + T('8882443557897602881136097481314340616279449789015613,10000000000000000000000000000', '888244355789760288113609.7481314340616279449789015613'); + T('620853587690846221319415358259599862766390740728717,20000000000000000', '31042679384542311065970767912979993.13831953703643585'); + T('18330643901258352830379667572558501125731138590723,2500000000000000', '7332257560503341132151867029023400.4502924554362892'); + T('1737914673731044895006236355997286362604696463,20000000000000000000000000', '86895733686552244750.31181779986431813023482315'); + T('32321383496895512945858052467433508644049961463611439,500000000000000000000000000000000000', '64642766993791025.891716104934867017288099922927222878'); + T('30443644280497735598449,100000000000000000000000', '0.304436442804977355984490'); + T('33441569099242498502093191685727884000199,1000000000000000000000000000000000000000', '33.441569099242498502093191685727884000199', '226046621508705333950998644181135613143302286173'); + T('398604346574198750962183419866817869,1', '398604346574198750962183419866817869.04266056', '7'); + T('512097566031,1000000000000', '0.512097566031'); + T('398681694350124818470993924383729,500000000000000000000000000000', '797.363388700249636941987848767458'); + T('3812252051639510486930285769517024400609099822879069290116480023961048395781,50000000000000000000000000000000000000', '76245041032790209738605715390340488012.18199645758138580232960047922096791562'); + T('17640229131583372766764324994200509903251266518839,20000000000000000000000000000000', '882011456579168638.33821624971002549516256332594195'); + T('560154998022191785354816414733070384411658872186803,1000000000000000000000000', '560154998022191785354816414.733070384411658872186803'); + T('71890032720748761728115659399,11502294600531586', '6250060115607.39517761094265713855993887187878900', '56396172263945605'); + T('239652696866514152551465514613,1000000000', '239652696866514152551.465514613'); + T('624116519630700792,1167196367', '534714241.130516466043798094841834', '1620799323'); + T('354713305113764443146383722,1', '354713305113764443146383722.4', '1'); + T('291430659582700164960933388735,37370964395748226', '7798317873109.4467055700449997519564282043354166', '60816081804303776'); + T('488,1', '488.292453', '1'); + T('5375378978249541387849408245604751505152302194421,25000000000000000', '215015159129981655513976329824190.06020609208777684'); + T('13453827695164848671202758912258191501381686420571586492041,200000000000000000000000000000000000000', '67269138475824243356.013794561290957506908432102857932460205'); + T('89089683441815473,1000000000000', '89089.683441815473'); + T('9209451109,5000', '1841890.2218', '134792391785549571059323696404'); + T('5753101370471889620242487730093198832286126348947,12500000000000000000', '460248109637751169619399018407.45590658289010791576'); + T('97943035611348452670762369622371455167581899341662817,1000000000000000000000000000000', '97943035611348452670762.369622371455167581899341662817'); + T('156481263905560941381243892108,159892048517', '978668203684460155.744443223268507096551689891232818887', '322004247450'); + T('2555714776189801984122292922264279394187,5000000000000000000000000000000000000000', '0.5111429552379603968244585844528558788374'); + T('54279806605191090207,1', '54279806605191090206.69', '1'); + T('31837316259061,16072996650298', '1.980795302316617044769286885040', '49459229769021'); + T('4271818608155766034681095050304504858956311601618369719,500000000000000', '8543637216311532069362190100609009717912.623203236739438'); + T('176478464295519818379214397692871852257325839802281,1000000000000000', '176478464295519818379214397692871852.257325839802281', '90779039488828051777510007885720349007138577'); + T('348438519284667659789950964099607679,250000000000000000000000000000000', '1393.754077138670639159803856398430716'); + T('65822230159387850562143906302474539651870314716129059,2000000000000000000', '32911115079693925281071953151237269.8259351573580645295'); + T('45672374821762348481787087840824627394334023792813,100000000000000000000000000', '456723748217623484817870.87840824627394334023792813', '23761423870035685067842276095584074976971583'); + T('464877382392713428729345554492047701,50000000000000000000', '9297547647854268.57458691108984095402', '79229417025138906364159421018995634243'); + T('84227563396748648999111809845309,5000000000000000000000000000000', '16.8455126793497297998223619690618'); + T('4557298469196086700221846516327,100000000000000000000000000000', '45.57298469196086700221846516327'); + T('80439239502527,1000000', '80439239.502527', '533338416082600676071203071632265123199117929'); + T('935236327881877011999858293276481942539,100000000000000000000000000000', '9352363278.81877011999858293276481942539'); + T('42714429794630694344783675903666677070293499362190798,2299869685120688616083', '18572543510172490391080421152535.67751350101760083140434', '2523895099168949296133'); + T('947258061205512702708184333018496368818813104995057,1000000000000000000000000000000000000000', '947258061205.512702708184333018496368818813104995057'); + T('0,1', '0.00'); + T('1357605379576214126002356605597838987734159077021017189,10000000000000000000000000000000000000000', '135760537957621.4126002356605597838987734159077021017189'); + T('689179106336557793377586103585498426183,1000000000000000000000000000000000000', '689.179106336557793377586103585498426183'); + T('3185931020723678246265927634227924895843827321051,5000000000', '637186204144735649253185526845584979168.7654642102', '8348820773767166375670963549814381'); + T('181704427890961813309386683087009072816236283562619436859899,20000000000000000000000000000000000000', '9085221394548090665469.33415435045364081181417813097184299495'); + T('206086803,50000', '4121.73606', '164519844857384467378024'); + T('2446815034234629509921183262469736744807867506113159757,50000000000000000000000', '48936300684692590198423665249394.73489615735012226319514'); + T('11921542076626216037383,2467379936129', '4831660459.77076950587336328803734586299', '4032388674437'); + T('4821454596269229904070747116,5', '964290919253845980814149423.2', '63058918491'); + T('8059615507653467966326957937996724771202206977059344880847,100000000000000000000000000', '80596155076534679663269579379967.24771202206977059344880847'); + T('72323768597570082020606327010228744367968599,10000000000000000', '7232376859757008202060632701.0228744367968599'); + T('28149894654702826785477357889173350109389,332175002107', '84744169417165234660977522265.35323457903133812593052374237901963', '660733805280'); + T('211462938819720593425336680167945416724957,25000000000000000000000000000000000000', '8458.51755278882373701346720671781666899828'); + T('8669768238324809349466041,100000000000000', '86697682383.24809349466041', '65200093702980892'); + T('9229478586505609450209233741970260794135057090509829,200000000000000000000000000000', '46147392932528047251046.168709851303970675285452549145'); + T('788251666453791388583584838872536454639199125815589911,20000000000000000000', '39412583322689569429179241943626822.73195995629077949555'); + T('20943607945514035985620131263207,5000', '4188721589102807197124026252.6414', '4835242474956309626165311527265229'); + T('1772029297651420947345744911718400232486579,1000000000000000000000000000000', '1772029297651.420947345744911718400232486579', '887760316568762719383237942823678'); + T('757397481749167231261,12500000000000000', '60591.79853993337850088', '66725488326793109720958265319522090494147096792756'); + T('254427806433,20000', '12721390.32165'); + T('665415819,1000000000', '0.665415819'); + T('746095752604743115329558773090119,10000000', '74609575260474311532955877.3090119'); + T('200405698845550169272337116046884055,37753768', '5308230395587274077446709850.17665137424163872012965483562443432875', '52358187'); + T('876243876010368000888263,6250000000000000000000000', '0.14019902016165888014212208'); + T('314444059696144669541009651,100000000', '3144440596961446695.41009651'); + T('102685572797675093,500', '205371145595350.186'); + T('53720823257553465809425585560295424700501,10000000000000000000000000000', '5372082325755.3465809425585560295424700501'); + T('144228,1', '144228.0', '893072502'); + T('2249884045617817731,500000000000000', '4499.768091235635462'); + T('6149980092464732650245703095614058473554397900,7551277', '814429147873231593841108344405066649462.653522046668397742310767776', '99624556'); + T('1005318427,100', '10053184.27', '56258703'); + T('675360018584114704817648366594913164055503162783551547601259390568622759863323,5000000000000', '135072003716822940963529673318982632811100632556710309520251878113.7245519726646', '763113868956966253237445913550376861628125707761719940487681719401160610436'); + T('487813882528400826023428640609378101429959398115157937005578981194998958082862673744095665022036524299189099,10000000000000000000000', '48781388252840082602342864060937810142995939811515793700557898119499895808286267374409.5665022036524299189099', '319053905671710373413564483718075497688524361485928741160092292043716624896461985792922106492711599194534899554643542426'); + T('4363269813583297680660811455498012143883949072442011552361660186260454870353040104340521418931006735842679876713781061,10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000', '436326981358329768.0660811455498012143883949072442011552361660186260454870353040104340521418931006735842679876713781061'); + T('341893039028161520368729363564608981945974443020224230053218402863771456413927271762947534978276261913698192670665537,1000000000000000000000000000000000000000000000', '341893039028161520368729363564608981945974443020224230053218402863771456.413927271762947534978276261913698192670665537'); + T('91901269276951481268589508998910356181948890482769886151337833001536520925704410737790986004918759962586403387644931014593138475668109,200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000', '459506346384757406342947544994551780909.744452413849430756689165007682604628522053688954930024593799812932016938224655072965692378340545'); + T('160085901137799630792793617081212539406350610856533352536667873727,50000000000000000000000000000000000000000000000000000', '3201718022755.99261585587234162425078812701221713066705073335747454', '82302986588243438196352421107435286399958881274722031838421651877101115'); + T('19730270740072250726350191888457903937782226838056969873977606036442991786321705617019361264080014612697781414129464904485361465812168904497,500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000', '39460541480144501452700383776915807875564453.676113939747955212072885983572643411234038722528160029225395562828258929808970722931624337808994'); + T('554184362944725960497789037,625000000000000000000000000', '0.8866949807115615367964624592', '3519583398754511869875010683565244740317978393251156588940794481183604900896512'); + T('638231282580449825792515353133591102373788595106470546093619096974527294935424922680855148938101691766274567269680519810515529956690038641911538125173665109699,10000000000000000000000000000000000000000000000000000000000000000000000000000', '63823128258044982579251535313359110237378859510647054609361909697452729493542492268.0855148938101691766274567269680519810515529956690038641911538125173665109699', '4108116384125526836507938785056766891019126123715803937416172409988923081826654552'); + T('47734373761311372617250467020779084445512709682911994169631,625000', '76374998018098196187600747233246535112820335492659190.6714096', '612857840076182176420280571134792'); + T('96501773711552295237818469319540275439821230156574621025922681890456142035559160552388101621981467063,1000000', '96501773711552295237818469319540275439821230156574621025922681890456142035559160552388101621981.467063'); + T('74403513794353613906027668774054715460457535829576006466757980055646532561807,100', '744035137943536139060276687740547154604575358295760064667579800556465325618.07', '9062598597523005153489301824610095730026103190392060661534'); + T('4552464673010589780215760669790574819454182498449417341631679,50000000000000000000000000000', '91049293460211795604315213395811.49638908364996898834683263358'); + T('553156651153146542558050182057356237357767613058590716666708160610420683997653491,10000000000000000000000000000000000000000000000', '55315665115314654255805018205735623.7357767613058590716666708160610420683997653491'); + T('10094472168930635850294295702643512345309187651848439883217715065443928296148508896180724198805240643680251877332506709166622938770815681788987679097027,500000000000000000000000000000000000000000000000000000000000000000000000', '20188944337861271700588591405287024690618375303696879766435430130887856592297017.792361448397610481287360503754665013418333245877541631363577975358194054'); + T('1390638862389813656941579907173114981020090536680671582853648156827291166367509597465818901222618393320613440799359074159,10000000000000000000000000000000000000', '139063886238981365694157990717311498102009053668067158285364815682729116636750959746.5818901222618393320613440799359074159'); + T('764577472361146278858344672554647493530542460178759013102132345200903874086918631004687608105278297,1000000000000', '764577472361146278858344672554647493530542460178759013102132345200903874086918631004687.608105278297'); + T('127046433646264975767457966930607201956534938099951672926121899531366533718900568517910151332761,10000000000000000000000000000000000000000000000000000000000', '12704643364626497576745796693060720195.6534938099951672926121899531366533718900568517910151332761'); + T('759706682454180966323586844671034018022403078651480091043022480725,1', '759706682454180966323586844671034018022403078651480091043022480725.0', '8491246168928786773792854508283380644357724943352621981745640028894860319462721890015437671665726136602020425847570035'); + T('1232133064589580204554541761202884749167806439036647915064417866743368822300712460904153,50000000000000000000000000000000000000000000000000000000', '24642661291791604091090835224057.69498335612878073295830128835733486737644601424921808306'); + T('860753657944772685510679876822980161245604845668538717795313417907394077573430859608260608605457173684835477710478072161454145765516186246987,1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000', '860753657944772685510679876822980161245604845668538717.795313417907394077573430859608260608605457173684835477710478072161454145765516186246987'); + T('16005705331614697482755365912151704073591971169105093634086192436675140166715310612622644294152431935263181364819,250000000000000000000000000000000000000000000000000000000000000000', '64022821326458789931021463648606816294367884676.4203745363447697467005606668612424504905771766097277410527254592760'); + T('69113805838501162731578029205573692448157213720275881273819982233592866266473,100000000000000000000000000000', '691138058385011627315780292055736924481572137202.75881273819982233592866266473', '58975855894427885852484710799418772114376247'); + T('4729199753900213112131177820583529490731573946050705866217107256295944829467960577257186,510681', '9260575102461640656556985320745297927143508268470348155144027790922209421278568376.8481419907926541887178704058086735', '7975458'); + T('23498489129913177044438966039588756148779460123795350021472351713417447381957515629514242536444852177161448159204317722351313614332682938279261185510112182173899064135103,2500000000000000000000000000000000000000000000000000000000000000000000', '9399395651965270817775586415835502459511784049518140008588940685366978952783006251805697014577940870.8645792636817270889405254457330731753117044742040448728695596256540412', '2738063341239025028739321372348930298237495900370115886451023412898232579270'); + T('581214945232966023983197807568271384582625395798108238988909577356391,100000000000000', '5812149452329660239831978075682713845826253957981082389.88909577356391'); + T('755774297159354724303490783235728345982079,10', '75577429715935472430349078323572834598207.9', '976346638366081178717993549430125376917323536668391354073736050931714508949029849095898475324947663457561691565869'); + T('72952666104960722610055921852408716115501920420152774589434925111108095463,1000000000000000000000000000000000', '72952666104960722610055921852408716115501.920420152774589434925111108095463'); + T('84253414454971232257480071766397766368674340440243975710448609630373480623069,50000000000000000000000000000000000000000000000000000000', '1685068289099424645149.60143532795532737348680880487951420897219260746961246138'); + T('36916365097825321454559738506509326979820327574234098190319159712574451468922233909969299557,384885741807809995033', '95915127758251045669622249994875027216126584339530370592512741225931996.041944546489526354777674857433920571240428120906031224034258694793804737624806', '996972807953924088414'); + T('46202911095785852843473956927532538280968392442342938578610785707745261965259051602639282297839,500000000000000000000000000000000000000000000000000000000000000', '92405822191571705686947913855065.076561936784884685877157221571415490523930518103205278564595678'); + T('1772839597150920835362349139129708947,250', '7091358388603683341449396556518835.788', '85650512041659658831614'); + T('342934812509126807028655148458814382887953695727579025045242138980820292534408239977896632855835901410506357,500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000', '685869625018.253614057310296917628765775907391455158050090484277961640585068816479955793265711671802821012714'); + T('5467569331238493371328759073003072869784239507210662,37362334854454456899796270284749', '146339069882476370230.94111136842283676758455168072986640234', '96171449439665788570414679267610'); + T('9014126789799805335062120695538270131901418610794009238567600799878815000839260540538480396467469718753863,1000000000000000000000000000000000000000000000000000000000000000000000', '9014126789799805335062120695538270131.901418610794009238567600799878815000839260540538480396467469718753863'); + T('1250041788678023084610616992418436156068571496356335523903697743016099193022025463752931903884161856935693369085205315349974809,2000000000000000000000000000000000', '625020894339011542305308496209218078034285748178167761951848871508049596511012731876465951942.0809284678466845426026576749874045'); + T('25239061830805058260347549564363328809074990929185276918644989105557079183929665109,500000000000000000000000000000000000000000000000000000000000000000000000', '50478123661.610116520695099128726657618149981858370553837289978211114158367859330218'); + T('23046884534040883773,25000000000', '921875381.361635350920'); + T('17516790639377003056238183959898186484431649497446483054036345045419619227552721302646069807169936889243905650537200431291875228387189659891591,2000000000000000000000000000000000000000000000000000000000000', '8758395319688501528119091979949093242215824748723241527018172522709809613776360651.3230349035849684446219528252686002156459376141935948299457955'); + T('830206819686442727061104242686969514890459473419575742090385225994337814887819198514017,1000000000000000000000000000000000000000000000000000', '830206819686442727061104242686969514.890459473419575742090385225994337814887819198514017'); + T('413893751926246540100720057983571518390906128684895499155815473199,1000000000000000000000000000000000000000000000000000', '413893751926246.540100720057983571518390906128684895499155815473199'); + T('206500127024184753713560420566631778621,500000000', '413000254048369507427120841133.263557242', '5224151114621627696369936014682664216594925452865329899315399663005407747319945317435179613'); + T('16217662953881464354149036371967353081296233553367,125000', '129741303631051714833192290975738824650369868.426936'); + T('158877139692735544114713014099098201170707224624720234416065901772598705859728066434630087577,10000000000000000000000000000000000000000000000000000000000', '15887713969273554411471301409909820.1170707224624720234416065901772598705859728066434630087577'); + T('1363481494416319010330583135309100415177784161418502772461,5', '272696298883263802066116627061820083035556832283700554492.2', '504783341926451844554'); + T('558130898291826876915105441493420754206140253419478295461642459649585459789613029845418176825679124538566594627314537483,14998270055051685963765623', '37213018317658468525204154347997553646488930517742862611997889963271621447764872970409325420092.841681521850527813475859312769151840560733279569364227935675286869135262631', '77352003382953136988715543'); + T('10451566350931936938155976509981211336966461645889115229513600263067775576558118998602357161325,346893908613991685517980584558', '30128999360902532302715650110413576813750396896824593726469912912.366199216341942668442860487226805935762749663328322107767450167435735148060307', '351381928759382906855046900016'); + T('1468542461374793122289224886453463993847932190034840253613540817203177345513896917033925255992523630246969352648225086758781193593730856733866872342988998661495531701242165439378823,1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000', '1468542461374793122289224886453463993847932190034840253613540817203177345513896917033925255992.5236302469693526482250867587811935937308567338668723429889986614955317012421654393788230'); + T('209271529724729052617837048480332267987578229392112165277475305343450561725459538265834951255626969900314942469226110140479983692763731004233,40000000000000000000000000000000000000000000000', '5231788243118226315445926212008306699689455734802804131936882633586264043136488456645873781390.674247507873561730652753511999592319093275105825'); + T('7101983556936994042497298646151570859081364497353591813399109991310416906158547491525491881998229621477347427929,100000000000000000000000000000000000000000000000000000000000000000000', '71019835569369940424972986461515708590813644.97353591813399109991310416906158547491525491881998229621477347427929', '56744786973831246136639355921544534171994029324959759143702819842099548907292114036606647'); + T('700608601940127639463635186370519157157680192656598879705304237171077875720684209649489000891686101,1000000000000000000000000000', '700608601940127639463635186370519157157680192656598879705304237171077875.720684209649489000891686101'); + T('8602847585675548348838808002159088443209,100000000000000000000000000000000', '86028475.85675548348838808002159088443209', '72582545116505333796075480243333118971380354201482192123094188476893348588726112639735928329133275172401442'); + T('148408052390556415124137719435490471,25000000000000000', '5936322095622256604.96550877741961884'); + T('416641482734579229938341545166425850147492151317072668023493195705213636353836873961255897570763844236,25717644180352342203393925081331448253691044279201083210974082080156217889361', '16200608415481665314529154.120823068329960470035846076484357364396252835780302742135244075134790170921737797562758009637507765', '67934439808176948911255062541382522278265771795756778046815888409619479526534'); + T('25995084389459522138350250382942032604375065037616720903582722822063333331140405124796661617605799564677801133030110,310603780302310842094866507130236732405959190501476949', '83692105627814610657066372727390901983001818916459785375020003.3353553456353151128930868769216270423551208386173443046109736307958268123', '3982369319326564077663582191574752696545616233919787956'); + T('3588237426497060004880870257545324138618112195268225592118612244849912586535502781039993176234955972397277,1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000', '3588237426497.060004880870257545324138618112195268225592118612244849912586535502781039993176234955972397277'); + T('3313686586024934130977871482209887492640993452578557026807334010909893148780133822458503199230307206620292985108899540304687909083,1000000000000000000000000000000000000000000000000000000000000', '3313686586024934130977871482209887492640993452578557026807334010909893.148780133822458503199230307206620292985108899540304687909083'); + T('273781703818906790628718083951503889627525115303814013952356530599951005452333198523390628974188239287896869929063813635816988840128233022694039881132781253023590270236688227083953341213,10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000', '27378170381890679062871808395150388962752511530381401395235653059995100545233319852339062.89741882392878968699290638136358169888401282330226940398811327812530235902702366882270839533412130'); + T('19909985415765292964414127154401583912053874960439188258560175396645802964673383822417554033845591984786339,50000000000000000000000000000000000000000000000000000000000000000000000', '398199708315305859288282543088031678.24107749920878376517120350793291605929346767644835108067691183969572678'); + T('85820359411270844647913420510043686839128620275465076863336894062316958345993146300360121970304754792703695315584328722640236913591546766980436151189616776567197756454666891371391,10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000', '8582035941127084464791342051004368683912862027546507686333689406231695834599314630036012.1970304754792703695315584328722640236913591546766980436151189616776567197756454666891371391'); + T('35000532278070509562103057820976975041119512140519835960943403473094631,3662495203502602060139335', '9556471840454013866302210174557670158611986330.928972391824443058488437395568693146286054952317466368062069862106460410265233312282378988449302', '7332300780944167684576224'); + T('39376042039638531344672309024889855506726524477396754533061336162078676158805401717447421956134946657,125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000', '315008336.3171082507573784721991188440538121958191740362644906892966294092704432137395793756490795732560'); + T('6597859015029510292915275130297833881131020029929841154557256370393361962811461577212908969927685870101608101607420224161,100000000000000000000000000000000000000000000000000000000000000000000000000000000', '65978590150295102929152751302978338811310.200299298411545572563703933619628114615772129089699276858701016081016074202241610'); + T('77941951791579411765197932683235264335432882206721156588976877215382711588365187167594098027719350761193,100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000', '779419517915794.11765197932683235264335432882206721156588976877215382711588365187167594098027719350761193'); + T('7469527965820984707499768784473976650257429936748963414116722131553049029423204476861,10000000000', '746952796582098470749976878447397665025742993674896341411672213155304902942.3204476861'); + T('793689283759962354945365347,1000000000000000000', '793689283.759962354945365347'); + T('197236579651099174237,25000000000000', '7889463.18604396696948'); + T('13248974903544268426929651334228835034267588350879238246365359559734640920519013385480529227732605812835471479125497458201213631616739806389677655600244904631323,100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000', '132489749035442684269296513342288350342675883508792382463653595.59734640920519013385480529227732605812835471479125497458201213631616739806389677655600244904631323'); + T('6385188721690120379276122832047303271584663620275352024639252661807196391,2500000000000000000000000000000000000', '2554075488676048151710449132818921308.6338654481101408098557010647228785564', '69360752312105986272643762566971174625835381312809147456026971'); + T('25862063700127446496519773714020332299021654523004379222786870074851196534089686069439903327778111173914467314241700595801,100000000000000000000000000000000000000000', '258620637001274464965197737140203322990216545230043792227868700748511965340896860.69439903327778111173914467314241700595801'); + T('337561464417705983649060127652172317890452693275809295120807312918687,1000000000000000000000000000', '337561464417705983649060127652172317890452.6932758092951208073129186870', '8489487941822174030068781645476719602281025013758808050237847942377537968055889085564660960488663905553823'); + T('12655042328012036252407420053218831648099,781250000000000000000', '16198454179855406403.08149766812010450956672', '64236488636162905463925496010047829405545831499743306133923178415645494'); + T('5922194307177579374811484837474903626993993529770932798657322377651387,10000', '592219430717757937481148483747490362699399352977093279865732237765.1387', '3152877460250162477684029172894929736548191904765877685303248'); + T('77272660141369492538273738266098041603520972222166296362371597167705245085548532311984761778478186732722925744042787931177199124350594600293303988626922427396336198562206707,10000000000000000000000000000000000000000000000000000000000000000000000000000', '7727266014136949253827373826609804160352097222216629636237159716770524508554853231198476177847818.6732722925744042787931177199124350594600293303988626922427396336198562206707'); + T('192725006484481955518141547878555444458245002321169158256767255032910672226968644775201483730442494510679299467564928048217,1000000000000000000000000000000000000000000000000000000000000000000000000000000000', '192725006484481955518141547878555444458245.002321169158256767255032910672226968644775201483730442494510679299467564928048217', '439652030092743058167706039163812494429147760995240096210156202016745715173125314627'); + T('4119,1', '4119.0'); + T('356296672182939168877855246845022740124409939589391646979258814297585852593514729523,775462837988393944311111588325395377444992149494144758081106318', '459463245340290213739.77440565240861533938923822785461681533785064251235446563843782326420183106592724997999481060381275', '908934942330192208051413123327017049131882835053534224912068502'); + T('768098015293590626357287707160911,1000000000000000000000000', '768098015.293590626357287707160911', '4970166725632570631012333623050617477446500886979586460886675511529151792998381196736807216434719029198488026413277'); + T('17308584498708223882873554139102525513289773342431835066642028579392867094694512432111520248839813,1250000000', '13846867598966579106298843311282020410631818673945468053313622863514293675755609945689216.1990718504'); + T('730329569763986956693151189671893374471654148260912717254713032732776230933990274047334434047257585286285228208365006513375988013830063457878469670357195374629549829394279454843199,10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000', '73032956976398695669315118967189337447165414826091271725471303273277623093399027404.7334434047257585286285228208365006513375988013830063457878469670357195374629549829394279454843199', '6972155039468853521357852529419312954662546952741049465777419800482878657794987116597422340793948647312389878781628'); + T('406720109833232022397234646712546646136794280590981538261378858703302037675499399765989883329,100000000000000000000000000000', '4067201098332320223972346467125466461367942805909815382613788587.03302037675499399765989883329'); + T('306423719310620474116542871532316659191577143943784441511526985433945123437819539085214867633133,1000000', '306423719310620474116542871532316659191577143943784441511526985433945123437819539085214867.633133', '66262964973805318142587348908691096'); + T('1354706619236923062203233937522312950517745299920180807301978313151489452805373608391524296715118535473,250000000000000000000000000000000000000000000000000000000000000000000000000000000', '5418826476947692248812.935750089251802070981199680723229207913252605957811221494433566097186860474141892'); + T('1974457002526436695523552349738485726387619749364549221535073398987258972810290980762750581643854743176718698008795411899,500000000000000000000000000000000000000000000000000000000', '3948914005052873391047104699476971452775239498729098443070146797.974517945620581961525501163287709486353437396017590823798'); + T('156783373050685706995418777471852885862528591164845287226607990619037741515473450079378844849264334400620506174471,100000000000000000', '1567833730506857069954187774718528858625285911648452872266079906190377415154734500793788448492643.34400620506174471', '1475852993423867930895375531269870744877795635101316802275045394546252736459'); + T('817062512854985934298222856248923943142561938985062588141950589526461,100000000000', '8170625128549859342982228562489239431425619389850625881419.50589526461'); + T('6290321680681892372665821719454390401908672910524568767187416242561415491887619927859962686607232816600821305765944442019799,1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000', '6290321680681892372665821719454.390401908672910524568767187416242561415491887619927859962686607232816600821305765944442019799', '9105579897058381459068780523330349175438124909135209330622101030511881627579118208200106153986510746652194'); + T('291019633702648422081986065259017934111952044975205808908304848900279460934291632580590482482887983287848959317,5000000000000000000000000000000000000', '58203926740529684416397213051803586822390408995041161781660969780055892186.8583265161180964965775966575697918634'); + T('9761851721,10000000', '976.1851721'); + T('46347552512954346442636579916791964575641708792980525139317489275282600482060794741187192532852855496225264908653845892622887557367998590985412813,2500000000000000000000000000000000000000000000000000000000000000000000000000000000', '18539021005181738577054631966716785830256683517192210055726995710.1130401928243178964748770131411421984901059634615383570491550229471994363941651252', '20131139962522780309461689017191472470532273184373694231458313824124123308217129198334611710977665987264'); + T('4583104655599717564687861567606979451521059259267795570154284167355331986003319384,66188846884496355722931850901', '69242853914610712768120180522495339911077166565137157.256079758842112249952337457360998041147', '73473311912842459042771817157'); + T('238700990196510062211759023156089849525744243141210514794850464466693722026273452038656315746884677478,30092123405681931755343047697485765975508737462761615936547801', '7932341197013669060995249486649815002914.388775664475545030214338121665357005207009166397688180912492427405071534798797537035114944', '65853245521247303460683253084956246647481048311248038291232869'); + T('42298914901,5000000', '8459.7829802', '500230246408163621933114312035010656400108045812177724426229'); + T('8074196380821158892995075889038998746407004456023946886130297182819587,100000000000000', '80741963808211588929950758890389987464070044560239468861.30297182819587', '32771612136576235765298661712341320992877938190809773521921351747798365048023003'); + T('8237639161158330611197745589676406384164235975022473710629638053,1', '8237639161158330611197745589676406384164235975022473710629638053.0', '2445104217464463695693500282135171214096744322818309314494766605989146939852441404618950981337350157904852939939373515'); + T('67543757294923929626940280513013641414086200749124590622532346827999900040177969865717432810934479,1916727', '35239111931393427247041587306389298744206243637787014333565680886219007735675435190153544459.348920842665681332000268271160278288144867678', '1995694'); + T('658743889770265303742933377935250192966496461555942991475714429268442962813046457181311534066346113237896378659793723,20000000000000000000000', '32937194488513265187146668896762509648324823077797149573785721463422148140652322859065576703317.30566189481893298968615'); + T('2805501179441768134530084886604077457872799801301882910075637983,100', '28055011794417681345300848866040774578727998013018829100756379.83', '9443876125195970145695293537833903272964339319463666915497252065195075053919409140815614968385107901341125179527914879'); + T('4517797327291151860616480864207613008757043659519224972937765633329645192613384083939856763691292386455457794604201829021,100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000', '45177973272911518606164808.64207613008757043659519224972937765633329645192613384083939856763691292386455457794604201829021'); + T('7397503339464272269855273915959903960816642518570157919,100000000', '73975033394642722698552739159599039608166425185.70157919'); + T('7222002295276272486455390693063960627773827847231792065164227238340366235889305566200968538315044537097,1000000000000000000000000000000000000000', '7222002295276272486455390693063960627773827847231792065164227238.340366235889305566200968538315044537097'); + T('367219394873481267603265750320061360395709498756776364710800723463,406', '904481268161283910352871306207047685703717977233439321947785033.1600984661747', '6541'); + T('1444394660367662282713282645691209012033688835789995095825382219,23057197513854003298629056495', '62643981754495200591799923072694095.830589947154613883171592329886789430042859888542274546466937863915', '68126015383576305118873089291'); + T('66486456721902783143382958103393588590534783949309048501514976388834547,100000000000000000000000000000000000000000000000000', '664864567219027831433.82958103393588590534783949309048501514976388834547'); + T('79393077119427399,1000000000000', '79393.077119427399', '457680453236362518491204537541456509655751496155359270049043835757460913773646217639420768944492'); + T('79965035093,100000', '799650.35093'); + T('4981989182126281993008748299751823310785501417823357606800265327971466995164429423070200992890363497791927,6250000000000000000000000', '797118269140205118881399727960291729725680226851737217088042452475434719226308707.69123215886245815964670832', '56677887877573113002659257334697952352644607188634909253465284091874992869314792073934863690164809324007357194'); + T('2815316100629806442280650620776290692376915362259448998756135028144140939975030651743612709055129972829840588253,312500000000000000000000000000000000000000000000000000000', '9009011522015380615298081986484130215606129159230236796.0196320900612510079200980855795606689764159130554898824096', '259630086511147416886758802731895884065033396642518234216979248'); + T('46695586464432642825171060403079900323010491862383753361945816046325281445639764147,10000000000000000000000000000000000000000000000', '4669558646443264282517106040307990032.3010491862383753361945816046325281445639764147', '42779209808392670932751246137054085319776080319163738333884406583882155006114876471576920'); + T('141870841510827737902203370743784262520488460033697822757850614639775801850436993371020540186361144664063,10000000000000000000000000000000000000000000000000000000000000000000000000000000', '14187084151082773790220337.0743784262520488460033697822757850614639775801850436993371020540186361144664063'); + T('6957664010752546415724323132519018928019295298179423339867424767111181183144993110875961376863,1250000000000000000000000000000000000000000000000000', '5566131208602037132579458506015215142415436.2385435386718939398136889449465159944887007691014904'); + T('421618093371672938615524326204048137268986623787424222206605428544644224123,125000000000000000000000000000000000000000000000000000', '3372944746973383508924.194609632385098151892990299393777652843428357153792984'); + T('79740490393758467762763825028765531324197343705389133253196874446069,1000000000000000000000', '79740490393758467762763825028765531324197343705.389133253196874446069', '3734356963544490606916998560924054030945103'); + T('35316130946513480000918112491378283158238075089400011285127542852378740666170346667104579433857777012085159078825132200346010522593453834556380919575663964381,2500000000000000000000000000000000000000000000000000000000000000000000000000', '14126452378605392000367244996551313263295230035760004514051017140951496266468138666.8418317735431108048340636315300528801384042090373815338225523678302655857524'); + T('11479496353311542550681317423708387702866260566865784453684955378292320572395800527156920358638182034688285765378247985976894354944272730666267894172313899915111,10000000000000000000000000000000000000000000000000000000000000000000000000000000000000', '1147949635331154255068131742370838770286626056686578445368495537829232057239.5800527156920358638182034688285765378247985976894354944272730666267894172313899915111'); + T('522894403668783,76766087553931', '6.811528636280055944192548602728291825591944197128281470842', '78240520039957'); + T('49845253705153083946560757047901116693643415419397420205639209376536358217548291172350660224299549,50000000000000000', '996905074103061678931215140958022333872868308387948404112784187530727164350965823.44701320448599098'); + T('338182838018828865464683020834510805289351205546397745297958338040061441,1000000000000000000000000000000000000', '338182838018828865464683020834510805.2893512055463977452979583380400614410', '14883484065364458852385532901646978224973759592019109846023434280302742'); + T('24649273314632626486164577096640564994348428417490664500095726069181221187821380966404579912254,649340013780256804334593736868432636453000213699945814874643231671', '37960502651195292960651209085.203374798057389753139268671210018169153661152337307012345644628714331515037827618880005930554', '908045485391832255020423148219972840921185441341969856690994256775'); + T('6891475120622508402719679996127417743765330884895739499430668315556332397523619642485183195127062533269943127231396897872180491292719,1000000000000000000000000000000000000000000', '6891475120622508402719679996127417743765330884895739499430668315556332397523619642485183195.127062533269943127231396897872180491292719'); + T('203868258448469033290239608200737201654430772057168471884887178288425302193616031248093726182688629906841814588980515821139,100000000000000000000000000000000000000000000000000000000000000000000000', '2038682584484690332902396082007372016544307720571684.71884887178288425302193616031248093726182688629906841814588980515821139', '358166259674835884479717432826072608521435320683484082553756957458496483'); + T('280498230216490169693952183821575487120350714514115741724266322855990846771014739347659202212007477,50', '5609964604329803393879043676431509742407014290282314834485326457119816935420294786953184044240149.54'); + T('205290587103533238565519893362134986807657,10000000000000000000000000000000000', '20529058.7103533238565519893362134986807657', '308243502694779752750195623211608037227150609235612049765729131496'); + T('863541229244183093415998713738595363675147376202617109427307037227836732506179435314860664537757768564421195844506348962328092938455202919,10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000', '86354122924418309341599871373859536367514737.62026171094273070372278367325061794353148606645377577685644211958445063489623280929384552029190'); + T('1332503354412117081514650043329530553988390453,1000000000000000000000', '1332503354412117081514650.043329530553988390453', '234289217752670763502822022564923291688489066732789627701326549148438368853698800840847667515210806058742602452589237732'); + T('149231253658963411543221910342591002434468175057834645096361910659915438708229394346182595835161154220171761179324657602082487624478039438336283,20000000000000000000000000000000000000000000000', '7461562682948170577161095517129550121723408752891732254818095532995771935411469717309129791758057.71100858805896623288010412438122390197191681415'); + T('14671370523489352352179903919978798858628437740812967,100000000000000000000', '146713705234893523521799039199787.98858628437740812967'); + T('31972694535122492349621199531999,100000000000000000000', '319726945351.22492349621199531999', '444814411628813210359733486923268705561135'); + T('7671901743570237148323156463911986166241861750380367,1000000000000000000', '7671901743570237148323156463911986.166241861750380367', '4714079218556258364560566691433682958400719072779641399659759994605653409470820385182612'); + T('64914904653370646630817723806298619262853179362421159280052334161809239241810441802367897185624994804940558409456741,100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000', '649149046533706466.30817723806298619262853179362421159280052334161809239241810441802367897185624994804940558409456741', '52612631034775473006883291270936837923724549069552008161180077154644088916527893547656086834490317497155689233015'); + T('9622068526799441010744442228965559266999862472192613554951,100000', '96220685267994410107444422289655592669998624721926135.54951', '1440111784139735092809063761962639647793103214120990'); + T('8017871525312353806512067050596604565618790,315548414175204512371056357868162059', '25409322.83329595752563567210426781867380735708550429758298495482482043094943060', '549675823319634926616271312386674851'); + T('461120259670854299006123584618545607266420812575100938736117933259736622570867419,500000000000000000000000000000000000000000000000000000000000000000000000', '922240519.3417085980122471692370912145328416251502018774722358665194732451417348380'); + T('139792040108338252978453845748225898765036739532955399942037889179464005555009808455320117,25000000000000000000000000000000000', '5591681604333530119138153829929035950601469581318215997.68151556717856022220039233821280468'); + T('5894159987779675527812606527112902422823,10000000000000000000000000000000000000000', '0.5894159987779675527812606527112902422823'); + T('10794209997399872663981,500000000', '21588419994799.745327962'); + T('161167944446100079215361865141648945894914926470231878901891105444533027123352649883069305476504208232020922464999657127237239,250000000000000000000000000000000000', '644671777784400316861447460566595783579659705880927515607564421778132108493410599532277221.906016832928083689859998628508948956'); + T('65297284415319840892101117377284751412657466676091246251740082043,500000000000000000000000000000', '130594568830639681784202234754569502.825314933352182492503480164086'); + T('2766105154672097910919416707090692846083531091256961378583814595230638765028364556532292886699927313766545452665695161280216164748824152656732976954620185439709,500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000', '5532210309344195821838833414181385692167062182513922757167629190.461277530056729113064585773399854627533090905331390322560432329497648305313465953909240370879418'); + T('4965317900137877770176694971911414522545908917222619271011776655580494900114140891096653760381029022314448118382968242241409,500000000000000000000000000000000000000000000000', '9930635800275755540353389943822829045091817834445238542023553311160989800228.281782193307520762058044628896236765936484482818', '6087323064050560843067097059341387607572473063508563613294539460569998223927099513534061416866791'); + T('215007524870282058245020779477952115240341474039679043031777558877905242544399693717204716884024411270224399170135910743173,500000000000000000000000000000000000000000000000000000000000000000000000000000', '430015049740564116490041558955904230480682948.079358086063555117755810485088799387434409433768048822540448798340271821486346'); + T('33965356260862969077208625910361234343390562819287919971390918687360011980682938504819,100000000000000000000000000000000000000000000000000000000000', '339653562608629690772086259.10361234343390562819287919971390918687360011980682938504819'); + T('253321930539380453152708334768314839113869868931064250962440429142069655945019464486182962906443502943685473688729176287,50000000000000000000000000000000000000000000000000', '5066438610787609063054166695366296782277397378621285019248808582841393.11890038928972365925812887005887370947377458352574'); + T('1805858228685505996934094902160832337182222604423226849057516769855269416540373086132274874403135855391,2500000000000000000000000000000000000000000', '722343291474202398773637960864332934872889041769290739623006.70794210776661614923445290994976125434215640', '299931180540069025319209074997216426643301728798147429423616370144579300438276293226177325138489'); + T('31190292948951272069611342815544754687766064055983665546419,50000000000000000000000000000000000000000000000', '623805858979.02544139222685631089509375532128111967331092838', '56338321839749805341500571031690869993717263653260288651706865343950144409736437018194620914323'); + T('337956957987594659177352551047823442271367979011679862751244719933544405954450697376536645217973872506443,10000000000000000000000000000000000000000000000000000000000000000000000000000000', '33795695798759465917735255.1047823442271367979011679862751244719933544405954450697376536645217973872506443'); + T('482382437572212496064503056796905534583523906009551169968627497923338185298948,98881775', '4878375591176559037947114691225006171091931814629654149802908553404691.464114069554272473682452528283783605111951075878629019577756662152573343720077796', '99109659'); + T('139531491455761368238852756477562465476379871327657551278823131772010748498903090648551764744244326698930827028903816179520446707286815639062324792223595941248872160472784559239,62500000000000000000000000000000000000000000000000000000000000000000000000000000000000', '2232503863292181891821644103640999447622077941242520820461170108352171975982449450376828235.907909227182893232462461058872327147316589050224997196675577535059981954567564552947824', '72224749819267684231620193401966551095054796101838472670695742640793352422104243890110175387436088259119888983940038219'); + T('1411416267549037105254657861275714068019729378454946755649335485716320411768092167436624477341575741093648180167816197631,2000000000000000000000000000000000000000000000000000000000000000000000000000', '705708133774518552627328930637857034009864689.2274733778246677428581602058840460837183122386707878705468240900839080988155'); + T('27827219481834304112493008583428333387209073306104984885967926767008978220794525219842633952626222316127104787702440880856041944988627062199717762582508863622603544795353020067572812970772493,50000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000', '556544389636686082249860171668566667744181466122099697719358535340179564415890504396852679052.52444632254209575404881761712083889977254124399435525165017727245207089590706040135145625941544986'); + T('553638437587991972935941089538503668489156735607582551300472526062673135513905787569392581,5000000000000000000000000000000000000000000', '110727687517598394587188217907700733697831347121.5165102600945052125346271027811575138785162'); + T('59464723510860089353595161485330798717117977688235446432820252084846370805317110927201609639990666929233,100000000000000000000000000000000000000000', '594647235108600893535951614853307987171179776882354464328202520.84846370805317110927201609639990666929233'); + T('7774943127923741543893327774453314221901409612145708347899080872861725693975133544163108094185354219016483147160029,1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000', '7774943127923741543.893327774453314221901409612145708347899080872861725693975133544163108094185354219016483147160029'); + T('2063769973984552389094577183907780446432714643266876167586915450871645665016033538837151166563922743418998809762073552642334105506792838094376118903308372743156366972007822263,5000000000000000000000000000000000000000000000000000000000000000000000000000000000', '412753994796910477818915436781556089286542928653375233517383090174329133003206707767430233312.7845486837997619524147105284668211013585676188752237806616745486312733944015644526'); + T('7836548872315924926855127765671663567146206518249512862581538745788328087691847420220642279030295292792647,1000000000000000000000000000000000000', '7836548872315924926855127765671663567146206518249512862581538745788328.087691847420220642279030295292792647', '96234594442279927365515769186347797337180500148188755841266605718724324934597679706160305024645'); + T('6276636774338099448991514147769685704475544055827320758088707616484824104853942959262327777197423596444308226835178887,100000000000000000000000000000000000000', '62766367743380994489915141477696857044755440558273207580887076164848241048539429.59262327777197423596444308226835178887'); + T('88804107107559930046092936712139620512040038382914013891624071753711226264013140153583717755112772233557425098002467830699052147734198261974270570978078001915494463782113496837,100000000000000000000000000000000000000000000000000000000000000000000000000000', '888041071075599300460929367121396205120400383829140138916240717537112262640131401535837177551127722.33557425098002467830699052147734198261974270570978078001915494463782113496837'); + T('115002442406703584178185294122325712122842192109474381450624873216924285090467595499234670133342099726329554064579,500000000000000000000000000000000000000000000000000000000000000000000000000000000', '230004884813407168356370588244651.4242456843842189487629012497464338485701809351909984693402666841994526591081291580'); + T('281153885629419726548824319427449841809079796787193695801572124693821870927,11125957', '25270085587192160328214851039551010471196302195594832498595143293635.0437923677037391020843520523715800957846185038636999961559631821400093846457966749', '26200508'); + T('107590545904878109399898544892791250425613052952813246657210241239393365761789609,1250000000000000000000000000000000000000000000000000000', '86072436723902487519918835.9142330003404904423622505973257681929915146926094316872'); + T('336691854215296851780405900296031485870297547905657610287048904912614725160314592634910900322215844608347716185906299548473017105494879354044791,1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000', '336691854215296851780405900296031485870297547905.657610287048904912614725160314592634910900322215844608347716185906299548473017105494879354044791'); + T('371480560684277082668491524150108281529274363544360285467612385157153460856295638808810364012946376958259738430744167803245930749900255140112481712729944733952142996121247846362608579431806857,500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000', '742961121368554165336983048300216563058548727088720570935224770314306921712591277617620728025892.753916519476861488335606491861499800510280224963425459889467904285992242495692725217158863613714'); + T('90156107022576191282253438844768882560380632069595603307941806727485440731711227686222691231,1', '90156107022576191282253438844768882560380632069595603307941806727485440731711227686222691231.0', '5480298739494692404113665279307860287265772'); + T('676207065438806757306657797270701640910718687363106,1', '676207065438806757306657797270701640910718687363106.232707553596649377152910871250455082640109949938595144796401', '2'); + T('307627784692122693008294108656835628137921414014386937549059014929182112328861899672419,100000000000000000', '3076277846921226930082941086568356281379214140143869375490590149291821.12328861899672419'); + T('1019112032522319011513743334667754449108139023710934695597532972093019590416143731973703239996332828727266689906936150481584706243926489450173712530253,17054304152143118034178339067126344617804666449539944765504311916945546205137312910252', '59756881513940453622961763561761551483631213107634476215190193531.3165867394473728188428531421874167961311863141432393149058157078094433891826691976659580244336159690', '24149837024363500548775403668943393737605180826594994856002909548103707523924658663721'); + T('24320206632303877337018150776534830120127412621279410316049997868506080584897,500000000000000000000000000000000000000000000000000000000000000', '48640413264607.7546740363015530696602402548252425588206320999957370121611697940'); + T('632068538992,299627248623', '2.10951621355135030628959798316775030242', '667715230026'); + T('30723874502935040146583633833130458750279615551530417455389485335564411003264654722578476707999808118764177718404903122118992393,1000000000000000000000000000000000000000000000000000000000000', '30723874502935040146583633833130458750279615551530417455389485335564.411003264654722578476707999808118764177718404903122118992393'); + T('286178536955337099327464576728331587889607911392190634657903988794024067683540787647737271834874819490786147362267100761724779889,400000000000000000000000000000000000000000000000000000000', '715446342388342748318661441820828969724019778480476586644759971985060169.2088519691193431795871870487269653684056677519043119497225'); + T('225716760325402765480453148877447994008859292645269220156515793592565178478504694872477733969169483366031115902552261152263,100000000000000000000000000000000000000000000000000000000000000000000000', '2257167603254027654804531488774479940088592926452692.20156515793592565178478504694872477733969169483366031115902552261152263'); + T('166422076347679754457402925324150208100304102197597626198641249881291,500000000000000000', '332844152695359508914805850648300416200608204395195.252397282499762582', '595938455117353715726533211799175395565247198980519036774725159'); + T('92474208223036180278717843071595801935199978666019361143552458912542268609094249043138966113404623,100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000', '924742082.230361802787178430715958019351999786660193611435524589125422686090942490431389661134046230', '384893898044272576757884146625767491425042466631820743697266238210622119815334941457068522319571859800723072'); + T('4801579045833748240620308947950089769875299076650997798853,1000000', '4801579045833748240620308947950089769875299076650997.798853'); + T('92818162596390473570913489263772149216048983528220989923030438739602367016857612844868557954427,10000000000000000000000000000000000000000000000000000000', '9281816259639047357091348926377214921604.8983528220989923030438739602367016857612844868557954427'); + T('1054044512154426314878240206476736860691603532279813559806376256940851271707,20000000000000000000000000000000000000000000000000000000000000000000', '52702225.607721315743912010323836843034580176613990677990318812847042563585350', '132750239272960379396269149467880829933650132793415257290257220693012'); + T('1950260986744420612627266461252568941645104794448107,1000000000000000000000000000000000000000000000', '1950260.986744420612627266461252568941645104794448107'); + T('3420599355260725534580884522073225022198987022228846435295522221954135336191942043090733084633992155497809109068153537458117479579431129,500000000000000000000000000000000000000000000000000000000000000000000000000000000', '6841198710521451069161769044146450044397974044457692870.591044443908270672383884086181466169267984310995618218136307074916234959158862258'); + T('21801726759466625902075716247189780705759631914594809868496882689119821892069323995653346876539886660866871,250000000000000000000000000000000000000000000000000', '87206907037866503608302864988759122823038527658379239473.987530756479287568277295982613387506159546643467484'); + T('8662514288504709301163055702408996483964651352163407517985146778131926637288811147922076068037312182374897258627079219878971,10000000000000000000000000000000000000000000000000000000000000000000000000000000000', '866251428850470930116305570240899648396465.1352163407517985146778131926637288811147922076068037312182374897258627079219878971'); + T('2335156819025320456542491284916593277514846432649030650406781161541460408081740604535185151601367656917158704090094377170340940777294656240040982897,2500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000', '934062727610128182616996513966637311005938573059612.2601627124646165841632326962418140740606405470627668634816360377508681363763109178624960163931588'); + T('63654450465180016591742773920768518412294924364672171032800586170759569,100000000', '636544504651800165917427739207685184122949243646721710328005861.70759569'); + T('67017226545297291596788980559120386755737203907750761130545403,1250000000000000000000000000000000000000000000000000000', '53613781.2362378332774311844472963094045897631262006089044363224'); + T('1834202980794378523142996418618158434266769632338075275566234011547291333605095187322588266592801041375,2728622727250961344924048054555626447313315476626465983644676145928438417252418810441', '672208349830137661.0942704654707426447364588742190615418045766720625819944644489835174706718477671949019962898837174', '3060324951336066473403966327368318133634181672878042528628461545369720500607838478698'); + T('724151319188526857516015364911054452983796479888236151875899188098296091563373,2', '362075659594263428758007682455527226491898239944118075937949594049148045781686.5', '3728535308064241709642992906437162149848'); + T('913161203334294301947,1000000000', '913161203334.2943019470'); + T('1000730618593668355073183788658419468874098478193537979324951367,1000000000000', '1000730618593668355073183788658419468874098478193537.979324951367'); + T('98578065477380636870100743410132239138150603712881520,1', '98578065477380636870100743410132239138150603712881520.0'); + T('1593653227528651554398919030088527404972981723686120202542946612603975281246782283952373738247671009241097893,244376382898878709186556743314810099835899136846', '6521306226993688084262488516142465500275896529315090407774915.4390277153651041272996824372692207805951482614581375281886491067796', '320896389969383038785219513263634670827380910560'); + T('1098576836684484704997452093434476835830575095945740572130146590994553924253484329785345800790170709555710672234900297863234859386093535546823682473,125000000000000000000000000000000000000000000000000000000000', '8788614693475877639979616747475814686644600767565924577041172727956431394027874638282766.406321365676445685377879202382905878875088748284374589459784', '580755848202156326016924884077059025897828282924714692042700832'); + T('98856015342574146019060178479759793759304710950289379284070197,10000000000000000000000000000000000000000', '9885601534257414601906.0178479759793759304710950289379284070197'); + T('580368338794671752821269385270342578980827601542629307885673919782902096378604694343656768007757459380781031973411772409250979813132067528072149194522614456969,1250000000000000000000000000000000000000000000000000000000000000000000000000', '464294671035737402257015508216274063184662081234103446308539135826321677102883755474.9254144062059675046248255787294179274007838505056540224577193556180915655752'); + T('69982084220851887614167671807406656266816171302967221742593895150687,100', '699820842208518876141676718074066562668161713029672217425938951506.87', '54403392513559426721299504443157825252617408149349867483376440447'); + T('2018853736861528670763599026530020008195846168939825002390514885917432739031000764700018894935539479830625328771187655839828813167,29884853861934945378863310572572196981269', '67554412217922573204803437390939478181208940016133763859817864059085840485469282963181019.19791615300926846665465703968492270928565365268908436662715', '33392687306924808799500742211568775440536'); + T('530027912908014643675270751164750719833056592215023870512832293271045526003960718599676622511253038980627258993911327348577365854850830043924340793,1000000000000000000000000000000000000000000000000000000000000000000000000000', '530027912908014643675270751164750719833056592215023870512832293271045526.003960718599676622511253038980627258993911327348577365854850830043924340793'); + T('8734735018342228299296090238863640379760418043064479934394562234031967281491808567345771710811322186275692378629728220679938160003692820341,100000000000000000000000000000000000000000000000000000000000000000', '87347350183422282992960902388636403797604180430644799343945622340319672814.91808567345771710811322186275692378629728220679938160003692820341'); + T('6722788254690658393400979717508508269239637599135817059,200000000000', '33613941273453291967004898587542541346198187.9956790852950'); + T('7437180918830993537032395884958073653904626738419559962059983,1000000000000000000000000000000', '7437180918830993537032395884958.073653904626738419559962059983'); + T('678608120908470140173991795540669892372847725269378282378365833145325640439329229307313633722843810507520881589650753115173369715723114474748456801385922995060079,1000000000000000000000000000000000000000000000000000000000000000000', '678608120908470140173991795540669892372847725269378282378365833145325640439329229307313633722843.810507520881589650753115173369715723114474748456801385922995060079'); + T('86894722198923597840560746168874947033616752839619628508272485307838443277363083879320271424429852793,1000', '86894722198923597840560746168874947033616752839619628508272485307838443277363083879320271424429852.793', '3631197556693210653073184532428485425255348157219832901774'); + T('17970721880705870085054361726421717606722108915965471930329036480272239344308991597936504664878045388124735330004009910921,20000000000000000000000000000000000000000000000000000000000000000000000000000000000000000', '898536094035293504252718086321085.88033610544579827359651645182401361196721544957989682523324390226940623676650020049554605'); + T('5948697443135706703788917312367,100000', '59486974431357067037889173.12367'); + T('3946733843989140918050146097267216988669431771,577886291193042952', '6829602820030790847543876934.02258790700574374198489118872645183303458692610035440156215891630548679719783', '667417859486950026'); + T('493858380487330334553899939554971082426451967753112354596468356557,5000000000000000000000000000000000000', '98771676097466066910779987910.9942164852903935506224709192936713114'); + T('123084490293475602607614884133531998828862861585787351245614755708686612116721277769653301046242789968234508397289909158055602802061,20000000000000000000000000000000000000000000000000000000000000000000000000000000000000000', '6154224514673780130380744206676599941443143.07928936756228073778543433060583606388848266505231213949841172541986449545790278014010305'); + T('6927482597114680607834922765933648950334814075397606193627167620391317958568821118589203,100000000000000', '69274825971146806078349227659336489503348140753976061936271676203913179585.68821118589203', '41718700671033927886513136610866596633645608053066723832100884'); + T('95538944758612146141176396275398005954352758782334733053038291386324885989961287864210,11', '8685358614419286012834217843218000541304796252939521186639844671484080544541935260382.727294449076880196380605689453495898969668417125590960428365196683178504081224393284', '570'); + T('32993752053684425807747294778148085597692415739709994,638184719', '51699376483635964037784011525584782291994076.6236209331737383706493508641321733305200624022422', '2141040464'); + T('223942440246,248225668363', '0.9021727757764007', '609899431382'); + T('16686579847373982176404589194403513916267058244556986258849490594859727370843269811410258544438506162845429784416595935602473679945761077,20000000000000000000000000000000000000000000000000000000000000000000', '834328992368699108820229459720175695813352912227849312942474529742986.36854216349057051292722192530814227148922082979678012368399728805385'); + T('7453839315378838224947273562889200300255201795789768843276848020086237609421,100000000000000000000000000000000000000000000000000000000000000000000000', '74538.39315378838224947273562889200300255201795789768843276848020086237609421'); + T('88186134153847200319907838505055317969004545179501640348910365893233471389254602659518381116512509844213870327,9765625000000000000000000000000000000', '9030260137353953312758562662917664560026065426380967971728421467467107470.2596713123346822263308810080475003214848', '833555353746649953279923803074475202769062814458423077827564033682942755'); + T('291651801565673891735,441799', '660145906997693.27620705343909321636692', '475636'); + T('3943935476569904891723785189074953927414878941370369202289012846241086155860318787858564276558320735525331470755293103519133817,1000000000000000000000000000000000000000000000000000000000000000000000000000000000000', '3943935476569904891723785189074953927414878.941370369202289012846241086155860318787858564276558320735525331470755293103519133817'); + T('75302834320878879457221652547914488454737262753632963871692491571975871172248660219123955075959110697547,100000000000000000000000000000000000', '753028343208788794572216525479144884547372627536329638716924915719758.71172248660219123955075959110697547'); + T('286254617761534858369612111554416,44902328951267285921', '6375050569697.807323576944467346526062905538962967762891749230526034972918', '44929005448766457238'); + T('3746139574442736600133406409787136253033944992476571372451349971463733707013337603307113483922358784475865353830238500792008470975355809924470290472421506149,5000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000', '749227914888547320026681281957427250606788998495314274490269994292.7467414026675206614226967844717568951730707660477001584016941950711619848940580944843012298'); + T('37406858419305938135286171702693320249855935205139647062682249364933852246421767685483,500000000000000000000000000000000000000000000000000000000000000000000000000000000000', '74.813716838611876270572343405386640499711870410279294125364498729867704492843535370966'); + T('11159601476231535654741788412416202881635877421391863561941550761560649976787093908100772767774222070807449142387341,100000000000000000000000000000000000000', '111596014762315356547417884124162028816358774213918635619415507615606499767870.9390810077276777422207080744914238734100'); + T('5202314789815646277150835429404879071603050113822553743596059100657262453703715303,40000', '130057869745391156928770885735121976790076252845563843589901477516431561342592.882575', '66027873'); + T('304974437931081602650032524760965871551608292495930150945863595349787675349596911689176201582031187229344132110281,1357797756240047452202752179724701484120084840431181047509757564399930443993347892330', '224609619900686178223912328077.7443121694198187253469840096889635680497517685978187200433620475779622573500912322765762965524609863', '4531192428741997048411481671100163403784805772178484102146612877029644423079894127823'); + T('3766014359237,800000000', '4707.51794904625', '7853235314974998'); + T('311475636684241059876365851605648547902228954687,5000000000000000000000000000000000000000', '62295127.3368482119752731703211297095804457909374'); + T('95942011683584513899200680778652795117868885339,1000000000000000000000000000000000000000000000', '95.942011683584513899200680778652795117868885339'); + T('12766155608271430221647976553149893759584816809408489139986361341082789186923046040729403013493459196737462331526072870887109,6250000000000000000000000000000000000000000', '2042584897323428835463676248503983001533570689505358262397817814573246269907687366.51670448215895347147799397304417165934193744', '93126923446050929294103459255648989880852923558235441052339284471205926790072168747045165'); + T('5050978417270036929890556014363105586807333767534651101340315552268579329086313825980085677972688558518469677967261525650390108135458820811,250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000', '20203913669080147719562224057452422347229335070138.604405361262209074317316345255303920342711890754234073878711869046102601560432541835283244'); + T('514785480892443581111011049635898989522189108839752679508896007986075563249680148629967905105747624723273024943,1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000', '514785480892.443581111011049635898989522189108839752679508896007986075563249680148629967905105747624723273024943'); + T('267737767017891684255898230028455429260991473930007229195590053591931280617076656188214376062161831184386528376881147906819687668809677563924650021,50000000000000000000000000000000000000000000000000000000', '5354755340357833685117964600569108585219829478600144583911801071838625612341533123764287521.243236623687730567537622958136393753376193551278493000420'); + T('248259504263040834608233334198108145412348875247144730132530909287139514727494049122871346,47732130929763380841', '5201098283844657888397210939987325835547277037459741568044731851516514.73634681073130117711020811237650578307976297729277805241093095474959673783840483910867', '5024411020558340543312'); + T('55464558317631039321559765849925798648390666160464586486280863822713088834539695339682241860828114727160148856646089617,1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000', '55464558317631039321559.7658499257986483906661604645864862808638227130888345396953396822418608281147271601488566460896170'); + T('15421483144336270077371210750899333898679645561504523633209496264965010394930803328016197705616989442784785,49984940267107918826', '308522588242127401197353099520103594922877070048176300229719294528874975525549904675985.9485359329604023169832489554441000991', '61355845435674844526'); + T('6855440895600044261671405027414507429789800105303059815241230707817129262097559133424765895800883527246883701308438021,100000000000000000000000', '68554408956000442616714050274145074297898001053030598152412307078171292620975591334247658958008.83527246883701308438021'); + T('27263704632607142270401184496759949558690923110949180431533606763,20000', '1363185231630357113520059224837997477934546155547459021576680.33815', '606624887961647054532897310953779853618934383968313019879350462126175949928993363987651814'); + T('90954990859482993959724846045748010087463959,125', '727639926875863951677798768365984080699711.672', '588824757782012773261640878838777321142728950393257882912418442907031819512234'); + T('1493569539393627900541858134137603447531077013858830325785084098585732603941651348853545566104365474803,1000000', '1493569539393627900541858134137603447531077013858830325785084098585732603941651348853545566104365.474803', '3182820534541090775056684943977433195872567458734700994010822943243520679220246426898'); + T('324725691215801921476094759101909541875602304206478416528531250398201107463367988182933405249982011662330601,50000000000000000000000000', '6494513824316038429521895182038190837512046084129568330570625007964022149267359763.65866810499964023324661202'); + T('25308321535355028217216957904491,5569187114692733093840', '4544347498.863190164819697293209529531404911058684', '7723635601139758565843'); + T('8658777803281975609968463280524071823375642811421607061029953506904956846061159429058371,100000000000000000000000000000000000000000000', '86587778032819756099684632805240718233756428.11421607061029953506904956846061159429058371'); + T('4215726801070323444647630281510808779143459576242997643967294379158258415984350576313270248295291231861927178054,8801198818356547303082759', '478994610629365197012477473717361789088233414206341594179220175540708293059656499309131.1197482000861233142996023980139256469694810', '9219447145070526604874006'); + T('350219027018265521256189312491936248573915564006546709163466462009603052479301023519364445626038090785927171839374456992889152646903427846290756941,50000000000000000000000000000000000000000000000000000000000000000000000000000000000', '7004380540365310425123786249838724971478311280130934183269329240.19206104958602047038728891252076181571854343678748913985778305293806855692581513882'); + T('18838265670959180747789613494901603955905673528214021208240108707414144737352242491390744711159628979832028357517923496753376897134,2584402836812084642754771195541804154926099055589080760558497', '7289214128164546673077585428995457658876312767922421632262422308769050.379657338235342151193256041128846262031912288379823584158769838474025799337151989092013277121571615', '5322144155931111466743034122299554141788673340121784975895214'); + T('110540403222773032054929356513175003594418655601576752219028431256243715401738728452564148356781548250303,50000000000000000000000000000000000000000000000000', '2210808064455460641098587130263500071888373112031535044.3805686251248743080347745690512829671356309650060600'); + T('34521678049086112732982603617637423488030098370864976367418263782422677974076092812569932135807092991,10000000000000000000000000000', '3452167804908611273298260361763742348803009837086497636741826378242267797.4076092812569932135807092991', '9565990599377329484423005085641091352736216008630315082396889620817076025190521731088325462643453265267584'); + T('686981974413884751293690490784988550329391377445018867980503873317,50000000000000000000000000000000000000000000000000000000000000000', '13.73963948827769502587380981569977100658782754890037735961007746634'); + T('39967009834238797427182253133070010605320897536027467147,125000000', '319736078673910379417458025064560084842567180288.219737176', '3546986130406819267454979773897918044730322031561726889492515191671301'); + T('2054848767576587955462470796182561489545688219952205806313236406797613009606793513761184547627264318510083497,500000000000000000000000000000000000000000000000000000000000000000000000000000000', '4109697535153175910924941592.3651229790913764399044116126264728135952260192135870275223690952545286370201669940', '19171208630106026353275589645613967733224343436112425066800794894453677875314261981745825449319'); + T('1258311307164311617381367950628372981420522447544944439693149609041298843621306748572743262432414156764952221586409072251176086979,250000000000000000000000000000000000', '5033245228657246469525471802513491925682089790179777758772598436165195374485226994290973049729.656627059808886345636289004704347916'); + T('492541774159879640437936287616718070610370129799840600955174836508798297733803571061834516664670316321397051566302739470908697122858665682327,500000000000000000000000000000000000000000000000000000000', '985083548319759280875872575233436141220740259599681201910349673017596595467607142123.669033329340632642794103132605478941817394245717331364654', '772690036339621488428269775437822570422870894506512284167339990445682547198933662923265581'); + T('413875835951731659277384103388688394090011015604931352043,6250000', '66220133752277065484381456542190143054401762496789.01632688', '267799856219808852183'); + T('25623638455508129716975373710250219093690370694168048889682125687,728796356236789336532397', '35158845452820691695331252389119574225619.5643086760770102207250792274157899888147246542964984154489942046175778073820104', '4682678030669483013541263'); + T('12367863144967384872529417463063119791986560777209539757,2500000000000000000000000', '4947145257986953949011766985225.2479167946243108838159028', '19780730703790873838347852973574677540986567656865706078825739326608066836976512951818878167033944417505061150717024'); + T('9971596879982164667,1000000000', '9971596879.982164667'); + T('338345846975325139996317671732776306269185647762097932941355508406167695219190203003609,40587706508395974705401', '8336165703409107474709453480980066107483661912962839864091523498.0126686226890405486513889705767265041180045', '41022537112870625129272'); + T('127928935759871381312732087750566099177874361325298055925972104481990091044917887846249290063171763251,50000000000', '2558578715197427626254641755011321983557487226505961118519442089639801820898357756924985801.26343526502', '621875728720764263561029044312241358762794797665106621297993145788249024700'); + T('16626060161524464574713076045625021016208464957298152388988528750805470496009977748891419,25000000000000000000000', '665042406460978582988523041825000840648338598291926095559541150032.21881984039910995565676'); + T('139835943154689530164226571,16000000000', '8739746447168095.6352641606875'); + T('655492388278806204545768064730065599657599852803336783,100000000000000000', '6554923882788062045457680647300655996.57599852803336783', '976108250785731949679925001521155265790958652927658681941'); + T('810011346800097039139210061890622091915594232858534709414710566706428201195198961960548291930674225613464775148923720691217878393179,10000000000000000000000000000000000000000000', '81001134680009703913921006189062209191559423285853470941471056670642820119519896196054829.19306742256134647751489237206912178783931790', '659255936975989889409223375243561380964658820807429254878323937252539411092735435865211779'); + T('767010060358818890783562424457154229236761908349178661946491180919697196736640696221322466225137922274445553575680781328318284000710534431,125000000000000000000000000000000000000000000000000000000000000000000', '6136080482870551126268499395657233833894095266793429295571929447357577.573893125569770579729801103378195564428605446250626546272005684275448'); + T('6251274083692311423733916625297741079068776687255993282033945555286360790665510481,1000000000000000000000000000000000000000000000000000000', '6251274083692311423733916625.297741079068776687255993282033945555286360790665510481'); + T('473620934850848082187223138350602125191020210530458123567437931094543854409630864168927727,10000000000000000000000000000000000000000000000000000000000000000', '47362093485084808218722313.8350602125191020210530458123567437931094543854409630864168927727'); + T('28392638992177631538735383923909742173497869442249044705049559217795836913231369776653059449522857321829651,1000000000000000000000000000000000000000000000000000000000000000000000000000000000000', '28392638992177631538735.383923909742173497869442249044705049559217795836913231369776653059449522857321829651', '5028820610639781639325654949257292223081041411494147435152768836878813294805858397173957511962736507674020'); + T('9552496340020091725697433,10000000', '955249634002009172.5697433', '681734365310500930436632536264485543390585757982517774887009602160278649869690646'); + T('191407226365712801218816880714794123311237815231478951057699351929786915001765279771136714191232777459076067241766801466017951665819488454219712701784568617525439,250000000000000000000000000000000000000000000000000000000000000', '765628905462851204875267522859176493244951260925915804230797407719147660007061119084546856764931109.836304268967067205864071806663277953816878850807138274470101756', '796843914588374585605530216500278077281516834694785006819875719121'); + T('973708114707156900848575306441883115282262041526510308450033867296915537409831603407246049399369228564061,25000000000000000000000000000000000000000000000000000000000000000000000000000000000', '38948324588286276033943.01225767532461129048166106041233800135469187662149639326413628984197597476914256244'); + T('41176818016861564738549999724345149794954792976459967902179568613277,500000000000', '82353636033723129477099999448690299589909585952919935804.359137226554', '669011453192737766662797002206221194892295529858894718227759009576786576439366369655530541'); + T('2297280934071181232289100315902073111835117061805828135181986873561508623403722194338276074897169459,250000000000000000000000000000000000000000000000000000000000000000000', '9189123736284724929156401263608.292447340468247223312540727947494246034493614888777353104299588677836'); + T('493865232957959844369851283310738555249442370187169054736707861015181,1000000000000000000000000000000000000000', '493865232957959844369851283310.738555249442370187169054736707861015181', '670693117968294371193270720647906750197834156929685579183197442866318330576022797208'); + T('409271320054752626250953921458862574122032388782159837960166261432376032498288772914987357485363480329191,20000000000000000000000000000000000000000000', '20463566002737631312547696072943128706101619439107991898008313.071618801624914438645749367874268174016459550', '1857697448678073248864111007805323144660940247856110752402597224275056054503062819540715261827115353176657605923020695'); + T('1091233021200519149409087486543248004149493427849573405514209173739773291315508685002542487733353392960642990271133459767,4000000000000000000000000000000000000000000000000000000000000000000000000000000000000000', '272808255300129787352271871635812.00103737335696239335137855229343494332282887717125063562193333834824016074756778336494175'); + T('1595690121196871153886729,200000000000000', '7978450605.984355769433645', '6043921481194682383933679927'); + T('35198307665288379989739763374405377831198720275886562170938556931298244697897264380623354673785632771,10000000000000000000000000000000000000000000000000000000000000000000000000', '3519830766528837998973976337.4405377831198720275886562170938556931298244697897264380623354673785632771'); + T('23696485864014344411749757864467460969465379680156310297289316481649993164859,12500000000000000000000000000000000000000000000000000000000000', '1895718869121147.55293998062915739687755723037441250482378314531853199945318872', '88169772318726534478097482287174902361436232507508528249890047249859106140720080138823592262180105'); + T('2470252623431054313731331443175884514511972829541093697927860344370604828517286139353493663429245331486666,5108090079928118985489686671', '483596135694188011378667156401843144027164732844551280707660248632923225254800.587199079677953937875639324206276895271235823612547506378684214987948118274320359990368', '5382458010937250568880673669'); + T('114221349590728832380263984994984635861738747311983631781352559687519165032758871,100000000000000000000000000000000000000000000000', '1142213495907288323802639849949846.358617387473119836317813525596875191650327588710'); + T('3284945592812373184344753972758476891953304894259,4000000000000000000000000000000000000000', '821236398.20309329608618849318961922298832622356475'); + T('2256552538268324957101459584274765124413730131360493850955441001778068390578610403086691841111551405816799647689962152222209,500000000000000000000000000000000000000', '4513105076536649914202919168549530248827460262720987701910882003556136781157220806173.383682223102811633599295379924304444418'); + T('45102018400266989728931638141595361761071295617811579289997697670832298744506116516722877037008568752523755414709825779737363977291512033198315936360667277,10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000', '4510201840026698972893163814159536176107129561781157928.9997697670832298744506116516722877037008568752523755414709825779737363977291512033198315936360667277'); + T('2991118205134544635217224882676124745244670098171611353811722020713540132602932667617729650082673649312361632555982015642938286243972586805717247022507624073645853595324932716067929,400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000', '7477795512836361588043062206690311863111675245429028384529305051783850331507331669.0443241252066841232809040813899550391073457156099314670142931175562690601841146339883123317901698225'); + T('43406214460275172698038479789612757524898533646080070899355546034286693170983145909731585902643,18687745885171468234775664818563711', '2322710011522446475757338874013239466938178964161018202462196.53231516923374798133674231744884434422245047240330215423739416673515083141853518', '24830247378717343908862228854084190'); + T('4682650609411899735589035611734839738748275802992269558418422379673582726796923610465719356507461769677666289014200384110046607144919937994870547743121,5000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000', '936530121882379947117807122346967947749655160598453911.6836844759347165453593847220931438713014923539355332578028400768220093214289839875989741095486242'); + T('6343504805835314981042161153519341413408814287852266648003279622224288264182025200490500813492402339458961013,1000000000000000000', '6343504805835314981042161153519341413408814287852266648003279622224288264182025200490500813.492402339458961013'); + T('2043755907556873690066829609994954302797373554833237131297,5000000000000000', '408751181511374738013365921998990860559474.7109666474262594', '1956664943557976499821087345250316684037359526871385211708133002423524'); + T('313284563452294441735736652942879418320584421214021592208381792517413756116801965056033499858686861805057047003471,2000000000000000000000000000000000000000000000000000000000000', '156642281726147220867868326471439709160292210607010796.1041908962587068780584009825280167499293434309025285235017355'); + T('11471639769771687066577323756368359399412710207010171779949298240855743839316944634591329633416155194817943709829531,200000000000000000000000000', '57358198848858435332886618781841796997063551035050858899746491204278719196584723172956648.167080775974089718549147655'); + T('23776195197101022472023159066867591626860322971795239505778686401286942957171879146898109574605597407608118187436758896473157262424044809239822026232771581,250000000000000000000000000000000000000000000000000000000000000000000', '95104780788404089888092636267470366507441291887180958023114745605147771828687516587592.438298422389630432472749747035585892629049696179236959288104931086324', '170109268958634877909065036709787962672848011126048129765200921441020133297498972167180624'); + T('35518282899106761300653224275853720735244906250293433645349674469329930654366141,100000000000000000000000', '355182828991067613006532242758537207352449062502934336453.49674469329930654366141'); + T('853774591279175110534841081508464694413901769,25000000000000000', '34150983651167004421393643260.33858777655607076'); + T('434880828240088350029098564204588579863154654848110708450994020630614580434999236881672317324560458832813078468886616827281212017480013,25000000000000000000000000000000000000', '17395233129603534001163942568183543194526186193924428338039760825224583217399969475266892692982418.35331252313875546467309124848069920052', '739293900270272912650169319408236065394650909425013543189206691255522429'); + T('11526403854413902548795861447,6250000000000', '1844224616706224.40780733783152', '307840150789672937492642930347274685995354235175108309976189389250759848'); + T('702765355056540457405882229774275623914171478700737088553544569128446928397,10000000000000000000000000000000000000000000000000000', '70276535505654045740588.2229774275623914171478700737088553544569128446928397', '2994201467352227469980411736484219035208598424332283240168638173739557964288699659349793900394590666632'); + T('54825256449234689277507377,1000000000000000', '54825256449.2346892775073770', '7247599320592380995092818422'); + T('52241358526638931241686750736713811006187403081280396420418024952453139299798099747,1000000000000000000000000000000000000000000000000000000000000000000000000', '52241358526.638931241686750736713811006187403081280396420418024952453139299798099747'); + T('56621644568088128185885031935431,100000000000000000000000000000', '566.21644568088128185885031935431'); + T('39372223523562980543199487796419847872440851625907503200333,50', '787444470471259610863989755928396957448817032518150064006.66', '955541553332758813213626519789460543325290905244676838372840424628529596179789208585303701552552351175041044662668537427'); + T('325293311478566577489170522256284017692295100018580428088669389347157000201893827964335714244323280261021551781493573554200870379941749285031284525050456990337767,500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000', '650586622957133154978341044512568035384590200037160856177338778.694314000403787655928671428488646560522043103562987147108401740759883498570062569050100913980675534'); + T('614864078480713483874128578932501548981704516588520712161898329483464331757759954227806822474378198285515275589259000330713642481603365393389422940141019017401109,1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000', '614864078480713483874128578932501548981704516588520712161898329483464.331757759954227806822474378198285515275589259000330713642481603365393389422940141019017401109'); + T('3829270893665970578184851197459824275528243394573338346473491354929939788896655873285990520983852622278895790953125487430033,50000000000000000000000000000', '76585417873319411563697023949196485510564867891466766929469827098598795777933117465719810419677.05244557791581906250974860066'); + T('780053005909401364919286689621630092740741364968611783815095760045292,1', '780053005909401364919286689621630092740741364968611783815095760045292.0', '45690752976547956116643254519509539579394298044534876843625082629489'); + T('11115161271892961338110886311733472538474225695783394064891231044512131866645638610465780143254877130975043621543307573319,117372832939055230293151', '94699608023130933036348120811996198905372415393501407434579046671460258797730199936885542957363696.08748184584119788329165464491688408482957311641741', '959631860555403859564786'); + T('269442874752488639176619580396174881364833,10000000000000000000000000000000', '26944287475.2488639176619580396174881364833', '8371945805788249772750247654848998754940863393299617894213772127884912858370833994661593347'); + T('64668573815841734344417489298502668067859,1000000000000000000000000000000', '64668573815.841734344417489298502668067859'); + T('3761571027751684615243460444230696668509504743538045995257317822557431413971266200889927052756417,10000000000000000000000000000000000000000000000000000000', '376157102775168461524346044423069666850950.4743538045995257317822557431413971266200889927052756417', '902612837213836957407294100697258033215360383465558379387665'); + */ + + T('2469,20', '12.345e1', null); + T('2469,20', '12.345e1', u); + T('2469,20', '12.345e1', '2.1e1'); + T('1111,9', '12.345e1', new BigNumber(10)); + T('2469,20', '12.345e1', new BigNumber('123e399')); + + assertException(function () {new BigNumber('12.3e1').toFraction('')}, ".toFraction('')"); + assertException(function () {new BigNumber('12.3e1').toFraction(' ')}, ".toFraction(' ')"); + assertException(function () {new BigNumber('12.3e1').toFraction('\t')}, ".toFraction('\t')"); + assertException(function () {new BigNumber('12.3e1').toFraction(NaN)}, ".toFraction(NaN)"); + assertException(function () {new BigNumber('12.3e1').toFraction('NaN')}, ".toFraction('NaN')"); + assertException(function () {new BigNumber('12.3e1').toFraction('hello')}, ".toFraction('hello')"); + assertException(function () {new BigNumber('12.3e1').toFraction([])}, ".toFraction([])"); + assertException(function () {new BigNumber('12.3e1').toFraction({})}, ".toFraction({})"); + assertException(function () {new BigNumber('12.3e1').toFraction(true)}, ".toFraction(true)"); + assertException(function () {new BigNumber('12.3e1').toFraction(false)}, ".toFraction(false)"); + assertException(function () {new BigNumber('12.3e1').toFraction(function (){})}, ".toFraction(function (){})"); + assertException(function () {new BigNumber('12.3e1').toFraction(new Number)}, ".toFraction(new Number)"); + assertException(function () {new BigNumber('12.3e1').toFraction(new String)}, ".toFraction(new String)"); + assertException(function () {new BigNumber('12.3e1').toFraction(new Date)},".toFraction(new Date)"); + assertException(function () {new BigNumber('12.3e1').toFraction(new RegExp)}, ".toFraction(new RegExp)"); + + assertException(function () {new BigNumber('12.3e1').toFraction(7.5)}, ".toFraction(7.5)"); + assertException(function () {new BigNumber('12.3e1').toFraction(new BigNumber('225.435435'))}, ".toFraction(new BigNumber('225.435435'))"); + assertException(function () {new BigNumber('12.3e1').toFraction(0)}, ".toFraction(0)"); + assertException(function () {new BigNumber('12.3e1').toFraction('0.99')}, ".toFraction('0.99')"); + assertException(function () {new BigNumber('12.3e1').toFraction(-1)}, ".toFraction(-1)"); + assertException(function () {new BigNumber('12.3e1').toFraction(-23)}, ".toFraction(-23)"); + assertException(function () {new BigNumber('12.3e1').toFraction(Infinity)}, ".toFraction(Infinity)"); + assertException(function () {new BigNumber('12.3e1').toFraction('-Infinity')}, ".toFraction('-Infinity')"); + + BigNumber.config({ERRORS : false}); + + T('2469,20', '12.345e1', null); + T('2469,20', '12.345e1', u); + T('2469,20', '12.345e1', undefined); + T('2469,20', '12.345e1', ''); + T('2469,20', '12.345e1', ' '); + T('2469,20', '12.345e1', '\t'); + T('2469,20', '12.345e1', NaN); + T('2469,20', '12.345e1', 'NaN'); + T('2469,20', '12.345e1', []); + T('2469,20', '12.345e1', {}); + T('2469,20', '12.345e1', new Date); + T('2469,20', '12.345e1', new RegExp); + T('864,7', '12.345e1', '7.5'); + T('2469,20', '12.345e1', 0); + T('2469,20', '12.345e1', -23); + T('2469,20', '12.345e1', '2.1e1'); + T('2469,20', '12.345e1', Infinity); + T('2469,20', '12.345e1', '-Infinity'); + T('1111,9', '12.345e1', new BigNumber(10)); + T('2469,20', '12.345e1', new BigNumber('123e399')); + T('2469,20', '12.345e1', new BigNumber(Infinity)); + + log('\n ' + passed + ' of ' + total + ' tests passed in ' + (+new Date() - start) + ' ms \n'); + return [passed, total];; +})(this.BigNumber); +if (typeof module !== 'undefined' && module.exports) module.exports = count; \ No newline at end of file diff --git a/node_modules/mysql/node_modules/bignumber.js/test/toPrecision.js b/node_modules/mysql/node_modules/bignumber.js/test/toPrecision.js new file mode 100644 index 0000000..8ed0547 --- /dev/null +++ b/node_modules/mysql/node_modules/bignumber.js/test/toPrecision.js @@ -0,0 +1,852 @@ +var count = (function toPrecision(BigNumber) { + var start = +new Date(), + log, + error, + undefined, + passed = 0, + total = 0; + + if (typeof window === 'undefined') { + log = console.log; + error = console.error; + } else { + log = function (str) { document.body.innerHTML += str.replace('\n', '
      ') }; + error = function (str) { document.body.innerHTML += '
      ' + + str.replace('\n', '
      ') + '
      ' }; + } + + if (!BigNumber && typeof require === 'function') BigNumber = require('../bignumber'); + + function assert(expected, actual) { + total++; + if (expected !== actual) { + error('\n Test number: ' + total + ' failed'); + error(' Expected: ' + expected); + error(' Actual: ' + actual); + //process.exit(); + } + else { + passed++; + //log('\n Expected and actual: ' + actual); + } + } + + function assertException(func, message) { + var actual; + total++; + try { + func(); + } catch (e) { + actual = e; + } + if (actual && actual.name == 'BigNumber Error') { + passed++; + //log('\n Expected and actual: ' + actual); + } else { + error('\n Test number: ' + total + ' failed'); + error('\n Expected: ' + message + ' to raise a BigNumber Error.'); + error(' Actual: ' + (actual || 'no exception')); + //process.exit(); + } + } + + function T(expected, value, precision){ + assert(String(expected), new BigNumber(value).toPrecision(precision)); + } + + log('\n Testing toPrecision...'); + + BigNumber.config({ + DECIMAL_PLACES : 20, + ROUNDING_MODE : 4, + ERRORS : true, + RANGE : 1E9, + EXPONENTIAL_AT : [-7, 40] + }); + + // ---------------------------------------------------------------- v8 start + + T('1e+27', '1.2345e+27', 1); + T('1.2e+27', '1.2345e+27', 2); + T('1.23e+27', '1.2345e+27', 3); + T('1.235e+27', '1.2345e+27', 4); + T('1.2345e+27', '1.2345e+27', 5); + T('1.23450e+27', '1.2345e+27', 6); + T('1.234500e+27', '1.2345e+27', 7); + + T('-1e+27', '-1.2345e+27', 1); + T('-1.2e+27', '-1.2345e+27', 2); + T('-1.23e+27', '-1.2345e+27', 3); + T('-1.235e+27', '-1.2345e+27', 4); + T('-1.2345e+27', '-1.2345e+27', 5); + T('-1.23450e+27', '-1.2345e+27', 6); + T('-1.234500e+27', '-1.2345e+27', 7); + + T('7', 7, 1); + T('7.0', 7, 2); + T('7.00', 7, 3); + + T('-7', -7, 1); + T('-7.0', -7, 2); + T('-7.00', -7, 3); + + T('9e+1', 91, 1); + T('91', 91, 2); + T('91.0', 91, 3); + T('91.00', 91, 4); + + T('-9e+1', -91, 1); + T('-91', -91, 2); + T('-91.0', -91, 3); + T('-91.00', -91, 4); + + T('9e+1', 91.1234, 1); + T('91', 91.1234, 2); + T('91.1', 91.1234, 3); + T('91.12', 91.1234, 4); + T('91.123', 91.1234, 5); + T('91.1234', 91.1234, 6); + T('91.12340', 91.1234, 7); + T('91.123400', 91.1234, 8); + T('-9e+1', -91.1234, 1); + T('-91', -91.1234, 2); + T('-91.1', -91.1234, 3); + T('-91.12', -91.1234, 4); + T('-91.123', -91.1234, 5); + T('-91.1234', -91.1234, 6); + T('-91.12340', -91.1234, 7); + T('-91.123400', -91.1234, 8); + + T('NaN', NaN, 1); + T('Infinity', Infinity, 2); + T('-Infinity', -Infinity, 2); + + T('5.55000000000000e-7', 0.000000555, 15); + T('-5.55000000000000e-7', -0.000000555, 15); + T('-1.2e-9', -.0000000012345, 2); + T('-1.2e-8', -.000000012345, 2); + T('-1.2e-7', -.00000012345, 2); + T('1e+8', 123456789, 1); + T('123456789', 123456789, 9); + T('1.2345679e+8', 123456789, 8); + T('1.234568e+8', 123456789, 7); + T('-1.234568e+8', -123456789, 7); + + T('-0.0000012', -.0000012345, 2); + T('-0.000012', -.000012345, 2); + T('-0.00012', -.00012345, 2); + T('-0.0012', -.0012345, 2); + T('-0.012', -.012345, 2); + T('-0.12', -.12345, 2); + T('-1.2', -1.2345, 2); + T('-12', -12.345, 2); + T('-1.2e+2', -123.45, 2); + T('-1.2e+3', -1234.5, 2); + T('-1.2e+4', -12345, 2); + T('-1.235e+4', -12345.67, 4); + T('-1.234e+4', -12344.67, 4); + + T('1.3', 1.25, 2); + T('1.4', 1.35, 2); + + T('1e+4', 9631.01, 1); + T('1.0e+7', 9950095.87, 2); + T('1e+1', '9.856839969', 1); + T('1e+2', '97.504', 1); + T('1e+5', 97802.6, 1); + T('1e+1', 9.9617, 1); + T('1e+3', 989.2, 1); + T('1.0e+5', 99576, 2); + T('1e+8', '96236483.87', 1); + + // ------------------------------------------------------------------ v8 end + + BigNumber.config({ROUNDING_MODE : 0}); + + T('-0.000090000000', '-0.00009', 8); + T('-7e-7', '-0.0000007', 1); + T('68.9316834061848', '68.931683406184761912218250317', 15); + T('7.8601018089704732e+27', '7860101808970473167417935916.60087069', 17); + T('3.21445885399803244067719798337437062000000e-11', '0.0000000000321445885399803244067719798337437062', 42); + T('-8171786349835057630612358814.162756978', '-8171786349835057630612358814.162756977984', 37); + T('3340.9039701', '3340.903970019817086594869184429527413533291595472085', 11); + T('-7269097658095414435895.9161181115739745427300313060', '-7269097658095414435895.916118111573974542730031306', 50); + T('0.00000632207', '0.00000632206077863', 6); + T('6e+2', '573', 1); + T('7.4e-7', '0.000000738', 2); + T('-5.031561e-7', '-0.0000005031560306227217140253964236911907612837', 7); + T('-4.291e+11', '-429050053964', 4); + T('8.514e+7', '85131637', 4); + T('-3.4e-9', '-0.000000003326783057540398442677461', 2); + T('6.9404295962722512e-20', '0.00000000000000000006940429596272251146200868514973032594273', 17); + T('-828376248340605120247.15155295014', '-828376248340605120247.15155295013990774586360178257303370779', 32); + T('-7.9828e+6', '-7982750.6677764682946015520272838914918899297118139169410659', 5); + T('0.00712610393722542527880200', '0.007126103937225425278801997738', 24); + T('-5.7e+4', '-56242', 2); + T('-8928855203945443164.755136735230293537', '-8928855203945443164.755136735230293536124112124', 37); + T('5218572327.99', '5218572327.98424443372003772604597054153304', 12); + T('71707870535238750871516796339.60', '71707870535238750871516796339.59678962573869890935', 31); + T('88817462.7137982220652429', '88817462.71379822206524285939115943006583441400005007918', 24); + T('3.00000e-9', '0.000000003', 6); + T('-6.053', '-6.05291095813493573191', 4); + T('6.51630828677e+19', '65163082867698740076', 12); + T('2483202135696501.60187899', '2483202135696501.60187898870193199949004966876115645', 24); + T('1.0766e-10', '0.000000000107650515680635692286894826641576642261', 5); + T('642724503819056076.659397077514269963295025', '642724503819056076.659397077514269963295024012414', 42); + T('-7.1192e+21', '-7119169102619893823635.32141854354', 5); + T('-6.717481255640638829101946114674e-8', '-0.000000067174812556406388291019461146732616998258', 31); + T('-12.41976452', '-12.4197645179995365323309894', 10); + T('-6.529258780126449116249954644017839921024112900e-16', '-0.00000000000000065292587801264491162499546440178399210241129', 46); + T('-441838.0', '-441838', 7); + T('1.128285293592950e-8', '0.000000011282852935929493101783925259749957192', 16); + T('-8.654857e+7', '-86548567', 7); + T('3.8883293855303995e-7', '0.00000038883293855303994672627854769926811949', 17); + T('3.25870000e-13', '0.00000000000032587', 9); + T('3.702e+6', '3701031.59037494113', 4); + T('-3580077435.93682917449675702508371047', '-3580077435.93682917449675702508371046631533', 36); + T('-7.400', '-7.4', 4); + T('109519523263844229810.068', '109519523263844229810.067657779734413280795410968892638', 24); + T('-509247322311590671954830.86847660619', '-509247322311590671954830.8684766061855', 35); + T('7.5518638430980800496570562671727890e-10', '0.00000000075518638430980800496570562671727889997', 35); + T('-5056721600639122835615986051.468831942818200', '-5056721600639122835615986051.4688319428182', 43); + T('-1.796146861125551785886171829251460000000000e-16', '-0.000000000000000179614686112555178588617182925146', 43); + T('6.0e+2', '599', 2); + T('7.619930e-16', '0.00000000000000076199293', 7); + T('834668.2370121038159610193', '834668.237012103815961019258574789273273342', 25); + T('-3.92251395952329649490768e+26', '-392251395952329649490767912.240768552138247705202732', 24); + T('-47504099413385554632166.5098', '-47504099413385554632166.50972492550706', 27); + T('-763912347.2814762', '-763912347.28147614121123622213255703', 16); + T('62.06092655083887409325613', '62.06092655083887409325612694639', 25); + T('-5262696454512614512.606481226453660', '-5262696454512614512.6064812264536594032183632269343356197', 34); + T('-324.4757687696223789483683661674', '-324.475768769622378948368366167382', 31); + T('41034172.92', '41034172.91600339960206', 10); + T('78.8705822927994376887853', '78.870582292799437688785229493004059423117558', 24); + T('13.2', '13.12562822628823049', 3); + T('-47510172284493547923917836.573231120531506713', '-47510172284493547923917836.573231120531506712946048319', 44); + T('-762632827', '-762632826.1', 9); + T('4e+13', '33953600811490.5124040357996528537249966', 1); + T('-8.1071720769966e+25', '-81071720769965824452477185.9774686', 14); + T('5.680e+22', '56797151043432713156004.54588148769825716', 4); + T('-32.861964853600294215914162138', '-32.8619648536002942159141621375696711453', 29); + T('-30816296472.656223819', '-30816296472.656223818627686674207740641739447', 20); + T('9.085158071966474886768332e+30', '9085158071966474886768331250478.08286703003069431737582', 25); + T('-504664.230671', '-504664.230670963', 12); + T('-1.013105775e+16', '-10131057742551895.1862632947', 10); + T('-542318552011993.7986', '-542318552011993.798599548369674038472319697531161473933214', 19); + T('-9.0310e+16', '-90309463572405956', 5); + T('-6.771931816', '-6.77193181559601521980141', 10); + T('4703514776786483.3', '4703514776786483.2838035091610781996968798', 17); + T('-8.43684044711e+12', '-8436840447101.126789480845', 12); + T('-343.5602326850284', '-343.56023268502830337554680474463898876525434', 16); + T('-3.17649252e+24', '-3176492517226717196752073', 9); + T('-2.3912888503759090e+28', '-23912888503759089673174904075', 17); + T('6.8853846820341808e+23', '688538468203418073592188', 17); + T('4e+17', '343455415908256944', 1); + T('-1.4e+9', '-1336106841', 2); + T('-2244450.2134814273335263', '-2244450.2134814273335262397290334104071203538487453309626146', 23); + T('8.74e+29', '873625255363763952428129881990.679929486040461455296118489', 3); + T('-1.85453549733179613185923288786', '-1.8545354973317961318592328878502252820666161607740183', 30); + T('431.7150651927', '431.71506519265522010949747887049', 13); + T('-8606297211156287.52520023752564', '-8606297211156287.5252002375256362382564355963505470716151', 30); + T('-8.4634889709e+24', '-8463488970828351722405003.220603', 11); + + BigNumber.config({ROUNDING_MODE : 1}); + + T('-844789036.5239726', '-844789036.52397268892', 16); + T('-5056.20629012767878749185273209679064306054', '-5056.206290127678787491852732096790643060542', 42); + T('-0.3287519131314873763501859870298952500', '-0.32875191313148737635018598702989525', 37); + T('-60729764', '-60729764', 8); + T('-7.622e-14', '-0.00000000000007622481594531380999826456196664586', 4); + T('-4686402261639729535.736324492474', '-4686402261639729535.7363244924747488', 31); + T('-2.0', '-2', 2); + T('-13801188035233586637950193108.13592574381473451125649500', '-13801188035233586637950193108.135925743814734511256495', 55); + T('0.0000807327587149839799300000', '0.00008073275871498397993', 24); + T('-6.000000e-8', '-0.00000006', 7); + T('-3.83574993e+11', '-383574993535', 9); + T('7.6987000000000000e-14', '0.000000000000076987', 17); + T('80928866804.6112050947427973', '80928866804.6112050947427973864826014844575374353', 27); + T('-0.00730140', '-0.0073014067221009206110062377503733', 6); + T('2.72104773884160491036088486e+30', '2721047738841604910360884862459.4086993273252009015', 27); + T('3.008780781917733594e+25', '30087807819177335941398228.1424107931203', 19); + T('-1.31528920779613669158250146972297797867760000000000000000000e-19', '-0.00000000000000000013152892077961366915825014697229779786776', 60); + T('-8.5e+11', '-858982311008.257025719798657844609315293821', 2); + T('-3.6312e-12', '-0.0000000000036312827608449878', 5); + T('-0.0060000', '-0.006', 5); + T('-1e+1', '-12', 1); + T('5.779447e+14', '577944759667712', 7); + T('-8.753124714248104872487955947563035887800000000000e-13', '-0.00000000000087531247142481048724879559475630358878', 49); + T('0.000736948830704113912', '0.000736948830704113912970821957479', 18); + T('-4.65727e+23', '-465727983501322687372765', 6); + T('-0.00000332331666628036603', '-0.000003323316666280366035430077076052', 18); + T('3.533702e-8', '0.00000003533702791135712510338001418872124', 7); + T('-0.04340', '-0.0434', 4); + T('-597340.278566069086858587852236235470', '-597340.2785660690868585878522362354706741', 36); + T('6.000e-8', '0.00000006', 4); + T('-3.624323359112776296e-19', '-0.00000000000000000036243233591127762966338166', 19); + T('-3731378568692042924197.154', '-3731378568692042924197.15400334142251496795634388', 25); + T('-68249040894032065692.62', '-68249040894032065692.62771690318493', 22); + T('8786096722661914.89732851', '8786096722661914.89732851188880184891692993684242690315', 24); + T('-1.8413321536281347264486372900000000000e-12', '-0.00000000000184133215362813472644863729', 38); + T('4.0e-9', '0.0000000040395827543504045', 2); + T('-2.9427e+16', '-29427119846374896', 5); + T('-917760614.4', '-917760614.45404359204911454', 10); + T('8e+4', '89427', 1); + T('0.00000920323988134356953828667260', '0.0000092032398813435695382866726', 27); + T('8.2e+16', '82068995955708118', 2); + T('3.35195944828e+26', '335195944828445911672446409.3379497158141', 12); + T('-3.89774891030e-9', '-0.00000000389774891030223957363124620581272897758735065471', 12); + T('-4', '-4', 1); + T('8', '8', 1); + T('1.41172955693912934219137966000000e-10', '0.000000000141172955693912934219137966', 33); + T('9.21481e+13', '92148111958857', 6); + T('-5.859975978432853e-18', '-0.0000000000000000058599759784328539', 16); + T('-72.0', '-72', 3); + T('3785098751297.8929911950994079707157472', '3785098751297.89299119509940797071574729867819252140059', 38); + T('4.38e+16', '43893416753778361.297703358127215475077814', 3); + T('-33110.29096', '-33110.2909623520267070846514', 10); + T('-74.38305251784882707720486436292121914036495', '-74.3830525178488270772048643629212191403649548392158614', 43); + T('-4.31091381814e+27', '-4310913818147299779611829988.1707181186375975966133328', 12); + T('-1e+7', '-19238355', 1); + T('-6996635475270055814687.6', '-6996635475270055814687.6250552375470211825551', 23); + T('-8.203834974e+12', '-8203834974826.23347025', 10); + T('-7.4775e+5', '-747754.16564979702874976822', 5); + T('-9.291256959320e+23', '-929125695932058727753757.0232350927089256760451379', 13); + T('8.5e+11', '853985704471', 2); + T('-6.6560212', '-6.65602121044617863313449309597493831', 8); + T('1785977942777.20398797', '1785977942777.2039879764361236566223563439', 21); + T('6.1333504356e+23', '613335043569565749922342.8859983523919141148812213832', 11); + T('-5.6e+8', '-565718507', 2); + T('87732918932081', '87732918932081.5225691355449629111825', 14); + T('34510.55200915393645123', '34510.55200915393645123649', 22); + T('80406604570281847.64813851700344044652354', '80406604570281847.648138517003440446523542379', 40); + T('4350.66340515', '4350.66340515436550356256', 12); + T('-1.795651762606996e+19', '-17956517626069967584.285356976401607845756322546530214497', 16); + T('9.162e+24', '9162436195089050810891391.493612', 4); + T('-7.82552e+6', '-7825522.1080200627404337', 6); + T('-358162040.1796393759838430', '-358162040.17963937598384303781972517649539', 25); + T('-20732451778.4', '-20732451778.464877395794562570976729066571095229', 12); + T('-239748.58739', '-239748.5873964402372997371903319', 11); + T('-6.106537e+9', '-6106537070.58700935776016694', 7); + T('4e+23', '405561947729011104089456.7617832102516', 1); + T('-1.7252987e+10', '-17252987633.58674364430598655792', 8); + T('61.38960691398015334867512513960', '61.3896069139801533486751251396015198659145775291764', 31); + T('-70493899102410752290043364.4667507415385', '-70493899102410752290043364.466750741538512', 39); + T('-891.3505', '-891.35058685025619', 7); + T('1.5e+8', '153705028.906', 2); + T('5.80e+18', '5805164734299168659.6173113885173384955443', 3); + T('-1.719875889271327', '-1.719875889271327133154458155573493605566221534', 16); + T('113.672129563', '113.672129563441659725876055771857758675550104070419635029', 12); + T('-77950052814622081084397.9', '-77950052814622081084397.91853869253589242574', 24); + T('4.53106985e+27', '4531069852787151785292512309.2901993579425172826443679877', 9); + T('45285.246089613169416440797840714', '45285.2460896131694164407978407142422013937', 32); + T('307760226411464.7333268079863299', '307760226411464.73332680798632996332324381779707', 31); + + BigNumber.config({ROUNDING_MODE : 2}); + + T('-0.0300', '-0.0300921721159558', 3); + T('65317841202.20949859371772273480125', '65317841202.2094985937177227348012464402154', 34); + T('-8.9231575495202e+29', '-892315754952021994731329589682.1894180393920044085713', 14); + T('-2.8075679202e-8', '-0.0000000280756792028583066', 11); + T('9.71456e+9', '9714558552', 6); + T('2.9514099281e-10', '0.00000000029514099281', 11); + T('-1.24459e+14', '-124459985101107', 6); + T('0.0000734657394154607815562372000000', '0.0000734657394154607815562372', 30); + T('1.78719530353972e+15', '1787195303539715', 15); + T('-2.8e+9', '-2861102528', 2); + T('-8.74480375581000e-9', '-0.00000000874480375581', 15); + T('-1792404726015427380.248150830448457643618022', '-1792404726015427380.248150830448457643618022', 43); + T('-678437320202616518.2220157912209286', '-678437320202616518.22201579122092864', 34); + T('-1.937304915215780220809799809655893674619672771e-8', '-0.000000019373049152157802208097998096558936746196727718', 46); + T('824172.15863347130174103087', '824172.15863347130174103086069960571', 26); + T('1.90040714061724000e-9', '0.00000000190040714061724', 18); + T('-1634488249956745498.58311', '-1634488249956745498.58311123049258868631623840423306', 24); + T('0.0000019600923098540334001755857361187871270117098000', '0.0000019600923098540334001755857361187871270117098', 47); + T('8.383e+4', '83829', 4); + T('2.843306120337864064e+23', '284330612033786406376718', 19); + T('1.86235e+15', '1862340943682995.08270612464203237562317928642459', 6); + T('-2.31e+13', '-23195312138083', 3); + T('5.450237e+21', '5450236028274773541895.65198933808968167192289601277', 7); + T('-0.008976419749408075453861117865459', '-0.00897641974940807545386111786545972434475187220274239581167', 31); + T('-761181660548661030.25', '-761181660548661030.25539542029', 20); + T('-1844205.93619958', '-1844205.936199580689273072905714475263817', 15); + T('4842.77906784902805070438222238898372327093', '4842.77906784902805070438222238898372327092242428134814721', 42); + T('-4.161198953445629503503971e+26', '-416119895344562950350397179', 25); + T('1.084e+4', '10836', 4); + T('8.71081704218174598654542083000e-8', '0.0000000871081704218174598654542083', 30); + T('7.9139683e+36', '7913968291641940848703040206324645237.8515176490912667096', 8); + T('-0.000008', '-0.000008', 1); + T('8.3660085625e+34', '83660085624983922907621996804192921.3992927', 11); + T('0.000006980263008', '0.000006980263007423150706324065130475391', 10); + T('-31348084528321454060964445534333629317.69561497283830023', '-31348084528321454060964445534333629317.69561497283830023', 55); + T('-2417953792643886.3485495754363678888681996409674308643', '-2417953792643886.3485495754363678888681996409674308643', 53); + T('4.0e+6', '3982592', 2); + T('-2092315.015029722200', '-2092315.0150297222', 19); + T('-364992136844916.9092238', '-364992136844916.909223894931280218350055327754935', 22); + T('8.34e+24', '8333642861002789136219873', 3); + T('7.6008837179413e+14', '760088371794122.3380234188299740029832128019574765416', 14); + T('-6655726127.0', '-6655726127', 11); + T('-8.2157109e-9', '-0.000000008215710991605913786700324', 8); + T('-0.00007003302912717900', '-0.000070033029127179', 16); + T('-919151201.84874', '-919151201.8487431', 14); + T('-7.7284e+34', '-77284694095619151624570282373349775.20332', 5); + T('-0.01348565', '-0.013485650787487', 7); + T('4793.07921563762902275733457926767780', '4793.0792156376290227573345792676778', 36); + T('-29428.0', '-29428', 6); + T('-5.031066774187e+17', '-503106677418717710.020194320886816967824316089135', 13); + T('8.5822119333e+30', '8582211933222895201417193603829.362', 11); + T('3.69818e+29', '369817665788648417491163239098.45906115246177782675574', 6); + T('-16637318966.7921513256', '-16637318966.79215132564236', 21); + T('-3.511414e+7', '-35114143.07750577', 7); + T('-4.00583795e+15', '-4005837953660576.377392671047611906101', 9); + T('2.857013789e+29', '285701378835628725742568343419.93', 10); + T('3.784446708460892550157924e+30', '3784446708460892550157923126965.213', 25); + T('-8.07e+11', '-807835898139.8273423102575232570378422434793962915', 3); + T('7.2e+12', '7166828666682', 2); + T('-2.7e+15', '-2759498523697862.0885969105603319015115245', 2); + T('3.93e+3', '3920.77076847274147345709652305252825254482870430341848100141', 3); + T('-6e+12', '-6791423282682', 1); + T('-8.6204e+14', '-862048518070094.31', 5); + T('124280692175695486153.808', '124280692175695486153.80744660510519294193', 24); + T('-460557721667773.3587267520', '-460557721667773.3587267520989', 25); + T('-6268536499825359064300.23', '-6268536499825359064300.2317858', 24); + T('292408901.64362273508249026852286', '292408901.64362273508249026852285294673307', 32); + T('-649622345434955387029125.11357971191', '-649622345434955387029125.113579711917604812061404975326264229', 35); + T('-4.287461556179478781e+27', '-4287461556179478781817700851.131100167', 19); + T('-5.891552271022619e+29', '-589155227102261925251047170629.30784624401', 16); + T('1.88e+5', '187009.128', 3); + T('4299388.1132142278863818606739416640', '4299388.1132142278863818606739416639837103457725931818979', 35); + T('-7.8e+8', '-788088836.225886207482064192607002511282756502400977', 2); + T('-56025768755085222.404269', '-56025768755085222.404269295514', 23); + T('-8376.71149693765842', '-8376.71149693765842060199698996606139145426', 18); + T('-1.7218673528e+29', '-172186735288586033321621121024.11240623', 11); + T('-3.31e+28', '-33197729862068219255677464974', 3); + T('-4.835191326e+29', '-483519132605694848658321267839.23575134378118945659616358', 10); + T('7.3', '7.24882150443803', 2); + T('-89186640077683569.407061427673', '-89186640077683569.4070614276736450982125609', 29); + T('-49379651041268.5', '-49379651041268.548293', 15); + T('-7685054.17489171951660', '-7685054.17489171951660508194254495141726065698575306365447451', 21); + + BigNumber.config({ROUNDING_MODE : 3}); + + T('-39449414270333.925852213835', '-39449414270333.925852213834759031494508489474', 26); + T('-7.50437989976', '-7.50437989975503711836768', 12); + T('-0.000004303975760000000', '-0.00000430397576', 16); + T('-16040233916257241895.97650633973989', '-16040233916257241895.9765063397398857', 34); + T('-7438.9287248601393819', '-7438.9287248601393818639176907606', 20); + T('9.857465584298e-7', '0.000000985746558429876825600458537705318327799', 13); + T('532637.9095983547284850466577958315920', '532637.90959835472848504665779583159203905641996', 37); + T('-1.40416695292e+30', '-1404166952915258058306475434520.7856110230505157', 12); + T('60346876.6670832429026869255506808488', '60346876.6670832429026869255506808488', 36); + T('-2.52466133e+23', '-252466132238128405832984', 9); + T('55', '55', 2); + T('8', '8', 1); + T('-63075151.962465776516325792253177939493172', '-63075151.9624657765163257922531779394931714', 41); + T('7.411461e+17', '741146113404361548.543142388', 7); + T('-58835755359067474972692072494278983.7', '-58835755359067474972692072494278983.6314961114191480012916', 36); + T('-3.5408424427810e+21', '-3540842442780946836975', 14); + T('-8.6985e+22', '-86984550895486812167623.3816747460029582321093085895', 5); + T('-4.4625326e+20', '-446253250722400223428', 8); + T('-79301328.93777304419247399162092400', '-79301328.937773044192473991620924', 34); + T('-1.6065669647394805e+28', '-16065669647394804383207152895.0285044537455', 17); + T('-333', '-333', 3); + T('7', '7', 1); + T('7.24707e+13', '72470760481059', 6); + T('39232618.1513515442233995765535454389', '39232618.151351544223399576553545438981252', 36); + T('-4e+5', '-357994', 1); + T('-1.90e+4', '-18904.11335233460016293296574557643545512393801643609213933', 3); + T('-6585152111956929.924309477123328984876184272828762900', '-6585152111956929.9243094771233289848761842728287629', 52); + T('4.505e-7', '0.0000004505328', 4); + T('-2.4125965461846e+19', '-24125965461845662271', 14); + T('4.82673137e+33', '4826731373891127996812671510065700.871947701', 9); + T('-6621278.2', '-6621278.1120573461544975284970826524341806671316100080257485', 8); + T('-1.8015392869565386634525164264799463344376205007391000000e-7', '-0.00000018015392869565386634525164264799463344376205007391', 56); + T('-0.00026465463574439280006655492609887593', '-0.00026465463574439280006655492609887592672292239588307259', 35); + T('4.87815228988300090', '4.8781522898830009076096556452567', 18); + T('-5.1107117199524082779077801201617e+35', '-511071171995240827790778012016163902', 32); + T('1.4734242515706890557e+20', '147342425157068905574.390834406', 20); + T('-4019325091848890817268596991.815200', '-4019325091848890817268596991.8152', 34); + T('3.8e+14', '384715413967421', 2); + T('7483444.49', '7483444.498791364040133403947480439118040376737700653', 9); + T('-594538312.6255', '-594538312.625485172379', 13); + T('0.00753000', '0.00753', 6); + T('8.1440148247e+13', '81440148247675.27449603492606125135884', 11); + T('8.444003009300e+21', '8444003009300239495556', 13); + T('2308.1529840912558574923966042774800185916972327325289', '2308.1529840912558574923966042774800185916972327325289261', 53); + T('2.67e+3', '2674.698673623', 3); + T('-2.82819136180287470854625537e+30', '-2828191361802874708546255368471.80800005766', 27); + T('518250411', '518250411', 9); + T('3.2e+4', '32661.9135347256259375001777960775509', 2); + T('29.15347602216416991973', '29.153476022164169919735054013077734177', 22); + T('-4.611285536613066108e+30', '-4611285536613066107912600830385', 19); + T('-51774110.0705144989023975360207167071143094356321', '-51774110.070514498902397536020716707114309435632036586', 48); + T('-11969053.91', '-11969053.9052', 10); + T('3102686944.558209725206279080384565972890930884678', '3102686944.5582097252062790803845659728909308846780130141', 49); + T('-3601967476456.11863985450841401751857855', '-3601967476456.1186398545084140175185785472952682624279698', 39); + T('-5e+15', '-4873768150955988', 1); + T('-352.0819', '-352.08189544801640267067628', 7); + T('-2.58805959847e+29', '-258805959846025073839294200101', 12); + T('-66245829859.35391480', '-66245829859.353914791938511206971693', 19); + T('1.54e+9', '1544806884.11336335261587391', 3); + T('-27.7997003414813453645099801', '-27.79970034148134536450998001339677019', 27); + T('14062458038542559389162.9204850167', '14062458038542559389162.9204850167680814', 33); + T('1.558308e+23', '155830857739562225455438.36', 7); + T('-191388637226531701343.3', '-191388637226531701343.25549694555307', 22); + T('5551.7364563066033013381', '5551.73645630660330133811512206', 23); + T('-374.187067', '-374.187066872511899560500516595762548924654039141', 9); + T('5608.7939', '5608.79395345957', 8); + T('-7.46461560634688e+16', '-74646156063468781.44597747432564', 15); + T('6.282e+14', '628222207265224.793350069927452126508488621324740335935808339', 4); + T('739267731.33076658725535583758', '739267731.3307665872553558375867276395038136046', 29); + T('-7.243744595180e+19', '-72437445951792218018.4147098155', 13); + T('148197.230592476071658991268667398', '148197.23059247607165899126866739893696346154456779371449089', 33); + T('-7326871.99257009310974109937661882759811033', '-7326871.9925700931097410993766188275981103204155306', 42); + T('-5.2007521e+21', '-5200752087996702875406.6925', 8); + T('9.00107829e+18', '9001078299504900356', 9); + T('229140061917', '229140061917.91723092039513459551808768805307572856707938', 12); + T('-6868103.8726464561656824818722569258791476905', '-6868103.872646456165682481872256925879147690458928033592856', 44); + T('-220947971933643883580237.50', '-220947971933643883580237.49534341528328', 26); + T('544164102001101766247312.91529628700', '544164102001101766247312.915296287008639054933', 35); + T('1.70e+23', '170271631736408409477543.35894', 3); + T('-5735975666.6511674981929172446', '-5735975666.65116749819291724455000274115296', 29); + T('-67513065.4797', '-67513065.4796695356', 12); + T('-9e+19', '-82164590986048729101.278942224271247884118371796531523', 1); + T('687378946204028.408158998985701', '687378946204028.408158998985701430935094', 30); + T('42.452', '42.4523909443358871476552683504968536100051', 5); + T('-22771061110217019663705702.44170142085172', '-22771061110217019663705702.44170142085171219649140996', 40); + T('-1470.640309974016167512235698629586', '-1470.6403099740161675122356986295857257144815364', 34); + T('-1.110228e+27', '-1110227398804733429555663947.06619', 7); + T('-6.4898237111e+26', '-648982371105405071851661301', 11); + T('-4641197449469148.658850361201903', '-4641197449469148.658850361201902222', 31); + + BigNumber.config({ROUNDING_MODE : 4}); + + T('7.905300379788e+16', '79053003797878062.6454954', 13); + T('-6.83490000000e-13', '-0.00000000000068349', 12); + T('-62760641815.69084973661201201', '-62760641815.690849736612012010742308663', 28); + T('0.000704', '0.000704496313', 3); + T('82926865286287.8852357368342860830310721063079299643', '82926865286287.88523573683428608303107210630792996432', 51); + T('-0.00032388272393900301214220090249', '-0.00032388272393900301214220090248744799603424908', 29); + T('8.6e+12', '8621641486938.4837308885005093571508566552428700982454', 2); + T('2', '2', 1); + T('1.4641440117052559075e+20', '146414401170525590746.047955203899370771105088', 20); + T('3511.925583', '3511.925583', 10); + T('2861824.253079699095728', '2861824.253079699095727765750377038689', 22); + T('-3.940097756e+10', '-39400977564.548924098664431671700066962', 10); + T('-888', '-888', 3); + T('-0.000302106125213724988141721256104', '-0.00030210612521372498814172125610432438685', 30); + T('6943.4804552555315615809650428503', '6943.480455255531561580965042850266831249032130818358478956', 32); + T('3365678', '3365678.3397481381125085749', 7); + T('-5.3943374314e+19', '-53943374313769567458.386865325', 11); + T('-6.67880509225510150542252852147049489938254298497979', '-6.6788050922551015054225285214704948993825429849797925563674', 51); + T('1.36424e+18', '1364240644139816224.60228356028', 6); + T('1.410236477950416725e+23', '141023647795041672538410.84935693266374259666015274447', 19); + T('-802.817765', '-802.81776500697712984253334522', 9); + T('-5.276210722424690668896260075355037218851', '-5.27621072242469066889626007535503721885096', 40); + T('-0.000874209568970788', '-0.0008742095689707877849902027926289294748756775668387', 15); + T('0.092053833162002', '0.09205383316200189249855864903410820435666385119723209239', 14); + T('7.0656298318128209e-14', '0.0000000000000706562983181282092835675843980510112', 17); + T('-8.66511516852116659e+18', '-8665115168521166587', 18); + T('3.3490648464e+22', '33490648463534229842937.79268276945692333064632966129475', 11); + T('-39041587174692569176.82740706154183894', '-39041587174692569176.827407061541838942655371389185', 37); + T('-3834.0', '-3834', 5); + T('-0.008912382644814418776268630', '-0.00891238264481441877626863', 25); + T('-2.1e+5', '-206119', 2); + T('4.83340000000e-8', '0.000000048334', 12); + T('3.185196533675230520000000000000e-19', '0.000000000000000000318519653367523052', 31); + T('6.0431217298488095562718496137220939447806000000000000000e-17', '0.000000000000000060431217298488095562718496137220939447806', 56); + T('196.519569070149034', '196.51956907014903416531531', 18); + T('0.0000046405006597117307566000', '0.0000046405006597117307566', 23); + T('9.10e+16', '90974867783311624.1073050261392195984211985571898902', 3); + T('0.0009', '0.0009', 1); + T('-784.344', '-784.3442317667756502522526185951859933319162', 6); + T('4.407336482399797058693e+28', '44073364823997970586929155979.43263841350505', 22); + T('-3.0000000000e-13', '-0.0000000000003', 11); + T('0.800', '0.8', 3); + T('0.04643398170143261158595951942031', '0.046433981701432611585959519420314960367263', 31); + T('-8e+26', '-786589693451258754942279859.3834', 1); + T('-26.0', '-26', 3); + T('-8.462226728e+11', '-846222672789.2087639320702375427266333530942524245', 10); + T('-4e-7', '-0.0000004019666978288041783154210868', 1); + T('-315609.775843992', '-315609.775843992', 15); + T('-3.319e+9', '-3318880945', 4); + T('-6', '-6.2847', 1); + T('7.754663772705e+20', '775466377270546647581.033426922028458904663', 13); + T('-72577466365074249372160551.716563', '-72577466365074249372160551.71656300408', 32); + T('-7.8e+14', '-775743793612078', 2); + T('132441.1194131940273344', '132441.119413194027334448511114274180643744', 22); + T('-2e+8', '-175718250.88225246544054572629398592939731158738360059', 1); + T('8603217351572193.39188696', '8603217351572193.391886964766947146712574336', 24); + T('-9.1544942231978215224e+22', '-91544942231978215224182.9277714', 20); + T('2.67483212861962e+22', '26748321286196185405759.132664', 15); + T('-5812371.3', '-5812371.311809024582418495005304074', 8); + T('-4.56681272e+10', '-45668127184.1622', 9); + T('-6.833879652430027734e+28', '-68338796524300277341620461049.174596381', 19); + T('3.5253e+11', '352531868532', 5); + T('6.18754e+9', '6187538472.1814915517411034136013806202710623466754380762318', 6); + T('-49119914201836431396827151123.9982195', '-49119914201836431396827151123.99821949990542', 36); + T('-2.50e+18', '-2498994955335714645.22910610209', 3); + T('112714.50647532453078481574527706184222476885', '112714.50647532453078481574527706184222476884905812', 44); + T('1.3e+10', '13358297773', 2); + T('3.85346866600e+27', '3853468666000315958109987025.078941', 12); + T('-6.849e+16', '-68490080550892289', 4); + T('9.095', '9.094726073939375', 4); + T('4.6722099483e+12', '4672209948311.8638324115985415208264055834', 11); + T('-75494281.3585391383', '-75494281.3585391382541907932608754414663476859104837422712', 18); + T('7.9e+2', '787.7709059965548561711769118765', 2); + T('6103081090513.979878497219802', '6103081090513.9798784972198017843', 28); + T('-6207456599626114.392919', '-6207456599626114.39291886624528055513014220851925', 22); + T('844941600554602638837.461606663208684075561936', '844941600554602638837.461606663208684075561935576396', 45); + T('159438905444627555.28986', '159438905444627555.28985729196359392', 23); + T('-3688253681705278.414841830526919796661181971979', '-3688253681705278.4148418305269197966611819719792068915', 46); + T('-63', '-63.164640732796214571844119', 2); + T('2.8e+11', '276059026705.36069', 2); + T('357378.987253867425946425403370727230144', '357378.9872538674259464254033707272301441754336', 39); + T('1597.52674152596523825479', '1597.526741525965238254790848976407269408999607', 24); + T('4.63310587686706257280646279e+30', '4633105876867062572806462788592.801009', 27); + T('-6.21108762339449e+20', '-621108762339448671355.1393522133', 15); + T('8380435.063269894549337249', '8380435.063269894549337248813357930541546715547', 25); + + BigNumber.config({ROUNDING_MODE : 5}); + + T('-1408003897645960.648499616456', '-1408003897645960.648499616456', 28); + T('-7719307749101742537.6299396338672184', '-7719307749101742537.6299396338672184334306', 35); + T('-1.0', '-1', 2); + T('-8.28e+14', '-827860423543649', 3); + T('0.00054398953021585321711560388890', '0.00054398953021585321711560388889590290139888', 29); + T('-4.409e-9', '-0.000000004408792', 4); + T('4.0000e-10', '0.0000000004', 5); + T('3.40e+16', '34001779327925905', 3); + T('-9.03e+34', '-90332622851356543193546536340366547', 3); + T('-4.5320e+16', '-45320100856429143.39155209710530673318222777', 5); + T('3.618e+30', '3618328715720583671291544414202', 4); + T('-1003.61140', '-1003.61139687804673322250551', 9); + T('-8139415035028632370.38737', '-8139415035028632370.38736602659835', 24); + T('8e+7', '83198058', 1); + T('-7.99492e+14', '-799491603856548', 6); + T('-3.351956508998634059456001730355207230e-9', '-0.000000003351956508998634059456001730355207229966', 37); + T('-14.69863659940007820467946969441090', '-14.698636599400078204679469694410899305', 34); + T('-8.1805185086529e+32', '-818051850865289066860294784032304.6373757407', 14); + T('8.21371840206651626757e+29', '821371840206651626756943367010.81915938727', 21); + T('444', '444', 3); + T('0.00000613258266938', '0.0000061325826693823067791292255878336353793864046451956723', 12); + T('-554696279951718746537611.26040', '-554696279951718746537611.26040029508470430208572833137315', 29); + T('446', '446.189185820662709163412845035853873', 3); + T('22873128187827109553471831451.06623850867', '22873128187827109553471831451.06623850866672688842662473', 40); + T('9e+5', '880389', 1); + T('-6.7516118890844e+16', '-67516118890844443.625641', 14); + T('-0.36107158435820', '-0.36107158435820101656696353075596201902674001080619510849', 14); + T('8.958386374640407365', '8.958386374640407364828679985365339921820421370157246', 19); + T('3e+2', '257', 1); + T('-1.904659739878e+18', '-1904659739878060478.113131137688927604413210083841', 13); + T('-0.0000627142', '-0.00006271421732891589577305487292334', 6); + T('3.310541e+8', '331054103', 7); + T('-1.793886e+23', '-179388600781592577147651.2641684828762234473', 7); + T('0.0004600', '0.00046', 4); + T('-2.9e+21', '-2906505321975413509885', 2); + T('86415.94739506', '86415.9473950557683374', 13); + T('6.730414', '6.7304135909152', 7); + T('-5.032367e+14', '-503236749968584', 7); + T('-5.0241682013868216287718e+32', '-502416820138682162877178622610283', 23); + T('-0.0552606118984074172116684879479087', '-0.0552606118984074172116684879479087', 33); + T('91017414629852252476380368766.471', '91017414629852252476380368766.47117955844005', 32); + T('28586.32124747000', '28586.32124747000107561236523943', 16); + T('0.000001935665545322534195131', '0.0000019356655453225341951305040536808235510260170838860718', 22); + T('7.8', '7.803563246406851025', 2); + T('-4.89914223627882382434323e+26', '-489914223627882382434323457.50920109688497974624541155867073', 24); + T('384718796891211107', '384718796891211107', 18); + T('42510.74002309897971230194', '42510.7400230989797123019438399853496258', 25); + T('-7.388e+11', '-738804895894', 4); + T('-5.0000000e-7', '-0.0000005', 8); + T('8.364583286198657757274487081e+29', '836458328619865775727448708084.5405786', 28); + T('-6.24e+26', '-624168076184333836471774105.20710913228879473008695839055', 3); + T('19804.9', '19804.875536771730958444190952514101502', 6); + T('-74106.212623408289', '-74106.2126234082888281', 17); + T('7432670190286.34100080472041', '7432670190286.341000804720411465540223412277267472', 27); + T('5.3250588635e+21', '5325058863479337983860.6152606488098384817869174221885211', 11); + T('6.865e+9', '6865129903.657345356274690732979469003170132760589', 4); + T('5795370.885430786885', '5795370.8854307868847728814464165810658237393757773', 19); + T('-29172007010418365641.7578738', '-29172007010418365641.7578738219989133084908106406123747833195', 27); + T('-62322.86188017646654', '-62322.8618801764665355127105700053481622040465444574371', 19); + T('-6374', '-6373.604850300043463878', 4); + T('5.846101e+26', '584610089745513547435367965.045755404292155403517947658', 7); + T('-4.9589e+12', '-4958880864611.79783789828786433416628187354312472853462765', 5); + T('-976.708', '-976.7080061576', 6); + T('-6.265387e+7', '-62653867.768253566156', 7); + T('5.943e+14', '594338013726832.675613519', 4); + T('5.0e+27', '5018407166428602036582808244', 2); + T('9e+16', '86282182181939888.936', 1); + T('-5319867042361146027.570343834017247178243381990233', '-5319867042361146027.5703438340172471782433819902325543283', 49); + T('-280.611828072', '-280.611828072476084775', 12); + T('497125.5349688434079217115738652', '497125.5349688434079217115738651759109278602', 31); + T('-8.74679213554e+15', '-8746792135535203.818773729011249091171163901426235584485964', 12); + T('2750816434321727711.90126468620', '2750816434321727711.901264686199491277747822638', 30); + T('-804111355.871490666462196181', '-804111355.8714906664621961811894645876', 27); + T('5592072638309750852858746183.6506680977', '5592072638309750852858746183.6506680977126', 38); + T('-4.0e+20', '-400904317147714566361', 2); + T('-3.9e+26', '-390267222260748697649150634.14444', 2); + T('43.2', '43.2482', 3); + T('42334337596496149636254', '42334337596496149636254.4926162509306406461', 23); + T('-7e+9', '-7246374971.34279698356', 1); + T('71516263932998764871838469072', '71516263932998764871838469072.280115355524', 29); + T('71257489.5995227415169007618702182092', '71257489.59952274151690076187021820922744', 36); + T('268492835', '268492834.77041', 9); + T('50325.551277778107847798802', '50325.551277778107847798801525', 26); + T('-5.289303987e+29', '-528930398665449048343281311623.69686', 10); + + BigNumber.config({ROUNDING_MODE : 6}); + + T('0.08000', '0.08', 4); + T('-4.5132e+21', '-4513243388120382069815.8508153058993058875', 5); + T('-73549', '-73549.2594630551663822238', 5); + T('1.275868004728922895890883e+29', '127586800472892289589088296800.6', 25); + T('-0.0003715444034899460421534099962225699000', '-0.0003715444034899460421534099962225699', 37); + T('-6.9625565265e+24', '-6962556526511822306135536', 11); + T('1.67583703641e+13', '16758370364138.915293525076269061228714877', 12); + T('-173594.95064085553515176707313947534918109631092170', '-173594.950640855535151767073139475349181096310921699', 50); + T('-6.9503965525e+19', '-69503965525000308384.151383', 11); + T('4.411225e+20', '441122486054080817112', 7); + T('2.467044064783596937642371770e+31', '24670440647835969376423717700462.39', 28); + T('3.9711897549481645654e+24', '3971189754948164565361634.8039734590476326224193520402091769', 20); + T('-1.4757613208690e+21', '-1475761320868963235919.64499841336073105746686372924161', 14); + T('91683083887068.6191146', '91683083887068.61911461351134520171343337804061135', 21); + T('-7923074181102822.578', '-7923074181102822.5778', 19); + T('-6.800e-8', '-0.000000068', 4); + T('-2.57954671081460000000e-10', '-0.00000000025795467108146', 21); + T('5.5352911972e-9', '0.000000005535291197169667611325365189624523452', 11); + T('6.0488358e+8', '604883577', 8); + T('3', '3', 1); + T('-4.072637936805672015603149446630136089530560102165', '-4.0726379368056720156031494466301360895305601021653459970194', 49); + T('-7.2e+10', '-71689970391', 2); + T('655754242958.1563938760094919', '655754242958.15639387600949190369', 28); + T('-7.575535014e-9', '-0.00000000757553501363609536678641245355', 10); + T('7.547067960578900230644488e-10', '0.00000000075470679605789002306444877998602723', 25); + T('-3.64561456763e+12', '-3645614567625.4', 12); + T('9.0e-7', '0.0000009', 2); + T('7e+2', '687', 1); + T('517277827334839.8174848543680868', '517277827334839.8174848543680868015165926618', 31); + T('7e+2', '655.46270361324473194', 1); + T('1632131488313153.49737424823493573157', '1632131488313153.497374248234935731568', 36); + T('274068317992.5998880719845028748169734442', '274068317992.5998880719845028748169734442394151076', 40); + T('-7.060e-9', '-0.00000000706025531009734073', 4); + T('0.004444', '0.0044439457493', 4); + T('72482770689153111154104782082.023', '72482770689153111154104782082.022764082943227214833851', 32); + T('5.9130694036072794206e+24', '5913069403607279420613864.152', 20); + T('843384561300245347961437.966', '843384561300245347961437.96592523791', 27); + T('0.0000035198821282510000000', '0.000003519882128251', 20); + T('-1.00371560130267706870097e-9', '-0.00000000100371560130267706870096885251', 24); + T('17504218.4970302', '17504218.49703016415913667026121376499', 15); + T('-5e-9', '-0.000000005169058703', 1); + T('6.922803246e+10', '69228032455', 10); + T('-16', '-16', 2); + T('-1.355147513468192707127939151e+40', '-13551475134681927071279391508441439066206.58705380600075', 28); + T('81670324.1197758695', '81670324.1197758695212865075629796973196504241126', 18); + T('0.00005', '0.00004797485174640366805332660647', 1); + T('-4.864397594e-10', '-0.0000000004864397594461335282648538530108953965681345', 10); + T('47694105.2312532', '47694105.23125322528167211284521303', 15); + T('-4.962106181e+26', '-496210618135432953927871636.779236', 10); + T('1.2800030559497062236642e+37', '12800030559497062236641930592334626609.7332', 23); + T('-574830783.7', '-574830783.6689168903917696583746514637433390929', 10); + T('5969.431086199057470', '5969.43108619905746956015212970904111744101', 19); + T('-4.8e+3', '-4814.32904953003285', 2); + T('4.297e+16', '42973001760252134', 4); + T('-5.7628e+6', '-5762846.590152347665179652381407653797146356303622218259885', 5); + T('904864662232032.160612401810317927291657403142932', '904864662232032.16061240181031792729165740314293194205879163', 48); + T('7.9892e+20', '798923115068265241915.537619430376605', 5); + T('-8.97759349384000643', '-8.97759349384000643427096282979', 18); + T('841598023200278219780', '841598023200278219780.04764720909930685', 21); + T('7.294115e+17', '729411462980818078', 7); + T('-493854.469231', '-493854.46923056217873', 12); + T('1.16760483177812e+16', '11676048317781198.761924013', 15); + T('4.91431629960536e+17', '491431629960536053.49611060493021241774', 15); + T('-391357204564683265466220678.5248961969115394056441165', '-391357204564683265466220678.524896196911539405644116478', 52); + T('-1138622.4269179222525707405725062065185867', '-1138622.42691792225257074057250620651858665807616', 41); + T('7762491414507273289587174.60526', '7762491414507273289587174.60526424654003', 30); + T('-8.34305e+12', '-8343051798787.85784573983', 6); + T('-448090139696.5', '-448090139696.540044682', 13); + T('-249554483941810.04760758280384259798256931579', '-249554483941810.0476075828038425979825693157901967215767', 44); + T('-4937249656843391.056849', '-4937249656843391.056849458', 22); + T('-4.90029240789e+24', '-4900292407887576632220011.4', 12); + T('884134', '884134.30546381722', 6); + T('-67686.285431006', '-67686.2854310057290328136776917246126204655', 14); + T('5.1454907927786956678e+21', '5145490792778695667848.5080878826658832100351133', 20); + T('-3.75540093e+9', '-3755400930.115945946791361377756114557824815082', 9); + T('790548.1', '790548.055405', 7); + T('21.9776441681934305611827', '21.9776441681934305611826542081066055', 24); + T('-8.62915591e+12', '-8629155908036.5010483', 9); + T('-62521191175', '-62521191175.03721539877599449', 11); + T('-63947010170235145618893.55048', '-63947010170235145618893.55048264587643', 28); + T('-4.4791e+5', '-447912.9929543492037', 5); + T('876897.06887720787797443065', '876897.0688772078779744306464727', 26); + T('-609834676.749497163216150672711104329822616519', '-609834676.749497163216150672711104329822616518762', 45); + T('-2.9407315435e+18', '-2940731543474095094.56340709357589521', 11); + T('243028.94040290384317164750687246', '243028.940402903843171647506872458168411478', 32); + T('5313610990.737', '5313610990.7373810218', 13); + T('-3.56e+4', '-35566.4678487', 3); + + T('123', '12.345e1', BigNumber(3)); + T('123.45', '12.345e1', null); + T('123.45', '12.345e1', undefined); + + assertException(function () {new BigNumber(1.23).toPrecision(NaN)}, "(1.23).toPrecision(NaN)"); + assertException(function () {new BigNumber(1.23).toPrecision('NaN')}, "(1.23).toPrecision('NaN')"); + assertException(function () {new BigNumber(1.23).toPrecision([])}, "(1.23).toPrecision([])"); + assertException(function () {new BigNumber(1.23).toPrecision({})}, "(1.23).toPrecision({})"); + assertException(function () {new BigNumber(1.23).toPrecision('')}, "(1.23).toPrecision('')"); + assertException(function () {new BigNumber(1.23).toPrecision(' ')}, "(1.23).toPrecision(' ')"); + assertException(function () {new BigNumber(1.23).toPrecision('hello')}, "(1.23).toPrecision('hello')"); + assertException(function () {new BigNumber(1.23).toPrecision('\t')}, "(1.23).toPrecision('\t')"); + assertException(function () {new BigNumber(1.23).toPrecision(new Date)}, "(1.23).toPrecision(new Date)"); + assertException(function () {new BigNumber(1.23).toPrecision(new RegExp)}, "(1.23).toPrecision(new RegExp)"); + assertException(function () {new BigNumber(1.23).toPrecision(2.01)}, "(1.23).toPrecision(2.01)"); + assertException(function () {new BigNumber(1.23).toPrecision(10.5)}, "(1.23).toPrecision(10.5)"); + assertException(function () {new BigNumber(1.23).toPrecision('1.1e1')}, "(1.23).toPrecision('1.1e1')"); + assertException(function () {new BigNumber(1.23).toPrecision(true)}, "(1.23).toPrecision(true)"); + assertException(function () {new BigNumber(1.23).toPrecision(false)}, "(1.23).toPrecision(false)"); + assertException(function () {new BigNumber(1.23).toPrecision(function (){})}, "(1.23).toPrecision(function (){})"); + + assertException(function () {new BigNumber('12.345e1').toPrecision('-1')}, ".toPrecision('-1')"); + assertException(function () {new BigNumber('12.345e1').toPrecision(-23)}, ".toPrecision(-23)"); + assertException(function () {new BigNumber('12.345e1').toPrecision(1e9 + 1)}, ".toPrecision(1e9 + 1)"); + assertException(function () {new BigNumber('12.345e1').toPrecision(1e9 + 0.1)}, ".toPrecision(1e9 + 0.1)"); + assertException(function () {new BigNumber('12.345e1').toPrecision(0)}, ".toPrecision(0)"); + assertException(function () {new BigNumber('12.345e1').toPrecision('-0')}, ".toPrecision('-0')"); + assertException(function () {new BigNumber('12.345e1').toPrecision(0.9)}, ".toPrecision(0.9)"); + assertException(function () {new BigNumber('12.345e1').toPrecision('-1e-1')}, ".toPrecision('-1e-1')"); + assertException(function () {new BigNumber('12.345e1').toPrecision(Infinity)}, ".toPrecision(Infinity)"); + assertException(function () {new BigNumber('12.345e1').toPrecision('-Infinity')}, ".toPrecision('-Infinity')"); + + BigNumber.config({ERRORS : false}); + + T('123', '12.345e1', BigNumber(3)); + T('123.45', '12.345e1', null); + T('123.45', '12.345e1', undefined); + T('123.45', '12.345e1', NaN); + T('123.45', '12.345e1', 'NaN'); + T('123.45', '12.345e1', []); + T('123.45', '12.345e1', {}); + T('123.45', '12.345e1', ''); + T('123.45', '12.345e1', ' '); + T('123.45', '12.345e1', 'hello'); + T('123.45', '12.345e1', '\t'); + T('123.45', '12.345e1', ' '); + T('123.45', '12.345e1', new Date); + T('123.45', '12.345e1', new RegExp); + T('123.4500', '12.345e1', 7.5); + T('123.45000000', '12.345e1', '1.1e1'); + + T('1e+2', '12.345e1', 1); + T('123.45', '12.345e1', '-1'); + T('123.45', '12.345e1', -23); + T('123.45', '12.345e1', 1e9 + 1); + T('123.45', '12.345e1', 1e9 + 0.1); + T('123.45', '12.345e1', 0); + T('123.45', '12.345e1', '-0'); + T('123.45', '12.345e1', 0.9); + T('123.45', '12.345e1', '-1e-1'); + T('123.45', '12.345e1', Infinity); + T('123.45', '12.345e1', '-Infinity'); + + log('\n ' + passed + ' of ' + total + ' tests passed in ' + (+new Date() - start) + ' ms \n'); + return [passed, total];; +})(this.BigNumber); +if (typeof module !== 'undefined' && module.exports) module.exports = count; \ No newline at end of file diff --git a/node_modules/mysql/node_modules/bignumber.js/test/toString.js b/node_modules/mysql/node_modules/bignumber.js/test/toString.js new file mode 100644 index 0000000..57a61b9 --- /dev/null +++ b/node_modules/mysql/node_modules/bignumber.js/test/toString.js @@ -0,0 +1,1104 @@ +var count = (function toString(BigNumber) { + var start = +new Date(), + log, + error, + passed = 0, + total = 0; + + if (typeof window === 'undefined') { + log = console.log; + error = console.error; + } else { + log = function (str) { document.body.innerHTML += str.replace('\n', '
      ') }; + error = function (str) { document.body.innerHTML += '
      ' + + str.replace('\n', '
      ') + '
      ' }; + } + + if (!BigNumber && typeof require === 'function') BigNumber = require('../bignumber'); + + function assert(expected, actual) { + total++; + if (expected !== actual) { + error('\n Test number: ' + total + ' failed'); + error(' Expected: ' + expected); + error(' Actual: ' + actual); + //process.exit(); + } + else { + passed++; + //log('\n Expected and actual: ' + actual); + } + } + + function T(expected, value) { + assert(expected, new BigNumber(value).toString()) + } + + log('\n Testing toString...'); + + BigNumber.config({ + DECIMAL_PLACES : 20, + ROUNDING_MODE : 4, + ERRORS : true, + RANGE : 1E9, + EXPONENTIAL_AT : 1E9 + }); + + // ---------------------------------------------------------------------- v8 + + T('NaN', NaN); + T('Infinity', 1/0); + T('-Infinity', -1/0); + T('0', 0); + T('9', 9); + T('90', 90); + T('90.12', 90.12); + T('0.1', 0.1); + T('0.01', 0.01); + T('0.0123', 0.0123); + T('111111111111111111111', '111111111111111111111'); + T('1111111111111111111111', '1111111111111111111111'); + T('11111111111111111111111', '11111111111111111111111'); + T('0.00001', 0.00001); + T('0.000001', 0.000001); + + BigNumber.config({EXPONENTIAL_AT : 0}); + + T('1e-7', 0.0000001); + T('1.2e-7', 0.00000012); + T('1.23e-7', 0.000000123); + T('1e-8', 0.00000001); + T('1.2e-8', 0.000000012); + T('1.23e-8', 0.0000000123); + T('-1e-7', -0.0000001); + T('-1.2e-7', -0.00000012); + T('-1.23e-7', -0.000000123); + T('-1e-8', -0.00000001); + T('-1.2e-8', -0.000000012); + T('-1.23e-8', -0.0000000123); + + BigNumber.config({EXPONENTIAL_AT : 60}); + + T('0', -0); + T('-9', -9); + T('-90', -90); + T('-90.12', -90.12); + T('-0.1', -0.1); + T('-0.01', -0.01); + T('-0.0123', -0.0123); + T('-111111111111111111111', '-111111111111111111111'); + T('-1111111111111111111111', '-1111111111111111111111'); + T('-11111111111111111111111', '-11111111111111111111111'); + T('-0.00001', -0.00001); + T('-0.000001', -0.000001); + + // ------------------------------------------------------------------ v8 end + + // 1000 toString to exponentials + BigNumber.config({EXPONENTIAL_AT : 0}); + + T('5.73447902457635174479825134e+14', '573447902457635.174479825134'); + T('1.07688e+1', '10.7688'); + T('3.171194102379077141557759899307946350455841e+27', '3171194102379077141557759899.307946350455841'); + T('4.924353466898191177698653319742594890634579e+37', '49243534668981911776986533197425948906.34579'); + T('6.85558243926569397328633907445409866949445343654692955e+18', '6855582439265693973.28633907445409866949445343654692955'); + T('1e+0', '1'); + T('2.1320000803e+7', '21320000.803'); + T('5.0878741e+4', '50878.741'); + T('5.1932898288391e+8', '519328982.88391'); + T('5.690616778176956027307884725933410349604387915634524e+49', '56906167781769560273078847259334103496043879156345.24'); + T('3.25099780528575457273246693147645e+15', '3250997805285754.572732466931476450'); + T('3e+0', '3'); + T('2.5811494197573291905990947355226e+13', '25811494197573.291905990947355226'); + T('5.60372259169833930471746454125e+13', '56037225916983.3930471746454125'); + T('1.2615810663732236602461593613783e+7', '12615810.663732236602461593613783'); + T('1.4654366449266911507705477499035407722184965108377032e+11', '146543664492.66911507705477499035407722184965108377032'); + T('6.4986735507448912857131832908423940757e+38', '649867355074489128571318329084239407570.0'); + T('3.6146989180120676857245474944e+3', '3614.6989180120676857245474944'); + T('9.928654762302286149994896625074e+4', '99286.54762302286149994896625074'); + T('3.46424170787806074650506079e+3', '3464.24170787806074650506079'); + T('1.25934313355319666474752550204680303068865719647e+33', '1259343133553196664747525502046803.03068865719647'); + T('1.23014105337660651106978059198916100450966081493207e+27', '1230141053376606511069780591.98916100450966081493207'); + T('1.386164712267169624993434287237e+23', '138616471226716962499343.4287237'); + T('2.66076369930322488334961932e+3', '2660.76369930322488334961932'); + T('9.37582568e+4', '93758.2568'); + T('1.39853642894726883996875746770529e+28', '13985364289472688399687574677.0529'); + T('3.19099e+5', '319099.0'); + T('3.04557106798789396303998723e+19', '30455710679878939630.3998723'); + T('1.3024612569115368830867934222004329653604418e+9', '1302461256.9115368830867934222004329653604418'); + T('2.358787483447172786e+5', '235878.7483447172786'); + T('5.10614446965318674547416709785208086304398889160563e+28', '51061444696531867454741670978.5208086304398889160563'); + T('1.46685947134456101512731611558e+23', '146685947134456101512731.6115580'); + T('3.69960105771344554151928256518906564810300119e+25', '36996010577134455415192825.6518906564810300119'); + T('2.68683153074628e+10', '26868315307.4628'); + T('2.35656504568492312232737219553793859212e+15', '2356565045684923.12232737219553793859212'); + T('7.753292442361215e+14', '775329244236121.5'); + T('1.56e+0', '1.56'); + T('1.272818730367215461852227991200704e+21', '1272818730367215461852.227991200704'); + T('1.13900700292988027871648046839423153789e+7', '11390070.0292988027871648046839423153789'); + T('3.3431e+0', '3.3431'); + T('1.4546654966819402705e+14', '145466549668194.02705'); + T('3.05345735395805567424714891401667575466462830113819e+48', '3053457353958055674247148914016675754664628301138.19'); + T('5.1218945854639324441304933666460587e+2', '512.18945854639324441304933666460587'); + T('9.95299900896e+5', '995299.9008960'); + T('1.21564537151562431991786620635e+0', '1.21564537151562431991786620635'); + T('4.016e+1', '40.16'); + T('1.86570326e+7', '18657032.6'); + T('1.3381001727e+5', '133810.01727'); + T('2.639841700687441886800225725227e+12', '2639841700687.441886800225725227'); + T('2.45e+0', '2.45'); + T('2.8945e+2', '289.45'); + T('1.23e+0', '1.23'); + T('1.559806666149836070330006415033e+24', '1559806666149836070330006.415033'); + T('3.14984566145310751826289711761375061645611777700983e+3', '3149.84566145310751826289711761375061645611777700983'); + T('3.0940691333892283249774116223987e+5', '309406.91333892283249774116223987'); + T('6.572766274013360381079275191108732606370177179594282e+5', '657276.6274013360381079275191108732606370177179594282'); + T('1.470126973337024e+6', '1470126.973337024'); + T('5.6499e+2', '564.99'); + T('2.8416297367859233303497847667971781197616950846e+28', '28416297367859233303497847667.971781197616950846'); + T('2.1364951568189836563102481625533538320051163977e+41', '213649515681898365631024816255335383200511.63977'); + T('8.76108618687537137080904679797e+19', '87610861868753713708.0904679797'); + T('6.27683573474251182408654509953633505286e+6', '6276835.73474251182408654509953633505286'); + T('8.91411e+0', '8.91411'); + T('9.034542832410912578330021146413119399e+28', '90345428324109125783300211464.13119399'); + T('7.026094393430852002585511641212897686956090955e+39', '7026094393430852002585511641212897686956.090955'); + T('1.8812221093491505758565988678062e+11', '188122210934.91505758565988678062'); + T('9.435538492497050138580201734902181057468044875e+43', '94355384924970501385802017349021810574680448.75'); + T('5.36793419620790391866461e+20', '536793419620790391866.461'); + T('2.315089265590404012562599592854156357726817712e+26', '231508926559040401256259959.2854156357726817712'); + T('7.499170741828885273030006066196546588710962e+17', '749917074182888527.3030006066196546588710962'); + T('3.3962128305986e+5', '339621.28305986'); + T('8.17980456510031304e+9', '8179804565.10031304'); + T('4.394575876858124185382e+13', '43945758768581.24185382'); + T('7.881617323629751701107428e+9', '7881617323.629751701107428'); + T('4.89e+0', '4.89'); + T('9.85209894663520857685703881781194082356123765e+39', '9852098946635208576857038817811940823561.23765'); + T('6.849329685e+5', '684932.9685'); + T('2.8262252277815736355279617243060700437627773361e+7', '28262252.277815736355279617243060700437627773361'); + T('1.503736721902e+9', '1503736721.902'); + T('2.65213505469049775997232325076980590625670234690917845e+41', '265213505469049775997232325076980590625670.234690917845'); + T('4.23752645959719196604760963802412828187442060555521e+2', '423.752645959719196604760963802412828187442060555521'); + T('9.023159535576504097005203913521871601640521009e+36', '9023159535576504097005203913521871601.640521009'); + T('4.69339457186380276410136272120035011198438772754725e+14', '469339457186380.276410136272120035011198438772754725'); + T('1.2819429130391792511503973184804508867728894e+6', '1281942.9130391792511503973184804508867728894'); + T('1.9778e+3', '1977.8'); + T('2.456680359828937628024631306792185367572610021e+43', '24566803598289376280246313067921853675726100.21'); + T('5.25389225018085571689046925802871155628e+1', '52.5389225018085571689046925802871155628'); + T('1.733700532107e+8', '173370053.2107'); + T('1.9561099921e+5', '195610.99921'); + T('3.3409e+2', '334.09'); + T('6.09858715556186e+0', '6.09858715556186'); + T('3.20634106832106387482375790792609337383007782520694e+24', '3206341068321063874823757.90792609337383007782520694'); + T('1.46347126003930100207988814e+20', '146347126003930100207.98881400'); + T('2.717780449744210117995586561524987067807146882e+43', '27177804497442101179955865615249870678071468.82'); + T('2.86757572635270377540170639151e+22', '28675757263527037754017.0639151'); + T('3.3652257e+4', '33652.2570'); + T('1.161511687e+2', '116.1511687'); + T('3.38745832e+4', '33874.5832'); + T('1.2392653444609372603987061e+0', '1.2392653444609372603987061'); + T('3.2863728114574403555642096129516601553115371e+19', '32863728114574403555.642096129516601553115371'); + T('1.08862827358094757110520739146065028362703e+30', '1088628273580947571105207391460.65028362703'); + T('1.3488325541508602487577920722101277063863557818e+14', '134883255415086.02487577920722101277063863557818'); + T('1.96013732736436392e+13', '19601373273643.6392'); + T('4.798185890466e+2', '479.8185890466'); + T('1.696622337138949329874242519485119916519994150606e+39', '1696622337138949329874242519485119916519.994150606'); + T('5.50000572984970761183142593570950897913860587074643e+13', '55000057298497.0761183142593570950897913860587074643'); + T('4.9e+1', '49'); + T('2.353405108244768666141e+9', '2353405108.2447686661410'); + T('1.237978927714857736527530290155529e+0', '1.237978927714857736527530290155529'); + T('5.54113012e+1', '55.411301200'); + T('1.639709023131e+11', '163970902313.1'); + T('6.771810210029143571341e+20', '677181021002914357134.1'); + T('3.3659315728946599002939955548637694037e+13', '33659315728946.599002939955548637694037'); + T('5.448485697437811e+14', '544848569743781.1'); + T('2.93450799e+0', '2.93450799'); + T('4e+0', '4'); + T('5.751e+0', '5.751'); + T('7.61737213065110411e+15', '7617372130651104.110'); + T('4.958075942313945962737499249994583773691625306e+36', '4958075942313945962737499249994583773.691625306'); + T('1.358378342e+8', '135837834.20'); + T('2.048052995889503e+13', '20480529958895.03'); + T('6.79076388323848653822758720940258493627501e+10', '67907638832.38486538227587209402584936275010'); + T('8.67210047206219429882716380856729877038463e+37', '86721004720621942988271638085672987703.8463'); + T('3.5856103826876870700739098996695255188137082852345623e+4', '35856.103826876870700739098996695255188137082852345623'); + T('1.90496213987796617338452467459794976917964545462658e+15', '1904962139877966.17338452467459794976917964545462658'); + T('9.63174575036950144769050367165741e+0', '9.63174575036950144769050367165741'); + T('2.0768e+0', '2.0768'); + T('1.456779888489820409831915e+18', '1456779888489820409.831915'); + T('3.17858204994255447e+11', '317858204994.255447'); + T('1e+0', '1'); + T('1.9096483361096593551745691e+3', '1909.64833610965935517456910'); + T('1.06782878549e+8', '106782878.5490'); + T('1.939e+2', '193.9'); + T('1.35467074874780607458660332165839e+30', '1354670748747806074586603321658.39'); + T('1.3477262091e+0', '1.3477262091'); + T('1.310111103174762e+6', '1310111.103174762'); + T('1.3244499e+5', '132444.99'); + T('6.328608643684925104652431120058467829483124155656848e+5', '632860.86436849251046524311200584678294831241556568480'); + T('1.323139209814658927313821930784171e+3', '1323.1392098146589273138219307841710'); + T('4.47797097399588837e+9', '4477970973.995888370'); + T('1.443414e+4', '14434.14'); + T('1.913095284076879e+12', '1913095284076.879'); + T('2.51586474e+0', '2.51586474'); + T('2.9838935573505166030799e+9', '2983893557.3505166030799'); + T('1.573964479962393720481520537831844728449363575e+7', '15739644.79962393720481520537831844728449363575'); + T('2.496378e+2', '249.6378'); + T('1.484378e+0', '1.484378'); + T('5.21963089810195859130639819168579622e+24', '5219630898101958591306398.19168579622'); + T('1.8688440918945220036354844302195749309220888e+26', '186884409189452200363548443.02195749309220888'); + T('1.41126696817890014e+9', '1411266968.17890014'); + T('1.293182137273764465174297382284293177743591308e+15', '1293182137273764.465174297382284293177743591308'); + T('1.27466702071873897014853508266774e+7', '12746670.2071873897014853508266774'); + T('2.556582211914618427489836174964272160475e+25', '25565822119146184274898361.74964272160475'); + T('7.4140139575523848563560806694561950037847e+26', '741401395755238485635608066.94561950037847'); + T('1.9191049758936644006660416648962209488e+24', '1919104975893664400666041.66489622094880'); + T('2.31987505124515790876372807554587171781e+6', '2319875.05124515790876372807554587171781'); + T('1.15157815434449204928983e+10', '11515781543.4449204928983'); + T('3e+0', '3'); + T('2.917143980403974745273363447e+0', '2.917143980403974745273363447'); + T('4.191515340588519451276037876335997588593916166223e+8', '419151534.0588519451276037876335997588593916166223'); + T('1.5893308320910765122063972428358196502e+36', '1589330832091076512206397242835819650.2'); + T('1.564871863334923e+9', '1564871863.334923'); + T('3.4443994941943243107512237423766787557718741016702e+7', '34443994.941943243107512237423766787557718741016702'); + T('2.082688546929e+2', '208.2688546929'); + T('2.9839569879261869701414e+14', '298395698792618.69701414'); + T('1.18e+0', '1.18'); + T('4.649099416086369391962725101452597532757447601493062e+15', '4649099416086369.391962725101452597532757447601493062'); + T('5.1e+1', '51.0'); + T('1.350769554904381289856048945926109233407469025099095e+35', '135076955490438128985604894592610923.3407469025099095'); + T('1.28e+0', '1.28'); + T('1.686998748044557678256738078e+11', '168699874804.4557678256738078'); + T('2.725058665831622653286e+15', '2725058665831622.653286'); + T('3.4955955888709903930650733178004053283303e+27', '3495595588870990393065073317.8004053283303'); + T('2.71792743712e+3', '2717.92743712'); + T('3.765499741127994356229674741445362678695091917e+28', '37654997411279943562296747414.453626786950919170'); + T('8.48094736645795433828545542478643430012741252784e+2', '848.0947366457954338285455424786434300127412527840'); + T('3.252259575976e+8', '325225957.5976'); + T('3.6168564360780068610016611e+13', '36168564360780.0686100166110'); + T('1.3606305591180828419826623450927437361732403593e+14', '136063055911808.28419826623450927437361732403593'); + T('3.770936274989628272472264790077542e+21', '3770936274989628272472.264790077542'); + T('7.2511003873049904808574871389e+2', '725.11003873049904808574871389'); + T('6.62710314240271241900085261e+21', '6627103142402712419000.85261'); + T('7.5663149e+5', '756631.49'); + T('1.2062059e+1', '12.0620590'); + T('1.316934076085443594506478729911134464048168888698e+42', '1316934076085443594506478729911134464048168.888698'); + T('1.202953883353175026243055281903766950596e+16', '12029538833531750.26243055281903766950596'); + T('5.15639495337093127431811770279915335410152998e+4', '51563.9495337093127431811770279915335410152998'); + T('1.8e+1', '18'); + T('2.9510339604105305444519680156145845428324011e+35', '295103396041053054445196801561458454.28324011'); + T('9.991e+0', '9.991'); + T('2.32664625710064626302675792506518986748623800519362825e+45', '2326646257100646263026757925065189867486238005.19362825'); + T('1.15155883503801901e+9', '1151558835.03801901'); + T('2.3143e+1', '23.143'); + T('2.260422939172634138149555333552819e+1', '22.60422939172634138149555333552819'); + T('1.77998238e+7', '17799823.8'); + T('3.70098549253330116100410970723706977e+9', '3700985492.53330116100410970723706977'); + T('9.05841068683497571038524585222884373e+29', '905841068683497571038524585222.884373'); + T('2.104525700707071438146923949322482428742115356534e+28', '21045257007070714381469239493.22482428742115356534'); + T('7.024685053227353728838050757013069476546171879163e+24', '7024685053227353728838050.757013069476546171879163'); + T('4.46125872195266e+10', '44612587219.5266'); + T('1.5784e+0', '1.5784'); + T('7.2863751084180259357725026103712116366349e+23', '728637510841802593577250.26103712116366349'); + T('3.8320639752835419309258317842615e+19', '38320639752835419309.258317842615'); + T('5.022803549739540204835955185781e+8', '502280354.9739540204835955185781'); + T('1.52375875990883568458394783820252654691082e+8', '152375875.990883568458394783820252654691082'); + T('6.3061015767881141717464891e+15', '6306101576788114.1717464891'); + T('9.71891517062070497407760297561206525471485e+27', '9718915170620704974077602975.61206525471485'); + T('1.734234585265201766712574126945236309508118634425837e+0', '1.734234585265201766712574126945236309508118634425837'); + T('8.5765119797384477995e+4', '85765.119797384477995'); + T('5.13287988277059925228486890851140970386425187274e+8', '513287988.2770599252284868908511409703864251872740'); + T('1.658649165479737672749860660622867246548e+15', '1658649165479737.672749860660622867246548'); + T('3.4292698700438468428249935453830307216008845443e+3', '3429.2698700438468428249935453830307216008845443'); + T('6.4741508681889057488168545664375944171354681e+23', '647415086818890574881685.45664375944171354681'); + T('1.6942797476135028024654429183339522530812281e+31', '16942797476135028024654429183339.522530812281'); + T('4.2751009447385333857937408636958425779826e+4', '42751.009447385333857937408636958425779826'); + T('8.171245315549501039363411728044907e+8', '817124531.5549501039363411728044907'); + T('2.63956757213151457264967446772106e+14', '263956757213151.457264967446772106'); + T('5.613736432461e+9', '5613736432.461'); + T('4.78814e+3', '4788.14'); + T('4e+0', '4'); + T('4.37173137694e+3', '4371.73137694'); + T('2.2510403748584e+3', '2251.0403748584'); + T('5.06031783713235771e+6', '5060317.83713235771'); + T('1.33505152823751921282350949461e+18', '1335051528237519212.82350949461'); + T('7.600277071910098554342026310498032154036e+17', '760027707191009855.4342026310498032154036'); + T('1.876325989370064932735123485260012703584e+17', '187632598937006493.27351234852600127035840'); + T('3.87899618892199653560586133205982498365799449e+27', '3878996188921996535605861332.05982498365799449'); + T('6.2615173898555524447350478811537912100608066376e+42', '6261517389855552444735047881153791210060806.6376'); + T('9.413311009646174266728687126e+7', '94133110.09646174266728687126'); + T('1.2598016462494915983919933836115811e+13', '12598016462494.915983919933836115811'); + T('7.9083335654128601227093e+3', '7908.3335654128601227093'); + T('1.1816683721169472338636e+3', '1181.6683721169472338636'); + T('2.75369819574089239438702064921012202e+10', '27536981957.4089239438702064921012202'); + T('8.23458259735325932383e+10', '82345825973.5325932383'); + T('9.79385e+1', '97.9385'); + T('1e+0', '1'); + T('1.054786033040309868462e+15', '1054786033040309.868462'); + T('1.39529250356370349e+10', '13952925035.6370349'); + T('3.287519212843337e+8', '328751921.2843337'); + T('2.931680954526563928e+2', '293.1680954526563928'); + T('8.34563827640030036035405e+22', '83456382764003003603540.5'); + T('3.205638487e+0', '3.205638487'); + T('8.347784116251624503148e+14', '834778411625162.4503148'); + T('8.0108273810982547100003003762e+5', '801082.73810982547100003003762'); + T('5.41874345499627242543460793e+17', '541874345499627242.543460793'); + T('1.015683737878128e+2', '101.56837378781280'); + T('2.978259746276619202256565093853146061976952e+15', '2978259746276619.202256565093853146061976952'); + T('9.698293249507073809003898936542180557347147e+18', '9698293249507073809.003898936542180557347147'); + T('5.73284757676406662905522205317450204e+31', '57328475767640666290552220531745.0204'); + T('1.09314948671137385444979381052e+26', '109314948671137385444979381.052'); + T('6.657213e+1', '66.57213'); + T('5.442667e+0', '5.442667'); + T('1.497094368112928522082161622117e+17', '149709436811292852.2082161622117'); + T('8.86015267575800230944962406406137570452e+28', '88601526757580023094496240640.6137570452'); + T('8.7435115902725784785213467357972025071925716822259e+38', '874351159027257847852134673579720250719.25716822259'); + T('3.758112653964719298306554363807932e+15', '3758112653964719.298306554363807932'); + T('3.083180493316158e+7', '30831804.93316158'); + T('6.6753482e+1', '66.753482'); + T('1.511686617338690801597376192985164124335711475e+36', '1511686617338690801597376192985164124.335711475'); + T('2.561637088433158358807278932196e+1', '25.61637088433158358807278932196'); + T('9.7542804053855981164860021065e+18', '9754280405385598116.4860021065'); + T('3.862183052662673704009308528932528900914181684535e+42', '3862183052662673704009308528932528900914181.684535'); + T('1.735e+0', '1.735'); + T('1.68459549759090470803341044524240531008376812e+5', '168459.549759090470803341044524240531008376812'); + T('5.7719373345538594618757e+18', '5771937334553859461.8757'); + T('3.6601007679275500170303e+18', '3660100767927550017.0303'); + T('8.33735150265611827e+5', '833735.150265611827'); + T('1.01871087828059263083e+9', '1018710878.28059263083'); + T('1.730763e+3', '1730.763'); + T('2.0215513523e+6', '2021551.3523'); + T('3.169677580608477341e+6', '3169677.580608477341'); + T('1.36121484062885200254669e+8', '136121484.062885200254669'); + T('1.864593865698e+11', '186459386569.8'); + T('3.862360154857656116978304538802550298055142749413e+37', '38623601548576561169783045388025502980.55142749413'); + T('6.344348248e+6', '6344348.248'); + T('8.67366546264e+2', '867.366546264'); + T('4.29318860328279804558512081958216849305249e+4', '42931.8860328279804558512081958216849305249'); + T('4.5767492969936218926613265e+5', '457674.92969936218926613265'); + T('9.965617933646541e+10', '99656179336.46541'); + T('7.664031929445646163953676864248019955392457435e+19', '76640319294456461639.53676864248019955392457435'); + T('1.7557601024183018471184139748851879933153788645e+26', '175576010241830184711841397.48851879933153788645'); + T('3.59958e+1', '35.9958'); + T('3.128356271716333383085523918507809249225814121e+6', '3128356.271716333383085523918507809249225814121'); + T('1.9075527480204423875673047345572289921671553543e+7', '19075527.480204423875673047345572289921671553543'); + T('4.1705118500557863903425612212241828e+28', '41705118500557863903425612212.241828'); + T('1.18254857176614357421149713005254203068839516120630636e+10', '11825485717.6614357421149713005254203068839516120630636'); + T('7.02259913337121409861924646773988297e+3', '7022.599133371214098619246467739882970'); + T('1.146737732876241016454570289690559455455987995125423e+18', '1146737732876241016.454570289690559455455987995125423'); + T('1.355148008848587e+12', '1355148008848.587'); + T('1.015453056007471546100232031232797626130792432862e+30', '1015453056007471546100232031232.797626130792432862'); + T('2.8538363119129962635325743474766089129608347262536e+29', '285383631191299626353257434747.660891296083472625360'); + T('4.2227811926947467182312527e+0', '4.2227811926947467182312527'); + T('6.62781300059578283068526676555702438949382809379e+11', '662781300059.578283068526676555702438949382809379'); + T('7.132543524075010321e+11', '713254352407.5010321'); + T('2.6891265922739405441935129011630558514535121113e+0', '2.6891265922739405441935129011630558514535121113'); + T('2.6553300042224839703e+7', '26553300.042224839703'); + T('1.326288516626807519348228004e+12', '1326288516626.807519348228004'); + T('0e+0', '0'); + T('6.02519526915223e+9', '6025195269.15223'); + T('3.624787029215766960931977e+8', '362478702.9215766960931977'); + T('2.2216785095018655042906319049394e+10', '22216785095.018655042906319049394'); + T('1.42167287636895617482014385649865679412e+27', '1421672876368956174820143856.49865679412'); + T('1.41165522278933908893e+0', '1.41165522278933908893'); + T('9.6100608486394273371410715209128478362564609e+29', '961006084863942733714107152091.28478362564609'); + T('6.628723659367639746219006678948604246e+24', '6628723659367639746219006.678948604246'); + T('2.7977956855247594e+5', '279779.56855247594'); + T('2.031549e+5', '203154.9'); + T('1.255931797e+8', '125593179.7'); + T('5.6205236102596850984322041097e+16', '56205236102596850.9843220410970'); + T('2.03142821417788742960492e+19', '20314282141778874296.0492'); + T('1.91781433973790573018323517395847264353e+35', '191781433973790573018323517395847264.35300'); + T('6.8634738969456114664748639548209064365603770815e+10', '68634738969.456114664748639548209064365603770815'); + T('2.4116354386327449757134801702e+5', '241163.54386327449757134801702'); + T('3.36834833123607650204419305291838348810644243e+42', '3368348331236076502044193052918383488106442.43'); + T('1.2854387e+1', '12.854387'); + T('1.71911767411984485012054040057806822618e+28', '17191176741198448501205404005.7806822618'); + T('5.974376678071807862297048158076713536908142505051762e+0', '5.974376678071807862297048158076713536908142505051762'); + T('1.75040573368172e+0', '1.75040573368172'); + T('7.59296739794577295967023894e+19', '75929673979457729596.7023894'); + T('5.9387271258615e+0', '5.9387271258615'); + T('1.41e+1', '14.1'); + T('6.520718977022294517603438651524e+13', '65207189770222.94517603438651524'); + T('4.0504464748488527e+13', '40504464748488.527'); + T('4.9339025e+4', '49339.025'); + T('6.5436938338545276642922e+5', '654369.38338545276642922'); + T('6.614070881259392274974020452736433936484946441479e+14', '661407088125939.2274974020452736433936484946441479'); + T('3.6562357737624542715177216071738074863798786e+36', '3656235773762454271517721607173807486.3798786'); + T('4.483580186204558328366014e+16', '44835801862045583.28366014'); + T('8.786e+1', '87.86'); + T('3.2320103419855255742057273942480043987e+6', '3232010.3419855255742057273942480043987'); + T('4.46656766000098808044857967014414e+16', '44665676600009880.8044857967014414'); + T('1.02292056093528342365e+13', '10229205609352.8342365'); + T('8.57520635819763350659219863901837233e+21', '8575206358197633506592.19863901837233'); + T('1.245913688722124452316952395765916246e+21', '1245913688722124452316.9523957659162460'); + T('8.8964578294856908705314945178917896807516003057782324e+46', '88964578294856908705314945178917896807516003057.782324'); + T('8.7449512208056038986439889808e+7', '87449512.208056038986439889808'); + T('2.3e+2', '230.0'); + T('1.5579884689150031101693496143656840264980386818704e+23', '155798846891500311016934.961436568402649803868187040'); + T('8.5051864582679908692564183699252612773409509082078e+37', '85051864582679908692564183699252612773.409509082078'); + T('8.8798692074080075787375315447486123809923959833e+26', '887986920740800757873753154.47486123809923959833'); + T('6.77345401358539738139850599762127933983100324110805558e+4', '67734.5401358539738139850599762127933983100324110805558'); + T('2.347749726836225014840282995092832754e+20', '234774972683622501484.0282995092832754'); + T('7.429558958688e+0', '7.429558958688'); + T('1.7882214813873e+0', '1.7882214813873'); + T('4.193192196e+6', '4193192.196'); + T('4.749767618513507376588211479214898450387625965e+9', '4749767618.513507376588211479214898450387625965'); + T('1.977391043687779e+5', '197739.1043687779'); + T('2.6484576511218782036901501152986249531234497168718e+40', '26484576511218782036901501152986249531234.497168718'); + T('1.920439145880135238583976259936021e+3', '1920.439145880135238583976259936021'); + T('1.51897109592862249460404e+8', '151897109.592862249460404'); + T('5.0235407304542145031825034116450744076803325e+15', '5023540730454214.5031825034116450744076803325'); + T('7.6404110248649153016903650163544816581006668605e+23', '764041102486491530169036.50163544816581006668605'); + T('3.7874929502138e+0', '3.7874929502138'); + T('1.41787251451628994917275472e+24', '1417872514516289949172754.72'); + T('4.2104854597998748621925225253125873386e+31', '42104854597998748621925225253125.87338600'); + T('1.26567160108986726661104934542275915987889e+7', '12656716.0108986726661104934542275915987889'); + T('2.8968894398808777e+4', '28968.894398808777'); + T('2.8297292e+2', '282.97292'); + T('2.603742338988784570262735209585265906786049e+12', '2603742338988.784570262735209585265906786049'); + T('4.62131e+2', '462.131'); + T('2.22735863520665290933246331848e+24', '2227358635206652909332463.31848'); + T('4.53886361459e+10', '45388636145.9'); + T('6.6860727859954777667223002708162369e+32', '668607278599547776672230027081623.69'); + T('2.8062722e+0', '2.8062722'); + T('6.0842062525063451016806e+10', '60842062525.063451016806'); + T('6.8357371699714755863090081855483865237790749503e+22', '68357371699714755863090.081855483865237790749503'); + T('3.35802101243809011e+10', '33580210124.3809011'); + T('8.43490001143656777280840623008615269579365614931775e+0', '8.43490001143656777280840623008615269579365614931775'); + T('1.9235808728891520564223264242417980260344158021186e+8', '192358087.28891520564223264242417980260344158021186'); + T('1.41994286356037056979411e+12', '1419942863560.37056979411'); + T('1.78557003827723798504978687588959254956675353035516771e+37', '17855700382772379850497868758895925495.6675353035516771'); + T('1.2918168334241255620676751949906289e+11', '129181683342.41255620676751949906289'); + T('3.9318765130442377729598885e+1', '39.318765130442377729598885'); + T('3.88694369953891826304770521327308322619393047272853992e+29', '388694369953891826304770521327.308322619393047272853992'); + T('1.0841221160385599396e+8', '108412211.60385599396'); + T('2.927924105979441123308231e+10', '29279241059.79441123308231'); + T('9.793009327446332791991220439204599563053527e+23', '979300932744633279199122.0439204599563053527'); + T('9.423287306701960190921439346729208723159342075073e+5', '942328.7306701960190921439346729208723159342075073'); + T('9.32095532579704529e+14', '932095532579704.529'); + T('4e+0', '4'); + T('6.53989976127167541385228442576702092890124e+35', '653989976127167541385228442576702092.89012400'); + T('1.19250623478e+7', '11925062.3478'); + T('1.865458672e+0', '1.865458672'); + T('3.316183057661896194198642778725380227773158022030233e+12', '3316183057661.896194198642778725380227773158022030233'); + T('8.5601184555567625475596670332086089588e+15', '8560118455556762.5475596670332086089588'); + T('1.80118254923064703459780878790624318318152203e+37', '18011825492306470345978087879062431831.8152203'); + T('8.31702685620470833413491412813875698623351991849704e+45', '8317026856204708334134914128138756986233519918.49704'); + T('4.158534334648275764e+11', '415853433464.8275764'); + T('2.19723302477e+0', '2.19723302477'); + T('2.029177448999173372119989892440779088e+22', '20291774489991733721199.89892440779088'); + T('4.645682747987148208758271e+14', '464568274798714.8208758271'); + T('2.6112628e+6', '2611262.8'); + T('1.27260908637e+0', '1.27260908637'); + T('2.386528806365172395257137e+5', '238652.88063651723952571370'); + T('2.64450278721870797393766005966148238494e+8', '264450278.721870797393766005966148238494'); + T('1.988688294222795007e+6', '1988688.294222795007'); + T('7.078660611250891118657496594735238821341408353e+35', '707866061125089111865749659473523882.1341408353'); + T('0e+0', '0'); + T('1.096715852238427070115466117322983113926e+36', '1096715852238427070115466117322983113.926'); + T('8.3033913e+4', '83033.913'); + T('4.015204714209691387124917361818013823115690954e+5', '401520.4714209691387124917361818013823115690954'); + T('1.18391666839775944e+9', '1183916668.39775944'); + T('2.2995421984176008066735e+7', '22995421.984176008066735'); + T('9.03e+0', '9.03'); + T('5.332359881257917566876361208399e+0', '5.3323598812579175668763612083990'); + T('7.102133e+3', '7102.133'); + T('1.1483640369724895747740049e+19', '11483640369724895747.740049'); + T('2.86532834287791967206284176556306849118939923884e+42', '2865328342877919672062841765563068491189399.23884'); + T('9.076417888165894607318040129e+17', '907641788816589460.7318040129'); + T('7.3646447223309353153091289569473837758243e+14', '736464472233093.53153091289569473837758243'); + T('2.181883e+4', '21818.83'); + T('3.386300476012467818859167684043147659263155e+9', '3386300476.012467818859167684043147659263155'); + T('2.51484028084025506424805997802620148071482e+13', '25148402808402.55064248059978026201480714820'); + T('9.4435575887407391033782269887533990447300682186075521e+24', '9443557588740739103378226.9887533990447300682186075521'); + T('1.6886715415033e+8', '168867154.15033'); + T('2.5034373528604861134460194872790430617196344388725e+11', '250343735286.04861134460194872790430617196344388725'); + T('2.196175657558897384981748559894e+29', '219617565755889738498174855989.4'); + T('9.76199813364186117286131817353e+8', '976199813.364186117286131817353'); + T('2.19717393409454748689882068559316753929782544245361e+9', '2197173934.09454748689882068559316753929782544245361'); + T('3.458346873044019889e+14', '345834687304401.98890'); + T('1.7224191355912435440309996131683233957399227e+29', '172241913559124354403099961316.83233957399227'); + T('2.9118304597001059668e+13', '29118304597001.0596680'); + T('8.089765204288655830674576596713309516483099e+31', '80897652042886558306745765967133.09516483099'); + T('4.238609505643148138368920789804547924618071e+16', '42386095056431481.38368920789804547924618071'); + T('6.632956460328161742904032219604e+9', '6632956460.328161742904032219604'); + T('5.149280532588990421575423306958842719315081438104696e+2', '514.9280532588990421575423306958842719315081438104696'); + T('2.07166412218470429605806831507e+24', '2071664122184704296058068.31507'); + T('3.074159e+0', '3.074159'); + T('8.881411022677226686076012925366e+8', '888141102.2677226686076012925366'); + T('1.4327673900218857772756403845335511690820534667844161e+25', '14327673900218857772756403.845335511690820534667844161'); + T('8.11258981514701594464134633523542919936061665628845e+9', '8112589815.14701594464134633523542919936061665628845'); + T('5.96685124808828989098666066158574653883332e+34', '59668512480882898909866606615857465.3883332'); + T('5.57183574e+6', '5571835.74'); + T('6.8501903843096e+0', '6.8501903843096'); + T('1.5942819569037073307050366953094e+20', '159428195690370733070.50366953094'); + T('2.27330909197482e+2', '227.330909197482'); + T('2.982752994e+1', '29.82752994'); + T('2.6621448010147457294e+3', '2662.14480101474572940'); + T('1.086669601366824519299e+5', '108666.9601366824519299'); + T('1.18736e+1', '11.8736'); + T('2.529e+2', '252.9'); + T('9.53927547001352070346930665292474419009985922637627e+0', '9.53927547001352070346930665292474419009985922637627'); + T('1.41547817128845761243461584e+17', '141547817128845761.243461584'); + T('4.913427130278990825751597676478e+5', '491342.7130278990825751597676478'); + T('1.92247886737227536336e+7', '19224788.67372275363360'); + T('3.1497590158477647299507840130228337905235603e+22', '31497590158477647299507.840130228337905235603'); + T('1.68055184413854558094765106936369527289778050531295766e+40', '16805518441385455809476510693636952728977.8050531295766'); + T('1.8255321351888780569641286767450275327e+7', '18255321.351888780569641286767450275327'); + T('1.56201751119240301681993262341142444952941e+6', '1562017.51119240301681993262341142444952941'); + T('5.122704714291e+9', '5122704714.291'); + T('3.82474822197843e+12', '3824748221978.43'); + T('1.525347830613268824053492683517588e+9', '1525347830.613268824053492683517588'); + T('6.145278e+4', '61452.78'); + T('4.99832566753824717449034e+0', '4.99832566753824717449034'); + T('1.308323895602314056642638704891037710277185276986927e+40', '13083238956023140566426387048910377102771.85276986927'); + T('5.18915522348e+4', '51891.5522348'); + T('1.4209994e+6', '1420999.4'); + T('1.503265451278288e+7', '15032654.51278288'); + T('3.152117986796142139453802611094289123987929469e+9', '3152117986.796142139453802611094289123987929469'); + T('2.978007679998703216707397018589782695e+13', '29780076799987.03216707397018589782695'); + T('5.8512931044e+7', '58512931.044'); + T('3.295254020832544012761679098484189727227833e+41', '329525402083254401276167909848418972722783.3'); + T('8.72742250969672731429969186796754051463901e+14', '872742250969672.731429969186796754051463901'); + T('2.9072795594202554837396927026502083307998e+35', '290727955942025548373969270265020833.07998'); + T('2.34518496092800925568908809696371538989759e+27', '2345184960928009255689088096.96371538989759'); + T('4.02951776768e+4', '40295.17767680'); + T('1.3689991541714377699994556138826283759e+29', '136899915417143776999945561388.26283759'); + T('5.375319663285375407847169258e+20', '537531966328537540784.71692580'); + T('2.4838816191142589e+0', '2.4838816191142589'); + T('1e+1', '10'); + T('1.32118e+2', '132.118'); + T('3.167368488391197862244748797056311701e+1', '31.6736848839119786224474879705631170100'); + T('1.2923240005675836581430542022e+7', '12923240.005675836581430542022'); + T('2.45198799455822803503200760843340001104401687715e+1', '24.5198799455822803503200760843340001104401687715'); + T('5.017419011122159795604649952660143561601682847055e+9', '5017419011.122159795604649952660143561601682847055'); + T('1.528293223258e+9', '1528293223.258'); + T('3.36806306935615523082781617061106400210297708457466e+40', '33680630693561552308278161706110640021029.7708457466'); + T('2.24276e+4', '22427.6'); + T('1.452908e+5', '145290.8'); + T('1.730864210471288302007789478210233615399858e+21', '1730864210471288302007.789478210233615399858'); + T('1.98572237681530700377986658329680798e+32', '198572237681530700377986658329680.798'); + T('5.3625630032708e+2', '536.25630032708'); + T('1.279811707773498944767714003821019551877654490239992e+40', '12798117077734989447677140038210195518776.54490239992'); + T('1.13478473099428793759e+1', '11.3478473099428793759'); + T('3.8084703153428358911632007387325702215541573567757e+45', '3808470315342835891163200738732570221554157356.7757'); + T('1.63132182288401410656e+16', '16313218228840141.0656'); + T('1.2883403439965987126193143646e+8', '128834034.39965987126193143646'); + T('1.1337344058722593784502983693368481614e+2', '113.3734405872259378450298369336848161400'); + T('1.3810837466649418967673665311541682533151e+37', '13810837466649418967673665311541682533.151'); + T('3e+0', '3'); + T('1.77729190576542704583828487792283968438443988677e+27', '1777291905765427045838284877.92283968438443988677'); + T('1.75045497942020277400523024600228150483494020715374e+39', '1750454979420202774005230246002281504834.94020715374'); + T('9.4295017753469131679077273e+2', '942.95017753469131679077273'); + T('3.854570457401828825080672674176371617252885568525e+42', '3854570457401828825080672674176371617252885.568525'); + T('6.976781259116059962789065637569e+19', '69767812591160599627.89065637569'); + T('1.983953867384017752e+8', '198395386.7384017752'); + T('8.18621623940664383e+3', '8186.21623940664383'); + T('4.678566e+5', '467856.6'); + T('4.37454863655836062626765123683424e+5', '437454.863655836062626765123683424'); + T('7.6e+1', '76'); + T('1.356170189773197190024227714709209e+20', '135617018977319719002.42277147092090'); + T('2.524007970392697273821209419290910149e+32', '252400797039269727382120941929091.0149'); + T('2.2996e+1', '22.996'); + T('9.19536554437673037098591509995026767872538589562761e+45', '9195365544376730370985915099950267678725385895.62761'); + T('7.52981388027044914e+7', '75298138.8027044914'); + T('6.0233392042283e+4', '60233.3920422830'); + T('1.197371690422415645601906387900091876e+8', '119737169.0422415645601906387900091876'); + T('2.5e+0', '2.50'); + T('3.0513e+3', '3051.3'); + T('3.4378929513006354001139704e+1', '34.378929513006354001139704'); + T('2.7688798583863475634e+16', '27688798583863475.634'); + T('3.70733017769177e+3', '3707.33017769177'); + T('1.183552401830090152504539986275312716505e+23', '118355240183009015250453.9986275312716505'); + T('5.5532923555574e+0', '5.5532923555574'); + T('1.007309381e+2', '100.7309381'); + T('4.26e+0', '4.26'); + T('3.49082770706667347770412719905221035269e+36', '3490827707066673477704127199052210352.69'); + T('1.09667668559108738350612984427121459528827e+35', '109667668559108738350612984427121459.528827'); + T('6.7117017423837651934e+2', '671.17017423837651934'); + T('3.5513336510667288609743743e+5', '355133.36510667288609743743'); + T('2.733911637796059758003823848720999245e+12', '2733911637796.059758003823848720999245'); + T('4.7727335155560138656406364912e+21', '4772733515556013865640.6364912'); + T('7.1707742358130425165e+15', '7170774235813042.5165'); + T('1.2373e+0', '1.2373'); + T('1.95864917284678233803922075321436e+16', '19586491728467823.3803922075321436'); + T('1.39511686402859313308703279767446898138923566399e+34', '13951168640285931330870327976744689.8138923566399'); + T('5.45166767236394220015660379974682e+18', '5451667672363942200.15660379974682'); + T('5.7e+1', '57'); + T('2.008185112618419540343890697023120161916064586e+15', '2008185112618419.5403438906970231201619160645860'); + T('1.83547377703310193838625323613810597146659646688e+38', '183547377703310193838625323613810597146.659646688'); + T('1.86963380149e+6', '1869633.80149'); + T('9.0643926657221127599225e+0', '9.0643926657221127599225'); + T('3.387626848249516099010371969816649097243645e+35', '338762684824951609901037196981664909.7243645'); + T('2.38574e+4', '23857.4'); + T('4.854485927348228918413753679671472155071e+35', '485448592734822891841375367967147215.5071'); + T('1.1145412703080371165560398973334199e+32', '111454127030803711655603989733341.99'); + T('1.272285349955021228893214839127637825683e+4', '12722.85349955021228893214839127637825683'); + T('9.4315857521037576638711244118020078159357613e+2', '943.15857521037576638711244118020078159357613'); + T('2.130358009562539933673297313517219743395888826178226e+42', '2130358009562539933673297313517219743395888.826178226'); + T('1.788350524694006198162174980034358528e+19', '17883505246940061981.621749800343585280'); + T('1.26860370623505030126846090707878e+22', '12686037062350503012684.6090707878'); + T('2e+0', '2'); + T('7.97066672594e+7', '79706667.2594'); + T('2.0152e+2', '201.52'); + T('5.00637717193322215204e+6', '5006377.17193322215204'); + T('3.01590120278994390749132552334544583e+0', '3.01590120278994390749132552334544583'); + T('3.717693087339892916526272044454e+24', '3717693087339892916526272.044454'); + T('2.54829661524758873955898224553317416437e+3', '2548.29661524758873955898224553317416437'); + T('7.9072523913538861636033504135822e+1', '79.072523913538861636033504135822'); + T('1.866503037113138887457365815904225e+28', '18665030371131388874573658159.04225'); + T('1.3950429e+5', '139504.29'); + T('1.0207356655e+5', '102073.56655'); + T('3.2360853090691879699503619670118780802618636754e+9', '3236085309.0691879699503619670118780802618636754'); + T('5.47452697575793862266267385061152164e+19', '54745269757579386226.6267385061152164'); + T('6.1014855783682768e+15', '6101485578368276.8'); + T('5.31612911388139343797172e+0', '5.31612911388139343797172'); + T('5.91082171916830390736766017658603922e+26', '591082171916830390736766017.658603922'); + T('2.8172659641631766440010830065e+19', '28172659641631766440.010830065'); + T('4.1202100041496082281283466e+5', '412021.00041496082281283466'); + T('1.976856495373097710107538467325977284465274416e+19', '19768564953730977101.07538467325977284465274416'); + T('1.171504106314324317761655700166834e+32', '117150410631432431776165570016683.4'); + T('1.027537448230010431061775478e+10', '10275374482.30010431061775478'); + T('2.341237435879754661702897098867289936e+3', '2341.237435879754661702897098867289936'); + T('1.0588321785973619575e+15', '1058832178597361.9575'); + T('4.2335454826279360873889814771443479909805203261e+39', '4233545482627936087388981477144347990980.5203261'); + T('4.9e+1', '49'); + T('1.4101138066556191e+0', '1.4101138066556191'); + T('1.3899701029842433287999040786946262e+11', '138997010298.42433287999040786946262'); + T('2.14e+1', '21.4'); + T('2.575344258e+6', '2575344.258'); + T('1.3691520780202966734596879557205614425e+23', '136915207802029667345968.79557205614425'); + T('1.079727307987010933702e+19', '10797273079870109337.02'); + T('7.0961299409455830259875773863405485e+3', '7096.1299409455830259875773863405485'); + T('6.071949209634075943049707175059387500694121405338866e+45', '6071949209634075943049707175059387500694121405.338866'); + T('9.688112361029101083207689619288615989e+17', '968811236102910108.3207689619288615989'); + T('2.80923460488873864236890941794609081552183193e+41', '280923460488873864236890941794609081552183.193'); + T('1.83294035069640418182259900657124e+15', '1832940350696404.181822599006571240'); + T('1.330407118626933239746930889885854606102e+7', '13304071.18626933239746930889885854606102'); + T('8.614745245083701401256805923197041044646493828616208e+22', '86147452450837014012568.05923197041044646493828616208'); + T('1.021162949761147474655069846e+15', '1021162949761147.474655069846'); + T('2.22124197e+6', '2221241.97'); + T('1.9269783432665189582619e+12', '1926978343266.5189582619'); + T('2.4458042e+3', '2445.8042'); + T('1.24442787448470619843211196913235e+6', '1244427.87448470619843211196913235'); + T('6.5795027200660039322532e+7', '65795027.200660039322532'); + T('2.124371034489911604376156663456697624832e+36', '2124371034489911604376156663456697624.832'); + T('4.7518554e+3', '4751.8554'); + T('5.577243873330495803e+5', '557724.3873330495803'); + T('1.4411990735775980636079874248393636e+28', '14411990735775980636079874248.393636'); + T('3.532984961283621176064142e+22', '35329849612836211760641.42'); + T('6.41099968454591750260016248126e+14', '641099968454591.750260016248126'); + T('1.876802099566385814736323517234163782171196608110171e+38', '187680209956638581473632351723416378217.1196608110171'); + T('2.712536235933694424272454724983924750851e+6', '2712536.235933694424272454724983924750851'); + T('1.819734474513556013e+8', '181973447.4513556013'); + T('3.0320484961616175305658133728e+14', '303204849616161.75305658133728'); + T('1.9739814652160018980576469874802639653674373e+38', '197398146521600189805764698748026396536.74373'); + T('6.0551922025938302e+10', '60551922025.938302'); + T('3.323596297e+8', '332359629.7'); + T('5.7458544961785021027335254905977754345607e+38', '574585449617850210273352549059777543456.07'); + T('3.43869507567190104395123310443283792e+2', '343.869507567190104395123310443283792'); + T('3.964855738823341944355183015e+26', '396485573882334194435518301.5'); + T('4.75631864588339215e+12', '4756318645883.39215'); + T('3.1e+1', '31'); + T('3.750923398533815812530175e+17', '375092339853381581.2530175'); + T('1.25649942741256e+2', '125.649942741256'); + T('5.4854980319307537893979503491381982942042465844747093e+45', '5485498031930753789397950349138198294204246584.4747093'); + T('1.2940661791311373e+14', '129406617913113.73'); + T('2.90385571775480031587051447549374193061077e+10', '29038557177.5480031587051447549374193061077'); + T('9.1040729817423482924856979976434906087350486636207e+3', '9104.0729817423482924856979976434906087350486636207'); + T('1.57834489e+4', '15783.4489'); + T('2.319e+2', '231.9'); + T('5.522835788261589143141105742945478589362e+16', '55228357882615891.43141105742945478589362'); + T('8.7417851321101080306727e+15', '8741785132110108.0306727'); + T('9.96e+0', '9.96'); + T('1.343046943929639e+14', '134304694392963.9'); + T('2.21577825581227700070639623743724540952019026803e+0', '2.21577825581227700070639623743724540952019026803'); + T('5.64651860171575748936148456309414e+12', '5646518601715.75748936148456309414'); + T('2.71790519140131463205484467292975145e+33', '2717905191401314632054844672929751.450'); + T('2.46128778261687122384096383441327463273586448997789422e+8', '246128778.261687122384096383441327463273586448997789422'); + T('1.51e+0', '1.510'); + T('1.34417538839677e+6', '1344175.38839677'); + T('1.1967386179518011766805527782003e+0', '1.1967386179518011766805527782003'); + T('3.1240079864434111687577043352352970435153e+8', '312400798.64434111687577043352352970435153'); + T('3.125225939e+3', '3125.2259390'); + T('2.6130649e+4', '26130.649'); + T('6.3203802234999588e+14', '632038022349995.88'); + T('1.300191903723243249151204409158028743867e+5', '130019.1903723243249151204409158028743867'); + T('1.5457655328224382807201057293747835e+28', '15457655328224382807201057293.747835'); + T('2.09985076272906724e+4', '20998.50762729067240'); + T('2.2982784786e+6', '2298278.4786'); + T('2.73013672764e+2', '273.013672764'); + T('7.15593e+3', '7155.93'); + T('1.05530065668194919764462354032281e+20', '105530065668194919764.462354032281'); + T('7.067238e+5', '706723.8'); + T('7.101666481976457556024951459e+20', '710166648197645755602.49514590'); + T('1.98927384634532163e+13', '19892738463453.2163'); + T('9.29554688795640972981057180708607820032179861e+37', '92955468879564097298105718070860782003.2179861'); + T('6.357e+2', '635.7'); + T('3.840652373682260866164588121591718905795553491603e+8', '384065237.3682260866164588121591718905795553491603'); + T('9.648833805019588496096876819771292813546e+29', '964883380501958849609687681977.1292813546'); + T('1.01396650233101861694092927e+7', '10139665.0233101861694092927'); + T('1.1003348820123809214388166064277331414286102008e+3', '1100.3348820123809214388166064277331414286102008'); + T('2.36753216678948394164594831443879485957e+22', '23675321667894839416459.4831443879485957'); + T('4.793420545453058844039438100377715257448e+3', '4793.420545453058844039438100377715257448'); + T('2.8594271318287473088601837035675887941e+16', '28594271318287473.08860183703567588794100'); + T('1.6206370599062305392884719395678561e+31', '16206370599062305392884719395678.561'); + T('8.37074216450166132786697142264216365e+10', '83707421645.0166132786697142264216365'); + T('5.72070708e+6', '5720707.08'); + T('3.44337507384153235321301316699932527121036236885e+7', '34433750.7384153235321301316699932527121036236885'); + T('5.1e+1', '51'); + T('2.1015822918024812834120182488777123107013633378167186e+42', '2101582291802481283412018248877712310701363.3378167186'); + T('1.6372374238765434156758128e+15', '1637237423876543.4156758128'); + T('3.3419685364707547838979720464860359274118133481936e+14', '334196853647075.47838979720464860359274118133481936'); + T('2.8068807310597786792e+3', '2806.8807310597786792'); + T('4.845691098565776387667111068909874902599225606796909e+22', '48456910985657763876671.11068909874902599225606796909'); + T('4.63492511826172e+7', '46349251.1826172'); + T('8.25120492e+0', '8.25120492'); + T('2.5871391624943067662520803430464711250480700861462709e+13', '25871391624943.067662520803430464711250480700861462709'); + T('6.862831873483024223892481752e+21', '6862831873483024223892.4817520'); + T('4.270995713570409133606448268988455e+6', '4270995.713570409133606448268988455'); + T('3.21689066758930720484611614541085683569991722e+1', '32.1689066758930720484611614541085683569991722'); + T('4.2006919228915e+6', '4200691.9228915'); + T('2.111647930356982460265657710379876346e+34', '21116479303569824602656577103798763.46'); + T('4.87551174669e+5', '487551.174669'); + T('1.5091257783488078659575278297164846061663847e+26', '150912577834880786595752782.97164846061663847'); + T('1.237701316659693172445623860334e+1', '12.37701316659693172445623860334'); + T('5.3635904e+4', '53635.904'); + T('1.5977967842379292197961047064611986628e+22', '15977967842379292197961.047064611986628'); + T('6.834482866e+0', '6.8344828660'); + T('3.9109e+3', '3910.9'); + T('2.05461117535930705870869638710707996175293568e+5', '205461.117535930705870869638710707996175293568'); + T('1.2070553345143881176541757184e+18', '1207055334514388117.6541757184'); + T('9.04753411072173104408842163075173270844e+2', '904.753411072173104408842163075173270844'); + T('3.639101145152501183326810611536036936191190074e+10', '36391011451.525011833268106115360369361911900740'); + T('1.994669617516385887919849012130839536463335664239342e+50', '199466961751638588791984901213083953646333566423934.2'); + T('9.7856070170986006874778e+3', '9785.6070170986006874778'); + T('6.1871253720389630778712195614969724340856119729e+35', '618712537203896307787121956149697243.40856119729'); + T('1.208e+1', '12.08'); + T('1.198080560663539944762503564196454e+22', '11980805606635399447625.03564196454'); + T('2.5328238533704762297890589157e+22', '25328238533704762297890.5891570'); + T('5.552e+2', '555.2'); + T('2.01773928527273821442e+12', '2017739285272.738214420'); + T('7.1036358731897125539910962e+19', '71036358731897125539.910962'); + T('3.01168351390557005880750701501256409e+28', '30116835139055700588075070150.1256409'); + T('8.873816195265370349563768092711378467e+0', '8.873816195265370349563768092711378467'); + T('5.31989959593655063323434328335073160690174981170061e+33', '5319899595936550633234343283350731.60690174981170061'); + T('1.170061672875437e+9', '1170061672.875437'); + T('2.631e+0', '2.631'); + T('6.992802197718685e+6', '6992802.197718685'); + T('6.4873437617951852808027501577341488220457588954e+3', '6487.3437617951852808027501577341488220457588954'); + T('4.1846611240468792953070738254513e+26', '418466112404687929530707382.54513'); + T('9.65827406708491826272070488217543356756570950537e+5', '965827.406708491826272070488217543356756570950537'); + T('2.680770183874090982680392187869e+13', '26807701838740.909826803921878690'); + T('6.7565808330233111784457537072905e+7', '67565808.330233111784457537072905'); + T('2.38408874905822388315809187608e+17', '238408874905822388.315809187608'); + T('2.447793231118383053396286312152e+27', '2447793231118383053396286312.152'); + T('4.412e+0', '4.412'); + T('6.9222338533800975058347547493064339259e+10', '69222338533.800975058347547493064339259'); + T('1.72125107835943e+12', '1721251078359.4300'); + T('6.607121e+4', '66071.21'); + T('7.03864465898721081635229140790621289565513e+24', '7038644658987210816352291.40790621289565513'); + T('5.7060362541741681216530676958032280095247281014555554e+31', '57060362541741681216530676958032.280095247281014555554'); + T('2.7482039096119173840576395905241256e+28', '27482039096119173840576395905.241256'); + T('6.4362e+2', '643.62'); + T('1.72406543968787e+12', '1724065439687.87'); + T('3.7500096080724676535769717e+8', '375000960.80724676535769717'); + T('3.3903249492445e+4', '33903.249492445'); + T('3.985710962147295694116665218405340482945689e+6', '3985710.962147295694116665218405340482945689'); + T('5.9597233999e+2', '595.972339990'); + T('5.065730949256446196418568178865493e+9', '5065730949.256446196418568178865493'); + T('1.6265740670254208186e+10', '16265740670.254208186000'); + T('2.471885430096e+2', '247.1885430096'); + T('9.764510566491700832916679297457385114302061622402e+27', '9764510566491700832916679297.457385114302061622402'); + T('1.100445271296546289546e+20', '110044527129654628954.6'); + T('8.561528590365492629836625093938e+28', '85615285903654926298366250939.38'); + T('7.31603872157247934437172663482574448376720106618697e+0', '7.31603872157247934437172663482574448376720106618697'); + T('2.75299872462131924258265574524762989786191459317e+7', '27529987.2462131924258265574524762989786191459317'); + T('6.7303660756133592428732533499288191492268777722116295e+8', '673036607.56133592428732533499288191492268777722116295'); + T('5.44277296e+3', '5442.77296'); + T('1.727400264734055421671805513613990565159952e+17', '172740026473405542.16718055136139905651599520'); + T('1.410636835060372309578742278281108273215901435e+42', '1410636835060372309578742278281108273215901.435'); + T('4.92125270107294889416151811122942461554e+6', '4921252.70107294889416151811122942461554'); + T('8.263574210550744338917479e+4', '82635.74210550744338917479'); + T('3.301295895927052871052e+18', '3301295895927052871.052'); + T('2.8345346500631739e+9', '2834534650.0631739'); + T('2.18804350994050349e+5', '218804.350994050349'); + T('3.383e+2', '338.30'); + T('7.581461444218101096345865e+3', '7581.461444218101096345865'); + T('1.584289425751937525462e+15', '1584289425751937.525462'); + T('1.202636592001646399174824119297846262e+35', '120263659200164639917482411929784626.2'); + T('1.72579256998649794e+15', '1725792569986497.94'); + T('1.109e+0', '1.109'); + T('6.40345690864260982946869972537190219e+32', '640345690864260982946869972537190.219'); + T('7.5479229773185178963182361773e+8', '754792297.73185178963182361773'); + T('7.78534635586647281e+15', '7785346355866472.81'); + T('4.5177508859669314863310078725e+4', '45177.508859669314863310078725'); + T('8.488973363671775235458481e+7', '84889733.63671775235458481'); + T('4e+0', '4'); + T('2.160257894346090658681225233774014977725364e+11', '216025789434.6090658681225233774014977725364'); + T('1.607e+1', '16.07'); + T('2.0206643483788145768022873735045719015739162865885754e+19', '20206643483788145768.022873735045719015739162865885754'); + T('1e+0', '1'); + T('6.086027486877e+4', '60860.27486877'); + T('6.49464610960956342354353921e+18', '6494646109609563423.5435392100'); + T('9.043087147437339975894215149e+5', '904308.7147437339975894215149'); + T('9.1415795e+4', '91415.795'); + T('1.27325e+3', '1273.25'); + T('1.1457620373836988522455309158001309e+23', '114576203738369885224553.09158001309'); + T('3.5258358268876488e+3', '3525.8358268876488'); + T('5.903854119252757788054640537784867975213379818757043e+12', '5903854119252.757788054640537784867975213379818757043'); + T('2.85971614953528217489857558639088593436284e+10', '28597161495.352821748985755863908859343628400'); + T('6.32147605459582535823869726726906892032424730199715e+12', '6321476054595.82535823869726726906892032424730199715'); + T('1.66883e+3', '1668.83'); + T('8.77804543701627148053590314981878177298945834797e+34', '87780454370162714805359031498187817.7298945834797'); + T('1.12758900853879813587345336618836e+24', '1127589008538798135873453.366188360'); + T('2.650452875488521637e+15', '2650452875488521.637'); + T('9.81e+1', '98.1'); + T('9.4897220794023859948771e+7', '94897220.794023859948771'); + T('8.2072647415486658112286228544358927e+27', '8207264741548665811228622854.4358927'); + T('1.2676e+1', '12.676'); + T('2.6048528862310648794425199635976449765151357e+40', '26048528862310648794425199635976449765151.357'); + T('1e+0', '1'); + T('2.2e+1', '22'); + T('1.3672902326585293252722797324062e+4', '13672.902326585293252722797324062'); + T('8.2594112194437e+4', '82594.112194437'); + T('0e+0', '0'); + T('1.21895563609362455802176301e+3', '1218.95563609362455802176301'); + T('3.7463929411575183690242615828695666e+19', '37463929411575183690.242615828695666'); + T('3.28403622335683751121762619033739817557846187135037e+37', '32840362233568375112176261903373981755.7846187135037'); + T('7.0543560548522121622953708263633228563e+22', '70543560548522121622953.708263633228563'); + T('1.739819e+3', '1739.819'); + T('2.15324060127001207725970506357881e+19', '21532406012700120772.5970506357881'); + T('2.373532121822929762731612214095513784533409e+29', '237353212182292976273161221409.5513784533409'); + T('4.5883026736677354807679611737881799804e+16', '45883026736677354.807679611737881799804'); + T('2.5996714820346689325468319633061e+21', '2599671482034668932546.8319633061'); + T('8.22641928e+6', '8226419.280'); + T('2.56006014528479284199702229871263269e+20', '256006014528479284199.702229871263269'); + T('4.301260132991159779386275268219519443685e+24', '4301260132991159779386275.268219519443685'); + T('1.052721790360165649330888881e+22', '10527217903601656493308.88881'); + T('6.85257703973809064426443728e+0', '6.85257703973809064426443728'); + T('1.341206836e+5', '134120.6836'); + T('1.293696083809745995580141432072678134217648017629e+25', '12936960838097459955801414.32072678134217648017629'); + T('9.81886611183e+9', '9818866111.83'); + T('1.3e+1', '13'); + T('2.185212134168411755342025405260683400574952243371e+1', '21.8521213416841175534202540526068340057495224337100'); + T('5.09812942277266e+1', '50.9812942277266'); + T('1.15841228150473459450904593187073359993e+37', '11584122815047345945090459318707335999.3'); + T('2.946408e+1', '29.46408'); + T('7.8843253757257e+6', '7884325.3757257'); + T('4.149829532631829e+7', '41498295.32631829'); + T('9.76844406944663415436782518894675931581135161845733e+46', '97684440694466341543678251889467593158113516184.5733'); + T('1.320634109357604978481e+7', '13206341.09357604978481'); + T('1.2300117044692162331376535732386421937e+8', '123001170.44692162331376535732386421937'); + T('1.79343822239530391558796001578394154846951511735e+42', '1793438222395303915587960015783941548469515.11735'); + T('3.46227335968923941657647562338569e+7', '34622733.5968923941657647562338569'); + T('3.6081901133629252234652167e+18', '3608190113362925223.4652167'); + T('3.41769614577210353834283168068494e+24', '3417696145772103538342831.68068494'); + T('1.036693895e+8', '103669389.5'); + T('9.840862048026534392868878603161623504069221701e+27', '9840862048026534392868878603.161623504069221701'); + T('2.56437211238605e+10', '25643721123.86050'); + T('2.645333616435501e+6', '2645333.616435501'); + T('3.75834254646606787747061360998e+1', '37.5834254646606787747061360998'); + T('1.21582101247e+6', '1215821.01247'); + T('5.43e+1', '54.3'); + T('3.1461380403028457753654142032015e+27', '3146138040302845775365414203.2015'); + T('2.73039e+4', '27303.9'); + T('3.349112077000398203735762417e+25', '33491120770003982037357624.170'); + T('2.293912475527946909960963698602754526495697363e+31', '22939124755279469099609636986027.54526495697363'); + T('7.800578368e+8', '780057836.8'); + T('3.503304265046835170500513083432983735273e+28', '35033042650468351705005130834.32983735273'); + T('6.521027589563589728e+9', '6521027589.563589728'); + T('1.26604818273232e+3', '1266.04818273232'); + T('4.5844253800756959854340115e+7', '45844253.800756959854340115'); + T('2.5103887704609158215979351198183e+20', '251038877046091582159.79351198183'); + T('6.5170765018089001398157674630438543e+17', '651707650180890013.98157674630438543'); + T('7.85679659655762637941070216699747e+18', '7856796596557626379.41070216699747'); + T('6.55113755834849587145e+18', '6551137558348495871.45'); + T('1.37856413555592382324487860882977704999616e+32', '137856413555592382324487860882977.704999616'); + T('7.51530486314140193e+5', '751530.486314140193'); + T('1.3712642461229590011e+7', '13712642.4612295900110'); + T('8.945222111405724e+2', '894.5222111405724'); + T('1.74501389497524149414213254563953197394499747444317e+44', '174501389497524149414213254563953197394499747.444317'); + T('7.1583294041845987824307132e+11', '715832940418.45987824307132'); + T('1.282007923703783860923747442697572540049e+13', '12820079237037.83860923747442697572540049'); + T('5.660625174793381639446229222e+11', '566062517479.3381639446229222'); + T('2.094745267e+4', '20947.45267'); + T('8.4497877437844686621097450218313191175e+13', '84497877437844.6866210974502183131911750'); + T('1.7e+1', '17'); + T('1.707217105197425488000493702652714920318758323999364e+23', '170721710519742548800049.3702652714920318758323999364'); + T('2.5487434814078948112667918801256335353406914111636153e+36', '2548743481407894811266791880125633535.3406914111636153'); + T('7.975944255792483246376368330364e+8', '797594425.5792483246376368330364'); + T('1.1038710051127692465453332862048e+20', '110387100511276924654.53332862048'); + T('2.0214122542287381656860062564183697682e+13', '20214122542287.381656860062564183697682'); + T('7.853012025112e+4', '78530.12025112'); + T('7.97061651146928e+3', '7970.61651146928'); + T('1.5712956919727392305361179349388e+10', '15712956919.727392305361179349388'); + T('8.2480059e+3', '8248.0059'); + T('2.71929146422591231877279340940781443961397491e+19', '27192914642259123187.7279340940781443961397491'); + T('2.131e+2', '213.10'); + T('5.53443299017925367e+6', '5534432.99017925367'); + T('9.0599636453e+8', '905996364.53'); + T('2.86841011915001378943e+0', '2.86841011915001378943'); + T('3.50691916034642635201767965866239485795145676493e+28', '35069191603464263520176796586.6239485795145676493'); + T('1.20268235416561427028396813141142129291e+18', '1202682354165614270.283968131411421292910'); + T('4.8878729e+4', '48878.7290'); + T('9.04344910891e+4', '90434.4910891'); + T('3.87232843764031e+2', '387.232843764031'); + T('2.246212201353343e+11', '224621220135.33430'); + T('4.92916234816086643529027167741689023e+4', '49291.6234816086643529027167741689023'); + T('2.1773818234639052045922630496e+22', '21773818234639052045922.630496'); + T('4.78705362683815125848e+0', '4.787053626838151258480'); + T('2.700762078698436846755198719005e+28', '27007620786984368467551987190.05'); + T('3.04897901998664513240359358574664525651334171e+36', '3048979019986645132403593585746645256.51334171'); + T('3.807300704307638993582e+18', '3807300704307638993.582'); + T('7.9846840795076707340124614425632613353204e+3', '7984.6840795076707340124614425632613353204'); + T('6.69918558928e+4', '66991.8558928'); + T('5.11e+1', '51.1'); + T('1.8e+1', '18'); + T('2.629676971e+2', '262.9676971'); + T('6.8402048967767212280354493672372347369800788279670097e+39', '6840204896776721228035449367237234736980.0788279670097'); + T('4.684145127602661593941009299096573092581e+21', '4684145127602661593941.009299096573092581'); + T('1.3010133600355313564757759338788842e+18', '1301013360035531356.4757759338788842'); + T('1.58527974113934732993372979240170059e+30', '1585279741139347329933729792401.70059'); + T('1.8249338722142728063286e+2', '182.49338722142728063286'); + T('1.5941e+0', '1.59410'); + T('2.0337546838170082473539926326926478252219475e+29', '203375468381700824735399263269.26478252219475'); + T('4.626173e+3', '4626.173'); + T('6.04857e+0', '6.04857'); + T('9.55039030589038069713466331e+0', '9.55039030589038069713466331'); + T('3.13977842e+6', '3139778.42'); + T('4.4046554138751e+10', '44046554138.751'); + T('2.27133088062335544441002965096e+25', '22713308806233554444100296.5096'); + T('1.72895143e+4', '17289.5143'); + T('2.59665963383099309886519729836757e+20', '259665963383099309886.5197298367570'); + T('5.42804375404301025317704270939778493719619031067122726e+24', '5428043754043010253177042.70939778493719619031067122726'); + T('4.0526054186532354119711729303068171063825508e+2', '405.26054186532354119711729303068171063825508'); + T('1.26960267394273418410687782475849e+9', '1269602673.94273418410687782475849'); + T('5.657206212494798707700546288522044895183104747814298e+7', '56572062.12494798707700546288522044895183104747814298'); + T('4.80834664047405196104320584899449259286e+21', '4808346640474051961043.20584899449259286'); + T('5.6639294733687553228095e+12', '5663929473368.7553228095'); + T('3.08469899797006019074738182718775120203832280411e+44', '308469899797006019074738182718775120203832280.4110'); + T('6.7324018330891115163882850963905830707247414517739e+20', '673240183308911151638.82850963905830707247414517739'); + T('7.8e+1', '78'); + T('3.7511576e+4', '37511.576'); + T('4.9744737445922007872559411117007e+20', '497447374459220078725.59411117007'); + T('1.4264855114407053894401398660016825255242638071603e+2', '142.64855114407053894401398660016825255242638071603'); + T('1.7972e+1', '17.972'); + T('1.08223075909551421423442320791403363148864e+12', '1082230759095.51421423442320791403363148864'); + T('1.27992032328728568e+16', '12799203232872856.8'); + T('3.23410998756876789482263723951851692122375679e+9', '3234109987.56876789482263723951851692122375679'); + T('8.309058187826413886051933894555524364e+5', '830905.8187826413886051933894555524364'); + T('5.9126904485324084868266487306831291316268437628598e+40', '59126904485324084868266487306831291316268.437628598'); + T('3.579918283412251816470339246643e+16', '35799182834122518.16470339246643'); + T('8.292403288e+1', '82.92403288'); + T('7.39431e+2', '739.431'); + T('3.880259e+2', '388.0259'); + T('8.356612898392420429137009991722851e+18', '8356612898392420429.137009991722851'); + T('9.45261313e+6', '9452613.13'); + T('3.3127850701711548546e+12', '3312785070171.1548546'); + T('7.883085682938156731330453228115e+0', '7.883085682938156731330453228115'); + T('7.8019561298380079335847245119645e+18', '7801956129838007933.5847245119645'); + T('1.162986351331516344668182075630641387e+5', '116298.63513315163446681820756306413870'); + T('1.28721291829552168e+9', '1287212918.29552168'); + T('6.1228832015e+5', '612288.32015'); + T('7.093619563532718270358988194610140484e+4', '70936.19563532718270358988194610140484'); + T('2.301304548870898223195731e+19', '23013045488708982231.95731'); + T('7.8447233503822258690539142204913891e+33', '7844723350382225869053914220491389.1'); + T('1.0090353662689425563590122399240645713114036952885e+26', '100903536626894255635901223.99240645713114036952885'); + T('2.6e+1', '26'); + T('2.015599e+5', '201559.9'); + T('3.1885351403871521971462599368214857856505297484e+33', '3188535140387152197146259936821485.78565052974840'); + T('3.6914534995202995808748962e+15', '3691453499520299.5808748962'); + T('1.2184696326401127654851812133097e+7', '12184696.326401127654851812133097'); + T('1.320231321916575882279815969200269836e+33', '1320231321916575882279815969200269.836'); + T('6.9618612891393774e+15', '6961861289139377.4'); + T('1.413827890310425450368036252350406468114295965313e+11', '141382789031.0425450368036252350406468114295965313'); + T('7.2883e+0', '7.2883'); + T('4.39128379250644938491985214e+17', '439128379250644938.491985214'); + T('4.08749008923147560205987e+12', '4087490089231.47560205987'); + T('1.2963755286285698528172931273502071438656e+36', '1296375528628569852817293127350207143.8656'); + T('1.748593351151123699414e+1', '17.48593351151123699414'); + T('9.734881140813067568986787719510123722831153669e+35', '973488114081306756898678771951012372.2831153669'); + T('2.32721108706388120897763e+11', '232721108706.388120897763'); + T('2.362273992041095475822632722018109548e+22', '23622739920410954758226.327220181095480'); + T('9.127306952822127691560865985866475e+18', '9127306952822127691.560865985866475'); + T('2.4e+1', '24'); + T('9.33725589231422920537799340863789387113892e+31', '93372558923142292053779934086378.9387113892'); + T('2.8683466985317806508353476e+6', '2868346.6985317806508353476'); + T('1.96167065035164685305509057685021959865228913867e+40', '19616706503516468530550905768502195986522.8913867'); + T('2.1513e+3', '2151.3'); + T('3.65316922559843117188159177065637844e+19', '36531692255984311718.8159177065637844'); + T('5.87971958699076454900383524e+21', '5879719586990764549003.835240'); + T('1.29414973913652368531805363331786105e+14', '129414973913652.368531805363331786105'); + T('1.68007422270052611738598e+22', '16800742227005261173859.8'); + T('2.9465419082779898714713969973e+4', '29465.4190827798987147139699730'); + T('2.865456717594117060964538744726484002e+28', '28654567175941170609645387447.26484002'); + T('1.2781496e+0', '1.2781496'); + T('5.395903069e+4', '53959.03069'); + T('2.084656696443025813e+12', '2084656696443.025813'); + T('7.54671420639507228408101673007042651462774881888e+46', '75467142063950722840810167300704265146277488188.8'); + T('1.436685520447262044600029e+14', '143668552044726.2044600029'); + T('6.9e+1', '69'); + T('8.921e+2', '892.10'); + T('2.51196408e+4', '25119.6408'); + T('4.2502325992166027236666111862782e+15', '4250232599216602.7236666111862782'); + T('1.48181688637265610577148846528720697801886e+17', '148181688637265610.577148846528720697801886'); + T('6.578849006577789439801702e+0', '6.578849006577789439801702'); + T('4.346905625146927213132990652e+22', '43469056251469272131329.90652'); + T('5.5037893e+0', '5.5037893'); + T('2.47731675267438120023934691987e+15', '2477316752674381.20023934691987'); + T('3.37487366652276710575333974697197457e+9', '3374873666.52276710575333974697197457'); + T('1.0385387059229329627650733271e+0', '1.0385387059229329627650733271'); + T('9.83004944893186643985967600066862369294062e+17', '983004944893186643.985967600066862369294062'); + T('4.24581658127100743607231740518633563667839856744e+26', '424581658127100743607231740.518633563667839856744'); + T('3.14222253457223322124561584676953981561133e+2', '314.222253457223322124561584676953981561133'); + T('1.1553833141891499623566322265502695096447390786748e+48', '1155383314189149962356632226550269509644739078674.8'); + T('5.2811e+1', '52.811'); + T('9.925202445922857021945001443270353221818473047344e+2', '992.5202445922857021945001443270353221818473047344'); + T('1.5758941e+4', '15758.9410'); + T('6.6630010328564980059488916358767e+30', '6663001032856498005948891635876.7'); + T('1.49898377473153728100588907982263779724221092732531e+44', '149898377473153728100588907982263779724221092.732531'); + T('4.175238908185616536855e+20', '417523890818561653685.5'); + T('1.192838736272799853174021036238e+21', '1192838736272799853174.021036238'); + T('1.145038e+3', '1145.038'); + T('4.0973786626728889384598402998014750474268e+9', '4097378662.6728889384598402998014750474268'); + T('5.5038104e+4', '55038.104'); + T('6.83895535917805849194871290958068199407518e+2', '683.895535917805849194871290958068199407518'); + T('2.9716066182e+0', '2.9716066182'); + T('1e+0', '1'); + T('1.78063428481384259205331358231117935e+0', '1.780634284813842592053313582311179350'); + T('6.277714976103425712837719e+22', '62777149761034257128377.1900'); + T('1.37376909692642287134486582232200547809845780076e+26', '137376909692642287134486582.232200547809845780076'); + T('7.0255659498942180908195e+16', '70255659498942180.908195'); + T('1.36758412477e+6', '1367584.12477'); + T('2.8993016541323392639291954727329719281958174e+23', '289930165413233926392919.54727329719281958174'); + T('2.44e+0', '2.44'); + T('5.39870374073212675286058196342904027304008232e+40', '53987037407321267528605819634290402730400.8232'); + T('6.4507160654825e+9', '6450716065.4825'); + T('1.21664e+3', '1216.64'); + T('3.13108416362400780440861428855476299376486503e+0', '3.13108416362400780440861428855476299376486503'); + T('7.2960499529336221198242592384915903149558006256202995e+17', '729604995293362211.98242592384915903149558006256202995'); + T('5.67239328846178836850536139916737284448973e+0', '5.67239328846178836850536139916737284448973'); + T('7.20020305957519743064e+3', '7200.203059575197430640'); + T('1.85115423780064073715032545790701546649748120114e+27', '1851154237800640737150325457.90701546649748120114'); + T('1.25021250836778893386687012660759710902e+21', '1250212508367788933866.87012660759710902'); + T('2.3323707491301665555664068537483355865980611e+25', '23323707491301665555664068.5374833558659806110'); + T('2.5088131581298507401113299236e+4', '25088.131581298507401113299236'); + T('9.612326850563943155774866e+17', '961232685056394315.5774866'); + T('1.54114517176248297154289225338049499367447824e+22', '15411451717624829715428.9225338049499367447824'); + T('5.22e+0', '5.22'); + T('4.04698305476309533783897e+21', '4046983054763095337838.97'); + T('2.620876536774240989563272117908814902188002596311e+24', '2620876536774240989563272.117908814902188002596311'); + T('1.7290754650750439926458970782158e+10', '17290754650.750439926458970782158'); + T('8.570789332248e+6', '8570789.332248'); + T('1.21e+1', '12.1'); + T('9.749134061639126502181192178140679940393318673720443e+45', '9749134061639126502181192178140679940393318673.720443'); + T('1.26878e+5', '126878.0'); + T('1.2391599841950849289559651456348e+9', '1239159984.1950849289559651456348'); + T('1.72220118427662724614289256133342842086e+22', '17222011842766272461428.9256133342842086'); + T('1.512063585971680294584184272035496e+15', '1512063585971680.294584184272035496'); + + log('\n ' + passed + ' of ' + total + ' tests passed in ' + (+new Date() - start) + ' ms \n'); + return [passed, total];; +})(this.BigNumber); +if (typeof module !== 'undefined' && module.exports) module.exports = count; \ No newline at end of file diff --git a/node_modules/mysql/node_modules/bignumber.js/test/v8-LICENCE.txt b/node_modules/mysql/node_modules/bignumber.js/test/v8-LICENCE.txt new file mode 100644 index 0000000..425556c --- /dev/null +++ b/node_modules/mysql/node_modules/bignumber.js/test/v8-LICENCE.txt @@ -0,0 +1,45 @@ +Some of the test cases in this directory are taken from the v8 source code + for which the licence is below. + +2008: toPrecision.js + + +2010: abs.js pow.js + + +2011: ceil.js floor.js round.js + + +Licence +======= + + Copyright 2008/2010/2011 the V8 project authors. All rights reserved. + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are + met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + * Neither the name of Google Inc. nor the names of its + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + + + diff --git a/node_modules/mysql/node_modules/require-all/.Readme.md.un~ b/node_modules/mysql/node_modules/require-all/.Readme.md.un~ new file mode 100644 index 0000000..2b299d8 Binary files /dev/null and b/node_modules/mysql/node_modules/require-all/.Readme.md.un~ differ diff --git a/node_modules/mysql/node_modules/require-all/.index.js.un~ b/node_modules/mysql/node_modules/require-all/.index.js.un~ new file mode 100644 index 0000000..8d1fbd9 Binary files /dev/null and b/node_modules/mysql/node_modules/require-all/.index.js.un~ differ diff --git a/node_modules/mysql/node_modules/require-all/Readme.md b/node_modules/mysql/node_modules/require-all/Readme.md new file mode 100644 index 0000000..60a7a5c --- /dev/null +++ b/node_modules/mysql/node_modules/require-all/Readme.md @@ -0,0 +1,16 @@ +# require-all + +An easy way to require all files within a directory. + +## Usage + +```js +var controllers = require('require-all')({ + dirname: __dirname + '/controllers', + filter: /(.+Controller)\.js$/, +}); + +// controllers now is an object with references to all modules matching the filter +// for example: +// { HomeController: function HomeController() {...}, ...} +``` diff --git a/node_modules/mysql/node_modules/require-all/index.js b/node_modules/mysql/node_modules/require-all/index.js new file mode 100644 index 0000000..71084ba --- /dev/null +++ b/node_modules/mysql/node_modules/require-all/index.js @@ -0,0 +1,25 @@ +var fs = require('fs'); + +module.exports = function requireAll(options) { + var files = fs.readdirSync(options.dirname); + var modules = {}; + + files.forEach(function(file) { + var filepath = options.dirname + '/' + file; + if (fs.statSync(filepath).isDirectory()) { + modules[file] = requireAll({ + dirname: filepath, + filter: options.filter + }); + + } else { + var match = file.match(options.filter); + if (!match) return; + + modules[match[1]] = require(filepath); + } + }); + + return modules; +}; + diff --git a/node_modules/mysql/node_modules/require-all/package.json b/node_modules/mysql/node_modules/require-all/package.json new file mode 100644 index 0000000..279ec27 --- /dev/null +++ b/node_modules/mysql/node_modules/require-all/package.json @@ -0,0 +1,27 @@ +{ + "author": { + "name": "Felix Geisendörfer", + "email": "felix@debuggable.com", + "url": "http://debuggable.com/" + }, + "name": "require-all", + "description": "An easy way to require all files within a directory.", + "version": "0.0.3", + "repository": { + "url": "" + }, + "main": "./index", + "engines": { + "node": "*" + }, + "dependencies": {}, + "devDependencies": {}, + "readme": "# require-all\n\nAn easy way to require all files within a directory.\n\n## Usage\n\n```js\nvar controllers = require('require-all')({\n dirname: __dirname + '/controllers',\n filter: /(.+Controller)\\.js$/,\n});\n\n// controllers now is an object with references to all modules matching the filter\n// for example:\n// { HomeController: function HomeController() {...}, ...}\n```\n", + "readmeFilename": "Readme.md", + "_id": "require-all@0.0.3", + "dist": { + "shasum": "1642a6620b474f20f1737f12d9a025acbfaaec28" + }, + "_from": "require-all@0.0.3", + "_resolved": "https://registry.npmjs.org/require-all/-/require-all-0.0.3.tgz" +} diff --git a/node_modules/mysql/node_modules/require-all/test/.test.js.un~ b/node_modules/mysql/node_modules/require-all/test/.test.js.un~ new file mode 100644 index 0000000..51d49cd Binary files /dev/null and b/node_modules/mysql/node_modules/require-all/test/.test.js.un~ differ diff --git a/node_modules/mysql/node_modules/require-all/test/controllers/main-Controller.js b/node_modules/mysql/node_modules/require-all/test/controllers/main-Controller.js new file mode 100644 index 0000000..355ce40 --- /dev/null +++ b/node_modules/mysql/node_modules/require-all/test/controllers/main-Controller.js @@ -0,0 +1,4 @@ +exports.index = 1; +exports.show = 2; +exports.add = 3; +exports.edit = 4; diff --git a/node_modules/mysql/node_modules/require-all/test/controllers/notthis.js b/node_modules/mysql/node_modules/require-all/test/controllers/notthis.js new file mode 100644 index 0000000..8ac88c5 --- /dev/null +++ b/node_modules/mysql/node_modules/require-all/test/controllers/notthis.js @@ -0,0 +1 @@ +exports.yes = 'no'; diff --git a/node_modules/mysql/node_modules/require-all/test/controllers/other-Controller.js b/node_modules/mysql/node_modules/require-all/test/controllers/other-Controller.js new file mode 100644 index 0000000..aec8f24 --- /dev/null +++ b/node_modules/mysql/node_modules/require-all/test/controllers/other-Controller.js @@ -0,0 +1,2 @@ +exports.index = 1; +exports.show = 'nothing' diff --git a/node_modules/mysql/node_modules/require-all/test/mydir/foo.js b/node_modules/mysql/node_modules/require-all/test/mydir/foo.js new file mode 100644 index 0000000..cb1c2c0 --- /dev/null +++ b/node_modules/mysql/node_modules/require-all/test/mydir/foo.js @@ -0,0 +1 @@ +module.exports = 'bar'; diff --git a/node_modules/mysql/node_modules/require-all/test/mydir/hello.js b/node_modules/mysql/node_modules/require-all/test/mydir/hello.js new file mode 100644 index 0000000..b1d17c1 --- /dev/null +++ b/node_modules/mysql/node_modules/require-all/test/mydir/hello.js @@ -0,0 +1,2 @@ +exports.world = true; +exports.universe = 42; diff --git a/node_modules/mysql/node_modules/require-all/test/mydir/sub/.config.json.un~ b/node_modules/mysql/node_modules/require-all/test/mydir/sub/.config.json.un~ new file mode 100644 index 0000000..0029e64 Binary files /dev/null and b/node_modules/mysql/node_modules/require-all/test/mydir/sub/.config.json.un~ differ diff --git a/node_modules/mysql/node_modules/require-all/test/mydir/sub/config.json b/node_modules/mysql/node_modules/require-all/test/mydir/sub/config.json new file mode 100644 index 0000000..d2b5939 --- /dev/null +++ b/node_modules/mysql/node_modules/require-all/test/mydir/sub/config.json @@ -0,0 +1,4 @@ +{ + "settingA": "A", + "settingB": "B" +} diff --git a/node_modules/mysql/node_modules/require-all/test/mydir/sub/no.2js b/node_modules/mysql/node_modules/require-all/test/mydir/sub/no.2js new file mode 100644 index 0000000..ec01c2c --- /dev/null +++ b/node_modules/mysql/node_modules/require-all/test/mydir/sub/no.2js @@ -0,0 +1 @@ +module.exports = true; diff --git a/node_modules/mysql/node_modules/require-all/test/mydir/sub/yes.js b/node_modules/mysql/node_modules/require-all/test/mydir/sub/yes.js new file mode 100644 index 0000000..ec01c2c --- /dev/null +++ b/node_modules/mysql/node_modules/require-all/test/mydir/sub/yes.js @@ -0,0 +1 @@ +module.exports = true; diff --git a/node_modules/mysql/node_modules/require-all/test/test.js b/node_modules/mysql/node_modules/require-all/test/test.js new file mode 100644 index 0000000..025af0d --- /dev/null +++ b/node_modules/mysql/node_modules/require-all/test/test.js @@ -0,0 +1,38 @@ +var assert = require('assert'); +var requireAll = require('..'); + +var controllers = requireAll({ + dirname: __dirname + '/controllers', + filter: /(.+Controller)\.js$/ +}); + +assert.deepEqual(controllers, { + 'main-Controller': { + index: 1, + show: 2, + add: 3, + edit: 4 + }, + + 'other-Controller': { + index: 1, + show: 'nothing' + } +}); + + +if (process.version > 'v0.6.0') { + var mydir = requireAll({ + dirname: __dirname + '/mydir', + filter: /(.+)\.(js|json)$/ + }); + + assert.deepEqual(mydir, { + foo: 'bar', + hello: { world: true, universe: 42 }, + sub: { + config: { settingA: 'A', settingB: 'B' }, + yes: true + } + }); +} diff --git a/node_modules/mysql/package.json b/node_modules/mysql/package.json new file mode 100644 index 0000000..bdb61a1 --- /dev/null +++ b/node_modules/mysql/package.json @@ -0,0 +1,34 @@ +{ + "author": { + "name": "Felix Geisendörfer", + "email": "felix@debuggable.com", + "url": "http://debuggable.com/" + }, + "name": "mysql", + "description": "A node.js driver for mysql. It is written in JavaScript, does not require compiling, and is 100% MIT licensed.", + "version": "2.0.0-alpha7", + "repository": { + "url": "" + }, + "main": "./index", + "scripts": { + "test": "make test" + }, + "engines": { + "node": "*" + }, + "dependencies": { + "require-all": "0.0.3", + "bignumber.js": "1.0.1" + }, + "devDependencies": { + "utest": "0.0.6", + "urun": "0.0.6", + "underscore": "1.3.1" + }, + "optionalDependencies": {}, + "readme": "# node-mysql\n\n[![Build Status](https://secure.travis-ci.org/felixge/node-mysql.png)](http://travis-ci.org/felixge/node-mysql)\n\n## Install\n\n```bash\nnpm install mysql@2.0.0-alpha7\n```\n\nDespite the alpha tag, this is the recommended version for new applications.\nFor information about the previous 0.9.x releases, visit the [v0.9 branch][].\n\nSometimes I may also ask you to install the latest version from Github to check\nif a bugfix is working. In this case, please do:\n\n```\nnpm install git://github.com/felixge/node-mysql.git\n```\n\n[v0.9 branch]: https://github.com/felixge/node-mysql/tree/v0.9\n\n## Introduction\n\nThis is a node.js driver for mysql. It is written in JavaScript, does not\nrequire compiling, and is 100% MIT licensed.\n\nHere is an example on how to use it:\n\n```js\nvar mysql = require('mysql');\nvar connection = mysql.createConnection({\n host : 'localhost',\n user : 'me',\n password : 'secret',\n});\n\nconnection.connect();\n\nconnection.query('SELECT 1 + 1 AS solution', function(err, rows, fields) {\n if (err) throw err;\n\n console.log('The solution is: ', rows[0].solution);\n});\n\nconnection.end();\n```\n\nFrom this example, you can learn the following:\n\n* Every method you invoke on a connection is queued and executed in sequence.\n* Closing the connection is done using `end()` which makes sure all remaining\n queries are executed before sending a quit packet to the mysql server.\n\n## Contributors\n\nThanks goes to the people who have contributed code to this module, see the\n[GitHub Contributors page][].\n\n[GitHub Contributors page]: https://github.com/felixge/node-mysql/graphs/contributors\n\nAdditionally I'd like to thank the following people:\n\n* [Andrey Hristov][] (Oracle) - for helping me with protocol questions.\n* [Ulf Wendel][] (Oracle) - for helping me with protocol questions.\n\n[Ulf Wendel]: http://blog.ulf-wendel.de/\n[Andrey Hristov]: http://andrey.hristov.com/\n\n## Sponsors\n\nThe following companies have supported this project financially, allowing me to\nspend more time on it (ordered by time of contribution):\n\n* [Transloadit](http://transloadit.com) (my startup, we do file uploading &\n video encoding as a service, check it out)\n* [Joyent](http://www.joyent.com/)\n* [pinkbike.com](http://pinkbike.com/)\n* [Holiday Extras](http://www.holidayextras.co.uk/) (they are [hiring](http://join.holidayextras.co.uk/vacancy/senior-web-technologist/))\n* [Newscope](http://newscope.com/) (they are [hiring](http://www.newscope.com/stellenangebote))\n\nIf you are interested in sponsoring a day or more of my time, please\n[get in touch][].\n\n[get in touch]: http://felixge.de/consulting\n\n## Community\n\nIf you'd like to discuss this module, or ask questions about it, please use one\nof the following:\n\n* **Mailing list**: https://groups.google.com/forum/#!forum/node-mysql\n* **IRC Channel**: #node.js (on freenode.net, I pay attention to any message\n including the term `mysql`)\n\n## Establishing connections\n\nThe recommended way to establish a connection is this:\n\n```js\nvar mysql = require('mysql');\nvar connection = mysql.createConnection({\n host : 'example.org',\n user : 'bob',\n password : 'secret',\n});\n\nconnection.connect(function(err) {\n // connected! (unless `err` is set)\n});\n```\n\nHowever, a connection can also be implicitly established by invoking a query:\n\n```js\nvar mysql = require('mysql');\nvar connection = mysql.createConnection(...);\n\nconnection.query('SELECT 1', function(err, rows) {\n // connected! (unless `err` is set)\n});\n```\n\nDepending on how you like to handle your errors, either method may be\nappropriate. Any type of connection error (handshake or network) is considered\na fatal error, see the [Error Handling](#error-handling) section for more\ninformation.\n\n## Connection options\n\nWhen establishing a connection, you can set the following options:\n\n* `host`: The hostname of the database you are connecting to. (Default:\n `localhost`)\n* `port`: The port number to connect to. (Default: `3306`)\n* `socketPath`: The path to a unix domain socket to connect to. When used `host`\n and `port` are ignored.\n* `user`: The MySQL user to authenticate as.\n* `password`: The password of that MySQL user.\n* `database`: Name of the database to use for this connection (Optional).\n* `charset`: The charset for the connection. (Default: `'UTF8_GENERAL_CI'`)\n* `timezone`: The timezone used to store local dates. (Default: `'local'`)\n* `insecureAuth`: Allow connecting to MySQL instances that ask for the old\n (insecure) authentication method. (Default: `false`)\n* `typeCast`: Determines if column values should be converted to native\n JavaScript types. (Default: `true`)\n* `queryFormat`: A custom query format function. See [Custom format](#custom-format).\n* `supportBigNumbers`: When dealing with big numbers in the database, you should enable this option.\n* `debug`: Prints protocol details to stdout. (Default: `false`)\n* `multipleStatements`: Allow multiple mysql statements per query. Be careful\n with this, it exposes you to SQL injection attacks. (Default: `false`)\n* `flags`: List of connection flags to use other than the default ones. It is\n also possible to blacklist default ones. For more information, check [Connection Flags](#connection-flags).\n\nIn addition to passing these options as an object, you can also use a url\nstring. For example:\n\n```js\nvar connection = mysql.createConnection('mysql://user:pass@host/db?debug=true&charset=BIG5_CHINESE_CI&timezone=-0700');\n```\n\nNote: The query values are first attempted to be parsed as JSON, and if that\nfails assumed to be plaintext strings.\n\n## Terminating connections\n\nThere are two ways to end a connection. Terminating a connection gracefully is\ndone by calling the `end()` method:\n\n```js\nconnection.end(function(err) {\n // The connection is terminated now\n});\n```\n\nThis will make sure all previously enqueued queries are still before sending a\n`COM_QUIT` packet to the MySQL server. If a fatal error occurs before the\n`COM_QUIT` packet can be sent, an `err` argument will be provided to the\ncallback, but the connection will be terminated regardless of that.\n\nAn alternative way to end the connection is to call the `destroy()` method.\nThis will cause an immediate termination of the underlying socket.\nAdditionally `destroy()` guarantees that no more events or callbacks will be\ntriggered for the connection.\n\n```js\nconnection.destroy();\n```\n\nUnlike `end()` the `destroy()` method does not take a callback argument.\n\n## Pooling connections\n\nConnections can be pooled to ease sharing a single connection, or managing\nmultiple connections.\n\n```js\nvar mysql = require('mysql');\nvar pool = mysql.createPool({\n host : 'example.org',\n user : 'bob',\n password : 'secret'\n});\n\npool.getConnection(function(err, connection) {\n // connected! (unless `err` is set)\n});\n```\n\nWhen you are done with a connection, just call `connection.end()` and the\nconnection will return to the pool, ready to be used again by someone else.\n\n```js\nvar mysql = require('mysql');\nvar pool = mysql.createPool(...);\n\npool.getConnection(function(err, connection) {\n // Use the connection\n connection.query( 'SELECT something FROM sometable', function(err, rows) {\n // And done with the connection.\n connection.end();\n\n // Don't use the connection here, it has been returned to the pool.\n });\n});\n```\n\nIf you would like to close the connection and remove it from the pool, use\n`connection.destroy()` instead. The pool will create a new connection the next\ntime one is needed.\n\nConnections are lazily created by the pool. If you configure the pool to allow\nup to 100 connections, but only ever use 5 simultaneously, only 5 connections\nwill be made. Connections are also cycled round-robin style, with connections\nbeing taken from the top of the pool and returning to the bottom.\n\n## Pool options\n\nPools accept all the same options as a connection. When creating a new\nconnection, the options are simply passed to the connection constructor. In\naddition to those options pools accept a few extras:\n\n* `createConnection`: The function to use to create the connection. (Default:\n `mysql.createConnection`)\n* `waitForConnections`: Determines the pool's action when no connections are\n available and the limit has been reached. If `true`, the pool will queue the\n connection request and call it when one becomes available. If `false`, the\n pool will immediately call back with an error. (Default: `true`)\n* `connectionLimit`: The maximum number of connections to create at once.\n (Default: `10`)\n\n## Switching users / altering connection state\n\nMySQL offers a changeUser command that allows you to alter the current user and\nother aspects of the connection without shutting down the underlying socket:\n\n```js\nconnection.changeUser({user : 'john'}, function(err) {\n if (err) throw err;\n});\n```\n\nThe available options for this feature are:\n\n* `user`: The name of the new user (defaults to the previous one).\n* `password`: The password of the new user (defaults to the previous one).\n* `charset`: The new charset (defaults to the previous one).\n* `database`: The new database (defaults to the previous one).\n\nA sometimes useful side effect of this functionality is that this function also\nresets any connection state (variables, transactions, etc.).\n\nErrors encountered during this operation are treated as fatal connection errors\nby this module.\n\n## Server disconnects\n\nYou may lose the connection to a MySQL server due to network problems, the\nserver timing you out, or the server crashing. All of these events are\nconsidered fatal errors, and will have the `err.code =\n'PROTOCOL_CONNECTION_LOST'`. See the [Error Handling](#error-handling) section\nfor more information.\n\nThe best way to handle such unexpected disconnects is shown below:\n\n```js\nfunction handleDisconnect(connection) {\n connection.on('error', function(err) {\n if (!err.fatal) {\n return;\n }\n\n if (err.code !== 'PROTOCOL_CONNECTION_LOST') {\n throw err;\n }\n\n console.log('Re-connecting lost connection: ' + err.stack);\n\n connection = mysql.createConnection(connection.config);\n handleDisconnect(connection);\n connection.connect();\n });\n}\n\nhandleDisconnect(connection);\n```\n\nAs you can see in the example above, re-connecting a connection is done by\nestablishing a new connection. Once terminated, an existing connection object\ncannot be re-connected by design.\n\nWith Pool, disconnected connections will be removed from the pool freeing up\nspace for a new connection to be created on the next getConnection call.\n\n## Escaping query values\n\nIn order to avoid SQL Injection attacks, you should always escape any user\nprovided data before using it inside a SQL query. You can do so using the\n`connection.escape()` method:\n\n```js\nvar userId = 'some user provided value';\nvar sql = 'SELECT * FROM users WHERE id = ' + connection.escape(userId);\nconnection.query(sql, function(err, results) {\n // ...\n});\n```\n\nAlternatively, you can use `?` characters as placeholders for values you would\nlike to have escaped like this:\n\n```js\nconnection.query('SELECT * FROM users WHERE id = ?', [userId], function(err, results) {\n // ...\n});\n```\n\nThis looks similar to prepared statements in MySQL, however it really just uses\nthe same `connection.escape()` method internally.\n\nDifferent value types are escaped differently, here is how:\n\n* Numbers are left untouched\n* Booleans are converted to `true` / `false` strings\n* Date objects are converted to `'YYYY-mm-dd HH:ii:ss'` strings\n* Buffers are converted to hex strings, e.g. `X'0fa5'`\n* Strings are safely escaped\n* Arrays are turned into list, e.g. `['a', 'b']` turns into `'a', 'b'`\n* Nested arrays are turned into grouped lists (for bulk inserts), e.g. `[['a',\n 'b'], ['c', 'd']]` turns into `('a', 'b'), ('c', 'd')`\n* Objects are turned into `key = 'val'` pairs. Nested objects are cast to\n strings.\n* `undefined` / `null` are converted to `NULL`\n* `NaN` / `Infinity` are left as-is. MySQL does not support these, and trying\n to insert them as values will trigger MySQL errors until they implement\n support.\n\nIf you paid attention, you may have noticed that this escaping allows you\nto do neat things like this:\n\n```js\nvar post = {id: 1, title: 'Hello MySQL'};\nvar query = connection.query('INSERT INTO posts SET ?', post, function(err, result) {\n // Neat!\n});\nconsole.log(query.sql); // INSERT INTO posts SET `id` = 1, `title` = 'Hello MySQL'\n\n```\n\nIf you feel the need to escape queries by yourself, you can also use the escaping\nfunction directly:\n\n```js\nvar query = \"SELECT * FROM posts WHERE title=\" + mysql.escape(\"Hello MySQL\");\n\nconsole.log(query); // SELECT * FROM posts WHERE title='Hello MySQL'\n```\n\n## Escaping query identifiers\n\nIf you can't trust an SQL identifier (database / table / column name) because it is\nprovided by a user, you should escape it with `mysql.escapeId(identifier)` like this:\n\n```js\nvar sorter = 'date';\nvar query = 'SELECT * FROM posts ORDER BY ' + mysql.escapeId(sorter);\n\nconsole.log(query); // SELECT * FROM posts ORDER BY `date`\n```\n\nIt also supports adding qualified identifiers. It will escape both parts.\n\n```js\nvar sorter = 'date';\nvar query = 'SELECT * FROM posts ORDER BY ' + mysql.escapeId('posts.' + sorter);\n\nconsole.log(query); // SELECT * FROM posts ORDER BY `posts`.`date`\n```\n\nWhen you pass an Object to `.escape()` or `.query()`, `.escapeId()` is used to avoid SQL\ninjection in object keys.\n\n### Custom format\n\nIf you prefer to have another type of query escape format, there's a connection configuration option you can use to define a custom format function. You can access the connection object if you want to use the built-in `.escape()` or any other connection function.\n\nHere's an example of how to implement another format:\n\n```js\nconnection.config.queryFormat = function (query, values) {\n if (!values) return query;\n return query.replace(/\\:(\\w+)/g, function (txt, key) {\n if (values.hasOwnProperty(key)) {\n return this.escape(values[key]);\n }\n return txt;\n }.bind(this));\n};\n\nconnection.query(\"UPDATE posts SET title = :title\", { title: \"Hello MySQL\" });\n```\n\n## Getting the id of an inserted row\n\nIf you are inserting a row into a table with an auto increment primary key, you\ncan retrieve the insert id like this:\n\n```js\nconnection.query('INSERT INTO posts SET ?', {title: 'test'}, function(err, result) {\n if (err) throw err;\n\n console.log(result.insertId);\n});\n```\n\nWhen dealing with big numbers (above JavaScript Number precision limit), you should\nconsider enabling `supportBigNumbers` option to be able to read the insert id as a\nstring, otherwise it will throw.\n\nThis option is also required when fetching big numbers from the database, otherwise\nyou will get values rounded to hundreds or thousands due to the precision limit.\n\n## Executing queries in parallel\n\nThe MySQL protocol is sequential, this means that you need multiple connections\nto execute queries in parallel. You can use a Pool to manage connections, one\nsimple approach is to create one connection per incoming http request.\n\n## Streaming query rows\n\nSometimes you may want to select large quantities of rows and process each of\nthem as they are received. This can be done like this:\n\n```js\nvar query = connection.query('SELECT * FROM posts');\nquery\n .on('error', function(err) {\n // Handle error, an 'end' event will be emitted after this as well\n })\n .on('fields', function(fields) {\n // the field packets for the rows to follow\n })\n .on('result', function(row) {\n // Pausing the connnection is useful if your processing involves I/O\n connection.pause();\n\n processRow(row, function() {\n connection.resume();\n });\n })\n .on('end', function() {\n // all rows have been received\n });\n```\n\nPlease note a few things about the example above:\n\n* Usually you will want to receive a certain amount of rows before starting to\n throttle the connection using `pause()`. This number will depend on the\n amount and size of your rows.\n* `pause()` / `resume()` operate on the underlying socket and parser. You are\n guaranteed that no more `'result'` events will fire after calling `pause()`.\n* You MUST NOT provide a callback to the `query()` method when streaming rows.\n* The `'result'` event will fire for both rows as well as OK packets\n confirming the success of a INSERT/UPDATE query.\n\nAdditionally you may be interested to know that it is currently not possible to\nstream individual row columns, they will always be buffered up entirely. If you\nhave a good use case for streaming large fields to and from MySQL, I'd love to\nget your thoughts and contributions on this.\n\n## Multiple statement queries\n\nSupport for multiple statements is disabled for security reasons (it allows for\nSQL injection attacks if values are not properly escaped). To use this feature\nyou have to enable it for your connection:\n\n```js\nvar connection = mysql.createConnection({multipleStatements: true});\n```\n\nOnce enabled, you can execute multiple statement queries like any other query:\n\n```js\nconnection.query('SELECT 1; SELECT 2', function(err, results) {\n if (err) throw err;\n\n // `results` is an array with one element for every statement in the query:\n console.log(results[0]); // [{1: 1}]\n console.log(results[1]); // [{2: 2}]\n});\n```\n\nAdditionally you can also stream the results of multiple statement queries:\n\n```js\nvar query = connection.query('SELECT 1; SELECT 2');\n\nquery\n .on('fields', function(fields, index) {\n // the fields for the result rows that follow\n })\n .on('result', function(row, index) {\n // index refers to the statement this result belongs to (starts at 0)\n });\n```\n\nIf one of the statements in your query causes an error, the resulting Error\nobject contains a `err.index` property which tells you which statement caused\nit. MySQL will also stop executing any remaining statements when an error\noccurs.\n\nPlease note that the interface for streaming multiple statement queries is\nexperimental and I am looking forward to feedback on it.\n\n## Stored procedures\n\nYou can call stored procedures from your queries as with any other mysql driver.\nIf the stored procedure produces several result sets, they are exposed to you\nthe same way as the results for multiple statement queries.\n\n## Joins with overlapping column names\n\nWhen executing joins, you are likely to get result sets with overlapping column\nnames.\n\nBy default, node-mysql will overwrite colliding column names in the\norder the columns are received from MySQL, causing some of the received values\nto be unavailable.\n\nHowever, you can also specify that you want your columns to be nested below\nthe table name like this:\n\n```js\nvar options = {sql: '...', nestTables: true};\nconnection.query(options, function(err, results) {\n /* results will be an array like this now:\n [{\n table1: {\n fieldA: '...',\n fieldB: '...',\n },\n table2: {\n fieldA: '...',\n fieldB: '...',\n },\n }, ...]\n */\n});\n```\n\nOr use a string separator to have your results merged.\n\n```js\nvar options = {sql: '...', nestTables: '_'};\nconnection.query(options, function(err, results) {\n /* results will be an array like this now:\n [{\n table1_fieldA: '...',\n table1_fieldB: '...',\n table2_fieldA: '...',\n table2_fieldB: '...'\n }, ...]\n */\n});\n```\n\n## Error handling\n\nThis module comes with a consistent approach to error handling that you should\nreview carefully in order to write solid applications.\n\nAll errors created by this module are instances of the JavaScript [Error][]\nobject. Additionally they come with two properties:\n\n* `err.code`: Either a [MySQL server error][] (e.g.\n `'ER_ACCESS_DENIED_ERROR'`), a node.js error (e.g. `'ECONNREFUSED'`) or an\n internal error (e.g. `'PROTOCOL_CONNECTION_LOST'`).\n* `err.fatal`: Boolean, indicating if this error is terminal to the connection\n object.\n\n[Error]: https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Error\n[MySQL server error]: http://dev.mysql.com/doc/refman/5.5/en/error-messages-server.html\n\nFatal errors are propagated to *all* pending callbacks. In the example below, a\nfatal error is triggered by trying to connect to an invalid port. Therefore the\nerror object is propagated to both pending callbacks:\n\n```js\nvar connection = require('mysql').createConnection({\n port: 84943, // WRONG PORT\n});\n\nconnection.connect(function(err) {\n console.log(err.code); // 'ECONNREFUSED'\n console.log(err.fatal); // true\n});\n\nconnection.query('SELECT 1', function(err) {\n console.log(err.code); // 'ECONNREFUSED'\n console.log(err.fatal); // true\n});\n```\n\nNormal errors however are only delegated to the callback they belong to. So in\nthe example below, only the first callback receives an error, the second query\nworks as expected:\n\n```js\nconnection.query('USE name_of_db_that_does_not_exist', function(err, rows) {\n console.log(err.code); // 'ER_BAD_DB_ERROR'\n});\n\nconnection.query('SELECT 1', function(err, rows) {\n console.log(err); // null\n console.log(rows.length); // 1\n});\n```\n\nLast but not least: If a fatal errors occurs and there are no pending\ncallbacks, or a normal error occurs which has no callback belonging to it, the\nerror is emitted as an `'error'` event on the connection object. This is\ndemonstrated in the example below:\n\n```js\nconnection.on('error', function(err) {\n console.log(err.code); // 'ER_BAD_DB_ERROR'\n});\n\nconnection.query('USE name_of_db_that_does_not_exist');\n```\n\nNote: `'error'` are special in node. If they occur without an attached\nlistener, a stack trace is printed and your process is killed.\n\n**tl;dr:** This module does not want you to deal with silent failures. You\nshould always provide callbacks to your method calls. If you want to ignore\nthis advice and suppress unhandled errors, you can do this:\n\n```js\n// I am Chuck Norris:\nconnection.on('error', function() {});\n```\n\n## Exception Safety\n\nThis module is exception safe. That means you can continue to use it, even if\none of your callback functions throws an error which you're catching using\n'uncaughtException' or a domain.\n\n## Type casting\n\nFor your convenience, this driver will cast mysql types into native JavaScript\ntypes by default. The following mappings exist:\n\n### Number\n\n* TINYINT\n* SMALLINT\n* INT\n* MEDIUMINT\n* YEAR\n* FLOAT\n* DOUBLE\n\n### Date\n\n* TIMESTAMP\n* DATE\n* DATETIME\n\n### Buffer\n\n* TINYBLOB\n* MEDIUMBLOB\n* LONGBLOB\n* BLOB\n* BINARY\n* VARBINARY\n* BIT (last byte will be filled with 0 bits as necessary)\n\n### String\n\n* CHAR\n* VARCHAR\n* TINYTEXT\n* MEDIUMTEXT\n* LONGTEXT\n* TEXT\n* ENUM\n* SET\n* DECIMAL (may exceed float precision)\n* BIGINT (may exceed float precision)\n* TIME (could be mapped to Date, but what date would be set?)\n* GEOMETRY (never used those, get in touch if you do)\n\nIt is not recommended (and may go away / change in the future) to disable type\ncasting, but you can currently do so on either the connection:\n\n```js\nvar connection = require('mysql').createConnection({typeCast: false});\n```\n\nOr on the query level:\n\n```js\nvar options = {sql: '...', typeCast: false};\nvar query = connection.query(options, function(err, results) {\n\n}):\n```\n\nYou can also pass a function and handle type casting yourself. You're given some\ncolumn information like database, table and name and also type and length. If you\njust want to apply a custom type casting to a specific type you can do it and then\nfallback to the default. Here's an example of converting `TINYINT(1)` to boolean:\n\n```js\nconnection.query({\n sql: '...',\n typeCast: function (field, next) {\n if (field.type == 'TINY' && field.length == 1) {\n return (field.string() == '1'); // 1 = true, 0 = false\n }\n return next();\n }\n})\n```\n\nIf you need a buffer there's also a `.buffer()` function and also a `.geometry()` one\nboth used by the default type cast that you can use.\n\n## Connection Flags\n\nIf, for any reason, you would like to change the default connection flags, you\ncan use the connection option `flags`. Pass a string with a comma separated list\nof items to add to the default flags. If you don't want a default flag to be used\nprepend the flag with a minus sign. To add a flag that is not in the default list, don't prepend it with a plus sign, just write the flag name (case insensitive).\n\n**Please note that some available flags that are not default are still not supported\n(e.g.: SSL, Compression). Use at your own risk.**\n\n### Example\n\nThe next example blacklists FOUND_ROWS flag from default connection flags.\n\n```js\nvar connection = mysql.createConnection(\"mysql://localhost/test?flags=-FOUND_ROWS\")\n```\n\n### Default Flags\n\n- LONG_PASSWORD\n- FOUND_ROWS\n- LONG_FLAG\n- CONNECT_WITH_DB\n- ODBC\n- LOCAL_FILES\n- IGNORE_SPACE\n- PROTOCOL_41\n- IGNORE_SIGPIPE\n- TRANSACTIONS\n- RESERVED\n- SECURE_CONNECTION\n- MULTI_RESULTS\n- MULTI_STATEMENTS (used if `multipleStatements` option is activated)\n\n### Other Available Flags\n\n- NO_SCHEMA\n- COMPRESS\n- INTERACTIVE\n- SSL\n- PS_MULTI_RESULTS\n- PLUGIN_AUTH\n- SSL_VERIFY_SERVER_CERT\n- REMEMBER_OPTIONS\n\n## Debugging and reporting problems\n\nIf you are running into problems, one thing that may help is enabling the\n`debug` mode for the connection:\n\n```js\nvar connection = mysql.createConnection({debug: true});\n```\n\nThis will print all incoming and outgoing packets on stdout.\n\nIf that does not help, feel free to open a GitHub issue. A good GitHub issue\nwill have:\n\n* The minimal amount of code required to reproduce the problem (if possible)\n* As much debugging output and information about your environment (mysql\n version, node version, os, etc.) as you can gather.\n\n## Todo\n\n* Prepared statements\n* setTimeout() for Connection / Query\n* Support for encodings other than UTF-8 / ASCII\n* API support for transactions, similar to [php](http://www.php.net/manual/en/mysqli.quickstart.transactions.php)\n", + "readmeFilename": "Readme.md", + "_id": "mysql@2.0.0-alpha7", + "_from": "mysql@" +} diff --git a/node_modules/mysql/test/FakeServer.js b/node_modules/mysql/test/FakeServer.js new file mode 100644 index 0000000..c99ef74 --- /dev/null +++ b/node_modules/mysql/test/FakeServer.js @@ -0,0 +1,147 @@ +// An experimental fake MySQL server for tricky integration tests. Expanded +// as needed. + +var Net = require('net'); +var Packets = require('../lib/protocol/packets'); +var PacketWriter = require('../lib/protocol/PacketWriter'); +var Parser = require('../lib/protocol/Parser'); +var Auth = require('../lib/protocol/Auth'); +var EventEmitter = require('events').EventEmitter; +var Util = require('util'); + +module.exports = FakeServer; +Util.inherits(FakeServer, EventEmitter); +function FakeServer(options) { + EventEmitter.call(this); + + this._server = null; + this._connections = []; +} + +FakeServer.prototype.listen = function(port, cb) { + this._server = Net.createServer(this._handleConnection.bind(this)); + this._server.listen(port, cb); +}; + +FakeServer.prototype._handleConnection = function(socket) { + var connection = new FakeConnection(socket); + this.emit('connection', connection); + this._connections.push(connection); +}; + +FakeServer.prototype.destroy = function() { + this._server.close(); + this._connections.forEach(function(connection) { + connection.destroy(); + }); +}; + +Util.inherits(FakeConnection, EventEmitter); +function FakeConnection(socket) { + EventEmitter.call(this); + + this._socket = socket; + this._parser = new Parser({onPacket: this._parsePacket.bind(this)}); + + this._handshakeInitializationPacket = null; + this._clientAuthenticationPacket = null; + this._oldPasswordPacket = null; + this._handshakeOptions = {}; + + socket.on('data', this._handleData.bind(this)); +} + +FakeConnection.prototype.handshake = function(options) { + this._handshakeOptions = options || {}; + + this._handshakeInitializationPacket = new Packets.HandshakeInitializationPacket({ + scrambleBuff1: new Buffer(8), + scrambleBuff2: new Buffer(12), + }); + + this._sendPacket(this._handshakeInitializationPacket); +}; + +FakeConnection.prototype.deny = function(message, errno) { + this._sendPacket(new Packets.ErrorPacket({ + message: message, + errno: errno, + })); +}; + +FakeConnection.prototype._sendPacket = function(packet) { + var writer = new PacketWriter(); + packet.write(writer); + this._socket.write(writer.toBuffer(this._parser)); +}; + +FakeConnection.prototype._handleData = function(buffer) { + this._parser.write(buffer); +}; + +FakeConnection.prototype._parsePacket = function(header) { + var Packet = this._determinePacket(header); + var packet = new Packet(); + + packet.parse(this._parser); + + switch (Packet) { + case Packets.ClientAuthenticationPacket: + this._clientAuthenticationPacket = packet; + + if (this._handshakeOptions.oldPassword) { + this._sendPacket(new Packets.UseOldPasswordPacket()); + } else { + if (this._handshakeOptions.user || this._handshakeOptions.password) { + throw new Error('not implemented'); + } + + this._sendPacket(new Packets.OkPacket()); + this._parser.resetPacketNumber(); + } + break; + case Packets.OldPasswordPacket: + this._oldPasswordPacket = packet; + + var expected = Auth.scramble323(this._handshakeInitializationPacket.scrambleBuff(), this._handshakeOptions.password); + var got = packet.scrambleBuff; + + var toString = function(buffer) { + return Array.prototype.slice.call(buffer).join(','); + }; + + if (toString(expected) === toString(got)) { + this._sendPacket(new Packets.OkPacket()); + } else { + this._sendPacket(new Packets.ErrorPacket()); + } + + this._parser.resetPacketNumber(); + break; + case Packets.ComQueryPacket: + this.emit('query', packet); + break; + default: + throw new Error('Unexpected packet: ' + Packet.name) + } +}; + +FakeConnection.prototype._determinePacket = function() { + if (!this._clientAuthenticationPacket) { + return Packets.ClientAuthenticationPacket; + } else if (this._handshakeOptions.oldPassword && !this._oldPasswordPacket) { + return Packets.OldPasswordPacket; + } + + var firstByte = this._parser.peak(); + switch (firstByte) { + case 0x03: return Packets.ComQueryPacket; + default: + throw new Error('Unknown packet, first byte: ' + firstByte); + break; + } +}; + +FakeConnection.prototype.destroy = function() { + this._socket.destroy(); +}; diff --git a/node_modules/mysql/test/common.js b/node_modules/mysql/test/common.js new file mode 100644 index 0000000..4984228 --- /dev/null +++ b/node_modules/mysql/test/common.js @@ -0,0 +1,65 @@ +var common = exports; +var path = require('path'); +var _ = require('underscore'); +var FakeServer = require('./FakeServer'); + +common.lib = path.join(__dirname, '../lib'); +common.fixtures = path.join(__dirname, 'fixtures'); + +// Useful for triggering ECONNREFUSED errors on connect() +common.bogusPort = 47378; +// Useful for triggering ER_ACCESS_DENIED_ERROR errors on connect() +common.bogusPassword = 'INVALID PASSWORD'; + +// Used for simulating a fake mysql server +common.fakeServerPort = 32893; +// Used for simulating a fake mysql server +common.fakeServerSocket = __dirname + '/fake_server.sock'; + +common.testDatabase = process.env.MYSQL_DATABASE; + +var Mysql = require('../'); + +common.isTravis = function() { + return Boolean(process.env.CI); +}; + +common.createConnection = function(config) { + config = mergeTestConfig(config); + return Mysql.createConnection(config); +}; + +common.createPool = function(config) { + config = mergeTestConfig(config); + config.createConnection = common.createConnection; + return Mysql.createPool(config); +}; + +common.createFakeServer = function(options) { + return new FakeServer(_.extend({}, options)); +}; + +common.useTestDb = function(connection) { + var query = connection.query('CREATE DATABASE ' + common.testDatabase, function(err) { + if (err && err.code !== 'ER_DB_CREATE_EXISTS') throw err; + }); + + connection.query('USE ' + common.testDatabase); +} + +function mergeTestConfig(config) { + if (common.isTravis()) { + // see: http://about.travis-ci.org/docs/user/database-setup/ + config = _.extend({ + user: 'root' + }, config); + } else { + config = _.extend({ + host : process.env.MYSQL_HOST, + port : process.env.MYSQL_PORT, + user : process.env.MYSQL_USER, + password : process.env.MYSQL_PASSWORD + }, config); + } + return config; +} diff --git a/node_modules/mysql/test/fixtures/data.csv b/node_modules/mysql/test/fixtures/data.csv new file mode 100644 index 0000000..6fac03d --- /dev/null +++ b/node_modules/mysql/test/fixtures/data.csv @@ -0,0 +1,3 @@ +1,Hello World +2,This is a test +3,For loading data from a file diff --git a/node_modules/mysql/test/integration/connection/test-bad-credentials.js b/node_modules/mysql/test/integration/connection/test-bad-credentials.js new file mode 100644 index 0000000..83d2b6e --- /dev/null +++ b/node_modules/mysql/test/integration/connection/test-bad-credentials.js @@ -0,0 +1,27 @@ +var common = require('../../common'); +var connection = common.createConnection({password: 'INVALID PASSWORD'}); +var assert = require('assert'); + +var endErr; +connection.on('end', function(err) { + assert.equal(endErr, undefined); + endErr = err; +}); + +var connectErr; +connection.connect(function(err) { + assert.equal(connectErr, undefined); + connectErr = err; + + connection.end(); +}); + +process.on('exit', function() { + if (process.env.NO_GRANT == '1' && typeof endErr == 'undefined') return; + + assert.equal(endErr.code, 'ER_ACCESS_DENIED_ERROR'); + assert.ok(/access denied/i.test(endErr.message)); + + assert.strictEqual(endErr, connectErr); +}); + diff --git a/node_modules/mysql/test/integration/connection/test-bulk-insert.js b/node_modules/mysql/test/integration/connection/test-bulk-insert.js new file mode 100644 index 0000000..eddd81e --- /dev/null +++ b/node_modules/mysql/test/integration/connection/test-bulk-insert.js @@ -0,0 +1,37 @@ +var common = require('../../common'); +var connection = common.createConnection(); +var assert = require('assert'); +var _ = require('underscore'); + +common.useTestDb(connection); + +var table = 'insert_test'; +connection.query([ + 'CREATE TEMPORARY TABLE `' + table + '` (', + '`id` int(11) unsigned NOT NULL AUTO_INCREMENT,', + '`title` varchar(255),', + 'PRIMARY KEY (`id`)', + ') ENGINE=InnoDB DEFAULT CHARSET=utf8' +].join('\n')); + +var result; +var items = []; +var itemsFoundInTable = []; + +for(var i = 0; i < 100; i++) + items[i] = ['test '+i]; + +connection.query('INSERT INTO ' + table + ' (title) VALUES ? ', [items], function(err, _result) { + if (err) throw err; + + result = _result; + + connection.query('SELECT title FROM '+table+';', [], function(err, _items) { + itemsFoundInTable = _.map(_items, function(row) { return [row.title]; }); + connection.end(); + }); +}); + +process.on('exit', function() { + assert.deepEqual(items, itemsFoundInTable); +}); diff --git a/node_modules/mysql/test/integration/connection/test-callback-errors-are-not-caught.js b/node_modules/mysql/test/integration/connection/test-callback-errors-are-not-caught.js new file mode 100644 index 0000000..17d893d --- /dev/null +++ b/node_modules/mysql/test/integration/connection/test-callback-errors-are-not-caught.js @@ -0,0 +1,20 @@ +var common = require('../../common'); +var connection = common.createConnection(); +var assert = require('assert'); + +var err = new Error('uncaught exception'); + +connection.connect(function() { + throw err; +}); + +var caughtErr; +process.on('uncaughtException', function(err) { + caughtErr = err; + process.exit(0); +}); + +process.on('exit', function() { + assert.strictEqual(caughtErr, err); +}); + diff --git a/node_modules/mysql/test/integration/connection/test-change-user-fatal-error.js b/node_modules/mysql/test/integration/connection/test-change-user-fatal-error.js new file mode 100644 index 0000000..9bd0549 --- /dev/null +++ b/node_modules/mysql/test/integration/connection/test-change-user-fatal-error.js @@ -0,0 +1,24 @@ +// This test verifies that changeUser errors are treated as fatal errors. The +// rationale for that is that a failure to execute a changeUser sequence may +// cause unexpected behavior for queries that were enqueued under the +// assumption of changeUser to succeed. + +var common = require('../../common'); +var connection = common.createConnection(); +var assert = require('assert'); + +if (common.isTravis()) { + return console.log('skipping - travis mysql does not support this test'); +} + +var err; +connection.changeUser({user: 'does-not-exist'}, function(_err) { + err = _err; + connection.end(); +}); + +process.on('exit', function() { + if (process.env.NO_GRANT == '1' && err === null) return; + assert.equal(err.code, 'ER_ACCESS_DENIED_ERROR'); + assert.equal(err.fatal, true); +}); diff --git a/node_modules/mysql/test/integration/connection/test-change-user.js b/node_modules/mysql/test/integration/connection/test-change-user.js new file mode 100644 index 0000000..b49ef41 --- /dev/null +++ b/node_modules/mysql/test/integration/connection/test-change-user.js @@ -0,0 +1,36 @@ +var common = require('../../common'); +var connection = common.createConnection(); +var assert = require('assert'); + +if (common.isTravis()) { + return console.log('skipping - travis mysql does not support this test'); +} + +connection.query('CREATE DATABASE ' + common.testDatabase, function(err) { + if (err && err.code !== 'ER_DB_CREATE_EXISTS') throw err; +}); + +var initialDb; +connection.query('select database() as db', function(err, results) { + if (err) throw err; + + initialDb = results[0].db; + assert.equal(connection.config.database, null); +}); + +connection.changeUser({database: common.testDatabase}); + +var finalDb; +connection.query('select database() as db', function(err, results){ + if (err) throw err; + + finalDb = results[0].db; + assert.equal(connection.config.database, finalDb); +}); + +connection.end(); + +process.on('exit', function() { + assert.equal(initialDb, null); + assert.equal(finalDb, common.testDatabase); +}); diff --git a/node_modules/mysql/test/integration/connection/test-connection-config-flags-affected-rows.js b/node_modules/mysql/test/integration/connection/test-connection-config-flags-affected-rows.js new file mode 100644 index 0000000..3029a7f --- /dev/null +++ b/node_modules/mysql/test/integration/connection/test-connection-config-flags-affected-rows.js @@ -0,0 +1,39 @@ +// Based on: +// https://github.com/ichernev/node-mysql/blob/on-duplicate-key-update/test/integration/connection/test-on-duplicate-key-update.js +// (but with CLIENT_FOUND_ROWS connection flag blacklisted) + +var common = require('../../common'); +var connection = common.createConnection({ flags: "-FOUND_ROWS" }); +var assert = require('assert'); + +common.useTestDb(connection); + +var table = 'on_duplicate_key_test'; +connection.query('DROP TABLE IF EXISTS `' + table + '`'); +connection.query([ + 'CREATE TABLE `' + table + '` (', + '`a` int(11) unsigned NOT NULL AUTO_INCREMENT,', + '`b` int(11),', + '`c` int(11),', + 'PRIMARY KEY (`a`)', + ') ENGINE=InnoDB DEFAULT CHARSET=utf8' +].join('\n')); + +connection.query('INSERT INTO `' + table + '` SET ?', {a: 1, b: 1, c: 1}); + +connection.query('INSERT INTO `' + table + '` (a, b, c) VALUES (1, 2, 3) ON DUPLICATE KEY UPDATE c = 1', function(err, info) { + assert.strictEqual(null, err); + assert.strictEqual(0, info.affectedRows, 'both primary key and updated key are the same so nothing is affected (expected 0, got ' + info.affectedRows + ' affectedRows)'); +}); + +connection.query('INSERT INTO `' + table + '` (a, b, c) VALUES (2, 3, 4) ON DUPLICATE KEY UPDATE c = 1', function(err, info) { + assert.strictEqual(null, err); + assert.strictEqual(1, info.affectedRows, 'primary key differs, so new row is inserted (expected 1, got ' + info.affectedRows + ' affectedRows)'); +}); + +connection.query('INSERT INTO `' + table + '` (a, b, c) VALUES (1, 2, 3) ON DUPLICATE KEY UPDATE c = 2', function(err, info) { + assert.strictEqual(null, err); + assert.strictEqual(2, info.affectedRows, 'primary key is the same, row is updated (expected 2, got ' + info.affectedRows + ' affectedRows)'); +}); + +connection.end(); diff --git a/node_modules/mysql/test/integration/connection/test-connection-config-flags.js b/node_modules/mysql/test/integration/connection/test-connection-config-flags.js new file mode 100644 index 0000000..4a2d6ea --- /dev/null +++ b/node_modules/mysql/test/integration/connection/test-connection-config-flags.js @@ -0,0 +1,53 @@ +var ConnectionConfig = require('../../../lib/ConnectionConfig'); +var ClientConstants = require('../../../lib/protocol/constants/client'); +var assert = require('assert'); + +var testFlags = [{ + 'default' : [ '' ], + 'user' : 'LONG_PASSWORD', + 'expected': ClientConstants.CLIENT_LONG_PASSWORD +}, { + 'default' : [ '' ], + 'user' : '-LONG_PASSWORD', + 'expected': 0x0 +}, { + 'default' : [ 'LONG_PASSWORD', 'FOUND_ROWS' ], + 'user' : '-LONG_PASSWORD', + 'expected': ClientConstants.CLIENT_FOUND_ROWS +}, { + 'default' : [ 'LONG_PASSWORD', 'FOUND_ROWS' ], + 'user' : '-FOUND_ROWS', + 'expected': ClientConstants.CLIENT_LONG_PASSWORD +}, { + 'default' : [ 'LONG_PASSWORD', 'FOUND_ROWS' ], + 'user' : '-LONG_FLAG', + 'expected': ClientConstants.CLIENT_LONG_PASSWORD | + ClientConstants.CLIENT_FOUND_ROWS +}, { + 'default' : [ 'LONG_PASSWORD', 'FOUND_ROWS' ], + 'user' : 'LONG_FLAG', + 'expected': ClientConstants.CLIENT_LONG_PASSWORD | + ClientConstants.CLIENT_FOUND_ROWS | + ClientConstants.CLIENT_LONG_FLAG +}, { + 'default' : [ 'LONG_PASSWORD', 'FOUND_ROWS' ], + 'user' : 'UNDEFINED_CONSTANT', + 'expected': ClientConstants.CLIENT_LONG_PASSWORD | + ClientConstants.CLIENT_FOUND_ROWS +}, { + 'default' : [ 'LONG_PASSWORD', 'FOUND_ROWS' ], + 'user' : '-UNDEFINED_CONSTANT', + 'expected': ClientConstants.CLIENT_LONG_PASSWORD | + ClientConstants.CLIENT_FOUND_ROWS +}, { + 'default' : [ 'LONG_PASSWORD', 'FOUND_ROWS' ], + 'user' : '-UNDEFINED_CONSTANT,, -found_ROWS', + 'expected': ClientConstants.CLIENT_LONG_PASSWORD +}]; + +for (var i = 0; i < testFlags.length; i++) { + // console.log("expected: %s got: %s", testFlags[i]['expected'], + // ConnectionConfig.mergeFlags(testFlags[i]['default'], testFlags[i]['user'])); + assert.strictEqual(testFlags[i]['expected'], + ConnectionConfig.mergeFlags(testFlags[i]['default'], testFlags[i]['user'])); +} diff --git a/node_modules/mysql/test/integration/connection/test-connection-destroy.js b/node_modules/mysql/test/integration/connection/test-connection-destroy.js new file mode 100644 index 0000000..5d80fda --- /dev/null +++ b/node_modules/mysql/test/integration/connection/test-connection-destroy.js @@ -0,0 +1,9 @@ +var common = require('../../common'); +var connection = common.createConnection(); +var assert = require('assert'); + +connection.connect(function(err) { + if (err) throw err; + + connection.destroy(); +}); diff --git a/node_modules/mysql/test/integration/connection/test-custom-query-format.js b/node_modules/mysql/test/integration/connection/test-custom-query-format.js new file mode 100644 index 0000000..6309433 --- /dev/null +++ b/node_modules/mysql/test/integration/connection/test-custom-query-format.js @@ -0,0 +1,18 @@ +var Mysql = require('../../../'); +var common = require('../../common'); +var connection = common.createConnection(); +var assert = require('assert'); + +connection.config.queryFormat = function (query, values, tz) { + if (!values) return query; + return query.replace(/\:(\w+)/g, function (txt, key) { + if (values.hasOwnProperty(key)) { + return this.escape(values[key]); + } + return txt; + }.bind(this)); +}; + +assert.equal(connection.format("SELECT :a1, :a2", { a1: 1, a2: 'two' }), "SELECT 1, 'two'"); +assert.equal(connection.format("SELECT :a1", []), "SELECT :a1"); +assert.equal(connection.format("SELECT :a1"), "SELECT :a1"); diff --git a/node_modules/mysql/test/integration/connection/test-custom-typecast.js b/node_modules/mysql/test/integration/connection/test-custom-typecast.js new file mode 100644 index 0000000..bf82198 --- /dev/null +++ b/node_modules/mysql/test/integration/connection/test-custom-typecast.js @@ -0,0 +1,46 @@ +var Mysql = require('../../../'); +var common = require('../../common'); +var connection = common.createConnection(); +var assert = require('assert'); + +common.useTestDb(connection); + +var table = 'custom_typecast_test'; +connection.query([ + 'CREATE TEMPORARY TABLE `' + table + '`(', + '`id` int(5),', + '`val` tinyint(1)', + ') ENGINE=InnoDB DEFAULT CHARSET=utf8' +].join('\n')); + +var results; + +connection.query("INSERT INTO " + table + " VALUES (1, 0), (2, 1), (3, NULL)"); +connection.query({ + sql: "SELECT * FROM " + table, + typeCast: function (field, next) { + if (field.type != 'TINY') { + return next(); + } + + var val = field.string(); + + if (val === null) { + return null; + } + + return (Number(val) > 0); + } +}, function (err, _results) { + if (err) throw err; + + results = _results; +}); +connection.end(); + +process.on('exit', function() { + assert.equal(results.length, 3); + assert.deepEqual(results[0], {id: 1, val: false}); + assert.deepEqual(results[1], {id: 2, val: true}); + assert.deepEqual(results[2], {id: 3, val: null}); +}); diff --git a/node_modules/mysql/test/integration/connection/test-destroy-while-streaming-rows.js b/node_modules/mysql/test/integration/connection/test-destroy-while-streaming-rows.js new file mode 100644 index 0000000..5832695 --- /dev/null +++ b/node_modules/mysql/test/integration/connection/test-destroy-while-streaming-rows.js @@ -0,0 +1,45 @@ +var common = require('../../common'); +var connection = common.createConnection(); +var assert = require('assert'); + +common.useTestDb(connection); + +var table = 'stream_test'; +connection.query([ + 'CREATE TEMPORARY TABLE `' + table + '` (', + '`id` int(11) unsigned NOT NULL AUTO_INCREMENT,', + '`title` varchar(255),', + 'PRIMARY KEY (`id`)', + ') ENGINE=InnoDB DEFAULT CHARSET=utf8' +].join('\n')); + +var rowCount = 10; +for (var i = 1; i <= rowCount; i++) { + var row = { + id: i, + title: 'Row #' + i, + }; + + connection.query('INSERT INTO ' + table + ' SET ?', row); +} + +var destroyed = false; +var hadEnd = false; +var query = connection.query('SELECT * FROM ' + table); + +query + .on('result', function(row) { + assert.equal(destroyed, false); + + destroyed = true; + connection.destroy(); + }) + .on('end', function() { + hadEnd = true; + }); + +connection.end(); + +process.on('exit', function() { + assert.strictEqual(hadEnd, false); +}); diff --git a/node_modules/mysql/test/integration/connection/test-double-connect.js b/node_modules/mysql/test/integration/connection/test-double-connect.js new file mode 100644 index 0000000..99c51ca --- /dev/null +++ b/node_modules/mysql/test/integration/connection/test-double-connect.js @@ -0,0 +1,24 @@ +var common = require('../../common'); +var connection = common.createConnection(); +var assert = require('assert'); + +var didConnect = false; +connection.connect(function(err) { + if (err) throw err; + + assert.equal(didConnect, false); + didConnect = true; +}); + +var err; +connection.connect(function(_err) { + err = _err; +}); + +connection.end(); + +process.on('exit', function() { + assert.equal(didConnect, true); + assert.equal(err.fatal, false); + assert.equal(err.code, 'PROTOCOL_ENQUEUE_HANDSHAKE_TWICE'); +}); diff --git a/node_modules/mysql/test/integration/connection/test-drain-event.js b/node_modules/mysql/test/integration/connection/test-drain-event.js new file mode 100644 index 0000000..b075abf --- /dev/null +++ b/node_modules/mysql/test/integration/connection/test-drain-event.js @@ -0,0 +1,20 @@ +var common = require('../../common'); +var connection = common.createConnection(); +var assert = require('assert'); + +connection.connect(); + +var got_drain = false; + +connection.on('drain', function() { + got_drain = true; +}); + +connection.query("SELECT 1", function(err) { + assert.equal(got_drain, false); + assert.ok(!err); + process.nextTick(function() { + assert.equal(got_drain, true); + connection.end(); + }); +}); diff --git a/node_modules/mysql/test/integration/connection/test-end-callback.js b/node_modules/mysql/test/integration/connection/test-end-callback.js new file mode 100644 index 0000000..021022c --- /dev/null +++ b/node_modules/mysql/test/integration/connection/test-end-callback.js @@ -0,0 +1,27 @@ +var common = require('../../common'); +var connection = common.createConnection(); +var assert = require('assert'); + +connection.connect(); + +var gotEnd = false; +connection.on('end', function(err) { + assert.equal(gotEnd, false); + assert.ok(!err); + + gotEnd = true; +}); + +var gotCallback = false; +connection.end(function(err) { + if (err) throw err; + + assert.equal(gotCallback, false); + gotCallback = true; +}); + +process.on('exit', function() { + assert.equal(gotCallback, true); + assert.equal(gotEnd, true); +}); + diff --git a/node_modules/mysql/test/integration/connection/test-escape-id.js b/node_modules/mysql/test/integration/connection/test-escape-id.js new file mode 100644 index 0000000..743bd53 --- /dev/null +++ b/node_modules/mysql/test/integration/connection/test-escape-id.js @@ -0,0 +1,7 @@ +var SqlString = require('../../../lib/protocol/SqlString'); +var assert = require('assert'); + +assert.equal('`id`', SqlString.escapeId('id')); +assert.equal('`i``d`', SqlString.escapeId('i`d')); +assert.equal('`id1`.`id2`', SqlString.escapeId('id1.id2')); +assert.equal('`id``1`.`i``d2`', SqlString.escapeId('id`1.i`d2')); diff --git a/node_modules/mysql/test/integration/connection/test-exception-safety.js b/node_modules/mysql/test/integration/connection/test-exception-safety.js new file mode 100644 index 0000000..dd78684 --- /dev/null +++ b/node_modules/mysql/test/integration/connection/test-exception-safety.js @@ -0,0 +1,66 @@ +// This test covers all event / callback interfaces offered by node-mysql and +// throws an exception in them. Exception safety means that each of those +// exceptions can be caught by an 'uncaughtException' / Domain handler without +// the connection instance ending up in a bad state where it doesn't work +// properly or doesn't execute the next sequence anymore. + +var common = require('../../common'); +var connection = common.createConnection(); +var assert = require('assert'); + + +var errors = []; +process.on('uncaughtException', function(err) { + console.log(err.stack); + errors.push(err); +}); + +// Normal callback +connection.connect(function(err) { + throw err || new Error('1'); +}); + +// Normal callback (same code path as connect, but in here should that +// implementation detail change at some point). +connection.query('SELECT 1', function(err) { + throw err || new Error('2'); +}); + +// Row streaming events +connection.query('SELECT 1') + .on('fields', function() { + throw new Error('3'); + }) + .on('result', function() { + throw new Error('4'); + }); + +// Normal callback with error +connection.query('INVALID SQL', function(err) { + assert.equal(err.code, 'ER_PARSE_ERROR'); + + throw new Error('5'); +}); + +// Row streaming 'result' event triggered by Ok Packet (special code path) +connection.query('USE ' + common.testDatabase) + .on('result', function() { + throw new Error('6'); + }); + +// Normal callback (same code path as connect, but in here should that +// implementation detail change at some point). +connection.end(function(err) { + throw err || new Error('7'); +}); + +process.on('exit', function() { + process.removeAllListeners(); + + var expectedErrors = 7; + for (var i = 0; i < expectedErrors - 1; i++) { + var error = errors[i]; + assert.equal(error.message, String(i + 1)); + assert.equal(error.code, undefined); + } +}); diff --git a/node_modules/mysql/test/integration/connection/test-fatal-auth-error-going-to-all-callbacks.js b/node_modules/mysql/test/integration/connection/test-fatal-auth-error-going-to-all-callbacks.js new file mode 100644 index 0000000..88d3a2e --- /dev/null +++ b/node_modules/mysql/test/integration/connection/test-fatal-auth-error-going-to-all-callbacks.js @@ -0,0 +1,25 @@ +var common = require('../../common'); +var connection = common.createConnection({password: common.bogusPassword}); +var assert = require('assert'); + +var errors = {}; + +connection.connect(function(err) { + assert.equal(errors.a, undefined); + errors.a = err; +}); + +connection.query('SELECT 1', function(err) { + assert.equal(errors.b, undefined); + errors.b = err; + + connection.end(); +}); + +process.on('exit', function() { + if (process.env.NO_GRANT == '1' && errors.a === null) return; + + assert.equal(errors.a.code, 'ER_ACCESS_DENIED_ERROR'); + assert.equal(errors.a.fatal, true); + assert.strictEqual(errors.a, errors.b); +}); diff --git a/node_modules/mysql/test/integration/connection/test-fatal-auth-error-without-handlers.js b/node_modules/mysql/test/integration/connection/test-fatal-auth-error-without-handlers.js new file mode 100644 index 0000000..1c7c88f --- /dev/null +++ b/node_modules/mysql/test/integration/connection/test-fatal-auth-error-without-handlers.js @@ -0,0 +1,20 @@ +var common = require('../../common'); +var connection = common.createConnection({password: common.bogusPassword}); +var assert = require('assert'); + +connection.connect(); +connection.query('SELECT 1'); + +var err; +connection.on('error', function(_err) { + assert.equal(err, undefined); + err = _err; +}); +connection.end(); + +process.on('exit', function() { + if (process.env.NO_GRANT == '1' && typeof err == 'undefined') return; + + assert.equal(err.code, 'ER_ACCESS_DENIED_ERROR'); + assert.equal(err.fatal, true); +}); diff --git a/node_modules/mysql/test/integration/connection/test-fatal-network-error-going-to-all-callbacks.js b/node_modules/mysql/test/integration/connection/test-fatal-network-error-going-to-all-callbacks.js new file mode 100644 index 0000000..20c6e27 --- /dev/null +++ b/node_modules/mysql/test/integration/connection/test-fatal-network-error-going-to-all-callbacks.js @@ -0,0 +1,21 @@ +var common = require('../../common'); +var connection = common.createConnection({port: common.bogusPort}); +var assert = require('assert'); + +var errors = {}; + +connection.connect(function(err) { + assert.equal(errors.a, undefined); + errors.a = err; +}); + +connection.query('SELECT 1', function(err) { + assert.equal(errors.b, undefined); + errors.b = err; +}); + +process.on('exit', function() { + assert.equal(errors.a.code, 'ECONNREFUSED'); + assert.equal(errors.a.fatal, true); + assert.strictEqual(errors.a, errors.b); +}); diff --git a/node_modules/mysql/test/integration/connection/test-fatal-network-error-without-handlers.js b/node_modules/mysql/test/integration/connection/test-fatal-network-error-without-handlers.js new file mode 100644 index 0000000..6575be6 --- /dev/null +++ b/node_modules/mysql/test/integration/connection/test-fatal-network-error-without-handlers.js @@ -0,0 +1,17 @@ +var common = require('../../common'); +var connection = common.createConnection({port: common.bogusPort}); +var assert = require('assert'); + +connection.connect(); +connection.query('SELECT 1'); + +var err; +connection.on('error', function(_err) { + assert.equal(err, undefined); + err = _err; +}); + +process.on('exit', function() { + assert.equal(err.code, 'ECONNREFUSED'); + assert.equal(err.fatal, true); +}); diff --git a/node_modules/mysql/test/integration/connection/test-fatal-query-error-without-callback.js b/node_modules/mysql/test/integration/connection/test-fatal-query-error-without-callback.js new file mode 100644 index 0000000..3c26147 --- /dev/null +++ b/node_modules/mysql/test/integration/connection/test-fatal-query-error-without-callback.js @@ -0,0 +1,19 @@ +var common = require('../../common'); +var connection = common.createConnection({port: common.bogusPort}); +var assert = require('assert'); + +connection.connect(); +var query = connection.query('SELECT 1'); + +var err; +query.on('error', function(_err) { + assert.equal(err, undefined); + err = _err; +}); + +connection.end(); + +process.on('exit', function() { + assert.equal(err.code, 'ECONNREFUSED'); + assert.equal(err.fatal, true); +}); diff --git a/node_modules/mysql/test/integration/connection/test-host-denied-error.js b/node_modules/mysql/test/integration/connection/test-host-denied-error.js new file mode 100644 index 0000000..f831628 --- /dev/null +++ b/node_modules/mysql/test/integration/connection/test-host-denied-error.js @@ -0,0 +1,26 @@ +var common = require('../../common'); +var connection = common.createConnection({port: common.fakeServerPort}); +var assert = require('assert'); + +var server = common.createFakeServer(); + +var connectErr; +server.listen(common.fakeServerPort, function(err) { + if (err) throw err; + + connection.connect(function(err) { + connectErr = err; + server.destroy(); + }); +}); + +server.on('connection', function(incomingConnection) { + var errno = 1130; // ER_HOST_NOT_PRIVILEGED + incomingConnection.deny('You suck.', errno); +}); + +process.on('exit', function() { + assert.equal(connectErr.code, 'ER_HOST_NOT_PRIVILEGED'); + assert.ok(/You suck/.test(connectErr.message)); + assert.equal(connectErr.fatal, true); +}); diff --git a/node_modules/mysql/test/integration/connection/test-implicit-connect.js b/node_modules/mysql/test/integration/connection/test-implicit-connect.js new file mode 100644 index 0000000..5db2e9d --- /dev/null +++ b/node_modules/mysql/test/integration/connection/test-implicit-connect.js @@ -0,0 +1,16 @@ +var common = require('../../common'); +var connection = common.createConnection(); +var assert = require('assert'); + +var rows = undefined; +connection.query('SELECT 1', function(err, _rows) { + if (err) throw err; + + rows = _rows; +}); + +connection.end(); + +process.on('exit', function() { + assert.deepEqual(rows, [{1: 1}]); +}); diff --git a/node_modules/mysql/test/integration/connection/test-insert-results.js b/node_modules/mysql/test/integration/connection/test-insert-results.js new file mode 100644 index 0000000..b00071e --- /dev/null +++ b/node_modules/mysql/test/integration/connection/test-insert-results.js @@ -0,0 +1,26 @@ +var common = require('../../common'); +var connection = common.createConnection(); +var assert = require('assert'); + +common.useTestDb(connection); + +var table = 'insert_test'; +connection.query([ + 'CREATE TEMPORARY TABLE `' + table + '` (', + '`id` int(11) unsigned NOT NULL AUTO_INCREMENT,', + '`title` varchar(255),', + 'PRIMARY KEY (`id`)', + ') ENGINE=InnoDB DEFAULT CHARSET=utf8' +].join('\n')); + +var result; +connection.query('INSERT INTO ' + table + ' SET ?', {title: 'test'}, function(err, _result) { + if (err) throw err; + + result = _result; +}); +connection.end(); + +process.on('exit', function() { + assert.strictEqual(result.insertId, 1); +}); diff --git a/node_modules/mysql/test/integration/connection/test-load-data-infile.js b/node_modules/mysql/test/integration/connection/test-load-data-infile.js new file mode 100644 index 0000000..397819a --- /dev/null +++ b/node_modules/mysql/test/integration/connection/test-load-data-infile.js @@ -0,0 +1,55 @@ +var common = require('../../common'); +var connection = common.createConnection(); +var assert = require('assert'); + +common.useTestDb(connection); + +var table = 'load_data_test'; +connection.query([ + 'CREATE TEMPORARY TABLE `' + table + '` (', + '`id` int(11) unsigned NOT NULL AUTO_INCREMENT,', + '`title` varchar(255),', + 'PRIMARY KEY (`id`)', + ') ENGINE=InnoDB DEFAULT CHARSET=utf8' +].join('\n')); + +var path = common.fixtures + '/data.csv'; +var sql = + 'LOAD DATA LOCAL INFILE ? INTO TABLE ' + table + ' ' + + 'FIELDS TERMINATED BY ? (id, title)'; + +var ok; +connection.query(sql, [path, ','], function(err, _ok) { + if (err) throw err; + + ok = _ok; +}); + +var rows; +connection.query('SELECT * FROM ' + table, function(err, _rows) { + if (err) throw err; + + rows = _rows; +}); + +// Try to load a file that does not exist to see if we handle this properly +var loadErr; +var loadResult; +var badPath = common.fixtures + '/does_not_exist.csv'; + +connection.query(sql, [badPath, ','], function(err, result) { + loadErr = err; + loadResult = result; +}); + +connection.end(); + +process.on('exit', function() { + assert.equal(ok.affectedRows, 3); + assert.equal(rows.length, 3); + assert.equal(rows[0].id, 1); + assert.equal(rows[0].title, 'Hello World'); + + assert.equal(loadErr.code, 'ENOENT'); + assert.equal(loadResult.affectedRows, 0); +}); diff --git a/node_modules/mysql/test/integration/connection/test-long-stack-traces-for-connection-errors.js b/node_modules/mysql/test/integration/connection/test-long-stack-traces-for-connection-errors.js new file mode 100644 index 0000000..9b95598 --- /dev/null +++ b/node_modules/mysql/test/integration/connection/test-long-stack-traces-for-connection-errors.js @@ -0,0 +1,12 @@ +var common = require('../../common'); +var connection = common.createConnection({port: common.bogusPort}); +var assert = require('assert'); + +var err; +connection.connect(function(_err) { + err = _err; +}); + +process.on('exit', function() { + assert.ok(err.stack.indexOf(__filename) > 0); +}); diff --git a/node_modules/mysql/test/integration/connection/test-long-stack-traces.js b/node_modules/mysql/test/integration/connection/test-long-stack-traces.js new file mode 100644 index 0000000..def47fc --- /dev/null +++ b/node_modules/mysql/test/integration/connection/test-long-stack-traces.js @@ -0,0 +1,16 @@ +// Experimental: https://github.com/felixge/node-mysql/issues/198 + +var common = require('../../common'); +var connection = common.createConnection(); +var assert = require('assert'); + +var err; +connection.query('invalid sql', function(_err) { + err = _err; +}); + +connection.end(); + +process.on('exit', function() { + assert.ok(err.stack.indexOf(__filename) > 0); +}); diff --git a/node_modules/mysql/test/integration/connection/test-multiple-statements-streaming.js b/node_modules/mysql/test/integration/connection/test-multiple-statements-streaming.js new file mode 100644 index 0000000..b80817f --- /dev/null +++ b/node_modules/mysql/test/integration/connection/test-multiple-statements-streaming.js @@ -0,0 +1,55 @@ +var common = require('../../common'); +var connection = common.createConnection({multipleStatements: true}); +var assert = require('assert'); + +var sql = [ + 'SELECT 1', + 'USE ' + common.testDatabase, + 'SELECT 2', + 'invalid sql', + 'SELECT 3', +].join('; '); + +var results = []; +var fields = []; +var hadErr = false; + +var query = connection.query(sql); +query + .on('error', function(err) { + assert.equal(hadErr, false); + hadErr = true; + + assert.equal(err.code, 'ER_PARSE_ERROR'); + assert.equal(err.index, 3); + }) + .on('fields', function(_fields, index) { + fields.push({fields: _fields, index: index}); + }) + .on('result', function(result, index) { + results.push({result: result, index: index}); + }); + +connection.end(); + +process.on('exit', function() { + assert.ok(hadErr); + + assert.equal(results.length, 3); + + assert.deepEqual(results[0].result, {1: 1}); + assert.equal(results[0].index, 0); + + assert.equal(results[1].result.constructor.name, 'OkPacket'); + assert.equal(results[1].index, 1); + + assert.deepEqual(results[2].result, {2: 2}); + assert.equal(results[2].index, 2); + + assert.equal(fields.length, 2); + assert.equal(fields[0].fields[0].name, '1'); + assert.equal(fields[1].fields[0].name, '2'); + + assert.equal(fields[0].index, 0); + assert.equal(fields[1].index, 2); +}); diff --git a/node_modules/mysql/test/integration/connection/test-multiple-statements-with-error.js b/node_modules/mysql/test/integration/connection/test-multiple-statements-with-error.js new file mode 100644 index 0000000..11056cf --- /dev/null +++ b/node_modules/mysql/test/integration/connection/test-multiple-statements-with-error.js @@ -0,0 +1,36 @@ +var common = require('../../common'); +var connection = common.createConnection({multipleStatements: true}); +var assert = require('assert'); + +var sql = [ + 'SELECT 1', + 'invalid sql', + 'SELECT 2', +].join('; '); + +var finishedQueryOne = false; +connection.query(sql, function(err, results, fields) { + assert.equal(finishedQueryOne, false); + finishedQueryOne = true; + + assert.equal(err.code, 'ER_PARSE_ERROR'); + assert.deepEqual(results, [[{1: 1}]]); + + assert.equal(fields.length, 1); + assert.equal(fields[0][0].name, '1'); +}); + +var finishedQueryTwo = false; +connection.query('SELECT 3', function(err, results) { + assert.equal(finishedQueryTwo, false); + finishedQueryTwo = true; + + assert.deepEqual(results, [{3: 3}]); +}); + +connection.end(); + +process.on('exit', function() { + assert.equal(finishedQueryOne, true); + assert.equal(finishedQueryTwo, true); +}); diff --git a/node_modules/mysql/test/integration/connection/test-multiple-statements.js b/node_modules/mysql/test/integration/connection/test-multiple-statements.js new file mode 100644 index 0000000..f60d3e4 --- /dev/null +++ b/node_modules/mysql/test/integration/connection/test-multiple-statements.js @@ -0,0 +1,31 @@ +var common = require('../../common'); +var connection = common.createConnection({multipleStatements: true}); +var assert = require('assert'); + +var sql = [ + 'SELECT 1', + 'USE ' + common.testDatabase, + 'SELECT 2', +].join('; '); + +var results; +var fields; +connection.query(sql, function(err, _results, _fields) { + if (err) throw err; + + results = _results; + fields = _fields; +}); + +connection.end(); + +process.on('exit', function() { + assert.equal(results.length, 3); + assert.deepEqual(results[0], [{1: 1}]); + assert.strictEqual(results[1].constructor.name, 'OkPacket'); + assert.deepEqual(results[2], [{2: 2}]); + + assert.equal(fields[0][0].name, '1'); + assert.equal(fields[1], undefined); + assert.equal(fields[2][0].name, '2'); +}); diff --git a/node_modules/mysql/test/integration/connection/test-nested-tables-query.js b/node_modules/mysql/test/integration/connection/test-nested-tables-query.js new file mode 100644 index 0000000..be6f3e5 --- /dev/null +++ b/node_modules/mysql/test/integration/connection/test-nested-tables-query.js @@ -0,0 +1,48 @@ +var common = require('../../common'); +var connection = common.createConnection(); +var assert = require('assert'); + +common.useTestDb(connection); + +var table = 'nested_test'; +connection.query([ + 'CREATE TEMPORARY TABLE `' + table + '` (', + '`id` int(11) unsigned NOT NULL AUTO_INCREMENT,', + '`title` varchar(255),', + 'PRIMARY KEY (`id`)', + ') ENGINE=InnoDB DEFAULT CHARSET=utf8' +].join('\n')); + +connection.query('INSERT INTO ' + table + ' SET ?', {title: 'test'}); + +var options1 = { + nestTables: true, + sql: 'SELECT * FROM ' + table +}; +var options2 = { + nestTables: '_', + sql: 'SELECT * FROM ' + table +}; +var rows1, rows2; + +connection.query(options1, function(err, _rows) { + if (err) throw err; + + rows1 = _rows; +}); +connection.query(options2, function(err, _rows) { + if (err) throw err; + + rows2 = _rows; +}); + +connection.end(); + +process.on('exit', function() { + assert.equal(rows1.length, 1); + assert.equal(rows1[0].nested_test.id, 1); + assert.equal(rows1[0].nested_test.title, 'test'); + assert.equal(rows2.length, 1); + assert.equal(rows2[0].nested_test_id, 1); + assert.equal(rows2[0].nested_test_title, 'test'); +}); diff --git a/node_modules/mysql/test/integration/connection/test-normal-error-without-handler.js b/node_modules/mysql/test/integration/connection/test-normal-error-without-handler.js new file mode 100644 index 0000000..384559b --- /dev/null +++ b/node_modules/mysql/test/integration/connection/test-normal-error-without-handler.js @@ -0,0 +1,19 @@ +var common = require('../../common'); +var connection = common.createConnection(); +var assert = require('assert'); + +connection.connect(); +connection.query('INVALID SQL'); + +var err; +connection.on('error', function(_err) { + assert.equal(err, undefined); + err = _err; +}); + +connection.end(); + +process.on('exit', function() { + assert.equal(err.code, 'ER_PARSE_ERROR'); + assert.equal(Boolean(err.fatal), false); +}); diff --git a/node_modules/mysql/test/integration/connection/test-normal-query-error-without-callback.js b/node_modules/mysql/test/integration/connection/test-normal-query-error-without-callback.js new file mode 100644 index 0000000..414b391 --- /dev/null +++ b/node_modules/mysql/test/integration/connection/test-normal-query-error-without-callback.js @@ -0,0 +1,19 @@ +var common = require('../../common'); +var connection = common.createConnection(); +var assert = require('assert'); + +connection.connect(); +var query = connection.query('INVALID SQL'); + +var err; +query.on('error', function(_err) { + assert.equal(err, undefined); + err = _err; +}); + +connection.end(); + +process.on('exit', function() { + assert.equal(err.code, 'ER_PARSE_ERROR'); + assert.equal(Boolean(err.fatal), false); +}); diff --git a/node_modules/mysql/test/integration/connection/test-old-password.js b/node_modules/mysql/test/integration/connection/test-old-password.js new file mode 100644 index 0000000..3662510 --- /dev/null +++ b/node_modules/mysql/test/integration/connection/test-old-password.js @@ -0,0 +1,35 @@ +var common = require('../../common'); +var connection = common.createConnection({ + port : common.fakeServerPort, + password : 'oldpw', + insecureAuth : true, +}); +var assert = require('assert'); + +var server = common.createFakeServer(); + +var connected; +server.listen(common.fakeServerPort, function(err) { + if (err) throw err; + + connection.connect(function(err, result) { + if (err) throw err; + + connected = result; + + connection.destroy(); + server.destroy(); + }); +}); + +server.on('connection', function(incomingConnection) { + incomingConnection.handshake({ + user : connection.config.user, + password : connection.config.password, + oldPassword : true, + }); +}); + +process.on('exit', function() { + assert.equal(connected.fieldCount, 0); +}); diff --git a/node_modules/mysql/test/integration/connection/test-ping.js b/node_modules/mysql/test/integration/connection/test-ping.js new file mode 100644 index 0000000..25c3135 --- /dev/null +++ b/node_modules/mysql/test/integration/connection/test-ping.js @@ -0,0 +1,15 @@ +var common = require('../../common'); +var connection = common.createConnection(); +var assert = require('assert'); + +var pingErr; + +connection.ping(function(err) { + pingErr = err; +}); + +connection.end(); + +process.on('exit', function() { + assert.equal(pingErr, null); +}); diff --git a/node_modules/mysql/test/integration/connection/test-procedure-with-multiple-selects.js b/node_modules/mysql/test/integration/connection/test-procedure-with-multiple-selects.js new file mode 100644 index 0000000..fc5338d --- /dev/null +++ b/node_modules/mysql/test/integration/connection/test-procedure-with-multiple-selects.js @@ -0,0 +1,40 @@ +var common = require('../../common'); +var connection = common.createConnection(); +var assert = require('assert'); + +common.useTestDb(connection); + +var procedureName = 'multipleSelectProcedure'; +var input0 = 1; +var input1 = 1000; +var fieldName0 = 'param0'; +var fieldName1 = 'param1'; +var result = undefined; + +connection.query([ + 'CREATE DEFINER=root@localhost PROCEDURE '+procedureName+'(IN '+fieldName0+' INT, IN '+fieldName1+' INT)', + 'BEGIN', + 'SELECT '+fieldName0+';', + 'SELECT '+fieldName1+';', + 'END' +].join('\n')); + +connection.query('CALL '+procedureName+'(?,?)', [input0,input1], function(err, _result) { + if (err) throw err; + + _result.pop(); // drop metadata + result = _result; +}); + +connection.query('DROP PROCEDURE '+procedureName); + +connection.end(); + +process.on('exit', function() { + var result0Expected = {}; + result0Expected[fieldName0] = input0; + var result1Expected = {}; + result1Expected[fieldName1] = input1; + + assert.deepEqual(result, [[result0Expected], [result1Expected]]); +}); diff --git a/node_modules/mysql/test/integration/connection/test-procedure-with-single-select.js b/node_modules/mysql/test/integration/connection/test-procedure-with-single-select.js new file mode 100644 index 0000000..72ac750 --- /dev/null +++ b/node_modules/mysql/test/integration/connection/test-procedure-with-single-select.js @@ -0,0 +1,33 @@ +var common = require('../../common'); +var connection = common.createConnection(); +var assert = require('assert'); + +common.useTestDb(connection); + +var procedureName = 'singleSelectProcedure'; +var input = 1; +var fieldName = 'param'; +var result = undefined; + +connection.query([ + 'CREATE DEFINER=root@localhost PROCEDURE '+procedureName+'(IN '+fieldName+' INT)', + 'BEGIN', + 'SELECT '+fieldName+';', + 'END' +].join('\n')); + +connection.query('CALL '+procedureName+'(?)', [input], function(err, _result) { + if (err) throw err; + _result.pop(); // drop metadata + result = _result; +}); + +connection.query('DROP PROCEDURE '+procedureName); + +connection.end(); + +process.on('exit', function() { + var expected = {}; + expected[fieldName] = input; + assert.deepEqual(result, [[expected]]); +}); diff --git a/node_modules/mysql/test/integration/connection/test-query-after-destroy.js b/node_modules/mysql/test/integration/connection/test-query-after-destroy.js new file mode 100644 index 0000000..22cb678 --- /dev/null +++ b/node_modules/mysql/test/integration/connection/test-query-after-destroy.js @@ -0,0 +1,17 @@ +var common = require('../../common'); +var connection = common.createConnection(); +var assert = require('assert'); + +var err; +connection.connect(function() { + connection.destroy(); + + connection.query('SELECT 1', function(_err) { + err = _err; + }); +}); + +process.on('exit', function() { + assert.equal(err.fatal, false); + assert.equal(err.code, 'PROTOCOL_ENQUEUE_AFTER_DESTROY'); +}); diff --git a/node_modules/mysql/test/integration/connection/test-query-after-end-without-callback.js b/node_modules/mysql/test/integration/connection/test-query-after-end-without-callback.js new file mode 100644 index 0000000..302d958 --- /dev/null +++ b/node_modules/mysql/test/integration/connection/test-query-after-end-without-callback.js @@ -0,0 +1,23 @@ +var common = require('../../common'); +var connection = common.createConnection(); +var assert = require('assert'); + +var didEnd = false; +connection.connect(); +connection.end(function(err) { + if (err) throw err; + + didEnd = true; +}); + +var err; +connection.on('error', function(_err) { + err = _err; +}); +connection.query('SELECT 1'); + +process.on('exit', function() { + assert.equal(didEnd, true); + assert.equal(err.code, 'PROTOCOL_ENQUEUE_AFTER_QUIT'); + assert.equal(err.fatal, false); +}); diff --git a/node_modules/mysql/test/integration/connection/test-query-after-end.js b/node_modules/mysql/test/integration/connection/test-query-after-end.js new file mode 100644 index 0000000..e907b48 --- /dev/null +++ b/node_modules/mysql/test/integration/connection/test-query-after-end.js @@ -0,0 +1,23 @@ +var common = require('../../common'); +var connection = common.createConnection(); +var assert = require('assert'); + +var didEnd = false; +connection.connect(); +connection.end(function(err) { + if (err) throw err; + + didEnd = true; +}); + +var err; +connection.query('SELECT 1', function(_err) { + assert.equal(didEnd, false); + err = _err; +}); + +process.on('exit', function() { + assert.equal(didEnd, true); + assert.equal(err.code, 'PROTOCOL_ENQUEUE_AFTER_QUIT'); + assert.equal(err.fatal, false); +}); diff --git a/node_modules/mysql/test/integration/connection/test-query-escaping.js b/node_modules/mysql/test/integration/connection/test-query-escaping.js new file mode 100644 index 0000000..145733f --- /dev/null +++ b/node_modules/mysql/test/integration/connection/test-query-escaping.js @@ -0,0 +1,36 @@ +var common = require('../../common'); +var connection = common.createConnection(); +var assert = require('assert'); + +common.useTestDb(connection); + +var table = 'escape_test'; +connection.query([ + 'CREATE TEMPORARY TABLE `' + table + '` (', + '`id` int(11) unsigned NOT NULL AUTO_INCREMENT,', + '`example` varchar(255),', + 'PRIMARY KEY (`id`)', + ') ENGINE=InnoDB DEFAULT CHARSET=utf8' +].join('\n')); + +connection.query('INSERT INTO ' + table + ' SET id = ?, example = ?', [1, 'array escape']); +connection.query('INSERT INTO ' + table + ' SET ?', { + id: 2, + example: 'object escape' +}); + +var rows; +connection.query('SELECT * FROM escape_test', function(err, _rows) { + if (err) throw err; + + rows = _rows; +}); + +connection.end(); + + +process.on('exit', function() { + assert.equal(rows.length, 2); + assert.deepEqual(rows[0], {id: 1, example: 'array escape'}); + assert.deepEqual(rows[1], {id: 2, example: 'object escape'}); +}); diff --git a/node_modules/mysql/test/integration/connection/test-select-1.js b/node_modules/mysql/test/integration/connection/test-select-1.js new file mode 100644 index 0000000..64fa83a --- /dev/null +++ b/node_modules/mysql/test/integration/connection/test-select-1.js @@ -0,0 +1,21 @@ +var common = require('../../common'); +var connection = common.createConnection(); +var assert = require('assert'); + +connection.connect(); + +var rows = undefined; +var fields = undefined; +connection.query('SELECT 1', function(err, _rows, _fields) { + if (err) throw err; + + rows = _rows; + fields = _fields; +}); + +connection.end(); + +process.on('exit', function() { + assert.deepEqual(rows, [{1: 1}]); + assert.equal(fields[0].name, '1'); +}); diff --git a/node_modules/mysql/test/integration/connection/test-select-empty-string.js b/node_modules/mysql/test/integration/connection/test-select-empty-string.js new file mode 100644 index 0000000..8e10ce7 --- /dev/null +++ b/node_modules/mysql/test/integration/connection/test-select-empty-string.js @@ -0,0 +1,16 @@ +var common = require('../../common'); +var connection = common.createConnection(); +var assert = require('assert'); + +var rows; +connection.query('SELECT ""', function(err, _rows) { + if (err) throw err; + + rows = _rows; +}); + +connection.end(); + +process.on('exit', function() { + assert.deepEqual(rows, [{'': ''}]); +}); diff --git a/node_modules/mysql/test/integration/connection/test-send-and-receive-large-packets.js b/node_modules/mysql/test/integration/connection/test-send-and-receive-large-packets.js new file mode 100644 index 0000000..3509af7 --- /dev/null +++ b/node_modules/mysql/test/integration/connection/test-send-and-receive-large-packets.js @@ -0,0 +1,81 @@ +var common = require('../../common'); +var connection = common.createConnection(); +var assert = require('assert'); + +connection.connect(function(err) { + if (err) throw err; + + getMaxAllowedPacket(); +}); + + +var oldMaxAllowedPacket; +function getMaxAllowedPacket() { + connection.query('SHOW VARIABLES WHERE Variable_name = ?', ['max_allowed_packet'], function(err, rows) { + if (err) throw err; + + oldMaxAllowedPacket = Number(rows[0].Value); + + increaseMaxAllowedPacketIfNeeded(); + }); +} + +function increaseMaxAllowedPacketIfNeeded() { + // Our test generates a SQL query a few bytes larger than 16 MB, but lets + // leave a little margin: + var minMaxAllowedPacket = 20 * 1024 * 1024; + + var newMaxAllowedPacket = (oldMaxAllowedPacket < minMaxAllowedPacket) + ? minMaxAllowedPacket + : oldMaxAllowedPacket; + + connection.query('SET GLOBAL max_allowed_packet = ?', [newMaxAllowedPacket], function(err, rows) { + if (err) throw err; + + + // We need to re-connect for this change to take effect, bah + connection.end(); + connection = common.createConnection(); + + // We need to wait for the re-connect to happen before starting the actual + // test. That's because our buffer to hex shim in 0.4.x takes ~12 sec on + // TravisCI, causing a MySQL connection timeout otherwise. + connection.connect(function(err) { + if (err) throw err; + + triggerLargeQueryAndResponsePackets(); + }); + }); +} + +var rows = []; +var length = Math.pow(256, 3) / 2; // Half, because of hex encoding +var buffer = new Buffer(length); +var sql = 'SELECT ? as bigField'; + +function triggerLargeQueryAndResponsePackets() { + connection.query(sql, [buffer], function(err, _rows) { + if (err) throw err; + + rows = _rows; + + resetMaxAllowedPacket(); + }); +} + +function resetMaxAllowedPacket() { + connection.query('SET GLOBAL max_allowed_packet = ?', [oldMaxAllowedPacket], function(err, rows) { + if (err) { + err.message = 'Could not reset max_allowed_packet size, please check your server settings: ' + err.message; + throw err; + } + }); + + connection.end(); +} + + +process.on('exit', function() { + assert.equal(rows.length, 1); + assert.equal(rows[0].bigField.length, length); +}); diff --git a/node_modules/mysql/test/integration/connection/test-server-timeout-disconnect.js b/node_modules/mysql/test/integration/connection/test-server-timeout-disconnect.js new file mode 100644 index 0000000..b4ec403 --- /dev/null +++ b/node_modules/mysql/test/integration/connection/test-server-timeout-disconnect.js @@ -0,0 +1,24 @@ +var common = require('../../common'); +var connection = common.createConnection(); +var assert = require('assert'); + +connection.query('SET wait_timeout = 1'); + +var errorErr; +var endErr; +connection + .on('end', function(err) { + assert.ok(!endErr); + endErr = err; + }) + .on('error', function(err) { + assert.ok(!errorErr); + errorErr = err; + }); + +process.on('exit', function() { + assert.strictEqual(errorErr.code, 'PROTOCOL_CONNECTION_LOST'); + assert.strictEqual(errorErr.fatal, true); + + assert.strictEqual(endErr, errorErr); +}); diff --git a/node_modules/mysql/test/integration/connection/test-server-unexpected-disconnect.js b/node_modules/mysql/test/integration/connection/test-server-unexpected-disconnect.js new file mode 100644 index 0000000..6bb5957 --- /dev/null +++ b/node_modules/mysql/test/integration/connection/test-server-unexpected-disconnect.js @@ -0,0 +1,36 @@ +var common = require('../../common'); +var connection = common.createConnection({port: common.fakeServerPort}); +var assert = require('assert'); + +var endErr; +connection.on('end', function(err) { + assert.ok(!endErr); + endErr = err; +}); + +var queryErr; + +var server = common.createFakeServer(); +server.listen(common.fakeServerPort, function(err) { + if (err) throw err; + + connection.query('SELECT 1', function(err) { + assert.ok(!queryErr); + queryErr = err; + }); +}); + +server.on('connection', function(connection) { + connection.handshake(); + + connection.on('query', function(packet) { + server.destroy(); + }); +}); + +process.on('exit', function() { + assert.strictEqual(queryErr.code, 'PROTOCOL_CONNECTION_LOST'); + assert.strictEqual(queryErr.fatal, true); + + assert.strictEqual(endErr, queryErr); +}); diff --git a/node_modules/mysql/test/integration/connection/test-statistics.js b/node_modules/mysql/test/integration/connection/test-statistics.js new file mode 100644 index 0000000..5fc9865 --- /dev/null +++ b/node_modules/mysql/test/integration/connection/test-statistics.js @@ -0,0 +1,26 @@ +var common = require('../../common'); +var connection = common.createConnection(); +var assert = require('assert'); + +var statsErr, statsData; + +connection.statistics(function(err, data) { + statsErr = err; + statsData = data; +}); + +connection.end(); + +process.on('exit', function() { + assert.equal(statsErr, null); + assert.strictEqual(typeof statsData, "object"); + assert.strictEqual(statsData.hasOwnProperty("message"), true); + assert.strictEqual(statsData.hasOwnProperty("uptime"), true); + assert.strictEqual(statsData.hasOwnProperty("threads"), true); + assert.strictEqual(statsData.hasOwnProperty("questions"), true); + assert.strictEqual(statsData.hasOwnProperty("slow_queries"), true); + assert.strictEqual(statsData.hasOwnProperty("opens"), true); + assert.strictEqual(statsData.hasOwnProperty("flush_tables"), true); + assert.strictEqual(statsData.hasOwnProperty("open_tables"), true); + assert.strictEqual(statsData.hasOwnProperty("queries_per_second_avg"), true); +}); diff --git a/node_modules/mysql/test/integration/connection/test-streaming-rows-quick-pause-resume.js b/node_modules/mysql/test/integration/connection/test-streaming-rows-quick-pause-resume.js new file mode 100644 index 0000000..48a80b2 --- /dev/null +++ b/node_modules/mysql/test/integration/connection/test-streaming-rows-quick-pause-resume.js @@ -0,0 +1,46 @@ +var common = require('../../common'); +var connection = common.createConnection(); +var assert = require('assert'); + +common.useTestDb(connection); + +var table = 'stream_test'; +connection.query([ + 'CREATE TEMPORARY TABLE `' + table + '` (', + '`id` int(11) unsigned NOT NULL AUTO_INCREMENT,', + '`title` varchar(255),', + 'PRIMARY KEY (`id`)', + ') ENGINE=InnoDB DEFAULT CHARSET=utf8' +].join('\n')); + +var rowCount = 10; +for (var i = 1; i <= rowCount; i++) { + var row = { + id: i, + title: 'Row #' + i, + }; + + connection.query('INSERT INTO ' + table + ' SET ?', row); +} + +var query = connection.query('SELECT * FROM ' + table); + +var hadEnd = false; +var rows = []; +var fields = undefined; +query.on('result', function(row) { + connection.pause(); + connection.resume(); + + rows.push(row); +}) +.on('end', function() { + hadEnd = true; +}); + +connection.end(); + +process.on('exit', function() { + assert.equal(rows.length, rowCount); + assert.equal(hadEnd, true); +}); diff --git a/node_modules/mysql/test/integration/connection/test-streaming-rows.js b/node_modules/mysql/test/integration/connection/test-streaming-rows.js new file mode 100644 index 0000000..8ea45da --- /dev/null +++ b/node_modules/mysql/test/integration/connection/test-streaming-rows.js @@ -0,0 +1,65 @@ +var common = require('../../common'); +var connection = common.createConnection(); +var assert = require('assert'); + +common.useTestDb(connection); + +var table = 'stream_test'; +connection.query([ + 'CREATE TEMPORARY TABLE `' + table + '` (', + '`id` int(11) unsigned NOT NULL AUTO_INCREMENT,', + '`title` varchar(255),', + 'PRIMARY KEY (`id`)', + ') ENGINE=InnoDB DEFAULT CHARSET=utf8' +].join('\n')); + +var rowCount = 10; +for (var i = 1; i <= rowCount; i++) { + var row = { + id: i, + title: 'Row #' + i, + }; + + connection.query('INSERT INTO ' + table + ' SET ?', row); +} + +var paused = false; +var query = connection.query('SELECT * FROM ' + table); + +var hadEnd = 0; +var rows = []; +var fields = undefined; +query + .on('fields', function(_fields, index) { + assert.equal(index, 0); + assert.ok(!fields); + + fields = _fields; + }) + .on('result', function(row) { + // Make sure we never receive a row while being paused + assert.equal(paused, false); + + paused = true; + connection.pause(); + + setTimeout(function() { + paused = false; + connection.resume(); + + rows.push(row); + }, 10); + }) + .on('end', function() { + hadEnd = true; + }); + +connection.end(); + +process.on('exit', function() { + assert.equal(rows.length, 10); + assert.equal(hadEnd, true); + + assert.equal(fields[0].name, 'id'); + assert.equal(fields[1].name, 'title'); +}); diff --git a/node_modules/mysql/test/integration/connection/test-timezones.js b/node_modules/mysql/test/integration/connection/test-timezones.js new file mode 100644 index 0000000..dd59de4 --- /dev/null +++ b/node_modules/mysql/test/integration/connection/test-timezones.js @@ -0,0 +1,67 @@ +var common = require('../../common'); +var connection = common.createConnection(); +var assert = require('assert'); + +common.useTestDb(connection); + +var table = 'timezone_test'; +connection.query([ + 'CREATE TEMPORARY TABLE `' + table + '`(', + '`offset` varchar(10),', + '`dt` datetime', + ') ENGINE=InnoDB DEFAULT CHARSET=utf8' +].join('\n')); + +var tests = [ 0, 1, 5, 12, 26, -1, -5, -20, 'Z', 'local' ]; + +connection.query('DELETE FROM ' + table); + +testNextDate(); + +function testNextDate() { + if (tests.length === 0) { + return connection.end(); + } + + var test = tests.pop(); + + testDate(test, function () { + testNextDate(); + }); +} + +function testDate(offset, cb) { + var dt = new Date(); + + if (offset == 'Z' || offset == 'local') { + connection.config.timezone = offset; + } else { + connection.config.timezone = (offset < 0 ? "-" : "+") + pad2(Math.abs(offset)) + ":00"; + } + connection.query('INSERT INTO ' + table + ' SET ?', { offset: offset, dt: dt }); + + if (offset == 'Z') { + dt.setTime(dt.getTime() + (dt.getTimezoneOffset() * 60000)); + } else if (offset != 'local') { + dt.setTime(dt.getTime() + (dt.getTimezoneOffset() * 60000) + (offset * 3600000)); + } + + connection.query({ + sql: 'SELECT * FROM ' + table + ' WHERE offset = \'' + offset + '\'', + typeCast: function (field, next) { + if (field.type != 'DATETIME') return next(); + + return new Date(field.string()); + } + }, function (err, result) { + if (err) throw err; + + assert.strictEqual(dt.toString(), result[0].dt.toString()); + + return cb(); + }); +} + +function pad2(v) { + return (v < 10 ? "0" : "") + v; +} diff --git a/node_modules/mysql/test/integration/connection/test-transaction-commit.js b/node_modules/mysql/test/integration/connection/test-transaction-commit.js new file mode 100644 index 0000000..86015a6 --- /dev/null +++ b/node_modules/mysql/test/integration/connection/test-transaction-commit.js @@ -0,0 +1,41 @@ +var common = require('../../common'); +var connection = common.createConnection(); +var assert = require('assert'); + +common.useTestDb(connection); + +var table = 'transaction_test'; +connection.query([ + 'CREATE TEMPORARY TABLE `' + table + '` (', + '`id` int(11) unsigned NOT NULL AUTO_INCREMENT,', + '`title` varchar(255),', + 'PRIMARY KEY (`id`)', + ') ENGINE=InnoDB DEFAULT CHARSET=utf8' +].join('\n')); + +connection.query('START TRANSACTION'); + +var rowCount = 10; +for (var i = 1; i <= rowCount; i++) { + var row = { + id: i, + title: 'Row #' + i, + }; + + connection.query('INSERT INTO ' + table + ' SET ?', row); +} + +connection.query('COMMIT'); + +var rows = []; +var query = connection.query('SELECT * FROM ' + table, function(err, _rows) { + if (err) throw err; + + rows = _rows; +}); + +connection.end(); + +process.on('exit', function() { + assert.equal(rows.length, rowCount); +}); diff --git a/node_modules/mysql/test/integration/connection/test-transaction-rollback.js b/node_modules/mysql/test/integration/connection/test-transaction-rollback.js new file mode 100644 index 0000000..f06bee5 --- /dev/null +++ b/node_modules/mysql/test/integration/connection/test-transaction-rollback.js @@ -0,0 +1,41 @@ +var common = require('../../common'); +var connection = common.createConnection(); +var assert = require('assert'); + +common.useTestDb(connection); + +var table = 'transaction_test'; +connection.query([ + 'CREATE TEMPORARY TABLE `' + table + '` (', + '`id` int(11) unsigned NOT NULL AUTO_INCREMENT,', + '`title` varchar(255),', + 'PRIMARY KEY (`id`)', + ') ENGINE=InnoDB DEFAULT CHARSET=utf8' +].join('\n')); + +connection.query('START TRANSACTION'); + +var rowCount = 10; +for (var i = 1; i <= rowCount; i++) { + var row = { + id: i, + title: 'Row #' + i, + }; + + connection.query('INSERT INTO ' + table + ' SET ?', row); +} + +connection.query('ROLLBACK'); + +var rows; +var query = connection.query('SELECT * FROM ' + table, function(err, _rows) { + if (err) throw err; + + rows = _rows; +}); + +connection.end(); + +process.on('exit', function() { + assert.equal(rows.length, 0); +}); diff --git a/node_modules/mysql/test/integration/connection/test-type-cast-null-fields.js b/node_modules/mysql/test/integration/connection/test-type-cast-null-fields.js new file mode 100644 index 0000000..f5718f4 --- /dev/null +++ b/node_modules/mysql/test/integration/connection/test-type-cast-null-fields.js @@ -0,0 +1,34 @@ +var common = require('../../common'); +var connection = common.createConnection(); +var assert = require('assert'); + +common.useTestDb(connection); + +var table = 'insert_test'; +connection.query([ + 'CREATE TEMPORARY TABLE `' + table + '` (', + '`id` int(11) unsigned NOT NULL AUTO_INCREMENT,', + '`date` DATETIME NULL,', + '`number` INT NULL,', + 'PRIMARY KEY (`id`)', + ') ENGINE=InnoDB DEFAULT CHARSET=utf8' +].join('\n')); + +connection.query('INSERT INTO ' + table + ' SET ?', { + date : null, + number : null, +}); + +var results; +connection.query('SELECT * FROM ' + table, function(err, _results) { + if (err) throw err; + + results = _results; +}); + +connection.end(); + +process.on('exit', function() { + assert.strictEqual(results[0].date, null); + assert.strictEqual(results[0].number, null); +}); diff --git a/node_modules/mysql/test/integration/connection/test-type-cast-query.js b/node_modules/mysql/test/integration/connection/test-type-cast-query.js new file mode 100644 index 0000000..0a6dda5 --- /dev/null +++ b/node_modules/mysql/test/integration/connection/test-type-cast-query.js @@ -0,0 +1,37 @@ +var common = require('../../common'); +var connection = common.createConnection({typeCast: true}); +var assert = require('assert'); +var util = require('util'); + +connection.connect(); + +var options = { + sql : "SELECT NOW() as date, POINT(1.2,-3.4) as point", + typeCast : false +}; + +var rows; +var query = connection.query(options, function(err, _rows) { + if (err) throw err; + + rows = _rows; +}); + +connection.end(); + +process.on('exit', function() { + var point = rows[0].point; + var byteOrder = point.readUInt8(4); + var wkbType = byteOrder? point.readUInt32LE(5) : point.readUInt32BE(5); + var x = byteOrder? point.readDoubleLE(9) : point.readDoubleBE(9); + var y = byteOrder? point.readDoubleLE(17) : point.readDoubleBE(17); + + assert.strictEqual(typeof rows[0].date, 'object'); + assert.equal(Buffer.isBuffer(rows[0].date), true); + assert.strictEqual(typeof point, 'object'); + assert.equal(Buffer.isBuffer(point), true); + assert.equal(point.readUInt32LE(0), 0); // unknown + assert.equal(wkbType, 1); // WKBPoint + assert.equal(x, 1.2); + assert.equal(y, -3.4); +}); diff --git a/node_modules/mysql/test/integration/connection/test-type-casting.js b/node_modules/mysql/test/integration/connection/test-type-casting.js new file mode 100644 index 0000000..781ce6f --- /dev/null +++ b/node_modules/mysql/test/integration/connection/test-type-casting.js @@ -0,0 +1,118 @@ +var common = require('../../common'); +var connection = common.createConnection(); +var assert = require('assert'); + +common.useTestDb(connection); + +var tests = [ + {type: 'decimal(3,3)', insert: '0.330', expect: 0.33 }, + {type: 'decimal(3,3)', insert: 0.33}, + {type: 'tinyint', insert: 1}, + {type: 'smallint', insert: 2}, + {type: 'int', insert: 3}, + {type: 'float', insert: 4.5}, + {type: 'double', insert: 5.5}, + {type: 'bigint', insert: '6', expect: 6}, + {type: 'bigint', insert: 6}, + {type: 'mediumint', insert: 7}, + {type: 'year', insert: 2012}, + {type: 'timestamp', insert: new Date('2012-05-12 11:00:23')}, + {type: 'datetime', insert: new Date('2012-05-12 12:00:23')}, + {type: 'date', insert: new Date('2012-05-12 00:00:00 Z')}, + {type: 'time', insert: '13:13:23'}, + {type: 'binary(4)', insert: new Buffer([0, 1, 254, 255])}, + {type: 'varbinary(4)', insert: new Buffer([0, 1, 254, 255])}, + {type: 'tinyblob', insert: new Buffer([0, 1, 254, 255])}, + {type: 'mediumblob', insert: new Buffer([0, 1, 254, 255])}, + {type: 'longblob', insert: new Buffer([0, 1, 254, 255])}, + {type: 'blob', insert: new Buffer([0, 1, 254, 255])}, + {type: 'bit(32)', insert: new Buffer([0, 1, 254, 255])}, + {type: 'char(5)', insert: 'Hello'}, + {type: 'varchar(5)', insert: 'Hello'}, + {type: 'varchar(3) character set utf8 collate utf8_bin', insert: 'bin'}, + {type: 'tinytext', insert: 'Hello World'}, + {type: 'mediumtext', insert: 'Hello World'}, + {type: 'longtext', insert: 'Hello World'}, + {type: 'text', insert: 'Hello World'}, + {type: 'point', insertRaw: 'POINT(1.2,-3.4)', expect: {x:1.2, y:-3.4}, deep: true}, + {type: 'point', insertRaw: (function() { + var buffer = new Buffer(21); + buffer.writeUInt8(1, 0); + buffer.writeUInt32LE(1, 1); + buffer.writeDoubleLE(-5.6, 5); + buffer.writeDoubleLE(10.23, 13); + return 'GeomFromWKB(' + connection.escape(buffer) + ')'; + })(), expect: {x:-5.6, y:10.23}, deep: true}, + {type: 'linestring', insertRaw: 'LINESTRING(POINT(1.2,-3.4),POINT(-5.6,10.23),POINT(0.2,0.7))', expect: [{x:1.2, y:-3.4}, {x:-5.6, y:10.23}, {x:0.2, y:0.7}], deep: true}, + {type: 'polygon', insertRaw: "GeomFromText('POLYGON((0 0,10 0,10 10,0 10,0 0),(5 5,7 5,7 7,5 7, 5 5))')", expect: [[{x:0,y:0},{x:10,y:0},{x:10,y:10},{x:0,y:10},{x:0,y:0}],[{x:5,y:5},{x:7,y:5},{x:7,y:7},{x:5,y:7},{x:5,y:5}]], deep: true}, + {type: 'geometry', insertRaw: 'POINT(1.2,-3.4)', expect: {x:1.2, y:-3.4}, deep: true}, + {type: 'multipoint', insertRaw: "GeomFromText('MULTIPOINT(0 0, 20 20, 60 60)')", expect: [{x:0, y:0}, {x:20, y:20}, {x:60, y:60}], deep: true}, + {type: 'multilinestring', insertRaw: "GeomFromText('MULTILINESTRING((10 10, 20 20), (15 15, 30 15))')", expect: [[{x:10,y:10},{x:20,y:20}],[{x:15,y:15},{x:30,y:15}]], deep: true}, + {type: 'multipolygon', insertRaw: "GeomFromText('MULTIPOLYGON(((0 0,10 0,10 10,0 10,0 0)),((5 5,7 5,7 7,5 7, 5 5)))')", expect: [[[{x:0,y:0},{x:10,y:0},{x:10,y:10},{x:0,y:10},{x:0,y:0}]],[[{x:5,y:5},{x:7,y:5},{x:7,y:7},{x:5,y:7},{x:5,y:5}]]], deep: true}, + {type: 'geometrycollection', insertRaw: "GeomFromText('GEOMETRYCOLLECTION(POINT(10 10), POINT(30 30), LINESTRING(15 15, 20 20))')", expect: [{x:10,y:10},{x:30,y:30},[{x:15,y:15},{x:20,y:20}]], deep: true} +]; + +var table = 'type_casting'; + +var schema = []; +var inserts = []; + +tests.forEach(function(test, index) { + var escaped = test.insertRaw || connection.escape(test.insert); + + test.columnName = test.type + '_' + index; + + schema.push('`' + test.columnName + '` ' + test.type + ','); + inserts.push('`' + test.columnName + '` = ' + escaped); +}); + +var createTable = [ + 'CREATE TEMPORARY TABLE `' + table + '` (', + '`id` int(11) unsigned NOT NULL AUTO_INCREMENT,' + ].concat(schema).concat([ + 'PRIMARY KEY (`id`)', + ') ENGINE=InnoDB DEFAULT CHARSET=utf8' +]).join('\n'); + +connection.query(createTable); + +connection.query('INSERT INTO ' + table + ' SET' + inserts.join(',\n')); + +var row; +connection.query('SELECT * FROM type_casting', function(err, rows) { + if (err) throw err; + + row = rows[0]; +}); + +connection.end(); + +process.on('exit', function() { + tests.forEach(function(test) { + var expected = test.expect || test.insert; + var got = row[test.columnName]; + var message; + + if (expected instanceof Date) { + assert.equal(got instanceof Date, true, test.type); + + expected = String(expected); + got = String(got); + } else if (Buffer.isBuffer(expected)) { + assert.equal(Buffer.isBuffer(got), true, test.type); + + expected = String(Array.prototype.slice.call(expected)); + got = String(Array.prototype.slice.call(got)); + } + + if (test.deep) { + message = 'got: "' + JSON.stringify(got) + '" expected: "' + JSON.stringify(expected) + + '" test: ' + test.type + ''; + assert.deepEqual(expected, got, message); + } else { + message = 'got: "' + got + '" (' + (typeof got) + ') expected: "' + expected + + '" (' + (typeof expected) + ') test: ' + test.type + ''; + assert.strictEqual(expected, got, message); + } + }); +}); diff --git a/node_modules/mysql/test/integration/connection/test-unix-domain-socket.js b/node_modules/mysql/test/integration/connection/test-unix-domain-socket.js new file mode 100644 index 0000000..229395e --- /dev/null +++ b/node_modules/mysql/test/integration/connection/test-unix-domain-socket.js @@ -0,0 +1,32 @@ +var common = require('../../common'); +var connection = common.createConnection({socketPath: common.fakeServerSocket}); +var assert = require('assert'); + +var server = common.createFakeServer(); +var didConnect = false; +server.listen(common.fakeServerSocket, function(err) { + if (err) throw err; + + connection.connect(function(err) { + if (err) throw err; + + assert.equal(didConnect, false); + didConnect = true; + + connection.destroy(); + server.destroy(); + }); +}); + +var hadConnection = false; +server.on('connection', function(connection) { + connection.handshake(); + + assert.equal(hadConnection, false); + hadConnection = true; +}); + +process.on('exit', function() { + assert.equal(didConnect, true); + assert.equal(hadConnection, true); +}); diff --git a/node_modules/mysql/test/integration/connection/test-zerofill-results.js b/node_modules/mysql/test/integration/connection/test-zerofill-results.js new file mode 100644 index 0000000..49176da --- /dev/null +++ b/node_modules/mysql/test/integration/connection/test-zerofill-results.js @@ -0,0 +1,39 @@ +var common = require('../../common'); +var connection = common.createConnection(); +var assert = require('assert'); + +common.useTestDb(connection); + +var table = 'zerofill_results_test'; +connection.query([ + 'CREATE TEMPORARY TABLE `' + table + '` (', + '`id` int(11) unsigned NOT NULL AUTO_INCREMENT,', + '`num` int(5) UNSIGNED ZEROFILL,', + 'PRIMARY KEY (`id`)', + ') ENGINE=InnoDB DEFAULT CHARSET=utf8' +].join('\n')); + +var test_numbers = [ "00000", "00001", "00012", "00123", "01234", "12345", null ]; +var results = {}; + +for (var i = 0; i < test_numbers.length; i++) { + connection.query('INSERT INTO ' + table + ' SET ?', { + id: (i + 1), + num: (test_numbers[i] !== null ? parseInt(test_numbers[i], 10) : null) + }, function (err, _result) { + if (err) throw err; + }); +} +connection.query('SELECT * FROM ' + table, function (err, _results) { + if (err) throw err; + + results = _results; +}); +connection.end(); + +process.on('exit', function() { + assert.strictEqual(results.length, test_numbers.length); + for (var i = 0; i < results.length; i++) { + assert.strictEqual(test_numbers[results[i].id - 1], (results[i].num !== null ? "" + results[i].num : null)); + } +}); diff --git a/node_modules/mysql/test/integration/pool/test-connection-limit.js b/node_modules/mysql/test/integration/pool/test-connection-limit.js new file mode 100644 index 0000000..4e7c46e --- /dev/null +++ b/node_modules/mysql/test/integration/pool/test-connection-limit.js @@ -0,0 +1,26 @@ +var common = require('../../common'); +var assert = require('assert'); +var pool = common.createPool({ + connectionLimit : 1, + waitForConnections : false +}); + +pool.getConnection(function(err, connection) { + if (err) throw err; + pool.getConnection(function(err) { + assert.ok(err); + + var shouldGetConnection = false; + pool.config.waitForConnections = true; + pool.getConnection(function(err, connection2) { + if (err) throw err; + assert.ok(shouldGetConnection); + assert.strictEqual(connection, connection2); + + pool.end(); + }); + + shouldGetConnection = true; + connection.end(); + }); +}); diff --git a/node_modules/mysql/test/integration/pool/test-destroy-connection.js b/node_modules/mysql/test/integration/pool/test-destroy-connection.js new file mode 100644 index 0000000..2b47616 --- /dev/null +++ b/node_modules/mysql/test/integration/pool/test-destroy-connection.js @@ -0,0 +1,17 @@ +var common = require('../../common'); +var assert = require('assert'); +var Connection = require(common.lib + '/Connection'); +var pool = common.createPool(); + +pool.getConnection(function(err, connection) { + if (err) throw err; + assert.strictEqual(connection, pool._allConnections[0]); + connection.destroy(); + + assert.ok(pool._allConnections.length == 0); + assert.ok(connection._poolRemoved); + assert.strictEqual(connection.end, Connection.prototype.end); + assert.strictEqual(connection.destroy, Connection.prototype.destroy); + + pool.end(); +}); diff --git a/node_modules/mysql/test/integration/pool/test-end-empty.js b/node_modules/mysql/test/integration/pool/test-end-empty.js new file mode 100644 index 0000000..15bd9d5 --- /dev/null +++ b/node_modules/mysql/test/integration/pool/test-end-empty.js @@ -0,0 +1,13 @@ +var common = require('../../common'); +var assert = require('assert'); +var pool = common.createPool(); +var poolEnded = false; + +pool.end(function(err) { + poolEnded = true; + if (err) throw err; +}); + +process.on('exit', function() { + assert(poolEnded); +}); diff --git a/node_modules/mysql/test/integration/pool/test-get-connection.js b/node_modules/mysql/test/integration/pool/test-get-connection.js new file mode 100644 index 0000000..9739ad8 --- /dev/null +++ b/node_modules/mysql/test/integration/pool/test-get-connection.js @@ -0,0 +1,10 @@ +var common = require('../../common'); +var assert = require('assert'); +var Connection = require(common.lib + '/Connection'); +var pool = common.createPool(); + +pool.getConnection(function(err, connection) { + if (err) throw err; + assert.ok(connection instanceof Connection); + pool.end(); +}); diff --git a/node_modules/mysql/test/run.js b/node_modules/mysql/test/run.js new file mode 100644 index 0000000..a58d5ce --- /dev/null +++ b/node_modules/mysql/test/run.js @@ -0,0 +1,7 @@ +var options = {}; + +if (process.env.FILTER) { + options.include = new RegExp(process.env.FILTER + '.*\\.js$'); +} + +require('urun')(__dirname, options); diff --git a/node_modules/mysql/test/unit/protocol/test-Parser.js b/node_modules/mysql/test/unit/protocol/test-Parser.js new file mode 100644 index 0000000..fef7ae8 --- /dev/null +++ b/node_modules/mysql/test/unit/protocol/test-Parser.js @@ -0,0 +1,125 @@ +var common = require('../../common'); +var test = require('utest'); +var assert = require('assert'); +var Parser = require(common.lib + '/protocol/Parser'); + +function packet(bytes) { + var buffer = new Buffer(bytes); + var parser = new Parser(); + + parser.append(buffer); + + return parser; +} + +test('Parser', { + "parseBuffer: buffer won\'t change after appending another one": function() { + var startBuffer = new Buffer(5); + startBuffer.fill('a'); + + var parser = new Parser(); + parser.append(startBuffer); + + var value = parser.parseBuffer(4); + + assert.equal(value.toString(), 'aaaa'); + + parser.append(new Buffer('b')); + + assert.equal(value.toString(), 'aaaa'); + }, + + 'parseUnsignedNumber: 1 byte': function() { + var value = packet([5]).parseUnsignedNumber(1); + assert.equal(value, 5); + }, + + 'parseUnsignedNumber: 2 bytes': function() { + var value = packet([1, 1]).parseUnsignedNumber(2); + assert.equal(value, 256 + 1); + }, + + 'parseUnsignedNumber: honors offsets': function() { + var parser = packet([1, 2]); + assert.equal(parser.parseUnsignedNumber(1), 1); + assert.equal(parser.parseUnsignedNumber(1), 2); + }, + + 'parseLengthCodedNumber: 1 byte': function() { + var parser = packet([250]); + assert.strictEqual(parser.parseLengthCodedNumber(), 250); + }, + + 'parseLengthCodedNumber: 251 = null': function() { + var parser = packet([251]); + assert.strictEqual(parser.parseLengthCodedNumber(), null); + }, + + 'parseLengthCodedNumber: 252 = 16 bit': function() { + var parser = packet([252, 2, 1]); + var expected = + 2 * Math.pow(256, 0) + + 1 * Math.pow(256, 1); + assert.strictEqual(parser.parseLengthCodedNumber(), expected); + }, + + 'parseLengthCodedNumber: 253 = 24 bit': function() { + var parser = packet([253, 3, 2, 1]); + var expected = + 3 * Math.pow(256, 0) + + 2 * Math.pow(256, 1) + + 1 * Math.pow(256, 2); + + assert.strictEqual(parser.parseLengthCodedNumber(), expected); + }, + + 'parseLengthCodedNumber: 254 = 64 bit': function() { + var parser = packet([254, 8, 7, 6, 5, 4, 3, 2, 0]); + var expected = + 8 * Math.pow(256, 0) + + 7 * Math.pow(256, 1) + + 6 * Math.pow(256, 2) + + 5 * Math.pow(256, 3) + + 4 * Math.pow(256, 4) + + 3 * Math.pow(256, 5) + + 2 * Math.pow(256, 6) + + 0 * Math.pow(256, 7); + + assert.strictEqual(parser.parseLengthCodedNumber(), expected); + }, + + 'parseLengthCodedNumber: < 53 bit = no problemo': function() { + var parser = packet([254, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, 0x00]); + assert.strictEqual(parser.parseLengthCodedNumber(), Math.pow(2, 53) - 1); + }, + + 'parseLengthCodedNumber: 53 bit = Error': function() { + var parser = packet([254, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00]); + assert.throws(function() { + parser.parseLengthCodedNumber(); + }, /precision/i); + }, + + 'parseLengthCodedNumber: 255 = Error': function() { + var parser = packet([255]); + assert.throws(function() { + parser.parseLengthCodedNumber(); + }, /unexpected/i); + }, + + 'parsePacketTerminatedString: regular case': function() { + var parser = packet([0x48, 0x69]); + parser._packetEnd = 2; + + var str = parser.parsePacketTerminatedString(); + assert.equal(str, 'Hi'); + }, + + 'parsePacketTerminatedString: 0x00 terminated': function() { + var parser = packet([0x48, 0x69, 0x00]); + parser._packetEnd = 2; + + var str = parser.parsePacketTerminatedString(); + assert.equal(str, 'Hi'); + }, +}); diff --git a/node_modules/mysql/test/unit/protocol/test-SqlString.js b/node_modules/mysql/test/unit/protocol/test-SqlString.js new file mode 100644 index 0000000..ed156be --- /dev/null +++ b/node_modules/mysql/test/unit/protocol/test-SqlString.js @@ -0,0 +1,132 @@ +var common = require('../../common'); +var test = require('utest'); +var assert = require('assert'); +var SqlString = require(common.lib + '/protocol/SqlString'); + +test('SqlString.escape', { + 'undefined -> NULL': function() { + assert.equal(SqlString.escape(undefined), 'NULL'); + }, + + 'null -> NULL': function() { + assert.equal(SqlString.escape(null), 'NULL'); + }, + + 'booleans convert to strings': function() { + assert.equal(SqlString.escape(false), 'false'); + assert.equal(SqlString.escape(true), 'true'); + }, + + 'numbers convert to strings': function() { + assert.equal(SqlString.escape(5), '5'); + }, + + 'objects are turned into key value pairs': function() { + assert.equal(SqlString.escape({a: 'b', c: 'd'}), "`a` = 'b', `c` = 'd'"); + }, + + 'objects function properties are ignored': function() { + assert.equal(SqlString.escape({a: 'b', c: function() {}}), "`a` = 'b'"); + }, + + 'nested objects are cast to strings': function() { + assert.equal(SqlString.escape({a: {nested: true}}), "`a` = '[object Object]'"); + }, + + 'arrays are turned into lists': function() { + assert.equal(SqlString.escape([1, 2, 'c']), "1, 2, 'c'"); + }, + + 'nested arrays are turned into grouped lists': function() { + assert.equal(SqlString.escape([[1,2,3], [4,5,6], ['a', 'b', {nested: true}]]), "(1, 2, 3), (4, 5, 6), ('a', 'b', '[object Object]')"); + }, + + 'nested objects inside arrays are cast to strings': function() { + assert.equal(SqlString.escape([1, {nested: true}, 2]), "1, '[object Object]', 2"); + }, + + 'strings are quoted': function() { + assert.equal(SqlString.escape('Super'), "'Super'"); + }, + + '\0 gets escaped': function() { + assert.equal(SqlString.escape('Sup\0er'), "'Sup\\0er'"); + }, + + '\b gets escaped': function() { + assert.equal(SqlString.escape('Sup\ber'), "'Sup\\ber'"); + }, + + '\n gets escaped': function() { + assert.equal(SqlString.escape('Sup\ner'), "'Sup\\ner'"); + }, + + '\r gets escaped': function() { + assert.equal(SqlString.escape('Sup\rer'), "'Sup\\rer'"); + }, + + '\t gets escaped': function() { + assert.equal(SqlString.escape('Sup\ter'), "'Sup\\ter'"); + }, + + '\\ gets escaped': function() { + assert.equal(SqlString.escape('Sup\\er'), "'Sup\\\\er'"); + }, + + '\u001a (ascii 26) gets replaced with \\Z': function() { + assert.equal(SqlString.escape('Sup\u001aer'), "'Sup\\Zer'"); + }, + + 'single quotes get escaped': function() { + assert.equal(SqlString.escape('Sup\'er'), "'Sup\\'er'"); + }, + + 'double quotes get escaped': function() { + assert.equal(SqlString.escape('Sup"er'), "'Sup\\\"er'"); + }, + + 'dates are converted to YYYY-MM-DD HH:II:SS': function() { + var expected = '2012-05-07 11:42:03'; + var date = new Date(Date.UTC(2012, 4, 7, 11, 42, 3)); + var string = SqlString.escape(date); + + assert.strictEqual(string, "'" + expected + "'"); + }, + + 'buffers are converted to hex': function() { + var buffer = new Buffer([0, 1, 254, 255]); + var string = SqlString.escape(buffer); + + assert.strictEqual(string, "X'0001feff'"); + }, + + 'NaN -> NaN': function() { + assert.equal(SqlString.escape(NaN), 'NaN'); + }, + + 'Infinity -> Infinity': function() { + assert.equal(SqlString.escape(Infinity), 'Infinity'); + } +}); + +test('SqlString.format', { + 'question marks are replaced with escaped array values': function() { + var sql = SqlString.format('? and ?', ['a', 'b']); + assert.equal(sql, "'a' and 'b'"); + }, + + 'extra question marks are left untouched': function() { + var sql = SqlString.format('? and ?', ['a']); + assert.equal(sql, "'a' and ?"); + }, + + 'extra arguments are not used': function() { + var sql = SqlString.format('? and ?', ['a', 'b', 'c']); + assert.equal(sql, "'a' and 'b'"); + }, + + 'question marks within values do not cause issues': function() { + var sql = SqlString.format('? and ?', ['hello?', 'b']); + assert.equal(sql, "'hello?' and 'b'"); + }, +}); diff --git a/node_modules/mysql/test/unit/test-ConnectionConfig.js b/node_modules/mysql/test/unit/test-ConnectionConfig.js new file mode 100644 index 0000000..6102246 --- /dev/null +++ b/node_modules/mysql/test/unit/test-ConnectionConfig.js @@ -0,0 +1,29 @@ +var common = require('../common'); +var test = require('utest'); +var assert = require('assert'); +var Charsets = require(common.lib + '/protocol/constants/charsets'); +var ConnectionConfig = require(common.lib + '/ConnectionConfig'); + +test('ConnectionConfig#Constructor', { + 'takes user,pw,host,port,db from url string': function() { + var url = 'mysql://myuser:mypass@myhost:3333/mydb'; + var config = new ConnectionConfig(url); + + assert.equal(config.host, 'myhost'); + assert.equal(config.port, 3333); + assert.equal(config.user, 'myuser'); + assert.equal(config.password, 'mypass'); + assert.equal(config.database, 'mydb'); + }, + + 'allows additional options via url query': function() { + var url = 'mysql://myhost/mydb?debug=true&charset=BIG5_CHINESE_CI'; + var config = new ConnectionConfig(url); + + assert.equal(config.host, 'myhost'); + assert.equal(config.port, 3306); + assert.equal(config.database, 'mydb'); + assert.equal(config.debug, true); + assert.equal(config.charsetNumber, Charsets.BIG5_CHINESE_CI); + }, +}); diff --git a/node_modules/mysql/tool/generate-error-constants.js b/node_modules/mysql/tool/generate-error-constants.js new file mode 100644 index 0000000..b781134 --- /dev/null +++ b/node_modules/mysql/tool/generate-error-constants.js @@ -0,0 +1,28 @@ +#!/usr/bin/env node +var path = require('path'); +var script = path.basename(__filename); + +var errorFile = process.argv[2]; +if (!errorFile) { + console.error('Usage: ./' + script + ' path/to/errmsg-utf8.txt'); + process.exit(1); +} + +var fs = require('fs'); +var errors = fs.readFileSync(errorFile, 'utf-8'); + +var number = Number(errors.match(/start-error-number (\d+)/)[1]); +var codes = errors.match(/^([A-Z_]+)/mg) + +var source = + '// Generated by ' + script + ', do not modify by hand\n' + + codes + .map(function(code) { + return 'exports[' + (number++) + '] = \'' + code + '\';'; + }) + .join('\n'); + +var targetFile = path.join(__dirname, '../lib/protocol/constants/errors.js'); +fs.writeFileSync(targetFile, source, 'utf-8'); + +console.log('Wrote constants to ' + targetFile); diff --git a/node_modules/read.me b/node_modules/read.me new file mode 100644 index 0000000..075305b --- /dev/null +++ b/node_modules/read.me @@ -0,0 +1,8 @@ + +This directory allows you to package any Node modules (that your application +depends on) along with your application. + +If you just wish to install module(s) from the npm registry (npmjs.org), you +can specify the module name(s) and optionally version in your application's +dependency list file (../deplist.txt). + diff --git a/node_modules/socket.io/.npmignore b/node_modules/socket.io/.npmignore new file mode 100644 index 0000000..39e9864 --- /dev/null +++ b/node_modules/socket.io/.npmignore @@ -0,0 +1,3 @@ +support +test +examples diff --git a/node_modules/socket.io/.travis.yml b/node_modules/socket.io/.travis.yml new file mode 100644 index 0000000..56eca03 --- /dev/null +++ b/node_modules/socket.io/.travis.yml @@ -0,0 +1,6 @@ +language: node_js +node_js: + - 0.6 + +notifications: + irc: "irc.freenode.org#socket.io" diff --git a/node_modules/socket.io/History.md b/node_modules/socket.io/History.md new file mode 100644 index 0000000..e51c7e6 --- /dev/null +++ b/node_modules/socket.io/History.md @@ -0,0 +1,310 @@ + +0.9.13 / 2012-12-13 +=================== + + * package: fixed `base64id` requirement + +0.9.12 / 2012-12-13 +=================== + + * manager: fix for latest node which is returning a clone with `listeners` [viirya] + +0.9.11 / 2012-11-02 +=================== + + * package: move redis to optionalDependenices [3rd-Eden] + * bumped client + +0.9.10 / 2012-08-10 +=================== + + * Don't lowercase log messages + * Always set the HTTP response in case an error should be returned to the client + * Create or destroy the flash policy server on configuration change + * Honour configuration to disable flash policy server + * Add express 3.0 instructions on Readme.md + * Bump client + +0.9.9 / 2012-08-01 +================== + + * Fixed sync disconnect xhrs handling + * Put license text in its own file (#965) + * Add warning to .listen() to ease the migration to Express 3.x + * Restored compatibility with node 0.4.x + +0.9.8 / 2012-07-24 +================== + + * Bumped client. + +0.9.7 / 2012-07-24 +================== + + * Prevent crash when socket leaves a room twice. + * Corrects unsafe usage of for..in + * Fix for node 0.8 with `gzip compression` [vadimi] + * Update redis to support Node 0.8.x + * Made ID generation securely random + * Fix Redis Store race condition in manager onOpen unsubscribe callback + * Fix for EventEmitters always reusing the same Array instance for listeners + +0.9.6 / 2012-04-17 +================== + + * Fixed XSS in jsonp-polling. + +0.9.5 / 2012-04-05 +================== + + * Added test for polling and socket close. + * Ensure close upon request close. + * Fix disconnection reason being lost for polling transports. + * Ensure that polling transports work with Connection: close. + * Log disconnection reason. + +0.9.4 / 2012-04-01 +================== + + * Disconnecting from namespace improvement (#795) [DanielBaulig] + * Bumped client with polling reconnection loop (#438) + +0.9.3 / 2012-03-28 +================== + + * Fix "Syntax error" on FF Web Console with XHR Polling [mikito] + +0.9.2 / 2012-03-13 +================== + + * More sensible close `timeout default` (fixes disconnect issue) + +0.9.1-1 / 2012-03-02 +==================== + + * Bumped client with NPM dependency fix. + +0.9.1 / 2012-03-02 +================== + + * Changed heartbeat timeout and interval defaults (60 and 25 seconds) + * Make tests work both on 0.4 and 0.6 + * Updated client (improvements + bug fixes). + +0.9.0 / 2012-02-26 +================== + + * Make it possible to use a regexp to match the socket.io resource URL. + We need this because we have to prefix the socket.io URL with a variable ID. + * Supplemental fix to gavinuhma/authfix, it looks like the same Access-Control-Origin logic is needed in the http and xhr-polling transports + * Updated express dep for windows compatibility. + * Combine two substr calls into one in decodePayload to improve performance + * Minor documentation fix + * Minor. Conform to style of other files. + * Switching setting to 'match origin protocol' + * Revert "Fixes leaking Redis subscriptions for #663. The local flag was not getting passed through onClientDisconnect()." + * Revert "Handle leaked dispatch:[id] subscription." + * Merge pull request #667 from dshaw/patch/redis-disconnect + * Handle leaked dispatch:[id] subscription. + * Fixes leaking Redis subscriptions for #663. The local flag was not getting passed through onClientDisconnect(). + * Prevent memory leaking on uncompleted requests & add max post size limitation + * Fix for testcase + * Set Access-Control-Allow-Credentials true, regardless of cookie + * Remove assertvarnish from package as it breaks on 0.6 + * Correct irc channel + * Added proper return after reserved field error + * Fixes manager.js failure to close connection after transport error has happened + * Added implicit port 80 for origin checks. fixes #638 + * Fixed bug #432 in 0.8.7 + * Set Access-Control-Allow-Origin header to origin to enable withCredentials + * Adding configuration variable matchOriginProtocol + * Fixes location mismatch error in Safari. + * Use tty to detect if we should add colors or not by default. + * Updated the package location. + +0.8.7 / 2011-11-05 +================== + + * Fixed memory leaks in closed clients. + * Fixed memory leaks in namespaces. + * Fixed websocket handling for malformed requests from proxies. [einaros] + * Node 0.6 compatibility. [einaros] [3rd-Eden] + * Adapted tests and examples. + +0.8.6 / 2011-10-27 +================== + + * Added JSON decoding on jsonp-polling transport. + * Fixed README example. + * Major speed optimizations [3rd-Eden] [einaros] [visionmedia] + * Added decode/encode benchmarks [visionmedia] + * Added support for black-listing client sent events. + * Fixed logging options, closes #540 [3rd-Eden] + * Added vary header for gzip [3rd-Eden] + * Properly cleaned up async websocket / flashsocket tests, after patching node-websocket-client + * Patched to properly shut down when a finishClose call is made during connection establishment + * Added support for socket.io version on url and far-future Expires [3rd-Eden] [getify] + * Began IE10 compatibility [einaros] [tbranyen] + * Misc WebSocket fixes [einaros] + * Added UTF8 to respone headers for htmlfile [3rd-Eden] + +0.8.5 / 2011-10-07 +================== + + * Added websocket draft HyBi-16 support. [einaros] + * Fixed websocket continuation bugs. [einaros] + * Fixed flashsocket transport name. + * Fixed websocket tests. + * Ensured `parser#decodePayload` doesn't choke. + * Added http referrer verification to manager verifyOrigin. + * Added access control for cross domain xhr handshakes [3rd-Eden] + * Added support for automatic generation of socket.io files [3rd-Eden] + * Added websocket binary support [einaros] + * Added gzip support for socket.io.js [3rd-Eden] + * Expose socket.transport [3rd-Eden] + * Updated client. + +0.8.4 / 2011-09-06 +================== + + * Client build + +0.8.3 / 2011-09-03 +================== + + * Fixed `\n` parsing for non-JSON packets (fixes #479). + * Fixed parsing of certain unicode characters (fixes #451). + * Fixed transport message packet logging. + * Fixed emission of `error` event resulting in an uncaught exception if unhandled (fixes #476). + * Fixed; allow for falsy values as the configuration value of `log level` (fixes #491). + * Fixed repository URI in `package.json`. Fixes #504. + * Added text/plain content-type to handshake responses [einaros] + * Improved single byte writes [einaros] + * Updated socket.io-flashsocket default port from 843 to 10843 [3rd-Eden] + * Updated client. + +0.8.2 / 2011-08-29 +================== + + * Updated client. + +0.8.1 / 2011-08-29 +================== + + * Fixed utf8 bug in send framing in websocket [einaros] + * Fixed typo in docs [Znarkus] + * Fixed bug in send framing for over 64kB of data in websocket [einaros] + * Corrected ping handling in websocket transport [einaros] + +0.8.0 / 2011-08-28 +================== + + * Updated to work with two-level websocket versioning. [einaros] + * Added hybi07 support. [einaros] + * Added hybi10 support. [einaros] + * Added http referrer verification to manager.js verifyOrigin. [einaors] + +0.7.11 / 2011-08-27 +=================== + + * Updated socket.io-client. + +0.7.10 / 2011-08-27 +=================== + + * Updated socket.io-client. + +0.7.9 / 2011-08-12 +================== + + * Updated socket.io-client. + * Make sure we only do garbage collection when the server we receive is actually run. + +0.7.8 / 2011-08-08 +================== + + * Changed; make sure sio#listen passes options to both HTTP server and socket.io manager. + * Added docs for sio#listen. + * Added options parameter support for Manager constructor. + * Added memory leaks tests and test-leaks Makefile task. + * Removed auto npm-linking from make test. + * Make sure that you can disable heartbeats. [3rd-Eden] + * Fixed rooms memory leak [3rd-Eden] + * Send response once we got all POST data, not immediately [Pita] + * Fixed onLeave behavior with missing clientsk [3rd-Eden] + * Prevent duplicate references in rooms. + * Added alias for `to` to `in` and `in` to `to`. + * Fixed roomClients definition. + * Removed dependency on redis for installation without npm [3rd-Eden] + * Expose path and querystring in handshakeData [3rd-Eden] + +0.7.7 / 2011-07-12 +================== + + * Fixed double dispatch handling with emit to closed clients. + * Added test for emitting to closed clients to prevent regression. + * Fixed race condition in redis test. + * Changed Transport#end instrumentation. + * Leveraged $emit instead of emit internally. + * Made tests faster. + * Fixed double disconnect events. + * Fixed disconnect logic + * Simplified remote events handling in Socket. + * Increased testcase timeout. + * Fixed unknown room emitting (GH-291). [3rd-Eden] + * Fixed `address` in handshakeData. [3rd-Eden] + * Removed transports definition in chat example. + * Fixed room cleanup + * Fixed; make sure the client is cleaned up after booting. + * Make sure to mark the client as non-open if the connection is closed. + * Removed unneeded `buffer` declarations. + * Fixed; make sure to clear socket handlers and subscriptions upon transport close. + +0.7.6 / 2011-06-30 +================== + + * Fixed general dispatching when a client has closed. + +0.7.5 / 2011-06-30 +================== + + * Fixed dispatching to clients that are disconnected. + +0.7.4 / 2011-06-30 +================== + + * Fixed; only clear handlers if they were set. [level09] + +0.7.3 / 2011-06-30 +================== + + * Exposed handshake data to clients. + * Refactored dispatcher interface. + * Changed; Moved id generation method into the manager. + * Added sub-namespace authorization. [3rd-Eden] + * Changed; normalized SocketNamespace local eventing [dvv] + * Changed; Use packet.reason or default to 'packet' [3rd-Eden] + * Changed console.error to console.log. + * Fixed; bind both servers at the same time do that the test never times out. + * Added 304 support. + * Removed `Transport#name` for abstract interface. + * Changed; lazily require http and https module only when needed. [3rd-Eden] + +0.7.2 / 2011-06-22 +================== + + * Make sure to write a packet (of type `noop`) when closing a poll. + This solves a problem with cross-domain requests being flagged as aborted and + reconnection being triggered. + * Added `noop` message type. + +0.7.1 / 2011-06-21 +================== + + * Fixed cross-domain XHR. + * Added CORS test to xhr-polling suite. + +0.7.0 / 2010-06-21 +================== + + * http://socket.io/announcement.html diff --git a/node_modules/socket.io/LICENSE b/node_modules/socket.io/LICENSE new file mode 100644 index 0000000..0f4acd4 --- /dev/null +++ b/node_modules/socket.io/LICENSE @@ -0,0 +1,22 @@ +(The MIT License) + +Copyright (c) 2011 Guillermo Rauch + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +'Software'), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/node_modules/socket.io/Makefile b/node_modules/socket.io/Makefile new file mode 100644 index 0000000..832cba8 --- /dev/null +++ b/node_modules/socket.io/Makefile @@ -0,0 +1,31 @@ + +ALL_TESTS = $(shell find test/ -name '*.test.js') +ALL_BENCH = $(shell find benchmarks -name '*.bench.js') + +run-tests: + @./node_modules/.bin/expresso \ + -t 3000 \ + -I support \ + --serial \ + $(TESTFLAGS) \ + $(TESTS) + +test: + @$(MAKE) NODE_PATH=lib TESTS="$(ALL_TESTS)" run-tests + +test-cov: + @TESTFLAGS=--cov $(MAKE) test + +test-leaks: + @ls test/leaks/* | xargs node --expose_debug_as=debug --expose_gc + +run-bench: + @node $(PROFILEFLAGS) benchmarks/runner.js + +bench: + @$(MAKE) BENCHMARKS="$(ALL_BENCH)" run-bench + +profile: + @PROFILEFLAGS='--prof --trace-opt --trace-bailout --trace-deopt' $(MAKE) bench + +.PHONY: test bench profile diff --git a/node_modules/socket.io/Readme.md b/node_modules/socket.io/Readme.md new file mode 100644 index 0000000..41f21f6 --- /dev/null +++ b/node_modules/socket.io/Readme.md @@ -0,0 +1,364 @@ +# Socket.IO + +Socket.IO is a Node.JS project that makes WebSockets and realtime possible in +all browsers. It also enhances WebSockets by providing built-in multiplexing, +horizontal scalability, automatic JSON encoding/decoding, and more. + +## How to Install + +```bash +npm install socket.io +``` + +## How to use + +First, require `socket.io`: + +```js +var io = require('socket.io'); +``` + +Next, attach it to a HTTP/HTTPS server. If you're using the fantastic `express` +web framework: + +#### Express 3.x + +```js +var app = express() + , server = require('http').createServer(app) + , io = io.listen(server); + +server.listen(80); + +io.sockets.on('connection', function (socket) { + socket.emit('news', { hello: 'world' }); + socket.on('my other event', function (data) { + console.log(data); + }); +}); +``` + +#### Express 2.x + +```js +var app = express.createServer() + , io = io.listen(app); + +app.listen(80); + +io.sockets.on('connection', function (socket) { + socket.emit('news', { hello: 'world' }); + socket.on('my other event', function (data) { + console.log(data); + }); +}); +``` + +Finally, load it from the client side code: + +```html + + +``` + +For more thorough examples, look at the `examples/` directory. + +## Short recipes + +### Sending and receiving events. + +Socket.IO allows you to emit and receive custom events. +Besides `connect`, `message` and `disconnect`, you can emit custom events: + +```js +// note, io.listen() will create a http server for you +var io = require('socket.io').listen(80); + +io.sockets.on('connection', function (socket) { + io.sockets.emit('this', { will: 'be received by everyone' }); + + socket.on('private message', function (from, msg) { + console.log('I received a private message by ', from, ' saying ', msg); + }); + + socket.on('disconnect', function () { + io.sockets.emit('user disconnected'); + }); +}); +``` + +### Storing data associated to a client + +Sometimes it's necessary to store data associated with a client that's +necessary for the duration of the session. + +#### Server side + +```js +var io = require('socket.io').listen(80); + +io.sockets.on('connection', function (socket) { + socket.on('set nickname', function (name) { + socket.set('nickname', name, function () { socket.emit('ready'); }); + }); + + socket.on('msg', function () { + socket.get('nickname', function (err, name) { + console.log('Chat message by ', name); + }); + }); +}); +``` + +#### Client side + +```html + +``` + +### Restricting yourself to a namespace + +If you have control over all the messages and events emitted for a particular +application, using the default `/` namespace works. + +If you want to leverage 3rd-party code, or produce code to share with others, +socket.io provides a way of namespacing a `socket`. + +This has the benefit of `multiplexing` a single connection. Instead of +socket.io using two `WebSocket` connections, it'll use one. + +The following example defines a socket that listens on '/chat' and one for +'/news': + +#### Server side + +```js +var io = require('socket.io').listen(80); + +var chat = io + .of('/chat') + .on('connection', function (socket) { + socket.emit('a message', { that: 'only', '/chat': 'will get' }); + chat.emit('a message', { everyone: 'in', '/chat': 'will get' }); + }); + +var news = io + .of('/news'); + .on('connection', function (socket) { + socket.emit('item', { news: 'item' }); + }); +``` + +#### Client side: + +```html + +``` + +### Sending volatile messages. + +Sometimes certain messages can be dropped. Let's say you have an app that +shows realtime tweets for the keyword `bieber`. + +If a certain client is not ready to receive messages (because of network slowness +or other issues, or because he's connected through long polling and is in the +middle of a request-response cycle), if he doesn't receive ALL the tweets related +to bieber your application won't suffer. + +In that case, you might want to send those messages as volatile messages. + +#### Server side + +```js +var io = require('socket.io').listen(80); + +io.sockets.on('connection', function (socket) { + var tweets = setInterval(function () { + getBieberTweet(function (tweet) { + socket.volatile.emit('bieber tweet', tweet); + }); + }, 100); + + socket.on('disconnect', function () { + clearInterval(tweets); + }); +}); +``` + +#### Client side + +In the client side, messages are received the same way whether they're volatile +or not. + +### Getting acknowledgements + +Sometimes, you might want to get a callback when the client confirmed the message +reception. + +To do this, simply pass a function as the last parameter of `.send` or `.emit`. +What's more, when you use `.emit`, the acknowledgement is done by you, which +means you can also pass data along: + +#### Server side + +```js +var io = require('socket.io').listen(80); + +io.sockets.on('connection', function (socket) { + socket.on('ferret', function (name, fn) { + fn('woot'); + }); +}); +``` + +#### Client side + +```html + +``` + +### Broadcasting messages + +To broadcast, simply add a `broadcast` flag to `emit` and `send` method calls. +Broadcasting means sending a message to everyone else except for the socket +that starts it. + +#### Server side + +```js +var io = require('socket.io').listen(80); + +io.sockets.on('connection', function (socket) { + socket.broadcast.emit('user connected'); + socket.broadcast.json.send({ a: 'message' }); +}); +``` + +### Rooms + +Sometimes you want to put certain sockets in the same room, so that it's easy +to broadcast to all of them together. + +Think of this as built-in channels for sockets. Sockets `join` and `leave` +rooms in each socket. + +#### Server side + +```js +var io = require('socket.io').listen(80); + +io.sockets.on('connection', function (socket) { + socket.join('justin bieber fans'); + socket.broadcast.to('justin bieber fans').emit('new fan'); + io.sockets.in('rammstein fans').emit('new non-fan'); +}); +``` + +### Using it just as a cross-browser WebSocket + +If you just want the WebSocket semantics, you can do that too. +Simply leverage `send` and listen on the `message` event: + +#### Server side + +```js +var io = require('socket.io').listen(80); + +io.sockets.on('connection', function (socket) { + socket.on('message', function () { }); + socket.on('disconnect', function () { }); +}); +``` + +#### Client side + +```html + +``` + +### Changing configuration + +Configuration in socket.io is TJ-style: + +#### Server side + +```js +var io = require('socket.io').listen(80); + +io.configure(function () { + io.set('transports', ['websocket', 'flashsocket', 'xhr-polling']); +}); + +io.configure('development', function () { + io.set('transports', ['websocket', 'xhr-polling']); + io.enable('log'); +}); +``` + +## License + +(The MIT License) + +Copyright (c) 2011 Guillermo Rauch <guillermo@learnboost.com> + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +'Software'), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/node_modules/socket.io/benchmarks/decode.bench.js b/node_modules/socket.io/benchmarks/decode.bench.js new file mode 100644 index 0000000..4855d80 --- /dev/null +++ b/node_modules/socket.io/benchmarks/decode.bench.js @@ -0,0 +1,64 @@ + +/** + * Module dependencies. + */ + +var benchmark = require('benchmark') + , colors = require('colors') + , io = require('../') + , parser = io.parser + , suite = new benchmark.Suite('Decode packet'); + +suite.add('string', function () { + parser.decodePacket('4:::"2"'); +}); + +suite.add('event', function () { + parser.decodePacket('5:::{"name":"woot"}'); +}); + +suite.add('event+ack', function () { + parser.decodePacket('5:1+::{"name":"tobi"}'); +}); + +suite.add('event+data', function () { + parser.decodePacket('5:::{"name":"edwald","args":[{"a": "b"},2,"3"]}'); +}); + +suite.add('heartbeat', function () { + parser.decodePacket('2:::'); +}); + +suite.add('error', function () { + parser.decodePacket('7:::2+0'); +}); + +var payload = parser.encodePayload([ + parser.encodePacket({ type: 'message', data: '5', endpoint: '' }) + , parser.encodePacket({ type: 'message', data: '53d', endpoint: '' }) + , parser.encodePacket({ type: 'message', data: 'foobar', endpoint: '' }) + , parser.encodePacket({ type: 'message', data: 'foobarbaz', endpoint: '' }) + , parser.encodePacket({ type: 'message', data: 'foobarbazfoobarbaz', endpoint: '' }) + , parser.encodePacket({ type: 'message', data: 'foobarbaz', endpoint: '' }) + , parser.encodePacket({ type: 'message', data: 'foobar', endpoint: '' }) +]); + +suite.add('payload', function () { + parser.decodePayload(payload); +}); + +suite.on('cycle', function (bench, details) { + console.log('\n' + suite.name.grey, details.name.white.bold); + console.log([ + details.hz.toFixed(2).cyan + ' ops/sec'.grey + , details.count.toString().white + ' times executed'.grey + , 'benchmark took '.grey + details.times.elapsed.toString().white + ' sec.'.grey + , + ].join(', '.grey)); +}); + +if (!module.parent) { + suite.run(); +} else { + module.exports = suite; +} diff --git a/node_modules/socket.io/benchmarks/encode.bench.js b/node_modules/socket.io/benchmarks/encode.bench.js new file mode 100644 index 0000000..5037702 --- /dev/null +++ b/node_modules/socket.io/benchmarks/encode.bench.js @@ -0,0 +1,90 @@ + +/** + * Module dependencies. + */ + +var benchmark = require('benchmark') + , colors = require('colors') + , io = require('../') + , parser = io.parser + , suite = new benchmark.Suite('Encode packet'); + +suite.add('string', function () { + parser.encodePacket({ + type: 'json' + , endpoint: '' + , data: '2' + }); +}); + +suite.add('event', function () { + parser.encodePacket({ + type: 'event' + , name: 'woot' + , endpoint: '' + , args: [] + }); +}); + +suite.add('event+ack', function () { + parser.encodePacket({ + type: 'json' + , id: 1 + , ack: 'data' + , endpoint: '' + , data: { a: 'b' } + }); +}); + +suite.add('event+data', function () { + parser.encodePacket({ + type: 'event' + , name: 'edwald' + , endpoint: '' + , args: [{a: 'b'}, 2, '3'] + }); +}); + +suite.add('heartbeat', function () { + parser.encodePacket({ + type: 'heartbeat' + , endpoint: '' + }) +}); + +suite.add('error', function () { + parser.encodePacket({ + type: 'error' + , reason: 'unauthorized' + , advice: 'reconnect' + , endpoint: '' + }) +}) + +suite.add('payload', function () { + parser.encodePayload([ + parser.encodePacket({ type: 'message', data: '5', endpoint: '' }) + , parser.encodePacket({ type: 'message', data: '53d', endpoint: '' }) + , parser.encodePacket({ type: 'message', data: 'foobar', endpoint: '' }) + , parser.encodePacket({ type: 'message', data: 'foobarbaz', endpoint: '' }) + , parser.encodePacket({ type: 'message', data: 'foobarbazfoobarbaz', endpoint: '' }) + , parser.encodePacket({ type: 'message', data: 'foobarbaz', endpoint: '' }) + , parser.encodePacket({ type: 'message', data: 'foobar', endpoint: '' }) + ]); +}); + +suite.on('cycle', function (bench, details) { + console.log('\n' + suite.name.grey, details.name.white.bold); + console.log([ + details.hz.toFixed(2).cyan + ' ops/sec'.grey + , details.count.toString().white + ' times executed'.grey + , 'benchmark took '.grey + details.times.elapsed.toString().white + ' sec.'.grey + , + ].join(', '.grey)); +}); + +if (!module.parent) { + suite.run(); +} else { + module.exports = suite; +} diff --git a/node_modules/socket.io/benchmarks/runner.js b/node_modules/socket.io/benchmarks/runner.js new file mode 100644 index 0000000..81e55ca --- /dev/null +++ b/node_modules/socket.io/benchmarks/runner.js @@ -0,0 +1,55 @@ +/** + * Benchmark runner dependencies + */ + +var colors = require('colors') + , path = require('path'); + +/** + * Find all the benchmarks + */ + +var benchmarks_files = process.env.BENCHMARKS.split(' ') + , all = [].concat(benchmarks_files) + , first = all.shift() + , benchmarks = {}; + +// find the benchmarks and load them all in our obj +benchmarks_files.forEach(function (file) { + benchmarks[file] = require(path.join(__dirname, '..', file)); +}); + +// setup the complete listeners +benchmarks_files.forEach(function (file) { + var benchmark = benchmarks[file] + , next_file = all.shift() + , next = benchmarks[next_file]; + + /** + * Generate a oncomplete function for the tests, either we are done or we + * have more benchmarks to process. + */ + + function complete () { + if (!next) { + console.log( + '\n\nBenchmark completed in'.grey + , (Date.now() - start).toString().green + ' ms'.grey + ); + } else { + console.log('\nStarting benchmark '.grey + next_file.yellow); + next.run(); + } + } + + // attach the listener + benchmark.on('complete', complete); +}); + +/** + * Start the benchmark + */ + +var start = Date.now(); +console.log('Starting benchmark '.grey + first.yellow); +benchmarks[first].run(); diff --git a/node_modules/socket.io/index.js b/node_modules/socket.io/index.js new file mode 100644 index 0000000..cc00c10 --- /dev/null +++ b/node_modules/socket.io/index.js @@ -0,0 +1,8 @@ + +/*! + * socket.io-node + * Copyright(c) 2011 LearnBoost + * MIT Licensed + */ + +module.exports = require('./lib/socket.io'); diff --git a/node_modules/socket.io/lib/index.js b/node_modules/socket.io/lib/index.js new file mode 100644 index 0000000..d19bf85 --- /dev/null +++ b/node_modules/socket.io/lib/index.js @@ -0,0 +1,131 @@ + +/** + * Module dependencies. + */ + +var http = require('http') + , engine = require('engine.io') + , Client = require('./client') + , Namespace = require('./namespace') + , debug = require('debug')('socket.io:server'); + +/** + * Read client + */ + +var client = { + source: require('socket.io-client').source, + version: require('socket.io-client/package').version +}; + +/** + * Server constructor. + * + * @param {http.Server|Number|Object} http server, port or options + * @param {Object} options + * @api public + */ + +function Server(srv, opts){ + if (!(this instanceof Server)) return new Server(srv, opts); + if ('object' == typeof srv && !srv.listen) { + opts = srv; + srv = null; + } + opts = opts || {}; + if (srv) this.attach(srv, opts); + this.sockets = this.of('/'); + this.client(true); +} + +/** + * Serve client code. + * + * @api public + */ + + + +/** + * Attaches socket.io to a server or port. + * + * @param {http.Server|Number} server or port + * @param {Object} options + * @api public + */ + +Server.prototype.attach = function(srv, opts){ + if ('number' == typeof srv) { + debug('creating engine.io on port %d', srv); + srv = engine.listen(srv, opts); + } else { + debug('creating engine.io instance', opts); + srv = engine.attach(srv, opts); + } + this.bind(srv); +}; + +/** + * Binds socket.io to an engine.io instance. + * + * @param {engine.Server} engine.io (or compatible) server + * @api public + */ + +Server.prototype.bind = function(engine){ + this.engine = engine; + this.engine.on('connection', this.onconnection.bind(this)); +}; + +/** + * Called with each incoming transport connection. + * + * @api public + */ + +Server.prototype.onconnection = function(conn){ + debug('incoming connection with id %s', conn.id); + var client = new Client(this, conn); + client.connect('/'); + this.emit('client', client); +}; + +/** + * Looks up a namespace. + * + * @param {String} nsp name + * @api public + */ + +Server.prototype.of = function(name){ + if (!this.nsps[name]) { + debug('initializing namespace %s', name); + var nsp = new Namespace(this, name); + this.nsps[name] = nsp; + } + return this.nsps[name]; +}; + +/** + * Expose main namespace (/). + */ + +['use', 'to', 'in', 'emit', 'send', 'write'].forEach(function(name){ + Server.prototype[name] = function(){ + var nsp = this.sockets[name]; + return nsp.apply(this.sockets, arguments); + }; +}); + +Namespace.flags.forEach(function(flag){ + Server.prototype.__defineGetter__(flag, function(name){ + this.flags.push(name); + return this; + }); +}); + +/** + * BC with `io.listen` + */ + +Server.listen = Server; diff --git a/node_modules/socket.io/lib/logger.js b/node_modules/socket.io/lib/logger.js new file mode 100644 index 0000000..49d02c9 --- /dev/null +++ b/node_modules/socket.io/lib/logger.js @@ -0,0 +1,97 @@ + +/*! + * socket.io-node + * Copyright(c) 2011 LearnBoost + * MIT Licensed + */ + +/** + * Module dependencies. + */ + +var util = require('./util') + , toArray = util.toArray; + +/** + * Log levels. + */ + +var levels = [ + 'error' + , 'warn' + , 'info' + , 'debug' +]; + +/** + * Colors for log levels. + */ + +var colors = [ + 31 + , 33 + , 36 + , 90 +]; + +/** + * Pads the nice output to the longest log level. + */ + +function pad (str) { + var max = 0; + + for (var i = 0, l = levels.length; i < l; i++) + max = Math.max(max, levels[i].length); + + if (str.length < max) + return str + new Array(max - str.length + 1).join(' '); + + return str; +}; + +/** + * Logger (console). + * + * @api public + */ + +var Logger = module.exports = function (opts) { + opts = opts || {} + this.colors = false !== opts.colors; + this.level = 3; + this.enabled = true; +}; + +/** + * Log method. + * + * @api public + */ + +Logger.prototype.log = function (type) { + var index = levels.indexOf(type); + + if (index > this.level || !this.enabled) + return this; + + console.log.apply( + console + , [this.colors + ? ' \033[' + colors[index] + 'm' + pad(type) + ' -\033[39m' + : type + ':' + ].concat(toArray(arguments).slice(1)) + ); + + return this; +}; + +/** + * Generate methods. + */ + +levels.forEach(function (name) { + Logger.prototype[name] = function () { + this.log.apply(this, [name].concat(toArray(arguments))); + }; +}); diff --git a/node_modules/socket.io/lib/manager.js b/node_modules/socket.io/lib/manager.js new file mode 100644 index 0000000..b3ea7d9 --- /dev/null +++ b/node_modules/socket.io/lib/manager.js @@ -0,0 +1,1026 @@ +/*! + * socket.io-node + * Copyright(c) 2011 LearnBoost + * MIT Licensed + */ + +/** + * Module dependencies. + */ + +var fs = require('fs') + , url = require('url') + , tty = require('tty') + , crypto = require('crypto') + , util = require('./util') + , store = require('./store') + , client = require('socket.io-client') + , transports = require('./transports') + , Logger = require('./logger') + , Socket = require('./socket') + , MemoryStore = require('./stores/memory') + , SocketNamespace = require('./namespace') + , Static = require('./static') + , EventEmitter = process.EventEmitter; + +/** + * Export the constructor. + */ + +exports = module.exports = Manager; + +/** + * Default transports. + */ + +var defaultTransports = exports.defaultTransports = [ + 'websocket' + , 'htmlfile' + , 'xhr-polling' + , 'jsonp-polling' +]; + +/** + * Inherited defaults. + */ + +var parent = module.parent.exports + , protocol = parent.protocol + , jsonpolling_re = /^\d+$/; + +/** + * Manager constructor. + * + * @param {HTTPServer} server + * @param {Object} options, optional + * @api public + */ + +function Manager (server, options) { + this.server = server; + this.namespaces = {}; + this.sockets = this.of(''); + this.settings = { + origins: '*:*' + , log: true + , store: new MemoryStore + , logger: new Logger + , static: new Static(this) + , heartbeats: true + , resource: '/socket.io' + , transports: defaultTransports + , authorization: false + , blacklist: ['disconnect'] + , 'log level': 3 + , 'log colors': tty.isatty(process.stdout.fd) + , 'close timeout': 60 + , 'heartbeat interval': 25 + , 'heartbeat timeout': 60 + , 'polling duration': 20 + , 'flash policy server': true + , 'flash policy port': 10843 + , 'destroy upgrade': true + , 'destroy buffer size': 10E7 + , 'browser client': true + , 'browser client cache': true + , 'browser client minification': false + , 'browser client etag': false + , 'browser client expires': 315360000 + , 'browser client gzip': false + , 'browser client handler': false + , 'client store expiration': 15 + , 'match origin protocol': false + }; + + for (var i in options) { + if (options.hasOwnProperty(i)) { + this.settings[i] = options[i]; + } + } + + var self = this; + + // default error handler + server.on('error', function(err) { + self.log.warn('error raised: ' + err); + }); + + this.initStore(); + + this.on('set:store', function() { + self.initStore(); + }); + + // reset listeners + this.oldListeners = server.listeners('request').splice(0); + server.removeAllListeners('request'); + + server.on('request', function (req, res) { + self.handleRequest(req, res); + }); + + server.on('upgrade', function (req, socket, head) { + self.handleUpgrade(req, socket, head); + }); + + server.on('close', function () { + clearInterval(self.gc); + }); + + server.once('listening', function () { + self.gc = setInterval(self.garbageCollection.bind(self), 10000); + }); + + for (var i in transports) { + if (transports.hasOwnProperty(i)) { + if (transports[i].init) { + transports[i].init(this); + } + } + } + + // forward-compatibility with 1.0 + var self = this; + this.sockets.on('connection', function (conn) { + self.emit('connection', conn); + }); + + this.sequenceNumber = Date.now() | 0; + + this.log.info('socket.io started'); +}; + +Manager.prototype.__proto__ = EventEmitter.prototype + +/** + * Store accessor shortcut. + * + * @api public + */ + +Manager.prototype.__defineGetter__('store', function () { + var store = this.get('store'); + store.manager = this; + return store; +}); + +/** + * Logger accessor. + * + * @api public + */ + +Manager.prototype.__defineGetter__('log', function () { + var logger = this.get('logger'); + + logger.level = this.get('log level') || -1; + logger.colors = this.get('log colors'); + logger.enabled = this.enabled('log'); + + return logger; +}); + +/** + * Static accessor. + * + * @api public + */ + +Manager.prototype.__defineGetter__('static', function () { + return this.get('static'); +}); + +/** + * Get settings. + * + * @api public + */ + +Manager.prototype.get = function (key) { + return this.settings[key]; +}; + +/** + * Set settings + * + * @api public + */ + +Manager.prototype.set = function (key, value) { + if (arguments.length == 1) return this.get(key); + this.settings[key] = value; + this.emit('set:' + key, this.settings[key], key); + return this; +}; + +/** + * Enable a setting + * + * @api public + */ + +Manager.prototype.enable = function (key) { + this.settings[key] = true; + this.emit('set:' + key, this.settings[key], key); + return this; +}; + +/** + * Disable a setting + * + * @api public + */ + +Manager.prototype.disable = function (key) { + this.settings[key] = false; + this.emit('set:' + key, this.settings[key], key); + return this; +}; + +/** + * Checks if a setting is enabled + * + * @api public + */ + +Manager.prototype.enabled = function (key) { + return !!this.settings[key]; +}; + +/** + * Checks if a setting is disabled + * + * @api public + */ + +Manager.prototype.disabled = function (key) { + return !this.settings[key]; +}; + +/** + * Configure callbacks. + * + * @api public + */ + +Manager.prototype.configure = function (env, fn) { + if ('function' == typeof env) { + env.call(this); + } else if (env == (process.env.NODE_ENV || 'development')) { + fn.call(this); + } + + return this; +}; + +/** + * Initializes everything related to the message dispatcher. + * + * @api private + */ + +Manager.prototype.initStore = function () { + this.handshaken = {}; + this.connected = {}; + this.open = {}; + this.closed = {}; + this.rooms = {}; + this.roomClients = {}; + + var self = this; + + this.store.subscribe('handshake', function (id, data) { + self.onHandshake(id, data); + }); + + this.store.subscribe('connect', function (id) { + self.onConnect(id); + }); + + this.store.subscribe('open', function (id) { + self.onOpen(id); + }); + + this.store.subscribe('join', function (id, room) { + self.onJoin(id, room); + }); + + this.store.subscribe('leave', function (id, room) { + self.onLeave(id, room); + }); + + this.store.subscribe('close', function (id) { + self.onClose(id); + }); + + this.store.subscribe('dispatch', function (room, packet, volatile, exceptions) { + self.onDispatch(room, packet, volatile, exceptions); + }); + + this.store.subscribe('disconnect', function (id) { + self.onDisconnect(id); + }); +}; + +/** + * Called when a client handshakes. + * + * @param text + */ + +Manager.prototype.onHandshake = function (id, data) { + this.handshaken[id] = data; +}; + +/** + * Called when a client connects (ie: transport first opens) + * + * @api private + */ + +Manager.prototype.onConnect = function (id) { + this.connected[id] = true; +}; + +/** + * Called when a client opens a request in a different node. + * + * @api private + */ + +Manager.prototype.onOpen = function (id) { + this.open[id] = true; + + if (this.closed[id]) { + var self = this; + + this.store.unsubscribe('dispatch:' + id, function () { + var transport = self.transports[id]; + if (self.closed[id] && self.closed[id].length && transport) { + + // if we have buffered messages that accumulate between calling + // onOpen an this async callback, send them if the transport is + // still open, otherwise leave them buffered + if (transport.open) { + transport.payload(self.closed[id]); + self.closed[id] = []; + } + } + }); + } + + // clear the current transport + if (this.transports[id]) { + this.transports[id].discard(); + this.transports[id] = null; + } +}; + +/** + * Called when a message is sent to a namespace and/or room. + * + * @api private + */ + +Manager.prototype.onDispatch = function (room, packet, volatile, exceptions) { + if (this.rooms[room]) { + for (var i = 0, l = this.rooms[room].length; i < l; i++) { + var id = this.rooms[room][i]; + + if (!~exceptions.indexOf(id)) { + if (this.transports[id] && this.transports[id].open) { + this.transports[id].onDispatch(packet, volatile); + } else if (!volatile) { + this.onClientDispatch(id, packet); + } + } + } + } +}; + +/** + * Called when a client joins a nsp / room. + * + * @api private + */ + +Manager.prototype.onJoin = function (id, name) { + if (!this.roomClients[id]) { + this.roomClients[id] = {}; + } + + if (!this.rooms[name]) { + this.rooms[name] = []; + } + + if (!~this.rooms[name].indexOf(id)) { + this.rooms[name].push(id); + this.roomClients[id][name] = true; + } +}; + +/** + * Called when a client leaves a nsp / room. + * + * @param private + */ + +Manager.prototype.onLeave = function (id, room) { + if (this.rooms[room]) { + var index = this.rooms[room].indexOf(id); + + if (index >= 0) { + this.rooms[room].splice(index, 1); + } + + if (!this.rooms[room].length) { + delete this.rooms[room]; + } + + if (this.roomClients[id]) { + delete this.roomClients[id][room]; + } + } +}; + +/** + * Called when a client closes a request in different node. + * + * @api private + */ + +Manager.prototype.onClose = function (id) { + if (this.open[id]) { + delete this.open[id]; + } + + this.closed[id] = []; + + var self = this; + + this.store.subscribe('dispatch:' + id, function (packet, volatile) { + if (!volatile) { + self.onClientDispatch(id, packet); + } + }); +}; + +/** + * Dispatches a message for a closed client. + * + * @api private + */ + +Manager.prototype.onClientDispatch = function (id, packet) { + if (this.closed[id]) { + this.closed[id].push(packet); + } +}; + +/** + * Receives a message for a client. + * + * @api private + */ + +Manager.prototype.onClientMessage = function (id, packet) { + if (this.namespaces[packet.endpoint]) { + this.namespaces[packet.endpoint].handlePacket(id, packet); + } +}; + +/** + * Fired when a client disconnects (not triggered). + * + * @api private + */ + +Manager.prototype.onClientDisconnect = function (id, reason) { + for (var name in this.namespaces) { + if (this.namespaces.hasOwnProperty(name)) { + this.namespaces[name].handleDisconnect(id, reason, typeof this.roomClients[id] !== 'undefined' && + typeof this.roomClients[id][name] !== 'undefined'); + } + } + + this.onDisconnect(id); +}; + +/** + * Called when a client disconnects. + * + * @param text + */ + +Manager.prototype.onDisconnect = function (id, local) { + delete this.handshaken[id]; + + if (this.open[id]) { + delete this.open[id]; + } + + if (this.connected[id]) { + delete this.connected[id]; + } + + if (this.transports[id]) { + this.transports[id].discard(); + delete this.transports[id]; + } + + if (this.closed[id]) { + delete this.closed[id]; + } + + if (this.roomClients[id]) { + for (var room in this.roomClients[id]) { + if (this.roomClients[id].hasOwnProperty(room)) { + this.onLeave(id, room); + } + } + delete this.roomClients[id] + } + + this.store.destroyClient(id, this.get('client store expiration')); + + this.store.unsubscribe('dispatch:' + id); + + if (local) { + this.store.unsubscribe('message:' + id); + this.store.unsubscribe('disconnect:' + id); + } +}; + +/** + * Handles an HTTP request. + * + * @api private + */ + +Manager.prototype.handleRequest = function (req, res) { + var data = this.checkRequest(req); + + if (!data) { + for (var i = 0, l = this.oldListeners.length; i < l; i++) { + this.oldListeners[i].call(this.server, req, res); + } + + return; + } + + if (data.static || !data.transport && !data.protocol) { + if (data.static && this.enabled('browser client')) { + this.static.write(data.path, req, res); + } else { + res.writeHead(200); + res.end('Welcome to socket.io.'); + + this.log.info('unhandled socket.io url'); + } + + return; + } + + if (data.protocol != protocol) { + res.writeHead(500); + res.end('Protocol version not supported.'); + + this.log.info('client protocol version unsupported'); + } else { + if (data.id) { + this.handleHTTPRequest(data, req, res); + } else { + this.handleHandshake(data, req, res); + } + } +}; + +/** + * Handles an HTTP Upgrade. + * + * @api private + */ + +Manager.prototype.handleUpgrade = function (req, socket, head) { + var data = this.checkRequest(req) + , self = this; + + if (!data) { + if (this.enabled('destroy upgrade')) { + socket.end(); + this.log.debug('destroying non-socket.io upgrade'); + } + + return; + } + + req.head = head; + this.handleClient(data, req); +}; + +/** + * Handles a normal handshaken HTTP request (eg: long-polling) + * + * @api private + */ + +Manager.prototype.handleHTTPRequest = function (data, req, res) { + req.res = res; + this.handleClient(data, req); +}; + +/** + * Intantiantes a new client. + * + * @api private + */ + +Manager.prototype.handleClient = function (data, req) { + var socket = req.socket + , store = this.store + , self = this; + + // handle sync disconnect xhrs + if (undefined != data.query.disconnect) { + if (this.transports[data.id] && this.transports[data.id].open) { + this.transports[data.id].onForcedDisconnect(); + } else { + this.store.publish('disconnect-force:' + data.id); + } + req.res.writeHead(200); + req.res.end(); + return; + } + + if (!~this.get('transports').indexOf(data.transport)) { + this.log.warn('unknown transport: "' + data.transport + '"'); + req.connection.end(); + return; + } + + var transport = new transports[data.transport](this, data, req) + , handshaken = this.handshaken[data.id]; + + if (transport.disconnected) { + // failed during transport setup + req.connection.end(); + return; + } + if (handshaken) { + if (transport.open) { + if (this.closed[data.id] && this.closed[data.id].length) { + transport.payload(this.closed[data.id]); + this.closed[data.id] = []; + } + + this.onOpen(data.id); + this.store.publish('open', data.id); + this.transports[data.id] = transport; + } + + if (!this.connected[data.id]) { + this.onConnect(data.id); + this.store.publish('connect', data.id); + + // flag as used + delete handshaken.issued; + this.onHandshake(data.id, handshaken); + this.store.publish('handshake', data.id, handshaken); + + // initialize the socket for all namespaces + for (var i in this.namespaces) { + if (this.namespaces.hasOwnProperty(i)) { + var socket = this.namespaces[i].socket(data.id, true); + + // echo back connect packet and fire connection event + if (i === '') { + this.namespaces[i].handlePacket(data.id, { type: 'connect' }); + } + } + } + + this.store.subscribe('message:' + data.id, function (packet) { + self.onClientMessage(data.id, packet); + }); + + this.store.subscribe('disconnect:' + data.id, function (reason) { + self.onClientDisconnect(data.id, reason); + }); + } + } else { + if (transport.open) { + transport.error('client not handshaken', 'reconnect'); + } + + transport.discard(); + } +}; + +/** + * Generates a session id. + * + * @api private + */ + +Manager.prototype.generateId = function () { + var rand = new Buffer(15); // multiple of 3 for base64 + if (!rand.writeInt32BE) { + return Math.abs(Math.random() * Math.random() * Date.now() | 0).toString() + + Math.abs(Math.random() * Math.random() * Date.now() | 0).toString(); + } + this.sequenceNumber = (this.sequenceNumber + 1) | 0; + rand.writeInt32BE(this.sequenceNumber, 11); + if (crypto.randomBytes) { + crypto.randomBytes(12).copy(rand); + } else { + // not secure for node 0.4 + [0, 4, 8].forEach(function(i) { + rand.writeInt32BE(Math.random() * Math.pow(2, 32) | 0, i); + }); + } + return rand.toString('base64').replace(/\//g, '_').replace(/\+/g, '-'); +}; + +/** + * Handles a handshake request. + * + * @api private + */ + +Manager.prototype.handleHandshake = function (data, req, res) { + var self = this + , origin = req.headers.origin + , headers = { + 'Content-Type': 'text/plain' + }; + + function writeErr (status, message) { + if (data.query.jsonp && jsonpolling_re.test(data.query.jsonp)) { + res.writeHead(200, { 'Content-Type': 'application/javascript' }); + res.end('io.j[' + data.query.jsonp + '](new Error("' + message + '"));'); + } else { + res.writeHead(status, headers); + res.end(message); + } + }; + + function error (err) { + writeErr(500, 'handshake error'); + self.log.warn('handshake error ' + err); + }; + + if (!this.verifyOrigin(req)) { + writeErr(403, 'handshake bad origin'); + return; + } + + var handshakeData = this.handshakeData(data); + + if (origin) { + // https://developer.mozilla.org/En/HTTP_Access_Control + headers['Access-Control-Allow-Origin'] = origin; + headers['Access-Control-Allow-Credentials'] = 'true'; + } + + this.authorize(handshakeData, function (err, authorized, newData) { + if (err) return error(err); + + if (authorized) { + var id = self.generateId() + , hs = [ + id + , self.enabled('heartbeats') ? self.get('heartbeat timeout') || '' : '' + , self.get('close timeout') || '' + , self.transports(data).join(',') + ].join(':'); + + if (data.query.jsonp && jsonpolling_re.test(data.query.jsonp)) { + hs = 'io.j[' + data.query.jsonp + '](' + JSON.stringify(hs) + ');'; + res.writeHead(200, { 'Content-Type': 'application/javascript' }); + } else { + res.writeHead(200, headers); + } + + res.end(hs); + + self.onHandshake(id, newData || handshakeData); + self.store.publish('handshake', id, newData || handshakeData); + + self.log.info('handshake authorized', id); + } else { + writeErr(403, 'handshake unauthorized'); + self.log.info('handshake unauthorized'); + } + }) +}; + +/** + * Gets normalized handshake data + * + * @api private + */ + +Manager.prototype.handshakeData = function (data) { + var connection = data.request.connection + , connectionAddress + , date = new Date; + + if (connection.remoteAddress) { + connectionAddress = { + address: connection.remoteAddress + , port: connection.remotePort + }; + } else if (connection.socket && connection.socket.remoteAddress) { + connectionAddress = { + address: connection.socket.remoteAddress + , port: connection.socket.remotePort + }; + } + + return { + headers: data.headers + , address: connectionAddress + , time: date.toString() + , query: data.query + , url: data.request.url + , xdomain: !!data.request.headers.origin + , secure: data.request.connection.secure + , issued: +date + }; +}; + +/** + * Verifies the origin of a request. + * + * @api private + */ + +Manager.prototype.verifyOrigin = function (request) { + var origin = request.headers.origin || request.headers.referer + , origins = this.get('origins'); + + if (origin === 'null') origin = '*'; + + if (origins.indexOf('*:*') !== -1) { + return true; + } + + if (origin) { + try { + var parts = url.parse(origin); + parts.port = parts.port || 80; + var ok = + ~origins.indexOf(parts.hostname + ':' + parts.port) || + ~origins.indexOf(parts.hostname + ':*') || + ~origins.indexOf('*:' + parts.port); + if (!ok) this.log.warn('illegal origin: ' + origin); + return ok; + } catch (ex) { + this.log.warn('error parsing origin'); + } + } + else { + this.log.warn('origin missing from handshake, yet required by config'); + } + return false; +}; + +/** + * Handles an incoming packet. + * + * @api private + */ + +Manager.prototype.handlePacket = function (sessid, packet) { + this.of(packet.endpoint || '').handlePacket(sessid, packet); +}; + +/** + * Performs authentication. + * + * @param Object client request data + * @api private + */ + +Manager.prototype.authorize = function (data, fn) { + if (this.get('authorization')) { + var self = this; + + this.get('authorization').call(this, data, function (err, authorized) { + self.log.debug('client ' + authorized ? 'authorized' : 'unauthorized'); + fn(err, authorized); + }); + } else { + this.log.debug('client authorized'); + fn(null, true); + } + + return this; +}; + +/** + * Retrieves the transports adviced to the user. + * + * @api private + */ + +Manager.prototype.transports = function (data) { + var transp = this.get('transports') + , ret = []; + + for (var i = 0, l = transp.length; i < l; i++) { + var transport = transp[i]; + + if (transport) { + if (!transport.checkClient || transport.checkClient(data)) { + ret.push(transport); + } + } + } + + return ret; +}; + +/** + * Checks whether a request is a socket.io one. + * + * @return {Object} a client request data object or `false` + * @api private + */ + +var regexp = /^\/([^\/]+)\/?([^\/]+)?\/?([^\/]+)?\/?$/ + +Manager.prototype.checkRequest = function (req) { + var resource = this.get('resource'); + + var match; + if (typeof resource === 'string') { + match = req.url.substr(0, resource.length); + if (match !== resource) match = null; + } else { + match = resource.exec(req.url); + if (match) match = match[0]; + } + + if (match) { + var uri = url.parse(req.url.substr(match.length), true) + , path = uri.pathname || '' + , pieces = path.match(regexp); + + // client request data + var data = { + query: uri.query || {} + , headers: req.headers + , request: req + , path: path + }; + + if (pieces) { + data.protocol = Number(pieces[1]); + data.transport = pieces[2]; + data.id = pieces[3]; + data.static = !!this.static.has(path); + }; + + return data; + } + + return false; +}; + +/** + * Declares a socket namespace + * + * @api public + */ + +Manager.prototype.of = function (nsp) { + if (this.namespaces[nsp]) { + return this.namespaces[nsp]; + } + + return this.namespaces[nsp] = new SocketNamespace(this, nsp); +}; + +/** + * Perform garbage collection on long living objects and properties that cannot + * be removed automatically. + * + * @api private + */ + +Manager.prototype.garbageCollection = function () { + // clean up unused handshakes + var ids = Object.keys(this.handshaken) + , i = ids.length + , now = Date.now() + , handshake; + + while (i--) { + handshake = this.handshaken[ids[i]]; + + if ('issued' in handshake && (now - handshake.issued) >= 3E4) { + this.onDisconnect(ids[i]); + } + } +}; diff --git a/node_modules/socket.io/lib/namespace.js b/node_modules/socket.io/lib/namespace.js new file mode 100644 index 0000000..6e1e1c9 --- /dev/null +++ b/node_modules/socket.io/lib/namespace.js @@ -0,0 +1,355 @@ +/** + * Module dependencies. + */ + +var Socket = require('./socket') + , EventEmitter = process.EventEmitter + , parser = require('./parser') + , util = require('./util'); + +/** + * Exports the constructor. + */ + +exports = module.exports = SocketNamespace; + +/** + * Constructor. + * + * @api public. + */ + +function SocketNamespace (mgr, name) { + this.manager = mgr; + this.name = name || ''; + this.sockets = {}; + this.auth = false; + this.setFlags(); +}; + +/** + * Inherits from EventEmitter. + */ + +SocketNamespace.prototype.__proto__ = EventEmitter.prototype; + +/** + * Copies emit since we override it. + * + * @api private + */ + +SocketNamespace.prototype.$emit = EventEmitter.prototype.emit; + +/** + * Retrieves all clients as Socket instances as an array. + * + * @api public + */ + +SocketNamespace.prototype.clients = function (room) { + var room = this.name + (room !== undefined ? + '/' + room : ''); + + if (!this.manager.rooms[room]) { + return []; + } + + return this.manager.rooms[room].map(function (id) { + return this.socket(id); + }, this); +}; + +/** + * Access logger interface. + * + * @api public + */ + +SocketNamespace.prototype.__defineGetter__('log', function () { + return this.manager.log; +}); + +/** + * Access store. + * + * @api public + */ + +SocketNamespace.prototype.__defineGetter__('store', function () { + return this.manager.store; +}); + +/** + * JSON message flag. + * + * @api public + */ + +SocketNamespace.prototype.__defineGetter__('json', function () { + this.flags.json = true; + return this; +}); + +/** + * Volatile message flag. + * + * @api public + */ + +SocketNamespace.prototype.__defineGetter__('volatile', function () { + this.flags.volatile = true; + return this; +}); + +/** + * Overrides the room to relay messages to (flag). + * + * @api public + */ + +SocketNamespace.prototype.in = SocketNamespace.prototype.to = function (room) { + this.flags.endpoint = this.name + (room ? '/' + room : ''); + return this; +}; + +/** + * Adds a session id we should prevent relaying messages to (flag). + * + * @api public + */ + +SocketNamespace.prototype.except = function (id) { + this.flags.exceptions.push(id); + return this; +}; + +/** + * Sets the default flags. + * + * @api private + */ + +SocketNamespace.prototype.setFlags = function () { + this.flags = { + endpoint: this.name + , exceptions: [] + }; + return this; +}; + +/** + * Sends out a packet. + * + * @api private + */ + +SocketNamespace.prototype.packet = function (packet) { + packet.endpoint = this.name; + + var store = this.store + , log = this.log + , volatile = this.flags.volatile + , exceptions = this.flags.exceptions + , packet = parser.encodePacket(packet); + + this.manager.onDispatch(this.flags.endpoint, packet, volatile, exceptions); + this.store.publish('dispatch', this.flags.endpoint, packet, volatile, exceptions); + + this.setFlags(); + + return this; +}; + +/** + * Sends to everyone. + * + * @api public + */ + +SocketNamespace.prototype.send = function (data) { + return this.packet({ + type: this.flags.json ? 'json' : 'message' + , data: data + }); +}; + +/** + * Emits to everyone (override). + * + * @api public + */ + +SocketNamespace.prototype.emit = function (name) { + if (name == 'newListener') { + return this.$emit.apply(this, arguments); + } + + return this.packet({ + type: 'event' + , name: name + , args: util.toArray(arguments).slice(1) + }); +}; + +/** + * Retrieves or creates a write-only socket for a client, unless specified. + * + * @param {Boolean} whether the socket will be readable when initialized + * @api public + */ + +SocketNamespace.prototype.socket = function (sid, readable) { + if (!this.sockets[sid]) { + this.sockets[sid] = new Socket(this.manager, sid, this, readable); + } + + return this.sockets[sid]; +}; + +/** + * Sets authorization for this namespace. + * + * @api public + */ + +SocketNamespace.prototype.authorization = function (fn) { + this.auth = fn; + return this; +}; + +/** + * Called when a socket disconnects entirely. + * + * @api private + */ + +SocketNamespace.prototype.handleDisconnect = function (sid, reason, raiseOnDisconnect) { + if (this.sockets[sid] && this.sockets[sid].readable) { + if (raiseOnDisconnect) this.sockets[sid].onDisconnect(reason); + delete this.sockets[sid]; + } +}; + +/** + * Performs authentication. + * + * @param Object client request data + * @api private + */ + +SocketNamespace.prototype.authorize = function (data, fn) { + if (this.auth) { + var self = this; + + this.auth.call(this, data, function (err, authorized) { + self.log.debug('client ' + + (authorized ? '' : 'un') + 'authorized for ' + self.name); + fn(err, authorized); + }); + } else { + this.log.debug('client authorized for ' + this.name); + fn(null, true); + } + + return this; +}; + +/** + * Handles a packet. + * + * @api private + */ + +SocketNamespace.prototype.handlePacket = function (sessid, packet) { + var socket = this.socket(sessid) + , dataAck = packet.ack == 'data' + , manager = this.manager + , self = this; + + function ack () { + self.log.debug('sending data ack packet'); + socket.packet({ + type: 'ack' + , args: util.toArray(arguments) + , ackId: packet.id + }); + }; + + function error (err) { + self.log.warn('handshake error ' + err + ' for ' + self.name); + socket.packet({ type: 'error', reason: err }); + }; + + function connect () { + self.manager.onJoin(sessid, self.name); + self.store.publish('join', sessid, self.name); + + // packet echo + socket.packet({ type: 'connect' }); + + // emit connection event + self.$emit('connection', socket); + }; + + switch (packet.type) { + case 'connect': + if (packet.endpoint == '') { + connect(); + } else { + var handshakeData = manager.handshaken[sessid]; + + this.authorize(handshakeData, function (err, authorized, newData) { + if (err) return error(err); + + if (authorized) { + manager.onHandshake(sessid, newData || handshakeData); + self.store.publish('handshake', sessid, newData || handshakeData); + connect(); + } else { + error('unauthorized'); + } + }); + } + break; + + case 'ack': + if (socket.acks[packet.ackId]) { + socket.acks[packet.ackId].apply(socket, packet.args); + } else { + this.log.info('unknown ack packet'); + } + break; + + case 'event': + // check if the emitted event is not blacklisted + if (-~manager.get('blacklist').indexOf(packet.name)) { + this.log.debug('ignoring blacklisted event `' + packet.name + '`'); + } else { + var params = [packet.name].concat(packet.args); + + if (dataAck) { + params.push(ack); + } + + socket.$emit.apply(socket, params); + } + break; + + case 'disconnect': + this.manager.onLeave(sessid, this.name); + this.store.publish('leave', sessid, this.name); + + socket.$emit('disconnect', packet.reason || 'packet'); + break; + + case 'json': + case 'message': + var params = ['message', packet.data]; + + if (dataAck) + params.push(ack); + + socket.$emit.apply(socket, params); + }; +}; diff --git a/node_modules/socket.io/lib/parser.js b/node_modules/socket.io/lib/parser.js new file mode 100644 index 0000000..d56b550 --- /dev/null +++ b/node_modules/socket.io/lib/parser.js @@ -0,0 +1,249 @@ + +/*! + * socket.io-node + * Copyright(c) 2011 LearnBoost + * MIT Licensed + */ + +/** + * Module dependencies. + */ + +/** + * Packet types. + */ + +var packets = exports.packets = { + 'disconnect': 0 + , 'connect': 1 + , 'heartbeat': 2 + , 'message': 3 + , 'json': 4 + , 'event': 5 + , 'ack': 6 + , 'error': 7 + , 'noop': 8 + } + , packetslist = Object.keys(packets); + +/** + * Errors reasons. + */ + +var reasons = exports.reasons = { + 'transport not supported': 0 + , 'client not handshaken': 1 + , 'unauthorized': 2 + } + , reasonslist = Object.keys(reasons); + +/** + * Errors advice. + */ + +var advice = exports.advice = { + 'reconnect': 0 + } + , advicelist = Object.keys(advice); + +/** + * Encodes a packet. + * + * @api private + */ + +exports.encodePacket = function (packet) { + var type = packets[packet.type] + , id = packet.id || '' + , endpoint = packet.endpoint || '' + , ack = packet.ack + , data = null; + + switch (packet.type) { + case 'message': + if (packet.data !== '') + data = packet.data; + break; + + case 'event': + var ev = { name: packet.name }; + + if (packet.args && packet.args.length) { + ev.args = packet.args; + } + + data = JSON.stringify(ev); + break; + + case 'json': + data = JSON.stringify(packet.data); + break; + + case 'ack': + data = packet.ackId + + (packet.args && packet.args.length + ? '+' + JSON.stringify(packet.args) : ''); + break; + + case 'connect': + if (packet.qs) + data = packet.qs; + break; + + case 'error': + var reason = packet.reason ? reasons[packet.reason] : '' + , adv = packet.advice ? advice[packet.advice] : '' + + if (reason !== '' || adv !== '') + data = reason + (adv !== '' ? ('+' + adv) : '') + + break; + } + + // construct packet with required fragments + var encoded = type + ':' + id + (ack == 'data' ? '+' : '') + ':' + endpoint; + + // data fragment is optional + if (data !== null && data !== undefined) + encoded += ':' + data; + + return encoded; +}; + +/** + * Encodes multiple messages (payload). + * + * @param {Array} messages + * @api private + */ + +exports.encodePayload = function (packets) { + var decoded = ''; + + if (packets.length == 1) + return packets[0]; + + for (var i = 0, l = packets.length; i < l; i++) { + var packet = packets[i]; + decoded += '\ufffd' + packet.length + '\ufffd' + packets[i] + } + + return decoded; +}; + +/** + * Decodes a packet + * + * @api private + */ + +var regexp = /([^:]+):([0-9]+)?(\+)?:([^:]+)?:?([\s\S]*)?/; + +/** + * Wrap the JSON.parse in a seperate function the crankshaft optimizer will + * only punish this function for the usage for try catch + * + * @api private + */ + +function parse (data) { + try { return JSON.parse(data) } + catch (e) { return false } +} + +exports.decodePacket = function (data) { + var pieces = data.match(regexp); + + if (!pieces) return {}; + + var id = pieces[2] || '' + , data = pieces[5] || '' + , packet = { + type: packetslist[pieces[1]] + , endpoint: pieces[4] || '' + }; + + // whether we need to acknowledge the packet + if (id) { + packet.id = id; + if (pieces[3]) + packet.ack = 'data'; + else + packet.ack = true; + } + + // handle different packet types + switch (packet.type) { + case 'message': + packet.data = data || ''; + break; + + case 'event': + pieces = parse(data); + if (pieces) { + packet.name = pieces.name; + packet.args = pieces.args; + } + + packet.args = packet.args || []; + break; + + case 'json': + packet.data = parse(data); + break; + + case 'connect': + packet.qs = data || ''; + break; + + case 'ack': + pieces = data.match(/^([0-9]+)(\+)?(.*)/); + if (pieces) { + packet.ackId = pieces[1]; + packet.args = []; + + if (pieces[3]) { + packet.args = parse(pieces[3]) || []; + } + } + break; + + case 'error': + pieces = data.split('+'); + packet.reason = reasonslist[pieces[0]] || ''; + packet.advice = advicelist[pieces[1]] || ''; + } + + return packet; +}; + +/** + * Decodes data payload. Detects multiple messages + * + * @return {Array} messages + * @api public + */ + +exports.decodePayload = function (data) { + if (undefined == data || null == data) { + return []; + } + + if (data[0] == '\ufffd') { + var ret = []; + + for (var i = 1, length = ''; i < data.length; i++) { + if (data[i] == '\ufffd') { + ret.push(exports.decodePacket(data.substr(i + 1, length))); + i += Number(length) + 1; + length = ''; + } else { + length += data[i]; + } + } + + return ret; + } else { + return [exports.decodePacket(data)]; + } +}; diff --git a/node_modules/socket.io/lib/socket.io.js b/node_modules/socket.io/lib/socket.io.js new file mode 100644 index 0000000..bf59036 --- /dev/null +++ b/node_modules/socket.io/lib/socket.io.js @@ -0,0 +1,143 @@ + +/*! + * socket.io-node + * Copyright(c) 2011 LearnBoost + * MIT Licensed + */ + +/** + * Module dependencies. + */ + +var client = require('socket.io-client'); + +/** + * Version. + */ + +exports.version = '0.9.11'; + +/** + * Supported protocol version. + */ + +exports.protocol = 1; + +/** + * Client that we serve. + */ + +exports.clientVersion = client.version; + +/** + * Attaches a manager + * + * @param {HTTPServer/Number} a HTTP/S server or a port number to listen on. + * @param {Object} opts to be passed to Manager and/or http server + * @param {Function} callback if a port is supplied + * @api public + */ + +exports.listen = function (server, options, fn) { + if ('function' == typeof server) { + console.warn('Socket.IO\'s `listen()` method expects an `http.Server` instance\n' + + 'as its first parameter. Are you migrating from Express 2.x to 3.x?\n' + + 'If so, check out the "Socket.IO compatibility" section at:\n' + + 'https://github.com/visionmedia/express/wiki/Migrating-from-2.x-to-3.x'); + } + + if ('function' == typeof options) { + fn = options; + options = {}; + } + + if ('undefined' == typeof server) { + // create a server that listens on port 80 + server = 80; + } + + if ('number' == typeof server) { + // if a port number is passed + var port = server; + + if (options && options.key) + server = require('https').createServer(options); + else + server = require('http').createServer(); + + // default response + server.on('request', function (req, res) { + res.writeHead(200); + res.end('Welcome to socket.io.'); + }); + + server.listen(port, fn); + } + + // otherwise assume a http/s server + return new exports.Manager(server, options); +}; + +/** + * Manager constructor. + * + * @api public + */ + +exports.Manager = require('./manager'); + +/** + * Transport constructor. + * + * @api public + */ + +exports.Transport = require('./transport'); + +/** + * Socket constructor. + * + * @api public + */ + +exports.Socket = require('./socket'); + +/** + * Static constructor. + * + * @api public + */ + +exports.Static = require('./static'); + +/** + * Store constructor. + * + * @api public + */ + +exports.Store = require('./store'); + +/** + * Memory Store constructor. + * + * @api public + */ + +exports.MemoryStore = require('./stores/memory'); + +/** + * Redis Store constructor. + * + * @api public + */ + +exports.RedisStore = require('./stores/redis'); + +/** + * Parser. + * + * @api public + */ + +exports.parser = require('./parser'); diff --git a/node_modules/socket.io/lib/socket.js b/node_modules/socket.io/lib/socket.js new file mode 100644 index 0000000..d9807f6 --- /dev/null +++ b/node_modules/socket.io/lib/socket.js @@ -0,0 +1,369 @@ + +/*! + * socket.io-node + * Copyright(c) 2011 LearnBoost + * MIT Licensed + */ + +/** + * Module dependencies. + */ + +var parser = require('./parser') + , util = require('./util') + , EventEmitter = process.EventEmitter + +/** + * Export the constructor. + */ + +exports = module.exports = Socket; + +/** + * Default error event listener to prevent uncaught exceptions. + */ + +var defaultError = function () {}; + +/** + * Socket constructor. + * + * @param {Manager} manager instance + * @param {String} session id + * @param {Namespace} namespace the socket belongs to + * @param {Boolean} whether the + * @api public + */ + +function Socket (manager, id, nsp, readable) { + this.id = id; + this.namespace = nsp; + this.manager = manager; + this.disconnected = false; + this.ackPackets = 0; + this.acks = {}; + this.setFlags(); + this.readable = readable; + this.store = this.manager.store.client(this.id); + this.on('error', defaultError); +}; + +/** + * Inherits from EventEmitter. + */ + +Socket.prototype.__proto__ = EventEmitter.prototype; + +/** + * Accessor shortcut for the handshake data + * + * @api private + */ + +Socket.prototype.__defineGetter__('handshake', function () { + return this.manager.handshaken[this.id]; +}); + +/** + * Accessor shortcut for the transport type + * + * @api private + */ + +Socket.prototype.__defineGetter__('transport', function () { + return this.manager.transports[this.id].name; +}); + +/** + * Accessor shortcut for the logger. + * + * @api private + */ + +Socket.prototype.__defineGetter__('log', function () { + return this.manager.log; +}); + +/** + * JSON message flag. + * + * @api public + */ + +Socket.prototype.__defineGetter__('json', function () { + this.flags.json = true; + return this; +}); + +/** + * Volatile message flag. + * + * @api public + */ + +Socket.prototype.__defineGetter__('volatile', function () { + this.flags.volatile = true; + return this; +}); + +/** + * Broadcast message flag. + * + * @api public + */ + +Socket.prototype.__defineGetter__('broadcast', function () { + this.flags.broadcast = true; + return this; +}); + +/** + * Overrides the room to broadcast messages to (flag) + * + * @api public + */ + +Socket.prototype.to = Socket.prototype.in = function (room) { + this.flags.room = room; + return this; +}; + +/** + * Resets flags + * + * @api private + */ + +Socket.prototype.setFlags = function () { + this.flags = { + endpoint: this.namespace.name + , room: '' + }; + return this; +}; + +/** + * Triggered on disconnect + * + * @api private + */ + +Socket.prototype.onDisconnect = function (reason) { + if (!this.disconnected) { + this.$emit('disconnect', reason); + this.disconnected = true; + } +}; + +/** + * Joins a user to a room. + * + * @api public + */ + +Socket.prototype.join = function (name, fn) { + var nsp = this.namespace.name + , name = (nsp + '/') + name; + + this.manager.onJoin(this.id, name); + this.manager.store.publish('join', this.id, name); + + if (fn) { + this.log.warn('Client#join callback is deprecated'); + fn(); + } + + return this; +}; + +/** + * Un-joins a user from a room. + * + * @api public + */ + +Socket.prototype.leave = function (name, fn) { + var nsp = this.namespace.name + , name = (nsp + '/') + name; + + this.manager.onLeave(this.id, name); + this.manager.store.publish('leave', this.id, name); + + if (fn) { + this.log.warn('Client#leave callback is deprecated'); + fn(); + } + + return this; +}; + +/** + * Transmits a packet. + * + * @api private + */ + +Socket.prototype.packet = function (packet) { + if (this.flags.broadcast) { + this.log.debug('broadcasting packet'); + this.namespace.in(this.flags.room).except(this.id).packet(packet); + } else { + packet.endpoint = this.flags.endpoint; + packet = parser.encodePacket(packet); + + this.dispatch(packet, this.flags.volatile); + } + + this.setFlags(); + + return this; +}; + +/** + * Dispatches a packet + * + * @api private + */ + +Socket.prototype.dispatch = function (packet, volatile) { + if (this.manager.transports[this.id] && this.manager.transports[this.id].open) { + this.manager.transports[this.id].onDispatch(packet, volatile); + } else { + if (!volatile) { + this.manager.onClientDispatch(this.id, packet, volatile); + } + + this.manager.store.publish('dispatch:' + this.id, packet, volatile); + } +}; + +/** + * Stores data for the client. + * + * @api public + */ + +Socket.prototype.set = function (key, value, fn) { + this.store.set(key, value, fn); + return this; +}; + +/** + * Retrieves data for the client + * + * @api public + */ + +Socket.prototype.get = function (key, fn) { + this.store.get(key, fn); + return this; +}; + +/** + * Checks data for the client + * + * @api public + */ + +Socket.prototype.has = function (key, fn) { + this.store.has(key, fn); + return this; +}; + +/** + * Deletes data for the client + * + * @api public + */ + +Socket.prototype.del = function (key, fn) { + this.store.del(key, fn); + return this; +}; + +/** + * Kicks client + * + * @api public + */ + +Socket.prototype.disconnect = function () { + if (!this.disconnected) { + this.log.info('booting client'); + + if ('' === this.namespace.name) { + if (this.manager.transports[this.id] && this.manager.transports[this.id].open) { + this.manager.transports[this.id].onForcedDisconnect(); + } else { + this.manager.onClientDisconnect(this.id); + this.manager.store.publish('disconnect:' + this.id); + } + } else { + this.packet({type: 'disconnect'}); + this.manager.onLeave(this.id, this.namespace.name); + this.$emit('disconnect', 'booted'); + } + + } + + return this; +}; + +/** + * Send a message. + * + * @api public + */ + +Socket.prototype.send = function (data, fn) { + var packet = { + type: this.flags.json ? 'json' : 'message' + , data: data + }; + + if (fn) { + packet.id = ++this.ackPackets; + packet.ack = true; + this.acks[packet.id] = fn; + } + + return this.packet(packet); +}; + +/** + * Original emit function. + * + * @api private + */ + +Socket.prototype.$emit = EventEmitter.prototype.emit; + +/** + * Emit override for custom events. + * + * @api public + */ + +Socket.prototype.emit = function (ev) { + if (ev == 'newListener') { + return this.$emit.apply(this, arguments); + } + + var args = util.toArray(arguments).slice(1) + , lastArg = args[args.length - 1] + , packet = { + type: 'event' + , name: ev + }; + + if ('function' == typeof lastArg) { + packet.id = ++this.ackPackets; + packet.ack = lastArg.length ? 'data' : true; + this.acks[packet.id] = lastArg; + args = args.slice(0, args.length - 1); + } + + packet.args = args; + + return this.packet(packet); +}; diff --git a/node_modules/socket.io/lib/static.js b/node_modules/socket.io/lib/static.js new file mode 100644 index 0000000..fe50593 --- /dev/null +++ b/node_modules/socket.io/lib/static.js @@ -0,0 +1,395 @@ + +/*! +* socket.io-node +* Copyright(c) 2011 LearnBoost +* MIT Licensed +*/ + +/** + * Module dependencies. + */ + +var client = require('socket.io-client') + , cp = require('child_process') + , fs = require('fs') + , util = require('./util'); + +/** + * File type details. + * + * @api private + */ + +var mime = { + js: { + type: 'application/javascript' + , encoding: 'utf8' + , gzip: true + } + , swf: { + type: 'application/x-shockwave-flash' + , encoding: 'binary' + , gzip: false + } +}; + +/** + * Regexp for matching custom transport patterns. Users can configure their own + * socket.io bundle based on the url structure. Different transport names are + * concatinated using the `+` char. /socket.io/socket.io+websocket.js should + * create a bundle that only contains support for the websocket. + * + * @api private + */ + +var bundle = /\+((?:\+)?[\w\-]+)*(?:\.v\d+\.\d+\.\d+)?(?:\.js)$/ + , versioning = /\.v\d+\.\d+\.\d+(?:\.js)$/; + +/** + * Export the constructor + */ + +exports = module.exports = Static; + +/** + * Static constructor + * + * @api public + */ + +function Static (manager) { + this.manager = manager; + this.cache = {}; + this.paths = {}; + + this.init(); +} + +/** + * Initialize the Static by adding default file paths. + * + * @api public + */ + +Static.prototype.init = function () { + /** + * Generates a unique id based the supplied transports array + * + * @param {Array} transports The array with transport types + * @api private + */ + function id (transports) { + var id = transports.join('').split('').map(function (char) { + return ('' + char.charCodeAt(0)).split('').pop(); + }).reduce(function (char, id) { + return char +id; + }); + + return client.version + ':' + id; + } + + /** + * Generates a socket.io-client file based on the supplied transports. + * + * @param {Array} transports The array with transport types + * @param {Function} callback Callback for the static.write + * @api private + */ + + function build (transports, callback) { + client.builder(transports, { + minify: self.manager.enabled('browser client minification') + }, function (err, content) { + callback(err, content ? new Buffer(content) : null, id(transports)); + } + ); + } + + var self = this; + + // add our default static files + this.add('/static/flashsocket/WebSocketMain.swf', { + file: client.dist + '/WebSocketMain.swf' + }); + + this.add('/static/flashsocket/WebSocketMainInsecure.swf', { + file: client.dist + '/WebSocketMainInsecure.swf' + }); + + // generates dedicated build based on the available transports + this.add('/socket.io.js', function (path, callback) { + build(self.manager.get('transports'), callback); + }); + + this.add('/socket.io.v', { mime: mime.js }, function (path, callback) { + build(self.manager.get('transports'), callback); + }); + + // allow custom builds based on url paths + this.add('/socket.io+', { mime: mime.js }, function (path, callback) { + var available = self.manager.get('transports') + , matches = path.match(bundle) + , transports = []; + + if (!matches) return callback('No valid transports'); + + // make sure they valid transports + matches[0].split('.')[0].split('+').slice(1).forEach(function (transport) { + if (!!~available.indexOf(transport)) { + transports.push(transport); + } + }); + + if (!transports.length) return callback('No valid transports'); + build(transports, callback); + }); + + // clear cache when transports change + this.manager.on('set:transports', function (key, value) { + delete self.cache['/socket.io.js']; + Object.keys(self.cache).forEach(function (key) { + if (bundle.test(key)) { + delete self.cache[key]; + } + }); + }); +}; + +/** + * Gzip compress buffers. + * + * @param {Buffer} data The buffer that needs gzip compression + * @param {Function} callback + * @api public + */ + +Static.prototype.gzip = function (data, callback) { + var gzip = cp.spawn('gzip', ['-9', '-c', '-f', '-n']) + , encoding = Buffer.isBuffer(data) ? 'binary' : 'utf8' + , buffer = [] + , err; + + gzip.stdout.on('data', function (data) { + buffer.push(data); + }); + + gzip.stderr.on('data', function (data) { + err = data +''; + buffer.length = 0; + }); + + gzip.on('close', function () { + if (err) return callback(err); + + var size = 0 + , index = 0 + , i = buffer.length + , content; + + while (i--) { + size += buffer[i].length; + } + + content = new Buffer(size); + i = buffer.length; + + buffer.forEach(function (buffer) { + var length = buffer.length; + + buffer.copy(content, index, 0, length); + index += length; + }); + + buffer.length = 0; + callback(null, content); + }); + + gzip.stdin.end(data, encoding); +}; + +/** + * Is the path a static file? + * + * @param {String} path The path that needs to be checked + * @api public + */ + +Static.prototype.has = function (path) { + // fast case + if (this.paths[path]) return this.paths[path]; + + var keys = Object.keys(this.paths) + , i = keys.length; + + while (i--) { + if (-~path.indexOf(keys[i])) return this.paths[keys[i]]; + } + + return false; +}; + +/** + * Add new paths new paths that can be served using the static provider. + * + * @param {String} path The path to respond to + * @param {Options} options Options for writing out the response + * @param {Function} [callback] Optional callback if no options.file is + * supplied this would be called instead. + * @api public + */ + +Static.prototype.add = function (path, options, callback) { + var extension = /(?:\.(\w{1,4}))$/.exec(path); + + if (!callback && typeof options == 'function') { + callback = options; + options = {}; + } + + options.mime = options.mime || (extension ? mime[extension[1]] : false); + + if (callback) options.callback = callback; + if (!(options.file || options.callback) || !options.mime) return false; + + this.paths[path] = options; + + return true; +}; + +/** + * Writes a static response. + * + * @param {String} path The path for the static content + * @param {HTTPRequest} req The request object + * @param {HTTPResponse} res The response object + * @api public + */ + +Static.prototype.write = function (path, req, res) { + /** + * Write a response without throwing errors because can throw error if the + * response is no longer writable etc. + * + * @api private + */ + + function write (status, headers, content, encoding) { + try { + res.writeHead(status, headers || undefined); + + // only write content if it's not a HEAD request and we actually have + // some content to write (304's doesn't have content). + res.end( + req.method !== 'HEAD' && content ? content : '' + , encoding || undefined + ); + } catch (e) {} + } + + /** + * Answers requests depending on the request properties and the reply object. + * + * @param {Object} reply The details and content to reply the response with + * @api private + */ + + function answer (reply) { + var cached = req.headers['if-none-match'] === reply.etag; + if (cached && self.manager.enabled('browser client etag')) { + return write(304); + } + + var accept = req.headers['accept-encoding'] || '' + , gzip = !!~accept.toLowerCase().indexOf('gzip') + , mime = reply.mime + , versioned = reply.versioned + , headers = { + 'Content-Type': mime.type + }; + + // check if we can add a etag + if (self.manager.enabled('browser client etag') && reply.etag && !versioned) { + headers['Etag'] = reply.etag; + } + + // see if we need to set Expire headers because the path is versioned + if (versioned) { + var expires = self.manager.get('browser client expires'); + headers['Cache-Control'] = 'private, x-gzip-ok="", max-age=' + expires; + headers['Date'] = new Date().toUTCString(); + headers['Expires'] = new Date(Date.now() + (expires * 1000)).toUTCString(); + } + + if (gzip && reply.gzip) { + headers['Content-Length'] = reply.gzip.length; + headers['Content-Encoding'] = 'gzip'; + headers['Vary'] = 'Accept-Encoding'; + write(200, headers, reply.gzip.content, mime.encoding); + } else { + headers['Content-Length'] = reply.length; + write(200, headers, reply.content, mime.encoding); + } + + self.manager.log.debug('served static content ' + path); + } + + var self = this + , details; + + // most common case first + if (this.manager.enabled('browser client cache') && this.cache[path]) { + return answer(this.cache[path]); + } else if (this.manager.get('browser client handler')) { + return this.manager.get('browser client handler').call(this, req, res); + } else if ((details = this.has(path))) { + /** + * A small helper function that will let us deal with fs and dynamic files + * + * @param {Object} err Optional error + * @param {Buffer} content The data + * @api private + */ + + function ready (err, content, etag) { + if (err) { + self.manager.log.warn('Unable to serve file. ' + (err.message || err)); + return write(500, null, 'Error serving static ' + path); + } + + // store the result in the cache + var reply = self.cache[path] = { + content: content + , length: content.length + , mime: details.mime + , etag: etag || client.version + , versioned: versioning.test(path) + }; + + // check if gzip is enabled + if (details.mime.gzip && self.manager.enabled('browser client gzip')) { + self.gzip(content, function (err, content) { + if (!err) { + reply.gzip = { + content: content + , length: content.length + } + } + + answer(reply); + }); + } else { + answer(reply); + } + } + + if (details.file) { + fs.readFile(details.file, ready); + } else if(details.callback) { + details.callback.call(this, path, ready); + } else { + write(404, null, 'File handle not found'); + } + } else { + write(404, null, 'File not found'); + } +}; diff --git a/node_modules/socket.io/lib/store.js b/node_modules/socket.io/lib/store.js new file mode 100644 index 0000000..06c0389 --- /dev/null +++ b/node_modules/socket.io/lib/store.js @@ -0,0 +1,98 @@ + +/*! + * socket.io-node + * Copyright(c) 2011 LearnBoost + * MIT Licensed + */ + +/** + * Expose the constructor. + */ + +exports = module.exports = Store; + +/** + * Module dependencies. + */ + +var EventEmitter = process.EventEmitter; + +/** + * Store interface + * + * @api public + */ + +function Store (options) { + this.options = options; + this.clients = {}; +}; + +/** + * Inherit from EventEmitter. + */ + +Store.prototype.__proto__ = EventEmitter.prototype; + +/** + * Initializes a client store + * + * @param {String} id + * @api public + */ + +Store.prototype.client = function (id) { + if (!this.clients[id]) { + this.clients[id] = new (this.constructor.Client)(this, id); + } + + return this.clients[id]; +}; + +/** + * Destroys a client + * + * @api {String} sid + * @param {Number} number of seconds to expire client data + * @api private + */ + +Store.prototype.destroyClient = function (id, expiration) { + if (this.clients[id]) { + this.clients[id].destroy(expiration); + delete this.clients[id]; + } + + return this; +}; + +/** + * Destroys the store + * + * @param {Number} number of seconds to expire client data + * @api private + */ + +Store.prototype.destroy = function (clientExpiration) { + var keys = Object.keys(this.clients) + , count = keys.length; + + for (var i = 0, l = count; i < l; i++) { + this.destroyClient(keys[i], clientExpiration); + } + + this.clients = {}; + + return this; +}; + +/** + * Client. + * + * @api public + */ + +Store.Client = function (store, id) { + this.store = store; + this.id = id; +}; diff --git a/node_modules/socket.io/lib/stores/memory.js b/node_modules/socket.io/lib/stores/memory.js new file mode 100644 index 0000000..8b731a7 --- /dev/null +++ b/node_modules/socket.io/lib/stores/memory.js @@ -0,0 +1,143 @@ + +/*! + * socket.io-node + * Copyright(c) 2011 LearnBoost + * MIT Licensed + */ + +/** + * Module dependencies. + */ + +var crypto = require('crypto') + , Store = require('../store'); + +/** + * Exports the constructor. + */ + +exports = module.exports = Memory; +Memory.Client = Client; + +/** + * Memory store + * + * @api public + */ + +function Memory (opts) { + Store.call(this, opts); +}; + +/** + * Inherits from Store. + */ + +Memory.prototype.__proto__ = Store.prototype; + +/** + * Publishes a message. + * + * @api private + */ + +Memory.prototype.publish = function () { }; + +/** + * Subscribes to a channel + * + * @api private + */ + +Memory.prototype.subscribe = function () { }; + +/** + * Unsubscribes + * + * @api private + */ + +Memory.prototype.unsubscribe = function () { }; + +/** + * Client constructor + * + * @api private + */ + +function Client () { + Store.Client.apply(this, arguments); + this.data = {}; +}; + +/** + * Inherits from Store.Client + */ + +Client.prototype.__proto__ = Store.Client; + +/** + * Gets a key + * + * @api public + */ + +Client.prototype.get = function (key, fn) { + fn(null, this.data[key] === undefined ? null : this.data[key]); + return this; +}; + +/** + * Sets a key + * + * @api public + */ + +Client.prototype.set = function (key, value, fn) { + this.data[key] = value; + fn && fn(null); + return this; +}; + +/** + * Has a key + * + * @api public + */ + +Client.prototype.has = function (key, fn) { + fn(null, key in this.data); +}; + +/** + * Deletes a key + * + * @api public + */ + +Client.prototype.del = function (key, fn) { + delete this.data[key]; + fn && fn(null); + return this; +}; + +/** + * Destroys the client. + * + * @param {Number} number of seconds to expire data + * @api private + */ + +Client.prototype.destroy = function (expiration) { + if ('number' != typeof expiration) { + this.data = {}; + } else { + var self = this; + + setTimeout(function () { + self.data = {}; + }, expiration * 1000); + } + + return this; +}; diff --git a/node_modules/socket.io/lib/stores/redis.js b/node_modules/socket.io/lib/stores/redis.js new file mode 100644 index 0000000..8fea235 --- /dev/null +++ b/node_modules/socket.io/lib/stores/redis.js @@ -0,0 +1,269 @@ + +/*! + * socket.io-node + * Copyright(c) 2011 LearnBoost + * MIT Licensed + */ + +/** + * Module dependencies. + */ + +var crypto = require('crypto') + , Store = require('../store') + , assert = require('assert'); + +/** + * Exports the constructor. + */ + +exports = module.exports = Redis; +Redis.Client = Client; + +/** + * Redis store. + * Options: + * - nodeId (fn) gets an id that uniquely identifies this node + * - redis (fn) redis constructor, defaults to redis + * - redisPub (object) options to pass to the pub redis client + * - redisSub (object) options to pass to the sub redis client + * - redisClient (object) options to pass to the general redis client + * - pack (fn) custom packing, defaults to JSON or msgpack if installed + * - unpack (fn) custom packing, defaults to JSON or msgpack if installed + * + * @api public + */ + +function Redis (opts) { + opts = opts || {}; + + // node id to uniquely identify this node + var nodeId = opts.nodeId || function () { + // by default, we generate a random id + return Math.abs(Math.random() * Math.random() * Date.now() | 0); + }; + + this.nodeId = nodeId(); + + // packing / unpacking mechanism + if (opts.pack) { + this.pack = opts.pack; + this.unpack = opts.unpack; + } else { + try { + var msgpack = require('msgpack'); + this.pack = msgpack.pack; + this.unpack = msgpack.unpack; + } catch (e) { + this.pack = JSON.stringify; + this.unpack = JSON.parse; + } + } + + var redis = opts.redis || require('redis') + , RedisClient = redis.RedisClient; + + // initialize a pubsub client and a regular client + if (opts.redisPub instanceof RedisClient) { + this.pub = opts.redisPub; + } else { + opts.redisPub || (opts.redisPub = {}); + this.pub = redis.createClient(opts.redisPub.port, opts.redisPub.host, opts.redisPub); + } + if (opts.redisSub instanceof RedisClient) { + this.sub = opts.redisSub; + } else { + opts.redisSub || (opts.redisSub = {}); + this.sub = redis.createClient(opts.redisSub.port, opts.redisSub.host, opts.redisSub); + } + if (opts.redisClient instanceof RedisClient) { + this.cmd = opts.redisClient; + } else { + opts.redisClient || (opts.redisClient = {}); + this.cmd = redis.createClient(opts.redisClient.port, opts.redisClient.host, opts.redisClient); + } + + Store.call(this, opts); + + this.sub.setMaxListeners(0); + this.setMaxListeners(0); +}; + +/** + * Inherits from Store. + */ + +Redis.prototype.__proto__ = Store.prototype; + +/** + * Publishes a message. + * + * @api private + */ + +Redis.prototype.publish = function (name) { + var args = Array.prototype.slice.call(arguments, 1); + this.pub.publish(name, this.pack({ nodeId: this.nodeId, args: args })); + this.emit.apply(this, ['publish', name].concat(args)); +}; + +/** + * Subscribes to a channel + * + * @api private + */ + +Redis.prototype.subscribe = function (name, consumer, fn) { + this.sub.subscribe(name); + + if (consumer || fn) { + var self = this; + + self.sub.on('subscribe', function subscribe (ch) { + if (name == ch) { + function message (ch, msg) { + if (name == ch) { + msg = self.unpack(msg); + + // we check that the message consumed wasnt emitted by this node + if (self.nodeId != msg.nodeId) { + consumer.apply(null, msg.args); + } + } + }; + + self.sub.on('message', message); + + self.on('unsubscribe', function unsubscribe (ch) { + if (name == ch) { + self.sub.removeListener('message', message); + self.removeListener('unsubscribe', unsubscribe); + } + }); + + self.sub.removeListener('subscribe', subscribe); + + fn && fn(); + } + }); + } + + this.emit('subscribe', name, consumer, fn); +}; + +/** + * Unsubscribes + * + * @api private + */ + +Redis.prototype.unsubscribe = function (name, fn) { + this.sub.unsubscribe(name); + + if (fn) { + var client = this.sub; + + client.on('unsubscribe', function unsubscribe (ch) { + if (name == ch) { + fn(); + client.removeListener('unsubscribe', unsubscribe); + } + }); + } + + this.emit('unsubscribe', name, fn); +}; + +/** + * Destroys the store + * + * @api public + */ + +Redis.prototype.destroy = function () { + Store.prototype.destroy.call(this); + + this.pub.end(); + this.sub.end(); + this.cmd.end(); +}; + +/** + * Client constructor + * + * @api private + */ + +function Client (store, id) { + Store.Client.call(this, store, id); +}; + +/** + * Inherits from Store.Client + */ + +Client.prototype.__proto__ = Store.Client; + +/** + * Redis hash get + * + * @api private + */ + +Client.prototype.get = function (key, fn) { + this.store.cmd.hget(this.id, key, fn); + return this; +}; + +/** + * Redis hash set + * + * @api private + */ + +Client.prototype.set = function (key, value, fn) { + this.store.cmd.hset(this.id, key, value, fn); + return this; +}; + +/** + * Redis hash del + * + * @api private + */ + +Client.prototype.del = function (key, fn) { + this.store.cmd.hdel(this.id, key, fn); + return this; +}; + +/** + * Redis hash has + * + * @api private + */ + +Client.prototype.has = function (key, fn) { + this.store.cmd.hexists(this.id, key, function (err, has) { + if (err) return fn(err); + fn(null, !!has); + }); + return this; +}; + +/** + * Destroys client + * + * @param {Number} number of seconds to expire data + * @api private + */ + +Client.prototype.destroy = function (expiration) { + if ('number' != typeof expiration) { + this.store.cmd.del(this.id); + } else { + this.store.cmd.expire(this.id, expiration); + } + + return this; +}; diff --git a/node_modules/socket.io/lib/transport.js b/node_modules/socket.io/lib/transport.js new file mode 100644 index 0000000..2e4c08b --- /dev/null +++ b/node_modules/socket.io/lib/transport.js @@ -0,0 +1,534 @@ + +/*! + * socket.io-node + * Copyright(c) 2011 LearnBoost + * MIT Licensed + */ + +/** + * Module dependencies. + */ + +var parser = require('./parser'); + +/** + * Expose the constructor. + */ + +exports = module.exports = Transport; + +/** + * Transport constructor. + * + * @api public + */ + +function Transport (mng, data, req) { + this.manager = mng; + this.id = data.id; + this.disconnected = false; + this.drained = true; + this.handleRequest(req); +}; + +/** + * Access the logger. + * + * @api public + */ + +Transport.prototype.__defineGetter__('log', function () { + return this.manager.log; +}); + +/** + * Access the store. + * + * @api public + */ + +Transport.prototype.__defineGetter__('store', function () { + return this.manager.store; +}); + +/** + * Handles a request when it's set. + * + * @api private + */ + +Transport.prototype.handleRequest = function (req) { + this.log.debug('setting request', req.method, req.url); + this.req = req; + + if (req.method == 'GET') { + this.socket = req.socket; + this.open = true; + this.drained = true; + this.setHeartbeatInterval(); + + this.setHandlers(); + this.onSocketConnect(); + } +}; + +/** + * Called when a connection is first set. + * + * @api private + */ + +Transport.prototype.onSocketConnect = function () { }; + +/** + * Sets transport handlers + * + * @api private + */ + +Transport.prototype.setHandlers = function () { + var self = this; + + // we need to do this in a pub/sub way since the client can POST the message + // over a different socket (ie: different Transport instance) + this.store.subscribe('heartbeat-clear:' + this.id, function () { + self.onHeartbeatClear(); + }); + + this.store.subscribe('disconnect-force:' + this.id, function () { + self.onForcedDisconnect(); + }); + + this.store.subscribe('dispatch:' + this.id, function (packet, volatile) { + self.onDispatch(packet, volatile); + }); + + this.bound = { + end: this.onSocketEnd.bind(this) + , close: this.onSocketClose.bind(this) + , error: this.onSocketError.bind(this) + , drain: this.onSocketDrain.bind(this) + }; + + this.socket.on('end', this.bound.end); + this.socket.on('close', this.bound.close); + this.socket.on('error', this.bound.error); + this.socket.on('drain', this.bound.drain); + + this.handlersSet = true; +}; + +/** + * Removes transport handlers + * + * @api private + */ + +Transport.prototype.clearHandlers = function () { + if (this.handlersSet) { + this.store.unsubscribe('disconnect-force:' + this.id); + this.store.unsubscribe('heartbeat-clear:' + this.id); + this.store.unsubscribe('dispatch:' + this.id); + + this.socket.removeListener('end', this.bound.end); + this.socket.removeListener('close', this.bound.close); + this.socket.removeListener('error', this.bound.error); + this.socket.removeListener('drain', this.bound.drain); + } +}; + +/** + * Called when the connection dies + * + * @api private + */ + +Transport.prototype.onSocketEnd = function () { + this.end('socket end'); +}; + +/** + * Called when the connection dies + * + * @api private + */ + +Transport.prototype.onSocketClose = function (error) { + this.end(error ? 'socket error' : 'socket close'); +}; + +/** + * Called when the connection has an error. + * + * @api private + */ + +Transport.prototype.onSocketError = function (err) { + if (this.open) { + this.socket.destroy(); + this.onClose(); + } + + this.log.info('socket error ' + err.stack); +}; + +/** + * Called when the connection is drained. + * + * @api private + */ + +Transport.prototype.onSocketDrain = function () { + this.drained = true; +}; + +/** + * Called upon receiving a heartbeat packet. + * + * @api private + */ + +Transport.prototype.onHeartbeatClear = function () { + this.clearHeartbeatTimeout(); + this.setHeartbeatInterval(); +}; + +/** + * Called upon a forced disconnection. + * + * @api private + */ + +Transport.prototype.onForcedDisconnect = function () { + if (!this.disconnected) { + this.log.info('transport end by forced client disconnection'); + if (this.open) { + this.packet({ type: 'disconnect' }); + } + this.end('booted'); + } +}; + +/** + * Dispatches a packet. + * + * @api private + */ + +Transport.prototype.onDispatch = function (packet, volatile) { + if (volatile) { + this.writeVolatile(packet); + } else { + this.write(packet); + } +}; + +/** + * Sets the close timeout. + */ + +Transport.prototype.setCloseTimeout = function () { + if (!this.closeTimeout) { + var self = this; + + this.closeTimeout = setTimeout(function () { + self.log.debug('fired close timeout for client', self.id); + self.closeTimeout = null; + self.end('close timeout'); + }, this.manager.get('close timeout') * 1000); + + this.log.debug('set close timeout for client', this.id); + } +}; + +/** + * Clears the close timeout. + */ + +Transport.prototype.clearCloseTimeout = function () { + if (this.closeTimeout) { + clearTimeout(this.closeTimeout); + this.closeTimeout = null; + + this.log.debug('cleared close timeout for client', this.id); + } +}; + +/** + * Sets the heartbeat timeout + */ + +Transport.prototype.setHeartbeatTimeout = function () { + if (!this.heartbeatTimeout && this.manager.enabled('heartbeats')) { + var self = this; + + this.heartbeatTimeout = setTimeout(function () { + self.log.debug('fired heartbeat timeout for client', self.id); + self.heartbeatTimeout = null; + self.end('heartbeat timeout'); + }, this.manager.get('heartbeat timeout') * 1000); + + this.log.debug('set heartbeat timeout for client', this.id); + } +}; + +/** + * Clears the heartbeat timeout + * + * @param text + */ + +Transport.prototype.clearHeartbeatTimeout = function () { + if (this.heartbeatTimeout && this.manager.enabled('heartbeats')) { + clearTimeout(this.heartbeatTimeout); + this.heartbeatTimeout = null; + this.log.debug('cleared heartbeat timeout for client', this.id); + } +}; + +/** + * Sets the heartbeat interval. To be called when a connection opens and when + * a heartbeat is received. + * + * @api private + */ + +Transport.prototype.setHeartbeatInterval = function () { + if (!this.heartbeatInterval && this.manager.enabled('heartbeats')) { + var self = this; + + this.heartbeatInterval = setTimeout(function () { + self.heartbeat(); + self.heartbeatInterval = null; + }, this.manager.get('heartbeat interval') * 1000); + + this.log.debug('set heartbeat interval for client', this.id); + } +}; + +/** + * Clears all timeouts. + * + * @api private + */ + +Transport.prototype.clearTimeouts = function () { + this.clearCloseTimeout(); + this.clearHeartbeatTimeout(); + this.clearHeartbeatInterval(); +}; + +/** + * Sends a heartbeat + * + * @api private + */ + +Transport.prototype.heartbeat = function () { + if (this.open) { + this.log.debug('emitting heartbeat for client', this.id); + this.packet({ type: 'heartbeat' }); + this.setHeartbeatTimeout(); + } + + return this; +}; + +/** + * Handles a message. + * + * @param {Object} packet object + * @api private + */ + +Transport.prototype.onMessage = function (packet) { + var current = this.manager.transports[this.id]; + + if ('heartbeat' == packet.type) { + this.log.debug('got heartbeat packet'); + + if (current && current.open) { + current.onHeartbeatClear(); + } else { + this.store.publish('heartbeat-clear:' + this.id); + } + } else { + if ('disconnect' == packet.type && packet.endpoint == '') { + this.log.debug('got disconnection packet'); + + if (current) { + current.onForcedDisconnect(); + } else { + this.store.publish('disconnect-force:' + this.id); + } + + return; + } + + if (packet.id && packet.ack != 'data') { + this.log.debug('acknowledging packet automatically'); + + var ack = parser.encodePacket({ + type: 'ack' + , ackId: packet.id + , endpoint: packet.endpoint || '' + }); + + if (current && current.open) { + current.onDispatch(ack); + } else { + this.manager.onClientDispatch(this.id, ack); + this.store.publish('dispatch:' + this.id, ack); + } + } + + // handle packet locally or publish it + if (current) { + this.manager.onClientMessage(this.id, packet); + } else { + this.store.publish('message:' + this.id, packet); + } + } +}; + +/** + * Clears the heartbeat interval + * + * @api private + */ + +Transport.prototype.clearHeartbeatInterval = function () { + if (this.heartbeatInterval && this.manager.enabled('heartbeats')) { + clearTimeout(this.heartbeatInterval); + this.heartbeatInterval = null; + this.log.debug('cleared heartbeat interval for client', this.id); + } +}; + +/** + * Finishes the connection and makes sure client doesn't reopen + * + * @api private + */ + +Transport.prototype.disconnect = function (reason) { + this.packet({ type: 'disconnect' }); + this.end(reason); + + return this; +}; + +/** + * Closes the connection. + * + * @api private + */ + +Transport.prototype.close = function () { + if (this.open) { + this.doClose(); + this.onClose(); + } +}; + +/** + * Called upon a connection close. + * + * @api private + */ + +Transport.prototype.onClose = function () { + if (this.open) { + this.setCloseTimeout(); + this.clearHandlers(); + this.open = false; + this.manager.onClose(this.id); + this.store.publish('close', this.id); + } +}; + +/** + * Cleans up the connection, considers the client disconnected. + * + * @api private + */ + +Transport.prototype.end = function (reason) { + if (!this.disconnected) { + this.log.info('transport end (' + reason + ')'); + + var local = this.manager.transports[this.id]; + + this.close(); + this.clearTimeouts(); + this.disconnected = true; + + if (local) { + this.manager.onClientDisconnect(this.id, reason, true); + } else { + this.store.publish('disconnect:' + this.id, reason); + } + } +}; + +/** + * Signals that the transport should pause and buffer data. + * + * @api public + */ + +Transport.prototype.discard = function () { + this.log.debug('discarding transport'); + this.discarded = true; + this.clearTimeouts(); + this.clearHandlers(); + + return this; +}; + +/** + * Writes an error packet with the specified reason and advice. + * + * @param {Number} advice + * @param {Number} reason + * @api public + */ + +Transport.prototype.error = function (reason, advice) { + this.packet({ + type: 'error' + , reason: reason + , advice: advice + }); + + this.log.warn(reason, advice ? ('client should ' + advice) : ''); + this.end('error'); +}; + +/** + * Write a packet. + * + * @api public + */ + +Transport.prototype.packet = function (obj) { + return this.write(parser.encodePacket(obj)); +}; + +/** + * Writes a volatile message. + * + * @api private + */ + +Transport.prototype.writeVolatile = function (msg) { + if (this.open) { + if (this.drained) { + this.write(msg); + } else { + this.log.debug('ignoring volatile packet, buffer not drained'); + } + } else { + this.log.debug('ignoring volatile packet, transport not open'); + } +}; diff --git a/node_modules/socket.io/lib/transports/flashsocket.js b/node_modules/socket.io/lib/transports/flashsocket.js new file mode 100644 index 0000000..dc2d78b --- /dev/null +++ b/node_modules/socket.io/lib/transports/flashsocket.js @@ -0,0 +1,129 @@ +/*! + * socket.io-node + * Copyright(c) 2011 LearnBoost + * MIT Licensed + */ + +/** + * Module requirements. + */ +var WebSocket = require('./websocket'); + +/** + * Export the constructor. + */ + +exports = module.exports = FlashSocket; + +/** + * The FlashSocket transport is just a proxy + * for WebSocket connections. + * + * @api public + */ + +function FlashSocket (mng, data, req) { + return WebSocket.call(this, mng, data, req); +} + +/** + * Inherits from WebSocket. + */ + +FlashSocket.prototype.__proto__ = WebSocket.prototype; + +/** + * Transport name + * + * @api public + */ + +FlashSocket.prototype.name = 'flashsocket'; + +/** + * Listens for new configuration changes of the Manager + * this way we can enable and disable the flash server. + * + * @param {Manager} Manager instance. + * @api private + */ + + +FlashSocket.init = function (manager) { + var server; + function create () { + + // Drop out immediately if the user has + // disabled the flash policy server + if (!manager.get('flash policy server')) { + return; + } + + server = require('policyfile').createServer({ + log: function(msg){ + manager.log.info(msg); + } + }, manager.get('origins')); + + server.on('close', function (e) { + server = null; + }); + + server.listen(manager.get('flash policy port'), manager.server); + + manager.flashPolicyServer = server; + } + + // listen for origin changes, so we can update the server + manager.on('set:origins', function (value, key) { + if (!server) return; + + // update the origins and compile a new response buffer + server.origins = Array.isArray(value) ? value : [value]; + server.compile(); + }); + + // destory the server and create a new server + manager.on('set:flash policy port', function (value, key) { + var transports = manager.get('transports'); + if (~transports.indexOf('flashsocket')) { + if (server) { + if (server.port === value) return; + // destroy the server and rebuild it on a new port + try { + server.close(); + } + catch (e) { /* ignore exception. could e.g. be that the server isn't started yet */ } + } + create(); + } + }); + + // create or destroy the server + manager.on('set:flash policy server', function (value, key) { + var transports = manager.get('transports'); + if (~transports.indexOf('flashsocket')) { + if (server && !value) { + // destroy the server + try { + server.close(); + } + catch (e) { /* ignore exception. could e.g. be that the server isn't started yet */ } + } + } else if (!server && value) { + // create the server + create(); + } + }); + + // only start the server + manager.on('set:transports', function (value, key){ + if (!server && ~manager.get('transports').indexOf('flashsocket')) { + create(); + } + }); + // check if we need to initialize at start + if (~manager.get('transports').indexOf('flashsocket')){ + create(); + } +}; diff --git a/node_modules/socket.io/lib/transports/htmlfile.js b/node_modules/socket.io/lib/transports/htmlfile.js new file mode 100644 index 0000000..e8709a3 --- /dev/null +++ b/node_modules/socket.io/lib/transports/htmlfile.js @@ -0,0 +1,82 @@ + +/*! + * socket.io-node + * Copyright(c) 2011 LearnBoost + * MIT Licensed + */ + +/** + * Module requirements. + */ + +var HTTPTransport = require('./http'); + +/** + * Export the constructor. + */ + +exports = module.exports = HTMLFile; + +/** + * HTMLFile transport constructor. + * + * @api public + */ + +function HTMLFile (mng, data, req) { + HTTPTransport.call(this, mng, data, req); +}; + +/** + * Inherits from Transport. + */ + +HTMLFile.prototype.__proto__ = HTTPTransport.prototype; + +/** + * Transport name + * + * @api public + */ + +HTMLFile.prototype.name = 'htmlfile'; + +/** + * Handles the request. + * + * @api private + */ + +HTMLFile.prototype.handleRequest = function (req) { + HTTPTransport.prototype.handleRequest.call(this, req); + + if (req.method == 'GET') { + req.res.writeHead(200, { + 'Content-Type': 'text/html; charset=UTF-8' + , 'Connection': 'keep-alive' + , 'Transfer-Encoding': 'chunked' + }); + + req.res.write( + '' + + '' + + new Array(174).join(' ') + ); + } +}; + +/** + * Performs the write. + * + * @api private + */ + +HTMLFile.prototype.write = function (data) { + data = ''; + + if (this.response.write(data)) { + this.drained = true; + } + + this.log.debug(this.name + ' writing', data); +}; diff --git a/node_modules/socket.io/lib/transports/http-polling.js b/node_modules/socket.io/lib/transports/http-polling.js new file mode 100644 index 0000000..89b7e04 --- /dev/null +++ b/node_modules/socket.io/lib/transports/http-polling.js @@ -0,0 +1,147 @@ + +/*! + * socket.io-node + * Copyright(c) 2011 LearnBoost + * MIT Licensed + */ + +/** + * Module requirements. + */ + +var HTTPTransport = require('./http'); + +/** + * Exports the constructor. + */ + +exports = module.exports = HTTPPolling; + +/** + * HTTP polling constructor. + * + * @api public. + */ + +function HTTPPolling (mng, data, req) { + HTTPTransport.call(this, mng, data, req); +}; + +/** + * Inherits from HTTPTransport. + * + * @api public. + */ + +HTTPPolling.prototype.__proto__ = HTTPTransport.prototype; + +/** + * Transport name + * + * @api public + */ + +HTTPPolling.prototype.name = 'httppolling'; + +/** + * Override setHandlers + * + * @api private + */ + +HTTPPolling.prototype.setHandlers = function () { + HTTPTransport.prototype.setHandlers.call(this); + this.socket.removeListener('end', this.bound.end); + this.socket.removeListener('close', this.bound.close); +}; + +/** + * Removes heartbeat timeouts for polling. + */ + +HTTPPolling.prototype.setHeartbeatInterval = function () { + return this; +}; + +/** + * Handles a request + * + * @api private + */ + +HTTPPolling.prototype.handleRequest = function (req) { + HTTPTransport.prototype.handleRequest.call(this, req); + + if (req.method == 'GET') { + var self = this; + + this.pollTimeout = setTimeout(function () { + self.packet({ type: 'noop' }); + self.log.debug(self.name + ' closed due to exceeded duration'); + }, this.manager.get('polling duration') * 1000); + + this.log.debug('setting poll timeout'); + } +}; + +/** + * Clears polling timeout + * + * @api private + */ + +HTTPPolling.prototype.clearPollTimeout = function () { + if (this.pollTimeout) { + clearTimeout(this.pollTimeout); + this.pollTimeout = null; + this.log.debug('clearing poll timeout'); + } + + return this; +}; + +/** + * Override clear timeouts to clear the poll timeout + * + * @api private + */ + +HTTPPolling.prototype.clearTimeouts = function () { + HTTPTransport.prototype.clearTimeouts.call(this); + + this.clearPollTimeout(); +}; + +/** + * doWrite to clear poll timeout + * + * @api private + */ + +HTTPPolling.prototype.doWrite = function () { + this.clearPollTimeout(); +}; + +/** + * Performs a write. + * + * @api private. + */ + +HTTPPolling.prototype.write = function (data, close) { + this.doWrite(data); + this.response.end(); + this.onClose(); +}; + +/** + * Override end. + * + * @api private + */ + +HTTPPolling.prototype.end = function (reason) { + this.clearPollTimeout(); + return HTTPTransport.prototype.end.call(this, reason); +}; + diff --git a/node_modules/socket.io/lib/transports/http.js b/node_modules/socket.io/lib/transports/http.js new file mode 100644 index 0000000..28db794 --- /dev/null +++ b/node_modules/socket.io/lib/transports/http.js @@ -0,0 +1,121 @@ + +/*! + * socket.io-node + * Copyright(c) 2011 LearnBoost + * MIT Licensed + */ + +/** + * Module requirements. + */ + +var Transport = require('../transport') + , parser = require('../parser') + , qs = require('querystring'); + +/** + * Export the constructor. + */ + +exports = module.exports = HTTPTransport; + +/** + * HTTP interface constructor. For all non-websocket transports. + * + * @api public + */ + +function HTTPTransport (mng, data, req) { + Transport.call(this, mng, data, req); +}; + +/** + * Inherits from Transport. + */ + +HTTPTransport.prototype.__proto__ = Transport.prototype; + +/** + * Handles a request. + * + * @api private + */ + +HTTPTransport.prototype.handleRequest = function (req) { + + // Always set the response in case an error is returned to the client + this.response = req.res; + + if (req.method == 'POST') { + var buffer = '' + , res = req.res + , origin = req.headers.origin + , headers = { 'Content-Length': 1, 'Content-Type': 'text/plain; charset=UTF-8' } + , self = this; + + req.on('data', function (data) { + buffer += data; + + if (Buffer.byteLength(buffer) >= self.manager.get('destroy buffer size')) { + buffer = ''; + req.connection.destroy(); + } + }); + + req.on('end', function () { + res.writeHead(200, headers); + res.end('1'); + + self.onData(self.postEncoded ? qs.parse(buffer).d : buffer); + }); + + // prevent memory leaks for uncompleted requests + req.on('close', function () { + buffer = ''; + self.onClose(); + }); + + if (origin) { + // https://developer.mozilla.org/En/HTTP_Access_Control + headers['Access-Control-Allow-Origin'] = origin; + headers['Access-Control-Allow-Credentials'] = 'true'; + } + } else { + Transport.prototype.handleRequest.call(this, req); + } +}; + +/** + * Handles data payload. + * + * @api private + */ + +HTTPTransport.prototype.onData = function (data) { + var messages = parser.decodePayload(data); + this.log.debug(this.name + ' received data packet', data); + + for (var i = 0, l = messages.length; i < l; i++) { + this.onMessage(messages[i]); + } +}; + +/** + * Closes the request-response cycle + * + * @api private + */ + +HTTPTransport.prototype.doClose = function () { + this.response.end(); +}; + +/** + * Writes a payload of messages + * + * @api private + */ + +HTTPTransport.prototype.payload = function (msgs) { + this.write(parser.encodePayload(msgs)); +}; diff --git a/node_modules/socket.io/lib/transports/index.js b/node_modules/socket.io/lib/transports/index.js new file mode 100644 index 0000000..b865559 --- /dev/null +++ b/node_modules/socket.io/lib/transports/index.js @@ -0,0 +1,12 @@ + +/** + * Export transports. + */ + +module.exports = { + websocket: require('./websocket') + , flashsocket: require('./flashsocket') + , htmlfile: require('./htmlfile') + , 'xhr-polling': require('./xhr-polling') + , 'jsonp-polling': require('./jsonp-polling') +}; diff --git a/node_modules/socket.io/lib/transports/jsonp-polling.js b/node_modules/socket.io/lib/transports/jsonp-polling.js new file mode 100644 index 0000000..ad7d5af --- /dev/null +++ b/node_modules/socket.io/lib/transports/jsonp-polling.js @@ -0,0 +1,97 @@ + +/*! + * socket.io-node + * Copyright(c) 2011 LearnBoost + * MIT Licensed + */ + +/** + * Module requirements. + */ + +var HTTPPolling = require('./http-polling'); +var jsonpolling_re = /^\d+$/ + +/** + * Export the constructor. + */ + +exports = module.exports = JSONPPolling; + +/** + * JSON-P polling transport. + * + * @api public + */ + +function JSONPPolling (mng, data, req) { + HTTPPolling.call(this, mng, data, req); + + this.head = 'io.j[0]('; + this.foot = ');'; + + if (data.query.i && jsonpolling_re.test(data.query.i)) { + this.head = 'io.j[' + data.query.i + ']('; + } +}; + +/** + * Inherits from Transport. + */ + +JSONPPolling.prototype.__proto__ = HTTPPolling.prototype; + +/** + * Transport name + * + * @api public + */ + +JSONPPolling.prototype.name = 'jsonppolling'; + +/** + * Make sure POST are decoded. + */ + +JSONPPolling.prototype.postEncoded = true; + +/** + * Handles incoming data. + * Due to a bug in \n handling by browsers, we expect a JSONified string. + * + * @api private + */ + +JSONPPolling.prototype.onData = function (data) { + try { + data = JSON.parse(data); + } catch (e) { + this.error('parse', 'reconnect'); + return; + } + + HTTPPolling.prototype.onData.call(this, data); +}; + +/** + * Performs the write. + * + * @api private + */ + +JSONPPolling.prototype.doWrite = function (data) { + HTTPPolling.prototype.doWrite.call(this); + + var data = data === undefined + ? '' : this.head + JSON.stringify(data) + this.foot; + + this.response.writeHead(200, { + 'Content-Type': 'text/javascript; charset=UTF-8' + , 'Content-Length': Buffer.byteLength(data) + , 'Connection': 'Keep-Alive' + , 'X-XSS-Protection': '0' + }); + + this.response.write(data); + this.log.debug(this.name + ' writing', data); +}; diff --git a/node_modules/socket.io/lib/transports/websocket.js b/node_modules/socket.io/lib/transports/websocket.js new file mode 100644 index 0000000..78a4304 --- /dev/null +++ b/node_modules/socket.io/lib/transports/websocket.js @@ -0,0 +1,36 @@ + +/*! + * socket.io-node + * Copyright(c) 2011 LearnBoost + * MIT Licensed + */ + +/** + * Module requirements. + */ + +var protocolVersions = require('./websocket/'); + +/** + * Export the constructor. + */ + +exports = module.exports = WebSocket; + +/** + * HTTP interface constructor. Interface compatible with all transports that + * depend on request-response cycles. + * + * @api public + */ + +function WebSocket (mng, data, req) { + var transport + , version = req.headers['sec-websocket-version']; + if (typeof version !== 'undefined' && typeof protocolVersions[version] !== 'undefined') { + transport = new protocolVersions[version](mng, data, req); + } + else transport = new protocolVersions['default'](mng, data, req); + if (typeof this.name !== 'undefined') transport.name = this.name; + return transport; +}; diff --git a/node_modules/socket.io/lib/transports/websocket/default.js b/node_modules/socket.io/lib/transports/websocket/default.js new file mode 100644 index 0000000..091fdd4 --- /dev/null +++ b/node_modules/socket.io/lib/transports/websocket/default.js @@ -0,0 +1,362 @@ +/*! + * socket.io-node + * Copyright(c) 2011 LearnBoost + * MIT Licensed + */ + +/** + * Module requirements. + */ + +var Transport = require('../../transport') + , EventEmitter = process.EventEmitter + , crypto = require('crypto') + , parser = require('../../parser'); + +/** + * Export the constructor. + */ + +exports = module.exports = WebSocket; + +/** + * HTTP interface constructor. Interface compatible with all transports that + * depend on request-response cycles. + * + * @api public + */ + +function WebSocket (mng, data, req) { + // parser + var self = this; + + this.parser = new Parser(); + this.parser.on('data', function (packet) { + self.log.debug(self.name + ' received data packet', packet); + self.onMessage(parser.decodePacket(packet)); + }); + this.parser.on('close', function () { + self.end(); + }); + this.parser.on('error', function () { + self.end(); + }); + + Transport.call(this, mng, data, req); +}; + +/** + * Inherits from Transport. + */ + +WebSocket.prototype.__proto__ = Transport.prototype; + +/** + * Transport name + * + * @api public + */ + +WebSocket.prototype.name = 'websocket'; + +/** + * Websocket draft version + * + * @api public + */ + +WebSocket.prototype.protocolVersion = 'hixie-76'; + +/** + * Called when the socket connects. + * + * @api private + */ + +WebSocket.prototype.onSocketConnect = function () { + var self = this; + + this.socket.setNoDelay(true); + + this.buffer = true; + this.buffered = []; + + if (this.req.headers.upgrade !== 'WebSocket') { + this.log.warn(this.name + ' connection invalid'); + this.end(); + return; + } + + var origin = this.req.headers['origin'] + , waitingForNonce = false; + if(this.manager.settings['match origin protocol']){ + location = (origin.indexOf('https')>-1 ? 'wss' : 'ws') + '://' + this.req.headers.host + this.req.url; + }else if(this.socket.encrypted){ + location = 'wss://' + this.req.headers.host + this.req.url; + }else{ + location = 'ws://' + this.req.headers.host + this.req.url; + } + + if (this.req.headers['sec-websocket-key1']) { + // If we don't have the nonce yet, wait for it (HAProxy compatibility). + if (! (this.req.head && this.req.head.length >= 8)) { + waitingForNonce = true; + } + + var headers = [ + 'HTTP/1.1 101 WebSocket Protocol Handshake' + , 'Upgrade: WebSocket' + , 'Connection: Upgrade' + , 'Sec-WebSocket-Origin: ' + origin + , 'Sec-WebSocket-Location: ' + location + ]; + + if (this.req.headers['sec-websocket-protocol']){ + headers.push('Sec-WebSocket-Protocol: ' + + this.req.headers['sec-websocket-protocol']); + } + } else { + var headers = [ + 'HTTP/1.1 101 Web Socket Protocol Handshake' + , 'Upgrade: WebSocket' + , 'Connection: Upgrade' + , 'WebSocket-Origin: ' + origin + , 'WebSocket-Location: ' + location + ]; + } + + try { + this.socket.write(headers.concat('', '').join('\r\n')); + this.socket.setTimeout(0); + this.socket.setNoDelay(true); + this.socket.setEncoding('utf8'); + } catch (e) { + this.end(); + return; + } + + if (waitingForNonce) { + this.socket.setEncoding('binary'); + } else if (this.proveReception(headers)) { + self.flush(); + } + + var headBuffer = ''; + + this.socket.on('data', function (data) { + if (waitingForNonce) { + headBuffer += data; + + if (headBuffer.length < 8) { + return; + } + + // Restore the connection to utf8 encoding after receiving the nonce + self.socket.setEncoding('utf8'); + waitingForNonce = false; + + // Stuff the nonce into the location where it's expected to be + self.req.head = headBuffer.substr(0, 8); + headBuffer = ''; + + if (self.proveReception(headers)) { + self.flush(); + } + + return; + } + + self.parser.add(data); + }); +}; + +/** + * Writes to the socket. + * + * @api private + */ + +WebSocket.prototype.write = function (data) { + if (this.open) { + this.drained = false; + + if (this.buffer) { + this.buffered.push(data); + return this; + } + + var length = Buffer.byteLength(data) + , buffer = new Buffer(2 + length); + + buffer.write('\x00', 'binary'); + buffer.write(data, 1, 'utf8'); + buffer.write('\xff', 1 + length, 'binary'); + + try { + if (this.socket.write(buffer)) { + this.drained = true; + } + } catch (e) { + this.end(); + } + + this.log.debug(this.name + ' writing', data); + } +}; + +/** + * Flushes the internal buffer + * + * @api private + */ + +WebSocket.prototype.flush = function () { + this.buffer = false; + + for (var i = 0, l = this.buffered.length; i < l; i++) { + this.write(this.buffered.splice(0, 1)[0]); + } +}; + +/** + * Finishes the handshake. + * + * @api private + */ + +WebSocket.prototype.proveReception = function (headers) { + var self = this + , k1 = this.req.headers['sec-websocket-key1'] + , k2 = this.req.headers['sec-websocket-key2']; + + if (k1 && k2){ + var md5 = crypto.createHash('md5'); + + [k1, k2].forEach(function (k) { + var n = parseInt(k.replace(/[^\d]/g, '')) + , spaces = k.replace(/[^ ]/g, '').length; + + if (spaces === 0 || n % spaces !== 0){ + self.log.warn('Invalid ' + self.name + ' key: "' + k + '".'); + self.end(); + return false; + } + + n /= spaces; + + md5.update(String.fromCharCode( + n >> 24 & 0xFF, + n >> 16 & 0xFF, + n >> 8 & 0xFF, + n & 0xFF)); + }); + + md5.update(this.req.head.toString('binary')); + + try { + this.socket.write(md5.digest('binary'), 'binary'); + } catch (e) { + this.end(); + } + } + + return true; +}; + +/** + * Writes a payload. + * + * @api private + */ + +WebSocket.prototype.payload = function (msgs) { + for (var i = 0, l = msgs.length; i < l; i++) { + this.write(msgs[i]); + } + + return this; +}; + +/** + * Closes the connection. + * + * @api private + */ + +WebSocket.prototype.doClose = function () { + this.socket.end(); +}; + +/** + * WebSocket parser + * + * @api public + */ + +function Parser () { + this.buffer = ''; + this.i = 0; +}; + +/** + * Inherits from EventEmitter. + */ + +Parser.prototype.__proto__ = EventEmitter.prototype; + +/** + * Adds data to the buffer. + * + * @api public + */ + +Parser.prototype.add = function (data) { + this.buffer += data; + this.parse(); +}; + +/** + * Parses the buffer. + * + * @api private + */ + +Parser.prototype.parse = function () { + for (var i = this.i, chr, l = this.buffer.length; i < l; i++){ + chr = this.buffer[i]; + + if (this.buffer.length == 2 && this.buffer[1] == '\u0000') { + this.emit('close'); + this.buffer = ''; + this.i = 0; + return; + } + + if (i === 0){ + if (chr != '\u0000') + this.error('Bad framing. Expected null byte as first frame'); + else + continue; + } + + if (chr == '\ufffd'){ + this.emit('data', this.buffer.substr(1, i - 1)); + this.buffer = this.buffer.substr(i + 1); + this.i = 0; + return this.parse(); + } + } +}; + +/** + * Handles an error + * + * @api private + */ + +Parser.prototype.error = function (reason) { + this.buffer = ''; + this.i = 0; + this.emit('error', reason); + return this; +}; diff --git a/node_modules/socket.io/lib/transports/websocket/hybi-07-12.js b/node_modules/socket.io/lib/transports/websocket/hybi-07-12.js new file mode 100644 index 0000000..44f666a --- /dev/null +++ b/node_modules/socket.io/lib/transports/websocket/hybi-07-12.js @@ -0,0 +1,622 @@ + +/*! + * socket.io-node + * Copyright(c) 2011 LearnBoost + * MIT Licensed + */ + +/** + * Module requirements. + */ + +var Transport = require('../../transport') + , EventEmitter = process.EventEmitter + , crypto = require('crypto') + , url = require('url') + , parser = require('../../parser') + , util = require('../../util'); + +/** + * Export the constructor. + */ + +exports = module.exports = WebSocket; +exports.Parser = Parser; + +/** + * HTTP interface constructor. Interface compatible with all transports that + * depend on request-response cycles. + * + * @api public + */ + +function WebSocket (mng, data, req) { + // parser + var self = this; + + this.manager = mng; + this.parser = new Parser(); + this.parser.on('data', function (packet) { + self.onMessage(parser.decodePacket(packet)); + }); + this.parser.on('ping', function () { + // version 8 ping => pong + try { + self.socket.write('\u008a\u0000'); + } + catch (e) { + self.end(); + return; + } + }); + this.parser.on('close', function () { + self.end(); + }); + this.parser.on('error', function (reason) { + self.log.warn(self.name + ' parser error: ' + reason); + self.end(); + }); + + Transport.call(this, mng, data, req); +}; + +/** + * Inherits from Transport. + */ + +WebSocket.prototype.__proto__ = Transport.prototype; + +/** + * Transport name + * + * @api public + */ + +WebSocket.prototype.name = 'websocket'; + +/** + * Websocket draft version + * + * @api public + */ + +WebSocket.prototype.protocolVersion = '07-12'; + +/** + * Called when the socket connects. + * + * @api private + */ + +WebSocket.prototype.onSocketConnect = function () { + var self = this; + + if (typeof this.req.headers.upgrade === 'undefined' || + this.req.headers.upgrade.toLowerCase() !== 'websocket') { + this.log.warn(this.name + ' connection invalid'); + this.end(); + return; + } + + var origin = this.req.headers['sec-websocket-origin'] + , location = ((this.manager.settings['match origin protocol'] ? + origin.match(/^https/) : this.socket.encrypted) ? + 'wss' : 'ws') + + '://' + this.req.headers.host + this.req.url; + + if (!this.verifyOrigin(origin)) { + this.log.warn(this.name + ' connection invalid: origin mismatch'); + this.end(); + return; + } + + if (!this.req.headers['sec-websocket-key']) { + this.log.warn(this.name + ' connection invalid: received no key'); + this.end(); + return; + } + + // calc key + var key = this.req.headers['sec-websocket-key']; + var shasum = crypto.createHash('sha1'); + shasum.update(key + "258EAFA5-E914-47DA-95CA-C5AB0DC85B11"); + key = shasum.digest('base64'); + + var headers = [ + 'HTTP/1.1 101 Switching Protocols' + , 'Upgrade: websocket' + , 'Connection: Upgrade' + , 'Sec-WebSocket-Accept: ' + key + ]; + + try { + this.socket.write(headers.concat('', '').join('\r\n')); + this.socket.setTimeout(0); + this.socket.setNoDelay(true); + } catch (e) { + this.end(); + return; + } + + this.socket.on('data', function (data) { + self.parser.add(data); + }); +}; + +/** + * Verifies the origin of a request. + * + * @api private + */ + +WebSocket.prototype.verifyOrigin = function (origin) { + var origins = this.manager.get('origins'); + + if (origin === 'null') origin = '*'; + + if (origins.indexOf('*:*') !== -1) { + return true; + } + + if (origin) { + try { + var parts = url.parse(origin); + parts.port = parts.port || 80; + var ok = + ~origins.indexOf(parts.hostname + ':' + parts.port) || + ~origins.indexOf(parts.hostname + ':*') || + ~origins.indexOf('*:' + parts.port); + if (!ok) this.log.warn('illegal origin: ' + origin); + return ok; + } catch (ex) { + this.log.warn('error parsing origin'); + } + } + else { + this.log.warn('origin missing from websocket call, yet required by config'); + } + return false; +}; + +/** + * Writes to the socket. + * + * @api private + */ + +WebSocket.prototype.write = function (data) { + if (this.open) { + var buf = this.frame(0x81, data); + try { + this.socket.write(buf, 'binary'); + } + catch (e) { + this.end(); + return; + } + this.log.debug(this.name + ' writing', data); + } +}; + +/** + * Writes a payload. + * + * @api private + */ + +WebSocket.prototype.payload = function (msgs) { + for (var i = 0, l = msgs.length; i < l; i++) { + this.write(msgs[i]); + } + + return this; +}; + +/** + * Frame server-to-client output as a text packet. + * + * @api private + */ + +WebSocket.prototype.frame = function (opcode, str) { + var dataBuffer = new Buffer(str) + , dataLength = dataBuffer.length + , startOffset = 2 + , secondByte = dataLength; + if (dataLength > 65536) { + startOffset = 10; + secondByte = 127; + } + else if (dataLength > 125) { + startOffset = 4; + secondByte = 126; + } + var outputBuffer = new Buffer(dataLength + startOffset); + outputBuffer[0] = opcode; + outputBuffer[1] = secondByte; + dataBuffer.copy(outputBuffer, startOffset); + switch (secondByte) { + case 126: + outputBuffer[2] = dataLength >>> 8; + outputBuffer[3] = dataLength % 256; + break; + case 127: + var l = dataLength; + for (var i = 1; i <= 8; ++i) { + outputBuffer[startOffset - i] = l & 0xff; + l >>>= 8; + } + } + return outputBuffer; +}; + +/** + * Closes the connection. + * + * @api private + */ + +WebSocket.prototype.doClose = function () { + this.socket.end(); +}; + +/** + * WebSocket parser + * + * @api public + */ + +function Parser () { + this.state = { + activeFragmentedOperation: null, + lastFragment: false, + masked: false, + opcode: 0 + }; + this.overflow = null; + this.expectOffset = 0; + this.expectBuffer = null; + this.expectHandler = null; + this.currentMessage = ''; + + var self = this; + this.opcodeHandlers = { + // text + '1': function(data) { + var finish = function(mask, data) { + self.currentMessage += self.unmask(mask, data); + if (self.state.lastFragment) { + self.emit('data', self.currentMessage); + self.currentMessage = ''; + } + self.endPacket(); + } + + var expectData = function(length) { + if (self.state.masked) { + self.expect('Mask', 4, function(data) { + var mask = data; + self.expect('Data', length, function(data) { + finish(mask, data); + }); + }); + } + else { + self.expect('Data', length, function(data) { + finish(null, data); + }); + } + } + + // decode length + var firstLength = data[1] & 0x7f; + if (firstLength < 126) { + expectData(firstLength); + } + else if (firstLength == 126) { + self.expect('Length', 2, function(data) { + expectData(util.unpack(data)); + }); + } + else if (firstLength == 127) { + self.expect('Length', 8, function(data) { + if (util.unpack(data.slice(0, 4)) != 0) { + self.error('packets with length spanning more than 32 bit is currently not supported'); + return; + } + var lengthBytes = data.slice(4); // note: cap to 32 bit length + expectData(util.unpack(data)); + }); + } + }, + // binary + '2': function(data) { + var finish = function(mask, data) { + if (typeof self.currentMessage == 'string') self.currentMessage = []; // build a buffer list + self.currentMessage.push(self.unmask(mask, data, true)); + if (self.state.lastFragment) { + self.emit('binary', self.concatBuffers(self.currentMessage)); + self.currentMessage = ''; + } + self.endPacket(); + } + + var expectData = function(length) { + if (self.state.masked) { + self.expect('Mask', 4, function(data) { + var mask = data; + self.expect('Data', length, function(data) { + finish(mask, data); + }); + }); + } + else { + self.expect('Data', length, function(data) { + finish(null, data); + }); + } + } + + // decode length + var firstLength = data[1] & 0x7f; + if (firstLength < 126) { + expectData(firstLength); + } + else if (firstLength == 126) { + self.expect('Length', 2, function(data) { + expectData(util.unpack(data)); + }); + } + else if (firstLength == 127) { + self.expect('Length', 8, function(data) { + if (util.unpack(data.slice(0, 4)) != 0) { + self.error('packets with length spanning more than 32 bit is currently not supported'); + return; + } + var lengthBytes = data.slice(4); // note: cap to 32 bit length + expectData(util.unpack(data)); + }); + } + }, + // close + '8': function(data) { + self.emit('close'); + self.reset(); + }, + // ping + '9': function(data) { + if (self.state.lastFragment == false) { + self.error('fragmented ping is not supported'); + return; + } + + var finish = function(mask, data) { + self.emit('ping', self.unmask(mask, data)); + self.endPacket(); + } + + var expectData = function(length) { + if (self.state.masked) { + self.expect('Mask', 4, function(data) { + var mask = data; + self.expect('Data', length, function(data) { + finish(mask, data); + }); + }); + } + else { + self.expect('Data', length, function(data) { + finish(null, data); + }); + } + } + + // decode length + var firstLength = data[1] & 0x7f; + if (firstLength == 0) { + finish(null, null); + } + else if (firstLength < 126) { + expectData(firstLength); + } + else if (firstLength == 126) { + self.expect('Length', 2, function(data) { + expectData(util.unpack(data)); + }); + } + else if (firstLength == 127) { + self.expect('Length', 8, function(data) { + expectData(util.unpack(data)); + }); + } + } + } + + this.expect('Opcode', 2, this.processPacket); +}; + +/** + * Inherits from EventEmitter. + */ + +Parser.prototype.__proto__ = EventEmitter.prototype; + +/** + * Add new data to the parser. + * + * @api public + */ + +Parser.prototype.add = function(data) { + if (this.expectBuffer == null) { + this.addToOverflow(data); + return; + } + var toRead = Math.min(data.length, this.expectBuffer.length - this.expectOffset); + data.copy(this.expectBuffer, this.expectOffset, 0, toRead); + this.expectOffset += toRead; + if (toRead < data.length) { + // at this point the overflow buffer shouldn't at all exist + this.overflow = new Buffer(data.length - toRead); + data.copy(this.overflow, 0, toRead, toRead + this.overflow.length); + } + if (this.expectOffset == this.expectBuffer.length) { + var bufferForHandler = this.expectBuffer; + this.expectBuffer = null; + this.expectOffset = 0; + this.expectHandler.call(this, bufferForHandler); + } +} + +/** + * Adds a piece of data to the overflow. + * + * @api private + */ + +Parser.prototype.addToOverflow = function(data) { + if (this.overflow == null) this.overflow = data; + else { + var prevOverflow = this.overflow; + this.overflow = new Buffer(this.overflow.length + data.length); + prevOverflow.copy(this.overflow, 0); + data.copy(this.overflow, prevOverflow.length); + } +} + +/** + * Waits for a certain amount of bytes to be available, then fires a callback. + * + * @api private + */ + +Parser.prototype.expect = function(what, length, handler) { + this.expectBuffer = new Buffer(length); + this.expectOffset = 0; + this.expectHandler = handler; + if (this.overflow != null) { + var toOverflow = this.overflow; + this.overflow = null; + this.add(toOverflow); + } +} + +/** + * Start processing a new packet. + * + * @api private + */ + +Parser.prototype.processPacket = function (data) { + if ((data[0] & 0x70) != 0) { + this.error('reserved fields must be empty'); + } + this.state.lastFragment = (data[0] & 0x80) == 0x80; + this.state.masked = (data[1] & 0x80) == 0x80; + var opcode = data[0] & 0xf; + if (opcode == 0) { + // continuation frame + this.state.opcode = this.state.activeFragmentedOperation; + if (!(this.state.opcode == 1 || this.state.opcode == 2)) { + this.error('continuation frame cannot follow current opcode') + return; + } + } + else { + this.state.opcode = opcode; + if (this.state.lastFragment === false) { + this.state.activeFragmentedOperation = opcode; + } + } + var handler = this.opcodeHandlers[this.state.opcode]; + if (typeof handler == 'undefined') this.error('no handler for opcode ' + this.state.opcode); + else handler(data); +} + +/** + * Endprocessing a packet. + * + * @api private + */ + +Parser.prototype.endPacket = function() { + this.expectOffset = 0; + this.expectBuffer = null; + this.expectHandler = null; + if (this.state.lastFragment && this.state.opcode == this.state.activeFragmentedOperation) { + // end current fragmented operation + this.state.activeFragmentedOperation = null; + } + this.state.lastFragment = false; + this.state.opcode = this.state.activeFragmentedOperation != null ? this.state.activeFragmentedOperation : 0; + this.state.masked = false; + this.expect('Opcode', 2, this.processPacket); +} + +/** + * Reset the parser state. + * + * @api private + */ + +Parser.prototype.reset = function() { + this.state = { + activeFragmentedOperation: null, + lastFragment: false, + masked: false, + opcode: 0 + }; + this.expectOffset = 0; + this.expectBuffer = null; + this.expectHandler = null; + this.overflow = null; + this.currentMessage = ''; +} + +/** + * Unmask received data. + * + * @api private + */ + +Parser.prototype.unmask = function (mask, buf, binary) { + if (mask != null) { + for (var i = 0, ll = buf.length; i < ll; i++) { + buf[i] ^= mask[i % 4]; + } + } + if (binary) return buf; + return buf != null ? buf.toString('utf8') : ''; +} + +/** + * Concatenates a list of buffers. + * + * @api private + */ + +Parser.prototype.concatBuffers = function(buffers) { + var length = 0; + for (var i = 0, l = buffers.length; i < l; ++i) { + length += buffers[i].length; + } + var mergedBuffer = new Buffer(length); + var offset = 0; + for (var i = 0, l = buffers.length; i < l; ++i) { + buffers[i].copy(mergedBuffer, offset); + offset += buffers[i].length; + } + return mergedBuffer; +} + +/** + * Handles an error + * + * @api private + */ + +Parser.prototype.error = function (reason) { + this.reset(); + this.emit('error', reason); + return this; +}; diff --git a/node_modules/socket.io/lib/transports/websocket/hybi-16.js b/node_modules/socket.io/lib/transports/websocket/hybi-16.js new file mode 100644 index 0000000..69967da --- /dev/null +++ b/node_modules/socket.io/lib/transports/websocket/hybi-16.js @@ -0,0 +1,622 @@ +/*! + * socket.io-node + * Copyright(c) 2011 LearnBoost + * MIT Licensed + */ + +/** + * Module requirements. + */ + +var Transport = require('../../transport') + , EventEmitter = process.EventEmitter + , crypto = require('crypto') + , url = require('url') + , parser = require('../../parser') + , util = require('../../util'); + +/** + * Export the constructor. + */ + +exports = module.exports = WebSocket; +exports.Parser = Parser; + +/** + * HTTP interface constructor. Interface compatible with all transports that + * depend on request-response cycles. + * + * @api public + */ + +function WebSocket (mng, data, req) { + // parser + var self = this; + + this.manager = mng; + this.parser = new Parser(); + this.parser.on('data', function (packet) { + self.onMessage(parser.decodePacket(packet)); + }); + this.parser.on('ping', function () { + // version 8 ping => pong + try { + self.socket.write('\u008a\u0000'); + } + catch (e) { + self.end(); + return; + } + }); + this.parser.on('close', function () { + self.end(); + }); + this.parser.on('error', function (reason) { + self.log.warn(self.name + ' parser error: ' + reason); + self.end(); + }); + + Transport.call(this, mng, data, req); +}; + +/** + * Inherits from Transport. + */ + +WebSocket.prototype.__proto__ = Transport.prototype; + +/** + * Transport name + * + * @api public + */ + +WebSocket.prototype.name = 'websocket'; + +/** + * Websocket draft version + * + * @api public + */ + +WebSocket.prototype.protocolVersion = '16'; + +/** + * Called when the socket connects. + * + * @api private + */ + +WebSocket.prototype.onSocketConnect = function () { + var self = this; + + if (typeof this.req.headers.upgrade === 'undefined' || + this.req.headers.upgrade.toLowerCase() !== 'websocket') { + this.log.warn(this.name + ' connection invalid'); + this.end(); + return; + } + + var origin = this.req.headers['origin'] || '' + , location = ((this.manager.settings['match origin protocol'] ? + origin.match(/^https/) : this.socket.encrypted) ? + 'wss' : 'ws') + + '://' + this.req.headers.host + this.req.url; + + if (!this.verifyOrigin(origin)) { + this.log.warn(this.name + ' connection invalid: origin mismatch'); + this.end(); + return; + } + + if (!this.req.headers['sec-websocket-key']) { + this.log.warn(this.name + ' connection invalid: received no key'); + this.end(); + return; + } + + // calc key + var key = this.req.headers['sec-websocket-key']; + var shasum = crypto.createHash('sha1'); + shasum.update(key + "258EAFA5-E914-47DA-95CA-C5AB0DC85B11"); + key = shasum.digest('base64'); + + var headers = [ + 'HTTP/1.1 101 Switching Protocols' + , 'Upgrade: websocket' + , 'Connection: Upgrade' + , 'Sec-WebSocket-Accept: ' + key + ]; + + try { + this.socket.write(headers.concat('', '').join('\r\n')); + this.socket.setTimeout(0); + this.socket.setNoDelay(true); + } catch (e) { + this.end(); + return; + } + + this.socket.on('data', function (data) { + self.parser.add(data); + }); +}; + +/** + * Verifies the origin of a request. + * + * @api private + */ + +WebSocket.prototype.verifyOrigin = function (origin) { + var origins = this.manager.get('origins'); + + if (origin === 'null') origin = '*'; + + if (origins.indexOf('*:*') !== -1) { + return true; + } + + if (origin) { + try { + var parts = url.parse(origin); + parts.port = parts.port || 80; + var ok = + ~origins.indexOf(parts.hostname + ':' + parts.port) || + ~origins.indexOf(parts.hostname + ':*') || + ~origins.indexOf('*:' + parts.port); + if (!ok) this.log.warn('illegal origin: ' + origin); + return ok; + } catch (ex) { + this.log.warn('error parsing origin'); + } + } + else { + this.log.warn('origin missing from websocket call, yet required by config'); + } + return false; +}; + +/** + * Writes to the socket. + * + * @api private + */ + +WebSocket.prototype.write = function (data) { + if (this.open) { + var buf = this.frame(0x81, data); + try { + this.socket.write(buf, 'binary'); + } + catch (e) { + this.end(); + return; + } + this.log.debug(this.name + ' writing', data); + } +}; + +/** + * Writes a payload. + * + * @api private + */ + +WebSocket.prototype.payload = function (msgs) { + for (var i = 0, l = msgs.length; i < l; i++) { + this.write(msgs[i]); + } + + return this; +}; + +/** + * Frame server-to-client output as a text packet. + * + * @api private + */ + +WebSocket.prototype.frame = function (opcode, str) { + var dataBuffer = new Buffer(str) + , dataLength = dataBuffer.length + , startOffset = 2 + , secondByte = dataLength; + if (dataLength > 65536) { + startOffset = 10; + secondByte = 127; + } + else if (dataLength > 125) { + startOffset = 4; + secondByte = 126; + } + var outputBuffer = new Buffer(dataLength + startOffset); + outputBuffer[0] = opcode; + outputBuffer[1] = secondByte; + dataBuffer.copy(outputBuffer, startOffset); + switch (secondByte) { + case 126: + outputBuffer[2] = dataLength >>> 8; + outputBuffer[3] = dataLength % 256; + break; + case 127: + var l = dataLength; + for (var i = 1; i <= 8; ++i) { + outputBuffer[startOffset - i] = l & 0xff; + l >>>= 8; + } + } + return outputBuffer; +}; + +/** + * Closes the connection. + * + * @api private + */ + +WebSocket.prototype.doClose = function () { + this.socket.end(); +}; + +/** + * WebSocket parser + * + * @api public + */ + +function Parser () { + this.state = { + activeFragmentedOperation: null, + lastFragment: false, + masked: false, + opcode: 0 + }; + this.overflow = null; + this.expectOffset = 0; + this.expectBuffer = null; + this.expectHandler = null; + this.currentMessage = ''; + + var self = this; + this.opcodeHandlers = { + // text + '1': function(data) { + var finish = function(mask, data) { + self.currentMessage += self.unmask(mask, data); + if (self.state.lastFragment) { + self.emit('data', self.currentMessage); + self.currentMessage = ''; + } + self.endPacket(); + } + + var expectData = function(length) { + if (self.state.masked) { + self.expect('Mask', 4, function(data) { + var mask = data; + self.expect('Data', length, function(data) { + finish(mask, data); + }); + }); + } + else { + self.expect('Data', length, function(data) { + finish(null, data); + }); + } + } + + // decode length + var firstLength = data[1] & 0x7f; + if (firstLength < 126) { + expectData(firstLength); + } + else if (firstLength == 126) { + self.expect('Length', 2, function(data) { + expectData(util.unpack(data)); + }); + } + else if (firstLength == 127) { + self.expect('Length', 8, function(data) { + if (util.unpack(data.slice(0, 4)) != 0) { + self.error('packets with length spanning more than 32 bit is currently not supported'); + return; + } + var lengthBytes = data.slice(4); // note: cap to 32 bit length + expectData(util.unpack(data)); + }); + } + }, + // binary + '2': function(data) { + var finish = function(mask, data) { + if (typeof self.currentMessage == 'string') self.currentMessage = []; // build a buffer list + self.currentMessage.push(self.unmask(mask, data, true)); + if (self.state.lastFragment) { + self.emit('binary', self.concatBuffers(self.currentMessage)); + self.currentMessage = ''; + } + self.endPacket(); + } + + var expectData = function(length) { + if (self.state.masked) { + self.expect('Mask', 4, function(data) { + var mask = data; + self.expect('Data', length, function(data) { + finish(mask, data); + }); + }); + } + else { + self.expect('Data', length, function(data) { + finish(null, data); + }); + } + } + + // decode length + var firstLength = data[1] & 0x7f; + if (firstLength < 126) { + expectData(firstLength); + } + else if (firstLength == 126) { + self.expect('Length', 2, function(data) { + expectData(util.unpack(data)); + }); + } + else if (firstLength == 127) { + self.expect('Length', 8, function(data) { + if (util.unpack(data.slice(0, 4)) != 0) { + self.error('packets with length spanning more than 32 bit is currently not supported'); + return; + } + var lengthBytes = data.slice(4); // note: cap to 32 bit length + expectData(util.unpack(data)); + }); + } + }, + // close + '8': function(data) { + self.emit('close'); + self.reset(); + }, + // ping + '9': function(data) { + if (self.state.lastFragment == false) { + self.error('fragmented ping is not supported'); + return; + } + + var finish = function(mask, data) { + self.emit('ping', self.unmask(mask, data)); + self.endPacket(); + } + + var expectData = function(length) { + if (self.state.masked) { + self.expect('Mask', 4, function(data) { + var mask = data; + self.expect('Data', length, function(data) { + finish(mask, data); + }); + }); + } + else { + self.expect('Data', length, function(data) { + finish(null, data); + }); + } + } + + // decode length + var firstLength = data[1] & 0x7f; + if (firstLength == 0) { + finish(null, null); + } + else if (firstLength < 126) { + expectData(firstLength); + } + else if (firstLength == 126) { + self.expect('Length', 2, function(data) { + expectData(util.unpack(data)); + }); + } + else if (firstLength == 127) { + self.expect('Length', 8, function(data) { + expectData(util.unpack(data)); + }); + } + } + } + + this.expect('Opcode', 2, this.processPacket); +}; + +/** + * Inherits from EventEmitter. + */ + +Parser.prototype.__proto__ = EventEmitter.prototype; + +/** + * Add new data to the parser. + * + * @api public + */ + +Parser.prototype.add = function(data) { + if (this.expectBuffer == null) { + this.addToOverflow(data); + return; + } + var toRead = Math.min(data.length, this.expectBuffer.length - this.expectOffset); + data.copy(this.expectBuffer, this.expectOffset, 0, toRead); + this.expectOffset += toRead; + if (toRead < data.length) { + // at this point the overflow buffer shouldn't at all exist + this.overflow = new Buffer(data.length - toRead); + data.copy(this.overflow, 0, toRead, toRead + this.overflow.length); + } + if (this.expectOffset == this.expectBuffer.length) { + var bufferForHandler = this.expectBuffer; + this.expectBuffer = null; + this.expectOffset = 0; + this.expectHandler.call(this, bufferForHandler); + } +} + +/** + * Adds a piece of data to the overflow. + * + * @api private + */ + +Parser.prototype.addToOverflow = function(data) { + if (this.overflow == null) this.overflow = data; + else { + var prevOverflow = this.overflow; + this.overflow = new Buffer(this.overflow.length + data.length); + prevOverflow.copy(this.overflow, 0); + data.copy(this.overflow, prevOverflow.length); + } +} + +/** + * Waits for a certain amount of bytes to be available, then fires a callback. + * + * @api private + */ + +Parser.prototype.expect = function(what, length, handler) { + this.expectBuffer = new Buffer(length); + this.expectOffset = 0; + this.expectHandler = handler; + if (this.overflow != null) { + var toOverflow = this.overflow; + this.overflow = null; + this.add(toOverflow); + } +} + +/** + * Start processing a new packet. + * + * @api private + */ + +Parser.prototype.processPacket = function (data) { + if ((data[0] & 0x70) != 0) { + this.error('reserved fields must be empty'); + return; + } + this.state.lastFragment = (data[0] & 0x80) == 0x80; + this.state.masked = (data[1] & 0x80) == 0x80; + var opcode = data[0] & 0xf; + if (opcode == 0) { + // continuation frame + this.state.opcode = this.state.activeFragmentedOperation; + if (!(this.state.opcode == 1 || this.state.opcode == 2)) { + this.error('continuation frame cannot follow current opcode') + return; + } + } + else { + this.state.opcode = opcode; + if (this.state.lastFragment === false) { + this.state.activeFragmentedOperation = opcode; + } + } + var handler = this.opcodeHandlers[this.state.opcode]; + if (typeof handler == 'undefined') this.error('no handler for opcode ' + this.state.opcode); + else handler(data); +} + +/** + * Endprocessing a packet. + * + * @api private + */ + +Parser.prototype.endPacket = function() { + this.expectOffset = 0; + this.expectBuffer = null; + this.expectHandler = null; + if (this.state.lastFragment && this.state.opcode == this.state.activeFragmentedOperation) { + // end current fragmented operation + this.state.activeFragmentedOperation = null; + } + this.state.lastFragment = false; + this.state.opcode = this.state.activeFragmentedOperation != null ? this.state.activeFragmentedOperation : 0; + this.state.masked = false; + this.expect('Opcode', 2, this.processPacket); +} + +/** + * Reset the parser state. + * + * @api private + */ + +Parser.prototype.reset = function() { + this.state = { + activeFragmentedOperation: null, + lastFragment: false, + masked: false, + opcode: 0 + }; + this.expectOffset = 0; + this.expectBuffer = null; + this.expectHandler = null; + this.overflow = null; + this.currentMessage = ''; +} + +/** + * Unmask received data. + * + * @api private + */ + +Parser.prototype.unmask = function (mask, buf, binary) { + if (mask != null) { + for (var i = 0, ll = buf.length; i < ll; i++) { + buf[i] ^= mask[i % 4]; + } + } + if (binary) return buf; + return buf != null ? buf.toString('utf8') : ''; +} + +/** + * Concatenates a list of buffers. + * + * @api private + */ + +Parser.prototype.concatBuffers = function(buffers) { + var length = 0; + for (var i = 0, l = buffers.length; i < l; ++i) { + length += buffers[i].length; + } + var mergedBuffer = new Buffer(length); + var offset = 0; + for (var i = 0, l = buffers.length; i < l; ++i) { + buffers[i].copy(mergedBuffer, offset); + offset += buffers[i].length; + } + return mergedBuffer; +} + +/** + * Handles an error + * + * @api private + */ + +Parser.prototype.error = function (reason) { + this.reset(); + this.emit('error', reason); + return this; +}; diff --git a/node_modules/socket.io/lib/transports/websocket/index.js b/node_modules/socket.io/lib/transports/websocket/index.js new file mode 100644 index 0000000..3a952b7 --- /dev/null +++ b/node_modules/socket.io/lib/transports/websocket/index.js @@ -0,0 +1,11 @@ + +/** + * Export websocket versions. + */ + +module.exports = { + 7: require('./hybi-07-12'), + 8: require('./hybi-07-12'), + 13: require('./hybi-16'), + default: require('./default') +}; diff --git a/node_modules/socket.io/lib/transports/xhr-polling.js b/node_modules/socket.io/lib/transports/xhr-polling.js new file mode 100644 index 0000000..1db5aee --- /dev/null +++ b/node_modules/socket.io/lib/transports/xhr-polling.js @@ -0,0 +1,69 @@ + +/*! + * socket.io-node + * Copyright(c) 2011 LearnBoost + * MIT Licensed + */ + +/** + * Module requirements. + */ + +var HTTPPolling = require('./http-polling'); + +/** + * Export the constructor. + */ + +exports = module.exports = XHRPolling; + +/** + * Ajax polling transport. + * + * @api public + */ + +function XHRPolling (mng, data, req) { + HTTPPolling.call(this, mng, data, req); +}; + +/** + * Inherits from Transport. + */ + +XHRPolling.prototype.__proto__ = HTTPPolling.prototype; + +/** + * Transport name + * + * @api public + */ + +XHRPolling.prototype.name = 'xhr-polling'; + +/** + * Frames data prior to write. + * + * @api private + */ + +XHRPolling.prototype.doWrite = function (data) { + HTTPPolling.prototype.doWrite.call(this); + + var origin = this.req.headers.origin + , headers = { + 'Content-Type': 'text/plain; charset=UTF-8' + , 'Content-Length': data === undefined ? 0 : Buffer.byteLength(data) + , 'Connection': 'Keep-Alive' + }; + + if (origin) { + // https://developer.mozilla.org/En/HTTP_Access_Control + headers['Access-Control-Allow-Origin'] = origin; + headers['Access-Control-Allow-Credentials'] = 'true'; + } + + this.response.writeHead(200, headers); + this.response.write(data); + this.log.debug(this.name + ' writing', data); +}; diff --git a/node_modules/socket.io/lib/util.js b/node_modules/socket.io/lib/util.js new file mode 100644 index 0000000..f7d9f2b --- /dev/null +++ b/node_modules/socket.io/lib/util.js @@ -0,0 +1,50 @@ + +/*! + * socket.io-node + * Copyright(c) 2011 LearnBoost + * MIT Licensed + */ + +/** + * Module dependencies. + */ + +/** + * Converts an enumerable to an array. + * + * @api public + */ + +exports.toArray = function (enu) { + var arr = []; + + for (var i = 0, l = enu.length; i < l; i++) + arr.push(enu[i]); + + return arr; +}; + +/** + * Unpacks a buffer to a number. + * + * @api public + */ + +exports.unpack = function (buffer) { + var n = 0; + for (var i = 0; i < buffer.length; ++i) { + n = (i == 0) ? buffer[i] : (n * 256) + buffer[i]; + } + return n; +} + +/** + * Left pads a string. + * + * @api public + */ + +exports.padl = function (s,n,c) { + return new Array(1 + n - s.length).join(c) + s; +} + diff --git a/node_modules/socket.io/node_modules/base64id/.npmignore b/node_modules/socket.io/node_modules/base64id/.npmignore new file mode 100644 index 0000000..39e9864 --- /dev/null +++ b/node_modules/socket.io/node_modules/base64id/.npmignore @@ -0,0 +1,3 @@ +support +test +examples diff --git a/node_modules/socket.io/node_modules/base64id/README.md b/node_modules/socket.io/node_modules/base64id/README.md new file mode 100644 index 0000000..b4361c1 --- /dev/null +++ b/node_modules/socket.io/node_modules/base64id/README.md @@ -0,0 +1,18 @@ +base64id +======== + +Node.js module that generates a base64 id. + +Uses crypto.randomBytes when available, falls back to unsafe methods for node.js <= 0.4. + +To increase performance, random bytes are buffered to minimize the number of synchronous calls to crypto.randomBytes. + +## Installation + + $ npm install mongoose + +## Usage + + var base64id = require('base64id'); + + var id = base64id.generateId(); diff --git a/node_modules/socket.io/node_modules/base64id/lib/base64id.js b/node_modules/socket.io/node_modules/base64id/lib/base64id.js new file mode 100644 index 0000000..f688159 --- /dev/null +++ b/node_modules/socket.io/node_modules/base64id/lib/base64id.js @@ -0,0 +1,103 @@ +/*! + * base64id v0.1.0 + */ + +/** + * Module dependencies + */ + +var crypto = require('crypto'); + +/** + * Constructor + */ + +var Base64Id = function() { }; + +/** + * Get random bytes + * + * Uses a buffer if available, falls back to crypto.randomBytes + */ + +Base64Id.prototype.getRandomBytes = function(bytes) { + + var BUFFER_SIZE = 4096 + var self = this; + + bytes = bytes || 12; + + if (bytes > BUFFER_SIZE) { + return crypto.randomBytes(bytes); + } + + var bytesInBuffer = parseInt(BUFFER_SIZE/bytes); + var threshold = parseInt(bytesInBuffer*0.85); + + if (!threshold) { + return crypto.randomBytes(bytes); + } + + if (this.bytesBufferIndex == null) { + this.bytesBufferIndex = -1; + } + + if (this.bytesBufferIndex == bytesInBuffer) { + this.bytesBuffer = null; + this.bytesBufferIndex = -1; + } + + // No buffered bytes available or index above threshold + if (this.bytesBufferIndex == -1 || this.bytesBufferIndex > threshold) { + + if (!this.isGeneratingBytes) { + this.isGeneratingBytes = true; + crypto.randomBytes(BUFFER_SIZE, function(err, bytes) { + self.bytesBuffer = bytes; + self.bytesBufferIndex = 0; + self.isGeneratingBytes = false; + }); + } + + // Fall back to sync call when no buffered bytes are available + if (this.bytesBufferIndex == -1) { + return crypto.randomBytes(bytes); + } + } + + var result = this.bytesBuffer.slice(bytes*this.bytesBufferIndex, bytes*(this.bytesBufferIndex+1)); + this.bytesBufferIndex++; + + return result; +} + +/** + * Generates a base64 id + * + * (Original version from socket.io ) + */ + +Base64Id.prototype.generateId = function () { + var rand = new Buffer(15); // multiple of 3 for base64 + if (!rand.writeInt32BE) { + return Math.abs(Math.random() * Math.random() * Date.now() | 0).toString() + + Math.abs(Math.random() * Math.random() * Date.now() | 0).toString(); + } + this.sequenceNumber = (this.sequenceNumber + 1) | 0; + rand.writeInt32BE(this.sequenceNumber, 11); + if (crypto.randomBytes) { + this.getRandomBytes(12).copy(rand); + } else { + // not secure for node 0.4 + [0, 4, 8].forEach(function(i) { + rand.writeInt32BE(Math.random() * Math.pow(2, 32) | 0, i); + }); + } + return rand.toString('base64').replace(/\//g, '_').replace(/\+/g, '-'); +}; + +/** + * Export + */ + +exports = module.exports = new Base64Id(); diff --git a/node_modules/socket.io/node_modules/base64id/package.json b/node_modules/socket.io/node_modules/base64id/package.json new file mode 100644 index 0000000..4c168f5 --- /dev/null +++ b/node_modules/socket.io/node_modules/base64id/package.json @@ -0,0 +1,25 @@ +{ + "name": "base64id", + "version": "0.1.0", + "description": "Generates a base64 id", + "author": { + "name": "Kristian Faeldt", + "email": "faeldt_kristian@cyberagent.co.jp" + }, + "repository": { + "type": "git", + "url": "https://github.com/faeldt/base64id.git" + }, + "main": "./lib/base64id.js", + "engines": { + "node": ">= 0.4.0" + }, + "readme": "base64id\n========\n\nNode.js module that generates a base64 id.\n\nUses crypto.randomBytes when available, falls back to unsafe methods for node.js <= 0.4.\n\nTo increase performance, random bytes are buffered to minimize the number of synchronous calls to crypto.randomBytes.\n\n## Installation\n\n $ npm install mongoose\n\n## Usage\n\n var base64id = require('base64id');\n\n var id = base64id.generateId();\n", + "readmeFilename": "README.md", + "_id": "base64id@0.1.0", + "dist": { + "shasum": "ebe81f200af02bdce6c78434ee607eeed2ca43cf" + }, + "_from": "base64id@0.1.0", + "_resolved": "https://registry.npmjs.org/base64id/-/base64id-0.1.0.tgz" +} diff --git a/node_modules/socket.io/node_modules/policyfile/.npmignore b/node_modules/socket.io/node_modules/policyfile/.npmignore new file mode 100644 index 0000000..b512c09 --- /dev/null +++ b/node_modules/socket.io/node_modules/policyfile/.npmignore @@ -0,0 +1 @@ +node_modules \ No newline at end of file diff --git a/node_modules/socket.io/node_modules/policyfile/LICENSE b/node_modules/socket.io/node_modules/policyfile/LICENSE new file mode 100644 index 0000000..bdb8f61 --- /dev/null +++ b/node_modules/socket.io/node_modules/policyfile/LICENSE @@ -0,0 +1,19 @@ +Copyright (c) 2011 Arnout Kazemier,3rd-Eden + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. \ No newline at end of file diff --git a/node_modules/socket.io/node_modules/policyfile/Makefile b/node_modules/socket.io/node_modules/policyfile/Makefile new file mode 100644 index 0000000..1362d66 --- /dev/null +++ b/node_modules/socket.io/node_modules/policyfile/Makefile @@ -0,0 +1,7 @@ +doc: + dox --title "FlashPolicyFileServer" lib/* > doc/index.html + +test: + expresso -I lib $(TESTFLAGS) tests/*.test.js + +.PHONY: test doc \ No newline at end of file diff --git a/node_modules/socket.io/node_modules/policyfile/README.md b/node_modules/socket.io/node_modules/policyfile/README.md new file mode 100644 index 0000000..527921e --- /dev/null +++ b/node_modules/socket.io/node_modules/policyfile/README.md @@ -0,0 +1,98 @@ +## LOL, WUT? +It basically allows you to allow or disallow Flash Player sockets from accessing your site. + +## Installation + +```bash +npm install policyfile +``` +## Usage + +The server is based on the regular and know `net` and `http` server patterns. So it you can just listen +for all the events that a `net` based server emits etc. But there is one extra event, the `connect_failed` +event. This event is triggered when we are unable to listen on the supplied port number. + +### createServer +Creates a new server instance and accepts 2 optional arguments: + +- `options` **Object** Options to configure the server instance + - `log` **Boolean** Enable logging to STDOUT and STDERR (defaults to true) +- `origins` **Array** An Array of origins that are allowed by the server (defaults to *:*) + +```js +var pf = require('policyfile'); +pf.createServer(); +pf.listen(); +``` + +#### server.listen +Start listening on the server and it takes 3 optional arguments + +- `port` **Number** On which port number should we listen? (defaults to 843, which is the first port number the FlashPlayer checks) +- `server` **Server** A http server, if we are unable to accept requests or run the server we can also answer the policy requests inline over the supplied HTTP server. +- `callback` **Function** A callback function that is called when listening to the server was successful. + +```js +var pf = require('policyfile'); +pf.createServer(); +pf.listen(1337, function(){ + console.log(':3 yay') +}); +``` + +Changing port numbers can be handy if you do not want to run your server as root and have port 843 forward to a non root port number (aka a number above 1024). + +```js +var pf = require('policyfile') + , http = require('http'); + +server = http.createServer(function(q,r){r.writeHead(200);r.end('hello world')}); +server.listen(80); + +pf.createServer(); +pf.listen(1337, server, function(){ + console.log(':3 yay') +}); +``` + +Support for serving inline requests over a existing HTTP connection as the FlashPlayer will first check port 843, but if it's unable to get a response there it will send a policy file request over port 80, which is usually your http server. + +#### server.add +Adds more origins to the policy file you can add as many arguments as you like. + +```js +var pf = require('policyfile'); +pf.createServer(['google.com:80']); +pf.listen(); +pf.add('blog.3rd-Eden.com:80', 'blog.3rd-Eden.com:8080'); // now has 3 origins +``` + +#### server.add +Adds more origins to the policy file you can add as many arguments as you like. + +```js +var pf = require('policyfile'); +pf.createServer(['blog.3rd-Eden.com:80', 'blog.3rd-Eden.com:8080']); +pf.listen(); +pf.remove('blog.3rd-Eden.com:8080'); // only contains the :80 version now +``` + +#### server.close +Shuts down the server + +```js +var pf = require('policyfile'); +pf.createServer(); +pf.listen(); +pf.close(); // OH NVM. +``` + +## API +http://3rd-eden.com/FlashPolicyFileServer/ + +## Examples +See https://github.com/3rd-Eden/FlashPolicyFileServer/tree/master/examples for examples + +## Licence + +MIT see LICENSE file in the repository \ No newline at end of file diff --git a/node_modules/socket.io/node_modules/policyfile/doc/index.html b/node_modules/socket.io/node_modules/policyfile/doc/index.html new file mode 100644 index 0000000..743fcda --- /dev/null +++ b/node_modules/socket.io/node_modules/policyfile/doc/index.html @@ -0,0 +1,375 @@ + + + FlashPolicyFileServer + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

      FlashPolicyFileServer

      server

      lib/server.js
      +

      Module dependencies and cached references. +

      +
      +
      var slice = Array.prototype.slice
      +  , net = require('net');
      +
      +

      The server that does the Policy File severing

      + +

      Options

      + +
      • log false or a function that can output log information, defaults to console.log?
      + +

      + +
      • param: Object options Options to customize the servers functionality.

      • param: Array origins The origins that are allowed on this server, defaults to *:*.

      • api: public

      +
      +
      function Server(options, origins){
      +  var me = this;
      +  
      +  this.origins = origins || ['*:*'];
      +  this.port = 843;
      +  this.log = console.log;
      +  
      +  // merge `this` with the options
      +  Object.keys(options).forEach(function(key){
      +    me[key] &amp;&amp; (me[key] = options[key])
      +  });
      +  
      +  // create the net server
      +  this.socket = net.createServer(function createServer(socket){
      +    socket.on('error', function socketError(){ me.responder.call(me, socket) });
      +    me.responder.call(me, socket);
      +  });
      +  
      +  // Listen for errors as the port might be blocked because we do not have root priv.
      +  this.socket.on('error', function serverError(err){
      +    // Special and common case error handling
      +    if (err.errno == 13){
      +      me.log &amp;&amp; me.log(
      +        'Unable to listen to port `' + me.port + '` as your Node.js instance does not have root privileges. ' +
      +        (
      +          me.server
      +          ? 'The Flash Policy file will now be served inline over the supplied HTTP server, Flash Policy files request will suffer.'
      +          : 'No fallback server supplied.'
      +        )
      +      );
      +      
      +      me.socket.removeAllListeners();
      +      delete me.socket;
      +
      +      me.emit('connect_failed', err);
      +    } else {
      +      me.log &amp;&amp; me.log('FlashPolicyFileServer received a error event:\n' + (err.message ? err.message : err));
      +    }
      +  });
      +  
      +  this.socket.on('timeout', function serverTimeout(){});
      +  this.socket.on('close', function serverClosed(err){
      +    err &amp;&amp; me.log &amp;&amp; me.log('Server closing due to an error: \n' + (err.message ? err.message : err));
      +    
      +    if (me.server){
      +      // not online anymore
      +      delete me.server.online;
      +      
      +      // Remove the inline policy listener if we close down
      +      // but only when the server was `online` (see listen prototype)
      +      if( me.server['@'] &amp;&amp; me.server.online){
      +        me.server.removeListener('connection', me.server['@']);
      +      }
      +    }
      +    me.log &amp;&amp; me.log('Shutting down FlashPolicyFileServer');
      +  });
      +  
      +  // Compile the initial `buffer`
      +  this.compile();
      +}
      +
      +

      Start listening for requests

      + +

      + +
      • param: Number port The port number it should be listening to.

      • param: Server server A HTTP server instance, this will be used to listen for inline requests

      • param: Function cb The callback needs to be called once server is ready

      • api: public

      +
      +
      Server.prototype.listen = function listen(port, server, cb){
      +  var me = this
      +    , args = slice.call(arguments, 0)
      +    , callback;
      +  
      +  // assign the correct vars, for flexible arguments
      +  args.forEach(function args(arg){
      +    var type = typeof arg;
      +    
      +    if (type === 'number') me.port = arg;
      +    if (type === 'function') callback = arg;
      +    if (type === 'object') me.server = arg;
      +  });
      +  
      +  if (this.server){
      +    
      +    // no one in their right mind would ever create a `@` prototype, so Im just gonna store
      +    // my function on the server, so I can remove it later again once the server(s) closes
      +    this.server['@'] = function connection(socket){
      +      socket.once('data', function requestData(data){
      +        // if it's a Flash policy request, and we can write to the 
      +        if (
      +             data
      +          &amp;&amp; data[0] === 60
      +          &amp;&amp; data.toString() === '<policy-file-request/>\0'
      +          &amp;&amp; socket
      +          &amp;&amp; (socket.readyState === 'open' || socket.readyState === 'writeOnly')
      +        ){
      +          // send the buffer
      +          socket.end(me.buffer);
      +        }
      +      });
      +    };
      +    // attach it
      +    this.server.on('connection', this.server['@']);
      +  }
      +  
      +  // We add a callback method, so we can set a flag for when the server is `enabled` or `online`.
      +  // this flag is needed because if a error occurs and the we cannot boot up the server the
      +  // fallback functionality should not be removed during the `close` event
      +  this.socket.listen(this.port, function serverListening(){
      +   me.socket.online = true;
      +   
      +   if (callback) callback(), callback = undefined;
      +   
      +  });
      +  
      +  return this;
      +};
      +
      +

      Adds a new origin to the Flash Policy File.

      + +

      + +
      • param: Arguments The origins that need to be added.

      • api: public

      +
      +
      Server.prototype.add = function add(){
      +  var args = slice.call(arguments, 0)
      +    , i = args.length;
      +  
      +  // flag duplicates
      +  while (i--){
      +    if (this.origins.indexOf(args[i]) &gt;= 0){
      +      args[i] = null;
      +    }
      +  }
      +  
      +  // Add all the arguments to the array
      +  // but first we want to remove all `falsy` values from the args
      +  Array.prototype.push.apply(
      +    this.origins
      +  , args.filter(function(value){ return !!value })
      +  );
      +  
      +  this.compile();
      +  return this;
      +};
      +
      +

      Removes a origin from the Flash Policy File.

      + +

      + +
      • param: String origin The origin that needs to be removed from the server

      • api: public

      +
      +
      Server.prototype.remove = function remove(origin){
      +  var position = this.origins.indexOf(origin);
      +  
      +  // only remove and recompile if we have a match
      +  if (position &gt; 0){
      +    this.origins.splice(position,1);
      +    this.compile();
      +  }
      +  
      +  return this;
      +};
      +
      +

      Closes and cleans up the server

      + +
      • api: public

      +
      +
      Server.prototype.close = function close(){
      +  this.socket.removeAllListeners();
      +  this.socket.close();
      +  
      +  return this;
      +};
      +
      +

      Proxy the event listener requests to the created Net server +

      +
      +
      Object.keys(process.EventEmitter.prototype).forEach(function proxy(key){
      +  Server.prototype[key] = Server.prototype[key] || function (){
      +    if (this.socket) this.socket[key].apply(this.socket, arguments);
      +    return this;
      +  };
      +});
      +
      +

      Creates a new server instance.

      + +

      + +
      • param: Object options A options object to override the default config

      • param: Array origins The origins that should be allowed by the server

      • api: public

      +
      +
      exports.createServer = function createServer(options, origins){
      +  origins = Array.isArray(origins) ? origins : (Array.isArray(options) ? options : false);
      +  options = !Array.isArray(options) &amp;&amp; options ? options : {};
      +  
      +  return new Server(options, origins);
      +};
      +
      +

      Provide a hook to the original server, so it can be extended if needed. +

      +
      +
      exports.Server = Server;
      +
      +

      Module version +

      +
      +
      exports.version = '0.0.2';
      +
      +
      \ No newline at end of file diff --git a/node_modules/socket.io/node_modules/policyfile/examples/basic.fallback.js b/node_modules/socket.io/node_modules/policyfile/examples/basic.fallback.js new file mode 100644 index 0000000..b439449 --- /dev/null +++ b/node_modules/socket.io/node_modules/policyfile/examples/basic.fallback.js @@ -0,0 +1,8 @@ +var http = require('http') + , fspfs = require('../'); + +var server = http.createServer(function(q,r){ r.writeHead(200); r.end(':3') }) + , flash = fspfs.createServer(); + +server.listen(8080); +flash.listen(8081,server); \ No newline at end of file diff --git a/node_modules/socket.io/node_modules/policyfile/examples/basic.js b/node_modules/socket.io/node_modules/policyfile/examples/basic.js new file mode 100644 index 0000000..5e2290f --- /dev/null +++ b/node_modules/socket.io/node_modules/policyfile/examples/basic.js @@ -0,0 +1,5 @@ +var http = require('http') + , fspfs = require('../'); + +var flash = fspfs.createServer(); +flash.listen(); \ No newline at end of file diff --git a/node_modules/socket.io/node_modules/policyfile/index.js b/node_modules/socket.io/node_modules/policyfile/index.js new file mode 100644 index 0000000..60cf298 --- /dev/null +++ b/node_modules/socket.io/node_modules/policyfile/index.js @@ -0,0 +1 @@ +module.exports = require('./lib/server.js'); \ No newline at end of file diff --git a/node_modules/socket.io/node_modules/policyfile/lib/server.js b/node_modules/socket.io/node_modules/policyfile/lib/server.js new file mode 100644 index 0000000..a525772 --- /dev/null +++ b/node_modules/socket.io/node_modules/policyfile/lib/server.js @@ -0,0 +1,289 @@ +/** + * Module dependencies and cached references. + */ + +var slice = Array.prototype.slice + , net = require('net'); + +/** + * The server that does the Policy File severing + * + * Options: + * - `log` false or a function that can output log information, defaults to console.log? + * + * @param {Object} options Options to customize the servers functionality. + * @param {Array} origins The origins that are allowed on this server, defaults to `*:*`. + * @api public + */ + +function Server (options, origins) { + var me = this; + + this.origins = origins || ['*:*']; + this.port = 843; + this.log = console.log; + + // merge `this` with the options + Object.keys(options).forEach(function (key) { + me[key] && (me[key] = options[key]) + }); + + // create the net server + this.socket = net.createServer(function createServer (socket) { + socket.on('error', function socketError () { + me.responder.call(me, socket); + }); + + me.responder.call(me, socket); + }); + + // Listen for errors as the port might be blocked because we do not have root priv. + this.socket.on('error', function serverError (err) { + // Special and common case error handling + if (err.errno == 13) { + me.log && me.log( + 'Unable to listen to port `' + me.port + '` as your Node.js instance does not have root privileges. ' + + ( + me.server + ? 'The Flash Policy File requests will only be served inline over the supplied HTTP server. Inline serving is slower than a dedicated server instance.' + : 'No fallback server supplied, we will be unable to answer Flash Policy File requests.' + ) + ); + + me.emit('connect_failed', err); + me.socket.removeAllListeners(); + delete me.socket; + } else { + me.log && me.log('FlashPolicyFileServer received an error event:\n' + (err.message ? err.message : err)); + } + }); + + this.socket.on('timeout', function serverTimeout () {}); + this.socket.on('close', function serverClosed (err) { + err && me.log && me.log('Server closing due to an error: \n' + (err.message ? err.message : err)); + + if (me.server) { + // Remove the inline policy listener if we close down + // but only when the server was `online` (see listen prototype) + if (me.server['@'] && me.server.online) { + me.server.removeListener('connection', me.server['@']); + } + + // not online anymore + delete me.server.online; + } + }); + + // Compile the initial `buffer` + this.compile(); +} + +/** + * Start listening for requests + * + * @param {Number} port The port number it should be listening to. + * @param {Server} server A HTTP server instance, this will be used to listen for inline requests + * @param {Function} cb The callback needs to be called once server is ready + * @api public + */ + +Server.prototype.listen = function listen (port, server, cb){ + var me = this + , args = slice.call(arguments, 0) + , callback; + + // assign the correct vars, for flexible arguments + args.forEach(function args (arg){ + var type = typeof arg; + + if (type === 'number') me.port = arg; + if (type === 'function') callback = arg; + if (type === 'object') me.server = arg; + }); + + if (this.server) { + + // no one in their right mind would ever create a `@` prototype, so Im just gonna store + // my function on the server, so I can remove it later again once the server(s) closes + this.server['@'] = function connection (socket) { + socket.once('data', function requestData (data) { + // if it's a Flash policy request, and we can write to the + if ( + data + && data[0] === 60 + && data.toString() === '\0' + && socket + && (socket.readyState === 'open' || socket.readyState === 'writeOnly') + ){ + // send the buffer + try { + socket.end(me.buffer); + } catch (e) {} + } + }); + }; + + // attach it + this.server.on('connection', this.server['@']); + } + + // We add a callback method, so we can set a flag for when the server is `enabled` or `online`. + // this flag is needed because if a error occurs and the we cannot boot up the server the + // fallback functionality should not be removed during the `close` event + this.port >= 0 && this.socket.listen(this.port, function serverListening () { + me.socket.online = true; + if (callback) { + callback.call(me); + callback = undefined; + } + }); + + return this; +}; + +/** + * Responds to socket connects and writes the compile policy file. + * + * @param {net.Socket} socket The socket that needs to receive the message + * @api private + */ + +Server.prototype.responder = function responder (socket){ + if (socket && socket.readyState == 'open' && socket.end) { + try { + socket.end(this.buffer); + } catch (e) {} + } +}; + +/** + * Compiles the supplied origins to a Flash Policy File format and stores it in a Node.js Buffer + * this way it can be send over the wire without any performance loss. + * + * @api private + */ + +Server.prototype.compile = function compile (){ + var xml = [ + '' + , '' + , '' + ]; + + // add the allow access element + this.origins.forEach(function origin (origin){ + var parts = origin.split(':'); + xml.push(''); + }); + + xml.push(''); + + // store the result in a buffer so we don't have to re-generate it all the time + this.buffer = new Buffer(xml.join(''), 'utf8'); + + return this; +}; + +/** + * Adds a new origin to the Flash Policy File. + * + * @param {Arguments} The origins that need to be added. + * @api public + */ + +Server.prototype.add = function add(){ + var args = slice.call(arguments, 0) + , i = args.length; + + // flag duplicates + while (i--) { + if (this.origins.indexOf(args[i]) >= 0){ + args[i] = null; + } + } + + // Add all the arguments to the array + // but first we want to remove all `falsy` values from the args + Array.prototype.push.apply( + this.origins + , args.filter(function filter (value) { + return !!value; + }) + ); + + this.compile(); + return this; +}; + +/** + * Removes a origin from the Flash Policy File. + * + * @param {String} origin The origin that needs to be removed from the server + * @api public + */ + +Server.prototype.remove = function remove (origin){ + var position = this.origins.indexOf(origin); + + // only remove and recompile if we have a match + if (position > 0) { + this.origins.splice(position,1); + this.compile(); + } + + return this; +}; + +/** + * Closes and cleans up the server + * + * @api public + */ + +Server.prototype.close = function close () { + this.socket.removeAllListeners(); + this.socket.close(); + + return this; +}; + +/** + * Proxy the event listener requests to the created Net server + */ + +Object.keys(process.EventEmitter.prototype).forEach(function proxy (key){ + Server.prototype[key] = Server.prototype[key] || function () { + if (this.socket) { + this.socket[key].apply(this.socket, arguments); + } + + return this; + }; +}); + +/** + * Creates a new server instance. + * + * @param {Object} options A options object to override the default config + * @param {Array} origins The origins that should be allowed by the server + * @api public + */ + +exports.createServer = function createServer(options, origins){ + origins = Array.isArray(origins) ? origins : (Array.isArray(options) ? options : false); + options = !Array.isArray(options) && options ? options : {}; + + return new Server(options, origins); +}; + +/** + * Provide a hook to the original server, so it can be extended if needed. + */ + +exports.Server = Server; + +/** + * Module version + */ + +exports.version = '0.0.4'; diff --git a/node_modules/socket.io/node_modules/policyfile/package.json b/node_modules/socket.io/node_modules/policyfile/package.json new file mode 100644 index 0000000..00271dd --- /dev/null +++ b/node_modules/socket.io/node_modules/policyfile/package.json @@ -0,0 +1,48 @@ +{ + "name": "policyfile", + "version": "0.0.4", + "author": { + "name": "Arnout Kazemier" + }, + "description": "Flash Socket Policy File Server. A server to respond to Flash Socket Policy requests, both inline and through a dedicated server instance.", + "main": "index", + "keywords": [ + "flash", + "socket", + "policy", + "file", + "server", + "Flash Socket Policy File Server", + "cross domain" + ], + "directories": { + "lib": "./lib" + }, + "maintainers": [ + { + "name": "Arnout Kazemier", + "email": "info@3rd-Eden.com", + "url": "http://blog.3rd-Eden.com" + } + ], + "licenses": [ + { + "type": "MIT", + "url": "https://github.com/3rd-Eden/FlashPolicyFileServer/blob/master/LICENSE" + } + ], + "repositories": [ + { + "type": "git", + "url": "https://github.com/3rd-Eden/FlashPolicyFileServer.git" + } + ], + "readme": "## LOL, WUT?\nIt basically allows you to allow or disallow Flash Player sockets from accessing your site.\n\n## Installation\n\n```bash\nnpm install policyfile\n```\n## Usage\n\nThe server is based on the regular and know `net` and `http` server patterns. So it you can just listen\nfor all the events that a `net` based server emits etc. But there is one extra event, the `connect_failed`\nevent. This event is triggered when we are unable to listen on the supplied port number.\n\n### createServer\nCreates a new server instance and accepts 2 optional arguments:\n\n- `options` **Object** Options to configure the server instance\n - `log` **Boolean** Enable logging to STDOUT and STDERR (defaults to true)\n- `origins` **Array** An Array of origins that are allowed by the server (defaults to *:*)\n\n```js\nvar pf = require('policyfile');\npf.createServer();\npf.listen();\n```\n\n#### server.listen\nStart listening on the server and it takes 3 optional arguments\n\n- `port` **Number** On which port number should we listen? (defaults to 843, which is the first port number the FlashPlayer checks)\n- `server` **Server** A http server, if we are unable to accept requests or run the server we can also answer the policy requests inline over the supplied HTTP server.\n- `callback` **Function** A callback function that is called when listening to the server was successful.\n\n```js\nvar pf = require('policyfile');\npf.createServer();\npf.listen(1337, function(){\n console.log(':3 yay')\n});\n```\n\nChanging port numbers can be handy if you do not want to run your server as root and have port 843 forward to a non root port number (aka a number above 1024).\n\n```js\nvar pf = require('policyfile')\n , http = require('http');\n\nserver = http.createServer(function(q,r){r.writeHead(200);r.end('hello world')});\nserver.listen(80);\n\npf.createServer();\npf.listen(1337, server, function(){\n console.log(':3 yay')\n});\n```\n\nSupport for serving inline requests over a existing HTTP connection as the FlashPlayer will first check port 843, but if it's unable to get a response there it will send a policy file request over port 80, which is usually your http server.\n\n#### server.add\nAdds more origins to the policy file you can add as many arguments as you like.\n\n```js\nvar pf = require('policyfile');\npf.createServer(['google.com:80']);\npf.listen();\npf.add('blog.3rd-Eden.com:80', 'blog.3rd-Eden.com:8080'); // now has 3 origins\n```\n\n#### server.add\nAdds more origins to the policy file you can add as many arguments as you like.\n\n```js\nvar pf = require('policyfile');\npf.createServer(['blog.3rd-Eden.com:80', 'blog.3rd-Eden.com:8080']);\npf.listen();\npf.remove('blog.3rd-Eden.com:8080'); // only contains the :80 version now\n```\n\n#### server.close\nShuts down the server\n\n```js\nvar pf = require('policyfile');\npf.createServer();\npf.listen();\npf.close(); // OH NVM.\n```\n\n## API\nhttp://3rd-eden.com/FlashPolicyFileServer/\n\n## Examples\nSee https://github.com/3rd-Eden/FlashPolicyFileServer/tree/master/examples for examples\n\n## Licence\n\nMIT see LICENSE file in the repository", + "readmeFilename": "README.md", + "_id": "policyfile@0.0.4", + "dist": { + "shasum": "a6e6e44ec436284d57f26a03a8a8e08fa5ce91cc" + }, + "_from": "policyfile@0.0.4", + "_resolved": "https://registry.npmjs.org/policyfile/-/policyfile-0.0.4.tgz" +} diff --git a/node_modules/socket.io/node_modules/policyfile/tests/ssl/ssl.crt b/node_modules/socket.io/node_modules/policyfile/tests/ssl/ssl.crt new file mode 100644 index 0000000..5883cd4 --- /dev/null +++ b/node_modules/socket.io/node_modules/policyfile/tests/ssl/ssl.crt @@ -0,0 +1,21 @@ +-----BEGIN CERTIFICATE----- +MIIDXTCCAkWgAwIBAgIJAMUSOvlaeyQHMA0GCSqGSIb3DQEBBQUAMEUxCzAJBgNV +BAYTAkFVMRMwEQYDVQQIDApTb21lLVN0YXRlMSEwHwYDVQQKDBhJbnRlcm5ldCBX +aWRnaXRzIFB0eSBMdGQwHhcNMTAxMTE2MDkzMjQ5WhcNMTMxMTE1MDkzMjQ5WjBF +MQswCQYDVQQGEwJBVTETMBEGA1UECAwKU29tZS1TdGF0ZTEhMB8GA1UECgwYSW50 +ZXJuZXQgV2lkZ2l0cyBQdHkgTHRkMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB +CgKCAQEAz+LXZOjcQCJq3+ZKUFabj71oo/ex/XsBcFqtBThjjTw9CVEVwfPQQp4X +wtPiB204vnYXwQ1/R2NdTQqCZu47l79LssL/u2a5Y9+0NEU3nQA5qdt+1FAE0c5o +exPimXOrR3GWfKz7PmZ2O0117IeCUUXPG5U8umhDe/4mDF4ZNJiKc404WthquTqg +S7rLQZHhZ6D0EnGnOkzlmxJMYPNHSOY1/6ivdNUUcC87awNEA3lgfhy25IyBK3QJ +c+aYKNTbt70Lery3bu2wWLFGtmNiGlQTS4JsxImRsECTI727ObS7/FWAQsqW+COL +0Sa5BuMFrFIpjPrEe0ih7vRRbdmXRwIDAQABo1AwTjAdBgNVHQ4EFgQUDnV4d6mD +tOnluLoCjkUHTX/n4agwHwYDVR0jBBgwFoAUDnV4d6mDtOnluLoCjkUHTX/n4agw +DAYDVR0TBAUwAwEB/zANBgkqhkiG9w0BAQUFAAOCAQEAFwV4MQfTo+qMv9JMiyno +IEiqfOz4RgtmBqRnXUffcjS2dhc7/z+FPZnM79Kej8eLHoVfxCyWRHFlzm93vEdv +wxOCrD13EDOi08OOZfxWyIlCa6Bg8cMAKqQzd2OvQOWqlRWBTThBJIhWflU33izX +Qn5GdmYqhfpc+9ZHHGhvXNydtRQkdxVK2dZNzLBvBlLlRmtoClU7xm3A+/5dddeP +AQHEPtyFlUw49VYtZ3ru6KqPms7MKvcRhYLsy9rwSfuuniMlx4d0bDR7TOkw0QQS +A0N8MGQRQpzl4mw4jLzyM5d5QtuGBh2P6hPGa0YQxtI3RPT/p6ENzzBiAKXiSfzo +xw== +-----END CERTIFICATE----- diff --git a/node_modules/socket.io/node_modules/policyfile/tests/ssl/ssl.private.key b/node_modules/socket.io/node_modules/policyfile/tests/ssl/ssl.private.key new file mode 100644 index 0000000..f31ff3d --- /dev/null +++ b/node_modules/socket.io/node_modules/policyfile/tests/ssl/ssl.private.key @@ -0,0 +1,27 @@ +-----BEGIN RSA PRIVATE KEY----- +MIIEowIBAAKCAQEAz+LXZOjcQCJq3+ZKUFabj71oo/ex/XsBcFqtBThjjTw9CVEV +wfPQQp4XwtPiB204vnYXwQ1/R2NdTQqCZu47l79LssL/u2a5Y9+0NEU3nQA5qdt+ +1FAE0c5oexPimXOrR3GWfKz7PmZ2O0117IeCUUXPG5U8umhDe/4mDF4ZNJiKc404 +WthquTqgS7rLQZHhZ6D0EnGnOkzlmxJMYPNHSOY1/6ivdNUUcC87awNEA3lgfhy2 +5IyBK3QJc+aYKNTbt70Lery3bu2wWLFGtmNiGlQTS4JsxImRsECTI727ObS7/FWA +QsqW+COL0Sa5BuMFrFIpjPrEe0ih7vRRbdmXRwIDAQABAoIBAGe4+9VqZfJN+dsq +8Osyuz01uQ8OmC0sAWTIqUlQgENIyf9rCJsUBlYmwR5BT6Z69XP6QhHdpSK+TiAR +XUz0EqG9HYzcxHIBaACP7j6iRoQ8R4kbbiWKo0z3WqQGIOqFjvD/mKEuQdE5mEYw +eOUCG6BnX1WY2Yr8WKd2AA/tp0/Y4d8z04u9eodMpSTbHTzYMJb5SbBN1vo6FY7q +8zSuO0BMzXlAxUsCwHsk1GQHFr8Oh3zIR7bQGtMBouI+6Lhh7sjFYsfxJboqMTBV +IKaA216M6ggHG7MU1/jeKcMGDmEfqQLQoyWp29rMK6TklUgipME2L3UD7vTyAVzz +xbVOpZkCgYEA8CXW4sZBBrSSrLR5SB+Ubu9qNTggLowOsC/kVKB2WJ4+xooc5HQo +mFhq1v/WxPQoWIxdYsfg2odlL+JclK5Qcy6vXmRSdAQ5lK9gBDKxZSYc3NwAw2HA +zyHCTK+I0n8PBYQ+yGcrxu0WqTGnlLW+Otk4CejO34WlgHwbH9bbY5UCgYEA3ZvT +C4+OoMHXlmICSt29zUrYiL33IWsR3/MaONxTEDuvgkOSXXQOl/8Ebd6Nu+3WbsSN +bjiPC/JyL1YCVmijdvFpl4gjtgvfJifs4G+QHvO6YfsYoVANk4u6g6rUuBIOwNK4 +RwYxwDc0oysp+g7tPxoSgDHReEVKJNzGBe9NGGsCgYEA4O4QP4gCEA3B9BF2J5+s +n9uPVxmiyvZUK6Iv8zP4pThTBBMIzNIf09G9AHPQ7djikU2nioY8jXKTzC3xGTHM +GJZ5m6fLsu7iH+nDvSreDSeNkTBfZqGAvoGYQ8uGE+L+ZuRfCcXYsxIOT5s6o4c3 +Dle2rVFpsuKzCY00urW796ECgYBn3go75+xEwrYGQSer6WR1nTgCV29GVYXKPooy +zmmMOT1Yw80NSkEw0pFD4cTyqVYREsTrPU0mn1sPfrOXxnGfZSVFpcR/Je9QVfQ7 +eW7GYxwfom335aqHVj10SxRqteP+UoWWnHujCPz94VRKZMakBddYCIGSan+G6YdS +7sdmwwKBgBc2qj0wvGXDF2kCLwSGfWoMf8CS1+5fIiUIdT1e/+7MfDdbmLMIFVjF +QKS3zVViXCbrG5SY6wS9hxoc57f6E2A8vcaX6zy2xkZlGHQCpWRtEM5R01OWJQaH +HsHMmQZGUQVoDm1oRkDhrTFK4K3ukc3rAxzeTZ96utOQN8/KJsTv +-----END RSA PRIVATE KEY----- diff --git a/node_modules/socket.io/node_modules/policyfile/tests/unit.test.js b/node_modules/socket.io/node_modules/policyfile/tests/unit.test.js new file mode 100644 index 0000000..932b3c1 --- /dev/null +++ b/node_modules/socket.io/node_modules/policyfile/tests/unit.test.js @@ -0,0 +1,231 @@ +var fspfs = require('../') + , fs = require('fs') + , http = require('http') + , https = require('https') + , net = require('net') + , should = require('should') + , assert = require('assert'); + +module.exports = { + // Library version should be Semver compatible + 'Library version': function(){ + fspfs.version.should.match(/^\d+\.\d+\.\d+$/); + } + + // Creating a server instace should not cause any problems + // either using the new Server or createServer method. +, 'Create Server instance': function(){ + var server = fspfs.createServer() + , server2 = new fspfs.Server({log:false}, ['blog.3rd-Eden.com:1337']); + + // server 2 options test + server2.log.should.be.false; + server2.origins.length.should.equal(1); + server2.origins[0].should.equal('blog.3rd-Eden.com:1337'); + + // server defaults + (typeof server.log).should.be.equal('function'); + server.origins.length.should.equal(1); + server.origins[0].should.equal('*:*'); + + // instance checking, sanity check + assert.ok(server instanceof fspfs.Server); + assert.ok(!!server.buffer); + + // more options testing + server = fspfs.createServer(['blog.3rd-Eden.com:80']); + server.origins.length.should.equal(1); + server.origins[0].should.equal('blog.3rd-Eden.com:80'); + + server = fspfs.createServer({log:false},['blog.3rd-Eden.com:80']); + server.log.should.be.false; + server.origins.length.should.equal(1); + server.origins[0].should.equal('blog.3rd-Eden.com:80'); + + } + +, 'Add origin': function(){ + var server = fspfs.createServer(); + server.add('google.com:80', 'blog.3rd-Eden.com:1337'); + + server.origins.length.should.equal(3); + server.origins.indexOf('google.com:80').should.be.above(0); + + // don't allow duplicates + server.add('google.com:80', 'google.com:80'); + + var i = server.origins.length + , count = 0; + + while(i--){ + if (server.origins[i] === 'google.com:80'){ + count++; + } + } + + count.should.equal(1); + } + +, 'Remove origin': function(){ + var server = fspfs.createServer(); + server.add('google.com:80', 'blog.3rd-Eden.com:1337'); + server.origins.length.should.equal(3); + + server.remove('google.com:80'); + server.origins.length.should.equal(2); + server.origins.indexOf('google.com:80').should.equal(-1); + } + +, 'Buffer': function(){ + var server = fspfs.createServer(); + + Buffer.isBuffer(server.buffer).should.be.true; + server.buffer.toString().indexOf('to-ports="*"').should.be.above(0); + server.buffer.toString().indexOf('domain="*"').should.be.above(0); + server.buffer.toString().indexOf('domain="google.com"').should.equal(-1); + + // The buffers should be rebuild when new origins are added + server.add('google.com:80'); + server.buffer.toString().indexOf('to-ports="80"').should.be.above(0); + server.buffer.toString().indexOf('domain="google.com"').should.be.above(0); + + server.remove('google.com:80'); + server.buffer.toString().indexOf('to-ports="80"').should.equal(-1); + server.buffer.toString().indexOf('domain="google.com"').should.equal(-1); + } + +, 'Responder': function(){ + var server = fspfs.createServer() + , calls = 0 + // dummy socket to emulate a `real` socket + , dummySocket = { + readyState: 'open' + , end: function(buffer){ + calls++; + Buffer.isBuffer(buffer).should.be.true; + buffer.toString().should.equal(server.buffer.toString()); + } + }; + + server.responder(dummySocket); + calls.should.equal(1); + } + +, 'Event proxy': function(){ + var server = fspfs.createServer() + , calls = 0; + + Object.keys(process.EventEmitter.prototype).forEach(function proxy(key){ + assert.ok(!!server[key] && typeof server[key] === 'function'); + }); + + // test if it works by calling a none default event + server.on('pew', function(){ + calls++; + }); + + server.emit('pew'); + calls.should.equal(1); + } + +, 'inline response http': function(){ + var port = 1335 + , httpserver = http.createServer(function(q,r){r.writeHead(200);r.end(':3')}) + , server = fspfs.createServer(); + + httpserver.listen(port, function(){ + server.listen(port + 1, httpserver, function(){ + var client = net.createConnection(port); + client.write('\0'); + client.on('error', function(err){ + assert.ok(!err, err) + }); + client.on('data', function(data){ + + var response = data.toString(); + console.log(response); + + response.indexOf('to-ports="*"').should.be.above(0); + response.indexOf('domain="*"').should.be.above(0); + response.indexOf('domain="google.com"').should.equal(-1); + + // clean up + client.destroy(); + server.close(); + httpserver.close(); + }); + }); + }); + } + +, 'server response': function(){ + var port = 1340 + , server = fspfs.createServer(); + + server.listen(port, function(){ + var client = net.createConnection(port); + client.write('\0'); + client.on('error', function(err){ + assert.ok(!err, err) + }); + client.on('data', function(data){ + + var response = data.toString(); + + response.indexOf('to-ports="*"').should.be.above(0); + response.indexOf('domain="*"').should.be.above(0); + response.indexOf('domain="google.com"').should.equal(-1); + + // clean up + client.destroy(); + server.close(); + }); + }); + } + +, 'inline response https': function(){ + var port = 1345 + , ssl = { + key: fs.readFileSync(__dirname + '/ssl/ssl.private.key').toString() + , cert: fs.readFileSync(__dirname + '/ssl/ssl.crt').toString() + } + , httpserver = https.createServer(ssl, function(q,r){r.writeHead(200);r.end(':3')}) + , server = fspfs.createServer(); + + httpserver.listen(port, function(){ + server.listen(port + 1, httpserver, function(){ + var client = net.createConnection(port); + client.write('\0'); + client.on('error', function(err){ + assert.ok(!err, err) + }); + client.on('data', function(data){ + + var response = data.toString(); + + response.indexOf('to-ports="*"').should.be.above(0); + response.indexOf('domain="*"').should.be.above(0); + response.indexOf('domain="google.com"').should.equal(-1); + + // clean up + client.destroy(); + server.close(); + httpserver.close(); + }); + }); + }); + } + +, 'connect_failed': function(){ + var server = fspfs.createServer(); + + server.on('connect_failed', function(){ + assert.ok(true); + }); + + server.listen(function(){ + assert.ok(false, 'Run this test without root access'); + server.close(); + }); + } +}; \ No newline at end of file diff --git a/node_modules/socket.io/node_modules/redis/.npmignore b/node_modules/socket.io/node_modules/redis/.npmignore new file mode 100644 index 0000000..3c3629e --- /dev/null +++ b/node_modules/socket.io/node_modules/redis/.npmignore @@ -0,0 +1 @@ +node_modules diff --git a/node_modules/socket.io/node_modules/redis/README.md b/node_modules/socket.io/node_modules/redis/README.md new file mode 100644 index 0000000..46e7018 --- /dev/null +++ b/node_modules/socket.io/node_modules/redis/README.md @@ -0,0 +1,691 @@ +redis - a node.js redis client +=========================== + +This is a complete Redis client for node.js. It supports all Redis commands, including many recently added commands like EVAL from +experimental Redis server branches. + + +Install with: + + npm install redis + +Pieter Noordhuis has provided a binding to the official `hiredis` C library, which is non-blocking and fast. To use `hiredis`, do: + + npm install hiredis redis + +If `hiredis` is installed, `node_redis` will use it by default. Otherwise, a pure JavaScript parser will be used. + +If you use `hiredis`, be sure to rebuild it whenever you upgrade your version of node. There are mysterious failures that can +happen between node and native code modules after a node upgrade. + + +## Usage + +Simple example, included as `examples/simple.js`: + +```js + var redis = require("redis"), + client = redis.createClient(); + + // if you'd like to select database 3, instead of 0 (default), call + // client.select(3, function() { /* ... */ }); + + client.on("error", function (err) { + console.log("Error " + err); + }); + + client.set("string key", "string val", redis.print); + client.hset("hash key", "hashtest 1", "some value", redis.print); + client.hset(["hash key", "hashtest 2", "some other value"], redis.print); + client.hkeys("hash key", function (err, replies) { + console.log(replies.length + " replies:"); + replies.forEach(function (reply, i) { + console.log(" " + i + ": " + reply); + }); + client.quit(); + }); +``` + +This will display: + + mjr:~/work/node_redis (master)$ node example.js + Reply: OK + Reply: 0 + Reply: 0 + 2 replies: + 0: hashtest 1 + 1: hashtest 2 + mjr:~/work/node_redis (master)$ + + +## Performance + +Here are typical results of `multi_bench.js` which is similar to `redis-benchmark` from the Redis distribution. +It uses 50 concurrent connections with no pipelining. + +JavaScript parser: + + PING: 20000 ops 42283.30 ops/sec 0/5/1.182 + SET: 20000 ops 32948.93 ops/sec 1/7/1.515 + GET: 20000 ops 28694.40 ops/sec 0/9/1.740 + INCR: 20000 ops 39370.08 ops/sec 0/8/1.269 + LPUSH: 20000 ops 36429.87 ops/sec 0/8/1.370 + LRANGE (10 elements): 20000 ops 9891.20 ops/sec 1/9/5.048 + LRANGE (100 elements): 20000 ops 1384.56 ops/sec 10/91/36.072 + +hiredis parser: + + PING: 20000 ops 46189.38 ops/sec 1/4/1.082 + SET: 20000 ops 41237.11 ops/sec 0/6/1.210 + GET: 20000 ops 39682.54 ops/sec 1/7/1.257 + INCR: 20000 ops 40080.16 ops/sec 0/8/1.242 + LPUSH: 20000 ops 41152.26 ops/sec 0/3/1.212 + LRANGE (10 elements): 20000 ops 36563.07 ops/sec 1/8/1.363 + LRANGE (100 elements): 20000 ops 21834.06 ops/sec 0/9/2.287 + +The performance of `node_redis` improves dramatically with pipelining, which happens automatically in most normal programs. + + +### Sending Commands + +Each Redis command is exposed as a function on the `client` object. +All functions take either an `args` Array plus optional `callback` Function or +a variable number of individual arguments followed by an optional callback. +Here is an example of passing an array of arguments and a callback: + + client.mset(["test keys 1", "test val 1", "test keys 2", "test val 2"], function (err, res) {}); + +Here is that same call in the second style: + + client.mset("test keys 1", "test val 1", "test keys 2", "test val 2", function (err, res) {}); + +Note that in either form the `callback` is optional: + + client.set("some key", "some val"); + client.set(["some other key", "some val"]); + +If the key is missing, reply will be null (probably): + + client.get("missingkey", function(err, reply) { + // reply is null when the key is missing + console.log(reply); + }); + +For a list of Redis commands, see [Redis Command Reference](http://redis.io/commands) + +The commands can be specified in uppercase or lowercase for convenience. `client.get()` is the same as `client.GET()`. + +Minimal parsing is done on the replies. Commands that return a single line reply return JavaScript Strings, +integer replies return JavaScript Numbers, "bulk" replies return node Buffers, and "multi bulk" replies return a +JavaScript Array of node Buffers. `HGETALL` returns an Object with Buffers keyed by the hash keys. + +# API + +## Connection Events + +`client` will emit some events about the state of the connection to the Redis server. + +### "ready" + +`client` will emit `ready` a connection is established to the Redis server and the server reports +that it is ready to receive commands. Commands issued before the `ready` event are queued, +then replayed just before this event is emitted. + +### "connect" + +`client` will emit `connect` at the same time as it emits `ready` unless `client.options.no_ready_check` +is set. If this options is set, `connect` will be emitted when the stream is connected, and then +you are free to try to send commands. + +### "error" + +`client` will emit `error` when encountering an error connecting to the Redis server. + +Note that "error" is a special event type in node. If there are no listeners for an +"error" event, node will exit. This is usually what you want, but it can lead to some +cryptic error messages like this: + + mjr:~/work/node_redis (master)$ node example.js + + node.js:50 + throw e; + ^ + Error: ECONNREFUSED, Connection refused + at IOWatcher.callback (net:870:22) + at node.js:607:9 + +Not very useful in diagnosing the problem, but if your program isn't ready to handle this, +it is probably the right thing to just exit. + +`client` will also emit `error` if an exception is thrown inside of `node_redis` for whatever reason. +It would be nice to distinguish these two cases. + +### "end" + +`client` will emit `end` when an established Redis server connection has closed. + +### "drain" + +`client` will emit `drain` when the TCP connection to the Redis server has been buffering, but is now +writable. This event can be used to stream commands in to Redis and adapt to backpressure. Right now, +you need to check `client.command_queue.length` to decide when to reduce your send rate. Then you can +resume sending when you get `drain`. + +### "idle" + +`client` will emit `idle` when there are no outstanding commands that are awaiting a response. + +## redis.createClient(port, host, options) + +Create a new client connection. `port` defaults to `6379` and `host` defaults +to `127.0.0.1`. If you have `redis-server` running on the same computer as node, then the defaults for +port and host are probably fine. `options` in an object with the following possible properties: + +* `parser`: which Redis protocol reply parser to use. Defaults to `hiredis` if that module is installed. +This may also be set to `javascript`. +* `return_buffers`: defaults to `false`. If set to `true`, then all replies will be sent to callbacks as node Buffer +objects instead of JavaScript Strings. +* `detect_buffers`: default to `false`. If set to `true`, then replies will be sent to callbacks as node Buffer objects +if any of the input arguments to the original command were Buffer objects. +This option lets you switch between Buffers and Strings on a per-command basis, whereas `return_buffers` applies to +every command on a client. +* `socket_nodelay`: defaults to `true`. Whether to call setNoDelay() on the TCP stream, which disables the +Nagle algorithm on the underlying socket. Setting this option to `false` can result in additional throughput at the +cost of more latency. Most applications will want this set to `true`. +* `no_ready_check`: defaults to `false`. When a connection is established to the Redis server, the server might still +be loading the database from disk. While loading, the server not respond to any commands. To work around this, +`node_redis` has a "ready check" which sends the `INFO` command to the server. The response from the `INFO` command +indicates whether the server is ready for more commands. When ready, `node_redis` emits a `ready` event. +Setting `no_ready_check` to `true` will inhibit this check. +* `enable_offline_queue`: defaults to `true`. By default, if there is no active +connection to the redis server, commands are added to a queue and are executed +once the connection has been established. Setting `enable_offline_queue` to +`false` will disable this feature and the callback will be execute immediately +with an error, or an error will be thrown if no callback is specified. + +```js + var redis = require("redis"), + client = redis.createClient(null, null, {detect_buffers: true}); + + client.set("foo_rand000000000000", "OK"); + + // This will return a JavaScript String + client.get("foo_rand000000000000", function (err, reply) { + console.log(reply.toString()); // Will print `OK` + }); + + // This will return a Buffer since original key is specified as a Buffer + client.get(new Buffer("foo_rand000000000000"), function (err, reply) { + console.log(reply.toString()); // Will print `` + }); + client.end(); +``` + +`createClient()` returns a `RedisClient` object that is named `client` in all of the examples here. + +## client.auth(password, callback) + +When connecting to Redis servers that require authentication, the `AUTH` command must be sent as the +first command after connecting. This can be tricky to coordinate with reconnections, the ready check, +etc. To make this easier, `client.auth()` stashes `password` and will send it after each connection, +including reconnections. `callback` is invoked only once, after the response to the very first +`AUTH` command sent. +NOTE: Your call to `client.auth()` should not be inside the ready handler. If +you are doing this wrong, `client` will emit an error that looks +something like this `Error: Ready check failed: ERR operation not permitted`. + +## client.end() + +Forcibly close the connection to the Redis server. Note that this does not wait until all replies have been parsed. +If you want to exit cleanly, call `client.quit()` to send the `QUIT` command after you have handled all replies. + +This example closes the connection to the Redis server before the replies have been read. You probably don't +want to do this: + +```js + var redis = require("redis"), + client = redis.createClient(); + + client.set("foo_rand000000000000", "some fantastic value"); + client.get("foo_rand000000000000", function (err, reply) { + console.log(reply.toString()); + }); + client.end(); +``` + +`client.end()` is useful for timeout cases where something is stuck or taking too long and you want +to start over. + +## Friendlier hash commands + +Most Redis commands take a single String or an Array of Strings as arguments, and replies are sent back as a single String or an Array of Strings. +When dealing with hash values, there are a couple of useful exceptions to this. + +### client.hgetall(hash) + +The reply from an HGETALL command will be converted into a JavaScript Object by `node_redis`. That way you can interact +with the responses using JavaScript syntax. + +Example: + + client.hmset("hosts", "mjr", "1", "another", "23", "home", "1234"); + client.hgetall("hosts", function (err, obj) { + console.dir(obj); + }); + +Output: + + { mjr: '1', another: '23', home: '1234' } + +### client.hmset(hash, obj, [callback]) + +Multiple values in a hash can be set by supplying an object: + + client.HMSET(key2, { + "0123456789": "abcdefghij", // NOTE: the key and value must both be strings + "some manner of key": "a type of value" + }); + +The properties and values of this Object will be set as keys and values in the Redis hash. + +### client.hmset(hash, key1, val1, ... keyn, valn, [callback]) + +Multiple values may also be set by supplying a list: + + client.HMSET(key1, "0123456789", "abcdefghij", "some manner of key", "a type of value"); + + +## Publish / Subscribe + +Here is a simple example of the API for publish / subscribe. This program opens two +client connections, subscribes to a channel on one of them, and publishes to that +channel on the other: + +```js + var redis = require("redis"), + client1 = redis.createClient(), client2 = redis.createClient(), + msg_count = 0; + + client1.on("subscribe", function (channel, count) { + client2.publish("a nice channel", "I am sending a message."); + client2.publish("a nice channel", "I am sending a second message."); + client2.publish("a nice channel", "I am sending my last message."); + }); + + client1.on("message", function (channel, message) { + console.log("client1 channel " + channel + ": " + message); + msg_count += 1; + if (msg_count === 3) { + client1.unsubscribe(); + client1.end(); + client2.end(); + } + }); + + client1.incr("did a thing"); + client1.subscribe("a nice channel"); +``` + +When a client issues a `SUBSCRIBE` or `PSUBSCRIBE`, that connection is put into "pub/sub" mode. +At that point, only commands that modify the subscription set are valid. When the subscription +set is empty, the connection is put back into regular mode. + +If you need to send regular commands to Redis while in pub/sub mode, just open another connection. + +## Pub / Sub Events + +If a client has subscriptions active, it may emit these events: + +### "message" (channel, message) + +Client will emit `message` for every message received that matches an active subscription. +Listeners are passed the channel name as `channel` and the message Buffer as `message`. + +### "pmessage" (pattern, channel, message) + +Client will emit `pmessage` for every message received that matches an active subscription pattern. +Listeners are passed the original pattern used with `PSUBSCRIBE` as `pattern`, the sending channel +name as `channel`, and the message Buffer as `message`. + +### "subscribe" (channel, count) + +Client will emit `subscribe` in response to a `SUBSCRIBE` command. Listeners are passed the +channel name as `channel` and the new count of subscriptions for this client as `count`. + +### "psubscribe" (pattern, count) + +Client will emit `psubscribe` in response to a `PSUBSCRIBE` command. Listeners are passed the +original pattern as `pattern`, and the new count of subscriptions for this client as `count`. + +### "unsubscribe" (channel, count) + +Client will emit `unsubscribe` in response to a `UNSUBSCRIBE` command. Listeners are passed the +channel name as `channel` and the new count of subscriptions for this client as `count`. When +`count` is 0, this client has left pub/sub mode and no more pub/sub events will be emitted. + +### "punsubscribe" (pattern, count) + +Client will emit `punsubscribe` in response to a `PUNSUBSCRIBE` command. Listeners are passed the +channel name as `channel` and the new count of subscriptions for this client as `count`. When +`count` is 0, this client has left pub/sub mode and no more pub/sub events will be emitted. + +## client.multi([commands]) + +`MULTI` commands are queued up until an `EXEC` is issued, and then all commands are run atomically by +Redis. The interface in `node_redis` is to return an individual `Multi` object by calling `client.multi()`. + +```js + var redis = require("./index"), + client = redis.createClient(), set_size = 20; + + client.sadd("bigset", "a member"); + client.sadd("bigset", "another member"); + + while (set_size > 0) { + client.sadd("bigset", "member " + set_size); + set_size -= 1; + } + + // multi chain with an individual callback + client.multi() + .scard("bigset") + .smembers("bigset") + .keys("*", function (err, replies) { + // NOTE: code in this callback is NOT atomic + // this only happens after the the .exec call finishes. + client.mget(replies, redis.print); + }) + .dbsize() + .exec(function (err, replies) { + console.log("MULTI got " + replies.length + " replies"); + replies.forEach(function (reply, index) { + console.log("Reply " + index + ": " + reply.toString()); + }); + }); +``` + +`client.multi()` is a constructor that returns a `Multi` object. `Multi` objects share all of the +same command methods as `client` objects do. Commands are queued up inside the `Multi` object +until `Multi.exec()` is invoked. + +You can either chain together `MULTI` commands as in the above example, or you can queue individual +commands while still sending regular client command as in this example: + +```js + var redis = require("redis"), + client = redis.createClient(), multi; + + // start a separate multi command queue + multi = client.multi(); + multi.incr("incr thing", redis.print); + multi.incr("incr other thing", redis.print); + + // runs immediately + client.mset("incr thing", 100, "incr other thing", 1, redis.print); + + // drains multi queue and runs atomically + multi.exec(function (err, replies) { + console.log(replies); // 101, 2 + }); + + // you can re-run the same transaction if you like + multi.exec(function (err, replies) { + console.log(replies); // 102, 3 + client.quit(); + }); +``` + +In addition to adding commands to the `MULTI` queue individually, you can also pass an array +of commands and arguments to the constructor: + +```js + var redis = require("redis"), + client = redis.createClient(), multi; + + client.multi([ + ["mget", "multifoo", "multibar", redis.print], + ["incr", "multifoo"], + ["incr", "multibar"] + ]).exec(function (err, replies) { + console.log(replies); + }); +``` + + +## Monitor mode + +Redis supports the `MONITOR` command, which lets you see all commands received by the Redis server +across all client connections, including from other client libraries and other computers. + +After you send the `MONITOR` command, no other commands are valid on that connection. `node_redis` +will emit a `monitor` event for every new monitor message that comes across. The callback for the +`monitor` event takes a timestamp from the Redis server and an array of command arguments. + +Here is a simple example: + +```js + var client = require("redis").createClient(), + util = require("util"); + + client.monitor(function (err, res) { + console.log("Entering monitoring mode."); + }); + + client.on("monitor", function (time, args) { + console.log(time + ": " + util.inspect(args)); + }); +``` + +# Extras + +Some other things you might like to know about. + +## client.server_info + +After the ready probe completes, the results from the INFO command are saved in the `client.server_info` +object. + +The `versions` key contains an array of the elements of the version string for easy comparison. + + > client.server_info.redis_version + '2.3.0' + > client.server_info.versions + [ 2, 3, 0 ] + +## redis.print() + +A handy callback function for displaying return values when testing. Example: + +```js + var redis = require("redis"), + client = redis.createClient(); + + client.on("connect", function () { + client.set("foo_rand000000000000", "some fantastic value", redis.print); + client.get("foo_rand000000000000", redis.print); + }); +``` + +This will print: + + Reply: OK + Reply: some fantastic value + +Note that this program will not exit cleanly because the client is still connected. + +## redis.debug_mode + +Boolean to enable debug mode and protocol tracing. + +```js + var redis = require("redis"), + client = redis.createClient(); + + redis.debug_mode = true; + + client.on("connect", function () { + client.set("foo_rand000000000000", "some fantastic value"); + }); +``` + +This will display: + + mjr:~/work/node_redis (master)$ node ~/example.js + send command: *3 + $3 + SET + $20 + foo_rand000000000000 + $20 + some fantastic value + + on_data: +OK + +`send command` is data sent into Redis and `on_data` is data received from Redis. + +## client.send_command(command_name, args, callback) + +Used internally to send commands to Redis. For convenience, nearly all commands that are published on the Redis +Wiki have been added to the `client` object. However, if I missed any, or if new commands are introduced before +this library is updated, you can use `send_command()` to send arbitrary commands to Redis. + +All commands are sent as multi-bulk commands. `args` can either be an Array of arguments, or omitted. + +## client.connected + +Boolean tracking the state of the connection to the Redis server. + +## client.command_queue.length + +The number of commands that have been sent to the Redis server but not yet replied to. You can use this to +enforce some kind of maximum queue depth for commands while connected. + +Don't mess with `client.command_queue` though unless you really know what you are doing. + +## client.offline_queue.length + +The number of commands that have been queued up for a future connection. You can use this to enforce +some kind of maximum queue depth for pre-connection commands. + +## client.retry_delay + +Current delay in milliseconds before a connection retry will be attempted. This starts at `250`. + +## client.retry_backoff + +Multiplier for future retry timeouts. This should be larger than 1 to add more time between retries. +Defaults to 1.7. The default initial connection retry is 250, so the second retry will be 425, followed by 723.5, etc. + +### Commands with Optional and Keyword arguments + +This applies to anything that uses an optional `[WITHSCORES]` or `[LIMIT offset count]` in the [redis.io/commands](http://redis.io/commands) documentation. + +Example: +```js +var args = [ 'myzset', 1, 'one', 2, 'two', 3, 'three', 99, 'ninety-nine' ]; +client.zadd(args, function (err, response) { + if (err) throw err; + console.log('added '+response+' items.'); + + // -Infinity and +Infinity also work + var args1 = [ 'myzset', '+inf', '-inf' ]; + client.zrevrangebyscore(args1, function (err, response) { + if (err) throw err; + console.log('example1', response); + // write your code here + }); + + var max = 3, min = 1, offset = 1, count = 2; + var args2 = [ 'myzset', max, min, 'WITHSCORES', 'LIMIT', offset, count ]; + client.zrevrangebyscore(args2, function (err, response) { + if (err) throw err; + console.log('example2', response); + // write your code here + }); +}); +``` + +## TODO + +Better tests for auth, disconnect/reconnect, and all combinations thereof. + +Stream large set/get values into and out of Redis. Otherwise the entire value must be in node's memory. + +Performance can be better for very large values. + +I think there are more performance improvements left in there for smaller values, especially for large lists of small values. + +## How to Contribute +- open a pull request and then wait for feedback (if + [DTrejo](http://github.com/dtrejo) does not get back to you within 2 days, + comment again with indignation!) + +## Contributors +Some people have have added features and fixed bugs in `node_redis` other than me. + +Ordered by date of first contribution. +[Auto-generated](http://github.com/dtrejo/node-authors) on Wed Jul 25 2012 19:14:59 GMT-0700 (PDT). + +- [Matt Ranney aka `mranney`](https://github.com/mranney) +- [Tim-Smart aka `tim-smart`](https://github.com/tim-smart) +- [Tj Holowaychuk aka `visionmedia`](https://github.com/visionmedia) +- [rick aka `technoweenie`](https://github.com/technoweenie) +- [Orion Henry aka `orionz`](https://github.com/orionz) +- [Aivo Paas aka `aivopaas`](https://github.com/aivopaas) +- [Hank Sims aka `hanksims`](https://github.com/hanksims) +- [Paul Carey aka `paulcarey`](https://github.com/paulcarey) +- [Pieter Noordhuis aka `pietern`](https://github.com/pietern) +- [nithesh aka `nithesh`](https://github.com/nithesh) +- [Andy Ray aka `andy2ray`](https://github.com/andy2ray) +- [unknown aka `unknowdna`](https://github.com/unknowdna) +- [Dave Hoover aka `redsquirrel`](https://github.com/redsquirrel) +- [Vladimir Dronnikov aka `dvv`](https://github.com/dvv) +- [Umair Siddique aka `umairsiddique`](https://github.com/umairsiddique) +- [Louis-Philippe Perron aka `lp`](https://github.com/lp) +- [Mark Dawson aka `markdaws`](https://github.com/markdaws) +- [Ian Babrou aka `bobrik`](https://github.com/bobrik) +- [Felix Geisendörfer aka `felixge`](https://github.com/felixge) +- [Jean-Hugues Pinson aka `undefined`](https://github.com/undefined) +- [Maksim Lin aka `maks`](https://github.com/maks) +- [Owen Smith aka `orls`](https://github.com/orls) +- [Zachary Scott aka `zzak`](https://github.com/zzak) +- [TEHEK Firefox aka `TEHEK`](https://github.com/TEHEK) +- [Isaac Z. Schlueter aka `isaacs`](https://github.com/isaacs) +- [David Trejo aka `DTrejo`](https://github.com/DTrejo) +- [Brian Noguchi aka `bnoguchi`](https://github.com/bnoguchi) +- [Philip Tellis aka `bluesmoon`](https://github.com/bluesmoon) +- [Marcus Westin aka `marcuswestin2`](https://github.com/marcuswestin2) +- [Jed Schmidt aka `jed`](https://github.com/jed) +- [Dave Peticolas aka `jdavisp3`](https://github.com/jdavisp3) +- [Trae Robrock aka `trobrock`](https://github.com/trobrock) +- [Shankar Karuppiah aka `shankar0306`](https://github.com/shankar0306) +- [Ignacio Burgueño aka `ignacio`](https://github.com/ignacio) + +Thanks. + +## LICENSE - "MIT License" + +Copyright (c) 2010 Matthew Ranney, http://ranney.com/ + +Permission is hereby granted, free of charge, to any person +obtaining a copy of this software and associated documentation +files (the "Software"), to deal in the Software without +restriction, including without limitation the rights to use, +copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the +Software is furnished to do so, subject to the following +conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES +OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT +HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +OTHER DEALINGS IN THE SOFTWARE. + +![spacer](http://ranney.com/1px.gif) diff --git a/node_modules/socket.io/node_modules/redis/benches/buffer_bench.js b/node_modules/socket.io/node_modules/redis/benches/buffer_bench.js new file mode 100644 index 0000000..a504fbc --- /dev/null +++ b/node_modules/socket.io/node_modules/redis/benches/buffer_bench.js @@ -0,0 +1,89 @@ +var source = new Buffer(100), + dest = new Buffer(100), i, j, k, tmp, count = 1000000, bytes = 100; + +for (i = 99 ; i >= 0 ; i--) { + source[i] = 120; +} + +var str = "This is a nice String.", + buf = new Buffer("This is a lovely Buffer."); + +var start = new Date(); +for (i = count * 100; i > 0 ; i--) { + if (Buffer.isBuffer(str)) {} +} +var end = new Date(); +console.log("Buffer.isBuffer(str) " + (end - start) + " ms"); + +var start = new Date(); +for (i = count * 100; i > 0 ; i--) { + if (Buffer.isBuffer(buf)) {} +} +var end = new Date(); +console.log("Buffer.isBuffer(buf) " + (end - start) + " ms"); + +var start = new Date(); +for (i = count * 100; i > 0 ; i--) { + if (str instanceof Buffer) {} +} +var end = new Date(); +console.log("str instanceof Buffer " + (end - start) + " ms"); + +var start = new Date(); +for (i = count * 100; i > 0 ; i--) { + if (buf instanceof Buffer) {} +} +var end = new Date(); +console.log("buf instanceof Buffer " + (end - start) + " ms"); + +for (i = bytes ; i > 0 ; i --) { + var start = new Date(); + for (j = count ; j > 0; j--) { + tmp = source.toString("ascii", 0, bytes); + } + var end = new Date(); + console.log("toString() " + i + " bytes " + (end - start) + " ms"); +} + +for (i = bytes ; i > 0 ; i --) { + var start = new Date(); + for (j = count ; j > 0; j--) { + tmp = ""; + for (k = 0; k <= i ; k++) { + tmp += String.fromCharCode(source[k]); + } + } + var end = new Date(); + console.log("manual string " + i + " bytes " + (end - start) + " ms"); +} + +for (i = bytes ; i > 0 ; i--) { + var start = new Date(); + for (j = count ; j > 0 ; j--) { + for (k = i ; k > 0 ; k--) { + dest[k] = source[k]; + } + } + var end = new Date(); + console.log("Manual copy " + i + " bytes " + (end - start) + " ms"); +} + +for (i = bytes ; i > 0 ; i--) { + var start = new Date(); + for (j = count ; j > 0 ; j--) { + for (k = i ; k > 0 ; k--) { + dest[k] = 120; + } + } + var end = new Date(); + console.log("Direct assignment " + i + " bytes " + (end - start) + " ms"); +} + +for (i = bytes ; i > 0 ; i--) { + var start = new Date(); + for (j = count ; j > 0 ; j--) { + source.copy(dest, 0, 0, i); + } + var end = new Date(); + console.log("Buffer.copy() " + i + " bytes " + (end - start) + " ms"); +} diff --git a/node_modules/socket.io/node_modules/redis/benches/hiredis_parser.js b/node_modules/socket.io/node_modules/redis/benches/hiredis_parser.js new file mode 100644 index 0000000..f1515b1 --- /dev/null +++ b/node_modules/socket.io/node_modules/redis/benches/hiredis_parser.js @@ -0,0 +1,38 @@ +var Parser = require('../lib/parser/hiredis').Parser; +var assert = require('assert'); + +/* +This test makes sure that exceptions thrown inside of "reply" event handlers +are not trapped and mistakenly emitted as parse errors. +*/ +(function testExecuteDoesNotCatchReplyCallbackExceptions() { + var parser = new Parser(); + var replies = [{}]; + + parser.reader = { + feed: function() {}, + get: function() { + return replies.shift(); + } + }; + + var emittedError = false; + var caughtException = false; + + parser + .on('error', function() { + emittedError = true; + }) + .on('reply', function() { + throw new Error('bad'); + }); + + try { + parser.execute(); + } catch (err) { + caughtException = true; + } + + assert.equal(caughtException, true); + assert.equal(emittedError, false); +})(); diff --git a/node_modules/socket.io/node_modules/redis/benches/re_sub_test.js b/node_modules/socket.io/node_modules/redis/benches/re_sub_test.js new file mode 100644 index 0000000..64b8f31 --- /dev/null +++ b/node_modules/socket.io/node_modules/redis/benches/re_sub_test.js @@ -0,0 +1,14 @@ +var client = require('../index').createClient() + , client2 = require('../index').createClient() + , assert = require('assert'); + +client.once('subscribe', function (channel, count) { + client.unsubscribe('x'); + client.subscribe('x', function () { + client.quit(); + client2.quit(); + }); + client2.publish('x', 'hi'); +}); + +client.subscribe('x'); diff --git a/node_modules/socket.io/node_modules/redis/benches/reconnect_test.js b/node_modules/socket.io/node_modules/redis/benches/reconnect_test.js new file mode 100644 index 0000000..7abdd51 --- /dev/null +++ b/node_modules/socket.io/node_modules/redis/benches/reconnect_test.js @@ -0,0 +1,29 @@ +var redis = require("../index").createClient(null, null, { +// max_attempts: 4 +}); + +redis.on("error", function (err) { + console.log("Redis says: " + err); +}); + +redis.on("ready", function () { + console.log("Redis ready."); +}); + +redis.on("reconnecting", function (arg) { + console.log("Redis reconnecting: " + JSON.stringify(arg)); +}); +redis.on("connect", function () { + console.log("Redis connected."); +}); + +setInterval(function () { + var now = Date.now(); + redis.set("now", now, function (err, res) { + if (err) { + console.log(now + " Redis reply error: " + err); + } else { + console.log(now + " Redis reply: " + res); + } + }); +}, 100); diff --git a/node_modules/socket.io/node_modules/redis/benches/stress/codec.js b/node_modules/socket.io/node_modules/redis/benches/stress/codec.js new file mode 100644 index 0000000..7d764f6 --- /dev/null +++ b/node_modules/socket.io/node_modules/redis/benches/stress/codec.js @@ -0,0 +1,16 @@ +var json = { + encode: JSON.stringify, + decode: JSON.parse +}; + +var MsgPack = require('node-msgpack'); +msgpack = { + encode: MsgPack.pack, + decode: function(str) { return MsgPack.unpack(new Buffer(str)); } +}; + +bison = require('bison'); + +module.exports = json; +//module.exports = msgpack; +//module.exports = bison; diff --git a/node_modules/socket.io/node_modules/redis/benches/stress/pubsub/pub.js b/node_modules/socket.io/node_modules/redis/benches/stress/pubsub/pub.js new file mode 100644 index 0000000..0acde7a --- /dev/null +++ b/node_modules/socket.io/node_modules/redis/benches/stress/pubsub/pub.js @@ -0,0 +1,38 @@ +'use strict'; + +var freemem = require('os').freemem; +var profiler = require('v8-profiler'); +var codec = require('../codec'); + +var sent = 0; + +var pub = require('redis').createClient(null, null, { + //command_queue_high_water: 5, + //command_queue_low_water: 1 +}) +.on('ready', function() { + this.emit('drain'); +}) +.on('drain', function() { + process.nextTick(exec); +}); + +var payload = '1'; for (var i = 0; i < 12; ++i) payload += payload; +console.log('Message payload length', payload.length); + +function exec() { + pub.publish('timeline', codec.encode({ foo: payload })); + ++sent; + if (!pub.should_buffer) { + process.nextTick(exec); + } +} + +profiler.takeSnapshot('s_0'); + +exec(); + +setInterval(function() { + profiler.takeSnapshot('s_' + sent); + console.error('sent', sent, 'free', freemem(), 'cmdqlen', pub.command_queue.length, 'offqlen', pub.offline_queue.length); +}, 2000); diff --git a/node_modules/socket.io/node_modules/redis/benches/stress/pubsub/run b/node_modules/socket.io/node_modules/redis/benches/stress/pubsub/run new file mode 100644 index 0000000..bd9ac39 --- /dev/null +++ b/node_modules/socket.io/node_modules/redis/benches/stress/pubsub/run @@ -0,0 +1,10 @@ +#!/bin/sh +node server.js & +node server.js & +node server.js & +node server.js & +node server.js & +node server.js & +node server.js & +node server.js & +node --debug pub.js diff --git a/node_modules/socket.io/node_modules/redis/benches/stress/pubsub/server.js b/node_modules/socket.io/node_modules/redis/benches/stress/pubsub/server.js new file mode 100644 index 0000000..035e6b7 --- /dev/null +++ b/node_modules/socket.io/node_modules/redis/benches/stress/pubsub/server.js @@ -0,0 +1,23 @@ +'use strict'; + +var freemem = require('os').freemem; +var codec = require('../codec'); + +var id = Math.random(); +var recv = 0; + +var sub = require('redis').createClient() + .on('ready', function() { + this.subscribe('timeline'); + }) + .on('message', function(channel, message) { + var self = this; + if (message) { + message = codec.decode(message); + ++recv; + } + }); + +setInterval(function() { + console.error('id', id, 'received', recv, 'free', freemem()); +}, 2000); diff --git a/node_modules/socket.io/node_modules/redis/benches/stress/rpushblpop/pub.js b/node_modules/socket.io/node_modules/redis/benches/stress/rpushblpop/pub.js new file mode 100644 index 0000000..9caf1d0 --- /dev/null +++ b/node_modules/socket.io/node_modules/redis/benches/stress/rpushblpop/pub.js @@ -0,0 +1,49 @@ +'use strict'; + +var freemem = require('os').freemem; +//var profiler = require('v8-profiler'); +var codec = require('../codec'); + +var sent = 0; + +var pub = require('redis').createClient(null, null, { + //command_queue_high_water: 5, + //command_queue_low_water: 1 +}) +.on('ready', function() { + this.del('timeline'); + this.emit('drain'); +}) +.on('drain', function() { + process.nextTick(exec); +}); + +var payload = '1'; for (var i = 0; i < 12; ++i) payload += payload; +console.log('Message payload length', payload.length); + +function exec() { + pub.rpush('timeline', codec.encode({ foo: payload })); + ++sent; + if (!pub.should_buffer) { + process.nextTick(exec); + } +} + +//profiler.takeSnapshot('s_0'); + +exec(); + +setInterval(function() { + //var ss = profiler.takeSnapshot('s_' + sent); + //console.error(ss.stringify()); + pub.llen('timeline', function(err, result) { + console.error('sent', sent, 'free', freemem(), + 'cmdqlen', pub.command_queue.length, 'offqlen', pub.offline_queue.length, + 'llen', result + ); + }); +}, 2000); + +/*setTimeout(function() { + process.exit(); +}, 30000);*/ diff --git a/node_modules/socket.io/node_modules/redis/benches/stress/rpushblpop/run b/node_modules/socket.io/node_modules/redis/benches/stress/rpushblpop/run new file mode 100644 index 0000000..8045ae8 --- /dev/null +++ b/node_modules/socket.io/node_modules/redis/benches/stress/rpushblpop/run @@ -0,0 +1,6 @@ +#!/bin/sh +node server.js & +#node server.js & +#node server.js & +#node server.js & +node --debug pub.js diff --git a/node_modules/socket.io/node_modules/redis/benches/stress/rpushblpop/server.js b/node_modules/socket.io/node_modules/redis/benches/stress/rpushblpop/server.js new file mode 100644 index 0000000..9cbcdd9 --- /dev/null +++ b/node_modules/socket.io/node_modules/redis/benches/stress/rpushblpop/server.js @@ -0,0 +1,30 @@ +'use strict'; + +var freemem = require('os').freemem; +var codec = require('../codec'); + +var id = Math.random(); +var recv = 0; + +var cmd = require('redis').createClient(); +var sub = require('redis').createClient() + .on('ready', function() { + this.emit('timeline'); + }) + .on('timeline', function() { + var self = this; + this.blpop('timeline', 0, function(err, result) { + var message = result[1]; + if (message) { + message = codec.decode(message); + ++recv; + } + self.emit('timeline'); + }); + }); + +setInterval(function() { + cmd.llen('timeline', function(err, result) { + console.error('id', id, 'received', recv, 'free', freemem(), 'llen', result); + }); +}, 2000); diff --git a/node_modules/socket.io/node_modules/redis/benches/stress/speed/00 b/node_modules/socket.io/node_modules/redis/benches/stress/speed/00 new file mode 100644 index 0000000..29d7bf7 --- /dev/null +++ b/node_modules/socket.io/node_modules/redis/benches/stress/speed/00 @@ -0,0 +1,13 @@ +# size JSON msgpack bison +26602 2151.0170848180414 +25542 ? 2842.589272665782 +24835 ? ? 7280.4538397469805 +6104 6985.234528557929 +5045 ? 7217.461392841478 +4341 ? ? 14261.406335354604 +4180 15864.633685636572 +4143 ? 12954.806235781925 +4141 ? ? 44650.70733912719 +75 114227.07313350472 +40 ? 30162.440062810834 +39 ? ? 119815.66013519121 diff --git a/node_modules/socket.io/node_modules/redis/benches/stress/speed/plot b/node_modules/socket.io/node_modules/redis/benches/stress/speed/plot new file mode 100644 index 0000000..2563797 --- /dev/null +++ b/node_modules/socket.io/node_modules/redis/benches/stress/speed/plot @@ -0,0 +1,13 @@ +#!/bin/sh + +gnuplot >size-rate.jpg << _EOF_ + +set terminal png nocrop enhanced font verdana 12 size 640,480 +set logscale x +set logscale y +set grid +set xlabel 'Serialized object size, octets' +set ylabel 'decode(encode(obj)) rate, 1/sec' +plot '00' using 1:2 title 'json' smooth bezier, '00' using 1:3 title 'msgpack' smooth bezier, '00' using 1:4 title 'bison' smooth bezier + +_EOF_ diff --git a/node_modules/socket.io/node_modules/redis/benches/stress/speed/size-rate.png b/node_modules/socket.io/node_modules/redis/benches/stress/speed/size-rate.png new file mode 100644 index 0000000..c9c2bee Binary files /dev/null and b/node_modules/socket.io/node_modules/redis/benches/stress/speed/size-rate.png differ diff --git a/node_modules/socket.io/node_modules/redis/benches/stress/speed/speed.js b/node_modules/socket.io/node_modules/redis/benches/stress/speed/speed.js new file mode 100644 index 0000000..8e43cbc --- /dev/null +++ b/node_modules/socket.io/node_modules/redis/benches/stress/speed/speed.js @@ -0,0 +1,84 @@ +var msgpack = require('node-msgpack'); +var bison = require('bison'); +var codec = { + JSON: { + encode: JSON.stringify, + decode: JSON.parse + }, + msgpack: { + encode: msgpack.pack, + decode: msgpack.unpack + }, + bison: bison +}; + +var obj, l; + +var s = '0'; +for (var i = 0; i < 12; ++i) s += s; + +obj = { + foo: s, + arrrrrr: [{a:1,b:false,c:null,d:1.0}, 1111, 2222, 33333333], + rand: [], + a: s, + ccc: s, + b: s + s + s +}; +for (i = 0; i < 100; ++i) obj.rand.push(Math.random()); +forObj(obj); + +obj = { + foo: s, + arrrrrr: [{a:1,b:false,c:null,d:1.0}, 1111, 2222, 33333333], + rand: [] +}; +for (i = 0; i < 100; ++i) obj.rand.push(Math.random()); +forObj(obj); + +obj = { + foo: s, + arrrrrr: [{a:1,b:false,c:null,d:1.0}, 1111, 2222, 33333333], + rand: [] +}; +forObj(obj); + +obj = { + arrrrrr: [{a:1,b:false,c:null,d:1.0}, 1111, 2222, 33333333], + rand: [] +}; +forObj(obj); + +function run(obj, codec) { + var t1 = Date.now(); + var n = 10000; + for (var i = 0; i < n; ++i) { + codec.decode(l = codec.encode(obj)); + } + var t2 = Date.now(); + //console.log('DONE', n*1000/(t2-t1), 'codecs/sec, length=', l.length); + return [n*1000/(t2-t1), l.length]; +} + +function series(obj, cname, n) { + var rate = 0; + var len = 0; + for (var i = 0; i < n; ++i) { + var r = run(obj, codec[cname]); + rate += r[0]; + len += r[1]; + } + rate /= n; + len /= n; + console.log(cname + ' ' + rate + ' ' + len); + return [rate, len]; +} + +function forObj(obj) { + var r = { + JSON: series(obj, 'JSON', 20), + msgpack: series(obj, 'msgpack', 20), + bison: series(obj, 'bison', 20) + }; + return r; +} diff --git a/node_modules/socket.io/node_modules/redis/benches/sub_quit_test.js b/node_modules/socket.io/node_modules/redis/benches/sub_quit_test.js new file mode 100644 index 0000000..ad1f413 --- /dev/null +++ b/node_modules/socket.io/node_modules/redis/benches/sub_quit_test.js @@ -0,0 +1,18 @@ +var client = require("redis").createClient(), + client2 = require("redis").createClient(); + +client.subscribe("something"); +client.on("subscribe", function (channel, count) { + console.log("Got sub: " + channel); + client.unsubscribe("something"); +}); + +client.on("unsubscribe", function (channel, count) { + console.log("Got unsub: " + channel + ", quitting"); + client.quit(); +}); + +// exercise unsub before sub +client2.unsubscribe("something"); +client2.subscribe("another thing"); +client2.quit(); diff --git a/node_modules/socket.io/node_modules/redis/changelog.md b/node_modules/socket.io/node_modules/redis/changelog.md new file mode 100644 index 0000000..4248288 --- /dev/null +++ b/node_modules/socket.io/node_modules/redis/changelog.md @@ -0,0 +1,219 @@ +Changelog +========= + +## v0.7.2 - April 29, 2012 + +Many contributed fixes. Thank you, contributors. + +* [GH-190] - pub/sub mode fix (Brian Noguchi) +* [GH-165] - parser selection fix (TEHEK) +* numerous documentation and examples updates +* auth errors emit Errors instead of Strings (David Trejo) + +## v0.7.1 - November 15, 2011 + +Fix regression in reconnect logic. + +Very much need automated tests for reconnection and queue logic. + +## v0.7.0 - November 14, 2011 + +Many contributed fixes. Thanks everybody. + +* [GH-127] - properly re-initialize parser on reconnect +* [GH-136] - handle passing undefined as callback (Ian Babrou) +* [GH-139] - properly handle exceptions thrown in pub/sub event handlers (Felix Geisendörfer) +* [GH-141] - detect closing state on stream error (Felix Geisendörfer) +* [GH-142] - re-select database on reconnection (Jean-Hugues Pinson) +* [GH-146] - add sort example (Maksim Lin) + +Some more goodies: + +* Fix bugs with node 0.6 +* Performance improvements +* New version of `multi_bench.js` that tests more realistic scenarios +* [GH-140] - support optional callback for subscribe commands +* Properly flush and error out command queue when connection fails +* Initial work on reconnection thresholds + +## v0.6.7 - July 30, 2011 + +(accidentally skipped v0.6.6) + +Fix and test for [GH-123] + +Passing an Array as as the last argument should expand as users +expect. The old behavior was to coerce the arguments into Strings, +which did surprising things with Arrays. + +## v0.6.5 - July 6, 2011 + +Contributed changes: + +* Support SlowBuffers (Umair Siddique) +* Add Multi to exports (Louis-Philippe Perron) +* Fix for drain event calculation (Vladimir Dronnikov) + +Thanks! + +## v0.6.4 - June 30, 2011 + +Fix bug with optional callbacks for hmset. + +## v0.6.2 - June 30, 2011 + +Bugs fixed: + +* authentication retry while server is loading db (danmaz74) [GH-101] +* command arguments processing issue with arrays + +New features: + +* Auto update of new commands from redis.io (Dave Hoover) +* Performance improvements and backpressure controls. +* Commands now return the true/false value from the underlying socket write(s). +* Implement command_queue high water and low water for more better control of queueing. + +See `examples/backpressure_drain.js` for more information. + +## v0.6.1 - June 29, 2011 + +Add support and tests for Redis scripting through EXEC command. + +Bug fix for monitor mode. (forddg) + +Auto update of new commands from redis.io (Dave Hoover) + +## v0.6.0 - April 21, 2011 + +Lots of bugs fixed. + +* connection error did not properly trigger reconnection logic [GH-85] +* client.hmget(key, [val1, val2]) was not expanding properly [GH-66] +* client.quit() while in pub/sub mode would throw an error [GH-87] +* client.multi(['hmset', 'key', {foo: 'bar'}]) fails [GH-92] +* unsubscribe before subscribe would make things very confused [GH-88] +* Add BRPOPLPUSH [GH-79] + +## v0.5.11 - April 7, 2011 + +Added DISCARD + +I originally didn't think DISCARD would do anything here because of the clever MULTI interface, but somebody +pointed out to me that DISCARD can be used to flush the WATCH set. + +## v0.5.10 - April 6, 2011 + +Added HVALS + +## v0.5.9 - March 14, 2011 + +Fix bug with empty Array arguments - Andy Ray + +## v0.5.8 - March 14, 2011 + +Add `MONITOR` command and special monitor command reply parsing. + +## v0.5.7 - February 27, 2011 + +Add magical auth command. + +Authentication is now remembered by the client and will be automatically sent to the server +on every connection, including any reconnections. + +## v0.5.6 - February 22, 2011 + +Fix bug in ready check with `return_buffers` set to `true`. + +Thanks to Dean Mao and Austin Chau. + +## v0.5.5 - February 16, 2011 + +Add probe for server readiness. + +When a Redis server starts up, it might take a while to load the dataset into memory. +During this time, the server will accept connections, but will return errors for all non-INFO +commands. Now node_redis will send an INFO command whenever it connects to a server. +If the info command indicates that the server is not ready, the client will keep trying until +the server is ready. Once it is ready, the client will emit a "ready" event as well as the +"connect" event. The client will queue up all commands sent before the server is ready, just +like it did before. When the server is ready, all offline/non-ready commands will be replayed. +This should be backward compatible with previous versions. + +To disable this ready check behavior, set `options.no_ready_check` when creating the client. + +As a side effect of this change, the key/val params from the info command are available as +`client.server_options`. Further, the version string is decomposed into individual elements +in `client.server_options.versions`. + +## v0.5.4 - February 11, 2011 + +Fix excess memory consumption from Queue backing store. + +Thanks to Gustaf Sjöberg. + +## v0.5.3 - February 5, 2011 + +Fix multi/exec error reply callback logic. + +Thanks to Stella Laurenzo. + +## v0.5.2 - January 18, 2011 + +Fix bug where unhandled error replies confuse the parser. + +## v0.5.1 - January 18, 2011 + +Fix bug where subscribe commands would not handle redis-server startup error properly. + +## v0.5.0 - December 29, 2010 + +Some bug fixes: + +* An important bug fix in reconnection logic. Previously, reply callbacks would be invoked twice after + a reconnect. +* Changed error callback argument to be an actual Error object. + +New feature: + +* Add friendly syntax for HMSET using an object. + +## v0.4.1 - December 8, 2010 + +Remove warning about missing hiredis. You probably do want it though. + +## v0.4.0 - December 5, 2010 + +Support for multiple response parsers and hiredis C library from Pieter Noordhuis. +Return Strings instead of Buffers by default. +Empty nested mb reply bug fix. + +## v0.3.9 - November 30, 2010 + +Fix parser bug on failed EXECs. + +## v0.3.8 - November 10, 2010 + +Fix for null MULTI response when WATCH condition fails. + +## v0.3.7 - November 9, 2010 + +Add "drain" and "idle" events. + +## v0.3.6 - November 3, 2010 + +Add all known Redis commands from Redis master, even ones that are coming in 2.2 and beyond. + +Send a friendlier "error" event message on stream errors like connection refused / reset. + +## v0.3.5 - October 21, 2010 + +A few bug fixes. + +* Fixed bug with `nil` multi-bulk reply lengths that showed up with `BLPOP` timeouts. +* Only emit `end` once when connection goes away. +* Fixed bug in `test.js` where driver finished before all tests completed. + +## unversioned wasteland + +See the git history for what happened before. diff --git a/node_modules/socket.io/node_modules/redis/diff_multi_bench_output.js b/node_modules/socket.io/node_modules/redis/diff_multi_bench_output.js new file mode 100644 index 0000000..99fdf4d --- /dev/null +++ b/node_modules/socket.io/node_modules/redis/diff_multi_bench_output.js @@ -0,0 +1,87 @@ +#!/usr/bin/env node + +var colors = require('colors'), + fs = require('fs'), + _ = require('underscore'), + metrics = require('metrics'), + + // `node diff_multi_bench_output.js before.txt after.txt` + before = process.argv[2], + after = process.argv[3]; + +if (!before || !after) { + console.log('Please supply two file arguments:'); + var n = __filename; + n = n.substring(n.lastIndexOf('/', n.length)); + console.log(' ./' + n + ' multiBenchBefore.txt multiBenchAfter.txt'); + console.log('To generate multiBenchBefore.txt, run'); + console.log(' node multi_bench.js > multiBenchBefore.txt'); + console.log('Thank you for benchmarking responsibly.'); + return; +} + +var before_lines = fs.readFileSync(before, 'utf8').split('\n'), + after_lines = fs.readFileSync(after, 'utf8').split('\n'); + +console.log('Comparing before,', before.green, '(', before_lines.length, + 'lines)', 'to after,', after.green, '(', after_lines.length, 'lines)'); + +var total_ops = new metrics.Histogram.createUniformHistogram(); + +before_lines.forEach(function(b, i) { + var a = after_lines[i]; + if (!a || !b || !b.trim() || !a.trim()) { + // console.log('#ignored#', '>'+a+'<', '>'+b+'<'); + return; + } + + b_words = b.split(' ').filter(is_whitespace); + a_words = a.split(' ').filter(is_whitespace); + + var ops = + [b_words, a_words] + .map(function(words) { + // console.log(words); + return parseInt10(words.slice(-2, -1)); + }).filter(function(num) { + var isNaN = !num && num !== 0; + return !isNaN; + }); + if (ops.length != 2) return + + var delta = ops[1] - ops[0]; + + total_ops.update(delta); + + delta = humanize_diff(delta); + console.log( + // name of test + command_name(a_words) == command_name(b_words) + ? command_name(a_words) + ':' + : '404:', + // results of test + ops.join(' -> '), 'ops/sec (∆', delta, ')'); +}); + +console.log('Mean difference in ops/sec:', humanize_diff(total_ops.mean())); + +function is_whitespace(s) { + return !!s.trim(); +} + +function parseInt10(s) { + return parseInt(s, 10); +} + +// green if greater than 0, red otherwise +function humanize_diff(num) { + if (num > 0) { + return ('+' + num).green; + } + return ('' + num).red; +} + +function command_name(words) { + var line = words.join(' '); + return line.substr(0, line.indexOf(',')); +} diff --git a/node_modules/socket.io/node_modules/redis/examples/auth.js b/node_modules/socket.io/node_modules/redis/examples/auth.js new file mode 100644 index 0000000..6c0a563 --- /dev/null +++ b/node_modules/socket.io/node_modules/redis/examples/auth.js @@ -0,0 +1,5 @@ +var redis = require("redis"), + client = redis.createClient(); + +// This command is magical. Client stashes the password and will issue on every connect. +client.auth("somepass"); diff --git a/node_modules/socket.io/node_modules/redis/examples/backpressure_drain.js b/node_modules/socket.io/node_modules/redis/examples/backpressure_drain.js new file mode 100644 index 0000000..3488ef4 --- /dev/null +++ b/node_modules/socket.io/node_modules/redis/examples/backpressure_drain.js @@ -0,0 +1,33 @@ +var redis = require("../index"), + client = redis.createClient(null, null, { + command_queue_high_water: 5, + command_queue_low_water: 1 + }), + remaining_ops = 100000, paused = false; + +function op() { + if (remaining_ops <= 0) { + console.error("Finished."); + process.exit(0); + } + + remaining_ops--; + if (client.hset("test hash", "val " + remaining_ops, remaining_ops) === false) { + console.log("Pausing at " + remaining_ops); + paused = true; + } else { + process.nextTick(op); + } +} + +client.on("drain", function () { + if (paused) { + console.log("Resuming at " + remaining_ops); + paused = false; + process.nextTick(op); + } else { + console.log("Got drain while not paused at " + remaining_ops); + } +}); + +op(); diff --git a/node_modules/socket.io/node_modules/redis/examples/eval.js b/node_modules/socket.io/node_modules/redis/examples/eval.js new file mode 100644 index 0000000..c1fbf8a --- /dev/null +++ b/node_modules/socket.io/node_modules/redis/examples/eval.js @@ -0,0 +1,9 @@ +var redis = require("./index"), + client = redis.createClient(); + +redis.debug_mode = true; + +client.eval("return 100.5", 0, function (err, res) { + console.dir(err); + console.dir(res); +}); diff --git a/node_modules/socket.io/node_modules/redis/examples/extend.js b/node_modules/socket.io/node_modules/redis/examples/extend.js new file mode 100644 index 0000000..488b8c2 --- /dev/null +++ b/node_modules/socket.io/node_modules/redis/examples/extend.js @@ -0,0 +1,24 @@ +var redis = require("redis"), + client = redis.createClient(); + +// Extend the RedisClient prototype to add a custom method +// This one converts the results from "INFO" into a JavaScript Object + +redis.RedisClient.prototype.parse_info = function (callback) { + this.info(function (err, res) { + var lines = res.toString().split("\r\n").sort(); + var obj = {}; + lines.forEach(function (line) { + var parts = line.split(':'); + if (parts[1]) { + obj[parts[0]] = parts[1]; + } + }); + callback(obj) + }); +}; + +client.parse_info(function (info) { + console.dir(info); + client.quit(); +}); diff --git a/node_modules/socket.io/node_modules/redis/examples/file.js b/node_modules/socket.io/node_modules/redis/examples/file.js new file mode 100644 index 0000000..4d2b5d1 --- /dev/null +++ b/node_modules/socket.io/node_modules/redis/examples/file.js @@ -0,0 +1,32 @@ +// Read a file from disk, store it in Redis, then read it back from Redis. + +var redis = require("redis"), + client = redis.createClient(), + fs = require("fs"), + filename = "kids_in_cart.jpg"; + +// Get the file I use for testing like this: +// curl http://ranney.com/kids_in_cart.jpg -o kids_in_cart.jpg +// or just use your own file. + +// Read a file from fs, store it in Redis, get it back from Redis, write it back to fs. +fs.readFile(filename, function (err, data) { + if (err) throw err + console.log("Read " + data.length + " bytes from filesystem."); + + client.set(filename, data, redis.print); // set entire file + client.get(filename, function (err, reply) { // get entire file + if (err) { + console.log("Get error: " + err); + } else { + fs.writeFile("duplicate_" + filename, reply, function (err) { + if (err) { + console.log("Error on write: " + err) + } else { + console.log("File written."); + } + client.end(); + }); + } + }); +}); diff --git a/node_modules/socket.io/node_modules/redis/examples/mget.js b/node_modules/socket.io/node_modules/redis/examples/mget.js new file mode 100644 index 0000000..936740d --- /dev/null +++ b/node_modules/socket.io/node_modules/redis/examples/mget.js @@ -0,0 +1,5 @@ +var client = require("redis").createClient(); + +client.mget(["sessions started", "sessions started", "foo"], function (err, res) { + console.dir(res); +}); \ No newline at end of file diff --git a/node_modules/socket.io/node_modules/redis/examples/monitor.js b/node_modules/socket.io/node_modules/redis/examples/monitor.js new file mode 100644 index 0000000..2cb6a4e --- /dev/null +++ b/node_modules/socket.io/node_modules/redis/examples/monitor.js @@ -0,0 +1,10 @@ +var client = require("../index").createClient(), + util = require("util"); + +client.monitor(function (err, res) { + console.log("Entering monitoring mode."); +}); + +client.on("monitor", function (time, args) { + console.log(time + ": " + util.inspect(args)); +}); diff --git a/node_modules/socket.io/node_modules/redis/examples/multi.js b/node_modules/socket.io/node_modules/redis/examples/multi.js new file mode 100644 index 0000000..35c08e1 --- /dev/null +++ b/node_modules/socket.io/node_modules/redis/examples/multi.js @@ -0,0 +1,46 @@ +var redis = require("redis"), + client = redis.createClient(), set_size = 20; + +client.sadd("bigset", "a member"); +client.sadd("bigset", "another member"); + +while (set_size > 0) { + client.sadd("bigset", "member " + set_size); + set_size -= 1; +} + +// multi chain with an individual callback +client.multi() + .scard("bigset") + .smembers("bigset") + .keys("*", function (err, replies) { + client.mget(replies, redis.print); + }) + .dbsize() + .exec(function (err, replies) { + console.log("MULTI got " + replies.length + " replies"); + replies.forEach(function (reply, index) { + console.log("Reply " + index + ": " + reply.toString()); + }); + }); + +client.mset("incr thing", 100, "incr other thing", 1, redis.print); + +// start a separate multi command queue +var multi = client.multi(); +multi.incr("incr thing", redis.print); +multi.incr("incr other thing", redis.print); + +// runs immediately +client.get("incr thing", redis.print); // 100 + +// drains multi queue and runs atomically +multi.exec(function (err, replies) { + console.log(replies); // 101, 2 +}); + +// you can re-run the same transaction if you like +multi.exec(function (err, replies) { + console.log(replies); // 102, 3 + client.quit(); +}); diff --git a/node_modules/socket.io/node_modules/redis/examples/multi2.js b/node_modules/socket.io/node_modules/redis/examples/multi2.js new file mode 100644 index 0000000..8be4d73 --- /dev/null +++ b/node_modules/socket.io/node_modules/redis/examples/multi2.js @@ -0,0 +1,29 @@ +var redis = require("redis"), + client = redis.createClient(), multi; + +// start a separate command queue for multi +multi = client.multi(); +multi.incr("incr thing", redis.print); +multi.incr("incr other thing", redis.print); + +// runs immediately +client.mset("incr thing", 100, "incr other thing", 1, redis.print); + +// drains multi queue and runs atomically +multi.exec(function (err, replies) { + console.log(replies); // 101, 2 +}); + +// you can re-run the same transaction if you like +multi.exec(function (err, replies) { + console.log(replies); // 102, 3 + client.quit(); +}); + +client.multi([ + ["mget", "multifoo", "multibar", redis.print], + ["incr", "multifoo"], + ["incr", "multibar"] +]).exec(function (err, replies) { + console.log(replies.toString()); +}); diff --git a/node_modules/socket.io/node_modules/redis/examples/psubscribe.js b/node_modules/socket.io/node_modules/redis/examples/psubscribe.js new file mode 100644 index 0000000..c57117b --- /dev/null +++ b/node_modules/socket.io/node_modules/redis/examples/psubscribe.js @@ -0,0 +1,33 @@ +var redis = require("redis"), + client1 = redis.createClient(), + client2 = redis.createClient(), + client3 = redis.createClient(), + client4 = redis.createClient(), + msg_count = 0; + +redis.debug_mode = false; + +client1.on("psubscribe", function (pattern, count) { + console.log("client1 psubscribed to " + pattern + ", " + count + " total subscriptions"); + client2.publish("channeltwo", "Me!"); + client3.publish("channelthree", "Me too!"); + client4.publish("channelfour", "And me too!"); +}); + +client1.on("punsubscribe", function (pattern, count) { + console.log("client1 punsubscribed from " + pattern + ", " + count + " total subscriptions"); + client4.end(); + client3.end(); + client2.end(); + client1.end(); +}); + +client1.on("pmessage", function (pattern, channel, message) { + console.log("("+ pattern +")" + " client1 received message on " + channel + ": " + message); + msg_count += 1; + if (msg_count === 3) { + client1.punsubscribe(); + } +}); + +client1.psubscribe("channel*"); diff --git a/node_modules/socket.io/node_modules/redis/examples/pub_sub.js b/node_modules/socket.io/node_modules/redis/examples/pub_sub.js new file mode 100644 index 0000000..aa508d6 --- /dev/null +++ b/node_modules/socket.io/node_modules/redis/examples/pub_sub.js @@ -0,0 +1,41 @@ +var redis = require("redis"), + client1 = redis.createClient(), msg_count = 0, + client2 = redis.createClient(); + +redis.debug_mode = false; + +// Most clients probably don't do much on "subscribe". This example uses it to coordinate things within one program. +client1.on("subscribe", function (channel, count) { + console.log("client1 subscribed to " + channel + ", " + count + " total subscriptions"); + if (count === 2) { + client2.publish("a nice channel", "I am sending a message."); + client2.publish("another one", "I am sending a second message."); + client2.publish("a nice channel", "I am sending my last message."); + } +}); + +client1.on("unsubscribe", function (channel, count) { + console.log("client1 unsubscribed from " + channel + ", " + count + " total subscriptions"); + if (count === 0) { + client2.end(); + client1.end(); + } +}); + +client1.on("message", function (channel, message) { + console.log("client1 channel " + channel + ": " + message); + msg_count += 1; + if (msg_count === 3) { + client1.unsubscribe(); + } +}); + +client1.on("ready", function () { + // if you need auth, do it here + client1.incr("did a thing"); + client1.subscribe("a nice channel", "another one"); +}); + +client2.on("ready", function () { + // if you need auth, do it here +}); diff --git a/node_modules/socket.io/node_modules/redis/examples/simple.js b/node_modules/socket.io/node_modules/redis/examples/simple.js new file mode 100644 index 0000000..f1f2e32 --- /dev/null +++ b/node_modules/socket.io/node_modules/redis/examples/simple.js @@ -0,0 +1,24 @@ +var redis = require("redis"), + client = redis.createClient(); + +client.on("error", function (err) { + console.log("error event - " + client.host + ":" + client.port + " - " + err); +}); + +client.set("string key", "string val", redis.print); +client.hset("hash key", "hashtest 1", "some value", redis.print); +client.hset(["hash key", "hashtest 2", "some other value"], redis.print); +client.hkeys("hash key", function (err, replies) { + if (err) { + return console.error("error response - " + err); + } + + console.log(replies.length + " replies:"); + replies.forEach(function (reply, i) { + console.log(" " + i + ": " + reply); + }); +}); + +client.quit(function (err, res) { + console.log("Exiting from quit command."); +}); diff --git a/node_modules/socket.io/node_modules/redis/examples/sort.js b/node_modules/socket.io/node_modules/redis/examples/sort.js new file mode 100644 index 0000000..e7c6249 --- /dev/null +++ b/node_modules/socket.io/node_modules/redis/examples/sort.js @@ -0,0 +1,17 @@ +var redis = require("redis"), + client = redis.createClient(); + +client.sadd("mylist", 1); +client.sadd("mylist", 2); +client.sadd("mylist", 3); + +client.set("weight_1", 5); +client.set("weight_2", 500); +client.set("weight_3", 1); + +client.set("object_1", "foo"); +client.set("object_2", "bar"); +client.set("object_3", "qux"); + +client.sort("mylist", "by", "weight_*", "get", "object_*", redis.print); +// Prints Reply: qux,foo,bar \ No newline at end of file diff --git a/node_modules/socket.io/node_modules/redis/examples/subqueries.js b/node_modules/socket.io/node_modules/redis/examples/subqueries.js new file mode 100644 index 0000000..560db24 --- /dev/null +++ b/node_modules/socket.io/node_modules/redis/examples/subqueries.js @@ -0,0 +1,15 @@ +// Sending commands in response to other commands. +// This example runs "type" against every key in the database +// +var client = require("redis").createClient(); + +client.keys("*", function (err, keys) { + keys.forEach(function (key, pos) { + client.type(key, function (err, keytype) { + console.log(key + " is " + keytype); + if (pos === (keys.length - 1)) { + client.quit(); + } + }); + }); +}); diff --git a/node_modules/socket.io/node_modules/redis/examples/subquery.js b/node_modules/socket.io/node_modules/redis/examples/subquery.js new file mode 100644 index 0000000..861657e --- /dev/null +++ b/node_modules/socket.io/node_modules/redis/examples/subquery.js @@ -0,0 +1,19 @@ +var client = require("redis").createClient(); + +function print_results(obj) { + console.dir(obj); +} + +// build a map of all keys and their types +client.keys("*", function (err, all_keys) { + var key_types = {}; + + all_keys.forEach(function (key, pos) { // use second arg of forEach to get pos + client.type(key, function (err, type) { + key_types[key] = type; + if (pos === all_keys.length - 1) { // callbacks all run in order + print_results(key_types); + } + }); + }); +}); diff --git a/node_modules/socket.io/node_modules/redis/examples/unix_socket.js b/node_modules/socket.io/node_modules/redis/examples/unix_socket.js new file mode 100644 index 0000000..4a5e0bb --- /dev/null +++ b/node_modules/socket.io/node_modules/redis/examples/unix_socket.js @@ -0,0 +1,29 @@ +var redis = require("redis"), + client = redis.createClient("/tmp/redis.sock"), + profiler = require("v8-profiler"); + +client.on("connect", function () { + console.log("Got Unix socket connection.") +}); + +client.on("error", function (err) { + console.log(err.message); +}); + +client.set("space chars", "space value"); + +setInterval(function () { + client.get("space chars"); +}, 100); + +function done() { + client.info(function (err, reply) { + console.log(reply.toString()); + client.quit(); + }); +} + +setTimeout(function () { + console.log("Taking snapshot."); + var snap = profiler.takeSnapshot(); +}, 5000); diff --git a/node_modules/socket.io/node_modules/redis/examples/web_server.js b/node_modules/socket.io/node_modules/redis/examples/web_server.js new file mode 100644 index 0000000..9fd8592 --- /dev/null +++ b/node_modules/socket.io/node_modules/redis/examples/web_server.js @@ -0,0 +1,31 @@ +// A simple web server that generates dyanmic content based on responses from Redis + +var http = require("http"), server, + redis_client = require("redis").createClient(); + +server = http.createServer(function (request, response) { + response.writeHead(200, { + "Content-Type": "text/plain" + }); + + var redis_info, total_requests; + + redis_client.info(function (err, reply) { + redis_info = reply; // stash response in outer scope + }); + redis_client.incr("requests", function (err, reply) { + total_requests = reply; // stash response in outer scope + }); + redis_client.hincrby("ip", request.connection.remoteAddress, 1); + redis_client.hgetall("ip", function (err, reply) { + // This is the last reply, so all of the previous replies must have completed already + response.write("This page was generated after talking to redis.\n\n" + + "Redis info:\n" + redis_info + "\n" + + "Total requests: " + total_requests + "\n\n" + + "IP count: \n"); + Object.keys(reply).forEach(function (ip) { + response.write(" " + ip + ": " + reply[ip] + "\n"); + }); + response.end(); + }); +}).listen(80); diff --git a/node_modules/socket.io/node_modules/redis/generate_commands.js b/node_modules/socket.io/node_modules/redis/generate_commands.js new file mode 100644 index 0000000..e6949d3 --- /dev/null +++ b/node_modules/socket.io/node_modules/redis/generate_commands.js @@ -0,0 +1,39 @@ +var http = require("http"), + fs = require("fs"); + +function prettyCurrentTime() { + var date = new Date(); + return date.toLocaleString(); +} + +function write_file(commands, path) { + var file_contents, out_commands; + + console.log("Writing " + Object.keys(commands).length + " commands to " + path); + + file_contents = "// This file was generated by ./generate_commands.js on " + prettyCurrentTime() + "\n"; + + out_commands = Object.keys(commands).map(function (key) { + return key.toLowerCase(); + }); + + file_contents += "module.exports = " + JSON.stringify(out_commands, null, " ") + ";\n"; + + fs.writeFile(path, file_contents); +} + +http.get({host: "redis.io", path: "/commands.json"}, function (res) { + var body = ""; + + console.log("Response from redis.io/commands.json: " + res.statusCode); + + res.on('data', function (chunk) { + body += chunk; + }); + + res.on('end', function () { + write_file(JSON.parse(body), "lib/commands.js"); + }); +}).on('error', function (e) { + console.log("Error fetching command list from redis.io: " + e.message); +}); diff --git a/node_modules/socket.io/node_modules/redis/index.js b/node_modules/socket.io/node_modules/redis/index.js new file mode 100644 index 0000000..61cb4e9 --- /dev/null +++ b/node_modules/socket.io/node_modules/redis/index.js @@ -0,0 +1,1113 @@ +/*global Buffer require exports console setTimeout */ + +var net = require("net"), + util = require("./lib/util"), + Queue = require("./lib/queue"), + to_array = require("./lib/to_array"), + events = require("events"), + crypto = require("crypto"), + parsers = [], commands, + connection_id = 0, + default_port = 6379, + default_host = "127.0.0.1"; + +// can set this to true to enable for all connections +exports.debug_mode = false; + +// hiredis might not be installed +try { + require("./lib/parser/hiredis"); + parsers.push(require("./lib/parser/hiredis")); +} catch (err) { + if (exports.debug_mode) { + console.warn("hiredis parser not installed."); + } +} + +parsers.push(require("./lib/parser/javascript")); + +function RedisClient(stream, options) { + this.stream = stream; + this.options = options = options || {}; + + this.connection_id = ++connection_id; + this.connected = false; + this.ready = false; + this.connections = 0; + if (this.options.socket_nodelay === undefined) { + this.options.socket_nodelay = true; + } + this.should_buffer = false; + this.command_queue_high_water = this.options.command_queue_high_water || 1000; + this.command_queue_low_water = this.options.command_queue_low_water || 0; + this.max_attempts = null; + if (options.max_attempts && !isNaN(options.max_attempts) && options.max_attempts > 0) { + this.max_attempts = +options.max_attempts; + } + this.command_queue = new Queue(); // holds sent commands to de-pipeline them + this.offline_queue = new Queue(); // holds commands issued but not able to be sent + this.commands_sent = 0; + this.connect_timeout = false; + if (options.connect_timeout && !isNaN(options.connect_timeout) && options.connect_timeout > 0) { + this.connect_timeout = +options.connect_timeout; + } + + this.enable_offline_queue = true; + if (typeof this.options.enable_offline_queue === "boolean") { + this.enable_offline_queue = this.options.enable_offline_queue; + } + + this.initialize_retry_vars(); + this.pub_sub_mode = false; + this.subscription_set = {}; + this.monitoring = false; + this.closing = false; + this.server_info = {}; + this.auth_pass = null; + this.parser_module = null; + this.selected_db = null; // save the selected db here, used when reconnecting + + this.old_state = null; + + var self = this; + + this.stream.on("connect", function () { + self.on_connect(); + }); + + this.stream.on("data", function (buffer_from_socket) { + self.on_data(buffer_from_socket); + }); + + this.stream.on("error", function (msg) { + self.on_error(msg.message); + }); + + this.stream.on("close", function () { + self.connection_gone("close"); + }); + + this.stream.on("end", function () { + self.connection_gone("end"); + }); + + this.stream.on("drain", function () { + self.should_buffer = false; + self.emit("drain"); + }); + + events.EventEmitter.call(this); +} +util.inherits(RedisClient, events.EventEmitter); +exports.RedisClient = RedisClient; + +RedisClient.prototype.initialize_retry_vars = function () { + this.retry_timer = null; + this.retry_totaltime = 0; + this.retry_delay = 150; + this.retry_backoff = 1.7; + this.attempts = 1; +}; + +// flush offline_queue and command_queue, erroring any items with a callback first +RedisClient.prototype.flush_and_error = function (message) { + var command_obj; + while (this.offline_queue.length > 0) { + command_obj = this.offline_queue.shift(); + if (typeof command_obj.callback === "function") { + command_obj.callback(message); + } + } + this.offline_queue = new Queue(); + + while (this.command_queue.length > 0) { + command_obj = this.command_queue.shift(); + if (typeof command_obj.callback === "function") { + command_obj.callback(message); + } + } + this.command_queue = new Queue(); +}; + +RedisClient.prototype.on_error = function (msg) { + var message = "Redis connection to " + this.host + ":" + this.port + " failed - " + msg, + self = this, command_obj; + + if (this.closing) { + return; + } + + if (exports.debug_mode) { + console.warn(message); + } + + this.flush_and_error(message); + + this.connected = false; + this.ready = false; + + this.emit("error", new Error(message)); + // "error" events get turned into exceptions if they aren't listened for. If the user handled this error + // then we should try to reconnect. + this.connection_gone("error"); +}; + +RedisClient.prototype.do_auth = function () { + var self = this; + + if (exports.debug_mode) { + console.log("Sending auth to " + self.host + ":" + self.port + " id " + self.connection_id); + } + self.send_anyway = true; + self.send_command("auth", [this.auth_pass], function (err, res) { + if (err) { + if (err.toString().match("LOADING")) { + // if redis is still loading the db, it will not authenticate and everything else will fail + console.log("Redis still loading, trying to authenticate later"); + setTimeout(function () { + self.do_auth(); + }, 2000); // TODO - magic number alert + return; + } else { + return self.emit("error", new Error("Auth error: " + err.message)); + } + } + if (res.toString() !== "OK") { + return self.emit("error", new Error("Auth failed: " + res.toString())); + } + if (exports.debug_mode) { + console.log("Auth succeeded " + self.host + ":" + self.port + " id " + self.connection_id); + } + if (self.auth_callback) { + self.auth_callback(err, res); + self.auth_callback = null; + } + + // now we are really connected + self.emit("connect"); + if (self.options.no_ready_check) { + self.on_ready(); + } else { + self.ready_check(); + } + }); + self.send_anyway = false; +}; + +RedisClient.prototype.on_connect = function () { + if (exports.debug_mode) { + console.log("Stream connected " + this.host + ":" + this.port + " id " + this.connection_id); + } + var self = this; + + this.connected = true; + this.ready = false; + this.attempts = 0; + this.connections += 1; + this.command_queue = new Queue(); + this.emitted_end = false; + this.initialize_retry_vars(); + if (this.options.socket_nodelay) { + this.stream.setNoDelay(); + } + this.stream.setTimeout(0); + + this.init_parser(); + + if (this.auth_pass) { + this.do_auth(); + } else { + this.emit("connect"); + + if (this.options.no_ready_check) { + this.on_ready(); + } else { + this.ready_check(); + } + } +}; + +RedisClient.prototype.init_parser = function () { + var self = this; + + if (this.options.parser) { + if (! parsers.some(function (parser) { + if (parser.name === self.options.parser) { + self.parser_module = parser; + if (exports.debug_mode) { + console.log("Using parser module: " + self.parser_module.name); + } + return true; + } + })) { + throw new Error("Couldn't find named parser " + self.options.parser + " on this system"); + } + } else { + if (exports.debug_mode) { + console.log("Using default parser module: " + parsers[0].name); + } + this.parser_module = parsers[0]; + } + + this.parser_module.debug_mode = exports.debug_mode; + + // return_buffers sends back Buffers from parser to callback. detect_buffers sends back Buffers from parser, but + // converts to Strings if the input arguments are not Buffers. + this.reply_parser = new this.parser_module.Parser({ + return_buffers: self.options.return_buffers || self.options.detect_buffers || false + }); + + // "reply error" is an error sent back by Redis + this.reply_parser.on("reply error", function (reply) { + self.return_error(new Error(reply)); + }); + this.reply_parser.on("reply", function (reply) { + self.return_reply(reply); + }); + // "error" is bad. Somehow the parser got confused. It'll try to reset and continue. + this.reply_parser.on("error", function (err) { + self.emit("error", new Error("Redis reply parser error: " + err.stack)); + }); +}; + +RedisClient.prototype.on_ready = function () { + var self = this; + + this.ready = true; + + if (this.old_state !== null) { + this.monitoring = this.old_state.monitoring; + this.pub_sub_mode = this.old_state.pub_sub_mode; + this.selected_db = this.old_state.selected_db; + this.old_state = null; + } + + // magically restore any modal commands from a previous connection + if (this.selected_db !== null) { + this.send_command('select', [this.selected_db]); + } + if (this.pub_sub_mode === true) { + // only emit "ready" when all subscriptions were made again + var callback_count = 0; + var callback = function() { + callback_count--; + if (callback_count == 0) { + self.emit("ready"); + } + } + Object.keys(this.subscription_set).forEach(function (key) { + var parts = key.split(" "); + if (exports.debug_mode) { + console.warn("sending pub/sub on_ready " + parts[0] + ", " + parts[1]); + } + callback_count++; + self.send_command(parts[0] + "scribe", [parts[1]], callback); + }); + return; + } else if (this.monitoring) { + this.send_command("monitor"); + } else { + this.send_offline_queue(); + } + this.emit("ready"); +}; + +RedisClient.prototype.on_info_cmd = function (err, res) { + var self = this, obj = {}, lines, retry_time; + + if (err) { + return self.emit("error", new Error("Ready check failed: " + err.message)); + } + + lines = res.toString().split("\r\n"); + + lines.forEach(function (line) { + var parts = line.split(':'); + if (parts[1]) { + obj[parts[0]] = parts[1]; + } + }); + + obj.versions = []; + obj.redis_version.split('.').forEach(function (num) { + obj.versions.push(+num); + }); + + // expose info key/vals to users + this.server_info = obj; + + if (!obj.loading || (obj.loading && obj.loading === "0")) { + if (exports.debug_mode) { + console.log("Redis server ready."); + } + this.on_ready(); + } else { + retry_time = obj.loading_eta_seconds * 1000; + if (retry_time > 1000) { + retry_time = 1000; + } + if (exports.debug_mode) { + console.log("Redis server still loading, trying again in " + retry_time); + } + setTimeout(function () { + self.ready_check(); + }, retry_time); + } +}; + +RedisClient.prototype.ready_check = function () { + var self = this; + + if (exports.debug_mode) { + console.log("checking server ready state..."); + } + + this.send_anyway = true; // secret flag to send_command to send something even if not "ready" + this.info(function (err, res) { + self.on_info_cmd(err, res); + }); + this.send_anyway = false; +}; + +RedisClient.prototype.send_offline_queue = function () { + var command_obj, buffered_writes = 0; + + while (this.offline_queue.length > 0) { + command_obj = this.offline_queue.shift(); + if (exports.debug_mode) { + console.log("Sending offline command: " + command_obj.command); + } + buffered_writes += !this.send_command(command_obj.command, command_obj.args, command_obj.callback); + } + this.offline_queue = new Queue(); + // Even though items were shifted off, Queue backing store still uses memory until next add, so just get a new Queue + + if (!buffered_writes) { + this.should_buffer = false; + this.emit("drain"); + } +}; + +RedisClient.prototype.connection_gone = function (why) { + var self = this, message; + + // If a retry is already in progress, just let that happen + if (this.retry_timer) { + return; + } + + if (exports.debug_mode) { + console.warn("Redis connection is gone from " + why + " event."); + } + this.connected = false; + this.ready = false; + + if (this.old_state === null) { + var state = { + monitoring: this.monitoring, + pub_sub_mode: this.pub_sub_mode, + selected_db: this.selected_db + }; + this.old_state = state; + this.monitoring = false; + this.pub_sub_mode = false; + this.selected_db = null; + } + + // since we are collapsing end and close, users don't expect to be called twice + if (! this.emitted_end) { + this.emit("end"); + this.emitted_end = true; + } + + this.flush_and_error("Redis connection gone from " + why + " event."); + + // If this is a requested shutdown, then don't retry + if (this.closing) { + this.retry_timer = null; + if (exports.debug_mode) { + console.warn("connection ended from quit command, not retrying."); + } + return; + } + + this.retry_delay = Math.floor(this.retry_delay * this.retry_backoff); + + if (exports.debug_mode) { + console.log("Retry connection in " + this.current_retry_delay + " ms"); + } + + if (this.max_attempts && this.attempts >= this.max_attempts) { + this.retry_timer = null; + // TODO - some people need a "Redis is Broken mode" for future commands that errors immediately, and others + // want the program to exit. Right now, we just log, which doesn't really help in either case. + console.error("node_redis: Couldn't get Redis connection after " + this.max_attempts + " attempts."); + return; + } + + this.attempts += 1; + this.emit("reconnecting", { + delay: self.retry_delay, + attempt: self.attempts + }); + this.retry_timer = setTimeout(function () { + if (exports.debug_mode) { + console.log("Retrying connection..."); + } + + self.retry_totaltime += self.current_retry_delay; + + if (self.connect_timeout && self.retry_totaltime >= self.connect_timeout) { + self.retry_timer = null; + // TODO - engage Redis is Broken mode for future commands, or whatever + console.error("node_redis: Couldn't get Redis connection after " + self.retry_totaltime + "ms."); + return; + } + + self.stream.connect(self.port, self.host); + self.retry_timer = null; + }, this.retry_delay); +}; + +RedisClient.prototype.on_data = function (data) { + if (exports.debug_mode) { + console.log("net read " + this.host + ":" + this.port + " id " + this.connection_id + ": " + data.toString()); + } + + try { + this.reply_parser.execute(data); + } catch (err) { + // This is an unexpected parser problem, an exception that came from the parser code itself. + // Parser should emit "error" events if it notices things are out of whack. + // Callbacks that throw exceptions will land in return_reply(), below. + // TODO - it might be nice to have a different "error" event for different types of errors + this.emit("error", err); + } +}; + +RedisClient.prototype.return_error = function (err) { + var command_obj = this.command_queue.shift(), queue_len = this.command_queue.getLength(); + + if (this.pub_sub_mode === false && queue_len === 0) { + this.emit("idle"); + this.command_queue = new Queue(); + } + if (this.should_buffer && queue_len <= this.command_queue_low_water) { + this.emit("drain"); + this.should_buffer = false; + } + + if (command_obj && typeof command_obj.callback === "function") { + try { + command_obj.callback(err); + } catch (callback_err) { + // if a callback throws an exception, re-throw it on a new stack so the parser can keep going + process.nextTick(function () { + throw callback_err; + }); + } + } else { + console.log("node_redis: no callback to send error: " + err.message); + // this will probably not make it anywhere useful, but we might as well throw + process.nextTick(function () { + throw err; + }); + } +}; + +// if a callback throws an exception, re-throw it on a new stack so the parser can keep going. +// put this try/catch in its own function because V8 doesn't optimize this well yet. +function try_callback(callback, reply) { + try { + callback(null, reply); + } catch (err) { + process.nextTick(function () { + throw err; + }); + } +} + +// hgetall converts its replies to an Object. If the reply is empty, null is returned. +function reply_to_object(reply) { + var obj = {}, j, jl, key, val; + + if (reply.length === 0) { + return null; + } + + for (j = 0, jl = reply.length; j < jl; j += 2) { + key = reply[j].toString(); + val = reply[j + 1]; + obj[key] = val; + } + + return obj; +} + +function reply_to_strings(reply) { + var i; + + if (Buffer.isBuffer(reply)) { + return reply.toString(); + } + + if (Array.isArray(reply)) { + for (i = 0; i < reply.length; i++) { + reply[i] = reply[i].toString(); + } + return reply; + } + + return reply; +} + +RedisClient.prototype.return_reply = function (reply) { + var command_obj, obj, i, len, type, timestamp, argindex, args, queue_len; + + command_obj = this.command_queue.shift(), + queue_len = this.command_queue.getLength(); + + if (this.pub_sub_mode === false && queue_len === 0) { + this.emit("idle"); + this.command_queue = new Queue(); // explicitly reclaim storage from old Queue + } + if (this.should_buffer && queue_len <= this.command_queue_low_water) { + this.emit("drain"); + this.should_buffer = false; + } + + if (command_obj && !command_obj.sub_command) { + if (typeof command_obj.callback === "function") { + if (this.options.detect_buffers && command_obj.buffer_args === false) { + // If detect_buffers option was specified, then the reply from the parser will be Buffers. + // If this command did not use Buffer arguments, then convert the reply to Strings here. + reply = reply_to_strings(reply); + } + + // TODO - confusing and error-prone that hgetall is special cased in two places + if (reply && 'hgetall' === command_obj.command.toLowerCase()) { + reply = reply_to_object(reply); + } + + try_callback(command_obj.callback, reply); + } else if (exports.debug_mode) { + console.log("no callback for reply: " + (reply && reply.toString && reply.toString())); + } + } else if (this.pub_sub_mode || (command_obj && command_obj.sub_command)) { + if (Array.isArray(reply)) { + type = reply[0].toString(); + + if (type === "message") { + this.emit("message", reply[1].toString(), reply[2]); // channel, message + } else if (type === "pmessage") { + this.emit("pmessage", reply[1].toString(), reply[2].toString(), reply[3]); // pattern, channel, message + } else if (type === "subscribe" || type === "unsubscribe" || type === "psubscribe" || type === "punsubscribe") { + if (reply[2] === 0) { + this.pub_sub_mode = false; + if (this.debug_mode) { + console.log("All subscriptions removed, exiting pub/sub mode"); + } + } else { + this.pub_sub_mode = true; + } + // subscribe commands take an optional callback and also emit an event, but only the first response is included in the callback + // TODO - document this or fix it so it works in a more obvious way + if (command_obj && typeof command_obj.callback === "function") { + try_callback(command_obj.callback, reply[1].toString()); + } + this.emit(type, reply[1].toString(), reply[2]); // channel, count + } else { + throw new Error("subscriptions are active but got unknown reply type " + type); + } + } else if (! this.closing) { + throw new Error("subscriptions are active but got an invalid reply: " + reply); + } + } else if (this.monitoring) { + len = reply.indexOf(" "); + timestamp = reply.slice(0, len); + argindex = reply.indexOf('"'); + args = reply.slice(argindex + 1, -1).split('" "').map(function (elem) { + return elem.replace(/\\"/g, '"'); + }); + this.emit("monitor", timestamp, args); + } else { + throw new Error("node_redis command queue state error. If you can reproduce this, please report it."); + } +}; + +// This Command constructor is ever so slightly faster than using an object literal, but more importantly, using +// a named constructor helps it show up meaningfully in the V8 CPU profiler and in heap snapshots. +function Command(command, args, sub_command, buffer_args, callback) { + this.command = command; + this.args = args; + this.sub_command = sub_command; + this.buffer_args = buffer_args; + this.callback = callback; +} + +RedisClient.prototype.send_command = function (command, args, callback) { + var arg, this_args, command_obj, i, il, elem_count, buffer_args, stream = this.stream, command_str = "", buffered_writes = 0, last_arg_type; + + if (typeof command !== "string") { + throw new Error("First argument to send_command must be the command name string, not " + typeof command); + } + + if (Array.isArray(args)) { + if (typeof callback === "function") { + // probably the fastest way: + // client.command([arg1, arg2], cb); (straight passthrough) + // send_command(command, [arg1, arg2], cb); + } else if (! callback) { + // most people find this variable argument length form more convenient, but it uses arguments, which is slower + // client.command(arg1, arg2, cb); (wraps up arguments into an array) + // send_command(command, [arg1, arg2, cb]); + // client.command(arg1, arg2); (callback is optional) + // send_command(command, [arg1, arg2]); + // client.command(arg1, arg2, undefined); (callback is undefined) + // send_command(command, [arg1, arg2, undefined]); + last_arg_type = typeof args[args.length - 1]; + if (last_arg_type === "function" || last_arg_type === "undefined") { + callback = args.pop(); + } + } else { + throw new Error("send_command: last argument must be a callback or undefined"); + } + } else { + throw new Error("send_command: second argument must be an array"); + } + + // if the last argument is an array and command is sadd, expand it out: + // client.sadd(arg1, [arg2, arg3, arg4], cb); + // converts to: + // client.sadd(arg1, arg2, arg3, arg4, cb); + if ((command === 'sadd' || command === 'SADD') && args.length > 0 && Array.isArray(args[args.length - 1])) { + args = args.slice(0, -1).concat(args[args.length - 1]); + } + + buffer_args = false; + for (i = 0, il = args.length, arg; i < il; i += 1) { + if (Buffer.isBuffer(args[i])) { + buffer_args = true; + } + } + + command_obj = new Command(command, args, false, buffer_args, callback); + + if ((!this.ready && !this.send_anyway) || !stream.writable) { + if (exports.debug_mode) { + if (!stream.writable) { + console.log("send command: stream is not writeable."); + } + } + + if (this.enable_offline_queue) { + if (exports.debug_mode) { + console.log("Queueing " + command + " for next server connection."); + } + this.offline_queue.push(command_obj); + this.should_buffer = true; + } else { + var not_writeable_error = new Error('send_command: stream not writeable. enable_offline_queue is false'); + if (command_obj.callback) { + command_obj.callback(not_writeable_error); + } else { + throw not_writeable_error; + } + } + + return false; + } + + if (command === "subscribe" || command === "psubscribe" || command === "unsubscribe" || command === "punsubscribe") { + this.pub_sub_command(command_obj); + } else if (command === "monitor") { + this.monitoring = true; + } else if (command === "quit") { + this.closing = true; + } else if (this.pub_sub_mode === true) { + throw new Error("Connection in pub/sub mode, only pub/sub commands may be used"); + } + this.command_queue.push(command_obj); + this.commands_sent += 1; + + elem_count = args.length + 1; + + // Always use "Multi bulk commands", but if passed any Buffer args, then do multiple writes, one for each arg. + // This means that using Buffers in commands is going to be slower, so use Strings if you don't already have a Buffer. + + command_str = "*" + elem_count + "\r\n$" + command.length + "\r\n" + command + "\r\n"; + + if (! buffer_args) { // Build up a string and send entire command in one write + for (i = 0, il = args.length, arg; i < il; i += 1) { + arg = args[i]; + if (typeof arg !== "string") { + arg = String(arg); + } + command_str += "$" + Buffer.byteLength(arg) + "\r\n" + arg + "\r\n"; + } + if (exports.debug_mode) { + console.log("send " + this.host + ":" + this.port + " id " + this.connection_id + ": " + command_str); + } + buffered_writes += !stream.write(command_str); + } else { + if (exports.debug_mode) { + console.log("send command (" + command_str + ") has Buffer arguments"); + } + buffered_writes += !stream.write(command_str); + + for (i = 0, il = args.length, arg; i < il; i += 1) { + arg = args[i]; + if (!(Buffer.isBuffer(arg) || arg instanceof String)) { + arg = String(arg); + } + + if (Buffer.isBuffer(arg)) { + if (arg.length === 0) { + if (exports.debug_mode) { + console.log("send_command: using empty string for 0 length buffer"); + } + buffered_writes += !stream.write("$0\r\n\r\n"); + } else { + buffered_writes += !stream.write("$" + arg.length + "\r\n"); + buffered_writes += !stream.write(arg); + buffered_writes += !stream.write("\r\n"); + if (exports.debug_mode) { + console.log("send_command: buffer send " + arg.length + " bytes"); + } + } + } else { + if (exports.debug_mode) { + console.log("send_command: string send " + Buffer.byteLength(arg) + " bytes: " + arg); + } + buffered_writes += !stream.write("$" + Buffer.byteLength(arg) + "\r\n" + arg + "\r\n"); + } + } + } + if (exports.debug_mode) { + console.log("send_command buffered_writes: " + buffered_writes, " should_buffer: " + this.should_buffer); + } + if (buffered_writes || this.command_queue.getLength() >= this.command_queue_high_water) { + this.should_buffer = true; + } + return !this.should_buffer; +}; + +RedisClient.prototype.pub_sub_command = function (command_obj) { + var i, key, command, args; + + if (this.pub_sub_mode === false && exports.debug_mode) { + console.log("Entering pub/sub mode from " + command_obj.command); + } + this.pub_sub_mode = true; + command_obj.sub_command = true; + + command = command_obj.command; + args = command_obj.args; + if (command === "subscribe" || command === "psubscribe") { + if (command === "subscribe") { + key = "sub"; + } else { + key = "psub"; + } + for (i = 0; i < args.length; i++) { + this.subscription_set[key + " " + args[i]] = true; + } + } else { + if (command === "unsubscribe") { + key = "sub"; + } else { + key = "psub"; + } + for (i = 0; i < args.length; i++) { + delete this.subscription_set[key + " " + args[i]]; + } + } +}; + +RedisClient.prototype.end = function () { + this.stream._events = {}; + this.connected = false; + this.ready = false; + return this.stream.end(); +}; + +function Multi(client, args) { + this.client = client; + this.queue = [["MULTI"]]; + if (Array.isArray(args)) { + this.queue = this.queue.concat(args); + } +} + +exports.Multi = Multi; + +// take 2 arrays and return the union of their elements +function set_union(seta, setb) { + var obj = {}; + + seta.forEach(function (val) { + obj[val] = true; + }); + setb.forEach(function (val) { + obj[val] = true; + }); + return Object.keys(obj); +} + +// This static list of commands is updated from time to time. ./lib/commands.js can be updated with generate_commands.js +commands = set_union(["get", "set", "setnx", "setex", "append", "strlen", "del", "exists", "setbit", "getbit", "setrange", "getrange", "substr", + "incr", "decr", "mget", "rpush", "lpush", "rpushx", "lpushx", "linsert", "rpop", "lpop", "brpop", "brpoplpush", "blpop", "llen", "lindex", + "lset", "lrange", "ltrim", "lrem", "rpoplpush", "sadd", "srem", "smove", "sismember", "scard", "spop", "srandmember", "sinter", "sinterstore", + "sunion", "sunionstore", "sdiff", "sdiffstore", "smembers", "zadd", "zincrby", "zrem", "zremrangebyscore", "zremrangebyrank", "zunionstore", + "zinterstore", "zrange", "zrangebyscore", "zrevrangebyscore", "zcount", "zrevrange", "zcard", "zscore", "zrank", "zrevrank", "hset", "hsetnx", + "hget", "hmset", "hmget", "hincrby", "hdel", "hlen", "hkeys", "hvals", "hgetall", "hexists", "incrby", "decrby", "getset", "mset", "msetnx", + "randomkey", "select", "move", "rename", "renamenx", "expire", "expireat", "keys", "dbsize", "auth", "ping", "echo", "save", "bgsave", + "bgrewriteaof", "shutdown", "lastsave", "type", "multi", "exec", "discard", "sync", "flushdb", "flushall", "sort", "info", "monitor", "ttl", + "persist", "slaveof", "debug", "config", "subscribe", "unsubscribe", "psubscribe", "punsubscribe", "publish", "watch", "unwatch", "cluster", + "restore", "migrate", "dump", "object", "client", "eval", "evalsha"], require("./lib/commands")); + +commands.forEach(function (command) { + RedisClient.prototype[command] = function (args, callback) { + if (Array.isArray(args) && typeof callback === "function") { + return this.send_command(command, args, callback); + } else { + return this.send_command(command, to_array(arguments)); + } + }; + RedisClient.prototype[command.toUpperCase()] = RedisClient.prototype[command]; + + Multi.prototype[command] = function () { + this.queue.push([command].concat(to_array(arguments))); + return this; + }; + Multi.prototype[command.toUpperCase()] = Multi.prototype[command]; +}); + +// store db in this.select_db to restore it on reconnect +RedisClient.prototype.select = function (db, callback) { + var self = this; + + this.send_command('select', [db], function (err, res) { + if (err === null) { + self.selected_db = db; + } + if (typeof(callback) === 'function') { + callback(err, res); + } + }); +}; +RedisClient.prototype.SELECT = RedisClient.prototype.select; + +// Stash auth for connect and reconnect. Send immediately if already connected. +RedisClient.prototype.auth = function () { + var args = to_array(arguments); + this.auth_pass = args[0]; + this.auth_callback = args[1]; + if (exports.debug_mode) { + console.log("Saving auth as " + this.auth_pass); + } + + if (this.connected) { + this.send_command("auth", args); + } +}; +RedisClient.prototype.AUTH = RedisClient.prototype.auth; + +RedisClient.prototype.hmget = function (arg1, arg2, arg3) { + if (Array.isArray(arg2) && typeof arg3 === "function") { + return this.send_command("hmget", [arg1].concat(arg2), arg3); + } else if (Array.isArray(arg1) && typeof arg2 === "function") { + return this.send_command("hmget", arg1, arg2); + } else { + return this.send_command("hmget", to_array(arguments)); + } +}; +RedisClient.prototype.HMGET = RedisClient.prototype.hmget; + +RedisClient.prototype.hmset = function (args, callback) { + var tmp_args, tmp_keys, i, il, key; + + if (Array.isArray(args) && typeof callback === "function") { + return this.send_command("hmset", args, callback); + } + + args = to_array(arguments); + if (typeof args[args.length - 1] === "function") { + callback = args[args.length - 1]; + args.length -= 1; + } else { + callback = null; + } + + if (args.length === 2 && typeof args[0] === "string" && typeof args[1] === "object") { + // User does: client.hmset(key, {key1: val1, key2: val2}) + tmp_args = [ args[0] ]; + tmp_keys = Object.keys(args[1]); + for (i = 0, il = tmp_keys.length; i < il ; i++) { + key = tmp_keys[i]; + tmp_args.push(key); + if (typeof args[1][key] !== "string") { + var err = new Error("hmset expected value to be a string", key, ":", args[1][key]); + if (callback) return callback(err); + else throw err; + } + tmp_args.push(args[1][key]); + } + args = tmp_args; + } + + return this.send_command("hmset", args, callback); +}; +RedisClient.prototype.HMSET = RedisClient.prototype.hmset; + +Multi.prototype.hmset = function () { + var args = to_array(arguments), tmp_args; + if (args.length >= 2 && typeof args[0] === "string" && typeof args[1] === "object") { + tmp_args = [ "hmset", args[0] ]; + Object.keys(args[1]).map(function (key) { + tmp_args.push(key); + tmp_args.push(args[1][key]); + }); + if (args[2]) { + tmp_args.push(args[2]); + } + args = tmp_args; + } else { + args.unshift("hmset"); + } + + this.queue.push(args); + return this; +}; +Multi.prototype.HMSET = Multi.prototype.hmset; + +Multi.prototype.exec = function (callback) { + var self = this; + + // drain queue, callback will catch "QUEUED" or error + // TODO - get rid of all of these anonymous functions which are elegant but slow + this.queue.forEach(function (args, index) { + var command = args[0], obj; + if (typeof args[args.length - 1] === "function") { + args = args.slice(1, -1); + } else { + args = args.slice(1); + } + if (args.length === 1 && Array.isArray(args[0])) { + args = args[0]; + } + if (command.toLowerCase() === 'hmset' && typeof args[1] === 'object') { + obj = args.pop(); + Object.keys(obj).forEach(function (key) { + args.push(key); + args.push(obj[key]); + }); + } + this.client.send_command(command, args, function (err, reply) { + if (err) { + var cur = self.queue[index]; + if (typeof cur[cur.length - 1] === "function") { + cur[cur.length - 1](err); + } else { + throw new Error(err); + } + self.queue.splice(index, 1); + } + }); + }, this); + + // TODO - make this callback part of Multi.prototype instead of creating it each time + return this.client.send_command("EXEC", [], function (err, replies) { + if (err) { + if (callback) { + callback(new Error(err)); + return; + } else { + throw new Error(err); + } + } + + var i, il, j, jl, reply, args; + + if (replies) { + for (i = 1, il = self.queue.length; i < il; i += 1) { + reply = replies[i - 1]; + args = self.queue[i]; + + // TODO - confusing and error-prone that hgetall is special cased in two places + if (reply && args[0].toLowerCase() === "hgetall") { + replies[i - 1] = reply = reply_to_object(reply); + } + + if (typeof args[args.length - 1] === "function") { + args[args.length - 1](null, reply); + } + } + } + + if (callback) { + callback(null, replies); + } + }); +}; +Multi.prototype.EXEC = Multi.prototype.exec; + +RedisClient.prototype.multi = function (args) { + return new Multi(this, args); +}; +RedisClient.prototype.MULTI = function (args) { + return new Multi(this, args); +}; + + +// stash original eval method +var eval = RedisClient.prototype.eval; +// hook eval with an attempt to evalsha for cached scripts +RedisClient.prototype.eval = +RedisClient.prototype.EVAL = function () { + var self = this, + args = to_array(arguments), + callback; + + if (typeof args[args.length - 1] === "function") { + callback = args.pop(); + } + + // replace script source with sha value + var source = args[0]; + args[0] = crypto.createHash("sha1").update(source).digest("hex"); + + self.evalsha(args, function (err, reply) { + if (err && /NOSCRIPT/.test(err.message)) { + args[0] = source; + eval.call(self, args, callback); + + } else if (callback) { + callback(err, reply); + } + }); +}; + + +exports.createClient = function (port_arg, host_arg, options) { + var port = port_arg || default_port, + host = host_arg || default_host, + redis_client, net_client; + + net_client = net.createConnection(port, host); + + redis_client = new RedisClient(net_client, options); + + redis_client.port = port; + redis_client.host = host; + + return redis_client; +}; + +exports.print = function (err, reply) { + if (err) { + console.log("Error: " + err); + } else { + console.log("Reply: " + reply); + } +}; diff --git a/node_modules/socket.io/node_modules/redis/lib/commands.js b/node_modules/socket.io/node_modules/redis/lib/commands.js new file mode 100644 index 0000000..f57cca9 --- /dev/null +++ b/node_modules/socket.io/node_modules/redis/lib/commands.js @@ -0,0 +1,147 @@ +// This file was generated by ./generate_commands.js on Mon Aug 06 2012 15:04:06 GMT-0700 (PDT) +module.exports = [ + "append", + "auth", + "bgrewriteaof", + "bgsave", + "bitcount", + "bitop", + "blpop", + "brpop", + "brpoplpush", + "client kill", + "client list", + "config get", + "config set", + "config resetstat", + "dbsize", + "debug object", + "debug segfault", + "decr", + "decrby", + "del", + "discard", + "dump", + "echo", + "eval", + "evalsha", + "exec", + "exists", + "expire", + "expireat", + "flushall", + "flushdb", + "get", + "getbit", + "getrange", + "getset", + "hdel", + "hexists", + "hget", + "hgetall", + "hincrby", + "hincrbyfloat", + "hkeys", + "hlen", + "hmget", + "hmset", + "hset", + "hsetnx", + "hvals", + "incr", + "incrby", + "incrbyfloat", + "info", + "keys", + "lastsave", + "lindex", + "linsert", + "llen", + "lpop", + "lpush", + "lpushx", + "lrange", + "lrem", + "lset", + "ltrim", + "mget", + "migrate", + "monitor", + "move", + "mset", + "msetnx", + "multi", + "object", + "persist", + "pexpire", + "pexpireat", + "ping", + "psetex", + "psubscribe", + "pttl", + "publish", + "punsubscribe", + "quit", + "randomkey", + "rename", + "renamenx", + "restore", + "rpop", + "rpoplpush", + "rpush", + "rpushx", + "sadd", + "save", + "scard", + "script exists", + "script flush", + "script kill", + "script load", + "sdiff", + "sdiffstore", + "select", + "set", + "setbit", + "setex", + "setnx", + "setrange", + "shutdown", + "sinter", + "sinterstore", + "sismember", + "slaveof", + "slowlog", + "smembers", + "smove", + "sort", + "spop", + "srandmember", + "srem", + "strlen", + "subscribe", + "sunion", + "sunionstore", + "sync", + "time", + "ttl", + "type", + "unsubscribe", + "unwatch", + "watch", + "zadd", + "zcard", + "zcount", + "zincrby", + "zinterstore", + "zrange", + "zrangebyscore", + "zrank", + "zrem", + "zremrangebyrank", + "zremrangebyscore", + "zrevrange", + "zrevrangebyscore", + "zrevrank", + "zscore", + "zunionstore" +]; diff --git a/node_modules/socket.io/node_modules/redis/lib/parser/hiredis.js b/node_modules/socket.io/node_modules/redis/lib/parser/hiredis.js new file mode 100644 index 0000000..cbb15ba --- /dev/null +++ b/node_modules/socket.io/node_modules/redis/lib/parser/hiredis.js @@ -0,0 +1,46 @@ +/*global Buffer require exports console setTimeout */ + +var events = require("events"), + util = require("../util"), + hiredis = require("hiredis"); + +exports.debug_mode = false; +exports.name = "hiredis"; + +function HiredisReplyParser(options) { + this.name = exports.name; + this.options = options || {}; + this.reset(); + events.EventEmitter.call(this); +} + +util.inherits(HiredisReplyParser, events.EventEmitter); + +exports.Parser = HiredisReplyParser; + +HiredisReplyParser.prototype.reset = function () { + this.reader = new hiredis.Reader({ + return_buffers: this.options.return_buffers || false + }); +}; + +HiredisReplyParser.prototype.execute = function (data) { + var reply; + this.reader.feed(data); + while (true) { + try { + reply = this.reader.get(); + } catch (err) { + this.emit("error", err); + break; + } + + if (reply === undefined) break; + + if (reply && reply.constructor === Error) { + this.emit("reply error", reply); + } else { + this.emit("reply", reply); + } + } +}; diff --git a/node_modules/socket.io/node_modules/redis/lib/parser/javascript.js b/node_modules/socket.io/node_modules/redis/lib/parser/javascript.js new file mode 100644 index 0000000..b8f5bc6 --- /dev/null +++ b/node_modules/socket.io/node_modules/redis/lib/parser/javascript.js @@ -0,0 +1,317 @@ +/*global Buffer require exports console setTimeout */ + +// TODO - incorporate these V8 pro tips: +// pre-allocate Arrays if length is known in advance +// do not use delete +// use numbers for parser state + +var events = require("events"), + util = require("../util"); + +exports.debug_mode = false; +exports.name = "javascript"; + +function RedisReplyParser(options) { + this.name = exports.name; + this.options = options || {}; + this.reset(); + events.EventEmitter.call(this); +} + +util.inherits(RedisReplyParser, events.EventEmitter); + +exports.Parser = RedisReplyParser; + +// Buffer.toString() is quite slow for small strings +function small_toString(buf, len) { + var tmp = "", i; + + for (i = 0; i < len; i += 1) { + tmp += String.fromCharCode(buf[i]); + } + + return tmp; +} + +// Reset parser to it's original state. +RedisReplyParser.prototype.reset = function () { + this.return_buffer = new Buffer(16384); // for holding replies, might grow + this.return_string = ""; + this.tmp_string = ""; // for holding size fields + + this.multi_bulk_length = 0; + this.multi_bulk_replies = null; + this.multi_bulk_pos = 0; + this.multi_bulk_nested_length = 0; + this.multi_bulk_nested_replies = null; + + this.states = { + TYPE: 1, + SINGLE_LINE: 2, + MULTI_BULK_COUNT: 3, + INTEGER_LINE: 4, + BULK_LENGTH: 5, + ERROR_LINE: 6, + BULK_DATA: 7, + UNKNOWN_TYPE: 8, + FINAL_CR: 9, + FINAL_LF: 10, + MULTI_BULK_COUNT_LF: 11, + BULK_LF: 12 + }; + + this.state = this.states.TYPE; +}; + +RedisReplyParser.prototype.parser_error = function (message) { + this.emit("error", message); + this.reset(); +}; + +RedisReplyParser.prototype.execute = function (incoming_buf) { + var pos = 0, bd_tmp, bd_str, i, il, states = this.states; + //, state_times = {}, start_execute = new Date(), start_switch, end_switch, old_state; + //start_switch = new Date(); + + while (pos < incoming_buf.length) { + // old_state = this.state; + // console.log("execute: " + this.state + ", " + pos + "/" + incoming_buf.length + ", " + String.fromCharCode(incoming_buf[pos])); + + switch (this.state) { + case 1: // states.TYPE + this.type = incoming_buf[pos]; + pos += 1; + + switch (this.type) { + case 43: // + + this.state = states.SINGLE_LINE; + this.return_buffer.end = 0; + this.return_string = ""; + break; + case 42: // * + this.state = states.MULTI_BULK_COUNT; + this.tmp_string = ""; + break; + case 58: // : + this.state = states.INTEGER_LINE; + this.return_buffer.end = 0; + this.return_string = ""; + break; + case 36: // $ + this.state = states.BULK_LENGTH; + this.tmp_string = ""; + break; + case 45: // - + this.state = states.ERROR_LINE; + this.return_buffer.end = 0; + this.return_string = ""; + break; + default: + this.state = states.UNKNOWN_TYPE; + } + break; + case 4: // states.INTEGER_LINE + if (incoming_buf[pos] === 13) { + this.send_reply(+small_toString(this.return_buffer, this.return_buffer.end)); + this.state = states.FINAL_LF; + } else { + this.return_buffer[this.return_buffer.end] = incoming_buf[pos]; + this.return_buffer.end += 1; + } + pos += 1; + break; + case 6: // states.ERROR_LINE + if (incoming_buf[pos] === 13) { + this.send_error(this.return_buffer.toString("ascii", 0, this.return_buffer.end)); + this.state = states.FINAL_LF; + } else { + this.return_buffer[this.return_buffer.end] = incoming_buf[pos]; + this.return_buffer.end += 1; + } + pos += 1; + break; + case 2: // states.SINGLE_LINE + if (incoming_buf[pos] === 13) { + this.send_reply(this.return_string); + this.state = states.FINAL_LF; + } else { + this.return_string += String.fromCharCode(incoming_buf[pos]); + } + pos += 1; + break; + case 3: // states.MULTI_BULK_COUNT + if (incoming_buf[pos] === 13) { // \r + this.state = states.MULTI_BULK_COUNT_LF; + } else { + this.tmp_string += String.fromCharCode(incoming_buf[pos]); + } + pos += 1; + break; + case 11: // states.MULTI_BULK_COUNT_LF + if (incoming_buf[pos] === 10) { // \n + if (this.multi_bulk_length) { // nested multi-bulk + this.multi_bulk_nested_length = this.multi_bulk_length; + this.multi_bulk_nested_replies = this.multi_bulk_replies; + this.multi_bulk_nested_pos = this.multi_bulk_pos; + } + this.multi_bulk_length = +this.tmp_string; + this.multi_bulk_pos = 0; + this.state = states.TYPE; + if (this.multi_bulk_length < 0) { + this.send_reply(null); + this.multi_bulk_length = 0; + } else if (this.multi_bulk_length === 0) { + this.multi_bulk_pos = 0; + this.multi_bulk_replies = null; + this.send_reply([]); + } else { + this.multi_bulk_replies = new Array(this.multi_bulk_length); + } + } else { + this.parser_error(new Error("didn't see LF after NL reading multi bulk count")); + return; + } + pos += 1; + break; + case 5: // states.BULK_LENGTH + if (incoming_buf[pos] === 13) { // \r + this.state = states.BULK_LF; + } else { + this.tmp_string += String.fromCharCode(incoming_buf[pos]); + } + pos += 1; + break; + case 12: // states.BULK_LF + if (incoming_buf[pos] === 10) { // \n + this.bulk_length = +this.tmp_string; + if (this.bulk_length === -1) { + this.send_reply(null); + this.state = states.TYPE; + } else if (this.bulk_length === 0) { + this.send_reply(new Buffer("")); + this.state = states.FINAL_CR; + } else { + this.state = states.BULK_DATA; + if (this.bulk_length > this.return_buffer.length) { + if (exports.debug_mode) { + console.log("Growing return_buffer from " + this.return_buffer.length + " to " + this.bulk_length); + } + this.return_buffer = new Buffer(this.bulk_length); + } + this.return_buffer.end = 0; + } + } else { + this.parser_error(new Error("didn't see LF after NL while reading bulk length")); + return; + } + pos += 1; + break; + case 7: // states.BULK_DATA + this.return_buffer[this.return_buffer.end] = incoming_buf[pos]; + this.return_buffer.end += 1; + pos += 1; + if (this.return_buffer.end === this.bulk_length) { + bd_tmp = new Buffer(this.bulk_length); + // When the response is small, Buffer.copy() is a lot slower. + if (this.bulk_length > 10) { + this.return_buffer.copy(bd_tmp, 0, 0, this.bulk_length); + } else { + for (i = 0, il = this.bulk_length; i < il; i += 1) { + bd_tmp[i] = this.return_buffer[i]; + } + } + this.send_reply(bd_tmp); + this.state = states.FINAL_CR; + } + break; + case 9: // states.FINAL_CR + if (incoming_buf[pos] === 13) { // \r + this.state = states.FINAL_LF; + pos += 1; + } else { + this.parser_error(new Error("saw " + incoming_buf[pos] + " when expecting final CR")); + return; + } + break; + case 10: // states.FINAL_LF + if (incoming_buf[pos] === 10) { // \n + this.state = states.TYPE; + pos += 1; + } else { + this.parser_error(new Error("saw " + incoming_buf[pos] + " when expecting final LF")); + return; + } + break; + default: + this.parser_error(new Error("invalid state " + this.state)); + } + // end_switch = new Date(); + // if (state_times[old_state] === undefined) { + // state_times[old_state] = 0; + // } + // state_times[old_state] += (end_switch - start_switch); + // start_switch = end_switch; + } + // console.log("execute ran for " + (Date.now() - start_execute) + " ms, on " + incoming_buf.length + " Bytes. "); + // Object.keys(state_times).forEach(function (state) { + // console.log(" " + state + ": " + state_times[state]); + // }); +}; + +RedisReplyParser.prototype.send_error = function (reply) { + if (this.multi_bulk_length > 0 || this.multi_bulk_nested_length > 0) { + // TODO - can this happen? Seems like maybe not. + this.add_multi_bulk_reply(reply); + } else { + this.emit("reply error", reply); + } +}; + +RedisReplyParser.prototype.send_reply = function (reply) { + if (this.multi_bulk_length > 0 || this.multi_bulk_nested_length > 0) { + if (!this.options.return_buffers && Buffer.isBuffer(reply)) { + this.add_multi_bulk_reply(reply.toString("utf8")); + } else { + this.add_multi_bulk_reply(reply); + } + } else { + if (!this.options.return_buffers && Buffer.isBuffer(reply)) { + this.emit("reply", reply.toString("utf8")); + } else { + this.emit("reply", reply); + } + } +}; + +RedisReplyParser.prototype.add_multi_bulk_reply = function (reply) { + if (this.multi_bulk_replies) { + this.multi_bulk_replies[this.multi_bulk_pos] = reply; + this.multi_bulk_pos += 1; + if (this.multi_bulk_pos < this.multi_bulk_length) { + return; + } + } else { + this.multi_bulk_replies = reply; + } + + if (this.multi_bulk_nested_length > 0) { + this.multi_bulk_nested_replies[this.multi_bulk_nested_pos] = this.multi_bulk_replies; + this.multi_bulk_nested_pos += 1; + + this.multi_bulk_length = 0; + this.multi_bulk_replies = null; + this.multi_bulk_pos = 0; + + if (this.multi_bulk_nested_length === this.multi_bulk_nested_pos) { + this.emit("reply", this.multi_bulk_nested_replies); + this.multi_bulk_nested_length = 0; + this.multi_bulk_nested_pos = 0; + this.multi_bulk_nested_replies = null; + } + } else { + this.emit("reply", this.multi_bulk_replies); + this.multi_bulk_length = 0; + this.multi_bulk_replies = null; + this.multi_bulk_pos = 0; + } +}; diff --git a/node_modules/socket.io/node_modules/redis/lib/queue.js b/node_modules/socket.io/node_modules/redis/lib/queue.js new file mode 100644 index 0000000..56254e1 --- /dev/null +++ b/node_modules/socket.io/node_modules/redis/lib/queue.js @@ -0,0 +1,61 @@ +var to_array = require("./to_array"); + +// Queue class adapted from Tim Caswell's pattern library +// http://github.com/creationix/pattern/blob/master/lib/pattern/queue.js + +function Queue() { + this.tail = []; + this.head = []; + this.offset = 0; +} + +Queue.prototype.shift = function () { + if (this.offset === this.head.length) { + var tmp = this.head; + tmp.length = 0; + this.head = this.tail; + this.tail = tmp; + this.offset = 0; + if (this.head.length === 0) { + return; + } + } + return this.head[this.offset++]; // sorry, JSLint +}; + +Queue.prototype.push = function (item) { + return this.tail.push(item); +}; + +Queue.prototype.forEach = function (fn, thisv) { + var array = this.head.slice(this.offset), i, il; + + array.push.apply(array, this.tail); + + if (thisv) { + for (i = 0, il = array.length; i < il; i += 1) { + fn.call(thisv, array[i], i, array); + } + } else { + for (i = 0, il = array.length; i < il; i += 1) { + fn(array[i], i, array); + } + } + + return array; +}; + +Queue.prototype.getLength = function () { + return this.head.length - this.offset + this.tail.length; +}; + +Object.defineProperty(Queue.prototype, 'length', { + get: function () { + return this.getLength(); + } +}); + + +if(typeof module !== 'undefined' && module.exports) { + module.exports = Queue; +} diff --git a/node_modules/socket.io/node_modules/redis/lib/to_array.js b/node_modules/socket.io/node_modules/redis/lib/to_array.js new file mode 100644 index 0000000..88a57e1 --- /dev/null +++ b/node_modules/socket.io/node_modules/redis/lib/to_array.js @@ -0,0 +1,12 @@ +function to_array(args) { + var len = args.length, + arr = new Array(len), i; + + for (i = 0; i < len; i += 1) { + arr[i] = args[i]; + } + + return arr; +} + +module.exports = to_array; diff --git a/node_modules/socket.io/node_modules/redis/lib/util.js b/node_modules/socket.io/node_modules/redis/lib/util.js new file mode 100644 index 0000000..fc255ae --- /dev/null +++ b/node_modules/socket.io/node_modules/redis/lib/util.js @@ -0,0 +1,11 @@ +// Support for very old versions of node where the module was called "sys". At some point, we should abandon this. + +var util; + +try { + util = require("util"); +} catch (err) { + util = require("sys"); +} + +module.exports = util; diff --git a/node_modules/socket.io/node_modules/redis/mem.js b/node_modules/socket.io/node_modules/redis/mem.js new file mode 100644 index 0000000..5144ab2 --- /dev/null +++ b/node_modules/socket.io/node_modules/redis/mem.js @@ -0,0 +1,11 @@ +var client = require("redis").createClient(); + +client.set("foo", "barvalskdjlksdjflkdsjflksdjdflkdsjflksdjflksdj", function (err, res) { + if (err) { + console.log("Got an error, please adapt somehow."); + } else { + console.log("Got a result: " + res); + } +}); + +client.quit(); diff --git a/node_modules/socket.io/node_modules/redis/multi_bench.js b/node_modules/socket.io/node_modules/redis/multi_bench.js new file mode 100644 index 0000000..5be2e56 --- /dev/null +++ b/node_modules/socket.io/node_modules/redis/multi_bench.js @@ -0,0 +1,225 @@ +var redis = require("./index"), + metrics = require("metrics"), + num_clients = parseInt(process.argv[2], 10) || 5, + num_requests = 20000, + tests = [], + versions_logged = false, + client_options = { + return_buffers: false + }, + small_str, large_str, small_buf, large_buf; + +redis.debug_mode = false; + +function lpad(input, len, chr) { + var str = input.toString(); + chr = chr || " "; + + while (str.length < len) { + str = chr + str; + } + return str; +} + +metrics.Histogram.prototype.print_line = function () { + var obj = this.printObj(); + + return lpad(obj.min, 4) + "/" + lpad(obj.max, 4) + "/" + lpad(obj.mean.toFixed(2), 7) + "/" + lpad(obj.p95.toFixed(2), 7); +}; + +function Test(args) { + var self = this; + + this.args = args; + + this.callback = null; + this.clients = []; + this.clients_ready = 0; + this.commands_sent = 0; + this.commands_completed = 0; + this.max_pipeline = this.args.pipeline || num_requests; + this.client_options = args.client_options || client_options; + + this.connect_latency = new metrics.Histogram(); + this.ready_latency = new metrics.Histogram(); + this.command_latency = new metrics.Histogram(); +} + +Test.prototype.run = function (callback) { + var self = this, i; + + this.callback = callback; + + for (i = 0; i < num_clients ; i++) { + this.new_client(i); + } +}; + +Test.prototype.new_client = function (id) { + var self = this, new_client; + + new_client = redis.createClient(6379, "127.0.0.1", this.client_options); + new_client.create_time = Date.now(); + + new_client.on("connect", function () { + self.connect_latency.update(Date.now() - new_client.create_time); + }); + + new_client.on("ready", function () { + if (! versions_logged) { + console.log("Client count: " + num_clients + ", node version: " + process.versions.node + ", server version: " + + new_client.server_info.redis_version + ", parser: " + new_client.reply_parser.name); + versions_logged = true; + } + self.ready_latency.update(Date.now() - new_client.create_time); + self.clients_ready++; + if (self.clients_ready === self.clients.length) { + self.on_clients_ready(); + } + }); + + self.clients[id] = new_client; +}; + +Test.prototype.on_clients_ready = function () { + process.stdout.write(lpad(this.args.descr, 13) + ", " + lpad(this.args.pipeline, 5) + "/" + this.clients_ready + " "); + this.test_start = Date.now(); + + this.fill_pipeline(); +}; + +Test.prototype.fill_pipeline = function () { + var pipeline = this.commands_sent - this.commands_completed; + + while (this.commands_sent < num_requests && pipeline < this.max_pipeline) { + this.commands_sent++; + pipeline++; + this.send_next(); + } + + if (this.commands_completed === num_requests) { + this.print_stats(); + this.stop_clients(); + } +}; + +Test.prototype.stop_clients = function () { + var self = this; + + this.clients.forEach(function (client, pos) { + if (pos === self.clients.length - 1) { + client.quit(function (err, res) { + self.callback(); + }); + } else { + client.quit(); + } + }); +}; + +Test.prototype.send_next = function () { + var self = this, + cur_client = this.commands_sent % this.clients.length, + command_num = this.commands_sent, + start = Date.now(); + + this.clients[cur_client][this.args.command](this.args.args, function (err, res) { + if (err) { + throw err; + } + self.commands_completed++; + self.command_latency.update(Date.now() - start); + self.fill_pipeline(); + }); +}; + +Test.prototype.print_stats = function () { + var duration = Date.now() - this.test_start; + + console.log("min/max/avg/p95: " + this.command_latency.print_line() + " " + lpad(duration, 6) + "ms total, " + + lpad((num_requests / (duration / 1000)).toFixed(2), 8) + " ops/sec"); +}; + +small_str = "1234"; +small_buf = new Buffer(small_str); +large_str = (new Array(4097).join("-")); +large_buf = new Buffer(large_str); + +tests.push(new Test({descr: "PING", command: "ping", args: [], pipeline: 1})); +tests.push(new Test({descr: "PING", command: "ping", args: [], pipeline: 50})); +tests.push(new Test({descr: "PING", command: "ping", args: [], pipeline: 200})); +tests.push(new Test({descr: "PING", command: "ping", args: [], pipeline: 20000})); + +tests.push(new Test({descr: "SET small str", command: "set", args: ["foo_rand000000000000", small_str], pipeline: 1})); +tests.push(new Test({descr: "SET small str", command: "set", args: ["foo_rand000000000000", small_str], pipeline: 50})); +tests.push(new Test({descr: "SET small str", command: "set", args: ["foo_rand000000000000", small_str], pipeline: 200})); +tests.push(new Test({descr: "SET small str", command: "set", args: ["foo_rand000000000000", small_str], pipeline: 20000})); + +tests.push(new Test({descr: "SET small buf", command: "set", args: ["foo_rand000000000000", small_buf], pipeline: 1})); +tests.push(new Test({descr: "SET small buf", command: "set", args: ["foo_rand000000000000", small_buf], pipeline: 50})); +tests.push(new Test({descr: "SET small buf", command: "set", args: ["foo_rand000000000000", small_buf], pipeline: 200})); +tests.push(new Test({descr: "SET small buf", command: "set", args: ["foo_rand000000000000", small_buf], pipeline: 20000})); + +tests.push(new Test({descr: "GET small str", command: "get", args: ["foo_rand000000000000"], pipeline: 1})); +tests.push(new Test({descr: "GET small str", command: "get", args: ["foo_rand000000000000"], pipeline: 50})); +tests.push(new Test({descr: "GET small str", command: "get", args: ["foo_rand000000000000"], pipeline: 200})); +tests.push(new Test({descr: "GET small str", command: "get", args: ["foo_rand000000000000"], pipeline: 20000})); + +tests.push(new Test({descr: "GET small buf", command: "get", args: ["foo_rand000000000000"], pipeline: 1, client_opts: { return_buffers: true} })); +tests.push(new Test({descr: "GET small buf", command: "get", args: ["foo_rand000000000000"], pipeline: 50, client_opts: { return_buffers: true} })); +tests.push(new Test({descr: "GET small buf", command: "get", args: ["foo_rand000000000000"], pipeline: 200, client_opts: { return_buffers: true} })); +tests.push(new Test({descr: "GET small buf", command: "get", args: ["foo_rand000000000000"], pipeline: 20000, client_opts: { return_buffers: true} })); + +tests.push(new Test({descr: "SET large str", command: "set", args: ["foo_rand000000000001", large_str], pipeline: 1})); +tests.push(new Test({descr: "SET large str", command: "set", args: ["foo_rand000000000001", large_str], pipeline: 50})); +tests.push(new Test({descr: "SET large str", command: "set", args: ["foo_rand000000000001", large_str], pipeline: 200})); +tests.push(new Test({descr: "SET large str", command: "set", args: ["foo_rand000000000001", large_str], pipeline: 20000})); + +tests.push(new Test({descr: "SET large buf", command: "set", args: ["foo_rand000000000001", large_buf], pipeline: 1})); +tests.push(new Test({descr: "SET large buf", command: "set", args: ["foo_rand000000000001", large_buf], pipeline: 50})); +tests.push(new Test({descr: "SET large buf", command: "set", args: ["foo_rand000000000001", large_buf], pipeline: 200})); +tests.push(new Test({descr: "SET large buf", command: "set", args: ["foo_rand000000000001", large_buf], pipeline: 20000})); + +tests.push(new Test({descr: "GET large str", command: "get", args: ["foo_rand000000000001"], pipeline: 1})); +tests.push(new Test({descr: "GET large str", command: "get", args: ["foo_rand000000000001"], pipeline: 50})); +tests.push(new Test({descr: "GET large str", command: "get", args: ["foo_rand000000000001"], pipeline: 200})); +tests.push(new Test({descr: "GET large str", command: "get", args: ["foo_rand000000000001"], pipeline: 20000})); + +tests.push(new Test({descr: "GET large buf", command: "get", args: ["foo_rand000000000001"], pipeline: 1, client_opts: { return_buffers: true} })); +tests.push(new Test({descr: "GET large buf", command: "get", args: ["foo_rand000000000001"], pipeline: 50, client_opts: { return_buffers: true} })); +tests.push(new Test({descr: "GET large buf", command: "get", args: ["foo_rand000000000001"], pipeline: 200, client_opts: { return_buffers: true} })); +tests.push(new Test({descr: "GET large buf", command: "get", args: ["foo_rand000000000001"], pipeline: 20000, client_opts: { return_buffers: true} })); + +tests.push(new Test({descr: "INCR", command: "incr", args: ["counter_rand000000000000"], pipeline: 1})); +tests.push(new Test({descr: "INCR", command: "incr", args: ["counter_rand000000000000"], pipeline: 50})); +tests.push(new Test({descr: "INCR", command: "incr", args: ["counter_rand000000000000"], pipeline: 200})); +tests.push(new Test({descr: "INCR", command: "incr", args: ["counter_rand000000000000"], pipeline: 20000})); + +tests.push(new Test({descr: "LPUSH", command: "lpush", args: ["mylist", small_str], pipeline: 1})); +tests.push(new Test({descr: "LPUSH", command: "lpush", args: ["mylist", small_str], pipeline: 50})); +tests.push(new Test({descr: "LPUSH", command: "lpush", args: ["mylist", small_str], pipeline: 200})); +tests.push(new Test({descr: "LPUSH", command: "lpush", args: ["mylist", small_str], pipeline: 20000})); + +tests.push(new Test({descr: "LRANGE 10", command: "lrange", args: ["mylist", "0", "9"], pipeline: 1})); +tests.push(new Test({descr: "LRANGE 10", command: "lrange", args: ["mylist", "0", "9"], pipeline: 50})); +tests.push(new Test({descr: "LRANGE 10", command: "lrange", args: ["mylist", "0", "9"], pipeline: 200})); +tests.push(new Test({descr: "LRANGE 10", command: "lrange", args: ["mylist", "0", "9"], pipeline: 20000})); + +tests.push(new Test({descr: "LRANGE 100", command: "lrange", args: ["mylist", "0", "99"], pipeline: 1})); +tests.push(new Test({descr: "LRANGE 100", command: "lrange", args: ["mylist", "0", "99"], pipeline: 50})); +tests.push(new Test({descr: "LRANGE 100", command: "lrange", args: ["mylist", "0", "99"], pipeline: 200})); +tests.push(new Test({descr: "LRANGE 100", command: "lrange", args: ["mylist", "0", "99"], pipeline: 20000})); + +function next() { + var test = tests.shift(); + if (test) { + test.run(function () { + next(); + }); + } else { + console.log("End of tests."); + process.exit(0); + } +} + +next(); diff --git a/node_modules/socket.io/node_modules/redis/package.json b/node_modules/socket.io/node_modules/redis/package.json new file mode 100644 index 0000000..43ead04 --- /dev/null +++ b/node_modules/socket.io/node_modules/redis/package.json @@ -0,0 +1,35 @@ +{ + "name": "redis", + "version": "0.7.3", + "description": "Redis client library", + "author": { + "name": "Matt Ranney", + "email": "mjr@ranney.com" + }, + "maintainers": [ + { + "name": "David Trejo", + "email": "david.daniel.trejo@gmail.com", + "url": "http://dtrejo.com/" + } + ], + "main": "./index.js", + "scripts": { + "test": "node ./test.js" + }, + "devDependencies": { + "metrics": ">=0.1.5" + }, + "repository": { + "type": "git", + "url": "git://github.com/mranney/node_redis.git" + }, + "readme": "redis - a node.js redis client\n===========================\n\nThis is a complete Redis client for node.js. It supports all Redis commands, including many recently added commands like EVAL from\nexperimental Redis server branches.\n\n\nInstall with:\n\n npm install redis\n\nPieter Noordhuis has provided a binding to the official `hiredis` C library, which is non-blocking and fast. To use `hiredis`, do:\n\n npm install hiredis redis\n\nIf `hiredis` is installed, `node_redis` will use it by default. Otherwise, a pure JavaScript parser will be used.\n\nIf you use `hiredis`, be sure to rebuild it whenever you upgrade your version of node. There are mysterious failures that can\nhappen between node and native code modules after a node upgrade.\n\n\n## Usage\n\nSimple example, included as `examples/simple.js`:\n\n```js\n var redis = require(\"redis\"),\n client = redis.createClient();\n\n // if you'd like to select database 3, instead of 0 (default), call\n // client.select(3, function() { /* ... */ });\n\n client.on(\"error\", function (err) {\n console.log(\"Error \" + err);\n });\n\n client.set(\"string key\", \"string val\", redis.print);\n client.hset(\"hash key\", \"hashtest 1\", \"some value\", redis.print);\n client.hset([\"hash key\", \"hashtest 2\", \"some other value\"], redis.print);\n client.hkeys(\"hash key\", function (err, replies) {\n console.log(replies.length + \" replies:\");\n replies.forEach(function (reply, i) {\n console.log(\" \" + i + \": \" + reply);\n });\n client.quit();\n });\n```\n\nThis will display:\n\n mjr:~/work/node_redis (master)$ node example.js\n Reply: OK\n Reply: 0\n Reply: 0\n 2 replies:\n 0: hashtest 1\n 1: hashtest 2\n mjr:~/work/node_redis (master)$\n\n\n## Performance\n\nHere are typical results of `multi_bench.js` which is similar to `redis-benchmark` from the Redis distribution.\nIt uses 50 concurrent connections with no pipelining.\n\nJavaScript parser:\n\n PING: 20000 ops 42283.30 ops/sec 0/5/1.182\n SET: 20000 ops 32948.93 ops/sec 1/7/1.515\n GET: 20000 ops 28694.40 ops/sec 0/9/1.740\n INCR: 20000 ops 39370.08 ops/sec 0/8/1.269\n LPUSH: 20000 ops 36429.87 ops/sec 0/8/1.370\n LRANGE (10 elements): 20000 ops 9891.20 ops/sec 1/9/5.048\n LRANGE (100 elements): 20000 ops 1384.56 ops/sec 10/91/36.072\n\nhiredis parser:\n\n PING: 20000 ops 46189.38 ops/sec 1/4/1.082\n SET: 20000 ops 41237.11 ops/sec 0/6/1.210\n GET: 20000 ops 39682.54 ops/sec 1/7/1.257\n INCR: 20000 ops 40080.16 ops/sec 0/8/1.242\n LPUSH: 20000 ops 41152.26 ops/sec 0/3/1.212\n LRANGE (10 elements): 20000 ops 36563.07 ops/sec 1/8/1.363\n LRANGE (100 elements): 20000 ops 21834.06 ops/sec 0/9/2.287\n\nThe performance of `node_redis` improves dramatically with pipelining, which happens automatically in most normal programs.\n\n\n### Sending Commands\n\nEach Redis command is exposed as a function on the `client` object.\nAll functions take either an `args` Array plus optional `callback` Function or\na variable number of individual arguments followed by an optional callback.\nHere is an example of passing an array of arguments and a callback:\n\n client.mset([\"test keys 1\", \"test val 1\", \"test keys 2\", \"test val 2\"], function (err, res) {});\n\nHere is that same call in the second style:\n\n client.mset(\"test keys 1\", \"test val 1\", \"test keys 2\", \"test val 2\", function (err, res) {});\n\nNote that in either form the `callback` is optional:\n\n client.set(\"some key\", \"some val\");\n client.set([\"some other key\", \"some val\"]);\n\nIf the key is missing, reply will be null (probably):\n\n client.get(\"missingkey\", function(err, reply) {\n // reply is null when the key is missing\n console.log(reply);\n });\n\nFor a list of Redis commands, see [Redis Command Reference](http://redis.io/commands)\n\nThe commands can be specified in uppercase or lowercase for convenience. `client.get()` is the same as `client.GET()`.\n\nMinimal parsing is done on the replies. Commands that return a single line reply return JavaScript Strings,\ninteger replies return JavaScript Numbers, \"bulk\" replies return node Buffers, and \"multi bulk\" replies return a\nJavaScript Array of node Buffers. `HGETALL` returns an Object with Buffers keyed by the hash keys.\n\n# API\n\n## Connection Events\n\n`client` will emit some events about the state of the connection to the Redis server.\n\n### \"ready\"\n\n`client` will emit `ready` a connection is established to the Redis server and the server reports\nthat it is ready to receive commands. Commands issued before the `ready` event are queued,\nthen replayed just before this event is emitted.\n\n### \"connect\"\n\n`client` will emit `connect` at the same time as it emits `ready` unless `client.options.no_ready_check`\nis set. If this options is set, `connect` will be emitted when the stream is connected, and then\nyou are free to try to send commands.\n\n### \"error\"\n\n`client` will emit `error` when encountering an error connecting to the Redis server.\n\nNote that \"error\" is a special event type in node. If there are no listeners for an\n\"error\" event, node will exit. This is usually what you want, but it can lead to some\ncryptic error messages like this:\n\n mjr:~/work/node_redis (master)$ node example.js\n\n node.js:50\n throw e;\n ^\n Error: ECONNREFUSED, Connection refused\n at IOWatcher.callback (net:870:22)\n at node.js:607:9\n\nNot very useful in diagnosing the problem, but if your program isn't ready to handle this,\nit is probably the right thing to just exit.\n\n`client` will also emit `error` if an exception is thrown inside of `node_redis` for whatever reason.\nIt would be nice to distinguish these two cases.\n\n### \"end\"\n\n`client` will emit `end` when an established Redis server connection has closed.\n\n### \"drain\"\n\n`client` will emit `drain` when the TCP connection to the Redis server has been buffering, but is now\nwritable. This event can be used to stream commands in to Redis and adapt to backpressure. Right now,\nyou need to check `client.command_queue.length` to decide when to reduce your send rate. Then you can\nresume sending when you get `drain`.\n\n### \"idle\"\n\n`client` will emit `idle` when there are no outstanding commands that are awaiting a response.\n\n## redis.createClient(port, host, options)\n\nCreate a new client connection. `port` defaults to `6379` and `host` defaults\nto `127.0.0.1`. If you have `redis-server` running on the same computer as node, then the defaults for\nport and host are probably fine. `options` in an object with the following possible properties:\n\n* `parser`: which Redis protocol reply parser to use. Defaults to `hiredis` if that module is installed.\nThis may also be set to `javascript`.\n* `return_buffers`: defaults to `false`. If set to `true`, then all replies will be sent to callbacks as node Buffer\nobjects instead of JavaScript Strings.\n* `detect_buffers`: default to `false`. If set to `true`, then replies will be sent to callbacks as node Buffer objects\nif any of the input arguments to the original command were Buffer objects.\nThis option lets you switch between Buffers and Strings on a per-command basis, whereas `return_buffers` applies to\nevery command on a client.\n* `socket_nodelay`: defaults to `true`. Whether to call setNoDelay() on the TCP stream, which disables the\nNagle algorithm on the underlying socket. Setting this option to `false` can result in additional throughput at the\ncost of more latency. Most applications will want this set to `true`.\n* `no_ready_check`: defaults to `false`. When a connection is established to the Redis server, the server might still\nbe loading the database from disk. While loading, the server not respond to any commands. To work around this,\n`node_redis` has a \"ready check\" which sends the `INFO` command to the server. The response from the `INFO` command\nindicates whether the server is ready for more commands. When ready, `node_redis` emits a `ready` event.\nSetting `no_ready_check` to `true` will inhibit this check.\n* `enable_offline_queue`: defaults to `true`. By default, if there is no active\nconnection to the redis server, commands are added to a queue and are executed\nonce the connection has been established. Setting `enable_offline_queue` to\n`false` will disable this feature and the callback will be execute immediately\nwith an error, or an error will be thrown if no callback is specified.\n\n```js\n var redis = require(\"redis\"),\n client = redis.createClient(null, null, {detect_buffers: true});\n\n client.set(\"foo_rand000000000000\", \"OK\");\n\n // This will return a JavaScript String\n client.get(\"foo_rand000000000000\", function (err, reply) {\n console.log(reply.toString()); // Will print `OK`\n });\n\n // This will return a Buffer since original key is specified as a Buffer\n client.get(new Buffer(\"foo_rand000000000000\"), function (err, reply) {\n console.log(reply.toString()); // Will print ``\n });\n client.end();\n```\n\n`createClient()` returns a `RedisClient` object that is named `client` in all of the examples here.\n\n## client.auth(password, callback)\n\nWhen connecting to Redis servers that require authentication, the `AUTH` command must be sent as the\nfirst command after connecting. This can be tricky to coordinate with reconnections, the ready check,\netc. To make this easier, `client.auth()` stashes `password` and will send it after each connection,\nincluding reconnections. `callback` is invoked only once, after the response to the very first\n`AUTH` command sent.\nNOTE: Your call to `client.auth()` should not be inside the ready handler. If\nyou are doing this wrong, `client` will emit an error that looks\nsomething like this `Error: Ready check failed: ERR operation not permitted`.\n\n## client.end()\n\nForcibly close the connection to the Redis server. Note that this does not wait until all replies have been parsed.\nIf you want to exit cleanly, call `client.quit()` to send the `QUIT` command after you have handled all replies.\n\nThis example closes the connection to the Redis server before the replies have been read. You probably don't\nwant to do this:\n\n```js\n var redis = require(\"redis\"),\n client = redis.createClient();\n\n client.set(\"foo_rand000000000000\", \"some fantastic value\");\n client.get(\"foo_rand000000000000\", function (err, reply) {\n console.log(reply.toString());\n });\n client.end();\n```\n\n`client.end()` is useful for timeout cases where something is stuck or taking too long and you want\nto start over.\n\n## Friendlier hash commands\n\nMost Redis commands take a single String or an Array of Strings as arguments, and replies are sent back as a single String or an Array of Strings.\nWhen dealing with hash values, there are a couple of useful exceptions to this.\n\n### client.hgetall(hash)\n\nThe reply from an HGETALL command will be converted into a JavaScript Object by `node_redis`. That way you can interact\nwith the responses using JavaScript syntax.\n\nExample:\n\n client.hmset(\"hosts\", \"mjr\", \"1\", \"another\", \"23\", \"home\", \"1234\");\n client.hgetall(\"hosts\", function (err, obj) {\n console.dir(obj);\n });\n\nOutput:\n\n { mjr: '1', another: '23', home: '1234' }\n\n### client.hmset(hash, obj, [callback])\n\nMultiple values in a hash can be set by supplying an object:\n\n client.HMSET(key2, {\n \"0123456789\": \"abcdefghij\", // NOTE: the key and value must both be strings\n \"some manner of key\": \"a type of value\"\n });\n\nThe properties and values of this Object will be set as keys and values in the Redis hash.\n\n### client.hmset(hash, key1, val1, ... keyn, valn, [callback])\n\nMultiple values may also be set by supplying a list:\n\n client.HMSET(key1, \"0123456789\", \"abcdefghij\", \"some manner of key\", \"a type of value\");\n\n\n## Publish / Subscribe\n\nHere is a simple example of the API for publish / subscribe. This program opens two\nclient connections, subscribes to a channel on one of them, and publishes to that\nchannel on the other:\n\n```js\n var redis = require(\"redis\"),\n client1 = redis.createClient(), client2 = redis.createClient(),\n msg_count = 0;\n\n client1.on(\"subscribe\", function (channel, count) {\n client2.publish(\"a nice channel\", \"I am sending a message.\");\n client2.publish(\"a nice channel\", \"I am sending a second message.\");\n client2.publish(\"a nice channel\", \"I am sending my last message.\");\n });\n\n client1.on(\"message\", function (channel, message) {\n console.log(\"client1 channel \" + channel + \": \" + message);\n msg_count += 1;\n if (msg_count === 3) {\n client1.unsubscribe();\n client1.end();\n client2.end();\n }\n });\n\n client1.incr(\"did a thing\");\n client1.subscribe(\"a nice channel\");\n```\n\nWhen a client issues a `SUBSCRIBE` or `PSUBSCRIBE`, that connection is put into \"pub/sub\" mode.\nAt that point, only commands that modify the subscription set are valid. When the subscription\nset is empty, the connection is put back into regular mode.\n\nIf you need to send regular commands to Redis while in pub/sub mode, just open another connection.\n\n## Pub / Sub Events\n\nIf a client has subscriptions active, it may emit these events:\n\n### \"message\" (channel, message)\n\nClient will emit `message` for every message received that matches an active subscription.\nListeners are passed the channel name as `channel` and the message Buffer as `message`.\n\n### \"pmessage\" (pattern, channel, message)\n\nClient will emit `pmessage` for every message received that matches an active subscription pattern.\nListeners are passed the original pattern used with `PSUBSCRIBE` as `pattern`, the sending channel\nname as `channel`, and the message Buffer as `message`.\n\n### \"subscribe\" (channel, count)\n\nClient will emit `subscribe` in response to a `SUBSCRIBE` command. Listeners are passed the\nchannel name as `channel` and the new count of subscriptions for this client as `count`.\n\n### \"psubscribe\" (pattern, count)\n\nClient will emit `psubscribe` in response to a `PSUBSCRIBE` command. Listeners are passed the\noriginal pattern as `pattern`, and the new count of subscriptions for this client as `count`.\n\n### \"unsubscribe\" (channel, count)\n\nClient will emit `unsubscribe` in response to a `UNSUBSCRIBE` command. Listeners are passed the\nchannel name as `channel` and the new count of subscriptions for this client as `count`. When\n`count` is 0, this client has left pub/sub mode and no more pub/sub events will be emitted.\n\n### \"punsubscribe\" (pattern, count)\n\nClient will emit `punsubscribe` in response to a `PUNSUBSCRIBE` command. Listeners are passed the\nchannel name as `channel` and the new count of subscriptions for this client as `count`. When\n`count` is 0, this client has left pub/sub mode and no more pub/sub events will be emitted.\n\n## client.multi([commands])\n\n`MULTI` commands are queued up until an `EXEC` is issued, and then all commands are run atomically by\nRedis. The interface in `node_redis` is to return an individual `Multi` object by calling `client.multi()`.\n\n```js\n var redis = require(\"./index\"),\n client = redis.createClient(), set_size = 20;\n\n client.sadd(\"bigset\", \"a member\");\n client.sadd(\"bigset\", \"another member\");\n\n while (set_size > 0) {\n client.sadd(\"bigset\", \"member \" + set_size);\n set_size -= 1;\n }\n\n // multi chain with an individual callback\n client.multi()\n .scard(\"bigset\")\n .smembers(\"bigset\")\n .keys(\"*\", function (err, replies) {\n // NOTE: code in this callback is NOT atomic\n // this only happens after the the .exec call finishes.\n client.mget(replies, redis.print);\n })\n .dbsize()\n .exec(function (err, replies) {\n console.log(\"MULTI got \" + replies.length + \" replies\");\n replies.forEach(function (reply, index) {\n console.log(\"Reply \" + index + \": \" + reply.toString());\n });\n });\n```\n\n`client.multi()` is a constructor that returns a `Multi` object. `Multi` objects share all of the\nsame command methods as `client` objects do. Commands are queued up inside the `Multi` object\nuntil `Multi.exec()` is invoked.\n\nYou can either chain together `MULTI` commands as in the above example, or you can queue individual\ncommands while still sending regular client command as in this example:\n\n```js\n var redis = require(\"redis\"),\n client = redis.createClient(), multi;\n\n // start a separate multi command queue\n multi = client.multi();\n multi.incr(\"incr thing\", redis.print);\n multi.incr(\"incr other thing\", redis.print);\n\n // runs immediately\n client.mset(\"incr thing\", 100, \"incr other thing\", 1, redis.print);\n\n // drains multi queue and runs atomically\n multi.exec(function (err, replies) {\n console.log(replies); // 101, 2\n });\n\n // you can re-run the same transaction if you like\n multi.exec(function (err, replies) {\n console.log(replies); // 102, 3\n client.quit();\n });\n```\n\nIn addition to adding commands to the `MULTI` queue individually, you can also pass an array\nof commands and arguments to the constructor:\n\n```js\n var redis = require(\"redis\"),\n client = redis.createClient(), multi;\n\n client.multi([\n [\"mget\", \"multifoo\", \"multibar\", redis.print],\n [\"incr\", \"multifoo\"],\n [\"incr\", \"multibar\"]\n ]).exec(function (err, replies) {\n console.log(replies);\n });\n```\n\n\n## Monitor mode\n\nRedis supports the `MONITOR` command, which lets you see all commands received by the Redis server\nacross all client connections, including from other client libraries and other computers.\n\nAfter you send the `MONITOR` command, no other commands are valid on that connection. `node_redis`\nwill emit a `monitor` event for every new monitor message that comes across. The callback for the\n`monitor` event takes a timestamp from the Redis server and an array of command arguments.\n\nHere is a simple example:\n\n```js\n var client = require(\"redis\").createClient(),\n util = require(\"util\");\n\n client.monitor(function (err, res) {\n console.log(\"Entering monitoring mode.\");\n });\n\n client.on(\"monitor\", function (time, args) {\n console.log(time + \": \" + util.inspect(args));\n });\n```\n\n# Extras\n\nSome other things you might like to know about.\n\n## client.server_info\n\nAfter the ready probe completes, the results from the INFO command are saved in the `client.server_info`\nobject.\n\nThe `versions` key contains an array of the elements of the version string for easy comparison.\n\n > client.server_info.redis_version\n '2.3.0'\n > client.server_info.versions\n [ 2, 3, 0 ]\n\n## redis.print()\n\nA handy callback function for displaying return values when testing. Example:\n\n```js\n var redis = require(\"redis\"),\n client = redis.createClient();\n\n client.on(\"connect\", function () {\n client.set(\"foo_rand000000000000\", \"some fantastic value\", redis.print);\n client.get(\"foo_rand000000000000\", redis.print);\n });\n```\n\nThis will print:\n\n Reply: OK\n Reply: some fantastic value\n\nNote that this program will not exit cleanly because the client is still connected.\n\n## redis.debug_mode\n\nBoolean to enable debug mode and protocol tracing.\n\n```js\n var redis = require(\"redis\"),\n client = redis.createClient();\n\n redis.debug_mode = true;\n\n client.on(\"connect\", function () {\n client.set(\"foo_rand000000000000\", \"some fantastic value\");\n });\n```\n\nThis will display:\n\n mjr:~/work/node_redis (master)$ node ~/example.js\n send command: *3\n $3\n SET\n $20\n foo_rand000000000000\n $20\n some fantastic value\n\n on_data: +OK\n\n`send command` is data sent into Redis and `on_data` is data received from Redis.\n\n## client.send_command(command_name, args, callback)\n\nUsed internally to send commands to Redis. For convenience, nearly all commands that are published on the Redis\nWiki have been added to the `client` object. However, if I missed any, or if new commands are introduced before\nthis library is updated, you can use `send_command()` to send arbitrary commands to Redis.\n\nAll commands are sent as multi-bulk commands. `args` can either be an Array of arguments, or omitted.\n\n## client.connected\n\nBoolean tracking the state of the connection to the Redis server.\n\n## client.command_queue.length\n\nThe number of commands that have been sent to the Redis server but not yet replied to. You can use this to\nenforce some kind of maximum queue depth for commands while connected.\n\nDon't mess with `client.command_queue` though unless you really know what you are doing.\n\n## client.offline_queue.length\n\nThe number of commands that have been queued up for a future connection. You can use this to enforce\nsome kind of maximum queue depth for pre-connection commands.\n\n## client.retry_delay\n\nCurrent delay in milliseconds before a connection retry will be attempted. This starts at `250`.\n\n## client.retry_backoff\n\nMultiplier for future retry timeouts. This should be larger than 1 to add more time between retries.\nDefaults to 1.7. The default initial connection retry is 250, so the second retry will be 425, followed by 723.5, etc.\n\n### Commands with Optional and Keyword arguments\n\nThis applies to anything that uses an optional `[WITHSCORES]` or `[LIMIT offset count]` in the [redis.io/commands](http://redis.io/commands) documentation.\n\nExample:\n```js\nvar args = [ 'myzset', 1, 'one', 2, 'two', 3, 'three', 99, 'ninety-nine' ];\nclient.zadd(args, function (err, response) {\n if (err) throw err;\n console.log('added '+response+' items.');\n\n // -Infinity and +Infinity also work\n var args1 = [ 'myzset', '+inf', '-inf' ];\n client.zrevrangebyscore(args1, function (err, response) {\n if (err) throw err;\n console.log('example1', response);\n // write your code here\n });\n\n var max = 3, min = 1, offset = 1, count = 2;\n var args2 = [ 'myzset', max, min, 'WITHSCORES', 'LIMIT', offset, count ];\n client.zrevrangebyscore(args2, function (err, response) {\n if (err) throw err;\n console.log('example2', response);\n // write your code here\n });\n});\n```\n\n## TODO\n\nBetter tests for auth, disconnect/reconnect, and all combinations thereof.\n\nStream large set/get values into and out of Redis. Otherwise the entire value must be in node's memory.\n\nPerformance can be better for very large values.\n\nI think there are more performance improvements left in there for smaller values, especially for large lists of small values.\n\n## How to Contribute\n- open a pull request and then wait for feedback (if\n [DTrejo](http://github.com/dtrejo) does not get back to you within 2 days,\n comment again with indignation!)\n\n## Contributors\nSome people have have added features and fixed bugs in `node_redis` other than me.\n\nOrdered by date of first contribution.\n[Auto-generated](http://github.com/dtrejo/node-authors) on Wed Jul 25 2012 19:14:59 GMT-0700 (PDT).\n\n- [Matt Ranney aka `mranney`](https://github.com/mranney)\n- [Tim-Smart aka `tim-smart`](https://github.com/tim-smart)\n- [Tj Holowaychuk aka `visionmedia`](https://github.com/visionmedia)\n- [rick aka `technoweenie`](https://github.com/technoweenie)\n- [Orion Henry aka `orionz`](https://github.com/orionz)\n- [Aivo Paas aka `aivopaas`](https://github.com/aivopaas)\n- [Hank Sims aka `hanksims`](https://github.com/hanksims)\n- [Paul Carey aka `paulcarey`](https://github.com/paulcarey)\n- [Pieter Noordhuis aka `pietern`](https://github.com/pietern)\n- [nithesh aka `nithesh`](https://github.com/nithesh)\n- [Andy Ray aka `andy2ray`](https://github.com/andy2ray)\n- [unknown aka `unknowdna`](https://github.com/unknowdna)\n- [Dave Hoover aka `redsquirrel`](https://github.com/redsquirrel)\n- [Vladimir Dronnikov aka `dvv`](https://github.com/dvv)\n- [Umair Siddique aka `umairsiddique`](https://github.com/umairsiddique)\n- [Louis-Philippe Perron aka `lp`](https://github.com/lp)\n- [Mark Dawson aka `markdaws`](https://github.com/markdaws)\n- [Ian Babrou aka `bobrik`](https://github.com/bobrik)\n- [Felix Geisendörfer aka `felixge`](https://github.com/felixge)\n- [Jean-Hugues Pinson aka `undefined`](https://github.com/undefined)\n- [Maksim Lin aka `maks`](https://github.com/maks)\n- [Owen Smith aka `orls`](https://github.com/orls)\n- [Zachary Scott aka `zzak`](https://github.com/zzak)\n- [TEHEK Firefox aka `TEHEK`](https://github.com/TEHEK)\n- [Isaac Z. Schlueter aka `isaacs`](https://github.com/isaacs)\n- [David Trejo aka `DTrejo`](https://github.com/DTrejo)\n- [Brian Noguchi aka `bnoguchi`](https://github.com/bnoguchi)\n- [Philip Tellis aka `bluesmoon`](https://github.com/bluesmoon)\n- [Marcus Westin aka `marcuswestin2`](https://github.com/marcuswestin2)\n- [Jed Schmidt aka `jed`](https://github.com/jed)\n- [Dave Peticolas aka `jdavisp3`](https://github.com/jdavisp3)\n- [Trae Robrock aka `trobrock`](https://github.com/trobrock)\n- [Shankar Karuppiah aka `shankar0306`](https://github.com/shankar0306)\n- [Ignacio Burgueño aka `ignacio`](https://github.com/ignacio)\n\nThanks.\n\n## LICENSE - \"MIT License\"\n\nCopyright (c) 2010 Matthew Ranney, http://ranney.com/\n\nPermission is hereby granted, free of charge, to any person\nobtaining a copy of this software and associated documentation\nfiles (the \"Software\"), to deal in the Software without\nrestriction, including without limitation the rights to use,\ncopy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the\nSoftware is furnished to do so, subject to the following\nconditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES\nOF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\nNONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\nHOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\nWHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\nFROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR\nOTHER DEALINGS IN THE SOFTWARE.\n\n![spacer](http://ranney.com/1px.gif)\n", + "readmeFilename": "README.md", + "_id": "redis@0.7.3", + "dist": { + "shasum": "bf172501ffc57d40dce726d7743269573091c1f7" + }, + "_from": "redis@0.7.3", + "_resolved": "https://registry.npmjs.org/redis/-/redis-0.7.3.tgz" +} diff --git a/node_modules/socket.io/node_modules/redis/test.js b/node_modules/socket.io/node_modules/redis/test.js new file mode 100644 index 0000000..0a03375 --- /dev/null +++ b/node_modules/socket.io/node_modules/redis/test.js @@ -0,0 +1,1618 @@ +/*global require console setTimeout process Buffer */ +var redis = require("./index"), + client = redis.createClient(), + client2 = redis.createClient(), + client3 = redis.createClient(), + assert = require("assert"), + crypto = require("crypto"), + util = require("./lib/util"), + test_db_num = 15, // this DB will be flushed and used for testing + tests = {}, + connected = false, + ended = false, + next, cur_start, run_next_test, all_tests, all_start, test_count; + +// Set this to truthy to see the wire protocol and other debugging info +redis.debug_mode = process.argv[2]; + +function buffers_to_strings(arr) { + return arr.map(function (val) { + return val.toString(); + }); +} + +function require_number(expected, label) { + return function (err, results) { + assert.strictEqual(null, err, label + " expected " + expected + ", got error: " + err); + assert.strictEqual(expected, results, label + " " + expected + " !== " + results); + assert.strictEqual(typeof results, "number", label); + return true; + }; +} + +function require_number_any(label) { + return function (err, results) { + assert.strictEqual(null, err, label + " expected any number, got error: " + err); + assert.strictEqual(typeof results, "number", label + " " + results + " is not a number"); + return true; + }; +} + +function require_number_pos(label) { + return function (err, results) { + assert.strictEqual(null, err, label + " expected positive number, got error: " + err); + assert.strictEqual(true, (results > 0), label + " " + results + " is not a positive number"); + return true; + }; +} + +function require_string(str, label) { + return function (err, results) { + assert.strictEqual(null, err, label + " expected string '" + str + "', got error: " + err); + assert.equal(str, results, label + " " + str + " does not match " + results); + return true; + }; +} + +function require_null(label) { + return function (err, results) { + assert.strictEqual(null, err, label + " expected null, got error: " + err); + assert.strictEqual(null, results, label + ": " + results + " is not null"); + return true; + }; +} + +function require_error(label) { + return function (err, results) { + assert.notEqual(err, null, label + " err is null, but an error is expected here."); + return true; + }; +} + +function is_empty_array(obj) { + return Array.isArray(obj) && obj.length === 0; +} + +function last(name, fn) { + return function (err, results) { + fn(err, results); + next(name); + }; +} + +next = function next(name) { + console.log(" \x1b[33m" + (Date.now() - cur_start) + "\x1b[0m ms"); + run_next_test(); +}; + +// Tests are run in the order they are defined. So FLUSHDB should be stay first. + +tests.FLUSHDB = function () { + var name = "FLUSHDB"; + client.select(test_db_num, require_string("OK", name)); + client2.select(test_db_num, require_string("OK", name)); + client3.select(test_db_num, require_string("OK", name)); + client.mset("flush keys 1", "flush val 1", "flush keys 2", "flush val 2", require_string("OK", name)); + client.FLUSHDB(require_string("OK", name)); + client.dbsize(last(name, require_number(0, name))); +}; + +tests.MULTI_1 = function () { + var name = "MULTI_1", multi1, multi2; + + // Provoke an error at queue time + multi1 = client.multi(); + multi1.mset("multifoo", "10", "multibar", "20", require_string("OK", name)); + multi1.set("foo2", require_error(name)); + multi1.incr("multifoo", require_number(11, name)); + multi1.incr("multibar", require_number(21, name)); + multi1.exec(); + + // Confirm that the previous command, while containing an error, still worked. + multi2 = client.multi(); + multi2.incr("multibar", require_number(22, name)); + multi2.incr("multifoo", require_number(12, name)); + multi2.exec(function (err, replies) { + assert.strictEqual(22, replies[0]); + assert.strictEqual(12, replies[1]); + next(name); + }); +}; + +tests.MULTI_2 = function () { + var name = "MULTI_2"; + + // test nested multi-bulk replies + client.multi([ + ["mget", "multifoo", "multibar", function (err, res) { + assert.strictEqual(2, res.length, name); + assert.strictEqual("12", res[0].toString(), name); + assert.strictEqual("22", res[1].toString(), name); + }], + ["set", "foo2", require_error(name)], + ["incr", "multifoo", require_number(13, name)], + ["incr", "multibar", require_number(23, name)] + ]).exec(function (err, replies) { + assert.strictEqual(2, replies[0].length, name); + assert.strictEqual("12", replies[0][0].toString(), name); + assert.strictEqual("22", replies[0][1].toString(), name); + + assert.strictEqual("13", replies[1].toString()); + assert.strictEqual("23", replies[2].toString()); + next(name); + }); +}; + +tests.MULTI_3 = function () { + var name = "MULTI_3"; + + client.sadd("some set", "mem 1"); + client.sadd("some set", "mem 2"); + client.sadd("some set", "mem 3"); + client.sadd("some set", "mem 4"); + + // make sure empty mb reply works + client.del("some missing set"); + client.smembers("some missing set", function (err, reply) { + // make sure empty mb reply works + assert.strictEqual(true, is_empty_array(reply), name); + }); + + // test nested multi-bulk replies with empty mb elements. + client.multi([ + ["smembers", "some set"], + ["del", "some set"], + ["smembers", "some set"] + ]) + .scard("some set") + .exec(function (err, replies) { + assert.strictEqual(true, is_empty_array(replies[2]), name); + next(name); + }); +}; + +tests.MULTI_4 = function () { + var name = "MULTI_4"; + + client.multi() + .mset('some', '10', 'keys', '20') + .incr('some') + .incr('keys') + .mget('some', 'keys') + .exec(function (err, replies) { + assert.strictEqual(null, err); + assert.equal('OK', replies[0]); + assert.equal(11, replies[1]); + assert.equal(21, replies[2]); + assert.equal(11, replies[3][0].toString()); + assert.equal(21, replies[3][1].toString()); + next(name); + }); +}; + +tests.MULTI_5 = function () { + var name = "MULTI_5"; + + // test nested multi-bulk replies with nulls. + client.multi([ + ["mget", ["multifoo", "some", "random value", "keys"]], + ["incr", "multifoo"] + ]) + .exec(function (err, replies) { + assert.strictEqual(replies.length, 2, name); + assert.strictEqual(replies[0].length, 4, name); + next(name); + }); +}; + +tests.MULTI_6 = function () { + var name = "MULTI_6"; + + client.multi() + .hmset("multihash", "a", "foo", "b", 1) + .hmset("multihash", { + extra: "fancy", + things: "here" + }) + .hgetall("multihash") + .exec(function (err, replies) { + assert.strictEqual(null, err); + assert.equal("OK", replies[0]); + assert.equal(Object.keys(replies[2]).length, 4); + assert.equal("foo", replies[2].a); + assert.equal("1", replies[2].b); + assert.equal("fancy", replies[2].extra); + assert.equal("here", replies[2].things); + next(name); + }); +}; + +tests.EVAL_1 = function () { + var name = "EVAL_1"; + + if (client.server_info.versions[0] >= 2 && client.server_info.versions[1] >= 5) { + // test {EVAL - Lua integer -> Redis protocol type conversion} + client.eval("return 100.5", 0, require_number(100, name)); + // test {EVAL - Lua string -> Redis protocol type conversion} + client.eval("return 'hello world'", 0, require_string("hello world", name)); + // test {EVAL - Lua true boolean -> Redis protocol type conversion} + client.eval("return true", 0, require_number(1, name)); + // test {EVAL - Lua false boolean -> Redis protocol type conversion} + client.eval("return false", 0, require_null(name)); + // test {EVAL - Lua status code reply -> Redis protocol type conversion} + client.eval("return {ok='fine'}", 0, require_string("fine", name)); + // test {EVAL - Lua error reply -> Redis protocol type conversion} + client.eval("return {err='this is an error'}", 0, require_error(name)); + // test {EVAL - Lua table -> Redis protocol type conversion} + client.eval("return {1,2,3,'ciao',{1,2}}", 0, function (err, res) { + assert.strictEqual(5, res.length, name); + assert.strictEqual(1, res[0], name); + assert.strictEqual(2, res[1], name); + assert.strictEqual(3, res[2], name); + assert.strictEqual("ciao", res[3], name); + assert.strictEqual(2, res[4].length, name); + assert.strictEqual(1, res[4][0], name); + assert.strictEqual(2, res[4][1], name); + }); + // test {EVAL - Are the KEYS and ARGS arrays populated correctly?} + client.eval("return {KEYS[1],KEYS[2],ARGV[1],ARGV[2]}", 2, "a", "b", "c", "d", function (err, res) { + assert.strictEqual(4, res.length, name); + assert.strictEqual("a", res[0], name); + assert.strictEqual("b", res[1], name); + assert.strictEqual("c", res[2], name); + assert.strictEqual("d", res[3], name); + }); + + // prepare sha sum for evalsha cache test + var source = "return redis.call('get', 'sha test')", + sha = crypto.createHash('sha1').update(source).digest('hex'); + + client.set("sha test", "eval get sha test", function (err, res) { + if (err) throw err; + // test {EVAL - is Lua able to call Redis API?} + client.eval(source, 0, function (err, res) { + require_string("eval get sha test", name)(err, res); + // test {EVALSHA - Can we call a SHA1 if already defined?} + client.evalsha(sha, 0, require_string("eval get sha test", name)); + // test {EVALSHA - Do we get an error on non defined SHA1?} + client.evalsha("ffffffffffffffffffffffffffffffffffffffff", 0, require_error(name)); + }); + }); + + // test {EVAL - Redis integer -> Lua type conversion} + client.set("incr key", 0, function (err, reply) { + if (err) throw err; + client.eval("local foo = redis.call('incr','incr key')\n" + "return {type(foo),foo}", 0, function (err, res) { + if (err) throw err; + assert.strictEqual(2, res.length, name); + assert.strictEqual("number", res[0], name); + assert.strictEqual(1, res[1], name); + }); + }); + + client.set("bulk reply key", "bulk reply value", function (err, res) { + // test {EVAL - Redis bulk -> Lua type conversion} + client.eval("local foo = redis.call('get','bulk reply key'); return {type(foo),foo}", 0, function (err, res) { + if (err) throw err; + assert.strictEqual(2, res.length, name); + assert.strictEqual("string", res[0], name); + assert.strictEqual("bulk reply value", res[1], name); + }); + }); + + // test {EVAL - Redis multi bulk -> Lua type conversion} + client.multi() + .del("mylist") + .rpush("mylist", "a") + .rpush("mylist", "b") + .rpush("mylist", "c") + .exec(function (err, replies) { + if (err) throw err; + client.eval("local foo = redis.call('lrange','mylist',0,-1); return {type(foo),foo[1],foo[2],foo[3],# foo}", 0, function (err, res) { + assert.strictEqual(5, res.length, name); + assert.strictEqual("table", res[0], name); + assert.strictEqual("a", res[1], name); + assert.strictEqual("b", res[2], name); + assert.strictEqual("c", res[3], name); + assert.strictEqual(3, res[4], name); + }); + }); + // test {EVAL - Redis status reply -> Lua type conversion} + client.eval("local foo = redis.call('set','mykey','myval'); return {type(foo),foo['ok']}", 0, function (err, res) { + if (err) throw err; + assert.strictEqual(2, res.length, name); + assert.strictEqual("table", res[0], name); + assert.strictEqual("OK", res[1], name); + }); + // test {EVAL - Redis error reply -> Lua type conversion} + client.set("error reply key", "error reply value", function (err, res) { + if (err) throw err; + client.eval("local foo = redis.pcall('incr','error reply key'); return {type(foo),foo['err']}", 0, function (err, res) { + if (err) throw err; + assert.strictEqual(2, res.length, name); + assert.strictEqual("table", res[0], name); + assert.strictEqual("ERR value is not an integer or out of range", res[1], name); + }); + }); + // test {EVAL - Redis nil bulk reply -> Lua type conversion} + client.del("nil reply key", function (err, res) { + if (err) throw err; + client.eval("local foo = redis.call('get','nil reply key'); return {type(foo),foo == false}", 0, function (err, res) { + if (err) throw err; + assert.strictEqual(2, res.length, name); + assert.strictEqual("boolean", res[0], name); + assert.strictEqual(1, res[1], name); + next(name); + }); + }); + } else { + console.log("Skipping " + name + " because server version isn't new enough."); + next(name); + } +}; + +tests.WATCH_MULTI = function () { + var name = 'WATCH_MULTI', multi; + + if (client.server_info.versions[0] >= 2 && client.server_info.versions[1] >= 1) { + client.watch(name); + client.incr(name); + multi = client.multi(); + multi.incr(name); + multi.exec(last(name, require_null(name))); + } else { + console.log("Skipping " + name + " because server version isn't new enough."); + next(name); + } +}; + +tests.detect_buffers = function () { + var name = "detect_buffers", detect_client = redis.createClient(null, null, {detect_buffers: true}); + + detect_client.on("ready", function () { + // single Buffer or String + detect_client.set("string key 1", "string value"); + detect_client.get("string key 1", require_string("string value", name)); + detect_client.get(new Buffer("string key 1"), function (err, reply) { + assert.strictEqual(null, err, name); + assert.strictEqual(true, Buffer.isBuffer(reply), name); + assert.strictEqual("", reply.inspect(), name); + }); + + detect_client.hmset("hash key 2", "key 1", "val 1", "key 2", "val 2"); + // array of Buffers or Strings + detect_client.hmget("hash key 2", "key 1", "key 2", function (err, reply) { + assert.strictEqual(null, err, name); + assert.strictEqual(true, Array.isArray(reply), name); + assert.strictEqual(2, reply.length, name); + assert.strictEqual("val 1", reply[0], name); + assert.strictEqual("val 2", reply[1], name); + }); + detect_client.hmget(new Buffer("hash key 2"), "key 1", "key 2", function (err, reply) { + assert.strictEqual(null, err, name); + assert.strictEqual(true, Array.isArray(reply)); + assert.strictEqual(2, reply.length, name); + assert.strictEqual(true, Buffer.isBuffer(reply[0])); + assert.strictEqual(true, Buffer.isBuffer(reply[1])); + assert.strictEqual("", reply[0].inspect(), name); + assert.strictEqual("", reply[1].inspect(), name); + }); + + // Object of Buffers or Strings + detect_client.hgetall("hash key 2", function (err, reply) { + assert.strictEqual(null, err, name); + assert.strictEqual("object", typeof reply, name); + assert.strictEqual(2, Object.keys(reply).length, name); + assert.strictEqual("val 1", reply["key 1"], name); + assert.strictEqual("val 2", reply["key 2"], name); + }); + detect_client.hgetall(new Buffer("hash key 2"), function (err, reply) { + assert.strictEqual(null, err, name); + assert.strictEqual("object", typeof reply, name); + assert.strictEqual(2, Object.keys(reply).length, name); + assert.strictEqual(true, Buffer.isBuffer(reply["key 1"])); + assert.strictEqual(true, Buffer.isBuffer(reply["key 2"])); + assert.strictEqual("", reply["key 1"].inspect(), name); + assert.strictEqual("", reply["key 2"].inspect(), name); + }); + + detect_client.quit(function (err, res) { + next(name); + }); + }); +}; + +tests.socket_nodelay = function () { + var name = "socket_nodelay", c1, c2, c3, ready_count = 0, quit_count = 0; + + c1 = redis.createClient(null, null, {socket_nodelay: true}); + c2 = redis.createClient(null, null, {socket_nodelay: false}); + c3 = redis.createClient(null, null); + + function quit_check() { + quit_count++; + + if (quit_count === 3) { + next(name); + } + } + + function run() { + assert.strictEqual(true, c1.options.socket_nodelay, name); + assert.strictEqual(false, c2.options.socket_nodelay, name); + assert.strictEqual(true, c3.options.socket_nodelay, name); + + c1.set(["set key 1", "set val"], require_string("OK", name)); + c1.set(["set key 2", "set val"], require_string("OK", name)); + c1.get(["set key 1"], require_string("set val", name)); + c1.get(["set key 2"], require_string("set val", name)); + + c2.set(["set key 3", "set val"], require_string("OK", name)); + c2.set(["set key 4", "set val"], require_string("OK", name)); + c2.get(["set key 3"], require_string("set val", name)); + c2.get(["set key 4"], require_string("set val", name)); + + c3.set(["set key 5", "set val"], require_string("OK", name)); + c3.set(["set key 6", "set val"], require_string("OK", name)); + c3.get(["set key 5"], require_string("set val", name)); + c3.get(["set key 6"], require_string("set val", name)); + + c1.quit(quit_check); + c2.quit(quit_check); + c3.quit(quit_check); + } + + function ready_check() { + ready_count++; + if (ready_count === 3) { + run(); + } + } + + c1.on("ready", ready_check); + c2.on("ready", ready_check); + c3.on("ready", ready_check); +}; + +tests.reconnect = function () { + var name = "reconnect"; + + client.set("recon 1", "one"); + client.set("recon 2", "two", function (err, res) { + // Do not do this in normal programs. This is to simulate the server closing on us. + // For orderly shutdown in normal programs, do client.quit() + client.stream.destroy(); + }); + + client.on("reconnecting", function on_recon(params) { + client.on("connect", function on_connect() { + client.select(test_db_num, require_string("OK", name)); + client.get("recon 1", require_string("one", name)); + client.get("recon 1", require_string("one", name)); + client.get("recon 2", require_string("two", name)); + client.get("recon 2", require_string("two", name)); + client.removeListener("connect", on_connect); + client.removeListener("reconnecting", on_recon); + next(name); + }); + }); +}; + +tests.idle = function () { + var name = "idle"; + + client.on("idle", function on_idle() { + client.removeListener("idle", on_idle); + next(name); + }); + + client.set("idle", "test"); +}; + +tests.HSET = function () { + var key = "test hash", + field1 = new Buffer("0123456789"), + value1 = new Buffer("abcdefghij"), + field2 = new Buffer(0), + value2 = new Buffer(0), + name = "HSET"; + + client.HSET(key, field1, value1, require_number(1, name)); + client.HGET(key, field1, require_string(value1.toString(), name)); + + // Empty value + client.HSET(key, field1, value2, require_number(0, name)); + client.HGET([key, field1], require_string("", name)); + + // Empty key, empty value + client.HSET([key, field2, value1], require_number(1, name)); + client.HSET(key, field2, value2, last(name, require_number(0, name))); +}; + +tests.HLEN = function () { + var key = "test hash", + field1 = new Buffer("0123456789"), + value1 = new Buffer("abcdefghij"), + field2 = new Buffer(0), + value2 = new Buffer(0), + name = "HSET", + timeout = 1000; + + client.HSET(key, field1, value1, function (err, results) { + client.HLEN(key, function (err, len) { + assert.ok(2 === +len); + next(name); + }); + }); +} + +tests.HMSET_BUFFER_AND_ARRAY = function () { + // Saving a buffer and an array to the same key should not error + var key = "test hash", + field1 = "buffer", + value1 = new Buffer("abcdefghij"), + field2 = "array", + value2 = ["array contents"], + name = "HSET"; + + client.HMSET(key, field1, value1, field2, value2, last(name, require_string("OK", name))); +}; + +// TODO - add test for HMSET with optional callbacks + +tests.HMGET = function () { + var key1 = "test hash 1", key2 = "test hash 2", name = "HMGET"; + + // redis-like hmset syntax + client.HMSET(key1, "0123456789", "abcdefghij", "some manner of key", "a type of value", require_string("OK", name)); + + // fancy hmset syntax + client.HMSET(key2, { + "0123456789": "abcdefghij", + "some manner of key": "a type of value" + }, require_string("OK", name)); + + client.HMGET(key1, "0123456789", "some manner of key", function (err, reply) { + assert.strictEqual("abcdefghij", reply[0].toString(), name); + assert.strictEqual("a type of value", reply[1].toString(), name); + }); + + client.HMGET(key2, "0123456789", "some manner of key", function (err, reply) { + assert.strictEqual("abcdefghij", reply[0].toString(), name); + assert.strictEqual("a type of value", reply[1].toString(), name); + }); + + client.HMGET(key1, ["0123456789"], function (err, reply) { + assert.strictEqual("abcdefghij", reply[0], name); + }); + + client.HMGET(key1, ["0123456789", "some manner of key"], function (err, reply) { + assert.strictEqual("abcdefghij", reply[0], name); + assert.strictEqual("a type of value", reply[1], name); + }); + + client.HMGET(key1, "missing thing", "another missing thing", function (err, reply) { + assert.strictEqual(null, reply[0], name); + assert.strictEqual(null, reply[1], name); + next(name); + }); +}; + +tests.HINCRBY = function () { + var name = "HINCRBY"; + client.hset("hash incr", "value", 10, require_number(1, name)); + client.HINCRBY("hash incr", "value", 1, require_number(11, name)); + client.HINCRBY("hash incr", "value 2", 1, last(name, require_number(1, name))); +}; + +tests.SUBSCRIBE = function () { + var client1 = client, msg_count = 0, name = "SUBSCRIBE"; + + client1.on("subscribe", function (channel, count) { + if (channel === "chan1") { + client2.publish("chan1", "message 1", require_number(1, name)); + client2.publish("chan2", "message 2", require_number(1, name)); + client2.publish("chan1", "message 3", require_number(1, name)); + } + }); + + client1.on("unsubscribe", function (channel, count) { + if (count === 0) { + // make sure this connection can go into and out of pub/sub mode + client1.incr("did a thing", last(name, require_number(2, name))); + } + }); + + client1.on("message", function (channel, message) { + msg_count += 1; + assert.strictEqual("message " + msg_count, message.toString()); + if (msg_count === 3) { + client1.unsubscribe("chan1", "chan2"); + } + }); + + client1.set("did a thing", 1, require_string("OK", name)); + client1.subscribe("chan1", "chan2", function (err, results) { + assert.strictEqual(null, err, "result sent back unexpected error: " + err); + assert.strictEqual("chan1", results.toString(), name); + }); +}; + +tests.SUB_UNSUB_SUB = function () { + var name = "SUB_UNSUB_SUB"; + client3.subscribe('chan3'); + client3.unsubscribe('chan3'); + client3.subscribe('chan3', function (err, results) { + assert.strictEqual(null, err, "unexpected error: " + err); + client2.publish('chan3', 'foo'); + }); + client3.on('message', function (channel, message) { + assert.strictEqual(channel, 'chan3'); + assert.strictEqual(message, 'foo'); + next(name); + }); +}; + +tests.SUBSCRIBE_QUIT = function () { + var name = "SUBSCRIBE_QUIT"; + client3.on("end", function () { + next(name); + }); + client3.on("subscribe", function (channel, count) { + client3.quit(); + }); + client3.subscribe("chan3"); +}; + +tests.SUBSCRIBE_CLOSE_RESUBSCRIBE = function () { + var name = "SUBSCRIBE_CLOSE_RESUBSCRIBE"; + var c1 = redis.createClient(); + var c2 = redis.createClient(); + var count = 0; + + /* Create two clients. c1 subscribes to two channels, c2 will publish to them. + c2 publishes the first message. + c1 gets the message and drops its connection. It must resubscribe itself. + When it resubscribes, c2 publishes the second message, on the same channel + c1 gets the message and drops its connection. It must resubscribe itself, again. + When it resubscribes, c2 publishes the third message, on the second channel + c1 gets the message and drops its connection. When it reconnects, the test ends. + */ + + c1.on("message", function(channel, message) { + if (channel === "chan1") { + assert.strictEqual(message, "hi on channel 1"); + c1.stream.end(); + + } else if (channel === "chan2") { + assert.strictEqual(message, "hi on channel 2"); + c1.stream.end(); + + } else { + c1.quit(); + c2.quit(); + assert.fail("test failed"); + } + }) + + c1.subscribe("chan1", "chan2"); + + c2.once("ready", function() { + console.log("c2 is ready"); + c1.on("ready", function(err, results) { + console.log("c1 is ready", count); + + count++; + if (count == 1) { + c2.publish("chan1", "hi on channel 1"); + return; + + } else if (count == 2) { + c2.publish("chan2", "hi on channel 2"); + + } else { + c1.quit(function() { + c2.quit(function() { + next(name); + }); + }); + } + }); + + c2.publish("chan1", "hi on channel 1"); + + }); +}; + +tests.EXISTS = function () { + var name = "EXISTS"; + client.del("foo", "foo2", require_number_any(name)); + client.set("foo", "bar", require_string("OK", name)); + client.EXISTS("foo", require_number(1, name)); + client.EXISTS("foo2", last(name, require_number(0, name))); +}; + +tests.DEL = function () { + var name = "DEL"; + client.DEL("delkey", require_number_any(name)); + client.set("delkey", "delvalue", require_string("OK", name)); + client.DEL("delkey", require_number(1, name)); + client.exists("delkey", require_number(0, name)); + client.DEL("delkey", require_number(0, name)); + client.mset("delkey", "delvalue", "delkey2", "delvalue2", require_string("OK", name)); + client.DEL("delkey", "delkey2", last(name, require_number(2, name))); +}; + +tests.TYPE = function () { + var name = "TYPE"; + client.set(["string key", "should be a string"], require_string("OK", name)); + client.rpush(["list key", "should be a list"], require_number_pos(name)); + client.sadd(["set key", "should be a set"], require_number_any(name)); + client.zadd(["zset key", "10.0", "should be a zset"], require_number_any(name)); + client.hset(["hash key", "hashtest", "should be a hash"], require_number_any(0, name)); + + client.TYPE(["string key"], require_string("string", name)); + client.TYPE(["list key"], require_string("list", name)); + client.TYPE(["set key"], require_string("set", name)); + client.TYPE(["zset key"], require_string("zset", name)); + client.TYPE("not here yet", require_string("none", name)); + client.TYPE(["hash key"], last(name, require_string("hash", name))); +}; + +tests.KEYS = function () { + var name = "KEYS"; + client.mset(["test keys 1", "test val 1", "test keys 2", "test val 2"], require_string("OK", name)); + client.KEYS(["test keys*"], function (err, results) { + assert.strictEqual(null, err, "result sent back unexpected error: " + err); + assert.strictEqual(2, results.length, name); + assert.strictEqual("test keys 1", results[0].toString(), name); + assert.strictEqual("test keys 2", results[1].toString(), name); + next(name); + }); +}; + +tests.MULTIBULK_ZERO_LENGTH = function () { + var name = "MULTIBULK_ZERO_LENGTH"; + client.KEYS(['users:*'], function (err, results) { + assert.strictEqual(null, err, 'error on empty multibulk reply'); + assert.strictEqual(true, is_empty_array(results), "not an empty array"); + next(name); + }); +}; + +tests.RANDOMKEY = function () { + var name = "RANDOMKEY"; + client.mset(["test keys 1", "test val 1", "test keys 2", "test val 2"], require_string("OK", name)); + client.RANDOMKEY([], function (err, results) { + assert.strictEqual(null, err, name + " result sent back unexpected error: " + err); + assert.strictEqual(true, /\w+/.test(results), name); + next(name); + }); +}; + +tests.RENAME = function () { + var name = "RENAME"; + client.set(['foo', 'bar'], require_string("OK", name)); + client.RENAME(["foo", "new foo"], require_string("OK", name)); + client.exists(["foo"], require_number(0, name)); + client.exists(["new foo"], last(name, require_number(1, name))); +}; + +tests.RENAMENX = function () { + var name = "RENAMENX"; + client.set(['foo', 'bar'], require_string("OK", name)); + client.set(['foo2', 'bar2'], require_string("OK", name)); + client.RENAMENX(["foo", "foo2"], require_number(0, name)); + client.exists(["foo"], require_number(1, name)); + client.exists(["foo2"], require_number(1, name)); + client.del(["foo2"], require_number(1, name)); + client.RENAMENX(["foo", "foo2"], require_number(1, name)); + client.exists(["foo"], require_number(0, name)); + client.exists(["foo2"], last(name, require_number(1, name))); +}; + +tests.DBSIZE = function () { + var name = "DBSIZE"; + client.set(['foo', 'bar'], require_string("OK", name)); + client.DBSIZE([], last(name, require_number_pos("DBSIZE"))); +}; + +tests.GET = function () { + var name = "GET"; + client.set(["get key", "get val"], require_string("OK", name)); + client.GET(["get key"], last(name, require_string("get val", name))); +}; + +tests.SET = function () { + var name = "SET"; + client.SET(["set key", "set val"], require_string("OK", name)); + client.get(["set key"], last(name, require_string("set val", name))); +}; + +tests.GETSET = function () { + var name = "GETSET"; + client.set(["getset key", "getset val"], require_string("OK", name)); + client.GETSET(["getset key", "new getset val"], require_string("getset val", name)); + client.get(["getset key"], last(name, require_string("new getset val", name))); +}; + +tests.MGET = function () { + var name = "MGET"; + client.mset(["mget keys 1", "mget val 1", "mget keys 2", "mget val 2", "mget keys 3", "mget val 3"], require_string("OK", name)); + client.MGET("mget keys 1", "mget keys 2", "mget keys 3", function (err, results) { + assert.strictEqual(null, err, "result sent back unexpected error: " + err); + assert.strictEqual(3, results.length, name); + assert.strictEqual("mget val 1", results[0].toString(), name); + assert.strictEqual("mget val 2", results[1].toString(), name); + assert.strictEqual("mget val 3", results[2].toString(), name); + }); + client.MGET(["mget keys 1", "mget keys 2", "mget keys 3"], function (err, results) { + assert.strictEqual(null, err, "result sent back unexpected error: " + err); + assert.strictEqual(3, results.length, name); + assert.strictEqual("mget val 1", results[0].toString(), name); + assert.strictEqual("mget val 2", results[1].toString(), name); + assert.strictEqual("mget val 3", results[2].toString(), name); + }); + client.MGET(["mget keys 1", "some random shit", "mget keys 2", "mget keys 3"], function (err, results) { + assert.strictEqual(null, err, "result sent back unexpected error: " + err); + assert.strictEqual(4, results.length, name); + assert.strictEqual("mget val 1", results[0].toString(), name); + assert.strictEqual(null, results[1], name); + assert.strictEqual("mget val 2", results[2].toString(), name); + assert.strictEqual("mget val 3", results[3].toString(), name); + next(name); + }); +}; + +tests.SETNX = function () { + var name = "SETNX"; + client.set(["setnx key", "setnx value"], require_string("OK", name)); + client.SETNX(["setnx key", "new setnx value"], require_number(0, name)); + client.del(["setnx key"], require_number(1, name)); + client.exists(["setnx key"], require_number(0, name)); + client.SETNX(["setnx key", "new setnx value"], require_number(1, name)); + client.exists(["setnx key"], last(name, require_number(1, name))); +}; + +tests.SETEX = function () { + var name = "SETEX"; + client.SETEX(["setex key", "100", "setex val"], require_string("OK", name)); + client.exists(["setex key"], require_number(1, name)); + client.ttl(["setex key"], last(name, require_number_pos(name))); +}; + +tests.MSETNX = function () { + var name = "MSETNX"; + client.mset(["mset1", "val1", "mset2", "val2", "mset3", "val3"], require_string("OK", name)); + client.MSETNX(["mset3", "val3", "mset4", "val4"], require_number(0, name)); + client.del(["mset3"], require_number(1, name)); + client.MSETNX(["mset3", "val3", "mset4", "val4"], require_number(1, name)); + client.exists(["mset3"], require_number(1, name)); + client.exists(["mset4"], last(name, require_number(1, name))); +}; + +tests.HGETALL = function () { + var name = "HGETALL"; + client.hmset(["hosts", "mjr", "1", "another", "23", "home", "1234"], require_string("OK", name)); + client.HGETALL(["hosts"], function (err, obj) { + assert.strictEqual(null, err, name + " result sent back unexpected error: " + err); + assert.strictEqual(3, Object.keys(obj).length, name); + assert.strictEqual("1", obj.mjr.toString(), name); + assert.strictEqual("23", obj.another.toString(), name); + assert.strictEqual("1234", obj.home.toString(), name); + next(name); + }); +}; + +tests.HGETALL_NULL = function () { + var name = "HGETALL_NULL"; + + client.hgetall("missing", function (err, obj) { + assert.strictEqual(null, err); + assert.strictEqual(null, obj); + next(name); + }); +}; + +tests.UTF8 = function () { + var name = "UTF8", + utf8_sample = "ಠ_ಠ"; + + client.set(["utf8test", utf8_sample], require_string("OK", name)); + client.get(["utf8test"], function (err, obj) { + assert.strictEqual(null, err); + assert.strictEqual(utf8_sample, obj); + next(name); + }); +}; + +// Set tests were adapted from Brian Hammond's redis-node-client.js, which has a comprehensive test suite + +tests.SADD = function () { + var name = "SADD"; + + client.del('set0'); + client.SADD('set0', 'member0', require_number(1, name)); + client.sadd('set0', 'member0', last(name, require_number(0, name))); +}; + +tests.SADD2 = function () { + var name = "SADD2"; + + client.del("set0"); + client.sadd("set0", ["member0", "member1", "member2"], require_number(3, name)); + client.smembers("set0", function (err, res) { + assert.strictEqual(res.length, 3); + assert.strictEqual(res[0], "member0"); + assert.strictEqual(res[1], "member1"); + assert.strictEqual(res[2], "member2"); + }); + client.SADD("set1", ["member0", "member1", "member2"], require_number(3, name)); + client.smembers("set1", function (err, res) { + assert.strictEqual(res.length, 3); + assert.strictEqual(res[0], "member0"); + assert.strictEqual(res[1], "member1"); + assert.strictEqual(res[2], "member2"); + next(name); + }); +}; + +tests.SISMEMBER = function () { + var name = "SISMEMBER"; + + client.del('set0'); + client.sadd('set0', 'member0', require_number(1, name)); + client.sismember('set0', 'member0', require_number(1, name)); + client.sismember('set0', 'member1', last(name, require_number(0, name))); +}; + +tests.SCARD = function () { + var name = "SCARD"; + + client.del('set0'); + client.sadd('set0', 'member0', require_number(1, name)); + client.scard('set0', require_number(1, name)); + client.sadd('set0', 'member1', require_number(1, name)); + client.scard('set0', last(name, require_number(2, name))); +}; + +tests.SREM = function () { + var name = "SREM"; + + client.del('set0'); + client.sadd('set0', 'member0', require_number(1, name)); + client.srem('set0', 'foobar', require_number(0, name)); + client.srem('set0', 'member0', require_number(1, name)); + client.scard('set0', last(name, require_number(0, name))); +}; + +tests.SPOP = function () { + var name = "SPOP"; + + client.del('zzz'); + client.sadd('zzz', 'member0', require_number(1, name)); + client.scard('zzz', require_number(1, name)); + + client.spop('zzz', function (err, value) { + if (err) { + assert.fail(err); + } + assert.equal(value, 'member0', name); + }); + + client.scard('zzz', last(name, require_number(0, name))); +}; + +tests.SDIFF = function () { + var name = "SDIFF"; + + client.del('foo'); + client.sadd('foo', 'x', require_number(1, name)); + client.sadd('foo', 'a', require_number(1, name)); + client.sadd('foo', 'b', require_number(1, name)); + client.sadd('foo', 'c', require_number(1, name)); + + client.sadd('bar', 'c', require_number(1, name)); + + client.sadd('baz', 'a', require_number(1, name)); + client.sadd('baz', 'd', require_number(1, name)); + + client.sdiff('foo', 'bar', 'baz', function (err, values) { + if (err) { + assert.fail(err, name); + } + values.sort(); + assert.equal(values.length, 2, name); + assert.equal(values[0], 'b', name); + assert.equal(values[1], 'x', name); + next(name); + }); +}; + +tests.SDIFFSTORE = function () { + var name = "SDIFFSTORE"; + + client.del('foo'); + client.del('bar'); + client.del('baz'); + client.del('quux'); + + client.sadd('foo', 'x', require_number(1, name)); + client.sadd('foo', 'a', require_number(1, name)); + client.sadd('foo', 'b', require_number(1, name)); + client.sadd('foo', 'c', require_number(1, name)); + + client.sadd('bar', 'c', require_number(1, name)); + + client.sadd('baz', 'a', require_number(1, name)); + client.sadd('baz', 'd', require_number(1, name)); + + // NB: SDIFFSTORE returns the number of elements in the dstkey + + client.sdiffstore('quux', 'foo', 'bar', 'baz', require_number(2, name)); + + client.smembers('quux', function (err, values) { + if (err) { + assert.fail(err, name); + } + var members = buffers_to_strings(values).sort(); + + assert.deepEqual(members, [ 'b', 'x' ], name); + next(name); + }); +}; + +tests.SMEMBERS = function () { + var name = "SMEMBERS"; + + client.del('foo'); + client.sadd('foo', 'x', require_number(1, name)); + + client.smembers('foo', function (err, members) { + if (err) { + assert.fail(err, name); + } + assert.deepEqual(buffers_to_strings(members), [ 'x' ], name); + }); + + client.sadd('foo', 'y', require_number(1, name)); + + client.smembers('foo', function (err, values) { + if (err) { + assert.fail(err, name); + } + assert.equal(values.length, 2, name); + var members = buffers_to_strings(values).sort(); + + assert.deepEqual(members, [ 'x', 'y' ], name); + next(name); + }); +}; + +tests.SMOVE = function () { + var name = "SMOVE"; + + client.del('foo'); + client.del('bar'); + + client.sadd('foo', 'x', require_number(1, name)); + client.smove('foo', 'bar', 'x', require_number(1, name)); + client.sismember('foo', 'x', require_number(0, name)); + client.sismember('bar', 'x', require_number(1, name)); + client.smove('foo', 'bar', 'x', last(name, require_number(0, name))); +}; + +tests.SINTER = function () { + var name = "SINTER"; + + client.del('sa'); + client.del('sb'); + client.del('sc'); + + client.sadd('sa', 'a', require_number(1, name)); + client.sadd('sa', 'b', require_number(1, name)); + client.sadd('sa', 'c', require_number(1, name)); + + client.sadd('sb', 'b', require_number(1, name)); + client.sadd('sb', 'c', require_number(1, name)); + client.sadd('sb', 'd', require_number(1, name)); + + client.sadd('sc', 'c', require_number(1, name)); + client.sadd('sc', 'd', require_number(1, name)); + client.sadd('sc', 'e', require_number(1, name)); + + client.sinter('sa', 'sb', function (err, intersection) { + if (err) { + assert.fail(err, name); + } + assert.equal(intersection.length, 2, name); + assert.deepEqual(buffers_to_strings(intersection).sort(), [ 'b', 'c' ], name); + }); + + client.sinter('sb', 'sc', function (err, intersection) { + if (err) { + assert.fail(err, name); + } + assert.equal(intersection.length, 2, name); + assert.deepEqual(buffers_to_strings(intersection).sort(), [ 'c', 'd' ], name); + }); + + client.sinter('sa', 'sc', function (err, intersection) { + if (err) { + assert.fail(err, name); + } + assert.equal(intersection.length, 1, name); + assert.equal(intersection[0], 'c', name); + }); + + // 3-way + + client.sinter('sa', 'sb', 'sc', function (err, intersection) { + if (err) { + assert.fail(err, name); + } + assert.equal(intersection.length, 1, name); + assert.equal(intersection[0], 'c', name); + next(name); + }); +}; + +tests.SINTERSTORE = function () { + var name = "SINTERSTORE"; + + client.del('sa'); + client.del('sb'); + client.del('sc'); + client.del('foo'); + + client.sadd('sa', 'a', require_number(1, name)); + client.sadd('sa', 'b', require_number(1, name)); + client.sadd('sa', 'c', require_number(1, name)); + + client.sadd('sb', 'b', require_number(1, name)); + client.sadd('sb', 'c', require_number(1, name)); + client.sadd('sb', 'd', require_number(1, name)); + + client.sadd('sc', 'c', require_number(1, name)); + client.sadd('sc', 'd', require_number(1, name)); + client.sadd('sc', 'e', require_number(1, name)); + + client.sinterstore('foo', 'sa', 'sb', 'sc', require_number(1, name)); + + client.smembers('foo', function (err, members) { + if (err) { + assert.fail(err, name); + } + assert.deepEqual(buffers_to_strings(members), [ 'c' ], name); + next(name); + }); +}; + +tests.SUNION = function () { + var name = "SUNION"; + + client.del('sa'); + client.del('sb'); + client.del('sc'); + + client.sadd('sa', 'a', require_number(1, name)); + client.sadd('sa', 'b', require_number(1, name)); + client.sadd('sa', 'c', require_number(1, name)); + + client.sadd('sb', 'b', require_number(1, name)); + client.sadd('sb', 'c', require_number(1, name)); + client.sadd('sb', 'd', require_number(1, name)); + + client.sadd('sc', 'c', require_number(1, name)); + client.sadd('sc', 'd', require_number(1, name)); + client.sadd('sc', 'e', require_number(1, name)); + + client.sunion('sa', 'sb', 'sc', function (err, union) { + if (err) { + assert.fail(err, name); + } + assert.deepEqual(buffers_to_strings(union).sort(), ['a', 'b', 'c', 'd', 'e'], name); + next(name); + }); +}; + +tests.SUNIONSTORE = function () { + var name = "SUNIONSTORE"; + + client.del('sa'); + client.del('sb'); + client.del('sc'); + client.del('foo'); + + client.sadd('sa', 'a', require_number(1, name)); + client.sadd('sa', 'b', require_number(1, name)); + client.sadd('sa', 'c', require_number(1, name)); + + client.sadd('sb', 'b', require_number(1, name)); + client.sadd('sb', 'c', require_number(1, name)); + client.sadd('sb', 'd', require_number(1, name)); + + client.sadd('sc', 'c', require_number(1, name)); + client.sadd('sc', 'd', require_number(1, name)); + client.sadd('sc', 'e', require_number(1, name)); + + client.sunionstore('foo', 'sa', 'sb', 'sc', function (err, cardinality) { + if (err) { + assert.fail(err, name); + } + assert.equal(cardinality, 5, name); + }); + + client.smembers('foo', function (err, members) { + if (err) { + assert.fail(err, name); + } + assert.equal(members.length, 5, name); + assert.deepEqual(buffers_to_strings(members).sort(), ['a', 'b', 'c', 'd', 'e'], name); + next(name); + }); +}; + +// SORT test adapted from Brian Hammond's redis-node-client.js, which has a comprehensive test suite + +tests.SORT = function () { + var name = "SORT"; + + client.del('y'); + client.del('x'); + + client.rpush('y', 'd', require_number(1, name)); + client.rpush('y', 'b', require_number(2, name)); + client.rpush('y', 'a', require_number(3, name)); + client.rpush('y', 'c', require_number(4, name)); + + client.rpush('x', '3', require_number(1, name)); + client.rpush('x', '9', require_number(2, name)); + client.rpush('x', '2', require_number(3, name)); + client.rpush('x', '4', require_number(4, name)); + + client.set('w3', '4', require_string("OK", name)); + client.set('w9', '5', require_string("OK", name)); + client.set('w2', '12', require_string("OK", name)); + client.set('w4', '6', require_string("OK", name)); + + client.set('o2', 'buz', require_string("OK", name)); + client.set('o3', 'foo', require_string("OK", name)); + client.set('o4', 'baz', require_string("OK", name)); + client.set('o9', 'bar', require_string("OK", name)); + + client.set('p2', 'qux', require_string("OK", name)); + client.set('p3', 'bux', require_string("OK", name)); + client.set('p4', 'lux', require_string("OK", name)); + client.set('p9', 'tux', require_string("OK", name)); + + // Now the data has been setup, we can test. + + // But first, test basic sorting. + + // y = [ d b a c ] + // sort y ascending = [ a b c d ] + // sort y descending = [ d c b a ] + + client.sort('y', 'asc', 'alpha', function (err, sorted) { + if (err) { + assert.fail(err, name); + } + assert.deepEqual(buffers_to_strings(sorted), ['a', 'b', 'c', 'd'], name); + }); + + client.sort('y', 'desc', 'alpha', function (err, sorted) { + if (err) { + assert.fail(err, name); + } + assert.deepEqual(buffers_to_strings(sorted), ['d', 'c', 'b', 'a'], name); + }); + + // Now try sorting numbers in a list. + // x = [ 3, 9, 2, 4 ] + + client.sort('x', 'asc', function (err, sorted) { + if (err) { + assert.fail(err, name); + } + assert.deepEqual(buffers_to_strings(sorted), [2, 3, 4, 9], name); + }); + + client.sort('x', 'desc', function (err, sorted) { + if (err) { + assert.fail(err, name); + } + assert.deepEqual(buffers_to_strings(sorted), [9, 4, 3, 2], name); + }); + + // Try sorting with a 'by' pattern. + + client.sort('x', 'by', 'w*', 'asc', function (err, sorted) { + if (err) { + assert.fail(err, name); + } + assert.deepEqual(buffers_to_strings(sorted), [3, 9, 4, 2], name); + }); + + // Try sorting with a 'by' pattern and 1 'get' pattern. + + client.sort('x', 'by', 'w*', 'asc', 'get', 'o*', function (err, sorted) { + if (err) { + assert.fail(err, name); + } + assert.deepEqual(buffers_to_strings(sorted), ['foo', 'bar', 'baz', 'buz'], name); + }); + + // Try sorting with a 'by' pattern and 2 'get' patterns. + + client.sort('x', 'by', 'w*', 'asc', 'get', 'o*', 'get', 'p*', function (err, sorted) { + if (err) { + assert.fail(err, name); + } + assert.deepEqual(buffers_to_strings(sorted), ['foo', 'bux', 'bar', 'tux', 'baz', 'lux', 'buz', 'qux'], name); + }); + + // Try sorting with a 'by' pattern and 2 'get' patterns. + // Instead of getting back the sorted set/list, store the values to a list. + // Then check that the values are there in the expected order. + + client.sort('x', 'by', 'w*', 'asc', 'get', 'o*', 'get', 'p*', 'store', 'bacon', function (err) { + if (err) { + assert.fail(err, name); + } + }); + + client.lrange('bacon', 0, -1, function (err, values) { + if (err) { + assert.fail(err, name); + } + assert.deepEqual(buffers_to_strings(values), ['foo', 'bux', 'bar', 'tux', 'baz', 'lux', 'buz', 'qux'], name); + next(name); + }); + + // TODO - sort by hash value +}; + +tests.MONITOR = function () { + var name = "MONITOR", responses = [], monitor_client; + + monitor_client = redis.createClient(); + monitor_client.monitor(function (err, res) { + client.mget("some", "keys", "foo", "bar"); + client.set("json", JSON.stringify({ + foo: "123", + bar: "sdflkdfsjk", + another: false + })); + }); + monitor_client.on("monitor", function (time, args) { + // skip monitor command for Redis <= 2.4.16 + if (args[0] === "monitor") return; + + responses.push(args); + if (responses.length === 2) { + assert.strictEqual(5, responses[0].length); + assert.strictEqual("mget", responses[0][0]); + assert.strictEqual("some", responses[0][1]); + assert.strictEqual("keys", responses[0][2]); + assert.strictEqual("foo", responses[0][3]); + assert.strictEqual("bar", responses[0][4]); + assert.strictEqual(3, responses[1].length); + assert.strictEqual("set", responses[1][0]); + assert.strictEqual("json", responses[1][1]); + assert.strictEqual('{"foo":"123","bar":"sdflkdfsjk","another":false}', responses[1][2]); + monitor_client.quit(function (err, res) { + next(name); + }); + } + }); +}; + +tests.BLPOP = function () { + var name = "BLPOP"; + + client.rpush("blocking list", "initial value", function (err, res) { + client2.BLPOP("blocking list", 0, function (err, res) { + assert.strictEqual("blocking list", res[0].toString()); + assert.strictEqual("initial value", res[1].toString()); + + client.rpush("blocking list", "wait for this value"); + }); + client2.BLPOP("blocking list", 0, function (err, res) { + assert.strictEqual("blocking list", res[0].toString()); + assert.strictEqual("wait for this value", res[1].toString()); + next(name); + }); + }); +}; + +tests.BLPOP_TIMEOUT = function () { + var name = "BLPOP_TIMEOUT"; + + // try to BLPOP the list again, which should be empty. This should timeout and return null. + client2.BLPOP("blocking list", 1, function (err, res) { + if (err) { + throw err; + } + + assert.strictEqual(res, null); + next(name); + }); +}; + +tests.EXPIRE = function () { + var name = "EXPIRE"; + client.set(['expiry key', 'bar'], require_string("OK", name)); + client.EXPIRE(["expiry key", "1"], require_number_pos(name)); + setTimeout(function () { + client.exists(["expiry key"], last(name, require_number(0, name))); + }, 2000); +}; + +tests.TTL = function () { + var name = "TTL"; + client.set(["ttl key", "ttl val"], require_string("OK", name)); + client.expire(["ttl key", "100"], require_number_pos(name)); + setTimeout(function () { + client.TTL(["ttl key"], last(name, require_number_pos(0, name))); + }, 500); +}; + +tests.OPTIONAL_CALLBACK = function () { + var name = "OPTIONAL_CALLBACK"; + client.del("op_cb1"); + client.set("op_cb1", "x"); + client.get("op_cb1", last(name, require_string("x", name))); +}; + +tests.OPTIONAL_CALLBACK_UNDEFINED = function () { + var name = "OPTIONAL_CALLBACK_UNDEFINED"; + client.del("op_cb2"); + client.set("op_cb2", "y", undefined); + client.get("op_cb2", last(name, require_string("y", name))); +}; + +tests.HMSET_THROWS_ON_NON_STRINGS = function () { + var name = "HMSET_THROWS_ON_NON_STRINGS"; + var hash = name; + var data = { "a": [ "this is not a string" ] }; + + client.hmset(hash, data, cb); + function cb(e, r) { + assert(e); // should be an error! + } + + // alternative way it throws + function thrower() { + client.hmset(hash, data); + } + assert.throws(thrower); + next(name); +}; + +tests.ENABLE_OFFLINE_QUEUE_TRUE = function () { + var name = "ENABLE_OFFLINE_QUEUE_TRUE"; + var cli = redis.createClient(9999, null, { + max_attempts: 1 + // default :) + // enable_offline_queue: true + }); + cli.on('error', function(e) { + // ignore, b/c expecting a "can't connect" error + }); + return setTimeout(function() { + cli.set(name, name, function(err, result) { + assert.ifError(err); + }); + + return setTimeout(function(){ + assert.strictEqual(cli.offline_queue.length, 1); + return next(name); + }, 25); + }, 50); +}; + +tests.ENABLE_OFFLINE_QUEUE_FALSE = function () { + var name = "ENABLE_OFFLINE_QUEUE_FALSE"; + var cli = redis.createClient(9999, null, { + max_attempts: 1, + enable_offline_queue: false + }); + cli.on('error', function() { + // ignore, see above + }); + assert.throws(function () { + cli.set(name, name) + }) + assert.doesNotThrow(function () { + cli.set(name, name, function (err) { + // should callback with an error + assert.ok(err); + setTimeout(function () { + next(name); + }, 50); + }); + }); +}; + +// TODO - need a better way to test auth, maybe auto-config a local Redis server or something. +// Yes, this is the real password. Please be nice, thanks. +tests.auth = function () { + var name = "AUTH", client4, ready_count = 0; + + client4 = redis.createClient(9006, "filefish.redistogo.com"); + client4.auth("664b1b6aaf134e1ec281945a8de702a9", function (err, res) { + assert.strictEqual(null, err, name); + assert.strictEqual("OK", res.toString(), name); + }); + + // test auth, then kill the connection so it'll auto-reconnect and auto-re-auth + client4.on("ready", function () { + ready_count++; + if (ready_count === 1) { + client4.stream.destroy(); + } else { + client4.quit(function (err, res) { + next(name); + }); + } + }); +}; + +all_tests = Object.keys(tests); +all_start = new Date(); +test_count = 0; + +run_next_test = function run_next_test() { + var test_name = all_tests.shift(); + if (typeof tests[test_name] === "function") { + util.print('- \x1b[1m' + test_name.toLowerCase() + '\x1b[0m:'); + cur_start = new Date(); + test_count += 1; + tests[test_name](); + } else { + console.log('\n completed \x1b[32m%d\x1b[0m tests in \x1b[33m%d\x1b[0m ms\n', test_count, new Date() - all_start); + client.quit(); + client2.quit(); + } +}; + +client.once("ready", function start_tests() { + console.log("Connected to " + client.host + ":" + client.port + ", Redis server version " + client.server_info.redis_version + "\n"); + console.log("Using reply parser " + client.reply_parser.name); + + run_next_test(); + + connected = true; +}); + +client.on('end', function () { + ended = true; +}); + +// Exit immediately on connection failure, which triggers "exit", below, which fails the test +client.on("error", function (err) { + console.error("client: " + err.stack); + process.exit(); +}); +client2.on("error", function (err) { + console.error("client2: " + err.stack); + process.exit(); +}); +client3.on("error", function (err) { + console.error("client3: " + err.stack); + process.exit(); +}); +client.on("reconnecting", function (params) { + console.log("reconnecting: " + util.inspect(params)); +}); + +process.on('uncaughtException', function (err) { + console.error("Uncaught exception: " + err.stack); + process.exit(1); +}); + +process.on('exit', function (code) { + assert.equal(true, connected); + assert.equal(true, ended); +}); diff --git a/node_modules/socket.io/node_modules/socket.io-client/.npmignore b/node_modules/socket.io/node_modules/socket.io-client/.npmignore new file mode 100644 index 0000000..c27cb50 --- /dev/null +++ b/node_modules/socket.io/node_modules/socket.io-client/.npmignore @@ -0,0 +1,2 @@ +test/node_modules +support diff --git a/node_modules/socket.io/node_modules/socket.io-client/History.md b/node_modules/socket.io/node_modules/socket.io-client/History.md new file mode 100644 index 0000000..8ee017d --- /dev/null +++ b/node_modules/socket.io/node_modules/socket.io-client/History.md @@ -0,0 +1,226 @@ + +0.9.11 / 2012-11-02 +=================== + + * Enable use of 'xhr' transport in Node.js + * Fix the problem with disconnecting xhr-polling users + * Add should to devDependencies + * Prefer XmlHttpRequest if CORS is available + * Make client compatible with AMD loaders. + +0.9.10 / 2012-08-10 +=================== + + * fix removeAllListeners to behave as expected. + * set withCredentials to true only if xdomain. + * socket: disable disconnect on unload by default. + +0.9.9 / 2012-08-01 +================== + + * socket: fixed disconnect xhr url and made it actually sync + * *: bump xmlhttprequest dep + +0.9.8 / 2012-07-24 +================== + + * Fixed build. + +0.9.7 / 2012-07-24 +================== + + * iOS websocket crash fix. + * Fixed potential `open` collision. + * Fixed disconnectSync. + +0.9.6 / 2012-04-17 +================== + + * Don't position the jsonp form off the screen (android fix). + +0.9.5 / 2012-04-05 +================== + + * Bumped version. + +0.9.4 / 2012-04-01 +================== + + * Fixes polling loop upon reconnect advice (fixes #438). + +0.9.3 / 2012-03-28 +================== + + * Fix XHR.check, which was throwing an error transparently and causing non-IE browsers to fall back to JSONP [mikito] + * Fixed forced disconnect on window close [zzzaaa] + +0.9.2 / 2012-03-13 +================== + + * Transport order set by "options" [zzzaaa] + +0.9.1-1 / 2012-03-02 +==================== + + * Fixed active-x-obfuscator NPM dependency. + +0.9.1 / 2012-03-02 +================== + + * Misc corrections. + * Added warning within Firefox about webworker test in test runner. + * Update ws dependency [einaros] + * Implemented client side heartbeat checks. [felixge] + * Improved Firewall support with ActiveX obfuscation. [felixge] + * Fixed error handling during connection process. [Outsideris] + +0.9.0 / 2012-02-26 +================== + + * Added DS_Store to gitignore. + * Updated depedencies. + * Bumped uglify + * Tweaking code so it doesn't throw an exception when used inside a WebWorker in Firefox + * Do not rely on Array.prototype.indexOf as it breaks with pages that use the Prototype.js library. + * Windows support landed + * Use @einaros ws module instead of the old crap one + * Fix for broken closeTimeout and 'IE + xhr' goes into infinite loop on disconnection + * Disabled reconnection on error if reconnect option is set to false + * Set withCredentials to true before xhr to fix authentication + * Clears the timeout from reconnection attempt when there is a successful or failed reconnection. + This fixes the issue of setTimeout's carrying over from previous reconnection + and changing (skipping) values of self.reconnectionDelay in the newer reconnection. + * Removed decoding of parameters when chunking the query string. + This was used later on to construct the url to post to the socket.io server + for connection and if we're adding custom parameters of our own to this url + (for example for OAuth authentication) they were being sent decoded, which is wrong. + +0.8.7 / 2011-11-05 +================== + + * Bumped client + +0.8.6 / 2011-10-27 +================== + + * Added WebWorker support. + * Fixed swfobject and web_socket.js to not assume window. + * Fixed CORS detection for webworker. + * Fix `defer` for webkit in a webworker. + * Fixed io.util.request to not rely on window. + * FIxed; use global instead of window and dont rely on document. + * Fixed; JSON-P handshake if CORS is not available. + * Made underlying Transport disconnection trigger immediate socket.io disconnect. + * Fixed warning when compressing with Google Closure Compiler. + * Fixed builder's uglify utf-8 support. + * Added workaround for loading indicator in FF jsonp-polling. [3rd-Eden] + * Fixed host discovery lookup. [holic] + * Fixed close timeout when disconnected/reconnecting. [jscharlach] + * Fixed jsonp-polling feature detection. + * Fixed jsonp-polling client POSTing of \n. + * Fixed test runner on IE6/7 + +0.8.5 / 2011-10-07 +================== + + * Bumped client + +0.8.4 / 2011-09-06 +================== + + * Corrected build + +0.8.3 / 2011-09-03 +================== + + * Fixed `\n` parsing for non-JSON packets. + * Fixed; make Socket.IO XHTML doctype compatible (fixes #460 from server) + * Fixed support for Node.JS running `socket.io-client`. + * Updated repository name in `package.json`. + * Added support for different policy file ports without having to port + forward 843 on the server side [3rd-Eden] + +0.8.2 / 2011-08-29 +================== + + * Fixed flashsocket detection. + +0.8.1 / 2011-08-29 +================== + + * Bump version. + +0.8.0 / 2011-08-28 +================== + + * Added MozWebSocket support (hybi-10 doesn't require API changes) [einaros]. + +0.7.11 / 2011-08-27 +=================== + + * Corrected previous release (missing build). + +0.7.10 / 2011-08-27 +=================== + + * Fix for failing fallback in websockets + +0.7.9 / 2011-08-12 +================== + + * Added check on `Socket#onConnect` to prevent double `connect` events on the main manager. + * Fixed socket namespace connect test. Remove broken alternative namespace connect test. + * Removed test handler for removed test. + * Bumped version to match `socket.io` server. + +0.7.5 / 2011-08-08 +================== + + * Added querystring support for `connect` [3rd-Eden] + * Added partial Node.JS transports support [3rd-Eden, josephg] + * Fixed builder test. + * Changed `util.inherit` to replicate Object.create / __proto__. + * Changed and cleaned up some acceptance tests. + * Fixed race condition with a test that could not be run multiple times. + * Added test for encoding a payload. + * Added the ability to override the transport to use in acceptance test [3rd-Eden] + * Fixed multiple connect packets [DanielBaulig] + * Fixed jsonp-polling over-buffering [3rd-Eden] + * Fixed ascii preservation in minified socket.io client [3rd-Eden] + * Fixed socket.io in situations where the page is not served through utf8. + * Fixed namespaces not reconnecting after disconnect [3rd-Eden] + * Fixed default port for secure connections. + +0.7.4 / 2011-07-12 +================== + + * Added `SocketNamespace#of` shortcut. [3rd-Eden] + * Fixed a IE payload decoding bug. [3rd-Eden] + * Honor document protocol, unless overriden. [dvv] + * Fixed new builder dependencies. [3rd-Eden] + +0.7.3 / 2011-06-30 +================== + + * Fixed; acks don't depend on arity. They're automatic for `.send` and + callback based for `.emit`. [dvv] + * Added support for sub-sockets authorization. [3rd-Eden] + * Added BC support for `new io.connect`. [fat] + * Fixed double `connect` events. [3rd-Eden] + * Fixed reconnection with jsonp-polling maintaining old sessionid. [franck34] + +0.7.2 / 2011-06-22 +================== + + * Added `noop` message type. + +0.7.1 / 2011-06-21 +================== + + * Bumped socket.io dependency version for acceptance tests. + +0.7.0 / 2011-06-21 +================== + + * http://socket.io/announcement.html + diff --git a/node_modules/socket.io/node_modules/socket.io-client/Makefile b/node_modules/socket.io/node_modules/socket.io-client/Makefile new file mode 100644 index 0000000..f2d2f41 --- /dev/null +++ b/node_modules/socket.io/node_modules/socket.io-client/Makefile @@ -0,0 +1,20 @@ + +ALL_TESTS = $(shell find test/ -name '*.test.js') + +run-tests: + @./node_modules/.bin/expresso \ + -I lib \ + -I support \ + --serial \ + $(TESTS) + +test: + @$(MAKE) TESTS="$(ALL_TESTS)" run-tests + +test-acceptance: + @node support/test-runner/app $(TRANSPORT) + +build: + @node ./bin/builder.js + +.PHONY: test diff --git a/node_modules/socket.io/node_modules/socket.io-client/README.md b/node_modules/socket.io/node_modules/socket.io-client/README.md new file mode 100644 index 0000000..cdb7715 --- /dev/null +++ b/node_modules/socket.io/node_modules/socket.io-client/README.md @@ -0,0 +1,246 @@ +socket.io +========= + +#### Sockets for the rest of us + +The `socket.io` client is basically a simple HTTP Socket interface implementation. +It looks similar to WebSocket while providing additional features and +leveraging other transports when WebSocket is not supported by the user's +browser. + +```js +var socket = io.connect('http://domain.com'); +socket.on('connect', function () { + // socket connected +}); +socket.on('custom event', function () { + // server emitted a custom event +}); +socket.on('disconnect', function () { + // socket disconnected +}); +socket.send('hi there'); +``` + +### Recipes + +#### Utilizing namespaces (ie: multiple sockets) + +If you want to namespace all the messages and events emitted to a particular +endpoint, simply specify it as part of the `connect` uri: + +```js +var chat = io.connect('http://localhost/chat'); +chat.on('connect', function () { + // chat socket connected +}); + +var news = io.connect('/news'); // io.connect auto-detects host +news.on('connect', function () { + // news socket connected +}); +``` + +#### Emitting custom events + +To ease with the creation of applications, you can emit custom events outside +of the global `message` event. + +```js +var socket = io.connect(); +socket.emit('server custom event', { my: 'data' }); +``` + +#### Forcing disconnection + +```js +var socket = io.connect(); +socket.on('connect', function () { + socket.disconnect(); +}); +``` + +### Documentation + +#### io#connect + +```js +io.connect(uri, [options]); +``` + +##### Options: + +- *resource* + + socket.io + + The resource is what allows the `socket.io` server to identify incoming connections by `socket.io` clients. In other words, any HTTP server can implement socket.io and still serve other normal, non-realtime HTTP requests. + +- *transports* + +```js +['websocket', 'flashsocket', 'htmlfile', 'xhr-multipart', 'xhr-polling', 'jsonp-polling'] +``` + + A list of the transports to attempt to utilize (in order of preference). + +- *'connect timeout'* + +```js +5000 +``` + + The amount of milliseconds a transport has to create a connection before we consider it timed out. + +- *'try multiple transports'* + +```js +true +``` + + A boolean indicating if we should try other transports when the connectTimeout occurs. + +- *reconnect* + +```js +true +``` + + A boolean indicating if we should automatically reconnect if a connection is disconnected. + +- *'reconnection delay'* + +```js +500 +``` + + The amount of milliseconds before we try to connect to the server again. We are using a exponential back off algorithm for the following reconnections, on each reconnect attempt this value will get multiplied (500 > 1000 > 2000 > 4000 > 8000). + + +- *'max reconnection attempts'* + +```js +10 +``` + + The amount of attempts should we make using the current transport to connect to the server? After this we will do one final attempt, and re-try with all enabled transport methods before we give up. + +##### Properties: + +- *options* + + The passed in options combined with the defaults. + +- *connected* + + Whether the socket is connected or not. + +- *connecting* + + Whether the socket is connecting or not. + +- *reconnecting* + + Whether we are reconnecting or not. + +- *transport* + + The transport instance. + +##### Methods: + +- *connect(λ)* + + Establishes a connection. If λ is supplied as argument, it will be called once the connection is established. + +- *send(message)* + + A string of data to send. + +- *disconnect* + + Closes the connection. + +- *on(event, λ)* + + Adds a listener for the event *event*. + +- *once(event, λ)* + + Adds a one time listener for the event *event*. The listener is removed after the first time the event is fired. + +- *removeListener(event, λ)* + + Removes the listener λ for the event *event*. + +##### Events: + +- *connect* + + Fired when the connection is established and the handshake successful. + +- *connecting(transport_type)* + + Fired when a connection is attempted, passing the transport name. + +- *connect_failed* + + Fired when the connection timeout occurs after the last connection attempt. + This only fires if the `connectTimeout` option is set. + If the `tryTransportsOnConnectTimeout` option is set, this only fires once all + possible transports have been tried. + +- *message(message)* + + Fired when a message arrives from the server + +- *close* + + Fired when the connection is closed. Be careful with using this event, as some transports will fire it even under temporary, expected disconnections (such as XHR-Polling). + +- *disconnect* + + Fired when the connection is considered disconnected. + +- *reconnect(transport_type,reconnectionAttempts)* + + Fired when the connection has been re-established. This only fires if the `reconnect` option is set. + +- *reconnecting(reconnectionDelay,reconnectionAttempts)* + + Fired when a reconnection is attempted, passing the next delay for the next reconnection. + +- *reconnect_failed* + + Fired when all reconnection attempts have failed and we where unsuccessful in reconnecting to the server. + +### Contributors + +Guillermo Rauch <guillermo@learnboost.com> + +Arnout Kazemier <info@3rd-eden.com> + +### License + +(The MIT License) + +Copyright (c) 2010 LearnBoost <dev@learnboost.com> + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +'Software'), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/node_modules/socket.io/node_modules/socket.io-client/bin/builder.js b/node_modules/socket.io/node_modules/socket.io-client/bin/builder.js new file mode 100644 index 0000000..7383c75 --- /dev/null +++ b/node_modules/socket.io/node_modules/socket.io-client/bin/builder.js @@ -0,0 +1,303 @@ +/*! + * socket.io-node + * Copyright(c) 2011 LearnBoost + * MIT Licensed + */ + +/** + * Module dependencies. + */ + +var fs = require('fs') + , socket = require('../lib/io') + , uglify = require('uglify-js') + , activeXObfuscator = require('active-x-obfuscator'); + +/** + * License headers. + * + * @api private + */ + +var template = '/*! Socket.IO.%ext% build:' + socket.version + ', %type%. Copyright(c) 2011 LearnBoost MIT Licensed */\n' + , development = template.replace('%type%', 'development').replace('%ext%', 'js') + , production = template.replace('%type%', 'production').replace('%ext%', 'min.js'); + +/** + * If statements, these allows you to create serveride & client side compatible + * code using specially designed `if` statements that remove serverside + * designed code from the source files + * + * @api private + */ + +var starttagIF = '// if node' + , endtagIF = '// end node'; + +/** + * The modules that are required to create a base build of Socket.IO. + * + * @const + * @type {Array} + * @api private + */ + +var base = [ + 'io.js' + , 'util.js' + , 'events.js' + , 'json.js' + , 'parser.js' + , 'transport.js' + , 'socket.js' + , 'namespace.js' + ]; + +/** + * The available transports for Socket.IO. These are mapped as: + * + * - `key` the name of the transport + * - `value` the dependencies for the transport + * + * @const + * @type {Object} + * @api public + */ + +var baseTransports = { + 'websocket': ['transports/websocket.js'] + , 'flashsocket': [ + 'transports/websocket.js' + , 'transports/flashsocket.js' + , 'vendor/web-socket-js/swfobject.js' + , 'vendor/web-socket-js/web_socket.js' + ] + , 'htmlfile': ['transports/xhr.js', 'transports/htmlfile.js'] + /* FIXME: re-enable me once we have multi-part support + , 'xhr-multipart': ['transports/xhr.js', 'transports/xhr-multipart.js'] */ + , 'xhr-polling': ['transports/xhr.js', 'transports/xhr-polling.js'] + , 'jsonp-polling': [ + 'transports/xhr.js' + , 'transports/xhr-polling.js' + , 'transports/jsonp-polling.js' + ] +}; + +/** + * Wrappers for client-side usage. + * This enables usage in top-level browser window, client-side CommonJS systems and AMD loaders. + * If doing a node build for server-side client, this wrapper is NOT included. + * @api private + */ +var wrapperPre = "\nvar io = ('undefined' === typeof module ? {} : module.exports);\n(function() {\n"; + +var wrapperPost = "\nif (typeof define === \"function\" && define.amd) {" + + "\n define([], function () { return io; });" + + "\n}\n})();"; + + +/** + * Builds a custom Socket.IO distribution based on the transports that you + * need. You can configure the build to create development build or production + * build (minified). + * + * @param {Array} transports The transports that needs to be bundled. + * @param {Object} [options] Options to configure the building process. + * @param {Function} callback Last argument should always be the callback + * @callback {String|Boolean} err An optional argument, if it exists than an error + * occurred during the build process. + * @callback {String} result The result of the build process. + * @api public + */ + +var builder = module.exports = function () { + var transports, options, callback, error = null + , args = Array.prototype.slice.call(arguments, 0) + , settings = { + minify: true + , node: false + , custom: [] + }; + + // Fancy pancy argument support this makes any pattern possible mainly + // because we require only one of each type + args.forEach(function (arg) { + var type = Object.prototype.toString.call(arg) + .replace(/\[object\s(\w+)\]/gi , '$1' ).toLowerCase(); + + switch (type) { + case 'array': + return transports = arg; + case 'object': + return options = arg; + case 'function': + return callback = arg; + } + }); + + // Add defaults + options = options || {}; + transports = transports || Object.keys(baseTransports); + + // Merge the data + for(var option in options) { + settings[option] = options[option]; + } + + // Start creating a dependencies chain with all the required files for the + // custom Socket.IO bundle. + var files = []; + base.forEach(function (file) { + files.push(__dirname + '/../lib/' + file); + }); + + transports.forEach(function (transport) { + var dependencies = baseTransports[transport]; + if (!dependencies) { + error = 'Unsupported transport `' + transport + '` supplied as argument.'; + return; + } + + // Add the files to the files list, but only if they are not added before + dependencies.forEach(function (file) { + var path = __dirname + '/../lib/' + file; + if (!~files.indexOf(path)) files.push(path); + }) + }); + + // check to see if the files tree compilation generated any errors. + if (error) return callback(error); + + var results = {}; + files.forEach(function (file) { + fs.readFile(file, function (err, content) { + if (err) error = err; + results[file] = content; + + // check if we are done yet, or not.. Just by checking the size of the result + // object. + if (Object.keys(results).length !== files.length) return; + + // we are done, did we error? + if (error) return callback(error); + + // start with the license header + var code = development + , ignore = 0; + + // pre-wrapper for non-server-side builds + if (!settings.node) code += wrapperPre; + + // concatenate the file contents in order + files.forEach(function (file) { + code += results[file]; + }); + + // check if we need to add custom code + if (settings.custom.length) { + settings.custom.forEach(function (content) { + code += content; + }); + } + + // post-wrapper for non-server-side builds + if (!settings.node) { + code += wrapperPost; + } + + code = activeXObfuscator(code); + + // Search for conditional code blocks that need to be removed as they + // where designed for a server side env. but only if we don't want to + // make this build node compatible. + if (!settings.node) { + code = code.split('\n').filter(function (line) { + // check if there are tags in here + var start = line.indexOf(starttagIF) >= 0 + , end = line.indexOf(endtagIF) >= 0 + , ret = ignore; + + // ignore the current line + if (start) { + ignore++; + ret = ignore; + } + + // stop ignoring the next line + if (end) { + ignore--; + } + + return ret == 0; + }).join('\n'); + } + + // check if we need to process it any further + if (settings.minify) { + var ast = uglify.parser.parse(code); + ast = uglify.uglify.ast_mangle(ast); + ast = uglify.uglify.ast_squeeze(ast); + + code = production + uglify.uglify.gen_code(ast, { ascii_only: true }); + } + + callback(error, code); + }) + }) +}; + +/** + * Builder version is also the current client version + * this way we don't have to do another include for the + * clients version number and we can just include the builder. + * + * @type {String} + * @api public + */ + +builder.version = socket.version; + +/** + * A list of all build in transport types. + * + * @type {Object} + * @api public + */ + +builder.transports = baseTransports; + +/** + * Command line support, this allows us to generate builds without having + * to load it as module. + */ + +if (!module.parent){ + // the first 2 are `node` and the path to this file, we don't need them + var args = process.argv.slice(2); + + // build a development build + builder(args.length ? args : false, { minify:false }, function (err, content) { + if (err) return console.error(err); + + fs.write( + fs.openSync(__dirname + '/../dist/socket.io.js', 'w') + , content + , 0 + , 'utf8' + ); + console.log('Successfully generated the development build: socket.io.js'); + }); + + // and build a production build + builder(args.length ? args : false, function (err, content) { + if (err) return console.error(err); + + fs.write( + fs.openSync(__dirname + '/../dist/socket.io.min.js', 'w') + , content + , 0 + , 'utf8' + ); + console.log('Successfully generated the production build: socket.io.min.js'); + }); +} diff --git a/node_modules/socket.io/node_modules/socket.io-client/dist/WebSocketMain.swf b/node_modules/socket.io/node_modules/socket.io-client/dist/WebSocketMain.swf new file mode 100644 index 0000000..20a451f Binary files /dev/null and b/node_modules/socket.io/node_modules/socket.io-client/dist/WebSocketMain.swf differ diff --git a/node_modules/socket.io/node_modules/socket.io-client/dist/WebSocketMainInsecure.swf b/node_modules/socket.io/node_modules/socket.io-client/dist/WebSocketMainInsecure.swf new file mode 100644 index 0000000..5949ff3 Binary files /dev/null and b/node_modules/socket.io/node_modules/socket.io-client/dist/WebSocketMainInsecure.swf differ diff --git a/node_modules/socket.io/node_modules/socket.io-client/dist/socket.io.js b/node_modules/socket.io/node_modules/socket.io-client/dist/socket.io.js new file mode 100644 index 0000000..6ea5dd0 --- /dev/null +++ b/node_modules/socket.io/node_modules/socket.io-client/dist/socket.io.js @@ -0,0 +1,3871 @@ +/*! Socket.IO.js build:0.9.11, development. Copyright(c) 2011 LearnBoost MIT Licensed */ + +var io = ('undefined' === typeof module ? {} : module.exports); +(function() { + +/** + * socket.io + * Copyright(c) 2011 LearnBoost + * MIT Licensed + */ + +(function (exports, global) { + + /** + * IO namespace. + * + * @namespace + */ + + var io = exports; + + /** + * Socket.IO version + * + * @api public + */ + + io.version = '0.9.11'; + + /** + * Protocol implemented. + * + * @api public + */ + + io.protocol = 1; + + /** + * Available transports, these will be populated with the available transports + * + * @api public + */ + + io.transports = []; + + /** + * Keep track of jsonp callbacks. + * + * @api private + */ + + io.j = []; + + /** + * Keep track of our io.Sockets + * + * @api private + */ + io.sockets = {}; + + + /** + * Manages connections to hosts. + * + * @param {String} uri + * @Param {Boolean} force creation of new socket (defaults to false) + * @api public + */ + + io.connect = function (host, details) { + var uri = io.util.parseUri(host) + , uuri + , socket; + + if (global && global.location) { + uri.protocol = uri.protocol || global.location.protocol.slice(0, -1); + uri.host = uri.host || (global.document + ? global.document.domain : global.location.hostname); + uri.port = uri.port || global.location.port; + } + + uuri = io.util.uniqueUri(uri); + + var options = { + host: uri.host + , secure: 'https' == uri.protocol + , port: uri.port || ('https' == uri.protocol ? 443 : 80) + , query: uri.query || '' + }; + + io.util.merge(options, details); + + if (options['force new connection'] || !io.sockets[uuri]) { + socket = new io.Socket(options); + } + + if (!options['force new connection'] && socket) { + io.sockets[uuri] = socket; + } + + socket = socket || io.sockets[uuri]; + + // if path is different from '' or / + return socket.of(uri.path.length > 1 ? uri.path : ''); + }; + +})('object' === typeof module ? module.exports : (this.io = {}), this); +/** + * socket.io + * Copyright(c) 2011 LearnBoost + * MIT Licensed + */ + +(function (exports, global) { + + /** + * Utilities namespace. + * + * @namespace + */ + + var util = exports.util = {}; + + /** + * Parses an URI + * + * @author Steven Levithan (MIT license) + * @api public + */ + + var re = /^(?:(?![^:@]+:[^:@\/]*@)([^:\/?#.]+):)?(?:\/\/)?((?:(([^:@]*)(?::([^:@]*))?)?@)?([^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/; + + var parts = ['source', 'protocol', 'authority', 'userInfo', 'user', 'password', + 'host', 'port', 'relative', 'path', 'directory', 'file', 'query', + 'anchor']; + + util.parseUri = function (str) { + var m = re.exec(str || '') + , uri = {} + , i = 14; + + while (i--) { + uri[parts[i]] = m[i] || ''; + } + + return uri; + }; + + /** + * Produces a unique url that identifies a Socket.IO connection. + * + * @param {Object} uri + * @api public + */ + + util.uniqueUri = function (uri) { + var protocol = uri.protocol + , host = uri.host + , port = uri.port; + + if ('document' in global) { + host = host || document.domain; + port = port || (protocol == 'https' + && document.location.protocol !== 'https:' ? 443 : document.location.port); + } else { + host = host || 'localhost'; + + if (!port && protocol == 'https') { + port = 443; + } + } + + return (protocol || 'http') + '://' + host + ':' + (port || 80); + }; + + /** + * Mergest 2 query strings in to once unique query string + * + * @param {String} base + * @param {String} addition + * @api public + */ + + util.query = function (base, addition) { + var query = util.chunkQuery(base || '') + , components = []; + + util.merge(query, util.chunkQuery(addition || '')); + for (var part in query) { + if (query.hasOwnProperty(part)) { + components.push(part + '=' + query[part]); + } + } + + return components.length ? '?' + components.join('&') : ''; + }; + + /** + * Transforms a querystring in to an object + * + * @param {String} qs + * @api public + */ + + util.chunkQuery = function (qs) { + var query = {} + , params = qs.split('&') + , i = 0 + , l = params.length + , kv; + + for (; i < l; ++i) { + kv = params[i].split('='); + if (kv[0]) { + query[kv[0]] = kv[1]; + } + } + + return query; + }; + + /** + * Executes the given function when the page is loaded. + * + * io.util.load(function () { console.log('page loaded'); }); + * + * @param {Function} fn + * @api public + */ + + var pageLoaded = false; + + util.load = function (fn) { + if ('document' in global && document.readyState === 'complete' || pageLoaded) { + return fn(); + } + + util.on(global, 'load', fn, false); + }; + + /** + * Adds an event. + * + * @api private + */ + + util.on = function (element, event, fn, capture) { + if (element.attachEvent) { + element.attachEvent('on' + event, fn); + } else if (element.addEventListener) { + element.addEventListener(event, fn, capture); + } + }; + + /** + * Generates the correct `XMLHttpRequest` for regular and cross domain requests. + * + * @param {Boolean} [xdomain] Create a request that can be used cross domain. + * @returns {XMLHttpRequest|false} If we can create a XMLHttpRequest. + * @api private + */ + + util.request = function (xdomain) { + + if (xdomain && 'undefined' != typeof XDomainRequest && !util.ua.hasCORS) { + return new XDomainRequest(); + } + + if ('undefined' != typeof XMLHttpRequest && (!xdomain || util.ua.hasCORS)) { + return new XMLHttpRequest(); + } + + if (!xdomain) { + try { + return new window[(['Active'].concat('Object').join('X'))]('Microsoft.XMLHTTP'); + } catch(e) { } + } + + return null; + }; + + /** + * XHR based transport constructor. + * + * @constructor + * @api public + */ + + /** + * Change the internal pageLoaded value. + */ + + if ('undefined' != typeof window) { + util.load(function () { + pageLoaded = true; + }); + } + + /** + * Defers a function to ensure a spinner is not displayed by the browser + * + * @param {Function} fn + * @api public + */ + + util.defer = function (fn) { + if (!util.ua.webkit || 'undefined' != typeof importScripts) { + return fn(); + } + + util.load(function () { + setTimeout(fn, 100); + }); + }; + + /** + * Merges two objects. + * + * @api public + */ + + util.merge = function merge (target, additional, deep, lastseen) { + var seen = lastseen || [] + , depth = typeof deep == 'undefined' ? 2 : deep + , prop; + + for (prop in additional) { + if (additional.hasOwnProperty(prop) && util.indexOf(seen, prop) < 0) { + if (typeof target[prop] !== 'object' || !depth) { + target[prop] = additional[prop]; + seen.push(additional[prop]); + } else { + util.merge(target[prop], additional[prop], depth - 1, seen); + } + } + } + + return target; + }; + + /** + * Merges prototypes from objects + * + * @api public + */ + + util.mixin = function (ctor, ctor2) { + util.merge(ctor.prototype, ctor2.prototype); + }; + + /** + * Shortcut for prototypical and static inheritance. + * + * @api private + */ + + util.inherit = function (ctor, ctor2) { + function f() {}; + f.prototype = ctor2.prototype; + ctor.prototype = new f; + }; + + /** + * Checks if the given object is an Array. + * + * io.util.isArray([]); // true + * io.util.isArray({}); // false + * + * @param Object obj + * @api public + */ + + util.isArray = Array.isArray || function (obj) { + return Object.prototype.toString.call(obj) === '[object Array]'; + }; + + /** + * Intersects values of two arrays into a third + * + * @api public + */ + + util.intersect = function (arr, arr2) { + var ret = [] + , longest = arr.length > arr2.length ? arr : arr2 + , shortest = arr.length > arr2.length ? arr2 : arr; + + for (var i = 0, l = shortest.length; i < l; i++) { + if (~util.indexOf(longest, shortest[i])) + ret.push(shortest[i]); + } + + return ret; + }; + + /** + * Array indexOf compatibility. + * + * @see bit.ly/a5Dxa2 + * @api public + */ + + util.indexOf = function (arr, o, i) { + + for (var j = arr.length, i = i < 0 ? i + j < 0 ? 0 : i + j : i || 0; + i < j && arr[i] !== o; i++) {} + + return j <= i ? -1 : i; + }; + + /** + * Converts enumerables to array. + * + * @api public + */ + + util.toArray = function (enu) { + var arr = []; + + for (var i = 0, l = enu.length; i < l; i++) + arr.push(enu[i]); + + return arr; + }; + + /** + * UA / engines detection namespace. + * + * @namespace + */ + + util.ua = {}; + + /** + * Whether the UA supports CORS for XHR. + * + * @api public + */ + + util.ua.hasCORS = 'undefined' != typeof XMLHttpRequest && (function () { + try { + var a = new XMLHttpRequest(); + } catch (e) { + return false; + } + + return a.withCredentials != undefined; + })(); + + /** + * Detect webkit. + * + * @api public + */ + + util.ua.webkit = 'undefined' != typeof navigator + && /webkit/i.test(navigator.userAgent); + + /** + * Detect iPad/iPhone/iPod. + * + * @api public + */ + + util.ua.iDevice = 'undefined' != typeof navigator + && /iPad|iPhone|iPod/i.test(navigator.userAgent); + +})('undefined' != typeof io ? io : module.exports, this); +/** + * socket.io + * Copyright(c) 2011 LearnBoost + * MIT Licensed + */ + +(function (exports, io) { + + /** + * Expose constructor. + */ + + exports.EventEmitter = EventEmitter; + + /** + * Event emitter constructor. + * + * @api public. + */ + + function EventEmitter () {}; + + /** + * Adds a listener + * + * @api public + */ + + EventEmitter.prototype.on = function (name, fn) { + if (!this.$events) { + this.$events = {}; + } + + if (!this.$events[name]) { + this.$events[name] = fn; + } else if (io.util.isArray(this.$events[name])) { + this.$events[name].push(fn); + } else { + this.$events[name] = [this.$events[name], fn]; + } + + return this; + }; + + EventEmitter.prototype.addListener = EventEmitter.prototype.on; + + /** + * Adds a volatile listener. + * + * @api public + */ + + EventEmitter.prototype.once = function (name, fn) { + var self = this; + + function on () { + self.removeListener(name, on); + fn.apply(this, arguments); + }; + + on.listener = fn; + this.on(name, on); + + return this; + }; + + /** + * Removes a listener. + * + * @api public + */ + + EventEmitter.prototype.removeListener = function (name, fn) { + if (this.$events && this.$events[name]) { + var list = this.$events[name]; + + if (io.util.isArray(list)) { + var pos = -1; + + for (var i = 0, l = list.length; i < l; i++) { + if (list[i] === fn || (list[i].listener && list[i].listener === fn)) { + pos = i; + break; + } + } + + if (pos < 0) { + return this; + } + + list.splice(pos, 1); + + if (!list.length) { + delete this.$events[name]; + } + } else if (list === fn || (list.listener && list.listener === fn)) { + delete this.$events[name]; + } + } + + return this; + }; + + /** + * Removes all listeners for an event. + * + * @api public + */ + + EventEmitter.prototype.removeAllListeners = function (name) { + if (name === undefined) { + this.$events = {}; + return this; + } + + if (this.$events && this.$events[name]) { + this.$events[name] = null; + } + + return this; + }; + + /** + * Gets all listeners for a certain event. + * + * @api publci + */ + + EventEmitter.prototype.listeners = function (name) { + if (!this.$events) { + this.$events = {}; + } + + if (!this.$events[name]) { + this.$events[name] = []; + } + + if (!io.util.isArray(this.$events[name])) { + this.$events[name] = [this.$events[name]]; + } + + return this.$events[name]; + }; + + /** + * Emits an event. + * + * @api public + */ + + EventEmitter.prototype.emit = function (name) { + if (!this.$events) { + return false; + } + + var handler = this.$events[name]; + + if (!handler) { + return false; + } + + var args = Array.prototype.slice.call(arguments, 1); + + if ('function' == typeof handler) { + handler.apply(this, args); + } else if (io.util.isArray(handler)) { + var listeners = handler.slice(); + + for (var i = 0, l = listeners.length; i < l; i++) { + listeners[i].apply(this, args); + } + } else { + return false; + } + + return true; + }; + +})( + 'undefined' != typeof io ? io : module.exports + , 'undefined' != typeof io ? io : module.parent.exports +); + +/** + * socket.io + * Copyright(c) 2011 LearnBoost + * MIT Licensed + */ + +/** + * Based on JSON2 (http://www.JSON.org/js.html). + */ + +(function (exports, nativeJSON) { + "use strict"; + + // use native JSON if it's available + if (nativeJSON && nativeJSON.parse){ + return exports.JSON = { + parse: nativeJSON.parse + , stringify: nativeJSON.stringify + }; + } + + var JSON = exports.JSON = {}; + + function f(n) { + // Format integers to have at least two digits. + return n < 10 ? '0' + n : n; + } + + function date(d, key) { + return isFinite(d.valueOf()) ? + d.getUTCFullYear() + '-' + + f(d.getUTCMonth() + 1) + '-' + + f(d.getUTCDate()) + 'T' + + f(d.getUTCHours()) + ':' + + f(d.getUTCMinutes()) + ':' + + f(d.getUTCSeconds()) + 'Z' : null; + }; + + var cx = /[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g, + escapable = /[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g, + gap, + indent, + meta = { // table of character substitutions + '\b': '\\b', + '\t': '\\t', + '\n': '\\n', + '\f': '\\f', + '\r': '\\r', + '"' : '\\"', + '\\': '\\\\' + }, + rep; + + + function quote(string) { + +// If the string contains no control characters, no quote characters, and no +// backslash characters, then we can safely slap some quotes around it. +// Otherwise we must also replace the offending characters with safe escape +// sequences. + + escapable.lastIndex = 0; + return escapable.test(string) ? '"' + string.replace(escapable, function (a) { + var c = meta[a]; + return typeof c === 'string' ? c : + '\\u' + ('0000' + a.charCodeAt(0).toString(16)).slice(-4); + }) + '"' : '"' + string + '"'; + } + + + function str(key, holder) { + +// Produce a string from holder[key]. + + var i, // The loop counter. + k, // The member key. + v, // The member value. + length, + mind = gap, + partial, + value = holder[key]; + +// If the value has a toJSON method, call it to obtain a replacement value. + + if (value instanceof Date) { + value = date(key); + } + +// If we were called with a replacer function, then call the replacer to +// obtain a replacement value. + + if (typeof rep === 'function') { + value = rep.call(holder, key, value); + } + +// What happens next depends on the value's type. + + switch (typeof value) { + case 'string': + return quote(value); + + case 'number': + +// JSON numbers must be finite. Encode non-finite numbers as null. + + return isFinite(value) ? String(value) : 'null'; + + case 'boolean': + case 'null': + +// If the value is a boolean or null, convert it to a string. Note: +// typeof null does not produce 'null'. The case is included here in +// the remote chance that this gets fixed someday. + + return String(value); + +// If the type is 'object', we might be dealing with an object or an array or +// null. + + case 'object': + +// Due to a specification blunder in ECMAScript, typeof null is 'object', +// so watch out for that case. + + if (!value) { + return 'null'; + } + +// Make an array to hold the partial results of stringifying this object value. + + gap += indent; + partial = []; + +// Is the value an array? + + if (Object.prototype.toString.apply(value) === '[object Array]') { + +// The value is an array. Stringify every element. Use null as a placeholder +// for non-JSON values. + + length = value.length; + for (i = 0; i < length; i += 1) { + partial[i] = str(i, value) || 'null'; + } + +// Join all of the elements together, separated with commas, and wrap them in +// brackets. + + v = partial.length === 0 ? '[]' : gap ? + '[\n' + gap + partial.join(',\n' + gap) + '\n' + mind + ']' : + '[' + partial.join(',') + ']'; + gap = mind; + return v; + } + +// If the replacer is an array, use it to select the members to be stringified. + + if (rep && typeof rep === 'object') { + length = rep.length; + for (i = 0; i < length; i += 1) { + if (typeof rep[i] === 'string') { + k = rep[i]; + v = str(k, value); + if (v) { + partial.push(quote(k) + (gap ? ': ' : ':') + v); + } + } + } + } else { + +// Otherwise, iterate through all of the keys in the object. + + for (k in value) { + if (Object.prototype.hasOwnProperty.call(value, k)) { + v = str(k, value); + if (v) { + partial.push(quote(k) + (gap ? ': ' : ':') + v); + } + } + } + } + +// Join all of the member texts together, separated with commas, +// and wrap them in braces. + + v = partial.length === 0 ? '{}' : gap ? + '{\n' + gap + partial.join(',\n' + gap) + '\n' + mind + '}' : + '{' + partial.join(',') + '}'; + gap = mind; + return v; + } + } + +// If the JSON object does not yet have a stringify method, give it one. + + JSON.stringify = function (value, replacer, space) { + +// The stringify method takes a value and an optional replacer, and an optional +// space parameter, and returns a JSON text. The replacer can be a function +// that can replace values, or an array of strings that will select the keys. +// A default replacer method can be provided. Use of the space parameter can +// produce text that is more easily readable. + + var i; + gap = ''; + indent = ''; + +// If the space parameter is a number, make an indent string containing that +// many spaces. + + if (typeof space === 'number') { + for (i = 0; i < space; i += 1) { + indent += ' '; + } + +// If the space parameter is a string, it will be used as the indent string. + + } else if (typeof space === 'string') { + indent = space; + } + +// If there is a replacer, it must be a function or an array. +// Otherwise, throw an error. + + rep = replacer; + if (replacer && typeof replacer !== 'function' && + (typeof replacer !== 'object' || + typeof replacer.length !== 'number')) { + throw new Error('JSON.stringify'); + } + +// Make a fake root object containing our value under the key of ''. +// Return the result of stringifying the value. + + return str('', {'': value}); + }; + +// If the JSON object does not yet have a parse method, give it one. + + JSON.parse = function (text, reviver) { + // The parse method takes a text and an optional reviver function, and returns + // a JavaScript value if the text is a valid JSON text. + + var j; + + function walk(holder, key) { + + // The walk method is used to recursively walk the resulting structure so + // that modifications can be made. + + var k, v, value = holder[key]; + if (value && typeof value === 'object') { + for (k in value) { + if (Object.prototype.hasOwnProperty.call(value, k)) { + v = walk(value, k); + if (v !== undefined) { + value[k] = v; + } else { + delete value[k]; + } + } + } + } + return reviver.call(holder, key, value); + } + + + // Parsing happens in four stages. In the first stage, we replace certain + // Unicode characters with escape sequences. JavaScript handles many characters + // incorrectly, either silently deleting them, or treating them as line endings. + + text = String(text); + cx.lastIndex = 0; + if (cx.test(text)) { + text = text.replace(cx, function (a) { + return '\\u' + + ('0000' + a.charCodeAt(0).toString(16)).slice(-4); + }); + } + + // In the second stage, we run the text against regular expressions that look + // for non-JSON patterns. We are especially concerned with '()' and 'new' + // because they can cause invocation, and '=' because it can cause mutation. + // But just to be safe, we want to reject all unexpected forms. + + // We split the second stage into 4 regexp operations in order to work around + // crippling inefficiencies in IE's and Safari's regexp engines. First we + // replace the JSON backslash pairs with '@' (a non-JSON character). Second, we + // replace all simple value tokens with ']' characters. Third, we delete all + // open brackets that follow a colon or comma or that begin the text. Finally, + // we look to see that the remaining characters are only whitespace or ']' or + // ',' or ':' or '{' or '}'. If that is so, then the text is safe for eval. + + if (/^[\],:{}\s]*$/ + .test(text.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g, '@') + .replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, ']') + .replace(/(?:^|:|,)(?:\s*\[)+/g, ''))) { + + // In the third stage we use the eval function to compile the text into a + // JavaScript structure. The '{' operator is subject to a syntactic ambiguity + // in JavaScript: it can begin a block or an object literal. We wrap the text + // in parens to eliminate the ambiguity. + + j = eval('(' + text + ')'); + + // In the optional fourth stage, we recursively walk the new structure, passing + // each name/value pair to a reviver function for possible transformation. + + return typeof reviver === 'function' ? + walk({'': j}, '') : j; + } + + // If the text is not JSON parseable, then a SyntaxError is thrown. + + throw new SyntaxError('JSON.parse'); + }; + +})( + 'undefined' != typeof io ? io : module.exports + , typeof JSON !== 'undefined' ? JSON : undefined +); + +/** + * socket.io + * Copyright(c) 2011 LearnBoost + * MIT Licensed + */ + +(function (exports, io) { + + /** + * Parser namespace. + * + * @namespace + */ + + var parser = exports.parser = {}; + + /** + * Packet types. + */ + + var packets = parser.packets = [ + 'disconnect' + , 'connect' + , 'heartbeat' + , 'message' + , 'json' + , 'event' + , 'ack' + , 'error' + , 'noop' + ]; + + /** + * Errors reasons. + */ + + var reasons = parser.reasons = [ + 'transport not supported' + , 'client not handshaken' + , 'unauthorized' + ]; + + /** + * Errors advice. + */ + + var advice = parser.advice = [ + 'reconnect' + ]; + + /** + * Shortcuts. + */ + + var JSON = io.JSON + , indexOf = io.util.indexOf; + + /** + * Encodes a packet. + * + * @api private + */ + + parser.encodePacket = function (packet) { + var type = indexOf(packets, packet.type) + , id = packet.id || '' + , endpoint = packet.endpoint || '' + , ack = packet.ack + , data = null; + + switch (packet.type) { + case 'error': + var reason = packet.reason ? indexOf(reasons, packet.reason) : '' + , adv = packet.advice ? indexOf(advice, packet.advice) : ''; + + if (reason !== '' || adv !== '') + data = reason + (adv !== '' ? ('+' + adv) : ''); + + break; + + case 'message': + if (packet.data !== '') + data = packet.data; + break; + + case 'event': + var ev = { name: packet.name }; + + if (packet.args && packet.args.length) { + ev.args = packet.args; + } + + data = JSON.stringify(ev); + break; + + case 'json': + data = JSON.stringify(packet.data); + break; + + case 'connect': + if (packet.qs) + data = packet.qs; + break; + + case 'ack': + data = packet.ackId + + (packet.args && packet.args.length + ? '+' + JSON.stringify(packet.args) : ''); + break; + } + + // construct packet with required fragments + var encoded = [ + type + , id + (ack == 'data' ? '+' : '') + , endpoint + ]; + + // data fragment is optional + if (data !== null && data !== undefined) + encoded.push(data); + + return encoded.join(':'); + }; + + /** + * Encodes multiple messages (payload). + * + * @param {Array} messages + * @api private + */ + + parser.encodePayload = function (packets) { + var decoded = ''; + + if (packets.length == 1) + return packets[0]; + + for (var i = 0, l = packets.length; i < l; i++) { + var packet = packets[i]; + decoded += '\ufffd' + packet.length + '\ufffd' + packets[i]; + } + + return decoded; + }; + + /** + * Decodes a packet + * + * @api private + */ + + var regexp = /([^:]+):([0-9]+)?(\+)?:([^:]+)?:?([\s\S]*)?/; + + parser.decodePacket = function (data) { + var pieces = data.match(regexp); + + if (!pieces) return {}; + + var id = pieces[2] || '' + , data = pieces[5] || '' + , packet = { + type: packets[pieces[1]] + , endpoint: pieces[4] || '' + }; + + // whether we need to acknowledge the packet + if (id) { + packet.id = id; + if (pieces[3]) + packet.ack = 'data'; + else + packet.ack = true; + } + + // handle different packet types + switch (packet.type) { + case 'error': + var pieces = data.split('+'); + packet.reason = reasons[pieces[0]] || ''; + packet.advice = advice[pieces[1]] || ''; + break; + + case 'message': + packet.data = data || ''; + break; + + case 'event': + try { + var opts = JSON.parse(data); + packet.name = opts.name; + packet.args = opts.args; + } catch (e) { } + + packet.args = packet.args || []; + break; + + case 'json': + try { + packet.data = JSON.parse(data); + } catch (e) { } + break; + + case 'connect': + packet.qs = data || ''; + break; + + case 'ack': + var pieces = data.match(/^([0-9]+)(\+)?(.*)/); + if (pieces) { + packet.ackId = pieces[1]; + packet.args = []; + + if (pieces[3]) { + try { + packet.args = pieces[3] ? JSON.parse(pieces[3]) : []; + } catch (e) { } + } + } + break; + + case 'disconnect': + case 'heartbeat': + break; + }; + + return packet; + }; + + /** + * Decodes data payload. Detects multiple messages + * + * @return {Array} messages + * @api public + */ + + parser.decodePayload = function (data) { + // IE doesn't like data[i] for unicode chars, charAt works fine + if (data.charAt(0) == '\ufffd') { + var ret = []; + + for (var i = 1, length = ''; i < data.length; i++) { + if (data.charAt(i) == '\ufffd') { + ret.push(parser.decodePacket(data.substr(i + 1).substr(0, length))); + i += Number(length) + 1; + length = ''; + } else { + length += data.charAt(i); + } + } + + return ret; + } else { + return [parser.decodePacket(data)]; + } + }; + +})( + 'undefined' != typeof io ? io : module.exports + , 'undefined' != typeof io ? io : module.parent.exports +); +/** + * socket.io + * Copyright(c) 2011 LearnBoost + * MIT Licensed + */ + +(function (exports, io) { + + /** + * Expose constructor. + */ + + exports.Transport = Transport; + + /** + * This is the transport template for all supported transport methods. + * + * @constructor + * @api public + */ + + function Transport (socket, sessid) { + this.socket = socket; + this.sessid = sessid; + }; + + /** + * Apply EventEmitter mixin. + */ + + io.util.mixin(Transport, io.EventEmitter); + + + /** + * Indicates whether heartbeats is enabled for this transport + * + * @api private + */ + + Transport.prototype.heartbeats = function () { + return true; + }; + + /** + * Handles the response from the server. When a new response is received + * it will automatically update the timeout, decode the message and + * forwards the response to the onMessage function for further processing. + * + * @param {String} data Response from the server. + * @api private + */ + + Transport.prototype.onData = function (data) { + this.clearCloseTimeout(); + + // If the connection in currently open (or in a reopening state) reset the close + // timeout since we have just received data. This check is necessary so + // that we don't reset the timeout on an explicitly disconnected connection. + if (this.socket.connected || this.socket.connecting || this.socket.reconnecting) { + this.setCloseTimeout(); + } + + if (data !== '') { + // todo: we should only do decodePayload for xhr transports + var msgs = io.parser.decodePayload(data); + + if (msgs && msgs.length) { + for (var i = 0, l = msgs.length; i < l; i++) { + this.onPacket(msgs[i]); + } + } + } + + return this; + }; + + /** + * Handles packets. + * + * @api private + */ + + Transport.prototype.onPacket = function (packet) { + this.socket.setHeartbeatTimeout(); + + if (packet.type == 'heartbeat') { + return this.onHeartbeat(); + } + + if (packet.type == 'connect' && packet.endpoint == '') { + this.onConnect(); + } + + if (packet.type == 'error' && packet.advice == 'reconnect') { + this.isOpen = false; + } + + this.socket.onPacket(packet); + + return this; + }; + + /** + * Sets close timeout + * + * @api private + */ + + Transport.prototype.setCloseTimeout = function () { + if (!this.closeTimeout) { + var self = this; + + this.closeTimeout = setTimeout(function () { + self.onDisconnect(); + }, this.socket.closeTimeout); + } + }; + + /** + * Called when transport disconnects. + * + * @api private + */ + + Transport.prototype.onDisconnect = function () { + if (this.isOpen) this.close(); + this.clearTimeouts(); + this.socket.onDisconnect(); + return this; + }; + + /** + * Called when transport connects + * + * @api private + */ + + Transport.prototype.onConnect = function () { + this.socket.onConnect(); + return this; + }; + + /** + * Clears close timeout + * + * @api private + */ + + Transport.prototype.clearCloseTimeout = function () { + if (this.closeTimeout) { + clearTimeout(this.closeTimeout); + this.closeTimeout = null; + } + }; + + /** + * Clear timeouts + * + * @api private + */ + + Transport.prototype.clearTimeouts = function () { + this.clearCloseTimeout(); + + if (this.reopenTimeout) { + clearTimeout(this.reopenTimeout); + } + }; + + /** + * Sends a packet + * + * @param {Object} packet object. + * @api private + */ + + Transport.prototype.packet = function (packet) { + this.send(io.parser.encodePacket(packet)); + }; + + /** + * Send the received heartbeat message back to server. So the server + * knows we are still connected. + * + * @param {String} heartbeat Heartbeat response from the server. + * @api private + */ + + Transport.prototype.onHeartbeat = function (heartbeat) { + this.packet({ type: 'heartbeat' }); + }; + + /** + * Called when the transport opens. + * + * @api private + */ + + Transport.prototype.onOpen = function () { + this.isOpen = true; + this.clearCloseTimeout(); + this.socket.onOpen(); + }; + + /** + * Notifies the base when the connection with the Socket.IO server + * has been disconnected. + * + * @api private + */ + + Transport.prototype.onClose = function () { + var self = this; + + /* FIXME: reopen delay causing a infinit loop + this.reopenTimeout = setTimeout(function () { + self.open(); + }, this.socket.options['reopen delay']);*/ + + this.isOpen = false; + this.socket.onClose(); + this.onDisconnect(); + }; + + /** + * Generates a connection url based on the Socket.IO URL Protocol. + * See for more details. + * + * @returns {String} Connection url + * @api private + */ + + Transport.prototype.prepareUrl = function () { + var options = this.socket.options; + + return this.scheme() + '://' + + options.host + ':' + options.port + '/' + + options.resource + '/' + io.protocol + + '/' + this.name + '/' + this.sessid; + }; + + /** + * Checks if the transport is ready to start a connection. + * + * @param {Socket} socket The socket instance that needs a transport + * @param {Function} fn The callback + * @api private + */ + + Transport.prototype.ready = function (socket, fn) { + fn.call(this); + }; +})( + 'undefined' != typeof io ? io : module.exports + , 'undefined' != typeof io ? io : module.parent.exports +); +/** + * socket.io + * Copyright(c) 2011 LearnBoost + * MIT Licensed + */ + +(function (exports, io, global) { + + /** + * Expose constructor. + */ + + exports.Socket = Socket; + + /** + * Create a new `Socket.IO client` which can establish a persistent + * connection with a Socket.IO enabled server. + * + * @api public + */ + + function Socket (options) { + this.options = { + port: 80 + , secure: false + , document: 'document' in global ? document : false + , resource: 'socket.io' + , transports: io.transports + , 'connect timeout': 10000 + , 'try multiple transports': true + , 'reconnect': true + , 'reconnection delay': 500 + , 'reconnection limit': Infinity + , 'reopen delay': 3000 + , 'max reconnection attempts': 10 + , 'sync disconnect on unload': false + , 'auto connect': true + , 'flash policy port': 10843 + , 'manualFlush': false + }; + + io.util.merge(this.options, options); + + this.connected = false; + this.open = false; + this.connecting = false; + this.reconnecting = false; + this.namespaces = {}; + this.buffer = []; + this.doBuffer = false; + + if (this.options['sync disconnect on unload'] && + (!this.isXDomain() || io.util.ua.hasCORS)) { + var self = this; + io.util.on(global, 'beforeunload', function () { + self.disconnectSync(); + }, false); + } + + if (this.options['auto connect']) { + this.connect(); + } +}; + + /** + * Apply EventEmitter mixin. + */ + + io.util.mixin(Socket, io.EventEmitter); + + /** + * Returns a namespace listener/emitter for this socket + * + * @api public + */ + + Socket.prototype.of = function (name) { + if (!this.namespaces[name]) { + this.namespaces[name] = new io.SocketNamespace(this, name); + + if (name !== '') { + this.namespaces[name].packet({ type: 'connect' }); + } + } + + return this.namespaces[name]; + }; + + /** + * Emits the given event to the Socket and all namespaces + * + * @api private + */ + + Socket.prototype.publish = function () { + this.emit.apply(this, arguments); + + var nsp; + + for (var i in this.namespaces) { + if (this.namespaces.hasOwnProperty(i)) { + nsp = this.of(i); + nsp.$emit.apply(nsp, arguments); + } + } + }; + + /** + * Performs the handshake + * + * @api private + */ + + function empty () { }; + + Socket.prototype.handshake = function (fn) { + var self = this + , options = this.options; + + function complete (data) { + if (data instanceof Error) { + self.connecting = false; + self.onError(data.message); + } else { + fn.apply(null, data.split(':')); + } + }; + + var url = [ + 'http' + (options.secure ? 's' : '') + ':/' + , options.host + ':' + options.port + , options.resource + , io.protocol + , io.util.query(this.options.query, 't=' + +new Date) + ].join('/'); + + if (this.isXDomain() && !io.util.ua.hasCORS) { + var insertAt = document.getElementsByTagName('script')[0] + , script = document.createElement('script'); + + script.src = url + '&jsonp=' + io.j.length; + insertAt.parentNode.insertBefore(script, insertAt); + + io.j.push(function (data) { + complete(data); + script.parentNode.removeChild(script); + }); + } else { + var xhr = io.util.request(); + + xhr.open('GET', url, true); + if (this.isXDomain()) { + xhr.withCredentials = true; + } + xhr.onreadystatechange = function () { + if (xhr.readyState == 4) { + xhr.onreadystatechange = empty; + + if (xhr.status == 200) { + complete(xhr.responseText); + } else if (xhr.status == 403) { + self.onError(xhr.responseText); + } else { + self.connecting = false; + !self.reconnecting && self.onError(xhr.responseText); + } + } + }; + xhr.send(null); + } + }; + + /** + * Find an available transport based on the options supplied in the constructor. + * + * @api private + */ + + Socket.prototype.getTransport = function (override) { + var transports = override || this.transports, match; + + for (var i = 0, transport; transport = transports[i]; i++) { + if (io.Transport[transport] + && io.Transport[transport].check(this) + && (!this.isXDomain() || io.Transport[transport].xdomainCheck(this))) { + return new io.Transport[transport](this, this.sessionid); + } + } + + return null; + }; + + /** + * Connects to the server. + * + * @param {Function} [fn] Callback. + * @returns {io.Socket} + * @api public + */ + + Socket.prototype.connect = function (fn) { + if (this.connecting) { + return this; + } + + var self = this; + self.connecting = true; + + this.handshake(function (sid, heartbeat, close, transports) { + self.sessionid = sid; + self.closeTimeout = close * 1000; + self.heartbeatTimeout = heartbeat * 1000; + if(!self.transports) + self.transports = self.origTransports = (transports ? io.util.intersect( + transports.split(',') + , self.options.transports + ) : self.options.transports); + + self.setHeartbeatTimeout(); + + function connect (transports){ + if (self.transport) self.transport.clearTimeouts(); + + self.transport = self.getTransport(transports); + if (!self.transport) return self.publish('connect_failed'); + + // once the transport is ready + self.transport.ready(self, function () { + self.connecting = true; + self.publish('connecting', self.transport.name); + self.transport.open(); + + if (self.options['connect timeout']) { + self.connectTimeoutTimer = setTimeout(function () { + if (!self.connected) { + self.connecting = false; + + if (self.options['try multiple transports']) { + var remaining = self.transports; + + while (remaining.length > 0 && remaining.splice(0,1)[0] != + self.transport.name) {} + + if (remaining.length){ + connect(remaining); + } else { + self.publish('connect_failed'); + } + } + } + }, self.options['connect timeout']); + } + }); + } + + connect(self.transports); + + self.once('connect', function (){ + clearTimeout(self.connectTimeoutTimer); + + fn && typeof fn == 'function' && fn(); + }); + }); + + return this; + }; + + /** + * Clears and sets a new heartbeat timeout using the value given by the + * server during the handshake. + * + * @api private + */ + + Socket.prototype.setHeartbeatTimeout = function () { + clearTimeout(this.heartbeatTimeoutTimer); + if(this.transport && !this.transport.heartbeats()) return; + + var self = this; + this.heartbeatTimeoutTimer = setTimeout(function () { + self.transport.onClose(); + }, this.heartbeatTimeout); + }; + + /** + * Sends a message. + * + * @param {Object} data packet. + * @returns {io.Socket} + * @api public + */ + + Socket.prototype.packet = function (data) { + if (this.connected && !this.doBuffer) { + this.transport.packet(data); + } else { + this.buffer.push(data); + } + + return this; + }; + + /** + * Sets buffer state + * + * @api private + */ + + Socket.prototype.setBuffer = function (v) { + this.doBuffer = v; + + if (!v && this.connected && this.buffer.length) { + if (!this.options['manualFlush']) { + this.flushBuffer(); + } + } + }; + + /** + * Flushes the buffer data over the wire. + * To be invoked manually when 'manualFlush' is set to true. + * + * @api public + */ + + Socket.prototype.flushBuffer = function() { + this.transport.payload(this.buffer); + this.buffer = []; + }; + + + /** + * Disconnect the established connect. + * + * @returns {io.Socket} + * @api public + */ + + Socket.prototype.disconnect = function () { + if (this.connected || this.connecting) { + if (this.open) { + this.of('').packet({ type: 'disconnect' }); + } + + // handle disconnection immediately + this.onDisconnect('booted'); + } + + return this; + }; + + /** + * Disconnects the socket with a sync XHR. + * + * @api private + */ + + Socket.prototype.disconnectSync = function () { + // ensure disconnection + var xhr = io.util.request(); + var uri = [ + 'http' + (this.options.secure ? 's' : '') + ':/' + , this.options.host + ':' + this.options.port + , this.options.resource + , io.protocol + , '' + , this.sessionid + ].join('/') + '/?disconnect=1'; + + xhr.open('GET', uri, false); + xhr.send(null); + + // handle disconnection immediately + this.onDisconnect('booted'); + }; + + /** + * Check if we need to use cross domain enabled transports. Cross domain would + * be a different port or different domain name. + * + * @returns {Boolean} + * @api private + */ + + Socket.prototype.isXDomain = function () { + + var port = global.location.port || + ('https:' == global.location.protocol ? 443 : 80); + + return this.options.host !== global.location.hostname + || this.options.port != port; + }; + + /** + * Called upon handshake. + * + * @api private + */ + + Socket.prototype.onConnect = function () { + if (!this.connected) { + this.connected = true; + this.connecting = false; + if (!this.doBuffer) { + // make sure to flush the buffer + this.setBuffer(false); + } + this.emit('connect'); + } + }; + + /** + * Called when the transport opens + * + * @api private + */ + + Socket.prototype.onOpen = function () { + this.open = true; + }; + + /** + * Called when the transport closes. + * + * @api private + */ + + Socket.prototype.onClose = function () { + this.open = false; + clearTimeout(this.heartbeatTimeoutTimer); + }; + + /** + * Called when the transport first opens a connection + * + * @param text + */ + + Socket.prototype.onPacket = function (packet) { + this.of(packet.endpoint).onPacket(packet); + }; + + /** + * Handles an error. + * + * @api private + */ + + Socket.prototype.onError = function (err) { + if (err && err.advice) { + if (err.advice === 'reconnect' && (this.connected || this.connecting)) { + this.disconnect(); + if (this.options.reconnect) { + this.reconnect(); + } + } + } + + this.publish('error', err && err.reason ? err.reason : err); + }; + + /** + * Called when the transport disconnects. + * + * @api private + */ + + Socket.prototype.onDisconnect = function (reason) { + var wasConnected = this.connected + , wasConnecting = this.connecting; + + this.connected = false; + this.connecting = false; + this.open = false; + + if (wasConnected || wasConnecting) { + this.transport.close(); + this.transport.clearTimeouts(); + if (wasConnected) { + this.publish('disconnect', reason); + + if ('booted' != reason && this.options.reconnect && !this.reconnecting) { + this.reconnect(); + } + } + } + }; + + /** + * Called upon reconnection. + * + * @api private + */ + + Socket.prototype.reconnect = function () { + this.reconnecting = true; + this.reconnectionAttempts = 0; + this.reconnectionDelay = this.options['reconnection delay']; + + var self = this + , maxAttempts = this.options['max reconnection attempts'] + , tryMultiple = this.options['try multiple transports'] + , limit = this.options['reconnection limit']; + + function reset () { + if (self.connected) { + for (var i in self.namespaces) { + if (self.namespaces.hasOwnProperty(i) && '' !== i) { + self.namespaces[i].packet({ type: 'connect' }); + } + } + self.publish('reconnect', self.transport.name, self.reconnectionAttempts); + } + + clearTimeout(self.reconnectionTimer); + + self.removeListener('connect_failed', maybeReconnect); + self.removeListener('connect', maybeReconnect); + + self.reconnecting = false; + + delete self.reconnectionAttempts; + delete self.reconnectionDelay; + delete self.reconnectionTimer; + delete self.redoTransports; + + self.options['try multiple transports'] = tryMultiple; + }; + + function maybeReconnect () { + if (!self.reconnecting) { + return; + } + + if (self.connected) { + return reset(); + }; + + if (self.connecting && self.reconnecting) { + return self.reconnectionTimer = setTimeout(maybeReconnect, 1000); + } + + if (self.reconnectionAttempts++ >= maxAttempts) { + if (!self.redoTransports) { + self.on('connect_failed', maybeReconnect); + self.options['try multiple transports'] = true; + self.transports = self.origTransports; + self.transport = self.getTransport(); + self.redoTransports = true; + self.connect(); + } else { + self.publish('reconnect_failed'); + reset(); + } + } else { + if (self.reconnectionDelay < limit) { + self.reconnectionDelay *= 2; // exponential back off + } + + self.connect(); + self.publish('reconnecting', self.reconnectionDelay, self.reconnectionAttempts); + self.reconnectionTimer = setTimeout(maybeReconnect, self.reconnectionDelay); + } + }; + + this.options['try multiple transports'] = false; + this.reconnectionTimer = setTimeout(maybeReconnect, this.reconnectionDelay); + + this.on('connect', maybeReconnect); + }; + +})( + 'undefined' != typeof io ? io : module.exports + , 'undefined' != typeof io ? io : module.parent.exports + , this +); +/** + * socket.io + * Copyright(c) 2011 LearnBoost + * MIT Licensed + */ + +(function (exports, io) { + + /** + * Expose constructor. + */ + + exports.SocketNamespace = SocketNamespace; + + /** + * Socket namespace constructor. + * + * @constructor + * @api public + */ + + function SocketNamespace (socket, name) { + this.socket = socket; + this.name = name || ''; + this.flags = {}; + this.json = new Flag(this, 'json'); + this.ackPackets = 0; + this.acks = {}; + }; + + /** + * Apply EventEmitter mixin. + */ + + io.util.mixin(SocketNamespace, io.EventEmitter); + + /** + * Copies emit since we override it + * + * @api private + */ + + SocketNamespace.prototype.$emit = io.EventEmitter.prototype.emit; + + /** + * Creates a new namespace, by proxying the request to the socket. This + * allows us to use the synax as we do on the server. + * + * @api public + */ + + SocketNamespace.prototype.of = function () { + return this.socket.of.apply(this.socket, arguments); + }; + + /** + * Sends a packet. + * + * @api private + */ + + SocketNamespace.prototype.packet = function (packet) { + packet.endpoint = this.name; + this.socket.packet(packet); + this.flags = {}; + return this; + }; + + /** + * Sends a message + * + * @api public + */ + + SocketNamespace.prototype.send = function (data, fn) { + var packet = { + type: this.flags.json ? 'json' : 'message' + , data: data + }; + + if ('function' == typeof fn) { + packet.id = ++this.ackPackets; + packet.ack = true; + this.acks[packet.id] = fn; + } + + return this.packet(packet); + }; + + /** + * Emits an event + * + * @api public + */ + + SocketNamespace.prototype.emit = function (name) { + var args = Array.prototype.slice.call(arguments, 1) + , lastArg = args[args.length - 1] + , packet = { + type: 'event' + , name: name + }; + + if ('function' == typeof lastArg) { + packet.id = ++this.ackPackets; + packet.ack = 'data'; + this.acks[packet.id] = lastArg; + args = args.slice(0, args.length - 1); + } + + packet.args = args; + + return this.packet(packet); + }; + + /** + * Disconnects the namespace + * + * @api private + */ + + SocketNamespace.prototype.disconnect = function () { + if (this.name === '') { + this.socket.disconnect(); + } else { + this.packet({ type: 'disconnect' }); + this.$emit('disconnect'); + } + + return this; + }; + + /** + * Handles a packet + * + * @api private + */ + + SocketNamespace.prototype.onPacket = function (packet) { + var self = this; + + function ack () { + self.packet({ + type: 'ack' + , args: io.util.toArray(arguments) + , ackId: packet.id + }); + }; + + switch (packet.type) { + case 'connect': + this.$emit('connect'); + break; + + case 'disconnect': + if (this.name === '') { + this.socket.onDisconnect(packet.reason || 'booted'); + } else { + this.$emit('disconnect', packet.reason); + } + break; + + case 'message': + case 'json': + var params = ['message', packet.data]; + + if (packet.ack == 'data') { + params.push(ack); + } else if (packet.ack) { + this.packet({ type: 'ack', ackId: packet.id }); + } + + this.$emit.apply(this, params); + break; + + case 'event': + var params = [packet.name].concat(packet.args); + + if (packet.ack == 'data') + params.push(ack); + + this.$emit.apply(this, params); + break; + + case 'ack': + if (this.acks[packet.ackId]) { + this.acks[packet.ackId].apply(this, packet.args); + delete this.acks[packet.ackId]; + } + break; + + case 'error': + if (packet.advice){ + this.socket.onError(packet); + } else { + if (packet.reason == 'unauthorized') { + this.$emit('connect_failed', packet.reason); + } else { + this.$emit('error', packet.reason); + } + } + break; + } + }; + + /** + * Flag interface. + * + * @api private + */ + + function Flag (nsp, name) { + this.namespace = nsp; + this.name = name; + }; + + /** + * Send a message + * + * @api public + */ + + Flag.prototype.send = function () { + this.namespace.flags[this.name] = true; + this.namespace.send.apply(this.namespace, arguments); + }; + + /** + * Emit an event + * + * @api public + */ + + Flag.prototype.emit = function () { + this.namespace.flags[this.name] = true; + this.namespace.emit.apply(this.namespace, arguments); + }; + +})( + 'undefined' != typeof io ? io : module.exports + , 'undefined' != typeof io ? io : module.parent.exports +); + +/** + * socket.io + * Copyright(c) 2011 LearnBoost + * MIT Licensed + */ + +(function (exports, io, global) { + + /** + * Expose constructor. + */ + + exports.websocket = WS; + + /** + * The WebSocket transport uses the HTML5 WebSocket API to establish an + * persistent connection with the Socket.IO server. This transport will also + * be inherited by the FlashSocket fallback as it provides a API compatible + * polyfill for the WebSockets. + * + * @constructor + * @extends {io.Transport} + * @api public + */ + + function WS (socket) { + io.Transport.apply(this, arguments); + }; + + /** + * Inherits from Transport. + */ + + io.util.inherit(WS, io.Transport); + + /** + * Transport name + * + * @api public + */ + + WS.prototype.name = 'websocket'; + + /** + * Initializes a new `WebSocket` connection with the Socket.IO server. We attach + * all the appropriate listeners to handle the responses from the server. + * + * @returns {Transport} + * @api public + */ + + WS.prototype.open = function () { + var query = io.util.query(this.socket.options.query) + , self = this + , Socket + + + if (!Socket) { + Socket = global.MozWebSocket || global.WebSocket; + } + + this.websocket = new Socket(this.prepareUrl() + query); + + this.websocket.onopen = function () { + self.onOpen(); + self.socket.setBuffer(false); + }; + this.websocket.onmessage = function (ev) { + self.onData(ev.data); + }; + this.websocket.onclose = function () { + self.onClose(); + self.socket.setBuffer(true); + }; + this.websocket.onerror = function (e) { + self.onError(e); + }; + + return this; + }; + + /** + * Send a message to the Socket.IO server. The message will automatically be + * encoded in the correct message format. + * + * @returns {Transport} + * @api public + */ + + // Do to a bug in the current IDevices browser, we need to wrap the send in a + // setTimeout, when they resume from sleeping the browser will crash if + // we don't allow the browser time to detect the socket has been closed + if (io.util.ua.iDevice) { + WS.prototype.send = function (data) { + var self = this; + setTimeout(function() { + self.websocket.send(data); + },0); + return this; + }; + } else { + WS.prototype.send = function (data) { + this.websocket.send(data); + return this; + }; + } + + /** + * Payload + * + * @api private + */ + + WS.prototype.payload = function (arr) { + for (var i = 0, l = arr.length; i < l; i++) { + this.packet(arr[i]); + } + return this; + }; + + /** + * Disconnect the established `WebSocket` connection. + * + * @returns {Transport} + * @api public + */ + + WS.prototype.close = function () { + this.websocket.close(); + return this; + }; + + /** + * Handle the errors that `WebSocket` might be giving when we + * are attempting to connect or send messages. + * + * @param {Error} e The error. + * @api private + */ + + WS.prototype.onError = function (e) { + this.socket.onError(e); + }; + + /** + * Returns the appropriate scheme for the URI generation. + * + * @api private + */ + WS.prototype.scheme = function () { + return this.socket.options.secure ? 'wss' : 'ws'; + }; + + /** + * Checks if the browser has support for native `WebSockets` and that + * it's not the polyfill created for the FlashSocket transport. + * + * @return {Boolean} + * @api public + */ + + WS.check = function () { + return ('WebSocket' in global && !('__addTask' in WebSocket)) + || 'MozWebSocket' in global; + }; + + /** + * Check if the `WebSocket` transport support cross domain communications. + * + * @returns {Boolean} + * @api public + */ + + WS.xdomainCheck = function () { + return true; + }; + + /** + * Add the transport to your public io.transports array. + * + * @api private + */ + + io.transports.push('websocket'); + +})( + 'undefined' != typeof io ? io.Transport : module.exports + , 'undefined' != typeof io ? io : module.parent.exports + , this +); + +/** + * socket.io + * Copyright(c) 2011 LearnBoost + * MIT Licensed + */ + +(function (exports, io) { + + /** + * Expose constructor. + */ + + exports.flashsocket = Flashsocket; + + /** + * The FlashSocket transport. This is a API wrapper for the HTML5 WebSocket + * specification. It uses a .swf file to communicate with the server. If you want + * to serve the .swf file from a other server than where the Socket.IO script is + * coming from you need to use the insecure version of the .swf. More information + * about this can be found on the github page. + * + * @constructor + * @extends {io.Transport.websocket} + * @api public + */ + + function Flashsocket () { + io.Transport.websocket.apply(this, arguments); + }; + + /** + * Inherits from Transport. + */ + + io.util.inherit(Flashsocket, io.Transport.websocket); + + /** + * Transport name + * + * @api public + */ + + Flashsocket.prototype.name = 'flashsocket'; + + /** + * Disconnect the established `FlashSocket` connection. This is done by adding a + * new task to the FlashSocket. The rest will be handled off by the `WebSocket` + * transport. + * + * @returns {Transport} + * @api public + */ + + Flashsocket.prototype.open = function () { + var self = this + , args = arguments; + + WebSocket.__addTask(function () { + io.Transport.websocket.prototype.open.apply(self, args); + }); + return this; + }; + + /** + * Sends a message to the Socket.IO server. This is done by adding a new + * task to the FlashSocket. The rest will be handled off by the `WebSocket` + * transport. + * + * @returns {Transport} + * @api public + */ + + Flashsocket.prototype.send = function () { + var self = this, args = arguments; + WebSocket.__addTask(function () { + io.Transport.websocket.prototype.send.apply(self, args); + }); + return this; + }; + + /** + * Disconnects the established `FlashSocket` connection. + * + * @returns {Transport} + * @api public + */ + + Flashsocket.prototype.close = function () { + WebSocket.__tasks.length = 0; + io.Transport.websocket.prototype.close.call(this); + return this; + }; + + /** + * The WebSocket fall back needs to append the flash container to the body + * element, so we need to make sure we have access to it. Or defer the call + * until we are sure there is a body element. + * + * @param {Socket} socket The socket instance that needs a transport + * @param {Function} fn The callback + * @api private + */ + + Flashsocket.prototype.ready = function (socket, fn) { + function init () { + var options = socket.options + , port = options['flash policy port'] + , path = [ + 'http' + (options.secure ? 's' : '') + ':/' + , options.host + ':' + options.port + , options.resource + , 'static/flashsocket' + , 'WebSocketMain' + (socket.isXDomain() ? 'Insecure' : '') + '.swf' + ]; + + // Only start downloading the swf file when the checked that this browser + // actually supports it + if (!Flashsocket.loaded) { + if (typeof WEB_SOCKET_SWF_LOCATION === 'undefined') { + // Set the correct file based on the XDomain settings + WEB_SOCKET_SWF_LOCATION = path.join('/'); + } + + if (port !== 843) { + WebSocket.loadFlashPolicyFile('xmlsocket://' + options.host + ':' + port); + } + + WebSocket.__initialize(); + Flashsocket.loaded = true; + } + + fn.call(self); + } + + var self = this; + if (document.body) return init(); + + io.util.load(init); + }; + + /** + * Check if the FlashSocket transport is supported as it requires that the Adobe + * Flash Player plug-in version `10.0.0` or greater is installed. And also check if + * the polyfill is correctly loaded. + * + * @returns {Boolean} + * @api public + */ + + Flashsocket.check = function () { + if ( + typeof WebSocket == 'undefined' + || !('__initialize' in WebSocket) || !swfobject + ) return false; + + return swfobject.getFlashPlayerVersion().major >= 10; + }; + + /** + * Check if the FlashSocket transport can be used as cross domain / cross origin + * transport. Because we can't see which type (secure or insecure) of .swf is used + * we will just return true. + * + * @returns {Boolean} + * @api public + */ + + Flashsocket.xdomainCheck = function () { + return true; + }; + + /** + * Disable AUTO_INITIALIZATION + */ + + if (typeof window != 'undefined') { + WEB_SOCKET_DISABLE_AUTO_INITIALIZATION = true; + } + + /** + * Add the transport to your public io.transports array. + * + * @api private + */ + + io.transports.push('flashsocket'); +})( + 'undefined' != typeof io ? io.Transport : module.exports + , 'undefined' != typeof io ? io : module.parent.exports +); +/* SWFObject v2.2 + is released under the MIT License +*/ +if ('undefined' != typeof window) { +var swfobject=function(){var D="undefined",r="object",S="Shockwave Flash",W="ShockwaveFlash.ShockwaveFlash",q="application/x-shockwave-flash",R="SWFObjectExprInst",x="onreadystatechange",O=window,j=document,t=navigator,T=false,U=[h],o=[],N=[],I=[],l,Q,E,B,J=false,a=false,n,G,m=true,M=function(){var aa=typeof j.getElementById!=D&&typeof j.getElementsByTagName!=D&&typeof j.createElement!=D,ah=t.userAgent.toLowerCase(),Y=t.platform.toLowerCase(),ae=Y?/win/.test(Y):/win/.test(ah),ac=Y?/mac/.test(Y):/mac/.test(ah),af=/webkit/.test(ah)?parseFloat(ah.replace(/^.*webkit\/(\d+(\.\d+)?).*$/,"$1")):false,X=!+"\v1",ag=[0,0,0],ab=null;if(typeof t.plugins!=D&&typeof t.plugins[S]==r){ab=t.plugins[S].description;if(ab&&!(typeof t.mimeTypes!=D&&t.mimeTypes[q]&&!t.mimeTypes[q].enabledPlugin)){T=true;X=false;ab=ab.replace(/^.*\s+(\S+\s+\S+$)/,"$1");ag[0]=parseInt(ab.replace(/^(.*)\..*$/,"$1"),10);ag[1]=parseInt(ab.replace(/^.*\.(.*)\s.*$/,"$1"),10);ag[2]=/[a-zA-Z]/.test(ab)?parseInt(ab.replace(/^.*[a-zA-Z]+(.*)$/,"$1"),10):0}}else{if(typeof O[(['Active'].concat('Object').join('X'))]!=D){try{var ad=new window[(['Active'].concat('Object').join('X'))](W);if(ad){ab=ad.GetVariable("$version");if(ab){X=true;ab=ab.split(" ")[1].split(",");ag=[parseInt(ab[0],10),parseInt(ab[1],10),parseInt(ab[2],10)]}}}catch(Z){}}}return{w3:aa,pv:ag,wk:af,ie:X,win:ae,mac:ac}}(),k=function(){if(!M.w3){return}if((typeof j.readyState!=D&&j.readyState=="complete")||(typeof j.readyState==D&&(j.getElementsByTagName("body")[0]||j.body))){f()}if(!J){if(typeof j.addEventListener!=D){j.addEventListener("DOMContentLoaded",f,false)}if(M.ie&&M.win){j.attachEvent(x,function(){if(j.readyState=="complete"){j.detachEvent(x,arguments.callee);f()}});if(O==top){(function(){if(J){return}try{j.documentElement.doScroll("left")}catch(X){setTimeout(arguments.callee,0);return}f()})()}}if(M.wk){(function(){if(J){return}if(!/loaded|complete/.test(j.readyState)){setTimeout(arguments.callee,0);return}f()})()}s(f)}}();function f(){if(J){return}try{var Z=j.getElementsByTagName("body")[0].appendChild(C("span"));Z.parentNode.removeChild(Z)}catch(aa){return}J=true;var X=U.length;for(var Y=0;Y0){for(var af=0;af0){var ae=c(Y);if(ae){if(F(o[af].swfVersion)&&!(M.wk&&M.wk<312)){w(Y,true);if(ab){aa.success=true;aa.ref=z(Y);ab(aa)}}else{if(o[af].expressInstall&&A()){var ai={};ai.data=o[af].expressInstall;ai.width=ae.getAttribute("width")||"0";ai.height=ae.getAttribute("height")||"0";if(ae.getAttribute("class")){ai.styleclass=ae.getAttribute("class")}if(ae.getAttribute("align")){ai.align=ae.getAttribute("align")}var ah={};var X=ae.getElementsByTagName("param");var ac=X.length;for(var ad=0;ad'}}aa.outerHTML='"+af+"";N[N.length]=ai.id;X=c(ai.id)}else{var Z=C(r);Z.setAttribute("type",q);for(var ac in ai){if(ai[ac]!=Object.prototype[ac]){if(ac.toLowerCase()=="styleclass"){Z.setAttribute("class",ai[ac])}else{if(ac.toLowerCase()!="classid"){Z.setAttribute(ac,ai[ac])}}}}for(var ab in ag){if(ag[ab]!=Object.prototype[ab]&&ab.toLowerCase()!="movie"){e(Z,ab,ag[ab])}}aa.parentNode.replaceChild(Z,aa);X=Z}}return X}function e(Z,X,Y){var aa=C("param");aa.setAttribute("name",X);aa.setAttribute("value",Y);Z.appendChild(aa)}function y(Y){var X=c(Y);if(X&&X.nodeName=="OBJECT"){if(M.ie&&M.win){X.style.display="none";(function(){if(X.readyState==4){b(Y)}else{setTimeout(arguments.callee,10)}})()}else{X.parentNode.removeChild(X)}}}function b(Z){var Y=c(Z);if(Y){for(var X in Y){if(typeof Y[X]=="function"){Y[X]=null}}Y.parentNode.removeChild(Y)}}function c(Z){var X=null;try{X=j.getElementById(Z)}catch(Y){}return X}function C(X){return j.createElement(X)}function i(Z,X,Y){Z.attachEvent(X,Y);I[I.length]=[Z,X,Y]}function F(Z){var Y=M.pv,X=Z.split(".");X[0]=parseInt(X[0],10);X[1]=parseInt(X[1],10)||0;X[2]=parseInt(X[2],10)||0;return(Y[0]>X[0]||(Y[0]==X[0]&&Y[1]>X[1])||(Y[0]==X[0]&&Y[1]==X[1]&&Y[2]>=X[2]))?true:false}function v(ac,Y,ad,ab){if(M.ie&&M.mac){return}var aa=j.getElementsByTagName("head")[0];if(!aa){return}var X=(ad&&typeof ad=="string")?ad:"screen";if(ab){n=null;G=null}if(!n||G!=X){var Z=C("style");Z.setAttribute("type","text/css");Z.setAttribute("media",X);n=aa.appendChild(Z);if(M.ie&&M.win&&typeof j.styleSheets!=D&&j.styleSheets.length>0){n=j.styleSheets[j.styleSheets.length-1]}G=X}if(M.ie&&M.win){if(n&&typeof n.addRule==r){n.addRule(ac,Y)}}else{if(n&&typeof j.createTextNode!=D){n.appendChild(j.createTextNode(ac+" {"+Y+"}"))}}}function w(Z,X){if(!m){return}var Y=X?"visible":"hidden";if(J&&c(Z)){c(Z).style.visibility=Y}else{v("#"+Z,"visibility:"+Y)}}function L(Y){var Z=/[\\\"<>\.;]/;var X=Z.exec(Y)!=null;return X&&typeof encodeURIComponent!=D?encodeURIComponent(Y):Y}var d=function(){if(M.ie&&M.win){window.attachEvent("onunload",function(){var ac=I.length;for(var ab=0;ab +// License: New BSD License +// Reference: http://dev.w3.org/html5/websockets/ +// Reference: http://tools.ietf.org/html/draft-hixie-thewebsocketprotocol + +(function() { + + if ('undefined' == typeof window || window.WebSocket) return; + + var console = window.console; + if (!console || !console.log || !console.error) { + console = {log: function(){ }, error: function(){ }}; + } + + if (!swfobject.hasFlashPlayerVersion("10.0.0")) { + console.error("Flash Player >= 10.0.0 is required."); + return; + } + if (location.protocol == "file:") { + console.error( + "WARNING: web-socket-js doesn't work in file:///... URL " + + "unless you set Flash Security Settings properly. " + + "Open the page via Web server i.e. http://..."); + } + + /** + * This class represents a faux web socket. + * @param {string} url + * @param {array or string} protocols + * @param {string} proxyHost + * @param {int} proxyPort + * @param {string} headers + */ + WebSocket = function(url, protocols, proxyHost, proxyPort, headers) { + var self = this; + self.__id = WebSocket.__nextId++; + WebSocket.__instances[self.__id] = self; + self.readyState = WebSocket.CONNECTING; + self.bufferedAmount = 0; + self.__events = {}; + if (!protocols) { + protocols = []; + } else if (typeof protocols == "string") { + protocols = [protocols]; + } + // Uses setTimeout() to make sure __createFlash() runs after the caller sets ws.onopen etc. + // Otherwise, when onopen fires immediately, onopen is called before it is set. + setTimeout(function() { + WebSocket.__addTask(function() { + WebSocket.__flash.create( + self.__id, url, protocols, proxyHost || null, proxyPort || 0, headers || null); + }); + }, 0); + }; + + /** + * Send data to the web socket. + * @param {string} data The data to send to the socket. + * @return {boolean} True for success, false for failure. + */ + WebSocket.prototype.send = function(data) { + if (this.readyState == WebSocket.CONNECTING) { + throw "INVALID_STATE_ERR: Web Socket connection has not been established"; + } + // We use encodeURIComponent() here, because FABridge doesn't work if + // the argument includes some characters. We don't use escape() here + // because of this: + // https://developer.mozilla.org/en/Core_JavaScript_1.5_Guide/Functions#escape_and_unescape_Functions + // But it looks decodeURIComponent(encodeURIComponent(s)) doesn't + // preserve all Unicode characters either e.g. "\uffff" in Firefox. + // Note by wtritch: Hopefully this will not be necessary using ExternalInterface. Will require + // additional testing. + var result = WebSocket.__flash.send(this.__id, encodeURIComponent(data)); + if (result < 0) { // success + return true; + } else { + this.bufferedAmount += result; + return false; + } + }; + + /** + * Close this web socket gracefully. + */ + WebSocket.prototype.close = function() { + if (this.readyState == WebSocket.CLOSED || this.readyState == WebSocket.CLOSING) { + return; + } + this.readyState = WebSocket.CLOSING; + WebSocket.__flash.close(this.__id); + }; + + /** + * Implementation of {@link DOM 2 EventTarget Interface} + * + * @param {string} type + * @param {function} listener + * @param {boolean} useCapture + * @return void + */ + WebSocket.prototype.addEventListener = function(type, listener, useCapture) { + if (!(type in this.__events)) { + this.__events[type] = []; + } + this.__events[type].push(listener); + }; + + /** + * Implementation of {@link DOM 2 EventTarget Interface} + * + * @param {string} type + * @param {function} listener + * @param {boolean} useCapture + * @return void + */ + WebSocket.prototype.removeEventListener = function(type, listener, useCapture) { + if (!(type in this.__events)) return; + var events = this.__events[type]; + for (var i = events.length - 1; i >= 0; --i) { + if (events[i] === listener) { + events.splice(i, 1); + break; + } + } + }; + + /** + * Implementation of {@link DOM 2 EventTarget Interface} + * + * @param {Event} event + * @return void + */ + WebSocket.prototype.dispatchEvent = function(event) { + var events = this.__events[event.type] || []; + for (var i = 0; i < events.length; ++i) { + events[i](event); + } + var handler = this["on" + event.type]; + if (handler) handler(event); + }; + + /** + * Handles an event from Flash. + * @param {Object} flashEvent + */ + WebSocket.prototype.__handleEvent = function(flashEvent) { + if ("readyState" in flashEvent) { + this.readyState = flashEvent.readyState; + } + if ("protocol" in flashEvent) { + this.protocol = flashEvent.protocol; + } + + var jsEvent; + if (flashEvent.type == "open" || flashEvent.type == "error") { + jsEvent = this.__createSimpleEvent(flashEvent.type); + } else if (flashEvent.type == "close") { + // TODO implement jsEvent.wasClean + jsEvent = this.__createSimpleEvent("close"); + } else if (flashEvent.type == "message") { + var data = decodeURIComponent(flashEvent.message); + jsEvent = this.__createMessageEvent("message", data); + } else { + throw "unknown event type: " + flashEvent.type; + } + + this.dispatchEvent(jsEvent); + }; + + WebSocket.prototype.__createSimpleEvent = function(type) { + if (document.createEvent && window.Event) { + var event = document.createEvent("Event"); + event.initEvent(type, false, false); + return event; + } else { + return {type: type, bubbles: false, cancelable: false}; + } + }; + + WebSocket.prototype.__createMessageEvent = function(type, data) { + if (document.createEvent && window.MessageEvent && !window.opera) { + var event = document.createEvent("MessageEvent"); + event.initMessageEvent("message", false, false, data, null, null, window, null); + return event; + } else { + // IE and Opera, the latter one truncates the data parameter after any 0x00 bytes. + return {type: type, data: data, bubbles: false, cancelable: false}; + } + }; + + /** + * Define the WebSocket readyState enumeration. + */ + WebSocket.CONNECTING = 0; + WebSocket.OPEN = 1; + WebSocket.CLOSING = 2; + WebSocket.CLOSED = 3; + + WebSocket.__flash = null; + WebSocket.__instances = {}; + WebSocket.__tasks = []; + WebSocket.__nextId = 0; + + /** + * Load a new flash security policy file. + * @param {string} url + */ + WebSocket.loadFlashPolicyFile = function(url){ + WebSocket.__addTask(function() { + WebSocket.__flash.loadManualPolicyFile(url); + }); + }; + + /** + * Loads WebSocketMain.swf and creates WebSocketMain object in Flash. + */ + WebSocket.__initialize = function() { + if (WebSocket.__flash) return; + + if (WebSocket.__swfLocation) { + // For backword compatibility. + window.WEB_SOCKET_SWF_LOCATION = WebSocket.__swfLocation; + } + if (!window.WEB_SOCKET_SWF_LOCATION) { + console.error("[WebSocket] set WEB_SOCKET_SWF_LOCATION to location of WebSocketMain.swf"); + return; + } + var container = document.createElement("div"); + container.id = "webSocketContainer"; + // Hides Flash box. We cannot use display: none or visibility: hidden because it prevents + // Flash from loading at least in IE. So we move it out of the screen at (-100, -100). + // But this even doesn't work with Flash Lite (e.g. in Droid Incredible). So with Flash + // Lite, we put it at (0, 0). This shows 1x1 box visible at left-top corner but this is + // the best we can do as far as we know now. + container.style.position = "absolute"; + if (WebSocket.__isFlashLite()) { + container.style.left = "0px"; + container.style.top = "0px"; + } else { + container.style.left = "-100px"; + container.style.top = "-100px"; + } + var holder = document.createElement("div"); + holder.id = "webSocketFlash"; + container.appendChild(holder); + document.body.appendChild(container); + // See this article for hasPriority: + // http://help.adobe.com/en_US/as3/mobile/WS4bebcd66a74275c36cfb8137124318eebc6-7ffd.html + swfobject.embedSWF( + WEB_SOCKET_SWF_LOCATION, + "webSocketFlash", + "1" /* width */, + "1" /* height */, + "10.0.0" /* SWF version */, + null, + null, + {hasPriority: true, swliveconnect : true, allowScriptAccess: "always"}, + null, + function(e) { + if (!e.success) { + console.error("[WebSocket] swfobject.embedSWF failed"); + } + }); + }; + + /** + * Called by Flash to notify JS that it's fully loaded and ready + * for communication. + */ + WebSocket.__onFlashInitialized = function() { + // We need to set a timeout here to avoid round-trip calls + // to flash during the initialization process. + setTimeout(function() { + WebSocket.__flash = document.getElementById("webSocketFlash"); + WebSocket.__flash.setCallerUrl(location.href); + WebSocket.__flash.setDebug(!!window.WEB_SOCKET_DEBUG); + for (var i = 0; i < WebSocket.__tasks.length; ++i) { + WebSocket.__tasks[i](); + } + WebSocket.__tasks = []; + }, 0); + }; + + /** + * Called by Flash to notify WebSockets events are fired. + */ + WebSocket.__onFlashEvent = function() { + setTimeout(function() { + try { + // Gets events using receiveEvents() instead of getting it from event object + // of Flash event. This is to make sure to keep message order. + // It seems sometimes Flash events don't arrive in the same order as they are sent. + var events = WebSocket.__flash.receiveEvents(); + for (var i = 0; i < events.length; ++i) { + WebSocket.__instances[events[i].webSocketId].__handleEvent(events[i]); + } + } catch (e) { + console.error(e); + } + }, 0); + return true; + }; + + // Called by Flash. + WebSocket.__log = function(message) { + console.log(decodeURIComponent(message)); + }; + + // Called by Flash. + WebSocket.__error = function(message) { + console.error(decodeURIComponent(message)); + }; + + WebSocket.__addTask = function(task) { + if (WebSocket.__flash) { + task(); + } else { + WebSocket.__tasks.push(task); + } + }; + + /** + * Test if the browser is running flash lite. + * @return {boolean} True if flash lite is running, false otherwise. + */ + WebSocket.__isFlashLite = function() { + if (!window.navigator || !window.navigator.mimeTypes) { + return false; + } + var mimeType = window.navigator.mimeTypes["application/x-shockwave-flash"]; + if (!mimeType || !mimeType.enabledPlugin || !mimeType.enabledPlugin.filename) { + return false; + } + return mimeType.enabledPlugin.filename.match(/flashlite/i) ? true : false; + }; + + if (!window.WEB_SOCKET_DISABLE_AUTO_INITIALIZATION) { + if (window.addEventListener) { + window.addEventListener("load", function(){ + WebSocket.__initialize(); + }, false); + } else { + window.attachEvent("onload", function(){ + WebSocket.__initialize(); + }); + } + } + +})(); + +/** + * socket.io + * Copyright(c) 2011 LearnBoost + * MIT Licensed + */ + +(function (exports, io, global) { + + /** + * Expose constructor. + * + * @api public + */ + + exports.XHR = XHR; + + /** + * XHR constructor + * + * @costructor + * @api public + */ + + function XHR (socket) { + if (!socket) return; + + io.Transport.apply(this, arguments); + this.sendBuffer = []; + }; + + /** + * Inherits from Transport. + */ + + io.util.inherit(XHR, io.Transport); + + /** + * Establish a connection + * + * @returns {Transport} + * @api public + */ + + XHR.prototype.open = function () { + this.socket.setBuffer(false); + this.onOpen(); + this.get(); + + // we need to make sure the request succeeds since we have no indication + // whether the request opened or not until it succeeded. + this.setCloseTimeout(); + + return this; + }; + + /** + * Check if we need to send data to the Socket.IO server, if we have data in our + * buffer we encode it and forward it to the `post` method. + * + * @api private + */ + + XHR.prototype.payload = function (payload) { + var msgs = []; + + for (var i = 0, l = payload.length; i < l; i++) { + msgs.push(io.parser.encodePacket(payload[i])); + } + + this.send(io.parser.encodePayload(msgs)); + }; + + /** + * Send data to the Socket.IO server. + * + * @param data The message + * @returns {Transport} + * @api public + */ + + XHR.prototype.send = function (data) { + this.post(data); + return this; + }; + + /** + * Posts a encoded message to the Socket.IO server. + * + * @param {String} data A encoded message. + * @api private + */ + + function empty () { }; + + XHR.prototype.post = function (data) { + var self = this; + this.socket.setBuffer(true); + + function stateChange () { + if (this.readyState == 4) { + this.onreadystatechange = empty; + self.posting = false; + + if (this.status == 200){ + self.socket.setBuffer(false); + } else { + self.onClose(); + } + } + } + + function onload () { + this.onload = empty; + self.socket.setBuffer(false); + }; + + this.sendXHR = this.request('POST'); + + if (global.XDomainRequest && this.sendXHR instanceof XDomainRequest) { + this.sendXHR.onload = this.sendXHR.onerror = onload; + } else { + this.sendXHR.onreadystatechange = stateChange; + } + + this.sendXHR.send(data); + }; + + /** + * Disconnects the established `XHR` connection. + * + * @returns {Transport} + * @api public + */ + + XHR.prototype.close = function () { + this.onClose(); + return this; + }; + + /** + * Generates a configured XHR request + * + * @param {String} url The url that needs to be requested. + * @param {String} method The method the request should use. + * @returns {XMLHttpRequest} + * @api private + */ + + XHR.prototype.request = function (method) { + var req = io.util.request(this.socket.isXDomain()) + , query = io.util.query(this.socket.options.query, 't=' + +new Date); + + req.open(method || 'GET', this.prepareUrl() + query, true); + + if (method == 'POST') { + try { + if (req.setRequestHeader) { + req.setRequestHeader('Content-type', 'text/plain;charset=UTF-8'); + } else { + // XDomainRequest + req.contentType = 'text/plain'; + } + } catch (e) {} + } + + return req; + }; + + /** + * Returns the scheme to use for the transport URLs. + * + * @api private + */ + + XHR.prototype.scheme = function () { + return this.socket.options.secure ? 'https' : 'http'; + }; + + /** + * Check if the XHR transports are supported + * + * @param {Boolean} xdomain Check if we support cross domain requests. + * @returns {Boolean} + * @api public + */ + + XHR.check = function (socket, xdomain) { + try { + var request = io.util.request(xdomain), + usesXDomReq = (global.XDomainRequest && request instanceof XDomainRequest), + socketProtocol = (socket && socket.options && socket.options.secure ? 'https:' : 'http:'), + isXProtocol = (global.location && socketProtocol != global.location.protocol); + if (request && !(usesXDomReq && isXProtocol)) { + return true; + } + } catch(e) {} + + return false; + }; + + /** + * Check if the XHR transport supports cross domain requests. + * + * @returns {Boolean} + * @api public + */ + + XHR.xdomainCheck = function (socket) { + return XHR.check(socket, true); + }; + +})( + 'undefined' != typeof io ? io.Transport : module.exports + , 'undefined' != typeof io ? io : module.parent.exports + , this +); +/** + * socket.io + * Copyright(c) 2011 LearnBoost + * MIT Licensed + */ + +(function (exports, io) { + + /** + * Expose constructor. + */ + + exports.htmlfile = HTMLFile; + + /** + * The HTMLFile transport creates a `forever iframe` based transport + * for Internet Explorer. Regular forever iframe implementations will + * continuously trigger the browsers buzy indicators. If the forever iframe + * is created inside a `htmlfile` these indicators will not be trigged. + * + * @constructor + * @extends {io.Transport.XHR} + * @api public + */ + + function HTMLFile (socket) { + io.Transport.XHR.apply(this, arguments); + }; + + /** + * Inherits from XHR transport. + */ + + io.util.inherit(HTMLFile, io.Transport.XHR); + + /** + * Transport name + * + * @api public + */ + + HTMLFile.prototype.name = 'htmlfile'; + + /** + * Creates a new Ac...eX `htmlfile` with a forever loading iframe + * that can be used to listen to messages. Inside the generated + * `htmlfile` a reference will be made to the HTMLFile transport. + * + * @api private + */ + + HTMLFile.prototype.get = function () { + this.doc = new window[(['Active'].concat('Object').join('X'))]('htmlfile'); + this.doc.open(); + this.doc.write(''); + this.doc.close(); + this.doc.parentWindow.s = this; + + var iframeC = this.doc.createElement('div'); + iframeC.className = 'socketio'; + + this.doc.body.appendChild(iframeC); + this.iframe = this.doc.createElement('iframe'); + + iframeC.appendChild(this.iframe); + + var self = this + , query = io.util.query(this.socket.options.query, 't='+ +new Date); + + this.iframe.src = this.prepareUrl() + query; + + io.util.on(window, 'unload', function () { + self.destroy(); + }); + }; + + /** + * The Socket.IO server will write script tags inside the forever + * iframe, this function will be used as callback for the incoming + * information. + * + * @param {String} data The message + * @param {document} doc Reference to the context + * @api private + */ + + HTMLFile.prototype._ = function (data, doc) { + this.onData(data); + try { + var script = doc.getElementsByTagName('script')[0]; + script.parentNode.removeChild(script); + } catch (e) { } + }; + + /** + * Destroy the established connection, iframe and `htmlfile`. + * And calls the `CollectGarbage` function of Internet Explorer + * to release the memory. + * + * @api private + */ + + HTMLFile.prototype.destroy = function () { + if (this.iframe){ + try { + this.iframe.src = 'about:blank'; + } catch(e){} + + this.doc = null; + this.iframe.parentNode.removeChild(this.iframe); + this.iframe = null; + + CollectGarbage(); + } + }; + + /** + * Disconnects the established connection. + * + * @returns {Transport} Chaining. + * @api public + */ + + HTMLFile.prototype.close = function () { + this.destroy(); + return io.Transport.XHR.prototype.close.call(this); + }; + + /** + * Checks if the browser supports this transport. The browser + * must have an `Ac...eXObject` implementation. + * + * @return {Boolean} + * @api public + */ + + HTMLFile.check = function (socket) { + if (typeof window != "undefined" && (['Active'].concat('Object').join('X')) in window){ + try { + var a = new window[(['Active'].concat('Object').join('X'))]('htmlfile'); + return a && io.Transport.XHR.check(socket); + } catch(e){} + } + return false; + }; + + /** + * Check if cross domain requests are supported. + * + * @returns {Boolean} + * @api public + */ + + HTMLFile.xdomainCheck = function () { + // we can probably do handling for sub-domains, we should + // test that it's cross domain but a subdomain here + return false; + }; + + /** + * Add the transport to your public io.transports array. + * + * @api private + */ + + io.transports.push('htmlfile'); + +})( + 'undefined' != typeof io ? io.Transport : module.exports + , 'undefined' != typeof io ? io : module.parent.exports +); + +/** + * socket.io + * Copyright(c) 2011 LearnBoost + * MIT Licensed + */ + +(function (exports, io, global) { + + /** + * Expose constructor. + */ + + exports['xhr-polling'] = XHRPolling; + + /** + * The XHR-polling transport uses long polling XHR requests to create a + * "persistent" connection with the server. + * + * @constructor + * @api public + */ + + function XHRPolling () { + io.Transport.XHR.apply(this, arguments); + }; + + /** + * Inherits from XHR transport. + */ + + io.util.inherit(XHRPolling, io.Transport.XHR); + + /** + * Merge the properties from XHR transport + */ + + io.util.merge(XHRPolling, io.Transport.XHR); + + /** + * Transport name + * + * @api public + */ + + XHRPolling.prototype.name = 'xhr-polling'; + + /** + * Indicates whether heartbeats is enabled for this transport + * + * @api private + */ + + XHRPolling.prototype.heartbeats = function () { + return false; + }; + + /** + * Establish a connection, for iPhone and Android this will be done once the page + * is loaded. + * + * @returns {Transport} Chaining. + * @api public + */ + + XHRPolling.prototype.open = function () { + var self = this; + + io.Transport.XHR.prototype.open.call(self); + return false; + }; + + /** + * Starts a XHR request to wait for incoming messages. + * + * @api private + */ + + function empty () {}; + + XHRPolling.prototype.get = function () { + if (!this.isOpen) return; + + var self = this; + + function stateChange () { + if (this.readyState == 4) { + this.onreadystatechange = empty; + + if (this.status == 200) { + self.onData(this.responseText); + self.get(); + } else { + self.onClose(); + } + } + }; + + function onload () { + this.onload = empty; + this.onerror = empty; + self.retryCounter = 1; + self.onData(this.responseText); + self.get(); + }; + + function onerror () { + self.retryCounter ++; + if(!self.retryCounter || self.retryCounter > 3) { + self.onClose(); + } else { + self.get(); + } + }; + + this.xhr = this.request(); + + if (global.XDomainRequest && this.xhr instanceof XDomainRequest) { + this.xhr.onload = onload; + this.xhr.onerror = onerror; + } else { + this.xhr.onreadystatechange = stateChange; + } + + this.xhr.send(null); + }; + + /** + * Handle the unclean close behavior. + * + * @api private + */ + + XHRPolling.prototype.onClose = function () { + io.Transport.XHR.prototype.onClose.call(this); + + if (this.xhr) { + this.xhr.onreadystatechange = this.xhr.onload = this.xhr.onerror = empty; + try { + this.xhr.abort(); + } catch(e){} + this.xhr = null; + } + }; + + /** + * Webkit based browsers show a infinit spinner when you start a XHR request + * before the browsers onload event is called so we need to defer opening of + * the transport until the onload event is called. Wrapping the cb in our + * defer method solve this. + * + * @param {Socket} socket The socket instance that needs a transport + * @param {Function} fn The callback + * @api private + */ + + XHRPolling.prototype.ready = function (socket, fn) { + var self = this; + + io.util.defer(function () { + fn.call(self); + }); + }; + + /** + * Add the transport to your public io.transports array. + * + * @api private + */ + + io.transports.push('xhr-polling'); + +})( + 'undefined' != typeof io ? io.Transport : module.exports + , 'undefined' != typeof io ? io : module.parent.exports + , this +); + +/** + * socket.io + * Copyright(c) 2011 LearnBoost + * MIT Licensed + */ + +(function (exports, io, global) { + /** + * There is a way to hide the loading indicator in Firefox. If you create and + * remove a iframe it will stop showing the current loading indicator. + * Unfortunately we can't feature detect that and UA sniffing is evil. + * + * @api private + */ + + var indicator = global.document && "MozAppearance" in + global.document.documentElement.style; + + /** + * Expose constructor. + */ + + exports['jsonp-polling'] = JSONPPolling; + + /** + * The JSONP transport creates an persistent connection by dynamically + * inserting a script tag in the page. This script tag will receive the + * information of the Socket.IO server. When new information is received + * it creates a new script tag for the new data stream. + * + * @constructor + * @extends {io.Transport.xhr-polling} + * @api public + */ + + function JSONPPolling (socket) { + io.Transport['xhr-polling'].apply(this, arguments); + + this.index = io.j.length; + + var self = this; + + io.j.push(function (msg) { + self._(msg); + }); + }; + + /** + * Inherits from XHR polling transport. + */ + + io.util.inherit(JSONPPolling, io.Transport['xhr-polling']); + + /** + * Transport name + * + * @api public + */ + + JSONPPolling.prototype.name = 'jsonp-polling'; + + /** + * Posts a encoded message to the Socket.IO server using an iframe. + * The iframe is used because script tags can create POST based requests. + * The iframe is positioned outside of the view so the user does not + * notice it's existence. + * + * @param {String} data A encoded message. + * @api private + */ + + JSONPPolling.prototype.post = function (data) { + var self = this + , query = io.util.query( + this.socket.options.query + , 't='+ (+new Date) + '&i=' + this.index + ); + + if (!this.form) { + var form = document.createElement('form') + , area = document.createElement('textarea') + , id = this.iframeId = 'socketio_iframe_' + this.index + , iframe; + + form.className = 'socketio'; + form.style.position = 'absolute'; + form.style.top = '0px'; + form.style.left = '0px'; + form.style.display = 'none'; + form.target = id; + form.method = 'POST'; + form.setAttribute('accept-charset', 'utf-8'); + area.name = 'd'; + form.appendChild(area); + document.body.appendChild(form); + + this.form = form; + this.area = area; + } + + this.form.action = this.prepareUrl() + query; + + function complete () { + initIframe(); + self.socket.setBuffer(false); + }; + + function initIframe () { + if (self.iframe) { + self.form.removeChild(self.iframe); + } + + try { + // ie6 dynamic iframes with target="" support (thanks Chris Lambacher) + iframe = document.createElement(''; +html += '
      '; +html += '
      '; +html += '
      Upload File
      '; +html += '
      Want to upload multiple files at once? Please upgrade to the latest Flash Player, then reload this page. For some reason our Flash based uploader did not load, so you are currently using our single file uploader.
      '; +html += spacer(1,20) + '
      '; +var url = zero_client.targetURL; +if (url.indexOf('?') > -1) url += '&'; else url += '?'; +url += 'format=jshtml&onafter=' + escape('window.parent.upload_basic_finish(response);'); +Debug.trace('upload', "Prepping basic upload: " + url); +html += '
      '; +html += '
      '; +html += '
      '; +html += '

      '; +html += ''; +html += ''; +html += ''; +html += '
      ' + large_icon_button('x', 'Cancel', "hide_popup_dialog()") + ' ' + large_icon_button('page_white_get.png', 'Upload', "upload_basic_go()") + '
      '; +html += '
      '; +html += ''; +html += '
      '; +html += ''; +session.hooks.keys[ESC_KEY] = 'hide_popup_dialog'; +show_popup_dialog(528, 200, html); +} +function upload_basic_go() { +$('f_upload_basic').submit(); +$('d_upload_form').hide(); +$('d_upload_progress').show(); +} +function upload_basic_finish(response) { +Debug.trace('upload', "Basic upload complete: " + dumper(response)); +setTimeout( 'upload_basic_finish_2()', 100 ); +} +function upload_basic_finish_2() { +$('i_upload_basic').src = 'blank.html'; +setTimeout( 'upload_basic_finish_3()', 100 ); +} +function upload_basic_finish_3() { +hide_popup_dialog(); +delete session.progress; +show_progress_dialog( 0, 'Finishing Upload...', true ); +fire_callback( session.upload_callback ); +} +function upload_destroy() { +if (zero_client) { +zero_client.destroy(); +delete ZeroUpload.clients[ zero_client.id ]; +zero_client = null; +} +} +function prep_upload(dom_id, url, callback, types) { +session.upload_callback = callback; +if (url) { +if (url.indexOf('?') > -1) url += '&'; else url += '?'; +url += 'session=' + session.cookie.get('effect_session_id'); +} +upload_destroy(); +zero_client = new ZeroUpload.Client(); +if (url) zero_client.setURL( url ); +zero_client.setHandCursor( true ); +if (types) zero_client.setFileTypes( types[0], types[1] ); +zero_client.addEventListener( 'queueStart', uploadQueueStart ); +zero_client.addEventListener( 'fileStart', uploadFileStart ); +zero_client.addEventListener( 'progress', uploadProgress ); +zero_client.addEventListener( 'fileComplete', uploadFileComplete ); +zero_client.addEventListener( 'queueComplete', uploadQueueComplete ); +zero_client.addEventListener( 'error', uploadError ); +zero_client.addEventListener( 'debug', function(client, eventName, args) { +Debug.trace('upload', "Caught event: " + eventName); +} ); +if (dom_id) { +Debug.trace('upload', "Gluing ZeroUpload to: " + dom_id); +zero_client.glue( dom_id ); +} +} +Class.create( 'Debug', { +__static: { +enabled: false, +categories: { all: 1 }, +buffer: [], +max_rows: 5000, +win: null, +ie: !!navigator.userAgent.match(/MSIE/), +ie6: !!navigator.userAgent.match(/MSIE\D+6/), +init: function() { +Debug.enabled = true; +Debug.trace( 'debug', 'Debug log start' ); +var html = '

      '; +if (Debug.ie) { +setTimeout( function() { +document.body.insertAdjacentHTML('beforeEnd', +'
      ' + html + '
      ' +); +}, 1000 ); +} +else { +var div = document.createElement('DIV'); +div.id = 'd_debug'; +div.setAttribute('id', 'd_debug'); +div.style.position = Debug.ie6 ? 'absolute' : 'fixed'; +div.style.zIndex = '101'; +div.style.left = '0px'; +div.style.top = '0px'; +div.style.width = '100%'; +div.innerHTML = html; +document.getElementsByTagName('body')[0].appendChild(div); +} +}, +show: function() { +if (!Debug.win || Debug.win.closed) { +Debug.trace('debug', "Opening debug window"); +Debug.win = window.open( '', 'DebugWindow', 'width=600,height=500,menubar=no,resizable=yes,scrollbars=yes,location=no,status=no,toolbar=no,directories=no' ); +if (!Debug.win) return alert("Failed to open window. Popup blocker maybe?"); +var doc = Debug.win.document; +doc.open(); +doc.writeln( 'Debug Log' ); +doc.writeln( '
      ' ); +doc.writeln( '
      ' ); +doc.writeln( '
      ' ); +doc.writeln( '' ); +doc.writeln( '' ); +doc.writeln( '
      ' ); +doc.writeln( '' ); +doc.close(); +} +Debug.win.focus(); +}, +console_execute: function() { +var cmd = Debug.win.document.getElementById('fe_command'); +if (cmd.value.length) { +Debug.trace( 'console', cmd.value ); +try { +Debug.trace( 'console', '' + eval(cmd.value) ); +} +catch (e) { +Debug.trace( 'error', 'JavaScript Interpreter Exception: ' + e.toString() ); +} +} +}, +get_time_stamp: function(now) { +var date = new Date( now * 1000 ); +var hh = date.getHours(); if (hh < 10) hh = "0" + hh; +var mi = date.getMinutes(); if (mi < 10) mi = "0" + mi; +var ss = date.getSeconds(); if (ss < 10) ss = "0" + ss; +var sss = '' + date.getMilliseconds(); while (sss.length < 3) sss = "0" + sss; +return '' + hh + ':' + mi + ':' + ss + '.' + sss; +}, +refresh_console: function() { +if (!Debug.win || Debug.win.closed) return; +var div = Debug.win.document.getElementById('d_debug_log'); +if (div) { +var row = null; +while ( row = Debug.buffer.shift() ) { +var time_stamp = Debug.get_time_stamp(row.time); +var msg = row.msg; +msg = msg.replace(/\t/g, "    "); +msg = msg.replace(//g, ">"); +msg = msg.replace(/\n/g, "
      \n"); +var html = ''; +var sty = 'float:left; font-family: Consolas, Courier, mono; font-size: 12px; cursor:default; margin-right:10px; margin-bottom:1px; padding:2px;'; +html += '
      ' + time_stamp + '
      '; +html += '
      ' + row.cat + '
      '; +html += '
      ' + msg + '
      '; +html += '
      '; +var chunk = Debug.win.document.createElement('DIV'); +chunk.style['float'] = 'none'; +chunk.innerHTML = html; +div.appendChild(chunk); +} +var cmd = Debug.win.document.getElementById('fe_command'); +cmd.focus(); +} +Debug.dirty = 0; +Debug.win.scrollTo(0, 99999); +}, +hires_time_now: function() { +var now = new Date(); +return ( now.getTime() / 1000 ); +}, +trace: function(cat, msg) { +if (arguments.length == 1) { +msg = cat; +cat = 'debug'; +} +if (Debug.categories.all || Debug.categories[cat]) { +Debug.buffer.push({ cat: cat, msg: msg, time: Debug.hires_time_now() }); +if (Debug.buffer.length > Debug.max_rows) Debug.buffer.shift(); +if (!Debug.dirty) { +Debug.dirty = 1; +setTimeout( 'Debug.refresh_console();', 1 ); +} +} +} +} +} ); +var session = { +inited: false, +api_mod_cache: {}, +query: parseQueryString( ''+location.search ), +cookie: new CookieTree({ path: '/effect/' }), +storage: {}, +storage_dirty: false, +hooks: { +keys: {} +}, +username: '', +em_width: 11, +audioResourceMatch: /\.mp3$/i, +imageResourceMatch: /\.(jpe|jpeg|jpg|png|gif)$/i, +textResourceMatch: /\.xml$/i, +movieResourceMatch: /\.(flv|mp4|mp4v|mov|3gp|3g2)$/i, +imageResourceMatchString: '\.(jpe|jpeg|jpg|png|gif)$' +}; +session.debug = session.query.debug ? true : false; +var page_manager = null; +var preload_icons = []; +var preload_images = [ +'loading.gif', +'aquaprogressbar.gif', +'aquaprogressbar_bkgnd.gif' +]; +function get_base_url() { +return protocol + '://' + location.hostname + session.config.BaseURI; +} +function effect_init() { +if (session.inited) return; +session.inited = true; +assert( window.config, "Config not loaded" ); +session.config = window.config; +Debug.trace("Starting up"); +rendering_page = false; +preload(); +window.$R = {}; +for (var key in config.RegExpShortcuts) { +$R[key] = new RegExp( config.RegExpShortcuts[key] ); +} +ww_precalc_font("body", "effect_precalc_font_finish"); +page_manager = new Effect.PageManager( config.Pages.Page ); +var session_id = session.cookie.get('effect_session_id'); +if (session_id && session_id.match(/^login/)) { +do_session_recover(); +} +else { +show_default_login_status(); +Nav.init(); +} +Blog.search({ +stag: 'sidebar_docs', +limit: 20, +title_only: true, +sort_by: 'seq', +sort_dir: -1, +target: 'd_sidebar_documents', +outer_div_class: 'sidebar_blog_row', +title_class: 'sidebar_blog_title', +after: '' +}); +Blog.search({ +stag: 'sidebar_tutorials', +limit: 5, +title_only: true, +sort_by: 'seq', +sort_dir: -1, +target: 'd_sidebar_tutorials', +outer_div_class: 'sidebar_blog_row', +title_class: 'sidebar_blog_title', +after: '' +}); +Blog.search({ +stag: 'sidebar_plugins', +limit: 5, +title_only: true, +sort_by: 'seq', +sort_dir: -1, +target: 'd_sidebar_plugins', +outer_div_class: 'sidebar_blog_row', +title_class: 'sidebar_blog_title', +after: '' +}); +$('fe_search_bar').onkeydown = delay_onChange_input_text; +user_storage_idle(); +} +function effect_precalc_font_finish(width, height) { +session.em_width = width; +} +function preload() { +for (var idx = 0, len = preload_icons.length; idx < len; idx++) { +var url = images_uri + '/icons/' + preload_icons[idx] + '.gif'; +preload_icons[idx] = new Image(); +preload_icons[idx].src = url; +} +for (var idx = 0, len = preload_images.length; idx < len; idx++) { +var url = images_uri + '/' + preload_images[idx]; +preload_images[idx] = new Image(); +preload_images[idx].src = url; +} +} +function $P(id) { +if (!id) id = page_manager.current_page_id; +var page = page_manager.find(id); +assert( !!page, "Failed to locate page: " + id ); +return page; +} +function get_pref(name) { +if (!session.user || !session.user.Preferences) return alert("ASSERT FAILURE! Tried to lookup pref " + name + " and user is not yet loaded!"); +return session.user.Preferences[name]; +} +function get_bool_pref(name) { +return (get_pref(name) == 1); +} +function set_pref(name, value) { +session.user.Preferences[name] = value; +} +function set_bool_pref(name, value) { +set_pref(name, value ? '1' : '0'); +} +function save_prefs() { +var prefs_to_save = {}; +if (arguments.length) { +for (var idx = 0, len = arguments.length; idx < len; idx++) { +var key = arguments[idx]; +prefs_to_save[key] = get_pref(key); +} +} +else prefs_to_save = session.user.Preferences; +effect_api_mod_touch('user_get'); +effect_api_send('user_update', { +Username: session.username, +Preferences: prefs_to_save +}, 'save_prefs_2'); +} +function save_prefs_2(response) { +do_message('success', 'Preferences saved.'); +} + +function get_full_name(username) { +var user = session.users[username]; +if (!user) return username; +return user.FullName; +} +function get_buddy_icon_url(username, size) { +var mod = session.api_mod_cache.get_buddy_icon || 0; +if (!size) size = 32; +var url = '/effect/api/get_buddy_icon?username='+username + '&mod=' + mod + '&size=' + size; +return url; +} +function get_buddy_icon_display(username, show_icon, show_name) { +if ((typeof(show_icon) == 'undefined') && get_bool_pref('show_user_icons')) show_icon = 1; +if ((typeof(show_name) == 'undefined') && get_bool_pref('show_user_names')) show_name = 1; +var html = ''; +if (show_icon) html += ''; +if (show_icon && show_name) html += '
      '; +if (show_name) html += username; +return html; +} +function do_session_recover() { +session.hooks.after_error = 'do_logout'; +effect_api_send('session_recover', {}, 'do_login_2', { _from_recover: 1 } ); +} +function require_login() { +if (session.user) return true; +Debug.trace('Page requires login, showing login page'); +session.nav_after_login = Nav.currentAnchor(); +setTimeout( function() { +Nav.go( 'Login' ); +}, 1 ); +return false; +} +function popup_window(url, name) { +if (!url) url = ''; +if (!name) name = ''; +var win = window.open(url, name); +if (!win) return alert('Failed to open popup window. If you have a popup blocker, please disable it for this website and try again.'); +return win; +} +function do_login_prompt() { +hide_popup_dialog(); +delete session.progress; +if (!session.temp_password) session.temp_password = ''; +if (!session.username) session.username = ''; +var temp_username = session.open_id || session.username || ''; +var html = ''; +html += '
      '; +html += ' from table fragments + if ( !jQuery.support.tbody ) { + + // String was a
      '; +html += '
      Effect Developer Login
      '; +html += '
      '; +html += '
      Effect Username  or  '+icon('openid', 'OpenID', 'popup_window(\'http://openid.net/\')', 'What is OpenID?')+'


      '; +html += '
      '; +html += '
      '; +html += '

      '; +html += ''; +html += ''; +html += ''; +html += '
      ' + large_icon_button('x', 'Cancel', "clear_login()") + ' ' + large_icon_button('check', 'Login', 'do_login()') + '
      '; +html += '
      '; +html += ''; +session.hooks.keys[ENTER_KEY] = 'do_login'; +session.hooks.keys[ESC_KEY] = 'clear_login'; +safe_focus( 'fe_username' ); +show_popup_dialog(450, 225, html); +} +function do_openid_reg(title, auto_login_button) { +hide_popup_dialog(); +delete session.progress; +if (!title) title = 'Register Account Using OpenID'; +if (typeof(auto_login_button) == 'undefined') auto_login_button = 1; +var html = ''; +html += '
      '; +html += ']", "i"), + rcheckableType = /^(?:checkbox|radio)$/, + // checked="checked" or checked + rchecked = /checked\s*(?:[^=]|=\s*.checked.)/i, + rscriptType = /\/(java|ecma)script/i, + rcleanScript = /^\s*\s*$/g, + wrapMap = { + option: [ 1, "" ], + legend: [ 1, "
      ", "
      " ], + thead: [ 1, "
      '; +html += '
      '+title+'
      '; +html += '
      '; +html += '
      '+icon('openid', 'Enter Your OpenID URL:')+'
      '; +if (auto_login_button) html += '


      '; +html += '
      '; +html += '

      '; +html += ''; +html += ''; +html += ''; +html += '
      ' + large_icon_button('x', 'Cancel', "hide_popup_dialog()") + ' ' + large_icon_button('check', title.match(/login/i) ? 'Login' : 'Register', 'do_openid_login()') + '
      '; +html += '
      '; +html += ''; +session.hooks.keys[ENTER_KEY] = 'do_openid_login'; +session.hooks.keys[ESC_KEY] = 'hide_popup_dialog'; +safe_focus( 'fe_username' ); +show_popup_dialog(450, 225, html); +} +function do_login_prompt_2() { +hide_popup_dialog(); +delete session.progress; +if (!session.temp_password) session.temp_password = ''; +if (!session.username) session.username = ''; +var html = ''; +html += '
      '; +html += '"; + second_cell = ""; + row = $("").attr("id", "s" + index).attr("class", "location_row").html(first_cell + second_cell); + $locationsDiv.append(row); + } + if (index === this.numSearchToDisplay) { + $locationsDiv.append(""); + return $locationsDiv.append(""); + } + }, this); + return this.geocoder.geocode({ + address: address + }, __bind(function(result, status) { + if (status !== "OK") { + $('.error_message').html(t("Search Address Failed")).fadeIn(); + return; + } + _.each(result, showResults); + $("#search_results").html($locationsDiv); + this.locationChange("search"); + this.searchResults = result; + return this.displaySearchLoc(); + }, this)); + }; + ClientsRequestView.prototype.mouseoverLocation = function(e) { + var $el, id, marker; + $el = $(e.currentTarget); + id = $el.attr("id").substring(1); + marker = this.markers[id]; + return marker.setAnimation(google.maps.Animation.BOUNCE); + }; + ClientsRequestView.prototype.mouseoutLocation = function(e) { + var $el, id, marker; + $el = $(e.currentTarget); + id = $el.attr("id").substring(1); + marker = this.markers[id]; + return marker.setAnimation(null); + }; + ClientsRequestView.prototype.searchLocation = function(e) { + e.preventDefault(); + $("#address").val($(e.currentTarget).html()); + return this.searchAddress(); + }; + ClientsRequestView.prototype.favoriteClick = function(e) { + var index, location; + e.preventDefault(); + $(".favorites").attr("href", ""); + index = $(e.currentTarget).removeAttr("href").attr("id"); + location = new google.maps.LatLng(USER.locations[index].latitude, USER.locations[index].longitude); + return this.panToLocation(location); + }; + ClientsRequestView.prototype.clickLocation = function(e) { + var id; + id = $(e.currentTarget).attr("id").substring(1); + return this.panToLocation(this.markers[id].getPosition()); + }; + ClientsRequestView.prototype.panToLocation = function(location) { + this.map.panTo(location); + this.map.setZoom(16); + return this.pickup_icon.setPosition(location); + }; + ClientsRequestView.prototype.locationLinkHandle = function(e) { + var panelName; + e.preventDefault(); + panelName = $(e.currentTarget).attr("id"); + return this.locationChange(panelName); + }; + ClientsRequestView.prototype.locationChange = function(type) { + $(".locations_link").attr("href", "").css("font-weight", "normal"); + switch (type) { + case "favorite": + $(".search_results").attr("href", ""); + $(".locations_link#favorite").removeAttr("href").css("font-weight", "bold"); + $("#search_results").hide(); + $("#favorite_results").fadeIn(); + return this.displayFavLoc(); + case "search": + $(".favorites").attr("href", ""); + $(".locations_link#search").removeAttr("href").css("font-weight", "bold"); + $("#favorite_results").hide(); + $("#search_results").fadeIn(); + return this.displaySearchLoc(); + } + }; + ClientsRequestView.prototype.rateTrip = function(e) { + var rating; + rating = $(e.currentTarget).attr("id"); + $(".stars").attr("src", "/web/img/star_inactive.png"); + return _(rating).times(function(index) { + return $(".stars#" + (index + 1)).attr("src", "/web/img/star_active.png"); + }); + }; + ClientsRequestView.prototype.pickupHandle = function(e) { + var $el, callback, message; + e.preventDefault(); + $el = $(e.currentTarget).find("span"); + switch ($el.html()) { + case t("Request Pickup"): + _.delay(this.requestRide, 3000); + $("#status_message").html(t("Sending pickup request...")); + $el.html(t("Cancel Pickup")).parent().attr("class", "button_red"); + this.pickup_icon.setDraggable(false); + this.map.panTo(this.pickup_icon.getPosition()); + return this.map.setZoom(18); + case t("Cancel Pickup"): + if (this.status === "ready") { + $el.html(t("Request Pickup")).parent().attr("class", "button_green"); + return this.pickup_icon.setDraggable(true); + } else { + callback = __bind(function(v, m, f) { + if (v) { + this.AskDispatch("PickupCanceledClient"); + return this.setStatus("ready"); + } + }, this); + message = t("Cancel Request Prompt"); + if (this.status === "arriving") { + message = 'Cancel Request Arrived Prompt'; + } + return $.prompt(message, { + buttons: { + Ok: true, + Cancel: false + }, + callback: callback + }); + } + } + }; + ClientsRequestView.prototype.requestRide = function() { + if ($("#pickupHandle").find("span").html() === t("Cancel Pickup")) { + this.AskDispatch("Pickup"); + return this.setStatus("searching"); + } + }; + ClientsRequestView.prototype.removeCabs = function() { + _.each(this.cabs, __bind(function(point) { + return point.setMap(null); + }, this)); + return this.cabs = []; + }; + ClientsRequestView.prototype.addToFavLoc = function(e) { + var $el, lat, lng, nickname; + e.preventDefault(); + $el = $(e.currentTarget); + $el.find(".error_message").html(""); + nickname = $el.find("#favLocNickname").val().toString(); + lat = $el.find("#pickupLat").val().toString(); + lng = $el.find("#pickupLng").val().toString(); + if (nickname.length < 3) { + $el.find(".error_message").html(t("Favorite Location Nickname Length Error")); + return; + } + this.ShowSpinner("submit"); + return $.ajax({ + type: 'POST', + url: API + "/locations", + dataType: 'json', + data: { + token: USER.token, + nickname: nickname, + latitude: lat, + longitude: lng + }, + success: __bind(function(data, textStatus, jqXHR) { + return $el.html(t("Favorite Location Save Succeeded")); + }, this), + error: __bind(function(jqXHR, textStatus, errorThrown) { + return $el.find(".error_message").html(t("Favorite Location Save Failed")); + }, this), + complete: __bind(function(data) { + return this.HideSpinner(); + }, this) + }); + }; + ClientsRequestView.prototype.showFavLoc = function(e) { + $(e.currentTarget).fadeOut(); + return $("#favLoc_form").fadeIn(); + }; + ClientsRequestView.prototype.selectInputText = function(e) { + e.currentTarget.focus(); + return e.currentTarget.select(); + }; + ClientsRequestView.prototype.displayFavLoc = function() { + var alphabet, bounds; + alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; + this.removeMarkers(); + bounds = new google.maps.LatLngBounds(); + _.each(USER.locations, __bind(function(location, index) { + var marker; + marker = new google.maps.Marker({ + position: new google.maps.LatLng(location.latitude, location.longitude), + map: this.map, + title: t("Favorite Location Title", { + id: alphabet != null ? alphabet[index] : void 0 + }), + icon: "https://www.google.com/mapfiles/marker" + alphabet[index] + ".png" + }); + this.markers.push(marker); + bounds.extend(marker.getPosition()); + return google.maps.event.addListener(marker, 'click', __bind(function() { + return this.pickup_icon.setPosition(marker.getPosition()); + }, this)); + }, this)); + this.pickup_icon.setPosition(_.first(this.markers).getPosition()); + return this.map.fitBounds(bounds); + }; + ClientsRequestView.prototype.displaySearchLoc = function() { + var alphabet; + alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; + this.removeMarkers(); + return _.each(this.searchResults, __bind(function(result, index) { + var marker; + if (index < this.numSearchToDisplay) { + marker = new google.maps.Marker({ + position: result.geometry.location, + map: this.map, + title: t("Search Location Title", { + id: alphabet != null ? alphabet[index] : void 0 + }), + icon: "https://www.google.com/mapfiles/marker" + alphabet[index] + ".png" + }); + this.markers.push(marker); + return this.panToLocation(result.geometry.location); + } + }, this)); + }; + ClientsRequestView.prototype.removeMarkers = function() { + _.each(this.markers, __bind(function(marker) { + return marker.setMap(null); + }, this)); + return this.markers = []; + }; + ClientsRequestView.prototype.AskDispatch = function(ask, options) { + var attrs, lowestETA, processData, showCab; + if (ask == null) { + ask = ""; + } + if (options == null) { + options = {}; + } + switch (ask) { + case "NearestCab": + attrs = { + latitude: this.pickup_icon.getPosition().lat(), + longitude: this.pickup_icon.getPosition().lng() + }; + lowestETA = 99999; + showCab = __bind(function(cab) { + var point; + point = new google.maps.Marker({ + position: new google.maps.LatLng(cab.latitude, cab.longitude), + map: this.map, + icon: this.cabMarker, + title: t("ETA Message", { + minutes: app.helpers.FormatSeconds(cab != null ? cab.eta : void 0, true) + }) + }); + if (cab.eta < lowestETA) { + lowestETA = cab.eta; + } + return this.cabs.push(point); + }, this); + processData = __bind(function(data, textStatus, jqXHR) { + if (this.status === "ready") { + this.removeCabs(); + if (data.sorry) { + $("#status_message").html(data.sorry).fadeIn(); + } else { + _.each(data.driverLocations, showCab); + $("#status_message").html(t("Nearest Cab Message", { + minutes: app.helpers.FormatSeconds(lowestETA, true) + })).fadeIn(); + } + if (Backbone.history.fragment === "!/request") { + return _.delay(this.showCabs, this.pollInterval); + } + } + }, this); + return this.AjaxCall(ask, processData, attrs); + case "StatusClient": + processData = __bind(function(data, textStatus, jqXHR) { + var bounds, cabLocation, locationSaved, point, userLocation; + if (data.messageType === "OK") { + switch (data.status) { + case "completed": + this.removeCabs(); + this.setStatus("rate"); + return this.fetchTripDetails(data.tripID); + case "open": + return this.setStatus("ready"); + case "begintrip": + this.setStatus("riding"); + cabLocation = new google.maps.LatLng(data.latitude, data.longitude); + this.removeCabs(); + this.pickup_icon.setMap(null); + point = new google.maps.Marker({ + position: cabLocation, + map: this.map, + icon: this.cabMarker + }); + this.cabs.push(point); + this.map.panTo(point.getPosition()); + $("#rideName").html(data.driverName); + $("#ridePhone").html(data.driverMobile); + $("#ride_address_wrapper").hide(); + if (Backbone.history.fragment === "!/request") { + return _.delay(this.AskDispatch, this.pollInterval, "StatusClient"); + } + break; + case "pending": + this.setStatus("searching"); + if (Backbone.history.fragment === "!/request") { + return _.delay(this.AskDispatch, this.pollInterval, "StatusClient"); + } + break; + case "accepted": + case "arrived": + if (data.status === "accepted") { + this.setStatus("waiting"); + $("#status_message").html(t("Arrival ETA Message", { + minutes: app.helpers.FormatSeconds(data.eta, true) + })); + } else { + this.setStatus("arriving"); + $("#status_message").html(t("Arriving Now Message")); + } + userLocation = new google.maps.LatLng(data.pickupLocation.latitude, data.pickupLocation.longitude); + cabLocation = new google.maps.LatLng(data.latitude, data.longitude); + this.pickup_icon.setPosition(userLocation); + this.removeCabs(); + $("#rideName").html(data.driverName); + $("#ridePhone").html(data.driverMobile); + if ($("#rideAddress").html() === "") { + locationSaved = false; + _.each(USER.locations, __bind(function(location) { + if (parseFloat(location.latitude) === parseFloat(data.pickupLocation.latitude) && parseFloat(location.longitude) === parseFloat(data.pickupLocation.longitude)) { + return locationSaved = true; + } + }, this)); + if (locationSaved) { + $("#addToFavButton").hide(); + } + $("#pickupLat").val(data.pickupLocation.latitude); + $("#pickupLng").val(data.pickupLocation.longitude); + this.geocoder.geocode({ + location: userLocation + }, __bind(function(result, status) { + $("#rideAddress").html(result[0].formatted_address); + return $("#favLocNickname").val("" + result[0].address_components[0].short_name + " " + result[0].address_components[1].short_name); + }, this)); + } + point = new google.maps.Marker({ + position: cabLocation, + map: this.map, + icon: this.cabMarker + }); + this.cabs.push(point); + bounds = bounds = new google.maps.LatLngBounds(); + bounds.extend(cabLocation); + bounds.extend(userLocation); + this.map.fitBounds(bounds); + if (Backbone.history.fragment === "!/request") { + return _.delay(this.AskDispatch, this.pollInterval, "StatusClient"); + } + } + } + }, this); + return this.AjaxCall(ask, processData); + case "Pickup": + attrs = { + latitude: this.pickup_icon.getPosition().lat(), + longitude: this.pickup_icon.getPosition().lng() + }; + processData = __bind(function(data, textStatus, jqXHR) { + if (data.messageType === "Error") { + return $("#status_message").html(data.description); + } else { + return this.AskDispatch("StatusClient"); + } + }, this); + return this.AjaxCall(ask, processData, attrs); + case "PickupCanceledClient": + processData = __bind(function(data, textStatus, jqXHR) { + if (data.messageType === "OK") { + return this.setStatus("ready"); + } else { + return $("#status_message").html(data.description); + } + }, this); + return this.AjaxCall(ask, processData, attrs); + case "RatingDriver": + attrs = { + rating: options.rating + }; + processData = __bind(function(data, textStatus, jqXHR) { + if (data.messageType === "OK") { + this.setStatus("init"); + } else { + $("status_message").html(t("Rating Driver Failed")); + } + return this.HideSpinner(); + }, this); + return this.AjaxCall(ask, processData, attrs); + case "Feedback": + attrs = { + message: options.message + }; + processData = __bind(function(data, textStatus, jqXHR) { + if (data.messageType === "OK") { + return alert("rated"); + } + }, this); + return this.AjaxCall(ask, processData, attrs); + } + }; + ClientsRequestView.prototype.AjaxCall = function(type, successCallback, attrs) { + if (attrs == null) { + attrs = {}; + } + _.extend(attrs, { + token: USER.token, + messageType: type, + app: "client", + version: "1.0.60", + device: "web" + }); + return $.ajax({ + type: 'POST', + url: DISPATCH + "/", + processData: false, + data: JSON.stringify(attrs), + success: successCallback, + dataType: 'json', + error: __bind(function(jqXHR, textStatus, errorThrown) { + $("#status_message").html(errorThrown); + return this.HideSpinner(); + }, this) + }); + }; + return ClientsRequestView; + })(); +}).call(this); +}, "views/clients/settings": function(exports, require, module) {(function() { + var clientsSettingsTemplate; + var __bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; }, __hasProp = Object.prototype.hasOwnProperty, __extends = function(child, parent) { + for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } + function ctor() { this.constructor = child; } + ctor.prototype = parent.prototype; + child.prototype = new ctor; + child.__super__ = parent.prototype; + return child; + }; + clientsSettingsTemplate = require('templates/clients/settings'); + exports.ClientsSettingsView = (function() { + __extends(ClientsSettingsView, UberView); + function ClientsSettingsView() { + this.render = __bind(this.render, this); + this.initialize = __bind(this.initialize, this); + ClientsSettingsView.__super__.constructor.apply(this, arguments); + } + ClientsSettingsView.prototype.id = 'settings_view'; + ClientsSettingsView.prototype.className = 'view_container'; + ClientsSettingsView.prototype.events = { + 'submit #profile_pic_form': 'processPicUpload', + 'click #submit_pic': 'processPicUpload', + 'click a.setting_change': "changeTab", + 'submit #edit_info_form': "submitInfo", + 'click #change_password': 'changePass' + }; + ClientsSettingsView.prototype.divs = { + 'info_div': "Information", + 'pic_div': "Picture" + }; + ClientsSettingsView.prototype.pageTitle = t("Settings") + " | " + t("Uber"); + ClientsSettingsView.prototype.tabTitle = { + 'info_div': t("Information"), + 'pic_div': t("Picture") + }; + ClientsSettingsView.prototype.initialize = function() { + return this.mixin(require('web-lib/mixins/i18n_phone_form').i18nPhoneForm); + }; + ClientsSettingsView.prototype.render = function(type) { + if (type == null) { + type = "info"; + } + this.RefreshUserInfo(__bind(function() { + var $el, alphabet; + this.delegateEvents(); + this.HideSpinner(); + alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; + $el = $(this.el); + $(this.el).html(clientsSettingsTemplate({ + type: type + })); + $el.find("#" + type + "_div").show(); + $el.find("a[href='" + type + "_div']").parent().addClass("active"); + return document.title = "" + this.tabTitle[type + '_div'] + " " + this.pageTitle; + }, this)); + this.delegateEvents(); + return this; + }; + ClientsSettingsView.prototype.changeTab = function(e) { + var $eTarget, $el, div, link, pageDiv, _i, _j, _len, _len2, _ref, _ref2; + e.preventDefault(); + $eTarget = $(e.currentTarget); + this.ClearGlobalStatus(); + $el = $(this.el); + _ref = $el.find(".setting_change"); + for (_i = 0, _len = _ref.length; _i < _len; _i++) { + link = _ref[_i]; + $(link).parent().removeClass("active"); + } + $eTarget.parent().addClass("active"); + _ref2 = _.keys(this.divs); + for (_j = 0, _len2 = _ref2.length; _j < _len2; _j++) { + div = _ref2[_j]; + $el.find("#" + div).hide(); + } + pageDiv = $eTarget.attr('href'); + $el.find("#" + pageDiv).show(); + Backbone.history.navigate("!/settings/" + (this.divs[pageDiv].toLowerCase().replace(" ", "-")), false); + document.title = "" + this.tabTitle[pageDiv] + " " + this.pageTitle; + if (pageDiv === "loc_div") { + try { + google.maps.event.trigger(this.map, 'resize'); + return this.map.fitBounds(this.bounds); + } catch (_e) {} + } + }; + ClientsSettingsView.prototype.submitInfo = function(e) { + var $e, attrs, client, options; + $('#global_status').find('.success_message').text(''); + $('#global_status').find('.error_message').text(''); + $('.error_message').text(''); + e.preventDefault(); + $e = $(e.currentTarget); + attrs = $e.serializeToJson(); + attrs['mobile_country_id'] = this.$('#mobile_country_id').val(); + if (attrs['password'] === '') { + delete attrs['password']; + } + options = { + success: __bind(function(response) { + this.ShowSuccess(t("Information Update Succeeded")); + return this.RefreshUserInfo(); + }, this), + error: __bind(function(model, data) { + var errors; + if (data.status === 406) { + errors = JSON.parse(data.responseText); + return _.each(_.keys(errors), function(field) { + return $("#" + field).parent().find('span.error_message').text(errors[field]); + }); + } else { + return this.ShowError(t("Information Update Failed")); + } + }, this), + type: "PUT" + }; + client = new app.models.client({ + id: USER.id + }); + return client.save(attrs, options); + }; + ClientsSettingsView.prototype.changePass = function(e) { + e.preventDefault(); + $(e.currentTarget).hide(); + return $("#password").show(); + }; + ClientsSettingsView.prototype.processPicUpload = function(e) { + e.preventDefault(); + this.ShowSpinner("submit"); + return $.ajaxFileUpload({ + url: API + '/user_pictures', + secureuri: false, + fileElementId: 'picture', + data: { + token: USER.token + }, + dataType: 'json', + complete: __bind(function(data, status) { + this.HideSpinner(); + if (status === 'success') { + this.ShowSuccess(t("Picture Update Succeeded")); + return this.RefreshUserInfo(__bind(function() { + return $("#settingsProfPic").attr("src", USER.picture_url + ("?" + (Math.floor(Math.random() * 1000)))); + }, this)); + } else { + if (data.error) { + return this.ShowError(data.error); + } else { + return this.ShowError("Picture Update Failed"); + } + } + }, this) + }); + }; + return ClientsSettingsView; + })(); +}).call(this); +}, "views/clients/sign_up": function(exports, require, module) {(function() { + var clientsSignUpTemplate; + var __hasProp = Object.prototype.hasOwnProperty, __extends = function(child, parent) { + for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } + function ctor() { this.constructor = child; } + ctor.prototype = parent.prototype; + child.prototype = new ctor; + child.__super__ = parent.prototype; + return child; + }, __bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; }; + clientsSignUpTemplate = require('templates/clients/sign_up'); + exports.ClientsSignUpView = (function() { + __extends(ClientsSignUpView, UberView); + function ClientsSignUpView() { + ClientsSignUpView.__super__.constructor.apply(this, arguments); + } + ClientsSignUpView.prototype.id = 'signup_view'; + ClientsSignUpView.prototype.className = 'view_container'; + ClientsSignUpView.prototype.initialize = function() { + this.mixin(require('web-lib/mixins/i18n_phone_form').i18nPhoneForm); + return $('#location_country').live('change', function() { + if (!$('#mobile').val()) { + return $('#mobile_country').find("option[value=" + ($(this).val()) + "]").attr('selected', 'selected').end().trigger('change'); + } + }); + }; + ClientsSignUpView.prototype.events = { + 'submit form': 'signup', + 'click button': 'signup', + 'change #card_number': 'showCardType', + 'change #location_country': 'countryChange' + }; + ClientsSignUpView.prototype.render = function(invite) { + this.HideSpinner(); + $(this.el).html(clientsSignUpTemplate({ + invite: invite + })); + return this; + }; + ClientsSignUpView.prototype.signup = function(e) { + var $el, attrs, client, error_messages, options; + e.preventDefault(); + $el = $("form"); + $el.find('#terms_error').hide(); + if (!$el.find('#signup_terms input[type=checkbox]').attr('checked')) { + $('#spinner.submit').hide(); + $el.find('#terms_error').show(); + return; + } + error_messages = $el.find('.error_message').html(""); + attrs = { + first_name: $el.find('#first_name').val(), + last_name: $el.find('#last_name').val(), + email: $el.find('#email').val(), + password: $el.find('#password').val(), + location_country: $el.find('#location_country option:selected').attr('data-iso2'), + location: $el.find('#location').val(), + language: $el.find('#language').val(), + mobile_country: $el.find('#mobile_country option:selected').attr('data-iso2'), + mobile: $el.find('#mobile').val(), + card_number: $el.find('#card_number').val(), + card_expiration_month: $el.find('#card_expiration_month').val(), + card_expiration_year: $el.find('#card_expiration_year').val(), + card_code: $el.find('#card_code').val(), + use_case: $el.find('#use_case').val(), + promotion_code: $el.find('#promotion_code').val() + }; + options = { + statusCode: { + 200: function(response) { + $.cookie('token', response.token); + amplify.store('USERjson', response); + app.refreshMenu(); + return app.routers.clients.navigate('!/dashboard', true); + }, + 406: function(e) { + var error, errors, _i, _len, _ref, _results; + errors = JSON.parse(e.responseText); + _ref = _.keys(errors); + _results = []; + for (_i = 0, _len = _ref.length; _i < _len; _i++) { + error = _ref[_i]; + _results.push($('#' + error).parent().find('span').html($('#' + error).parent().find('span').html() + " " + errors[error])); + } + return _results; + } + }, + complete: __bind(function(response) { + return this.HideSpinner(); + }, this) + }; + client = new app.models.client; + $('.spinner#submit').show(); + return client.save(attrs, options); + }; + ClientsSignUpView.prototype.countryChange = function(e) { + var $e; + $e = $(e.currentTarget); + return $("#mobile_country").val($e.val()).trigger('change'); + }; + ClientsSignUpView.prototype.showCardType = function(e) { + var $el, reAmerica, reDiscover, reMaster, reVisa, validCard; + reVisa = /^4\d{3}-?\d{4}-?\d{4}-?\d{4}$/; + reMaster = /^5[1-5]\d{2}-?\d{4}-?\d{4}-?\d{4}$/; + reAmerica = /^6011-?\d{4}-?\d{4}-?\d{4}$/; + reDiscover = /^3[4,7]\d{13}$/; + $el = $("#card_logos_signup"); + validCard = false; + if (e.currentTarget.value.match(reVisa)) { + $el.find("#overlay_left").css('width', "0px"); + return $el.find("#overlay_right").css('width', "75%"); + } else if (e.currentTarget.value.match(reMaster)) { + $el.find("#overlay_left").css('width', "25%"); + return $el.find("#overlay_right").css('width', "50%"); + } else if (e.currentTarget.value.match(reAmerica)) { + $el.find("#overlay_left").css('width', "75%"); + $el.find("#overlay_right").css('width', "0px"); + return console.log("amex"); + } else if (e.currentTarget.value.match(reDiscover)) { + $el.find("#overlay_left").css('width', "50%"); + return $el.find("#overlay_right").css('width', "25%"); + } else { + $el.find("#overlay_left").css('width', "0px"); + return $el.find("#overlay_right").css('width', "0px"); + } + }; + return ClientsSignUpView; + })(); +}).call(this); +}, "views/clients/trip_detail": function(exports, require, module) {(function() { + var clientsTripDetailTemplate; + var __bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; }, __hasProp = Object.prototype.hasOwnProperty, __extends = function(child, parent) { + for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } + function ctor() { this.constructor = child; } + ctor.prototype = parent.prototype; + child.prototype = new ctor; + child.__super__ = parent.prototype; + return child; + }; + clientsTripDetailTemplate = require('templates/clients/trip_detail'); + exports.TripDetailView = (function() { + __extends(TripDetailView, UberView); + function TripDetailView() { + this.resendReceipt = __bind(this.resendReceipt, this); + TripDetailView.__super__.constructor.apply(this, arguments); + } + TripDetailView.prototype.id = 'trip_detail_view'; + TripDetailView.prototype.className = 'view_container'; + TripDetailView.prototype.events = { + 'click a#fare_review': 'showFareReview', + 'click #fare_review_hide': 'hideFareReview', + 'submit #form_review_form': 'submitFareReview', + 'click #submit_fare_review': 'submitFareReview', + 'click .resendReceipt': 'resendReceipt' + }; + TripDetailView.prototype.render = function(id) { + if (id == null) { + id = 'invalid'; + } + this.ReadUserInfo(); + this.HideSpinner(); + this.model = new app.models.trip({ + id: id + }); + this.model.fetch({ + data: { + relationships: 'points,driver,city.country' + }, + dataType: 'json', + success: __bind(function() { + var trip; + trip = this.model; + $(this.el).html(clientsTripDetailTemplate({ + trip: trip + })); + this.RequireMaps(__bind(function() { + var bounds, endPos, map, myOptions, path, polyline, startPos; + bounds = new google.maps.LatLngBounds(); + path = []; + _.each(this.model.get('points'), __bind(function(point) { + path.push(new google.maps.LatLng(point.lat, point.lng)); + return bounds.extend(_.last(path)); + }, this)); + myOptions = { + zoom: 12, + center: path[0], + mapTypeId: google.maps.MapTypeId.ROADMAP, + zoomControl: false, + rotateControl: false, + panControl: false, + mapTypeControl: false, + scrollwheel: false + }; + map = new google.maps.Map(document.getElementById("trip_details_map"), myOptions); + map.fitBounds(bounds); + startPos = new google.maps.Marker({ + position: _.first(path), + map: map, + title: t("Trip started here"), + icon: 'https://uber-static.s3.amazonaws.com/marker_start.png' + }); + endPos = new google.maps.Marker({ + position: _.last(path), + map: map, + title: t("Trip ended here"), + icon: 'https://uber-static.s3.amazonaws.com/marker_end.png' + }); + startPos.setMap(map); + endPos.setMap(map); + polyline = new google.maps.Polyline({ + path: path, + strokeColor: '#003F87', + strokeOpacity: 1, + strokeWeight: 5 + }); + return polyline.setMap(map); + }, this)); + return this.HideSpinner(); + }, this) + }); + this.ShowSpinner('load'); + this.delegateEvents(); + return this; + }; + TripDetailView.prototype.showFareReview = function(e) { + e.preventDefault(); + $('#fare_review_box').slideDown(); + return $('#fare_review').hide(); + }; + TripDetailView.prototype.hideFareReview = function(e) { + e.preventDefault(); + $('#fare_review_box').slideUp(); + return $('#fare_review').show(); + }; + TripDetailView.prototype.submitFareReview = function(e) { + var attrs, errorMessage, id, options; + e.preventDefault(); + errorMessage = $(".error_message"); + errorMessage.hide(); + id = $("#tripid").val(); + this.model = new app.models.trip({ + id: id + }); + attrs = { + note: $('#form_review_message').val(), + note_type: 'client_fare_review' + }; + options = { + success: __bind(function(response) { + $(".success_message").fadeIn(); + return $("#fare_review_form_wrapper").slideUp(); + }, this), + error: __bind(function(error) { + return errorMessage.fadeIn(); + }, this) + }; + return this.model.save(attrs, options); + }; + TripDetailView.prototype.resendReceipt = function(e) { + var $e; + e.preventDefault(); + $e = $(e.currentTarget); + this.$(".resendReceiptSuccess").empty().show(); + this.$(".resentReceiptError").empty().show(); + e.preventDefault(); + $('#spinner').show(); + return $.ajax('/api/trips/func/resend_receipt', { + data: { + token: $.cookie('token'), + trip_id: this.model.id + }, + type: 'POST', + complete: __bind(function(xhr) { + var response; + response = JSON.parse(xhr.responseText); + $('#spinner').hide(); + switch (xhr.status) { + case 200: + this.$(".resendReceiptSuccess").html("Receipt has been emailed"); + return this.$(".resendReceiptSuccess").fadeOut(2000); + default: + this.$(".resendReceiptError").html("Receipt has failed to be emailed"); + return this.$(".resendReceiptError").fadeOut(2000); + } + }, this) + }); + }; + return TripDetailView; + })(); +}).call(this); +}, "views/shared/menu": function(exports, require, module) {(function() { + var menuTemplate; + var __hasProp = Object.prototype.hasOwnProperty, __extends = function(child, parent) { + for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } + function ctor() { this.constructor = child; } + ctor.prototype = parent.prototype; + child.prototype = new ctor; + child.__super__ = parent.prototype; + return child; + }; + menuTemplate = require('templates/shared/menu'); + exports.SharedMenuView = (function() { + __extends(SharedMenuView, Backbone.View); + function SharedMenuView() { + SharedMenuView.__super__.constructor.apply(this, arguments); + } + SharedMenuView.prototype.id = 'menu_view'; + SharedMenuView.prototype.render = function() { + var type; + if ($.cookie('token') === null) { + type = 'guest'; + } else { + type = 'client'; + } + $(this.el).html(menuTemplate({ + type: type + })); + return this; + }; + return SharedMenuView; + })(); +}).call(this); +}, "web-lib/collections/countries": function(exports, require, module) {(function() { + var UberCollection; + var __hasProp = Object.prototype.hasOwnProperty, __extends = function(child, parent) { + for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } + function ctor() { this.constructor = child; } + ctor.prototype = parent.prototype; + child.prototype = new ctor; + child.__super__ = parent.prototype; + return child; + }; + UberCollection = require('web-lib/uber_collection').UberCollection; + exports.CountriesCollection = (function() { + __extends(CountriesCollection, UberCollection); + function CountriesCollection() { + CountriesCollection.__super__.constructor.apply(this, arguments); + } + CountriesCollection.prototype.model = app.models.country; + CountriesCollection.prototype.url = '/countries'; + return CountriesCollection; + })(); +}).call(this); +}, "web-lib/collections/vehicle_types": function(exports, require, module) {(function() { + var UberCollection, vehicleType, _ref; + var __hasProp = Object.prototype.hasOwnProperty, __extends = function(child, parent) { + for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } + function ctor() { this.constructor = child; } + ctor.prototype = parent.prototype; + child.prototype = new ctor; + child.__super__ = parent.prototype; + return child; + }; + UberCollection = require('web-lib/uber_collection').UberCollection; + vehicleType = (typeof app !== "undefined" && app !== null ? (_ref = app.models) != null ? _ref.vehicleType : void 0 : void 0) || require('models/vehicle_type').VehicleType; + exports.VehicleTypesCollection = (function() { + __extends(VehicleTypesCollection, UberCollection); + function VehicleTypesCollection() { + VehicleTypesCollection.__super__.constructor.apply(this, arguments); + } + VehicleTypesCollection.prototype.model = vehicleType; + VehicleTypesCollection.prototype.url = '/vehicle_types'; + VehicleTypesCollection.prototype.defaultColumns = ['id', 'created_at', 'updated_at', 'deleted_at', 'created_by_user_id', 'updated_by_user_id', 'city_id', 'type', 'make', 'model', 'capacity', 'minimum_year', 'actions']; + VehicleTypesCollection.prototype.tableColumns = function(cols) { + var actions, c, capacity, city_id, columnValues, created_at, created_by_user_id, deleted_at, headerRow, id, make, minimum_year, model, type, updated_at, updated_by_user_id, _i, _len; + id = { + sTitle: 'Id' + }; + created_at = { + sTitle: 'Created At (UTC)', + 'sType': 'string' + }; + updated_at = { + sTitle: 'Updated At (UTC)', + 'sType': 'string' + }; + deleted_at = { + sTitle: 'Deleted At (UTC)', + 'sType': 'string' + }; + created_by_user_id = { + sTitle: 'Created By' + }; + updated_by_user_id = { + sTitle: 'Updated By' + }; + city_id = { + sTitle: 'City' + }; + type = { + sTitle: 'Type' + }; + make = { + sTitle: 'Make' + }; + model = { + sTitle: 'Model' + }; + capacity = { + sTitle: 'Capacity' + }; + minimum_year = { + sTitle: 'Min. Year' + }; + actions = { + sTitle: 'Actions' + }; + columnValues = { + id: id, + created_at: created_at, + updated_at: updated_at, + deleted_at: deleted_at, + created_by_user_id: created_by_user_id, + updated_by_user_id: updated_by_user_id, + city_id: city_id, + type: type, + make: make, + model: model, + capacity: capacity, + minimum_year: minimum_year, + actions: actions + }; + headerRow = []; + for (_i = 0, _len = cols.length; _i < _len; _i++) { + c = cols[_i]; + if (columnValues[c]) { + headerRow.push(columnValues[c]); + } + } + return headerRow; + }; + return VehicleTypesCollection; + })(); +}).call(this); +}, "web-lib/helpers": function(exports, require, module) {(function() { + var __indexOf = Array.prototype.indexOf || function(item) { + for (var i = 0, l = this.length; i < l; i++) { + if (this[i] === item) return i; + } + return -1; + }, __bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; }; + exports.helpers = { + pin: function(num, color) { + if (color == null) { + color = 'FF0000'; + } + return ""; + }, + reverseGeocode: function(latitude, longitude) { + if (latitude && longitude) { + return "" + latitude + ", " + longitude + ""; + } else { + return ''; + } + }, + linkedName: function(model) { + var first_name, id, last_name, role, url; + role = model.role || model.get('role'); + id = model.id || model.get('id'); + first_name = model.first_name || model.get('first_name'); + last_name = model.last_name || model.get('last_name'); + url = "/" + role + "s/" + id; + return "" + first_name + " " + last_name + ""; + }, + linkedVehicle: function(vehicle, vehicleType) { + return " " + (vehicleType != null ? vehicleType.get('make') : void 0) + " " + (vehicleType != null ? vehicleType.get('model') : void 0) + " " + (vehicle.get('year')) + " "; + }, + linkedUserId: function(userType, userId) { + return "" + userType + " " + userId + ""; + }, + timeDelta: function(start, end) { + var delta; + if (typeof start === 'string') { + start = this.parseDate(start); + } + if (typeof end === 'string') { + end = this.parseDate(end); + } + if (end && start) { + delta = end.getTime() - start.getTime(); + return this.formatSeconds(delta / 1000); + } else { + return '00:00'; + } + }, + formatSeconds: function(s) { + var minutes, seconds; + s = Math.floor(s); + minutes = Math.floor(s / 60); + seconds = s - minutes * 60; + return "" + (this.leadingZero(minutes)) + ":" + (this.leadingZero(seconds)); + }, + formatCurrency: function(strValue, reverseSign, currency) { + var currency_locale, lc, mf; + if (reverseSign == null) { + reverseSign = false; + } + if (currency == null) { + currency = null; + } + strValue = String(strValue); + if (reverseSign) { + strValue = ~strValue.indexOf('-') ? strValue.split('-').join('') : ['-', strValue].join(''); + } + currency_locale = i18n.currencyToLocale[currency]; + try { + if (!(currency_locale != null) || currency_locale === i18n.locale) { + return i18n.jsworld.mf.format(strValue); + } else { + lc = new jsworld.Locale(POSIX_LC[currency_locale]); + mf = new jsworld.MonetaryFormatter(lc); + return mf.format(strValue); + } + } catch (error) { + i18n.log(error); + return strValue; + } + }, + formatTripFare: function(trip, type) { + var _ref, _ref2; + if (type == null) { + type = "fare"; + } + if (!trip.get('fare')) { + return 'n/a'; + } + if (((_ref = trip.get('fare_breakdown_local')) != null ? _ref.currency : void 0) != null) { + return app.helpers.formatCurrency(trip.get("" + type + "_local"), false, (_ref2 = trip.get('fare_breakdown_local')) != null ? _ref2.currency : void 0); + } else if (trip.get("" + type + "_string") != null) { + return trip.get("" + type + "_string"); + } else if (trip.get("" + type + "_local") != null) { + return trip.get("" + type + "_local"); + } else { + return 'n/a'; + } + }, + formatPhoneNumber: function(phoneNumber, countryCode) { + if (countryCode == null) { + countryCode = "+1"; + } + if (phoneNumber != null) { + phoneNumber = String(phoneNumber); + switch (countryCode) { + case '+1': + return countryCode + ' ' + phoneNumber.substring(0, 3) + '-' + phoneNumber.substring(3, 6) + '-' + phoneNumber.substring(6, 10); + case '+33': + return countryCode + ' ' + phoneNumber.substring(0, 1) + ' ' + phoneNumber.substring(1, 3) + ' ' + phoneNumber.substring(3, 5) + ' ' + phoneNumber.substring(5, 7) + ' ' + phoneNumber.substring(7, 9); + default: + countryCode + phoneNumber; + } + } + return "" + countryCode + " " + phoneNumber; + }, + parseDate: function(d, cityTime, tz) { + var city_filter, parsed, _ref; + if (cityTime == null) { + cityTime = true; + } + if (tz == null) { + tz = null; + } + if (((_ref = !d.substr(-6, 1)) === '+' || _ref === '-') || d.length === 19) { + d += '+00:00'; + } + if (/(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2})/.test(d)) { + parsed = d.match(/(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2})/); + d = new Date(); + d.setUTCFullYear(parsed[1]); + d.setUTCMonth(parsed[2] - 1); + d.setUTCDate(parsed[3]); + d.setUTCHours(parsed[4]); + d.setUTCMinutes(parsed[5]); + d.setUTCSeconds(parsed[6]); + } else { + d = Date.parse(d); + } + if (typeof d === 'number') { + d = new Date(d); + } + d = new timezoneJS.Date(d.getUTCFullYear(), d.getUTCMonth(), d.getUTCDate(), d.getUTCHours(), d.getUTCMinutes(), d.getUTCSeconds(), 'Etc/UTC'); + if (tz) { + d.convertToTimezone(tz); + } else if (cityTime) { + city_filter = $.cookie('city_filter'); + if (city_filter) { + tz = $("#city_filter option[value=" + city_filter + "]").attr('data-timezone'); + if (tz) { + d.convertToTimezone(tz); + } + } + } + return d; + }, + dateToTimezone: function(d) { + var city_filter, tz; + d = new timezoneJS.Date(d.getUTCFullYear(), d.getUTCMonth(), d.getUTCDate(), d.getUTCHours(), d.getUTCMinutes(), d.getUTCSeconds(), 'Etc/UTC'); + city_filter = $.cookie('city_filter'); + if (city_filter) { + tz = $("#city_filter option[value=" + city_filter + "]").attr('data-timezone'); + d.convertToTimezone(tz); + } + return d; + }, + fixAMPM: function(d, formatted) { + if (d.hours >= 12) { + return formatted.replace(/\b[AP]M\b/, 'PM'); + } else { + return formatted.replace(/\b[AP]M\b/, 'AM'); + } + }, + formatDate: function(d, time, timezone) { + var formatted; + if (time == null) { + time = true; + } + if (timezone == null) { + timezone = null; + } + d = this.parseDate(d, true, timezone); + formatted = time ? ("" + (i18n.jsworld.dtf.formatDate(d)) + " ") + this.formatTime(d, d.getTimezoneInfo()) : i18n.jsworld.dtf.formatDate(d); + return this.fixAMPM(d, formatted); + }, + formatDateLong: function(d, time, timezone) { + if (time == null) { + time = true; + } + if (timezone == null) { + timezone = null; + } + d = this.parseDate(d, true, timezone); + timezone = d.getTimezoneInfo().tzAbbr; + if (time) { + return (i18n.jsworld.dtf.formatDateTime(d)) + (" " + timezone); + } else { + return i18n.jsworld.dtf.formatDate(d); + } + }, + formatTimezoneJSDate: function(d) { + var day, hours, jsDate, minutes, month, year; + year = d.getFullYear(); + month = this.leadingZero(d.getMonth()); + day = this.leadingZero(d.getDate()); + hours = this.leadingZero(d.getHours()); + minutes = this.leadingZero(d.getMinutes()); + jsDate = new Date(year, month, day, hours, minutes, 0); + return jsDate.toDateString(); + }, + formatTime: function(d, timezone) { + var formatted; + if (timezone == null) { + timezone = null; + } + formatted = ("" + (i18n.jsworld.dtf.formatTime(d))) + (timezone != null ? " " + (timezone != null ? timezone.tzAbbr : void 0) : ""); + return this.fixAMPM(d, formatted); + }, + formatISODate: function(d) { + var pad; + pad = function(n) { + if (n < 10) { + return '0' + n; + } + return n; + }; + return d.getUTCFullYear() + '-' + pad(d.getUTCMonth() + 1) + '-' + pad(d.getUTCDate()) + 'T' + pad(d.getUTCHours()) + ':' + pad(d.getUTCMinutes()) + ':' + pad(d.getUTCSeconds()) + 'Z'; + }, + formatExpDate: function(d) { + var month, year; + d = this.parseDate(d); + year = d.getFullYear(); + month = this.leadingZero(d.getMonth() + 1); + return "" + year + "-" + month; + }, + formatLatLng: function(lat, lng, precision) { + if (precision == null) { + precision = 8; + } + return parseFloat(lat).toFixed(precision) + ',' + parseFloat(lng).toFixed(precision); + }, + leadingZero: function(num) { + if (num < 10) { + return "0" + num; + } else { + return num; + } + }, + roundNumber: function(num, dec) { + return Math.round(num * Math.pow(10, dec)) / Math.pow(10, dec); + }, + notesToHTML: function(notes) { + var i, note, notesHTML, _i, _len; + notesHTML = ''; + i = 1; + if (notes) { + for (_i = 0, _len = notes.length; _i < _len; _i++) { + note = notes[_i]; + notesHTML += "" + note['userid'] + "     " + (this.formatDate(note['created_at'])) + "

      " + note['note'] + "

      "; + notesHTML += "
      "; + } + } + return notesHTML.replace("'", '"e'); + }, + formatPhone: function(n) { + var parts, phone, regexObj; + n = "" + n; + regexObj = /^(?:\+?1[-. ]?)?(?:\(?([0-9]{3})\)?[-. ]?)?([0-9]{3})[-. ]?([0-9]{4})$/; + if (regexObj.test(n)) { + parts = n.match(regexObj); + phone = ""; + if (parts[1]) { + phone += "(" + parts[1] + ") "; + } + phone += "" + parts[2] + "-" + parts[3]; + } else { + phone = n; + } + return phone; + }, + usStates: ['Alabama', 'Alaska', 'Arizona', 'Arkansas', 'California', 'Colorado', 'Connecticut', 'Delaware', 'District of Columbia', 'Florida', 'Georgia', 'Hawaii', 'Idaho', 'Illinois', 'Indiana', 'Iowa', 'Kansas', 'Kentucky', 'Louisiana', 'Maine', 'Maryland', 'Massachusetts', 'Michigan', 'Minnesota', 'Mississippi', 'Missouri', 'Montana', 'Nebraska', 'Nevada', 'New Hampshire', 'New Jersey', 'New Mexico', 'New York', 'North Carolina', 'North Dakota', 'Ohio', 'Oklahoma', 'Oregon', 'Pennsylvania', 'Rhode Island', 'South Carolina', 'South Dakota', 'Tennessee', 'Texas', 'Utah', 'Vermont', 'Virginia', 'Washington', 'West Virginia', 'Wisconsin', 'Wyoming'], + onboardingPages: ['applied', 'ready_to_interview', 'pending_interview', 'interviewed', 'accepted', 'ready_to_onboard', 'pending_onboarding', 'active', 'waitlisted', 'rejected'], + driverBreadCrumb: function(loc, model) { + var onboardingPage, out, _i, _len, _ref; + out = "Drivers > "; + if (!(model != null)) { + out += ""; + } else { + out += "" + (this.onboardingUrlToName(model.get('driver_status'))) + ""; + out += " > " + (this.linkedName(model)) + " (" + (model.get('role')) + ") #" + (model.get('id')); + } + return out; + }, + onboardingUrlToName: function(url) { + return url != null ? url.replace(/_/g, " ").replace(/(^|\s)([a-z])/g, function(m, p1, p2) { + return p1 + p2.toUpperCase(); + }) : void 0; + }, + formatVehicle: function(vehicle) { + if (vehicle.get('make') && vehicle.get('model') && vehicle.get('license_plate')) { + return "" + (vehicle.get('make')) + " " + (vehicle.get('model')) + " (" + (vehicle.get('license_plate')) + ")"; + } + }, + docArbitraryFields: function(docName, cityDocs) { + var doc, field, out, _i, _j, _len, _len2, _ref; + out = ""; + for (_i = 0, _len = cityDocs.length; _i < _len; _i++) { + doc = cityDocs[_i]; + if (doc.name === docName && __indexOf.call(_.keys(doc), "metaFields") >= 0) { + _ref = doc.metaFields; + for (_j = 0, _len2 = _ref.length; _j < _len2; _j++) { + field = _ref[_j]; + out += "" + field.label + ":
      "; + } + } + } + return out; + }, + capitaliseFirstLetter: function(string) { + return string.charAt(0).toUpperCase() + string.slice(1); + }, + createDocUploadForm: function(docName, driverId, vehicleId, cityMeta, vehicleName, expirationRequired) { + var ddocs, expDropdowns, pdocs, vdocs; + if (driverId == null) { + driverId = "None"; + } + if (vehicleId == null) { + vehicleId = "None"; + } + if (cityMeta == null) { + cityMeta = []; + } + if (vehicleName == null) { + vehicleName = false; + } + if (expirationRequired == null) { + expirationRequired = false; + } + ddocs = cityMeta["driverRequiredDocs"] || []; + pdocs = cityMeta["partnerRequiredDocs"] || []; + vdocs = cityMeta["vehicleRequiredDocs"] || []; + expDropdowns = "Expiration Date:\n -\n"; + return " \n
      \n \n \n \n\n
      \n " + (vehicleName ? vehicleName : "") + " " + docName + "\n
      \n\n
      \n \n
      \n\n
      \n " + (expirationRequired ? expDropdowns : "") + "\n
      \n\n
      \n " + (app.helpers.docArbitraryFields(docName, _.union(ddocs, pdocs, vdocs))) + "\n
      \n\n
      \n \n
      \n\n
      \n"; + }, + countrySelector: function(name, options) { + var countries, countryCodePrefix, defaultOptions; + if (options == null) { + options = {}; + } + defaultOptions = { + selectedKey: 'telephone_code', + selectedValue: '+1', + silent: false + }; + _.extend(defaultOptions, options); + options = defaultOptions; + countries = new app.collections.countries(); + countries.fetch({ + data: { + limit: 300 + }, + success: function(countries) { + var $option, $select, country, selected, _i, _len, _ref; + selected = false; + _ref = countries.models || []; + for (_i = 0, _len = _ref.length; _i < _len; _i++) { + country = _ref[_i]; + $select = $("select[name=" + name + "]"); + $option = $('').val(country.id).attr('data-iso2', country.get('iso2')).attr('data-prefix', country.get('telephone_code')).html(country.get('name')); + if (country.get(options.selectedKey) === options.selectedValue && !selected) { + selected = true; + $option.attr('selected', 'selected'); + } + $select.append($option); + } + if (selected && !options.silent) { + return $select.val(options.selected).trigger('change'); + } + } + }); + countryCodePrefix = options.countryCodePrefix ? "data-country-code-prefix='" + options.countryCodePrefix + "'" : ''; + return ""; + }, + missingDocsOnDriver: function(driver) { + var city, docsReq, documents, partnerDocs; + city = driver.get('city'); + documents = driver.get('documents'); + if ((city != null) && (documents != null)) { + docsReq = _.pluck(city != null ? city.get('meta')["driverRequiredDocs"] : void 0, "name"); + if (driver.get('role') === "partner") { + partnerDocs = _.pluck(city != null ? city.get('meta')["partnerRequiredDocs"] : void 0, "name"); + docsReq = _.union(docsReq, partnerDocs); + } + return _.reject(docsReq, __bind(function(doc) { + return __indexOf.call((documents != null ? documents.pluck("name") : void 0) || [], doc) >= 0; + }, this)); + } else { + return []; + } + } + }; +}).call(this); +}, "web-lib/i18n": function(exports, require, module) {(function() { + exports.i18n = { + defaultLocale: 'en_US', + cookieName: '_LOCALE_', + locales: { + 'en_US': "English (US)", + 'fr_FR': "Français" + }, + currencyToLocale: { + 'USD': 'en_US', + 'EUR': 'fr_FR' + }, + logglyKey: 'd2d5a9bc-7ebe-4538-a180-81e62c705b1b', + logglyHost: 'https://logs.loggly.com', + init: function() { + this.castor = new window.loggly({ + url: this.logglyHost + '/inputs/' + this.logglyKey + '?rt=1', + level: 'error' + }); + this.setLocale($.cookie(this.cookieName) || this.defaultLocale); + window.t = _.bind(this.t, this); + this.loadLocaleTranslations(this.locale); + if (!(this[this.defaultLocale] != null)) { + return this.loadLocaleTranslations(this.defaultLocale); + } + }, + loadLocaleTranslations: function(locale) { + var loadPaths, path, _i, _len, _results; + loadPaths = ['web-lib/translations/' + locale, 'web-lib/translations/' + locale.slice(0, 2), 'translations/' + locale, 'translations/' + locale.slice(0, 2)]; + _results = []; + for (_i = 0, _len = loadPaths.length; _i < _len; _i++) { + path = loadPaths[_i]; + locale = path.substring(path.lastIndexOf('/') + 1); + if (this[locale] == null) { + this[locale] = {}; + } + _results.push((function() { + try { + return _.extend(this[locale], require(path).translations); + } catch (error) { + + } + }).call(this)); + } + return _results; + }, + getLocale: function() { + return this.locale; + }, + setLocale: function(locale) { + var message, parts, _ref; + parts = locale.split('_'); + this.locale = parts[0].toLowerCase(); + if (parts.length > 1) { + this.locale += "_" + (parts[1].toUpperCase()); + } + if (this.locale) { + $.cookie(this.cookieName, this.locale, { + path: '/', + domain: '.uber.com' + }); + } + try { + ((_ref = this.jsworld) != null ? _ref : this.jsworld = {}).lc = new jsworld.Locale(POSIX_LC[this.locale]); + this.jsworld.mf = new jsworld.MonetaryFormatter(this.jsworld.lc); + this.jsworld.nf = new jsworld.NumericFormatter(this.jsworld.lc); + this.jsworld.dtf = new jsworld.DateTimeFormatter(this.jsworld.lc); + this.jsworld.np = new jsworld.NumericParser(this.jsworld.lc); + this.jsworld.mp = new jsworld.MonetaryParser(this.jsworld.lc); + return this.jsworld.dtp = new jsworld.DateTimeParser(this.jsworld.lc); + } catch (error) { + message = 'JsWorld error with locale: ' + this.locale; + return this.log({ + message: message, + error: error + }); + } + }, + getTemplate: function(id) { + var _ref, _ref2; + return ((_ref = this[this.locale]) != null ? _ref[id] : void 0) || ((_ref2 = this[this.locale.slice(0, 2)]) != null ? _ref2[id] : void 0); + }, + getTemplateDefault: function(id) { + var _ref, _ref2; + return ((_ref = this[this.defaultLocale]) != null ? _ref[id] : void 0) || ((_ref2 = this[this.defaultLocale.slice(0, 2)]) != null ? _ref2[id] : void 0); + }, + getTemplateOrDefault: function(id) { + return this.getTemplate(id) || this.getTemplateDefault(id); + }, + t: function(id, vars) { + var errStr, locale, template; + if (vars == null) { + vars = {}; + } + locale = this.getLocale(); + template = this.getTemplate(id); + if (template == null) { + if (/dev|test/.test(window.location.host)) { + template = "(?) " + id; + } else { + template = this.getTemplateDefault(id); + } + errStr = "Missing [" + locale + "] translation for [" + id + "] at [" + window.location.hash + "] - Default template is [" + template + "]"; + this.log({ + error: errStr, + locale: locale, + id: id, + defaultTemplate: template + }); + } + if (template) { + return _.template(template, vars); + } else { + return id; + } + }, + log: function(error) { + if (/dev/.test(window.location.host)) { + if ((typeof console !== "undefined" && console !== null ? console.log : void 0) != null) { + return console.log(error); + } + } else { + _.extend(error, { + host: window.location.host, + hash: window.location.hash + }); + return this.castor.error(JSON.stringify(error)); + } + } + }; +}).call(this); +}, "web-lib/mixins/i18n_phone_form": function(exports, require, module) {(function() { + exports.i18nPhoneForm = { + _events: { + 'change select[data-country-code-prefix]': 'setCountryCodePrefix' + }, + setCountryCodePrefix: function(e) { + var $el, prefix; + $el = $(e.currentTarget); + prefix = $el.find('option:selected').attr('data-prefix'); + return $("#" + ($el.attr('data-country-code-prefix'))).text(prefix); + } + }; +}).call(this); +}, "web-lib/models/country": function(exports, require, module) {(function() { + var UberModel; + var __hasProp = Object.prototype.hasOwnProperty, __extends = function(child, parent) { + for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } + function ctor() { this.constructor = child; } + ctor.prototype = parent.prototype; + child.prototype = new ctor; + child.__super__ = parent.prototype; + return child; + }; + UberModel = require('web-lib/uber_model').UberModel; + exports.Country = (function() { + __extends(Country, UberModel); + function Country() { + Country.__super__.constructor.apply(this, arguments); + } + Country.prototype.url = function() { + if (this.id) { + return "/countries/" + this.id; + } else { + return '/countries'; + } + }; + return Country; + })(); +}).call(this); +}, "web-lib/models/vehicle_type": function(exports, require, module) {(function() { + var UberModel; + var __bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; }, __hasProp = Object.prototype.hasOwnProperty, __extends = function(child, parent) { + for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } + function ctor() { this.constructor = child; } + ctor.prototype = parent.prototype; + child.prototype = new ctor; + child.__super__ = parent.prototype; + return child; + }; + UberModel = require('web-lib/uber_model').UberModel; + exports.VehicleType = (function() { + __extends(VehicleType, UberModel); + function VehicleType() { + this.toString = __bind(this.toString, this); + VehicleType.__super__.constructor.apply(this, arguments); + } + VehicleType.prototype.endpoint = 'vehicle_types'; + VehicleType.prototype.toTableRow = function(cols) { + var actions, c, capacity, city_id, columnValues, created_at, created_by_user_id, deleted_at, id, make, minimum_year, model, rows, type, updated_at, updated_by_user_id, _i, _len, _ref; + id = "" + (this.get('id')) + ""; + if (this.get('created_at')) { + created_at = app.helpers.formatDate(this.get('created_at')); + } + if (this.get('updated_at')) { + updated_at = app.helpers.formatDate(this.get('updated_at')); + } + if (this.get('deleted_at')) { + deleted_at = app.helpers.formatDate(this.get('deleted_at')); + } + created_by_user_id = "" + (this.get('created_by_user_id')) + ""; + updated_by_user_id = "" + (this.get('updated_by_user_id')) + ""; + city_id = (_ref = this.get('city')) != null ? _ref.get('display_name') : void 0; + type = this.get('type'); + make = this.get('make'); + model = this.get('model'); + capacity = this.get('capacity'); + minimum_year = this.get('minimum_year'); + actions = "Show"; + if (!this.get('deleted_at')) { + actions += " Edit"; + actions += " Delete"; + } + columnValues = { + id: id, + created_at: created_at, + updated_at: updated_at, + deleted_at: deleted_at, + created_by_user_id: created_by_user_id, + updated_by_user_id: updated_by_user_id, + city_id: city_id, + type: type, + make: make, + model: model, + capacity: capacity, + minimum_year: minimum_year, + actions: actions + }; + rows = []; + for (_i = 0, _len = cols.length; _i < _len; _i++) { + c = cols[_i]; + rows.push(columnValues[c] ? columnValues[c] : '-'); + } + return rows; + }; + VehicleType.prototype.toString = function() { + return this.get('make') + ' ' + this.get('model') + ' ' + this.get('type') + (" (" + (this.get('capacity')) + ")"); + }; + return VehicleType; + })(); +}).call(this); +}, "web-lib/templates/footer": function(exports, require, module) {module.exports = function(__obj) { + if (!__obj) __obj = {}; + var __out = [], __capture = function(callback) { + var out = __out, result; + __out = []; + callback.call(this); + result = __out.join(''); + __out = out; + return __safe(result); + }, __sanitize = function(value) { + if (value && value.ecoSafe) { + return value; + } else if (typeof value !== 'undefined' && value != null) { + return __escape(value); + } else { + return ''; + } + }, __safe, __objSafe = __obj.safe, __escape = __obj.escape; + __safe = __obj.safe = function(value) { + if (value && value.ecoSafe) { + return value; + } else { + if (!(typeof value !== 'undefined' && value != null)) value = ''; + var result = new String(value); + result.ecoSafe = true; + return result; + } + }; + if (!__escape) { + __escape = __obj.escape = function(value) { + return ('' + value) + .replace(/&/g, '&') + .replace(//g, '>') + .replace(/"/g, '"'); + }; + } + (function() { + (function() { + var locale, title, _ref; + __out.push('\n\n\n\n\n'); + }).call(this); + + }).call(__obj); + __obj.safe = __objSafe, __obj.escape = __escape; + return __out.join(''); +}}, "web-lib/translations/en": function(exports, require, module) {(function() { + exports.translations = { + "Info": "Info", + "Learn More": "Learn More", + "Pricing": "Pricing", + "FAQ": "FAQ", + "Support": "Support", + "Support & FAQ": "Support & FAQ", + "Contact Us": "Contact Us", + "Jobs": "Jobs", + "Phones": "Phones", + "Text Message": "Text Message", + "iPhone": "iPhone", + "Android": "Android", + "Drivers": "Drivers", + "Apply": "Apply", + "Sign In": "Sign In", + "Social": "Social", + "Twitter": "Twitter", + "Facebook": "Facebook", + "Blog": "Blog", + "Legal": "Legal", + "Company_Footer": "Company", + "Privacy Policy": "Privacy Policy", + "Terms": "Terms", + "Copyright © Uber Technologies, Inc.": "Copyright © Uber Technologies, Inc.", + "Language:": "Language:", + "Apply to Drive": "Apply to Drive", + "Expiration": "Expiration", + "Fare": "Fare", + "Driver": "Driver ", + "Dashboard": "Dashboard", + "Forgot Password": "Forgot Password", + "Trip Details": "Trip Details", + "Save": "Save", + "Cancel": "Cancel", + "Edit": "Edit", + "Password": "Password", + "First Name": "First Name", + "Last Name": "Last Name", + "Email Address": "Email Address", + "Submit": "Submit", + "Mobile Number": "Mobile Number", + "Zip Code": "Zip Code", + "Sign Out": "Sign Out", + "Confirm Email Message": "Attempting to confirm email...", + "Upload": "Upload", + "Rating": "Rating", + "Pickup Time": "Pickup Time", + "2011": "2011", + "2012": "2012", + "2013": "2013", + "2014": "2014", + "2015": "2015", + "2016": "2016", + "2017": "2017", + "2018": "2018", + "2019": "2019", + "2020": "2020", + "2021": "2021", + "2022": "2022", + "01": "01", + "02": "02", + "03": "03", + "04": "04", + "05": "05", + "06": "06", + "07": "07", + "08": "08", + "09": "09", + "10": "10", + "11": "11", + "12": "12" + }; +}).call(this); +}, "web-lib/translations/fr": function(exports, require, module) {(function() { + exports.translations = { + "Info": "Info", + "Learn More": "En Savoir Plus", + "Pricing": "Calcul du Prix", + "Support & FAQ": "Aide & FAQ", + "Contact Us": "Contactez Nous", + "Jobs": "Emplois", + "Phones": "Téléphones", + "Text Message": "SMS", + "iPhone": "iPhone", + "Android": "Android", + "Apply to Drive": "Candidature Chauffeur", + "Sign In": "Connexion", + "Social": "Contact", + "Twitter": "Twitter", + "Facebook": "Facebook", + "Blog": "Blog", + "Privacy Policy": "Protection des Données Personelles", + "Terms": "Conditions Générales", + "Copyright © Uber Technologies, Inc.": "© Uber, Inc.", + "Language:": "Langue:", + "Forgot Password": "Mot de passe oublié", + "Company_Footer": "À Propos d'Uber", + "Expiration": "Expiration", + "Fare": "Tarif", + "Driver": "Chauffeur", + "Drivers": "Chauffeurs", + "Dashboard": "Tableau de bord", + "Forgot Password": "Mot de passe oublié", + "Forgot Password?": "Mot de passe oublié?", + "Trip Details": "Détails de la course", + "Save": "Enregistrer", + "Cancel": "Annuler", + "Edit": "Modifier", + "Password": "Mot de passe", + "First Name": "Prénom", + "Last Name": "Nom", + "Email Address": "E-mail", + "Submit": "Soumettre", + "Mobile Number": "Téléphone Portable", + "Zip Code": "Code Postal", + "Sign Out": "Se déconnecter", + "Confirm Email Message": "E-mail de confirmation", + "Upload": "Télécharger", + "Rating": "Notation", + "Pickup Time": "Heure de prise en charge", + "2011": "2011", + "2012": "2012", + "2013": "2013", + "2014": "2014", + "2015": "2015", + "2016": "2016", + "2017": "2017", + "2018": "2018", + "2019": "2019", + "2020": "2020", + "2021": "2021", + "2022": "2022", + "01": "01", + "02": "02", + "03": "03", + "04": "04", + "05": "05", + "06": "06", + "07": "07", + "08": "08", + "09": "09", + "10": "10", + "11": "11", + "12": "12" + }; +}).call(this); +}, "web-lib/uber_collection": function(exports, require, module) {(function() { + var __hasProp = Object.prototype.hasOwnProperty, __extends = function(child, parent) { + for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } + function ctor() { this.constructor = child; } + ctor.prototype = parent.prototype; + child.prototype = new ctor; + child.__super__ = parent.prototype; + return child; + }; + exports.UberCollection = (function() { + __extends(UberCollection, Backbone.Collection); + function UberCollection() { + UberCollection.__super__.constructor.apply(this, arguments); + } + UberCollection.prototype.parse = function(data) { + var model, tmp, _i, _in, _len, _out; + _in = data.resources || data; + _out = []; + if (data.meta) { + this.meta = data.meta; + } + for (_i = 0, _len = _in.length; _i < _len; _i++) { + model = _in[_i]; + tmp = new this.model; + tmp.set(tmp.parse(model)); + _out.push(tmp); + } + return _out; + }; + UberCollection.prototype.isRenderable = function() { + if (this.models.length) { + return true; + } + }; + UberCollection.prototype.toTableRows = function(cols) { + var tableRows; + tableRows = []; + _.each(this.models, function(model) { + return tableRows.push(model.toTableRow(cols)); + }); + return tableRows; + }; + return UberCollection; + })(); +}).call(this); +}, "web-lib/uber_model": function(exports, require, module) {(function() { + var __bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; }, __hasProp = Object.prototype.hasOwnProperty, __extends = function(child, parent) { + for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } + function ctor() { this.constructor = child; } + ctor.prototype = parent.prototype; + child.prototype = new ctor; + child.__super__ = parent.prototype; + return child; + }, __indexOf = Array.prototype.indexOf || function(item) { + for (var i = 0, l = this.length; i < l; i++) { + if (this[i] === item) return i; + } + return -1; + }; + exports.UberModel = (function() { + __extends(UberModel, Backbone.Model); + function UberModel() { + this.refetch = __bind(this.refetch, this); + this.fetch = __bind(this.fetch, this); + this.save = __bind(this.save, this); + this.parse = __bind(this.parse, this); + UberModel.__super__.constructor.apply(this, arguments); + } + UberModel.prototype.endpoint = 'set_api_endpoint_in_subclass'; + UberModel.prototype.refetchOptions = {}; + UberModel.prototype.url = function(type) { + var endpoint_path; + endpoint_path = "/" + this.endpoint; + if (this.get('id')) { + return endpoint_path + ("/" + (this.get('id'))); + } else { + return endpoint_path; + } + }; + UberModel.prototype.isRenderable = function() { + var i, key, value, _ref; + i = 0; + _ref = this.attributes; + for (key in _ref) { + if (!__hasProp.call(_ref, key)) continue; + value = _ref[key]; + if (this.attributes.hasOwnProperty(key)) { + i += 1; + } + if (i > 1) { + return true; + } + } + return !(i === 1); + }; + UberModel.prototype.parse = function(response) { + var attrs, key, model, models, _i, _j, _k, _len, _len2, _len3, _ref, _ref2; + if (typeof response === 'object') { + _ref = _.intersection(_.keys(app.models), _.keys(response)); + for (_i = 0, _len = _ref.length; _i < _len; _i++) { + key = _ref[_i]; + if (response[key]) { + attrs = this.parse(response[key]); + if (typeof attrs === 'object') { + response[key] = new app.models[key](attrs); + } + } + } + _ref2 = _.intersection(_.keys(app.collections), _.keys(response)); + for (_j = 0, _len2 = _ref2.length; _j < _len2; _j++) { + key = _ref2[_j]; + models = response[key]; + if (_.isArray(models)) { + response[key] = new app.collections[key]; + for (_k = 0, _len3 = models.length; _k < _len3; _k++) { + model = models[_k]; + attrs = app.collections[key].prototype.model.prototype.parse(model); + response[key].add(new response[key].model(attrs)); + } + } + } + } + return response; + }; + UberModel.prototype.save = function(attributes, options) { + var attr, _i, _j, _len, _len2, _ref, _ref2; + if (options == null) { + options = {}; + } + _ref = _.intersection(_.keys(app.models), _.keys(this.attributes)); + for (_i = 0, _len = _ref.length; _i < _len; _i++) { + attr = _ref[_i]; + if (typeof this.get(attr) === "object") { + this.unset(attr, { + silent: true + }); + } + } + _ref2 = _.intersection(_.keys(app.collections), _.keys(this.attributes)); + for (_j = 0, _len2 = _ref2.length; _j < _len2; _j++) { + attr = _ref2[_j]; + if (typeof this.get(attr) === "object") { + this.unset(attr, { + silent: true + }); + } + } + if ((options != null) && options.diff && (attributes != null) && attributes !== {}) { + attributes['id'] = this.get('id'); + attributes['token'] = this.get('token'); + this.clear({ + 'silent': true + }); + this.set(attributes, { + silent: true + }); + } + if (__indexOf.call(_.keys(options), "data") < 0 && __indexOf.call(_.keys(this.refetchOptions || {}), "data") >= 0) { + options.data = this.refetchOptions.data; + } + return Backbone.Model.prototype.save.call(this, attributes, options); + }; + UberModel.prototype.fetch = function(options) { + this.refetchOptions = options; + return Backbone.Model.prototype.fetch.call(this, options); + }; + UberModel.prototype.refetch = function() { + return this.fetch(this.refetchOptions); + }; + return UberModel; + })(); +}).call(this); +}, "web-lib/uber_router": function(exports, require, module) {(function() { + var __hasProp = Object.prototype.hasOwnProperty, __extends = function(child, parent) { + for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } + function ctor() { this.constructor = child; } + ctor.prototype = parent.prototype; + child.prototype = new ctor; + child.__super__ = parent.prototype; + return child; + }; + exports.UberRouter = (function() { + __extends(UberRouter, Backbone.Router); + function UberRouter() { + UberRouter.__super__.constructor.apply(this, arguments); + } + UberRouter.prototype.datePickers = function(format) { + if (format == null) { + format = "%Z-%m-%dT%H:%i:%s%:"; + } + $('.datepicker').AnyTime_noPicker(); + return $('.datepicker').AnyTime_picker({ + 'format': format, + 'formatUtcOffset': '%@' + }); + }; + UberRouter.prototype.autoGrowInput = function() { + return $('.editable input').autoGrowInput(); + }; + UberRouter.prototype.windowTitle = function(title) { + return $(document).attr('title', title); + }; + return UberRouter; + })(); +}).call(this); +}, "web-lib/uber_show_view": function(exports, require, module) {(function() { + var UberView; + var __hasProp = Object.prototype.hasOwnProperty, __extends = function(child, parent) { + for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } + function ctor() { this.constructor = child; } + ctor.prototype = parent.prototype; + child.prototype = new ctor; + child.__super__ = parent.prototype; + return child; + }, __bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; }; + UberView = require('web-lib/uber_view').UberView; + exports.UberShowView = (function() { + __extends(UberShowView, UberView); + function UberShowView() { + UberShowView.__super__.constructor.apply(this, arguments); + } + UberShowView.prototype.view = 'show'; + UberShowView.prototype.events = { + 'click #edit': 'edit', + 'submit form': 'save', + 'click .cancel': 'cancel' + }; + UberShowView.prototype.errors = null; + UberShowView.prototype.showTemplate = null; + UberShowView.prototype.editTemplate = null; + UberShowView.prototype.initialize = function() { + if (this.init_hook) { + this.init_hook(); + } + _.bindAll(this, 'render'); + return this.model.bind('change', this.render); + }; + UberShowView.prototype.render = function() { + var $el; + $el = $(this.el); + this.selectView(); + if (this.view === 'show') { + $el.html(this.showTemplate({ + model: this.model + })); + } else if (this.view === 'edit') { + $el.html(this.editTemplate({ + model: this.model, + errors: this.errors || {}, + collections: this.collections || {} + })); + } else { + $el.html(this.newTemplate({ + model: this.model, + errors: this.errors || {}, + collections: this.collections || {} + })); + } + if (this.render_hook) { + this.render_hook(); + } + this.errors = null; + this.userIdsToLinkedNames(); + this.datePickers(); + return this.place(); + }; + UberShowView.prototype.selectView = function() { + var url; + if (this.options.urlRendering) { + url = window.location.hash; + if (url.match(/\/new/)) { + return this.view = 'new'; + } else if (url.match(/\/edit/)) { + return this.view = 'edit'; + } else { + return this.view = 'show'; + } + } + }; + UberShowView.prototype.edit = function(e) { + e.preventDefault(); + if (this.options.urlRendering) { + window.location.hash = '#/' + this.model.endpoint + '/' + this.model.get('id') + '/edit'; + } else { + this.view = 'edit'; + } + return this.model.change(); + }; + UberShowView.prototype.save = function(e) { + var attributes, ele, form_attrs, _i, _len, _ref; + e.preventDefault(); + attributes = $(e.currentTarget).serializeToJson(); + form_attrs = {}; + _ref = $('input[type="radio"]'); + for (_i = 0, _len = _ref.length; _i < _len; _i++) { + ele = _ref[_i]; + if ($(ele).is(':checked')) { + form_attrs[$(ele).attr('name')] = $(ele).attr('value'); + } + } + attributes = _.extend(attributes, form_attrs); + if (this.relationships) { + attributes = _.extend(attributes, { + relationships: this.relationships + }); + } + if (this.filter_attributes != null) { + this.filter_attributes(attributes); + } + return this.model.save(attributes, { + silent: true, + success: __bind(function(model) { + if (this.options.urlRendering) { + window.location.hash = '#/' + this.model.endpoint + '/' + this.model.get('id'); + } else { + this.view = 'show'; + } + return this.flash('success', "Uber save!"); + }, this), + statusCode: { + 406: __bind(function(xhr) { + this.errors = JSON.parse(xhr.responseText); + return this.flash('error', 'That was not Uber.'); + }, this) + }, + error: __bind(function(model, xhr) { + var code, message, responseJSON, responseText; + code = xhr.status; + responseText = xhr.responseText; + if (responseText) { + responseJSON = JSON.parse(responseText); + } + if (responseJSON && (typeof responseJSON === 'object') && (responseJSON.hasOwnProperty('error'))) { + message = responseJSON.error; + } + return this.flash('error', (code || 'Unknown') + ' error' + (': ' + message || '')); + }, this), + complete: __bind(function() { + return this.model.change(); + }, this) + }); + }; + UberShowView.prototype.cancel = function(e) { + e.preventDefault(); + if (this.options.urlRendering) { + window.location.hash = '#/' + this.model.endpoint + '/' + this.model.get('id'); + } else { + this.view = 'show'; + } + return this.model.fetch({ + silent: true, + complete: __bind(function() { + return this.model.change(); + }, this) + }); + }; + return UberShowView; + })(); +}).call(this); +}, "web-lib/uber_sync": function(exports, require, module) {(function() { + var methodType; + var __indexOf = Array.prototype.indexOf || function(item) { + for (var i = 0, l = this.length; i < l; i++) { + if (this[i] === item) return i; + } + return -1; + }; + methodType = { + create: 'POST', + update: 'PUT', + "delete": 'DELETE', + read: 'GET' + }; + exports.UberSync = function(method, model, options) { + var token; + options.type = methodType[method]; + options.url = _.isString(this.url) ? '/api' + this.url : '/api' + this.url(options.type); + options.data = _.extend({}, options.data); + if (__indexOf.call(_.keys(options.data), "city_id") < 0) { + if ($.cookie('city_filter')) { + _.extend(options.data, { + city_id: $.cookie('city_filter') + }); + } + } else { + delete options.data['city_id']; + } + if (options.type === 'POST' || options.type === 'PUT') { + _.extend(options.data, model.toJSON()); + } + token = $.cookie('token') ? $.cookie('token') : typeof USER !== "undefined" && USER !== null ? USER.get('token') : ""; + _.extend(options.data, { + token: token + }); + if (method === "delete") { + options.contentType = 'application/json'; + options.data = JSON.stringify(options.data); + } + return $.ajax(options); + }; +}).call(this); +}, "web-lib/uber_view": function(exports, require, module) {(function() { + var __bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; }, __hasProp = Object.prototype.hasOwnProperty, __extends = function(child, parent) { + for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } + function ctor() { this.constructor = child; } + ctor.prototype = parent.prototype; + child.prototype = new ctor; + child.__super__ = parent.prototype; + return child; + }; + exports.UberView = (function() { + __extends(UberView, Backbone.View); + function UberView() { + this.processDocumentUpload = __bind(this.processDocumentUpload, this); + UberView.__super__.constructor.apply(this, arguments); + } + UberView.prototype.className = 'view_container'; + UberView.prototype.hashId = function() { + return parseInt(location.hash.split('/')[2]); + }; + UberView.prototype.place = function(content) { + var $target; + $target = this.options.scope ? this.options.scope.find(this.options.selector) : $(this.options.selector); + $target[this.options.method || 'html'](content || this.el); + this.delegateEvents(); + $('#spinner').hide(); + return this; + }; + UberView.prototype.mixin = function(m, args) { + var events, self; + if (args == null) { + args = {}; + } + self = this; + events = m._events; + _.extend(this, m); + if (m.initialize) { + m.initialize(self, args); + } + return _.each(_.keys(events), function(key) { + var event, func, selector, split; + split = key.split(' '); + event = split[0]; + selector = split[1]; + func = events[key]; + return $(self.el).find(selector).live(event, function(e) { + return self[func](e); + }); + }); + }; + UberView.prototype.datePickers = function(format) { + if (format == null) { + format = "%Z-%m-%dT%H:%i:%s%:"; + } + $('.datepicker').AnyTime_noPicker(); + return $('.datepicker').AnyTime_picker({ + 'format': format, + 'formatUtcOffset': '%@' + }); + }; + UberView.prototype.dataTable = function(collection, selector, options, params, cols) { + var defaults; + if (selector == null) { + selector = 'table'; + } + if (options == null) { + options = {}; + } + if (params == null) { + params = {}; + } + if (cols == null) { + cols = []; + } + $(selector).empty(); + if (!cols.length) { + cols = collection.defaultColumns; + } + defaults = { + aoColumns: collection.tableColumns(cols), + bDestroy: true, + bSort: false, + bProcessing: true, + bFilter: false, + bServerSide: true, + bPaginate: true, + bScrollInfinite: true, + bScrollCollapse: true, + sScrollY: '600px', + iDisplayLength: 50, + fnServerData: function(source, data, callback) { + var defaultParams; + defaultParams = { + limit: data[4].value, + offset: data[3].value + }; + return collection.fetch({ + data: _.extend(defaultParams, params), + success: function() { + return callback({ + aaData: collection.toTableRows(cols), + iTotalRecords: collection.meta.count, + iTotalDisplayRecords: collection.meta.count + }); + }, + error: function() { + return new Error({ + message: 'Loading error.' + }); + } + }); + }, + fnRowCallback: function(nRow, aData, iDisplayIndex, iDisplayIndexFull) { + $('[data-tooltip]', nRow).qtip({ + content: { + attr: 'data-tooltip' + }, + style: { + classes: "ui-tooltip-light ui-tooltip-rounded ui-tooltip-shadow" + } + }); + return nRow; + } + }; + return $(this.el).find(selector).dataTable(_.extend(defaults, options)); + }; + UberView.prototype.dataTableLocal = function(collection, selector, options, params, cols) { + var $dataTable, defaults; + if (selector == null) { + selector = 'table'; + } + if (options == null) { + options = {}; + } + if (params == null) { + params = {}; + } + if (cols == null) { + cols = []; + } + $(selector).empty(); + if (!cols.length || cols.length === 0) { + cols = collection.defaultColumns; + } + defaults = { + aaData: collection.toTableRows(cols), + aoColumns: collection.tableColumns(cols), + bDestroy: true, + bSort: false, + bProcessing: true, + bFilter: false, + bScrollInfinite: true, + bScrollCollapse: true, + sScrollY: '600px', + iDisplayLength: -1 + }; + $dataTable = $(this.el).find(selector).dataTable(_.extend(defaults, options)); + _.delay(__bind(function() { + if ($dataTable && $dataTable.length > 0) { + return $dataTable.fnAdjustColumnSizing(); + } + }, this), 1); + return $dataTable; + }; + UberView.prototype.reverseGeocode = function() { + var $el; + return ''; + $el = $(this.el); + return this.requireMaps(function() { + var geocoder; + geocoder = new google.maps.Geocoder(); + return $el.find('[data-point]').each(function() { + var $this, latLng, point; + $this = $(this); + point = JSON.parse($this.attr('data-point')); + latLng = new google.maps.LatLng(point.latitude, point.longitude); + return geocoder.geocode({ + latLng: latLng + }, function(data, status) { + if (status === google.maps.GeocoderStatus.OK) { + return $this.text(data[0].formatted_address); + } + }); + }); + }); + }; + UberView.prototype.userIdsToLinkedNames = function() { + var $el; + $el = $(this.el); + return $el.find('a[data-user-id][data-user-type]').each(function() { + var $this, user, userType; + $this = $(this); + userType = $this.attr('data-user-type') === 'user' ? 'client' : $this.attr('data-user-type'); + user = new app.models[userType]({ + id: $this.attr('data-user-id') + }); + return user.fetch({ + success: function(user) { + return $this.html(app.helpers.linkedName(user)).attr('href', "!/" + user.role + "s/" + user.id); + }, + error: function() { + if ($this.attr('data-user-type') === 'user') { + user = new app.models['driver']({ + id: $this.attr('data-user-id') + }); + return user.fetch({ + success: function(user) { + return $this.html(app.helpers.linkedName(user)).attr('href', "!/driver/" + user.id); + } + }); + } + } + }); + }); + }; + UberView.prototype.selectedCity = function() { + var $selected, city, cityFilter; + cityFilter = $.cookie('city_filter'); + $selected = $("#city_filter option[value=" + cityFilter + "]"); + if (city_filter && $selected.length) { + return city = { + lat: parseFloat($selected.attr('data-lat')), + lng: parseFloat($selected.attr('data-lng')), + timezone: $selected.attr('data-timezone') + }; + } else { + return city = { + lat: 37.775, + lng: -122.45, + timezone: 'Etc/UTC' + }; + } + }; + UberView.prototype.updateModel = function(e, success) { + var $el, attrs, model, self; + e.preventDefault(); + $el = $(e.currentTarget); + self = this; + model = new this.model.__proto__.constructor({ + id: this.model.id + }); + attrs = {}; + $el.find('[name]').each(function() { + var $this; + $this = $(this); + return attrs["" + ($this.attr('name'))] = $this.val(); + }); + self.model.set(attrs); + $el.find('span.error').text(''); + return model.save(attrs, { + complete: function(xhr) { + var response; + response = JSON.parse(xhr.responseText); + switch (xhr.status) { + case 200: + self.model = model; + $el.find('[name]').val(''); + if (success) { + return success(); + } + break; + case 406: + return _.each(response, function(error, field) { + return $el.find("[name=" + field + "]").parent().find('span.error').text(error); + }); + default: + return this.unanticipatedError(response); + } + } + }); + }; + UberView.prototype.autoUpdateModel = function(e) { + var $el, arg, model, self, val; + $el = $(e.currentTarget); + val = $el.val(); + self = this; + if (val !== this.model.get($el.attr('id'))) { + arg = {}; + arg[$el.attr('id')] = $el.is(':checkbox') ? $el.is(':checked') ? 1 : 0 : val; + $('.editable span').empty(); + this.model.set(arg); + model = new this.model.__proto__.constructor({ + id: this.model.id + }); + return model.save(arg, { + complete: function(xhr) { + var key, response, _i, _len, _ref, _results; + response = JSON.parse(xhr.responseText); + switch (xhr.status) { + case 200: + self.flash('success', 'Saved!'); + return $el.blur(); + case 406: + self.flash('error', 'That was not Uber.'); + _ref = _.keys(response); + _results = []; + for (_i = 0, _len = _ref.length; _i < _len; _i++) { + key = _ref[_i]; + _results.push($el.parent().find('span').html(response[key])); + } + return _results; + break; + default: + return self.unanticipatedError; + } + } + }); + } + }; + UberView.prototype.unanticipatedError = function(response) { + return self.flash('error', response); + }; + UberView.prototype.flash = function(type, text) { + var $banner; + $banner = $("." + type); + $banner.find('p').text(text).end().css('border', '1px solid #999').animate({ + top: 0 + }, 500); + return setTimeout(function() { + return $banner.animate({ + top: -$banner.outerHeight() + }, 500); + }, 3000); + }; + UberView.prototype.requireMaps = function(callback) { + if (typeof google !== 'undefined' && google.maps) { + return callback(); + } else { + return $.getScript("https://www.google.com/jsapi?key=" + CONFIG.googleJsApiKey, function() { + return google.load('maps', 3, { + callback: callback, + other_params: 'sensor=false&language=en' + }); + }); + } + }; + UberView.prototype.select_drop_down = function(model, key) { + var value; + value = model.get(key); + if (value) { + return $("select[id='" + key + "'] option[value='" + value + "']").attr('selected', 'selected'); + } + }; + UberView.prototype.processDocumentUpload = function(e) { + var $fi, $form, arbData, curDate, data, expDate, expM, expY, expiration, fileElementId, invalid; + e.preventDefault(); + $form = $(e.currentTarget); + $fi = $("input[type=file]", $form); + $(".validationError").removeClass("validationError"); + if (!$fi.val()) { + return $fi.addClass("validationError"); + } else { + fileElementId = $fi.attr('id'); + expY = $("select[name=expiration-year]", $form).val(); + expM = $("select[name=expiration-month]", $form).val(); + invalid = false; + if (expY && expM) { + expDate = new Date(expY, expM, 28); + curDate = new Date(); + if (expDate < curDate) { + invalid = true; + $(".expiration", $form).addClass("validationError"); + } + expiration = "" + expY + "-" + expM + "-28T23:59:59Z"; + } + arbData = {}; + $(".arbitraryField", $form).each(__bind(function(i, e) { + arbData[$(e).attr('name')] = $(e).val(); + if ($(e).val() === "") { + invalid = true; + return $(e).addClass("validationError"); + } + }, this)); + if (!invalid) { + data = { + token: $.cookie('token') || USER.get('token'), + name: $("input[name=fileName]", $form).val(), + meta: escape(JSON.stringify(arbData)), + user_id: $("input[name=driver_id]", $form).val(), + vehicle_id: $("input[name=vehicle_id]", $form).val() + }; + if (expiration) { + data['expiration'] = expiration; + } + $("#spinner").show(); + return $.ajaxFileUpload({ + url: '/api/documents', + secureuri: false, + fileElementId: fileElementId, + data: data, + complete: __bind(function(resp, status) { + var key, _i, _len, _ref, _results; + $("#spinner").hide(); + if (status === "success") { + if (this.model) { + this.model.refetch(); + } else { + USER.refetch(); + } + } + if (status === "error") { + _ref = _.keys(resp); + _results = []; + for (_i = 0, _len = _ref.length; _i < _len; _i++) { + key = _ref[_i]; + _results.push($("*[name=" + key + "]", $form).addClass("validationError")); + } + return _results; + } + }, this) + }); + } + } + }; + return UberView; + })(); +}).call(this); +}, "web-lib/views/footer": function(exports, require, module) {(function() { + var footerTemplate; + var __hasProp = Object.prototype.hasOwnProperty, __extends = function(child, parent) { + for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } + function ctor() { this.constructor = child; } + ctor.prototype = parent.prototype; + child.prototype = new ctor; + child.__super__ = parent.prototype; + return child; + }; + footerTemplate = require('web-lib/templates/footer'); + exports.SharedFooterView = (function() { + __extends(SharedFooterView, Backbone.View); + function SharedFooterView() { + SharedFooterView.__super__.constructor.apply(this, arguments); + } + SharedFooterView.prototype.id = 'footer_view'; + SharedFooterView.prototype.events = { + 'click .language': 'intl_set_cookie_locale' + }; + SharedFooterView.prototype.render = function() { + $(this.el).html(footerTemplate()); + this.delegateEvents(); + return this; + }; + SharedFooterView.prototype.intl_set_cookie_locale = function(e) { + var _ref; + i18n.setLocale(e != null ? (_ref = e.srcElement) != null ? _ref.id : void 0 : void 0); + return location.reload(); + }; + return SharedFooterView; + })(); +}).call(this); +}}); diff --git a/node_modules/socket.io/node_modules/socket.io-client/node_modules/uglify-js/tmp/embed-tokens.js b/node_modules/socket.io/node_modules/socket.io-client/node_modules/uglify-js/tmp/embed-tokens.js new file mode 100644 index 0000000..61307ee --- /dev/null +++ b/node_modules/socket.io/node_modules/socket.io-client/node_modules/uglify-js/tmp/embed-tokens.js @@ -0,0 +1,15 @@ +#! /usr/bin/env node + +global.sys = require(/^v0\.[012]/.test(process.version) ? "sys" : "util"); +var fs = require("fs"); +var uglify = require("uglify-js"), // symlink ~/.node_libraries/uglify-js.js to ../uglify-js.js + jsp = uglify.parser, + pro = uglify.uglify; + +var code = fs.readFileSync("embed-tokens.js", "utf8").replace(/^#.*$/mg, ""); +var ast = jsp.parse(code, null, true); + +// trololo +function fooBar() {} + +console.log(sys.inspect(ast, null, null)); diff --git a/node_modules/socket.io/node_modules/socket.io-client/node_modules/uglify-js/tmp/goto.js b/node_modules/socket.io/node_modules/socket.io-client/node_modules/uglify-js/tmp/goto.js new file mode 100644 index 0000000..945960c --- /dev/null +++ b/node_modules/socket.io/node_modules/socket.io-client/node_modules/uglify-js/tmp/goto.js @@ -0,0 +1,26 @@ +function unique(arqw) { + var a = [], i, j + outer: for (i = 0; i < arqw.length; i++) { + for (j = 0; j < a.length; j++) { + if (a[j] == arqw[i]) { + continue outer + } + } + a[a.length] = arqw[i] + } + return a +} + + +function unique(arqw) { + var crap = [], i, j + outer: for (i = 0; i < arqw.length; i++) { + for (j = 0; j < crap.length; j++) { + if (crap[j] == arqw[i]) { + continue outer + } + } + crap[crap.length] = arqw[i] + } + return crap +} diff --git a/node_modules/socket.io/node_modules/socket.io-client/node_modules/uglify-js/tmp/goto2.js b/node_modules/socket.io/node_modules/socket.io-client/node_modules/uglify-js/tmp/goto2.js new file mode 100644 index 0000000..d13b2bc --- /dev/null +++ b/node_modules/socket.io/node_modules/socket.io-client/node_modules/uglify-js/tmp/goto2.js @@ -0,0 +1,8 @@ +function q(qooo) { + var a; + foo: for(;;) { + a++; + if (something) break foo; + return qooo; + } +} diff --git a/node_modules/socket.io/node_modules/socket.io-client/node_modules/uglify-js/tmp/hoist.js b/node_modules/socket.io/node_modules/socket.io-client/node_modules/uglify-js/tmp/hoist.js new file mode 100644 index 0000000..4bf2b94 --- /dev/null +++ b/node_modules/socket.io/node_modules/socket.io-client/node_modules/uglify-js/tmp/hoist.js @@ -0,0 +1,33 @@ +function foo(arg1, arg2, arg3, arg4, arg5, arg6) { + var a = 5; + { + var d = 10, mak = 20, buz = 30; + var q = buz * 2; + } + if (moo) { + var a, b, c; + } + for (var arg1 = 0, d = 20; arg1 < 10; ++arg1) + console.log(arg3); + for (var i in mak) {} + for (j in d) {} + var d; + + function test() { + + }; + + //test(); + + (function moo(first, second){ + console.log(first); + })(1); + + (function moo(first, second){ + console.log(moo()); + })(1); +} + + +var foo; +var bar; diff --git a/node_modules/socket.io/node_modules/socket.io-client/node_modules/uglify-js/tmp/instrument.js b/node_modules/socket.io/node_modules/socket.io-client/node_modules/uglify-js/tmp/instrument.js new file mode 100644 index 0000000..c6a9d79 --- /dev/null +++ b/node_modules/socket.io/node_modules/socket.io-client/node_modules/uglify-js/tmp/instrument.js @@ -0,0 +1,97 @@ +// sample on how to use the parser and walker API to instrument some code + +var jsp = require("uglify-js").parser; +var pro = require("uglify-js").uglify; + +function instrument(code) { + var ast = jsp.parse(code, false, true); // true for the third arg specifies that we want + // to have start/end tokens embedded in the + // statements + var w = pro.ast_walker(); + + // we're gonna need this to push elements that we're currently looking at, to avoid + // endless recursion. + var analyzing = []; + function do_stat() { + var ret; + if (this[0].start && analyzing.indexOf(this) < 0) { + // without the `analyzing' hack, w.walk(this) would re-enter here leading + // to infinite recursion + analyzing.push(this); + ret = [ "splice", // XXX: "block" is safer + [ [ "stat", + [ "call", [ "name", "trace" ], + [ [ "string", this[0].toString() ], + [ "num", this[0].start.line ], + [ "num", this[0].start.col ], + [ "num", this[0].end.line ], + [ "num", this[0].end.col ]]]], + w.walk(this) ]]; + analyzing.pop(this); + } + return ret; + }; + var new_ast = w.with_walkers({ + "stat" : do_stat, + "label" : do_stat, + "break" : do_stat, + "continue" : do_stat, + "debugger" : do_stat, + "var" : do_stat, + "const" : do_stat, + "return" : do_stat, + "throw" : do_stat, + "try" : do_stat, + "defun" : do_stat, + "if" : do_stat, + "while" : do_stat, + "do" : do_stat, + "for" : do_stat, + "for-in" : do_stat, + "switch" : do_stat, + "with" : do_stat + }, function(){ + return w.walk(ast); + }); + return pro.gen_code(new_ast, { beautify: true }); +} + + + + +////// test code follows. + +var code = instrument(test.toString()); +console.log(code); + +function test() { + // simple stats + a = 5; + c += a + b; + "foo"; + + // var + var foo = 5; + const bar = 6, baz = 7; + + // switch block. note we can't track case lines the same way. + switch ("foo") { + case "foo": + return 1; + case "bar": + return 2; + } + + // for/for in + for (var i = 0; i < 5; ++i) { + console.log("Hello " + i); + } + for (var i in [ 1, 2, 3]) { + console.log(i); + } + + // note however that the following is broken. I guess we + // should add the block brackets in this case... + for (var i = 0; i < 5; ++i) + console.log("foo"); +} diff --git a/node_modules/socket.io/node_modules/socket.io-client/node_modules/uglify-js/tmp/instrument2.js b/node_modules/socket.io/node_modules/socket.io-client/node_modules/uglify-js/tmp/instrument2.js new file mode 100644 index 0000000..6aee5f3 --- /dev/null +++ b/node_modules/socket.io/node_modules/socket.io-client/node_modules/uglify-js/tmp/instrument2.js @@ -0,0 +1,138 @@ +// sample on how to use the parser and walker API to instrument some code + +var jsp = require("uglify-js").parser; +var pro = require("uglify-js").uglify; + +function instrument(code) { + var ast = jsp.parse(code, false, true); // true for the third arg specifies that we want + // to have start/end tokens embedded in the + // statements + var w = pro.ast_walker(); + + function trace (line, comment) { + var code = pro.gen_code(line, { beautify: true }); + var data = line[0] + + var args = [] + if (!comment) comment = "" + if (typeof data === "object") { + code = code.split(/\n/).shift() + args = [ [ "string", data.toString() ], + [ "string", code ], + [ "num", data.start.line ], + [ "num", data.start.col ], + [ "num", data.end.line ], + [ "num", data.end.col ]] + } else { + args = [ [ "string", data ], + [ "string", code ]] + + } + return [ "call", [ "name", "trace" ], args ]; + } + + // we're gonna need this to push elements that we're currently looking at, to avoid + // endless recursion. + var analyzing = []; + function do_stat() { + var ret; + if (this[0].start && analyzing.indexOf(this) < 0) { + // without the `analyzing' hack, w.walk(this) would re-enter here leading + // to infinite recursion + analyzing.push(this); + ret = [ "splice", + [ [ "stat", trace(this) ], + w.walk(this) ]]; + analyzing.pop(this); + } + return ret; + } + + function do_cond(c, t, f) { + return [ this[0], w.walk(c), + ["seq", trace(t), w.walk(t) ], + ["seq", trace(f), w.walk(f) ]]; + } + + function do_binary(c, l, r) { + if (c !== "&&" && c !== "||") { + return [this[0], c, w.walk(l), w.walk(r)]; + } + return [ this[0], c, + ["seq", trace(l), w.walk(l) ], + ["seq", trace(r), w.walk(r) ]]; + } + + var new_ast = w.with_walkers({ + "stat" : do_stat, + "label" : do_stat, + "break" : do_stat, + "continue" : do_stat, + "debugger" : do_stat, + "var" : do_stat, + "const" : do_stat, + "return" : do_stat, + "throw" : do_stat, + "try" : do_stat, + "defun" : do_stat, + "if" : do_stat, + "while" : do_stat, + "do" : do_stat, + "for" : do_stat, + "for-in" : do_stat, + "switch" : do_stat, + "with" : do_stat, + "conditional" : do_cond, + "binary" : do_binary + }, function(){ + return w.walk(ast); + }); + return pro.gen_code(new_ast, { beautify: true }); +} + + +////// test code follows. + +var code = instrument(test.toString()); +console.log(code); + +function test() { + // simple stats + a = 5; + c += a + b; + "foo"; + + // var + var foo = 5; + const bar = 6, baz = 7; + + // switch block. note we can't track case lines the same way. + switch ("foo") { + case "foo": + return 1; + case "bar": + return 2; + } + + // for/for in + for (var i = 0; i < 5; ++i) { + console.log("Hello " + i); + } + for (var i in [ 1, 2, 3]) { + console.log(i); + } + + for (var i = 0; i < 5; ++i) + console.log("foo"); + + for (var i = 0; i < 5; ++i) { + console.log("foo"); + } + + var k = plurp() ? 1 : 0; + var x = a ? doX(y) && goZoo("zoo") + : b ? blerg({ x: y }) + : null; + + var x = X || Y; +} diff --git a/node_modules/socket.io/node_modules/socket.io-client/node_modules/uglify-js/tmp/liftvars.js b/node_modules/socket.io/node_modules/socket.io-client/node_modules/uglify-js/tmp/liftvars.js new file mode 100644 index 0000000..2f4b7fe --- /dev/null +++ b/node_modules/socket.io/node_modules/socket.io-client/node_modules/uglify-js/tmp/liftvars.js @@ -0,0 +1,8 @@ +var UNUSED_VAR1 = 19; + +function main() { + var unused_var2 = 20; + alert(100); +} + +main(); diff --git a/node_modules/socket.io/node_modules/socket.io-client/node_modules/uglify-js/tmp/test.js b/node_modules/socket.io/node_modules/socket.io-client/node_modules/uglify-js/tmp/test.js new file mode 100644 index 0000000..f295fba --- /dev/null +++ b/node_modules/socket.io/node_modules/socket.io-client/node_modules/uglify-js/tmp/test.js @@ -0,0 +1,30 @@ +#! /usr/bin/env node + +global.sys = require(/^v0\.[012]/.test(process.version) ? "sys" : "util"); +var fs = require("fs"); +var uglify = require("uglify-js"), // symlink ~/.node_libraries/uglify-js.js to ../uglify-js.js + jsp = uglify.parser, + pro = uglify.uglify; + +var code = fs.readFileSync("hoist.js", "utf8"); +var ast = jsp.parse(code); + +ast = pro.ast_lift_variables(ast); + +var w = pro.ast_walker(); +ast = w.with_walkers({ + "function": function() { + var node = w.dive(this); // walk depth first + console.log(pro.gen_code(node, { beautify: true })); + return node; + }, + "name": function(name) { + return [ this[0], "X" ]; + } +}, function(){ + return w.walk(ast); +}); + +console.log(pro.gen_code(ast, { + beautify: true +})); diff --git a/node_modules/socket.io/node_modules/socket.io-client/node_modules/uglify-js/tmp/uglify-hangs.js b/node_modules/socket.io/node_modules/socket.io-client/node_modules/uglify-js/tmp/uglify-hangs.js new file mode 100644 index 0000000..0d5b7e0 --- /dev/null +++ b/node_modules/socket.io/node_modules/socket.io-client/node_modules/uglify-js/tmp/uglify-hangs.js @@ -0,0 +1,3930 @@ +/** + * @fileoverview + * + * JsWorld + * + *

      Javascript library for localised formatting and parsing of: + *

        + *
      • Numbers + *
      • Dates and times + *
      • Currency + *
      + * + *

      The library classes are configured with standard POSIX locale definitions + * derived from Unicode's Common Locale Data Repository (CLDR). + * + *

      Website: JsWorld + * + * @author Vladimir Dzhuvinov + * @version 2.5 (2011-12-23) + */ + + + +/** + * @namespace Namespace container for the JsWorld library objects. + */ +jsworld = {}; + + +/** + * @function + * + * @description Formats a JavaScript Date object as an ISO-8601 date/time + * string. + * + * @param {Date} [d] A valid JavaScript Date object. If undefined the + * current date/time will be used. + * @param {Boolean} [withTZ] Include timezone offset, default false. + * + * @returns {String} The date/time formatted as YYYY-MM-DD HH:MM:SS. + */ +jsworld.formatIsoDateTime = function(d, withTZ) { + + if (typeof d === "undefined") + d = new Date(); // now + + if (typeof withTZ === "undefined") + withTZ = false; + + var s = jsworld.formatIsoDate(d) + " " + jsworld.formatIsoTime(d); + + if (withTZ) { + + var diff = d.getHours() - d.getUTCHours(); + var hourDiff = Math.abs(diff); + + var minuteUTC = d.getUTCMinutes(); + var minute = d.getMinutes(); + + if (minute != minuteUTC && minuteUTC < 30 && diff < 0) + hourDiff--; + + if (minute != minuteUTC && minuteUTC > 30 && diff > 0) + hourDiff--; + + var minuteDiff; + if (minute != minuteUTC) + minuteDiff = ":30"; + else + minuteDiff = ":00"; + + var timezone; + if (hourDiff < 10) + timezone = "0" + hourDiff + minuteDiff; + + else + timezone = "" + hourDiff + minuteDiff; + + if (diff < 0) + timezone = "-" + timezone; + + else + timezone = "+" + timezone; + + s = s + timezone; + } + + return s; +}; + + +/** + * @function + * + * @description Formats a JavaScript Date object as an ISO-8601 date string. + * + * @param {Date} [d] A valid JavaScript Date object. If undefined the current + * date will be used. + * + * @returns {String} The date formatted as YYYY-MM-DD. + */ +jsworld.formatIsoDate = function(d) { + + if (typeof d === "undefined") + d = new Date(); // now + + var year = d.getFullYear(); + var month = d.getMonth() + 1; + var day = d.getDate(); + + return year + "-" + jsworld._zeroPad(month, 2) + "-" + jsworld._zeroPad(day, 2); +}; + + +/** + * @function + * + * @description Formats a JavaScript Date object as an ISO-8601 time string. + * + * @param {Date} [d] A valid JavaScript Date object. If undefined the current + * time will be used. + * + * @returns {String} The time formatted as HH:MM:SS. + */ +jsworld.formatIsoTime = function(d) { + + if (typeof d === "undefined") + d = new Date(); // now + + var hour = d.getHours(); + var minute = d.getMinutes(); + var second = d.getSeconds(); + + return jsworld._zeroPad(hour, 2) + ":" + jsworld._zeroPad(minute, 2) + ":" + jsworld._zeroPad(second, 2); +}; + + +/** + * @function + * + * @description Parses an ISO-8601 formatted date/time string to a JavaScript + * Date object. + * + * @param {String} isoDateTimeVal An ISO-8601 formatted date/time string. + * + *

      Accepted formats: + * + *

        + *
      • YYYY-MM-DD HH:MM:SS + *
      • YYYYMMDD HHMMSS + *
      • YYYY-MM-DD HHMMSS + *
      • YYYYMMDD HH:MM:SS + *
      + * + * @returns {Date} The corresponding Date object. + * + * @throws Error on a badly formatted date/time string or on a invalid date. + */ +jsworld.parseIsoDateTime = function(isoDateTimeVal) { + + if (typeof isoDateTimeVal != "string") + throw "Error: The parameter must be a string"; + + // First, try to match "YYYY-MM-DD HH:MM:SS" format + var matches = isoDateTimeVal.match(/^(\d\d\d\d)-(\d\d)-(\d\d)[T ](\d\d):(\d\d):(\d\d)/); + + // If unsuccessful, try to match "YYYYMMDD HHMMSS" format + if (matches === null) + matches = isoDateTimeVal.match(/^(\d\d\d\d)(\d\d)(\d\d)[T ](\d\d)(\d\d)(\d\d)/); + + // ... try to match "YYYY-MM-DD HHMMSS" format + if (matches === null) + matches = isoDateTimeVal.match(/^(\d\d\d\d)-(\d\d)-(\d\d)[T ](\d\d)(\d\d)(\d\d)/); + + // ... try to match "YYYYMMDD HH:MM:SS" format + if (matches === null) + matches = isoDateTimeVal.match(/^(\d\d\d\d)-(\d\d)-(\d\d)[T ](\d\d):(\d\d):(\d\d)/); + + // Report bad date/time string + if (matches === null) + throw "Error: Invalid ISO-8601 date/time string"; + + // Force base 10 parse int as some values may have leading zeros! + // (to avoid implicit octal base conversion) + var year = parseInt(matches[1], 10); + var month = parseInt(matches[2], 10); + var day = parseInt(matches[3], 10); + + var hour = parseInt(matches[4], 10); + var mins = parseInt(matches[5], 10); + var secs = parseInt(matches[6], 10); + + // Simple value range check, leap years not checked + // Note: the originial ISO time spec for leap hours (24:00:00) and seconds (00:00:60) is not supported + if (month < 1 || month > 12 || + day < 1 || day > 31 || + hour < 0 || hour > 23 || + mins < 0 || mins > 59 || + secs < 0 || secs > 59 ) + + throw "Error: Invalid ISO-8601 date/time value"; + + var d = new Date(year, month - 1, day, hour, mins, secs); + + // Check if the input date was valid + // (JS Date does automatic forward correction) + if (d.getDate() != day || d.getMonth() +1 != month) + throw "Error: Invalid date"; + + return d; +}; + + +/** + * @function + * + * @description Parses an ISO-8601 formatted date string to a JavaScript + * Date object. + * + * @param {String} isoDateVal An ISO-8601 formatted date string. + * + *

      Accepted formats: + * + *

        + *
      • YYYY-MM-DD + *
      • YYYYMMDD + *
      + * + * @returns {Date} The corresponding Date object. + * + * @throws Error on a badly formatted date string or on a invalid date. + */ +jsworld.parseIsoDate = function(isoDateVal) { + + if (typeof isoDateVal != "string") + throw "Error: The parameter must be a string"; + + // First, try to match "YYYY-MM-DD" format + var matches = isoDateVal.match(/^(\d\d\d\d)-(\d\d)-(\d\d)/); + + // If unsuccessful, try to match "YYYYMMDD" format + if (matches === null) + matches = isoDateVal.match(/^(\d\d\d\d)(\d\d)(\d\d)/); + + // Report bad date/time string + if (matches === null) + throw "Error: Invalid ISO-8601 date string"; + + // Force base 10 parse int as some values may have leading zeros! + // (to avoid implicit octal base conversion) + var year = parseInt(matches[1], 10); + var month = parseInt(matches[2], 10); + var day = parseInt(matches[3], 10); + + // Simple value range check, leap years not checked + if (month < 1 || month > 12 || + day < 1 || day > 31 ) + + throw "Error: Invalid ISO-8601 date value"; + + var d = new Date(year, month - 1, day); + + // Check if the input date was valid + // (JS Date does automatic forward correction) + if (d.getDate() != day || d.getMonth() +1 != month) + throw "Error: Invalid date"; + + return d; +}; + + +/** + * @function + * + * @description Parses an ISO-8601 formatted time string to a JavaScript + * Date object. + * + * @param {String} isoTimeVal An ISO-8601 formatted time string. + * + *

      Accepted formats: + * + *

        + *
      • HH:MM:SS + *
      • HHMMSS + *
      + * + * @returns {Date} The corresponding Date object, with year, month and day set + * to zero. + * + * @throws Error on a badly formatted time string. + */ +jsworld.parseIsoTime = function(isoTimeVal) { + + if (typeof isoTimeVal != "string") + throw "Error: The parameter must be a string"; + + // First, try to match "HH:MM:SS" format + var matches = isoTimeVal.match(/^(\d\d):(\d\d):(\d\d)/); + + // If unsuccessful, try to match "HHMMSS" format + if (matches === null) + matches = isoTimeVal.match(/^(\d\d)(\d\d)(\d\d)/); + + // Report bad date/time string + if (matches === null) + throw "Error: Invalid ISO-8601 date/time string"; + + // Force base 10 parse int as some values may have leading zeros! + // (to avoid implicit octal base conversion) + var hour = parseInt(matches[1], 10); + var mins = parseInt(matches[2], 10); + var secs = parseInt(matches[3], 10); + + // Simple value range check, leap years not checked + if (hour < 0 || hour > 23 || + mins < 0 || mins > 59 || + secs < 0 || secs > 59 ) + + throw "Error: Invalid ISO-8601 time value"; + + return new Date(0, 0, 0, hour, mins, secs); +}; + + +/** + * @private + * + * @description Trims leading and trailing whitespace from a string. + * + *

      Used non-regexp the method from http://blog.stevenlevithan.com/archives/faster-trim-javascript + * + * @param {String} str The string to trim. + * + * @returns {String} The trimmed string. + */ +jsworld._trim = function(str) { + + var whitespace = ' \n\r\t\f\x0b\xa0\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u200b\u2028\u2029\u3000'; + + for (var i = 0; i < str.length; i++) { + + if (whitespace.indexOf(str.charAt(i)) === -1) { + str = str.substring(i); + break; + } + } + + for (i = str.length - 1; i >= 0; i--) { + if (whitespace.indexOf(str.charAt(i)) === -1) { + str = str.substring(0, i + 1); + break; + } + } + + return whitespace.indexOf(str.charAt(0)) === -1 ? str : ''; +}; + + + +/** + * @private + * + * @description Returns true if the argument represents a decimal number. + * + * @param {Number|String} arg The argument to test. + * + * @returns {Boolean} true if the argument represents a decimal number, + * otherwise false. + */ +jsworld._isNumber = function(arg) { + + if (typeof arg == "number") + return true; + + if (typeof arg != "string") + return false; + + // ensure string + var s = arg + ""; + + return (/^-?(\d+|\d*\.\d+)$/).test(s); +}; + + +/** + * @private + * + * @description Returns true if the argument represents a decimal integer. + * + * @param {Number|String} arg The argument to test. + * + * @returns {Boolean} true if the argument represents an integer, otherwise + * false. + */ +jsworld._isInteger = function(arg) { + + if (typeof arg != "number" && typeof arg != "string") + return false; + + // convert to string + var s = arg + ""; + + return (/^-?\d+$/).test(s); +}; + + +/** + * @private + * + * @description Returns true if the argument represents a decimal float. + * + * @param {Number|String} arg The argument to test. + * + * @returns {Boolean} true if the argument represents a float, otherwise false. + */ +jsworld._isFloat = function(arg) { + + if (typeof arg != "number" && typeof arg != "string") + return false; + + // convert to string + var s = arg + ""; + + return (/^-?\.\d+?$/).test(s); +}; + + +/** + * @private + * + * @description Checks if the specified formatting option is contained + * within the options string. + * + * @param {String} option The option to search for. + * @param {String} optionsString The options string. + * + * @returns {Boolean} true if the flag is found, else false + */ +jsworld._hasOption = function(option, optionsString) { + + if (typeof option != "string" || typeof optionsString != "string") + return false; + + if (optionsString.indexOf(option) != -1) + return true; + else + return false; +}; + + +/** + * @private + * + * @description String replacement function. + * + * @param {String} s The string to work on. + * @param {String} target The string to search for. + * @param {String} replacement The replacement. + * + * @returns {String} The new string. + */ +jsworld._stringReplaceAll = function(s, target, replacement) { + + var out; + + if (target.length == 1 && replacement.length == 1) { + // simple char/char case somewhat faster + out = ""; + + for (var i = 0; i < s.length; i++) { + + if (s.charAt(i) == target.charAt(0)) + out = out + replacement.charAt(0); + else + out = out + s.charAt(i); + } + + return out; + } + else { + // longer target and replacement strings + out = s; + + var index = out.indexOf(target); + + while (index != -1) { + + out = out.replace(target, replacement); + + index = out.indexOf(target); + } + + return out; + } +}; + + +/** + * @private + * + * @description Tests if a string starts with the specified substring. + * + * @param {String} testedString The string to test. + * @param {String} sub The string to match. + * + * @returns {Boolean} true if the test succeeds. + */ +jsworld._stringStartsWith = function (testedString, sub) { + + if (testedString.length < sub.length) + return false; + + for (var i = 0; i < sub.length; i++) { + if (testedString.charAt(i) != sub.charAt(i)) + return false; + } + + return true; +}; + + +/** + * @private + * + * @description Gets the requested precision from an options string. + * + *

      Example: ".3" returns 3 decimal places precision. + * + * @param {String} optionsString The options string. + * + * @returns {integer Number} The requested precision, -1 if not specified. + */ +jsworld._getPrecision = function (optionsString) { + + if (typeof optionsString != "string") + return -1; + + var m = optionsString.match(/\.(\d)/); + if (m) + return parseInt(m[1], 10); + else + return -1; +}; + + +/** + * @private + * + * @description Takes a decimal numeric amount (optionally as string) and + * returns its integer and fractional parts packed into an object. + * + * @param {Number|String} amount The amount, e.g. "123.45" or "-56.78" + * + * @returns {object} Parsed amount object with properties: + * {String} integer : the integer part + * {String} fraction : the fraction part + */ +jsworld._splitNumber = function (amount) { + + if (typeof amount == "number") + amount = amount + ""; + + var obj = {}; + + // remove negative sign + if (amount.charAt(0) == "-") + amount = amount.substring(1); + + // split amount into integer and decimal parts + var amountParts = amount.split("."); + if (!amountParts[1]) + amountParts[1] = ""; // we need "" instead of null + + obj.integer = amountParts[0]; + obj.fraction = amountParts[1]; + + return obj; +}; + + +/** + * @private + * + * @description Formats the integer part using the specified grouping + * and thousands separator. + * + * @param {String} intPart The integer part of the amount, as string. + * @param {String} grouping The grouping definition. + * @param {String} thousandsSep The thousands separator. + * + * @returns {String} The formatted integer part. + */ +jsworld._formatIntegerPart = function (intPart, grouping, thousandsSep) { + + // empty separator string? no grouping? + // -> return immediately with no formatting! + if (thousandsSep == "" || grouping == "-1") + return intPart; + + // turn the semicolon-separated string of integers into an array + var groupSizes = grouping.split(";"); + + // the formatted output string + var out = ""; + + // the intPart string position to process next, + // start at string end, e.g. "10000000 0) { + + // get next group size (if any, otherwise keep last) + if (groupSizes.length > 0) + size = parseInt(groupSizes.shift(), 10); + + // int parse error? + if (isNaN(size)) + throw "Error: Invalid grouping"; + + // size is -1? -> no more grouping, so just copy string remainder + if (size == -1) { + out = intPart.substring(0, pos) + out; + break; + } + + pos -= size; // move to next sep. char. position + + // position underrun? -> just copy string remainder + if (pos < 1) { + out = intPart.substring(0, pos + size) + out; + break; + } + + // extract group and apply sep. char. + out = thousandsSep + intPart.substring(pos, pos + size) + out; + } + + return out; +}; + + +/** + * @private + * + * @description Formats the fractional part to the specified decimal + * precision. + * + * @param {String} fracPart The fractional part of the amount + * @param {integer Number} precision The desired decimal precision + * + * @returns {String} The formatted fractional part. + */ +jsworld._formatFractionPart = function (fracPart, precision) { + + // append zeroes up to precision if necessary + for (var i=0; fracPart.length < precision; i++) + fracPart = fracPart + "0"; + + return fracPart; +}; + + +/** + * @private + * + * @desription Converts a number to string and pad it with leading zeroes if the + * string is shorter than length. + * + * @param {integer Number} number The number value subjected to selective padding. + * @param {integer Number} length If the number has fewer digits than this length + * apply padding. + * + * @returns {String} The formatted string. + */ +jsworld._zeroPad = function(number, length) { + + // ensure string + var s = number + ""; + + while (s.length < length) + s = "0" + s; + + return s; +}; + + +/** + * @private + * @description Converts a number to string and pads it with leading spaces if + * the string is shorter than length. + * + * @param {integer Number} number The number value subjected to selective padding. + * @param {integer Number} length If the number has fewer digits than this length + * apply padding. + * + * @returns {String} The formatted string. + */ +jsworld._spacePad = function(number, length) { + + // ensure string + var s = number + ""; + + while (s.length < length) + s = " " + s; + + return s; +}; + + + +/** + * @class + * Represents a POSIX-style locale with its numeric, monetary and date/time + * properties. Also provides a set of locale helper methods. + * + *

      The locale properties follow the POSIX standards: + * + *

      + * + * @public + * @constructor + * @description Creates a new locale object (POSIX-style) with the specified + * properties. + * + * @param {object} properties An object containing the raw locale properties: + * + * @param {String} properties.decimal_point + * + * A string containing the symbol that shall be used as the decimal + * delimiter (radix character) in numeric, non-monetary formatted + * quantities. This property cannot be omitted and cannot be set to the + * empty string. + * + * + * @param {String} properties.thousands_sep + * + * A string containing the symbol that shall be used as a separator for + * groups of digits to the left of the decimal delimiter in numeric, + * non-monetary formatted monetary quantities. + * + * + * @param {String} properties.grouping + * + * Defines the size of each group of digits in formatted non-monetary + * quantities. The operand is a sequence of integers separated by + * semicolons. Each integer specifies the number of digits in each group, + * with the initial integer defining the size of the group immediately + * preceding the decimal delimiter, and the following integers defining + * the preceding groups. If the last integer is not -1, then the size of + * the previous group (if any) shall be repeatedly used for the + * remainder of the digits. If the last integer is -1, then no further + * grouping shall be performed. + * + * + * @param {String} properties.int_curr_symbol + * + * The first three letters signify the ISO-4217 currency code, + * the fourth letter is the international symbol separation character + * (normally a space). + * + * + * @param {String} properties.currency_symbol + * + * The local shorthand currency symbol, e.g. "$" for the en_US locale + * + * + * @param {String} properties.mon_decimal_point + * + * The symbol to be used as the decimal delimiter (radix character) + * + * + * @param {String} properties.mon_thousands_sep + * + * The symbol to be used as a separator for groups of digits to the + * left of the decimal delimiter. + * + * + * @param {String} properties.mon_grouping + * + * A string that defines the size of each group of digits. The + * operand is a sequence of integers separated by semicolons (";"). + * Each integer specifies the number of digits in each group, with the + * initial integer defining the size of the group preceding the + * decimal delimiter, and the following integers defining the + * preceding groups. If the last integer is not -1, then the size of + * the previous group (if any) must be repeatedly used for the + * remainder of the digits. If the last integer is -1, then no + * further grouping is to be performed. + * + * + * @param {String} properties.positive_sign + * + * The string to indicate a non-negative monetary amount. + * + * + * @param {String} properties.negative_sign + * + * The string to indicate a negative monetary amount. + * + * + * @param {integer Number} properties.frac_digits + * + * An integer representing the number of fractional digits (those to + * the right of the decimal delimiter) to be written in a formatted + * monetary quantity using currency_symbol. + * + * + * @param {integer Number} properties.int_frac_digits + * + * An integer representing the number of fractional digits (those to + * the right of the decimal delimiter) to be written in a formatted + * monetary quantity using int_curr_symbol. + * + * + * @param {integer Number} properties.p_cs_precedes + * + * An integer set to 1 if the currency_symbol precedes the value for a + * monetary quantity with a non-negative value, and set to 0 if the + * symbol succeeds the value. + * + * + * @param {integer Number} properties.n_cs_precedes + * + * An integer set to 1 if the currency_symbol precedes the value for a + * monetary quantity with a negative value, and set to 0 if the symbol + * succeeds the value. + * + * + * @param {integer Number} properties.p_sep_by_space + * + * Set to a value indicating the separation of the currency_symbol, + * the sign string, and the value for a non-negative formatted monetary + * quantity: + * + *

      0 No space separates the currency symbol and value.

      + * + *

      1 If the currency symbol and sign string are adjacent, a space + * separates them from the value; otherwise, a space separates + * the currency symbol from the value.

      + * + *

      2 If the currency symbol and sign string are adjacent, a space + * separates them; otherwise, a space separates the sign string + * from the value.

      + * + * + * @param {integer Number} properties.n_sep_by_space + * + * Set to a value indicating the separation of the currency_symbol, + * the sign string, and the value for a negative formatted monetary + * quantity. Rules same as for p_sep_by_space. + * + * + * @param {integer Number} properties.p_sign_posn + * + * An integer set to a value indicating the positioning of the + * positive_sign for a monetary quantity with a non-negative value: + * + *

      0 Parentheses enclose the quantity and the currency_symbol.

      + * + *

      1 The sign string precedes the quantity and the currency_symbol.

      + * + *

      2 The sign string succeeds the quantity and the currency_symbol.

      + * + *

      3 The sign string precedes the currency_symbol.

      + * + *

      4 The sign string succeeds the currency_symbol.

      + * + * + * @param {integer Number} properties.n_sign_posn + * + * An integer set to a value indicating the positioning of the + * negative_sign for a negative formatted monetary quantity. Rules same + * as for p_sign_posn. + * + * + * @param {integer Number} properties.int_p_cs_precedes + * + * An integer set to 1 if the int_curr_symbol precedes the value for a + * monetary quantity with a non-negative value, and set to 0 if the + * symbol succeeds the value. + * + * + * @param {integer Number} properties.int_n_cs_precedes + * + * An integer set to 1 if the int_curr_symbol precedes the value for a + * monetary quantity with a negative value, and set to 0 if the symbol + * succeeds the value. + * + * + * @param {integer Number} properties.int_p_sep_by_space + * + * Set to a value indicating the separation of the int_curr_symbol, + * the sign string, and the value for a non-negative internationally + * formatted monetary quantity. Rules same as for p_sep_by_space. + * + * + * @param {integer Number} properties.int_n_sep_by_space + * + * Set to a value indicating the separation of the int_curr_symbol, + * the sign string, and the value for a negative internationally + * formatted monetary quantity. Rules same as for p_sep_by_space. + * + * + * @param {integer Number} properties.int_p_sign_posn + * + * An integer set to a value indicating the positioning of the + * positive_sign for a positive monetary quantity formatted with the + * international format. Rules same as for p_sign_posn. + * + * + * @param {integer Number} properties.int_n_sign_posn + * + * An integer set to a value indicating the positioning of the + * negative_sign for a negative monetary quantity formatted with the + * international format. Rules same as for p_sign_posn. + * + * + * @param {String[] | String} properties.abday + * + * The abbreviated weekday names, corresponding to the %a conversion + * specification. The property must be either an array of 7 strings or + * a string consisting of 7 semicolon-separated substrings, each + * surrounded by double-quotes. The first must be the abbreviated name + * of the day corresponding to Sunday, the second the abbreviated name + * of the day corresponding to Monday, and so on. + * + * + * @param {String[] | String} properties.day + * + * The full weekday names, corresponding to the %A conversion + * specification. The property must be either an array of 7 strings or + * a string consisting of 7 semicolon-separated substrings, each + * surrounded by double-quotes. The first must be the full name of the + * day corresponding to Sunday, the second the full name of the day + * corresponding to Monday, and so on. + * + * + * @param {String[] | String} properties.abmon + * + * The abbreviated month names, corresponding to the %b conversion + * specification. The property must be either an array of 12 strings or + * a string consisting of 12 semicolon-separated substrings, each + * surrounded by double-quotes. The first must be the abbreviated name + * of the first month of the year (January), the second the abbreviated + * name of the second month, and so on. + * + * + * @param {String[] | String} properties.mon + * + * The full month names, corresponding to the %B conversion + * specification. The property must be either an array of 12 strings or + * a string consisting of 12 semicolon-separated substrings, each + * surrounded by double-quotes. The first must be the full name of the + * first month of the year (January), the second the full name of the second + * month, and so on. + * + * + * @param {String} properties.d_fmt + * + * The appropriate date representation. The string may contain any + * combination of characters and conversion specifications (%). + * + * + * @param {String} properties.t_fmt + * + * The appropriate time representation. The string may contain any + * combination of characters and conversion specifications (%). + * + * + * @param {String} properties.d_t_fmt + * + * The appropriate date and time representation. The string may contain + * any combination of characters and conversion specifications (%). + * + * + * @param {String[] | String} properties.am_pm + * + * The appropriate representation of the ante-meridiem and post-meridiem + * strings, corresponding to the %p conversion specification. The property + * must be either an array of 2 strings or a string consisting of 2 + * semicolon-separated substrings, each surrounded by double-quotes. + * The first string must represent the ante-meridiem designation, the + * last string the post-meridiem designation. + * + * + * @throws @throws Error on a undefined or invalid locale property. + */ +jsworld.Locale = function(properties) { + + + /** + * @private + * + * @description Identifies the class for internal library purposes. + */ + this._className = "jsworld.Locale"; + + + /** + * @private + * + * @description Parses a day or month name definition list, which + * could be a ready JS array, e.g. ["Mon", "Tue", "Wed"...] or + * it could be a string formatted according to the classic POSIX + * definition e.g. "Mon";"Tue";"Wed";... + * + * @param {String[] | String} namesAn array or string defining + * the week/month names. + * @param {integer Number} expectedItems The number of expected list + * items, e.g. 7 for weekdays, 12 for months. + * + * @returns {String[]} The parsed (and checked) items. + * + * @throws Error on missing definition, unexpected item count or + * missing double-quotes. + */ + this._parseList = function(names, expectedItems) { + + var array = []; + + if (names == null) { + throw "Names not defined"; + } + else if (typeof names == "object") { + // we got a ready array + array = names; + } + else if (typeof names == "string") { + // we got the names in the classic POSIX form, do parse + array = names.split(";", expectedItems); + + for (var i = 0; i < array.length; i++) { + // check for and strip double quotes + if (array[i][0] == "\"" && array[i][array[i].length - 1] == "\"") + array[i] = array[i].slice(1, -1); + else + throw "Missing double quotes"; + } + } + else { + throw "Names must be an array or a string"; + } + + if (array.length != expectedItems) + throw "Expected " + expectedItems + " items, got " + array.length; + + return array; + }; + + + /** + * @private + * + * @description Validates a date/time format string, such as "H:%M:%S". + * Checks that the argument is of type "string" and is not empty. + * + * @param {String} formatString The format string. + * + * @returns {String} The validated string. + * + * @throws Error on null or empty string. + */ + this._validateFormatString = function(formatString) { + + if (typeof formatString == "string" && formatString.length > 0) + return formatString; + else + throw "Empty or no string"; + }; + + + // LC_NUMERIC + + if (properties == null || typeof properties != "object") + throw "Error: Invalid/missing locale properties"; + + + if (typeof properties.decimal_point != "string") + throw "Error: Invalid/missing decimal_point property"; + + this.decimal_point = properties.decimal_point; + + + if (typeof properties.thousands_sep != "string") + throw "Error: Invalid/missing thousands_sep property"; + + this.thousands_sep = properties.thousands_sep; + + + if (typeof properties.grouping != "string") + throw "Error: Invalid/missing grouping property"; + + this.grouping = properties.grouping; + + + // LC_MONETARY + + if (typeof properties.int_curr_symbol != "string") + throw "Error: Invalid/missing int_curr_symbol property"; + + if (! /[A-Za-z]{3}.?/.test(properties.int_curr_symbol)) + throw "Error: Invalid int_curr_symbol property"; + + this.int_curr_symbol = properties.int_curr_symbol; + + + if (typeof properties.currency_symbol != "string") + throw "Error: Invalid/missing currency_symbol property"; + + this.currency_symbol = properties.currency_symbol; + + + if (typeof properties.frac_digits != "number" && properties.frac_digits < 0) + throw "Error: Invalid/missing frac_digits property"; + + this.frac_digits = properties.frac_digits; + + + // may be empty string/null for currencies with no fractional part + if (properties.mon_decimal_point === null || properties.mon_decimal_point == "") { + + if (this.frac_digits > 0) + throw "Error: Undefined mon_decimal_point property"; + else + properties.mon_decimal_point = ""; + } + + if (typeof properties.mon_decimal_point != "string") + throw "Error: Invalid/missing mon_decimal_point property"; + + this.mon_decimal_point = properties.mon_decimal_point; + + + if (typeof properties.mon_thousands_sep != "string") + throw "Error: Invalid/missing mon_thousands_sep property"; + + this.mon_thousands_sep = properties.mon_thousands_sep; + + + if (typeof properties.mon_grouping != "string") + throw "Error: Invalid/missing mon_grouping property"; + + this.mon_grouping = properties.mon_grouping; + + + if (typeof properties.positive_sign != "string") + throw "Error: Invalid/missing positive_sign property"; + + this.positive_sign = properties.positive_sign; + + + if (typeof properties.negative_sign != "string") + throw "Error: Invalid/missing negative_sign property"; + + this.negative_sign = properties.negative_sign; + + + + if (properties.p_cs_precedes !== 0 && properties.p_cs_precedes !== 1) + throw "Error: Invalid/missing p_cs_precedes property, must be 0 or 1"; + + this.p_cs_precedes = properties.p_cs_precedes; + + + if (properties.n_cs_precedes !== 0 && properties.n_cs_precedes !== 1) + throw "Error: Invalid/missing n_cs_precedes, must be 0 or 1"; + + this.n_cs_precedes = properties.n_cs_precedes; + + + if (properties.p_sep_by_space !== 0 && + properties.p_sep_by_space !== 1 && + properties.p_sep_by_space !== 2) + throw "Error: Invalid/missing p_sep_by_space property, must be 0, 1 or 2"; + + this.p_sep_by_space = properties.p_sep_by_space; + + + if (properties.n_sep_by_space !== 0 && + properties.n_sep_by_space !== 1 && + properties.n_sep_by_space !== 2) + throw "Error: Invalid/missing n_sep_by_space property, must be 0, 1, or 2"; + + this.n_sep_by_space = properties.n_sep_by_space; + + + if (properties.p_sign_posn !== 0 && + properties.p_sign_posn !== 1 && + properties.p_sign_posn !== 2 && + properties.p_sign_posn !== 3 && + properties.p_sign_posn !== 4) + throw "Error: Invalid/missing p_sign_posn property, must be 0, 1, 2, 3 or 4"; + + this.p_sign_posn = properties.p_sign_posn; + + + if (properties.n_sign_posn !== 0 && + properties.n_sign_posn !== 1 && + properties.n_sign_posn !== 2 && + properties.n_sign_posn !== 3 && + properties.n_sign_posn !== 4) + throw "Error: Invalid/missing n_sign_posn property, must be 0, 1, 2, 3 or 4"; + + this.n_sign_posn = properties.n_sign_posn; + + + if (typeof properties.int_frac_digits != "number" && properties.int_frac_digits < 0) + throw "Error: Invalid/missing int_frac_digits property"; + + this.int_frac_digits = properties.int_frac_digits; + + + if (properties.int_p_cs_precedes !== 0 && properties.int_p_cs_precedes !== 1) + throw "Error: Invalid/missing int_p_cs_precedes property, must be 0 or 1"; + + this.int_p_cs_precedes = properties.int_p_cs_precedes; + + + if (properties.int_n_cs_precedes !== 0 && properties.int_n_cs_precedes !== 1) + throw "Error: Invalid/missing int_n_cs_precedes property, must be 0 or 1"; + + this.int_n_cs_precedes = properties.int_n_cs_precedes; + + + if (properties.int_p_sep_by_space !== 0 && + properties.int_p_sep_by_space !== 1 && + properties.int_p_sep_by_space !== 2) + throw "Error: Invalid/missing int_p_sep_by_spacev, must be 0, 1 or 2"; + + this.int_p_sep_by_space = properties.int_p_sep_by_space; + + + if (properties.int_n_sep_by_space !== 0 && + properties.int_n_sep_by_space !== 1 && + properties.int_n_sep_by_space !== 2) + throw "Error: Invalid/missing int_n_sep_by_space property, must be 0, 1, or 2"; + + this.int_n_sep_by_space = properties.int_n_sep_by_space; + + + if (properties.int_p_sign_posn !== 0 && + properties.int_p_sign_posn !== 1 && + properties.int_p_sign_posn !== 2 && + properties.int_p_sign_posn !== 3 && + properties.int_p_sign_posn !== 4) + throw "Error: Invalid/missing int_p_sign_posn property, must be 0, 1, 2, 3 or 4"; + + this.int_p_sign_posn = properties.int_p_sign_posn; + + + if (properties.int_n_sign_posn !== 0 && + properties.int_n_sign_posn !== 1 && + properties.int_n_sign_posn !== 2 && + properties.int_n_sign_posn !== 3 && + properties.int_n_sign_posn !== 4) + throw "Error: Invalid/missing int_n_sign_posn property, must be 0, 1, 2, 3 or 4"; + + this.int_n_sign_posn = properties.int_n_sign_posn; + + + // LC_TIME + + if (properties == null || typeof properties != "object") + throw "Error: Invalid/missing time locale properties"; + + + // parse the supported POSIX LC_TIME properties + + // abday + try { + this.abday = this._parseList(properties.abday, 7); + } + catch (error) { + throw "Error: Invalid abday property: " + error; + } + + // day + try { + this.day = this._parseList(properties.day, 7); + } + catch (error) { + throw "Error: Invalid day property: " + error; + } + + // abmon + try { + this.abmon = this._parseList(properties.abmon, 12); + } catch (error) { + throw "Error: Invalid abmon property: " + error; + } + + // mon + try { + this.mon = this._parseList(properties.mon, 12); + } catch (error) { + throw "Error: Invalid mon property: " + error; + } + + // d_fmt + try { + this.d_fmt = this._validateFormatString(properties.d_fmt); + } catch (error) { + throw "Error: Invalid d_fmt property: " + error; + } + + // t_fmt + try { + this.t_fmt = this._validateFormatString(properties.t_fmt); + } catch (error) { + throw "Error: Invalid t_fmt property: " + error; + } + + // d_t_fmt + try { + this.d_t_fmt = this._validateFormatString(properties.d_t_fmt); + } catch (error) { + throw "Error: Invalid d_t_fmt property: " + error; + } + + // am_pm + try { + var am_pm_strings = this._parseList(properties.am_pm, 2); + this.am = am_pm_strings[0]; + this.pm = am_pm_strings[1]; + } catch (error) { + // ignore empty/null string errors + this.am = ""; + this.pm = ""; + } + + + /** + * @public + * + * @description Returns the abbreviated name of the specified weekday. + * + * @param {integer Number} [weekdayNum] An integer between 0 and 6. Zero + * corresponds to Sunday, one to Monday, etc. If omitted the + * method will return an array of all abbreviated weekday + * names. + * + * @returns {String | String[]} The abbreviated name of the specified weekday + * or an array of all abbreviated weekday names. + * + * @throws Error on invalid argument. + */ + this.getAbbreviatedWeekdayName = function(weekdayNum) { + + if (typeof weekdayNum == "undefined" || weekdayNum === null) + return this.abday; + + if (! jsworld._isInteger(weekdayNum) || weekdayNum < 0 || weekdayNum > 6) + throw "Error: Invalid weekday argument, must be an integer [0..6]"; + + return this.abday[weekdayNum]; + }; + + + /** + * @public + * + * @description Returns the name of the specified weekday. + * + * @param {integer Number} [weekdayNum] An integer between 0 and 6. Zero + * corresponds to Sunday, one to Monday, etc. If omitted the + * method will return an array of all weekday names. + * + * @returns {String | String[]} The name of the specified weekday or an + * array of all weekday names. + * + * @throws Error on invalid argument. + */ + this.getWeekdayName = function(weekdayNum) { + + if (typeof weekdayNum == "undefined" || weekdayNum === null) + return this.day; + + if (! jsworld._isInteger(weekdayNum) || weekdayNum < 0 || weekdayNum > 6) + throw "Error: Invalid weekday argument, must be an integer [0..6]"; + + return this.day[weekdayNum]; + }; + + + /** + * @public + * + * @description Returns the abbreviated name of the specified month. + * + * @param {integer Number} [monthNum] An integer between 0 and 11. Zero + * corresponds to January, one to February, etc. If omitted the + * method will return an array of all abbreviated month names. + * + * @returns {String | String[]} The abbreviated name of the specified month + * or an array of all abbreviated month names. + * + * @throws Error on invalid argument. + */ + this.getAbbreviatedMonthName = function(monthNum) { + + if (typeof monthNum == "undefined" || monthNum === null) + return this.abmon; + + if (! jsworld._isInteger(monthNum) || monthNum < 0 || monthNum > 11) + throw "Error: Invalid month argument, must be an integer [0..11]"; + + return this.abmon[monthNum]; + }; + + + /** + * @public + * + * @description Returns the name of the specified month. + * + * @param {integer Number} [monthNum] An integer between 0 and 11. Zero + * corresponds to January, one to February, etc. If omitted the + * method will return an array of all month names. + * + * @returns {String | String[]} The name of the specified month or an array + * of all month names. + * + * @throws Error on invalid argument. + */ + this.getMonthName = function(monthNum) { + + if (typeof monthNum == "undefined" || monthNum === null) + return this.mon; + + if (! jsworld._isInteger(monthNum) || monthNum < 0 || monthNum > 11) + throw "Error: Invalid month argument, must be an integer [0..11]"; + + return this.mon[monthNum]; + }; + + + + /** + * @public + * + * @description Gets the decimal delimiter (radix) character for + * numeric quantities. + * + * @returns {String} The radix character. + */ + this.getDecimalPoint = function() { + + return this.decimal_point; + }; + + + /** + * @public + * + * @description Gets the local shorthand currency symbol. + * + * @returns {String} The currency symbol. + */ + this.getCurrencySymbol = function() { + + return this.currency_symbol; + }; + + + /** + * @public + * + * @description Gets the internaltion currency symbol (ISO-4217 code). + * + * @returns {String} The international currency symbol. + */ + this.getIntCurrencySymbol = function() { + + return this.int_curr_symbol.substring(0,3); + }; + + + /** + * @public + * + * @description Gets the position of the local (shorthand) currency + * symbol relative to the amount. Assumes a non-negative amount. + * + * @returns {Boolean} True if the symbol precedes the amount, false if + * the symbol succeeds the amount. + */ + this.currencySymbolPrecedes = function() { + + if (this.p_cs_precedes == 1) + return true; + else + return false; + }; + + + /** + * @public + * + * @description Gets the position of the international (ISO-4217 code) + * currency symbol relative to the amount. Assumes a non-negative + * amount. + * + * @returns {Boolean} True if the symbol precedes the amount, false if + * the symbol succeeds the amount. + */ + this.intCurrencySymbolPrecedes = function() { + + if (this.int_p_cs_precedes == 1) + return true; + else + return false; + + }; + + + /** + * @public + * + * @description Gets the decimal delimiter (radix) for monetary + * quantities. + * + * @returns {String} The radix character. + */ + this.getMonetaryDecimalPoint = function() { + + return this.mon_decimal_point; + }; + + + /** + * @public + * + * @description Gets the number of fractional digits for local + * (shorthand) symbol formatting. + * + * @returns {integer Number} The number of fractional digits. + */ + this.getFractionalDigits = function() { + + return this.frac_digits; + }; + + + /** + * @public + * + * @description Gets the number of fractional digits for + * international (ISO-4217 code) formatting. + * + * @returns {integer Number} The number of fractional digits. + */ + this.getIntFractionalDigits = function() { + + return this.int_frac_digits; + }; +}; + + + +/** + * @class + * Class for localised formatting of numbers. + * + *

      See: + * POSIX LC_NUMERIC. + * + * + * @public + * @constructor + * @description Creates a new numeric formatter for the specified locale. + * + * @param {jsworld.Locale} locale A locale object specifying the required + * POSIX LC_NUMERIC formatting properties. + * + * @throws Error on constructor failure. + */ +jsworld.NumericFormatter = function(locale) { + + if (typeof locale != "object" || locale._className != "jsworld.Locale") + throw "Constructor error: You must provide a valid jsworld.Locale instance"; + + this.lc = locale; + + + /** + * @public + * + * @description Formats a decimal numeric value according to the preset + * locale. + * + * @param {Number|String} number The number to format. + * @param {String} [options] Options to modify the formatted output: + *

        + *
      • "^" suppress grouping + *
      • "+" force positive sign for positive amounts + *
      • "~" suppress positive/negative sign + *
      • ".n" specify decimal precision 'n' + *
      + * + * @returns {String} The formatted number. + * + * @throws "Error: Invalid input" on bad input. + */ + this.format = function(number, options) { + + if (typeof number == "string") + number = jsworld._trim(number); + + if (! jsworld._isNumber(number)) + throw "Error: The input is not a number"; + + var floatAmount = parseFloat(number, 10); + + // get the required precision + var reqPrecision = jsworld._getPrecision(options); + + // round to required precision + if (reqPrecision != -1) + floatAmount = Math.round(floatAmount * Math.pow(10, reqPrecision)) / Math.pow(10, reqPrecision); + + + // convert the float number to string and parse into + // object with properties integer and fraction + var parsedAmount = jsworld._splitNumber(String(floatAmount)); + + // format integer part with grouping chars + var formattedIntegerPart; + + if (floatAmount === 0) + formattedIntegerPart = "0"; + else + formattedIntegerPart = jsworld._hasOption("^", options) ? + parsedAmount.integer : + jsworld._formatIntegerPart(parsedAmount.integer, + this.lc.grouping, + this.lc.thousands_sep); + + // format the fractional part + var formattedFractionPart = + reqPrecision != -1 ? + jsworld._formatFractionPart(parsedAmount.fraction, reqPrecision) : + parsedAmount.fraction; + + + // join the integer and fraction parts using the decimal_point property + var formattedAmount = + formattedFractionPart.length ? + formattedIntegerPart + this.lc.decimal_point + formattedFractionPart : + formattedIntegerPart; + + // prepend sign? + if (jsworld._hasOption("~", options) || floatAmount === 0) { + // suppress both '+' and '-' signs, i.e. return abs value + return formattedAmount; + } + else { + if (jsworld._hasOption("+", options) || floatAmount < 0) { + if (floatAmount > 0) + // force '+' sign for positive amounts + return "+" + formattedAmount; + else if (floatAmount < 0) + // prepend '-' sign + return "-" + formattedAmount; + else + // zero case + return formattedAmount; + } + else { + // positive amount with no '+' sign + return formattedAmount; + } + } + }; +}; + + +/** + * @class + * Class for localised formatting of dates and times. + * + *

      See: + * POSIX LC_TIME. + * + * @public + * @constructor + * @description Creates a new date/time formatter for the specified locale. + * + * @param {jsworld.Locale} locale A locale object specifying the required + * POSIX LC_TIME formatting properties. + * + * @throws Error on constructor failure. + */ +jsworld.DateTimeFormatter = function(locale) { + + + if (typeof locale != "object" || locale._className != "jsworld.Locale") + throw "Constructor error: You must provide a valid jsworld.Locale instance."; + + this.lc = locale; + + + /** + * @public + * + * @description Formats a date according to the preset locale. + * + * @param {Date|String} date A valid Date object instance or a string + * containing a valid ISO-8601 formatted date, e.g. "2010-31-03" + * or "2010-03-31 23:59:59". + * + * @returns {String} The formatted date + * + * @throws Error on invalid date argument + */ + this.formatDate = function(date) { + + var d = null; + + if (typeof date == "string") { + // assume ISO-8601 date string + try { + d = jsworld.parseIsoDate(date); + } catch (error) { + // try full ISO-8601 date/time string + d = jsworld.parseIsoDateTime(date); + } + } + else if (date !== null && typeof date == "object") { + // assume ready Date object + d = date; + } + else { + throw "Error: Invalid date argument, must be a Date object or an ISO-8601 date/time string"; + } + + return this._applyFormatting(d, this.lc.d_fmt); + }; + + + /** + * @public + * + * @description Formats a time according to the preset locale. + * + * @param {Date|String} date A valid Date object instance or a string + * containing a valid ISO-8601 formatted time, e.g. "23:59:59" + * or "2010-03-31 23:59:59". + * + * @returns {String} The formatted time. + * + * @throws Error on invalid date argument. + */ + this.formatTime = function(date) { + + var d = null; + + if (typeof date == "string") { + // assume ISO-8601 time string + try { + d = jsworld.parseIsoTime(date); + } catch (error) { + // try full ISO-8601 date/time string + d = jsworld.parseIsoDateTime(date); + } + } + else if (date !== null && typeof date == "object") { + // assume ready Date object + d = date; + } + else { + throw "Error: Invalid date argument, must be a Date object or an ISO-8601 date/time string"; + } + + return this._applyFormatting(d, this.lc.t_fmt); + }; + + + /** + * @public + * + * @description Formats a date/time value according to the preset + * locale. + * + * @param {Date|String} date A valid Date object instance or a string + * containing a valid ISO-8601 formatted date/time, e.g. + * "2010-03-31 23:59:59". + * + * @returns {String} The formatted time. + * + * @throws Error on invalid argument. + */ + this.formatDateTime = function(date) { + + var d = null; + + if (typeof date == "string") { + // assume ISO-8601 format + d = jsworld.parseIsoDateTime(date); + } + else if (date !== null && typeof date == "object") { + // assume ready Date object + d = date; + } + else { + throw "Error: Invalid date argument, must be a Date object or an ISO-8601 date/time string"; + } + + return this._applyFormatting(d, this.lc.d_t_fmt); + }; + + + /** + * @private + * + * @description Apples formatting to the Date object according to the + * format string. + * + * @param {Date} d A valid Date instance. + * @param {String} s The formatting string with '%' placeholders. + * + * @returns {String} The formatted string. + */ + this._applyFormatting = function(d, s) { + + s = s.replace(/%%/g, '%'); + s = s.replace(/%a/g, this.lc.abday[d.getDay()]); + s = s.replace(/%A/g, this.lc.day[d.getDay()]); + s = s.replace(/%b/g, this.lc.abmon[d.getMonth()]); + s = s.replace(/%B/g, this.lc.mon[d.getMonth()]); + s = s.replace(/%d/g, jsworld._zeroPad(d.getDate(), 2)); + s = s.replace(/%e/g, jsworld._spacePad(d.getDate(), 2)); + s = s.replace(/%F/g, d.getFullYear() + + "-" + + jsworld._zeroPad(d.getMonth()+1, 2) + + "-" + + jsworld._zeroPad(d.getDate(), 2)); + s = s.replace(/%h/g, this.lc.abmon[d.getMonth()]); // same as %b + s = s.replace(/%H/g, jsworld._zeroPad(d.getHours(), 2)); + s = s.replace(/%I/g, jsworld._zeroPad(this._hours12(d.getHours()), 2)); + s = s.replace(/%k/g, d.getHours()); + s = s.replace(/%l/g, this._hours12(d.getHours())); + s = s.replace(/%m/g, jsworld._zeroPad(d.getMonth()+1, 2)); + s = s.replace(/%n/g, "\n"); + s = s.replace(/%M/g, jsworld._zeroPad(d.getMinutes(), 2)); + s = s.replace(/%p/g, this._getAmPm(d.getHours())); + s = s.replace(/%P/g, this._getAmPm(d.getHours()).toLocaleLowerCase()); // safe? + s = s.replace(/%R/g, jsworld._zeroPad(d.getHours(), 2) + + ":" + + jsworld._zeroPad(d.getMinutes(), 2)); + s = s.replace(/%S/g, jsworld._zeroPad(d.getSeconds(), 2)); + s = s.replace(/%T/g, jsworld._zeroPad(d.getHours(), 2) + + ":" + + jsworld._zeroPad(d.getMinutes(), 2) + + ":" + + jsworld._zeroPad(d.getSeconds(), 2)); + s = s.replace(/%w/g, this.lc.day[d.getDay()]); + s = s.replace(/%y/g, new String(d.getFullYear()).substring(2)); + s = s.replace(/%Y/g, d.getFullYear()); + + s = s.replace(/%Z/g, ""); // to do: ignored until a reliable TMZ method found + + s = s.replace(/%[a-zA-Z]/g, ""); // ignore all other % sequences + + return s; + }; + + + /** + * @private + * + * @description Does 24 to 12 hour conversion. + * + * @param {integer Number} hour24 Hour [0..23]. + * + * @returns {integer Number} Corresponding hour [1..12]. + */ + this._hours12 = function(hour24) { + + if (hour24 === 0) + return 12; // 00h is 12AM + + else if (hour24 > 12) + return hour24 - 12; // 1PM to 11PM + + else + return hour24; // 1AM to 12PM + }; + + + /** + * @private + * + * @description Gets the appropriate localised AM or PM string depending + * on the day hour. Special cases: midnight is 12AM, noon is 12PM. + * + * @param {integer Number} hour24 Hour [0..23]. + * + * @returns {String} The corresponding localised AM or PM string. + */ + this._getAmPm = function(hour24) { + + if (hour24 < 12) + return this.lc.am; + else + return this.lc.pm; + }; +}; + + + +/** + * @class Class for localised formatting of currency amounts. + * + *

      See: + * POSIX LC_MONETARY. + * + * @public + * @constructor + * @description Creates a new monetary formatter for the specified locale. + * + * @param {jsworld.Locale} locale A locale object specifying the required + * POSIX LC_MONETARY formatting properties. + * @param {String} [currencyCode] Set the currency explicitly by + * passing its international ISO-4217 code, e.g. "USD", "EUR", "GBP". + * Use this optional parameter to override the default local currency + * @param {String} [altIntSymbol] Non-local currencies are formatted + * with their international ISO-4217 code to prevent ambiguity. + * Use this optional argument to force a different symbol, such as the + * currency's shorthand sign. This is mostly useful when the shorthand + * sign is both internationally recognised and identifies the currency + * uniquely (e.g. the Euro sign). + * + * @throws Error on constructor failure. + */ +jsworld.MonetaryFormatter = function(locale, currencyCode, altIntSymbol) { + + if (typeof locale != "object" || locale._className != "jsworld.Locale") + throw "Constructor error: You must provide a valid jsworld.Locale instance"; + + this.lc = locale; + + /** + * @private + * @description Lookup table to determine the fraction digits for a + * specific currency; most currencies subdivide at 1/100 (2 fractional + * digits), so we store only those that deviate from the default. + * + *

      The data is from Unicode's CLDR version 1.7.0. The two currencies + * with non-decimal subunits (MGA and MRO) are marked as having no + * fractional digits as well as all currencies that have no subunits + * in circulation. + * + *

      It is "hard-wired" for referential convenience and is only looked + * up when an overriding currencyCode parameter is supplied. + */ + this.currencyFractionDigits = { + "AFN" : 0, "ALL" : 0, "AMD" : 0, "BHD" : 3, "BIF" : 0, + "BYR" : 0, "CLF" : 0, "CLP" : 0, "COP" : 0, "CRC" : 0, + "DJF" : 0, "GNF" : 0, "GYD" : 0, "HUF" : 0, "IDR" : 0, + "IQD" : 0, "IRR" : 0, "ISK" : 0, "JOD" : 3, "JPY" : 0, + "KMF" : 0, "KRW" : 0, "KWD" : 3, "LAK" : 0, "LBP" : 0, + "LYD" : 3, "MGA" : 0, "MMK" : 0, "MNT" : 0, "MRO" : 0, + "MUR" : 0, "OMR" : 3, "PKR" : 0, "PYG" : 0, "RSD" : 0, + "RWF" : 0, "SLL" : 0, "SOS" : 0, "STD" : 0, "SYP" : 0, + "TND" : 3, "TWD" : 0, "TZS" : 0, "UGX" : 0, "UZS" : 0, + "VND" : 0, "VUV" : 0, "XAF" : 0, "XOF" : 0, "XPF" : 0, + "YER" : 0, "ZMK" : 0 + }; + + + // optional currencyCode argument? + if (typeof currencyCode == "string") { + // user wanted to override the local currency + this.currencyCode = currencyCode.toUpperCase(); + + // must override the frac digits too, for some + // currencies have 0, 2 or 3! + var numDigits = this.currencyFractionDigits[this.currencyCode]; + if (typeof numDigits != "number") + numDigits = 2; // default for most currencies + this.lc.frac_digits = numDigits; + this.lc.int_frac_digits = numDigits; + } + else { + // use local currency + this.currencyCode = this.lc.int_curr_symbol.substring(0,3).toUpperCase(); + } + + // extract intl. currency separator + this.intSep = this.lc.int_curr_symbol.charAt(3); + + // flag local or intl. sign formatting? + if (this.currencyCode == this.lc.int_curr_symbol.substring(0,3)) { + // currency matches the local one? -> + // formatting with local symbol and parameters + this.internationalFormatting = false; + this.curSym = this.lc.currency_symbol; + } + else { + // currency doesn't match the local -> + + // do we have an overriding currency symbol? + if (typeof altIntSymbol == "string") { + // -> force formatting with local parameters, using alt symbol + this.curSym = altIntSymbol; + this.internationalFormatting = false; + } + else { + // -> force formatting with intl. sign and parameters + this.internationalFormatting = true; + } + } + + + /** + * @public + * + * @description Gets the currency symbol used in formatting. + * + * @returns {String} The currency symbol. + */ + this.getCurrencySymbol = function() { + + return this.curSym; + }; + + + /** + * @public + * + * @description Gets the position of the currency symbol relative to + * the amount. Assumes a non-negative amount and local formatting. + * + * @param {String} intFlag Optional flag to force international + * formatting by passing the string "i". + * + * @returns {Boolean} True if the symbol precedes the amount, false if + * the symbol succeeds the amount. + */ + this.currencySymbolPrecedes = function(intFlag) { + + if (typeof intFlag == "string" && intFlag == "i") { + // international formatting was forced + if (this.lc.int_p_cs_precedes == 1) + return true; + else + return false; + + } + else { + // check whether local formatting is on or off + if (this.internationalFormatting) { + if (this.lc.int_p_cs_precedes == 1) + return true; + else + return false; + } + else { + if (this.lc.p_cs_precedes == 1) + return true; + else + return false; + } + } + }; + + + /** + * @public + * + * @description Gets the decimal delimiter (radix) used in formatting. + * + * @returns {String} The radix character. + */ + this.getDecimalPoint = function() { + + return this.lc.mon_decimal_point; + }; + + + /** + * @public + * + * @description Gets the number of fractional digits. Assumes local + * formatting. + * + * @param {String} intFlag Optional flag to force international + * formatting by passing the string "i". + * + * @returns {integer Number} The number of fractional digits. + */ + this.getFractionalDigits = function(intFlag) { + + if (typeof intFlag == "string" && intFlag == "i") { + // international formatting was forced + return this.lc.int_frac_digits; + } + else { + // check whether local formatting is on or off + if (this.internationalFormatting) + return this.lc.int_frac_digits; + else + return this.lc.frac_digits; + } + }; + + + /** + * @public + * + * @description Formats a monetary amount according to the preset + * locale. + * + *

      +	 * For local currencies the native shorthand symbol will be used for
      +	 * formatting.
      +	 * Example:
      +	 *        locale is en_US
      +	 *        currency is USD
      +	 *        -> the "$" symbol will be used, e.g. $123.45
      +	 *        
      +	 * For non-local currencies the international ISO-4217 code will be
      +	 * used for formatting.
      +	 * Example:
      +	 *       locale is en_US (which has USD as currency)
      +	 *       currency is EUR
      +	 *       -> the ISO three-letter code will be used, e.g. EUR 123.45
      +	 *
      +	 * If the currency is non-local, but an alternative currency symbol was
      +	 * provided, this will be used instead.
      +	 * Example
      +	 *       locale is en_US (which has USD as currency)
      +	 *       currency is EUR
      +	 *       an alternative symbol is provided - "€"
      +	 *       -> the alternative symbol will be used, e.g. €123.45
      +	 * 
      + * + * @param {Number|String} amount The amount to format as currency. + * @param {String} [options] Options to modify the formatted output: + *
      '; +html += '
      Enter Your Password
      '; +html += '
      '; +html += '
      Password:


      '; +html += '
      '; +html += '
      '; +html += '

      '; +html += ''; +html += ''; +html += ''; +html += '
      ' + large_icon_button('x', 'Cancel', "clear_login()") + ' ' + large_icon_button('check', 'Login', 'do_effect_login()') + '
      '; +html += '
      '; +html += ''; +session.hooks.keys[ENTER_KEY] = 'do_effect_login'; +session.hooks.keys[ESC_KEY] = 'clear_login'; +safe_focus( 'fe_lp_password' ); +show_popup_dialog(450, 225, html); +} +function clear_login() { +hide_popup_dialog(); +Nav.prev(); +} +function do_login() { +if ($('fe_username').value.match(/^\w+$/)) { +session.username = $('fe_username').value; +session.auto_login = $('fe_auto_login').checked; +do_login_prompt_2(); +return; +} +else { +do_openid_login(); +} +} +function do_openid_login() { +if (!$('fe_username').value) return; +session.openid_win = popup_window(''); +if (!session.openid_win) return; +session.open_id = $('fe_username').value; +session.auto_login = $('fe_auto_login') && $('fe_auto_login').checked; +hide_popup_dialog(); +show_progress_dialog(1, "Logging in..."); +session.hooks.before_error = 'close_openid_window'; +session.hooks.after_error = 'do_login_prompt'; +effect_api_send('openid_login', { +OpenID: session.open_id, +Infinite: session.auto_login ? 1 : 0 +}, 'do_openid_login_2'); +} +function close_openid_window() { +if (session.openid_win) { +session.openid_win.close(); +delete session.openid_win; +} +} +function do_openid_login_2(response) { +if (response.CheckURL) { +Debug.trace('openid', "Redirecting popup window to OpenID Check URL: " + response.CheckURL); +show_progress_dialog(1, "Waiting for popup window...", false, ['x', 'Cancel', 'do_login_prompt()']); +session.openid_win.location = response.CheckURL; +session.openid_win.focus(); +} +} +function receive_openid_response(iframe_response) { +var response = deep_copy_object(iframe_response); +Debug.trace('openid', "Received OpenID Response: " + dumper(response)); +hide_popup_dialog(); +if (response.Code) { +close_openid_window(); +return do_error( response.Description ); +} +delete session.hooks.before_error; +delete session.hooks.after_error; +if (response.SessionID) { +session.cookie.set( 'effect_session_id', response.SessionID ); +session.cookie.save(); +} +switch (response.Action) { +case 'popup': +show_progress_dialog(1, "Waiting for popup window...", false, ['x', 'Cancel', 'do_login_prompt()']); +Debug.trace('openid', "Redirecting popup window to OpenID Setup URL: " + response.SetupURL); +session.openid_win.location = response.SetupURL; +session.openid_win.focus(); +break; +case 'login': +close_openid_window(); +do_login_2(response); +break; +case 'register': +if (!response.Info) response.Info = {}; +close_openid_window(); +Debug.trace('openid', 'Original OpenID: ' + response.OpenID_Login); +Debug.trace('openid', 'Clean OpenID: ' + response.OpenID_Unique); +Debug.trace('openid', 'Registration Info: ' + dumper(response.Info)); +session.prereg = response.Info; +session.prereg.open_id_login = response.OpenID_Login; +session.prereg.open_id = response.OpenID_Unique; +if (session.user) { +if (!session.user.OpenIDs) session.user.OpenIDs = {}; +if (!session.user.OpenIDs.OpenID) session.user.OpenIDs.OpenID = []; +var dupe = find_object( session.user.OpenIDs.OpenID, { Unique: session.prereg.open_id } ); +if (dupe) return do_error("That OpenID is already registered and attached to your account. No need to add it again."); +session.user.OpenIDs.OpenID.push({ +Login: session.prereg.open_id_login, +Unique: session.prereg.open_id +}); +setTimeout( function() { +Nav.go('MyAccount', true); +do_message('success', 'Added new OpenID URL to account.'); +}, 1 ); +} +else { +setTimeout( function() { Nav.go('CreateAccount', true); }, 1 ); +} +break; +} +} +function do_effect_login() { +var password = $('fe_lp_password').value; +session.auto_login = $('fe_auto_login').checked; +hide_popup_dialog(); +show_progress_dialog(1, "Logging in..."); +session.hooks.after_error = 'do_login_prompt'; +effect_api_send('user_login', { +Username: session.username, +Password: password, +Infinite: session.auto_login ? 1 : 0 +}, 'do_login_2'); +} +function do_logout() { +effect_api_send('user_logout', {}, 'do_logout_2'); +} +function do_logout_2(response) { +hide_popup_dialog(); +show_default_login_status(); +delete session.hooks.after_error; +delete session.cookie.tree.effect_session_id; +session.cookie.save(); +session.storage = {}; +session.storage_dirty = false; +delete session.user; +delete session.first_login; +var old_username = session.username; +session.username = ''; +if (Nav.inited) { +Nav.go('Main'); +if (old_username) $GR.growl('success', "Logged out of account: " + old_username); +} +else { +Nav.init(); +} +} +function do_login_2(response, tx) { +if (response.FirstLogin) session.first_login = 1; +if (response.User.UserStorage) { +Debug.trace('Recovering site storage blob: session.storage = ' + response.User.UserStorage + ';'); +try { +eval( 'session.storage = ' + response.User.UserStorage + ';' ); +} +catch (e) { +Debug.trace("SITE STORAGE RECOVERY FAILED: " + e); +session.storage = {}; +} +delete response.User.UserStorage; +session.storage_dirty = false; +} +session.user = response.User; +session.username = session.user.Username; +hide_popup_dialog(); +delete session.hooks.after_error; +update_header(); +if (!tx || !tx._from_recover) $GR.growl('success', "Logged in as: " + session.username); +if (session.nav_after_login) { +Nav.go( session.nav_after_login ); +delete session.nav_after_login; +} +else if (Nav.currentAnchor().match(/^Login/)) { +Nav.go('Home'); +} +else { +Nav.refresh(); +} +Nav.init(); +} +function user_storage_mark() { +Debug.trace("Marking user storage as dirty"); +session.storage_dirty = true; +} +function user_storage_idle() { +if (session.storage_dirty && !session.mouseIsDown) { +user_storage_save(); +session.storage_dirty = false; +} +setTimeout( 'user_storage_idle()', 5000 ); +} +function user_storage_save() { +if (session.user) { +Debug.trace("Committing user storage blob"); +effect_api_send('update_user_storage', { Data: serialize(session.storage) }, 'user_storage_save_finish', { _silent: 1 } ); +} +} +function user_storage_save_finish(response, tx) { +} +function show_default_login_status() { +$('d_sidebar_wrapper_recent_games').hide(); +$('d_login_status').innerHTML = '
      ' + +'
      ' + +large_icon_button('key', "Login", '#Home') + '' + spacer(1,1) + '' + +'' + large_icon_button('user_add.png', "Signup", '#CreateAccount') + '
      ' + +'
      '; +$('d_tagline').innerHTML = +'Login' + ' | ' + +'Create Account'; +} +function update_header() { +var html = ''; +html += '
      '; +html += ''; +html += ''; +html += ''; +html += ''+spacer(2,2)+''; +html += session.user.FullName + '
      '; +html += spacer(1,5) + '
      '; +html += 'My Home  |  '; +html += 'Logout'; +html += '
      '; +$('d_login_status').innerHTML = html; +$('d_tagline').innerHTML = +'Welcome '+session.user.FirstName+'' + ' | ' + +'My Home' + ' | ' + +'Logout'; +effect_api_get( 'get_user_games', { limit:5, offset:0 }, 'receive_sidebar_recent_games', { } ); +} +function receive_sidebar_recent_games(response, tx) { +var html = ''; +if (response.Rows && response.Rows.Row) { +var games = always_array( response.Rows.Row ); +for (var idx = 0, len = games.length; idx < len; idx++) { +var game = games[idx]; +html += ''; +} +html += ''; +$('d_sidebar_recent_games').innerHTML = html; +$('d_sidebar_wrapper_recent_games').show(); +} +else { +$('d_sidebar_wrapper_recent_games').hide(); +} +} +function check_privilege(key) { +if (!session.user) return false; +if (session.user.Privileges.admin == 1) return true; +if (!key.toString().match(/^\//)) key = '/' + key; +var value = lookup_path(key, session.user.Privileges); +return( value && (value != 0) ); +} +function is_admin() { +return check_privilege('admin'); +} +function upgrade_flash_error() { +return alert("Sorry, file upload requires Adobe Flash Player 9 or higher."); +} +function cancel_user_image_manager() { +upload_destroy(); +hide_popup_dialog(); +delete session.hooks.keys[DELETE_KEY]; +} +function do_user_image_manager(callback) { +if (callback) session.uim_callback = callback; +else session.uim_callback = null; +session.temp_last_user_img = null; +session.temp_last_user_image_filename = ''; +var html = '
      '; +html += '
      Image Manager
      '; +html += '
      '; +html += ''; +html += '
      '; +html += '
      '; +html += ''; +html += ''; +html += ''; +html += ''; +html += ''; +html += '
      ' + large_icon_button('x', 'Cancel', 'cancel_user_image_manager()') + ' ' + large_icon_button('bullet_upload.png', 'Upload Files...', 'upload_basic()', 'b_upload_user_image') + ' ' + large_icon_button('check', 'Choose', 'do_choose_user_image()', 'btn_choose_user_image', '', 'disabled') + '
      '; +html += '
      '; +session.hooks.keys[ENTER_KEY] = 'do_choose_user_image'; +session.hooks.keys[ESC_KEY] = 'cancel_user_image_manager'; +session.hooks.keys[DELETE_KEY] = 'do_delete_selected_user_image'; +show_popup_dialog(500, 300, html); +var self = this; +setTimeout( function() { +prep_upload('b_upload_user_image', '/effect/api/upload_user_image', [self, 'do_upload_user_image_2'], ['Image Files', '*.jpg;*.jpe;*.jpeg;*.gif;*.png']); +}, 1 ); +var args = { +limit: 50, +offset: 0, +random: Math.random() +}; +effect_api_get( 'user_images_get', args, 'uim_populate_images', { } ); +} +function do_upload_user_image_2() { +effect_api_mod_touch('user_images_get'); +effect_api_send('user_get', { +Username: session.username +}, [this, 'do_upload_user_image_3']); +} +function do_upload_user_image_3(response) { +if (response.User.LastUploadError) return do_error( "Failed to upload image: " + response.User.LastUploadError ); +do_user_image_manager( session.uim_callback ); +} +function uim_populate_images(response, tx) { +var html = ''; +var base_url = '/effect/api/view/users/' + session.username + '/images'; +if (response.Rows && response.Rows.Row) { +var imgs = always_array( response.Rows.Row ); +for (var idx = 0, len = imgs.length; idx < len; idx++) { +var img = imgs[idx]; +var class_name = ((img.Filename == session.temp_last_user_image_filename) ? 'choose_item_selected' : 'choose_item'); +html += ''; +} +} +else { +html = ''; +} +$('d_user_image_list').innerHTML = html; +} +function do_select_user_image(img, filename) { +if (session.temp_last_user_img) session.temp_last_user_img.className = 'choose_item'; +img.className = 'choose_item_selected'; +$('btn_choose_user_image').removeClass('disabled'); +session.temp_last_user_img = img; +session.temp_last_user_image_filename = filename; +} +function do_delete_selected_user_image() { +if (session.temp_last_user_image_filename) { +effect_api_send('user_image_delete', { Filename: session.temp_last_user_image_filename }, 'do_delete_selected_user_image_finish', {}); +} +} +function do_delete_selected_user_image_finish(response, tx) { +try { $('d_user_image_list').removeChild( session.temp_last_user_img ); } catch(e) {;} +session.temp_last_user_img = null; +session.temp_last_user_image_filename = null; +} +function do_choose_user_image() { +if (!session.temp_last_user_image_filename) return; +if (session.uim_callback) { +fire_callback( session.uim_callback, session.temp_last_user_image_filename ); +} +cancel_user_image_manager(); +} +function user_image_thumbnail(filename, width, height, attribs) { +var username = session.username; +if (filename.match(/^(\w+)\/(.+)$/)) { +username = RegExp.$1; +filename = RegExp.$2; +} +var url = '/effect/api/view/users/' + username + '/images/' + filename.replace(/\.(\w+)$/, '_thumb.jpg'); +return ''; +} +function get_user_display(username, full_name, base_url) { +if (!base_url) base_url = ''; +return icon('user', full_name || username, base_url + '#User/' + username); +} +function get_game_tab_bar(game_id, cur_page_name) { +return tab_bar([ +['#Game/' + game_id, 'Game', 'controller.png'], +['#GameDisplay/' + game_id, 'Display', 'monitor.png'], +['#GameAssets/' + game_id, 'Assets', 'folder_page_white.png'], +['#GameObjects/' + game_id, 'Objects', 'bricks.png'], +['#GameAudio/' + game_id, 'Audio', 'sound.gif'], +['#GameKeys/' + game_id, 'Keyboard', 'keyboard.png'], +['#GameLevels/' + game_id, 'Levels', 'world.png'], +['#GamePublisher/' + game_id, 'Publish', 'cd.png'] +], cur_page_name); +} +function get_user_tab_bar(cur_page_name) { +var tabs = [ +['#Home', 'My Home', 'house.png'] +]; +tabs.push( ['#MyAccount', 'Edit Account', 'user_edit.png'] ); +tabs.push( ['#ArticleEdit', 'Post Article', 'page_white_edit.png'] ); +if (config.ProEnabled) { +tabs.push( ['#UserPayments', 'Payments', 'money.png'] ); +} +tabs.push( ['#UserLog', 'Security Log', 'application_view_detail.png'] ); +return tab_bar(tabs, cur_page_name); +} +function get_admin_tab_bar(cur_page_name) { +var tabs = []; +tabs.push( ['#Admin', 'Admin', 'lock.png'] ); +tabs.push( ['#TicketSearch/bugs', 'Bug Tracker', 'bug.png'] ); +tabs.push( ['#TicketSearch/helpdesk', 'Help Desk', 'telephone.png'] ); +tabs.push( ['#AdminReport', 'Reports', 'chart_pie.png'] ); +return tab_bar(tabs, cur_page_name); +} +function get_string(path, args) { +assert(window.config, "get_string() called before config loaded"); +if (!args) args = {}; +args.config = config; +args.session = session; +args.query = session.query; +var value = lookup_path(path, config.Strings); +return (typeof(value) == 'string') ? substitute(value, args) : value; +} +function normalize_dir_path(path) { +if (!path.match(/^\//)) path = '/' + path; +if (!path.match(/\/$/)) path += '/'; +return path; +} +function textedit_window_save(storage_key, filename, content, callback) { +if (!callback) callback = null; +effect_api_mod_touch('textedit'); +if (storage_key.match(/^\/games\/([a-z0-9][a-z0-9\-]*[a-z0-9])\/assets(.+)$/)) { +var game_id = RegExp.$1; +var path = RegExp.$2; +show_progress_dialog(1, "Saving file..."); +effect_api_send('asset_save_file_contents', { +GameID: game_id, +Path: path, +Filename: filename, +Content: content +}, 'textedit_window_save_finish', { _mode: 'asset', _game_id: game_id, _filename: filename, _callback: callback } ); +} +else { +show_progress_dialog(1, "Saving data..."); +effect_api_send('admin_save_file_contents', { +Path: storage_key, +Filename: filename, +Content: content +}, 'textedit_window_save_finish', { _mode: 'admin', _storage_key: storage_key, _filename: filename, _callback: callback } ); +} +} +function textedit_window_save_finish(response, tx) { +hide_progress_dialog(); +if (tx._mode == 'asset') { +do_message('success', "Saved asset: \""+tx._filename+"\""); +show_glog_widget(); +} +else { +do_message('success', "Saved data: \""+tx._storage_key+'/'+tx._filename+"\""); +} +if (tx._callback) tx._callback(); +} +function do_buy(args) { +$P().hide(); +$('d_page_loading').show(); +effect_api_send('create_order', args, 'do_buy_redirect', { _buy_args: args } ); +} +function do_buy_redirect(response, tx) { +var args = tx._buy_args; +$('fe_gco_title').value = args.Title || ''; +$('fe_gco_desc').value = args.Desc || ''; +$('fe_gco_price').value = args.Price || ''; +$('fe_gco_after').value = args.After || ''; +$('fe_gco_unique_id').value = response.OrderID; +Debug.trace('payment', "Redirecting to Google Checkout"); +setTimeout( function() { $('BB_BuyButtonForm').submit(); }, 1 ); +} +function show_glog_widget(game_id) { +if (!game_id) game_id = session.glog_game_id; +if (!game_id) { +$('glog_widget').hide(); +return; +} +if (game_id != session.glog_game_id) { +$('glog_widget').hide(); +session.glog_game_id = game_id; +update_glog_widget(game_id); +} +else { +$('glog_widget').show(); +setTimeout( function() { update_glog_widget(game_id); }, 500 ); +} +} +function update_glog_widget(game_id) { +effect_api_get('game_get_log', { +id: game_id, +offset: 0, +limit: 1, +rand: Math.random() +}, 'receive_glog_data', { _game_id: game_id }); +} +function receive_glog_data(response, tx) { +var game_id = tx._game_id; +if (response && response.Rows && response.Rows.Row) { +var rows = always_array( response.Rows.Row ); +var row = rows[0]; +var html = ''; +html += '
      '; +html += '
      Latest Game Activity
      '; +html += ''; +html += ''; +html += '
      '; +html += '
      '; +html += ''; +html += ''; +html += ''; +html += '
      ' + get_buddy_icon_display(row.Username, 1, 0) + ''; +html += '
      ' + icon( get_icon_for_glog_type(row.Type), ''+row.Message+'' ) + '
      '; +html += '
      ' + get_relative_date(row.Date, true) + '
      '; +html += '
      '; +$('glog_widget').innerHTML = html; +$('glog_widget').show(); +} +} +function show_glog_post_dialog(game_id) { +hide_popup_dialog(); +delete session.progress; +var html = ''; +html += '
      '; +html += '\n \n \n \n'); + }; + __out.push('\n\n'); + __out.push(require('templates/clients/modules/sub_header').call(this, { + heading: t("Ride Request") + })); + __out.push('\n\n\n
      \n
      \n
      \n
      \n \n \n \n \n
      \n\n
      '; +html += '
      Post Game Log Message
      '; +html += '
      '; +html += ''; +html += '
      Enter your log message here. Plain text only please.
      '; +html += '
      '; +html += '

      '; +html += ''; +html += ''; +html += ''; +html += '
      ' + large_icon_button('x', 'Cancel', "hide_popup_dialog()") + ' ' + large_icon_button('check', 'Post Message', "glog_post('"+game_id+"')") + '
      '; +html += '
      '; +html += ''; +session.hooks.keys[ESC_KEY] = 'hide_popup_dialog'; +safe_focus( 'fe_glog_body' ); +show_popup_dialog(500, 175, html); +} +function glog_post(game_id) { +var msg = trim( $('fe_glog_body').value ); +if (msg) { +hide_popup_dialog(); +effect_api_send('game_post_log', { +GameID: game_id, +Message: msg +}, [this, 'glog_post_finish'], { _game_id: game_id }); +} +} +function glog_post_finish(response, tx) { +show_glog_widget( tx._game_id ); +} +function hide_glog_widget() { +$('glog_widget').hide(); +} +function get_icon_for_glog_type(type) { +var icon = 'page_white.png'; +switch (type) { +case 'asset': icon = 'folder_page_white.png'; break; +case 'game': icon = 'controller.png'; break; +case 'member': icon = 'user'; break; +case 'comment': icon = 'comment.png'; break; +case 'level': icon = 'world.png'; break; +case 'sprite': icon = 'cog.png'; break; +case 'tile': icon = 'brick.png'; break; +case 'tileset': icon = 'color_swatch.png'; break; +case 'rev': icon = 'cd.png'; break; +case 'revision': icon = 'cd.png'; break; +case 'font': icon = 'style.png'; break; +case 'key': icon = 'keyboard.png'; break; +case 'audio': icon = 'sound'; break; +case 'payment': icon = 'money.png'; break; +case 'env': icon = 'weather.png'; break; +case 'environment': icon = 'weather.png'; break; +} +return icon; +} +function effect_load_script(url) { +Debug.trace('api', 'Loading script: ' + url); +load_script(url); +} +function effect_api_get_ie(cmd, params, userData) { +if (!session.api_state_ie) session.api_state_ie = {}; +var unique_id = get_unique_id(); +session.api_state_ie[unique_id] = userData; +params.format = 'js'; +params.onafter = 'effect_api_response_ie(' + unique_id + ', response);'; +var url = '/effect/api/' + cmd + composeQueryString(params); +Debug.trace('api', "Sending MSIE HTTP GET: " + url); +load_script(url); +} +function effect_api_response_ie(unique_id, tree) { +Debug.trace('api', "Got response from MSIE HTTP GET"); +var tx = session.api_state_ie[unique_id]; +delete session.api_state_ie[unique_id]; +if (tree.Code == 'session') { +do_logout_2(); +return; +} +if (tree.Code == 'access') { +do_notice("Access Denied", tree.Description, 'do_not_pass_go'); +return; +} +if (tree.Code != 0) { +if (tx._on_error) return fire_callback( tx._on_error, tree, tx ); +return do_error( tree.Description ); +} +if (tree.SessionID) { +if (tree.SessionID == '_DELETE_') { +delete session.cookie.tree.effect_session_id; +} +else { +session.cookie.set( 'effect_session_id', tree.SessionID ); +} +session.cookie.save(); +} +if (tx._api_callback) { +fire_callback( tx._api_callback, tree, tx ); +} +} +function effect_api_get(cmd, params, callback, userData) { +if (!userData) userData = {}; +userData._api_callback = callback; +if (!session.api_mod_cache[cmd] && session.username) session.api_mod_cache[cmd] = hires_time_now(); +if (!params.mod && session.api_mod_cache[cmd]) params.mod = session.api_mod_cache[cmd]; +if (ie) return effect_api_get_ie(cmd, params, userData); +var url = '/effect/api/' + cmd + composeQueryString(params); +Debug.trace('api', "Sending HTTP GET: " + url); +ajax.get( url, 'effect_api_response', userData ); +} +function effect_api_send(cmd, xml, callback, userData) { +if (!userData) userData = {}; +userData._api_callback = callback; +var data = compose_xml('EffectRequest', xml); +Debug.trace('api', "Sending API Command: " + cmd + ": " + data); +ajax.send({ +method: 'POST', +url: '/effect/api/' + cmd, +data: data, +headers: { 'Content-Type': 'text/xml' } +}, 'effect_api_response', userData); +} +function effect_api_response(tx) { +Debug.trace('api', "HTTP " + tx.response.code + ": " + tx.response.data); +if (tx.response.code == 999) { +if (tx.request._auto_retry) { +session.net_error = false; +show_progress_dialog(1, "Trying to reestablish connection..."); +session.net_error = true; +setTimeout( function() { ajax.send(tx.request); }, 1000 ); +return; +} +else return do_error( "HTTP ERROR: " + tx.response.code + ": " + tx.response.data + ' (URL: ' + tx.request.url + ')' ); +} +if (session.net_error) { +hide_progress_dialog(); +session.net_error = false; +} +if (tx.response.code != 200) { +if (tx._silent) return; +else return do_error( "HTTP ERROR: " + tx.response.code + ": " + tx.response.data + ' (URL: ' + tx.request.url + ')' ); +} +var tree = null; +if (!tx._raw) { +var parser = new XML({ +preserveAttributes: true, +text: tx.response.data +}); +if (parser.getLastError()) return do_error("XML PARSE ERROR: " + parser.getLastError()); +tree = parser.getTree(); +if (tree.Code == 'session') { +do_logout_2(); +return; +} +if (tree.Code == 'access') { +do_notice("Access Denied", tree.Description, 'do_not_pass_go'); +return; +} +if (tree.Code != 0) { +if (tx._on_error) return fire_callback( tx._on_error, tree, tx ); +return do_error( tree.Description ); +} +if (tree.SessionID) { +if (tree.SessionID == '_DELETE_') { +delete session.cookie.tree.effect_session_id; +} +else { +session.cookie.set( 'effect_session_id', tree.SessionID ); +} +session.cookie.save(); +} +} +if (tx._api_callback) { +fire_callback( tx._api_callback, tree, tx ); +} +} +function effect_api_mod_touch() { +for (var idx = 0, len = arguments.length; idx < len; idx++) { +session.api_mod_cache[ arguments[idx] ] = hires_time_now(); +} +} +function do_not_pass_go() { +Nav.go('Main'); +} +var Nav = { +loc: '', +old_loc: '', +inited: false, +nodes: [], +init: function() { +if (!this.inited) { +this.inited = true; +this.loc = 'init'; +this.monitor(); +} +}, +monitor: function() { +var parts = window.location.href.split(/\#/); +var anchor = parts[1]; +if (!anchor) anchor = 'Main'; +var full_anchor = '' + anchor; +var sub_anchor = ''; +anchor = anchor.replace(/\%7C/, '|'); +if (anchor.match(/\|(\w+)$/)) { +sub_anchor = RegExp.$1.toLowerCase(); +anchor = anchor.replace(/\|(\w+)$/, ''); +} +if ((anchor != this.loc) && !anchor.match(/^_/)) { +Debug.trace('nav', "Caught navigation anchor: " + full_anchor); +var page_name = ''; +var page_args = null; +if (full_anchor.match(/^\w+\?.+/)) { +parts = full_anchor.split(/\?/); +page_name = parts[0]; +page_args = parseQueryString( parts[1] ); +} +else if (full_anchor.match(/^(\w+)\/(.*)$/)) { +page_name = RegExp.$1; +page_args = RegExp.$2; +} +else { +parts = full_anchor.split(/\//); +page_name = parts[0]; +page_args = parts.slice(1); +} +Debug.trace('nav', "Calling page: " + page_name + ": " + serialize(page_args)); +hide_popup_dialog(); +var result = page_manager.click( page_name, page_args ); +if (result) { +if (window.pageTracker && (this.loc != 'init')) { +setTimeout( function() { pageTracker._trackPageview('/effect/' + anchor); }, 1000 ); +} +this.old_loc = this.loc; +if (this.old_loc == 'init') this.old_loc = 'Main'; +this.loc = anchor; +} +else { +this.go( this.loc ); +} +} +else if (sub_anchor != this.sub_anchor) { +Debug.trace('nav', "Caught sub-anchor: " + sub_anchor); +$P().gosub( sub_anchor ); +} +this.sub_anchor = sub_anchor; +setTimeout( 'Nav.monitor()', 100 ); +}, +go: function(anchor, force) { +anchor = anchor.replace(/^\#/, ''); +if (force) this.loc = 'init'; +window.location.href = '#' + anchor; +}, +prev: function() { +this.go( this.old_loc || 'Main' ); +}, +refresh: function() { +this.loc = 'refresh'; +}, +bar: function() { +var nodes = arguments; +var html = ''; +for (var idx = 0, len = nodes.length; idx < len; idx++) { +var node = nodes[idx]; +if (node) this.nodes[idx] = node; +else node = this.nodes[idx]; +if (node != '_ignore_') { +html += ''; +} +} +html += '
      '; +$('d_nav_bar').innerHTML = html; +}, +title: function(name) { +if (name) document.title = name + ' | EffectGames.com'; +else document.title = 'EffectGames.com'; +}, +currentAnchor: function() { +var parts = window.location.href.split(/\#/); +var anchor = parts[1] || ''; +var sub_anchor = ''; +anchor = anchor.replace(/\%7C/, '|'); +if (anchor.match(/\|(\w+)$/)) { +sub_anchor = RegExp.$1.toLowerCase(); +anchor = anchor.replace(/\|(\w+)$/, ''); +} +return anchor; +} +}; +var Blog = { +edit_caption: '
      *Bold*  |Italic|  {monospace}  [http://link]  Formatting Guide...
      ', +search: function(args) { +if (!args.mode) args.mode = 'and'; +if (!args.offset) args.offset = 0; +if (!args.limit) args.limit = 10; +if (!args.format) args.format = 'xml'; +var query_args = copy_object( args ); +delete query_args.callback; +effect_api_get( 'article_search', query_args, [this, 'search_response'], { _search_args: args } ); +}, +get_article_preview: function(row, args) { +var html = ''; +Debug.trace('blog', 'Row: ' + dumper(row)); +html += '
      '; +var ext_article_url = 'http://' + location.hostname + '/effect/article.psp.html' + row.Path + '/' + row.ArticleID; +var article_url = '#Article' + row.Path + '/' + row.ArticleID; +html += ''; +if (!args.title_only) { +html += '
      '; +html += row.Preview; +html += '  ' + (args.link_title || 'Read Full Story...') + ''; +html += '
      '; +html += ''; +html += '
      '; +var elem_class = args.footer_element_class || 'blog_preview_footer_element'; +if ((session.username == row.Username) || is_admin()) { +html += '
      ' + +icon('page_white_edit.png', "Edit", '#ArticleEdit?path=' + row.Path + '&id=' + row.ArticleID) + '
      '; +} +html += '
      ' + get_user_display(row.Username) + '
      '; +html += '
      ' + icon('calendar', get_short_date_time(row.Published)) + '
      '; +html += '
      ' + icon('talk', row.Comments) + '
      '; +if (0 && row.Tags) html += '
      ' + icon('note.png', make_tag_links(row.Tags, 3)) + '
      '; +html += '
      ' + icon('facebook.png', 'Facebook', "window.open('http://www.facebook.com/sharer.php?u="+encodeURIComponent(ext_article_url)+'&t='+encodeURIComponent(row.Title)+"','sharer','toolbar=0,status=0,width=626,height=436')", "Share on Facebook") + '
      '; +html += '
      ' + icon('twitter.png', 'Twitter', "window.open('http://twitter.com/home?status=Reading%20" + encodeURIComponent(row.Title) + "%3A%20" + encodeURIComponent(ext_article_url)+"')", "Share on Twitter") + '
      '; +html += '
      '; +html += '
      '; +html += '
      '; +} +html += '
      '; +return html; +}, +search_response: function(response, tx) { +var args = tx._search_args; +if (args.callback) return fire_callback(args.callback, response, args); +var div = $(args.target); +assert(div, "Could not find target DIV: " + args.target); +var html = ''; +if (response.Rows && response.Rows.Row) { +var rows = always_array( response.Rows.Row ); +for (var idx = 0, len = rows.length; idx < len; idx++) { +var row = rows[idx]; +html += this.get_article_preview( row, args ); +} +if (args.more && (rows.length == args.limit)) { +html += large_icon_button('page_white_put.png', 'More...', "Blog.more(this, "+encode_object(args)+")") + '
      '; +html += spacer(1,15) + '
      '; +} +if (args.after) html += args.after; +} +else if (response.Code != 0) { +html = 'Search Error: ' . response.Code + ': ' + response.Description; +} +else { +html = args.none_found_msg || 'No articles found.'; +} +div.innerHTML = html; +}, +more: function(div, args) { +args.offset += args.limit; +Debug.trace('blog', "More Args: " + dumper(args)); +div.innerHTML = ''; +effect_api_get( 'article_search', args, [this, 'more_response'], { _search_args: args, _div: div } ); +}, +more_response: function(response, tx) { +var args = tx._search_args; +var button = tx._div; +var html = ''; +if (response.Rows && response.Rows.Row) { +var rows = always_array( response.Rows.Row ); +for (var idx = 0, len = rows.length; idx < len; idx++) { +var row = rows[idx]; +html += this.get_article_preview( row, args ); +} +if (args.more && (rows.length == args.limit)) { +html += large_icon_button('page_white_put.png', 'More...', "Blog.more(this, "+encode_object(args)+")") + '
      '; +html += spacer(1,15) + '
      '; +} +} +else if (response.Code != 0) { +html = 'Search Error: ' . response.Code + ': ' + response.Description; +} +else { +html = args.none_found_msg || 'No more articles found.'; +} +var div = document.createElement('div'); +div.innerHTML = html; +button.parentNode.replaceChild( div, button ); +} +}; +function make_tag_links(csv, max, base_url) { +if (!base_url) base_url = ''; +var tags = csv.split(/\,\s*/); +var append = ''; +if (max && (tags.length > max)) { +tags.length = max; +append = '...'; +} +var html = ''; +for (var idx = 0, len = tags.length; idx < len; idx++) { +html += ''+tags[idx]+''; +if (idx < len - 1) html += ', '; +} +html += append; +return html; +} +function get_url_friendly_title(title) { +title = title.toString().replace(/\W+/g, '_'); +if (title.length > 40) title = title.substring(0, 40); +title = title.replace(/^_+/, ''); +title = title.replace(/_+$/, ''); +return title; +} +function get_full_url(url) { +if (url.match(/^\#/)) { +var parts = window.location.href.split(/\#/); +url = parts[0] + url; +} +return url; +} +var Comments = { +comments_per_page: 10, +get: function(page_id) { +var html = ''; +html += '
      '; +html += '
      Comments'; +html += '
      '; +html += '
      '; +html += '
      '; +setTimeout( function() { Comments.search({ page_id: page_id }); }, 1 ); +return html; +}, +search: function(args) { +if (!args.limit) args.limit = this.comments_per_page; +if (!args.offset) args.offset = 0; +assert(args.page_id, "Comments.search: No page_id specified"); +args.format = 'xml'; +this.last_search = args; +effect_api_get( 'comments_get', args, [this, 'search_response'], { _search_args: args } ); +}, +research: function(offset) { +var args = this.last_search; +if (!args) return; +args.offset = offset; +effect_api_get( 'comments_get', args, [this, 'search_response'], { _search_args: args } ); +}, +search_response: function(response, tx) { +this.comments = []; +var args = tx._search_args; +if (args.callback) return fire_callback(args.callback, response, args); +var html = ''; +html += '
      ' + +large_icon_button( 'comment_edit.png', 'Post Comment...', "Comments.add('"+args.page_id+"')" ) + '
      '; +if (args.page_id.match(/^Article\//)) { +html += '
      ' + icon('feed.png', 'RSS', '/effect/api/comment_feed/' + args.page_id + '.rss', 'Comments RSS Feed') + '
      '; +} +if (response.Items && response.Items.Item && response.List && response.List.length) { +html += ''; +html += '
      '; +var items = this.comments = always_array( response.Items.Item ); +for (var idx = 0, len = items.length; idx < len; idx++) { +var item = items[idx]; +var extra_classes = (args.highlight && (args.highlight == item.ID)) ? ' highlight' : ''; +html += '
      '; +html += '
      '; +if (item.Username) html += ''; +html += '' + item.Name.toString().toUpperCase() + ''; +if (item.Username) html += ''; +html += ', ' + get_short_date_time(item.Date) + '
      '; +html += '
      '; +html += this.get_comment_controls( args.page_id, item ); +html += '
      '; +html += '
      '; +html += '
      ' + item.Comment + '
      '; +html += '
      '; +html += ''; +if (item.LastReply && ((item.LastReply >= time_now() - (86400 * 7)) || (session.username && (session.username == item.Username)))) { +setTimeout( "Comments.show_replies('"+args.page_id+"','"+item.ID+"')", 1 ); +} +} +} +else { +} +$( 'd_comments_' + args.page_id ).innerHTML = html; +}, +get_control: function(icon, code, text, status_text) { +if (!icon.match(/\.\w+$/)) icon += '.gif'; +return '' + code_link(code, text, status_text) + ''; +}, +get_comment_controls: function(page_id, comment) { +var html = ''; +var spacer_txt = '  |  '; +if (session.user) { +html += this.get_control('comment', "Comments.reply('"+page_id+"','"+comment.ID+"')", 'Reply') + spacer_txt; +} +if (comment.Replies) { +if (comment._replies_visible) html += this.get_control('magnify_minus', "Comments.hide_replies('"+page_id+"','"+comment.ID+"')", 'Hide Replies'); +else html += this.get_control('magnify_plus', "Comments.show_replies('"+page_id+"','"+comment.ID+"')", 'Show Replies ('+comment.Replies+')'); +if (session.user) html += spacer_txt; +} +if (session.user) { +html += this.get_control( +'star', +"Comments.like('"+page_id+"','"+comment.ID+"')", +'Like' + (comment.Like ? (' ('+comment.Like+')') : ''), +comment.Like ? (comment.Like + ' ' + ((comment.Like == 1) ? 'person likes this' : 'people like this')) : 'I like this comment' +) + spacer_txt; +if (is_admin()) html += this.get_control('trash', "Comments._delete('"+page_id+"','"+comment.ID+"')", 'Delete') + spacer_txt; +html += this.get_control('warning', "Comments.report('"+page_id+"','"+comment.ID+"')", 'Report Abuse'); +} +return html; +}, +reply: function(page_id, comment_id) { +hide_popup_dialog(); +delete session.progress; +var comment = find_object( this.comments, { ID: comment_id } ); +var html = ''; +html += '
      '; +html += '\n \n \n \n \n \n \n \n \n \n '); + }, this); + __out.push('\n\n
      \n
      '; +html += '
      Reply to Comment by "'+comment.Name+'"
      '; +html += '
      '; +var name = this.get_name(); +html += '

      Posted by: ' + name; +if (!session.user) html += ' → Create Account'; +html += '


      '; +html += ''; +html += Blog.edit_caption; +html += '
      '; +html += '

      '; +html += ''; +html += ''; +html += ''; +html += '
      ' + large_icon_button('x', 'Cancel', "hide_popup_dialog()") + ' ' + large_icon_button('check', 'Post Reply', "Comments.post_reply('"+page_id+"','"+comment_id+"')") + '
      '; +html += '
      '; +html += ''; +session.hooks.keys[ESC_KEY] = 'hide_popup_dialog'; +safe_focus( 'fe_comment_body' ); +show_popup_dialog(600, 300, html); +}, +post_reply: function(page_id, comment_id) { +var value = $('fe_comment_body').value; +if (!value) return; +hide_popup_dialog(); +show_progress_dialog(1, "Posting reply..."); +var name = this.get_name(); +effect_api_mod_touch('comment_replies_get'); +effect_api_send('comment_post_reply', { +PageID: page_id, +CommentID: comment_id, +Username: session.username || '', +Name: name, +Comment: value, +PageURL: location.href +}, [this, 'post_reply_finish'], { _page_id: page_id, _comment_id: comment_id } ); +}, +post_reply_finish: function(response, tx) { +hide_popup_dialog(); +var page_id = tx._page_id; +var comment_id = tx._comment_id; +var comment = find_object( this.comments, { ID: comment_id } ); +do_message('success', "Comment reply posted successfully."); +this.show_replies(page_id, comment_id); +if (!comment.Replies) comment.Replies = 1; else comment.Replies++; +$('d_comment_controls_'+comment_id).innerHTML = this.get_comment_controls( page_id, comment ); +}, +show_replies: function(page_id, comment_id) { +var comment = find_object( this.comments, { ID: comment_id } ); +if (!comment._replies_visible) { +$('d_comment_replies_' + comment_id).show().innerHTML = ''; +} +var args = { page_id: page_id, comment_id: comment_id, offset: 0, limit: 100 }; +effect_api_get( 'comment_replies_get', args, [this, 'receive_replies_response'], { _search_args: args } ); +}, +receive_replies_response: function(response, tx) { +var page_id = tx._search_args.page_id; +var comment_id = tx._search_args.comment_id; +var comment = find_object( this.comments, { ID: comment_id } ); +var html = ''; +var replies = always_array( response.Items.Item ); +for (var idx = 0, len = replies.length; idx < len; idx++) { +var reply = replies[idx]; +html += get_chat_balloon( +(reply.Username == session.username) ? 'blue' : 'grey', +reply.Username, +reply.Comment.replace(/^]*?>(.+)<\/div>$/i, '$1') +); +} +$('d_comment_replies_' + comment_id).innerHTML = html; +if (!comment._replies_visible) { +$('d_comment_replies_' + comment_id).hide(); +animate_div_visibility( 'd_comment_replies_' + comment_id, true ); +} +comment._replies_visible = true; +$('d_comment_controls_'+comment_id).innerHTML = this.get_comment_controls( page_id, comment ); +}, +hide_replies: function(page_id, comment_id) { +var comment = find_object( this.comments, { ID: comment_id } ); +if (comment._replies_visible) { +animate_div_visibility( 'd_comment_replies_' + comment_id, false ); +comment._replies_visible = false; +$('d_comment_controls_'+comment_id).innerHTML = this.get_comment_controls( page_id, comment ); +} +}, +like: function(page_id, comment_id) { +effect_api_mod_touch('comments_get'); +effect_api_send('comment_like', { +PageID: page_id, +CommentID: comment_id +}, [this, 'like_finish'], { _page_id: page_id, _comment_id: comment_id, _on_error: [this, 'like_error'] } ); +}, +like_error: function(response, tx) { +if (response.Code == 'comment_already_like') do_message('error', "You already like this comment."); +else do_error( response.Description ); +}, +like_finish: function(resopnse, tx) { +var page_id = tx._page_id; +var comment_id = tx._comment_id; +var comment = find_object( this.comments, { ID: comment_id } ); +do_message('success', "You now like this comment."); +if (!comment.Like) comment.Like = 1; else comment.Like++; +$('d_comment_controls_'+comment_id).innerHTML = this.get_comment_controls( page_id, comment ); +}, +add: function(page_id) { +hide_popup_dialog(); +delete session.progress; +var html = ''; +html += '
      '; +html += '", "" ], + legend: [ 1, "
      ", "
      " ], + thead: [ 1, "
      '; +html += '
      Post New Comment
      '; +html += '
      '; +var name = this.get_name(); +html += '

      Posted by: ' + name; +if (!session.user) html += ' → Create Account'; +html += '


      '; +html += ''; +html += Blog.edit_caption; +html += '
      '; +html += '

      '; +html += ''; +html += ''; +html += ''; +html += '
      ' + large_icon_button('x', 'Cancel', "hide_popup_dialog()") + ' ' + large_icon_button('check', 'Post Comment', "Comments.post('"+page_id+"')") + '
      '; +html += '
      '; +html += ''; +session.hooks.keys[ESC_KEY] = 'hide_popup_dialog'; +safe_focus( 'fe_comment_body' ); +show_popup_dialog(600, 300, html); +}, +report: function(page_id, comment_id) { +if (confirm('Are you sure you want to report this comment to the site administrators as abusive and/or spam?')) { +effect_api_send('comment_report_abuse', { +PageID: page_id, +CommentID: comment_id +}, [this, 'report_finish'], { _page_id: page_id, _comment_id: comment_id } ); +} +}, +report_finish: function(response, tx) { +do_message('success', 'Your abuse report has been received, and will be evaluated by the site administrators.'); +}, +_delete: function(page_id, comment_id) { +if (confirm('Are you sure you want to permanently delete this comment?')) { +effect_api_mod_touch('comments_get'); +effect_api_send('comment_delete', { +PageID: page_id, +CommentID: comment_id +}, [this, 'delete_finish'], { _page_id: page_id, _comment_id: comment_id } ); +} +}, +delete_finish: function(response, tx) { +do_message('success', 'The comment was deleted successfully.'); +var page_id = tx._page_id; +this.search({ page_id: page_id }); +}, +get_name: function() { +var name = '(Anonymous)'; +if (session.user) { +if (get_bool_pref('public_profile')) name = session.user.FullName; +else name = session.username; +} +return name; +}, +post: function(page_id) { +var value = $('fe_comment_body').value; +if (!value) return; +hide_popup_dialog(); +show_progress_dialog(1, "Posting comment..."); +var name = this.get_name(); +effect_api_mod_touch('comments_get'); +effect_api_send('comment_post', { +PageID: page_id, +Username: session.username || '', +Name: name, +Comment: value +}, [this, 'post_finish'], { _page_id: page_id } ); +}, +post_finish: function(response, tx) { +hide_popup_dialog(); +var comment_id = response.CommentID; +var page_id = tx._page_id; +this.search({ page_id: page_id, highlight: comment_id }); +} +}; +Class.create( 'Menu', { +id: '', +menu: null, +__construct: function(id) { +this.id = id; +}, +load: function() { +if (!this.menu) { +this.menu = $(this.id); +assert( !!this.menu, "Could not locate DOM element: " + this.id ); +} +}, +get_value: function() { +this.load(); +return this.menu.options[this.menu.selectedIndex].value; +}, +set_value: function(value, auto_add) { +value = str_value(value); +this.load(); +for (var idx = 0, len = this.menu.options.length; idx < len; idx++) { +if (this.menu.options[idx].value == value) { +this.menu.selectedIndex = idx; +return true; +} +} +if (auto_add) { +this.menu.options[this.menu.options.length] = new Option(value, value); +this.menu.selectedIndex = this.menu.options.length - 1; +return true; +} +return false; +}, +disable: function() { +this.load(); +this.menu.disabled = true; +this.menu.setAttribute( 'disabled', 'disabled' ); +}, +enable: function() { +this.load(); +this.menu.setAttribute( 'disabled', '' ); +this.menu.disabled = false; +}, +populate: function(items, sel_value) { +this.load(); +this.menu.options.length = 0; +for (var idx = 0, len = items.length; idx < len; idx++) { +var item = items[idx]; +var item_name = ''; +var item_value = ''; +if (isa_hash(item)) { +item_name = item.label; +item_value = item.data; +} +else if (isa_array(item)) { +item_name = item[0]; +item_value = item[1]; +} +else { +item_name = item_value = item; +} +this.menu.options[ this.menu.options.length ] = new Option( item_name, item_value ); +if (item_value == sel_value) this.menu.selectedIndex = idx; +} +} +} ); +Class.subclass( Menu, 'MultiMenu', { +__static: { +toggle_type: function(id) { +var menu = $(id); +assert(menu, "Could not find menu in DOM: " + id); +if (menu.disabled) return; +var obj = MenuManager.find(id); +assert(obj, "Could not find menu in MenuManager: " + id); +var div = $( 'd_inner_' + id ); +var ic = $( 'ic_' + id ); +var is_multiple = (ic.src.indexOf('contract') > -1); +obj.multi = !is_multiple; +var multiple_tag = !is_multiple ? +' multiple="multiple" size=5' : ''; +var items = []; +for (var idx = 0; idx < menu.options.length; idx++) { +var option = menu.options[idx]; +array_push( items, { +value: option.value, +text: option.text, +selected: option.selected +}); +} +var html = ''; +html += ''; +div.innerHTML = html; +ic.src = images_uri + '/menu_' + (is_multiple ? 'expand' : 'contract') + '.gif'; +obj.menu = null; +} +}, +attribs: null, +multi: false, +toggle: true, +__construct: function(id, attribs) { +this.id = id; +if (attribs) this.attribs = attribs; +}, +get_html: function(items, selected_csv, attribs) { +if (!items) items = []; +if (!selected_csv) selected_csv = ''; +if (attribs) this.attribs = attribs; +var selected = csv_to_hash(selected_csv); +this.menu = null; +if (num_keys(selected) > 1) this.multi = true; +var html = '
      '; +html += ''; +html += ''; +html += ''; +if (this.toggle) html += ''; +html += '
      ' + spacer(1,1) + '
      '+spacer(1,2)+'
      '; +html += '
      '; +return html; +}, +get_value: function() { +this.load(); +var value = ''; +for (var idx = 0; idx < this.menu.options.length; idx++) { +var option = this.menu.options[idx]; +if (option.selected && option.value.length) { +if (value.length > 0) value += ','; +value += option.value; +} +} +return value; +}, +set_value: function(value, auto_add) { +value = '' + value; +this.load(); +if (!value) { +value = ''; +for (var idx = 0; idx < this.menu.options.length; idx++) { +var option = this.menu.options[idx]; +option.selected = (option.value == value); +} +return; +} +var selected = csv_to_hash(value); +if ((num_keys(selected) > 1) && !this.multi) { +MultiMenu.toggle_type(this.id); +var self = this; +setTimeout( function() { +self.set_value(value, auto_add); +}, 1 ); +return; +} +for (var idx = 0; idx < this.menu.options.length; idx++) { +var option = this.menu.options[idx]; +option.selected = selected[option.value] ? true : false; +} +}, +populate: function(items, value) { +this.load(); +this.menu.options.length = 0; +if (!value) value = ''; +var selected = csv_to_hash(value); +for (var idx = 0, len = items.length; idx < len; idx++) { +var item = items[idx]; +var item_name = ''; +var item_value = ''; +if (isa_hash(item)) { +item_name = item.label; +item_value = item.data; +} +else if (isa_array(item)) { +item_name = item[0]; +item_value = item[1]; +} +else { +item_name = item_value = item; +} +var opt = new Option( item_name, item_value ); +this.menu.options[ this.menu.options.length ] = opt; +opt.selected = selected[item_value] ? true : false; +} +}, +collapse: function() { +if (this.multi) MultiMenu.toggle_type(this.id); +}, +expand: function() { +if (!this.multi) MultiMenu.toggle_type(this.id); +} +} ); +Class.create( 'MenuManager', { +__static: { +menus: {}, +register: function(menu) { +this.menus[ menu.id ] = menu; +return menu; +}, +find: function(id) { +return this.menus[id]; +} +} +} ); +Class.create( 'GrowlManager', { +lifetime: 10, +marginRight: 0, +marginTop: 0, +__construct: function() { +this.growls = []; +}, +growl: function(type, msg) { +if (find_object(this.growls, { type: type, msg: msg })) return; +var div = $(document.createElement('div')); +div.className = 'growl_message ' + type; +div.setOpacity(0.0); +div.innerHTML = '
      ' + msg + '
      ' + spacer(1,5) + '
      '; +$('d_growl_wrapper').insertBefore( div, $('d_growl_top').nextSibling ); +var growl = { id:get_unique_id(), type: type, msg: msg, opacity:0.0, start:hires_time_now(), div:div }; +this.growls.push(growl); +this.handle_resize(); +this.animate(growl); +var self = this; +div.onclick = function() { +delete_object(self.growls, { id: growl.id }); +$('d_growl_wrapper').removeChild( div ); +}; +}, +animate: function(growl) { +if (growl.deleted) return; +var now = hires_time_now(); +var div = growl.div; +if (now - growl.start <= 0.5) { +div.setOpacity( tweenFrame(0.0, 1.0, (now - growl.start) * 2, 'EaseOut', 'Quadratic') ); +} +else if (now - growl.start <= this.lifetime) { +if (!growl._fully_opaque) { +div.setOpacity( 1.0 ); +growl._fully_opaque = true; +} +} +else if (now - growl.start <= this.lifetime + 1.0) { +div.setOpacity( tweenFrame(1.0, 0.0, (now - growl.start) - this.lifetime, 'EaseOut', 'Quadratic') ); +} +else { +delete_object(this.growls, { id: growl.id }); +$('d_growl_wrapper').removeChild( div ); +return; +} +var self = this; +setTimeout( function() { self.animate(growl); }, 33 ); +}, +handle_resize: function() { +var div = $('d_growl_wrapper'); +if (this.growls.length) { +var size = getInnerWindowSize(); +div.style.top = '' + (10 + this.marginTop) + 'px'; +div.style.left = '' + Math.floor((size.width - 310) - this.marginRight) + 'px'; +} +else { +div.style.left = '-2000px'; +} +} +} ); +window.$GR = new GrowlManager(); +if (window.addEventListener) { +window.addEventListener( "resize", function() { +$GR.handle_resize(); +}, false ); +} +else if (window.attachEvent && !ie6) { +window.attachEvent("onresize", function() { +$GR.handle_resize(); +}); +} +Class.create( 'Effect.Page', { +ID: '', +data: null, +active: false, +__construct: function(config) { +if (!config) return; +this.data = {}; +if (!config) config = {}; +for (var key in config) this[key] = config[key]; +this.div = $('page_' + this.ID); +assert(this.div, "Cannot find page div: page_" + this.ID); +}, +onInit: function() { +}, +onActivate: function() { +return true; +}, +onDeactivate: function() { +return true; +}, +show: function() { +this.div.show(); +}, +hide: function() { +this.div.hide(); +}, +gosub: function(anchor) { +} +} ); +Class.require( 'Effect.Page' ); +Class.create( 'Effect.PageManager', { +pages: null, +current_page_id: '', +on_demand: {}, +__construct: function(page_list) { +this.pages = []; +this.page_list = page_list; +for (var idx = 0, len = page_list.length; idx < len; idx++) { +Debug.trace( 'page', "Initializing page: " + page_list[idx].ID ); +if (Effect.Page[ page_list[idx].ID ]) { +var page = new Effect.Page[ page_list[idx].ID ]( page_list[idx] ); +page.onInit(); +this.pages.push(page); +} +else { +Debug.trace( 'page', 'Page ' + page_list[idx].ID + ' will be loaded on-demand' ); +} +} +}, +find: function(id) { +var page = find_object( this.pages, { ID: id } ); +if (!page) Debug.trace('PageManager', "Could not find page: " + id); +return page; +}, +notify_load: function(file, id) { +for (var idx = 0, len = this.page_list.length; idx < len; idx++) { +var page_config = this.page_list[idx]; +if (page_config.File == file) { +Debug.trace( 'page', "Initializing page on-demand: " + page_config.ID ); +var page = new Effect.Page[ page_config.ID ]( page_config ); +page.onInit(); +this.pages.push(page); +} +} +var self = this; +setTimeout( function() { +var result = self.activate(id, self.temp_args); +delete self.temp_args; +$('d_page_loading').hide(); +if (!result) { +$('page_'+id).hide(); +self.current_page_id = ''; +} +}, 1 ); +}, +activate: function(id, args) { +if (!find_object( this.pages, { ID: id } )) { +var page_config = find_object( this.page_list, { ID: id } ); +assert(!!page_config, "Page config not found: " + id ); +Debug.trace('page', "Loading file on-demand: " + page_config.File + " for page: " + id); +var url = '/effect/api/load_page/' + page_config.File + '?onafter=' + escape('page_manager.notify_load(\''+page_config.File+'\',\''+id+'\')'); +if (page_config.Requires) { +var files = page_config.Requires.split(/\,\s*/); +for (var idx = 0, len = files.length; idx < len; idx++) { +var filename = files[idx]; +if (!this.on_demand[filename]) { +Debug.trace('page', "Also loading file: " + filename); +url += '&file=' + filename; +this.on_demand[filename] = 1; +} +} +} +$('d_page_loading').show(); +this.temp_args = args; +load_script( url ); +return true; +} +$('page_'+id).show(); +var page = this.find(id); +page.active = true; +if (!args) args = []; +if (!isa_array(args)) args = [ args ]; +var result = page.onActivate.apply(page, args); +if (typeof(result) == 'boolean') return result; +else return alert("Page " + id + " onActivate did not return a boolean!"); +}, +deactivate: function(id, new_id) { +var page = this.find(id); +var result = page.onDeactivate(new_id); +if (result) { +$('page_'+id).hide(); +page.active = false; +} +return result; +}, +click: function(id, args) { +Debug.trace('page', "Switching pages to: " + id); +var old_id = this.current_page_id; +if (this.current_page_id) { +var result = this.deactivate( this.current_page_id, id ); +if (!result) return false; +} +this.current_page_id = id; +this.old_page_id = old_id; +window.scrollTo( 0, 0 ); +var result = this.activate(id, args); +if (!result) { +$('page_'+id).hide(); +this.current_page_id = ''; +} +return true; +} +} ); +Class.subclass( Effect.Page, "Effect.Page.Main", { +inited: false, +onActivate: function() { +Nav.bar( ['Main', 'EffectGames.com'] ); +Nav.title(''); +$('d_blog_news').innerHTML = loading_image(); +$('d_blog_community').innerHTML = loading_image(); +$('d_blog_featured').innerHTML = loading_image(); +Blog.search({ +stag: 'featured_game', +limit: 4, +full: 1, +callback: [this, 'receive_featured_games'] +}); +effect_api_get( 'get_site_info', { cat: 'pop_pub_games' }, [this, 'receive_pop_pub_games'], { } ); +Blog.search({ +stag: 'front_page', +limit: 5, +target: 'd_blog_news', +more: 1 +}); +Blog.search({ +path: '/community', +limit: 5, +target: 'd_blog_community', +more: 1 +}); +if (!this.inited) { +this.inited = true; +config.Strings.MainSlideshow.Slide = always_array( config.Strings.MainSlideshow.Slide ); +this.slide_idx = 0; +this.num_slides = config.Strings.MainSlideshow.Slide.length; +this.slide_div_num = 0; +this.slide_dir = 1; +this.bk_pos = -340; +this.bk_pos_target = -340; +this.slide_images = []; +for (var idx = 0, len = this.num_slides; idx < len; idx++) { +var url = images_uri + '/' + config.Strings.MainSlideshow.Slide[idx].Photo; +this.slide_images[idx] = new Image(); +this.slide_images[idx].src = png(url, true); +} +} +this.height_target = 470; +this.height_start = $('d_header').offsetHeight; +this.time_start = hires_time_now(); +this.duration = 0.75; +if (!this.timer) this.timer = setTimeout( '$P("Main").animate_mhs()', 33 ); +if (session.user) $('d_blurb_main').hide(); +else { +$('d_blurb_main').innerHTML = get_string('/Main/Blurb'); +$('d_blurb_main').show(); +} +return true; +}, +receive_pop_pub_games: function(response, tx) { +var html = ''; +if (response.Data && response.Data.Games && response.Data.Games.Game) { +var games = always_array( response.Data.Games.Game ); +for (var idx = 0, len = Math.min(games.length, 16); idx < len; idx++) { +var game = games[idx]; +html += '
      ' + +(game.Logo ? +user_image_thumbnail(game.Logo, 80, 60) : +'' +) + '
      ' + ww_fit_box(game.Title, 80, 2, session.em_width, 1) + '
      '; +} +html += '
      '; +} +else { +html += 'No active public games found! Why not create a new one?'; +} +$('d_main_pop_pub_games').innerHTML = html; +}, +receive_featured_games: function(response, tx) { +var html = ''; +if (response.Rows && response.Rows.Row) { +html += ''; +var rows = always_array( response.Rows.Row ); +for (var idx = 0, len = rows.length; idx < len; idx++) { +var row = rows[idx]; +var image_url = row.Params.featured_image; +if (image_url && image_url.match(/^(\w+)\/(\w+\.\w+)$/)) { +image_url = '/effect/api/view/users/' + RegExp.$1 + '/images/' + RegExp.$2; +} +if (idx % 2 == 0) html += ''; +html += ''; +if (idx % 2 == 1) html += ''; +} +if (rows.length % 2 == 1) { +html += ''; +html += ''; +} +html += '
      '; +html += ''; +html += ''; +html += ''; +html += ''; +html += ''; +html += '
      '; +html += ''; +html += '' + spacer(10,1) + ''; +html += ''; +html += ''; +html += '' + spacer(15,1) + '
      '; +html += spacer(1,20); +html += '
      '; +} +$('d_blog_featured').innerHTML = html; +}, +animate_mhs: function() { +var now = hires_time_now(); +if (now - this.time_start >= this.duration) { +$('d_header').style.height = '' + this.height_target + 'px'; +$('d_shadow').style.height = '' + this.height_target + 'px'; +delete this.timer; +} +else { +var height = tweenFrame(this.height_start, this.height_target, (now - this.time_start) / this.duration, 'EaseOut', 'Circular'); +$('d_header').style.height = '' + height + 'px'; +$('d_shadow').style.height = '' + height + 'px'; +this.timer = setTimeout( '$P("Main").animate_mhs()', 33 ); +} +}, +onDeactivate: function() { +$('d_blog_news').innerHTML = ''; +$('d_blog_community').innerHTML = ''; +this.height_target = 75; +this.height_start = $('d_header').offsetHeight; +this.time_start = hires_time_now(); +if (!this.timer) this.timer = setTimeout( '$P("Main").animate_mhs()', 33 ); +return true; +}, +draw_slide: function() { +if (this.slide_timer) return; +var slide = config.Strings.MainSlideshow.Slide[ this.slide_idx ]; +this.old_photo = $('d_header_slideshow_photo_' + this.slide_div_num); +this.old_text = $('d_header_slideshow_text_' + this.slide_div_num); +this.slide_div_num = 1 - this.slide_div_num; +this.new_photo = $('d_header_slideshow_photo_' + this.slide_div_num); +this.new_text = $('d_header_slideshow_text_' + this.slide_div_num); +this.new_photo.style.backgroundImage = 'url('+png(images_uri+'/'+slide.Photo, true)+')'; +this.new_photo.setOpacity(0.0); +var html = ''; +html += slide.Text; +this.slide_width = this.new_text.offsetWidth; +this.new_text.innerHTML = html; +if (this.slide_dir == 1) this.new_text.style.left = '' + this.slide_width + 'px'; +else this.new_text.style.left = '-' + this.slide_width + 'px'; +this.slide_time_start = hires_time_now(); +this.slide_timer = setTimeout( '$P("Main").animate_mhs_slide()', 33 ); +}, +animate_mhs_slide: function() { +var now = hires_time_now(); +if (now - this.slide_time_start >= this.duration) { +this.new_text.style.left = '0px'; +this.old_text.style.left = '-' + this.slide_width + 'px'; +this.new_photo.setOpacity( 1.0 ); +this.old_photo.setOpacity( 0.0 ); +delete this.slide_timer; +this.bk_pos = this.bk_pos_target; +} +else { +var value = tweenFrame(0.0, 1.0, (now - this.slide_time_start) / this.duration, 'EaseOut', 'Circular'); +if (this.slide_dir == 1) { +this.new_text.style.left = '' + Math.floor( this.slide_width - (this.slide_width * value) ) + 'px'; +this.old_text.style.left = '-' + Math.floor( this.slide_width * value ) + 'px'; +} +else { +this.new_text.style.left = '-' + Math.floor( this.slide_width - (this.slide_width * value) ) + 'px'; +this.old_text.style.left = '' + Math.floor( this.slide_width * value ) + 'px'; +} +this.new_photo.setOpacity( value ); +this.old_photo.setOpacity( 1.0 - value ); +var bkp = Math.floor( this.bk_pos + ((this.bk_pos_target - this.bk_pos) * value) ); +$('d_header').style.backgroundPosition = '' + bkp + 'px 0px'; +this.slide_timer = setTimeout( '$P("Main").animate_mhs_slide()', 33 ); +} +}, +prev_slide: function() { +this.bk_pos_target += 200; +this.slide_idx--; +if (this.slide_idx < 0) this.slide_idx += this.num_slides; +this.slide_dir = -1; +this.draw_slide(); +}, +next_slide: function() { +this.bk_pos_target -= 200; +this.slide_idx++; +if (this.slide_idx >= this.num_slides) this.slide_idx -= this.num_slides; +this.slide_dir = 1; +this.draw_slide(); +} +} ); +Class.subclass( Effect.Page, "Effect.Page.PublicGameList", { +onActivate: function() { +Nav.bar( +['Main', 'EffectGames.com'], +['PublicGameList', "All Public Games"] +); +Nav.title( "List of All Public Game Projects" ); +effect_api_get( 'get_site_info', { cat: 'all_pub_games' }, [this, 'receive_all_pub_games'], { } ); +this.div.innerHTML = loading_image(); +return true; +}, +onDeactivate: function() { +this.div.innerHTML = ''; +return true; +}, +receive_all_pub_games: function(response, tx) { +var html = ''; +html += '

      List of All Public Game Projects

      '; +html += '
      This is the complete list of public games currently being built by our users, presented in alphabetical order. Maybe they could use some help! Check out the game project pages and see (requires user account).
      '; +if (response.Data && response.Data.Games && response.Data.Games.Game) { +var games = always_array( response.Data.Games.Game ); +for (var idx = 0, len = games.length; idx < len; idx++) { +var game = games[idx]; +html += '
      ' + +(game.Logo ? +user_image_thumbnail(game.Logo, 80, 60) : +'' +) + '
      ' + ww_fit_box(game.Title, 80, 2, session.em_width, 1) + '
      '; +} +html += '
      '; +} +else { +html += 'No public games found! Why not create a new one?'; +} +this.div.innerHTML = html; +} +} ); +Class.subclass( Effect.Page, "Effect.Page.Search", { +onActivate: function(args) { +if (!args) args = {}; +var search_text = args.q; +var start = args.s || 0; +if (!start) start = 0; +var title = 'Search results for "'+search_text+'"'; +Nav.bar( +['Main', 'EffectGames.com'], +['Search?q=' + escape(search_text), "Search Results"] +); +Nav.title( title ); +this.last_search_text = search_text; +$('d_article_search').innerHTML = loading_image(); +load_script( 'http://www.google.com/uds/GwebSearch?callback=receive_google_search_results&context=0&lstkp=0&rsz=large&hl=en&source=gsc&gss=.com&sig=&q='+escape(search_text)+'%20site%3Ahttp%3A%2F%2Fwww.effectgames.com%2F&key=notsupplied&v=1.0&start='+start+'&nocache=' + (new Date()).getTime() ); +$('h_article_search').innerHTML = title; +return true; +}, +onDeactivate: function(new_page) { +$('fe_search_bar').value = ''; +$('d_article_search').innerHTML = ''; +return true; +} +} ); +function do_search_bar() { +var search_text = $('fe_search_bar').value; +if (search_text.length) { +Nav.go('Search?q=' + escape(search_text)); +} +} +function receive_google_search_results(context, response) { +var html = ''; +html += '
      Powered by
      '; +if (response.results.length) { +for (var idx = 0, len = response.results.length; idx < len; idx++) { +var row = response.results[idx]; +var url = row.unescapedUrl.replace(/^.+article\.psp\.html/, '#Article'); +html += '
      '; +html += ''; +html += '
      ' + row.content + '
      '; +html += '
      '; +} +} +else { +html += 'No results found.'; +} +if (response.cursor.pages) { +html += '
      Page: '; +for (var idx = 0, len = response.cursor.pages.length; idx < len; idx++) { +html += ''; +var page = response.cursor.pages[idx]; +var url = '#Search?q=' + escape($P('Search').last_search_text) + '&s=' + page.start; +if (response.cursor.currentPageIndex != idx) html += ''; +else html += ''; +html += page.label; +if (response.cursor.currentPageIndex != idx) html += ''; +else html += ''; +html += ''; +} +html += '
      '; +} +$('d_article_search').innerHTML = html; +} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/node_modules/socket.io/node_modules/socket.io-client/node_modules/active-x-obfuscator/node_modules/zeparser/index.js b/node_modules/socket.io/node_modules/socket.io-client/node_modules/active-x-obfuscator/node_modules/zeparser/index.js new file mode 100644 index 0000000..8b164a4 --- /dev/null +++ b/node_modules/socket.io/node_modules/socket.io-client/node_modules/active-x-obfuscator/node_modules/zeparser/index.js @@ -0,0 +1 @@ +exports.ZeParser = require('./ZeParser').ZeParser; diff --git a/node_modules/socket.io/node_modules/socket.io-client/node_modules/active-x-obfuscator/node_modules/zeparser/package.json b/node_modules/socket.io/node_modules/socket.io-client/node_modules/active-x-obfuscator/node_modules/zeparser/package.json new file mode 100644 index 0000000..66a8ba2 --- /dev/null +++ b/node_modules/socket.io/node_modules/socket.io-client/node_modules/active-x-obfuscator/node_modules/zeparser/package.json @@ -0,0 +1,28 @@ +{ + "author": { + "name": "Peter van der Zee", + "url": "http://qfox.nl/" + }, + "name": "zeparser", + "description": "My JavaScript parser", + "version": "0.0.5", + "homepage": "https://github.com/qfox/ZeParser/", + "repository": { + "type": "git", + "url": "git://github.com/qfox/ZeParser.git" + }, + "main": "./index", + "engines": { + "node": "*" + }, + "dependencies": {}, + "devDependencies": {}, + "readme": "This is a JavaScript parser.\nhttp://github.com/qfox/ZeParser\n(c) Peter van der Zee\nhttp://qfox.nl\n\n\nBenchmark\nhttp://qfox.github.com/ZeParser/benchmark.html\n\nThe Tokenizer is used by the parser. The parser tells the tokenizer whether the next token may be a regular expression or not. Without the parser, the tokenizer will fail if regular expression literals are used in the input.\n\nUsage:\nZeParser.parse(input);\n\nReturns a \"parse tree\" which is a tree of an array of arrays with tokens (regular objects) as leafs. Meta information embedded as properties (of the arrays and the tokens).\n\nZeParser.createParser(input);\n\nReturns a new ZeParser instance which has already parsed the input. Amongst others, the ZeParser instance will have the properties .tree, .wtree and .btree.\n\n.tree is the parse tree mentioned above.\n.wtree (\"white\" tree) is a regular array with all the tokens encountered (including whitespace, line terminators and comments)\n.btree (\"black\" tree) is just like .wtree but without the whitespace, line terminators and comments. This is what the specification would call the \"token stream\".\n\nI'm aware that the naming convention is a bit awkward. It's a tradeoff between short and descriptive. The streams are used quite often in the analysis.\n\nTokens are regular objects with several properties. Amongst them are .tokposw and .tokposw, they correspond with their own position in the .wtree and .btree.\n\nThe parser has two modes for parsing: simple and extended. Simple mode is mainly for just parsing and returning the streams and a simple parse tree. There's not so much meta information here and this mode is mainly built for speed. The other mode has everything required for Zeon to do its job. This mode is toggled by the instance property .ast, which is true by default :)\n\nNon-factory example:\n\nvar input = \"foo\";\nvar tree = []; // this should probably be refactored away some day\nvar tokenizer = new Tokenizer(input); // dito\nvar parser = new ZeParser(input, tokenizer, tree);\nparser.parse(); // returns tree..., should never throw errors\n", + "readmeFilename": "README", + "_id": "zeparser@0.0.5", + "dist": { + "shasum": "35fec2dafd5c59e91b89cd2ae44780089219e9e5" + }, + "_from": "zeparser@0.0.5", + "_resolved": "https://registry.npmjs.org/zeparser/-/zeparser-0.0.5.tgz" +} diff --git a/node_modules/socket.io/node_modules/socket.io-client/node_modules/active-x-obfuscator/node_modules/zeparser/test-parser.html b/node_modules/socket.io/node_modules/socket.io-client/node_modules/active-x-obfuscator/node_modules/zeparser/test-parser.html new file mode 100644 index 0000000..0c37bb3 --- /dev/null +++ b/node_modules/socket.io/node_modules/socket.io-client/node_modules/active-x-obfuscator/node_modules/zeparser/test-parser.html @@ -0,0 +1,26 @@ + + + + Parser Test Suite Page + + + + (c) qfox.nl
      + Parser test suite
      +
      Running...
      + + + + + + + \ No newline at end of file diff --git a/node_modules/socket.io/node_modules/socket.io-client/node_modules/active-x-obfuscator/node_modules/zeparser/test-tokenizer.html b/node_modules/socket.io/node_modules/socket.io-client/node_modules/active-x-obfuscator/node_modules/zeparser/test-tokenizer.html new file mode 100644 index 0000000..141b5c1 --- /dev/null +++ b/node_modules/socket.io/node_modules/socket.io-client/node_modules/active-x-obfuscator/node_modules/zeparser/test-tokenizer.html @@ -0,0 +1,23 @@ + + + + Tokenizer Test Suite Page + + + + (c) qfox.nl
      + + + + + + \ No newline at end of file diff --git a/node_modules/socket.io/node_modules/socket.io-client/node_modules/active-x-obfuscator/node_modules/zeparser/tests.js b/node_modules/socket.io/node_modules/socket.io-client/node_modules/active-x-obfuscator/node_modules/zeparser/tests.js new file mode 100644 index 0000000..8a4138b --- /dev/null +++ b/node_modules/socket.io/node_modules/socket.io-client/node_modules/active-x-obfuscator/node_modules/zeparser/tests.js @@ -0,0 +1,478 @@ +// tests for both the tokenizer and parser. Parser test results could be checked tighter. +// api: [input, token-output-count, ?regex-hints, desc] +// regex-hints are for tokenizer, will tell for each token whether it might parse regex or not (parser's job) +var Tests = [ + +["var abc;", 4, "Variable Declaration"], +["var abc = 5;", 8, "Variable Declaration, Assignment"], +["/* */", 1, "Block Comment"], +["/** **/", 1, "JSDoc-style Comment"], +["var f = function(){;};", 13, "Assignment, Function Expression"], +["hi; // moo", 4, "Trailing Line Comment"], +["hi; // moo\n;", 6, "Trailing Line Comment, Linefeed, `;`"], +["var varwithfunction;", 4, "Variable Declaration, Identifier Containing Reserved Words, `;`"], +["a + b;", 6, "Addition/Concatenation"], + +["'a'", 1, "Single-Quoted String"], +["'a';", 2, "Single-Quoted String, `;`"], // Taken from the parser test suite. + +["'a\\n'", 1, "Single-Quoted String With Escaped Linefeed"], +["'a\\n';", 2, "Single-Quoted String With Escaped Linefeed, `;`"], // Taken from the parser test suite. + +["\"a\"", 1, "Double-Quoted String"], +["\"a\";", 2, "Double-Quoted String, `;`"], // Taken from the parser test suite. + +["\"a\\n\"", 1, "Double-Quoted String With Escaped Linefeed"], +["\"a\\n\";", 2, "Double-Quoted String With Escaped Linefeed, `;`"], // Taken from the parser test suite. + +["500", 1, "Integer"], +["500;", 2, "Integer, `;`"], // Taken from the parser test suite. + +["500.", 1, "Double With Trailing Decimal Point"], +["500.;", 2, "Double With Trailing Decimal Point"], // Taken from the parser test suite. + +["500.432", 1, "Double With Decimal Component"], +["500.432;", 2, "Double With Decimal Component, `;`"], // Taken from the parser test suite. + +[".432432", 1, "Number, 0 < Double < 1"], +[".432432;", 2, "Number, 0 < Double < 1, `;`"], // Taken from the parser test suite. + +["(a,b,c)", 7, "Parentheses, Comma-separated identifiers"], +["(a,b,c);", 8, "Parentheses, Comma-separated identifiers, `;`"], // Taken from the parser test suite. + +["[1,2,abc]", 7, "Array literal"], +["[1,2,abc];", 8, "Array literal, `;`"], // Taken from the parser test suite. + +["{a:1,\"b\":2,c:c}", 13, "Object literal"], +["var o = {a:1,\"b\":2,c:c};", 20, "Assignment, Object Literal, `;`"], // Taken from the parser test suite. + +["var x;\nvar y;", 9, "2 Variable Declarations, Multiple lines"], +["var x;\nfunction n(){ }", 13, "Variable, Linefeed, Function Declaration"], +["var x;\nfunction n(abc){ }", 14, "Variable, Linefeed, Function Declaration With One Argument"], +["var x;\nfunction n(abc, def){ }", 17, "Variable, Linefeed, Function Declaration With Multiple Arguments"], +["function n(){ \"hello\"; }", 11, "Function Declaration, Body"], + +["/a/;", 2, [true, false], "RegExp Literal, `;`"], +["/a/b;", 2, [true, true], "RegExp Literal, Flags, `;`"], +["++x;", 3, "Unary Increment, Prefix, `;`"], +[" / /;", 3, [true, true, false], "RegExp, Leading Whitespace, `;`"], +["/ / / / /", 5, [true, false, false, false, true], "RegExp Containing One Space, Space, Division, Space, RegExp Containing One Space"], + +// Taken from the parser test suite. + +["\"var\";", 2, "Keyword String, `;`"], +["\"variable\";", 2, "String Beginning With Keyword, `;`"], +["\"somevariable\";", 2, "String Containing Keyword, `;`"], +["\"somevar\";", 2, "String Ending With Keyword, `;`"], + +["var varwithfunction;", 4, "Keywords should not be matched in identifiers"], + +["var o = {a:1};", 12, "Object Literal With Unquoted Property"], +["var o = {\"b\":2};", 12, "Object Literal With Quoted Property"], +["var o = {c:c};", 12, "Object Literal With Equivalent Property Name and Identifier"], + +["/a/ / /b/;", 6, [true, true, false, false, true, false], "RegExp, Division, RegExp, `;`"], +["a/b/c;", 6, "Triple Division (Identifier / Identifier / Identifier)"], + +["+function(){/regex/;};", 9, [false, false, false, false, false, true, false, false, false], "Unary `+` Operator, Function Expression Containing RegExp and Semicolon, `;`"], + +// Line Terminators. +["\r\n", 1, "CRLF Line Ending = 1 Linefeed"], +["\r", 1, "CR Line Ending = 1 Linefeed"], +["\n", 1, "LF Line Ending = 1 Linefeed"], +["\r\n\n\u2028\u2029\r", 5, "Various Line Terminators"], + +// Whitespace. +["a \t\u000b\u000c\u00a0\uFFFFb", 8, "Whitespace"], + +// Comments. +["//foo!@#^&$1234\nbar;", 4, "Line Comment, Linefeed, Identifier, `;`"], +["/* abcd!@#@$* { } && null*/;", 2, "Single-Line Block Comment, `;`"], +["/*foo\nbar*/;", 2, "Multi-Line Block Comment, `;`"], +["/*x*x*/;", 2, "Block Comment With Asterisks, `;`"], +["/**/;", 2, "Empty Comment, `;`"], + +// Identifiers. +["x;", 2, "Single-Character Identifier, `;`"], +["_x;", 2, "Identifier With Leading `_`, `;`"], +["xyz;", 2, "Identifier With Letters Only, `;`"], +["$x;", 2, "Identifier With Leading `$`, `;`"], +["x5;", 2, "Identifier With Number As Second Character, `;`"], +["x_y;", 2, "Identifier Containing `_`, `;`"], +["x+5;", 4, "Identifier, Binary `+` Operator, Identifier, `;`"], +["xyz123;", 2, "Alphanumeric Identifier, `;`"], +["x1y1z1;", 2, "Alternating Alphanumeric Identifier, `;`"], +["foo\\u00d8bar;", 2, "Identifier With Unicode Escape Sequence (`\\uXXXX`), `;`"], +["f\u00d8\u00d8bar;", 2, "Identifier With Embedded Unicode Character"], + +// Numbers. +["5;", 2, "Integer, `;`"], +["5.5;", 2, "Double, `;`"], +["0;", 2, "Integer Zero, `;`"], +["0.0;", 2, "Double Zero, `;`"], +["0.001;", 2, "0 < Decimalized Double < 1, `;`"], +["1.e2;", 2, "Integer With Decimal and Exponential Component (`e`), `;`"], +["1.e-2;", 2, "Integer With Decimal and Negative Exponential Component, `;`"], +["1.E2;", 2, "Integer With Decimal and Uppercase Exponential Component (`E`), `;`"], +["1.E-2;", 2, "Integer With Decimal and Uppercase Negative Exponential Component, `;`"], +[".5;", 2, "0 < Double < 1, `;`"], +[".5e3;", 2, "(0 < Double < 1) With Exponential Component"], +[".5e-3;", 2, "(0 < Double < 1) With Negative Exponential Component"], +["0.5e3;", 2, "(0 < Decimalized Double < 1) With Exponential Component"], +["55;", 2, "Two-Digit Integer, `;`"], +["123;", 2, "Three-Digit Integer, `;`"], +["55.55;", 2, "Two-Digit Double, `;`"], +["55.55e10;", 2, "Two-Digit Double With Exponential Component, `;`"], +["123.456;", 2, "Three-Digit Double, `;`"], +["1+e;", 4, "Additive Expression, `;`"], +["0x01;", 2, "Hexadecimal `1` With 1 Leading Zero, `;`"], +["0xcafe;", 2, "Hexadecimal `51966`, `;`"], +["0x12345678;", 2, "Hexadecimal `305419896`, `;`"], +["0x1234ABCD;", 2, "Hexadecimal `305441741` With Uppercase Letters, `;`"], +["0x0001;", 2, "Hexadecimal `1` with 3 Leading Zeros, `;`"], + +// Strings. +["\"foo\";", 2, "Multi-Character Double-Quoted String, `;`"], +["\"a\\n\";", 2, "Double-Quoted String Containing Linefeed, `;`"], +["\'foo\';", 2, "Single-Quoted String, `;`"], +["'a\\n';", 2, "Single-Quoted String Containing Linefeed, `;`"], +["\"x\";", 2, "Single-Character Double-Quoted String, `;`"], +["'';", 2, "Empty Single-Quoted String, `;`"], +["\"foo\\tbar\";", 2, "Double-Quoted String With Tab Character, `;`"], +["\"!@#$%^&*()_+{}[]\";", 2, "Double-Quoted String Containing Punctuators, `;`"], +["\"/*test*/\";", 2, "Double-Quoted String Containing Block Comment, `;`"], +["\"//test\";", 2, "Double-Quoted String Containing Line Comment, `;`"], +["\"\\\\\";", 2, "Double-Quoted String Containing Reverse Solidus, `;`"], +["\"\\u0001\";", 2, "Double-Quoted String Containing Numeric Unicode Escape Sequence, `;`"], +["\"\\uFEFF\";", 2, "Double-Quoted String Containing Alphanumeric Unicode Escape Sequence, `;`"], +["\"\\u10002\";", 2, "Double-Quoted String Containing 5-Digit Unicode Escape Sequence, `;`"], +["\"\\x55\";", 2, "Double-Quoted String Containing Hex Escape Sequence, `;`"], +["\"\\x55a\";", 2, "Double-Quoted String Containing Hex Escape Sequence and Additional Character, `;`"], +["\"a\\\\nb\";", 2, "Double-Quoted String Containing Escaped Linefeed, `;`"], +["\";\"", 1, "Double-Quoted String Containing `;`"], +["\"a\\\nb\";", 2, "Double-Quoted String Containing Reverse Solidus and Linefeed, `;`"], +["'\\\\'+ ''", 4, "Single-Quoted String Containing Reverse Solidus, `+`, Empty Single-Quoted String"], + +// `null`, `true`, and `false`. +["null;", 2, "`null`, `;`"], +["true;", 2, "`true`, `;`"], +["false;", 2, "`false`, `;`"], + +// RegExps +["/a/;", 2, [true, true], "Single-Character RegExp, `;`"], +["/abc/;", 2, [true, true], "Multi-Character RegExp, `;`"], +["/abc[a-z]*def/g;", 2, [true, true], "RegExp Containing Character Range and Quantifier, `;`"], +["/\\b/;", 2, [true, true], "RegExp Containing Control Character, `;`"], +["/[a-zA-Z]/;", 2, [true, true], "RegExp Containing Extended Character Range, `;`"], +["/foo(.*)/g;", 2, [true, false], "RegExp Containing Capturing Group and Quantifier, `;`"], + +// Array Literals. +["[];", 3, "Empty Array, `;`"], +["[\b\n\f\r\t\x20];", 9, "Array Containing Whitespace, `;`"], +["[1];", 4, "Array Containing 1 Element, `;`"], +["[1,2];", 6, "Array Containing 2 Elements, `;`"], +["[1,2,,];", 8, "Array Containing 2 Elisions, `;`"], +["[1,2,3];", 8, "Array Containing 3 Elements, `;`"], +["[1,2,3,,,];", 11, "Array Containing 3 Elisions, `;`"], + +// Object Literals. +["({x:5});", 8, "Object Literal Containing 1 Member; `;`"], +["({x:5,y:6});", 12, "Object Literal Containing 2 Members, `;`"], +["({x:5,});", 9, "Object Literal Containing 1 Member and Trailing Comma, `;`"], +["({if:5});", 8, "Object Literal Containing Reserved Word Property Name, `;`"], +["({ get x() {42;} });", 17, "Object Literal Containing Getter, `;`"], +["({ set y(a) {1;} });", 18, "Object Literal Containing Setter, `;`"], + +// Member Expressions. +["o.m;", 4, "Dot Member Accessor, `;`"], +["o['m'];", 5, "Square Bracket Member Accessor, `;`"], +["o['n']['m'];", 8, "Nested Square Bracket Member Accessor, `;`"], +["o.n.m;", 6, "Nested Dot Member Accessor, `;`"], +["o.if;", 4, "Dot Reserved Property Name Accessor, `;`"], + +// Function Calls. +["f();", 4, "Function Call Operator, `;`"], +["f(x);", 5, "Function Call Operator With 1 Argument, `;`"], +["f(x,y);", 7, "Function Call Operator With Multiple Arguments, `;`"], +["o.m();", 6, "Dot Member Accessor, Function Call, `;`"], +["o['m']();", 7, "Square Bracket Member Accessor, Function Call, `;`"], +["o.m(x);", 7, "Dot Member Accessor, Function Call With 1 Argument, `;`"], +["o['m'](x);", 8, "Square Bracket Member Accessor, Function Call With 1 Argument, `;`"], +["o.m(x,y);", 9, "Dot Member Accessor, Function Call With 2 Arguments, `;`"], +["o['m'](x,y);", 10, "Square Bracket Member Accessor, Function Call With 2 Arguments, `;`"], +["f(x)(y);", 8, "Nested Function Call With 1 Argument Each, `;`"], +["f().x;", 6, "Function Call, Dot Member Accessor, `;`"], + +// `eval` Function. +["eval('x');", 5, "`eval` Invocation With 1 Argument, `;`"], +["(eval)('x');", 7, "Direct `eval` Call Example, `;`"], +["(1,eval)('x');", 9, "Indirect `eval` Call Example, `;`"], +["eval(x,y);", 7, "`eval` Invocation With 2 Arguments, `;`"], + +// `new` Operator. +["new f();", 6, "`new` Operator, Function Call, `;`"], +["new o;", 4, "`new` Operator, Identifier, `;`"], +["new o.m;", 6, "`new` Operator, Dot Member Accessor, `;`"], +["new o.m(x);", 9, "`new` Operator, Dot Member Accessor, Function Call With 1 Argument, `;`"], +["new o.m(x,y);", 11, "``new` Operator, Dot Member Accessor, Function Call With 2 Arguments , `;`"], + +// Prefix and Postfix Increment. +["++x;", 3, "Prefix Increment, Identifier, `;`"], +["x++;", 3, "Identifier, Postfix Increment, `;`"], +["--x;", 3, "Prefix Decrement, Identifier, `;`"], +["x--;", 3, "Postfix Decrement, Identifier, `;`"], +["x ++;", 4, "Identifier, Space, Postfix Increment, `;`"], +["x /* comment */ ++;", 6, "Identifier, Block Comment, Postfix Increment, `;`"], +["++ /* comment */ x;", 6, "Prefix Increment, Block Comment, Identifier, `;`"], + +// Unary Operators. +["delete x;", 4, "`delete` Operator, Space, Identifier, `;`"], +["void x;", 4, "`void` Operator, Space, Identifier, `;`"], +["typeof x;", 4, "`typeof` Operator, Space, Identifier, `;`"], +["+x;", 3, "Unary `+` Operator, Identifier, `;`"], +["-x;", 3, "Unary Negation Operator, Identifier, `;`"], +["~x;", 3, "Bitwise NOT Operator, Identifier, `;`"], +["!x;", 3, "Logical NOT Operator, Identifier, `;`"], + +// Comma Operator. +["x, y;", 5, "Comma Operator"], + +// Miscellaneous. +["new Date++;", 5, "`new` Operator, Identifier, Postfix Increment, `;`"], +["+x++;", 4, "Unary `+`, Identifier, Postfix Increment, `;`"], + +// Expressions. +["1 * 2;", 6, "Integer, Multiplication, Integer, `;`"], +["1 / 2;", 6, "Integer, Division, Integer, `;`"], +["1 % 2;", 6, "Integer, Modulus, Integer, `;`"], +["1 + 2;", 6, "Integer, Addition, Integer, `;`"], +["1 - 2;", 6, "Integer, Subtraction, Integer, `;`"], +["1 << 2;", 6, "Integer, Bitwise Left Shift, Integer, `;`"], +["1 >>> 2;", 6, "Integer, Bitwise Zero-fill Right Shift, Integer, `;`"], +["1 >> 2;", 6, "Integer, Bitwise Sign-Propagating Right Shift, Integer, `;`"], +["1 * 2 + 3;", 10, "Order-of-Operations Expression, `;`"], +["(1+2)*3;", 8, "Parenthesized Additive Expression, Multiplication, `;`"], +["1*(2+3);", 8, "Multiplication, Parenthesized Additive Expression, `;`"], +["xy;", 4, "Greater-Than Relational Operator, `;`"], +["x<=y;", 4, "Less-Than-or-Equal-To Relational Operator, `;`"], +["x>=y;", 4, "Greater-Than-or-Equal-To Relational Operator, `;`"], +["x instanceof y;", 6, "`instanceof` Operator, `;`"], +["x in y;", 6, "`in` Operator, `;`"], +["x&y;", 4, "Bitwise AND Operator, `;`"], +["x^y;", 4, "Bitwise XOR Operator, `;`"], +["x|y;", 4, "Bitwise OR Operator, `;`"], +["x+y>>= y;", 6, "Bitwise Zero-Fill Right Shift Assignment, `;`"], +["x <<= y;", 6, "Bitwise Left Shift Assignment, `;`"], +["x += y;", 6, "Additive Assignment, `;`"], +["x -= y;", 6, "Subtractive Assignment, `;`"], +["x *= y;", 6, "Multiplicative Assignment, `;`"], +["x /= y;", 6, "Divisive Assignment, `;`"], +["x %= y;", 6, "Modulus Assignment, `;`"], +["x >>= y;", 6, "Bitwise Sign-Propagating Right Shift Assignment, `;`"], +["x &= y;", 6, "Bitwise AND Assignment, `;`"], +["x ^= y;", 6, "Bitwise XOR Assignment, `;`"], +["x |= y;", 6, "Bitwise OR Assignment, `;`"], + +// Blocks. +["{};", 3, "Empty Block, `;`"], +["{x;};", 5, "Block Containing 1 Identifier, `;`"], +["{x;y;};", 7, "Block Containing 2 Identifiers, `;`"], + +// Variable Declarations. +["var abc;", 4, "Variable Declaration"], +["var x,y;", 6, "Comma-Separated Variable Declarations, `;`"], +["var x=1,y=2;", 10, "Comma-Separated Variable Initializations, `;`"], +["var x,y=2;", 8, "Variable Declaration, Variable Initialization, `;`"], + +// Empty Statements. +[";", 1, "Empty Statement"], +["\n;", 2, "Linefeed, `;`"], + +// Expression Statements. +["x;", 2, "Identifier, `;`"], +["5;", 2, "Integer, `;`"], +["1+2;", 4, "Additive Statement, `;`"], + +// `if...else` Statements. +["if (c) x; else y;", 13, "Space-Delimited `if...else` Statement"], +["if (c) x;", 8, "Space-Delimited `if` Statement, `;`"], +["if (c) {} else {};", 14, "Empty Block-Delimited `if...else` Statement"], +["if (c1) if (c2) s1; else s2;", 19, "Nested `if...else` Statement Without Dangling `else`"], + +// `while` and `do...while` Loops. +["do s; while (e);", 11, "Space-Delimited `do...while` Loop"], +["do { s; } while (e);", 15, "Block-Delimited `do...while` Loop"], +["while (e) s;", 8, "Space-Delimited `while` Loop"], +["while (e) { s; };", 13, "Block-Delimited `while` Loop"], + +// `for` and `for...in` Loops. +["for (;;) ;", 8, "Infinite Space-Delimited `for` Loop"], +["for (;c;x++) x;", 12, "`for` Loop: Empty Initialization Condition; Space-Delimited Body"], +["for (i;i foo(new window[(['Active'].concat('Object').join('X'))])\n```\n\n## License\n\nLicensed under the MIT license.\n\n[socket.io]: http://socket.io/\n", + "readmeFilename": "Readme.md", + "_id": "active-x-obfuscator@0.0.1", + "dist": { + "shasum": "d9c2c348132d3f2c0968006c067ab895aee2203a" + }, + "_from": "active-x-obfuscator@0.0.1", + "_resolved": "https://registry.npmjs.org/active-x-obfuscator/-/active-x-obfuscator-0.0.1.tgz" +} diff --git a/node_modules/socket.io/node_modules/socket.io-client/node_modules/active-x-obfuscator/test.js b/node_modules/socket.io/node_modules/socket.io-client/node_modules/active-x-obfuscator/test.js new file mode 100644 index 0000000..e8fc807 --- /dev/null +++ b/node_modules/socket.io/node_modules/socket.io-client/node_modules/active-x-obfuscator/test.js @@ -0,0 +1,53 @@ +var activeXObfuscator = require('./index'); +var assert = require('assert'); + +var OBFUSCATED_ACTIVE_X_OBJECT = activeXObfuscator.OBFUSCATED_ACTIVE_X_OBJECT; +var OBFUSCATED_ACTIVE_X = activeXObfuscator.OBFUSCATED_ACTIVE_X; + +var input = + "foo(new ActiveXObject('Microsoft.XMLHTTP'))"; +var expected = + "foo(new window[" + OBFUSCATED_ACTIVE_X_OBJECT + "]('Microsoft.XMLHTTP'))"; +assert.equal(activeXObfuscator(input), expected); + +var input = + "var foo = 'ActiveXObject';"; +var expected = + "var foo = " + OBFUSCATED_ACTIVE_X_OBJECT + ";"; +assert.equal(activeXObfuscator(input), expected); + +var input = + 'var foo = "ActiveXObject";'; +var expected = + "var foo = " + OBFUSCATED_ACTIVE_X_OBJECT + ";"; +assert.equal(activeXObfuscator(input), expected); + +var input = + 'var foo = o.ActiveXObject;'; +var expected = + "var foo = o[" + OBFUSCATED_ACTIVE_X_OBJECT + "];"; +assert.equal(activeXObfuscator(input), expected); + +var input = + 'var foo = "ActiveX";'; +var expected = + "var foo = " + OBFUSCATED_ACTIVE_X + ";"; +assert.equal(activeXObfuscator(input), expected); + +var input = + "var foo = 'ActiveX';"; +var expected = + "var foo = " + OBFUSCATED_ACTIVE_X + ";"; +assert.equal(activeXObfuscator(input), expected); + +var input = + "var foo; // ActiveX is cool"; +var expected = + "var foo; // Ac...eX is cool"; +assert.equal(activeXObfuscator(input), expected); + +var input = + "var foo = 'ActiveX is cool';"; +assert.throws(function() { + activeXObfuscator(input); +}, /Unknown ActiveX occurence/); diff --git a/node_modules/socket.io/node_modules/socket.io-client/node_modules/uglify-js/.npmignore b/node_modules/socket.io/node_modules/socket.io-client/node_modules/uglify-js/.npmignore new file mode 100644 index 0000000..d97eaa0 --- /dev/null +++ b/node_modules/socket.io/node_modules/socket.io-client/node_modules/uglify-js/.npmignore @@ -0,0 +1,4 @@ +.DS_Store +.tmp*~ +*.local.* +.pinf-* \ No newline at end of file diff --git a/node_modules/socket.io/node_modules/socket.io-client/node_modules/uglify-js/README.html b/node_modules/socket.io/node_modules/socket.io-client/node_modules/uglify-js/README.html new file mode 100644 index 0000000..5f37ac0 --- /dev/null +++ b/node_modules/socket.io/node_modules/socket.io-client/node_modules/uglify-js/README.html @@ -0,0 +1,981 @@ + + + + +UglifyJS – a JavaScript parser/compressor/beautifier + + + + + + + + + + + + + +
      + +
      + +
      +

      UglifyJS – a JavaScript parser/compressor/beautifier

      + + + + +
      +

      1 UglifyJS — a JavaScript parser/compressor/beautifier

      +
      + + +

      +This package implements a general-purpose JavaScript +parser/compressor/beautifier toolkit. It is developed on NodeJS, but it +should work on any JavaScript platform supporting the CommonJS module system +(and if your platform of choice doesn't support CommonJS, you can easily +implement it, or discard the exports.* lines from UglifyJS sources). +

      +

      +The tokenizer/parser generates an abstract syntax tree from JS code. You +can then traverse the AST to learn more about the code, or do various +manipulations on it. This part is implemented in parse-js.js and it's a +port to JavaScript of the excellent parse-js Common Lisp library from Marijn Haverbeke. +

      +

      +( See cl-uglify-js if you're looking for the Common Lisp version of +UglifyJS. ) +

      +

      +The second part of this package, implemented in process.js, inspects and +manipulates the AST generated by the parser to provide the following: +

      +
        +
      • ability to re-generate JavaScript code from the AST. Optionally + indented—you can use this if you want to “beautify” a program that has + been compressed, so that you can inspect the source. But you can also run + our code generator to print out an AST without any whitespace, so you + achieve compression as well. + +
      • +
      • shorten variable names (usually to single characters). Our mangler will + analyze the code and generate proper variable names, depending on scope + and usage, and is smart enough to deal with globals defined elsewhere, or + with eval() calls or with{} statements. In short, if eval() or + with{} are used in some scope, then all variables in that scope and any + variables in the parent scopes will remain unmangled, and any references + to such variables remain unmangled as well. + +
      • +
      • various small optimizations that may lead to faster code but certainly + lead to smaller code. Where possible, we do the following: + +
          +
        • foo["bar"] ==> foo.bar + +
        • +
        • remove block brackets {} + +
        • +
        • join consecutive var declarations: + var a = 10; var b = 20; ==> var a=10,b=20; + +
        • +
        • resolve simple constant expressions: 1 +2 * 3 ==> 7. We only do the + replacement if the result occupies less bytes; for example 1/3 would + translate to 0.333333333333, so in this case we don't replace it. + +
        • +
        • consecutive statements in blocks are merged into a sequence; in many + cases, this leaves blocks with a single statement, so then we can remove + the block brackets. + +
        • +
        • various optimizations for IF statements: + +
            +
          • if (foo) bar(); else baz(); ==> foo?bar():baz(); +
          • +
          • if (!foo) bar(); else baz(); ==> foo?baz():bar(); +
          • +
          • if (foo) bar(); ==> foo&&bar(); +
          • +
          • if (!foo) bar(); ==> foo||bar(); +
          • +
          • if (foo) return bar(); else return baz(); ==> return foo?bar():baz(); +
          • +
          • if (foo) return bar(); else something(); ==> {if(foo)return bar();something()} + +
          • +
          + +
        • +
        • remove some unreachable code and warn about it (code that follows a + return, throw, break or continue statement, except + function/variable declarations). + +
        • +
        • act a limited version of a pre-processor (c.f. the pre-processor of + C/C++) to allow you to safely replace selected global symbols with + specified values. When combined with the optimisations above this can + make UglifyJS operate slightly more like a compilation process, in + that when certain symbols are replaced by constant values, entire code + blocks may be optimised away as unreachable. +
        • +
        + +
      • +
      + + + +
      + +
      +

      1.1 Unsafe transformations

      +
      + + +

      +The following transformations can in theory break code, although they're +probably safe in most practical cases. To enable them you need to pass the +--unsafe flag. +

      + +
      + +
      +

      1.1.1 Calls involving the global Array constructor

      +
      + + +

      +The following transformations occur: +

      + + + +
      new Array(1, 2, 3, 4)  => [1,2,3,4]
      +Array(a, b, c)         => [a,b,c]
      +new Array(5)           => Array(5)
      +new Array(a)           => Array(a)
      +
      + + +

      +These are all safe if the Array name isn't redefined. JavaScript does allow +one to globally redefine Array (and pretty much everything, in fact) but I +personally don't see why would anyone do that. +

      +

      +UglifyJS does handle the case where Array is redefined locally, or even +globally but with a function or var declaration. Therefore, in the +following cases UglifyJS doesn't touch calls or instantiations of Array: +

      + + + +
      // case 1.  globally declared variable
      +  var Array;
      +  new Array(1, 2, 3);
      +  Array(a, b);
      +
      +  // or (can be declared later)
      +  new Array(1, 2, 3);
      +  var Array;
      +
      +  // or (can be a function)
      +  new Array(1, 2, 3);
      +  function Array() { ... }
      +
      +// case 2.  declared in a function
      +  (function(){
      +    a = new Array(1, 2, 3);
      +    b = Array(5, 6);
      +    var Array;
      +  })();
      +
      +  // or
      +  (function(Array){
      +    return Array(5, 6, 7);
      +  })();
      +
      +  // or
      +  (function(){
      +    return new Array(1, 2, 3, 4);
      +    function Array() { ... }
      +  })();
      +
      +  // etc.
      +
      + + +
      + +
      + +
      +

      1.1.2 obj.toString() ==> obj+“”

      +
      + + +
      +
      + +
      + +
      +

      1.2 Install (NPM)

      +
      + + +

      +UglifyJS is now available through NPM — npm install uglify-js should do +the job. +

      +
      + +
      + +
      +

      1.3 Install latest code from GitHub

      +
      + + + + + +
      ## clone the repository
      +mkdir -p /where/you/wanna/put/it
      +cd /where/you/wanna/put/it
      +git clone git://github.com/mishoo/UglifyJS.git
      +
      +## make the module available to Node
      +mkdir -p ~/.node_libraries/
      +cd ~/.node_libraries/
      +ln -s /where/you/wanna/put/it/UglifyJS/uglify-js.js
      +
      +## and if you want the CLI script too:
      +mkdir -p ~/bin
      +cd ~/bin
      +ln -s /where/you/wanna/put/it/UglifyJS/bin/uglifyjs
      +  # (then add ~/bin to your $PATH if it's not there already)
      +
      + + +
      + +
      + +
      +

      1.4 Usage

      +
      + + +

      +There is a command-line tool that exposes the functionality of this library +for your shell-scripting needs: +

      + + + +
      uglifyjs [ options... ] [ filename ]
      +
      + + +

      +filename should be the last argument and should name the file from which +to read the JavaScript code. If you don't specify it, it will read code +from STDIN. +

      +

      +Supported options: +

      +
        +
      • -b or --beautify — output indented code; when passed, additional + options control the beautifier: + +
          +
        • -i N or --indent N — indentation level (number of spaces) + +
        • +
        • -q or --quote-keys — quote keys in literal objects (by default, + only keys that cannot be identifier names will be quotes). + +
        • +
        + +
      • +
      • --ascii — pass this argument to encode non-ASCII characters as + \uXXXX sequences. By default UglifyJS won't bother to do it and will + output Unicode characters instead. (the output is always encoded in UTF8, + but if you pass this option you'll only get ASCII). + +
      • +
      • -nm or --no-mangle — don't mangle names. + +
      • +
      • -nmf or --no-mangle-functions – in case you want to mangle variable + names, but not touch function names. + +
      • +
      • -ns or --no-squeeze — don't call ast_squeeze() (which does various + optimizations that result in smaller, less readable code). + +
      • +
      • -mt or --mangle-toplevel — mangle names in the toplevel scope too + (by default we don't do this). + +
      • +
      • --no-seqs — when ast_squeeze() is called (thus, unless you pass + --no-squeeze) it will reduce consecutive statements in blocks into a + sequence. For example, "a = 10; b = 20; foo();" will be written as + "a=10,b=20,foo();". In various occasions, this allows us to discard the + block brackets (since the block becomes a single statement). This is ON + by default because it seems safe and saves a few hundred bytes on some + libs that I tested it on, but pass --no-seqs to disable it. + +
      • +
      • --no-dead-code — by default, UglifyJS will remove code that is + obviously unreachable (code that follows a return, throw, break or + continue statement and is not a function/variable declaration). Pass + this option to disable this optimization. + +
      • +
      • -nc or --no-copyright — by default, uglifyjs will keep the initial + comment tokens in the generated code (assumed to be copyright information + etc.). If you pass this it will discard it. + +
      • +
      • -o filename or --output filename — put the result in filename. If + this isn't given, the result goes to standard output (or see next one). + +
      • +
      • --overwrite — if the code is read from a file (not from STDIN) and you + pass --overwrite then the output will be written in the same file. + +
      • +
      • --ast — pass this if you want to get the Abstract Syntax Tree instead + of JavaScript as output. Useful for debugging or learning more about the + internals. + +
      • +
      • -v or --verbose — output some notes on STDERR (for now just how long + each operation takes). + +
      • +
      • -d SYMBOL[=VALUE] or --define SYMBOL[=VALUE] — will replace + all instances of the specified symbol where used as an identifier + (except where symbol has properly declared by a var declaration or + use as function parameter or similar) with the specified value. This + argument may be specified multiple times to define multiple + symbols - if no value is specified the symbol will be replaced with + the value true, or you can specify a numeric value (such as + 1024), a quoted string value (such as ="object"= or + ='https://github.com'), or the name of another symbol or keyword (such as =null or document). + This allows you, for example, to assign meaningful names to key + constant values but discard the symbolic names in the uglified + version for brevity/efficiency, or when used wth care, allows + UglifyJS to operate as a form of conditional compilation + whereby defining appropriate values may, by dint of the constant + folding and dead code removal features above, remove entire + superfluous code blocks (e.g. completely remove instrumentation or + trace code for production use). + Where string values are being defined, the handling of quotes are + likely to be subject to the specifics of your command shell + environment, so you may need to experiment with quoting styles + depending on your platform, or you may find the option + --define-from-module more suitable for use. + +
      • +
      • -define-from-module SOMEMODULE — will load the named module (as + per the NodeJS require() function) and iterate all the exported + properties of the module defining them as symbol names to be defined + (as if by the --define option) per the name of each property + (i.e. without the module name prefix) and given the value of the + property. This is a much easier way to handle and document groups of + symbols to be defined rather than a large number of --define + options. + +
      • +
      • --unsafe — enable other additional optimizations that are known to be + unsafe in some contrived situations, but could still be generally useful. + For now only these: + +
          +
        • foo.toString() ==> foo+"" +
        • +
        • new Array(x,…) ==> [x,…] +
        • +
        • new Array(x) ==> Array(x) + +
        • +
        + +
      • +
      • --max-line-len (default 32K characters) — add a newline after around + 32K characters. I've seen both FF and Chrome croak when all the code was + on a single line of around 670K. Pass –max-line-len 0 to disable this + safety feature. + +
      • +
      • --reserved-names — some libraries rely on certain names to be used, as + pointed out in issue #92 and #81, so this option allow you to exclude such + names from the mangler. For example, to keep names require and $super + intact you'd specify –reserved-names "require,$super". + +
      • +
      • --inline-script – when you want to include the output literally in an + HTML <script> tag you can use this option to prevent </script from + showing up in the output. + +
      • +
      • --lift-vars – when you pass this, UglifyJS will apply the following + transformations (see the notes in API, ast_lift_variables): + +
          +
        • put all var declarations at the start of the scope +
        • +
        • make sure a variable is declared only once +
        • +
        • discard unused function arguments +
        • +
        • discard unused inner (named) functions +
        • +
        • finally, try to merge assignments into that one var declaration, if + possible. +
        • +
        + +
      • +
      + + + +
      + +
      +

      1.4.1 API

      +
      + + +

      +To use the library from JavaScript, you'd do the following (example for +NodeJS): +

      + + + +
      var jsp = require("uglify-js").parser;
      +var pro = require("uglify-js").uglify;
      +
      +var orig_code = "... JS code here";
      +var ast = jsp.parse(orig_code); // parse code and get the initial AST
      +ast = pro.ast_mangle(ast); // get a new AST with mangled names
      +ast = pro.ast_squeeze(ast); // get an AST with compression optimizations
      +var final_code = pro.gen_code(ast); // compressed code here
      +
      + + +

      +The above performs the full compression that is possible right now. As you +can see, there are a sequence of steps which you can apply. For example if +you want compressed output but for some reason you don't want to mangle +variable names, you would simply skip the line that calls +pro.ast_mangle(ast). +

      +

      +Some of these functions take optional arguments. Here's a description: +

      +
        +
      • jsp.parse(code, strict_semicolons) – parses JS code and returns an AST. + strict_semicolons is optional and defaults to false. If you pass + true then the parser will throw an error when it expects a semicolon and + it doesn't find it. For most JS code you don't want that, but it's useful + if you want to strictly sanitize your code. + +
      • +
      • pro.ast_lift_variables(ast) – merge and move var declarations to the + scop of the scope; discard unused function arguments or variables; discard + unused (named) inner functions. It also tries to merge assignments + following the var declaration into it. + +

        + If your code is very hand-optimized concerning var declarations, this + lifting variable declarations might actually increase size. For me it + helps out. On jQuery it adds 865 bytes (243 after gzip). YMMV. Also + note that (since it's not enabled by default) this operation isn't yet + heavily tested (please report if you find issues!). +

        +

        + Note that although it might increase the image size (on jQuery it gains + 865 bytes, 243 after gzip) it's technically more correct: in certain + situations, dead code removal might drop variable declarations, which + would not happen if the variables are lifted in advance. +

        +

        + Here's an example of what it does: +

      • +
      + + + + + +
      function f(a, b, c, d, e) {
      +    var q;
      +    var w;
      +    w = 10;
      +    q = 20;
      +    for (var i = 1; i < 10; ++i) {
      +        var boo = foo(a);
      +    }
      +    for (var i = 0; i < 1; ++i) {
      +        var boo = bar(c);
      +    }
      +    function foo(){ ... }
      +    function bar(){ ... }
      +    function baz(){ ... }
      +}
      +
      +// transforms into ==>
      +
      +function f(a, b, c) {
      +    var i, boo, w = 10, q = 20;
      +    for (i = 1; i < 10; ++i) {
      +        boo = foo(a);
      +    }
      +    for (i = 0; i < 1; ++i) {
      +        boo = bar(c);
      +    }
      +    function foo() { ... }
      +    function bar() { ... }
      +}
      +
      + + +
        +
      • pro.ast_mangle(ast, options) – generates a new AST containing mangled + (compressed) variable and function names. It supports the following + options: + +
          +
        • toplevel – mangle toplevel names (by default we don't touch them). +
        • +
        • except – an array of names to exclude from compression. +
        • +
        • defines – an object with properties named after symbols to + replace (see the --define option for the script) and the values + representing the AST replacement value. + +
        • +
        + +
      • +
      • pro.ast_squeeze(ast, options) – employs further optimizations designed + to reduce the size of the code that gen_code would generate from the + AST. Returns a new AST. options can be a hash; the supported options + are: + +
          +
        • make_seqs (default true) which will cause consecutive statements in a + block to be merged using the "sequence" (comma) operator + +
        • +
        • dead_code (default true) which will remove unreachable code. + +
        • +
        + +
      • +
      • pro.gen_code(ast, options) – generates JS code from the AST. By + default it's minified, but using the options argument you can get nicely + formatted output. options is, well, optional :-) and if you pass it it + must be an object and supports the following properties (below you can see + the default values): + +
          +
        • beautify: false – pass true if you want indented output +
        • +
        • indent_start: 0 (only applies when beautify is true) – initial + indentation in spaces +
        • +
        • indent_level: 4 (only applies when beautify is true) -- + indentation level, in spaces (pass an even number) +
        • +
        • quote_keys: false – if you pass true it will quote all keys in + literal objects +
        • +
        • space_colon: false (only applies when beautify is true) – wether + to put a space before the colon in object literals +
        • +
        • ascii_only: false – pass true if you want to encode non-ASCII + characters as \uXXXX. +
        • +
        • inline_script: false – pass true to escape occurrences of + </script in strings +
        • +
        + +
      • +
      + + +
      + +
      + +
      +

      1.4.2 Beautifier shortcoming – no more comments

      +
      + + +

      +The beautifier can be used as a general purpose indentation tool. It's +useful when you want to make a minified file readable. One limitation, +though, is that it discards all comments, so you don't really want to use it +to reformat your code, unless you don't have, or don't care about, comments. +

      +

      +In fact it's not the beautifier who discards comments — they are dumped at +the parsing stage, when we build the initial AST. Comments don't really +make sense in the AST, and while we could add nodes for them, it would be +inconvenient because we'd have to add special rules to ignore them at all +the processing stages. +

      +
      + +
      + +
      +

      1.4.3 Use as a code pre-processor

      +
      + + +

      +The --define option can be used, particularly when combined with the +constant folding logic, as a form of pre-processor to enable or remove +particular constructions, such as might be used for instrumenting +development code, or to produce variations aimed at a specific +platform. +

      +

      +The code below illustrates the way this can be done, and how the +symbol replacement is performed. +

      + + + +
      CLAUSE1: if (typeof DEVMODE === 'undefined') {
      +    DEVMODE = true;
      +}
      +
      +CLAUSE2: function init() {
      +    if (DEVMODE) {
      +        console.log("init() called");
      +    }
      +    ....
      +    DEVMODE &amp;&amp; console.log("init() complete");
      +}
      +
      +CLAUSE3: function reportDeviceStatus(device) {
      +    var DEVMODE = device.mode, DEVNAME = device.name;
      +    if (DEVMODE === 'open') {
      +        ....
      +    }
      +}
      +
      + + +

      +When the above code is normally executed, the undeclared global +variable DEVMODE will be assigned the value true (see CLAUSE1) +and so the init() function (CLAUSE2) will write messages to the +console log when executed, but in CLAUSE3 a locally declared +variable will mask access to the DEVMODE global symbol. +

      +

      +If the above code is processed by UglifyJS with an argument of +--define DEVMODE=false then UglifyJS will replace DEVMODE with the +boolean constant value false within CLAUSE1 and CLAUSE2, but it +will leave CLAUSE3 as it stands because there DEVMODE resolves to +a validly declared variable. +

      +

      +And more so, the constant-folding features of UglifyJS will recognise +that the if condition of CLAUSE1 is thus always false, and so will +remove the test and body of CLAUSE1 altogether (including the +otherwise slightly problematical statement false = true; which it +will have formed by replacing DEVMODE in the body). Similarly, +within CLAUSE2 both calls to console.log() will be removed +altogether. +

      +

      +In this way you can mimic, to a limited degree, the functionality of +the C/C++ pre-processor to enable or completely remove blocks +depending on how certain symbols are defined - perhaps using UglifyJS +to generate different versions of source aimed at different +environments +

      +

      +It is recommmended (but not made mandatory) that symbols designed for +this purpose are given names consisting of UPPER_CASE_LETTERS to +distinguish them from other (normal) symbols and avoid the sort of +clash that CLAUSE3 above illustrates. +

      +
      +
      + +
      + +
      +

      1.5 Compression – how good is it?

      +
      + + +

      +Here are updated statistics. (I also updated my Google Closure and YUI +installations). +

      +

      +We're still a lot better than YUI in terms of compression, though slightly +slower. We're still a lot faster than Closure, and compression after gzip +is comparable. +

      + + ++ + + + + + + + + + +
      FileUglifyJSUglifyJS+gzipClosureClosure+gzipYUIYUI+gzip
      jquery-1.6.2.js91001 (0:01.59)3189690678 (0:07.40)31979101527 (0:01.82)34646
      paper.js142023 (0:01.65)43334134301 (0:07.42)42495173383 (0:01.58)48785
      prototype.js88544 (0:01.09)2668086955 (0:06.97)2632692130 (0:00.79)28624
      thelib-full.js (DynarchLIB)251939 (0:02.55)72535249911 (0:09.05)72696258869 (0:01.94)76584
      + + +
      + +
      + +
      +

      1.6 Bugs?

      +
      + + +

      +Unfortunately, for the time being there is no automated test suite. But I +ran the compressor manually on non-trivial code, and then I tested that the +generated code works as expected. A few hundred times. +

      +

      +DynarchLIB was started in times when there was no good JS minifier. +Therefore I was quite religious about trying to write short code manually, +and as such DL contains a lot of syntactic hacks1 such as “foo == bar ? a += 10 : b = 20”, though the more readable version would clearly be to use +“if/else”. +

      +

      +Since the parser/compressor runs fine on DL and jQuery, I'm quite confident +that it's solid enough for production use. If you can identify any bugs, +I'd love to hear about them (use the Google Group or email me directly). +

      +
      + +
      + +
      +

      1.7 Links

      +
      + + + + + +
      + +
      + +
      +

      1.8 License

      +
      + + +

      +UglifyJS is released under the BSD license: +

      + + + +
      Copyright 2010 (c) Mihai Bazon <mihai.bazon@gmail.com>
      +Based on parse-js (http://marijn.haverbeke.nl/parse-js/).
      +
      +Redistribution and use in source and binary forms, with or without
      +modification, are permitted provided that the following conditions
      +are met:
      +
      +    * Redistributions of source code must retain the above
      +      copyright notice, this list of conditions and the following
      +      disclaimer.
      +
      +    * Redistributions in binary form must reproduce the above
      +      copyright notice, this list of conditions and the following
      +      disclaimer in the documentation and/or other materials
      +      provided with the distribution.
      +
      +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER “AS IS” AND ANY
      +EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
      +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
      +PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE
      +LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
      +OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
      +PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
      +PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
      +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
      +TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
      +THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
      +SUCH DAMAGE.
      +
      + + +
      +

      Footnotes:

      +
      +

      1 I even reported a few bugs and suggested some fixes in the original + parse-js library, and Marijn pushed fixes literally in minutes. +

      +
      +
      + +
      +
      +
      + +
      +

      Date: 2011-12-09 14:59:08 EET

      +

      Author: Mihai Bazon

      +

      Org version 7.7 with Emacs version 23

      +Validate XHTML 1.0 + +
      + + diff --git a/node_modules/socket.io/node_modules/socket.io-client/node_modules/uglify-js/README.org b/node_modules/socket.io/node_modules/socket.io-client/node_modules/uglify-js/README.org new file mode 100644 index 0000000..4d01fdf --- /dev/null +++ b/node_modules/socket.io/node_modules/socket.io-client/node_modules/uglify-js/README.org @@ -0,0 +1,574 @@ +#+TITLE: UglifyJS -- a JavaScript parser/compressor/beautifier +#+KEYWORDS: javascript, js, parser, compiler, compressor, mangle, minify, minifier +#+DESCRIPTION: a JavaScript parser/compressor/beautifier in JavaScript +#+STYLE: +#+AUTHOR: Mihai Bazon +#+EMAIL: mihai.bazon@gmail.com + +* UglifyJS --- a JavaScript parser/compressor/beautifier + +This package implements a general-purpose JavaScript +parser/compressor/beautifier toolkit. It is developed on [[http://nodejs.org/][NodeJS]], but it +should work on any JavaScript platform supporting the CommonJS module system +(and if your platform of choice doesn't support CommonJS, you can easily +implement it, or discard the =exports.*= lines from UglifyJS sources). + +The tokenizer/parser generates an abstract syntax tree from JS code. You +can then traverse the AST to learn more about the code, or do various +manipulations on it. This part is implemented in [[../lib/parse-js.js][parse-js.js]] and it's a +port to JavaScript of the excellent [[http://marijn.haverbeke.nl/parse-js/][parse-js]] Common Lisp library from [[http://marijn.haverbeke.nl/][Marijn +Haverbeke]]. + +( See [[http://github.com/mishoo/cl-uglify-js][cl-uglify-js]] if you're looking for the Common Lisp version of +UglifyJS. ) + +The second part of this package, implemented in [[../lib/process.js][process.js]], inspects and +manipulates the AST generated by the parser to provide the following: + +- ability to re-generate JavaScript code from the AST. Optionally + indented---you can use this if you want to “beautify” a program that has + been compressed, so that you can inspect the source. But you can also run + our code generator to print out an AST without any whitespace, so you + achieve compression as well. + +- shorten variable names (usually to single characters). Our mangler will + analyze the code and generate proper variable names, depending on scope + and usage, and is smart enough to deal with globals defined elsewhere, or + with =eval()= calls or =with{}= statements. In short, if =eval()= or + =with{}= are used in some scope, then all variables in that scope and any + variables in the parent scopes will remain unmangled, and any references + to such variables remain unmangled as well. + +- various small optimizations that may lead to faster code but certainly + lead to smaller code. Where possible, we do the following: + + - foo["bar"] ==> foo.bar + + - remove block brackets ={}= + + - join consecutive var declarations: + var a = 10; var b = 20; ==> var a=10,b=20; + + - resolve simple constant expressions: 1 +2 * 3 ==> 7. We only do the + replacement if the result occupies less bytes; for example 1/3 would + translate to 0.333333333333, so in this case we don't replace it. + + - consecutive statements in blocks are merged into a sequence; in many + cases, this leaves blocks with a single statement, so then we can remove + the block brackets. + + - various optimizations for IF statements: + + - if (foo) bar(); else baz(); ==> foo?bar():baz(); + - if (!foo) bar(); else baz(); ==> foo?baz():bar(); + - if (foo) bar(); ==> foo&&bar(); + - if (!foo) bar(); ==> foo||bar(); + - if (foo) return bar(); else return baz(); ==> return foo?bar():baz(); + - if (foo) return bar(); else something(); ==> {if(foo)return bar();something()} + + - remove some unreachable code and warn about it (code that follows a + =return=, =throw=, =break= or =continue= statement, except + function/variable declarations). + + - act a limited version of a pre-processor (c.f. the pre-processor of + C/C++) to allow you to safely replace selected global symbols with + specified values. When combined with the optimisations above this can + make UglifyJS operate slightly more like a compilation process, in + that when certain symbols are replaced by constant values, entire code + blocks may be optimised away as unreachable. + +** <> + +The following transformations can in theory break code, although they're +probably safe in most practical cases. To enable them you need to pass the +=--unsafe= flag. + +*** Calls involving the global Array constructor + +The following transformations occur: + +#+BEGIN_SRC js +new Array(1, 2, 3, 4) => [1,2,3,4] +Array(a, b, c) => [a,b,c] +new Array(5) => Array(5) +new Array(a) => Array(a) +#+END_SRC + +These are all safe if the Array name isn't redefined. JavaScript does allow +one to globally redefine Array (and pretty much everything, in fact) but I +personally don't see why would anyone do that. + +UglifyJS does handle the case where Array is redefined locally, or even +globally but with a =function= or =var= declaration. Therefore, in the +following cases UglifyJS *doesn't touch* calls or instantiations of Array: + +#+BEGIN_SRC js +// case 1. globally declared variable + var Array; + new Array(1, 2, 3); + Array(a, b); + + // or (can be declared later) + new Array(1, 2, 3); + var Array; + + // or (can be a function) + new Array(1, 2, 3); + function Array() { ... } + +// case 2. declared in a function + (function(){ + a = new Array(1, 2, 3); + b = Array(5, 6); + var Array; + })(); + + // or + (function(Array){ + return Array(5, 6, 7); + })(); + + // or + (function(){ + return new Array(1, 2, 3, 4); + function Array() { ... } + })(); + + // etc. +#+END_SRC + +*** =obj.toString()= ==> =obj+“”= + +** Install (NPM) + +UglifyJS is now available through NPM --- =npm install uglify-js= should do +the job. + +** Install latest code from GitHub + +#+BEGIN_SRC sh +## clone the repository +mkdir -p /where/you/wanna/put/it +cd /where/you/wanna/put/it +git clone git://github.com/mishoo/UglifyJS.git + +## make the module available to Node +mkdir -p ~/.node_libraries/ +cd ~/.node_libraries/ +ln -s /where/you/wanna/put/it/UglifyJS/uglify-js.js + +## and if you want the CLI script too: +mkdir -p ~/bin +cd ~/bin +ln -s /where/you/wanna/put/it/UglifyJS/bin/uglifyjs + # (then add ~/bin to your $PATH if it's not there already) +#+END_SRC + +** Usage + +There is a command-line tool that exposes the functionality of this library +for your shell-scripting needs: + +#+BEGIN_SRC sh +uglifyjs [ options... ] [ filename ] +#+END_SRC + +=filename= should be the last argument and should name the file from which +to read the JavaScript code. If you don't specify it, it will read code +from STDIN. + +Supported options: + +- =-b= or =--beautify= --- output indented code; when passed, additional + options control the beautifier: + + - =-i N= or =--indent N= --- indentation level (number of spaces) + + - =-q= or =--quote-keys= --- quote keys in literal objects (by default, + only keys that cannot be identifier names will be quotes). + +- =--ascii= --- pass this argument to encode non-ASCII characters as + =\uXXXX= sequences. By default UglifyJS won't bother to do it and will + output Unicode characters instead. (the output is always encoded in UTF8, + but if you pass this option you'll only get ASCII). + +- =-nm= or =--no-mangle= --- don't mangle names. + +- =-nmf= or =--no-mangle-functions= -- in case you want to mangle variable + names, but not touch function names. + +- =-ns= or =--no-squeeze= --- don't call =ast_squeeze()= (which does various + optimizations that result in smaller, less readable code). + +- =-mt= or =--mangle-toplevel= --- mangle names in the toplevel scope too + (by default we don't do this). + +- =--no-seqs= --- when =ast_squeeze()= is called (thus, unless you pass + =--no-squeeze=) it will reduce consecutive statements in blocks into a + sequence. For example, "a = 10; b = 20; foo();" will be written as + "a=10,b=20,foo();". In various occasions, this allows us to discard the + block brackets (since the block becomes a single statement). This is ON + by default because it seems safe and saves a few hundred bytes on some + libs that I tested it on, but pass =--no-seqs= to disable it. + +- =--no-dead-code= --- by default, UglifyJS will remove code that is + obviously unreachable (code that follows a =return=, =throw=, =break= or + =continue= statement and is not a function/variable declaration). Pass + this option to disable this optimization. + +- =-nc= or =--no-copyright= --- by default, =uglifyjs= will keep the initial + comment tokens in the generated code (assumed to be copyright information + etc.). If you pass this it will discard it. + +- =-o filename= or =--output filename= --- put the result in =filename=. If + this isn't given, the result goes to standard output (or see next one). + +- =--overwrite= --- if the code is read from a file (not from STDIN) and you + pass =--overwrite= then the output will be written in the same file. + +- =--ast= --- pass this if you want to get the Abstract Syntax Tree instead + of JavaScript as output. Useful for debugging or learning more about the + internals. + +- =-v= or =--verbose= --- output some notes on STDERR (for now just how long + each operation takes). + +- =-d SYMBOL[=VALUE]= or =--define SYMBOL[=VALUE]= --- will replace + all instances of the specified symbol where used as an identifier + (except where symbol has properly declared by a var declaration or + use as function parameter or similar) with the specified value. This + argument may be specified multiple times to define multiple + symbols - if no value is specified the symbol will be replaced with + the value =true=, or you can specify a numeric value (such as + =1024=), a quoted string value (such as ="object"= or + ='https://github.com'=), or the name of another symbol or keyword + (such as =null= or =document=). + This allows you, for example, to assign meaningful names to key + constant values but discard the symbolic names in the uglified + version for brevity/efficiency, or when used wth care, allows + UglifyJS to operate as a form of *conditional compilation* + whereby defining appropriate values may, by dint of the constant + folding and dead code removal features above, remove entire + superfluous code blocks (e.g. completely remove instrumentation or + trace code for production use). + Where string values are being defined, the handling of quotes are + likely to be subject to the specifics of your command shell + environment, so you may need to experiment with quoting styles + depending on your platform, or you may find the option + =--define-from-module= more suitable for use. + +- =-define-from-module SOMEMODULE= --- will load the named module (as + per the NodeJS =require()= function) and iterate all the exported + properties of the module defining them as symbol names to be defined + (as if by the =--define= option) per the name of each property + (i.e. without the module name prefix) and given the value of the + property. This is a much easier way to handle and document groups of + symbols to be defined rather than a large number of =--define= + options. + +- =--unsafe= --- enable other additional optimizations that are known to be + unsafe in some contrived situations, but could still be generally useful. + For now only these: + + - foo.toString() ==> foo+"" + - new Array(x,...) ==> [x,...] + - new Array(x) ==> Array(x) + +- =--max-line-len= (default 32K characters) --- add a newline after around + 32K characters. I've seen both FF and Chrome croak when all the code was + on a single line of around 670K. Pass --max-line-len 0 to disable this + safety feature. + +- =--reserved-names= --- some libraries rely on certain names to be used, as + pointed out in issue #92 and #81, so this option allow you to exclude such + names from the mangler. For example, to keep names =require= and =$super= + intact you'd specify --reserved-names "require,$super". + +- =--inline-script= -- when you want to include the output literally in an + HTML =\n\n\n\n\n
      \n\n
      \n\n
      \n

      UglifyJS – a JavaScript parser/compressor/beautifier

      \n\n\n\n\n
      \n

      1 UglifyJS — a JavaScript parser/compressor/beautifier

      \n
      \n\n\n

      \nThis package implements a general-purpose JavaScript\nparser/compressor/beautifier toolkit. It is developed on NodeJS, but it\nshould work on any JavaScript platform supporting the CommonJS module system\n(and if your platform of choice doesn't support CommonJS, you can easily\nimplement it, or discard the exports.* lines from UglifyJS sources).\n

      \n

      \nThe tokenizer/parser generates an abstract syntax tree from JS code. You\ncan then traverse the AST to learn more about the code, or do various\nmanipulations on it. This part is implemented in parse-js.js and it's a\nport to JavaScript of the excellent parse-js Common Lisp library from Marijn Haverbeke.\n

      \n

      \n( See cl-uglify-js if you're looking for the Common Lisp version of\nUglifyJS. )\n

      \n

      \nThe second part of this package, implemented in process.js, inspects and\nmanipulates the AST generated by the parser to provide the following:\n

      \n
        \n
      • ability to re-generate JavaScript code from the AST. Optionally\n indented—you can use this if you want to “beautify” a program that has\n been compressed, so that you can inspect the source. But you can also run\n our code generator to print out an AST without any whitespace, so you\n achieve compression as well.\n\n
      • \n
      • shorten variable names (usually to single characters). Our mangler will\n analyze the code and generate proper variable names, depending on scope\n and usage, and is smart enough to deal with globals defined elsewhere, or\n with eval() calls or with{} statements. In short, if eval() or\n with{} are used in some scope, then all variables in that scope and any\n variables in the parent scopes will remain unmangled, and any references\n to such variables remain unmangled as well.\n\n
      • \n
      • various small optimizations that may lead to faster code but certainly\n lead to smaller code. Where possible, we do the following:\n\n
          \n
        • foo[\"bar\"] ==> foo.bar\n\n
        • \n
        • remove block brackets {}\n\n
        • \n
        • join consecutive var declarations:\n var a = 10; var b = 20; ==> var a=10,b=20;\n\n
        • \n
        • resolve simple constant expressions: 1 +2 * 3 ==> 7. We only do the\n replacement if the result occupies less bytes; for example 1/3 would\n translate to 0.333333333333, so in this case we don't replace it.\n\n
        • \n
        • consecutive statements in blocks are merged into a sequence; in many\n cases, this leaves blocks with a single statement, so then we can remove\n the block brackets.\n\n
        • \n
        • various optimizations for IF statements:\n\n
            \n
          • if (foo) bar(); else baz(); ==> foo?bar():baz();\n
          • \n
          • if (!foo) bar(); else baz(); ==> foo?baz():bar();\n
          • \n
          • if (foo) bar(); ==> foo&&bar();\n
          • \n
          • if (!foo) bar(); ==> foo||bar();\n
          • \n
          • if (foo) return bar(); else return baz(); ==> return foo?bar():baz();\n
          • \n
          • if (foo) return bar(); else something(); ==> {if(foo)return bar();something()}\n\n
          • \n
          \n\n
        • \n
        • remove some unreachable code and warn about it (code that follows a\n return, throw, break or continue statement, except\n function/variable declarations).\n\n
        • \n
        • act a limited version of a pre-processor (c.f. the pre-processor of\n C/C++) to allow you to safely replace selected global symbols with\n specified values. When combined with the optimisations above this can\n make UglifyJS operate slightly more like a compilation process, in\n that when certain symbols are replaced by constant values, entire code\n blocks may be optimised away as unreachable.\n
        • \n
        \n\n
      • \n
      \n\n\n\n
      \n\n
      \n

      1.1 Unsafe transformations

      \n
      \n\n\n

      \nThe following transformations can in theory break code, although they're\nprobably safe in most practical cases. To enable them you need to pass the\n--unsafe flag.\n

      \n\n
      \n\n
      \n

      1.1.1 Calls involving the global Array constructor

      \n
      \n\n\n

      \nThe following transformations occur:\n

      \n\n\n\n
      new Array(1, 2, 3, 4)  => [1,2,3,4]\nArray(a, b, c)         => [a,b,c]\nnew Array(5)           => Array(5)\nnew Array(a)           => Array(a)\n
      \n\n\n

      \nThese are all safe if the Array name isn't redefined. JavaScript does allow\none to globally redefine Array (and pretty much everything, in fact) but I\npersonally don't see why would anyone do that.\n

      \n

      \nUglifyJS does handle the case where Array is redefined locally, or even\nglobally but with a function or var declaration. Therefore, in the\nfollowing cases UglifyJS doesn't touch calls or instantiations of Array:\n

      \n\n\n\n
      // case 1.  globally declared variable\n  var Array;\n  new Array(1, 2, 3);\n  Array(a, b);\n\n  // or (can be declared later)\n  new Array(1, 2, 3);\n  var Array;\n\n  // or (can be a function)\n  new Array(1, 2, 3);\n  function Array() { ... }\n\n// case 2.  declared in a function\n  (function(){\n    a = new Array(1, 2, 3);\n    b = Array(5, 6);\n    var Array;\n  })();\n\n  // or\n  (function(Array){\n    return Array(5, 6, 7);\n  })();\n\n  // or\n  (function(){\n    return new Array(1, 2, 3, 4);\n    function Array() { ... }\n  })();\n\n  // etc.\n
      \n\n\n
      \n\n
      \n\n
      \n

      1.1.2 obj.toString() ==> obj+“”

      \n
      \n\n\n
      \n
      \n\n
      \n\n
      \n

      1.2 Install (NPM)

      \n
      \n\n\n

      \nUglifyJS is now available through NPM — npm install uglify-js should do\nthe job.\n

      \n
      \n\n
      \n\n
      \n

      1.3 Install latest code from GitHub

      \n
      \n\n\n\n\n\n
      ## clone the repository\nmkdir -p /where/you/wanna/put/it\ncd /where/you/wanna/put/it\ngit clone git://github.com/mishoo/UglifyJS.git\n\n## make the module available to Node\nmkdir -p ~/.node_libraries/\ncd ~/.node_libraries/\nln -s /where/you/wanna/put/it/UglifyJS/uglify-js.js\n\n## and if you want the CLI script too:\nmkdir -p ~/bin\ncd ~/bin\nln -s /where/you/wanna/put/it/UglifyJS/bin/uglifyjs\n  # (then add ~/bin to your $PATH if it's not there already)\n
      \n\n\n
      \n\n
      \n\n
      \n

      1.4 Usage

      \n
      \n\n\n

      \nThere is a command-line tool that exposes the functionality of this library\nfor your shell-scripting needs:\n

      \n\n\n\n
      uglifyjs [ options... ] [ filename ]\n
      \n\n\n

      \nfilename should be the last argument and should name the file from which\nto read the JavaScript code. If you don't specify it, it will read code\nfrom STDIN.\n

      \n

      \nSupported options:\n

      \n
        \n
      • -b or --beautify — output indented code; when passed, additional\n options control the beautifier:\n\n
          \n
        • -i N or --indent N — indentation level (number of spaces)\n\n
        • \n
        • -q or --quote-keys — quote keys in literal objects (by default,\n only keys that cannot be identifier names will be quotes).\n\n
        • \n
        \n\n
      • \n
      • --ascii — pass this argument to encode non-ASCII characters as\n \\uXXXX sequences. By default UglifyJS won't bother to do it and will\n output Unicode characters instead. (the output is always encoded in UTF8,\n but if you pass this option you'll only get ASCII).\n\n
      • \n
      • -nm or --no-mangle — don't mangle names.\n\n
      • \n
      • -nmf or --no-mangle-functions – in case you want to mangle variable\n names, but not touch function names.\n\n
      • \n
      • -ns or --no-squeeze — don't call ast_squeeze() (which does various\n optimizations that result in smaller, less readable code).\n\n
      • \n
      • -mt or --mangle-toplevel — mangle names in the toplevel scope too\n (by default we don't do this).\n\n
      • \n
      • --no-seqs — when ast_squeeze() is called (thus, unless you pass\n --no-squeeze) it will reduce consecutive statements in blocks into a\n sequence. For example, \"a = 10; b = 20; foo();\" will be written as\n \"a=10,b=20,foo();\". In various occasions, this allows us to discard the\n block brackets (since the block becomes a single statement). This is ON\n by default because it seems safe and saves a few hundred bytes on some\n libs that I tested it on, but pass --no-seqs to disable it.\n\n
      • \n
      • --no-dead-code — by default, UglifyJS will remove code that is\n obviously unreachable (code that follows a return, throw, break or\n continue statement and is not a function/variable declaration). Pass\n this option to disable this optimization.\n\n
      • \n
      • -nc or --no-copyright — by default, uglifyjs will keep the initial\n comment tokens in the generated code (assumed to be copyright information\n etc.). If you pass this it will discard it.\n\n
      • \n
      • -o filename or --output filename — put the result in filename. If\n this isn't given, the result goes to standard output (or see next one).\n\n
      • \n
      • --overwrite — if the code is read from a file (not from STDIN) and you\n pass --overwrite then the output will be written in the same file.\n\n
      • \n
      • --ast — pass this if you want to get the Abstract Syntax Tree instead\n of JavaScript as output. Useful for debugging or learning more about the\n internals.\n\n
      • \n
      • -v or --verbose — output some notes on STDERR (for now just how long\n each operation takes).\n\n
      • \n
      • -d SYMBOL[=VALUE] or --define SYMBOL[=VALUE] — will replace\n all instances of the specified symbol where used as an identifier\n (except where symbol has properly declared by a var declaration or\n use as function parameter or similar) with the specified value. This\n argument may be specified multiple times to define multiple\n symbols - if no value is specified the symbol will be replaced with\n the value true, or you can specify a numeric value (such as\n 1024), a quoted string value (such as =\"object\"= or\n ='https://github.com'), or the name of another symbol or keyword (such as =null or document).\n This allows you, for example, to assign meaningful names to key\n constant values but discard the symbolic names in the uglified\n version for brevity/efficiency, or when used wth care, allows\n UglifyJS to operate as a form of conditional compilation\n whereby defining appropriate values may, by dint of the constant\n folding and dead code removal features above, remove entire\n superfluous code blocks (e.g. completely remove instrumentation or\n trace code for production use).\n Where string values are being defined, the handling of quotes are\n likely to be subject to the specifics of your command shell\n environment, so you may need to experiment with quoting styles\n depending on your platform, or you may find the option\n --define-from-module more suitable for use.\n\n
      • \n
      • -define-from-module SOMEMODULE — will load the named module (as\n per the NodeJS require() function) and iterate all the exported\n properties of the module defining them as symbol names to be defined\n (as if by the --define option) per the name of each property\n (i.e. without the module name prefix) and given the value of the\n property. This is a much easier way to handle and document groups of\n symbols to be defined rather than a large number of --define\n options.\n\n
      • \n
      • --unsafe — enable other additional optimizations that are known to be\n unsafe in some contrived situations, but could still be generally useful.\n For now only these:\n\n
          \n
        • foo.toString() ==> foo+\"\"\n
        • \n
        • new Array(x,…) ==> [x,…]\n
        • \n
        • new Array(x) ==> Array(x)\n\n
        • \n
        \n\n
      • \n
      • --max-line-len (default 32K characters) — add a newline after around\n 32K characters. I've seen both FF and Chrome croak when all the code was\n on a single line of around 670K. Pass –max-line-len 0 to disable this\n safety feature.\n\n
      • \n
      • --reserved-names — some libraries rely on certain names to be used, as\n pointed out in issue #92 and #81, so this option allow you to exclude such\n names from the mangler. For example, to keep names require and $super\n intact you'd specify –reserved-names \"require,$super\".\n\n
      • \n
      • --inline-script – when you want to include the output literally in an\n HTML <script> tag you can use this option to prevent </script from\n showing up in the output.\n\n
      • \n
      • --lift-vars – when you pass this, UglifyJS will apply the following\n transformations (see the notes in API, ast_lift_variables):\n\n
          \n
        • put all var declarations at the start of the scope\n
        • \n
        • make sure a variable is declared only once\n
        • \n
        • discard unused function arguments\n
        • \n
        • discard unused inner (named) functions\n
        • \n
        • finally, try to merge assignments into that one var declaration, if\n possible.\n
        • \n
        \n\n
      • \n
      \n\n\n\n
      \n\n
      \n

      1.4.1 API

      \n
      \n\n\n

      \nTo use the library from JavaScript, you'd do the following (example for\nNodeJS):\n

      \n\n\n\n
      var jsp = require(\"uglify-js\").parser;\nvar pro = require(\"uglify-js\").uglify;\n\nvar orig_code = \"... JS code here\";\nvar ast = jsp.parse(orig_code); // parse code and get the initial AST\nast = pro.ast_mangle(ast); // get a new AST with mangled names\nast = pro.ast_squeeze(ast); // get an AST with compression optimizations\nvar final_code = pro.gen_code(ast); // compressed code here\n
      \n\n\n

      \nThe above performs the full compression that is possible right now. As you\ncan see, there are a sequence of steps which you can apply. For example if\nyou want compressed output but for some reason you don't want to mangle\nvariable names, you would simply skip the line that calls\npro.ast_mangle(ast).\n

      \n

      \nSome of these functions take optional arguments. Here's a description:\n

      \n
        \n
      • jsp.parse(code, strict_semicolons) – parses JS code and returns an AST.\n strict_semicolons is optional and defaults to false. If you pass\n true then the parser will throw an error when it expects a semicolon and\n it doesn't find it. For most JS code you don't want that, but it's useful\n if you want to strictly sanitize your code.\n\n
      • \n
      • pro.ast_lift_variables(ast) – merge and move var declarations to the\n scop of the scope; discard unused function arguments or variables; discard\n unused (named) inner functions. It also tries to merge assignments\n following the var declaration into it.\n\n

        \n If your code is very hand-optimized concerning var declarations, this\n lifting variable declarations might actually increase size. For me it\n helps out. On jQuery it adds 865 bytes (243 after gzip). YMMV. Also\n note that (since it's not enabled by default) this operation isn't yet\n heavily tested (please report if you find issues!).\n

        \n

        \n Note that although it might increase the image size (on jQuery it gains\n 865 bytes, 243 after gzip) it's technically more correct: in certain\n situations, dead code removal might drop variable declarations, which\n would not happen if the variables are lifted in advance.\n

        \n

        \n Here's an example of what it does:\n

      • \n
      \n\n\n\n\n\n
      function f(a, b, c, d, e) {\n    var q;\n    var w;\n    w = 10;\n    q = 20;\n    for (var i = 1; i < 10; ++i) {\n        var boo = foo(a);\n    }\n    for (var i = 0; i < 1; ++i) {\n        var boo = bar(c);\n    }\n    function foo(){ ... }\n    function bar(){ ... }\n    function baz(){ ... }\n}\n\n// transforms into ==>\n\nfunction f(a, b, c) {\n    var i, boo, w = 10, q = 20;\n    for (i = 1; i < 10; ++i) {\n        boo = foo(a);\n    }\n    for (i = 0; i < 1; ++i) {\n        boo = bar(c);\n    }\n    function foo() { ... }\n    function bar() { ... }\n}\n
      \n\n\n
        \n
      • pro.ast_mangle(ast, options) – generates a new AST containing mangled\n (compressed) variable and function names. It supports the following\n options:\n\n
          \n
        • toplevel – mangle toplevel names (by default we don't touch them).\n
        • \n
        • except – an array of names to exclude from compression.\n
        • \n
        • defines – an object with properties named after symbols to\n replace (see the --define option for the script) and the values\n representing the AST replacement value.\n\n
        • \n
        \n\n
      • \n
      • pro.ast_squeeze(ast, options) – employs further optimizations designed\n to reduce the size of the code that gen_code would generate from the\n AST. Returns a new AST. options can be a hash; the supported options\n are:\n\n
          \n
        • make_seqs (default true) which will cause consecutive statements in a\n block to be merged using the \"sequence\" (comma) operator\n\n
        • \n
        • dead_code (default true) which will remove unreachable code.\n\n
        • \n
        \n\n
      • \n
      • pro.gen_code(ast, options) – generates JS code from the AST. By\n default it's minified, but using the options argument you can get nicely\n formatted output. options is, well, optional :-) and if you pass it it\n must be an object and supports the following properties (below you can see\n the default values):\n\n
          \n
        • beautify: false – pass true if you want indented output\n
        • \n
        • indent_start: 0 (only applies when beautify is true) – initial\n indentation in spaces\n
        • \n
        • indent_level: 4 (only applies when beautify is true) --\n indentation level, in spaces (pass an even number)\n
        • \n
        • quote_keys: false – if you pass true it will quote all keys in\n literal objects\n
        • \n
        • space_colon: false (only applies when beautify is true) – wether\n to put a space before the colon in object literals\n
        • \n
        • ascii_only: false – pass true if you want to encode non-ASCII\n characters as \\uXXXX.\n
        • \n
        • inline_script: false – pass true to escape occurrences of\n </script in strings\n
        • \n
        \n\n
      • \n
      \n\n\n
      \n\n
      \n\n
      \n

      1.4.2 Beautifier shortcoming – no more comments

      \n
      \n\n\n

      \nThe beautifier can be used as a general purpose indentation tool. It's\nuseful when you want to make a minified file readable. One limitation,\nthough, is that it discards all comments, so you don't really want to use it\nto reformat your code, unless you don't have, or don't care about, comments.\n

      \n

      \nIn fact it's not the beautifier who discards comments — they are dumped at\nthe parsing stage, when we build the initial AST. Comments don't really\nmake sense in the AST, and while we could add nodes for them, it would be\ninconvenient because we'd have to add special rules to ignore them at all\nthe processing stages.\n

      \n
      \n\n
      \n\n
      \n

      1.4.3 Use as a code pre-processor

      \n
      \n\n\n

      \nThe --define option can be used, particularly when combined with the\nconstant folding logic, as a form of pre-processor to enable or remove\nparticular constructions, such as might be used for instrumenting\ndevelopment code, or to produce variations aimed at a specific\nplatform.\n

      \n

      \nThe code below illustrates the way this can be done, and how the\nsymbol replacement is performed.\n

      \n\n\n\n
      CLAUSE1: if (typeof DEVMODE === 'undefined') {\n    DEVMODE = true;\n}\n\nCLAUSE2: function init() {\n    if (DEVMODE) {\n        console.log(\"init() called\");\n    }\n    ....\n    DEVMODE &amp;&amp; console.log(\"init() complete\");\n}\n\nCLAUSE3: function reportDeviceStatus(device) {\n    var DEVMODE = device.mode, DEVNAME = device.name;\n    if (DEVMODE === 'open') {\n        ....\n    }\n}\n
      \n\n\n

      \nWhen the above code is normally executed, the undeclared global\nvariable DEVMODE will be assigned the value true (see CLAUSE1)\nand so the init() function (CLAUSE2) will write messages to the\nconsole log when executed, but in CLAUSE3 a locally declared\nvariable will mask access to the DEVMODE global symbol.\n

      \n

      \nIf the above code is processed by UglifyJS with an argument of\n--define DEVMODE=false then UglifyJS will replace DEVMODE with the\nboolean constant value false within CLAUSE1 and CLAUSE2, but it\nwill leave CLAUSE3 as it stands because there DEVMODE resolves to\na validly declared variable.\n

      \n

      \nAnd more so, the constant-folding features of UglifyJS will recognise\nthat the if condition of CLAUSE1 is thus always false, and so will\nremove the test and body of CLAUSE1 altogether (including the\notherwise slightly problematical statement false = true; which it\nwill have formed by replacing DEVMODE in the body). Similarly,\nwithin CLAUSE2 both calls to console.log() will be removed\naltogether.\n

      \n

      \nIn this way you can mimic, to a limited degree, the functionality of\nthe C/C++ pre-processor to enable or completely remove blocks\ndepending on how certain symbols are defined - perhaps using UglifyJS\nto generate different versions of source aimed at different\nenvironments\n

      \n

      \nIt is recommmended (but not made mandatory) that symbols designed for\nthis purpose are given names consisting of UPPER_CASE_LETTERS to\ndistinguish them from other (normal) symbols and avoid the sort of\nclash that CLAUSE3 above illustrates.\n

      \n
      \n
      \n\n
      \n\n
      \n

      1.5 Compression – how good is it?

      \n
      \n\n\n

      \nHere are updated statistics. (I also updated my Google Closure and YUI\ninstallations).\n

      \n

      \nWe're still a lot better than YUI in terms of compression, though slightly\nslower. We're still a lot faster than Closure, and compression after gzip\nis comparable.\n

      \n\n\n\n\n\n\n\n\n\n\n\n\n\n
      FileUglifyJSUglifyJS+gzipClosureClosure+gzipYUIYUI+gzip
      jquery-1.6.2.js91001 (0:01.59)3189690678 (0:07.40)31979101527 (0:01.82)34646
      paper.js142023 (0:01.65)43334134301 (0:07.42)42495173383 (0:01.58)48785
      prototype.js88544 (0:01.09)2668086955 (0:06.97)2632692130 (0:00.79)28624
      thelib-full.js (DynarchLIB)251939 (0:02.55)72535249911 (0:09.05)72696258869 (0:01.94)76584
      \n\n\n
      \n\n
      \n\n
      \n

      1.6 Bugs?

      \n
      \n\n\n

      \nUnfortunately, for the time being there is no automated test suite. But I\nran the compressor manually on non-trivial code, and then I tested that the\ngenerated code works as expected. A few hundred times.\n

      \n

      \nDynarchLIB was started in times when there was no good JS minifier.\nTherefore I was quite religious about trying to write short code manually,\nand as such DL contains a lot of syntactic hacks1 such as “foo == bar ? a\n= 10 : b = 20”, though the more readable version would clearly be to use\n“if/else”.\n

      \n

      \nSince the parser/compressor runs fine on DL and jQuery, I'm quite confident\nthat it's solid enough for production use. If you can identify any bugs,\nI'd love to hear about them (use the Google Group or email me directly).\n

      \n
      \n\n
      \n\n
      \n

      1.7 Links

      \n
      \n\n\n\n\n\n
      \n\n
      \n\n
      \n

      1.8 License

      \n
      \n\n\n

      \nUglifyJS is released under the BSD license:\n

      \n\n\n\n
      Copyright 2010 (c) Mihai Bazon <mihai.bazon@gmail.com>\nBased on parse-js (http://marijn.haverbeke.nl/parse-js/).\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions\nare met:\n\n    * Redistributions of source code must retain the above\n      copyright notice, this list of conditions and the following\n      disclaimer.\n\n    * Redistributions in binary form must reproduce the above\n      copyright notice, this list of conditions and the following\n      disclaimer in the documentation and/or other materials\n      provided with the distribution.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER “AS IS” AND ANY\nEXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\nIMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR\nPURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE\nLIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,\nOR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,\nPROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\nPROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\nTHEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR\nTORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF\nTHE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF\nSUCH DAMAGE.\n
      \n\n\n
      \n

      Footnotes:

      \n
      \n

      1 I even reported a few bugs and suggested some fixes in the original\n parse-js library, and Marijn pushed fixes literally in minutes.\n

      \n
      \n
      \n\n
      \n
      \n
      \n\n
      \n

      Date: 2011-12-09 14:59:08 EET

      \n

      Author: Mihai Bazon

      \n

      Org version 7.7 with Emacs version 23

      \nValidate XHTML 1.0\n\n
      \n\n\n", + "readmeFilename": "README.html", + "_id": "uglify-js@1.2.5", + "dist": { + "shasum": "c399ef36f5b5b07a3840db33d4eacdbecdc0c268" + }, + "_from": "uglify-js@1.2.5", + "_resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-1.2.5.tgz" +} diff --git a/node_modules/socket.io/node_modules/socket.io-client/node_modules/uglify-js/package.json~ b/node_modules/socket.io/node_modules/socket.io-client/node_modules/uglify-js/package.json~ new file mode 100644 index 0000000..e4cb23d --- /dev/null +++ b/node_modules/socket.io/node_modules/socket.io-client/node_modules/uglify-js/package.json~ @@ -0,0 +1,24 @@ +{ + "name" : "uglify-js", + + "description" : "JavaScript parser and compressor/beautifier toolkit", + + "author" : { + "name" : "Mihai Bazon", + "email" : "mihai.bazon@gmail.com", + "url" : "http://mihai.bazon.net/blog" + }, + + "version" : "1.2.3", + + "main" : "./uglify-js.js", + + "bin" : { + "uglifyjs" : "./bin/uglifyjs" + }, + + "repository": { + "type": "git", + "url": "git@github.com:mishoo/UglifyJS.git" + } +} diff --git a/node_modules/socket.io/node_modules/socket.io-client/node_modules/uglify-js/test/beautify.js b/node_modules/socket.io/node_modules/socket.io-client/node_modules/uglify-js/test/beautify.js new file mode 100644 index 0000000..f19369e --- /dev/null +++ b/node_modules/socket.io/node_modules/socket.io-client/node_modules/uglify-js/test/beautify.js @@ -0,0 +1,28 @@ +#! /usr/bin/env node + +global.sys = require("sys"); +var fs = require("fs"); + +var jsp = require("../lib/parse-js"); +var pro = require("../lib/process"); + +var filename = process.argv[2]; +fs.readFile(filename, "utf8", function(err, text){ + try { + var ast = time_it("parse", function(){ return jsp.parse(text); }); + ast = time_it("mangle", function(){ return pro.ast_mangle(ast); }); + ast = time_it("squeeze", function(){ return pro.ast_squeeze(ast); }); + var gen = time_it("generate", function(){ return pro.gen_code(ast, false); }); + sys.puts(gen); + } catch(ex) { + sys.debug(ex.stack); + sys.debug(sys.inspect(ex)); + sys.debug(JSON.stringify(ex)); + } +}); + +function time_it(name, cont) { + var t1 = new Date().getTime(); + try { return cont(); } + finally { sys.debug("// " + name + ": " + ((new Date().getTime() - t1) / 1000).toFixed(3) + " sec."); } +}; diff --git a/node_modules/socket.io/node_modules/socket.io-client/node_modules/uglify-js/test/testparser.js b/node_modules/socket.io/node_modules/socket.io-client/node_modules/uglify-js/test/testparser.js new file mode 100644 index 0000000..02c19a9 --- /dev/null +++ b/node_modules/socket.io/node_modules/socket.io-client/node_modules/uglify-js/test/testparser.js @@ -0,0 +1,403 @@ +#! /usr/bin/env node + +var parseJS = require("../lib/parse-js"); +var sys = require("sys"); + +// write debug in a very straightforward manner +var debug = function(){ + sys.log(Array.prototype.slice.call(arguments).join(', ')); +}; + +ParserTestSuite(function(i, input, desc){ + try { + parseJS.parse(input); + debug("ok " + i + ": " + desc); + } catch(e){ + debug("FAIL " + i + " " + desc + " (" + e + ")"); + } +}); + +function ParserTestSuite(callback){ + var inps = [ + ["var abc;", "Regular variable statement w/o assignment"], + ["var abc = 5;", "Regular variable statement with assignment"], + ["/* */;", "Multiline comment"], + ['/** **/;', 'Double star multiline comment'], + ["var f = function(){;};", "Function expression in var assignment"], + ['hi; // moo\n;', 'single line comment'], + ['var varwithfunction;', 'Dont match keywords as substrings'], // difference between `var withsomevar` and `"str"` (local search and lits) + ['a + b;', 'addition'], + ["'a';", 'single string literal'], + ["'a\\n';", 'single string literal with escaped return'], + ['"a";', 'double string literal'], + ['"a\\n";', 'double string literal with escaped return'], + ['"var";', 'string is a keyword'], + ['"variable";', 'string starts with a keyword'], + ['"somevariable";', 'string contains a keyword'], + ['"somevar";', 'string ends with a keyword'], + ['500;', 'int literal'], + ['500.;', 'float literal w/o decimals'], + ['500.432;', 'float literal with decimals'], + ['.432432;', 'float literal w/o int'], + ['(a,b,c);', 'parens and comma'], + ['[1,2,abc];', 'array literal'], + ['var o = {a:1};', 'object literal unquoted key'], + ['var o = {"b":2};', 'object literal quoted key'], // opening curly may not be at the start of a statement... + ['var o = {c:c};', 'object literal keyname is identifier'], + ['var o = {a:1,"b":2,c:c};', 'object literal combinations'], + ['var x;\nvar y;', 'two lines'], + ['var x;\nfunction n(){; }', 'function def'], + ['var x;\nfunction n(abc){; }', 'function def with arg'], + ['var x;\nfunction n(abc, def){ ;}', 'function def with args'], + ['function n(){ "hello"; }', 'function def with body'], + ['/a/;', 'regex literal'], + ['/a/b;', 'regex literal with flag'], + ['/a/ / /b/;', 'regex div regex'], + ['a/b/c;', 'triple division looks like regex'], + ['+function(){/regex/;};', 'regex at start of function body'], + // http://code.google.com/p/es-lab/source/browse/trunk/tests/parser/parsertests.js?r=86 + // http://code.google.com/p/es-lab/source/browse/trunk/tests/parser/parsertests.js?r=430 + + // first tests for the lexer, should also parse as program (when you append a semi) + + // comments + ['//foo!@#^&$1234\nbar;', 'single line comment'], + ['/* abcd!@#@$* { } && null*/;', 'single line multi line comment'], + ['/*foo\nbar*/;','multi line comment'], + ['/*x*x*/;','multi line comment with *'], + ['/**/;','empty comment'], + // identifiers + ["x;",'1 identifier'], + ["_x;",'2 identifier'], + ["xyz;",'3 identifier'], + ["$x;",'4 identifier'], + ["x$;",'5 identifier'], + ["_;",'6 identifier'], + ["x5;",'7 identifier'], + ["x_y;",'8 identifier'], + ["x+5;",'9 identifier'], + ["xyz123;",'10 identifier'], + ["x1y1z1;",'11 identifier'], + ["foo\\u00D8bar;",'12 identifier unicode escape'], + //["foo�bar;",'13 identifier unicode embedded (might fail)'], + // numbers + ["5;", '1 number'], + ["5.5;", '2 number'], + ["0;", '3 number'], + ["0.0;", '4 number'], + ["0.001;", '5 number'], + ["1.e2;", '6 number'], + ["1.e-2;", '7 number'], + ["1.E2;", '8 number'], + ["1.E-2;", '9 number'], + [".5;", '10 number'], + [".5e3;", '11 number'], + [".5e-3;", '12 number'], + ["0.5e3;", '13 number'], + ["55;", '14 number'], + ["123;", '15 number'], + ["55.55;", '16 number'], + ["55.55e10;", '17 number'], + ["123.456;", '18 number'], + ["1+e;", '20 number'], + ["0x01;", '22 number'], + ["0XCAFE;", '23 number'], + ["0x12345678;", '24 number'], + ["0x1234ABCD;", '25 number'], + ["0x0001;", '26 number'], + // strings + ["\"foo\";", '1 string'], + ["\'foo\';", '2 string'], + ["\"x\";", '3 string'], + ["\'\';", '4 string'], + ["\"foo\\tbar\";", '5 string'], + ["\"!@#$%^&*()_+{}[]\";", '6 string'], + ["\"/*test*/\";", '7 string'], + ["\"//test\";", '8 string'], + ["\"\\\\\";", '9 string'], + ["\"\\u0001\";", '10 string'], + ["\"\\uFEFF\";", '11 string'], + ["\"\\u10002\";", '12 string'], + ["\"\\x55\";", '13 string'], + ["\"\\x55a\";", '14 string'], + ["\"a\\\\nb\";", '15 string'], + ['";"', '16 string: semi in a string'], + ['"a\\\nb";', '17 string: line terminator escape'], + // literals + ["null;", "null"], + ["true;", "true"], + ["false;", "false"], + // regex + ["/a/;", "1 regex"], + ["/abc/;", "2 regex"], + ["/abc[a-z]*def/g;", "3 regex"], + ["/\\b/;", "4 regex"], + ["/[a-zA-Z]/;", "5 regex"], + + // program tests (for as far as they havent been covered above) + + // regexp + ["/foo(.*)/g;", "another regexp"], + // arrays + ["[];", "1 array"], + ["[ ];", "2 array"], + ["[1];", "3 array"], + ["[1,2];", "4 array"], + ["[1,2,,];", "5 array"], + ["[1,2,3];", "6 array"], + ["[1,2,3,,,];", "7 array"], + // objects + ["{};", "1 object"], + ["({x:5});", "2 object"], + ["({x:5,y:6});", "3 object"], + ["({x:5,});", "4 object"], + ["({if:5});", "5 object"], + ["({ get x() {42;} });", "6 object"], + ["({ set y(a) {1;} });", "7 object"], + // member expression + ["o.m;", "1 member expression"], + ["o['m'];", "2 member expression"], + ["o['n']['m'];", "3 member expression"], + ["o.n.m;", "4 member expression"], + ["o.if;", "5 member expression"], + // call and invoke expressions + ["f();", "1 call/invoke expression"], + ["f(x);", "2 call/invoke expression"], + ["f(x,y);", "3 call/invoke expression"], + ["o.m();", "4 call/invoke expression"], + ["o['m'];", "5 call/invoke expression"], + ["o.m(x);", "6 call/invoke expression"], + ["o['m'](x);", "7 call/invoke expression"], + ["o.m(x,y);", "8 call/invoke expression"], + ["o['m'](x,y);", "9 call/invoke expression"], + ["f(x)(y);", "10 call/invoke expression"], + ["f().x;", "11 call/invoke expression"], + + // eval + ["eval('x');", "1 eval"], + ["(eval)('x');", "2 eval"], + ["(1,eval)('x');", "3 eval"], + ["eval(x,y);", "4 eval"], + // new expression + ["new f();", "1 new expression"], + ["new o;", "2 new expression"], + ["new o.m;", "3 new expression"], + ["new o.m(x);", "4 new expression"], + ["new o.m(x,y);", "5 new expression"], + // prefix/postfix + ["++x;", "1 pre/postfix"], + ["x++;", "2 pre/postfix"], + ["--x;", "3 pre/postfix"], + ["x--;", "4 pre/postfix"], + ["x ++;", "5 pre/postfix"], + ["x /* comment */ ++;", "6 pre/postfix"], + ["++ /* comment */ x;", "7 pre/postfix"], + // unary operators + ["delete x;", "1 unary operator"], + ["void x;", "2 unary operator"], + ["+ x;", "3 unary operator"], + ["-x;", "4 unary operator"], + ["~x;", "5 unary operator"], + ["!x;", "6 unary operator"], + // meh + ["new Date++;", "new date ++"], + ["+x++;", " + x ++"], + // expression expressions + ["1 * 2;", "1 expression expressions"], + ["1 / 2;", "2 expression expressions"], + ["1 % 2;", "3 expression expressions"], + ["1 + 2;", "4 expression expressions"], + ["1 - 2;", "5 expression expressions"], + ["1 << 2;", "6 expression expressions"], + ["1 >>> 2;", "7 expression expressions"], + ["1 >> 2;", "8 expression expressions"], + ["1 * 2 + 3;", "9 expression expressions"], + ["(1+2)*3;", "10 expression expressions"], + ["1*(2+3);", "11 expression expressions"], + ["xy;", "13 expression expressions"], + ["x<=y;", "14 expression expressions"], + ["x>=y;", "15 expression expressions"], + ["x instanceof y;", "16 expression expressions"], + ["x in y;", "17 expression expressions"], + ["x&y;", "18 expression expressions"], + ["x^y;", "19 expression expressions"], + ["x|y;", "20 expression expressions"], + ["x+y>>= y;", "1 assignment"], + ["x <<= y;", "2 assignment"], + ["x = y;", "3 assignment"], + ["x += y;", "4 assignment"], + ["x /= y;", "5 assignment"], + // comma + ["x, y;", "comma"], + // block + ["{};", "1 block"], + ["{x;};", "2 block"], + ["{x;y;};", "3 block"], + // vars + ["var x;", "1 var"], + ["var x,y;", "2 var"], + ["var x=1,y=2;", "3 var"], + ["var x,y=2;", "4 var"], + // empty + [";", "1 empty"], + ["\n;", "2 empty"], + // expression statement + ["x;", "1 expression statement"], + ["5;", "2 expression statement"], + ["1+2;", "3 expression statement"], + // if + ["if (c) x; else y;", "1 if statement"], + ["if (c) x;", "2 if statement"], + ["if (c) {} else {};", "3 if statement"], + ["if (c1) if (c2) s1; else s2;", "4 if statement"], + // while + ["do s; while (e);", "1 while statement"], + ["do { s; } while (e);", "2 while statement"], + ["while (e) s;", "3 while statement"], + ["while (e) { s; };", "4 while statement"], + // for + ["for (;;) ;", "1 for statement"], + ["for (;c;x++) x;", "2 for statement"], + ["for (i;i> 1; +var c = 8 >>> 1; \ No newline at end of file diff --git a/node_modules/socket.io/node_modules/socket.io-client/node_modules/uglify-js/test/unit/compress/test/issue34.js b/node_modules/socket.io/node_modules/socket.io-client/node_modules/uglify-js/test/unit/compress/test/issue34.js new file mode 100644 index 0000000..022f7a3 --- /dev/null +++ b/node_modules/socket.io/node_modules/socket.io-client/node_modules/uglify-js/test/unit/compress/test/issue34.js @@ -0,0 +1,3 @@ +var a = {}; +a["this"] = 1; +a["that"] = 2; \ No newline at end of file diff --git a/node_modules/socket.io/node_modules/socket.io-client/node_modules/uglify-js/test/unit/compress/test/issue4.js b/node_modules/socket.io/node_modules/socket.io-client/node_modules/uglify-js/test/unit/compress/test/issue4.js new file mode 100644 index 0000000..0b76103 --- /dev/null +++ b/node_modules/socket.io/node_modules/socket.io-client/node_modules/uglify-js/test/unit/compress/test/issue4.js @@ -0,0 +1,3 @@ +var a = 2e3; +var b = 2e-3; +var c = 2e-5; \ No newline at end of file diff --git a/node_modules/socket.io/node_modules/socket.io-client/node_modules/uglify-js/test/unit/compress/test/issue48.js b/node_modules/socket.io/node_modules/socket.io-client/node_modules/uglify-js/test/unit/compress/test/issue48.js new file mode 100644 index 0000000..031e85b --- /dev/null +++ b/node_modules/socket.io/node_modules/socket.io-client/node_modules/uglify-js/test/unit/compress/test/issue48.js @@ -0,0 +1 @@ +var s, i; s = ''; i = 0; \ No newline at end of file diff --git a/node_modules/socket.io/node_modules/socket.io-client/node_modules/uglify-js/test/unit/compress/test/issue50.js b/node_modules/socket.io/node_modules/socket.io-client/node_modules/uglify-js/test/unit/compress/test/issue50.js new file mode 100644 index 0000000..060f9df --- /dev/null +++ b/node_modules/socket.io/node_modules/socket.io-client/node_modules/uglify-js/test/unit/compress/test/issue50.js @@ -0,0 +1,9 @@ +function bar(a) { + try { + foo(); + } catch(e) { + alert("Exception caught (foo not defined)"); + } + alert(a); // 10 in FF, "[object Error]" in IE +} +bar(10); diff --git a/node_modules/socket.io/node_modules/socket.io-client/node_modules/uglify-js/test/unit/compress/test/issue53.js b/node_modules/socket.io/node_modules/socket.io-client/node_modules/uglify-js/test/unit/compress/test/issue53.js new file mode 100644 index 0000000..4f8b32f --- /dev/null +++ b/node_modules/socket.io/node_modules/socket.io-client/node_modules/uglify-js/test/unit/compress/test/issue53.js @@ -0,0 +1 @@ +x = (y, z) diff --git a/node_modules/socket.io/node_modules/socket.io-client/node_modules/uglify-js/test/unit/compress/test/issue54.1.js b/node_modules/socket.io/node_modules/socket.io-client/node_modules/uglify-js/test/unit/compress/test/issue54.1.js new file mode 100644 index 0000000..967052e --- /dev/null +++ b/node_modules/socket.io/node_modules/socket.io-client/node_modules/uglify-js/test/unit/compress/test/issue54.1.js @@ -0,0 +1,3 @@ +foo.toString(); +a.toString(16); +b.toString.call(c); diff --git a/node_modules/socket.io/node_modules/socket.io-client/node_modules/uglify-js/test/unit/compress/test/issue68.js b/node_modules/socket.io/node_modules/socket.io-client/node_modules/uglify-js/test/unit/compress/test/issue68.js new file mode 100644 index 0000000..14054d0 --- /dev/null +++ b/node_modules/socket.io/node_modules/socket.io-client/node_modules/uglify-js/test/unit/compress/test/issue68.js @@ -0,0 +1,5 @@ +function f() { + if (a) return; + g(); + function g(){} +}; diff --git a/node_modules/socket.io/node_modules/socket.io-client/node_modules/uglify-js/test/unit/compress/test/issue69.js b/node_modules/socket.io/node_modules/socket.io-client/node_modules/uglify-js/test/unit/compress/test/issue69.js new file mode 100644 index 0000000..d25ecd6 --- /dev/null +++ b/node_modules/socket.io/node_modules/socket.io-client/node_modules/uglify-js/test/unit/compress/test/issue69.js @@ -0,0 +1 @@ +[(a,b)] diff --git a/node_modules/socket.io/node_modules/socket.io-client/node_modules/uglify-js/test/unit/compress/test/issue9.js b/node_modules/socket.io/node_modules/socket.io-client/node_modules/uglify-js/test/unit/compress/test/issue9.js new file mode 100644 index 0000000..6158861 --- /dev/null +++ b/node_modules/socket.io/node_modules/socket.io-client/node_modules/uglify-js/test/unit/compress/test/issue9.js @@ -0,0 +1,4 @@ +var a = { + a: 1, + b: 2, // <-- trailing comma +}; diff --git a/node_modules/socket.io/node_modules/socket.io-client/node_modules/uglify-js/test/unit/compress/test/mangle.js b/node_modules/socket.io/node_modules/socket.io-client/node_modules/uglify-js/test/unit/compress/test/mangle.js new file mode 100644 index 0000000..c271a26 --- /dev/null +++ b/node_modules/socket.io/node_modules/socket.io-client/node_modules/uglify-js/test/unit/compress/test/mangle.js @@ -0,0 +1,5 @@ +(function() { + var x = function fun(a, fun, b) { + return fun; + }; +}()); diff --git a/node_modules/socket.io/node_modules/socket.io-client/node_modules/uglify-js/test/unit/compress/test/null_string.js b/node_modules/socket.io/node_modules/socket.io-client/node_modules/uglify-js/test/unit/compress/test/null_string.js new file mode 100644 index 0000000..a675b1c --- /dev/null +++ b/node_modules/socket.io/node_modules/socket.io-client/node_modules/uglify-js/test/unit/compress/test/null_string.js @@ -0,0 +1 @@ +var nullString = "\0" \ No newline at end of file diff --git a/node_modules/socket.io/node_modules/socket.io-client/node_modules/uglify-js/test/unit/compress/test/strict-equals.js b/node_modules/socket.io/node_modules/socket.io-client/node_modules/uglify-js/test/unit/compress/test/strict-equals.js new file mode 100644 index 0000000..b631f4c --- /dev/null +++ b/node_modules/socket.io/node_modules/socket.io-client/node_modules/uglify-js/test/unit/compress/test/strict-equals.js @@ -0,0 +1,3 @@ +typeof a === 'string' +b + "" !== c + "" +d < e === f < g diff --git a/node_modules/socket.io/node_modules/socket.io-client/node_modules/uglify-js/test/unit/compress/test/var.js b/node_modules/socket.io/node_modules/socket.io-client/node_modules/uglify-js/test/unit/compress/test/var.js new file mode 100644 index 0000000..746ea98 --- /dev/null +++ b/node_modules/socket.io/node_modules/socket.io-client/node_modules/uglify-js/test/unit/compress/test/var.js @@ -0,0 +1,3 @@ +// var declarations after each other should be combined +var a = 1; +var b = 2; \ No newline at end of file diff --git a/node_modules/socket.io/node_modules/socket.io-client/node_modules/uglify-js/test/unit/compress/test/whitespace.js b/node_modules/socket.io/node_modules/socket.io-client/node_modules/uglify-js/test/unit/compress/test/whitespace.js new file mode 100644 index 0000000..6a15c46 --- /dev/null +++ b/node_modules/socket.io/node_modules/socket.io-client/node_modules/uglify-js/test/unit/compress/test/whitespace.js @@ -0,0 +1,21 @@ +function id(a) { + // Form-Feed + // Vertical Tab + // No-Break Space + ᠎// Mongolian Vowel Separator +  // En quad +  // Em quad +  // En space +  // Em space +  // Three-Per-Em Space +  // Four-Per-Em Space +  // Six-Per-Em Space +  // Figure Space +  // Punctuation Space +  // Thin Space +  // Hair Space +  // Narrow No-Break Space +  // Medium Mathematical Space +  // Ideographic Space + return a; +} diff --git a/node_modules/socket.io/node_modules/socket.io-client/node_modules/uglify-js/test/unit/compress/test/with.js b/node_modules/socket.io/node_modules/socket.io-client/node_modules/uglify-js/test/unit/compress/test/with.js new file mode 100644 index 0000000..de266ed --- /dev/null +++ b/node_modules/socket.io/node_modules/socket.io-client/node_modules/uglify-js/test/unit/compress/test/with.js @@ -0,0 +1,2 @@ +with({}) { +}; diff --git a/node_modules/socket.io/node_modules/socket.io-client/node_modules/uglify-js/test/unit/scripts.js b/node_modules/socket.io/node_modules/socket.io-client/node_modules/uglify-js/test/unit/scripts.js new file mode 100644 index 0000000..5d334ff --- /dev/null +++ b/node_modules/socket.io/node_modules/socket.io-client/node_modules/uglify-js/test/unit/scripts.js @@ -0,0 +1,55 @@ +var fs = require('fs'), + uglify = require('../../uglify-js'), + jsp = uglify.parser, + nodeunit = require('nodeunit'), + path = require('path'), + pro = uglify.uglify; + +var Script = process.binding('evals').Script; + +var scriptsPath = __dirname; + +function compress(code) { + var ast = jsp.parse(code); + ast = pro.ast_mangle(ast); + ast = pro.ast_squeeze(ast, { no_warnings: true }); + ast = pro.ast_squeeze_more(ast); + return pro.gen_code(ast); +}; + +var testDir = path.join(scriptsPath, "compress", "test"); +var expectedDir = path.join(scriptsPath, "compress", "expected"); + +function getTester(script) { + return function(test) { + var testPath = path.join(testDir, script); + var expectedPath = path.join(expectedDir, script); + var content = fs.readFileSync(testPath, 'utf-8'); + var outputCompress = compress(content); + + // Check if the noncompressdata is larger or same size as the compressed data + test.ok(content.length >= outputCompress.length); + + // Check that a recompress gives the same result + var outputReCompress = compress(content); + test.equal(outputCompress, outputReCompress); + + // Check if the compressed output is what is expected + var expected = fs.readFileSync(expectedPath, 'utf-8'); + test.equal(outputCompress, expected.replace(/(\r?\n)+$/, "")); + + test.done(); + }; +}; + +var tests = {}; + +var scripts = fs.readdirSync(testDir); +for (var i in scripts) { + var script = scripts[i]; + if (/\.js$/.test(script)) { + tests[script] = getTester(script); + } +} + +module.exports = nodeunit.testCase(tests); diff --git a/node_modules/socket.io/node_modules/socket.io-client/node_modules/uglify-js/tmp/269.js b/node_modules/socket.io/node_modules/socket.io-client/node_modules/uglify-js/tmp/269.js new file mode 100644 index 0000000..256ad1c --- /dev/null +++ b/node_modules/socket.io/node_modules/socket.io-client/node_modules/uglify-js/tmp/269.js @@ -0,0 +1,13 @@ +var jsp = require("uglify-js").parser; +var pro = require("uglify-js").uglify; + +var test_code = "var JSON;JSON||(JSON={});"; + +var ast = jsp.parse(test_code, false, false); +var nonembed_token_code = pro.gen_code(ast); +ast = jsp.parse(test_code, false, true); +var embed_token_code = pro.gen_code(ast); + +console.log("original: " + test_code); +console.log("no token: " + nonembed_token_code); +console.log(" token: " + embed_token_code); diff --git a/node_modules/socket.io/node_modules/socket.io-client/node_modules/uglify-js/tmp/app.js b/node_modules/socket.io/node_modules/socket.io-client/node_modules/uglify-js/tmp/app.js new file mode 100644 index 0000000..912a9f9 --- /dev/null +++ b/node_modules/socket.io/node_modules/socket.io-client/node_modules/uglify-js/tmp/app.js @@ -0,0 +1,22315 @@ +/* Modernizr 2.0.6 (Custom Build) | MIT & BSD + * Build: http://www.modernizr.com/download/#-iepp + */ +;window.Modernizr=function(a,b,c){function w(a,b){return!!~(""+a).indexOf(b)}function v(a,b){return typeof a===b}function u(a,b){return t(prefixes.join(a+";")+(b||""))}function t(a){j.cssText=a}var d="2.0.6",e={},f=b.documentElement,g=b.head||b.getElementsByTagName("head")[0],h="modernizr",i=b.createElement(h),j=i.style,k,l=Object.prototype.toString,m={},n={},o={},p=[],q,r={}.hasOwnProperty,s;!v(r,c)&&!v(r.call,c)?s=function(a,b){return r.call(a,b)}:s=function(a,b){return b in a&&v(a.constructor.prototype[b],c)};for(var x in m)s(m,x)&&(q=x.toLowerCase(),e[q]=m[x](),p.push((e[q]?"":"no-")+q));t(""),i=k=null,a.attachEvent&&function(){var a=b.createElement("div");a.innerHTML="";return a.childNodes.length!==1}()&&function(a,b){function s(a){var b=-1;while(++b to avoid XSS via location.hash (#9521) + quickExpr = /^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/, + + // Check if a string has a non-whitespace character in it + rnotwhite = /\S/, + + // Used for trimming whitespace + trimLeft = /^\s+/, + trimRight = /\s+$/, + + // Check for digits + rdigit = /\d/, + + // Match a standalone tag + rsingleTag = /^<(\w+)\s*\/?>(?:<\/\1>)?$/, + + // JSON RegExp + rvalidchars = /^[\],:{}\s]*$/, + rvalidescape = /\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g, + rvalidtokens = /"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, + rvalidbraces = /(?:^|:|,)(?:\s*\[)+/g, + + // Useragent RegExp + rwebkit = /(webkit)[ \/]([\w.]+)/, + ropera = /(opera)(?:.*version)?[ \/]([\w.]+)/, + rmsie = /(msie) ([\w.]+)/, + rmozilla = /(mozilla)(?:.*? rv:([\w.]+))?/, + + // Matches dashed string for camelizing + rdashAlpha = /-([a-z]|[0-9])/ig, + rmsPrefix = /^-ms-/, + + // Used by jQuery.camelCase as callback to replace() + fcamelCase = function( all, letter ) { + return ( letter + "" ).toUpperCase(); + }, + + // Keep a UserAgent string for use with jQuery.browser + userAgent = navigator.userAgent, + + // For matching the engine and version of the browser + browserMatch, + + // The deferred used on DOM ready + readyList, + + // The ready event handler + DOMContentLoaded, + + // Save a reference to some core methods + toString = Object.prototype.toString, + hasOwn = Object.prototype.hasOwnProperty, + push = Array.prototype.push, + slice = Array.prototype.slice, + trim = String.prototype.trim, + indexOf = Array.prototype.indexOf, + + // [[Class]] -> type pairs + class2type = {}; + +jQuery.fn = jQuery.prototype = { + constructor: jQuery, + init: function( selector, context, rootjQuery ) { + var match, elem, ret, doc; + + // Handle $(""), $(null), or $(undefined) + if ( !selector ) { + return this; + } + + // Handle $(DOMElement) + if ( selector.nodeType ) { + this.context = this[0] = selector; + this.length = 1; + return this; + } + + // The body element only exists once, optimize finding it + if ( selector === "body" && !context && document.body ) { + this.context = document; + this[0] = document.body; + this.selector = selector; + this.length = 1; + return this; + } + + // Handle HTML strings + if ( typeof selector === "string" ) { + // Are we dealing with HTML string or an ID? + if ( selector.charAt(0) === "<" && selector.charAt( selector.length - 1 ) === ">" && selector.length >= 3 ) { + // Assume that strings that start and end with <> are HTML and skip the regex check + match = [ null, selector, null ]; + + } else { + match = quickExpr.exec( selector ); + } + + // Verify a match, and that no context was specified for #id + if ( match && (match[1] || !context) ) { + + // HANDLE: $(html) -> $(array) + if ( match[1] ) { + context = context instanceof jQuery ? context[0] : context; + doc = (context ? context.ownerDocument || context : document); + + // If a single string is passed in and it's a single tag + // just do a createElement and skip the rest + ret = rsingleTag.exec( selector ); + + if ( ret ) { + if ( jQuery.isPlainObject( context ) ) { + selector = [ document.createElement( ret[1] ) ]; + jQuery.fn.attr.call( selector, context, true ); + + } else { + selector = [ doc.createElement( ret[1] ) ]; + } + + } else { + ret = jQuery.buildFragment( [ match[1] ], [ doc ] ); + selector = (ret.cacheable ? jQuery.clone(ret.fragment) : ret.fragment).childNodes; + } + + return jQuery.merge( this, selector ); + + // HANDLE: $("#id") + } else { + elem = document.getElementById( match[2] ); + + // Check parentNode to catch when Blackberry 4.6 returns + // nodes that are no longer in the document #6963 + if ( elem && elem.parentNode ) { + // Handle the case where IE and Opera return items + // by name instead of ID + if ( elem.id !== match[2] ) { + return rootjQuery.find( selector ); + } + + // Otherwise, we inject the element directly into the jQuery object + this.length = 1; + this[0] = elem; + } + + this.context = document; + this.selector = selector; + return this; + } + + // HANDLE: $(expr, $(...)) + } else if ( !context || context.jquery ) { + return (context || rootjQuery).find( selector ); + + // HANDLE: $(expr, context) + // (which is just equivalent to: $(context).find(expr) + } else { + return this.constructor( context ).find( selector ); + } + + // HANDLE: $(function) + // Shortcut for document ready + } else if ( jQuery.isFunction( selector ) ) { + return rootjQuery.ready( selector ); + } + + if (selector.selector !== undefined) { + this.selector = selector.selector; + this.context = selector.context; + } + + return jQuery.makeArray( selector, this ); + }, + + // Start with an empty selector + selector: "", + + // The current version of jQuery being used + jquery: "1.6.3", + + // The default length of a jQuery object is 0 + length: 0, + + // The number of elements contained in the matched element set + size: function() { + return this.length; + }, + + toArray: function() { + return slice.call( this, 0 ); + }, + + // Get the Nth element in the matched element set OR + // Get the whole matched element set as a clean array + get: function( num ) { + return num == null ? + + // Return a 'clean' array + this.toArray() : + + // Return just the object + ( num < 0 ? this[ this.length + num ] : this[ num ] ); + }, + + // Take an array of elements and push it onto the stack + // (returning the new matched element set) + pushStack: function( elems, name, selector ) { + // Build a new jQuery matched element set + var ret = this.constructor(); + + if ( jQuery.isArray( elems ) ) { + push.apply( ret, elems ); + + } else { + jQuery.merge( ret, elems ); + } + + // Add the old object onto the stack (as a reference) + ret.prevObject = this; + + ret.context = this.context; + + if ( name === "find" ) { + ret.selector = this.selector + (this.selector ? " " : "") + selector; + } else if ( name ) { + ret.selector = this.selector + "." + name + "(" + selector + ")"; + } + + // Return the newly-formed element set + return ret; + }, + + // Execute a callback for every element in the matched set. + // (You can seed the arguments with an array of args, but this is + // only used internally.) + each: function( callback, args ) { + return jQuery.each( this, callback, args ); + }, + + ready: function( fn ) { + // Attach the listeners + jQuery.bindReady(); + + // Add the callback + readyList.done( fn ); + + return this; + }, + + eq: function( i ) { + return i === -1 ? + this.slice( i ) : + this.slice( i, +i + 1 ); + }, + + first: function() { + return this.eq( 0 ); + }, + + last: function() { + return this.eq( -1 ); + }, + + slice: function() { + return this.pushStack( slice.apply( this, arguments ), + "slice", slice.call(arguments).join(",") ); + }, + + map: function( callback ) { + return this.pushStack( jQuery.map(this, function( elem, i ) { + return callback.call( elem, i, elem ); + })); + }, + + end: function() { + return this.prevObject || this.constructor(null); + }, + + // For internal use only. + // Behaves like an Array's method, not like a jQuery method. + push: push, + sort: [].sort, + splice: [].splice +}; + +// Give the init function the jQuery prototype for later instantiation +jQuery.fn.init.prototype = jQuery.fn; + +jQuery.extend = jQuery.fn.extend = function() { + var options, name, src, copy, copyIsArray, clone, + target = arguments[0] || {}, + i = 1, + length = arguments.length, + deep = false; + + // Handle a deep copy situation + if ( typeof target === "boolean" ) { + deep = target; + target = arguments[1] || {}; + // skip the boolean and the target + i = 2; + } + + // Handle case when target is a string or something (possible in deep copy) + if ( typeof target !== "object" && !jQuery.isFunction(target) ) { + target = {}; + } + + // extend jQuery itself if only one argument is passed + if ( length === i ) { + target = this; + --i; + } + + for ( ; i < length; i++ ) { + // Only deal with non-null/undefined values + if ( (options = arguments[ i ]) != null ) { + // Extend the base object + for ( name in options ) { + src = target[ name ]; + copy = options[ name ]; + + // Prevent never-ending loop + if ( target === copy ) { + continue; + } + + // Recurse if we're merging plain objects or arrays + if ( deep && copy && ( jQuery.isPlainObject(copy) || (copyIsArray = jQuery.isArray(copy)) ) ) { + if ( copyIsArray ) { + copyIsArray = false; + clone = src && jQuery.isArray(src) ? src : []; + + } else { + clone = src && jQuery.isPlainObject(src) ? src : {}; + } + + // Never move original objects, clone them + target[ name ] = jQuery.extend( deep, clone, copy ); + + // Don't bring in undefined values + } else if ( copy !== undefined ) { + target[ name ] = copy; + } + } + } + } + + // Return the modified object + return target; +}; + +jQuery.extend({ + noConflict: function( deep ) { + if ( window.$ === jQuery ) { + window.$ = _$; + } + + if ( deep && window.jQuery === jQuery ) { + window.jQuery = _jQuery; + } + + return jQuery; + }, + + // Is the DOM ready to be used? Set to true once it occurs. + isReady: false, + + // A counter to track how many items to wait for before + // the ready event fires. See #6781 + readyWait: 1, + + // Hold (or release) the ready event + holdReady: function( hold ) { + if ( hold ) { + jQuery.readyWait++; + } else { + jQuery.ready( true ); + } + }, + + // Handle when the DOM is ready + ready: function( wait ) { + // Either a released hold or an DOMready/load event and not yet ready + if ( (wait === true && !--jQuery.readyWait) || (wait !== true && !jQuery.isReady) ) { + // Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443). + if ( !document.body ) { + return setTimeout( jQuery.ready, 1 ); + } + + // Remember that the DOM is ready + jQuery.isReady = true; + + // If a normal DOM Ready event fired, decrement, and wait if need be + if ( wait !== true && --jQuery.readyWait > 0 ) { + return; + } + + // If there are functions bound, to execute + readyList.resolveWith( document, [ jQuery ] ); + + // Trigger any bound ready events + if ( jQuery.fn.trigger ) { + jQuery( document ).trigger( "ready" ).unbind( "ready" ); + } + } + }, + + bindReady: function() { + if ( readyList ) { + return; + } + + readyList = jQuery._Deferred(); + + // Catch cases where $(document).ready() is called after the + // browser event has already occurred. + if ( document.readyState === "complete" ) { + // Handle it asynchronously to allow scripts the opportunity to delay ready + return setTimeout( jQuery.ready, 1 ); + } + + // Mozilla, Opera and webkit nightlies currently support this event + if ( document.addEventListener ) { + // Use the handy event callback + document.addEventListener( "DOMContentLoaded", DOMContentLoaded, false ); + + // A fallback to window.onload, that will always work + window.addEventListener( "load", jQuery.ready, false ); + + // If IE event model is used + } else if ( document.attachEvent ) { + // ensure firing before onload, + // maybe late but safe also for iframes + document.attachEvent( "onreadystatechange", DOMContentLoaded ); + + // A fallback to window.onload, that will always work + window.attachEvent( "onload", jQuery.ready ); + + // If IE and not a frame + // continually check to see if the document is ready + var toplevel = false; + + try { + toplevel = window.frameElement == null; + } catch(e) {} + + if ( document.documentElement.doScroll && toplevel ) { + doScrollCheck(); + } + } + }, + + // See test/unit/core.js for details concerning isFunction. + // Since version 1.3, DOM methods and functions like alert + // aren't supported. They return false on IE (#2968). + isFunction: function( obj ) { + return jQuery.type(obj) === "function"; + }, + + isArray: Array.isArray || function( obj ) { + return jQuery.type(obj) === "array"; + }, + + // A crude way of determining if an object is a window + isWindow: function( obj ) { + return obj && typeof obj === "object" && "setInterval" in obj; + }, + + isNaN: function( obj ) { + return obj == null || !rdigit.test( obj ) || isNaN( obj ); + }, + + type: function( obj ) { + return obj == null ? + String( obj ) : + class2type[ toString.call(obj) ] || "object"; + }, + + isPlainObject: function( obj ) { + // Must be an Object. + // Because of IE, we also have to check the presence of the constructor property. + // Make sure that DOM nodes and window objects don't pass through, as well + if ( !obj || jQuery.type(obj) !== "object" || obj.nodeType || jQuery.isWindow( obj ) ) { + return false; + } + + try { + // Not own constructor property must be Object + if ( obj.constructor && + !hasOwn.call(obj, "constructor") && + !hasOwn.call(obj.constructor.prototype, "isPrototypeOf") ) { + return false; + } + } catch ( e ) { + // IE8,9 Will throw exceptions on certain host objects #9897 + return false; + } + + // Own properties are enumerated firstly, so to speed up, + // if last one is own, then all properties are own. + + var key; + for ( key in obj ) {} + + return key === undefined || hasOwn.call( obj, key ); + }, + + isEmptyObject: function( obj ) { + for ( var name in obj ) { + return false; + } + return true; + }, + + error: function( msg ) { + throw msg; + }, + + parseJSON: function( data ) { + if ( typeof data !== "string" || !data ) { + return null; + } + + // Make sure leading/trailing whitespace is removed (IE can't handle it) + data = jQuery.trim( data ); + + // Attempt to parse using the native JSON parser first + if ( window.JSON && window.JSON.parse ) { + return window.JSON.parse( data ); + } + + // Make sure the incoming data is actual JSON + // Logic borrowed from http://json.org/json2.js + if ( rvalidchars.test( data.replace( rvalidescape, "@" ) + .replace( rvalidtokens, "]" ) + .replace( rvalidbraces, "")) ) { + + return (new Function( "return " + data ))(); + + } + jQuery.error( "Invalid JSON: " + data ); + }, + + // Cross-browser xml parsing + parseXML: function( data ) { + var xml, tmp; + try { + if ( window.DOMParser ) { // Standard + tmp = new DOMParser(); + xml = tmp.parseFromString( data , "text/xml" ); + } else { // IE + xml = new ActiveXObject( "Microsoft.XMLDOM" ); + xml.async = "false"; + xml.loadXML( data ); + } + } catch( e ) { + xml = undefined; + } + if ( !xml || !xml.documentElement || xml.getElementsByTagName( "parsererror" ).length ) { + jQuery.error( "Invalid XML: " + data ); + } + return xml; + }, + + noop: function() {}, + + // Evaluates a script in a global context + // Workarounds based on findings by Jim Driscoll + // http://weblogs.java.net/blog/driscoll/archive/2009/09/08/eval-javascript-global-context + globalEval: function( data ) { + if ( data && rnotwhite.test( data ) ) { + // We use execScript on Internet Explorer + // We use an anonymous function so that context is window + // rather than jQuery in Firefox + ( window.execScript || function( data ) { + window[ "eval" ].call( window, data ); + } )( data ); + } + }, + + // Convert dashed to camelCase; used by the css and data modules + // Microsoft forgot to hump their vendor prefix (#9572) + camelCase: function( string ) { + return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase ); + }, + + nodeName: function( elem, name ) { + return elem.nodeName && elem.nodeName.toUpperCase() === name.toUpperCase(); + }, + + // args is for internal usage only + each: function( object, callback, args ) { + var name, i = 0, + length = object.length, + isObj = length === undefined || jQuery.isFunction( object ); + + if ( args ) { + if ( isObj ) { + for ( name in object ) { + if ( callback.apply( object[ name ], args ) === false ) { + break; + } + } + } else { + for ( ; i < length; ) { + if ( callback.apply( object[ i++ ], args ) === false ) { + break; + } + } + } + + // A special, fast, case for the most common use of each + } else { + if ( isObj ) { + for ( name in object ) { + if ( callback.call( object[ name ], name, object[ name ] ) === false ) { + break; + } + } + } else { + for ( ; i < length; ) { + if ( callback.call( object[ i ], i, object[ i++ ] ) === false ) { + break; + } + } + } + } + + return object; + }, + + // Use native String.trim function wherever possible + trim: trim ? + function( text ) { + return text == null ? + "" : + trim.call( text ); + } : + + // Otherwise use our own trimming functionality + function( text ) { + return text == null ? + "" : + text.toString().replace( trimLeft, "" ).replace( trimRight, "" ); + }, + + // results is for internal usage only + makeArray: function( array, results ) { + var ret = results || []; + + if ( array != null ) { + // The window, strings (and functions) also have 'length' + // The extra typeof function check is to prevent crashes + // in Safari 2 (See: #3039) + // Tweaked logic slightly to handle Blackberry 4.7 RegExp issues #6930 + var type = jQuery.type( array ); + + if ( array.length == null || type === "string" || type === "function" || type === "regexp" || jQuery.isWindow( array ) ) { + push.call( ret, array ); + } else { + jQuery.merge( ret, array ); + } + } + + return ret; + }, + + inArray: function( elem, array ) { + if ( !array ) { + return -1; + } + + if ( indexOf ) { + return indexOf.call( array, elem ); + } + + for ( var i = 0, length = array.length; i < length; i++ ) { + if ( array[ i ] === elem ) { + return i; + } + } + + return -1; + }, + + merge: function( first, second ) { + var i = first.length, + j = 0; + + if ( typeof second.length === "number" ) { + for ( var l = second.length; j < l; j++ ) { + first[ i++ ] = second[ j ]; + } + + } else { + while ( second[j] !== undefined ) { + first[ i++ ] = second[ j++ ]; + } + } + + first.length = i; + + return first; + }, + + grep: function( elems, callback, inv ) { + var ret = [], retVal; + inv = !!inv; + + // Go through the array, only saving the items + // that pass the validator function + for ( var i = 0, length = elems.length; i < length; i++ ) { + retVal = !!callback( elems[ i ], i ); + if ( inv !== retVal ) { + ret.push( elems[ i ] ); + } + } + + return ret; + }, + + // arg is for internal usage only + map: function( elems, callback, arg ) { + var value, key, ret = [], + i = 0, + length = elems.length, + // jquery objects are treated as arrays + isArray = elems instanceof jQuery || length !== undefined && typeof length === "number" && ( ( length > 0 && elems[ 0 ] && elems[ length -1 ] ) || length === 0 || jQuery.isArray( elems ) ) ; + + // Go through the array, translating each of the items to their + if ( isArray ) { + for ( ; i < length; i++ ) { + value = callback( elems[ i ], i, arg ); + + if ( value != null ) { + ret[ ret.length ] = value; + } + } + + // Go through every key on the object, + } else { + for ( key in elems ) { + value = callback( elems[ key ], key, arg ); + + if ( value != null ) { + ret[ ret.length ] = value; + } + } + } + + // Flatten any nested arrays + return ret.concat.apply( [], ret ); + }, + + // A global GUID counter for objects + guid: 1, + + // Bind a function to a context, optionally partially applying any + // arguments. + proxy: function( fn, context ) { + if ( typeof context === "string" ) { + var tmp = fn[ context ]; + context = fn; + fn = tmp; + } + + // Quick check to determine if target is callable, in the spec + // this throws a TypeError, but we will just return undefined. + if ( !jQuery.isFunction( fn ) ) { + return undefined; + } + + // Simulated bind + var args = slice.call( arguments, 2 ), + proxy = function() { + return fn.apply( context, args.concat( slice.call( arguments ) ) ); + }; + + // Set the guid of unique handler to the same of original handler, so it can be removed + proxy.guid = fn.guid = fn.guid || proxy.guid || jQuery.guid++; + + return proxy; + }, + + // Mutifunctional method to get and set values to a collection + // The value/s can optionally be executed if it's a function + access: function( elems, key, value, exec, fn, pass ) { + var length = elems.length; + + // Setting many attributes + if ( typeof key === "object" ) { + for ( var k in key ) { + jQuery.access( elems, k, key[k], exec, fn, value ); + } + return elems; + } + + // Setting one attribute + if ( value !== undefined ) { + // Optionally, function values get executed if exec is true + exec = !pass && exec && jQuery.isFunction(value); + + for ( var i = 0; i < length; i++ ) { + fn( elems[i], key, exec ? value.call( elems[i], i, fn( elems[i], key ) ) : value, pass ); + } + + return elems; + } + + // Getting an attribute + return length ? fn( elems[0], key ) : undefined; + }, + + now: function() { + return (new Date()).getTime(); + }, + + // Use of jQuery.browser is frowned upon. + // More details: http://docs.jquery.com/Utilities/jQuery.browser + uaMatch: function( ua ) { + ua = ua.toLowerCase(); + + var match = rwebkit.exec( ua ) || + ropera.exec( ua ) || + rmsie.exec( ua ) || + ua.indexOf("compatible") < 0 && rmozilla.exec( ua ) || + []; + + return { browser: match[1] || "", version: match[2] || "0" }; + }, + + sub: function() { + function jQuerySub( selector, context ) { + return new jQuerySub.fn.init( selector, context ); + } + jQuery.extend( true, jQuerySub, this ); + jQuerySub.superclass = this; + jQuerySub.fn = jQuerySub.prototype = this(); + jQuerySub.fn.constructor = jQuerySub; + jQuerySub.sub = this.sub; + jQuerySub.fn.init = function init( selector, context ) { + if ( context && context instanceof jQuery && !(context instanceof jQuerySub) ) { + context = jQuerySub( context ); + } + + return jQuery.fn.init.call( this, selector, context, rootjQuerySub ); + }; + jQuerySub.fn.init.prototype = jQuerySub.fn; + var rootjQuerySub = jQuerySub(document); + return jQuerySub; + }, + + browser: {} +}); + +// Populate the class2type map +jQuery.each("Boolean Number String Function Array Date RegExp Object".split(" "), function(i, name) { + class2type[ "[object " + name + "]" ] = name.toLowerCase(); +}); + +browserMatch = jQuery.uaMatch( userAgent ); +if ( browserMatch.browser ) { + jQuery.browser[ browserMatch.browser ] = true; + jQuery.browser.version = browserMatch.version; +} + +// Deprecated, use jQuery.browser.webkit instead +if ( jQuery.browser.webkit ) { + jQuery.browser.safari = true; +} + +// IE doesn't match non-breaking spaces with \s +if ( rnotwhite.test( "\xA0" ) ) { + trimLeft = /^[\s\xA0]+/; + trimRight = /[\s\xA0]+$/; +} + +// All jQuery objects should point back to these +rootjQuery = jQuery(document); + +// Cleanup functions for the document ready method +if ( document.addEventListener ) { + DOMContentLoaded = function() { + document.removeEventListener( "DOMContentLoaded", DOMContentLoaded, false ); + jQuery.ready(); + }; + +} else if ( document.attachEvent ) { + DOMContentLoaded = function() { + // Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443). + if ( document.readyState === "complete" ) { + document.detachEvent( "onreadystatechange", DOMContentLoaded ); + jQuery.ready(); + } + }; +} + +// The DOM ready check for Internet Explorer +function doScrollCheck() { + if ( jQuery.isReady ) { + return; + } + + try { + // If IE is used, use the trick by Diego Perini + // http://javascript.nwbox.com/IEContentLoaded/ + document.documentElement.doScroll("left"); + } catch(e) { + setTimeout( doScrollCheck, 1 ); + return; + } + + // and execute any waiting functions + jQuery.ready(); +} + +return jQuery; + +})(); + + +var // Promise methods + promiseMethods = "done fail isResolved isRejected promise then always pipe".split( " " ), + // Static reference to slice + sliceDeferred = [].slice; + +jQuery.extend({ + // Create a simple deferred (one callbacks list) + _Deferred: function() { + var // callbacks list + callbacks = [], + // stored [ context , args ] + fired, + // to avoid firing when already doing so + firing, + // flag to know if the deferred has been cancelled + cancelled, + // the deferred itself + deferred = { + + // done( f1, f2, ...) + done: function() { + if ( !cancelled ) { + var args = arguments, + i, + length, + elem, + type, + _fired; + if ( fired ) { + _fired = fired; + fired = 0; + } + for ( i = 0, length = args.length; i < length; i++ ) { + elem = args[ i ]; + type = jQuery.type( elem ); + if ( type === "array" ) { + deferred.done.apply( deferred, elem ); + } else if ( type === "function" ) { + callbacks.push( elem ); + } + } + if ( _fired ) { + deferred.resolveWith( _fired[ 0 ], _fired[ 1 ] ); + } + } + return this; + }, + + // resolve with given context and args + resolveWith: function( context, args ) { + if ( !cancelled && !fired && !firing ) { + // make sure args are available (#8421) + args = args || []; + firing = 1; + try { + while( callbacks[ 0 ] ) { + callbacks.shift().apply( context, args ); + } + } + finally { + fired = [ context, args ]; + firing = 0; + } + } + return this; + }, + + // resolve with this as context and given arguments + resolve: function() { + deferred.resolveWith( this, arguments ); + return this; + }, + + // Has this deferred been resolved? + isResolved: function() { + return !!( firing || fired ); + }, + + // Cancel + cancel: function() { + cancelled = 1; + callbacks = []; + return this; + } + }; + + return deferred; + }, + + // Full fledged deferred (two callbacks list) + Deferred: function( func ) { + var deferred = jQuery._Deferred(), + failDeferred = jQuery._Deferred(), + promise; + // Add errorDeferred methods, then and promise + jQuery.extend( deferred, { + then: function( doneCallbacks, failCallbacks ) { + deferred.done( doneCallbacks ).fail( failCallbacks ); + return this; + }, + always: function() { + return deferred.done.apply( deferred, arguments ).fail.apply( this, arguments ); + }, + fail: failDeferred.done, + rejectWith: failDeferred.resolveWith, + reject: failDeferred.resolve, + isRejected: failDeferred.isResolved, + pipe: function( fnDone, fnFail ) { + return jQuery.Deferred(function( newDefer ) { + jQuery.each( { + done: [ fnDone, "resolve" ], + fail: [ fnFail, "reject" ] + }, function( handler, data ) { + var fn = data[ 0 ], + action = data[ 1 ], + returned; + if ( jQuery.isFunction( fn ) ) { + deferred[ handler ](function() { + returned = fn.apply( this, arguments ); + if ( returned && jQuery.isFunction( returned.promise ) ) { + returned.promise().then( newDefer.resolve, newDefer.reject ); + } else { + newDefer[ action + "With" ]( this === deferred ? newDefer : this, [ returned ] ); + } + }); + } else { + deferred[ handler ]( newDefer[ action ] ); + } + }); + }).promise(); + }, + // Get a promise for this deferred + // If obj is provided, the promise aspect is added to the object + promise: function( obj ) { + if ( obj == null ) { + if ( promise ) { + return promise; + } + promise = obj = {}; + } + var i = promiseMethods.length; + while( i-- ) { + obj[ promiseMethods[i] ] = deferred[ promiseMethods[i] ]; + } + return obj; + } + }); + // Make sure only one callback list will be used + deferred.done( failDeferred.cancel ).fail( deferred.cancel ); + // Unexpose cancel + delete deferred.cancel; + // Call given func if any + if ( func ) { + func.call( deferred, deferred ); + } + return deferred; + }, + + // Deferred helper + when: function( firstParam ) { + var args = arguments, + i = 0, + length = args.length, + count = length, + deferred = length <= 1 && firstParam && jQuery.isFunction( firstParam.promise ) ? + firstParam : + jQuery.Deferred(); + function resolveFunc( i ) { + return function( value ) { + args[ i ] = arguments.length > 1 ? sliceDeferred.call( arguments, 0 ) : value; + if ( !( --count ) ) { + // Strange bug in FF4: + // Values changed onto the arguments object sometimes end up as undefined values + // outside the $.when method. Cloning the object into a fresh array solves the issue + deferred.resolveWith( deferred, sliceDeferred.call( args, 0 ) ); + } + }; + } + if ( length > 1 ) { + for( ; i < length; i++ ) { + if ( args[ i ] && jQuery.isFunction( args[ i ].promise ) ) { + args[ i ].promise().then( resolveFunc(i), deferred.reject ); + } else { + --count; + } + } + if ( !count ) { + deferred.resolveWith( deferred, args ); + } + } else if ( deferred !== firstParam ) { + deferred.resolveWith( deferred, length ? [ firstParam ] : [] ); + } + return deferred.promise(); + } +}); + + + +jQuery.support = (function() { + + var div = document.createElement( "div" ), + documentElement = document.documentElement, + all, + a, + select, + opt, + input, + marginDiv, + support, + fragment, + body, + testElementParent, + testElement, + testElementStyle, + tds, + events, + eventName, + i, + isSupported; + + // Preliminary tests + div.setAttribute("className", "t"); + div.innerHTML = "
      a"; + + + all = div.getElementsByTagName( "*" ); + a = div.getElementsByTagName( "a" )[ 0 ]; + + // Can't get basic test support + if ( !all || !all.length || !a ) { + return {}; + } + + // First batch of supports tests + select = document.createElement( "select" ); + opt = select.appendChild( document.createElement("option") ); + input = div.getElementsByTagName( "input" )[ 0 ]; + + support = { + // IE strips leading whitespace when .innerHTML is used + leadingWhitespace: ( div.firstChild.nodeType === 3 ), + + // Make sure that tbody elements aren't automatically inserted + // IE will insert them into empty tables + tbody: !div.getElementsByTagName( "tbody" ).length, + + // Make sure that link elements get serialized correctly by innerHTML + // This requires a wrapper element in IE + htmlSerialize: !!div.getElementsByTagName( "link" ).length, + + // Get the style information from getAttribute + // (IE uses .cssText instead) + style: /top/.test( a.getAttribute("style") ), + + // Make sure that URLs aren't manipulated + // (IE normalizes it by default) + hrefNormalized: ( a.getAttribute( "href" ) === "/a" ), + + // Make sure that element opacity exists + // (IE uses filter instead) + // Use a regex to work around a WebKit issue. See #5145 + opacity: /^0.55$/.test( a.style.opacity ), + + // Verify style float existence + // (IE uses styleFloat instead of cssFloat) + cssFloat: !!a.style.cssFloat, + + // Make sure that if no value is specified for a checkbox + // that it defaults to "on". + // (WebKit defaults to "" instead) + checkOn: ( input.value === "on" ), + + // Make sure that a selected-by-default option has a working selected property. + // (WebKit defaults to false instead of true, IE too, if it's in an optgroup) + optSelected: opt.selected, + + // Test setAttribute on camelCase class. If it works, we need attrFixes when doing get/setAttribute (ie6/7) + getSetAttribute: div.className !== "t", + + // Will be defined later + submitBubbles: true, + changeBubbles: true, + focusinBubbles: false, + deleteExpando: true, + noCloneEvent: true, + inlineBlockNeedsLayout: false, + shrinkWrapBlocks: false, + reliableMarginRight: true + }; + + // Make sure checked status is properly cloned + input.checked = true; + support.noCloneChecked = input.cloneNode( true ).checked; + + // Make sure that the options inside disabled selects aren't marked as disabled + // (WebKit marks them as disabled) + select.disabled = true; + support.optDisabled = !opt.disabled; + + // Test to see if it's possible to delete an expando from an element + // Fails in Internet Explorer + try { + delete div.test; + } catch( e ) { + support.deleteExpando = false; + } + + if ( !div.addEventListener && div.attachEvent && div.fireEvent ) { + div.attachEvent( "onclick", function() { + // Cloning a node shouldn't copy over any + // bound event handlers (IE does this) + support.noCloneEvent = false; + }); + div.cloneNode( true ).fireEvent( "onclick" ); + } + + // Check if a radio maintains it's value + // after being appended to the DOM + input = document.createElement("input"); + input.value = "t"; + input.setAttribute("type", "radio"); + support.radioValue = input.value === "t"; + + input.setAttribute("checked", "checked"); + div.appendChild( input ); + fragment = document.createDocumentFragment(); + fragment.appendChild( div.firstChild ); + + // WebKit doesn't clone checked state correctly in fragments + support.checkClone = fragment.cloneNode( true ).cloneNode( true ).lastChild.checked; + + div.innerHTML = ""; + + // Figure out if the W3C box model works as expected + div.style.width = div.style.paddingLeft = "1px"; + + body = document.getElementsByTagName( "body" )[ 0 ]; + // We use our own, invisible, body unless the body is already present + // in which case we use a div (#9239) + testElement = document.createElement( body ? "div" : "body" ); + testElementStyle = { + visibility: "hidden", + width: 0, + height: 0, + border: 0, + margin: 0, + background: "none" + }; + if ( body ) { + jQuery.extend( testElementStyle, { + position: "absolute", + left: "-1000px", + top: "-1000px" + }); + } + for ( i in testElementStyle ) { + testElement.style[ i ] = testElementStyle[ i ]; + } + testElement.appendChild( div ); + testElementParent = body || documentElement; + testElementParent.insertBefore( testElement, testElementParent.firstChild ); + + // Check if a disconnected checkbox will retain its checked + // value of true after appended to the DOM (IE6/7) + support.appendChecked = input.checked; + + support.boxModel = div.offsetWidth === 2; + + if ( "zoom" in div.style ) { + // Check if natively block-level elements act like inline-block + // elements when setting their display to 'inline' and giving + // them layout + // (IE < 8 does this) + div.style.display = "inline"; + div.style.zoom = 1; + support.inlineBlockNeedsLayout = ( div.offsetWidth === 2 ); + + // Check if elements with layout shrink-wrap their children + // (IE 6 does this) + div.style.display = ""; + div.innerHTML = "
      "; + support.shrinkWrapBlocks = ( div.offsetWidth !== 2 ); + } + + div.innerHTML = "
      t
      "; + tds = div.getElementsByTagName( "td" ); + + // Check if table cells still have offsetWidth/Height when they are set + // to display:none and there are still other visible table cells in a + // table row; if so, offsetWidth/Height are not reliable for use when + // determining if an element has been hidden directly using + // display:none (it is still safe to use offsets if a parent element is + // hidden; don safety goggles and see bug #4512 for more information). + // (only IE 8 fails this test) + isSupported = ( tds[ 0 ].offsetHeight === 0 ); + + tds[ 0 ].style.display = ""; + tds[ 1 ].style.display = "none"; + + // Check if empty table cells still have offsetWidth/Height + // (IE < 8 fail this test) + support.reliableHiddenOffsets = isSupported && ( tds[ 0 ].offsetHeight === 0 ); + div.innerHTML = ""; + + // Check if div with explicit width and no margin-right incorrectly + // gets computed margin-right based on width of container. For more + // info see bug #3333 + // Fails in WebKit before Feb 2011 nightlies + // WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right + if ( document.defaultView && document.defaultView.getComputedStyle ) { + marginDiv = document.createElement( "div" ); + marginDiv.style.width = "0"; + marginDiv.style.marginRight = "0"; + div.appendChild( marginDiv ); + support.reliableMarginRight = + ( parseInt( ( document.defaultView.getComputedStyle( marginDiv, null ) || { marginRight: 0 } ).marginRight, 10 ) || 0 ) === 0; + } + + // Remove the body element we added + testElement.innerHTML = ""; + testElementParent.removeChild( testElement ); + + // Technique from Juriy Zaytsev + // http://thinkweb2.com/projects/prototype/detecting-event-support-without-browser-sniffing/ + // We only care about the case where non-standard event systems + // are used, namely in IE. Short-circuiting here helps us to + // avoid an eval call (in setAttribute) which can cause CSP + // to go haywire. See: https://developer.mozilla.org/en/Security/CSP + if ( div.attachEvent ) { + for( i in { + submit: 1, + change: 1, + focusin: 1 + } ) { + eventName = "on" + i; + isSupported = ( eventName in div ); + if ( !isSupported ) { + div.setAttribute( eventName, "return;" ); + isSupported = ( typeof div[ eventName ] === "function" ); + } + support[ i + "Bubbles" ] = isSupported; + } + } + + // Null connected elements to avoid leaks in IE + testElement = fragment = select = opt = body = marginDiv = div = input = null; + + return support; +})(); + +// Keep track of boxModel +jQuery.boxModel = jQuery.support.boxModel; + + + + +var rbrace = /^(?:\{.*\}|\[.*\])$/, + rmultiDash = /([a-z])([A-Z])/g; + +jQuery.extend({ + cache: {}, + + // Please use with caution + uuid: 0, + + // Unique for each copy of jQuery on the page + // Non-digits removed to match rinlinejQuery + expando: "jQuery" + ( jQuery.fn.jquery + Math.random() ).replace( /\D/g, "" ), + + // The following elements throw uncatchable exceptions if you + // attempt to add expando properties to them. + noData: { + "embed": true, + // Ban all objects except for Flash (which handle expandos) + "object": "clsid:D27CDB6E-AE6D-11cf-96B8-444553540000", + "applet": true + }, + + hasData: function( elem ) { + elem = elem.nodeType ? jQuery.cache[ elem[jQuery.expando] ] : elem[ jQuery.expando ]; + + return !!elem && !isEmptyDataObject( elem ); + }, + + data: function( elem, name, data, pvt /* Internal Use Only */ ) { + if ( !jQuery.acceptData( elem ) ) { + return; + } + + var thisCache, ret, + internalKey = jQuery.expando, + getByName = typeof name === "string", + + // We have to handle DOM nodes and JS objects differently because IE6-7 + // can't GC object references properly across the DOM-JS boundary + isNode = elem.nodeType, + + // Only DOM nodes need the global jQuery cache; JS object data is + // attached directly to the object so GC can occur automatically + cache = isNode ? jQuery.cache : elem, + + // Only defining an ID for JS objects if its cache already exists allows + // the code to shortcut on the same path as a DOM node with no cache + id = isNode ? elem[ jQuery.expando ] : elem[ jQuery.expando ] && jQuery.expando; + + // Avoid doing any more work than we need to when trying to get data on an + // object that has no data at all + if ( (!id || (pvt && id && (cache[ id ] && !cache[ id ][ internalKey ]))) && getByName && data === undefined ) { + return; + } + + if ( !id ) { + // Only DOM nodes need a new unique ID for each element since their data + // ends up in the global cache + if ( isNode ) { + elem[ jQuery.expando ] = id = ++jQuery.uuid; + } else { + id = jQuery.expando; + } + } + + if ( !cache[ id ] ) { + cache[ id ] = {}; + + // TODO: This is a hack for 1.5 ONLY. Avoids exposing jQuery + // metadata on plain JS objects when the object is serialized using + // JSON.stringify + if ( !isNode ) { + cache[ id ].toJSON = jQuery.noop; + } + } + + // An object can be passed to jQuery.data instead of a key/value pair; this gets + // shallow copied over onto the existing cache + if ( typeof name === "object" || typeof name === "function" ) { + if ( pvt ) { + cache[ id ][ internalKey ] = jQuery.extend(cache[ id ][ internalKey ], name); + } else { + cache[ id ] = jQuery.extend(cache[ id ], name); + } + } + + thisCache = cache[ id ]; + + // Internal jQuery data is stored in a separate object inside the object's data + // cache in order to avoid key collisions between internal data and user-defined + // data + if ( pvt ) { + if ( !thisCache[ internalKey ] ) { + thisCache[ internalKey ] = {}; + } + + thisCache = thisCache[ internalKey ]; + } + + if ( data !== undefined ) { + thisCache[ jQuery.camelCase( name ) ] = data; + } + + // TODO: This is a hack for 1.5 ONLY. It will be removed in 1.6. Users should + // not attempt to inspect the internal events object using jQuery.data, as this + // internal data object is undocumented and subject to change. + if ( name === "events" && !thisCache[name] ) { + return thisCache[ internalKey ] && thisCache[ internalKey ].events; + } + + // Check for both converted-to-camel and non-converted data property names + // If a data property was specified + if ( getByName ) { + + // First Try to find as-is property data + ret = thisCache[ name ]; + + // Test for null|undefined property data + if ( ret == null ) { + + // Try to find the camelCased property + ret = thisCache[ jQuery.camelCase( name ) ]; + } + } else { + ret = thisCache; + } + + return ret; + }, + + removeData: function( elem, name, pvt /* Internal Use Only */ ) { + if ( !jQuery.acceptData( elem ) ) { + return; + } + + var thisCache, + + // Reference to internal data cache key + internalKey = jQuery.expando, + + isNode = elem.nodeType, + + // See jQuery.data for more information + cache = isNode ? jQuery.cache : elem, + + // See jQuery.data for more information + id = isNode ? elem[ jQuery.expando ] : jQuery.expando; + + // If there is already no cache entry for this object, there is no + // purpose in continuing + if ( !cache[ id ] ) { + return; + } + + if ( name ) { + + thisCache = pvt ? cache[ id ][ internalKey ] : cache[ id ]; + + if ( thisCache ) { + + // Support interoperable removal of hyphenated or camelcased keys + if ( !thisCache[ name ] ) { + name = jQuery.camelCase( name ); + } + + delete thisCache[ name ]; + + // If there is no data left in the cache, we want to continue + // and let the cache object itself get destroyed + if ( !isEmptyDataObject(thisCache) ) { + return; + } + } + } + + // See jQuery.data for more information + if ( pvt ) { + delete cache[ id ][ internalKey ]; + + // Don't destroy the parent cache unless the internal data object + // had been the only thing left in it + if ( !isEmptyDataObject(cache[ id ]) ) { + return; + } + } + + var internalCache = cache[ id ][ internalKey ]; + + // Browsers that fail expando deletion also refuse to delete expandos on + // the window, but it will allow it on all other JS objects; other browsers + // don't care + // Ensure that `cache` is not a window object #10080 + if ( jQuery.support.deleteExpando || !cache.setInterval ) { + delete cache[ id ]; + } else { + cache[ id ] = null; + } + + // We destroyed the entire user cache at once because it's faster than + // iterating through each key, but we need to continue to persist internal + // data if it existed + if ( internalCache ) { + cache[ id ] = {}; + // TODO: This is a hack for 1.5 ONLY. Avoids exposing jQuery + // metadata on plain JS objects when the object is serialized using + // JSON.stringify + if ( !isNode ) { + cache[ id ].toJSON = jQuery.noop; + } + + cache[ id ][ internalKey ] = internalCache; + + // Otherwise, we need to eliminate the expando on the node to avoid + // false lookups in the cache for entries that no longer exist + } else if ( isNode ) { + // IE does not allow us to delete expando properties from nodes, + // nor does it have a removeAttribute function on Document nodes; + // we must handle all of these cases + if ( jQuery.support.deleteExpando ) { + delete elem[ jQuery.expando ]; + } else if ( elem.removeAttribute ) { + elem.removeAttribute( jQuery.expando ); + } else { + elem[ jQuery.expando ] = null; + } + } + }, + + // For internal use only. + _data: function( elem, name, data ) { + return jQuery.data( elem, name, data, true ); + }, + + // A method for determining if a DOM node can handle the data expando + acceptData: function( elem ) { + if ( elem.nodeName ) { + var match = jQuery.noData[ elem.nodeName.toLowerCase() ]; + + if ( match ) { + return !(match === true || elem.getAttribute("classid") !== match); + } + } + + return true; + } +}); + +jQuery.fn.extend({ + data: function( key, value ) { + var data = null; + + if ( typeof key === "undefined" ) { + if ( this.length ) { + data = jQuery.data( this[0] ); + + if ( this[0].nodeType === 1 ) { + var attr = this[0].attributes, name; + for ( var i = 0, l = attr.length; i < l; i++ ) { + name = attr[i].name; + + if ( name.indexOf( "data-" ) === 0 ) { + name = jQuery.camelCase( name.substring(5) ); + + dataAttr( this[0], name, data[ name ] ); + } + } + } + } + + return data; + + } else if ( typeof key === "object" ) { + return this.each(function() { + jQuery.data( this, key ); + }); + } + + var parts = key.split("."); + parts[1] = parts[1] ? "." + parts[1] : ""; + + if ( value === undefined ) { + data = this.triggerHandler("getData" + parts[1] + "!", [parts[0]]); + + // Try to fetch any internally stored data first + if ( data === undefined && this.length ) { + data = jQuery.data( this[0], key ); + data = dataAttr( this[0], key, data ); + } + + return data === undefined && parts[1] ? + this.data( parts[0] ) : + data; + + } else { + return this.each(function() { + var $this = jQuery( this ), + args = [ parts[0], value ]; + + $this.triggerHandler( "setData" + parts[1] + "!", args ); + jQuery.data( this, key, value ); + $this.triggerHandler( "changeData" + parts[1] + "!", args ); + }); + } + }, + + removeData: function( key ) { + return this.each(function() { + jQuery.removeData( this, key ); + }); + } +}); + +function dataAttr( elem, key, data ) { + // If nothing was found internally, try to fetch any + // data from the HTML5 data-* attribute + if ( data === undefined && elem.nodeType === 1 ) { + var name = "data-" + key.replace( rmultiDash, "$1-$2" ).toLowerCase(); + + data = elem.getAttribute( name ); + + if ( typeof data === "string" ) { + try { + data = data === "true" ? true : + data === "false" ? false : + data === "null" ? null : + !jQuery.isNaN( data ) ? parseFloat( data ) : + rbrace.test( data ) ? jQuery.parseJSON( data ) : + data; + } catch( e ) {} + + // Make sure we set the data so it isn't changed later + jQuery.data( elem, key, data ); + + } else { + data = undefined; + } + } + + return data; +} + +// TODO: This is a hack for 1.5 ONLY to allow objects with a single toJSON +// property to be considered empty objects; this property always exists in +// order to make sure JSON.stringify does not expose internal metadata +function isEmptyDataObject( obj ) { + for ( var name in obj ) { + if ( name !== "toJSON" ) { + return false; + } + } + + return true; +} + + + + +function handleQueueMarkDefer( elem, type, src ) { + var deferDataKey = type + "defer", + queueDataKey = type + "queue", + markDataKey = type + "mark", + defer = jQuery.data( elem, deferDataKey, undefined, true ); + if ( defer && + ( src === "queue" || !jQuery.data( elem, queueDataKey, undefined, true ) ) && + ( src === "mark" || !jQuery.data( elem, markDataKey, undefined, true ) ) ) { + // Give room for hard-coded callbacks to fire first + // and eventually mark/queue something else on the element + setTimeout( function() { + if ( !jQuery.data( elem, queueDataKey, undefined, true ) && + !jQuery.data( elem, markDataKey, undefined, true ) ) { + jQuery.removeData( elem, deferDataKey, true ); + defer.resolve(); + } + }, 0 ); + } +} + +jQuery.extend({ + + _mark: function( elem, type ) { + if ( elem ) { + type = (type || "fx") + "mark"; + jQuery.data( elem, type, (jQuery.data(elem,type,undefined,true) || 0) + 1, true ); + } + }, + + _unmark: function( force, elem, type ) { + if ( force !== true ) { + type = elem; + elem = force; + force = false; + } + if ( elem ) { + type = type || "fx"; + var key = type + "mark", + count = force ? 0 : ( (jQuery.data( elem, key, undefined, true) || 1 ) - 1 ); + if ( count ) { + jQuery.data( elem, key, count, true ); + } else { + jQuery.removeData( elem, key, true ); + handleQueueMarkDefer( elem, type, "mark" ); + } + } + }, + + queue: function( elem, type, data ) { + if ( elem ) { + type = (type || "fx") + "queue"; + var q = jQuery.data( elem, type, undefined, true ); + // Speed up dequeue by getting out quickly if this is just a lookup + if ( data ) { + if ( !q || jQuery.isArray(data) ) { + q = jQuery.data( elem, type, jQuery.makeArray(data), true ); + } else { + q.push( data ); + } + } + return q || []; + } + }, + + dequeue: function( elem, type ) { + type = type || "fx"; + + var queue = jQuery.queue( elem, type ), + fn = queue.shift(), + defer; + + // If the fx queue is dequeued, always remove the progress sentinel + if ( fn === "inprogress" ) { + fn = queue.shift(); + } + + if ( fn ) { + // Add a progress sentinel to prevent the fx queue from being + // automatically dequeued + if ( type === "fx" ) { + queue.unshift("inprogress"); + } + + fn.call(elem, function() { + jQuery.dequeue(elem, type); + }); + } + + if ( !queue.length ) { + jQuery.removeData( elem, type + "queue", true ); + handleQueueMarkDefer( elem, type, "queue" ); + } + } +}); + +jQuery.fn.extend({ + queue: function( type, data ) { + if ( typeof type !== "string" ) { + data = type; + type = "fx"; + } + + if ( data === undefined ) { + return jQuery.queue( this[0], type ); + } + return this.each(function() { + var queue = jQuery.queue( this, type, data ); + + if ( type === "fx" && queue[0] !== "inprogress" ) { + jQuery.dequeue( this, type ); + } + }); + }, + dequeue: function( type ) { + return this.each(function() { + jQuery.dequeue( this, type ); + }); + }, + // Based off of the plugin by Clint Helfers, with permission. + // http://blindsignals.com/index.php/2009/07/jquery-delay/ + delay: function( time, type ) { + time = jQuery.fx ? jQuery.fx.speeds[time] || time : time; + type = type || "fx"; + + return this.queue( type, function() { + var elem = this; + setTimeout(function() { + jQuery.dequeue( elem, type ); + }, time ); + }); + }, + clearQueue: function( type ) { + return this.queue( type || "fx", [] ); + }, + // Get a promise resolved when queues of a certain type + // are emptied (fx is the type by default) + promise: function( type, object ) { + if ( typeof type !== "string" ) { + object = type; + type = undefined; + } + type = type || "fx"; + var defer = jQuery.Deferred(), + elements = this, + i = elements.length, + count = 1, + deferDataKey = type + "defer", + queueDataKey = type + "queue", + markDataKey = type + "mark", + tmp; + function resolve() { + if ( !( --count ) ) { + defer.resolveWith( elements, [ elements ] ); + } + } + while( i-- ) { + if (( tmp = jQuery.data( elements[ i ], deferDataKey, undefined, true ) || + ( jQuery.data( elements[ i ], queueDataKey, undefined, true ) || + jQuery.data( elements[ i ], markDataKey, undefined, true ) ) && + jQuery.data( elements[ i ], deferDataKey, jQuery._Deferred(), true ) )) { + count++; + tmp.done( resolve ); + } + } + resolve(); + return defer.promise(); + } +}); + + + + +var rclass = /[\n\t\r]/g, + rspace = /\s+/, + rreturn = /\r/g, + rtype = /^(?:button|input)$/i, + rfocusable = /^(?:button|input|object|select|textarea)$/i, + rclickable = /^a(?:rea)?$/i, + rboolean = /^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i, + nodeHook, boolHook; + +jQuery.fn.extend({ + attr: function( name, value ) { + return jQuery.access( this, name, value, true, jQuery.attr ); + }, + + removeAttr: function( name ) { + return this.each(function() { + jQuery.removeAttr( this, name ); + }); + }, + + prop: function( name, value ) { + return jQuery.access( this, name, value, true, jQuery.prop ); + }, + + removeProp: function( name ) { + name = jQuery.propFix[ name ] || name; + return this.each(function() { + // try/catch handles cases where IE balks (such as removing a property on window) + try { + this[ name ] = undefined; + delete this[ name ]; + } catch( e ) {} + }); + }, + + addClass: function( value ) { + var classNames, i, l, elem, + setClass, c, cl; + + if ( jQuery.isFunction( value ) ) { + return this.each(function( j ) { + jQuery( this ).addClass( value.call(this, j, this.className) ); + }); + } + + if ( value && typeof value === "string" ) { + classNames = value.split( rspace ); + + for ( i = 0, l = this.length; i < l; i++ ) { + elem = this[ i ]; + + if ( elem.nodeType === 1 ) { + if ( !elem.className && classNames.length === 1 ) { + elem.className = value; + + } else { + setClass = " " + elem.className + " "; + + for ( c = 0, cl = classNames.length; c < cl; c++ ) { + if ( !~setClass.indexOf( " " + classNames[ c ] + " " ) ) { + setClass += classNames[ c ] + " "; + } + } + elem.className = jQuery.trim( setClass ); + } + } + } + } + + return this; + }, + + removeClass: function( value ) { + var classNames, i, l, elem, className, c, cl; + + if ( jQuery.isFunction( value ) ) { + return this.each(function( j ) { + jQuery( this ).removeClass( value.call(this, j, this.className) ); + }); + } + + if ( (value && typeof value === "string") || value === undefined ) { + classNames = (value || "").split( rspace ); + + for ( i = 0, l = this.length; i < l; i++ ) { + elem = this[ i ]; + + if ( elem.nodeType === 1 && elem.className ) { + if ( value ) { + className = (" " + elem.className + " ").replace( rclass, " " ); + for ( c = 0, cl = classNames.length; c < cl; c++ ) { + className = className.replace(" " + classNames[ c ] + " ", " "); + } + elem.className = jQuery.trim( className ); + + } else { + elem.className = ""; + } + } + } + } + + return this; + }, + + toggleClass: function( value, stateVal ) { + var type = typeof value, + isBool = typeof stateVal === "boolean"; + + if ( jQuery.isFunction( value ) ) { + return this.each(function( i ) { + jQuery( this ).toggleClass( value.call(this, i, this.className, stateVal), stateVal ); + }); + } + + return this.each(function() { + if ( type === "string" ) { + // toggle individual class names + var className, + i = 0, + self = jQuery( this ), + state = stateVal, + classNames = value.split( rspace ); + + while ( (className = classNames[ i++ ]) ) { + // check each className given, space seperated list + state = isBool ? state : !self.hasClass( className ); + self[ state ? "addClass" : "removeClass" ]( className ); + } + + } else if ( type === "undefined" || type === "boolean" ) { + if ( this.className ) { + // store className if set + jQuery._data( this, "__className__", this.className ); + } + + // toggle whole className + this.className = this.className || value === false ? "" : jQuery._data( this, "__className__" ) || ""; + } + }); + }, + + hasClass: function( selector ) { + var className = " " + selector + " "; + for ( var i = 0, l = this.length; i < l; i++ ) { + if ( this[i].nodeType === 1 && (" " + this[i].className + " ").replace(rclass, " ").indexOf( className ) > -1 ) { + return true; + } + } + + return false; + }, + + val: function( value ) { + var hooks, ret, + elem = this[0]; + + if ( !arguments.length ) { + if ( elem ) { + hooks = jQuery.valHooks[ elem.nodeName.toLowerCase() ] || jQuery.valHooks[ elem.type ]; + + if ( hooks && "get" in hooks && (ret = hooks.get( elem, "value" )) !== undefined ) { + return ret; + } + + ret = elem.value; + + return typeof ret === "string" ? + // handle most common string cases + ret.replace(rreturn, "") : + // handle cases where value is null/undef or number + ret == null ? "" : ret; + } + + return undefined; + } + + var isFunction = jQuery.isFunction( value ); + + return this.each(function( i ) { + var self = jQuery(this), val; + + if ( this.nodeType !== 1 ) { + return; + } + + if ( isFunction ) { + val = value.call( this, i, self.val() ); + } else { + val = value; + } + + // Treat null/undefined as ""; convert numbers to string + if ( val == null ) { + val = ""; + } else if ( typeof val === "number" ) { + val += ""; + } else if ( jQuery.isArray( val ) ) { + val = jQuery.map(val, function ( value ) { + return value == null ? "" : value + ""; + }); + } + + hooks = jQuery.valHooks[ this.nodeName.toLowerCase() ] || jQuery.valHooks[ this.type ]; + + // If set returns undefined, fall back to normal setting + if ( !hooks || !("set" in hooks) || hooks.set( this, val, "value" ) === undefined ) { + this.value = val; + } + }); + } +}); + +jQuery.extend({ + valHooks: { + option: { + get: function( elem ) { + // attributes.value is undefined in Blackberry 4.7 but + // uses .value. See #6932 + var val = elem.attributes.value; + return !val || val.specified ? elem.value : elem.text; + } + }, + select: { + get: function( elem ) { + var value, + index = elem.selectedIndex, + values = [], + options = elem.options, + one = elem.type === "select-one"; + + // Nothing was selected + if ( index < 0 ) { + return null; + } + + // Loop through all the selected options + for ( var i = one ? index : 0, max = one ? index + 1 : options.length; i < max; i++ ) { + var option = options[ i ]; + + // Don't return options that are disabled or in a disabled optgroup + if ( option.selected && (jQuery.support.optDisabled ? !option.disabled : option.getAttribute("disabled") === null) && + (!option.parentNode.disabled || !jQuery.nodeName( option.parentNode, "optgroup" )) ) { + + // Get the specific value for the option + value = jQuery( option ).val(); + + // We don't need an array for one selects + if ( one ) { + return value; + } + + // Multi-Selects return an array + values.push( value ); + } + } + + // Fixes Bug #2551 -- select.val() broken in IE after form.reset() + if ( one && !values.length && options.length ) { + return jQuery( options[ index ] ).val(); + } + + return values; + }, + + set: function( elem, value ) { + var values = jQuery.makeArray( value ); + + jQuery(elem).find("option").each(function() { + this.selected = jQuery.inArray( jQuery(this).val(), values ) >= 0; + }); + + if ( !values.length ) { + elem.selectedIndex = -1; + } + return values; + } + } + }, + + attrFn: { + val: true, + css: true, + html: true, + text: true, + data: true, + width: true, + height: true, + offset: true + }, + + attrFix: { + // Always normalize to ensure hook usage + tabindex: "tabIndex" + }, + + attr: function( elem, name, value, pass ) { + var nType = elem.nodeType; + + // don't get/set attributes on text, comment and attribute nodes + if ( !elem || nType === 3 || nType === 8 || nType === 2 ) { + return undefined; + } + + if ( pass && name in jQuery.attrFn ) { + return jQuery( elem )[ name ]( value ); + } + + // Fallback to prop when attributes are not supported + if ( !("getAttribute" in elem) ) { + return jQuery.prop( elem, name, value ); + } + + var ret, hooks, + notxml = nType !== 1 || !jQuery.isXMLDoc( elem ); + + // Normalize the name if needed + if ( notxml ) { + name = jQuery.attrFix[ name ] || name; + + hooks = jQuery.attrHooks[ name ]; + + if ( !hooks ) { + // Use boolHook for boolean attributes + if ( rboolean.test( name ) ) { + hooks = boolHook; + + // Use nodeHook if available( IE6/7 ) + } else if ( nodeHook ) { + hooks = nodeHook; + } + } + } + + if ( value !== undefined ) { + + if ( value === null ) { + jQuery.removeAttr( elem, name ); + return undefined; + + } else if ( hooks && "set" in hooks && notxml && (ret = hooks.set( elem, value, name )) !== undefined ) { + return ret; + + } else { + elem.setAttribute( name, "" + value ); + return value; + } + + } else if ( hooks && "get" in hooks && notxml && (ret = hooks.get( elem, name )) !== null ) { + return ret; + + } else { + + ret = elem.getAttribute( name ); + + // Non-existent attributes return null, we normalize to undefined + return ret === null ? + undefined : + ret; + } + }, + + removeAttr: function( elem, name ) { + var propName; + if ( elem.nodeType === 1 ) { + name = jQuery.attrFix[ name ] || name; + + jQuery.attr( elem, name, "" ); + elem.removeAttribute( name ); + + // Set corresponding property to false for boolean attributes + if ( rboolean.test( name ) && (propName = jQuery.propFix[ name ] || name) in elem ) { + elem[ propName ] = false; + } + } + }, + + attrHooks: { + type: { + set: function( elem, value ) { + // We can't allow the type property to be changed (since it causes problems in IE) + if ( rtype.test( elem.nodeName ) && elem.parentNode ) { + jQuery.error( "type property can't be changed" ); + } else if ( !jQuery.support.radioValue && value === "radio" && jQuery.nodeName(elem, "input") ) { + // Setting the type on a radio button after the value resets the value in IE6-9 + // Reset value to it's default in case type is set after value + // This is for element creation + var val = elem.value; + elem.setAttribute( "type", value ); + if ( val ) { + elem.value = val; + } + return value; + } + } + }, + // Use the value property for back compat + // Use the nodeHook for button elements in IE6/7 (#1954) + value: { + get: function( elem, name ) { + if ( nodeHook && jQuery.nodeName( elem, "button" ) ) { + return nodeHook.get( elem, name ); + } + return name in elem ? + elem.value : + null; + }, + set: function( elem, value, name ) { + if ( nodeHook && jQuery.nodeName( elem, "button" ) ) { + return nodeHook.set( elem, value, name ); + } + // Does not return so that setAttribute is also used + elem.value = value; + } + } + }, + + propFix: { + tabindex: "tabIndex", + readonly: "readOnly", + "for": "htmlFor", + "class": "className", + maxlength: "maxLength", + cellspacing: "cellSpacing", + cellpadding: "cellPadding", + rowspan: "rowSpan", + colspan: "colSpan", + usemap: "useMap", + frameborder: "frameBorder", + contenteditable: "contentEditable" + }, + + prop: function( elem, name, value ) { + var nType = elem.nodeType; + + // don't get/set properties on text, comment and attribute nodes + if ( !elem || nType === 3 || nType === 8 || nType === 2 ) { + return undefined; + } + + var ret, hooks, + notxml = nType !== 1 || !jQuery.isXMLDoc( elem ); + + if ( notxml ) { + // Fix name and attach hooks + name = jQuery.propFix[ name ] || name; + hooks = jQuery.propHooks[ name ]; + } + + if ( value !== undefined ) { + if ( hooks && "set" in hooks && (ret = hooks.set( elem, value, name )) !== undefined ) { + return ret; + + } else { + return (elem[ name ] = value); + } + + } else { + if ( hooks && "get" in hooks && (ret = hooks.get( elem, name )) !== null ) { + return ret; + + } else { + return elem[ name ]; + } + } + }, + + propHooks: { + tabIndex: { + get: function( elem ) { + // elem.tabIndex doesn't always return the correct value when it hasn't been explicitly set + // http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/ + var attributeNode = elem.getAttributeNode("tabindex"); + + return attributeNode && attributeNode.specified ? + parseInt( attributeNode.value, 10 ) : + rfocusable.test( elem.nodeName ) || rclickable.test( elem.nodeName ) && elem.href ? + 0 : + undefined; + } + } + } +}); + +// Add the tabindex propHook to attrHooks for back-compat +jQuery.attrHooks.tabIndex = jQuery.propHooks.tabIndex; + +// Hook for boolean attributes +boolHook = { + get: function( elem, name ) { + // Align boolean attributes with corresponding properties + // Fall back to attribute presence where some booleans are not supported + var attrNode; + return jQuery.prop( elem, name ) === true || ( attrNode = elem.getAttributeNode( name ) ) && attrNode.nodeValue !== false ? + name.toLowerCase() : + undefined; + }, + set: function( elem, value, name ) { + var propName; + if ( value === false ) { + // Remove boolean attributes when set to false + jQuery.removeAttr( elem, name ); + } else { + // value is true since we know at this point it's type boolean and not false + // Set boolean attributes to the same name and set the DOM property + propName = jQuery.propFix[ name ] || name; + if ( propName in elem ) { + // Only set the IDL specifically if it already exists on the element + elem[ propName ] = true; + } + + elem.setAttribute( name, name.toLowerCase() ); + } + return name; + } +}; + +// IE6/7 do not support getting/setting some attributes with get/setAttribute +if ( !jQuery.support.getSetAttribute ) { + + // Use this for any attribute in IE6/7 + // This fixes almost every IE6/7 issue + nodeHook = jQuery.valHooks.button = { + get: function( elem, name ) { + var ret; + ret = elem.getAttributeNode( name ); + // Return undefined if nodeValue is empty string + return ret && ret.nodeValue !== "" ? + ret.nodeValue : + undefined; + }, + set: function( elem, value, name ) { + // Set the existing or create a new attribute node + var ret = elem.getAttributeNode( name ); + if ( !ret ) { + ret = document.createAttribute( name ); + elem.setAttributeNode( ret ); + } + return (ret.nodeValue = value + ""); + } + }; + + // Set width and height to auto instead of 0 on empty string( Bug #8150 ) + // This is for removals + jQuery.each([ "width", "height" ], function( i, name ) { + jQuery.attrHooks[ name ] = jQuery.extend( jQuery.attrHooks[ name ], { + set: function( elem, value ) { + if ( value === "" ) { + elem.setAttribute( name, "auto" ); + return value; + } + } + }); + }); +} + + +// Some attributes require a special call on IE +if ( !jQuery.support.hrefNormalized ) { + jQuery.each([ "href", "src", "width", "height" ], function( i, name ) { + jQuery.attrHooks[ name ] = jQuery.extend( jQuery.attrHooks[ name ], { + get: function( elem ) { + var ret = elem.getAttribute( name, 2 ); + return ret === null ? undefined : ret; + } + }); + }); +} + +if ( !jQuery.support.style ) { + jQuery.attrHooks.style = { + get: function( elem ) { + // Return undefined in the case of empty string + // Normalize to lowercase since IE uppercases css property names + return elem.style.cssText.toLowerCase() || undefined; + }, + set: function( elem, value ) { + return (elem.style.cssText = "" + value); + } + }; +} + +// Safari mis-reports the default selected property of an option +// Accessing the parent's selectedIndex property fixes it +if ( !jQuery.support.optSelected ) { + jQuery.propHooks.selected = jQuery.extend( jQuery.propHooks.selected, { + get: function( elem ) { + var parent = elem.parentNode; + + if ( parent ) { + parent.selectedIndex; + + // Make sure that it also works with optgroups, see #5701 + if ( parent.parentNode ) { + parent.parentNode.selectedIndex; + } + } + return null; + } + }); +} + +// Radios and checkboxes getter/setter +if ( !jQuery.support.checkOn ) { + jQuery.each([ "radio", "checkbox" ], function() { + jQuery.valHooks[ this ] = { + get: function( elem ) { + // Handle the case where in Webkit "" is returned instead of "on" if a value isn't specified + return elem.getAttribute("value") === null ? "on" : elem.value; + } + }; + }); +} +jQuery.each([ "radio", "checkbox" ], function() { + jQuery.valHooks[ this ] = jQuery.extend( jQuery.valHooks[ this ], { + set: function( elem, value ) { + if ( jQuery.isArray( value ) ) { + return (elem.checked = jQuery.inArray( jQuery(elem).val(), value ) >= 0); + } + } + }); +}); + + + + +var rnamespaces = /\.(.*)$/, + rformElems = /^(?:textarea|input|select)$/i, + rperiod = /\./g, + rspaces = / /g, + rescape = /[^\w\s.|`]/g, + fcleanup = function( nm ) { + return nm.replace(rescape, "\\$&"); + }; + +/* + * A number of helper functions used for managing events. + * Many of the ideas behind this code originated from + * Dean Edwards' addEvent library. + */ +jQuery.event = { + + // Bind an event to an element + // Original by Dean Edwards + add: function( elem, types, handler, data ) { + if ( elem.nodeType === 3 || elem.nodeType === 8 ) { + return; + } + + if ( handler === false ) { + handler = returnFalse; + } else if ( !handler ) { + // Fixes bug #7229. Fix recommended by jdalton + return; + } + + var handleObjIn, handleObj; + + if ( handler.handler ) { + handleObjIn = handler; + handler = handleObjIn.handler; + } + + // Make sure that the function being executed has a unique ID + if ( !handler.guid ) { + handler.guid = jQuery.guid++; + } + + // Init the element's event structure + var elemData = jQuery._data( elem ); + + // If no elemData is found then we must be trying to bind to one of the + // banned noData elements + if ( !elemData ) { + return; + } + + var events = elemData.events, + eventHandle = elemData.handle; + + if ( !events ) { + elemData.events = events = {}; + } + + if ( !eventHandle ) { + elemData.handle = eventHandle = function( e ) { + // Discard the second event of a jQuery.event.trigger() and + // when an event is called after a page has unloaded + return typeof jQuery !== "undefined" && (!e || jQuery.event.triggered !== e.type) ? + jQuery.event.handle.apply( eventHandle.elem, arguments ) : + undefined; + }; + } + + // Add elem as a property of the handle function + // This is to prevent a memory leak with non-native events in IE. + eventHandle.elem = elem; + + // Handle multiple events separated by a space + // jQuery(...).bind("mouseover mouseout", fn); + types = types.split(" "); + + var type, i = 0, namespaces; + + while ( (type = types[ i++ ]) ) { + handleObj = handleObjIn ? + jQuery.extend({}, handleObjIn) : + { handler: handler, data: data }; + + // Namespaced event handlers + if ( type.indexOf(".") > -1 ) { + namespaces = type.split("."); + type = namespaces.shift(); + handleObj.namespace = namespaces.slice(0).sort().join("."); + + } else { + namespaces = []; + handleObj.namespace = ""; + } + + handleObj.type = type; + if ( !handleObj.guid ) { + handleObj.guid = handler.guid; + } + + // Get the current list of functions bound to this event + var handlers = events[ type ], + special = jQuery.event.special[ type ] || {}; + + // Init the event handler queue + if ( !handlers ) { + handlers = events[ type ] = []; + + // Check for a special event handler + // Only use addEventListener/attachEvent if the special + // events handler returns false + if ( !special.setup || special.setup.call( elem, data, namespaces, eventHandle ) === false ) { + // Bind the global event handler to the element + if ( elem.addEventListener ) { + elem.addEventListener( type, eventHandle, false ); + + } else if ( elem.attachEvent ) { + elem.attachEvent( "on" + type, eventHandle ); + } + } + } + + if ( special.add ) { + special.add.call( elem, handleObj ); + + if ( !handleObj.handler.guid ) { + handleObj.handler.guid = handler.guid; + } + } + + // Add the function to the element's handler list + handlers.push( handleObj ); + + // Keep track of which events have been used, for event optimization + jQuery.event.global[ type ] = true; + } + + // Nullify elem to prevent memory leaks in IE + elem = null; + }, + + global: {}, + + // Detach an event or set of events from an element + remove: function( elem, types, handler, pos ) { + // don't do events on text and comment nodes + if ( elem.nodeType === 3 || elem.nodeType === 8 ) { + return; + } + + if ( handler === false ) { + handler = returnFalse; + } + + var ret, type, fn, j, i = 0, all, namespaces, namespace, special, eventType, handleObj, origType, + elemData = jQuery.hasData( elem ) && jQuery._data( elem ), + events = elemData && elemData.events; + + if ( !elemData || !events ) { + return; + } + + // types is actually an event object here + if ( types && types.type ) { + handler = types.handler; + types = types.type; + } + + // Unbind all events for the element + if ( !types || typeof types === "string" && types.charAt(0) === "." ) { + types = types || ""; + + for ( type in events ) { + jQuery.event.remove( elem, type + types ); + } + + return; + } + + // Handle multiple events separated by a space + // jQuery(...).unbind("mouseover mouseout", fn); + types = types.split(" "); + + while ( (type = types[ i++ ]) ) { + origType = type; + handleObj = null; + all = type.indexOf(".") < 0; + namespaces = []; + + if ( !all ) { + // Namespaced event handlers + namespaces = type.split("."); + type = namespaces.shift(); + + namespace = new RegExp("(^|\\.)" + + jQuery.map( namespaces.slice(0).sort(), fcleanup ).join("\\.(?:.*\\.)?") + "(\\.|$)"); + } + + eventType = events[ type ]; + + if ( !eventType ) { + continue; + } + + if ( !handler ) { + for ( j = 0; j < eventType.length; j++ ) { + handleObj = eventType[ j ]; + + if ( all || namespace.test( handleObj.namespace ) ) { + jQuery.event.remove( elem, origType, handleObj.handler, j ); + eventType.splice( j--, 1 ); + } + } + + continue; + } + + special = jQuery.event.special[ type ] || {}; + + for ( j = pos || 0; j < eventType.length; j++ ) { + handleObj = eventType[ j ]; + + if ( handler.guid === handleObj.guid ) { + // remove the given handler for the given type + if ( all || namespace.test( handleObj.namespace ) ) { + if ( pos == null ) { + eventType.splice( j--, 1 ); + } + + if ( special.remove ) { + special.remove.call( elem, handleObj ); + } + } + + if ( pos != null ) { + break; + } + } + } + + // remove generic event handler if no more handlers exist + if ( eventType.length === 0 || pos != null && eventType.length === 1 ) { + if ( !special.teardown || special.teardown.call( elem, namespaces ) === false ) { + jQuery.removeEvent( elem, type, elemData.handle ); + } + + ret = null; + delete events[ type ]; + } + } + + // Remove the expando if it's no longer used + if ( jQuery.isEmptyObject( events ) ) { + var handle = elemData.handle; + if ( handle ) { + handle.elem = null; + } + + delete elemData.events; + delete elemData.handle; + + if ( jQuery.isEmptyObject( elemData ) ) { + jQuery.removeData( elem, undefined, true ); + } + } + }, + + // Events that are safe to short-circuit if no handlers are attached. + // Native DOM events should not be added, they may have inline handlers. + customEvent: { + "getData": true, + "setData": true, + "changeData": true + }, + + trigger: function( event, data, elem, onlyHandlers ) { + // Event object or event type + var type = event.type || event, + namespaces = [], + exclusive; + + if ( type.indexOf("!") >= 0 ) { + // Exclusive events trigger only for the exact event (no namespaces) + type = type.slice(0, -1); + exclusive = true; + } + + if ( type.indexOf(".") >= 0 ) { + // Namespaced trigger; create a regexp to match event type in handle() + namespaces = type.split("."); + type = namespaces.shift(); + namespaces.sort(); + } + + if ( (!elem || jQuery.event.customEvent[ type ]) && !jQuery.event.global[ type ] ) { + // No jQuery handlers for this event type, and it can't have inline handlers + return; + } + + // Caller can pass in an Event, Object, or just an event type string + event = typeof event === "object" ? + // jQuery.Event object + event[ jQuery.expando ] ? event : + // Object literal + new jQuery.Event( type, event ) : + // Just the event type (string) + new jQuery.Event( type ); + + event.type = type; + event.exclusive = exclusive; + event.namespace = namespaces.join("."); + event.namespace_re = new RegExp("(^|\\.)" + namespaces.join("\\.(?:.*\\.)?") + "(\\.|$)"); + + // triggerHandler() and global events don't bubble or run the default action + if ( onlyHandlers || !elem ) { + event.preventDefault(); + event.stopPropagation(); + } + + // Handle a global trigger + if ( !elem ) { + // TODO: Stop taunting the data cache; remove global events and always attach to document + jQuery.each( jQuery.cache, function() { + // internalKey variable is just used to make it easier to find + // and potentially change this stuff later; currently it just + // points to jQuery.expando + var internalKey = jQuery.expando, + internalCache = this[ internalKey ]; + if ( internalCache && internalCache.events && internalCache.events[ type ] ) { + jQuery.event.trigger( event, data, internalCache.handle.elem ); + } + }); + return; + } + + // Don't do events on text and comment nodes + if ( elem.nodeType === 3 || elem.nodeType === 8 ) { + return; + } + + // Clean up the event in case it is being reused + event.result = undefined; + event.target = elem; + + // Clone any incoming data and prepend the event, creating the handler arg list + data = data != null ? jQuery.makeArray( data ) : []; + data.unshift( event ); + + var cur = elem, + // IE doesn't like method names with a colon (#3533, #8272) + ontype = type.indexOf(":") < 0 ? "on" + type : ""; + + // Fire event on the current element, then bubble up the DOM tree + do { + var handle = jQuery._data( cur, "handle" ); + + event.currentTarget = cur; + if ( handle ) { + handle.apply( cur, data ); + } + + // Trigger an inline bound script + if ( ontype && jQuery.acceptData( cur ) && cur[ ontype ] && cur[ ontype ].apply( cur, data ) === false ) { + event.result = false; + event.preventDefault(); + } + + // Bubble up to document, then to window + cur = cur.parentNode || cur.ownerDocument || cur === event.target.ownerDocument && window; + } while ( cur && !event.isPropagationStopped() ); + + // If nobody prevented the default action, do it now + if ( !event.isDefaultPrevented() ) { + var old, + special = jQuery.event.special[ type ] || {}; + + if ( (!special._default || special._default.call( elem.ownerDocument, event ) === false) && + !(type === "click" && jQuery.nodeName( elem, "a" )) && jQuery.acceptData( elem ) ) { + + // Call a native DOM method on the target with the same name name as the event. + // Can't use an .isFunction)() check here because IE6/7 fails that test. + // IE<9 dies on focus to hidden element (#1486), may want to revisit a try/catch. + try { + if ( ontype && elem[ type ] ) { + // Don't re-trigger an onFOO event when we call its FOO() method + old = elem[ ontype ]; + + if ( old ) { + elem[ ontype ] = null; + } + + jQuery.event.triggered = type; + elem[ type ](); + } + } catch ( ieError ) {} + + if ( old ) { + elem[ ontype ] = old; + } + + jQuery.event.triggered = undefined; + } + } + + return event.result; + }, + + handle: function( event ) { + event = jQuery.event.fix( event || window.event ); + // Snapshot the handlers list since a called handler may add/remove events. + var handlers = ((jQuery._data( this, "events" ) || {})[ event.type ] || []).slice(0), + run_all = !event.exclusive && !event.namespace, + args = Array.prototype.slice.call( arguments, 0 ); + + // Use the fix-ed Event rather than the (read-only) native event + args[0] = event; + event.currentTarget = this; + + for ( var j = 0, l = handlers.length; j < l; j++ ) { + var handleObj = handlers[ j ]; + + // Triggered event must 1) be non-exclusive and have no namespace, or + // 2) have namespace(s) a subset or equal to those in the bound event. + if ( run_all || event.namespace_re.test( handleObj.namespace ) ) { + // Pass in a reference to the handler function itself + // So that we can later remove it + event.handler = handleObj.handler; + event.data = handleObj.data; + event.handleObj = handleObj; + + var ret = handleObj.handler.apply( this, args ); + + if ( ret !== undefined ) { + event.result = ret; + if ( ret === false ) { + event.preventDefault(); + event.stopPropagation(); + } + } + + if ( event.isImmediatePropagationStopped() ) { + break; + } + } + } + return event.result; + }, + + props: "altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode layerX layerY metaKey newValue offsetX offsetY pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which".split(" "), + + fix: function( event ) { + if ( event[ jQuery.expando ] ) { + return event; + } + + // store a copy of the original event object + // and "clone" to set read-only properties + var originalEvent = event; + event = jQuery.Event( originalEvent ); + + for ( var i = this.props.length, prop; i; ) { + prop = this.props[ --i ]; + event[ prop ] = originalEvent[ prop ]; + } + + // Fix target property, if necessary + if ( !event.target ) { + // Fixes #1925 where srcElement might not be defined either + event.target = event.srcElement || document; + } + + // check if target is a textnode (safari) + if ( event.target.nodeType === 3 ) { + event.target = event.target.parentNode; + } + + // Add relatedTarget, if necessary + if ( !event.relatedTarget && event.fromElement ) { + event.relatedTarget = event.fromElement === event.target ? event.toElement : event.fromElement; + } + + // Calculate pageX/Y if missing and clientX/Y available + if ( event.pageX == null && event.clientX != null ) { + var eventDocument = event.target.ownerDocument || document, + doc = eventDocument.documentElement, + body = eventDocument.body; + + event.pageX = event.clientX + (doc && doc.scrollLeft || body && body.scrollLeft || 0) - (doc && doc.clientLeft || body && body.clientLeft || 0); + event.pageY = event.clientY + (doc && doc.scrollTop || body && body.scrollTop || 0) - (doc && doc.clientTop || body && body.clientTop || 0); + } + + // Add which for key events + if ( event.which == null && (event.charCode != null || event.keyCode != null) ) { + event.which = event.charCode != null ? event.charCode : event.keyCode; + } + + // Add metaKey to non-Mac browsers (use ctrl for PC's and Meta for Macs) + if ( !event.metaKey && event.ctrlKey ) { + event.metaKey = event.ctrlKey; + } + + // Add which for click: 1 === left; 2 === middle; 3 === right + // Note: button is not normalized, so don't use it + if ( !event.which && event.button !== undefined ) { + event.which = (event.button & 1 ? 1 : ( event.button & 2 ? 3 : ( event.button & 4 ? 2 : 0 ) )); + } + + return event; + }, + + // Deprecated, use jQuery.guid instead + guid: 1E8, + + // Deprecated, use jQuery.proxy instead + proxy: jQuery.proxy, + + special: { + ready: { + // Make sure the ready event is setup + setup: jQuery.bindReady, + teardown: jQuery.noop + }, + + live: { + add: function( handleObj ) { + jQuery.event.add( this, + liveConvert( handleObj.origType, handleObj.selector ), + jQuery.extend({}, handleObj, {handler: liveHandler, guid: handleObj.handler.guid}) ); + }, + + remove: function( handleObj ) { + jQuery.event.remove( this, liveConvert( handleObj.origType, handleObj.selector ), handleObj ); + } + }, + + beforeunload: { + setup: function( data, namespaces, eventHandle ) { + // We only want to do this special case on windows + if ( jQuery.isWindow( this ) ) { + this.onbeforeunload = eventHandle; + } + }, + + teardown: function( namespaces, eventHandle ) { + if ( this.onbeforeunload === eventHandle ) { + this.onbeforeunload = null; + } + } + } + } +}; + +jQuery.removeEvent = document.removeEventListener ? + function( elem, type, handle ) { + if ( elem.removeEventListener ) { + elem.removeEventListener( type, handle, false ); + } + } : + function( elem, type, handle ) { + if ( elem.detachEvent ) { + elem.detachEvent( "on" + type, handle ); + } + }; + +jQuery.Event = function( src, props ) { + // Allow instantiation without the 'new' keyword + if ( !this.preventDefault ) { + return new jQuery.Event( src, props ); + } + + // Event object + if ( src && src.type ) { + this.originalEvent = src; + this.type = src.type; + + // Events bubbling up the document may have been marked as prevented + // by a handler lower down the tree; reflect the correct value. + this.isDefaultPrevented = (src.defaultPrevented || src.returnValue === false || + src.getPreventDefault && src.getPreventDefault()) ? returnTrue : returnFalse; + + // Event type + } else { + this.type = src; + } + + // Put explicitly provided properties onto the event object + if ( props ) { + jQuery.extend( this, props ); + } + + // timeStamp is buggy for some events on Firefox(#3843) + // So we won't rely on the native value + this.timeStamp = jQuery.now(); + + // Mark it as fixed + this[ jQuery.expando ] = true; +}; + +function returnFalse() { + return false; +} +function returnTrue() { + return true; +} + +// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding +// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html +jQuery.Event.prototype = { + preventDefault: function() { + this.isDefaultPrevented = returnTrue; + + var e = this.originalEvent; + if ( !e ) { + return; + } + + // if preventDefault exists run it on the original event + if ( e.preventDefault ) { + e.preventDefault(); + + // otherwise set the returnValue property of the original event to false (IE) + } else { + e.returnValue = false; + } + }, + stopPropagation: function() { + this.isPropagationStopped = returnTrue; + + var e = this.originalEvent; + if ( !e ) { + return; + } + // if stopPropagation exists run it on the original event + if ( e.stopPropagation ) { + e.stopPropagation(); + } + // otherwise set the cancelBubble property of the original event to true (IE) + e.cancelBubble = true; + }, + stopImmediatePropagation: function() { + this.isImmediatePropagationStopped = returnTrue; + this.stopPropagation(); + }, + isDefaultPrevented: returnFalse, + isPropagationStopped: returnFalse, + isImmediatePropagationStopped: returnFalse +}; + +// Checks if an event happened on an element within another element +// Used in jQuery.event.special.mouseenter and mouseleave handlers +var withinElement = function( event ) { + + // Check if mouse(over|out) are still within the same parent element + var related = event.relatedTarget, + inside = false, + eventType = event.type; + + event.type = event.data; + + if ( related !== this ) { + + if ( related ) { + inside = jQuery.contains( this, related ); + } + + if ( !inside ) { + + jQuery.event.handle.apply( this, arguments ); + + event.type = eventType; + } + } +}, + +// In case of event delegation, we only need to rename the event.type, +// liveHandler will take care of the rest. +delegate = function( event ) { + event.type = event.data; + jQuery.event.handle.apply( this, arguments ); +}; + +// Create mouseenter and mouseleave events +jQuery.each({ + mouseenter: "mouseover", + mouseleave: "mouseout" +}, function( orig, fix ) { + jQuery.event.special[ orig ] = { + setup: function( data ) { + jQuery.event.add( this, fix, data && data.selector ? delegate : withinElement, orig ); + }, + teardown: function( data ) { + jQuery.event.remove( this, fix, data && data.selector ? delegate : withinElement ); + } + }; +}); + +// submit delegation +if ( !jQuery.support.submitBubbles ) { + + jQuery.event.special.submit = { + setup: function( data, namespaces ) { + if ( !jQuery.nodeName( this, "form" ) ) { + jQuery.event.add(this, "click.specialSubmit", function( e ) { + var elem = e.target, + type = jQuery.nodeName( elem, "input" ) ? elem.type : ""; + + if ( (type === "submit" || type === "image") && jQuery( elem ).closest("form").length ) { + trigger( "submit", this, arguments ); + } + }); + + jQuery.event.add(this, "keypress.specialSubmit", function( e ) { + var elem = e.target, + type = jQuery.nodeName( elem, "input" ) ? elem.type : ""; + + if ( (type === "text" || type === "password") && jQuery( elem ).closest("form").length && e.keyCode === 13 ) { + trigger( "submit", this, arguments ); + } + }); + + } else { + return false; + } + }, + + teardown: function( namespaces ) { + jQuery.event.remove( this, ".specialSubmit" ); + } + }; + +} + +// change delegation, happens here so we have bind. +if ( !jQuery.support.changeBubbles ) { + + var changeFilters, + + getVal = function( elem ) { + var type = jQuery.nodeName( elem, "input" ) ? elem.type : "", + val = elem.value; + + if ( type === "radio" || type === "checkbox" ) { + val = elem.checked; + + } else if ( type === "select-multiple" ) { + val = elem.selectedIndex > -1 ? + jQuery.map( elem.options, function( elem ) { + return elem.selected; + }).join("-") : + ""; + + } else if ( jQuery.nodeName( elem, "select" ) ) { + val = elem.selectedIndex; + } + + return val; + }, + + testChange = function testChange( e ) { + var elem = e.target, data, val; + + if ( !rformElems.test( elem.nodeName ) || elem.readOnly ) { + return; + } + + data = jQuery._data( elem, "_change_data" ); + val = getVal(elem); + + // the current data will be also retrieved by beforeactivate + if ( e.type !== "focusout" || elem.type !== "radio" ) { + jQuery._data( elem, "_change_data", val ); + } + + if ( data === undefined || val === data ) { + return; + } + + if ( data != null || val ) { + e.type = "change"; + e.liveFired = undefined; + jQuery.event.trigger( e, arguments[1], elem ); + } + }; + + jQuery.event.special.change = { + filters: { + focusout: testChange, + + beforedeactivate: testChange, + + click: function( e ) { + var elem = e.target, type = jQuery.nodeName( elem, "input" ) ? elem.type : ""; + + if ( type === "radio" || type === "checkbox" || jQuery.nodeName( elem, "select" ) ) { + testChange.call( this, e ); + } + }, + + // Change has to be called before submit + // Keydown will be called before keypress, which is used in submit-event delegation + keydown: function( e ) { + var elem = e.target, type = jQuery.nodeName( elem, "input" ) ? elem.type : ""; + + if ( (e.keyCode === 13 && !jQuery.nodeName( elem, "textarea" ) ) || + (e.keyCode === 32 && (type === "checkbox" || type === "radio")) || + type === "select-multiple" ) { + testChange.call( this, e ); + } + }, + + // Beforeactivate happens also before the previous element is blurred + // with this event you can't trigger a change event, but you can store + // information + beforeactivate: function( e ) { + var elem = e.target; + jQuery._data( elem, "_change_data", getVal(elem) ); + } + }, + + setup: function( data, namespaces ) { + if ( this.type === "file" ) { + return false; + } + + for ( var type in changeFilters ) { + jQuery.event.add( this, type + ".specialChange", changeFilters[type] ); + } + + return rformElems.test( this.nodeName ); + }, + + teardown: function( namespaces ) { + jQuery.event.remove( this, ".specialChange" ); + + return rformElems.test( this.nodeName ); + } + }; + + changeFilters = jQuery.event.special.change.filters; + + // Handle when the input is .focus()'d + changeFilters.focus = changeFilters.beforeactivate; +} + +function trigger( type, elem, args ) { + // Piggyback on a donor event to simulate a different one. + // Fake originalEvent to avoid donor's stopPropagation, but if the + // simulated event prevents default then we do the same on the donor. + // Don't pass args or remember liveFired; they apply to the donor event. + var event = jQuery.extend( {}, args[ 0 ] ); + event.type = type; + event.originalEvent = {}; + event.liveFired = undefined; + jQuery.event.handle.call( elem, event ); + if ( event.isDefaultPrevented() ) { + args[ 0 ].preventDefault(); + } +} + +// Create "bubbling" focus and blur events +if ( !jQuery.support.focusinBubbles ) { + jQuery.each({ focus: "focusin", blur: "focusout" }, function( orig, fix ) { + + // Attach a single capturing handler while someone wants focusin/focusout + var attaches = 0; + + jQuery.event.special[ fix ] = { + setup: function() { + if ( attaches++ === 0 ) { + document.addEventListener( orig, handler, true ); + } + }, + teardown: function() { + if ( --attaches === 0 ) { + document.removeEventListener( orig, handler, true ); + } + } + }; + + function handler( donor ) { + // Donor event is always a native one; fix it and switch its type. + // Let focusin/out handler cancel the donor focus/blur event. + var e = jQuery.event.fix( donor ); + e.type = fix; + e.originalEvent = {}; + jQuery.event.trigger( e, null, e.target ); + if ( e.isDefaultPrevented() ) { + donor.preventDefault(); + } + } + }); +} + +jQuery.each(["bind", "one"], function( i, name ) { + jQuery.fn[ name ] = function( type, data, fn ) { + var handler; + + // Handle object literals + if ( typeof type === "object" ) { + for ( var key in type ) { + this[ name ](key, data, type[key], fn); + } + return this; + } + + if ( arguments.length === 2 || data === false ) { + fn = data; + data = undefined; + } + + if ( name === "one" ) { + handler = function( event ) { + jQuery( this ).unbind( event, handler ); + return fn.apply( this, arguments ); + }; + handler.guid = fn.guid || jQuery.guid++; + } else { + handler = fn; + } + + if ( type === "unload" && name !== "one" ) { + this.one( type, data, fn ); + + } else { + for ( var i = 0, l = this.length; i < l; i++ ) { + jQuery.event.add( this[i], type, handler, data ); + } + } + + return this; + }; +}); + +jQuery.fn.extend({ + unbind: function( type, fn ) { + // Handle object literals + if ( typeof type === "object" && !type.preventDefault ) { + for ( var key in type ) { + this.unbind(key, type[key]); + } + + } else { + for ( var i = 0, l = this.length; i < l; i++ ) { + jQuery.event.remove( this[i], type, fn ); + } + } + + return this; + }, + + delegate: function( selector, types, data, fn ) { + return this.live( types, data, fn, selector ); + }, + + undelegate: function( selector, types, fn ) { + if ( arguments.length === 0 ) { + return this.unbind( "live" ); + + } else { + return this.die( types, null, fn, selector ); + } + }, + + trigger: function( type, data ) { + return this.each(function() { + jQuery.event.trigger( type, data, this ); + }); + }, + + triggerHandler: function( type, data ) { + if ( this[0] ) { + return jQuery.event.trigger( type, data, this[0], true ); + } + }, + + toggle: function( fn ) { + // Save reference to arguments for access in closure + var args = arguments, + guid = fn.guid || jQuery.guid++, + i = 0, + toggler = function( event ) { + // Figure out which function to execute + var lastToggle = ( jQuery.data( this, "lastToggle" + fn.guid ) || 0 ) % i; + jQuery.data( this, "lastToggle" + fn.guid, lastToggle + 1 ); + + // Make sure that clicks stop + event.preventDefault(); + + // and execute the function + return args[ lastToggle ].apply( this, arguments ) || false; + }; + + // link all the functions, so any of them can unbind this click handler + toggler.guid = guid; + while ( i < args.length ) { + args[ i++ ].guid = guid; + } + + return this.click( toggler ); + }, + + hover: function( fnOver, fnOut ) { + return this.mouseenter( fnOver ).mouseleave( fnOut || fnOver ); + } +}); + +var liveMap = { + focus: "focusin", + blur: "focusout", + mouseenter: "mouseover", + mouseleave: "mouseout" +}; + +jQuery.each(["live", "die"], function( i, name ) { + jQuery.fn[ name ] = function( types, data, fn, origSelector /* Internal Use Only */ ) { + var type, i = 0, match, namespaces, preType, + selector = origSelector || this.selector, + context = origSelector ? this : jQuery( this.context ); + + if ( typeof types === "object" && !types.preventDefault ) { + for ( var key in types ) { + context[ name ]( key, data, types[key], selector ); + } + + return this; + } + + if ( name === "die" && !types && + origSelector && origSelector.charAt(0) === "." ) { + + context.unbind( origSelector ); + + return this; + } + + if ( data === false || jQuery.isFunction( data ) ) { + fn = data || returnFalse; + data = undefined; + } + + types = (types || "").split(" "); + + while ( (type = types[ i++ ]) != null ) { + match = rnamespaces.exec( type ); + namespaces = ""; + + if ( match ) { + namespaces = match[0]; + type = type.replace( rnamespaces, "" ); + } + + if ( type === "hover" ) { + types.push( "mouseenter" + namespaces, "mouseleave" + namespaces ); + continue; + } + + preType = type; + + if ( liveMap[ type ] ) { + types.push( liveMap[ type ] + namespaces ); + type = type + namespaces; + + } else { + type = (liveMap[ type ] || type) + namespaces; + } + + if ( name === "live" ) { + // bind live handler + for ( var j = 0, l = context.length; j < l; j++ ) { + jQuery.event.add( context[j], "live." + liveConvert( type, selector ), + { data: data, selector: selector, handler: fn, origType: type, origHandler: fn, preType: preType } ); + } + + } else { + // unbind live handler + context.unbind( "live." + liveConvert( type, selector ), fn ); + } + } + + return this; + }; +}); + +function liveHandler( event ) { + var stop, maxLevel, related, match, handleObj, elem, j, i, l, data, close, namespace, ret, + elems = [], + selectors = [], + events = jQuery._data( this, "events" ); + + // Make sure we avoid non-left-click bubbling in Firefox (#3861) and disabled elements in IE (#6911) + if ( event.liveFired === this || !events || !events.live || event.target.disabled || event.button && event.type === "click" ) { + return; + } + + if ( event.namespace ) { + namespace = new RegExp("(^|\\.)" + event.namespace.split(".").join("\\.(?:.*\\.)?") + "(\\.|$)"); + } + + event.liveFired = this; + + var live = events.live.slice(0); + + for ( j = 0; j < live.length; j++ ) { + handleObj = live[j]; + + if ( handleObj.origType.replace( rnamespaces, "" ) === event.type ) { + selectors.push( handleObj.selector ); + + } else { + live.splice( j--, 1 ); + } + } + + match = jQuery( event.target ).closest( selectors, event.currentTarget ); + + for ( i = 0, l = match.length; i < l; i++ ) { + close = match[i]; + + for ( j = 0; j < live.length; j++ ) { + handleObj = live[j]; + + if ( close.selector === handleObj.selector && (!namespace || namespace.test( handleObj.namespace )) && !close.elem.disabled ) { + elem = close.elem; + related = null; + + // Those two events require additional checking + if ( handleObj.preType === "mouseenter" || handleObj.preType === "mouseleave" ) { + event.type = handleObj.preType; + related = jQuery( event.relatedTarget ).closest( handleObj.selector )[0]; + + // Make sure not to accidentally match a child element with the same selector + if ( related && jQuery.contains( elem, related ) ) { + related = elem; + } + } + + if ( !related || related !== elem ) { + elems.push({ elem: elem, handleObj: handleObj, level: close.level }); + } + } + } + } + + for ( i = 0, l = elems.length; i < l; i++ ) { + match = elems[i]; + + if ( maxLevel && match.level > maxLevel ) { + break; + } + + event.currentTarget = match.elem; + event.data = match.handleObj.data; + event.handleObj = match.handleObj; + + ret = match.handleObj.origHandler.apply( match.elem, arguments ); + + if ( ret === false || event.isPropagationStopped() ) { + maxLevel = match.level; + + if ( ret === false ) { + stop = false; + } + if ( event.isImmediatePropagationStopped() ) { + break; + } + } + } + + return stop; +} + +function liveConvert( type, selector ) { + return (type && type !== "*" ? type + "." : "") + selector.replace(rperiod, "`").replace(rspaces, "&"); +} + +jQuery.each( ("blur focus focusin focusout load resize scroll unload click dblclick " + + "mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave " + + "change select submit keydown keypress keyup error").split(" "), function( i, name ) { + + // Handle event binding + jQuery.fn[ name ] = function( data, fn ) { + if ( fn == null ) { + fn = data; + data = null; + } + + return arguments.length > 0 ? + this.bind( name, data, fn ) : + this.trigger( name ); + }; + + if ( jQuery.attrFn ) { + jQuery.attrFn[ name ] = true; + } +}); + + + +/*! + * Sizzle CSS Selector Engine + * Copyright 2011, The Dojo Foundation + * Released under the MIT, BSD, and GPL Licenses. + * More information: http://sizzlejs.com/ + */ +(function(){ + +var chunker = /((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g, + done = 0, + toString = Object.prototype.toString, + hasDuplicate = false, + baseHasDuplicate = true, + rBackslash = /\\/g, + rNonWord = /\W/; + +// Here we check if the JavaScript engine is using some sort of +// optimization where it does not always call our comparision +// function. If that is the case, discard the hasDuplicate value. +// Thus far that includes Google Chrome. +[0, 0].sort(function() { + baseHasDuplicate = false; + return 0; +}); + +var Sizzle = function( selector, context, results, seed ) { + results = results || []; + context = context || document; + + var origContext = context; + + if ( context.nodeType !== 1 && context.nodeType !== 9 ) { + return []; + } + + if ( !selector || typeof selector !== "string" ) { + return results; + } + + var m, set, checkSet, extra, ret, cur, pop, i, + prune = true, + contextXML = Sizzle.isXML( context ), + parts = [], + soFar = selector; + + // Reset the position of the chunker regexp (start from head) + do { + chunker.exec( "" ); + m = chunker.exec( soFar ); + + if ( m ) { + soFar = m[3]; + + parts.push( m[1] ); + + if ( m[2] ) { + extra = m[3]; + break; + } + } + } while ( m ); + + if ( parts.length > 1 && origPOS.exec( selector ) ) { + + if ( parts.length === 2 && Expr.relative[ parts[0] ] ) { + set = posProcess( parts[0] + parts[1], context ); + + } else { + set = Expr.relative[ parts[0] ] ? + [ context ] : + Sizzle( parts.shift(), context ); + + while ( parts.length ) { + selector = parts.shift(); + + if ( Expr.relative[ selector ] ) { + selector += parts.shift(); + } + + set = posProcess( selector, set ); + } + } + + } else { + // Take a shortcut and set the context if the root selector is an ID + // (but not if it'll be faster if the inner selector is an ID) + if ( !seed && parts.length > 1 && context.nodeType === 9 && !contextXML && + Expr.match.ID.test(parts[0]) && !Expr.match.ID.test(parts[parts.length - 1]) ) { + + ret = Sizzle.find( parts.shift(), context, contextXML ); + context = ret.expr ? + Sizzle.filter( ret.expr, ret.set )[0] : + ret.set[0]; + } + + if ( context ) { + ret = seed ? + { expr: parts.pop(), set: makeArray(seed) } : + Sizzle.find( parts.pop(), parts.length === 1 && (parts[0] === "~" || parts[0] === "+") && context.parentNode ? context.parentNode : context, contextXML ); + + set = ret.expr ? + Sizzle.filter( ret.expr, ret.set ) : + ret.set; + + if ( parts.length > 0 ) { + checkSet = makeArray( set ); + + } else { + prune = false; + } + + while ( parts.length ) { + cur = parts.pop(); + pop = cur; + + if ( !Expr.relative[ cur ] ) { + cur = ""; + } else { + pop = parts.pop(); + } + + if ( pop == null ) { + pop = context; + } + + Expr.relative[ cur ]( checkSet, pop, contextXML ); + } + + } else { + checkSet = parts = []; + } + } + + if ( !checkSet ) { + checkSet = set; + } + + if ( !checkSet ) { + Sizzle.error( cur || selector ); + } + + if ( toString.call(checkSet) === "[object Array]" ) { + if ( !prune ) { + results.push.apply( results, checkSet ); + + } else if ( context && context.nodeType === 1 ) { + for ( i = 0; checkSet[i] != null; i++ ) { + if ( checkSet[i] && (checkSet[i] === true || checkSet[i].nodeType === 1 && Sizzle.contains(context, checkSet[i])) ) { + results.push( set[i] ); + } + } + + } else { + for ( i = 0; checkSet[i] != null; i++ ) { + if ( checkSet[i] && checkSet[i].nodeType === 1 ) { + results.push( set[i] ); + } + } + } + + } else { + makeArray( checkSet, results ); + } + + if ( extra ) { + Sizzle( extra, origContext, results, seed ); + Sizzle.uniqueSort( results ); + } + + return results; +}; + +Sizzle.uniqueSort = function( results ) { + if ( sortOrder ) { + hasDuplicate = baseHasDuplicate; + results.sort( sortOrder ); + + if ( hasDuplicate ) { + for ( var i = 1; i < results.length; i++ ) { + if ( results[i] === results[ i - 1 ] ) { + results.splice( i--, 1 ); + } + } + } + } + + return results; +}; + +Sizzle.matches = function( expr, set ) { + return Sizzle( expr, null, null, set ); +}; + +Sizzle.matchesSelector = function( node, expr ) { + return Sizzle( expr, null, null, [node] ).length > 0; +}; + +Sizzle.find = function( expr, context, isXML ) { + var set; + + if ( !expr ) { + return []; + } + + for ( var i = 0, l = Expr.order.length; i < l; i++ ) { + var match, + type = Expr.order[i]; + + if ( (match = Expr.leftMatch[ type ].exec( expr )) ) { + var left = match[1]; + match.splice( 1, 1 ); + + if ( left.substr( left.length - 1 ) !== "\\" ) { + match[1] = (match[1] || "").replace( rBackslash, "" ); + set = Expr.find[ type ]( match, context, isXML ); + + if ( set != null ) { + expr = expr.replace( Expr.match[ type ], "" ); + break; + } + } + } + } + + if ( !set ) { + set = typeof context.getElementsByTagName !== "undefined" ? + context.getElementsByTagName( "*" ) : + []; + } + + return { set: set, expr: expr }; +}; + +Sizzle.filter = function( expr, set, inplace, not ) { + var match, anyFound, + old = expr, + result = [], + curLoop = set, + isXMLFilter = set && set[0] && Sizzle.isXML( set[0] ); + + while ( expr && set.length ) { + for ( var type in Expr.filter ) { + if ( (match = Expr.leftMatch[ type ].exec( expr )) != null && match[2] ) { + var found, item, + filter = Expr.filter[ type ], + left = match[1]; + + anyFound = false; + + match.splice(1,1); + + if ( left.substr( left.length - 1 ) === "\\" ) { + continue; + } + + if ( curLoop === result ) { + result = []; + } + + if ( Expr.preFilter[ type ] ) { + match = Expr.preFilter[ type ]( match, curLoop, inplace, result, not, isXMLFilter ); + + if ( !match ) { + anyFound = found = true; + + } else if ( match === true ) { + continue; + } + } + + if ( match ) { + for ( var i = 0; (item = curLoop[i]) != null; i++ ) { + if ( item ) { + found = filter( item, match, i, curLoop ); + var pass = not ^ !!found; + + if ( inplace && found != null ) { + if ( pass ) { + anyFound = true; + + } else { + curLoop[i] = false; + } + + } else if ( pass ) { + result.push( item ); + anyFound = true; + } + } + } + } + + if ( found !== undefined ) { + if ( !inplace ) { + curLoop = result; + } + + expr = expr.replace( Expr.match[ type ], "" ); + + if ( !anyFound ) { + return []; + } + + break; + } + } + } + + // Improper expression + if ( expr === old ) { + if ( anyFound == null ) { + Sizzle.error( expr ); + + } else { + break; + } + } + + old = expr; + } + + return curLoop; +}; + +Sizzle.error = function( msg ) { + throw "Syntax error, unrecognized expression: " + msg; +}; + +var Expr = Sizzle.selectors = { + order: [ "ID", "NAME", "TAG" ], + + match: { + ID: /#((?:[\w\u00c0-\uFFFF\-]|\\.)+)/, + CLASS: /\.((?:[\w\u00c0-\uFFFF\-]|\\.)+)/, + NAME: /\[name=['"]*((?:[\w\u00c0-\uFFFF\-]|\\.)+)['"]*\]/, + ATTR: /\[\s*((?:[\w\u00c0-\uFFFF\-]|\\.)+)\s*(?:(\S?=)\s*(?:(['"])(.*?)\3|(#?(?:[\w\u00c0-\uFFFF\-]|\\.)*)|)|)\s*\]/, + TAG: /^((?:[\w\u00c0-\uFFFF\*\-]|\\.)+)/, + CHILD: /:(only|nth|last|first)-child(?:\(\s*(even|odd|(?:[+\-]?\d+|(?:[+\-]?\d*)?n\s*(?:[+\-]\s*\d+)?))\s*\))?/, + POS: /:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^\-]|$)/, + PSEUDO: /:((?:[\w\u00c0-\uFFFF\-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/ + }, + + leftMatch: {}, + + attrMap: { + "class": "className", + "for": "htmlFor" + }, + + attrHandle: { + href: function( elem ) { + return elem.getAttribute( "href" ); + }, + type: function( elem ) { + return elem.getAttribute( "type" ); + } + }, + + relative: { + "+": function(checkSet, part){ + var isPartStr = typeof part === "string", + isTag = isPartStr && !rNonWord.test( part ), + isPartStrNotTag = isPartStr && !isTag; + + if ( isTag ) { + part = part.toLowerCase(); + } + + for ( var i = 0, l = checkSet.length, elem; i < l; i++ ) { + if ( (elem = checkSet[i]) ) { + while ( (elem = elem.previousSibling) && elem.nodeType !== 1 ) {} + + checkSet[i] = isPartStrNotTag || elem && elem.nodeName.toLowerCase() === part ? + elem || false : + elem === part; + } + } + + if ( isPartStrNotTag ) { + Sizzle.filter( part, checkSet, true ); + } + }, + + ">": function( checkSet, part ) { + var elem, + isPartStr = typeof part === "string", + i = 0, + l = checkSet.length; + + if ( isPartStr && !rNonWord.test( part ) ) { + part = part.toLowerCase(); + + for ( ; i < l; i++ ) { + elem = checkSet[i]; + + if ( elem ) { + var parent = elem.parentNode; + checkSet[i] = parent.nodeName.toLowerCase() === part ? parent : false; + } + } + + } else { + for ( ; i < l; i++ ) { + elem = checkSet[i]; + + if ( elem ) { + checkSet[i] = isPartStr ? + elem.parentNode : + elem.parentNode === part; + } + } + + if ( isPartStr ) { + Sizzle.filter( part, checkSet, true ); + } + } + }, + + "": function(checkSet, part, isXML){ + var nodeCheck, + doneName = done++, + checkFn = dirCheck; + + if ( typeof part === "string" && !rNonWord.test( part ) ) { + part = part.toLowerCase(); + nodeCheck = part; + checkFn = dirNodeCheck; + } + + checkFn( "parentNode", part, doneName, checkSet, nodeCheck, isXML ); + }, + + "~": function( checkSet, part, isXML ) { + var nodeCheck, + doneName = done++, + checkFn = dirCheck; + + if ( typeof part === "string" && !rNonWord.test( part ) ) { + part = part.toLowerCase(); + nodeCheck = part; + checkFn = dirNodeCheck; + } + + checkFn( "previousSibling", part, doneName, checkSet, nodeCheck, isXML ); + } + }, + + find: { + ID: function( match, context, isXML ) { + if ( typeof context.getElementById !== "undefined" && !isXML ) { + var m = context.getElementById(match[1]); + // Check parentNode to catch when Blackberry 4.6 returns + // nodes that are no longer in the document #6963 + return m && m.parentNode ? [m] : []; + } + }, + + NAME: function( match, context ) { + if ( typeof context.getElementsByName !== "undefined" ) { + var ret = [], + results = context.getElementsByName( match[1] ); + + for ( var i = 0, l = results.length; i < l; i++ ) { + if ( results[i].getAttribute("name") === match[1] ) { + ret.push( results[i] ); + } + } + + return ret.length === 0 ? null : ret; + } + }, + + TAG: function( match, context ) { + if ( typeof context.getElementsByTagName !== "undefined" ) { + return context.getElementsByTagName( match[1] ); + } + } + }, + preFilter: { + CLASS: function( match, curLoop, inplace, result, not, isXML ) { + match = " " + match[1].replace( rBackslash, "" ) + " "; + + if ( isXML ) { + return match; + } + + for ( var i = 0, elem; (elem = curLoop[i]) != null; i++ ) { + if ( elem ) { + if ( not ^ (elem.className && (" " + elem.className + " ").replace(/[\t\n\r]/g, " ").indexOf(match) >= 0) ) { + if ( !inplace ) { + result.push( elem ); + } + + } else if ( inplace ) { + curLoop[i] = false; + } + } + } + + return false; + }, + + ID: function( match ) { + return match[1].replace( rBackslash, "" ); + }, + + TAG: function( match, curLoop ) { + return match[1].replace( rBackslash, "" ).toLowerCase(); + }, + + CHILD: function( match ) { + if ( match[1] === "nth" ) { + if ( !match[2] ) { + Sizzle.error( match[0] ); + } + + match[2] = match[2].replace(/^\+|\s*/g, ''); + + // parse equations like 'even', 'odd', '5', '2n', '3n+2', '4n-1', '-n+6' + var test = /(-?)(\d*)(?:n([+\-]?\d*))?/.exec( + match[2] === "even" && "2n" || match[2] === "odd" && "2n+1" || + !/\D/.test( match[2] ) && "0n+" + match[2] || match[2]); + + // calculate the numbers (first)n+(last) including if they are negative + match[2] = (test[1] + (test[2] || 1)) - 0; + match[3] = test[3] - 0; + } + else if ( match[2] ) { + Sizzle.error( match[0] ); + } + + // TODO: Move to normal caching system + match[0] = done++; + + return match; + }, + + ATTR: function( match, curLoop, inplace, result, not, isXML ) { + var name = match[1] = match[1].replace( rBackslash, "" ); + + if ( !isXML && Expr.attrMap[name] ) { + match[1] = Expr.attrMap[name]; + } + + // Handle if an un-quoted value was used + match[4] = ( match[4] || match[5] || "" ).replace( rBackslash, "" ); + + if ( match[2] === "~=" ) { + match[4] = " " + match[4] + " "; + } + + return match; + }, + + PSEUDO: function( match, curLoop, inplace, result, not ) { + if ( match[1] === "not" ) { + // If we're dealing with a complex expression, or a simple one + if ( ( chunker.exec(match[3]) || "" ).length > 1 || /^\w/.test(match[3]) ) { + match[3] = Sizzle(match[3], null, null, curLoop); + + } else { + var ret = Sizzle.filter(match[3], curLoop, inplace, true ^ not); + + if ( !inplace ) { + result.push.apply( result, ret ); + } + + return false; + } + + } else if ( Expr.match.POS.test( match[0] ) || Expr.match.CHILD.test( match[0] ) ) { + return true; + } + + return match; + }, + + POS: function( match ) { + match.unshift( true ); + + return match; + } + }, + + filters: { + enabled: function( elem ) { + return elem.disabled === false && elem.type !== "hidden"; + }, + + disabled: function( elem ) { + return elem.disabled === true; + }, + + checked: function( elem ) { + return elem.checked === true; + }, + + selected: function( elem ) { + // Accessing this property makes selected-by-default + // options in Safari work properly + if ( elem.parentNode ) { + elem.parentNode.selectedIndex; + } + + return elem.selected === true; + }, + + parent: function( elem ) { + return !!elem.firstChild; + }, + + empty: function( elem ) { + return !elem.firstChild; + }, + + has: function( elem, i, match ) { + return !!Sizzle( match[3], elem ).length; + }, + + header: function( elem ) { + return (/h\d/i).test( elem.nodeName ); + }, + + text: function( elem ) { + var attr = elem.getAttribute( "type" ), type = elem.type; + // IE6 and 7 will map elem.type to 'text' for new HTML5 types (search, etc) + // use getAttribute instead to test this case + return elem.nodeName.toLowerCase() === "input" && "text" === type && ( attr === type || attr === null ); + }, + + radio: function( elem ) { + return elem.nodeName.toLowerCase() === "input" && "radio" === elem.type; + }, + + checkbox: function( elem ) { + return elem.nodeName.toLowerCase() === "input" && "checkbox" === elem.type; + }, + + file: function( elem ) { + return elem.nodeName.toLowerCase() === "input" && "file" === elem.type; + }, + + password: function( elem ) { + return elem.nodeName.toLowerCase() === "input" && "password" === elem.type; + }, + + submit: function( elem ) { + var name = elem.nodeName.toLowerCase(); + return (name === "input" || name === "button") && "submit" === elem.type; + }, + + image: function( elem ) { + return elem.nodeName.toLowerCase() === "input" && "image" === elem.type; + }, + + reset: function( elem ) { + var name = elem.nodeName.toLowerCase(); + return (name === "input" || name === "button") && "reset" === elem.type; + }, + + button: function( elem ) { + var name = elem.nodeName.toLowerCase(); + return name === "input" && "button" === elem.type || name === "button"; + }, + + input: function( elem ) { + return (/input|select|textarea|button/i).test( elem.nodeName ); + }, + + focus: function( elem ) { + return elem === elem.ownerDocument.activeElement; + } + }, + setFilters: { + first: function( elem, i ) { + return i === 0; + }, + + last: function( elem, i, match, array ) { + return i === array.length - 1; + }, + + even: function( elem, i ) { + return i % 2 === 0; + }, + + odd: function( elem, i ) { + return i % 2 === 1; + }, + + lt: function( elem, i, match ) { + return i < match[3] - 0; + }, + + gt: function( elem, i, match ) { + return i > match[3] - 0; + }, + + nth: function( elem, i, match ) { + return match[3] - 0 === i; + }, + + eq: function( elem, i, match ) { + return match[3] - 0 === i; + } + }, + filter: { + PSEUDO: function( elem, match, i, array ) { + var name = match[1], + filter = Expr.filters[ name ]; + + if ( filter ) { + return filter( elem, i, match, array ); + + } else if ( name === "contains" ) { + return (elem.textContent || elem.innerText || Sizzle.getText([ elem ]) || "").indexOf(match[3]) >= 0; + + } else if ( name === "not" ) { + var not = match[3]; + + for ( var j = 0, l = not.length; j < l; j++ ) { + if ( not[j] === elem ) { + return false; + } + } + + return true; + + } else { + Sizzle.error( name ); + } + }, + + CHILD: function( elem, match ) { + var type = match[1], + node = elem; + + switch ( type ) { + case "only": + case "first": + while ( (node = node.previousSibling) ) { + if ( node.nodeType === 1 ) { + return false; + } + } + + if ( type === "first" ) { + return true; + } + + node = elem; + + case "last": + while ( (node = node.nextSibling) ) { + if ( node.nodeType === 1 ) { + return false; + } + } + + return true; + + case "nth": + var first = match[2], + last = match[3]; + + if ( first === 1 && last === 0 ) { + return true; + } + + var doneName = match[0], + parent = elem.parentNode; + + if ( parent && (parent.sizcache !== doneName || !elem.nodeIndex) ) { + var count = 0; + + for ( node = parent.firstChild; node; node = node.nextSibling ) { + if ( node.nodeType === 1 ) { + node.nodeIndex = ++count; + } + } + + parent.sizcache = doneName; + } + + var diff = elem.nodeIndex - last; + + if ( first === 0 ) { + return diff === 0; + + } else { + return ( diff % first === 0 && diff / first >= 0 ); + } + } + }, + + ID: function( elem, match ) { + return elem.nodeType === 1 && elem.getAttribute("id") === match; + }, + + TAG: function( elem, match ) { + return (match === "*" && elem.nodeType === 1) || elem.nodeName.toLowerCase() === match; + }, + + CLASS: function( elem, match ) { + return (" " + (elem.className || elem.getAttribute("class")) + " ") + .indexOf( match ) > -1; + }, + + ATTR: function( elem, match ) { + var name = match[1], + result = Expr.attrHandle[ name ] ? + Expr.attrHandle[ name ]( elem ) : + elem[ name ] != null ? + elem[ name ] : + elem.getAttribute( name ), + value = result + "", + type = match[2], + check = match[4]; + + return result == null ? + type === "!=" : + type === "=" ? + value === check : + type === "*=" ? + value.indexOf(check) >= 0 : + type === "~=" ? + (" " + value + " ").indexOf(check) >= 0 : + !check ? + value && result !== false : + type === "!=" ? + value !== check : + type === "^=" ? + value.indexOf(check) === 0 : + type === "$=" ? + value.substr(value.length - check.length) === check : + type === "|=" ? + value === check || value.substr(0, check.length + 1) === check + "-" : + false; + }, + + POS: function( elem, match, i, array ) { + var name = match[2], + filter = Expr.setFilters[ name ]; + + if ( filter ) { + return filter( elem, i, match, array ); + } + } + } +}; + +var origPOS = Expr.match.POS, + fescape = function(all, num){ + return "\\" + (num - 0 + 1); + }; + +for ( var type in Expr.match ) { + Expr.match[ type ] = new RegExp( Expr.match[ type ].source + (/(?![^\[]*\])(?![^\(]*\))/.source) ); + Expr.leftMatch[ type ] = new RegExp( /(^(?:.|\r|\n)*?)/.source + Expr.match[ type ].source.replace(/\\(\d+)/g, fescape) ); +} + +var makeArray = function( array, results ) { + array = Array.prototype.slice.call( array, 0 ); + + if ( results ) { + results.push.apply( results, array ); + return results; + } + + return array; +}; + +// Perform a simple check to determine if the browser is capable of +// converting a NodeList to an array using builtin methods. +// Also verifies that the returned array holds DOM nodes +// (which is not the case in the Blackberry browser) +try { + Array.prototype.slice.call( document.documentElement.childNodes, 0 )[0].nodeType; + +// Provide a fallback method if it does not work +} catch( e ) { + makeArray = function( array, results ) { + var i = 0, + ret = results || []; + + if ( toString.call(array) === "[object Array]" ) { + Array.prototype.push.apply( ret, array ); + + } else { + if ( typeof array.length === "number" ) { + for ( var l = array.length; i < l; i++ ) { + ret.push( array[i] ); + } + + } else { + for ( ; array[i]; i++ ) { + ret.push( array[i] ); + } + } + } + + return ret; + }; +} + +var sortOrder, siblingCheck; + +if ( document.documentElement.compareDocumentPosition ) { + sortOrder = function( a, b ) { + if ( a === b ) { + hasDuplicate = true; + return 0; + } + + if ( !a.compareDocumentPosition || !b.compareDocumentPosition ) { + return a.compareDocumentPosition ? -1 : 1; + } + + return a.compareDocumentPosition(b) & 4 ? -1 : 1; + }; + +} else { + sortOrder = function( a, b ) { + // The nodes are identical, we can exit early + if ( a === b ) { + hasDuplicate = true; + return 0; + + // Fallback to using sourceIndex (in IE) if it's available on both nodes + } else if ( a.sourceIndex && b.sourceIndex ) { + return a.sourceIndex - b.sourceIndex; + } + + var al, bl, + ap = [], + bp = [], + aup = a.parentNode, + bup = b.parentNode, + cur = aup; + + // If the nodes are siblings (or identical) we can do a quick check + if ( aup === bup ) { + return siblingCheck( a, b ); + + // If no parents were found then the nodes are disconnected + } else if ( !aup ) { + return -1; + + } else if ( !bup ) { + return 1; + } + + // Otherwise they're somewhere else in the tree so we need + // to build up a full list of the parentNodes for comparison + while ( cur ) { + ap.unshift( cur ); + cur = cur.parentNode; + } + + cur = bup; + + while ( cur ) { + bp.unshift( cur ); + cur = cur.parentNode; + } + + al = ap.length; + bl = bp.length; + + // Start walking down the tree looking for a discrepancy + for ( var i = 0; i < al && i < bl; i++ ) { + if ( ap[i] !== bp[i] ) { + return siblingCheck( ap[i], bp[i] ); + } + } + + // We ended someplace up the tree so do a sibling check + return i === al ? + siblingCheck( a, bp[i], -1 ) : + siblingCheck( ap[i], b, 1 ); + }; + + siblingCheck = function( a, b, ret ) { + if ( a === b ) { + return ret; + } + + var cur = a.nextSibling; + + while ( cur ) { + if ( cur === b ) { + return -1; + } + + cur = cur.nextSibling; + } + + return 1; + }; +} + +// Utility function for retreiving the text value of an array of DOM nodes +Sizzle.getText = function( elems ) { + var ret = "", elem; + + for ( var i = 0; elems[i]; i++ ) { + elem = elems[i]; + + // Get the text from text nodes and CDATA nodes + if ( elem.nodeType === 3 || elem.nodeType === 4 ) { + ret += elem.nodeValue; + + // Traverse everything else, except comment nodes + } else if ( elem.nodeType !== 8 ) { + ret += Sizzle.getText( elem.childNodes ); + } + } + + return ret; +}; + +// Check to see if the browser returns elements by name when +// querying by getElementById (and provide a workaround) +(function(){ + // We're going to inject a fake input element with a specified name + var form = document.createElement("div"), + id = "script" + (new Date()).getTime(), + root = document.documentElement; + + form.innerHTML = ""; + + // Inject it into the root element, check its status, and remove it quickly + root.insertBefore( form, root.firstChild ); + + // The workaround has to do additional checks after a getElementById + // Which slows things down for other browsers (hence the branching) + if ( document.getElementById( id ) ) { + Expr.find.ID = function( match, context, isXML ) { + if ( typeof context.getElementById !== "undefined" && !isXML ) { + var m = context.getElementById(match[1]); + + return m ? + m.id === match[1] || typeof m.getAttributeNode !== "undefined" && m.getAttributeNode("id").nodeValue === match[1] ? + [m] : + undefined : + []; + } + }; + + Expr.filter.ID = function( elem, match ) { + var node = typeof elem.getAttributeNode !== "undefined" && elem.getAttributeNode("id"); + + return elem.nodeType === 1 && node && node.nodeValue === match; + }; + } + + root.removeChild( form ); + + // release memory in IE + root = form = null; +})(); + +(function(){ + // Check to see if the browser returns only elements + // when doing getElementsByTagName("*") + + // Create a fake element + var div = document.createElement("div"); + div.appendChild( document.createComment("") ); + + // Make sure no comments are found + if ( div.getElementsByTagName("*").length > 0 ) { + Expr.find.TAG = function( match, context ) { + var results = context.getElementsByTagName( match[1] ); + + // Filter out possible comments + if ( match[1] === "*" ) { + var tmp = []; + + for ( var i = 0; results[i]; i++ ) { + if ( results[i].nodeType === 1 ) { + tmp.push( results[i] ); + } + } + + results = tmp; + } + + return results; + }; + } + + // Check to see if an attribute returns normalized href attributes + div.innerHTML = ""; + + if ( div.firstChild && typeof div.firstChild.getAttribute !== "undefined" && + div.firstChild.getAttribute("href") !== "#" ) { + + Expr.attrHandle.href = function( elem ) { + return elem.getAttribute( "href", 2 ); + }; + } + + // release memory in IE + div = null; +})(); + +if ( document.querySelectorAll ) { + (function(){ + var oldSizzle = Sizzle, + div = document.createElement("div"), + id = "__sizzle__"; + + div.innerHTML = "

      "; + + // Safari can't handle uppercase or unicode characters when + // in quirks mode. + if ( div.querySelectorAll && div.querySelectorAll(".TEST").length === 0 ) { + return; + } + + Sizzle = function( query, context, extra, seed ) { + context = context || document; + + // Only use querySelectorAll on non-XML documents + // (ID selectors don't work in non-HTML documents) + if ( !seed && !Sizzle.isXML(context) ) { + // See if we find a selector to speed up + var match = /^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec( query ); + + if ( match && (context.nodeType === 1 || context.nodeType === 9) ) { + // Speed-up: Sizzle("TAG") + if ( match[1] ) { + return makeArray( context.getElementsByTagName( query ), extra ); + + // Speed-up: Sizzle(".CLASS") + } else if ( match[2] && Expr.find.CLASS && context.getElementsByClassName ) { + return makeArray( context.getElementsByClassName( match[2] ), extra ); + } + } + + if ( context.nodeType === 9 ) { + // Speed-up: Sizzle("body") + // The body element only exists once, optimize finding it + if ( query === "body" && context.body ) { + return makeArray( [ context.body ], extra ); + + // Speed-up: Sizzle("#ID") + } else if ( match && match[3] ) { + var elem = context.getElementById( match[3] ); + + // Check parentNode to catch when Blackberry 4.6 returns + // nodes that are no longer in the document #6963 + if ( elem && elem.parentNode ) { + // Handle the case where IE and Opera return items + // by name instead of ID + if ( elem.id === match[3] ) { + return makeArray( [ elem ], extra ); + } + + } else { + return makeArray( [], extra ); + } + } + + try { + return makeArray( context.querySelectorAll(query), extra ); + } catch(qsaError) {} + + // qSA works strangely on Element-rooted queries + // We can work around this by specifying an extra ID on the root + // and working up from there (Thanks to Andrew Dupont for the technique) + // IE 8 doesn't work on object elements + } else if ( context.nodeType === 1 && context.nodeName.toLowerCase() !== "object" ) { + var oldContext = context, + old = context.getAttribute( "id" ), + nid = old || id, + hasParent = context.parentNode, + relativeHierarchySelector = /^\s*[+~]/.test( query ); + + if ( !old ) { + context.setAttribute( "id", nid ); + } else { + nid = nid.replace( /'/g, "\\$&" ); + } + if ( relativeHierarchySelector && hasParent ) { + context = context.parentNode; + } + + try { + if ( !relativeHierarchySelector || hasParent ) { + return makeArray( context.querySelectorAll( "[id='" + nid + "'] " + query ), extra ); + } + + } catch(pseudoError) { + } finally { + if ( !old ) { + oldContext.removeAttribute( "id" ); + } + } + } + } + + return oldSizzle(query, context, extra, seed); + }; + + for ( var prop in oldSizzle ) { + Sizzle[ prop ] = oldSizzle[ prop ]; + } + + // release memory in IE + div = null; + })(); +} + +(function(){ + var html = document.documentElement, + matches = html.matchesSelector || html.mozMatchesSelector || html.webkitMatchesSelector || html.msMatchesSelector; + + if ( matches ) { + // Check to see if it's possible to do matchesSelector + // on a disconnected node (IE 9 fails this) + var disconnectedMatch = !matches.call( document.createElement( "div" ), "div" ), + pseudoWorks = false; + + try { + // This should fail with an exception + // Gecko does not error, returns false instead + matches.call( document.documentElement, "[test!='']:sizzle" ); + + } catch( pseudoError ) { + pseudoWorks = true; + } + + Sizzle.matchesSelector = function( node, expr ) { + // Make sure that attribute selectors are quoted + expr = expr.replace(/\=\s*([^'"\]]*)\s*\]/g, "='$1']"); + + if ( !Sizzle.isXML( node ) ) { + try { + if ( pseudoWorks || !Expr.match.PSEUDO.test( expr ) && !/!=/.test( expr ) ) { + var ret = matches.call( node, expr ); + + // IE 9's matchesSelector returns false on disconnected nodes + if ( ret || !disconnectedMatch || + // As well, disconnected nodes are said to be in a document + // fragment in IE 9, so check for that + node.document && node.document.nodeType !== 11 ) { + return ret; + } + } + } catch(e) {} + } + + return Sizzle(expr, null, null, [node]).length > 0; + }; + } +})(); + +(function(){ + var div = document.createElement("div"); + + div.innerHTML = "
      "; + + // Opera can't find a second classname (in 9.6) + // Also, make sure that getElementsByClassName actually exists + if ( !div.getElementsByClassName || div.getElementsByClassName("e").length === 0 ) { + return; + } + + // Safari caches class attributes, doesn't catch changes (in 3.2) + div.lastChild.className = "e"; + + if ( div.getElementsByClassName("e").length === 1 ) { + return; + } + + Expr.order.splice(1, 0, "CLASS"); + Expr.find.CLASS = function( match, context, isXML ) { + if ( typeof context.getElementsByClassName !== "undefined" && !isXML ) { + return context.getElementsByClassName(match[1]); + } + }; + + // release memory in IE + div = null; +})(); + +function dirNodeCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) { + for ( var i = 0, l = checkSet.length; i < l; i++ ) { + var elem = checkSet[i]; + + if ( elem ) { + var match = false; + + elem = elem[dir]; + + while ( elem ) { + if ( elem.sizcache === doneName ) { + match = checkSet[elem.sizset]; + break; + } + + if ( elem.nodeType === 1 && !isXML ){ + elem.sizcache = doneName; + elem.sizset = i; + } + + if ( elem.nodeName.toLowerCase() === cur ) { + match = elem; + break; + } + + elem = elem[dir]; + } + + checkSet[i] = match; + } + } +} + +function dirCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) { + for ( var i = 0, l = checkSet.length; i < l; i++ ) { + var elem = checkSet[i]; + + if ( elem ) { + var match = false; + + elem = elem[dir]; + + while ( elem ) { + if ( elem.sizcache === doneName ) { + match = checkSet[elem.sizset]; + break; + } + + if ( elem.nodeType === 1 ) { + if ( !isXML ) { + elem.sizcache = doneName; + elem.sizset = i; + } + + if ( typeof cur !== "string" ) { + if ( elem === cur ) { + match = true; + break; + } + + } else if ( Sizzle.filter( cur, [elem] ).length > 0 ) { + match = elem; + break; + } + } + + elem = elem[dir]; + } + + checkSet[i] = match; + } + } +} + +if ( document.documentElement.contains ) { + Sizzle.contains = function( a, b ) { + return a !== b && (a.contains ? a.contains(b) : true); + }; + +} else if ( document.documentElement.compareDocumentPosition ) { + Sizzle.contains = function( a, b ) { + return !!(a.compareDocumentPosition(b) & 16); + }; + +} else { + Sizzle.contains = function() { + return false; + }; +} + +Sizzle.isXML = function( elem ) { + // documentElement is verified for cases where it doesn't yet exist + // (such as loading iframes in IE - #4833) + var documentElement = (elem ? elem.ownerDocument || elem : 0).documentElement; + + return documentElement ? documentElement.nodeName !== "HTML" : false; +}; + +var posProcess = function( selector, context ) { + var match, + tmpSet = [], + later = "", + root = context.nodeType ? [context] : context; + + // Position selectors must be done after the filter + // And so must :not(positional) so we move all PSEUDOs to the end + while ( (match = Expr.match.PSEUDO.exec( selector )) ) { + later += match[0]; + selector = selector.replace( Expr.match.PSEUDO, "" ); + } + + selector = Expr.relative[selector] ? selector + "*" : selector; + + for ( var i = 0, l = root.length; i < l; i++ ) { + Sizzle( selector, root[i], tmpSet ); + } + + return Sizzle.filter( later, tmpSet ); +}; + +// EXPOSE +jQuery.find = Sizzle; +jQuery.expr = Sizzle.selectors; +jQuery.expr[":"] = jQuery.expr.filters; +jQuery.unique = Sizzle.uniqueSort; +jQuery.text = Sizzle.getText; +jQuery.isXMLDoc = Sizzle.isXML; +jQuery.contains = Sizzle.contains; + + +})(); + + +var runtil = /Until$/, + rparentsprev = /^(?:parents|prevUntil|prevAll)/, + // Note: This RegExp should be improved, or likely pulled from Sizzle + rmultiselector = /,/, + isSimple = /^.[^:#\[\.,]*$/, + slice = Array.prototype.slice, + POS = jQuery.expr.match.POS, + // methods guaranteed to produce a unique set when starting from a unique set + guaranteedUnique = { + children: true, + contents: true, + next: true, + prev: true + }; + +jQuery.fn.extend({ + find: function( selector ) { + var self = this, + i, l; + + if ( typeof selector !== "string" ) { + return jQuery( selector ).filter(function() { + for ( i = 0, l = self.length; i < l; i++ ) { + if ( jQuery.contains( self[ i ], this ) ) { + return true; + } + } + }); + } + + var ret = this.pushStack( "", "find", selector ), + length, n, r; + + for ( i = 0, l = this.length; i < l; i++ ) { + length = ret.length; + jQuery.find( selector, this[i], ret ); + + if ( i > 0 ) { + // Make sure that the results are unique + for ( n = length; n < ret.length; n++ ) { + for ( r = 0; r < length; r++ ) { + if ( ret[r] === ret[n] ) { + ret.splice(n--, 1); + break; + } + } + } + } + } + + return ret; + }, + + has: function( target ) { + var targets = jQuery( target ); + return this.filter(function() { + for ( var i = 0, l = targets.length; i < l; i++ ) { + if ( jQuery.contains( this, targets[i] ) ) { + return true; + } + } + }); + }, + + not: function( selector ) { + return this.pushStack( winnow(this, selector, false), "not", selector); + }, + + filter: function( selector ) { + return this.pushStack( winnow(this, selector, true), "filter", selector ); + }, + + is: function( selector ) { + return !!selector && ( typeof selector === "string" ? + jQuery.filter( selector, this ).length > 0 : + this.filter( selector ).length > 0 ); + }, + + closest: function( selectors, context ) { + var ret = [], i, l, cur = this[0]; + + // Array + if ( jQuery.isArray( selectors ) ) { + var match, selector, + matches = {}, + level = 1; + + if ( cur && selectors.length ) { + for ( i = 0, l = selectors.length; i < l; i++ ) { + selector = selectors[i]; + + if ( !matches[ selector ] ) { + matches[ selector ] = POS.test( selector ) ? + jQuery( selector, context || this.context ) : + selector; + } + } + + while ( cur && cur.ownerDocument && cur !== context ) { + for ( selector in matches ) { + match = matches[ selector ]; + + if ( match.jquery ? match.index( cur ) > -1 : jQuery( cur ).is( match ) ) { + ret.push({ selector: selector, elem: cur, level: level }); + } + } + + cur = cur.parentNode; + level++; + } + } + + return ret; + } + + // String + var pos = POS.test( selectors ) || typeof selectors !== "string" ? + jQuery( selectors, context || this.context ) : + 0; + + for ( i = 0, l = this.length; i < l; i++ ) { + cur = this[i]; + + while ( cur ) { + if ( pos ? pos.index(cur) > -1 : jQuery.find.matchesSelector(cur, selectors) ) { + ret.push( cur ); + break; + + } else { + cur = cur.parentNode; + if ( !cur || !cur.ownerDocument || cur === context || cur.nodeType === 11 ) { + break; + } + } + } + } + + ret = ret.length > 1 ? jQuery.unique( ret ) : ret; + + return this.pushStack( ret, "closest", selectors ); + }, + + // Determine the position of an element within + // the matched set of elements + index: function( elem ) { + + // No argument, return index in parent + if ( !elem ) { + return ( this[0] && this[0].parentNode ) ? this.prevAll().length : -1; + } + + // index in selector + if ( typeof elem === "string" ) { + return jQuery.inArray( this[0], jQuery( elem ) ); + } + + // Locate the position of the desired element + return jQuery.inArray( + // If it receives a jQuery object, the first element is used + elem.jquery ? elem[0] : elem, this ); + }, + + add: function( selector, context ) { + var set = typeof selector === "string" ? + jQuery( selector, context ) : + jQuery.makeArray( selector && selector.nodeType ? [ selector ] : selector ), + all = jQuery.merge( this.get(), set ); + + return this.pushStack( isDisconnected( set[0] ) || isDisconnected( all[0] ) ? + all : + jQuery.unique( all ) ); + }, + + andSelf: function() { + return this.add( this.prevObject ); + } +}); + +// A painfully simple check to see if an element is disconnected +// from a document (should be improved, where feasible). +function isDisconnected( node ) { + return !node || !node.parentNode || node.parentNode.nodeType === 11; +} + +jQuery.each({ + parent: function( elem ) { + var parent = elem.parentNode; + return parent && parent.nodeType !== 11 ? parent : null; + }, + parents: function( elem ) { + return jQuery.dir( elem, "parentNode" ); + }, + parentsUntil: function( elem, i, until ) { + return jQuery.dir( elem, "parentNode", until ); + }, + next: function( elem ) { + return jQuery.nth( elem, 2, "nextSibling" ); + }, + prev: function( elem ) { + return jQuery.nth( elem, 2, "previousSibling" ); + }, + nextAll: function( elem ) { + return jQuery.dir( elem, "nextSibling" ); + }, + prevAll: function( elem ) { + return jQuery.dir( elem, "previousSibling" ); + }, + nextUntil: function( elem, i, until ) { + return jQuery.dir( elem, "nextSibling", until ); + }, + prevUntil: function( elem, i, until ) { + return jQuery.dir( elem, "previousSibling", until ); + }, + siblings: function( elem ) { + return jQuery.sibling( elem.parentNode.firstChild, elem ); + }, + children: function( elem ) { + return jQuery.sibling( elem.firstChild ); + }, + contents: function( elem ) { + return jQuery.nodeName( elem, "iframe" ) ? + elem.contentDocument || elem.contentWindow.document : + jQuery.makeArray( elem.childNodes ); + } +}, function( name, fn ) { + jQuery.fn[ name ] = function( until, selector ) { + var ret = jQuery.map( this, fn, until ), + // The variable 'args' was introduced in + // https://github.com/jquery/jquery/commit/52a0238 + // to work around a bug in Chrome 10 (Dev) and should be removed when the bug is fixed. + // http://code.google.com/p/v8/issues/detail?id=1050 + args = slice.call(arguments); + + if ( !runtil.test( name ) ) { + selector = until; + } + + if ( selector && typeof selector === "string" ) { + ret = jQuery.filter( selector, ret ); + } + + ret = this.length > 1 && !guaranteedUnique[ name ] ? jQuery.unique( ret ) : ret; + + if ( (this.length > 1 || rmultiselector.test( selector )) && rparentsprev.test( name ) ) { + ret = ret.reverse(); + } + + return this.pushStack( ret, name, args.join(",") ); + }; +}); + +jQuery.extend({ + filter: function( expr, elems, not ) { + if ( not ) { + expr = ":not(" + expr + ")"; + } + + return elems.length === 1 ? + jQuery.find.matchesSelector(elems[0], expr) ? [ elems[0] ] : [] : + jQuery.find.matches(expr, elems); + }, + + dir: function( elem, dir, until ) { + var matched = [], + cur = elem[ dir ]; + + while ( cur && cur.nodeType !== 9 && (until === undefined || cur.nodeType !== 1 || !jQuery( cur ).is( until )) ) { + if ( cur.nodeType === 1 ) { + matched.push( cur ); + } + cur = cur[dir]; + } + return matched; + }, + + nth: function( cur, result, dir, elem ) { + result = result || 1; + var num = 0; + + for ( ; cur; cur = cur[dir] ) { + if ( cur.nodeType === 1 && ++num === result ) { + break; + } + } + + return cur; + }, + + sibling: function( n, elem ) { + var r = []; + + for ( ; n; n = n.nextSibling ) { + if ( n.nodeType === 1 && n !== elem ) { + r.push( n ); + } + } + + return r; + } +}); + +// Implement the identical functionality for filter and not +function winnow( elements, qualifier, keep ) { + + // Can't pass null or undefined to indexOf in Firefox 4 + // Set to 0 to skip string check + qualifier = qualifier || 0; + + if ( jQuery.isFunction( qualifier ) ) { + return jQuery.grep(elements, function( elem, i ) { + var retVal = !!qualifier.call( elem, i, elem ); + return retVal === keep; + }); + + } else if ( qualifier.nodeType ) { + return jQuery.grep(elements, function( elem, i ) { + return (elem === qualifier) === keep; + }); + + } else if ( typeof qualifier === "string" ) { + var filtered = jQuery.grep(elements, function( elem ) { + return elem.nodeType === 1; + }); + + if ( isSimple.test( qualifier ) ) { + return jQuery.filter(qualifier, filtered, !keep); + } else { + qualifier = jQuery.filter( qualifier, filtered ); + } + } + + return jQuery.grep(elements, function( elem, i ) { + return (jQuery.inArray( elem, qualifier ) >= 0) === keep; + }); +} + + + + +var rinlinejQuery = / jQuery\d+="(?:\d+|null)"/g, + rleadingWhitespace = /^\s+/, + rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig, + rtagName = /<([\w:]+)/, + rtbody = /
      ", "
      " ], + tr: [ 2, "", "
      " ], + td: [ 3, "", "
      " ], + col: [ 2, "", "
      " ], + area: [ 1, "", "" ], + _default: [ 0, "", "" ] + }; + +wrapMap.optgroup = wrapMap.option; +wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead; +wrapMap.th = wrapMap.td; + +// IE can't serialize and + + + */ + +(function() { + this.loggly = function(opts) { + this.user_agent = get_agent(); + this.browser_size = get_size(); + log_methods = {'error': 5, 'warn': 4, 'info': 3, 'debug': 2, 'log': 1}; + if (!opts.url) throw new Error("Please include a Loggly HTTP URL."); + if (!opts.level) { + this.level = log_methods['info']; + } else { + this.level = log_methods[opts.level]; + } + this.log = function(data) { + if (log_methods['log'] == this.level) { + opts.data = data; + janky(opts); + } + }; + this.debug = function(data) { + if (log_methods['debug'] >= this.level) { + opts.data = data; + janky(opts); + } + }; + this.info = function(data) { + if (log_methods['info'] >= this.level) { + opts.data = data; + janky(opts); + } + }; + this.warn = function(data) { + if (log_methods['warn'] >= this.level) { + opts.data = data; + janky(opts); + } + }; + this.error = function(data) { + if (log_methods['error'] >= this.level) { + opts.data = data; + janky(opts); + } + }; + }; + this.janky = function(opts) { + janky._form(function(iframe, form) { + form.setAttribute("action", opts.url); + form.setAttribute("method", "post"); + janky._input(iframe, form, opts.data); + form.submit(); + setTimeout(function(){ + document.body.removeChild(iframe); + }, 2000); + }); + }; + this.janky._form = function(cb) { + var iframe = document.createElement("iframe"); + document.body.appendChild(iframe); + iframe.style.display = "none"; + setTimeout(function() { + var form = iframe.contentWindow.document.createElement("form"); + iframe.contentWindow.document.body.appendChild(form); + cb(iframe, form); + }, 0); + }; + this.janky._input = function(iframe, form, data) { + var inp = iframe.contentWindow.document.createElement("input"); + inp.setAttribute("type", "hidden"); + inp.setAttribute("name", "source"); + inp.value = "castor " + data; + form.appendChild(inp); + }; + this.get_agent = function () { + return navigator.appCodeName + navigator.appName + navigator.appVersion; + }; + this.get_size = function () { + var width = 0; var height = 0; + if( typeof( window.innerWidth ) == 'number' ) { + width = window.innerWidth; height = window.innerHeight; + } else if( document.documentElement && ( document.documentElement.clientWidth || document.documentElement.clientHeight ) ) { + width = document.documentElement.clientWidth; height = document.documentElement.clientHeight; + } else if( document.body && ( document.body.clientWidth || document.body.clientHeight ) ) { + width = document.body.clientWidth; height = document.body.clientHeight; + } + return {'height': height, 'width': width}; + }; +})(); + + +jsworld={};jsworld.formatIsoDateTime=function(a,b){if(typeof a==="undefined")a=new Date;if(typeof b==="undefined")b=false;var c=jsworld.formatIsoDate(a)+" "+jsworld.formatIsoTime(a);if(b){var d=a.getHours()-a.getUTCHours();var e=Math.abs(d);var f=a.getUTCMinutes();var g=a.getMinutes();if(g!=f&&f<30&&d<0)e--;if(g!=f&&f>30&&d>0)e--;var h;if(g!=f)h=":30";else h=":00";var i;if(e<10)i="0"+e+h;else i=""+e+h;if(d<0)i="-"+i;else i="+"+i;c=c+i}return c};jsworld.formatIsoDate=function(a){if(typeof a==="undefined")a=new Date;var b=a.getFullYear();var c=a.getMonth()+1;var d=a.getDate();return b+"-"+jsworld._zeroPad(c,2)+"-"+jsworld._zeroPad(d,2)};jsworld.formatIsoTime=function(a){if(typeof a==="undefined")a=new Date;var b=a.getHours();var c=a.getMinutes();var d=a.getSeconds();return jsworld._zeroPad(b,2)+":"+jsworld._zeroPad(c,2)+":"+jsworld._zeroPad(d,2)};jsworld.parseIsoDateTime=function(a){if(typeof a!="string")throw"Error: The parameter must be a string";var b=a.match(/^(\d\d\d\d)-(\d\d)-(\d\d)[T ](\d\d):(\d\d):(\d\d)/);if(b===null)b=a.match(/^(\d\d\d\d)(\d\d)(\d\d)[T ](\d\d)(\d\d)(\d\d)/);if(b===null)b=a.match(/^(\d\d\d\d)-(\d\d)-(\d\d)[T ](\d\d)(\d\d)(\d\d)/);if(b===null)b=a.match(/^(\d\d\d\d)-(\d\d)-(\d\d)[T ](\d\d):(\d\d):(\d\d)/);if(b===null)throw"Error: Invalid ISO-8601 date/time string";var c=parseInt(b[1],10);var d=parseInt(b[2],10);var e=parseInt(b[3],10);var f=parseInt(b[4],10);var g=parseInt(b[5],10);var h=parseInt(b[6],10);if(d<1||d>12||e<1||e>31||f<0||f>23||g<0||g>59||h<0||h>59)throw"Error: Invalid ISO-8601 date/time value";var i=new Date(c,d-1,e,f,g,h);if(i.getDate()!=e||i.getMonth()+1!=d)throw"Error: Invalid date";return i};jsworld.parseIsoDate=function(a){if(typeof a!="string")throw"Error: The parameter must be a string";var b=a.match(/^(\d\d\d\d)-(\d\d)-(\d\d)/);if(b===null)b=a.match(/^(\d\d\d\d)(\d\d)(\d\d)/);if(b===null)throw"Error: Invalid ISO-8601 date string";var c=parseInt(b[1],10);var d=parseInt(b[2],10);var e=parseInt(b[3],10);if(d<1||d>12||e<1||e>31)throw"Error: Invalid ISO-8601 date value";var f=new Date(c,d-1,e);if(f.getDate()!=e||f.getMonth()+1!=d)throw"Error: Invalid date";return f};jsworld.parseIsoTime=function(a){if(typeof a!="string")throw"Error: The parameter must be a string";var b=a.match(/^(\d\d):(\d\d):(\d\d)/);if(b===null)b=a.match(/^(\d\d)(\d\d)(\d\d)/);if(b===null)throw"Error: Invalid ISO-8601 date/time string";var c=parseInt(b[1],10);var d=parseInt(b[2],10);var e=parseInt(b[3],10);if(c<0||c>23||d<0||d>59||e<0||e>59)throw"Error: Invalid ISO-8601 time value";return new Date(0,0,0,c,d,e)};jsworld._trim=function(a){var b=" \n\r\t\f \u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u200b\u2028\u2029\u3000";for(var c=0;c=0;c--){if(b.indexOf(a.charAt(c))===-1){a=a.substring(0,c+1);break}}return b.indexOf(a.charAt(0))===-1?a:""};jsworld._isNumber=function(a){if(typeof a=="number")return true;if(typeof a!="string")return false;var b=a+"";return/^-?(\d+|\d*\.\d+)$/.test(b)};jsworld._isInteger=function(a){if(typeof a!="number"&&typeof a!="string")return false;var b=a+"";return/^-?\d+$/.test(b)};jsworld._isFloat=function(a){if(typeof a!="number"&&typeof a!="string")return false;var b=a+"";return/^-?\.\d+?$/.test(b)};jsworld._hasOption=function(a,b){if(typeof a!="string"||typeof b!="string")return false;if(b.indexOf(a)!=-1)return true;else return false};jsworld._stringReplaceAll=function(a,b,c){var d;if(b.length==1&&c.length==1){d="";for(var e=0;e0){if(d.length>0)g=parseInt(d.shift(),10);if(isNaN(g))throw"Error: Invalid grouping";if(g==-1){e=a.substring(0,f)+e;break}f-=g;if(f<1){e=a.substring(0,f+g)+e;break}e=c+a.substring(f,f+g)+e}return e};jsworld._formatFractionPart=function(a,b){for(var c=0;a.length0)return a;else throw"Empty or no string"};if(a==null||typeof a!="object")throw"Error: Invalid/missing locale properties";if(typeof a.decimal_point!="string")throw"Error: Invalid/missing decimal_point property";this.decimal_point=a.decimal_point;if(typeof a.thousands_sep!="string")throw"Error: Invalid/missing thousands_sep property";this.thousands_sep=a.thousands_sep;if(typeof a.grouping!="string")throw"Error: Invalid/missing grouping property";this.grouping=a.grouping;if(typeof a.int_curr_symbol!="string")throw"Error: Invalid/missing int_curr_symbol property";if(!/[A-Za-z]{3}.?/.test(a.int_curr_symbol))throw"Error: Invalid int_curr_symbol property";this.int_curr_symbol=a.int_curr_symbol;if(typeof a.currency_symbol!="string")throw"Error: Invalid/missing currency_symbol property";this.currency_symbol=a.currency_symbol;if(typeof a.frac_digits!="number"&&a.frac_digits<0)throw"Error: Invalid/missing frac_digits property";this.frac_digits=a.frac_digits;if(a.mon_decimal_point===null||a.mon_decimal_point==""){if(this.frac_digits>0)throw"Error: Undefined mon_decimal_point property";else a.mon_decimal_point=""}if(typeof a.mon_decimal_point!="string")throw"Error: Invalid/missing mon_decimal_point property";this.mon_decimal_point=a.mon_decimal_point;if(typeof a.mon_thousands_sep!="string")throw"Error: Invalid/missing mon_thousands_sep property";this.mon_thousands_sep=a.mon_thousands_sep;if(typeof a.mon_grouping!="string")throw"Error: Invalid/missing mon_grouping property";this.mon_grouping=a.mon_grouping;if(typeof a.positive_sign!="string")throw"Error: Invalid/missing positive_sign property";this.positive_sign=a.positive_sign;if(typeof a.negative_sign!="string")throw"Error: Invalid/missing negative_sign property";this.negative_sign=a.negative_sign;if(a.p_cs_precedes!==0&&a.p_cs_precedes!==1)throw"Error: Invalid/missing p_cs_precedes property, must be 0 or 1";this.p_cs_precedes=a.p_cs_precedes;if(a.n_cs_precedes!==0&&a.n_cs_precedes!==1)throw"Error: Invalid/missing n_cs_precedes, must be 0 or 1";this.n_cs_precedes=a.n_cs_precedes;if(a.p_sep_by_space!==0&&a.p_sep_by_space!==1&&a.p_sep_by_space!==2)throw"Error: Invalid/missing p_sep_by_space property, must be 0, 1 or 2";this.p_sep_by_space=a.p_sep_by_space;if(a.n_sep_by_space!==0&&a.n_sep_by_space!==1&&a.n_sep_by_space!==2)throw"Error: Invalid/missing n_sep_by_space property, must be 0, 1, or 2";this.n_sep_by_space=a.n_sep_by_space;if(a.p_sign_posn!==0&&a.p_sign_posn!==1&&a.p_sign_posn!==2&&a.p_sign_posn!==3&&a.p_sign_posn!==4)throw"Error: Invalid/missing p_sign_posn property, must be 0, 1, 2, 3 or 4";this.p_sign_posn=a.p_sign_posn;if(a.n_sign_posn!==0&&a.n_sign_posn!==1&&a.n_sign_posn!==2&&a.n_sign_posn!==3&&a.n_sign_posn!==4)throw"Error: Invalid/missing n_sign_posn property, must be 0, 1, 2, 3 or 4";this.n_sign_posn=a.n_sign_posn;if(typeof a.int_frac_digits!="number"&&a.int_frac_digits<0)throw"Error: Invalid/missing int_frac_digits property";this.int_frac_digits=a.int_frac_digits;if(a.int_p_cs_precedes!==0&&a.int_p_cs_precedes!==1)throw"Error: Invalid/missing int_p_cs_precedes property, must be 0 or 1";this.int_p_cs_precedes=a.int_p_cs_precedes;if(a.int_n_cs_precedes!==0&&a.int_n_cs_precedes!==1)throw"Error: Invalid/missing int_n_cs_precedes property, must be 0 or 1";this.int_n_cs_precedes=a.int_n_cs_precedes;if(a.int_p_sep_by_space!==0&&a.int_p_sep_by_space!==1&&a.int_p_sep_by_space!==2)throw"Error: Invalid/missing int_p_sep_by_spacev, must be 0, 1 or 2";this.int_p_sep_by_space=a.int_p_sep_by_space;if(a.int_n_sep_by_space!==0&&a.int_n_sep_by_space!==1&&a.int_n_sep_by_space!==2)throw"Error: Invalid/missing int_n_sep_by_space property, must be 0, 1, or 2";this.int_n_sep_by_space=a.int_n_sep_by_space;if(a.int_p_sign_posn!==0&&a.int_p_sign_posn!==1&&a.int_p_sign_posn!==2&&a.int_p_sign_posn!==3&&a.int_p_sign_posn!==4)throw"Error: Invalid/missing int_p_sign_posn property, must be 0, 1, 2, 3 or 4";this.int_p_sign_posn=a.int_p_sign_posn;if(a.int_n_sign_posn!==0&&a.int_n_sign_posn!==1&&a.int_n_sign_posn!==2&&a.int_n_sign_posn!==3&&a.int_n_sign_posn!==4)throw"Error: Invalid/missing int_n_sign_posn property, must be 0, 1, 2, 3 or 4";this.int_n_sign_posn=a.int_n_sign_posn;if(a==null||typeof a!="object")throw"Error: Invalid/missing time locale properties";try{this.abday=this._parseList(a.abday,7)}catch(b){throw"Error: Invalid abday property: "+b}try{this.day=this._parseList(a.day,7)}catch(b){throw"Error: Invalid day property: "+b}try{this.abmon=this._parseList(a.abmon,12)}catch(b){throw"Error: Invalid abmon property: "+b}try{this.mon=this._parseList(a.mon,12)}catch(b){throw"Error: Invalid mon property: "+b}try{this.d_fmt=this._validateFormatString(a.d_fmt)}catch(b){throw"Error: Invalid d_fmt property: "+b}try{this.t_fmt=this._validateFormatString(a.t_fmt)}catch(b){throw"Error: Invalid t_fmt property: "+b}try{this.d_t_fmt=this._validateFormatString(a.d_t_fmt)}catch(b){throw"Error: Invalid d_t_fmt property: "+b}try{var c=this._parseList(a.am_pm,2);this.am=c[0];this.pm=c[1]}catch(b){this.am="";this.pm=""}this.getAbbreviatedWeekdayName=function(a){if(typeof a=="undefined"||a===null)return this.abday;if(!jsworld._isInteger(a)||a<0||a>6)throw"Error: Invalid weekday argument, must be an integer [0..6]";return this.abday[a]};this.getWeekdayName=function(a){if(typeof a=="undefined"||a===null)return this.day;if(!jsworld._isInteger(a)||a<0||a>6)throw"Error: Invalid weekday argument, must be an integer [0..6]";return this.day[a]};this.getAbbreviatedMonthName=function(a){if(typeof a=="undefined"||a===null)return this.abmon;if(!jsworld._isInteger(a)||a<0||a>11)throw"Error: Invalid month argument, must be an integer [0..11]";return this.abmon[a]};this.getMonthName=function(a){if(typeof a=="undefined"||a===null)return this.mon;if(!jsworld._isInteger(a)||a<0||a>11)throw"Error: Invalid month argument, must be an integer [0..11]";return this.mon[a]};this.getDecimalPoint=function(){return this.decimal_point};this.getCurrencySymbol=function(){return this.currency_symbol};this.getIntCurrencySymbol=function(){return this.int_curr_symbol.substring(0,3)};this.currencySymbolPrecedes=function(){if(this.p_cs_precedes==1)return true;else return false};this.intCurrencySymbolPrecedes=function(){if(this.int_p_cs_precedes==1)return true;else return false};this.getMonetaryDecimalPoint=function(){return this.mon_decimal_point};this.getFractionalDigits=function(){return this.frac_digits};this.getIntFractionalDigits=function(){return this.int_frac_digits}};jsworld.NumericFormatter=function(a){if(typeof a!="object"||a._className!="jsworld.Locale")throw"Constructor error: You must provide a valid jsworld.Locale instance";this.lc=a;this.format=function(a,b){if(typeof a=="string")a=jsworld._trim(a);if(!jsworld._isNumber(a))throw"Error: The input is not a number";var c=parseFloat(a,10);var d=jsworld._getPrecision(b);if(d!=-1)c=Math.round(c*Math.pow(10,d))/Math.pow(10,d);var e=jsworld._splitNumber(String(c));var f;if(c===0)f="0";else f=jsworld._hasOption("^",b)?e.integer:jsworld._formatIntegerPart(e.integer,this.lc.grouping,this.lc.thousands_sep);var g=d!=-1?jsworld._formatFractionPart(e.fraction,d):e.fraction;var h=g.length?f+this.lc.decimal_point+g:f;if(jsworld._hasOption("~",b)||c===0){return h}else{if(jsworld._hasOption("+",b)||c<0){if(c>0)return"+"+h;else if(c<0)return"-"+h;else return h}else{return h}}}};jsworld.DateTimeFormatter=function(a){if(typeof a!="object"||a._className!="jsworld.Locale")throw"Constructor error: You must provide a valid jsworld.Locale instance.";this.lc=a;this.formatDate=function(a){var b=null;if(typeof a=="string"){try{b=jsworld.parseIsoDate(a)}catch(c){b=jsworld.parseIsoDateTime(a)}}else if(a!==null&&typeof a=="object"){b=a}else{throw"Error: Invalid date argument, must be a Date object or an ISO-8601 date/time string"}return this._applyFormatting(b,this.lc.d_fmt)};this.formatTime=function(a){var b=null;if(typeof a=="string"){try{b=jsworld.parseIsoTime(a)}catch(c){b=jsworld.parseIsoDateTime(a)}}else if(a!==null&&typeof a=="object"){b=a}else{throw"Error: Invalid date argument, must be a Date object or an ISO-8601 date/time string"}return this._applyFormatting(b,this.lc.t_fmt)};this.formatDateTime=function(a){var b=null;if(typeof a=="string"){b=jsworld.parseIsoDateTime(a)}else if(a!==null&&typeof a=="object"){b=a}else{throw"Error: Invalid date argument, must be a Date object or an ISO-8601 date/time string"}return this._applyFormatting(b,this.lc.d_t_fmt)};this._applyFormatting=function(a,b){b=b.replace(/%%/g,"%");b=b.replace(/%a/g,this.lc.abday[a.getDay()]);b=b.replace(/%A/g,this.lc.day[a.getDay()]);b=b.replace(/%b/g,this.lc.abmon[a.getMonth()]);b=b.replace(/%B/g,this.lc.mon[a.getMonth()]);b=b.replace(/%d/g,jsworld._zeroPad(a.getDate(),2));b=b.replace(/%e/g,jsworld._spacePad(a.getDate(),2));b=b.replace(/%F/g,a.getFullYear()+"-"+jsworld._zeroPad(a.getMonth()+1,2)+"-"+jsworld._zeroPad(a.getDate(),2));b=b.replace(/%h/g,this.lc.abmon[a.getMonth()]);b=b.replace(/%H/g,jsworld._zeroPad(a.getHours(),2));b=b.replace(/%I/g,jsworld._zeroPad(this._hours12(a.getHours()),2));b=b.replace(/%k/g,a.getHours());b=b.replace(/%l/g,this._hours12(a.getHours()));b=b.replace(/%m/g,jsworld._zeroPad(a.getMonth()+1,2));b=b.replace(/%n/g,"\n");b=b.replace(/%M/g,jsworld._zeroPad(a.getMinutes(),2));b=b.replace(/%p/g,this._getAmPm(a.getHours()));b=b.replace(/%P/g,this._getAmPm(a.getHours()).toLocaleLowerCase());b=b.replace(/%R/g,jsworld._zeroPad(a.getHours(),2)+":"+jsworld._zeroPad(a.getMinutes(),2));b=b.replace(/%S/g,jsworld._zeroPad(a.getSeconds(),2));b=b.replace(/%T/g,jsworld._zeroPad(a.getHours(),2)+":"+jsworld._zeroPad(a.getMinutes(),2)+":"+jsworld._zeroPad(a.getSeconds(),2));b=b.replace(/%w/g,this.lc.day[a.getDay()]);b=b.replace(/%y/g,(new String(a.getFullYear())).substring(2));b=b.replace(/%Y/g,a.getFullYear());b=b.replace(/%Z/g,"");b=b.replace(/%[a-zA-Z]/g,"");return b};this._hours12=function(a){if(a===0)return 12;else if(a>12)return a-12;else return a};this._getAmPm=function(a){if(a===0||a>12)return this.lc.pm;else return this.lc.am}};jsworld.MonetaryFormatter=function(a,b,c){if(typeof a!="object"||a._className!="jsworld.Locale")throw"Constructor error: You must provide a valid jsworld.Locale instance";this.lc=a;this.currencyFractionDigits={AFN:0,ALL:0,AMD:0,BHD:3,BIF:0,BYR:0,CLF:0,CLP:0,COP:0,CRC:0,DJF:0,GNF:0,GYD:0,HUF:0,IDR:0,IQD:0,IRR:0,ISK:0,JOD:3,JPY:0,KMF:0,KRW:0,KWD:3,LAK:0,LBP:0,LYD:3,MGA:0,MMK:0,MNT:0,MRO:0,MUR:0,OMR:3,PKR:0,PYG:0,RSD:0,RWF:0,SLL:0,SOS:0,STD:0,SYP:0,TND:3,TWD:0,TZS:0,UGX:0,UZS:0,VND:0,VUV:0,XAF:0,XOF:0,XPF:0,YER:0,ZMK:0};if(typeof b=="string"){this.currencyCode=b.toUpperCase();var d=this.currencyFractionDigits[this.currencyCode];if(typeof d!="number")d=2;this.lc.frac_digits=d;this.lc.int_frac_digits=d}else{this.currencyCode=this.lc.int_curr_symbol.substring(0,3).toUpperCase()}this.intSep=this.lc.int_curr_symbol.charAt(3);if(this.currencyCode==this.lc.int_curr_symbol.substring(0,3)){this.internationalFormatting=false;this.curSym=this.lc.currency_symbol}else{if(typeof c=="string"){this.curSym=c;this.internationalFormatting=false}else{this.internationalFormatting=true}}this.getCurrencySymbol=function(){return this.curSym};this.currencySymbolPrecedes=function(a){if(typeof a=="string"&&a=="i"){if(this.lc.int_p_cs_precedes==1)return true;else return false}else{if(this.internationalFormatting){if(this.lc.int_p_cs_precedes==1)return true;else return false}else{if(this.lc.p_cs_precedes==1)return true;else return false}}};this.getDecimalPoint=function(){return this.lc.mon_decimal_point};this.getFractionalDigits=function(a){if(typeof a=="string"&&a=="i"){return this.lc.int_frac_digits}else{if(this.internationalFormatting)return this.lc.int_frac_digits;else return this.lc.frac_digits}};this.format=function(a,b){var c;if(typeof a=="string"){a=jsworld._trim(a);c=parseFloat(a);if(typeof c!="number"||isNaN(c))throw"Error: Amount string not a number"}else if(typeof a=="number"){c=a}else{throw"Error: Amount not a number"}var d=jsworld._getPrecision(b);if(d==-1){if(this.internationalFormatting||jsworld._hasOption("i",b))d=this.lc.int_frac_digits;else d=this.lc.frac_digits}c=Math.round(c*Math.pow(10,d))/Math.pow(10,d);var e=jsworld._splitNumber(String(c));var f;if(c===0)f="0";else f=jsworld._hasOption("^",b)?e.integer:jsworld._formatIntegerPart(e.integer,this.lc.mon_grouping,this.lc.mon_thousands_sep);var g;if(d==-1){if(this.internationalFormatting||jsworld._hasOption("i",b))g=jsworld._formatFractionPart(e.fraction,this.lc.int_frac_digits);else g=jsworld._formatFractionPart(e.fraction,this.lc.frac_digits)}else{g=jsworld._formatFractionPart(e.fraction,d)}var h;if(this.lc.frac_digits>0||g.length)h=f+this.lc.mon_decimal_point+g;else h=f;if(jsworld._hasOption("~",b)){return h}else{var i=jsworld._hasOption("!",b)?true:false;var j=c<0?"-":"+";if(this.internationalFormatting||jsworld._hasOption("i",b)){if(i)return this._formatAsInternationalCurrencyWithNoSym(j,h);else return this._formatAsInternationalCurrency(j,h)}else{if(i)return this._formatAsLocalCurrencyWithNoSym(j,h);else return this._formatAsLocalCurrency(j,h)}}};this._formatAsLocalCurrency=function(a,b){if(a=="+"){if(this.lc.p_sign_posn===0&&this.lc.p_sep_by_space===0&&this.lc.p_cs_precedes===0){return"("+b+this.curSym+")"}else if(this.lc.p_sign_posn===0&&this.lc.p_sep_by_space===0&&this.lc.p_cs_precedes===1){return"("+this.curSym+b+")"}else if(this.lc.p_sign_posn===0&&this.lc.p_sep_by_space===1&&this.lc.p_cs_precedes===0){return"("+b+" "+this.curSym+")"}else if(this.lc.p_sign_posn===0&&this.lc.p_sep_by_space===1&&this.lc.p_cs_precedes===1){return"("+this.curSym+" "+b+")"}else if(this.lc.p_sign_posn===1&&this.lc.p_sep_by_space===0&&this.lc.p_cs_precedes===0){return this.lc.positive_sign+b+this.curSym}else if(this.lc.p_sign_posn===1&&this.lc.p_sep_by_space===0&&this.lc.p_cs_precedes===1){return this.lc.positive_sign+this.curSym+b}else if(this.lc.p_sign_posn===1&&this.lc.p_sep_by_space===1&&this.lc.p_cs_precedes===0){return this.lc.positive_sign+b+" "+this.curSym}else if(this.lc.p_sign_posn===1&&this.lc.p_sep_by_space===1&&this.lc.p_cs_precedes===1){return this.lc.positive_sign+this.curSym+" "+b}else if(this.lc.p_sign_posn===1&&this.lc.p_sep_by_space===2&&this.lc.p_cs_precedes===0){return this.lc.positive_sign+" "+b+this.curSym}else if(this.lc.p_sign_posn===1&&this.lc.p_sep_by_space===2&&this.lc.p_cs_precedes===1){return this.lc.positive_sign+" "+this.curSym+b}else if(this.lc.p_sign_posn===2&&this.lc.p_sep_by_space===0&&this.lc.p_cs_precedes===0){return b+this.curSym+this.lc.positive_sign}else if(this.lc.p_sign_posn===2&&this.lc.p_sep_by_space===0&&this.lc.p_cs_precedes===1){return this.curSym+b+this.lc.positive_sign}else if(this.lc.p_sign_posn===2&&this.lc.p_sep_by_space===1&&this.lc.p_cs_precedes===0){return b+" "+this.curSym+this.lc.positive_sign}else if(this.lc.p_sign_posn===2&&this.lc.p_sep_by_space===1&&this.lc.p_cs_precedes===1){return this.curSym+" "+b+this.lc.positive_sign}else if(this.lc.p_sign_posn===2&&this.lc.p_sep_by_space===2&&this.lc.p_cs_precedes===0){return b+this.curSym+" "+this.lc.positive_sign}else if(this.lc.p_sign_posn===2&&this.lc.p_sep_by_space===2&&this.lc.p_cs_precedes===1){return this.curSym+b+" "+this.lc.positive_sign}else if(this.lc.p_sign_posn===3&&this.lc.p_sep_by_space===0&&this.lc.p_cs_precedes===0){return b+this.lc.positive_sign+this.curSym}else if(this.lc.p_sign_posn===3&&this.lc.p_sep_by_space===0&&this.lc.p_cs_precedes===1){return this.lc.positive_sign+this.curSym+b}else if(this.lc.p_sign_posn===3&&this.lc.p_sep_by_space===1&&this.lc.p_cs_precedes===0){return b+" "+this.lc.positive_sign+this.curSym}else if(this.lc.p_sign_posn===3&&this.lc.p_sep_by_space===1&&this.lc.p_cs_precedes===1){return this.lc.positive_sign+this.curSym+" "+b}else if(this.lc.p_sign_posn===3&&this.lc.p_sep_by_space===2&&this.lc.p_cs_precedes===0){return b+this.lc.positive_sign+" "+this.curSym}else if(this.lc.p_sign_posn===3&&this.lc.p_sep_by_space===2&&this.lc.p_cs_precedes===1){return this.lc.positive_sign+" "+this.curSym+b}else if(this.lc.p_sign_posn===4&&this.lc.p_sep_by_space===0&&this.lc.p_cs_precedes===0){return b+this.curSym+this.lc.positive_sign}else if(this.lc.p_sign_posn===4&&this.lc.p_sep_by_space===0&&this.lc.p_cs_precedes===1){return this.curSym+this.lc.positive_sign+b}else if(this.lc.p_sign_posn===4&&this.lc.p_sep_by_space===1&&this.lc.p_cs_precedes===0){return b+" "+this.curSym+this.lc.positive_sign}else if(this.lc.p_sign_posn===4&&this.lc.p_sep_by_space===1&&this.lc.p_cs_precedes===1){return this.curSym+this.lc.positive_sign+" "+b}else if(this.lc.p_sign_posn===4&&this.lc.p_sep_by_space===2&&this.lc.p_cs_precedes===0){return b+this.curSym+" "+this.lc.positive_sign}else if(this.lc.p_sign_posn===4&&this.lc.p_sep_by_space===2&&this.lc.p_cs_precedes===1){return this.curSym+" "+this.lc.positive_sign+b}}else if(a=="-"){if(this.lc.n_sign_posn===0&&this.lc.n_sep_by_space===0&&this.lc.n_cs_precedes===0){return"("+b+this.curSym+")"}else if(this.lc.n_sign_posn===0&&this.lc.n_sep_by_space===0&&this.lc.n_cs_precedes===1){return"("+this.curSym+b+")"}else if(this.lc.n_sign_posn===0&&this.lc.n_sep_by_space===1&&this.lc.n_cs_precedes===0){return"("+b+" "+this.curSym+")"}else if(this.lc.n_sign_posn===0&&this.lc.n_sep_by_space===1&&this.lc.n_cs_precedes===1){return"("+this.curSym+" "+b+")"}else if(this.lc.n_sign_posn===1&&this.lc.n_sep_by_space===0&&this.lc.n_cs_precedes===0){return this.lc.negative_sign+b+this.curSym}else if(this.lc.n_sign_posn===1&&this.lc.n_sep_by_space===0&&this.lc.n_cs_precedes===1){return this.lc.negative_sign+this.curSym+b}else if(this.lc.n_sign_posn===1&&this.lc.n_sep_by_space===1&&this.lc.n_cs_precedes===0){return this.lc.negative_sign+b+" "+this.curSym}else if(this.lc.n_sign_posn===1&&this.lc.n_sep_by_space===1&&this.lc.n_cs_precedes===1){return this.lc.negative_sign+this.curSym+" "+b}else if(this.lc.n_sign_posn===1&&this.lc.n_sep_by_space===2&&this.lc.n_cs_precedes===0){return this.lc.negative_sign+" "+b+this.curSym}else if(this.lc.n_sign_posn===1&&this.lc.n_sep_by_space===2&&this.lc.n_cs_precedes===1){return this.lc.negative_sign+" "+this.curSym+b}else if(this.lc.n_sign_posn===2&&this.lc.n_sep_by_space===0&&this.lc.n_cs_precedes===0){return b+this.curSym+this.lc.negative_sign}else if(this.lc.n_sign_posn===2&&this.lc.n_sep_by_space===0&&this.lc.n_cs_precedes===1){return this.curSym+b+this.lc.negative_sign}else if(this.lc.n_sign_posn===2&&this.lc.n_sep_by_space===1&&this.lc.n_cs_precedes===0){return b+" "+this.curSym+this.lc.negative_sign}else if(this.lc.n_sign_posn===2&&this.lc.n_sep_by_space===1&&this.lc.n_cs_precedes===1){return this.curSym+" "+b+this.lc.negative_sign}else if(this.lc.n_sign_posn===2&&this.lc.n_sep_by_space===2&&this.lc.n_cs_precedes===0){return b+this.curSym+" "+this.lc.negative_sign}else if(this.lc.n_sign_posn===2&&this.lc.n_sep_by_space===2&&this.lc.n_cs_precedes===1){return this.curSym+b+" "+this.lc.negative_sign}else if(this.lc.n_sign_posn===3&&this.lc.n_sep_by_space===0&&this.lc.n_cs_precedes===0){return b+this.lc.negative_sign+this.curSym}else if(this.lc.n_sign_posn===3&&this.lc.n_sep_by_space===0&&this.lc.n_cs_precedes===1){return this.lc.negative_sign+this.curSym+b}else if(this.lc.n_sign_posn===3&&this.lc.n_sep_by_space===1&&this.lc.n_cs_precedes===0){return b+" "+this.lc.negative_sign+this.curSym}else if(this.lc.n_sign_posn===3&&this.lc.n_sep_by_space===1&&this.lc.n_cs_precedes===1){return this.lc.negative_sign+this.curSym+" "+b}else if(this.lc.n_sign_posn===3&&this.lc.n_sep_by_space===2&&this.lc.n_cs_precedes===0){return b+this.lc.negative_sign+" "+this.curSym}else if(this.lc.n_sign_posn===3&&this.lc.n_sep_by_space===2&&this.lc.n_cs_precedes===1){return this.lc.negative_sign+" "+this.curSym+b}else if(this.lc.n_sign_posn===4&&this.lc.n_sep_by_space===0&&this.lc.n_cs_precedes===0){return b+this.curSym+this.lc.negative_sign}else if(this.lc.n_sign_posn===4&&this.lc.n_sep_by_space===0&&this.lc.n_cs_precedes===1){return this.curSym+this.lc.negative_sign+b}else if(this.lc.n_sign_posn===4&&this.lc.n_sep_by_space===1&&this.lc.n_cs_precedes===0){return b+" "+this.curSym+this.lc.negative_sign}else if(this.lc.n_sign_posn===4&&this.lc.n_sep_by_space===1&&this.lc.n_cs_precedes===1){return this.curSym+this.lc.negative_sign+" "+b}else if(this.lc.n_sign_posn===4&&this.lc.n_sep_by_space===2&&this.lc.n_cs_precedes===0){return b+this.curSym+" "+this.lc.negative_sign}else if(this.lc.n_sign_posn===4&&this.lc.n_sep_by_space===2&&this.lc.n_cs_precedes===1){return this.curSym+" "+this.lc.negative_sign+b}}throw"Error: Invalid POSIX LC MONETARY definition"};this._formatAsInternationalCurrency=function(a,b){if(a=="+"){if(this.lc.int_p_sign_posn===0&&this.lc.int_p_sep_by_space===0&&this.lc.int_p_cs_precedes===0){return"("+b+this.currencyCode+")"}else if(this.lc.int_p_sign_posn===0&&this.lc.int_p_sep_by_space===0&&this.lc.int_p_cs_precedes===1){return"("+this.currencyCode+b+")"}else if(this.lc.int_p_sign_posn===0&&this.lc.int_p_sep_by_space===1&&this.lc.int_p_cs_precedes===0){return"("+b+this.intSep+this.currencyCode+")"}else if(this.lc.int_p_sign_posn===0&&this.lc.int_p_sep_by_space===1&&this.lc.int_p_cs_precedes===1){return"("+this.currencyCode+this.intSep+b+")"}else if(this.lc.int_p_sign_posn===1&&this.lc.int_p_sep_by_space===0&&this.lc.int_p_cs_precedes===0){return this.lc.positive_sign+b+this.currencyCode}else if(this.lc.int_p_sign_posn===1&&this.lc.int_p_sep_by_space===0&&this.lc.int_p_cs_precedes===1){return this.lc.positive_sign+this.currencyCode+b}else if(this.lc.int_p_sign_posn===1&&this.lc.int_p_sep_by_space===1&&this.lc.int_p_cs_precedes===0){return this.lc.positive_sign+b+this.intSep+this.currencyCode}else if(this.lc.int_p_sign_posn===1&&this.lc.int_p_sep_by_space===1&&this.lc.int_p_cs_precedes===1){return this.lc.positive_sign+this.currencyCode+this.intSep+b}else if(this.lc.int_p_sign_posn===1&&this.lc.int_p_sep_by_space===2&&this.lc.int_p_cs_precedes===0){return this.lc.positive_sign+this.intSep+b+this.currencyCode}else if(this.lc.int_p_sign_posn===1&&this.lc.int_p_sep_by_space===2&&this.lc.int_p_cs_precedes===1){return this.lc.positive_sign+this.intSep+this.currencyCode+b}else if(this.lc.int_p_sign_posn===2&&this.lc.int_p_sep_by_space===0&&this.lc.int_p_cs_precedes===0){return b+this.currencyCode+this.lc.positive_sign}else if(this.lc.int_p_sign_posn===2&&this.lc.int_p_sep_by_space===0&&this.lc.int_p_cs_precedes===1){return this.currencyCode+b+this.lc.positive_sign}else if(this.lc.int_p_sign_posn===2&&this.lc.int_p_sep_by_space===1&&this.lc.int_p_cs_precedes===0){return b+this.intSep+this.currencyCode+this.lc.positive_sign}else if(this.lc.int_p_sign_posn===2&&this.lc.int_p_sep_by_space===1&&this.lc.int_p_cs_precedes===1){return this.currencyCode+this.intSep+b+this.lc.positive_sign}else if(this.lc.int_p_sign_posn===2&&this.lc.int_p_sep_by_space===2&&this.lc.int_p_cs_precedes===0){return b+this.currencyCode+this.intSep+this.lc.positive_sign}else if(this.lc.int_p_sign_posn===2&&this.lc.int_p_sep_by_space===2&&this.lc.int_p_cs_precedes===1){return this.currencyCode+b+this.intSep+this.lc.positive_sign}else if(this.lc.int_p_sign_posn===3&&this.lc.int_p_sep_by_space===0&&this.lc.int_p_cs_precedes===0){return b+this.lc.positive_sign+this.currencyCode}else if(this.lc.int_p_sign_posn===3&&this.lc.int_p_sep_by_space===0&&this.lc.int_p_cs_precedes===1){return this.lc.positive_sign+this.currencyCode+b}else if(this.lc.int_p_sign_posn===3&&this.lc.int_p_sep_by_space===1&&this.lc.int_p_cs_precedes===0){return b+this.intSep+this.lc.positive_sign+this.currencyCode}else if(this.lc.int_p_sign_posn===3&&this.lc.int_p_sep_by_space===1&&this.lc.int_p_cs_precedes===1){return this.lc.positive_sign+this.currencyCode+this.intSep+b}else if(this.lc.int_p_sign_posn===3&&this.lc.int_p_sep_by_space===2&&this.lc.int_p_cs_precedes===0){return b+this.lc.positive_sign+this.intSep+this.currencyCode}else if(this.lc.int_p_sign_posn===3&&this.lc.int_p_sep_by_space===2&&this.lc.int_p_cs_precedes===1){return this.lc.positive_sign+this.intSep+this.currencyCode+b}else if(this.lc.int_p_sign_posn===4&&this.lc.int_p_sep_by_space===0&&this.lc.int_p_cs_precedes===0){return b+this.currencyCode+this.lc.positive_sign}else if(this.lc.int_p_sign_posn===4&&this.lc.int_p_sep_by_space===0&&this.lc.int_p_cs_precedes===1){return this.currencyCode+this.lc.positive_sign+b}else if(this.lc.int_p_sign_posn===4&&this.lc.int_p_sep_by_space===1&&this.lc.int_p_cs_precedes===0){return b+this.intSep+this.currencyCode+this.lc.positive_sign}else if(this.lc.int_p_sign_posn===4&&this.lc.int_p_sep_by_space===1&&this.lc.int_p_cs_precedes===1){return this.currencyCode+this.lc.positive_sign+this.intSep+b}else if(this.lc.int_p_sign_posn===4&&this.lc.int_p_sep_by_space===2&&this.lc.int_p_cs_precedes===0){return b+this.currencyCode+this.intSep+this.lc.positive_sign}else if(this.lc.int_p_sign_posn===4&&this.lc.int_p_sep_by_space===2&&this.lc.int_p_cs_precedes===1){return this.currencyCode+this.intSep+this.lc.positive_sign+b}}else if(a=="-"){if(this.lc.int_n_sign_posn===0&&this.lc.int_n_sep_by_space===0&&this.lc.int_n_cs_precedes===0){return"("+b+this.currencyCode+")"}else if(this.lc.int_n_sign_posn===0&&this.lc.int_n_sep_by_space===0&&this.lc.int_n_cs_precedes===1){return"("+this.currencyCode+b+")"}else if(this.lc.int_n_sign_posn===0&&this.lc.int_n_sep_by_space===1&&this.lc.int_n_cs_precedes===0){return"("+b+this.intSep+this.currencyCode+")"}else if(this.lc.int_n_sign_posn===0&&this.lc.int_n_sep_by_space===1&&this.lc.int_n_cs_precedes===1){return"("+this.currencyCode+this.intSep+b+")"}else if(this.lc.int_n_sign_posn===1&&this.lc.int_n_sep_by_space===0&&this.lc.int_n_cs_precedes===0){return this.lc.negative_sign+b+this.currencyCode}else if(this.lc.int_n_sign_posn===1&&this.lc.int_n_sep_by_space===0&&this.lc.int_n_cs_precedes===1){return this.lc.negative_sign+this.currencyCode+b}else if(this.lc.int_n_sign_posn===1&&this.lc.int_n_sep_by_space===1&&this.lc.int_n_cs_precedes===0){return this.lc.negative_sign+b+this.intSep+this.currencyCode}else if(this.lc.int_n_sign_posn===1&&this.lc.int_n_sep_by_space===1&&this.lc.int_n_cs_precedes===1){return this.lc.negative_sign+this.currencyCode+this.intSep+b}else if(this.lc.int_n_sign_posn===1&&this.lc.int_n_sep_by_space===2&&this.lc.int_n_cs_precedes===0){return this.lc.negative_sign+this.intSep+b+this.currencyCode}else if(this.lc.int_n_sign_posn===1&&this.lc.int_n_sep_by_space===2&&this.lc.int_n_cs_precedes===1){return this.lc.negative_sign+this.intSep+this.currencyCode+b}else if(this.lc.int_n_sign_posn===2&&this.lc.int_n_sep_by_space===0&&this.lc.int_n_cs_precedes===0){return b+this.currencyCode+this.lc.negative_sign}else if(this.lc.int_n_sign_posn===2&&this.lc.int_n_sep_by_space===0&&this.lc.int_n_cs_precedes===1){return this.currencyCode+b+this.lc.negative_sign}else if(this.lc.int_n_sign_posn===2&&this.lc.int_n_sep_by_space===1&&this.lc.int_n_cs_precedes===0){return b+this.intSep+this.currencyCode+this.lc.negative_sign}else if(this.lc.int_n_sign_posn===2&&this.lc.int_n_sep_by_space===1&&this.lc.int_n_cs_precedes===1){return this.currencyCode+this.intSep+b+this.lc.negative_sign}else if(this.lc.int_n_sign_posn===2&&this.lc.int_n_sep_by_space===2&&this.lc.int_n_cs_precedes===0){return b+this.currencyCode+this.intSep+this.lc.negative_sign}else if(this.lc.int_n_sign_posn===2&&this.lc.int_n_sep_by_space===2&&this.lc.int_n_cs_precedes===1){return this.currencyCode+b+this.intSep+this.lc.negative_sign}else if(this.lc.int_n_sign_posn===3&&this.lc.int_n_sep_by_space===0&&this.lc.int_n_cs_precedes===0){return b+this.lc.negative_sign+this.currencyCode}else if(this.lc.int_n_sign_posn===3&&this.lc.int_n_sep_by_space===0&&this.lc.int_n_cs_precedes===1){return this.lc.negative_sign+this.currencyCode+b}else if(this.lc.int_n_sign_posn===3&&this.lc.int_n_sep_by_space===1&&this.lc.int_n_cs_precedes===0){return b+this.intSep+this.lc.negative_sign+this.currencyCode}else if(this.lc.int_n_sign_posn===3&&this.lc.int_n_sep_by_space===1&&this.lc.int_n_cs_precedes===1){return this.lc.negative_sign+this.currencyCode+this.intSep+b}else if(this.lc.int_n_sign_posn===3&&this.lc.int_n_sep_by_space===2&&this.lc.int_n_cs_precedes===0){return b+this.lc.negative_sign+this.intSep+this.currencyCode}else if(this.lc.int_n_sign_posn===3&&this.lc.int_n_sep_by_space===2&&this.lc.int_n_cs_precedes===1){return this.lc.negative_sign+this.intSep+this.currencyCode+b}else if(this.lc.int_n_sign_posn===4&&this.lc.int_n_sep_by_space===0&&this.lc.int_n_cs_precedes===0){return b+this.currencyCode+this.lc.negative_sign}else if(this.lc.int_n_sign_posn===4&&this.lc.int_n_sep_by_space===0&&this.lc.int_n_cs_precedes===1){return this.currencyCode+this.lc.negative_sign+b}else if(this.lc.int_n_sign_posn===4&&this.lc.int_n_sep_by_space===1&&this.lc.int_n_cs_precedes===0){return b+this.intSep+this.currencyCode+this.lc.negative_sign}else if(this.lc.int_n_sign_posn===4&&this.lc.int_n_sep_by_space===1&&this.lc.int_n_cs_precedes===1){return this.currencyCode+this.lc.negative_sign+this.intSep+b}else if(this.lc.int_n_sign_posn===4&&this.lc.int_n_sep_by_space===2&&this.lc.int_n_cs_precedes===0){return b+this.currencyCode+this.intSep+this.lc.negative_sign}else if(this.lc.int_n_sign_posn===4&&this.lc.int_n_sep_by_space===2&&this.lc.int_n_cs_precedes===1){return this.currencyCode+this.intSep+this.lc.negative_sign+b}}throw"Error: Invalid POSIX LC MONETARY definition"};this._formatAsLocalCurrencyWithNoSym=function(a,b){if(a=="+"){if(this.lc.p_sign_posn===0){return"("+b+")"}else if(this.lc.p_sign_posn===1&&this.lc.p_sep_by_space===0&&this.lc.p_cs_precedes===0){return this.lc.positive_sign+b}else if(this.lc.p_sign_posn===1&&this.lc.p_sep_by_space===0&&this.lc.p_cs_precedes===1){return this.lc.positive_sign+b}else if(this.lc.p_sign_posn===1&&this.lc.p_sep_by_space===1&&this.lc.p_cs_precedes===0){return this.lc.positive_sign+b}else if(this.lc.p_sign_posn===1&&this.lc.p_sep_by_space===1&&this.lc.p_cs_precedes===1){return this.lc.positive_sign+b}else if(this.lc.p_sign_posn===1&&this.lc.p_sep_by_space===2&&this.lc.p_cs_precedes===0){return this.lc.positive_sign+" "+b}else if(this.lc.p_sign_posn===1&&this.lc.p_sep_by_space===2&&this.lc.p_cs_precedes===1){return this.lc.positive_sign+" "+b}else if(this.lc.p_sign_posn===2&&this.lc.p_sep_by_space===0&&this.lc.p_cs_precedes===0){return b+this.lc.positive_sign}else if(this.lc.p_sign_posn===2&&this.lc.p_sep_by_space===0&&this.lc.p_cs_precedes===1){return b+this.lc.positive_sign}else if(this.lc.p_sign_posn===2&&this.lc.p_sep_by_space===1&&this.lc.p_cs_precedes===0){return b+" "+this.lc.positive_sign}else if(this.lc.p_sign_posn===2&&this.lc.p_sep_by_space===1&&this.lc.p_cs_precedes===1){return b+this.lc.positive_sign}else if(this.lc.p_sign_posn===2&&this.lc.p_sep_by_space===2&&this.lc.p_cs_precedes===0){return b+this.lc.positive_sign}else if(this.lc.p_sign_posn===2&&this.lc.p_sep_by_space===2&&this.lc.p_cs_precedes===1){return b+" "+this.lc.positive_sign}else if(this.lc.p_sign_posn===3&&this.lc.p_sep_by_space===0&&this.lc.p_cs_precedes===0){return b+this.lc.positive_sign}else if(this.lc.p_sign_posn===3&&this.lc.p_sep_by_space===0&&this.lc.p_cs_precedes===1){return this.lc.positive_sign+b}else if(this.lc.p_sign_posn===3&&this.lc.p_sep_by_space===1&&this.lc.p_cs_precedes===0){return b+" "+this.lc.positive_sign}else if(this.lc.p_sign_posn===3&&this.lc.p_sep_by_space===1&&this.lc.p_cs_precedes===1){return this.lc.positive_sign+" "+b}else if(this.lc.p_sign_posn===3&&this.lc.p_sep_by_space===2&&this.lc.p_cs_precedes===0){return b+this.lc.positive_sign}else if(this.lc.p_sign_posn===3&&this.lc.p_sep_by_space===2&&this.lc.p_cs_precedes===1){return this.lc.positive_sign+" "+b}else if(this.lc.p_sign_posn===4&&this.lc.p_sep_by_space===0&&this.lc.p_cs_precedes===0){return b+this.lc.positive_sign}else if(this.lc.p_sign_posn===4&&this.lc.p_sep_by_space===0&&this.lc.p_cs_precedes===1){return this.lc.positive_sign+b}else if(this.lc.p_sign_posn===4&&this.lc.p_sep_by_space===1&&this.lc.p_cs_precedes===0){return b+" "+this.lc.positive_sign}else if(this.lc.p_sign_posn===4&&this.lc.p_sep_by_space===1&&this.lc.p_cs_precedes===1){return this.lc.positive_sign+" "+b}else if(this.lc.p_sign_posn===4&&this.lc.p_sep_by_space===2&&this.lc.p_cs_precedes===0){return b+" "+this.lc.positive_sign}else if(this.lc.p_sign_posn===4&&this.lc.p_sep_by_space===2&&this.lc.p_cs_precedes===1){return this.lc.positive_sign+b}}else if(a=="-"){if(this.lc.n_sign_posn===0){return"("+b+")"}else if(this.lc.n_sign_posn===1&&this.lc.n_sep_by_space===0&&this.lc.n_cs_precedes===0){return this.lc.negative_sign+b}else if(this.lc.n_sign_posn===1&&this.lc.n_sep_by_space===0&&this.lc.n_cs_precedes===1){return this.lc.negative_sign+b}else if(this.lc.n_sign_posn===1&&this.lc.n_sep_by_space===1&&this.lc.n_cs_precedes===0){return this.lc.negative_sign+b}else if(this.lc.n_sign_posn===1&&this.lc.n_sep_by_space===1&&this.lc.n_cs_precedes===1){return this.lc.negative_sign+" "+b}else if(this.lc.n_sign_posn===1&&this.lc.n_sep_by_space===2&&this.lc.n_cs_precedes===0){return this.lc.negative_sign+" "+b}else if(this.lc.n_sign_posn===1&&this.lc.n_sep_by_space===2&&this.lc.n_cs_precedes===1){return this.lc.negative_sign+" "+b}else if(this.lc.n_sign_posn===2&&this.lc.n_sep_by_space===0&&this.lc.n_cs_precedes===0){return b+this.lc.negative_sign}else if(this.lc.n_sign_posn===2&&this.lc.n_sep_by_space===0&&this.lc.n_cs_precedes===1){return b+this.lc.negative_sign}else if(this.lc.n_sign_posn===2&&this.lc.n_sep_by_space===1&&this.lc.n_cs_precedes===0){return b+" "+this.lc.negative_sign}else if(this.lc.n_sign_posn===2&&this.lc.n_sep_by_space===1&&this.lc.n_cs_precedes===1){return b+this.lc.negative_sign}else if(this.lc.n_sign_posn===2&&this.lc.n_sep_by_space===2&&this.lc.n_cs_precedes===0){return b+" "+this.lc.negative_sign}else if(this.lc.n_sign_posn===2&&this.lc.n_sep_by_space===2&&this.lc.n_cs_precedes===1){return b+" "+this.lc.negative_sign}else if(this.lc.n_sign_posn===3&&this.lc.n_sep_by_space===0&&this.lc.n_cs_precedes===0){return b+this.lc.negative_sign}else if(this.lc.n_sign_posn===3&&this.lc.n_sep_by_space===0&&this.lc.n_cs_precedes===1){return this.lc.negative_sign+b}else if(this.lc.n_sign_posn===3&&this.lc.n_sep_by_space===1&&this.lc.n_cs_precedes===0){return b+" "+this.lc.negative_sign}else if(this.lc.n_sign_posn===3&&this.lc.n_sep_by_space===1&&this.lc.n_cs_precedes===1){return this.lc.negative_sign+" "+b}else if(this.lc.n_sign_posn===3&&this.lc.n_sep_by_space===2&&this.lc.n_cs_precedes===0){return b+this.lc.negative_sign}else if(this.lc.n_sign_posn===3&&this.lc.n_sep_by_space===2&&this.lc.n_cs_precedes===1){return this.lc.negative_sign+" "+b}else if(this.lc.n_sign_posn===4&&this.lc.n_sep_by_space===0&&this.lc.n_cs_precedes===0){return b+this.lc.negative_sign}else if(this.lc.n_sign_posn===4&&this.lc.n_sep_by_space===0&&this.lc.n_cs_precedes===1){return this.lc.negative_sign+b}else if(this.lc.n_sign_posn===4&&this.lc.n_sep_by_space===1&&this.lc.n_cs_precedes===0){return b+" "+this.lc.negative_sign}else if(this.lc.n_sign_posn===4&&this.lc.n_sep_by_space===1&&this.lc.n_cs_precedes===1){return this.lc.negative_sign+" "+b}else if(this.lc.n_sign_posn===4&&this.lc.n_sep_by_space===2&&this.lc.n_cs_precedes===0){return b+" "+this.lc.negative_sign}else if(this.lc.n_sign_posn===4&&this.lc.n_sep_by_space===2&&this.lc.n_cs_precedes===1){return this.lc.negative_sign+b}}throw"Error: Invalid POSIX LC MONETARY definition"};this._formatAsInternationalCurrencyWithNoSym=function(a,b){if(a=="+"){if(this.lc.int_p_sign_posn===0){return"("+b+")"}else if(this.lc.int_p_sign_posn===1&&this.lc.int_p_sep_by_space===0&&this.lc.int_p_cs_precedes===0){return this.lc.positive_sign+b}else if(this.lc.int_p_sign_posn===1&&this.lc.int_p_sep_by_space===0&&this.lc.int_p_cs_precedes===1){return this.lc.positive_sign+b}else if(this.lc.int_p_sign_posn===1&&this.lc.int_p_sep_by_space===1&&this.lc.int_p_cs_precedes===0){return this.lc.positive_sign+b}else if(this.lc.int_p_sign_posn===1&&this.lc.int_p_sep_by_space===1&&this.lc.int_p_cs_precedes===1){return this.lc.positive_sign+this.intSep+b}else if(this.lc.int_p_sign_posn===1&&this.lc.int_p_sep_by_space===2&&this.lc.int_p_cs_precedes===0){return this.lc.positive_sign+this.intSep+b}else if(this.lc.int_p_sign_posn===1&&this.lc.int_p_sep_by_space===2&&this.lc.int_p_cs_precedes===1){return this.lc.positive_sign+this.intSep+b}else if(this.lc.int_p_sign_posn===2&&this.lc.int_p_sep_by_space===0&&this.lc.int_p_cs_precedes===0){return b+this.lc.positive_sign}else if(this.lc.int_p_sign_posn===2&&this.lc.int_p_sep_by_space===0&&this.lc.int_p_cs_precedes===1){return b+this.lc.positive_sign}else if(this.lc.int_p_sign_posn===2&&this.lc.int_p_sep_by_space===1&&this.lc.int_p_cs_precedes===0){return b+this.intSep+this.lc.positive_sign}else if(this.lc.int_p_sign_posn===2&&this.lc.int_p_sep_by_space===1&&this.lc.int_p_cs_precedes===1){return b+this.lc.positive_sign}else if(this.lc.int_p_sign_posn===2&&this.lc.int_p_sep_by_space===2&&this.lc.int_p_cs_precedes===0){return b+this.intSep+this.lc.positive_sign}else if(this.lc.int_p_sign_posn===2&&this.lc.int_p_sep_by_space===2&&this.lc.int_p_cs_precedes===1){return b+this.intSep+this.lc.positive_sign}else if(this.lc.int_p_sign_posn===3&&this.lc.int_p_sep_by_space===0&&this.lc.int_p_cs_precedes===0){return b+this.lc.positive_sign}else if(this.lc.int_p_sign_posn===3&&this.lc.int_p_sep_by_space===0&&this.lc.int_p_cs_precedes===1){return this.lc.positive_sign+b}else if(this.lc.int_p_sign_posn===3&&this.lc.int_p_sep_by_space===1&&this.lc.int_p_cs_precedes===0){return b+this.intSep+this.lc.positive_sign}else if(this.lc.int_p_sign_posn===3&&this.lc.int_p_sep_by_space===1&&this.lc.int_p_cs_precedes===1){return this.lc.positive_sign+this.intSep+b}else if(this.lc.int_p_sign_posn===3&&this.lc.int_p_sep_by_space===2&&this.lc.int_p_cs_precedes===0){return b+this.lc.positive_sign}else if(this.lc.int_p_sign_posn===3&&this.lc.int_p_sep_by_space===2&&this.lc.int_p_cs_precedes===1){return this.lc.positive_sign+this.intSep+b}else if(this.lc.int_p_sign_posn===4&&this.lc.int_p_sep_by_space===0&&this.lc.int_p_cs_precedes===0){return b+this.lc.positive_sign}else if(this.lc.int_p_sign_posn===4&&this.lc.int_p_sep_by_space===0&&this.lc.int_p_cs_precedes===1){return this.lc.positive_sign+b}else if(this.lc.int_p_sign_posn===4&&this.lc.int_p_sep_by_space===1&&this.lc.int_p_cs_precedes===0){return b+this.intSep+this.lc.positive_sign}else if(this.lc.int_p_sign_posn===4&&this.lc.int_p_sep_by_space===1&&this.lc.int_p_cs_precedes===1){return this.lc.positive_sign+this.intSep+b}else if(this.lc.int_p_sign_posn===4&&this.lc.int_p_sep_by_space===2&&this.lc.int_p_cs_precedes===0){return b+this.intSep+this.lc.positive_sign}else if(this.lc.int_p_sign_posn===4&&this.lc.int_p_sep_by_space===2&&this.lc.int_p_cs_precedes===1){return this.lc.positive_sign+b}}else if(a=="-"){if(this.lc.int_n_sign_posn===0){return"("+b+")"}else if(this.lc.int_n_sign_posn===1&&this.lc.int_n_sep_by_space===0&&this.lc.int_n_cs_precedes===0){return this.lc.negative_sign+b}else if(this.lc.int_n_sign_posn===1&&this.lc.int_n_sep_by_space===0&&this.lc.int_n_cs_precedes===1){return this.lc.negative_sign+b}else if(this.lc.int_n_sign_posn===1&&this.lc.int_n_sep_by_space===1&&this.lc.int_n_cs_precedes===0){return this.lc.negative_sign+b}else if(this.lc.int_n_sign_posn===1&&this.lc.int_n_sep_by_space===1&&this.lc.int_n_cs_precedes===1){return this.lc.negative_sign+this.intSep+b}else if(this.lc.int_n_sign_posn===1&&this.lc.int_n_sep_by_space===2&&this.lc.int_n_cs_precedes===0){return this.lc.negative_sign+this.intSep+b}else if(this.lc.int_n_sign_posn===1&&this.lc.int_n_sep_by_space===2&&this.lc.int_n_cs_precedes===1){return this.lc.negative_sign+this.intSep+b}else if(this.lc.int_n_sign_posn===2&&this.lc.int_n_sep_by_space===0&&this.lc.int_n_cs_precedes===0){return b+this.lc.negative_sign}else if(this.lc.int_n_sign_posn===2&&this.lc.int_n_sep_by_space===0&&this.lc.int_n_cs_precedes===1){return b+this.lc.negative_sign}else if(this.lc.int_n_sign_posn===2&&this.lc.int_n_sep_by_space===1&&this.lc.int_n_cs_precedes===0){return b+this.intSep+this.lc.negative_sign}else if(this.lc.int_n_sign_posn===2&&this.lc.int_n_sep_by_space===1&&this.lc.int_n_cs_precedes===1){return b+this.lc.negative_sign}else if(this.lc.int_n_sign_posn===2&&this.lc.int_n_sep_by_space===2&&this.lc.int_n_cs_precedes===0){return b+this.intSep+this.lc.negative_sign}else if(this.lc.int_n_sign_posn===2&&this.lc.int_n_sep_by_space===2&&this.lc.int_n_cs_precedes===1){return b+this.intSep+this.lc.negative_sign}else if(this.lc.int_n_sign_posn===3&&this.lc.int_n_sep_by_space===0&&this.lc.int_n_cs_precedes===0){return b+this.lc.negative_sign}else if(this.lc.int_n_sign_posn===3&&this.lc.int_n_sep_by_space===0&&this.lc.int_n_cs_precedes===1){return this.lc.negative_sign+b}else if(this.lc.int_n_sign_posn===3&&this.lc.int_n_sep_by_space===1&&this.lc.int_n_cs_precedes===0){return b+this.intSep+this.lc.negative_sign}else if(this.lc.int_n_sign_posn===3&&this.lc.int_n_sep_by_space===1&&this.lc.int_n_cs_precedes===1){return this.lc.negative_sign+this.intSep+b}else if(this.lc.int_n_sign_posn===3&&this.lc.int_n_sep_by_space===2&&this.lc.int_n_cs_precedes===0){return b+this.lc.negative_sign}else if(this.lc.int_n_sign_posn===3&&this.lc.int_n_sep_by_space===2&&this.lc.int_n_cs_precedes===1){return this.lc.negative_sign+this.intSep+b}else if(this.lc.int_n_sign_posn===4&&this.lc.int_n_sep_by_space===0&&this.lc.int_n_cs_precedes===0){return b+this.lc.negative_sign}else if(this.lc.int_n_sign_posn===4&&this.lc.int_n_sep_by_space===0&&this.lc.int_n_cs_precedes===1){return this.lc.negative_sign+b}else if(this.lc.int_n_sign_posn===4&&this.lc.int_n_sep_by_space===1&&this.lc.int_n_cs_precedes===0){return b+this.intSep+this.lc.negative_sign}else if(this.lc.int_n_sign_posn===4&&this.lc.int_n_sep_by_space===1&&this.lc.int_n_cs_precedes===1){return this.lc.negative_sign+this.intSep+b}else if(this.lc.int_n_sign_posn===4&&this.lc.int_n_sep_by_space===2&&this.lc.int_n_cs_precedes===0){return b+this.intSep+this.lc.negative_sign}else if(this.lc.int_n_sign_posn===4&&this.lc.int_n_sep_by_space===2&&this.lc.int_n_cs_precedes===1){return this.lc.negative_sign+b}}throw"Error: Invalid POSIX LC_MONETARY definition"}};jsworld.NumericParser=function(a){if(typeof a!="object"||a._className!="jsworld.Locale")throw"Constructor error: You must provide a valid jsworld.Locale instance";this.lc=a;this.parse=function(a){if(typeof a!="string")throw"Parse error: Argument must be a string";var b=jsworld._trim(a);b=jsworld._stringReplaceAll(a,this.lc.thousands_sep,"");b=jsworld._stringReplaceAll(b,this.lc.decimal_point,".");if(jsworld._isNumber(b))return parseFloat(b,10);else throw"Parse error: Invalid number string"}};jsworld.DateTimeParser=function(a){if(typeof a!="object"||a._className!="jsworld.Locale")throw"Constructor error: You must provide a valid jsworld.Locale instance.";this.lc=a;this.parseTime=function(a){if(typeof a!="string")throw"Parse error: Argument must be a string";var b=this._extractTokens(this.lc.t_fmt,a);var c=false;if(b.hour!==null&&b.minute!==null&&b.second!==null){c=true}else if(b.hourAmPm!==null&&b.am!==null&&b.minute!==null&&b.second!==null){if(b.am){b.hour=parseInt(b.hourAmPm,10)}else{if(b.hourAmPm==12)b.hour=0;else b.hour=parseInt(b.hourAmPm,10)+12}c=true}if(c)return jsworld._zeroPad(b.hour,2)+":"+jsworld._zeroPad(b.minute,2)+":"+jsworld._zeroPad(b.second,2);else throw"Parse error: Invalid/ambiguous time string"};this.parseDate=function(a){if(typeof a!="string")throw"Parse error: Argument must be a string";var b=this._extractTokens(this.lc.d_fmt,a);var c=false;if(b.year!==null&&b.month!==null&&b.day!==null){c=true}if(c)return jsworld._zeroPad(b.year,4)+"-"+jsworld._zeroPad(b.month,2)+"-"+jsworld._zeroPad(b.day,2);else throw"Parse error: Invalid date string"};this.parseDateTime=function(a){if(typeof a!="string")throw"Parse error: Argument must be a string";var b=this._extractTokens(this.lc.d_t_fmt,a);var c=false;var d=false;if(b.hour!==null&&b.minute!==null&&b.second!==null){c=true}else if(b.hourAmPm!==null&&b.am!==null&&b.minute!==null&&b.second!==null){if(b.am){b.hour=parseInt(b.hourAmPm,10)}else{if(b.hourAmPm==12)b.hour=0;else b.hour=parseInt(b.hourAmPm,10)+12}c=true}if(b.year!==null&&b.month!==null&&b.day!==null){d=true}if(d&&c)return jsworld._zeroPad(b.year,4)+"-"+jsworld._zeroPad(b.month,2)+"-"+jsworld._zeroPad(b.day,2)+" "+jsworld._zeroPad(b.hour,2)+":"+jsworld._zeroPad(b.minute,2)+":"+jsworld._zeroPad(b.second,2);else throw"Parse error: Invalid/ambiguous date/time string"};this._extractTokens=function(a,b){var c={year:null,month:null,day:null,hour:null,hourAmPm:null,am:null,minute:null,second:null,weekday:null};while(a.length>0){if(a.charAt(0)=="%"&&a.charAt(1)!=""){var d=a.substring(0,2);if(d=="%%"){b=b.substring(1)}else if(d=="%a"){for(var e=0;e31)throw"Parse error: Unrecognised day of the month (%e)";b=b.substring(f.length)}else if(d=="%F"){if(/^\d\d\d\d/.test(b)){c.year=parseInt(b.substring(0,4),10);b=b.substring(4)}else{throw"Parse error: Unrecognised date (%F)"}if(jsworld._stringStartsWith(b,"-"))b=b.substring(1);else throw"Parse error: Unrecognised date (%F)";if(/^0[1-9]|1[0-2]/.test(b)){c.month=parseInt(b.substring(0,2),10);b=b.substring(2)}else throw"Parse error: Unrecognised date (%F)";if(jsworld._stringStartsWith(b,"-"))b=b.substring(1);else throw"Parse error: Unrecognised date (%F)";if(/^0[1-9]|[1-2][0-9]|3[0-1]/.test(b)){c.day=parseInt(b.substring(0,2),10);b=b.substring(2)}else throw"Parse error: Unrecognised date (%F)"}else if(d=="%H"){if(/^[0-1][0-9]|2[0-3]/.test(b)){c.hour=parseInt(b.substring(0,2),10);b=b.substring(2)}else throw"Parse error: Unrecognised hour (%H)"}else if(d=="%I"){if(/^0[1-9]|1[0-2]/.test(b)){c.hourAmPm=parseInt(b.substring(0,2),10);b=b.substring(2)}else throw"Parse error: Unrecognised hour (%I)"}else if(d=="%k"){var g=b.match(/^(\d{1,2})/);c.hour=parseInt(g,10);if(isNaN(c.hour)||c.hour<0||c.hour>23)throw"Parse error: Unrecognised hour (%k)";b=b.substring(g.length)}else if(d=="%l"){var g=b.match(/^(\d{1,2})/);c.hourAmPm=parseInt(g,10);if(isNaN(c.hourAmPm)||c.hourAmPm<1||c.hourAmPm>12)throw"Parse error: Unrecognised hour (%l)";b=b.substring(g.length)}else if(d=="%m"){if(/^0[1-9]|1[0-2]/.test(b)){c.month=parseInt(b.substring(0,2),10);b=b.substring(2)}else throw"Parse error: Unrecognised month (%m)"}else if(d=="%M"){if(/^[0-5][0-9]/.test(b)){c.minute=parseInt(b.substring(0,2),10);b=b.substring(2)}else throw"Parse error: Unrecognised minute (%M)"}else if(d=="%n"){if(b.charAt(0)=="\n")b=b.substring(1);else throw"Parse error: Unrecognised new line (%n)"}else if(d=="%p"){if(jsworld._stringStartsWith(b,this.lc.am)){c.am=true;b=b.substring(this.lc.am.length)}else if(jsworld._stringStartsWith(b,this.lc.pm)){c.am=false;b=b.substring(this.lc.pm.length)}else throw"Parse error: Unrecognised AM/PM value (%p)"}else if(d=="%P"){if(jsworld._stringStartsWith(b,this.lc.am.toLowerCase())){c.am=true;b=b.substring(this.lc.am.length)}else if(jsworld._stringStartsWith(b,this.lc.pm.toLowerCase())){c.am=false;b=b.substring(this.lc.pm.length)}else throw"Parse error: Unrecognised AM/PM value (%P)"}else if(d=="%R"){if(/^[0-1][0-9]|2[0-3]/.test(b)){c.hour=parseInt(b.substring(0,2),10);b=b.substring(2)}else throw"Parse error: Unrecognised time (%R)";if(jsworld._stringStartsWith(b,":"))b=b.substring(1);else throw"Parse error: Unrecognised time (%R)";if(/^[0-5][0-9]/.test(b)){c.minute=parseInt(b.substring(0,2),10);b=b.substring(2)}else throw"Parse error: Unrecognised time (%R)"}else if(d=="%S"){if(/^[0-5][0-9]/.test(b)){c.second=parseInt(b.substring(0,2),10);b=b.substring(2)}else throw"Parse error: Unrecognised second (%S)"}else if(d=="%T"){if(/^[0-1][0-9]|2[0-3]/.test(b)){c.hour=parseInt(b.substring(0,2),10);b=b.substring(2)}else throw"Parse error: Unrecognised time (%T)";if(jsworld._stringStartsWith(b,":"))b=b.substring(1);else throw"Parse error: Unrecognised time (%T)";if(/^[0-5][0-9]/.test(b)){c.minute=parseInt(b.substring(0,2),10);b=b.substring(2)}else throw"Parse error: Unrecognised time (%T)";if(jsworld._stringStartsWith(b,":"))b=b.substring(1);else throw"Parse error: Unrecognised time (%T)";if(/^[0-5][0-9]/.test(b)){c.second=parseInt(b.substring(0,2),10);b=b.substring(2)}else throw"Parse error: Unrecognised time (%T)"}else if(d=="%w"){if(/^\d/.test(b)){c.weekday=parseInt(b.substring(0,1),10);b=b.substring(1)}else throw"Parse error: Unrecognised weekday number (%w)"}else if(d=="%y"){if(/^\d\d/.test(b)){var h=parseInt(b.substring(0,2),10);if(h>50)c.year=1900+h;else c.year=2e3+h;b=b.substring(2)}else throw"Parse error: Unrecognised year (%y)"}else if(d=="%Y"){if(/^\d\d\d\d/.test(b)){c.year=parseInt(b.substring(0,4),10);b=b.substring(4)}else throw"Parse error: Unrecognised year (%Y)"}else if(d=="%Z"){if(a.length===0)break}a=a.substring(2)}else{if(a.charAt(0)!=b.charAt(0))throw'Parse error: Unexpected symbol "'+b.charAt(0)+'" in date/time string';a=a.substring(1);b=b.substring(1)}}return c}};jsworld.MonetaryParser=function(a){if(typeof a!="object"||a._className!="jsworld.Locale")throw"Constructor error: You must provide a valid jsworld.Locale instance";this.lc=a;this.parse=function(a){if(typeof a!="string")throw"Parse error: Argument must be a string";var b=this._detectCurrencySymbolType(a);var c,d;if(b=="local"){c="local";d=a.replace(this.lc.getCurrencySymbol(),"")}else if(b=="int"){c="int";d=a.replace(this.lc.getIntCurrencySymbol(),"")}else if(b=="none"){c="local";d=a}else throw"Parse error: Internal assert failure";d=jsworld._stringReplaceAll(d,this.lc.mon_thousands_sep,"");d=d.replace(this.lc.mon_decimal_point,".");d=d.replace(/\s*/g,"");d=this._removeLocalNonNegativeSign(d,c);d=this._normaliseNegativeSign(d,c);if(jsworld._isNumber(d))return parseFloat(d,10);else throw"Parse error: Invalid currency amount string"};this._detectCurrencySymbolType=function(a){if(this.lc.getCurrencySymbol().length>this.lc.getIntCurrencySymbol().length){if(a.indexOf(this.lc.getCurrencySymbol())!=-1)return"local";else if(a.indexOf(this.lc.getIntCurrencySymbol())!=-1)return"int";else return"none"}else{if(a.indexOf(this.lc.getIntCurrencySymbol())!=-1)return"int";else if(a.indexOf(this.lc.getCurrencySymbol())!=-1)return"local";else return"none"}};this._removeLocalNonNegativeSign=function(a,b){a=a.replace(this.lc.positive_sign,"");if((b=="local"&&this.lc.p_sign_posn===0||b=="int"&&this.lc.int_p_sign_posn===0)&&/\(\d+\.?\d*\)/.test(a)){a=a.replace("(","");a=a.replace(")","")}return a};this._normaliseNegativeSign=function(a,b){a=a.replace(this.lc.negative_sign,"-");if(b=="local"&&this.lc.n_sign_posn===0||b=="int"&&this.lc.int_n_sign_posn===0){if(/^\(\d+\.?\d*\)$/.test(a)){a=a.replace("(","");a=a.replace(")","");return"-"+a}}if(b=="local"&&this.lc.n_sign_posn==2||b=="int"&&this.lc.int_n_sign_posn==2){if(/^\d+\.?\d*-$/.test(a)){a=a.replace("-","");return"-"+a}}if(b=="local"&&this.lc.n_cs_precedes===0&&this.lc.n_sign_posn==3||b=="local"&&this.lc.n_cs_precedes===0&&this.lc.n_sign_posn==4||b=="int"&&this.lc.int_n_cs_precedes===0&&this.lc.int_n_sign_posn==3||b=="int"&&this.lc.int_n_cs_precedes===0&&this.lc.int_n_sign_posn==4){if(/^\d+\.?\d*-$/.test(a)){a=a.replace("-","");return"-"+a}}return a}} + + +if(typeof POSIX_LC == "undefined") var POSIX_LC = {}; + +POSIX_LC.en_US = { + "decimal_point" : ".", + "thousands_sep" : ",", + "grouping" : "3", + "abday" : ["Sun","Mon","Tue","Wed","Thu","Fri","Sat"], + "day" : ["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"], + "abmon" : ["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"], + "mon" : ["January","February","March","April","May","June","July","August","September","October","November","December"], + "d_fmt" : "%m/%e/%y", + "t_fmt" : "%I:%M:%S %p", + "d_t_fmt" : "%B %e, %Y %I:%M:%S %p %Z", + "am_pm" : ["AM","PM"], + "int_curr_symbol" : "USD ", + "currency_symbol" : "\u0024", + "mon_decimal_point" : ".", + "mon_thousands_sep" : ",", + "mon_grouping" : "3", + "positive_sign" : "", + "negative_sign" : "-", + "int_frac_digits" : 2, + "frac_digits" : 2, + "p_cs_precedes" : 1, + "n_cs_precedes" : 1, + "p_sep_by_space" : 0, + "n_sep_by_space" : 0, + "p_sign_posn" : 1, + "n_sign_posn" : 1, + "int_p_cs_precedes" : 1, + "int_n_cs_precedes" : 1, + "int_p_sep_by_space" : 0, + "int_n_sep_by_space" : 0, + "int_p_sign_posn" : 1, + "int_n_sign_posn" : 1 +} + +if(typeof POSIX_LC == "undefined") var POSIX_LC = {}; + +POSIX_LC.fr_FR = { + "decimal_point" : ",", + "thousands_sep" : "\u00a0", + "grouping" : "3", + "abday" : ["dim.","lun.","mar.", + "mer.","jeu.","ven.", + "sam."], + "day" : ["dimanche","lundi","mardi", + "mercredi","jeudi","vendredi", + "samedi"], + "abmon" : ["janv.","f\u00e9vr.","mars", + "avr.","mai","juin", + "juil.","ao\u00fbt","sept.", + "oct.","nov.","d\u00e9c."], + "mon" : ["janvier","f\u00e9vrier","mars", + "avril","mai","juin", + "juillet","ao\u00fbt","septembre", + "octobre","novembre","d\u00e9cembre"], + "d_fmt" : "%d/%m/%y", + "t_fmt" : "%H:%M:%S", + "d_t_fmt" : "%e %B %Y %H:%M:%S %Z", + "am_pm" : ["AM","PM"], + "int_curr_symbol" : "EUR ", + "currency_symbol" : "\u20ac", + "mon_decimal_point" : ",", + "mon_thousands_sep" : "\u00a0", + "mon_grouping" : "3", + "positive_sign" : "", + "negative_sign" : "-", + "int_frac_digits" : 2, + "frac_digits" : 2, + "p_cs_precedes" : 0, + "n_cs_precedes" : 0, + "p_sep_by_space" : 1, + "n_sep_by_space" : 1, + "p_sign_posn" : 1, + "n_sign_posn" : 1, + "int_p_cs_precedes" : 0, + "int_n_cs_precedes" : 0, + "int_p_sep_by_space" : 1, + "int_n_sep_by_space" : 1, + "int_p_sign_posn" : 1, + "int_n_sign_posn" : 1 +}; + +/** https://github.com/csnover/js-iso8601 */(function(n,f){var u=n.parse,c=[1,4,5,6,7,10,11];n.parse=function(t){var i,o,a=0;if(o=/^(\d{4}|[+\-]\d{6})(?:-(\d{2})(?:-(\d{2}))?)?(?:T(\d{2}):(\d{2})(?::(\d{2})(?:\.(\d{3}))?)?(?:(Z)|([+\-])(\d{2})(?::(\d{2}))?)?)?$/.exec(t)){for(var v=0,r;r=c[v];++v)o[r]=+o[r]||0;o[2]=(+o[2]||1)-1,o[3]=+o[3]||1,o[8]!=="Z"&&o[9]!==f&&(a=o[10]*60+o[11],o[9]==="+"&&(a=0-a)),i=n.UTC(o[1],o[2],o[3],o[4],o[5]+a,o[6],o[7])}else i=u?u(t):NaN;return i}})(Date) + +/*! + * geo-location-javascript v0.4.3 + * http://code.google.com/p/geo-location-javascript/ + * + * Copyright (c) 2009 Stan Wiechers + * Licensed under the MIT licenses. + * + * Revision: $Rev: 68 $: + * Author: $Author: whoisstan $: + * Date: $Date: 2010-02-15 13:42:19 +0100 (Mon, 15 Feb 2010) $: + */ +var geo_position_js=function() { + + var pub = {}; + var provider=null; + + pub.getCurrentPosition = function(successCallback,errorCallback,options) + { + provider.getCurrentPosition(successCallback, errorCallback,options); + } + + pub.init = function() + { + try + { + if (typeof(geo_position_js_simulator)!="undefined") + { + provider=geo_position_js_simulator; + } + else if (typeof(bondi)!="undefined" && typeof(bondi.geolocation)!="undefined") + { + provider=bondi.geolocation; + } + else if (typeof(navigator.geolocation)!="undefined") + { + provider=navigator.geolocation; + pub.getCurrentPosition = function(successCallback, errorCallback, options) + { + function _successCallback(p) + { + //for mozilla geode,it returns the coordinates slightly differently + if(typeof(p.latitude)!="undefined") + { + successCallback({timestamp:p.timestamp, coords: {latitude:p.latitude,longitude:p.longitude}}); + } + else + { + successCallback(p); + } + } + provider.getCurrentPosition(_successCallback,errorCallback,options); + } + } + else if(typeof(window.google)!="undefined" && typeof(google.gears)!="undefined") + { + provider=google.gears.factory.create('beta.geolocation'); + } + else if ( typeof(Mojo) !="undefined" && typeof(Mojo.Service.Request)!="Mojo.Service.Request") + { + provider=true; + pub.getCurrentPosition = function(successCallback, errorCallback, options) + { + + parameters={}; + if(options) + { + //http://developer.palm.com/index.php?option=com_content&view=article&id=1673#GPS-getCurrentPosition + if (options.enableHighAccuracy && options.enableHighAccuracy==true) + { + parameters.accuracy=1; + } + if (options.maximumAge) + { + parameters.maximumAge=options.maximumAge; + } + if (options.responseTime) + { + if(options.responseTime<5) + { + parameters.responseTime=1; + } + else if (options.responseTime<20) + { + parameters.responseTime=2; + } + else + { + parameters.timeout=3; + } + } + } + + + r=new Mojo.Service.Request('palm://com.palm.location', { + method:"getCurrentPosition", + parameters:parameters, + onSuccess: function(p){successCallback({timestamp:p.timestamp, coords: {latitude:p.latitude, longitude:p.longitude,heading:p.heading}});}, + onFailure: function(e){ + if (e.errorCode==1) + { + errorCallback({code:3,message:"Timeout"}); + } + else if (e.errorCode==2) + { + errorCallback({code:2,message:"Position Unavailable"}); + } + else + { + errorCallback({code:0,message:"Unknown Error: webOS-code"+errorCode}); + } + } + }); + } + + } + else if (typeof(device)!="undefined" && typeof(device.getServiceObject)!="undefined") + { + provider=device.getServiceObject("Service.Location", "ILocation"); + + //override default method implementation + pub.getCurrentPosition = function(successCallback, errorCallback, options) + { + function callback(transId, eventCode, result) { + if (eventCode == 4) + { + errorCallback({message:"Position unavailable", code:2}); + } + else + { + //no timestamp of location given? + successCallback({timestamp:null, coords: {latitude:result.ReturnValue.Latitude, longitude:result.ReturnValue.Longitude, altitude:result.ReturnValue.Altitude,heading:result.ReturnValue.Heading}}); + } + } + //location criteria + var criteria = new Object(); + criteria.LocationInformationClass = "BasicLocationInformation"; + //make the call + provider.ILocation.GetLocation(criteria,callback); + } + } + } + catch (e){ + alert("error="+e); + if(typeof(console)!="undefined") + { + console.log(e); + } + return false; + } + return provider!=null; + } + + + return pub; +}(); +// Couldn't get unminified version to work , go here for docs => https://github.com/iamnoah/writeCapture +(function(E,a){var j=a.document;function A(Q){var Z=j.createElement("div");j.body.insertBefore(Z,null);E.replaceWith(Z,'\n
      \n
      \n
      \n \n\n
      \n
      \n \n
      \n

      '); + __out.push(__sanitize(t('Invite Link'))); + __out.push(' '); + __out.push(__sanitize(USER.referral_url)); + __out.push('

      \n\n \n\n
      \n\n'); + }).call(this); + + }).call(__obj); + __obj.safe = __objSafe, __obj.escape = __escape; + return __out.join(''); +}}, "templates/clients/login": function(exports, require, module) {module.exports = function(__obj) { + if (!__obj) __obj = {}; + var __out = [], __capture = function(callback) { + var out = __out, result; + __out = []; + callback.call(this); + result = __out.join(''); + __out = out; + return __safe(result); + }, __sanitize = function(value) { + if (value && value.ecoSafe) { + return value; + } else if (typeof value !== 'undefined' && value != null) { + return __escape(value); + } else { + return ''; + } + }, __safe, __objSafe = __obj.safe, __escape = __obj.escape; + __safe = __obj.safe = function(value) { + if (value && value.ecoSafe) { + return value; + } else { + if (!(typeof value !== 'undefined' && value != null)) value = ''; + var result = new String(value); + result.ecoSafe = true; + return result; + } + }; + if (!__escape) { + __escape = __obj.escape = function(value) { + return ('' + value) + .replace(/&/g, '&') + .replace(//g, '>') + .replace(/"/g, '"'); + }; + } + (function() { + (function() { + __out.push('
      \n\t

      '); + __out.push(__sanitize(t('Sign In'))); + __out.push('

      \n\t
      \n\t\t
      \n\n\t\t\t
      \n\t\t\t\t\n\t\t\t
      \n\t\t\t
      \n\t\t\t\t\n\t\t\t
      \n\n\t\t\t
      \n\n\t\t\t
      \n\t\t\t\t\n\t\t\t
      \n\t\t\t
      \n\t\t\t\t\n\t\t\t
      \n\n\t\t\t
      \n\n
      \n\n

      '); + __out.push(__sanitize(t('Forgot Password?'))); + __out.push('

      \n\n\t\t
      \n\t
      \n
      \n\n
      \n
      \n'); + }).call(this); + + }).call(__obj); + __obj.safe = __objSafe, __obj.escape = __escape; + return __out.join(''); +}}, "templates/clients/modules/credit_card": function(exports, require, module) {module.exports = function(__obj) { + if (!__obj) __obj = {}; + var __out = [], __capture = function(callback) { + var out = __out, result; + __out = []; + callback.call(this); + result = __out.join(''); + __out = out; + return __safe(result); + }, __sanitize = function(value) { + if (value && value.ecoSafe) { + return value; + } else if (typeof value !== 'undefined' && value != null) { + return __escape(value); + } else { + return ''; + } + }, __safe, __objSafe = __obj.safe, __escape = __obj.escape; + __safe = __obj.safe = function(value) { + if (value && value.ecoSafe) { + return value; + } else { + if (!(typeof value !== 'undefined' && value != null)) value = ''; + var result = new String(value); + result.ecoSafe = true; + return result; + } + }; + if (!__escape) { + __escape = __obj.escape = function(value) { + return ('' + value) + .replace(/&/g, '&') + .replace(//g, '>') + .replace(/"/g, '"'); + }; + } + (function() { + (function() { + var printCard; + var __bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; }; + if (this.cards === "new") { + __out.push('\n
      \n
      \n
      \n
      \n
      \n
      \n \n \n
      \n
      \n
      \n
      \n \n \n
      \n
      \n \n \n
      \n
      \n
      \n
      \n \n \n
      \n
      \n
      \n \n \n
      \n
      \n
      \n \n \n
      \n
      \n
      \n \n
      \n
      \n
      \n'); + } else { + __out.push('\n '); + printCard = __bind(function(card, index) { + var exp, style; + __out.push('\n
      \n '); + style = "background-position:-173px"; + __out.push('\n '); + if (card.get("card_type") === "Visa") { + style = "background-position:0px"; + } + __out.push('\n '); + if (card.get("card_type") === "MasterCard") { + style = "background-position:-42px"; + } + __out.push('\n '); + if (card.get("card_type") === "American Express") { + style = "background-position:-130px"; + } + __out.push('\n '); + if (card.get("card_type") === "Discover Card") { + style = "background-position:-85px"; + } + __out.push('\n
      \n
      \n ****'); + __out.push(__sanitize(card.get("card_number"))); + __out.push('\n \n '); + if (card.get("card_expiration")) { + __out.push('\n '); + __out.push(__sanitize(t('Expiry'))); + __out.push('\n '); + exp = card.get('card_expiration').split('-'); + __out.push('\n '); + __out.push(__sanitize("" + exp[0] + "-" + exp[1])); + __out.push('\n '); + } + __out.push('\n \n \n \n '); + if (card.get("default")) { + __out.push('\n ('); + __out.push(__sanitize(t('default card'))); + __out.push(')\n '); + } + __out.push('\n '); + if (this.cards.length > 1 && !card.get("default")) { + __out.push('\n '); + __out.push(__sanitize(t('make default'))); + __out.push('\n '); + } + __out.push('\n \n '); + __out.push(__sanitize(t('Edit'))); + __out.push('\n \n '); + if (this.cards.length > 1) { + __out.push('\n '); + __out.push(__sanitize(t('Delete'))); + __out.push('\n '); + } + __out.push('\n
      \n '); + _.each(this.cards.models, printCard); + __out.push('\n
      \n
      \n\n'); + } + __out.push('\n'); + }).call(this); + + }).call(__obj); + __obj.safe = __objSafe, __obj.escape = __escape; + return __out.join(''); +}}, "templates/clients/modules/sub_header": function(exports, require, module) {module.exports = function(__obj) { + if (!__obj) __obj = {}; + var __out = [], __capture = function(callback) { + var out = __out, result; + __out = []; + callback.call(this); + result = __out.join(''); + __out = out; + return __safe(result); + }, __sanitize = function(value) { + if (value && value.ecoSafe) { + return value; + } else if (typeof value !== 'undefined' && value != null) { + return __escape(value); + } else { + return ''; + } + }, __safe, __objSafe = __obj.safe, __escape = __obj.escape; + __safe = __obj.safe = function(value) { + if (value && value.ecoSafe) { + return value; + } else { + if (!(typeof value !== 'undefined' && value != null)) value = ''; + var result = new String(value); + result.ecoSafe = true; + return result; + } + }; + if (!__escape) { + __escape = __obj.escape = function(value) { + return ('' + value) + .replace(/&/g, '&') + .replace(//g, '>') + .replace(/"/g, '"'); + }; + } + (function() { + (function() { + __out.push('
      \n
      '); + __out.push(__sanitize(this.heading)); + __out.push('
      \n
      \n '); + if (window.USER.first_name) { + __out.push('\n '); + __out.push(__sanitize(t('Hello Greeting', { + name: USER.first_name + }))); + __out.push('\n '); + } + __out.push('\n
      \n
      \n
      \n'); + }).call(this); + + }).call(__obj); + __obj.safe = __objSafe, __obj.escape = __escape; + return __out.join(''); +}}, "templates/clients/promotions": function(exports, require, module) {module.exports = function(__obj) { + if (!__obj) __obj = {}; + var __out = [], __capture = function(callback) { + var out = __out, result; + __out = []; + callback.call(this); + result = __out.join(''); + __out = out; + return __safe(result); + }, __sanitize = function(value) { + if (value && value.ecoSafe) { + return value; + } else if (typeof value !== 'undefined' && value != null) { + return __escape(value); + } else { + return ''; + } + }, __safe, __objSafe = __obj.safe, __escape = __obj.escape; + __safe = __obj.safe = function(value) { + if (value && value.ecoSafe) { + return value; + } else { + if (!(typeof value !== 'undefined' && value != null)) value = ''; + var result = new String(value); + result.ecoSafe = true; + return result; + } + }; + if (!__escape) { + __escape = __obj.escape = function(value) { + return ('' + value) + .replace(/&/g, '&') + .replace(//g, '>') + .replace(/"/g, '"'); + }; + } + (function() { + (function() { + var promo, _i, _len, _ref; + __out.push(require('templates/clients/modules/sub_header').call(this, { + heading: t("Promotions") + })); + __out.push('\n\n
      \n
      \n
      \n \n \n
      \n
      \n \n \n\n \n
      \n '); + if (this.promos.length > 0) { + __out.push('\n
      \n

      '); + __out.push(__sanitize(t('Your Available Promotions'))); + __out.push('

      \n \n \n\n \n \n \n \n \n \n \n \n '); + _ref = this.promos; + for (_i = 0, _len = _ref.length; _i < _len; _i++) { + promo = _ref[_i]; + __out.push('\n \n \n \n \n \n \n '); + } + __out.push('\n \n
      '); + __out.push(__sanitize(t('Code'))); + __out.push(''); + __out.push(__sanitize(t('Details'))); + __out.push(''); + __out.push(__sanitize(t('Starts'))); + __out.push(''); + __out.push(__sanitize(t('Expires'))); + __out.push('
      '); + __out.push(__sanitize(promo.code)); + __out.push(''); + __out.push(__sanitize(promo.description)); + __out.push(''); + __out.push(__sanitize(app.helpers.formatDate(promo.starts_at, true, "America/Los_Angeles"))); + __out.push(''); + __out.push(__sanitize(app.helpers.formatDate(promo.ends_at, true, "America/Los_Angeles"))); + __out.push('
      \n
      \n '); + } else { + __out.push('\n\n

      '); + __out.push(__sanitize(t('No Active Promotions'))); + __out.push('

      \n '); + } + __out.push('\n\n
      \n
      \n
      \n'); + }).call(this); + + }).call(__obj); + __obj.safe = __objSafe, __obj.escape = __escape; + return __out.join(''); +}}, "templates/clients/request": function(exports, require, module) {module.exports = function(__obj) { + if (!__obj) __obj = {}; + var __out = [], __capture = function(callback) { + var out = __out, result; + __out = []; + callback.call(this); + result = __out.join(''); + __out = out; + return __safe(result); + }, __sanitize = function(value) { + if (value && value.ecoSafe) { + return value; + } else if (typeof value !== 'undefined' && value != null) { + return __escape(value); + } else { + return ''; + } + }, __safe, __objSafe = __obj.safe, __escape = __obj.escape; + __safe = __obj.safe = function(value) { + if (value && value.ecoSafe) { + return value; + } else { + if (!(typeof value !== 'undefined' && value != null)) value = ''; + var result = new String(value); + result.ecoSafe = true; + return result; + } + }; + if (!__escape) { + __escape = __obj.escape = function(value) { + return ('' + value) + .replace(/&/g, '&') + .replace(//g, '>') + .replace(/"/g, '"'); + }; + } + (function() { + (function() { + var showFavoriteLocation; + showFavoriteLocation = function(location, index) { + var alphabet; + __out.push('\n '); + alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; + __out.push('\n
      \n '); + __out.push(__sanitize(location.nickname)); + return __out.push('\n
      \n \n \n \n \n \n \n \n \n \n \n \n \n \n
      \n

      '); + __out.push(__sanitize(t('Driver Name:'))); + __out.push('

      \n

      \n
      \n

      '); + __out.push(__sanitize(t('Driver #:'))); + __out.push('

      \n

      \n
      \n

      '); + __out.push(__sanitize(t('Pickup Address:'))); + __out.push('

      \n

      \n
      \n ');
+      __out.push(__sanitize(t('Add to Favorite Locations')));
+      __out.push('\n
      \n
      \n

      \n '); + __out.push(__sanitize(t('Nickname:'))); + __out.push('\n \n \n \n \n
      \n
      \n
      \n
      \n

      '); + __out.push(__sanitize(t('Your last trip'))); + __out.push('

      \n
      \n \n ');
+      __out.push(__sanitize(t('Star')));
+      __out.push('\n ');
+      __out.push(__sanitize(t('Star')));
+      __out.push('\n ');
+      __out.push(__sanitize(t('Star')));
+      __out.push('\n ');
+      __out.push(__sanitize(t('Star')));
+      __out.push('\n ');
+      __out.push(__sanitize(t('Star')));
+      __out.push('\n \n \n
      \n \n
      \n \n
      \n \n
      \n \n\n
      \n'); + }).call(this); + + }).call(__obj); + __obj.safe = __objSafe, __obj.escape = __escape; + return __out.join(''); +}}, "templates/shared/menu": function(exports, require, module) {module.exports = function(__obj) { + if (!__obj) __obj = {}; + var __out = [], __capture = function(callback) { + var out = __out, result; + __out = []; + callback.call(this); + result = __out.join(''); + __out = out; + return __safe(result); + }, __sanitize = function(value) { + if (value && value.ecoSafe) { + return value; + } else if (typeof value !== 'undefined' && value != null) { + return __escape(value); + } else { + return ''; + } + }, __safe, __objSafe = __obj.safe, __escape = __obj.escape; + __safe = __obj.safe = function(value) { + if (value && value.ecoSafe) { + return value; + } else { + if (!(typeof value !== 'undefined' && value != null)) value = ''; + var result = new String(value); + result.ecoSafe = true; + return result; + } + }; + if (!__escape) { + __escape = __obj.escape = function(value) { + return ('' + value) + .replace(/&/g, '&') + .replace(//g, '>') + .replace(/"/g, '"'); + }; + } + (function() { + (function() { + __out.push('\n'); + }).call(this); + + }).call(__obj); + __obj.safe = __objSafe, __obj.escape = __escape; + return __out.join(''); +}}, "translations/en": function(exports, require, module) {(function() { + exports.translations = { + "Uber": "Uber", + "Sign Up": "Sign Up", + "Ride Request": "Ride Request", + "Invite Friends": "Invite Friends", + "Promotions": "Promotions", + "Billing": "Billing", + "Settings": "Settings", + "Forgot Password?": "Forgot Password?", + "Password Recovery": "Password Recovery", + "Login": "Login", + "Trip Detail": "Trip Detail", + "Password Reset": "Password Reset", + "Confirm Email": "Confirm Email", + "Request Ride": "Request Ride", + "Credit Card Number": "Credit Card Number", + "month": "month", + "01-Jan": "01-Jan", + "02-Feb": "02-Feb", + "03-Mar": "03-Mar", + "04-Apr": "04-Apr", + "05-May": "05-May", + "06-Jun": "06-Jun", + "07-Jul": "07-Jul", + "08-Aug": "08-Aug", + "09-Sep": "09-Sep", + "10-Oct": "10-Oct", + "11-Nov": "11-Nov", + "12-Dec": "12-Dec", + "year": "year", + "CVV": "CVV", + "Category": "Category", + "personal": "personal", + "business": "business", + "Default Credit Card": "Default Credit Card", + "Add Credit Card": "Add Credit Card", + "Expiry": "Expiry", + "default card": "default card", + "make default": "make default", + "Edit": "Edit", + "Delete": "Delete", + "Expiry Month": "Expiry Month", + "Expiry Year": "Expiry Year", + "Unable to Verify Card": "Unable to verify card at this time. Please try again later.", + "Credit Card Update Succeeded": "Your card has been successfully updated!", + "Credit Card Update Failed": "We couldn't save your changes. Please try again in a few minutes.", + "Credit Card Delete Succeeded": "Your card has been deleted!", + "Credit Card Delete Failed": "We were unable to delete your card. Please try again later.", + "Credit Card Update Category Succeeded": "Successfully changed card category!", + "Credit Card Update Category Failed": "We couldn't change your card category. Please try again in a few minutes.", + "Credit Card Update Default Succeeded": "Successfully changed default card!", + "Credit Card Update Default Failed": "We couldn't change your default card. Please try again in a few minutes.", + "Hello Greeting": "Hello, <%= name %>", + "Card Ending in": "Card Ending in", + "Trip Map": "Trip Map", + "Amount": "Amount: <%= amount %>", + "Last Attempt to Bill": "Last Attempt to Bill: <%= date %>", + "Charge": "Charge", + "Uber Credit Balance Note": "Your account has an UberCredit balance of <%= amount %>. When billing for trips, we'll deplete your UberCredit balance before applying charges to your credit card.", + "Please Add Credit Card": "Please add a credit card to bill your outstanding charges.", + "Credit Cards": "Credit Cards", + "add a new credit card": "add a new credit card", + "Account Balance": "Account Balance", + "Arrears": "Arrears", + "Billing Succeeded": "Your card was successfully billed.", + "Confirm Email Succeeded": "Successfully confirmed email token, redirecting to log in page...", + "Confirm Email Failed": "Unable to confirm email. Please contact support@uber.com if this problem persists.", + "Email Already Confirmed": "Your email address has already been confirmed, redirecting to log in page...", + "Credit Card Added": "Credit Card Added", + "No Credit Card": "No Credit Card", + "Mobile Number Confirmed": "Mobile Number Confirmed", + "No Confirmed Mobile": "No Confirmed Mobile", + "E-mail Address Confirmed": "E-mail Address Confirmed", + "No Confirmed E-mail": "No Confirmed E-mail", + 'Reply to sign up text': 'Reply "GO" to the text message you received at sign up.', + "Resend text message": "Resend text message", + "Click sign up link": "Click the link in the email you received at sign up.", + "Resend email": "Resend email", + "Add a credit card to ride": "Add a credit card and you'll be ready to ride Uber.", + "Your Most Recent Trip": "Your Most Recent Trip", + "details": "details", + "Your Trip History ": "Your Trip History ", + "Status": "Status", + "Here's how it works:": "Here's how it works:", + "Show all trips": "Show all trips", + "Set your location:": "Set your location:", + "App search for address": "iPhone/Android app: fix the pin or search for an address", + "SMS text address": "SMS: text your address to UBRCAB (827222)", + "Confirm pickup request": "Confirm your pickup request", + "Uber sends ETA": "Uber will send you an ETA (usually within 5-10 minutes)", + "Car arrives": "When your car is arriving, Uber will inform you again.", + "Ride to destination": "Hop in the car and tell the driver your destination.", + "Thank your driver": "That’s it! Please thank your driver but remember that your tip is included and no cash is necessary.", + "Trip started here": "Trip started here", + "Trip ended here": "Trip ended here", + "Sending Email": "Sending email...", + "Resend Email Succeeded": "We just sent the email. Please click on the confirmation link you recieve.", + "Resend Email Failed": "There was an error sending the email. Please contact support if the problem persists.", + "Resend Text Succeeded": 'We just sent the text message. Please reply "GO" to the message you recieve. It may take a few minutes for the message to reach you phone.', + "Resend Text Failed": "There was an error sending the text message. Please contact support if the problem persists.", + "Password Reset Error": "There was an error processing your password reset request.", + "New Password": "New Password", + "Forgot Password": "Forgot Password", + "Forgot Password Error": "Your email address could not be found. Please make sure to use the same email address you used when you signed up.", + "Forgot Password Success": "Please check your email for a link to reset your password.", + "Forgot Password Enter Email": 'Enter your email address and Uber will send you a link to reset your password. If you remember your password, you can sign in here.', + "Invite friends": "Invite friends", + "Give $ Get $": "Give $10, Get $10", + "Give $ Get $ Description": "Every friend you invite to Uber gets $10 of Uber credit. After someone you’ve invited takes his/her first ride, you get $10 of Uber credits too!", + "What are you waiting for?": "So, what are you waiting for? Invite away!", + "Tweet": "Tweet", + "Invite Link": "Email or IM this link to your friends:", + "Email Address": "Email Address", + "Reset Password": "Reset Password", + "Enter Promotion Code": "If you have a promotion code, enter it here:", + "Your Active Promotions": "Your Active Promotions", + "Code": "Code", + "Details": "Details", + "Trips Remaining": "Trips Remaining", + "Expires": "Expires", + "No Active Promotions": "There are no active promotions on your account.", + "Your Available Promotions": "Your Available Promotions", + "Where do you want us to pick you up?": "Where do you want us to pick you up?", + "Address to search": "Address to search", + "Search": "Search", + "Driver Name:": "Driver Name:", + "Driver #:": "Driver #:", + "Pickup Address:": "Pickup Address:", + "Add to Favorite Locations": "Add to Favorite Locations", + "Star": "Star", + "Nickname:": "Nickname:", + "Add": "Add", + "Your last trip": "Your last trip", + "Please rate your driver:": "Please rate your driver:", + "Comments: (optional)": "Comments: (optional)", + "Rate Trip": "Rate Trip", + "Pickup time:": "Pickup time:", + "Miles:": "Miles:", + "Trip time:": "Trip time:", + "Fare:": "Fare:", + "Favorite Locations": "Favorite Locations", + "Search Results": "Search Results", + "You have no favorite locations saved.": "You have no favorite locations saved.", + "Loading...": "Loading...", + "Request Pickup": "Request Pickup", + "Cancel Pickup": "Cancel Pickup", + "Requesting Closest Driver": "Requesting the closest driver to pick you up...", + "En Route": "You are currently en route...", + "Rate Last Trip": "Please rate your trip to make another request", + "Rate Before Submitting": "Please rate your trip before submitting the form", + "Address too short": "Address too short", + "or did you mean": "or did you mean", + "Search Address Failed": "Unable to find the given address. Please enter another address close to your location.", + "Sending pickup request...": "Sending pickup request...", + "Cancel Request Prompt": "Are you sure you want to cancel your request?", + "Cancel Request Arrived Prompt": 'Are you sure you want to cancel your request? Your driver has arrived so there is a $10 cancellation fee. It may help to call your driver now', + "Favorite Location Nickname Length Error": "Nickname has to be atleast 3 characters", + "Favorite Location Save Succeeded": "Location Saved!", + "Favorite Location Save Failed": "Unable to save your location. Please try again later.", + "Favorite Location Title": "Favorite Location <%= id %>", + "Search Location Title": "Search Location <%= id %>", + "ETA Message": "ETA: Around <%= minutes %> Minutes", + "Nearest Cab Message": "The closest driver is approximately <%= minutes %> minute(s) away", + "Arrival ETA Message": "Your Uber will arrive in about <%= minutes %> minute(s)", + "Arriving Now Message": "Your Uber is arriving now...", + "Rating Driver Failed": "Unable to contact server. Please try again later or email support if this issue persists.", + "Account Information": "Account Information", + "Mobile Phone Information": "Mobile Phone Information", + "settings": "settings", + "Information": "Information", + "Picture": "Picture", + "Change password": "Change password", + "Your current Picture": "Your current Picture", + "Your Favorite Locations": "Your Favorite Locations", + "You have no favorite locations saved.": "You have no favorite locations saved.", + "Purpose of Mobile": "We send text messages to your mobile phone to tell you when your driver is arriving. You can also request trips using text messages.", + "Country": "Country", + "Mobile Number": "Mobile Number", + "Submit": "Submit", + "Favorite Location": "Favorite Location", + "No Approximate Address": "Could not find an approximate address", + "Address:": "Address:", + "Information Update Succeeded": "Your information has been updated!", + "Information Update Failed": "We couldn't update your information. Please try again in few minutes or contact support if the problem persists.", + "Location Delete Succeeded": "Location deleted!", + "Location Delete Failed": "We were unable to delete your favorite location. Please try again later or contact support of the issue persists.", + "Location Edit Succeeded": "Changes Saved!", + "Location Edit Failed": "We couldn't save your changes. Please try again in a few minutes.", + "Picture Update Succeeded": "Your picture has been updated!", + "Picture Update Failed": "We couldn't change your picture. Please try again in a few minutes.", + "Personal Information": "Personal Information", + "Mobile Phone Number": "Mobile Phone Number", + "Payment Information": "Payment Information", + "Purpose of Credit Card": "We keep your credit card on file so that your trip go as fast as possible. You will not be charged until you take a trip.", + "Your card will not be charged until you take a trip.": "Your card will not be charged until you take a trip.", + "Credit Card Number": "Credit Card Number", + "Expiration Date": "Expiration Date", + "Promotion Code": "Promotion Code", + "Enter Promo Here": "If you have a code for a promotion, invitation or group deal, you can enter it here.", + "Promotion Code Input Label": "Promotion, Invite or Groupon Code (optional)", + "Terms and Conditions": "Terms and Conditions", + "HELP": "HELP", + "STOP": "STOP", + "Legal Information": "Legal Information", + "Sign Up Agreement": "By signing up, I agree to the Uber <%= terms_link %> and <%= privacy_link %> and understand that Uber is a request tool, not a transportation carrier.", + "Sign Up Agreement Error": "You must agree to the Uber Terms and Conditions and Privacy Policy to continue.", + "Message and Data Rates Disclosure": "Message and Data Rates May Apply. Reply <%= help_string %> to 827-222 for help. Reply <%= stop_string %> to 827-222 to stop texts. For additional assistance, visit support.uber.com or call (866) 576-1039. Supported Carriers: AT&T, Sprint, Verizon, and T-Mobile.", + "I Agree": "I agree to the Terms & Conditions and Privacy Policy", + "Security Code": "Security Code", + "Type of Card": "Type of Card", + "Personal": "Personal", + "Business": "Business", + "Code": "Code", + "Zip or Postal Code": "Zip or Postal Code", + "Your Trip": "Your Trip", + "Trip Info": "Trip Info", + "Request a fare review": "Request a fare review", + "Fare Review Submitted": "Your fare review has been submitted. We'll get back to you soon about your request. Sorry for any inconvenience this may have caused!", + "Fair Price Consideration": "We're committed to delivering Uber service at a fair price. Before requesting a fare review, please consider:", + "Your Fare Calculation": "Your Fare Calculation", + "Charges": "Charges", + "Discounts": "Discounts", + "Total Charge": "Total Charge", + "Uber pricing information": "Uber pricing information", + "Uber Pricing Information Message": "<%= learn_link %> is published on our website.", + "GPS Point Capture Disclosure": "Due to a finite number of GPS point captures, corners on your trip map may appear cut off or rounded. These minor inaccuracies result in a shorter measured distance, which always results in a cheaper trip.", + "Fare Review Note": "Please elaborate on why this trip requires a fare review. Your comments below will help us better establish the correct price for your trip:", + "Fare Review Error": "There was an error submitting the review. Please ensure that you have a message.", + "Sign In": "Sign In" + }; +}).call(this); +}, "translations/fr": function(exports, require, module) {(function() { + exports.translations = { + "Uber": "Uber", + "Sign Up": "Inscription", + "Ride Request": "Passer une Commande", + "Invite Friends": "Inviter vos Amis", + "Promotions": "Promotions", + "Billing": "Paiement", + "Settings": "Paramètres", + "Forgot Password?": "Mot de passe oublié ?", + "Password Recovery": "Récupération du mot de passe", + "Login": "Connexion", + "Trip Detail": "Détail de la Course", + "Password Reset": "Réinitialisation du mot de passe", + "Confirm Email": "Confirmation de l’e-mail", + "Request Ride": "Passer une Commande", + "Credit Card Number": "Numéro de Carte de Crédit", + "month": "mois", + "01-Jan": "01-Jan", + "02-Feb": "02-Fév", + "03-Mar": "03-Mar", + "04-Apr": "04-Avr", + "05-May": "05-Mai", + "06-Jun": "06-Juin", + "07-Jul": "07-Jui", + "08-Aug": "08-Aoû", + "09-Sep": "09-Sep", + "10-Oct": "10-Oct", + "11-Nov": "11-Nov", + "12-Dec": "12-Déc", + "year": "année", + "CVV": "Code de Sécurité", + "Category": "Type", + "personal": "personnel", + "business": "entreprise", + "Default Credit Card": "Carte par Défaut", + "Add Credit Card": "Ajouter une Carte", + "Expiry": "Expire", + "default card": "carte par défaut", + "make default": "choisir par défaut", + "Edit": "Modifier", + "Delete": "Supprimer", + "Expiry Month": "Mois d’Expiration", + "Expiry Year": "Année d’Expiration", + "Unable to Verify Card": "Impossible de vérifier la carte pour le moment. Merci de réessayer un peu plus tard.", + "Credit Card Update Succeeded": "Votre carte a été mise à jour avec succès !", + "Credit Card Update Failed": "Nous ne pouvons enregistrer vos changements. Merci de réessayer dans quelques minutes.", + "Credit Card Delete Succeeded": "Votre carte a été supprimée !", + "Credit Card Delete Failed": "Nous n’avons pas été en mesure de supprimer votre carte. Merci de réessayer plus tard.", + "Credit Card Update Category Succeeded": "Changement de catégorie de carte réussi !", + "Credit Card Update Category Failed": "Nous ne pouvons pas changer la catégorie de votre carte. Merci de réessayer dans quelques minutes.", + "Credit Card Update Default Succeeded": "Carte par défaut changée avec succès !", + "Credit Card Update Default Failed": "Nous ne pouvons pas changer votre carte par défaut. Merci de réessayer dans quelques minutes.", + "Hello Greeting": "Bonjour, <%= name %>", + "Card Ending in": "La carte expire dans", + "Trip Map": "Carte des Courses", + "Amount": "Montant: <%= amount %>", + "Last Attempt to Bill": "Dernière tentative de prélèvement : <%= date %>", + "Charge": "Débit", + "Uber Credit Balance Note": "Votre compte a un solde de <%= amount %> UberCredits. Lorsque nous facturons des courses, nous réduirons votre solde d’UberCredits avant de prélever votre carte de crédit.", + "Please Add Credit Card": "Merci d’ajouter une carte de crédit pour que nous puissions vous facturer.", + "Credit Cards": "Cartes de crédit", + "add a new credit card": "Ajouter une nouvelle carte de crédit", + "Account Balance": "Solde du compte", + "Arrears": "Arriérés", + "Billing Succeeded": "Votre carte a été correctement débitée.", + "Confirm Email Succeeded": "L’adresse e-mail a bien été validée, vous êtes redirigé vers le tableau de bord...", + "Confirm Email Failed": "Impossible de confirmer l’adresse e-mail. Merci de contacter support@uber.com si le problème persiste.", + "Credit Card Added": "Carte de crédit ajoutée", + "No Credit Card": "Pas de carte de crédit", + "Mobile Number Confirmed": "Numéro de téléphone confirmé", + "No Confirmed Mobile": "Pas de numéro de téléphone confirmé", + "E-mail Address Confirmed": "Adresse e-mail confirmée", + "No Confirmed E-mail": "Pas d’adresse e-mail confirmée", + 'Reply to sign up text': 'Répondre "GO" au SMS que vous avez reçu à l’inscription.', + "Resend text message": "Renvoyer le SMS", + "Click sign up link": "Cliquez sur le lien contenu dans l’e-mail reçu à l’inscription.", + "Resend email": "Renvoyer l’e-mail", + "Add a credit card to ride": "Ajouter une carte de crédit et vous serez prêt à voyager avec Uber.", + "Your Most Recent Trip": "Votre course la plus récente", + "details": "détails", + "Your Trip History": "Historique de votre trajet", + "Status": "Statut", + "Here's how it works:": "Voici comment ça marche :", + "Show all trips": "Montrer toutes les courses", + "Set your location:": "Définir votre position :", + "App search for address": "Application iPhone/Android : positionner la punaise ou rechercher une adresse", + "SMS text address": "SMS : envoyez votre adresse à UBRCAB (827222)", + "Confirm pickup request": "Validez la commande", + "Uber sends ETA": "Uber envoie un temps d’attente estimé (habituellement entre 5 et 10 minutes)", + "Car arrives": "Lorsque votre voiture arrive, Uber vous en informera encore..", + "Ride to destination": "Montez dans la voiture et donnez votre destination au chauffeur.", + "Thank your driver": "C’est tout ! Remerciez le chauffeur mais souvenez-vous que les pourboires sont compris et qu’il n’est pas nécessaire d’avoir du liquide sur soi.", + "Trip started here": "La course a commencé ici.", + "Trip ended here": "La course s’est terminée ici.", + "Sending Email": "Envoi de l’e-mail...", + "Resend Email Succeeded": "Nous venons d’envoyer l’e-mail. Merci de cliquer sur le lien de confirmation que vous avez reçu.", + "Resend Email Failed": "Il y a eu un problème lors de l’envoi de l’email. Merci de contacter le support si le problème persiste.", + "Resend Text Succeeded": 'Nous venons d’envoyer le SMS. Merci de répondre "GO" au message que vous avez reçu. Il se peut que cela prenne quelques minutes pour que le message arrive sur votre téléphone.', + "Resend Text Failed": "Il y a eu un problème lors de l’envoi du SMS. Merci de contacter le support si le problème persiste.", + "Password Reset Error": "Il y a eu une error lors de la réinitialisation de votre mot de passe.", + "New Password:": "Nouveau mot de passe:", + "Forgot Password Error": "Votre nom d’utilisateur / adresse email ne peut être trouvé. Merci d’utiliser la même qu’à l’inscription.", + "Forgot Password Success": "Merci de consulter votre boîte mail pour suivre la demande de ‘réinitialisation de mot de passe.", + "Forgot Password Enter Email": "Merci de saisir votre adresse email et nous vous enverrons un lien vous permettant de réinitialiser votre mot de passe :", + "Invite friends": "Inviter vos amis", + "Give $ Get $": "Donnez $10, Recevez $10", + "Give $ Get $ Description": "Chaque ami que vous invitez à Uber recevra $10 de crédits Uber. Dès lors qu’une personne que vous aurez invité aura utilisé Uber pour la première, vous recevrez $10 de crédits Uber également !", + "What are you waiting for?": "N’attendez plus ! Lancez les invitations !", + "Tweet": "Tweeter", + "Invite Link": "Envoyez ce lien par email ou messagerie instantanée à vos amis :", + "Enter Promotion Code": "Si vous avez un code promo, saisissez-le ici:", + "Your Active Promotions": "Vos Codes Promos Actifs", + "Code": "Code", + "Details": "Détails", + "Trips Remaining": "Courses restantes", + "Expires": "Expire", + "No Active Promotions": "Vous n’avez pas de code promo actif.", + "Your Available Promotions": "Votres Promos Disponibles", + "Where do you want us to pick you up?": "Où souhaitez-vous que nous vous prenions en charge ?", + "Address to search": "Adresse à rechercher", + "Search": "Chercher", + "Driver Name:": "Nom du chauffeur:", + "Driver #:": "# Chauffeur:", + "Pickup Address:": "Lieu de prise en charge:", + "Add to Favorite Locations": "Ajoutez aux Lieux Favoris", + "Star": "Étoiles", + "Nickname:": "Pseudo", + "Add": "Ajouter", + "Your last trip": "Votre dernière course", + "Please rate your driver:": "Merci de noter votre chauffeur :", + "Comments: (optional)": "Commentaires: (optionnel)", + "Rate Trip": "Notez votre course", + "Pickup time:": "Heure de Prise en Charge :", + "Miles:": "Kilomètres :", + "Trip time:": "Temps de course :", + "Fare:": "Tarif :", + "Favorite Locations": "Lieux Favoris", + "Search Results": "Résultats", + "You have no favorite locations saved.": "Vous n’avez pas de lieux de prise en charge favoris.", + "Loading...": "Chargement...", + "Request Pickup": "Commander ici", + "Cancel Pickup": "Annuler", + "Requesting Closest Driver": "Nous demandons au chauffeur le plus proche de vous prendre en charge...", + "En Route": "Vous êtes actuellement en route...", + "Rate Last Trip": "Merci de noter votre précédent trajet pour faire une autre course.", + "Rate Before Submitting": "Merci de noter votre trajet avant de le valider.", + "Address too short": "L’adresse est trop courte", + "or did you mean": "ou vouliez-vous dire", + "Search Address Failed": "Impossible de trouver l’adresse spécifiée. Merci de saisir une autre adresse proche de l’endroit où vous vous trouvez.", + "Sending pickup request...": "Envoi de la demande de prise en charge...", + "Cancel Request Prompt": "Voulez-vous vraiment annuler votre demande ?", + "Cancel Request Arrived Prompt": 'Voulez-vous vraiment annuler votre demande ? Votre chauffeur est arrivé, vous serez donc facturé de $10 de frais d’annulation. Il pourrait être utile que vous appeliez votre chauffeur maintenant.', + "Favorite Location Nickname Length Error": "Le pseudo doit faire au moins 3 caractères de long", + "Favorite Location Save Succeeded": "Adresse enregistrée !", + "Favorite Location Save Failed": "Impossible d’enregistrer votre adresse. Merci de réessayer ultérieurement.", + "Favorite Location Title": "Adresse favorie <%= id %>", + "Search Location Title": "Recherche d’adresse <%= id %>", + "ETA Message": "Temps d’attente estimé: environ <%= minutes %> minutes", + "Nearest Cab Message": "Le chauffeur le plus proche sera là dans <%= minutes %> minute(s)", + "Arrival ETA Message": "Votre chauffeur arrivera dans <%= minutes %> minute(s)", + "Arriving Now Message": "Votre chauffeur est en approche...", + "Rating Driver Failed": "Impossible de contacter le serveur. Merci de réessayer ultérieurement ou de contacter le support si le problème persiste.", + "settings": "Paramètres", + "Information": "Information", + "Picture": "Photo", + "Change password": "Modifier votre mot de passe", + "Your current Picture": "Votre photo", + "Your Favorite Locations": "Vos lieux favoris", + "You have no favorite locations saved.": "Vous n’avez pas de lieu favori", + "Account Information": "Informations Personnelles", + "Mobile Phone Information": "Informations de Mobile", + "Change Your Password": "Changez votre mot de passe.", + "Country": "Pays", + "Language": "Langue", + "Favorite Location": "Lieu favori", + "No Approximate Address": "Impossible de trouver une adresse même approximative", + "Address:": "Adresse :", + "Information Update Succeeded": "Vos informations ont été mises à jour !", + "Information Update Failed": "Nous n’avons pas pu mettre à jour vos informations. Merci de réessayer dans quelques instants ou de contacter le support si le problème persiste.", + "Location Delete Succeeded": "Adresse supprimée !", + "Location Delete Failed": "Nous n’avons pas pu supprimée votre adresse favorie. Merci de réessayer plus tard ou de contacter le support si le problème persiste.", + "Location Edit Succeeded": "Modifications sauvegardées !", + "Location Edit Failed": "Nous n’avons pas pu sauvegarder vos modifications. Merci de réessayer dans quelques minutes.", + "Picture Update Succeeded": "Votre photo a été mise à jour !", + "Picture Update Failed": "Nous n’avons pas pu mettre à jour votre photo. Merci de réessayer dans quelques instants.", + "Personal Information": "Informations Personnelles", + "Mobile Phone Number": "Numéro de Téléphone Portable", + "Payment Information": "Informations de Facturation", + "Your card will not be charged until you take a trip.": "Votre carte ne sera pas débitée avant votre premier trajet.", + "Card Number": "Numéro de Carte", + "Promotion Code Input Label": "Code promo, code d’invitation ou “deal” acheté en ligne (optionnel)", + "Terms and Conditions": "Conditions Générales", + "HELP": "HELP", + "STOP": "STOP", + "Sign Up Agreement": "En souscrivant, j’accepte les <%= terms_link %> et <%= privacy_link %> et comprends qu’Uber est un outil de commande de chauffeur, et non un transporteur.", + "Sign Up Agreement Error": "Vous devez accepter les Conditions Générales d’utilisation d’Uber Terms and Conditions et la Politique de Confidentialité pour continuer.", + "Message and Data Rates Disclosure": "Les frais d’envoi de SMS et de consommation de données peuvent s’appliquer. Répondez <%= help_string %> au 827-222 pour obtenir de l’aide. Répondez <%= stop_string %> au 827-222 pour ne plus recevoir de SMS. Pour plus d’aide, visitez support.uber.com ou appelez le (866) 576-1039. Opérateurs supportés: AT&T, Sprint, Verizon, T-Mobile, Orange, SFR et Bouygues Telecom.", + "Zip/Postal Code": "Code Postal", + "Expiration Date": "Date D'expiration", + "Security Code": "Code de Sécurité", + "Type of Card": "Type", + "Personal": "Personnel", + "Business": "Entreprise", + "Promotion Code": "Code Promo", + "Legal Information": "Mentions Légales", + "I Agree": "J'accepte.", + "Your Trip": "Votre Course", + "Trip Info": "Informations de la Course", + "Request a fare review": "Demander un contrôle du tarif", + "Fare Review Submitted": "Votre demande de contrôle du tarif a été soumis. Nous reviendrons vers vous rapidement concernant cette demande. Nous nous excusons pour les dérangements éventuellement occasionnés !", + "Fair Price Consideration": "Nous nous engageons à proposer Uber à un tarif juste. Avant de demander un contrôle du tarif, merci de prendre en compte :", + "Your Fare Calculation": "Calcul du Prix", + "Charges": "Coûts", + "Discounts": "Réductions", + "Total Charge": "Coût total", + "Uber pricing information": "Information sur les prix d’Uber", + "Uber Pricing Information Message": "<%= learn_link %> est disponible sur notre site web.", + "GPS Point Capture Disclosure": "A cause d’un nombre limité de coordonnées GPS sauvegardées, les angles de votre trajet sur la carte peuvent apparaître coupés ou arrondis. Ces légères incohérences débouchent sur des distances mesurées plus courtes, ce qui implique toujours un prix du trajet moins élevé.", + "Fare Review Note": "Merci de nous expliquer pourquoi le tarif de cette course nécessite d’être contrôlé. Vos commentaires ci-dessous nous aideront à établir un prix plus juste si nécessaire :", + "Fare Review Error": "Il y a eu une erreur lors de l’envoi de la demande. Assurez-vous d’avoir bien ajouté une description à votre demande." + }; +}).call(this); +}, "views/clients/billing": function(exports, require, module) {(function() { + var clientsBillingTemplate; + var __hasProp = Object.prototype.hasOwnProperty, __extends = function(child, parent) { + for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } + function ctor() { this.constructor = child; } + ctor.prototype = parent.prototype; + child.prototype = new ctor; + child.__super__ = parent.prototype; + return child; + }, __bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; }; + clientsBillingTemplate = require('templates/clients/billing'); + exports.ClientsBillingView = (function() { + __extends(ClientsBillingView, UberView); + function ClientsBillingView() { + ClientsBillingView.__super__.constructor.apply(this, arguments); + } + ClientsBillingView.prototype.id = 'billing_view'; + ClientsBillingView.prototype.className = 'view_container'; + ClientsBillingView.prototype.events = { + 'click a#add_card': 'addCard', + 'click .charge_arrear': 'chargeArrear' + }; + ClientsBillingView.prototype.render = function() { + this.RefreshUserInfo(__bind(function() { + var cards, newForm; + this.HideSpinner(); + $(this.el).html(clientsBillingTemplate()); + if (USER.payment_gateway.payment_profiles.length === 0) { + newForm = new app.views.clients.modules.creditcard; + $(this.el).find("#add_card_wrapper").html(newForm.render(0).el); + } else { + cards = new app.views.clients.modules.creditcard; + $("#cards").html(cards.render("all").el); + } + return this.delegateEvents(); + }, this)); + return this; + }; + ClientsBillingView.prototype.addCard = function(e) { + var newCard; + e.preventDefault(); + newCard = new app.views.clients.modules.creditcard; + $('#cards').append(newCard.render("new").el); + return $("a#add_card").hide(); + }; + ClientsBillingView.prototype.chargeArrear = function(e) { + var $el, arrearId, attrs, cardId, options, tryCharge; + e.preventDefault(); + $(".error_message").text(""); + $el = $(e.currentTarget); + arrearId = $el.attr('id'); + cardId = $el.parent().find('#card_to_charge').val(); + this.ShowSpinner('submit'); + tryCharge = new app.models.clientbills({ + id: arrearId + }); + attrs = { + payment_profile_id: cardId, + dataType: 'json' + }; + options = { + success: __bind(function(data, textStatus, jqXHR) { + $el.parent().find(".success_message").text(t("Billing Succeeded")); + $el.hide(); + return $el.parent().find('#card_to_charge').hide(); + }, this), + error: __bind(function(jqXHR, status, errorThrown) { + return $el.parent().find(".error_message").text(JSON.parse(status.responseText).error); + }, this), + complete: __bind(function() { + return this.HideSpinner(); + }, this) + }; + return tryCharge.save(attrs, options); + }; + return ClientsBillingView; + })(); +}).call(this); +}, "views/clients/confirm_email": function(exports, require, module) {(function() { + var clientsConfirmEmailTemplate; + var __hasProp = Object.prototype.hasOwnProperty, __extends = function(child, parent) { + for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } + function ctor() { this.constructor = child; } + ctor.prototype = parent.prototype; + child.prototype = new ctor; + child.__super__ = parent.prototype; + return child; + }, __bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; }; + clientsConfirmEmailTemplate = require('templates/clients/confirm_email'); + exports.ClientsConfirmEmailView = (function() { + __extends(ClientsConfirmEmailView, UberView); + function ClientsConfirmEmailView() { + ClientsConfirmEmailView.__super__.constructor.apply(this, arguments); + } + ClientsConfirmEmailView.prototype.id = 'confirm_email_view'; + ClientsConfirmEmailView.prototype.className = 'view_container'; + ClientsConfirmEmailView.prototype.render = function(token) { + var attrs; + $(this.el).html(clientsConfirmEmailTemplate()); + attrs = { + data: { + email_token: token + }, + success: __bind(function(data, textStatus, jqXHR) { + var show_dashboard; + this.HideSpinner(); + show_dashboard = function() { + return app.routers.clients.navigate('!/dashboard', true); + }; + if (data.status === 'OK') { + $('.success_message').show(); + return _.delay(show_dashboard, 3000); + } else if (data.status === 'ALREADY_COMFIRMED') { + $('.already_confirmed_message').show(); + return _.delay(show_dashboard, 3000); + } else { + return $('.error_message').show(); + } + }, this), + error: __bind(function(e) { + this.HideSpinner(); + return $('.error_message').show(); + }, this), + complete: function(status) { + return $('#attempt_text').hide(); + }, + dataType: 'json', + type: 'PUT', + url: "" + API + "/users/self" + }; + $.ajax(attrs); + this.ShowSpinner('submit'); + return this; + }; + return ClientsConfirmEmailView; + })(); +}).call(this); +}, "views/clients/dashboard": function(exports, require, module) {(function() { + var clientsDashboardTemplate; + var __bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; }, __hasProp = Object.prototype.hasOwnProperty, __extends = function(child, parent) { + for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } + function ctor() { this.constructor = child; } + ctor.prototype = parent.prototype; + child.prototype = new ctor; + child.__super__ = parent.prototype; + return child; + }; + clientsDashboardTemplate = require('templates/clients/dashboard'); + exports.ClientsDashboardView = (function() { + var displayFirstTrip; + __extends(ClientsDashboardView, UberView); + function ClientsDashboardView() { + this.showAllTrips = __bind(this.showAllTrips, this); + this.render = __bind(this.render, this); + ClientsDashboardView.__super__.constructor.apply(this, arguments); + } + ClientsDashboardView.prototype.id = 'dashboard_view'; + ClientsDashboardView.prototype.className = 'view_container'; + ClientsDashboardView.prototype.events = { + 'click a.confirmation': 'confirmationClick', + 'click #resend_email': 'resendEmail', + 'click #resend_mobile': 'resendMobile', + 'click #show_all_trips': 'showAllTrips' + }; + ClientsDashboardView.prototype.render = function() { + var displayPage, downloadTrips; + this.HideSpinner(); + displayPage = __bind(function() { + $(this.el).html(clientsDashboardTemplate()); + this.confirmationsSetup(); + return this.RequireMaps(__bind(function() { + if (USER.trips.models[0]) { + if (!USER.trips.models[0].get("points")) { + return USER.trips.models[0].fetch({ + data: { + relationships: 'points' + }, + success: __bind(function() { + this.CacheData("USERtrips", USER.trips); + return displayFirstTrip(); + }, this) + }); + } else { + return displayFirstTrip(); + } + } + }, this)); + }, this); + downloadTrips = __bind(function() { + return this.DownloadUserTrips(displayPage, false, 10); + }, this); + this.RefreshUserInfo(downloadTrips); + return this; + }; + displayFirstTrip = __bind(function() { + var bounds, endPos, map, myOptions, path, polyline, startPos; + myOptions = { + zoom: 12, + mapTypeId: google.maps.MapTypeId.ROADMAP, + zoomControl: false, + rotateControl: false, + panControl: false, + mapTypeControl: false, + scrollwheel: false + }; + if (USER.trips.length === 10) { + $("#show_all_trips").show(); + } + if (USER.trips.length > 0) { + map = new google.maps.Map(document.getElementById("trip_details_map"), myOptions); + bounds = new google.maps.LatLngBounds(); + path = []; + _.each(USER.trips.models[0].get('points'), __bind(function(point) { + path.push(new google.maps.LatLng(point.lat, point.lng)); + return bounds.extend(_.last(path)); + }, this)); + map.fitBounds(bounds); + startPos = new google.maps.Marker({ + position: _.first(path), + map: map, + title: t('Trip started here'), + icon: 'https://uber-static.s3.amazonaws.com/marker_start.png' + }); + endPos = new google.maps.Marker({ + position: _.last(path), + map: map, + title: t('Trip ended here'), + icon: 'https://uber-static.s3.amazonaws.com/marker_end.png' + }); + polyline = new google.maps.Polyline({ + path: path, + strokeColor: '#003F87', + strokeOpacity: 1, + strokeWeight: 5 + }); + return polyline.setMap(map); + } + }, ClientsDashboardView); + ClientsDashboardView.prototype.confirmationsSetup = function() { + var blink, cardForm, element, _ref, _ref2, _ref3, _ref4, _ref5; + blink = function(element) { + var opacity; + opacity = 0.5; + if (element.css('opacity') === "0.5") { + opacity = 1.0; + } + return element.fadeTo(2000, opacity, function() { + return blink(element); + }); + }; + if (((_ref = window.USER) != null ? (_ref2 = _ref.payment_gateway) != null ? (_ref3 = _ref2.payment_profiles) != null ? _ref3.length : void 0 : void 0 : void 0) === 0) { + element = $('#confirmed_credit_card'); + cardForm = new app.views.clients.modules.creditcard; + $('#card.info').append(cardForm.render().el); + blink(element); + } + if (((_ref4 = window.USER) != null ? _ref4.confirm_email : void 0) === false) { + element = $('#confirmed_email'); + blink(element); + } + if ((((_ref5 = window.USER) != null ? _ref5.confirm_mobile : void 0) != null) === false) { + element = $('#confirmed_mobile'); + return blink(element); + } + }; + ClientsDashboardView.prototype.confirmationClick = function(e) { + e.preventDefault(); + $('.info').hide(); + $('#more_info').show(); + switch (e.currentTarget.id) { + case "card": + return $('#card.info').slideToggle(); + case "mobile": + return $('#mobile.info').slideToggle(); + case "email": + return $('#email.info').slideToggle(); + } + }; + ClientsDashboardView.prototype.resendEmail = function(e) { + var $el; + e.preventDefault(); + $el = $(e.currentTarget); + $el.removeAttr('href').prop({ + disabled: true + }); + $el.html(t("Sending Email")); + return $.ajax({ + type: 'GET', + url: API + '/users/request_confirm_email', + data: { + token: USER.token + }, + dataType: 'json', + success: __bind(function(data, textStatus, jqXHR) { + return $el.html(t("Resend Email Succeeded")); + }, this), + error: __bind(function(jqXHR, textStatus, errorThrown) { + return $el.html(t("Resend Email Failed")); + }, this) + }); + }; + ClientsDashboardView.prototype.resendMobile = function(e) { + var $el; + e.preventDefault(); + $el = $(e.currentTarget); + $el.removeAttr('href').prop({ + disabled: true + }); + $el.html("Sending message..."); + return $.ajax({ + type: 'GET', + url: API + '/users/request_confirm_mobile', + data: { + token: USER.token + }, + dataType: 'json', + success: __bind(function(data, textStatus, jqXHR) { + return $el.html(t("Resend Text Succeeded")); + }, this), + error: __bind(function(jqXHR, textStatus, errorThrown) { + return $el.html(t("Resend Text Failed")); + }, this) + }); + }; + ClientsDashboardView.prototype.showAllTrips = function(e) { + e.preventDefault(); + $(e.currentTarget).hide(); + return this.DownloadUserTrips(this.render, true, 1000); + }; + return ClientsDashboardView; + }).call(this); +}).call(this); +}, "views/clients/forgot_password": function(exports, require, module) {(function() { + var clientsForgotPasswordTemplate; + var __hasProp = Object.prototype.hasOwnProperty, __extends = function(child, parent) { + for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } + function ctor() { this.constructor = child; } + ctor.prototype = parent.prototype; + child.prototype = new ctor; + child.__super__ = parent.prototype; + return child; + }, __bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; }; + clientsForgotPasswordTemplate = require('templates/clients/forgot_password'); + exports.ClientsForgotPasswordView = (function() { + __extends(ClientsForgotPasswordView, UberView); + function ClientsForgotPasswordView() { + ClientsForgotPasswordView.__super__.constructor.apply(this, arguments); + } + ClientsForgotPasswordView.prototype.id = 'forgotpassword_view'; + ClientsForgotPasswordView.prototype.className = 'view_container modal_view_container'; + ClientsForgotPasswordView.prototype.events = { + "submit #password_reset": "passwordReset", + "click #password_reset_submit": "passwordReset", + "submit #forgot_password": "forgotPassword", + "click #forgot_password_submit": "forgotPassword" + }; + ClientsForgotPasswordView.prototype.render = function(token) { + this.HideSpinner(); + $(this.el).html(clientsForgotPasswordTemplate({ + token: token + })); + this.delegateEvents(); + return this; + }; + ClientsForgotPasswordView.prototype.forgotPassword = function(e) { + var attrs; + e.preventDefault(); + $('.success_message').hide(); + $(".error_message").hide(); + attrs = { + data: { + login: $("#login").val() + }, + success: __bind(function(data, textStatus, jqXHR) { + this.HideSpinner(); + $('.success_message').show(); + return $("#forgot_password").hide(); + }, this), + error: __bind(function(e) { + this.HideSpinner(); + return $('.error_message').show(); + }, this), + dataType: 'json', + type: 'PUT', + url: "" + API + "/users/forgot_password" + }; + $.ajax(attrs); + return this.ShowSpinner('submit'); + }; + ClientsForgotPasswordView.prototype.passwordReset = function(e) { + var attrs; + e.preventDefault(); + attrs = { + data: { + email_token: $("#token").val(), + password: $("#password").val() + }, + success: __bind(function(data, textStatus, jqXHR) { + this.HideSpinner(); + $.cookie('token', data.token); + amplify.store('USERjson', data); + app.refreshMenu(); + return location.hash = '!/dashboard'; + }, this), + error: __bind(function(e) { + this.HideSpinner(); + return $('#error_reset').show(); + }, this), + dataType: 'json', + type: 'PUT', + url: "" + API + "/users/self" + }; + $.ajax(attrs); + return this.ShowSpinner('submit'); + }; + return ClientsForgotPasswordView; + })(); +}).call(this); +}, "views/clients/invite": function(exports, require, module) {(function() { + var clientsInviteTemplate; + var __hasProp = Object.prototype.hasOwnProperty, __extends = function(child, parent) { + for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } + function ctor() { this.constructor = child; } + ctor.prototype = parent.prototype; + child.prototype = new ctor; + child.__super__ = parent.prototype; + return child; + }; + clientsInviteTemplate = require('templates/clients/invite'); + exports.ClientsInviteView = (function() { + __extends(ClientsInviteView, UberView); + function ClientsInviteView() { + ClientsInviteView.__super__.constructor.apply(this, arguments); + } + ClientsInviteView.prototype.id = 'invite_view'; + ClientsInviteView.prototype.className = 'view_container'; + ClientsInviteView.prototype.render = function() { + this.ReadUserInfo(); + this.HideSpinner(); + $(this.el).html(clientsInviteTemplate()); + console.log(screen); + return this; + }; + return ClientsInviteView; + })(); +}).call(this); +}, "views/clients/login": function(exports, require, module) {(function() { + var clientsLoginTemplate; + var __hasProp = Object.prototype.hasOwnProperty, __extends = function(child, parent) { + for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } + function ctor() { this.constructor = child; } + ctor.prototype = parent.prototype; + child.prototype = new ctor; + child.__super__ = parent.prototype; + return child; + }; + clientsLoginTemplate = require('templates/clients/login'); + exports.ClientsLoginView = (function() { + __extends(ClientsLoginView, UberView); + function ClientsLoginView() { + ClientsLoginView.__super__.constructor.apply(this, arguments); + } + ClientsLoginView.prototype.id = 'login_view'; + ClientsLoginView.prototype.className = 'view_container modal_view_container'; + ClientsLoginView.prototype.events = { + 'submit form': 'authenticate', + 'click button': 'authenticate' + }; + ClientsLoginView.prototype.initialize = function() { + _.bindAll(this, 'render'); + return this.render(); + }; + ClientsLoginView.prototype.render = function() { + this.HideSpinner(); + $(this.el).html(clientsLoginTemplate()); + this.delegateEvents(); + return this.place(); + }; + ClientsLoginView.prototype.authenticate = function(e) { + e.preventDefault(); + return $.ajax({ + type: 'POST', + url: API + '/auth/web_login/client', + data: { + login: $("#login").val(), + password: $("#password").val() + }, + dataType: 'json', + success: function(data, textStatus, jqXHR) { + $.cookie('user', JSON.stringify(data)); + $.cookie('token', data.token); + amplify.store('USERjson', data); + $('header').html(app.views.shared.menu.render().el); + return app.routers.clients.navigate('!/dashboard', true); + }, + error: function(jqXHR, textStatus, errorThrown) { + $.cookie('user', null); + $.cookie('token', null); + if (jqXHR.status === 403) { + $.cookie('redirected_user', JSON.stringify(JSON.parse(jqXHR.responseText).error_obj), { + domain: '.uber.com' + }); + window.location = 'http://partners.uber.com/'; + } + return $('.error_message').html(JSON.parse(jqXHR.responseText).error).hide().fadeIn(); + } + }); + }; + return ClientsLoginView; + })(); +}).call(this); +}, "views/clients/modules/credit_card": function(exports, require, module) {(function() { + var creditCardTemplate; + var __hasProp = Object.prototype.hasOwnProperty, __extends = function(child, parent) { + for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } + function ctor() { this.constructor = child; } + ctor.prototype = parent.prototype; + child.prototype = new ctor; + child.__super__ = parent.prototype; + return child; + }, __bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; }; + creditCardTemplate = require('templates/clients/modules/credit_card'); + exports.CreditCardView = (function() { + __extends(CreditCardView, UberView); + function CreditCardView() { + CreditCardView.__super__.constructor.apply(this, arguments); + } + CreditCardView.prototype.id = 'creditcard_view'; + CreditCardView.prototype.className = 'module_container'; + CreditCardView.prototype.events = { + 'submit #credit_card_form': 'processNewCard', + 'click #new_card': 'processNewCard', + 'change #card_number': 'showCardType', + 'click .edit_card_show': 'showEditCard', + 'click .edit_card': 'editCard', + 'click .delete_card': 'deleteCard', + 'click .make_default': 'makeDefault', + 'change .use_case': 'saveUseCase' + }; + CreditCardView.prototype.initialize = function() { + return app.collections.paymentprofiles.bind("refresh", __bind(function() { + return this.RefreshUserInfo(__bind(function() { + this.render("all"); + return this.HideSpinner(); + }, this)); + }, this)); + }; + CreditCardView.prototype.render = function(cards) { + if (cards == null) { + cards = "new"; + } + if (cards === "all") { + app.collections.paymentprofiles.reset(USER.payment_gateway.payment_profiles); + cards = app.collections.paymentprofiles; + } + $(this.el).html(creditCardTemplate({ + cards: cards + })); + return this; + }; + CreditCardView.prototype.processNewCard = function(e) { + var $el, attrs, model, options; + e.preventDefault(); + this.ClearGlobalStatus(); + $el = $("#credit_card_form"); + $el.find('.error_message').html(""); + attrs = { + card_number: $el.find('#card_number').val(), + card_code: $el.find('#card_code').val(), + card_expiration_month: $el.find('#card_expiration_month').val(), + card_expiration_year: $el.find('#card_expiration_year').val(), + use_case: $el.find('#use_case').val(), + "default": $el.find('#default_check').prop("checked") + }; + options = { + statusCode: { + 200: __bind(function(e) { + this.HideSpinner(); + $('#cc_form_wrapper').hide(); + app.collections.paymentprofiles.trigger("refresh"); + $(this.el).remove(); + $("a#add_card").show(); + return $('section').html(app.views.clients.billing.render().el); + }, this), + 406: __bind(function(e) { + var error, errors, _i, _len, _ref, _results; + this.HideSpinner(); + errors = JSON.parse(e.responseText); + _ref = _.keys(errors); + _results = []; + for (_i = 0, _len = _ref.length; _i < _len; _i++) { + error = _ref[_i]; + _results.push(error === "top_of_form" ? $("#top_of_form").html(errors[error]) : $("#credit_card_form").find("#" + error).parent().find(".error_message").html(errors[error])); + } + return _results; + }, this), + 420: __bind(function(e) { + this.HideSpinner(); + return $("#top_of_form").html(t("Unable to Verify Card")); + }, this) + } + }; + this.ShowSpinner("submit"); + model = new app.models.paymentprofile; + model.save(attrs, options); + return app.collections.paymentprofiles.add(model); + }; + CreditCardView.prototype.showCardType = function(e) { + var $el, reAmerica, reDiscover, reMaster, reVisa, validCard; + reVisa = /^4\d{3}-?\d{4}-?\d{4}-?\d{4}$/; + reMaster = /^5[1-5]\d{2}-?\d{4}-?\d{4}-?\d{4}$/; + reAmerica = /^6011-?\d{4}-?\d{4}-?\d{4}$/; + reDiscover = /^3[4,7]\d{13}$/; + $el = $("#card_logos"); + validCard = false; + if (e.currentTarget.value.match(reVisa)) { + validCard = true; + } else if (e.currentTarget.value.match(reMaster)) { + $el.css('background-position', "-60px"); + validCard = true; + } else if (e.currentTarget.value.match(reAmerica)) { + $el.css('background-position', "-120px"); + validCard = true; + } else if (e.currentTarget.value.match(reDiscover)) { + $el.css('background-position', "-180px"); + validCard = true; + } + if (validCard) { + $el.css('width', "60px"); + return $el.css('margin-left', "180px"); + } else { + $el.css('width', "250px"); + return $el.css('margin-left', "80px"); + } + }; + CreditCardView.prototype.showEditCard = function(e) { + var $el, id; + e.preventDefault(); + $el = $(e.currentTarget); + if ($el.html() === t("Edit")) { + id = $el.html(t("Cancel")).parents("tr").attr("id").substring(1); + return $("#e" + id).show(); + } else { + id = $el.html(t("Edit")).parents("tr").attr("id").substring(1); + return $("#e" + id).hide(); + } + }; + CreditCardView.prototype.editCard = function(e) { + var $el, attrs, id, options; + e.preventDefault(); + this.ClearGlobalStatus(); + $el = $(e.currentTarget).parents("td"); + id = $el.parents("tr").attr("id").substring(1); + $el.attr('disabled', 'disabled'); + this.ShowSpinner('submit'); + attrs = { + card_expiration_month: $el.find('#card_expiration_month').val(), + card_expiration_year: $el.find('#card_expiration_year').val(), + card_code: $el.find('#card_code').val() + }; + options = { + success: __bind(function(response) { + this.HideSpinner(); + this.ShowSuccess(t("Credit Card Update Succeeded")); + $("#e" + id).hide(); + $("#d" + id).find(".edit_card_show").html(t("Edit")); + return app.collections.paymentprofiles.trigger("refresh"); + }, this), + error: __bind(function(e) { + this.HideSpinner(); + this.ShowError(t("Credit Card Update Failed")); + return $el.removeAttr('disabled'); + }, this) + }; + app.collections.paymentprofiles.models[id].set(attrs); + return app.collections.paymentprofiles.models[id].save({}, options); + }; + CreditCardView.prototype.deleteCard = function(e) { + var $el, id, options; + e.preventDefault(); + $el = $(e.currentTarget).parents("td"); + id = $el.parents("tr").attr("id").substring(1); + this.ClearGlobalStatus(); + this.ShowSpinner('submit'); + options = { + success: __bind(function(response) { + this.ShowSuccess(t("Credit Card Delete Succeeded")); + $("form").hide(); + app.collections.paymentprofiles.trigger("refresh"); + return $('section').html(app.views.clients.billing.render().el); + }, this), + error: __bind(function(xhr, e) { + this.HideSpinner(); + return this.ShowError(t("Credit Card Delete Failed")); + }, this) + }; + return app.collections.paymentprofiles.models[id].destroy(options); + }; + CreditCardView.prototype.saveUseCase = function(e) { + var $el, attrs, id, options, use_case; + this.ClearGlobalStatus(); + $el = $(e.currentTarget); + use_case = $el.val(); + id = $el.parents("tr").attr("id").substring(1); + attrs = { + use_case: use_case + }; + options = { + success: __bind(function(response) { + return this.ShowSuccess(t("Credit Card Update Category Succeeded")); + }, this), + error: __bind(function(e) { + return this.ShowError(t("Credit Card Update Category Failed")); + }, this) + }; + app.collections.paymentprofiles.models[id].set(attrs); + return app.collections.paymentprofiles.models[id].save({}, options); + }; + CreditCardView.prototype.makeDefault = function(e) { + var $el, attrs, id, options; + e.preventDefault(); + this.ClearGlobalStatus(); + $el = $(e.currentTarget).parents("td"); + id = $el.parents("tr").attr("id").substring(1); + attrs = { + "default": true + }; + options = { + success: __bind(function(response) { + this.ShowSuccess(t("Credit Card Update Default Succeeded")); + return app.collections.paymentprofiles.trigger("refresh"); + }, this), + error: __bind(function(e) { + return this.ShowError(t("Credit Card Update Default Failed")); + }, this) + }; + app.collections.paymentprofiles.models[id].set(attrs); + return app.collections.paymentprofiles.models[id].save({}, options); + }; + return CreditCardView; + })(); +}).call(this); +}, "views/clients/promotions": function(exports, require, module) {(function() { + var clientsPromotionsTemplate; + var __bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; }, __hasProp = Object.prototype.hasOwnProperty, __extends = function(child, parent) { + for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } + function ctor() { this.constructor = child; } + ctor.prototype = parent.prototype; + child.prototype = new ctor; + child.__super__ = parent.prototype; + return child; + }; + clientsPromotionsTemplate = require('templates/clients/promotions'); + exports.ClientsPromotionsView = (function() { + __extends(ClientsPromotionsView, UberView); + function ClientsPromotionsView() { + this.render = __bind(this.render, this); + ClientsPromotionsView.__super__.constructor.apply(this, arguments); + } + ClientsPromotionsView.prototype.id = 'promotions_view'; + ClientsPromotionsView.prototype.className = 'view_container'; + ClientsPromotionsView.prototype.events = { + 'submit form': 'submitPromo', + 'click button': 'submitPromo' + }; + ClientsPromotionsView.prototype.initialize = function() { + if (this.model) { + return this.RefreshUserInfo(this.render); + } + }; + ClientsPromotionsView.prototype.render = function() { + var renderTemplate; + this.ReadUserInfo(); + renderTemplate = __bind(function() { + $(this.el).html(clientsPromotionsTemplate({ + promos: window.USER.unexpired_client_promotions || [] + })); + return this.HideSpinner(); + }, this); + this.DownloadUserPromotions(renderTemplate); + return this; + }; + ClientsPromotionsView.prototype.submitPromo = function(e) { + var attrs, model, options, refreshTable; + e.preventDefault(); + this.ClearGlobalStatus(); + refreshTable = __bind(function() { + $('section').html(this.render().el); + return this.HideSpinner(); + }, this); + attrs = { + code: $('#code').val() + }; + options = { + success: __bind(function(response) { + this.HideSpinner(); + if (response.get('first_name')) { + return this.ShowSuccess("Your promotion has been applied in the form of an account credit. Click here to check your balance."); + } else { + this.ShowSuccess("Your promotion has successfully been applied"); + return this.RefreshUserInfo(this.render, true); + } + }, this), + statusCode: { + 400: __bind(function(e) { + this.ShowError(JSON.parse(e.responseText).error); + return this.HideSpinner(); + }, this) + } + }; + this.ShowSpinner("submit"); + model = new app.models.promotions; + return model.save(attrs, options); + }; + return ClientsPromotionsView; + })(); +}).call(this); +}, "views/clients/request": function(exports, require, module) {(function() { + var clientsRequestTemplate; + var __bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; }, __hasProp = Object.prototype.hasOwnProperty, __extends = function(child, parent) { + for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } + function ctor() { this.constructor = child; } + ctor.prototype = parent.prototype; + child.prototype = new ctor; + child.__super__ = parent.prototype; + return child; + }; + clientsRequestTemplate = require('templates/clients/request'); + exports.ClientsRequestView = (function() { + __extends(ClientsRequestView, UberView); + function ClientsRequestView() { + this.AjaxCall = __bind(this.AjaxCall, this); + this.AskDispatch = __bind(this.AskDispatch, this); + this.removeMarkers = __bind(this.removeMarkers, this); + this.displaySearchLoc = __bind(this.displaySearchLoc, this); + this.displayFavLoc = __bind(this.displayFavLoc, this); + this.showFavLoc = __bind(this.showFavLoc, this); + this.addToFavLoc = __bind(this.addToFavLoc, this); + this.removeCabs = __bind(this.removeCabs, this); + this.requestRide = __bind(this.requestRide, this); + this.rateTrip = __bind(this.rateTrip, this); + this.locationChange = __bind(this.locationChange, this); + this.panToLocation = __bind(this.panToLocation, this); + this.clickLocation = __bind(this.clickLocation, this); + this.searchLocation = __bind(this.searchLocation, this); + this.mouseoutLocation = __bind(this.mouseoutLocation, this); + this.mouseoverLocation = __bind(this.mouseoverLocation, this); + this.fetchTripDetails = __bind(this.fetchTripDetails, this); + this.submitRating = __bind(this.submitRating, this); + this.setStatus = __bind(this.setStatus, this); + this.initialize = __bind(this.initialize, this); + ClientsRequestView.__super__.constructor.apply(this, arguments); + } + ClientsRequestView.prototype.id = 'request_view'; + ClientsRequestView.prototype.className = 'view_container'; + ClientsRequestView.prototype.pollInterval = 2 * 1000; + ClientsRequestView.prototype.events = { + "submit #search_form": "searchAddress", + "click .locations_link": "locationLinkHandle", + "mouseover .location_row": "mouseoverLocation", + "mouseout .location_row": "mouseoutLocation", + "click .location_row": "clickLocation", + "click #search_location": "searchLocation", + "click #pickupHandle": "pickupHandle", + "click .stars": "rateTrip", + "submit #rating_form": "submitRating", + "click #addToFavButton": "showFavLoc", + "click #favLocNickname": "selectInputText", + "submit #favLoc_form": "addToFavLoc" + }; + ClientsRequestView.prototype.status = ""; + ClientsRequestView.prototype.pickupMarker = "https://uber-static.s3.amazonaws.com/pickup_marker.png"; + ClientsRequestView.prototype.cabMarker = "https://uber-static.s3.amazonaws.com/cab_marker.png"; + ClientsRequestView.prototype.initialize = function() { + var displayCabs; + displayCabs = __bind(function() { + return this.AskDispatch("NearestCab"); + }, this); + this.showCabs = _.throttle(displayCabs, this.pollInterval); + return this.numSearchToDisplay = 1; + }; + ClientsRequestView.prototype.setStatus = function(status) { + var autocomplete; + if (this.status === status) { + return; + } + try { + google.maps.event.trigger(this.map, 'resize'); + } catch (_e) {} + switch (status) { + case "init": + this.AskDispatch("StatusClient"); + this.status = "init"; + return this.ShowSpinner("load"); + case "ready": + this.HideSpinner(); + $(".panel").hide(); + $("#top_bar").fadeIn(); + $("#location_panel").fadeIn(); + $("#location_panel_control").fadeIn(); + $("#pickupHandle").attr("class", "button_green").fadeIn().find("span").html(t("Request Pickup")); + this.pickup_icon.setDraggable(true); + this.map.panTo(this.pickup_icon.getPosition()); + this.showCabs(); + try { + this.pickup_icon.setMap(this.map); + this.displayFavLoc(); + autocomplete = new google.maps.places.Autocomplete(document.getElementById('address'), { + types: ['geocode'] + }); + autocomplete.bindTo('bounds', this.map); + } catch (_e) {} + return this.status = "ready"; + case "searching": + this.HideSpinner(); + this.removeMarkers(); + $(".panel").hide(); + $("#top_bar").fadeOut(); + $("#status_message").html(t("Requesting Closest Driver")); + $("#pickupHandle").attr("class", "button_red").fadeIn().find("span").html(t("Cancel Pickup")); + this.pickup_icon.setDraggable(false); + this.pickup_icon.setMap(this.map); + return this.status = "searching"; + case "waiting": + this.HideSpinner(); + this.removeMarkers(); + $(".panel").hide(); + $("#top_bar").fadeOut(); + $("#pickupHandle").attr("class", "button_red").fadeIn().find("span").html(t("Cancel Pickup")); + $("#waiting_riding").fadeIn(); + this.pickup_icon.setDraggable(false); + this.pickup_icon.setMap(this.map); + return this.status = "waiting"; + case "arriving": + this.HideSpinner(); + this.removeMarkers(); + $(".panel").hide(); + $("#top_bar").fadeOut(); + $("#pickupHandle").attr("class", "button_red").fadeIn().find("span").html(t("Cancel Pickup")); + $("#waiting_riding").fadeIn(); + this.pickup_icon.setDraggable(false); + this.pickup_icon.setMap(this.map); + return this.status = "arriving"; + case "riding": + this.HideSpinner(); + this.removeMarkers(); + $(".panel").hide(); + $("#top_bar").fadeOut(); + $("#pickupHandle").fadeIn().attr("class", "button_red").find("span").html(t("Cancel Pickup")); + $("#waiting_riding").fadeIn(); + this.pickup_icon.setDraggable(false); + this.status = "riding"; + return $("#status_message").html(t("En Route")); + case "rate": + this.HideSpinner(); + $(".panel").hide(); + $("#pickupHandle").fadeOut(); + $("#trip_completed_panel").fadeIn(); + $('#status_message').html(t("Rate Last Trip")); + return this.status = "rate"; + } + }; + ClientsRequestView.prototype.render = function() { + this.ReadUserInfo(); + this.HideSpinner(); + this.ShowSpinner("load"); + $(this.el).html(clientsRequestTemplate()); + this.cabs = []; + this.RequireMaps(__bind(function() { + var center, myOptions, streetViewPano; + center = new google.maps.LatLng(37.7749295, -122.4194155); + this.markers = []; + this.pickup_icon = new google.maps.Marker({ + position: center, + draggable: true, + clickable: true, + icon: this.pickupMarker + }); + this.geocoder = new google.maps.Geocoder(); + myOptions = { + zoom: 12, + center: center, + mapTypeId: google.maps.MapTypeId.ROADMAP, + rotateControl: false, + rotateControl: false, + panControl: false + }; + this.map = new google.maps.Map($(this.el).find("#map_wrapper_right")[0], myOptions); + if (this.status === "ready") { + this.pickup_icon.setMap(this.map); + } + if (geo_position_js.init()) { + geo_position_js.getCurrentPosition(__bind(function(data) { + var location; + location = new google.maps.LatLng(data.coords.latitude, data.coords.longitude); + this.pickup_icon.setPosition(location); + this.map.panTo(location); + return this.map.setZoom(16); + }, this)); + } + this.setStatus("init"); + streetViewPano = this.map.getStreetView(); + google.maps.event.addListener(streetViewPano, 'visible_changed', __bind(function() { + if (streetViewPano.getVisible()) { + this.pickupMarker = "https://uber-static.s3.amazonaws.com/pickup_marker_large.png"; + this.cabMarker = "https://uber-static.s3.amazonaws.com/cab_marker_large.png"; + } else { + this.pickupMarker = "https://uber-static.s3.amazonaws.com/pickup_marker.png"; + this.cabMarker = "https://uber-static.s3.amazonaws.com/cab_marker.png"; + } + this.pickup_icon.setIcon(this.pickupMarker); + return _.each(this.cabs, __bind(function(cab) { + return cab.setIcon(this.cabMarker); + }, this)); + }, this)); + if (this.status === "ready") { + return this.displayFavLoc(); + } + }, this)); + return this; + }; + ClientsRequestView.prototype.submitRating = function(e) { + var $el, message, rating; + e.preventDefault(); + $el = $(e.currentTarget); + rating = 0; + _(5).times(function(num) { + if ($el.find(".stars#" + (num + 1)).attr("src") === "/web/img/star_active.png") { + return rating = num + 1; + } + }); + if (rating === 0) { + $("#status_message").html("").html(t("Rate Before Submitting")); + } else { + this.ShowSpinner("submit"); + this.AskDispatch("RatingDriver", { + rating: rating + }); + } + message = $el.find("#comments").val().toString(); + if (message.length > 5) { + return this.AskDispatch("Feedback", { + message: message + }); + } + }; + ClientsRequestView.prototype.fetchTripDetails = function(id) { + var trip; + trip = new app.models.trip({ + id: id + }); + return trip.fetch({ + data: { + relationships: 'points,driver,city' + }, + dataType: 'json', + success: __bind(function() { + var bounds, endPos, path, polyline, startPos; + bounds = new google.maps.LatLngBounds(); + path = []; + _.each(trip.get('points'), __bind(function(point) { + path.push(new google.maps.LatLng(point.lat, point.lng)); + return bounds.extend(_.last(path)); + }, this)); + startPos = new google.maps.Marker({ + position: _.first(path), + map: this.map, + title: t("Trip started here"), + icon: 'https://uber-static.s3.amazonaws.com/carstart.png' + }); + endPos = new google.maps.Marker({ + position: _.last(path), + map: this.map, + title: t("Trip ended here"), + icon: 'https://uber-static.s3.amazonaws.com/carstop.png' + }); + polyline = new google.maps.Polyline({ + path: path, + strokeColor: '#003F87', + strokeOpacity: 1, + strokeWeight: 5 + }); + polyline.setMap(this.map); + this.map.fitBounds(bounds); + $("#tripTime").html(app.helpers.parseDateTime(trip.get('pickup_local_time'), trip.get('city.timezone'))); + $("#tripDist").html(app.helpers.RoundNumber(trip.get('distance'), 2)); + $("#tripDur").html(app.helpers.FormatSeconds(trip.get('duration'))); + return $("#tripFare").html(app.helpers.FormatCurrency(trip.get('fare'))); + }, this) + }); + }; + ClientsRequestView.prototype.searchAddress = function(e) { + var $locationsDiv, address, alphabet, bounds, showResults; + alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; + try { + e.preventDefault(); + } catch (_e) {} + $('.error_message').html(""); + $locationsDiv = $("
      "); + address = $('#address').val(); + bounds = new google.maps.LatLngBounds(); + if (address.length < 5) { + $('#status_message').html(t("Address too short")).fadeIn(); + return false; + } + showResults = __bind(function(address, index) { + var first_cell, row, second_cell; + if (index < this.numSearchToDisplay) { + first_cell = "
      " + address.formatted_address + "
      " + (t('or did you mean')) + "
      " + address.formatted_address + "
      a"; + + all = div.getElementsByTagName("*"); + a = div.getElementsByTagName("a")[ 0 ]; + a.style.cssText = "top:1px;float:left;opacity:.5"; + + // Can't get basic test support + if ( !all || !all.length || !a ) { + return {}; + } + + // First batch of supports tests + select = document.createElement("select"); + opt = select.appendChild( document.createElement("option") ); + input = div.getElementsByTagName("input")[ 0 ]; + + support = { + // IE strips leading whitespace when .innerHTML is used + leadingWhitespace: ( div.firstChild.nodeType === 3 ), + + // Make sure that tbody elements aren't automatically inserted + // IE will insert them into empty tables + tbody: !div.getElementsByTagName("tbody").length, + + // Make sure that link elements get serialized correctly by innerHTML + // This requires a wrapper element in IE + htmlSerialize: !!div.getElementsByTagName("link").length, + + // Get the style information from getAttribute + // (IE uses .cssText instead) + style: /top/.test( a.getAttribute("style") ), + + // Make sure that URLs aren't manipulated + // (IE normalizes it by default) + hrefNormalized: ( a.getAttribute("href") === "/a" ), + + // Make sure that element opacity exists + // (IE uses filter instead) + // Use a regex to work around a WebKit issue. See #5145 + opacity: /^0.5/.test( a.style.opacity ), + + // Verify style float existence + // (IE uses styleFloat instead of cssFloat) + cssFloat: !!a.style.cssFloat, + + // Make sure that if no value is specified for a checkbox + // that it defaults to "on". + // (WebKit defaults to "" instead) + checkOn: ( input.value === "on" ), + + // Make sure that a selected-by-default option has a working selected property. + // (WebKit defaults to false instead of true, IE too, if it's in an optgroup) + optSelected: opt.selected, + + // Test setAttribute on camelCase class. If it works, we need attrFixes when doing get/setAttribute (ie6/7) + getSetAttribute: div.className !== "t", + + // Tests for enctype support on a form(#6743) + enctype: !!document.createElement("form").enctype, + + // Makes sure cloning an html5 element does not cause problems + // Where outerHTML is undefined, this still works + html5Clone: document.createElement("nav").cloneNode( true ).outerHTML !== "<:nav>", + + // jQuery.support.boxModel DEPRECATED in 1.8 since we don't support Quirks Mode + boxModel: ( document.compatMode === "CSS1Compat" ), + + // Will be defined later + submitBubbles: true, + changeBubbles: true, + focusinBubbles: false, + deleteExpando: true, + noCloneEvent: true, + inlineBlockNeedsLayout: false, + shrinkWrapBlocks: false, + reliableMarginRight: true, + boxSizingReliable: true, + pixelPosition: false + }; + + // Make sure checked status is properly cloned + input.checked = true; + support.noCloneChecked = input.cloneNode( true ).checked; + + // Make sure that the options inside disabled selects aren't marked as disabled + // (WebKit marks them as disabled) + select.disabled = true; + support.optDisabled = !opt.disabled; + + // Test to see if it's possible to delete an expando from an element + // Fails in Internet Explorer + try { + delete div.test; + } catch( e ) { + support.deleteExpando = false; + } + + if ( !div.addEventListener && div.attachEvent && div.fireEvent ) { + div.attachEvent( "onclick", clickFn = function() { + // Cloning a node shouldn't copy over any + // bound event handlers (IE does this) + support.noCloneEvent = false; + }); + div.cloneNode( true ).fireEvent("onclick"); + div.detachEvent( "onclick", clickFn ); + } + + // Check if a radio maintains its value + // after being appended to the DOM + input = document.createElement("input"); + input.value = "t"; + input.setAttribute( "type", "radio" ); + support.radioValue = input.value === "t"; + + input.setAttribute( "checked", "checked" ); + + // #11217 - WebKit loses check when the name is after the checked attribute + input.setAttribute( "name", "t" ); + + div.appendChild( input ); + fragment = document.createDocumentFragment(); + fragment.appendChild( div.lastChild ); + + // WebKit doesn't clone checked state correctly in fragments + support.checkClone = fragment.cloneNode( true ).cloneNode( true ).lastChild.checked; + + // Check if a disconnected checkbox will retain its checked + // value of true after appended to the DOM (IE6/7) + support.appendChecked = input.checked; + + fragment.removeChild( input ); + fragment.appendChild( div ); + + // Technique from Juriy Zaytsev + // http://perfectionkills.com/detecting-event-support-without-browser-sniffing/ + // We only care about the case where non-standard event systems + // are used, namely in IE. Short-circuiting here helps us to + // avoid an eval call (in setAttribute) which can cause CSP + // to go haywire. See: https://developer.mozilla.org/en/Security/CSP + if ( div.attachEvent ) { + for ( i in { + submit: true, + change: true, + focusin: true + }) { + eventName = "on" + i; + isSupported = ( eventName in div ); + if ( !isSupported ) { + div.setAttribute( eventName, "return;" ); + isSupported = ( typeof div[ eventName ] === "function" ); + } + support[ i + "Bubbles" ] = isSupported; + } + } + + // Run tests that need a body at doc ready + jQuery(function() { + var container, div, tds, marginDiv, + divReset = "padding:0;margin:0;border:0;display:block;overflow:hidden;", + body = document.getElementsByTagName("body")[0]; + + if ( !body ) { + // Return for frameset docs that don't have a body + return; + } + + container = document.createElement("div"); + container.style.cssText = "visibility:hidden;border:0;width:0;height:0;position:static;top:0;margin-top:1px"; + body.insertBefore( container, body.firstChild ); + + // Construct the test element + div = document.createElement("div"); + container.appendChild( div ); + + // Check if table cells still have offsetWidth/Height when they are set + // to display:none and there are still other visible table cells in a + // table row; if so, offsetWidth/Height are not reliable for use when + // determining if an element has been hidden directly using + // display:none (it is still safe to use offsets if a parent element is + // hidden; don safety goggles and see bug #4512 for more information). + // (only IE 8 fails this test) + div.innerHTML = "
      t
      "; + tds = div.getElementsByTagName("td"); + tds[ 0 ].style.cssText = "padding:0;margin:0;border:0;display:none"; + isSupported = ( tds[ 0 ].offsetHeight === 0 ); + + tds[ 0 ].style.display = ""; + tds[ 1 ].style.display = "none"; + + // Check if empty table cells still have offsetWidth/Height + // (IE <= 8 fail this test) + support.reliableHiddenOffsets = isSupported && ( tds[ 0 ].offsetHeight === 0 ); + + // Check box-sizing and margin behavior + div.innerHTML = ""; + div.style.cssText = "box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;padding:1px;border:1px;display:block;width:4px;margin-top:1%;position:absolute;top:1%;"; + support.boxSizing = ( div.offsetWidth === 4 ); + support.doesNotIncludeMarginInBodyOffset = ( body.offsetTop !== 1 ); + + // NOTE: To any future maintainer, window.getComputedStyle was used here + // instead of getComputedStyle because it gave a better gzip size. + // The difference between window.getComputedStyle and getComputedStyle is + // 7 bytes + if ( window.getComputedStyle ) { + support.pixelPosition = ( window.getComputedStyle( div, null ) || {} ).top !== "1%"; + support.boxSizingReliable = ( window.getComputedStyle( div, null ) || { width: "4px" } ).width === "4px"; + + // Check if div with explicit width and no margin-right incorrectly + // gets computed margin-right based on width of container. For more + // info see bug #3333 + // Fails in WebKit before Feb 2011 nightlies + // WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right + marginDiv = document.createElement("div"); + marginDiv.style.cssText = div.style.cssText = divReset; + marginDiv.style.marginRight = marginDiv.style.width = "0"; + div.style.width = "1px"; + div.appendChild( marginDiv ); + support.reliableMarginRight = + !parseFloat( ( window.getComputedStyle( marginDiv, null ) || {} ).marginRight ); + } + + if ( typeof div.style.zoom !== "undefined" ) { + // Check if natively block-level elements act like inline-block + // elements when setting their display to 'inline' and giving + // them layout + // (IE < 8 does this) + div.innerHTML = ""; + div.style.cssText = divReset + "width:1px;padding:1px;display:inline;zoom:1"; + support.inlineBlockNeedsLayout = ( div.offsetWidth === 3 ); + + // Check if elements with layout shrink-wrap their children + // (IE 6 does this) + div.style.display = "block"; + div.style.overflow = "visible"; + div.innerHTML = "
      "; + div.firstChild.style.width = "5px"; + support.shrinkWrapBlocks = ( div.offsetWidth !== 3 ); + + container.style.zoom = 1; + } + + // Null elements to avoid leaks in IE + body.removeChild( container ); + container = div = tds = marginDiv = null; + }); + + // Null elements to avoid leaks in IE + fragment.removeChild( div ); + all = a = select = opt = input = fragment = div = null; + + return support; +})(); +var rbrace = /^(?:\{.*\}|\[.*\])$/, + rmultiDash = /([A-Z])/g; + +jQuery.extend({ + cache: {}, + + deletedIds: [], + + // Please use with caution + uuid: 0, + + // Unique for each copy of jQuery on the page + // Non-digits removed to match rinlinejQuery + expando: "jQuery" + ( jQuery.fn.jquery + Math.random() ).replace( /\D/g, "" ), + + // The following elements throw uncatchable exceptions if you + // attempt to add expando properties to them. + noData: { + "embed": true, + // Ban all objects except for Flash (which handle expandos) + "object": "clsid:D27CDB6E-AE6D-11cf-96B8-444553540000", + "applet": true + }, + + hasData: function( elem ) { + elem = elem.nodeType ? jQuery.cache[ elem[jQuery.expando] ] : elem[ jQuery.expando ]; + return !!elem && !isEmptyDataObject( elem ); + }, + + data: function( elem, name, data, pvt /* Internal Use Only */ ) { + if ( !jQuery.acceptData( elem ) ) { + return; + } + + var thisCache, ret, + internalKey = jQuery.expando, + getByName = typeof name === "string", + + // We have to handle DOM nodes and JS objects differently because IE6-7 + // can't GC object references properly across the DOM-JS boundary + isNode = elem.nodeType, + + // Only DOM nodes need the global jQuery cache; JS object data is + // attached directly to the object so GC can occur automatically + cache = isNode ? jQuery.cache : elem, + + // Only defining an ID for JS objects if its cache already exists allows + // the code to shortcut on the same path as a DOM node with no cache + id = isNode ? elem[ internalKey ] : elem[ internalKey ] && internalKey; + + // Avoid doing any more work than we need to when trying to get data on an + // object that has no data at all + if ( (!id || !cache[id] || (!pvt && !cache[id].data)) && getByName && data === undefined ) { + return; + } + + if ( !id ) { + // Only DOM nodes need a new unique ID for each element since their data + // ends up in the global cache + if ( isNode ) { + elem[ internalKey ] = id = jQuery.deletedIds.pop() || ++jQuery.uuid; + } else { + id = internalKey; + } + } + + if ( !cache[ id ] ) { + cache[ id ] = {}; + + // Avoids exposing jQuery metadata on plain JS objects when the object + // is serialized using JSON.stringify + if ( !isNode ) { + cache[ id ].toJSON = jQuery.noop; + } + } + + // An object can be passed to jQuery.data instead of a key/value pair; this gets + // shallow copied over onto the existing cache + if ( typeof name === "object" || typeof name === "function" ) { + if ( pvt ) { + cache[ id ] = jQuery.extend( cache[ id ], name ); + } else { + cache[ id ].data = jQuery.extend( cache[ id ].data, name ); + } + } + + thisCache = cache[ id ]; + + // jQuery data() is stored in a separate object inside the object's internal data + // cache in order to avoid key collisions between internal data and user-defined + // data. + if ( !pvt ) { + if ( !thisCache.data ) { + thisCache.data = {}; + } + + thisCache = thisCache.data; + } + + if ( data !== undefined ) { + thisCache[ jQuery.camelCase( name ) ] = data; + } + + // Check for both converted-to-camel and non-converted data property names + // If a data property was specified + if ( getByName ) { + + // First Try to find as-is property data + ret = thisCache[ name ]; + + // Test for null|undefined property data + if ( ret == null ) { + + // Try to find the camelCased property + ret = thisCache[ jQuery.camelCase( name ) ]; + } + } else { + ret = thisCache; + } + + return ret; + }, + + removeData: function( elem, name, pvt /* Internal Use Only */ ) { + if ( !jQuery.acceptData( elem ) ) { + return; + } + + var thisCache, i, l, + + isNode = elem.nodeType, + + // See jQuery.data for more information + cache = isNode ? jQuery.cache : elem, + id = isNode ? elem[ jQuery.expando ] : jQuery.expando; + + // If there is already no cache entry for this object, there is no + // purpose in continuing + if ( !cache[ id ] ) { + return; + } + + if ( name ) { + + thisCache = pvt ? cache[ id ] : cache[ id ].data; + + if ( thisCache ) { + + // Support array or space separated string names for data keys + if ( !jQuery.isArray( name ) ) { + + // try the string as a key before any manipulation + if ( name in thisCache ) { + name = [ name ]; + } else { + + // split the camel cased version by spaces unless a key with the spaces exists + name = jQuery.camelCase( name ); + if ( name in thisCache ) { + name = [ name ]; + } else { + name = name.split(" "); + } + } + } + + for ( i = 0, l = name.length; i < l; i++ ) { + delete thisCache[ name[i] ]; + } + + // If there is no data left in the cache, we want to continue + // and let the cache object itself get destroyed + if ( !( pvt ? isEmptyDataObject : jQuery.isEmptyObject )( thisCache ) ) { + return; + } + } + } + + // See jQuery.data for more information + if ( !pvt ) { + delete cache[ id ].data; + + // Don't destroy the parent cache unless the internal data object + // had been the only thing left in it + if ( !isEmptyDataObject( cache[ id ] ) ) { + return; + } + } + + // Destroy the cache + if ( isNode ) { + jQuery.cleanData( [ elem ], true ); + + // Use delete when supported for expandos or `cache` is not a window per isWindow (#10080) + } else if ( jQuery.support.deleteExpando || cache != cache.window ) { + delete cache[ id ]; + + // When all else fails, null + } else { + cache[ id ] = null; + } + }, + + // For internal use only. + _data: function( elem, name, data ) { + return jQuery.data( elem, name, data, true ); + }, + + // A method for determining if a DOM node can handle the data expando + acceptData: function( elem ) { + var noData = elem.nodeName && jQuery.noData[ elem.nodeName.toLowerCase() ]; + + // nodes accept data unless otherwise specified; rejection can be conditional + return !noData || noData !== true && elem.getAttribute("classid") === noData; + } +}); + +jQuery.fn.extend({ + data: function( key, value ) { + var parts, part, attr, name, l, + elem = this[0], + i = 0, + data = null; + + // Gets all values + if ( key === undefined ) { + if ( this.length ) { + data = jQuery.data( elem ); + + if ( elem.nodeType === 1 && !jQuery._data( elem, "parsedAttrs" ) ) { + attr = elem.attributes; + for ( l = attr.length; i < l; i++ ) { + name = attr[i].name; + + if ( name.indexOf( "data-" ) === 0 ) { + name = jQuery.camelCase( name.substring(5) ); + + dataAttr( elem, name, data[ name ] ); + } + } + jQuery._data( elem, "parsedAttrs", true ); + } + } + + return data; + } + + // Sets multiple values + if ( typeof key === "object" ) { + return this.each(function() { + jQuery.data( this, key ); + }); + } + + parts = key.split( ".", 2 ); + parts[1] = parts[1] ? "." + parts[1] : ""; + part = parts[1] + "!"; + + return jQuery.access( this, function( value ) { + + if ( value === undefined ) { + data = this.triggerHandler( "getData" + part, [ parts[0] ] ); + + // Try to fetch any internally stored data first + if ( data === undefined && elem ) { + data = jQuery.data( elem, key ); + data = dataAttr( elem, key, data ); + } + + return data === undefined && parts[1] ? + this.data( parts[0] ) : + data; + } + + parts[1] = value; + this.each(function() { + var self = jQuery( this ); + + self.triggerHandler( "setData" + part, parts ); + jQuery.data( this, key, value ); + self.triggerHandler( "changeData" + part, parts ); + }); + }, null, value, arguments.length > 1, null, false ); + }, + + removeData: function( key ) { + return this.each(function() { + jQuery.removeData( this, key ); + }); + } +}); + +function dataAttr( elem, key, data ) { + // If nothing was found internally, try to fetch any + // data from the HTML5 data-* attribute + if ( data === undefined && elem.nodeType === 1 ) { + + var name = "data-" + key.replace( rmultiDash, "-$1" ).toLowerCase(); + + data = elem.getAttribute( name ); + + if ( typeof data === "string" ) { + try { + data = data === "true" ? true : + data === "false" ? false : + data === "null" ? null : + // Only convert to a number if it doesn't change the string + +data + "" === data ? +data : + rbrace.test( data ) ? jQuery.parseJSON( data ) : + data; + } catch( e ) {} + + // Make sure we set the data so it isn't changed later + jQuery.data( elem, key, data ); + + } else { + data = undefined; + } + } + + return data; +} + +// checks a cache object for emptiness +function isEmptyDataObject( obj ) { + var name; + for ( name in obj ) { + + // if the public data object is empty, the private is still empty + if ( name === "data" && jQuery.isEmptyObject( obj[name] ) ) { + continue; + } + if ( name !== "toJSON" ) { + return false; + } + } + + return true; +} +jQuery.extend({ + queue: function( elem, type, data ) { + var queue; + + if ( elem ) { + type = ( type || "fx" ) + "queue"; + queue = jQuery._data( elem, type ); + + // Speed up dequeue by getting out quickly if this is just a lookup + if ( data ) { + if ( !queue || jQuery.isArray(data) ) { + queue = jQuery._data( elem, type, jQuery.makeArray(data) ); + } else { + queue.push( data ); + } + } + return queue || []; + } + }, + + dequeue: function( elem, type ) { + type = type || "fx"; + + var queue = jQuery.queue( elem, type ), + fn = queue.shift(), + hooks = jQuery._queueHooks( elem, type ), + next = function() { + jQuery.dequeue( elem, type ); + }; + + // If the fx queue is dequeued, always remove the progress sentinel + if ( fn === "inprogress" ) { + fn = queue.shift(); + } + + if ( fn ) { + + // Add a progress sentinel to prevent the fx queue from being + // automatically dequeued + if ( type === "fx" ) { + queue.unshift( "inprogress" ); + } + + // clear up the last queue stop function + delete hooks.stop; + fn.call( elem, next, hooks ); + } + if ( !queue.length && hooks ) { + hooks.empty.fire(); + } + }, + + // not intended for public consumption - generates a queueHooks object, or returns the current one + _queueHooks: function( elem, type ) { + var key = type + "queueHooks"; + return jQuery._data( elem, key ) || jQuery._data( elem, key, { + empty: jQuery.Callbacks("once memory").add(function() { + jQuery.removeData( elem, type + "queue", true ); + jQuery.removeData( elem, key, true ); + }) + }); + } +}); + +jQuery.fn.extend({ + queue: function( type, data ) { + var setter = 2; + + if ( typeof type !== "string" ) { + data = type; + type = "fx"; + setter--; + } + + if ( arguments.length < setter ) { + return jQuery.queue( this[0], type ); + } + + return data === undefined ? + this : + this.each(function() { + var queue = jQuery.queue( this, type, data ); + + // ensure a hooks for this queue + jQuery._queueHooks( this, type ); + + if ( type === "fx" && queue[0] !== "inprogress" ) { + jQuery.dequeue( this, type ); + } + }); + }, + dequeue: function( type ) { + return this.each(function() { + jQuery.dequeue( this, type ); + }); + }, + // Based off of the plugin by Clint Helfers, with permission. + // http://blindsignals.com/index.php/2009/07/jquery-delay/ + delay: function( time, type ) { + time = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time; + type = type || "fx"; + + return this.queue( type, function( next, hooks ) { + var timeout = setTimeout( next, time ); + hooks.stop = function() { + clearTimeout( timeout ); + }; + }); + }, + clearQueue: function( type ) { + return this.queue( type || "fx", [] ); + }, + // Get a promise resolved when queues of a certain type + // are emptied (fx is the type by default) + promise: function( type, obj ) { + var tmp, + count = 1, + defer = jQuery.Deferred(), + elements = this, + i = this.length, + resolve = function() { + if ( !( --count ) ) { + defer.resolveWith( elements, [ elements ] ); + } + }; + + if ( typeof type !== "string" ) { + obj = type; + type = undefined; + } + type = type || "fx"; + + while( i-- ) { + if ( (tmp = jQuery._data( elements[ i ], type + "queueHooks" )) && tmp.empty ) { + count++; + tmp.empty.add( resolve ); + } + } + resolve(); + return defer.promise( obj ); + } +}); +var nodeHook, boolHook, fixSpecified, + rclass = /[\t\r\n]/g, + rreturn = /\r/g, + rtype = /^(?:button|input)$/i, + rfocusable = /^(?:button|input|object|select|textarea)$/i, + rclickable = /^a(?:rea|)$/i, + rboolean = /^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i, + getSetAttribute = jQuery.support.getSetAttribute; + +jQuery.fn.extend({ + attr: function( name, value ) { + return jQuery.access( this, jQuery.attr, name, value, arguments.length > 1 ); + }, + + removeAttr: function( name ) { + return this.each(function() { + jQuery.removeAttr( this, name ); + }); + }, + + prop: function( name, value ) { + return jQuery.access( this, jQuery.prop, name, value, arguments.length > 1 ); + }, + + removeProp: function( name ) { + name = jQuery.propFix[ name ] || name; + return this.each(function() { + // try/catch handles cases where IE balks (such as removing a property on window) + try { + this[ name ] = undefined; + delete this[ name ]; + } catch( e ) {} + }); + }, + + addClass: function( value ) { + var classNames, i, l, elem, + setClass, c, cl; + + if ( jQuery.isFunction( value ) ) { + return this.each(function( j ) { + jQuery( this ).addClass( value.call(this, j, this.className) ); + }); + } + + if ( value && typeof value === "string" ) { + classNames = value.split( core_rspace ); + + for ( i = 0, l = this.length; i < l; i++ ) { + elem = this[ i ]; + + if ( elem.nodeType === 1 ) { + if ( !elem.className && classNames.length === 1 ) { + elem.className = value; + + } else { + setClass = " " + elem.className + " "; + + for ( c = 0, cl = classNames.length; c < cl; c++ ) { + if ( !~setClass.indexOf( " " + classNames[ c ] + " " ) ) { + setClass += classNames[ c ] + " "; + } + } + elem.className = jQuery.trim( setClass ); + } + } + } + } + + return this; + }, + + removeClass: function( value ) { + var removes, className, elem, c, cl, i, l; + + if ( jQuery.isFunction( value ) ) { + return this.each(function( j ) { + jQuery( this ).removeClass( value.call(this, j, this.className) ); + }); + } + if ( (value && typeof value === "string") || value === undefined ) { + removes = ( value || "" ).split( core_rspace ); + + for ( i = 0, l = this.length; i < l; i++ ) { + elem = this[ i ]; + if ( elem.nodeType === 1 && elem.className ) { + + className = (" " + elem.className + " ").replace( rclass, " " ); + + // loop over each item in the removal list + for ( c = 0, cl = removes.length; c < cl; c++ ) { + // Remove until there is nothing to remove, + while ( className.indexOf(" " + removes[ c ] + " ") > -1 ) { + className = className.replace( " " + removes[ c ] + " " , " " ); + } + } + elem.className = value ? jQuery.trim( className ) : ""; + } + } + } + + return this; + }, + + toggleClass: function( value, stateVal ) { + var type = typeof value, + isBool = typeof stateVal === "boolean"; + + if ( jQuery.isFunction( value ) ) { + return this.each(function( i ) { + jQuery( this ).toggleClass( value.call(this, i, this.className, stateVal), stateVal ); + }); + } + + return this.each(function() { + if ( type === "string" ) { + // toggle individual class names + var className, + i = 0, + self = jQuery( this ), + state = stateVal, + classNames = value.split( core_rspace ); + + while ( (className = classNames[ i++ ]) ) { + // check each className given, space separated list + state = isBool ? state : !self.hasClass( className ); + self[ state ? "addClass" : "removeClass" ]( className ); + } + + } else if ( type === "undefined" || type === "boolean" ) { + if ( this.className ) { + // store className if set + jQuery._data( this, "__className__", this.className ); + } + + // toggle whole className + this.className = this.className || value === false ? "" : jQuery._data( this, "__className__" ) || ""; + } + }); + }, + + hasClass: function( selector ) { + var className = " " + selector + " ", + i = 0, + l = this.length; + for ( ; i < l; i++ ) { + if ( this[i].nodeType === 1 && (" " + this[i].className + " ").replace(rclass, " ").indexOf( className ) > -1 ) { + return true; + } + } + + return false; + }, + + val: function( value ) { + var hooks, ret, isFunction, + elem = this[0]; + + if ( !arguments.length ) { + if ( elem ) { + hooks = jQuery.valHooks[ elem.type ] || jQuery.valHooks[ elem.nodeName.toLowerCase() ]; + + if ( hooks && "get" in hooks && (ret = hooks.get( elem, "value" )) !== undefined ) { + return ret; + } + + ret = elem.value; + + return typeof ret === "string" ? + // handle most common string cases + ret.replace(rreturn, "") : + // handle cases where value is null/undef or number + ret == null ? "" : ret; + } + + return; + } + + isFunction = jQuery.isFunction( value ); + + return this.each(function( i ) { + var val, + self = jQuery(this); + + if ( this.nodeType !== 1 ) { + return; + } + + if ( isFunction ) { + val = value.call( this, i, self.val() ); + } else { + val = value; + } + + // Treat null/undefined as ""; convert numbers to string + if ( val == null ) { + val = ""; + } else if ( typeof val === "number" ) { + val += ""; + } else if ( jQuery.isArray( val ) ) { + val = jQuery.map(val, function ( value ) { + return value == null ? "" : value + ""; + }); + } + + hooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ]; + + // If set returns undefined, fall back to normal setting + if ( !hooks || !("set" in hooks) || hooks.set( this, val, "value" ) === undefined ) { + this.value = val; + } + }); + } +}); + +jQuery.extend({ + valHooks: { + option: { + get: function( elem ) { + // attributes.value is undefined in Blackberry 4.7 but + // uses .value. See #6932 + var val = elem.attributes.value; + return !val || val.specified ? elem.value : elem.text; + } + }, + select: { + get: function( elem ) { + var value, i, max, option, + index = elem.selectedIndex, + values = [], + options = elem.options, + one = elem.type === "select-one"; + + // Nothing was selected + if ( index < 0 ) { + return null; + } + + // Loop through all the selected options + i = one ? index : 0; + max = one ? index + 1 : options.length; + for ( ; i < max; i++ ) { + option = options[ i ]; + + // Don't return options that are disabled or in a disabled optgroup + if ( option.selected && (jQuery.support.optDisabled ? !option.disabled : option.getAttribute("disabled") === null) && + (!option.parentNode.disabled || !jQuery.nodeName( option.parentNode, "optgroup" )) ) { + + // Get the specific value for the option + value = jQuery( option ).val(); + + // We don't need an array for one selects + if ( one ) { + return value; + } + + // Multi-Selects return an array + values.push( value ); + } + } + + // Fixes Bug #2551 -- select.val() broken in IE after form.reset() + if ( one && !values.length && options.length ) { + return jQuery( options[ index ] ).val(); + } + + return values; + }, + + set: function( elem, value ) { + var values = jQuery.makeArray( value ); + + jQuery(elem).find("option").each(function() { + this.selected = jQuery.inArray( jQuery(this).val(), values ) >= 0; + }); + + if ( !values.length ) { + elem.selectedIndex = -1; + } + return values; + } + } + }, + + // Unused in 1.8, left in so attrFn-stabbers won't die; remove in 1.9 + attrFn: {}, + + attr: function( elem, name, value, pass ) { + var ret, hooks, notxml, + nType = elem.nodeType; + + // don't get/set attributes on text, comment and attribute nodes + if ( !elem || nType === 3 || nType === 8 || nType === 2 ) { + return; + } + + if ( pass && jQuery.isFunction( jQuery.fn[ name ] ) ) { + return jQuery( elem )[ name ]( value ); + } + + // Fallback to prop when attributes are not supported + if ( typeof elem.getAttribute === "undefined" ) { + return jQuery.prop( elem, name, value ); + } + + notxml = nType !== 1 || !jQuery.isXMLDoc( elem ); + + // All attributes are lowercase + // Grab necessary hook if one is defined + if ( notxml ) { + name = name.toLowerCase(); + hooks = jQuery.attrHooks[ name ] || ( rboolean.test( name ) ? boolHook : nodeHook ); + } + + if ( value !== undefined ) { + + if ( value === null ) { + jQuery.removeAttr( elem, name ); + return; + + } else if ( hooks && "set" in hooks && notxml && (ret = hooks.set( elem, value, name )) !== undefined ) { + return ret; + + } else { + elem.setAttribute( name, "" + value ); + return value; + } + + } else if ( hooks && "get" in hooks && notxml && (ret = hooks.get( elem, name )) !== null ) { + return ret; + + } else { + + ret = elem.getAttribute( name ); + + // Non-existent attributes return null, we normalize to undefined + return ret === null ? + undefined : + ret; + } + }, + + removeAttr: function( elem, value ) { + var propName, attrNames, name, isBool, + i = 0; + + if ( value && elem.nodeType === 1 ) { + + attrNames = value.split( core_rspace ); + + for ( ; i < attrNames.length; i++ ) { + name = attrNames[ i ]; + + if ( name ) { + propName = jQuery.propFix[ name ] || name; + isBool = rboolean.test( name ); + + // See #9699 for explanation of this approach (setting first, then removal) + // Do not do this for boolean attributes (see #10870) + if ( !isBool ) { + jQuery.attr( elem, name, "" ); + } + elem.removeAttribute( getSetAttribute ? name : propName ); + + // Set corresponding property to false for boolean attributes + if ( isBool && propName in elem ) { + elem[ propName ] = false; + } + } + } + } + }, + + attrHooks: { + type: { + set: function( elem, value ) { + // We can't allow the type property to be changed (since it causes problems in IE) + if ( rtype.test( elem.nodeName ) && elem.parentNode ) { + jQuery.error( "type property can't be changed" ); + } else if ( !jQuery.support.radioValue && value === "radio" && jQuery.nodeName(elem, "input") ) { + // Setting the type on a radio button after the value resets the value in IE6-9 + // Reset value to it's default in case type is set after value + // This is for element creation + var val = elem.value; + elem.setAttribute( "type", value ); + if ( val ) { + elem.value = val; + } + return value; + } + } + }, + // Use the value property for back compat + // Use the nodeHook for button elements in IE6/7 (#1954) + value: { + get: function( elem, name ) { + if ( nodeHook && jQuery.nodeName( elem, "button" ) ) { + return nodeHook.get( elem, name ); + } + return name in elem ? + elem.value : + null; + }, + set: function( elem, value, name ) { + if ( nodeHook && jQuery.nodeName( elem, "button" ) ) { + return nodeHook.set( elem, value, name ); + } + // Does not return so that setAttribute is also used + elem.value = value; + } + } + }, + + propFix: { + tabindex: "tabIndex", + readonly: "readOnly", + "for": "htmlFor", + "class": "className", + maxlength: "maxLength", + cellspacing: "cellSpacing", + cellpadding: "cellPadding", + rowspan: "rowSpan", + colspan: "colSpan", + usemap: "useMap", + frameborder: "frameBorder", + contenteditable: "contentEditable" + }, + + prop: function( elem, name, value ) { + var ret, hooks, notxml, + nType = elem.nodeType; + + // don't get/set properties on text, comment and attribute nodes + if ( !elem || nType === 3 || nType === 8 || nType === 2 ) { + return; + } + + notxml = nType !== 1 || !jQuery.isXMLDoc( elem ); + + if ( notxml ) { + // Fix name and attach hooks + name = jQuery.propFix[ name ] || name; + hooks = jQuery.propHooks[ name ]; + } + + if ( value !== undefined ) { + if ( hooks && "set" in hooks && (ret = hooks.set( elem, value, name )) !== undefined ) { + return ret; + + } else { + return ( elem[ name ] = value ); + } + + } else { + if ( hooks && "get" in hooks && (ret = hooks.get( elem, name )) !== null ) { + return ret; + + } else { + return elem[ name ]; + } + } + }, + + propHooks: { + tabIndex: { + get: function( elem ) { + // elem.tabIndex doesn't always return the correct value when it hasn't been explicitly set + // http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/ + var attributeNode = elem.getAttributeNode("tabindex"); + + return attributeNode && attributeNode.specified ? + parseInt( attributeNode.value, 10 ) : + rfocusable.test( elem.nodeName ) || rclickable.test( elem.nodeName ) && elem.href ? + 0 : + undefined; + } + } + } +}); + +// Hook for boolean attributes +boolHook = { + get: function( elem, name ) { + // Align boolean attributes with corresponding properties + // Fall back to attribute presence where some booleans are not supported + var attrNode, + property = jQuery.prop( elem, name ); + return property === true || typeof property !== "boolean" && ( attrNode = elem.getAttributeNode(name) ) && attrNode.nodeValue !== false ? + name.toLowerCase() : + undefined; + }, + set: function( elem, value, name ) { + var propName; + if ( value === false ) { + // Remove boolean attributes when set to false + jQuery.removeAttr( elem, name ); + } else { + // value is true since we know at this point it's type boolean and not false + // Set boolean attributes to the same name and set the DOM property + propName = jQuery.propFix[ name ] || name; + if ( propName in elem ) { + // Only set the IDL specifically if it already exists on the element + elem[ propName ] = true; + } + + elem.setAttribute( name, name.toLowerCase() ); + } + return name; + } +}; + +// IE6/7 do not support getting/setting some attributes with get/setAttribute +if ( !getSetAttribute ) { + + fixSpecified = { + name: true, + id: true, + coords: true + }; + + // Use this for any attribute in IE6/7 + // This fixes almost every IE6/7 issue + nodeHook = jQuery.valHooks.button = { + get: function( elem, name ) { + var ret; + ret = elem.getAttributeNode( name ); + return ret && ( fixSpecified[ name ] ? ret.value !== "" : ret.specified ) ? + ret.value : + undefined; + }, + set: function( elem, value, name ) { + // Set the existing or create a new attribute node + var ret = elem.getAttributeNode( name ); + if ( !ret ) { + ret = document.createAttribute( name ); + elem.setAttributeNode( ret ); + } + return ( ret.value = value + "" ); + } + }; + + // Set width and height to auto instead of 0 on empty string( Bug #8150 ) + // This is for removals + jQuery.each([ "width", "height" ], function( i, name ) { + jQuery.attrHooks[ name ] = jQuery.extend( jQuery.attrHooks[ name ], { + set: function( elem, value ) { + if ( value === "" ) { + elem.setAttribute( name, "auto" ); + return value; + } + } + }); + }); + + // Set contenteditable to false on removals(#10429) + // Setting to empty string throws an error as an invalid value + jQuery.attrHooks.contenteditable = { + get: nodeHook.get, + set: function( elem, value, name ) { + if ( value === "" ) { + value = "false"; + } + nodeHook.set( elem, value, name ); + } + }; +} + + +// Some attributes require a special call on IE +if ( !jQuery.support.hrefNormalized ) { + jQuery.each([ "href", "src", "width", "height" ], function( i, name ) { + jQuery.attrHooks[ name ] = jQuery.extend( jQuery.attrHooks[ name ], { + get: function( elem ) { + var ret = elem.getAttribute( name, 2 ); + return ret === null ? undefined : ret; + } + }); + }); +} + +if ( !jQuery.support.style ) { + jQuery.attrHooks.style = { + get: function( elem ) { + // Return undefined in the case of empty string + // Normalize to lowercase since IE uppercases css property names + return elem.style.cssText.toLowerCase() || undefined; + }, + set: function( elem, value ) { + return ( elem.style.cssText = "" + value ); + } + }; +} + +// Safari mis-reports the default selected property of an option +// Accessing the parent's selectedIndex property fixes it +if ( !jQuery.support.optSelected ) { + jQuery.propHooks.selected = jQuery.extend( jQuery.propHooks.selected, { + get: function( elem ) { + var parent = elem.parentNode; + + if ( parent ) { + parent.selectedIndex; + + // Make sure that it also works with optgroups, see #5701 + if ( parent.parentNode ) { + parent.parentNode.selectedIndex; + } + } + return null; + } + }); +} + +// IE6/7 call enctype encoding +if ( !jQuery.support.enctype ) { + jQuery.propFix.enctype = "encoding"; +} + +// Radios and checkboxes getter/setter +if ( !jQuery.support.checkOn ) { + jQuery.each([ "radio", "checkbox" ], function() { + jQuery.valHooks[ this ] = { + get: function( elem ) { + // Handle the case where in Webkit "" is returned instead of "on" if a value isn't specified + return elem.getAttribute("value") === null ? "on" : elem.value; + } + }; + }); +} +jQuery.each([ "radio", "checkbox" ], function() { + jQuery.valHooks[ this ] = jQuery.extend( jQuery.valHooks[ this ], { + set: function( elem, value ) { + if ( jQuery.isArray( value ) ) { + return ( elem.checked = jQuery.inArray( jQuery(elem).val(), value ) >= 0 ); + } + } + }); +}); +var rformElems = /^(?:textarea|input|select)$/i, + rtypenamespace = /^([^\.]*|)(?:\.(.+)|)$/, + rhoverHack = /(?:^|\s)hover(\.\S+|)\b/, + rkeyEvent = /^key/, + rmouseEvent = /^(?:mouse|contextmenu)|click/, + rfocusMorph = /^(?:focusinfocus|focusoutblur)$/, + hoverHack = function( events ) { + return jQuery.event.special.hover ? events : events.replace( rhoverHack, "mouseenter$1 mouseleave$1" ); + }; + +/* + * Helper functions for managing events -- not part of the public interface. + * Props to Dean Edwards' addEvent library for many of the ideas. + */ +jQuery.event = { + + add: function( elem, types, handler, data, selector ) { + + var elemData, eventHandle, events, + t, tns, type, namespaces, handleObj, + handleObjIn, handlers, special; + + // Don't attach events to noData or text/comment nodes (allow plain objects tho) + if ( elem.nodeType === 3 || elem.nodeType === 8 || !types || !handler || !(elemData = jQuery._data( elem )) ) { + return; + } + + // Caller can pass in an object of custom data in lieu of the handler + if ( handler.handler ) { + handleObjIn = handler; + handler = handleObjIn.handler; + selector = handleObjIn.selector; + } + + // Make sure that the handler has a unique ID, used to find/remove it later + if ( !handler.guid ) { + handler.guid = jQuery.guid++; + } + + // Init the element's event structure and main handler, if this is the first + events = elemData.events; + if ( !events ) { + elemData.events = events = {}; + } + eventHandle = elemData.handle; + if ( !eventHandle ) { + elemData.handle = eventHandle = function( e ) { + // Discard the second event of a jQuery.event.trigger() and + // when an event is called after a page has unloaded + return typeof jQuery !== "undefined" && (!e || jQuery.event.triggered !== e.type) ? + jQuery.event.dispatch.apply( eventHandle.elem, arguments ) : + undefined; + }; + // Add elem as a property of the handle fn to prevent a memory leak with IE non-native events + eventHandle.elem = elem; + } + + // Handle multiple events separated by a space + // jQuery(...).bind("mouseover mouseout", fn); + types = jQuery.trim( hoverHack(types) ).split( " " ); + for ( t = 0; t < types.length; t++ ) { + + tns = rtypenamespace.exec( types[t] ) || []; + type = tns[1]; + namespaces = ( tns[2] || "" ).split( "." ).sort(); + + // If event changes its type, use the special event handlers for the changed type + special = jQuery.event.special[ type ] || {}; + + // If selector defined, determine special event api type, otherwise given type + type = ( selector ? special.delegateType : special.bindType ) || type; + + // Update special based on newly reset type + special = jQuery.event.special[ type ] || {}; + + // handleObj is passed to all event handlers + handleObj = jQuery.extend({ + type: type, + origType: tns[1], + data: data, + handler: handler, + guid: handler.guid, + selector: selector, + namespace: namespaces.join(".") + }, handleObjIn ); + + // Init the event handler queue if we're the first + handlers = events[ type ]; + if ( !handlers ) { + handlers = events[ type ] = []; + handlers.delegateCount = 0; + + // Only use addEventListener/attachEvent if the special events handler returns false + if ( !special.setup || special.setup.call( elem, data, namespaces, eventHandle ) === false ) { + // Bind the global event handler to the element + if ( elem.addEventListener ) { + elem.addEventListener( type, eventHandle, false ); + + } else if ( elem.attachEvent ) { + elem.attachEvent( "on" + type, eventHandle ); + } + } + } + + if ( special.add ) { + special.add.call( elem, handleObj ); + + if ( !handleObj.handler.guid ) { + handleObj.handler.guid = handler.guid; + } + } + + // Add to the element's handler list, delegates in front + if ( selector ) { + handlers.splice( handlers.delegateCount++, 0, handleObj ); + } else { + handlers.push( handleObj ); + } + + // Keep track of which events have ever been used, for event optimization + jQuery.event.global[ type ] = true; + } + + // Nullify elem to prevent memory leaks in IE + elem = null; + }, + + global: {}, + + // Detach an event or set of events from an element + remove: function( elem, types, handler, selector, mappedTypes ) { + + var t, tns, type, origType, namespaces, origCount, + j, events, special, eventType, handleObj, + elemData = jQuery.hasData( elem ) && jQuery._data( elem ); + + if ( !elemData || !(events = elemData.events) ) { + return; + } + + // Once for each type.namespace in types; type may be omitted + types = jQuery.trim( hoverHack( types || "" ) ).split(" "); + for ( t = 0; t < types.length; t++ ) { + tns = rtypenamespace.exec( types[t] ) || []; + type = origType = tns[1]; + namespaces = tns[2]; + + // Unbind all events (on this namespace, if provided) for the element + if ( !type ) { + for ( type in events ) { + jQuery.event.remove( elem, type + types[ t ], handler, selector, true ); + } + continue; + } + + special = jQuery.event.special[ type ] || {}; + type = ( selector? special.delegateType : special.bindType ) || type; + eventType = events[ type ] || []; + origCount = eventType.length; + namespaces = namespaces ? new RegExp("(^|\\.)" + namespaces.split(".").sort().join("\\.(?:.*\\.|)") + "(\\.|$)") : null; + + // Remove matching events + for ( j = 0; j < eventType.length; j++ ) { + handleObj = eventType[ j ]; + + if ( ( mappedTypes || origType === handleObj.origType ) && + ( !handler || handler.guid === handleObj.guid ) && + ( !namespaces || namespaces.test( handleObj.namespace ) ) && + ( !selector || selector === handleObj.selector || selector === "**" && handleObj.selector ) ) { + eventType.splice( j--, 1 ); + + if ( handleObj.selector ) { + eventType.delegateCount--; + } + if ( special.remove ) { + special.remove.call( elem, handleObj ); + } + } + } + + // Remove generic event handler if we removed something and no more handlers exist + // (avoids potential for endless recursion during removal of special event handlers) + if ( eventType.length === 0 && origCount !== eventType.length ) { + if ( !special.teardown || special.teardown.call( elem, namespaces, elemData.handle ) === false ) { + jQuery.removeEvent( elem, type, elemData.handle ); + } + + delete events[ type ]; + } + } + + // Remove the expando if it's no longer used + if ( jQuery.isEmptyObject( events ) ) { + delete elemData.handle; + + // removeData also checks for emptiness and clears the expando if empty + // so use it instead of delete + jQuery.removeData( elem, "events", true ); + } + }, + + // Events that are safe to short-circuit if no handlers are attached. + // Native DOM events should not be added, they may have inline handlers. + customEvent: { + "getData": true, + "setData": true, + "changeData": true + }, + + trigger: function( event, data, elem, onlyHandlers ) { + // Don't do events on text and comment nodes + if ( elem && (elem.nodeType === 3 || elem.nodeType === 8) ) { + return; + } + + // Event object or event type + var cache, exclusive, i, cur, old, ontype, special, handle, eventPath, bubbleType, + type = event.type || event, + namespaces = []; + + // focus/blur morphs to focusin/out; ensure we're not firing them right now + if ( rfocusMorph.test( type + jQuery.event.triggered ) ) { + return; + } + + if ( type.indexOf( "!" ) >= 0 ) { + // Exclusive events trigger only for the exact event (no namespaces) + type = type.slice(0, -1); + exclusive = true; + } + + if ( type.indexOf( "." ) >= 0 ) { + // Namespaced trigger; create a regexp to match event type in handle() + namespaces = type.split("."); + type = namespaces.shift(); + namespaces.sort(); + } + + if ( (!elem || jQuery.event.customEvent[ type ]) && !jQuery.event.global[ type ] ) { + // No jQuery handlers for this event type, and it can't have inline handlers + return; + } + + // Caller can pass in an Event, Object, or just an event type string + event = typeof event === "object" ? + // jQuery.Event object + event[ jQuery.expando ] ? event : + // Object literal + new jQuery.Event( type, event ) : + // Just the event type (string) + new jQuery.Event( type ); + + event.type = type; + event.isTrigger = true; + event.exclusive = exclusive; + event.namespace = namespaces.join( "." ); + event.namespace_re = event.namespace? new RegExp("(^|\\.)" + namespaces.join("\\.(?:.*\\.|)") + "(\\.|$)") : null; + ontype = type.indexOf( ":" ) < 0 ? "on" + type : ""; + + // Handle a global trigger + if ( !elem ) { + + // TODO: Stop taunting the data cache; remove global events and always attach to document + cache = jQuery.cache; + for ( i in cache ) { + if ( cache[ i ].events && cache[ i ].events[ type ] ) { + jQuery.event.trigger( event, data, cache[ i ].handle.elem, true ); + } + } + return; + } + + // Clean up the event in case it is being reused + event.result = undefined; + if ( !event.target ) { + event.target = elem; + } + + // Clone any incoming data and prepend the event, creating the handler arg list + data = data != null ? jQuery.makeArray( data ) : []; + data.unshift( event ); + + // Allow special events to draw outside the lines + special = jQuery.event.special[ type ] || {}; + if ( special.trigger && special.trigger.apply( elem, data ) === false ) { + return; + } + + // Determine event propagation path in advance, per W3C events spec (#9951) + // Bubble up to document, then to window; watch for a global ownerDocument var (#9724) + eventPath = [[ elem, special.bindType || type ]]; + if ( !onlyHandlers && !special.noBubble && !jQuery.isWindow( elem ) ) { + + bubbleType = special.delegateType || type; + cur = rfocusMorph.test( bubbleType + type ) ? elem : elem.parentNode; + for ( old = elem; cur; cur = cur.parentNode ) { + eventPath.push([ cur, bubbleType ]); + old = cur; + } + + // Only add window if we got to document (e.g., not plain obj or detached DOM) + if ( old === (elem.ownerDocument || document) ) { + eventPath.push([ old.defaultView || old.parentWindow || window, bubbleType ]); + } + } + + // Fire handlers on the event path + for ( i = 0; i < eventPath.length && !event.isPropagationStopped(); i++ ) { + + cur = eventPath[i][0]; + event.type = eventPath[i][1]; + + handle = ( jQuery._data( cur, "events" ) || {} )[ event.type ] && jQuery._data( cur, "handle" ); + if ( handle ) { + handle.apply( cur, data ); + } + // Note that this is a bare JS function and not a jQuery handler + handle = ontype && cur[ ontype ]; + if ( handle && jQuery.acceptData( cur ) && handle.apply( cur, data ) === false ) { + event.preventDefault(); + } + } + event.type = type; + + // If nobody prevented the default action, do it now + if ( !onlyHandlers && !event.isDefaultPrevented() ) { + + if ( (!special._default || special._default.apply( elem.ownerDocument, data ) === false) && + !(type === "click" && jQuery.nodeName( elem, "a" )) && jQuery.acceptData( elem ) ) { + + // Call a native DOM method on the target with the same name name as the event. + // Can't use an .isFunction() check here because IE6/7 fails that test. + // Don't do default actions on window, that's where global variables be (#6170) + // IE<9 dies on focus/blur to hidden element (#1486) + if ( ontype && elem[ type ] && ((type !== "focus" && type !== "blur") || event.target.offsetWidth !== 0) && !jQuery.isWindow( elem ) ) { + + // Don't re-trigger an onFOO event when we call its FOO() method + old = elem[ ontype ]; + + if ( old ) { + elem[ ontype ] = null; + } + + // Prevent re-triggering of the same event, since we already bubbled it above + jQuery.event.triggered = type; + elem[ type ](); + jQuery.event.triggered = undefined; + + if ( old ) { + elem[ ontype ] = old; + } + } + } + } + + return event.result; + }, + + dispatch: function( event ) { + + // Make a writable jQuery.Event from the native event object + event = jQuery.event.fix( event || window.event ); + + var i, j, cur, jqcur, ret, selMatch, matched, matches, handleObj, sel, related, + handlers = ( (jQuery._data( this, "events" ) || {} )[ event.type ] || []), + delegateCount = handlers.delegateCount, + args = [].slice.call( arguments ), + run_all = !event.exclusive && !event.namespace, + special = jQuery.event.special[ event.type ] || {}, + handlerQueue = []; + + // Use the fix-ed jQuery.Event rather than the (read-only) native event + args[0] = event; + event.delegateTarget = this; + + // Call the preDispatch hook for the mapped type, and let it bail if desired + if ( special.preDispatch && special.preDispatch.call( this, event ) === false ) { + return; + } + + // Determine handlers that should run if there are delegated events + // Avoid non-left-click bubbling in Firefox (#3861) + if ( delegateCount && !(event.button && event.type === "click") ) { + + // Pregenerate a single jQuery object for reuse with .is() + jqcur = jQuery(this); + jqcur.context = this; + + for ( cur = event.target; cur != this; cur = cur.parentNode || this ) { + + // Don't process clicks (ONLY) on disabled elements (#6911, #8165, #xxxx) + if ( cur.disabled !== true || event.type !== "click" ) { + selMatch = {}; + matches = []; + jqcur[0] = cur; + for ( i = 0; i < delegateCount; i++ ) { + handleObj = handlers[ i ]; + sel = handleObj.selector; + + if ( selMatch[ sel ] === undefined ) { + selMatch[ sel ] = jqcur.is( sel ); + } + if ( selMatch[ sel ] ) { + matches.push( handleObj ); + } + } + if ( matches.length ) { + handlerQueue.push({ elem: cur, matches: matches }); + } + } + } + } + + // Add the remaining (directly-bound) handlers + if ( handlers.length > delegateCount ) { + handlerQueue.push({ elem: this, matches: handlers.slice( delegateCount ) }); + } + + // Run delegates first; they may want to stop propagation beneath us + for ( i = 0; i < handlerQueue.length && !event.isPropagationStopped(); i++ ) { + matched = handlerQueue[ i ]; + event.currentTarget = matched.elem; + + for ( j = 0; j < matched.matches.length && !event.isImmediatePropagationStopped(); j++ ) { + handleObj = matched.matches[ j ]; + + // Triggered event must either 1) be non-exclusive and have no namespace, or + // 2) have namespace(s) a subset or equal to those in the bound event (both can have no namespace). + if ( run_all || (!event.namespace && !handleObj.namespace) || event.namespace_re && event.namespace_re.test( handleObj.namespace ) ) { + + event.data = handleObj.data; + event.handleObj = handleObj; + + ret = ( (jQuery.event.special[ handleObj.origType ] || {}).handle || handleObj.handler ) + .apply( matched.elem, args ); + + if ( ret !== undefined ) { + event.result = ret; + if ( ret === false ) { + event.preventDefault(); + event.stopPropagation(); + } + } + } + } + } + + // Call the postDispatch hook for the mapped type + if ( special.postDispatch ) { + special.postDispatch.call( this, event ); + } + + return event.result; + }, + + // Includes some event props shared by KeyEvent and MouseEvent + // *** attrChange attrName relatedNode srcElement are not normalized, non-W3C, deprecated, will be removed in 1.8 *** + props: "attrChange attrName relatedNode srcElement altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "), + + fixHooks: {}, + + keyHooks: { + props: "char charCode key keyCode".split(" "), + filter: function( event, original ) { + + // Add which for key events + if ( event.which == null ) { + event.which = original.charCode != null ? original.charCode : original.keyCode; + } + + return event; + } + }, + + mouseHooks: { + props: "button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "), + filter: function( event, original ) { + var eventDoc, doc, body, + button = original.button, + fromElement = original.fromElement; + + // Calculate pageX/Y if missing and clientX/Y available + if ( event.pageX == null && original.clientX != null ) { + eventDoc = event.target.ownerDocument || document; + doc = eventDoc.documentElement; + body = eventDoc.body; + + event.pageX = original.clientX + ( doc && doc.scrollLeft || body && body.scrollLeft || 0 ) - ( doc && doc.clientLeft || body && body.clientLeft || 0 ); + event.pageY = original.clientY + ( doc && doc.scrollTop || body && body.scrollTop || 0 ) - ( doc && doc.clientTop || body && body.clientTop || 0 ); + } + + // Add relatedTarget, if necessary + if ( !event.relatedTarget && fromElement ) { + event.relatedTarget = fromElement === event.target ? original.toElement : fromElement; + } + + // Add which for click: 1 === left; 2 === middle; 3 === right + // Note: button is not normalized, so don't use it + if ( !event.which && button !== undefined ) { + event.which = ( button & 1 ? 1 : ( button & 2 ? 3 : ( button & 4 ? 2 : 0 ) ) ); + } + + return event; + } + }, + + fix: function( event ) { + if ( event[ jQuery.expando ] ) { + return event; + } + + // Create a writable copy of the event object and normalize some properties + var i, prop, + originalEvent = event, + fixHook = jQuery.event.fixHooks[ event.type ] || {}, + copy = fixHook.props ? this.props.concat( fixHook.props ) : this.props; + + event = jQuery.Event( originalEvent ); + + for ( i = copy.length; i; ) { + prop = copy[ --i ]; + event[ prop ] = originalEvent[ prop ]; + } + + // Fix target property, if necessary (#1925, IE 6/7/8 & Safari2) + if ( !event.target ) { + event.target = originalEvent.srcElement || document; + } + + // Target should not be a text node (#504, Safari) + if ( event.target.nodeType === 3 ) { + event.target = event.target.parentNode; + } + + // For mouse/key events, metaKey==false if it's undefined (#3368, #11328; IE6/7/8) + event.metaKey = !!event.metaKey; + + return fixHook.filter? fixHook.filter( event, originalEvent ) : event; + }, + + special: { + ready: { + // Make sure the ready event is setup + setup: jQuery.bindReady + }, + + load: { + // Prevent triggered image.load events from bubbling to window.load + noBubble: true + }, + + focus: { + delegateType: "focusin" + }, + blur: { + delegateType: "focusout" + }, + + beforeunload: { + setup: function( data, namespaces, eventHandle ) { + // We only want to do this special case on windows + if ( jQuery.isWindow( this ) ) { + this.onbeforeunload = eventHandle; + } + }, + + teardown: function( namespaces, eventHandle ) { + if ( this.onbeforeunload === eventHandle ) { + this.onbeforeunload = null; + } + } + } + }, + + simulate: function( type, elem, event, bubble ) { + // Piggyback on a donor event to simulate a different one. + // Fake originalEvent to avoid donor's stopPropagation, but if the + // simulated event prevents default then we do the same on the donor. + var e = jQuery.extend( + new jQuery.Event(), + event, + { type: type, + isSimulated: true, + originalEvent: {} + } + ); + if ( bubble ) { + jQuery.event.trigger( e, null, elem ); + } else { + jQuery.event.dispatch.call( elem, e ); + } + if ( e.isDefaultPrevented() ) { + event.preventDefault(); + } + } +}; + +// Some plugins are using, but it's undocumented/deprecated and will be removed. +// The 1.7 special event interface should provide all the hooks needed now. +jQuery.event.handle = jQuery.event.dispatch; + +jQuery.removeEvent = document.removeEventListener ? + function( elem, type, handle ) { + if ( elem.removeEventListener ) { + elem.removeEventListener( type, handle, false ); + } + } : + function( elem, type, handle ) { + var name = "on" + type; + + if ( elem.detachEvent ) { + + // #8545, #7054, preventing memory leaks for custom events in IE6-8 – + // detachEvent needed property on element, by name of that event, to properly expose it to GC + if ( typeof elem[ name ] === "undefined" ) { + elem[ name ] = null; + } + + elem.detachEvent( name, handle ); + } + }; + +jQuery.Event = function( src, props ) { + // Allow instantiation without the 'new' keyword + if ( !(this instanceof jQuery.Event) ) { + return new jQuery.Event( src, props ); + } + + // Event object + if ( src && src.type ) { + this.originalEvent = src; + this.type = src.type; + + // Events bubbling up the document may have been marked as prevented + // by a handler lower down the tree; reflect the correct value. + this.isDefaultPrevented = ( src.defaultPrevented || src.returnValue === false || + src.getPreventDefault && src.getPreventDefault() ) ? returnTrue : returnFalse; + + // Event type + } else { + this.type = src; + } + + // Put explicitly provided properties onto the event object + if ( props ) { + jQuery.extend( this, props ); + } + + // Create a timestamp if incoming event doesn't have one + this.timeStamp = src && src.timeStamp || jQuery.now(); + + // Mark it as fixed + this[ jQuery.expando ] = true; +}; + +function returnFalse() { + return false; +} +function returnTrue() { + return true; +} + +// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding +// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html +jQuery.Event.prototype = { + preventDefault: function() { + this.isDefaultPrevented = returnTrue; + + var e = this.originalEvent; + if ( !e ) { + return; + } + + // if preventDefault exists run it on the original event + if ( e.preventDefault ) { + e.preventDefault(); + + // otherwise set the returnValue property of the original event to false (IE) + } else { + e.returnValue = false; + } + }, + stopPropagation: function() { + this.isPropagationStopped = returnTrue; + + var e = this.originalEvent; + if ( !e ) { + return; + } + // if stopPropagation exists run it on the original event + if ( e.stopPropagation ) { + e.stopPropagation(); + } + // otherwise set the cancelBubble property of the original event to true (IE) + e.cancelBubble = true; + }, + stopImmediatePropagation: function() { + this.isImmediatePropagationStopped = returnTrue; + this.stopPropagation(); + }, + isDefaultPrevented: returnFalse, + isPropagationStopped: returnFalse, + isImmediatePropagationStopped: returnFalse +}; + +// Create mouseenter/leave events using mouseover/out and event-time checks +jQuery.each({ + mouseenter: "mouseover", + mouseleave: "mouseout" +}, function( orig, fix ) { + jQuery.event.special[ orig ] = { + delegateType: fix, + bindType: fix, + + handle: function( event ) { + var ret, + target = this, + related = event.relatedTarget, + handleObj = event.handleObj, + selector = handleObj.selector; + + // For mousenter/leave call the handler if related is outside the target. + // NB: No relatedTarget if the mouse left/entered the browser window + if ( !related || (related !== target && !jQuery.contains( target, related )) ) { + event.type = handleObj.origType; + ret = handleObj.handler.apply( this, arguments ); + event.type = fix; + } + return ret; + } + }; +}); + +// IE submit delegation +if ( !jQuery.support.submitBubbles ) { + + jQuery.event.special.submit = { + setup: function() { + // Only need this for delegated form submit events + if ( jQuery.nodeName( this, "form" ) ) { + return false; + } + + // Lazy-add a submit handler when a descendant form may potentially be submitted + jQuery.event.add( this, "click._submit keypress._submit", function( e ) { + // Node name check avoids a VML-related crash in IE (#9807) + var elem = e.target, + form = jQuery.nodeName( elem, "input" ) || jQuery.nodeName( elem, "button" ) ? elem.form : undefined; + if ( form && !jQuery._data( form, "_submit_attached" ) ) { + jQuery.event.add( form, "submit._submit", function( event ) { + event._submit_bubble = true; + }); + jQuery._data( form, "_submit_attached", true ); + } + }); + // return undefined since we don't need an event listener + }, + + postDispatch: function( event ) { + // If form was submitted by the user, bubble the event up the tree + if ( event._submit_bubble ) { + delete event._submit_bubble; + if ( this.parentNode && !event.isTrigger ) { + jQuery.event.simulate( "submit", this.parentNode, event, true ); + } + } + }, + + teardown: function() { + // Only need this for delegated form submit events + if ( jQuery.nodeName( this, "form" ) ) { + return false; + } + + // Remove delegated handlers; cleanData eventually reaps submit handlers attached above + jQuery.event.remove( this, "._submit" ); + } + }; +} + +// IE change delegation and checkbox/radio fix +if ( !jQuery.support.changeBubbles ) { + + jQuery.event.special.change = { + + setup: function() { + + if ( rformElems.test( this.nodeName ) ) { + // IE doesn't fire change on a check/radio until blur; trigger it on click + // after a propertychange. Eat the blur-change in special.change.handle. + // This still fires onchange a second time for check/radio after blur. + if ( this.type === "checkbox" || this.type === "radio" ) { + jQuery.event.add( this, "propertychange._change", function( event ) { + if ( event.originalEvent.propertyName === "checked" ) { + this._just_changed = true; + } + }); + jQuery.event.add( this, "click._change", function( event ) { + if ( this._just_changed && !event.isTrigger ) { + this._just_changed = false; + } + // Allow triggered, simulated change events (#11500) + jQuery.event.simulate( "change", this, event, true ); + }); + } + return false; + } + // Delegated event; lazy-add a change handler on descendant inputs + jQuery.event.add( this, "beforeactivate._change", function( e ) { + var elem = e.target; + + if ( rformElems.test( elem.nodeName ) && !jQuery._data( elem, "_change_attached" ) ) { + jQuery.event.add( elem, "change._change", function( event ) { + if ( this.parentNode && !event.isSimulated && !event.isTrigger ) { + jQuery.event.simulate( "change", this.parentNode, event, true ); + } + }); + jQuery._data( elem, "_change_attached", true ); + } + }); + }, + + handle: function( event ) { + var elem = event.target; + + // Swallow native change events from checkbox/radio, we already triggered them above + if ( this !== elem || event.isSimulated || event.isTrigger || (elem.type !== "radio" && elem.type !== "checkbox") ) { + return event.handleObj.handler.apply( this, arguments ); + } + }, + + teardown: function() { + jQuery.event.remove( this, "._change" ); + + return rformElems.test( this.nodeName ); + } + }; +} + +// Create "bubbling" focus and blur events +if ( !jQuery.support.focusinBubbles ) { + jQuery.each({ focus: "focusin", blur: "focusout" }, function( orig, fix ) { + + // Attach a single capturing handler while someone wants focusin/focusout + var attaches = 0, + handler = function( event ) { + jQuery.event.simulate( fix, event.target, jQuery.event.fix( event ), true ); + }; + + jQuery.event.special[ fix ] = { + setup: function() { + if ( attaches++ === 0 ) { + document.addEventListener( orig, handler, true ); + } + }, + teardown: function() { + if ( --attaches === 0 ) { + document.removeEventListener( orig, handler, true ); + } + } + }; + }); +} + +jQuery.fn.extend({ + + on: function( types, selector, data, fn, /*INTERNAL*/ one ) { + var origFn, type; + + // Types can be a map of types/handlers + if ( typeof types === "object" ) { + // ( types-Object, selector, data ) + if ( typeof selector !== "string" ) { // && selector != null + // ( types-Object, data ) + data = data || selector; + selector = undefined; + } + for ( type in types ) { + this.on( type, selector, data, types[ type ], one ); + } + return this; + } + + if ( data == null && fn == null ) { + // ( types, fn ) + fn = selector; + data = selector = undefined; + } else if ( fn == null ) { + if ( typeof selector === "string" ) { + // ( types, selector, fn ) + fn = data; + data = undefined; + } else { + // ( types, data, fn ) + fn = data; + data = selector; + selector = undefined; + } + } + if ( fn === false ) { + fn = returnFalse; + } else if ( !fn ) { + return this; + } + + if ( one === 1 ) { + origFn = fn; + fn = function( event ) { + // Can use an empty set, since event contains the info + jQuery().off( event ); + return origFn.apply( this, arguments ); + }; + // Use same guid so caller can remove using origFn + fn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ ); + } + return this.each( function() { + jQuery.event.add( this, types, fn, data, selector ); + }); + }, + one: function( types, selector, data, fn ) { + return this.on( types, selector, data, fn, 1 ); + }, + off: function( types, selector, fn ) { + var handleObj, type; + if ( types && types.preventDefault && types.handleObj ) { + // ( event ) dispatched jQuery.Event + handleObj = types.handleObj; + jQuery( types.delegateTarget ).off( + handleObj.namespace ? handleObj.origType + "." + handleObj.namespace : handleObj.origType, + handleObj.selector, + handleObj.handler + ); + return this; + } + if ( typeof types === "object" ) { + // ( types-object [, selector] ) + for ( type in types ) { + this.off( type, selector, types[ type ] ); + } + return this; + } + if ( selector === false || typeof selector === "function" ) { + // ( types [, fn] ) + fn = selector; + selector = undefined; + } + if ( fn === false ) { + fn = returnFalse; + } + return this.each(function() { + jQuery.event.remove( this, types, fn, selector ); + }); + }, + + bind: function( types, data, fn ) { + return this.on( types, null, data, fn ); + }, + unbind: function( types, fn ) { + return this.off( types, null, fn ); + }, + + live: function( types, data, fn ) { + jQuery( this.context ).on( types, this.selector, data, fn ); + return this; + }, + die: function( types, fn ) { + jQuery( this.context ).off( types, this.selector || "**", fn ); + return this; + }, + + delegate: function( selector, types, data, fn ) { + return this.on( types, selector, data, fn ); + }, + undelegate: function( selector, types, fn ) { + // ( namespace ) or ( selector, types [, fn] ) + return arguments.length == 1? this.off( selector, "**" ) : this.off( types, selector || "**", fn ); + }, + + trigger: function( type, data ) { + return this.each(function() { + jQuery.event.trigger( type, data, this ); + }); + }, + triggerHandler: function( type, data ) { + if ( this[0] ) { + return jQuery.event.trigger( type, data, this[0], true ); + } + }, + + toggle: function( fn ) { + // Save reference to arguments for access in closure + var args = arguments, + guid = fn.guid || jQuery.guid++, + i = 0, + toggler = function( event ) { + // Figure out which function to execute + var lastToggle = ( jQuery._data( this, "lastToggle" + fn.guid ) || 0 ) % i; + jQuery._data( this, "lastToggle" + fn.guid, lastToggle + 1 ); + + // Make sure that clicks stop + event.preventDefault(); + + // and execute the function + return args[ lastToggle ].apply( this, arguments ) || false; + }; + + // link all the functions, so any of them can unbind this click handler + toggler.guid = guid; + while ( i < args.length ) { + args[ i++ ].guid = guid; + } + + return this.click( toggler ); + }, + + hover: function( fnOver, fnOut ) { + return this.mouseenter( fnOver ).mouseleave( fnOut || fnOver ); + } +}); + +jQuery.each( ("blur focus focusin focusout load resize scroll unload click dblclick " + + "mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave " + + "change select submit keydown keypress keyup error contextmenu").split(" "), function( i, name ) { + + // Handle event binding + jQuery.fn[ name ] = function( data, fn ) { + if ( fn == null ) { + fn = data; + data = null; + } + + return arguments.length > 0 ? + this.on( name, null, data, fn ) : + this.trigger( name ); + }; + + if ( rkeyEvent.test( name ) ) { + jQuery.event.fixHooks[ name ] = jQuery.event.keyHooks; + } + + if ( rmouseEvent.test( name ) ) { + jQuery.event.fixHooks[ name ] = jQuery.event.mouseHooks; + } +}); +/*! + * Sizzle CSS Selector Engine + * Copyright 2012 jQuery Foundation and other contributors + * Released under the MIT license + * http://sizzlejs.com/ + */ +(function( window, undefined ) { + +var cachedruns, + dirruns, + sortOrder, + siblingCheck, + assertGetIdNotName, + + document = window.document, + docElem = document.documentElement, + + strundefined = "undefined", + hasDuplicate = false, + baseHasDuplicate = true, + done = 0, + slice = [].slice, + push = [].push, + + expando = ( "sizcache" + Math.random() ).replace( ".", "" ), + + // Regex + + // Whitespace characters http://www.w3.org/TR/css3-selectors/#whitespace + whitespace = "[\\x20\\t\\r\\n\\f]", + // http://www.w3.org/TR/css3-syntax/#characters + characterEncoding = "(?:\\\\.|[-\\w]|[^\\x00-\\xa0])+", + + // Loosely modeled on CSS identifier characters + // An unquoted value should be a CSS identifier (http://www.w3.org/TR/css3-selectors/#attribute-selectors) + // Proper syntax: http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier + identifier = characterEncoding.replace( "w", "w#" ), + + // Acceptable operators http://www.w3.org/TR/selectors/#attribute-selectors + operators = "([*^$|!~]?=)", + attributes = "\\[" + whitespace + "*(" + characterEncoding + ")" + whitespace + + "*(?:" + operators + whitespace + "*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|(" + identifier + ")|)|)" + whitespace + "*\\]", + pseudos = ":(" + characterEncoding + ")(?:\\((?:(['\"])((?:\\\\.|[^\\\\])*?)\\2|((?:[^,]|\\\\,|(?:,(?=[^\\[]*\\]))|(?:,(?=[^\\(]*\\))))*))\\)|)", + pos = ":(nth|eq|gt|lt|first|last|even|odd)(?:\\((\\d*)\\)|)(?=[^-]|$)", + combinators = whitespace + "*([\\x20\\t\\r\\n\\f>+~])" + whitespace + "*", + groups = "(?=[^\\x20\\t\\r\\n\\f])(?:\\\\.|" + attributes + "|" + pseudos.replace( 2, 7 ) + "|[^\\\\(),])+", + + // Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter + rtrim = new RegExp( "^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + whitespace + "+$", "g" ), + + rcombinators = new RegExp( "^" + combinators ), + + // All simple (non-comma) selectors, excluding insignifant trailing whitespace + rgroups = new RegExp( groups + "?(?=" + whitespace + "*,|$)", "g" ), + + // A selector, or everything after leading whitespace + // Optionally followed in either case by a ")" for terminating sub-selectors + rselector = new RegExp( "^(?:(?!,)(?:(?:^|,)" + whitespace + "*" + groups + ")*?|" + whitespace + "*(.*?))(\\)|$)" ), + + // All combinators and selector components (attribute test, tag, pseudo, etc.), the latter appearing together when consecutive + rtokens = new RegExp( groups.slice( 19, -6 ) + "\\x20\\t\\r\\n\\f>+~])+|" + combinators, "g" ), + + // Easily-parseable/retrievable ID or TAG or CLASS selectors + rquickExpr = /^(?:#([\w\-]+)|(\w+)|\.([\w\-]+))$/, + + rsibling = /[\x20\t\r\n\f]*[+~]/, + rendsWithNot = /:not\($/, + + rheader = /h\d/i, + rinputs = /input|select|textarea|button/i, + + rbackslash = /\\(?!\\)/g, + + matchExpr = { + "ID": new RegExp( "^#(" + characterEncoding + ")" ), + "CLASS": new RegExp( "^\\.(" + characterEncoding + ")" ), + "NAME": new RegExp( "^\\[name=['\"]?(" + characterEncoding + ")['\"]?\\]" ), + "TAG": new RegExp( "^(" + characterEncoding.replace( "[-", "[-\\*" ) + ")" ), + "ATTR": new RegExp( "^" + attributes ), + "PSEUDO": new RegExp( "^" + pseudos ), + "CHILD": new RegExp( "^:(only|nth|last|first)-child(?:\\(" + whitespace + + "*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" + whitespace + + "*(\\d+)|))" + whitespace + "*\\)|)", "i" ), + "POS": new RegExp( pos, "ig" ), + // For use in libraries implementing .is() + "needsContext": new RegExp( "^" + whitespace + "*[>+~]|" + pos, "i" ) + }, + + classCache = {}, + cachedClasses = [], + compilerCache = {}, + cachedSelectors = [], + + // Mark a function for use in filtering + markFunction = function( fn ) { + fn.sizzleFilter = true; + return fn; + }, + + // Returns a function to use in pseudos for input types + createInputFunction = function( type ) { + return function( elem ) { + // Check the input's nodeName and type + return elem.nodeName.toLowerCase() === "input" && elem.type === type; + }; + }, + + // Returns a function to use in pseudos for buttons + createButtonFunction = function( type ) { + return function( elem ) { + var name = elem.nodeName.toLowerCase(); + return (name === "input" || name === "button") && elem.type === type; + }; + }, + + // Used for testing something on an element + assert = function( fn ) { + var pass = false, + div = document.createElement("div"); + try { + pass = fn( div ); + } catch (e) {} + // release memory in IE + div = null; + return pass; + }, + + // Check if attributes should be retrieved by attribute nodes + assertAttributes = assert(function( div ) { + div.innerHTML = ""; + var type = typeof div.lastChild.getAttribute("multiple"); + // IE8 returns a string for some attributes even when not present + return type !== "boolean" && type !== "string"; + }), + + // Check if getElementById returns elements by name + // Check if getElementsByName privileges form controls or returns elements by ID + assertUsableName = assert(function( div ) { + // Inject content + div.id = expando + 0; + div.innerHTML = "
      "; + docElem.insertBefore( div, docElem.firstChild ); + + // Test + var pass = document.getElementsByName && + // buggy browsers will return fewer than the correct 2 + document.getElementsByName( expando ).length === + // buggy browsers will return more than the correct 0 + 2 + document.getElementsByName( expando + 0 ).length; + assertGetIdNotName = !document.getElementById( expando ); + + // Cleanup + docElem.removeChild( div ); + + return pass; + }), + + // Check if the browser returns only elements + // when doing getElementsByTagName("*") + assertTagNameNoComments = assert(function( div ) { + div.appendChild( document.createComment("") ); + return div.getElementsByTagName("*").length === 0; + }), + + // Check if getAttribute returns normalized href attributes + assertHrefNotNormalized = assert(function( div ) { + div.innerHTML = ""; + return div.firstChild && typeof div.firstChild.getAttribute !== strundefined && + div.firstChild.getAttribute("href") === "#"; + }), + + // Check if getElementsByClassName can be trusted + assertUsableClassName = assert(function( div ) { + // Opera can't find a second classname (in 9.6) + div.innerHTML = ""; + if ( !div.getElementsByClassName || div.getElementsByClassName("e").length === 0 ) { + return false; + } + + // Safari caches class attributes, doesn't catch changes (in 3.2) + div.lastChild.className = "e"; + return div.getElementsByClassName("e").length !== 1; + }); + +var Sizzle = function( selector, context, results, seed ) { + results = results || []; + context = context || document; + var match, elem, xml, m, + nodeType = context.nodeType; + + if ( nodeType !== 1 && nodeType !== 9 ) { + return []; + } + + if ( !selector || typeof selector !== "string" ) { + return results; + } + + xml = isXML( context ); + + if ( !xml && !seed ) { + if ( (match = rquickExpr.exec( selector )) ) { + // Speed-up: Sizzle("#ID") + if ( (m = match[1]) ) { + if ( nodeType === 9 ) { + elem = context.getElementById( m ); + // Check parentNode to catch when Blackberry 4.6 returns + // nodes that are no longer in the document #6963 + if ( elem && elem.parentNode ) { + // Handle the case where IE, Opera, and Webkit return items + // by name instead of ID + if ( elem.id === m ) { + results.push( elem ); + return results; + } + } else { + return results; + } + } else { + // Context is not a document + if ( context.ownerDocument && (elem = context.ownerDocument.getElementById( m )) && + contains( context, elem ) && elem.id === m ) { + results.push( elem ); + return results; + } + } + + // Speed-up: Sizzle("TAG") + } else if ( match[2] ) { + push.apply( results, slice.call(context.getElementsByTagName( selector ), 0) ); + return results; + + // Speed-up: Sizzle(".CLASS") + } else if ( (m = match[3]) && assertUsableClassName && context.getElementsByClassName ) { + push.apply( results, slice.call(context.getElementsByClassName( m ), 0) ); + return results; + } + } + } + + // All others + return select( selector, context, results, seed, xml ); +}; + +var Expr = Sizzle.selectors = { + + // Can be adjusted by the user + cacheLength: 50, + + match: matchExpr, + + order: [ "ID", "TAG" ], + + attrHandle: {}, + + createPseudo: markFunction, + + find: { + "ID": assertGetIdNotName ? + function( id, context, xml ) { + if ( typeof context.getElementById !== strundefined && !xml ) { + var m = context.getElementById( id ); + // Check parentNode to catch when Blackberry 4.6 returns + // nodes that are no longer in the document #6963 + return m && m.parentNode ? [m] : []; + } + } : + function( id, context, xml ) { + if ( typeof context.getElementById !== strundefined && !xml ) { + var m = context.getElementById( id ); + + return m ? + m.id === id || typeof m.getAttributeNode !== strundefined && m.getAttributeNode("id").value === id ? + [m] : + undefined : + []; + } + }, + + "TAG": assertTagNameNoComments ? + function( tag, context ) { + if ( typeof context.getElementsByTagName !== strundefined ) { + return context.getElementsByTagName( tag ); + } + } : + function( tag, context ) { + var results = context.getElementsByTagName( tag ); + + // Filter out possible comments + if ( tag === "*" ) { + var elem, + tmp = [], + i = 0; + + for ( ; (elem = results[i]); i++ ) { + if ( elem.nodeType === 1 ) { + tmp.push( elem ); + } + } + + return tmp; + } + return results; + } + }, + + relative: { + ">": { dir: "parentNode", first: true }, + " ": { dir: "parentNode" }, + "+": { dir: "previousSibling", first: true }, + "~": { dir: "previousSibling" } + }, + + preFilter: { + "ATTR": function( match ) { + match[1] = match[1].replace( rbackslash, "" ); + + // Move the given value to match[3] whether quoted or unquoted + match[3] = ( match[4] || match[5] || "" ).replace( rbackslash, "" ); + + if ( match[2] === "~=" ) { + match[3] = " " + match[3] + " "; + } + + return match.slice( 0, 4 ); + }, + + "CHILD": function( match ) { + /* matches from matchExpr.CHILD + 1 type (only|nth|...) + 2 argument (even|odd|\d*|\d*n([+-]\d+)?|...) + 3 xn-component of xn+y argument ([+-]?\d*n|) + 4 sign of xn-component + 5 x of xn-component + 6 sign of y-component + 7 y of y-component + */ + match[1] = match[1].toLowerCase(); + + if ( match[1] === "nth" ) { + // nth-child requires argument + if ( !match[2] ) { + Sizzle.error( match[0] ); + } + + // numeric x and y parameters for Expr.filter.CHILD + // remember that false/true cast respectively to 0/1 + match[3] = +( match[3] ? match[4] + (match[5] || 1) : 2 * ( match[2] === "even" || match[2] === "odd" ) ); + match[4] = +( ( match[6] + match[7] ) || match[2] === "odd" ); + + // other types prohibit arguments + } else if ( match[2] ) { + Sizzle.error( match[0] ); + } + + return match; + }, + + "PSEUDO": function( match ) { + var argument, + unquoted = match[4]; + + if ( matchExpr["CHILD"].test( match[0] ) ) { + return null; + } + + // Relinquish our claim on characters in `unquoted` from a closing parenthesis on + if ( unquoted && (argument = rselector.exec( unquoted )) && argument.pop() ) { + + match[0] = match[0].slice( 0, argument[0].length - unquoted.length - 1 ); + unquoted = argument[0].slice( 0, -1 ); + } + + // Quoted or unquoted, we have the full argument + // Return only captures needed by the pseudo filter method (type and argument) + match.splice( 2, 3, unquoted || match[3] ); + return match; + } + }, + + filter: { + "ID": assertGetIdNotName ? + function( id ) { + id = id.replace( rbackslash, "" ); + return function( elem ) { + return elem.getAttribute("id") === id; + }; + } : + function( id ) { + id = id.replace( rbackslash, "" ); + return function( elem ) { + var node = typeof elem.getAttributeNode !== strundefined && elem.getAttributeNode("id"); + return node && node.value === id; + }; + }, + + "TAG": function( nodeName ) { + if ( nodeName === "*" ) { + return function() { return true; }; + } + nodeName = nodeName.replace( rbackslash, "" ).toLowerCase(); + + return function( elem ) { + return elem.nodeName && elem.nodeName.toLowerCase() === nodeName; + }; + }, + + "CLASS": function( className ) { + var pattern = classCache[ className ]; + if ( !pattern ) { + pattern = classCache[ className ] = new RegExp( "(^|" + whitespace + ")" + className + "(" + whitespace + "|$)" ); + cachedClasses.push( className ); + // Avoid too large of a cache + if ( cachedClasses.length > Expr.cacheLength ) { + delete classCache[ cachedClasses.shift() ]; + } + } + return function( elem ) { + return pattern.test( elem.className || (typeof elem.getAttribute !== strundefined && elem.getAttribute("class")) || "" ); + }; + }, + + "ATTR": function( name, operator, check ) { + if ( !operator ) { + return function( elem ) { + return Sizzle.attr( elem, name ) != null; + }; + } + + return function( elem ) { + var result = Sizzle.attr( elem, name ), + value = result + ""; + + if ( result == null ) { + return operator === "!="; + } + + switch ( operator ) { + case "=": + return value === check; + case "!=": + return value !== check; + case "^=": + return check && value.indexOf( check ) === 0; + case "*=": + return check && value.indexOf( check ) > -1; + case "$=": + return check && value.substr( value.length - check.length ) === check; + case "~=": + return ( " " + value + " " ).indexOf( check ) > -1; + case "|=": + return value === check || value.substr( 0, check.length + 1 ) === check + "-"; + } + }; + }, + + "CHILD": function( type, argument, first, last ) { + + if ( type === "nth" ) { + var doneName = done++; + + return function( elem ) { + var parent, diff, + count = 0, + node = elem; + + if ( first === 1 && last === 0 ) { + return true; + } + + parent = elem.parentNode; + + if ( parent && (parent[ expando ] !== doneName || !elem.sizset) ) { + for ( node = parent.firstChild; node; node = node.nextSibling ) { + if ( node.nodeType === 1 ) { + node.sizset = ++count; + if ( node === elem ) { + break; + } + } + } + + parent[ expando ] = doneName; + } + + diff = elem.sizset - last; + + if ( first === 0 ) { + return diff === 0; + + } else { + return ( diff % first === 0 && diff / first >= 0 ); + } + }; + } + + return function( elem ) { + var node = elem; + + switch ( type ) { + case "only": + case "first": + while ( (node = node.previousSibling) ) { + if ( node.nodeType === 1 ) { + return false; + } + } + + if ( type === "first" ) { + return true; + } + + node = elem; + + /* falls through */ + case "last": + while ( (node = node.nextSibling) ) { + if ( node.nodeType === 1 ) { + return false; + } + } + + return true; + } + }; + }, + + "PSEUDO": function( pseudo, argument, context, xml ) { + // pseudo-class names are case-insensitive + // http://www.w3.org/TR/selectors/#pseudo-classes + // Prioritize by case sensitivity in case custom pseudos are added with uppercase letters + var fn = Expr.pseudos[ pseudo ] || Expr.pseudos[ pseudo.toLowerCase() ]; + + if ( !fn ) { + Sizzle.error( "unsupported pseudo: " + pseudo ); + } + + // The user may set fn.sizzleFilter to indicate + // that arguments are needed to create the filter function + // just as Sizzle does + if ( !fn.sizzleFilter ) { + return fn; + } + + return fn( argument, context, xml ); + } + }, + + pseudos: { + "not": markFunction(function( selector, context, xml ) { + // Trim the selector passed to compile + // to avoid treating leading and trailing + // spaces as combinators + var matcher = compile( selector.replace( rtrim, "$1" ), context, xml ); + return function( elem ) { + return !matcher( elem ); + }; + }), + + "enabled": function( elem ) { + return elem.disabled === false; + }, + + "disabled": function( elem ) { + return elem.disabled === true; + }, + + "checked": function( elem ) { + // In CSS3, :checked should return both checked and selected elements + // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked + var nodeName = elem.nodeName.toLowerCase(); + return (nodeName === "input" && !!elem.checked) || (nodeName === "option" && !!elem.selected); + }, + + "selected": function( elem ) { + // Accessing this property makes selected-by-default + // options in Safari work properly + if ( elem.parentNode ) { + elem.parentNode.selectedIndex; + } + + return elem.selected === true; + }, + + "parent": function( elem ) { + return !Expr.pseudos["empty"]( elem ); + }, + + "empty": function( elem ) { + // http://www.w3.org/TR/selectors/#empty-pseudo + // :empty is only affected by element nodes and content nodes(including text(3), cdata(4)), + // not comment, processing instructions, or others + // Thanks to Diego Perini for the nodeName shortcut + // Greater than "@" means alpha characters (specifically not starting with "#" or "?") + var nodeType; + elem = elem.firstChild; + while ( elem ) { + if ( elem.nodeName > "@" || (nodeType = elem.nodeType) === 3 || nodeType === 4 ) { + return false; + } + elem = elem.nextSibling; + } + return true; + }, + + "contains": markFunction(function( text ) { + return function( elem ) { + return ( elem.textContent || elem.innerText || getText( elem ) ).indexOf( text ) > -1; + }; + }), + + "has": markFunction(function( selector ) { + return function( elem ) { + return Sizzle( selector, elem ).length > 0; + }; + }), + + "header": function( elem ) { + return rheader.test( elem.nodeName ); + }, + + "text": function( elem ) { + var type, attr; + // IE6 and 7 will map elem.type to 'text' for new HTML5 types (search, etc) + // use getAttribute instead to test this case + return elem.nodeName.toLowerCase() === "input" && + (type = elem.type) === "text" && + ( (attr = elem.getAttribute("type")) == null || attr.toLowerCase() === type ); + }, + + // Input types + "radio": createInputFunction("radio"), + "checkbox": createInputFunction("checkbox"), + "file": createInputFunction("file"), + "password": createInputFunction("password"), + "image": createInputFunction("image"), + + "submit": createButtonFunction("submit"), + "reset": createButtonFunction("reset"), + + "button": function( elem ) { + var name = elem.nodeName.toLowerCase(); + return name === "input" && elem.type === "button" || name === "button"; + }, + + "input": function( elem ) { + return rinputs.test( elem.nodeName ); + }, + + "focus": function( elem ) { + var doc = elem.ownerDocument; + return elem === doc.activeElement && (!doc.hasFocus || doc.hasFocus()) && !!(elem.type || elem.href); + }, + + "active": function( elem ) { + return elem === elem.ownerDocument.activeElement; + } + }, + + setFilters: { + "first": function( elements, argument, not ) { + return not ? elements.slice( 1 ) : [ elements[0] ]; + }, + + "last": function( elements, argument, not ) { + var elem = elements.pop(); + return not ? elements : [ elem ]; + }, + + "even": function( elements, argument, not ) { + var results = [], + i = not ? 1 : 0, + len = elements.length; + for ( ; i < len; i = i + 2 ) { + results.push( elements[i] ); + } + return results; + }, + + "odd": function( elements, argument, not ) { + var results = [], + i = not ? 0 : 1, + len = elements.length; + for ( ; i < len; i = i + 2 ) { + results.push( elements[i] ); + } + return results; + }, + + "lt": function( elements, argument, not ) { + return not ? elements.slice( +argument ) : elements.slice( 0, +argument ); + }, + + "gt": function( elements, argument, not ) { + return not ? elements.slice( 0, +argument + 1 ) : elements.slice( +argument + 1 ); + }, + + "eq": function( elements, argument, not ) { + var elem = elements.splice( +argument, 1 ); + return not ? elements : elem; + } + } +}; + +// Deprecated +Expr.setFilters["nth"] = Expr.setFilters["eq"]; + +// Back-compat +Expr.filters = Expr.pseudos; + +// IE6/7 return a modified href +if ( !assertHrefNotNormalized ) { + Expr.attrHandle = { + "href": function( elem ) { + return elem.getAttribute( "href", 2 ); + }, + "type": function( elem ) { + return elem.getAttribute("type"); + } + }; +} + +// Add getElementsByName if usable +if ( assertUsableName ) { + Expr.order.push("NAME"); + Expr.find["NAME"] = function( name, context ) { + if ( typeof context.getElementsByName !== strundefined ) { + return context.getElementsByName( name ); + } + }; +} + +// Add getElementsByClassName if usable +if ( assertUsableClassName ) { + Expr.order.splice( 1, 0, "CLASS" ); + Expr.find["CLASS"] = function( className, context, xml ) { + if ( typeof context.getElementsByClassName !== strundefined && !xml ) { + return context.getElementsByClassName( className ); + } + }; +} + +// If slice is not available, provide a backup +try { + slice.call( docElem.childNodes, 0 )[0].nodeType; +} catch ( e ) { + slice = function( i ) { + var elem, results = []; + for ( ; (elem = this[i]); i++ ) { + results.push( elem ); + } + return results; + }; +} + +var isXML = Sizzle.isXML = function( elem ) { + // documentElement is verified for cases where it doesn't yet exist + // (such as loading iframes in IE - #4833) + var documentElement = elem && (elem.ownerDocument || elem).documentElement; + return documentElement ? documentElement.nodeName !== "HTML" : false; +}; + +// Element contains another +var contains = Sizzle.contains = docElem.compareDocumentPosition ? + function( a, b ) { + return !!( a.compareDocumentPosition( b ) & 16 ); + } : + docElem.contains ? + function( a, b ) { + var adown = a.nodeType === 9 ? a.documentElement : a, + bup = b.parentNode; + return a === bup || !!( bup && bup.nodeType === 1 && adown.contains && adown.contains(bup) ); + } : + function( a, b ) { + while ( (b = b.parentNode) ) { + if ( b === a ) { + return true; + } + } + return false; + }; + +/** + * Utility function for retrieving the text value of an array of DOM nodes + * @param {Array|Element} elem + */ +var getText = Sizzle.getText = function( elem ) { + var node, + ret = "", + i = 0, + nodeType = elem.nodeType; + + if ( nodeType ) { + if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) { + // Use textContent for elements + // innerText usage removed for consistency of new lines (see #11153) + if ( typeof elem.textContent === "string" ) { + return elem.textContent; + } else { + // Traverse its children + for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) { + ret += getText( elem ); + } + } + } else if ( nodeType === 3 || nodeType === 4 ) { + return elem.nodeValue; + } + // Do not include comment or processing instruction nodes + } else { + + // If no nodeType, this is expected to be an array + for ( ; (node = elem[i]); i++ ) { + // Do not traverse comment nodes + ret += getText( node ); + } + } + return ret; +}; + +Sizzle.attr = function( elem, name ) { + var attr, + xml = isXML( elem ); + + if ( !xml ) { + name = name.toLowerCase(); + } + if ( Expr.attrHandle[ name ] ) { + return Expr.attrHandle[ name ]( elem ); + } + if ( assertAttributes || xml ) { + return elem.getAttribute( name ); + } + attr = elem.getAttributeNode( name ); + return attr ? + typeof elem[ name ] === "boolean" ? + elem[ name ] ? name : null : + attr.specified ? attr.value : null : + null; +}; + +Sizzle.error = function( msg ) { + throw new Error( "Syntax error, unrecognized expression: " + msg ); +}; + +// Check if the JavaScript engine is using some sort of +// optimization where it does not always call our comparision +// function. If that is the case, discard the hasDuplicate value. +// Thus far that includes Google Chrome. +[0, 0].sort(function() { + return (baseHasDuplicate = 0); +}); + + +if ( docElem.compareDocumentPosition ) { + sortOrder = function( a, b ) { + if ( a === b ) { + hasDuplicate = true; + return 0; + } + + return ( !a.compareDocumentPosition || !b.compareDocumentPosition ? + a.compareDocumentPosition : + a.compareDocumentPosition(b) & 4 + ) ? -1 : 1; + }; + +} else { + sortOrder = function( a, b ) { + // The nodes are identical, we can exit early + if ( a === b ) { + hasDuplicate = true; + return 0; + + // Fallback to using sourceIndex (in IE) if it's available on both nodes + } else if ( a.sourceIndex && b.sourceIndex ) { + return a.sourceIndex - b.sourceIndex; + } + + var al, bl, + ap = [], + bp = [], + aup = a.parentNode, + bup = b.parentNode, + cur = aup; + + // If the nodes are siblings (or identical) we can do a quick check + if ( aup === bup ) { + return siblingCheck( a, b ); + + // If no parents were found then the nodes are disconnected + } else if ( !aup ) { + return -1; + + } else if ( !bup ) { + return 1; + } + + // Otherwise they're somewhere else in the tree so we need + // to build up a full list of the parentNodes for comparison + while ( cur ) { + ap.unshift( cur ); + cur = cur.parentNode; + } + + cur = bup; + + while ( cur ) { + bp.unshift( cur ); + cur = cur.parentNode; + } + + al = ap.length; + bl = bp.length; + + // Start walking down the tree looking for a discrepancy + for ( var i = 0; i < al && i < bl; i++ ) { + if ( ap[i] !== bp[i] ) { + return siblingCheck( ap[i], bp[i] ); + } + } + + // We ended someplace up the tree so do a sibling check + return i === al ? + siblingCheck( a, bp[i], -1 ) : + siblingCheck( ap[i], b, 1 ); + }; + + siblingCheck = function( a, b, ret ) { + if ( a === b ) { + return ret; + } + + var cur = a.nextSibling; + + while ( cur ) { + if ( cur === b ) { + return -1; + } + + cur = cur.nextSibling; + } + + return 1; + }; +} + +// Document sorting and removing duplicates +Sizzle.uniqueSort = function( results ) { + var elem, + i = 1; + + if ( sortOrder ) { + hasDuplicate = baseHasDuplicate; + results.sort( sortOrder ); + + if ( hasDuplicate ) { + for ( ; (elem = results[i]); i++ ) { + if ( elem === results[ i - 1 ] ) { + results.splice( i--, 1 ); + } + } + } + } + + return results; +}; + +function multipleContexts( selector, contexts, results, seed ) { + var i = 0, + len = contexts.length; + for ( ; i < len; i++ ) { + Sizzle( selector, contexts[i], results, seed ); + } +} + +function handlePOSGroup( selector, posfilter, argument, contexts, seed, not ) { + var results, + fn = Expr.setFilters[ posfilter.toLowerCase() ]; + + if ( !fn ) { + Sizzle.error( posfilter ); + } + + if ( selector || !(results = seed) ) { + multipleContexts( selector || "*", contexts, (results = []), seed ); + } + + return results.length > 0 ? fn( results, argument, not ) : []; +} + +function handlePOS( selector, context, results, seed, groups ) { + var match, not, anchor, ret, elements, currentContexts, part, lastIndex, + i = 0, + len = groups.length, + rpos = matchExpr["POS"], + // This is generated here in case matchExpr["POS"] is extended + rposgroups = new RegExp( "^" + rpos.source + "(?!" + whitespace + ")", "i" ), + // This is for making sure non-participating + // matching groups are represented cross-browser (IE6-8) + setUndefined = function() { + var i = 1, + len = arguments.length - 2; + for ( ; i < len; i++ ) { + if ( arguments[i] === undefined ) { + match[i] = undefined; + } + } + }; + + for ( ; i < len; i++ ) { + // Reset regex index to 0 + rpos.exec(""); + selector = groups[i]; + ret = []; + anchor = 0; + elements = seed; + while ( (match = rpos.exec( selector )) ) { + lastIndex = rpos.lastIndex = match.index + match[0].length; + if ( lastIndex > anchor ) { + part = selector.slice( anchor, match.index ); + anchor = lastIndex; + currentContexts = [ context ]; + + if ( rcombinators.test(part) ) { + if ( elements ) { + currentContexts = elements; + } + elements = seed; + } + + if ( (not = rendsWithNot.test( part )) ) { + part = part.slice( 0, -5 ).replace( rcombinators, "$&*" ); + } + + if ( match.length > 1 ) { + match[0].replace( rposgroups, setUndefined ); + } + elements = handlePOSGroup( part, match[1], match[2], currentContexts, elements, not ); + } + } + + if ( elements ) { + ret = ret.concat( elements ); + + if ( (part = selector.slice( anchor )) && part !== ")" ) { + if ( rcombinators.test(part) ) { + multipleContexts( part, ret, results, seed ); + } else { + Sizzle( part, context, results, seed ? seed.concat(elements) : elements ); + } + } else { + push.apply( results, ret ); + } + } else { + Sizzle( selector, context, results, seed ); + } + } + + // Do not sort if this is a single filter + return len === 1 ? results : Sizzle.uniqueSort( results ); +} + +function tokenize( selector, context, xml ) { + var tokens, soFar, type, + groups = [], + i = 0, + + // Catch obvious selector issues: terminal ")"; nonempty fallback match + // rselector never fails to match *something* + match = rselector.exec( selector ), + matched = !match.pop() && !match.pop(), + selectorGroups = matched && selector.match( rgroups ) || [""], + + preFilters = Expr.preFilter, + filters = Expr.filter, + checkContext = !xml && context !== document; + + for ( ; (soFar = selectorGroups[i]) != null && matched; i++ ) { + groups.push( tokens = [] ); + + // Need to make sure we're within a narrower context if necessary + // Adding a descendant combinator will generate what is needed + if ( checkContext ) { + soFar = " " + soFar; + } + + while ( soFar ) { + matched = false; + + // Combinators + if ( (match = rcombinators.exec( soFar )) ) { + soFar = soFar.slice( match[0].length ); + + // Cast descendant combinators to space + matched = tokens.push({ part: match.pop().replace( rtrim, " " ), captures: match }); + } + + // Filters + for ( type in filters ) { + if ( (match = matchExpr[ type ].exec( soFar )) && (!preFilters[ type ] || + (match = preFilters[ type ]( match, context, xml )) ) ) { + + soFar = soFar.slice( match.shift().length ); + matched = tokens.push({ part: type, captures: match }); + } + } + + if ( !matched ) { + break; + } + } + } + + if ( !matched ) { + Sizzle.error( selector ); + } + + return groups; +} + +function addCombinator( matcher, combinator, context ) { + var dir = combinator.dir, + doneName = done++; + + if ( !matcher ) { + // If there is no matcher to check, check against the context + matcher = function( elem ) { + return elem === context; + }; + } + return combinator.first ? + function( elem, context ) { + while ( (elem = elem[ dir ]) ) { + if ( elem.nodeType === 1 ) { + return matcher( elem, context ) && elem; + } + } + } : + function( elem, context ) { + var cache, + dirkey = doneName + "." + dirruns, + cachedkey = dirkey + "." + cachedruns; + while ( (elem = elem[ dir ]) ) { + if ( elem.nodeType === 1 ) { + if ( (cache = elem[ expando ]) === cachedkey ) { + return elem.sizset; + } else if ( typeof cache === "string" && cache.indexOf(dirkey) === 0 ) { + if ( elem.sizset ) { + return elem; + } + } else { + elem[ expando ] = cachedkey; + if ( matcher( elem, context ) ) { + elem.sizset = true; + return elem; + } + elem.sizset = false; + } + } + } + }; +} + +function addMatcher( higher, deeper ) { + return higher ? + function( elem, context ) { + var result = deeper( elem, context ); + return result && higher( result === true ? elem : result, context ); + } : + deeper; +} + +// ["TAG", ">", "ID", " ", "CLASS"] +function matcherFromTokens( tokens, context, xml ) { + var token, matcher, + i = 0; + + for ( ; (token = tokens[i]); i++ ) { + if ( Expr.relative[ token.part ] ) { + matcher = addCombinator( matcher, Expr.relative[ token.part ], context ); + } else { + token.captures.push( context, xml ); + matcher = addMatcher( matcher, Expr.filter[ token.part ].apply( null, token.captures ) ); + } + } + + return matcher; +} + +function matcherFromGroupMatchers( matchers ) { + return function( elem, context ) { + var matcher, + j = 0; + for ( ; (matcher = matchers[j]); j++ ) { + if ( matcher(elem, context) ) { + return true; + } + } + return false; + }; +} + +var compile = Sizzle.compile = function( selector, context, xml ) { + var tokens, group, i, + cached = compilerCache[ selector ]; + + // Return a cached group function if already generated (context dependent) + if ( cached && cached.context === context ) { + return cached; + } + + // Generate a function of recursive functions that can be used to check each element + group = tokenize( selector, context, xml ); + for ( i = 0; (tokens = group[i]); i++ ) { + group[i] = matcherFromTokens( tokens, context, xml ); + } + + // Cache the compiled function + cached = compilerCache[ selector ] = matcherFromGroupMatchers( group ); + cached.context = context; + cached.runs = cached.dirruns = 0; + cachedSelectors.push( selector ); + // Ensure only the most recent are cached + if ( cachedSelectors.length > Expr.cacheLength ) { + delete compilerCache[ cachedSelectors.shift() ]; + } + return cached; +}; + +Sizzle.matches = function( expr, elements ) { + return Sizzle( expr, null, null, elements ); +}; + +Sizzle.matchesSelector = function( elem, expr ) { + return Sizzle( expr, null, null, [ elem ] ).length > 0; +}; + +var select = function( selector, context, results, seed, xml ) { + // Remove excessive whitespace + selector = selector.replace( rtrim, "$1" ); + var elements, matcher, i, len, elem, token, + type, findContext, notTokens, + match = selector.match( rgroups ), + tokens = selector.match( rtokens ), + contextNodeType = context.nodeType; + + // POS handling + if ( matchExpr["POS"].test(selector) ) { + return handlePOS( selector, context, results, seed, match ); + } + + if ( seed ) { + elements = slice.call( seed, 0 ); + + // To maintain document order, only narrow the + // set if there is one group + } else if ( match && match.length === 1 ) { + + // Take a shortcut and set the context if the root selector is an ID + if ( tokens.length > 1 && contextNodeType === 9 && !xml && + (match = matchExpr["ID"].exec( tokens[0] )) ) { + + context = Expr.find["ID"]( match[1], context, xml )[0]; + if ( !context ) { + return results; + } + + selector = selector.slice( tokens.shift().length ); + } + + findContext = ( (match = rsibling.exec( tokens[0] )) && !match.index && context.parentNode ) || context; + + // Get the last token, excluding :not + notTokens = tokens.pop(); + token = notTokens.split(":not")[0]; + + for ( i = 0, len = Expr.order.length; i < len; i++ ) { + type = Expr.order[i]; + + if ( (match = matchExpr[ type ].exec( token )) ) { + elements = Expr.find[ type ]( (match[1] || "").replace( rbackslash, "" ), findContext, xml ); + + if ( elements == null ) { + continue; + } + + if ( token === notTokens ) { + selector = selector.slice( 0, selector.length - notTokens.length ) + + token.replace( matchExpr[ type ], "" ); + + if ( !selector ) { + push.apply( results, slice.call(elements, 0) ); + } + } + break; + } + } + } + + // Only loop over the given elements once + // If selector is empty, we're already done + if ( selector ) { + matcher = compile( selector, context, xml ); + dirruns = matcher.dirruns++; + + if ( elements == null ) { + elements = Expr.find["TAG"]( "*", (rsibling.test( selector ) && context.parentNode) || context ); + } + for ( i = 0; (elem = elements[i]); i++ ) { + cachedruns = matcher.runs++; + if ( matcher(elem, context) ) { + results.push( elem ); + } + } + } + + return results; +}; + +if ( document.querySelectorAll ) { + (function() { + var disconnectedMatch, + oldSelect = select, + rescape = /'|\\/g, + rattributeQuotes = /\=[\x20\t\r\n\f]*([^'"\]]*)[\x20\t\r\n\f]*\]/g, + rbuggyQSA = [], + // matchesSelector(:active) reports false when true (IE9/Opera 11.5) + // A support test would require too much code (would include document ready) + // just skip matchesSelector for :active + rbuggyMatches = [":active"], + matches = docElem.matchesSelector || + docElem.mozMatchesSelector || + docElem.webkitMatchesSelector || + docElem.oMatchesSelector || + docElem.msMatchesSelector; + + // Build QSA regex + // Regex strategy adopted from Diego Perini + assert(function( div ) { + div.innerHTML = ""; + + // IE8 - Some boolean attributes are not treated correctly + if ( !div.querySelectorAll("[selected]").length ) { + rbuggyQSA.push( "\\[" + whitespace + "*(?:checked|disabled|ismap|multiple|readonly|selected|value)" ); + } + + // Webkit/Opera - :checked should return selected option elements + // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked + // IE8 throws error here (do not put tests after this one) + if ( !div.querySelectorAll(":checked").length ) { + rbuggyQSA.push(":checked"); + } + }); + + assert(function( div ) { + + // Opera 10-12/IE9 - ^= $= *= and empty values + // Should not select anything + div.innerHTML = "

      "; + if ( div.querySelectorAll("[test^='']").length ) { + rbuggyQSA.push( "[*^$]=" + whitespace + "*(?:\"\"|'')" ); + } + + // FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled) + // IE8 throws error here (do not put tests after this one) + div.innerHTML = ""; + if ( !div.querySelectorAll(":enabled").length ) { + rbuggyQSA.push(":enabled", ":disabled"); + } + }); + + rbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join("|") ); + + select = function( selector, context, results, seed, xml ) { + // Only use querySelectorAll when not filtering, + // when this is not xml, + // and when no QSA bugs apply + if ( !seed && !xml && (!rbuggyQSA || !rbuggyQSA.test( selector )) ) { + if ( context.nodeType === 9 ) { + try { + push.apply( results, slice.call(context.querySelectorAll( selector ), 0) ); + return results; + } catch(qsaError) {} + // qSA works strangely on Element-rooted queries + // We can work around this by specifying an extra ID on the root + // and working up from there (Thanks to Andrew Dupont for the technique) + // IE 8 doesn't work on object elements + } else if ( context.nodeType === 1 && context.nodeName.toLowerCase() !== "object" ) { + var old = context.getAttribute("id"), + nid = old || expando, + newContext = rsibling.test( selector ) && context.parentNode || context; + + if ( old ) { + nid = nid.replace( rescape, "\\$&" ); + } else { + context.setAttribute( "id", nid ); + } + + try { + push.apply( results, slice.call( newContext.querySelectorAll( + selector.replace( rgroups, "[id='" + nid + "'] $&" ) + ), 0 ) ); + return results; + } catch(qsaError) { + } finally { + if ( !old ) { + context.removeAttribute("id"); + } + } + } + } + + return oldSelect( selector, context, results, seed, xml ); + }; + + if ( matches ) { + assert(function( div ) { + // Check to see if it's possible to do matchesSelector + // on a disconnected node (IE 9) + disconnectedMatch = matches.call( div, "div" ); + + // This should fail with an exception + // Gecko does not error, returns false instead + try { + matches.call( div, "[test!='']:sizzle" ); + rbuggyMatches.push( Expr.match.PSEUDO ); + } catch ( e ) {} + }); + + // rbuggyMatches always contains :active, so no need for a length check + rbuggyMatches = /* rbuggyMatches.length && */ new RegExp( rbuggyMatches.join("|") ); + + Sizzle.matchesSelector = function( elem, expr ) { + // Make sure that attribute selectors are quoted + expr = expr.replace( rattributeQuotes, "='$1']" ); + + // rbuggyMatches always contains :active, so no need for an existence check + if ( !isXML( elem ) && !rbuggyMatches.test( expr ) && (!rbuggyQSA || !rbuggyQSA.test( expr )) ) { + try { + var ret = matches.call( elem, expr ); + + // IE 9's matchesSelector returns false on disconnected nodes + if ( ret || disconnectedMatch || + // As well, disconnected nodes are said to be in a document + // fragment in IE 9 + elem.document && elem.document.nodeType !== 11 ) { + return ret; + } + } catch(e) {} + } + + return Sizzle( expr, null, null, [ elem ] ).length > 0; + }; + } + })(); +} + +// Override sizzle attribute retrieval +Sizzle.attr = jQuery.attr; +jQuery.find = Sizzle; +jQuery.expr = Sizzle.selectors; +jQuery.expr[":"] = jQuery.expr.pseudos; +jQuery.unique = Sizzle.uniqueSort; +jQuery.text = Sizzle.getText; +jQuery.isXMLDoc = Sizzle.isXML; +jQuery.contains = Sizzle.contains; + + +})( window ); +var runtil = /Until$/, + rparentsprev = /^(?:parents|prev(?:Until|All))/, + isSimple = /^.[^:#\[\.,]*$/, + rneedsContext = jQuery.expr.match.needsContext, + // methods guaranteed to produce a unique set when starting from a unique set + guaranteedUnique = { + children: true, + contents: true, + next: true, + prev: true + }; + +jQuery.fn.extend({ + find: function( selector ) { + var i, l, length, n, r, ret, + self = this; + + if ( typeof selector !== "string" ) { + return jQuery( selector ).filter(function() { + for ( i = 0, l = self.length; i < l; i++ ) { + if ( jQuery.contains( self[ i ], this ) ) { + return true; + } + } + }); + } + + ret = this.pushStack( "", "find", selector ); + + for ( i = 0, l = this.length; i < l; i++ ) { + length = ret.length; + jQuery.find( selector, this[i], ret ); + + if ( i > 0 ) { + // Make sure that the results are unique + for ( n = length; n < ret.length; n++ ) { + for ( r = 0; r < length; r++ ) { + if ( ret[r] === ret[n] ) { + ret.splice(n--, 1); + break; + } + } + } + } + } + + return ret; + }, + + has: function( target ) { + var i, + targets = jQuery( target, this ), + len = targets.length; + + return this.filter(function() { + for ( i = 0; i < len; i++ ) { + if ( jQuery.contains( this, targets[i] ) ) { + return true; + } + } + }); + }, + + not: function( selector ) { + return this.pushStack( winnow(this, selector, false), "not", selector); + }, + + filter: function( selector ) { + return this.pushStack( winnow(this, selector, true), "filter", selector ); + }, + + is: function( selector ) { + return !!selector && ( + typeof selector === "string" ? + // If this is a positional/relative selector, check membership in the returned set + // so $("p:first").is("p:last") won't return true for a doc with two "p". + rneedsContext.test( selector ) ? + jQuery( selector, this.context ).index( this[0] ) >= 0 : + jQuery.filter( selector, this ).length > 0 : + this.filter( selector ).length > 0 ); + }, + + closest: function( selectors, context ) { + var cur, + i = 0, + l = this.length, + ret = [], + pos = rneedsContext.test( selectors ) || typeof selectors !== "string" ? + jQuery( selectors, context || this.context ) : + 0; + + for ( ; i < l; i++ ) { + cur = this[i]; + + while ( cur && cur.ownerDocument && cur !== context && cur.nodeType !== 11 ) { + if ( pos ? pos.index(cur) > -1 : jQuery.find.matchesSelector(cur, selectors) ) { + ret.push( cur ); + break; + } + cur = cur.parentNode; + } + } + + ret = ret.length > 1 ? jQuery.unique( ret ) : ret; + + return this.pushStack( ret, "closest", selectors ); + }, + + // Determine the position of an element within + // the matched set of elements + index: function( elem ) { + + // No argument, return index in parent + if ( !elem ) { + return ( this[0] && this[0].parentNode ) ? this.prevAll().length : -1; + } + + // index in selector + if ( typeof elem === "string" ) { + return jQuery.inArray( this[0], jQuery( elem ) ); + } + + // Locate the position of the desired element + return jQuery.inArray( + // If it receives a jQuery object, the first element is used + elem.jquery ? elem[0] : elem, this ); + }, + + add: function( selector, context ) { + var set = typeof selector === "string" ? + jQuery( selector, context ) : + jQuery.makeArray( selector && selector.nodeType ? [ selector ] : selector ), + all = jQuery.merge( this.get(), set ); + + return this.pushStack( isDisconnected( set[0] ) || isDisconnected( all[0] ) ? + all : + jQuery.unique( all ) ); + }, + + addBack: function( selector ) { + return this.add( selector == null ? + this.prevObject : this.prevObject.filter(selector) + ); + } +}); + +jQuery.fn.andSelf = jQuery.fn.addBack; + +// A painfully simple check to see if an element is disconnected +// from a document (should be improved, where feasible). +function isDisconnected( node ) { + return !node || !node.parentNode || node.parentNode.nodeType === 11; +} + +function sibling( cur, dir ) { + do { + cur = cur[ dir ]; + } while ( cur && cur.nodeType !== 1 ); + + return cur; +} + +jQuery.each({ + parent: function( elem ) { + var parent = elem.parentNode; + return parent && parent.nodeType !== 11 ? parent : null; + }, + parents: function( elem ) { + return jQuery.dir( elem, "parentNode" ); + }, + parentsUntil: function( elem, i, until ) { + return jQuery.dir( elem, "parentNode", until ); + }, + next: function( elem ) { + return sibling( elem, "nextSibling" ); + }, + prev: function( elem ) { + return sibling( elem, "previousSibling" ); + }, + nextAll: function( elem ) { + return jQuery.dir( elem, "nextSibling" ); + }, + prevAll: function( elem ) { + return jQuery.dir( elem, "previousSibling" ); + }, + nextUntil: function( elem, i, until ) { + return jQuery.dir( elem, "nextSibling", until ); + }, + prevUntil: function( elem, i, until ) { + return jQuery.dir( elem, "previousSibling", until ); + }, + siblings: function( elem ) { + return jQuery.sibling( ( elem.parentNode || {} ).firstChild, elem ); + }, + children: function( elem ) { + return jQuery.sibling( elem.firstChild ); + }, + contents: function( elem ) { + return jQuery.nodeName( elem, "iframe" ) ? + elem.contentDocument || elem.contentWindow.document : + jQuery.merge( [], elem.childNodes ); + } +}, function( name, fn ) { + jQuery.fn[ name ] = function( until, selector ) { + var ret = jQuery.map( this, fn, until ); + + if ( !runtil.test( name ) ) { + selector = until; + } + + if ( selector && typeof selector === "string" ) { + ret = jQuery.filter( selector, ret ); + } + + ret = this.length > 1 && !guaranteedUnique[ name ] ? jQuery.unique( ret ) : ret; + + if ( this.length > 1 && rparentsprev.test( name ) ) { + ret = ret.reverse(); + } + + return this.pushStack( ret, name, core_slice.call( arguments ).join(",") ); + }; +}); + +jQuery.extend({ + filter: function( expr, elems, not ) { + if ( not ) { + expr = ":not(" + expr + ")"; + } + + return elems.length === 1 ? + jQuery.find.matchesSelector(elems[0], expr) ? [ elems[0] ] : [] : + jQuery.find.matches(expr, elems); + }, + + dir: function( elem, dir, until ) { + var matched = [], + cur = elem[ dir ]; + + while ( cur && cur.nodeType !== 9 && (until === undefined || cur.nodeType !== 1 || !jQuery( cur ).is( until )) ) { + if ( cur.nodeType === 1 ) { + matched.push( cur ); + } + cur = cur[dir]; + } + return matched; + }, + + sibling: function( n, elem ) { + var r = []; + + for ( ; n; n = n.nextSibling ) { + if ( n.nodeType === 1 && n !== elem ) { + r.push( n ); + } + } + + return r; + } +}); + +// Implement the identical functionality for filter and not +function winnow( elements, qualifier, keep ) { + + // Can't pass null or undefined to indexOf in Firefox 4 + // Set to 0 to skip string check + qualifier = qualifier || 0; + + if ( jQuery.isFunction( qualifier ) ) { + return jQuery.grep(elements, function( elem, i ) { + var retVal = !!qualifier.call( elem, i, elem ); + return retVal === keep; + }); + + } else if ( qualifier.nodeType ) { + return jQuery.grep(elements, function( elem, i ) { + return ( elem === qualifier ) === keep; + }); + + } else if ( typeof qualifier === "string" ) { + var filtered = jQuery.grep(elements, function( elem ) { + return elem.nodeType === 1; + }); + + if ( isSimple.test( qualifier ) ) { + return jQuery.filter(qualifier, filtered, !keep); + } else { + qualifier = jQuery.filter( qualifier, filtered ); + } + } + + return jQuery.grep(elements, function( elem, i ) { + return ( jQuery.inArray( elem, qualifier ) >= 0 ) === keep; + }); +} +function createSafeFragment( document ) { + var list = nodeNames.split( "|" ), + safeFrag = document.createDocumentFragment(); + + if ( safeFrag.createElement ) { + while ( list.length ) { + safeFrag.createElement( + list.pop() + ); + } + } + return safeFrag; +} + +var nodeNames = "abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|" + + "header|hgroup|mark|meter|nav|output|progress|section|summary|time|video", + rinlinejQuery = / jQuery\d+="(?:null|\d+)"/g, + rleadingWhitespace = /^\s+/, + rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi, + rtagName = /<([\w:]+)/, + rtbody = /
      ", "
      " ], + tr: [ 2, "", "
      " ], + td: [ 3, "", "
      " ], + col: [ 2, "", "
      " ], + area: [ 1, "", "" ], + _default: [ 0, "", "" ] + }, + safeFragment = createSafeFragment( document ), + fragmentDiv = safeFragment.appendChild( document.createElement("div") ); + +wrapMap.optgroup = wrapMap.option; +wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead; +wrapMap.th = wrapMap.td; + +// IE6-8 can't serialize link, script, style, or any html5 (NoScope) tags, +// unless wrapped in a div with non-breaking characters in front of it. +if ( !jQuery.support.htmlSerialize ) { + wrapMap._default = [ 1, "X
      ", "
      " ]; +} + +jQuery.fn.extend({ + text: function( value ) { + return jQuery.access( this, function( value ) { + return value === undefined ? + jQuery.text( this ) : + this.empty().append( ( this[0] && this[0].ownerDocument || document ).createTextNode( value ) ); + }, null, value, arguments.length ); + }, + + wrapAll: function( html ) { + if ( jQuery.isFunction( html ) ) { + return this.each(function(i) { + jQuery(this).wrapAll( html.call(this, i) ); + }); + } + + if ( this[0] ) { + // The elements to wrap the target around + var wrap = jQuery( html, this[0].ownerDocument ).eq(0).clone(true); + + if ( this[0].parentNode ) { + wrap.insertBefore( this[0] ); + } + + wrap.map(function() { + var elem = this; + + while ( elem.firstChild && elem.firstChild.nodeType === 1 ) { + elem = elem.firstChild; + } + + return elem; + }).append( this ); + } + + return this; + }, + + wrapInner: function( html ) { + if ( jQuery.isFunction( html ) ) { + return this.each(function(i) { + jQuery(this).wrapInner( html.call(this, i) ); + }); + } + + return this.each(function() { + var self = jQuery( this ), + contents = self.contents(); + + if ( contents.length ) { + contents.wrapAll( html ); + + } else { + self.append( html ); + } + }); + }, + + wrap: function( html ) { + var isFunction = jQuery.isFunction( html ); + + return this.each(function(i) { + jQuery( this ).wrapAll( isFunction ? html.call(this, i) : html ); + }); + }, + + unwrap: function() { + return this.parent().each(function() { + if ( !jQuery.nodeName( this, "body" ) ) { + jQuery( this ).replaceWith( this.childNodes ); + } + }).end(); + }, + + append: function() { + return this.domManip(arguments, true, function( elem ) { + if ( this.nodeType === 1 || this.nodeType === 11 ) { + this.appendChild( elem ); + } + }); + }, + + prepend: function() { + return this.domManip(arguments, true, function( elem ) { + if ( this.nodeType === 1 || this.nodeType === 11 ) { + this.insertBefore( elem, this.firstChild ); + } + }); + }, + + before: function() { + if ( !isDisconnected( this[0] ) ) { + return this.domManip(arguments, false, function( elem ) { + this.parentNode.insertBefore( elem, this ); + }); + } + + if ( arguments.length ) { + var set = jQuery.clean( arguments ); + return this.pushStack( jQuery.merge( set, this ), "before", this.selector ); + } + }, + + after: function() { + if ( !isDisconnected( this[0] ) ) { + return this.domManip(arguments, false, function( elem ) { + this.parentNode.insertBefore( elem, this.nextSibling ); + }); + } + + if ( arguments.length ) { + var set = jQuery.clean( arguments ); + return this.pushStack( jQuery.merge( this, set ), "after", this.selector ); + } + }, + + // keepData is for internal use only--do not document + remove: function( selector, keepData ) { + var elem, + i = 0; + + for ( ; (elem = this[i]) != null; i++ ) { + if ( !selector || jQuery.filter( selector, [ elem ] ).length ) { + if ( !keepData && elem.nodeType === 1 ) { + jQuery.cleanData( elem.getElementsByTagName("*") ); + jQuery.cleanData( [ elem ] ); + } + + if ( elem.parentNode ) { + elem.parentNode.removeChild( elem ); + } + } + } + + return this; + }, + + empty: function() { + var elem, + i = 0; + + for ( ; (elem = this[i]) != null; i++ ) { + // Remove element nodes and prevent memory leaks + if ( elem.nodeType === 1 ) { + jQuery.cleanData( elem.getElementsByTagName("*") ); + } + + // Remove any remaining nodes + while ( elem.firstChild ) { + elem.removeChild( elem.firstChild ); + } + } + + return this; + }, + + clone: function( dataAndEvents, deepDataAndEvents ) { + dataAndEvents = dataAndEvents == null ? false : dataAndEvents; + deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents; + + return this.map( function () { + return jQuery.clone( this, dataAndEvents, deepDataAndEvents ); + }); + }, + + html: function( value ) { + return jQuery.access( this, function( value ) { + var elem = this[0] || {}, + i = 0, + l = this.length; + + if ( value === undefined ) { + return elem.nodeType === 1 ? + elem.innerHTML.replace( rinlinejQuery, "" ) : + undefined; + } + + // See if we can take a shortcut and just use innerHTML + if ( typeof value === "string" && !rnoInnerhtml.test( value ) && + ( jQuery.support.htmlSerialize || !rnoshimcache.test( value ) ) && + ( jQuery.support.leadingWhitespace || !rleadingWhitespace.test( value ) ) && + !wrapMap[ ( rtagName.exec( value ) || ["", ""] )[1].toLowerCase() ] ) { + + value = value.replace( rxhtmlTag, "<$1>" ); + + try { + for (; i < l; i++ ) { + // Remove element nodes and prevent memory leaks + elem = this[i] || {}; + if ( elem.nodeType === 1 ) { + jQuery.cleanData( elem.getElementsByTagName( "*" ) ); + elem.innerHTML = value; + } + } + + elem = 0; + + // If using innerHTML throws an exception, use the fallback method + } catch(e) {} + } + + if ( elem ) { + this.empty().append( value ); + } + }, null, value, arguments.length ); + }, + + replaceWith: function( value ) { + if ( !isDisconnected( this[0] ) ) { + // Make sure that the elements are removed from the DOM before they are inserted + // this can help fix replacing a parent with child elements + if ( jQuery.isFunction( value ) ) { + return this.each(function(i) { + var self = jQuery(this), old = self.html(); + self.replaceWith( value.call( this, i, old ) ); + }); + } + + if ( typeof value !== "string" ) { + value = jQuery( value ).detach(); + } + + return this.each(function() { + var next = this.nextSibling, + parent = this.parentNode; + + jQuery( this ).remove(); + + if ( next ) { + jQuery(next).before( value ); + } else { + jQuery(parent).append( value ); + } + }); + } + + return this.length ? + this.pushStack( jQuery(jQuery.isFunction(value) ? value() : value), "replaceWith", value ) : + this; + }, + + detach: function( selector ) { + return this.remove( selector, true ); + }, + + domManip: function( args, table, callback ) { + + // Flatten any nested arrays + args = [].concat.apply( [], args ); + + var results, first, fragment, iNoClone, + i = 0, + value = args[0], + scripts = [], + l = this.length; + + // We can't cloneNode fragments that contain checked, in WebKit + if ( !jQuery.support.checkClone && l > 1 && typeof value === "string" && rchecked.test( value ) ) { + return this.each(function() { + jQuery(this).domManip( args, table, callback ); + }); + } + + if ( jQuery.isFunction(value) ) { + return this.each(function(i) { + var self = jQuery(this); + args[0] = value.call( this, i, table ? self.html() : undefined ); + self.domManip( args, table, callback ); + }); + } + + if ( this[0] ) { + results = jQuery.buildFragment( args, this, scripts ); + fragment = results.fragment; + first = fragment.firstChild; + + if ( fragment.childNodes.length === 1 ) { + fragment = first; + } + + if ( first ) { + table = table && jQuery.nodeName( first, "tr" ); + + // Use the original fragment for the last item instead of the first because it can end up + // being emptied incorrectly in certain situations (#8070). + // Fragments from the fragment cache must always be cloned and never used in place. + for ( iNoClone = results.cacheable || l - 1; i < l; i++ ) { + callback.call( + table && jQuery.nodeName( this[i], "table" ) ? + findOrAppend( this[i], "tbody" ) : + this[i], + i === iNoClone ? + fragment : + jQuery.clone( fragment, true, true ) + ); + } + } + + // Fix #11809: Avoid leaking memory + fragment = first = null; + + if ( scripts.length ) { + jQuery.each( scripts, function( i, elem ) { + if ( elem.src ) { + if ( jQuery.ajax ) { + jQuery.ajax({ + url: elem.src, + type: "GET", + dataType: "script", + async: false, + global: false, + "throws": true + }); + } else { + jQuery.error("no ajax"); + } + } else { + jQuery.globalEval( ( elem.text || elem.textContent || elem.innerHTML || "" ).replace( rcleanScript, "" ) ); + } + + if ( elem.parentNode ) { + elem.parentNode.removeChild( elem ); + } + }); + } + } + + return this; + } +}); + +function findOrAppend( elem, tag ) { + return elem.getElementsByTagName( tag )[0] || elem.appendChild( elem.ownerDocument.createElement( tag ) ); +} + +function cloneCopyEvent( src, dest ) { + + if ( dest.nodeType !== 1 || !jQuery.hasData( src ) ) { + return; + } + + var type, i, l, + oldData = jQuery._data( src ), + curData = jQuery._data( dest, oldData ), + events = oldData.events; + + if ( events ) { + delete curData.handle; + curData.events = {}; + + for ( type in events ) { + for ( i = 0, l = events[ type ].length; i < l; i++ ) { + jQuery.event.add( dest, type, events[ type ][ i ] ); + } + } + } + + // make the cloned public data object a copy from the original + if ( curData.data ) { + curData.data = jQuery.extend( {}, curData.data ); + } +} + +function cloneFixAttributes( src, dest ) { + var nodeName; + + // We do not need to do anything for non-Elements + if ( dest.nodeType !== 1 ) { + return; + } + + // clearAttributes removes the attributes, which we don't want, + // but also removes the attachEvent events, which we *do* want + if ( dest.clearAttributes ) { + dest.clearAttributes(); + } + + // mergeAttributes, in contrast, only merges back on the + // original attributes, not the events + if ( dest.mergeAttributes ) { + dest.mergeAttributes( src ); + } + + nodeName = dest.nodeName.toLowerCase(); + + if ( nodeName === "object" ) { + // IE6-10 improperly clones children of object elements using classid. + // IE10 throws NoModificationAllowedError if parent is null, #12132. + if ( dest.parentNode ) { + dest.outerHTML = src.outerHTML; + } + + // This path appears unavoidable for IE9. When cloning an object + // element in IE9, the outerHTML strategy above is not sufficient. + // If the src has innerHTML and the destination does not, + // copy the src.innerHTML into the dest.innerHTML. #10324 + if ( jQuery.support.html5Clone && (src.innerHTML && !jQuery.trim(dest.innerHTML)) ) { + dest.innerHTML = src.innerHTML; + } + + } else if ( nodeName === "input" && rcheckableType.test( src.type ) ) { + // IE6-8 fails to persist the checked state of a cloned checkbox + // or radio button. Worse, IE6-7 fail to give the cloned element + // a checked appearance if the defaultChecked value isn't also set + + dest.defaultChecked = dest.checked = src.checked; + + // IE6-7 get confused and end up setting the value of a cloned + // checkbox/radio button to an empty string instead of "on" + if ( dest.value !== src.value ) { + dest.value = src.value; + } + + // IE6-8 fails to return the selected option to the default selected + // state when cloning options + } else if ( nodeName === "option" ) { + dest.selected = src.defaultSelected; + + // IE6-8 fails to set the defaultValue to the correct value when + // cloning other types of input fields + } else if ( nodeName === "input" || nodeName === "textarea" ) { + dest.defaultValue = src.defaultValue; + + // IE blanks contents when cloning scripts + } else if ( nodeName === "script" && dest.text !== src.text ) { + dest.text = src.text; + } + + // Event data gets referenced instead of copied if the expando + // gets copied too + dest.removeAttribute( jQuery.expando ); +} + +jQuery.buildFragment = function( args, context, scripts ) { + var fragment, cacheable, cachehit, + first = args[ 0 ]; + + // Set context from what may come in as undefined or a jQuery collection or a node + context = context || document; + context = (context[0] || context).ownerDocument || context[0] || context; + + // Ensure that an attr object doesn't incorrectly stand in as a document object + // Chrome and Firefox seem to allow this to occur and will throw exception + // Fixes #8950 + if ( typeof context.createDocumentFragment === "undefined" ) { + context = document; + } + + // Only cache "small" (1/2 KB) HTML strings that are associated with the main document + // Cloning options loses the selected state, so don't cache them + // IE 6 doesn't like it when you put or elements in a fragment + // Also, WebKit does not clone 'checked' attributes on cloneNode, so don't cache + // Lastly, IE6,7,8 will not correctly reuse cached fragments that were created from unknown elems #10501 + if ( args.length === 1 && typeof first === "string" && first.length < 512 && context === document && + first.charAt(0) === "<" && !rnocache.test( first ) && + (jQuery.support.checkClone || !rchecked.test( first )) && + (jQuery.support.html5Clone || !rnoshimcache.test( first )) ) { + + // Mark cacheable and look for a hit + cacheable = true; + fragment = jQuery.fragments[ first ]; + cachehit = fragment !== undefined; + } + + if ( !fragment ) { + fragment = context.createDocumentFragment(); + jQuery.clean( args, context, fragment, scripts ); + + // Update the cache, but only store false + // unless this is a second parsing of the same content + if ( cacheable ) { + jQuery.fragments[ first ] = cachehit && fragment; + } + } + + return { fragment: fragment, cacheable: cacheable }; +}; + +jQuery.fragments = {}; + +jQuery.each({ + appendTo: "append", + prependTo: "prepend", + insertBefore: "before", + insertAfter: "after", + replaceAll: "replaceWith" +}, function( name, original ) { + jQuery.fn[ name ] = function( selector ) { + var elems, + i = 0, + ret = [], + insert = jQuery( selector ), + l = insert.length, + parent = this.length === 1 && this[0].parentNode; + + if ( (parent == null || parent && parent.nodeType === 11 && parent.childNodes.length === 1) && l === 1 ) { + insert[ original ]( this[0] ); + return this; + } else { + for ( ; i < l; i++ ) { + elems = ( i > 0 ? this.clone(true) : this ).get(); + jQuery( insert[i] )[ original ]( elems ); + ret = ret.concat( elems ); + } + + return this.pushStack( ret, name, insert.selector ); + } + }; +}); + +function getAll( elem ) { + if ( typeof elem.getElementsByTagName !== "undefined" ) { + return elem.getElementsByTagName( "*" ); + + } else if ( typeof elem.querySelectorAll !== "undefined" ) { + return elem.querySelectorAll( "*" ); + + } else { + return []; + } +} + +// Used in clean, fixes the defaultChecked property +function fixDefaultChecked( elem ) { + if ( rcheckableType.test( elem.type ) ) { + elem.defaultChecked = elem.checked; + } +} + +jQuery.extend({ + clone: function( elem, dataAndEvents, deepDataAndEvents ) { + var srcElements, + destElements, + i, + clone; + + if ( jQuery.support.html5Clone || jQuery.isXMLDoc(elem) || !rnoshimcache.test( "<" + elem.nodeName + ">" ) ) { + clone = elem.cloneNode( true ); + + // IE<=8 does not properly clone detached, unknown element nodes + } else { + fragmentDiv.innerHTML = elem.outerHTML; + fragmentDiv.removeChild( clone = fragmentDiv.firstChild ); + } + + if ( (!jQuery.support.noCloneEvent || !jQuery.support.noCloneChecked) && + (elem.nodeType === 1 || elem.nodeType === 11) && !jQuery.isXMLDoc(elem) ) { + // IE copies events bound via attachEvent when using cloneNode. + // Calling detachEvent on the clone will also remove the events + // from the original. In order to get around this, we use some + // proprietary methods to clear the events. Thanks to MooTools + // guys for this hotness. + + cloneFixAttributes( elem, clone ); + + // Using Sizzle here is crazy slow, so we use getElementsByTagName instead + srcElements = getAll( elem ); + destElements = getAll( clone ); + + // Weird iteration because IE will replace the length property + // with an element if you are cloning the body and one of the + // elements on the page has a name or id of "length" + for ( i = 0; srcElements[i]; ++i ) { + // Ensure that the destination node is not null; Fixes #9587 + if ( destElements[i] ) { + cloneFixAttributes( srcElements[i], destElements[i] ); + } + } + } + + // Copy the events from the original to the clone + if ( dataAndEvents ) { + cloneCopyEvent( elem, clone ); + + if ( deepDataAndEvents ) { + srcElements = getAll( elem ); + destElements = getAll( clone ); + + for ( i = 0; srcElements[i]; ++i ) { + cloneCopyEvent( srcElements[i], destElements[i] ); + } + } + } + + srcElements = destElements = null; + + // Return the cloned set + return clone; + }, + + clean: function( elems, context, fragment, scripts ) { + var j, safe, elem, tag, wrap, depth, div, hasBody, tbody, len, handleScript, jsTags, + i = 0, + ret = []; + + // Ensure that context is a document + if ( !context || typeof context.createDocumentFragment === "undefined" ) { + context = document; + } + + // Use the already-created safe fragment if context permits + for ( safe = context === document && safeFragment; (elem = elems[i]) != null; i++ ) { + if ( typeof elem === "number" ) { + elem += ""; + } + + if ( !elem ) { + continue; + } + + // Convert html string into DOM nodes + if ( typeof elem === "string" ) { + if ( !rhtml.test( elem ) ) { + elem = context.createTextNode( elem ); + } else { + // Ensure a safe container in which to render the html + safe = safe || createSafeFragment( context ); + div = div || safe.appendChild( context.createElement("div") ); + + // Fix "XHTML"-style tags in all browsers + elem = elem.replace(rxhtmlTag, "<$1>"); + + // Go to html and back, then peel off extra wrappers + tag = ( rtagName.exec( elem ) || ["", ""] )[1].toLowerCase(); + wrap = wrapMap[ tag ] || wrapMap._default; + depth = wrap[0]; + div.innerHTML = wrap[1] + elem + wrap[2]; + + // Move to the right depth + while ( depth-- ) { + div = div.lastChild; + } + + // Remove IE's autoinserted
      , *may* have spurious + hasBody = rtbody.test(elem); + tbody = tag === "table" && !hasBody ? + div.firstChild && div.firstChild.childNodes : + + // String was a bare or + wrap[1] === "
      " && !hasBody ? + div.childNodes : + []; + + for ( j = tbody.length - 1; j >= 0 ; --j ) { + if ( jQuery.nodeName( tbody[ j ], "tbody" ) && !tbody[ j ].childNodes.length ) { + tbody[ j ].parentNode.removeChild( tbody[ j ] ); + } + } + } + + // IE completely kills leading whitespace when innerHTML is used + if ( !jQuery.support.leadingWhitespace && rleadingWhitespace.test( elem ) ) { + div.insertBefore( context.createTextNode( rleadingWhitespace.exec(elem)[0] ), div.firstChild ); + } + + elem = div.childNodes; + + // Remember the top-level container for proper cleanup + div = safe.lastChild; + } + } + + if ( elem.nodeType ) { + ret.push( elem ); + } else { + ret = jQuery.merge( ret, elem ); + } + } + + // Fix #11356: Clear elements from safeFragment + if ( div ) { + safe.removeChild( div ); + elem = div = safe = null; + } + + // Reset defaultChecked for any radios and checkboxes + // about to be appended to the DOM in IE 6/7 (#8060) + if ( !jQuery.support.appendChecked ) { + for ( i = 0; (elem = ret[i]) != null; i++ ) { + if ( jQuery.nodeName( elem, "input" ) ) { + fixDefaultChecked( elem ); + } else if ( typeof elem.getElementsByTagName !== "undefined" ) { + jQuery.grep( elem.getElementsByTagName("input"), fixDefaultChecked ); + } + } + } + + // Append elements to a provided document fragment + if ( fragment ) { + // Special handling of each script element + handleScript = function( elem ) { + // Check if we consider it executable + if ( !elem.type || rscriptType.test( elem.type ) ) { + // Detach the script and store it in the scripts array (if provided) or the fragment + // Return truthy to indicate that it has been handled + return scripts ? + scripts.push( elem.parentNode ? elem.parentNode.removeChild( elem ) : elem ) : + fragment.appendChild( elem ); + } + }; + + for ( i = 0; (elem = ret[i]) != null; i++ ) { + // Check if we're done after handling an executable script + if ( !( jQuery.nodeName( elem, "script" ) && handleScript( elem ) ) ) { + // Append to fragment and handle embedded scripts + fragment.appendChild( elem ); + if ( typeof elem.getElementsByTagName !== "undefined" ) { + // handleScript alters the DOM, so use jQuery.merge to ensure snapshot iteration + jsTags = jQuery.grep( jQuery.merge( [], elem.getElementsByTagName("script") ), handleScript ); + + // Splice the scripts into ret after their former ancestor and advance our index beyond them + ret.splice.apply( ret, [i + 1, 0].concat( jsTags ) ); + i += jsTags.length; + } + } + } + } + + return ret; + }, + + cleanData: function( elems, /* internal */ acceptData ) { + var data, id, elem, type, + i = 0, + internalKey = jQuery.expando, + cache = jQuery.cache, + deleteExpando = jQuery.support.deleteExpando, + special = jQuery.event.special; + + for ( ; (elem = elems[i]) != null; i++ ) { + + if ( acceptData || jQuery.acceptData( elem ) ) { + + id = elem[ internalKey ]; + data = id && cache[ id ]; + + if ( data ) { + if ( data.events ) { + for ( type in data.events ) { + if ( special[ type ] ) { + jQuery.event.remove( elem, type ); + + // This is a shortcut to avoid jQuery.event.remove's overhead + } else { + jQuery.removeEvent( elem, type, data.handle ); + } + } + } + + // Remove cache only if it was not already removed by jQuery.event.remove + if ( cache[ id ] ) { + + delete cache[ id ]; + + // IE does not allow us to delete expando properties from nodes, + // nor does it have a removeAttribute function on Document nodes; + // we must handle all of these cases + if ( deleteExpando ) { + delete elem[ internalKey ]; + + } else if ( elem.removeAttribute ) { + elem.removeAttribute( internalKey ); + + } else { + elem[ internalKey ] = null; + } + + jQuery.deletedIds.push( id ); + } + } + } + } + } +}); +// Limit scope pollution from any deprecated API +(function() { + +var matched, browser; + +// Use of jQuery.browser is frowned upon. +// More details: http://api.jquery.com/jQuery.browser +// jQuery.uaMatch maintained for back-compat +jQuery.uaMatch = function( ua ) { + ua = ua.toLowerCase(); + + var match = /(chrome)[ \/]([\w.]+)/.exec( ua ) || + /(webkit)[ \/]([\w.]+)/.exec( ua ) || + /(opera)(?:.*version|)[ \/]([\w.]+)/.exec( ua ) || + /(msie) ([\w.]+)/.exec( ua ) || + ua.indexOf("compatible") < 0 && /(mozilla)(?:.*? rv:([\w.]+)|)/.exec( ua ) || + []; + + return { + browser: match[ 1 ] || "", + version: match[ 2 ] || "0" + }; +}; + +matched = jQuery.uaMatch( navigator.userAgent ); +browser = {}; + +if ( matched.browser ) { + browser[ matched.browser ] = true; + browser.version = matched.version; +} + +// Deprecated, use jQuery.browser.webkit instead +// Maintained for back-compat only +if ( browser.webkit ) { + browser.safari = true; +} + +jQuery.browser = browser; + +jQuery.sub = function() { + function jQuerySub( selector, context ) { + return new jQuerySub.fn.init( selector, context ); + } + jQuery.extend( true, jQuerySub, this ); + jQuerySub.superclass = this; + jQuerySub.fn = jQuerySub.prototype = this(); + jQuerySub.fn.constructor = jQuerySub; + jQuerySub.sub = this.sub; + jQuerySub.fn.init = function init( selector, context ) { + if ( context && context instanceof jQuery && !(context instanceof jQuerySub) ) { + context = jQuerySub( context ); + } + + return jQuery.fn.init.call( this, selector, context, rootjQuerySub ); + }; + jQuerySub.fn.init.prototype = jQuerySub.fn; + var rootjQuerySub = jQuerySub(document); + return jQuerySub; +}; + +})(); +var curCSS, iframe, iframeDoc, + ralpha = /alpha\([^)]*\)/i, + ropacity = /opacity=([^)]*)/, + rposition = /^(top|right|bottom|left)$/, + rmargin = /^margin/, + rnumsplit = new RegExp( "^(" + core_pnum + ")(.*)$", "i" ), + rnumnonpx = new RegExp( "^(" + core_pnum + ")(?!px)[a-z%]+$", "i" ), + rrelNum = new RegExp( "^([-+])=(" + core_pnum + ")", "i" ), + elemdisplay = {}, + + cssShow = { position: "absolute", visibility: "hidden", display: "block" }, + cssNormalTransform = { + letterSpacing: 0, + fontWeight: 400, + lineHeight: 1 + }, + + cssExpand = [ "Top", "Right", "Bottom", "Left" ], + cssPrefixes = [ "Webkit", "O", "Moz", "ms" ], + + eventsToggle = jQuery.fn.toggle; + +// return a css property mapped to a potentially vendor prefixed property +function vendorPropName( style, name ) { + + // shortcut for names that are not vendor prefixed + if ( name in style ) { + return name; + } + + // check for vendor prefixed names + var capName = name.charAt(0).toUpperCase() + name.slice(1), + origName = name, + i = cssPrefixes.length; + + while ( i-- ) { + name = cssPrefixes[ i ] + capName; + if ( name in style ) { + return name; + } + } + + return origName; +} + +function isHidden( elem, el ) { + elem = el || elem; + return jQuery.css( elem, "display" ) === "none" || !jQuery.contains( elem.ownerDocument, elem ); +} + +function showHide( elements, show ) { + var elem, display, + values = [], + index = 0, + length = elements.length; + + for ( ; index < length; index++ ) { + elem = elements[ index ]; + if ( !elem.style ) { + continue; + } + values[ index ] = jQuery._data( elem, "olddisplay" ); + if ( show ) { + // Reset the inline display of this element to learn if it is + // being hidden by cascaded rules or not + if ( !values[ index ] && elem.style.display === "none" ) { + elem.style.display = ""; + } + + // Set elements which have been overridden with display: none + // in a stylesheet to whatever the default browser style is + // for such an element + if ( elem.style.display === "" && isHidden( elem ) ) { + values[ index ] = jQuery._data( elem, "olddisplay", css_defaultDisplay(elem.nodeName) ); + } + } else { + display = curCSS( elem, "display" ); + + if ( !values[ index ] && display !== "none" ) { + jQuery._data( elem, "olddisplay", display ); + } + } + } + + // Set the display of most of the elements in a second loop + // to avoid the constant reflow + for ( index = 0; index < length; index++ ) { + elem = elements[ index ]; + if ( !elem.style ) { + continue; + } + if ( !show || elem.style.display === "none" || elem.style.display === "" ) { + elem.style.display = show ? values[ index ] || "" : "none"; + } + } + + return elements; +} + +jQuery.fn.extend({ + css: function( name, value ) { + return jQuery.access( this, function( elem, name, value ) { + return value !== undefined ? + jQuery.style( elem, name, value ) : + jQuery.css( elem, name ); + }, name, value, arguments.length > 1 ); + }, + show: function() { + return showHide( this, true ); + }, + hide: function() { + return showHide( this ); + }, + toggle: function( state, fn2 ) { + var bool = typeof state === "boolean"; + + if ( jQuery.isFunction( state ) && jQuery.isFunction( fn2 ) ) { + return eventsToggle.apply( this, arguments ); + } + + return this.each(function() { + if ( bool ? state : isHidden( this ) ) { + jQuery( this ).show(); + } else { + jQuery( this ).hide(); + } + }); + } +}); + +jQuery.extend({ + // Add in style property hooks for overriding the default + // behavior of getting and setting a style property + cssHooks: { + opacity: { + get: function( elem, computed ) { + if ( computed ) { + // We should always get a number back from opacity + var ret = curCSS( elem, "opacity" ); + return ret === "" ? "1" : ret; + + } + } + } + }, + + // Exclude the following css properties to add px + cssNumber: { + "fillOpacity": true, + "fontWeight": true, + "lineHeight": true, + "opacity": true, + "orphans": true, + "widows": true, + "zIndex": true, + "zoom": true + }, + + // Add in properties whose names you wish to fix before + // setting or getting the value + cssProps: { + // normalize float css property + "float": jQuery.support.cssFloat ? "cssFloat" : "styleFloat" + }, + + // Get and set the style property on a DOM Node + style: function( elem, name, value, extra ) { + // Don't set styles on text and comment nodes + if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) { + return; + } + + // Make sure that we're working with the right name + var ret, type, hooks, + origName = jQuery.camelCase( name ), + style = elem.style; + + name = jQuery.cssProps[ origName ] || ( jQuery.cssProps[ origName ] = vendorPropName( style, origName ) ); + + // gets hook for the prefixed version + // followed by the unprefixed version + hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ]; + + // Check if we're setting a value + if ( value !== undefined ) { + type = typeof value; + + // convert relative number strings (+= or -=) to relative numbers. #7345 + if ( type === "string" && (ret = rrelNum.exec( value )) ) { + value = ( ret[1] + 1 ) * ret[2] + parseFloat( jQuery.css( elem, name ) ); + // Fixes bug #9237 + type = "number"; + } + + // Make sure that NaN and null values aren't set. See: #7116 + if ( value == null || type === "number" && isNaN( value ) ) { + return; + } + + // If a number was passed in, add 'px' to the (except for certain CSS properties) + if ( type === "number" && !jQuery.cssNumber[ origName ] ) { + value += "px"; + } + + // If a hook was provided, use that value, otherwise just set the specified value + if ( !hooks || !("set" in hooks) || (value = hooks.set( elem, value, extra )) !== undefined ) { + // Wrapped to prevent IE from throwing errors when 'invalid' values are provided + // Fixes bug #5509 + try { + style[ name ] = value; + } catch(e) {} + } + + } else { + // If a hook was provided get the non-computed value from there + if ( hooks && "get" in hooks && (ret = hooks.get( elem, false, extra )) !== undefined ) { + return ret; + } + + // Otherwise just get the value from the style object + return style[ name ]; + } + }, + + css: function( elem, name, numeric, extra ) { + var val, num, hooks, + origName = jQuery.camelCase( name ); + + // Make sure that we're working with the right name + name = jQuery.cssProps[ origName ] || ( jQuery.cssProps[ origName ] = vendorPropName( elem.style, origName ) ); + + // gets hook for the prefixed version + // followed by the unprefixed version + hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ]; + + // If a hook was provided get the computed value from there + if ( hooks && "get" in hooks ) { + val = hooks.get( elem, true, extra ); + } + + // Otherwise, if a way to get the computed value exists, use that + if ( val === undefined ) { + val = curCSS( elem, name ); + } + + //convert "normal" to computed value + if ( val === "normal" && name in cssNormalTransform ) { + val = cssNormalTransform[ name ]; + } + + // Return, converting to number if forced or a qualifier was provided and val looks numeric + if ( numeric || extra !== undefined ) { + num = parseFloat( val ); + return numeric || jQuery.isNumeric( num ) ? num || 0 : val; + } + return val; + }, + + // A method for quickly swapping in/out CSS properties to get correct calculations + swap: function( elem, options, callback ) { + var ret, name, + old = {}; + + // Remember the old values, and insert the new ones + for ( name in options ) { + old[ name ] = elem.style[ name ]; + elem.style[ name ] = options[ name ]; + } + + ret = callback.call( elem ); + + // Revert the old values + for ( name in options ) { + elem.style[ name ] = old[ name ]; + } + + return ret; + } +}); + +// NOTE: To any future maintainer, we've used both window.getComputedStyle +// and getComputedStyle here to produce a better gzip size +if ( window.getComputedStyle ) { + curCSS = function( elem, name ) { + var ret, width, minWidth, maxWidth, + computed = getComputedStyle( elem, null ), + style = elem.style; + + if ( computed ) { + + ret = computed[ name ]; + if ( ret === "" && !jQuery.contains( elem.ownerDocument.documentElement, elem ) ) { + ret = jQuery.style( elem, name ); + } + + // A tribute to the "awesome hack by Dean Edwards" + // Chrome < 17 and Safari 5.0 uses "computed value" instead of "used value" for margin-right + // Safari 5.1.7 (at least) returns percentage for a larger set of values, but width seems to be reliably pixels + // this is against the CSSOM draft spec: http://dev.w3.org/csswg/cssom/#resolved-values + if ( rnumnonpx.test( ret ) && rmargin.test( name ) ) { + width = style.width; + minWidth = style.minWidth; + maxWidth = style.maxWidth; + + style.minWidth = style.maxWidth = style.width = ret; + ret = computed.width; + + style.width = width; + style.minWidth = minWidth; + style.maxWidth = maxWidth; + } + } + + return ret; + }; +} else if ( document.documentElement.currentStyle ) { + curCSS = function( elem, name ) { + var left, rsLeft, + ret = elem.currentStyle && elem.currentStyle[ name ], + style = elem.style; + + // Avoid setting ret to empty string here + // so we don't default to auto + if ( ret == null && style && style[ name ] ) { + ret = style[ name ]; + } + + // From the awesome hack by Dean Edwards + // http://erik.eae.net/archives/2007/07/27/18.54.15/#comment-102291 + + // If we're not dealing with a regular pixel number + // but a number that has a weird ending, we need to convert it to pixels + // but not position css attributes, as those are proportional to the parent element instead + // and we can't measure the parent instead because it might trigger a "stacking dolls" problem + if ( rnumnonpx.test( ret ) && !rposition.test( name ) ) { + + // Remember the original values + left = style.left; + rsLeft = elem.runtimeStyle && elem.runtimeStyle.left; + + // Put in the new values to get a computed value out + if ( rsLeft ) { + elem.runtimeStyle.left = elem.currentStyle.left; + } + style.left = name === "fontSize" ? "1em" : ret; + ret = style.pixelLeft + "px"; + + // Revert the changed values + style.left = left; + if ( rsLeft ) { + elem.runtimeStyle.left = rsLeft; + } + } + + return ret === "" ? "auto" : ret; + }; +} + +function setPositiveNumber( elem, value, subtract ) { + var matches = rnumsplit.exec( value ); + return matches ? + Math.max( 0, matches[ 1 ] - ( subtract || 0 ) ) + ( matches[ 2 ] || "px" ) : + value; +} + +function augmentWidthOrHeight( elem, name, extra, isBorderBox ) { + var i = extra === ( isBorderBox ? "border" : "content" ) ? + // If we already have the right measurement, avoid augmentation + 4 : + // Otherwise initialize for horizontal or vertical properties + name === "width" ? 1 : 0, + + val = 0; + + for ( ; i < 4; i += 2 ) { + // both box models exclude margin, so add it if we want it + if ( extra === "margin" ) { + // we use jQuery.css instead of curCSS here + // because of the reliableMarginRight CSS hook! + val += jQuery.css( elem, extra + cssExpand[ i ], true ); + } + + // From this point on we use curCSS for maximum performance (relevant in animations) + if ( isBorderBox ) { + // border-box includes padding, so remove it if we want content + if ( extra === "content" ) { + val -= parseFloat( curCSS( elem, "padding" + cssExpand[ i ] ) ) || 0; + } + + // at this point, extra isn't border nor margin, so remove border + if ( extra !== "margin" ) { + val -= parseFloat( curCSS( elem, "border" + cssExpand[ i ] + "Width" ) ) || 0; + } + } else { + // at this point, extra isn't content, so add padding + val += parseFloat( curCSS( elem, "padding" + cssExpand[ i ] ) ) || 0; + + // at this point, extra isn't content nor padding, so add border + if ( extra !== "padding" ) { + val += parseFloat( curCSS( elem, "border" + cssExpand[ i ] + "Width" ) ) || 0; + } + } + } + + return val; +} + +function getWidthOrHeight( elem, name, extra ) { + + // Start with offset property, which is equivalent to the border-box value + var val = name === "width" ? elem.offsetWidth : elem.offsetHeight, + valueIsBorderBox = true, + isBorderBox = jQuery.support.boxSizing && jQuery.css( elem, "boxSizing" ) === "border-box"; + + if ( val <= 0 ) { + // Fall back to computed then uncomputed css if necessary + val = curCSS( elem, name ); + if ( val < 0 || val == null ) { + val = elem.style[ name ]; + } + + // Computed unit is not pixels. Stop here and return. + if ( rnumnonpx.test(val) ) { + return val; + } + + // we need the check for style in case a browser which returns unreliable values + // for getComputedStyle silently falls back to the reliable elem.style + valueIsBorderBox = isBorderBox && ( jQuery.support.boxSizingReliable || val === elem.style[ name ] ); + + // Normalize "", auto, and prepare for extra + val = parseFloat( val ) || 0; + } + + // use the active box-sizing model to add/subtract irrelevant styles + return ( val + + augmentWidthOrHeight( + elem, + name, + extra || ( isBorderBox ? "border" : "content" ), + valueIsBorderBox + ) + ) + "px"; +} + + +// Try to determine the default display value of an element +function css_defaultDisplay( nodeName ) { + if ( elemdisplay[ nodeName ] ) { + return elemdisplay[ nodeName ]; + } + + var elem = jQuery( "<" + nodeName + ">" ).appendTo( document.body ), + display = elem.css("display"); + elem.remove(); + + // If the simple way fails, + // get element's real default display by attaching it to a temp iframe + if ( display === "none" || display === "" ) { + // Use the already-created iframe if possible + iframe = document.body.appendChild( + iframe || jQuery.extend( document.createElement("iframe"), { + frameBorder: 0, + width: 0, + height: 0 + }) + ); + + // Create a cacheable copy of the iframe document on first call. + // IE and Opera will allow us to reuse the iframeDoc without re-writing the fake HTML + // document to it; WebKit & Firefox won't allow reusing the iframe document. + if ( !iframeDoc || !iframe.createElement ) { + iframeDoc = ( iframe.contentWindow || iframe.contentDocument ).document; + iframeDoc.write(""); + iframeDoc.close(); + } + + elem = iframeDoc.body.appendChild( iframeDoc.createElement(nodeName) ); + + display = curCSS( elem, "display" ); + document.body.removeChild( iframe ); + } + + // Store the correct default display + elemdisplay[ nodeName ] = display; + + return display; +} + +jQuery.each([ "height", "width" ], function( i, name ) { + jQuery.cssHooks[ name ] = { + get: function( elem, computed, extra ) { + if ( computed ) { + if ( elem.offsetWidth !== 0 || curCSS( elem, "display" ) !== "none" ) { + return getWidthOrHeight( elem, name, extra ); + } else { + return jQuery.swap( elem, cssShow, function() { + return getWidthOrHeight( elem, name, extra ); + }); + } + } + }, + + set: function( elem, value, extra ) { + return setPositiveNumber( elem, value, extra ? + augmentWidthOrHeight( + elem, + name, + extra, + jQuery.support.boxSizing && jQuery.css( elem, "boxSizing" ) === "border-box" + ) : 0 + ); + } + }; +}); + +if ( !jQuery.support.opacity ) { + jQuery.cssHooks.opacity = { + get: function( elem, computed ) { + // IE uses filters for opacity + return ropacity.test( (computed && elem.currentStyle ? elem.currentStyle.filter : elem.style.filter) || "" ) ? + ( 0.01 * parseFloat( RegExp.$1 ) ) + "" : + computed ? "1" : ""; + }, + + set: function( elem, value ) { + var style = elem.style, + currentStyle = elem.currentStyle, + opacity = jQuery.isNumeric( value ) ? "alpha(opacity=" + value * 100 + ")" : "", + filter = currentStyle && currentStyle.filter || style.filter || ""; + + // IE has trouble with opacity if it does not have layout + // Force it by setting the zoom level + style.zoom = 1; + + // if setting opacity to 1, and no other filters exist - attempt to remove filter attribute #6652 + if ( value >= 1 && jQuery.trim( filter.replace( ralpha, "" ) ) === "" && + style.removeAttribute ) { + + // Setting style.filter to null, "" & " " still leave "filter:" in the cssText + // if "filter:" is present at all, clearType is disabled, we want to avoid this + // style.removeAttribute is IE Only, but so apparently is this code path... + style.removeAttribute( "filter" ); + + // if there there is no filter style applied in a css rule, we are done + if ( currentStyle && !currentStyle.filter ) { + return; + } + } + + // otherwise, set new filter values + style.filter = ralpha.test( filter ) ? + filter.replace( ralpha, opacity ) : + filter + " " + opacity; + } + }; +} + +// These hooks cannot be added until DOM ready because the support test +// for it is not run until after DOM ready +jQuery(function() { + if ( !jQuery.support.reliableMarginRight ) { + jQuery.cssHooks.marginRight = { + get: function( elem, computed ) { + // WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right + // Work around by temporarily setting element display to inline-block + return jQuery.swap( elem, { "display": "inline-block" }, function() { + if ( computed ) { + return curCSS( elem, "marginRight" ); + } + }); + } + }; + } + + // Webkit bug: https://bugs.webkit.org/show_bug.cgi?id=29084 + // getComputedStyle returns percent when specified for top/left/bottom/right + // rather than make the css module depend on the offset module, we just check for it here + if ( !jQuery.support.pixelPosition && jQuery.fn.position ) { + jQuery.each( [ "top", "left" ], function( i, prop ) { + jQuery.cssHooks[ prop ] = { + get: function( elem, computed ) { + if ( computed ) { + var ret = curCSS( elem, prop ); + // if curCSS returns percentage, fallback to offset + return rnumnonpx.test( ret ) ? jQuery( elem ).position()[ prop ] + "px" : ret; + } + } + }; + }); + } + +}); + +if ( jQuery.expr && jQuery.expr.filters ) { + jQuery.expr.filters.hidden = function( elem ) { + return ( elem.offsetWidth === 0 && elem.offsetHeight === 0 ) || (!jQuery.support.reliableHiddenOffsets && ((elem.style && elem.style.display) || curCSS( elem, "display" )) === "none"); + }; + + jQuery.expr.filters.visible = function( elem ) { + return !jQuery.expr.filters.hidden( elem ); + }; +} + +// These hooks are used by animate to expand properties +jQuery.each({ + margin: "", + padding: "", + border: "Width" +}, function( prefix, suffix ) { + jQuery.cssHooks[ prefix + suffix ] = { + expand: function( value ) { + var i, + + // assumes a single number if not a string + parts = typeof value === "string" ? value.split(" ") : [ value ], + expanded = {}; + + for ( i = 0; i < 4; i++ ) { + expanded[ prefix + cssExpand[ i ] + suffix ] = + parts[ i ] || parts[ i - 2 ] || parts[ 0 ]; + } + + return expanded; + } + }; + + if ( !rmargin.test( prefix ) ) { + jQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber; + } +}); +var r20 = /%20/g, + rbracket = /\[\]$/, + rCRLF = /\r?\n/g, + rinput = /^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i, + rselectTextarea = /^(?:select|textarea)/i; + +jQuery.fn.extend({ + serialize: function() { + return jQuery.param( this.serializeArray() ); + }, + serializeArray: function() { + return this.map(function(){ + return this.elements ? jQuery.makeArray( this.elements ) : this; + }) + .filter(function(){ + return this.name && !this.disabled && + ( this.checked || rselectTextarea.test( this.nodeName ) || + rinput.test( this.type ) ); + }) + .map(function( i, elem ){ + var val = jQuery( this ).val(); + + return val == null ? + null : + jQuery.isArray( val ) ? + jQuery.map( val, function( val, i ){ + return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) }; + }) : + { name: elem.name, value: val.replace( rCRLF, "\r\n" ) }; + }).get(); + } +}); + +//Serialize an array of form elements or a set of +//key/values into a query string +jQuery.param = function( a, traditional ) { + var prefix, + s = [], + add = function( key, value ) { + // If value is a function, invoke it and return its value + value = jQuery.isFunction( value ) ? value() : ( value == null ? "" : value ); + s[ s.length ] = encodeURIComponent( key ) + "=" + encodeURIComponent( value ); + }; + + // Set traditional to true for jQuery <= 1.3.2 behavior. + if ( traditional === undefined ) { + traditional = jQuery.ajaxSettings && jQuery.ajaxSettings.traditional; + } + + // If an array was passed in, assume that it is an array of form elements. + if ( jQuery.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) { + // Serialize the form elements + jQuery.each( a, function() { + add( this.name, this.value ); + }); + + } else { + // If traditional, encode the "old" way (the way 1.3.2 or older + // did it), otherwise encode params recursively. + for ( prefix in a ) { + buildParams( prefix, a[ prefix ], traditional, add ); + } + } + + // Return the resulting serialization + return s.join( "&" ).replace( r20, "+" ); +}; + +function buildParams( prefix, obj, traditional, add ) { + var name; + + if ( jQuery.isArray( obj ) ) { + // Serialize array item. + jQuery.each( obj, function( i, v ) { + if ( traditional || rbracket.test( prefix ) ) { + // Treat each array item as a scalar. + add( prefix, v ); + + } else { + // If array item is non-scalar (array or object), encode its + // numeric index to resolve deserialization ambiguity issues. + // Note that rack (as of 1.0.0) can't currently deserialize + // nested arrays properly, and attempting to do so may cause + // a server error. Possible fixes are to modify rack's + // deserialization algorithm or to provide an option or flag + // to force array serialization to be shallow. + buildParams( prefix + "[" + ( typeof v === "object" ? i : "" ) + "]", v, traditional, add ); + } + }); + + } else if ( !traditional && jQuery.type( obj ) === "object" ) { + // Serialize object item. + for ( name in obj ) { + buildParams( prefix + "[" + name + "]", obj[ name ], traditional, add ); + } + + } else { + // Serialize scalar item. + add( prefix, obj ); + } +} +var // Document location + ajaxLocation, + // Document location segments + ajaxLocParts, + + rhash = /#.*$/, + rheaders = /^(.*?):[ \t]*([^\r\n]*)\r?$/mg, // IE leaves an \r character at EOL + // #7653, #8125, #8152: local protocol detection + rlocalProtocol = /^(?:about|app|app\-storage|.+\-extension|file|res|widget):$/, + rnoContent = /^(?:GET|HEAD)$/, + rprotocol = /^\/\//, + rquery = /\?/, + rscript = /)<[^<]*)*<\/script>/gi, + rts = /([?&])_=[^&]*/, + rurl = /^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+)|)|)/, + + // Keep a copy of the old load method + _load = jQuery.fn.load, + + /* Prefilters + * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example) + * 2) These are called: + * - BEFORE asking for a transport + * - AFTER param serialization (s.data is a string if s.processData is true) + * 3) key is the dataType + * 4) the catchall symbol "*" can be used + * 5) execution will start with transport dataType and THEN continue down to "*" if needed + */ + prefilters = {}, + + /* Transports bindings + * 1) key is the dataType + * 2) the catchall symbol "*" can be used + * 3) selection will start with transport dataType and THEN go to "*" if needed + */ + transports = {}, + + // Avoid comment-prolog char sequence (#10098); must appease lint and evade compression + allTypes = ["*/"] + ["*"]; + +// #8138, IE may throw an exception when accessing +// a field from window.location if document.domain has been set +try { + ajaxLocation = location.href; +} catch( e ) { + // Use the href attribute of an A element + // since IE will modify it given document.location + ajaxLocation = document.createElement( "a" ); + ajaxLocation.href = ""; + ajaxLocation = ajaxLocation.href; +} + +// Segment location into parts +ajaxLocParts = rurl.exec( ajaxLocation.toLowerCase() ) || []; + +// Base "constructor" for jQuery.ajaxPrefilter and jQuery.ajaxTransport +function addToPrefiltersOrTransports( structure ) { + + // dataTypeExpression is optional and defaults to "*" + return function( dataTypeExpression, func ) { + + if ( typeof dataTypeExpression !== "string" ) { + func = dataTypeExpression; + dataTypeExpression = "*"; + } + + var dataType, list, placeBefore, + dataTypes = dataTypeExpression.toLowerCase().split( core_rspace ), + i = 0, + length = dataTypes.length; + + if ( jQuery.isFunction( func ) ) { + // For each dataType in the dataTypeExpression + for ( ; i < length; i++ ) { + dataType = dataTypes[ i ]; + // We control if we're asked to add before + // any existing element + placeBefore = /^\+/.test( dataType ); + if ( placeBefore ) { + dataType = dataType.substr( 1 ) || "*"; + } + list = structure[ dataType ] = structure[ dataType ] || []; + // then we add to the structure accordingly + list[ placeBefore ? "unshift" : "push" ]( func ); + } + } + }; +} + +// Base inspection function for prefilters and transports +function inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR, + dataType /* internal */, inspected /* internal */ ) { + + dataType = dataType || options.dataTypes[ 0 ]; + inspected = inspected || {}; + + inspected[ dataType ] = true; + + var selection, + list = structure[ dataType ], + i = 0, + length = list ? list.length : 0, + executeOnly = ( structure === prefilters ); + + for ( ; i < length && ( executeOnly || !selection ); i++ ) { + selection = list[ i ]( options, originalOptions, jqXHR ); + // If we got redirected to another dataType + // we try there if executing only and not done already + if ( typeof selection === "string" ) { + if ( !executeOnly || inspected[ selection ] ) { + selection = undefined; + } else { + options.dataTypes.unshift( selection ); + selection = inspectPrefiltersOrTransports( + structure, options, originalOptions, jqXHR, selection, inspected ); + } + } + } + // If we're only executing or nothing was selected + // we try the catchall dataType if not done already + if ( ( executeOnly || !selection ) && !inspected[ "*" ] ) { + selection = inspectPrefiltersOrTransports( + structure, options, originalOptions, jqXHR, "*", inspected ); + } + // unnecessary when only executing (prefilters) + // but it'll be ignored by the caller in that case + return selection; +} + +// A special extend for ajax options +// that takes "flat" options (not to be deep extended) +// Fixes #9887 +function ajaxExtend( target, src ) { + var key, deep, + flatOptions = jQuery.ajaxSettings.flatOptions || {}; + for ( key in src ) { + if ( src[ key ] !== undefined ) { + ( flatOptions[ key ] ? target : ( deep || ( deep = {} ) ) )[ key ] = src[ key ]; + } + } + if ( deep ) { + jQuery.extend( true, target, deep ); + } +} + +jQuery.fn.load = function( url, params, callback ) { + if ( typeof url !== "string" && _load ) { + return _load.apply( this, arguments ); + } + + // Don't do a request if no elements are being requested + if ( !this.length ) { + return this; + } + + var selector, type, response, + self = this, + off = url.indexOf(" "); + + if ( off >= 0 ) { + selector = url.slice( off, url.length ); + url = url.slice( 0, off ); + } + + // If it's a function + if ( jQuery.isFunction( params ) ) { + + // We assume that it's the callback + callback = params; + params = undefined; + + // Otherwise, build a param string + } else if ( typeof params === "object" ) { + type = "POST"; + } + + // Request the remote document + jQuery.ajax({ + url: url, + + // if "type" variable is undefined, then "GET" method will be used + type: type, + dataType: "html", + data: params, + complete: function( jqXHR, status ) { + if ( callback ) { + self.each( callback, response || [ jqXHR.responseText, status, jqXHR ] ); + } + } + }).done(function( responseText ) { + + // Save response for use in complete callback + response = arguments; + + // See if a selector was specified + self.html( selector ? + + // Create a dummy div to hold the results + jQuery("
      ") + + // inject the contents of the document in, removing the scripts + // to avoid any 'Permission Denied' errors in IE + .append( responseText.replace( rscript, "" ) ) + + // Locate the specified elements + .find( selector ) : + + // If not, just inject the full result + responseText ); + + }); + + return this; +}; + +// Attach a bunch of functions for handling common AJAX events +jQuery.each( "ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split( " " ), function( i, o ){ + jQuery.fn[ o ] = function( f ){ + return this.on( o, f ); + }; +}); + +jQuery.each( [ "get", "post" ], function( i, method ) { + jQuery[ method ] = function( url, data, callback, type ) { + // shift arguments if data argument was omitted + if ( jQuery.isFunction( data ) ) { + type = type || callback; + callback = data; + data = undefined; + } + + return jQuery.ajax({ + type: method, + url: url, + data: data, + success: callback, + dataType: type + }); + }; +}); + +jQuery.extend({ + + getScript: function( url, callback ) { + return jQuery.get( url, undefined, callback, "script" ); + }, + + getJSON: function( url, data, callback ) { + return jQuery.get( url, data, callback, "json" ); + }, + + // Creates a full fledged settings object into target + // with both ajaxSettings and settings fields. + // If target is omitted, writes into ajaxSettings. + ajaxSetup: function( target, settings ) { + if ( settings ) { + // Building a settings object + ajaxExtend( target, jQuery.ajaxSettings ); + } else { + // Extending ajaxSettings + settings = target; + target = jQuery.ajaxSettings; + } + ajaxExtend( target, settings ); + return target; + }, + + ajaxSettings: { + url: ajaxLocation, + isLocal: rlocalProtocol.test( ajaxLocParts[ 1 ] ), + global: true, + type: "GET", + contentType: "application/x-www-form-urlencoded; charset=UTF-8", + processData: true, + async: true, + /* + timeout: 0, + data: null, + dataType: null, + username: null, + password: null, + cache: null, + throws: false, + traditional: false, + headers: {}, + */ + + accepts: { + xml: "application/xml, text/xml", + html: "text/html", + text: "text/plain", + json: "application/json, text/javascript", + "*": allTypes + }, + + contents: { + xml: /xml/, + html: /html/, + json: /json/ + }, + + responseFields: { + xml: "responseXML", + text: "responseText" + }, + + // List of data converters + // 1) key format is "source_type destination_type" (a single space in-between) + // 2) the catchall symbol "*" can be used for source_type + converters: { + + // Convert anything to text + "* text": window.String, + + // Text to html (true = no transformation) + "text html": true, + + // Evaluate text as a json expression + "text json": jQuery.parseJSON, + + // Parse text as xml + "text xml": jQuery.parseXML + }, + + // For options that shouldn't be deep extended: + // you can add your own custom options here if + // and when you create one that shouldn't be + // deep extended (see ajaxExtend) + flatOptions: { + context: true, + url: true + } + }, + + ajaxPrefilter: addToPrefiltersOrTransports( prefilters ), + ajaxTransport: addToPrefiltersOrTransports( transports ), + + // Main method + ajax: function( url, options ) { + + // If url is an object, simulate pre-1.5 signature + if ( typeof url === "object" ) { + options = url; + url = undefined; + } + + // Force options to be an object + options = options || {}; + + var // ifModified key + ifModifiedKey, + // Response headers + responseHeadersString, + responseHeaders, + // transport + transport, + // timeout handle + timeoutTimer, + // Cross-domain detection vars + parts, + // To know if global events are to be dispatched + fireGlobals, + // Loop variable + i, + // Create the final options object + s = jQuery.ajaxSetup( {}, options ), + // Callbacks context + callbackContext = s.context || s, + // Context for global events + // It's the callbackContext if one was provided in the options + // and if it's a DOM node or a jQuery collection + globalEventContext = callbackContext !== s && + ( callbackContext.nodeType || callbackContext instanceof jQuery ) ? + jQuery( callbackContext ) : jQuery.event, + // Deferreds + deferred = jQuery.Deferred(), + completeDeferred = jQuery.Callbacks( "once memory" ), + // Status-dependent callbacks + statusCode = s.statusCode || {}, + // Headers (they are sent all at once) + requestHeaders = {}, + requestHeadersNames = {}, + // The jqXHR state + state = 0, + // Default abort message + strAbort = "canceled", + // Fake xhr + jqXHR = { + + readyState: 0, + + // Caches the header + setRequestHeader: function( name, value ) { + if ( !state ) { + var lname = name.toLowerCase(); + name = requestHeadersNames[ lname ] = requestHeadersNames[ lname ] || name; + requestHeaders[ name ] = value; + } + return this; + }, + + // Raw string + getAllResponseHeaders: function() { + return state === 2 ? responseHeadersString : null; + }, + + // Builds headers hashtable if needed + getResponseHeader: function( key ) { + var match; + if ( state === 2 ) { + if ( !responseHeaders ) { + responseHeaders = {}; + while( ( match = rheaders.exec( responseHeadersString ) ) ) { + responseHeaders[ match[1].toLowerCase() ] = match[ 2 ]; + } + } + match = responseHeaders[ key.toLowerCase() ]; + } + return match === undefined ? null : match; + }, + + // Overrides response content-type header + overrideMimeType: function( type ) { + if ( !state ) { + s.mimeType = type; + } + return this; + }, + + // Cancel the request + abort: function( statusText ) { + statusText = statusText || strAbort; + if ( transport ) { + transport.abort( statusText ); + } + done( 0, statusText ); + return this; + } + }; + + // Callback for when everything is done + // It is defined here because jslint complains if it is declared + // at the end of the function (which would be more logical and readable) + function done( status, nativeStatusText, responses, headers ) { + var isSuccess, success, error, response, modified, + statusText = nativeStatusText; + + // Called once + if ( state === 2 ) { + return; + } + + // State is "done" now + state = 2; + + // Clear timeout if it exists + if ( timeoutTimer ) { + clearTimeout( timeoutTimer ); + } + + // Dereference transport for early garbage collection + // (no matter how long the jqXHR object will be used) + transport = undefined; + + // Cache response headers + responseHeadersString = headers || ""; + + // Set readyState + jqXHR.readyState = status > 0 ? 4 : 0; + + // Get response data + if ( responses ) { + response = ajaxHandleResponses( s, jqXHR, responses ); + } + + // If successful, handle type chaining + if ( status >= 200 && status < 300 || status === 304 ) { + + // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode. + if ( s.ifModified ) { + + modified = jqXHR.getResponseHeader("Last-Modified"); + if ( modified ) { + jQuery.lastModified[ ifModifiedKey ] = modified; + } + modified = jqXHR.getResponseHeader("Etag"); + if ( modified ) { + jQuery.etag[ ifModifiedKey ] = modified; + } + } + + // If not modified + if ( status === 304 ) { + + statusText = "notmodified"; + isSuccess = true; + + // If we have data + } else { + + isSuccess = ajaxConvert( s, response ); + statusText = isSuccess.state; + success = isSuccess.data; + error = isSuccess.error; + isSuccess = !error; + } + } else { + // We extract error from statusText + // then normalize statusText and status for non-aborts + error = statusText; + if ( !statusText || status ) { + statusText = "error"; + if ( status < 0 ) { + status = 0; + } + } + } + + // Set data for the fake xhr object + jqXHR.status = status; + jqXHR.statusText = "" + ( nativeStatusText || statusText ); + + // Success/Error + if ( isSuccess ) { + deferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] ); + } else { + deferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] ); + } + + // Status-dependent callbacks + jqXHR.statusCode( statusCode ); + statusCode = undefined; + + if ( fireGlobals ) { + globalEventContext.trigger( "ajax" + ( isSuccess ? "Success" : "Error" ), + [ jqXHR, s, isSuccess ? success : error ] ); + } + + // Complete + completeDeferred.fireWith( callbackContext, [ jqXHR, statusText ] ); + + if ( fireGlobals ) { + globalEventContext.trigger( "ajaxComplete", [ jqXHR, s ] ); + // Handle the global AJAX counter + if ( !( --jQuery.active ) ) { + jQuery.event.trigger( "ajaxStop" ); + } + } + } + + // Attach deferreds + deferred.promise( jqXHR ); + jqXHR.success = jqXHR.done; + jqXHR.error = jqXHR.fail; + jqXHR.complete = completeDeferred.add; + + // Status-dependent callbacks + jqXHR.statusCode = function( map ) { + if ( map ) { + var tmp; + if ( state < 2 ) { + for ( tmp in map ) { + statusCode[ tmp ] = [ statusCode[tmp], map[tmp] ]; + } + } else { + tmp = map[ jqXHR.status ]; + jqXHR.always( tmp ); + } + } + return this; + }; + + // Remove hash character (#7531: and string promotion) + // Add protocol if not provided (#5866: IE7 issue with protocol-less urls) + // We also use the url parameter if available + s.url = ( ( url || s.url ) + "" ).replace( rhash, "" ).replace( rprotocol, ajaxLocParts[ 1 ] + "//" ); + + // Extract dataTypes list + s.dataTypes = jQuery.trim( s.dataType || "*" ).toLowerCase().split( core_rspace ); + + // Determine if a cross-domain request is in order + if ( s.crossDomain == null ) { + parts = rurl.exec( s.url.toLowerCase() ); + s.crossDomain = !!( parts && + ( parts[ 1 ] != ajaxLocParts[ 1 ] || parts[ 2 ] != ajaxLocParts[ 2 ] || + ( parts[ 3 ] || ( parts[ 1 ] === "http:" ? 80 : 443 ) ) != + ( ajaxLocParts[ 3 ] || ( ajaxLocParts[ 1 ] === "http:" ? 80 : 443 ) ) ) + ); + } + + // Convert data if not already a string + if ( s.data && s.processData && typeof s.data !== "string" ) { + s.data = jQuery.param( s.data, s.traditional ); + } + + // Apply prefilters + inspectPrefiltersOrTransports( prefilters, s, options, jqXHR ); + + // If request was aborted inside a prefilter, stop there + if ( state === 2 ) { + return jqXHR; + } + + // We can fire global events as of now if asked to + fireGlobals = s.global; + + // Uppercase the type + s.type = s.type.toUpperCase(); + + // Determine if request has content + s.hasContent = !rnoContent.test( s.type ); + + // Watch for a new set of requests + if ( fireGlobals && jQuery.active++ === 0 ) { + jQuery.event.trigger( "ajaxStart" ); + } + + // More options handling for requests with no content + if ( !s.hasContent ) { + + // If data is available, append data to url + if ( s.data ) { + s.url += ( rquery.test( s.url ) ? "&" : "?" ) + s.data; + // #9682: remove data so that it's not used in an eventual retry + delete s.data; + } + + // Get ifModifiedKey before adding the anti-cache parameter + ifModifiedKey = s.url; + + // Add anti-cache in url if needed + if ( s.cache === false ) { + + var ts = jQuery.now(), + // try replacing _= if it is there + ret = s.url.replace( rts, "$1_=" + ts ); + + // if nothing was replaced, add timestamp to the end + s.url = ret + ( ( ret === s.url ) ? ( rquery.test( s.url ) ? "&" : "?" ) + "_=" + ts : "" ); + } + } + + // Set the correct header, if data is being sent + if ( s.data && s.hasContent && s.contentType !== false || options.contentType ) { + jqXHR.setRequestHeader( "Content-Type", s.contentType ); + } + + // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode. + if ( s.ifModified ) { + ifModifiedKey = ifModifiedKey || s.url; + if ( jQuery.lastModified[ ifModifiedKey ] ) { + jqXHR.setRequestHeader( "If-Modified-Since", jQuery.lastModified[ ifModifiedKey ] ); + } + if ( jQuery.etag[ ifModifiedKey ] ) { + jqXHR.setRequestHeader( "If-None-Match", jQuery.etag[ ifModifiedKey ] ); + } + } + + // Set the Accepts header for the server, depending on the dataType + jqXHR.setRequestHeader( + "Accept", + s.dataTypes[ 0 ] && s.accepts[ s.dataTypes[0] ] ? + s.accepts[ s.dataTypes[0] ] + ( s.dataTypes[ 0 ] !== "*" ? ", " + allTypes + "; q=0.01" : "" ) : + s.accepts[ "*" ] + ); + + // Check for headers option + for ( i in s.headers ) { + jqXHR.setRequestHeader( i, s.headers[ i ] ); + } + + // Allow custom headers/mimetypes and early abort + if ( s.beforeSend && ( s.beforeSend.call( callbackContext, jqXHR, s ) === false || state === 2 ) ) { + // Abort if not done already and return + return jqXHR.abort(); + + } + + // aborting is no longer a cancellation + strAbort = "abort"; + + // Install callbacks on deferreds + for ( i in { success: 1, error: 1, complete: 1 } ) { + jqXHR[ i ]( s[ i ] ); + } + + // Get transport + transport = inspectPrefiltersOrTransports( transports, s, options, jqXHR ); + + // If no transport, we auto-abort + if ( !transport ) { + done( -1, "No Transport" ); + } else { + jqXHR.readyState = 1; + // Send global event + if ( fireGlobals ) { + globalEventContext.trigger( "ajaxSend", [ jqXHR, s ] ); + } + // Timeout + if ( s.async && s.timeout > 0 ) { + timeoutTimer = setTimeout( function(){ + jqXHR.abort( "timeout" ); + }, s.timeout ); + } + + try { + state = 1; + transport.send( requestHeaders, done ); + } catch (e) { + // Propagate exception as error if not done + if ( state < 2 ) { + done( -1, e ); + // Simply rethrow otherwise + } else { + throw e; + } + } + } + + return jqXHR; + }, + + // Counter for holding the number of active queries + active: 0, + + // Last-Modified header cache for next request + lastModified: {}, + etag: {} + +}); + +/* Handles responses to an ajax request: + * - sets all responseXXX fields accordingly + * - finds the right dataType (mediates between content-type and expected dataType) + * - returns the corresponding response + */ +function ajaxHandleResponses( s, jqXHR, responses ) { + + var ct, type, finalDataType, firstDataType, + contents = s.contents, + dataTypes = s.dataTypes, + responseFields = s.responseFields; + + // Fill responseXXX fields + for ( type in responseFields ) { + if ( type in responses ) { + jqXHR[ responseFields[type] ] = responses[ type ]; + } + } + + // Remove auto dataType and get content-type in the process + while( dataTypes[ 0 ] === "*" ) { + dataTypes.shift(); + if ( ct === undefined ) { + ct = s.mimeType || jqXHR.getResponseHeader( "content-type" ); + } + } + + // Check if we're dealing with a known content-type + if ( ct ) { + for ( type in contents ) { + if ( contents[ type ] && contents[ type ].test( ct ) ) { + dataTypes.unshift( type ); + break; + } + } + } + + // Check to see if we have a response for the expected dataType + if ( dataTypes[ 0 ] in responses ) { + finalDataType = dataTypes[ 0 ]; + } else { + // Try convertible dataTypes + for ( type in responses ) { + if ( !dataTypes[ 0 ] || s.converters[ type + " " + dataTypes[0] ] ) { + finalDataType = type; + break; + } + if ( !firstDataType ) { + firstDataType = type; + } + } + // Or just use first one + finalDataType = finalDataType || firstDataType; + } + + // If we found a dataType + // We add the dataType to the list if needed + // and return the corresponding response + if ( finalDataType ) { + if ( finalDataType !== dataTypes[ 0 ] ) { + dataTypes.unshift( finalDataType ); + } + return responses[ finalDataType ]; + } +} + +// Chain conversions given the request and the original response +function ajaxConvert( s, response ) { + + var conv, conv2, current, tmp, + // Work with a copy of dataTypes in case we need to modify it for conversion + dataTypes = s.dataTypes.slice(), + prev = dataTypes[ 0 ], + converters = {}, + i = 0; + + // Apply the dataFilter if provided + if ( s.dataFilter ) { + response = s.dataFilter( response, s.dataType ); + } + + // Create converters map with lowercased keys + if ( dataTypes[ 1 ] ) { + for ( conv in s.converters ) { + converters[ conv.toLowerCase() ] = s.converters[ conv ]; + } + } + + // Convert to each sequential dataType, tolerating list modification + for ( ; (current = dataTypes[++i]); ) { + + // There's only work to do if current dataType is non-auto + if ( current !== "*" ) { + + // Convert response if prev dataType is non-auto and differs from current + if ( prev !== "*" && prev !== current ) { + + // Seek a direct converter + conv = converters[ prev + " " + current ] || converters[ "* " + current ]; + + // If none found, seek a pair + if ( !conv ) { + for ( conv2 in converters ) { + + // If conv2 outputs current + tmp = conv2.split(" "); + if ( tmp[ 1 ] === current ) { + + // If prev can be converted to accepted input + conv = converters[ prev + " " + tmp[ 0 ] ] || + converters[ "* " + tmp[ 0 ] ]; + if ( conv ) { + // Condense equivalence converters + if ( conv === true ) { + conv = converters[ conv2 ]; + + // Otherwise, insert the intermediate dataType + } else if ( converters[ conv2 ] !== true ) { + current = tmp[ 0 ]; + dataTypes.splice( i--, 0, current ); + } + + break; + } + } + } + } + + // Apply converter (if not an equivalence) + if ( conv !== true ) { + + // Unless errors are allowed to bubble, catch and return them + if ( conv && s["throws"] ) { + response = conv( response ); + } else { + try { + response = conv( response ); + } catch ( e ) { + return { state: "parsererror", error: conv ? e : "No conversion from " + prev + " to " + current }; + } + } + } + } + + // Update prev for next iteration + prev = current; + } + } + + return { state: "success", data: response }; +} +var oldCallbacks = [], + rquestion = /\?/, + rjsonp = /(=)\?(?=&|$)|\?\?/, + nonce = jQuery.now(); + +// Default jsonp settings +jQuery.ajaxSetup({ + jsonp: "callback", + jsonpCallback: function() { + var callback = oldCallbacks.pop() || ( jQuery.expando + "_" + ( nonce++ ) ); + this[ callback ] = true; + return callback; + } +}); + +// Detect, normalize options and install callbacks for jsonp requests +jQuery.ajaxPrefilter( "json jsonp", function( s, originalSettings, jqXHR ) { + + var callbackName, overwritten, responseContainer, + data = s.data, + url = s.url, + hasCallback = s.jsonp !== false, + replaceInUrl = hasCallback && rjsonp.test( url ), + replaceInData = hasCallback && !replaceInUrl && typeof data === "string" && + !( s.contentType || "" ).indexOf("application/x-www-form-urlencoded") && + rjsonp.test( data ); + + // Handle iff the expected data type is "jsonp" or we have a parameter to set + if ( s.dataTypes[ 0 ] === "jsonp" || replaceInUrl || replaceInData ) { + + // Get callback name, remembering preexisting value associated with it + callbackName = s.jsonpCallback = jQuery.isFunction( s.jsonpCallback ) ? + s.jsonpCallback() : + s.jsonpCallback; + overwritten = window[ callbackName ]; + + // Insert callback into url or form data + if ( replaceInUrl ) { + s.url = url.replace( rjsonp, "$1" + callbackName ); + } else if ( replaceInData ) { + s.data = data.replace( rjsonp, "$1" + callbackName ); + } else if ( hasCallback ) { + s.url += ( rquestion.test( url ) ? "&" : "?" ) + s.jsonp + "=" + callbackName; + } + + // Use data converter to retrieve json after script execution + s.converters["script json"] = function() { + if ( !responseContainer ) { + jQuery.error( callbackName + " was not called" ); + } + return responseContainer[ 0 ]; + }; + + // force json dataType + s.dataTypes[ 0 ] = "json"; + + // Install callback + window[ callbackName ] = function() { + responseContainer = arguments; + }; + + // Clean-up function (fires after converters) + jqXHR.always(function() { + // Restore preexisting value + window[ callbackName ] = overwritten; + + // Save back as free + if ( s[ callbackName ] ) { + // make sure that re-using the options doesn't screw things around + s.jsonpCallback = originalSettings.jsonpCallback; + + // save the callback name for future use + oldCallbacks.push( callbackName ); + } + + // Call if it was a function and we have a response + if ( responseContainer && jQuery.isFunction( overwritten ) ) { + overwritten( responseContainer[ 0 ] ); + } + + responseContainer = overwritten = undefined; + }); + + // Delegate to script + return "script"; + } +}); +// Install script dataType +jQuery.ajaxSetup({ + accepts: { + script: "text/javascript, application/javascript, application/ecmascript, application/x-ecmascript" + }, + contents: { + script: /javascript|ecmascript/ + }, + converters: { + "text script": function( text ) { + jQuery.globalEval( text ); + return text; + } + } +}); + +// Handle cache's special case and global +jQuery.ajaxPrefilter( "script", function( s ) { + if ( s.cache === undefined ) { + s.cache = false; + } + if ( s.crossDomain ) { + s.type = "GET"; + s.global = false; + } +}); + +// Bind script tag hack transport +jQuery.ajaxTransport( "script", function(s) { + + // This transport only deals with cross domain requests + if ( s.crossDomain ) { + + var script, + head = document.head || document.getElementsByTagName( "head" )[0] || document.documentElement; + + return { + + send: function( _, callback ) { + + script = document.createElement( "script" ); + + script.async = "async"; + + if ( s.scriptCharset ) { + script.charset = s.scriptCharset; + } + + script.src = s.url; + + // Attach handlers for all browsers + script.onload = script.onreadystatechange = function( _, isAbort ) { + + if ( isAbort || !script.readyState || /loaded|complete/.test( script.readyState ) ) { + + // Handle memory leak in IE + script.onload = script.onreadystatechange = null; + + // Remove the script + if ( head && script.parentNode ) { + head.removeChild( script ); + } + + // Dereference the script + script = undefined; + + // Callback if not abort + if ( !isAbort ) { + callback( 200, "success" ); + } + } + }; + // Use insertBefore instead of appendChild to circumvent an IE6 bug. + // This arises when a base node is used (#2709 and #4378). + head.insertBefore( script, head.firstChild ); + }, + + abort: function() { + if ( script ) { + script.onload( 0, 1 ); + } + } + }; + } +}); +var xhrCallbacks, + // #5280: Internet Explorer will keep connections alive if we don't abort on unload + xhrOnUnloadAbort = window.ActiveXObject ? function() { + // Abort all pending requests + for ( var key in xhrCallbacks ) { + xhrCallbacks[ key ]( 0, 1 ); + } + } : false, + xhrId = 0; + +// Functions to create xhrs +function createStandardXHR() { + try { + return new window.XMLHttpRequest(); + } catch( e ) {} +} + +function createActiveXHR() { + try { + return new window.ActiveXObject( "Microsoft.XMLHTTP" ); + } catch( e ) {} +} + +// Create the request object +// (This is still attached to ajaxSettings for backward compatibility) +jQuery.ajaxSettings.xhr = window.ActiveXObject ? + /* Microsoft failed to properly + * implement the XMLHttpRequest in IE7 (can't request local files), + * so we use the ActiveXObject when it is available + * Additionally XMLHttpRequest can be disabled in IE7/IE8 so + * we need a fallback. + */ + function() { + return !this.isLocal && createStandardXHR() || createActiveXHR(); + } : + // For all other browsers, use the standard XMLHttpRequest object + createStandardXHR; + +// Determine support properties +(function( xhr ) { + jQuery.extend( jQuery.support, { + ajax: !!xhr, + cors: !!xhr && ( "withCredentials" in xhr ) + }); +})( jQuery.ajaxSettings.xhr() ); + +// Create transport if the browser can provide an xhr +if ( jQuery.support.ajax ) { + + jQuery.ajaxTransport(function( s ) { + // Cross domain only allowed if supported through XMLHttpRequest + if ( !s.crossDomain || jQuery.support.cors ) { + + var callback; + + return { + send: function( headers, complete ) { + + // Get a new xhr + var handle, i, + xhr = s.xhr(); + + // Open the socket + // Passing null username, generates a login popup on Opera (#2865) + if ( s.username ) { + xhr.open( s.type, s.url, s.async, s.username, s.password ); + } else { + xhr.open( s.type, s.url, s.async ); + } + + // Apply custom fields if provided + if ( s.xhrFields ) { + for ( i in s.xhrFields ) { + xhr[ i ] = s.xhrFields[ i ]; + } + } + + // Override mime type if needed + if ( s.mimeType && xhr.overrideMimeType ) { + xhr.overrideMimeType( s.mimeType ); + } + + // X-Requested-With header + // For cross-domain requests, seeing as conditions for a preflight are + // akin to a jigsaw puzzle, we simply never set it to be sure. + // (it can always be set on a per-request basis or even using ajaxSetup) + // For same-domain requests, won't change header if already provided. + if ( !s.crossDomain && !headers["X-Requested-With"] ) { + headers[ "X-Requested-With" ] = "XMLHttpRequest"; + } + + // Need an extra try/catch for cross domain requests in Firefox 3 + try { + for ( i in headers ) { + xhr.setRequestHeader( i, headers[ i ] ); + } + } catch( _ ) {} + + // Do send the request + // This may raise an exception which is actually + // handled in jQuery.ajax (so no try/catch here) + xhr.send( ( s.hasContent && s.data ) || null ); + + // Listener + callback = function( _, isAbort ) { + + var status, + statusText, + responseHeaders, + responses, + xml; + + // Firefox throws exceptions when accessing properties + // of an xhr when a network error occurred + // http://helpful.knobs-dials.com/index.php/Component_returned_failure_code:_0x80040111_(NS_ERROR_NOT_AVAILABLE) + try { + + // Was never called and is aborted or complete + if ( callback && ( isAbort || xhr.readyState === 4 ) ) { + + // Only called once + callback = undefined; + + // Do not keep as active anymore + if ( handle ) { + xhr.onreadystatechange = jQuery.noop; + if ( xhrOnUnloadAbort ) { + delete xhrCallbacks[ handle ]; + } + } + + // If it's an abort + if ( isAbort ) { + // Abort it manually if needed + if ( xhr.readyState !== 4 ) { + xhr.abort(); + } + } else { + status = xhr.status; + responseHeaders = xhr.getAllResponseHeaders(); + responses = {}; + xml = xhr.responseXML; + + // Construct response list + if ( xml && xml.documentElement /* #4958 */ ) { + responses.xml = xml; + } + + // When requesting binary data, IE6-9 will throw an exception + // on any attempt to access responseText (#11426) + try { + responses.text = xhr.responseText; + } catch( _ ) { + } + + // Firefox throws an exception when accessing + // statusText for faulty cross-domain requests + try { + statusText = xhr.statusText; + } catch( e ) { + // We normalize with Webkit giving an empty statusText + statusText = ""; + } + + // Filter status for non standard behaviors + + // If the request is local and we have data: assume a success + // (success with no data won't get notified, that's the best we + // can do given current implementations) + if ( !status && s.isLocal && !s.crossDomain ) { + status = responses.text ? 200 : 404; + // IE - #1450: sometimes returns 1223 when it should be 204 + } else if ( status === 1223 ) { + status = 204; + } + } + } + } catch( firefoxAccessException ) { + if ( !isAbort ) { + complete( -1, firefoxAccessException ); + } + } + + // Call complete if needed + if ( responses ) { + complete( status, statusText, responses, responseHeaders ); + } + }; + + if ( !s.async ) { + // if we're in sync mode we fire the callback + callback(); + } else if ( xhr.readyState === 4 ) { + // (IE6 & IE7) if it's in cache and has been + // retrieved directly we need to fire the callback + setTimeout( callback, 0 ); + } else { + handle = ++xhrId; + if ( xhrOnUnloadAbort ) { + // Create the active xhrs callbacks list if needed + // and attach the unload handler + if ( !xhrCallbacks ) { + xhrCallbacks = {}; + jQuery( window ).unload( xhrOnUnloadAbort ); + } + // Add to list of active xhrs callbacks + xhrCallbacks[ handle ] = callback; + } + xhr.onreadystatechange = callback; + } + }, + + abort: function() { + if ( callback ) { + callback(0,1); + } + } + }; + } + }); +} +var fxNow, timerId, + rfxtypes = /^(?:toggle|show|hide)$/, + rfxnum = new RegExp( "^(?:([-+])=|)(" + core_pnum + ")([a-z%]*)$", "i" ), + rrun = /queueHooks$/, + animationPrefilters = [ defaultPrefilter ], + tweeners = { + "*": [function( prop, value ) { + var end, unit, prevScale, + tween = this.createTween( prop, value ), + parts = rfxnum.exec( value ), + target = tween.cur(), + start = +target || 0, + scale = 1; + + if ( parts ) { + end = +parts[2]; + unit = parts[3] || ( jQuery.cssNumber[ prop ] ? "" : "px" ); + + // We need to compute starting value + if ( unit !== "px" && start ) { + // Iteratively approximate from a nonzero starting point + // Prefer the current property, because this process will be trivial if it uses the same units + // Fallback to end or a simple constant + start = jQuery.css( tween.elem, prop, true ) || end || 1; + + do { + // If previous iteration zeroed out, double until we get *something* + // Use a string for doubling factor so we don't accidentally see scale as unchanged below + prevScale = scale = scale || ".5"; + + // Adjust and apply + start = start / scale; + jQuery.style( tween.elem, prop, start + unit ); + + // Update scale, tolerating zeroes from tween.cur() + scale = tween.cur() / target; + + // Stop looping if we've hit the mark or scale is unchanged + } while ( scale !== 1 && scale !== prevScale ); + } + + tween.unit = unit; + tween.start = start; + // If a +=/-= token was provided, we're doing a relative animation + tween.end = parts[1] ? start + ( parts[1] + 1 ) * end : end; + } + return tween; + }] + }; + +// Animations created synchronously will run synchronously +function createFxNow() { + setTimeout(function() { + fxNow = undefined; + }, 0 ); + return ( fxNow = jQuery.now() ); +} + +function createTweens( animation, props ) { + jQuery.each( props, function( prop, value ) { + var collection = ( tweeners[ prop ] || [] ).concat( tweeners[ "*" ] ), + index = 0, + length = collection.length; + for ( ; index < length; index++ ) { + if ( collection[ index ].call( animation, prop, value ) ) { + + // we're done with this property + return; + } + } + }); +} + +function Animation( elem, properties, options ) { + var result, + index = 0, + tweenerIndex = 0, + length = animationPrefilters.length, + deferred = jQuery.Deferred().always( function() { + // don't match elem in the :animated selector + delete tick.elem; + }), + tick = function() { + var currentTime = fxNow || createFxNow(), + remaining = Math.max( 0, animation.startTime + animation.duration - currentTime ), + percent = 1 - ( remaining / animation.duration || 0 ), + index = 0, + length = animation.tweens.length; + + for ( ; index < length ; index++ ) { + animation.tweens[ index ].run( percent ); + } + + deferred.notifyWith( elem, [ animation, percent, remaining ]); + + if ( percent < 1 && length ) { + return remaining; + } else { + deferred.resolveWith( elem, [ animation ] ); + return false; + } + }, + animation = deferred.promise({ + elem: elem, + props: jQuery.extend( {}, properties ), + opts: jQuery.extend( true, { specialEasing: {} }, options ), + originalProperties: properties, + originalOptions: options, + startTime: fxNow || createFxNow(), + duration: options.duration, + tweens: [], + createTween: function( prop, end, easing ) { + var tween = jQuery.Tween( elem, animation.opts, prop, end, + animation.opts.specialEasing[ prop ] || animation.opts.easing ); + animation.tweens.push( tween ); + return tween; + }, + stop: function( gotoEnd ) { + var index = 0, + // if we are going to the end, we want to run all the tweens + // otherwise we skip this part + length = gotoEnd ? animation.tweens.length : 0; + + for ( ; index < length ; index++ ) { + animation.tweens[ index ].run( 1 ); + } + + // resolve when we played the last frame + // otherwise, reject + if ( gotoEnd ) { + deferred.resolveWith( elem, [ animation, gotoEnd ] ); + } else { + deferred.rejectWith( elem, [ animation, gotoEnd ] ); + } + return this; + } + }), + props = animation.props; + + propFilter( props, animation.opts.specialEasing ); + + for ( ; index < length ; index++ ) { + result = animationPrefilters[ index ].call( animation, elem, props, animation.opts ); + if ( result ) { + return result; + } + } + + createTweens( animation, props ); + + if ( jQuery.isFunction( animation.opts.start ) ) { + animation.opts.start.call( elem, animation ); + } + + jQuery.fx.timer( + jQuery.extend( tick, { + anim: animation, + queue: animation.opts.queue, + elem: elem + }) + ); + + // attach callbacks from options + return animation.progress( animation.opts.progress ) + .done( animation.opts.done, animation.opts.complete ) + .fail( animation.opts.fail ) + .always( animation.opts.always ); +} + +function propFilter( props, specialEasing ) { + var index, name, easing, value, hooks; + + // camelCase, specialEasing and expand cssHook pass + for ( index in props ) { + name = jQuery.camelCase( index ); + easing = specialEasing[ name ]; + value = props[ index ]; + if ( jQuery.isArray( value ) ) { + easing = value[ 1 ]; + value = props[ index ] = value[ 0 ]; + } + + if ( index !== name ) { + props[ name ] = value; + delete props[ index ]; + } + + hooks = jQuery.cssHooks[ name ]; + if ( hooks && "expand" in hooks ) { + value = hooks.expand( value ); + delete props[ name ]; + + // not quite $.extend, this wont overwrite keys already present. + // also - reusing 'index' from above because we have the correct "name" + for ( index in value ) { + if ( !( index in props ) ) { + props[ index ] = value[ index ]; + specialEasing[ index ] = easing; + } + } + } else { + specialEasing[ name ] = easing; + } + } +} + +jQuery.Animation = jQuery.extend( Animation, { + + tweener: function( props, callback ) { + if ( jQuery.isFunction( props ) ) { + callback = props; + props = [ "*" ]; + } else { + props = props.split(" "); + } + + var prop, + index = 0, + length = props.length; + + for ( ; index < length ; index++ ) { + prop = props[ index ]; + tweeners[ prop ] = tweeners[ prop ] || []; + tweeners[ prop ].unshift( callback ); + } + }, + + prefilter: function( callback, prepend ) { + if ( prepend ) { + animationPrefilters.unshift( callback ); + } else { + animationPrefilters.push( callback ); + } + } +}); + +function defaultPrefilter( elem, props, opts ) { + var index, prop, value, length, dataShow, tween, hooks, oldfire, + anim = this, + style = elem.style, + orig = {}, + handled = [], + hidden = elem.nodeType && isHidden( elem ); + + // handle queue: false promises + if ( !opts.queue ) { + hooks = jQuery._queueHooks( elem, "fx" ); + if ( hooks.unqueued == null ) { + hooks.unqueued = 0; + oldfire = hooks.empty.fire; + hooks.empty.fire = function() { + if ( !hooks.unqueued ) { + oldfire(); + } + }; + } + hooks.unqueued++; + + anim.always(function() { + // doing this makes sure that the complete handler will be called + // before this completes + anim.always(function() { + hooks.unqueued--; + if ( !jQuery.queue( elem, "fx" ).length ) { + hooks.empty.fire(); + } + }); + }); + } + + // height/width overflow pass + if ( elem.nodeType === 1 && ( "height" in props || "width" in props ) ) { + // Make sure that nothing sneaks out + // Record all 3 overflow attributes because IE does not + // change the overflow attribute when overflowX and + // overflowY are set to the same value + opts.overflow = [ style.overflow, style.overflowX, style.overflowY ]; + + // Set display property to inline-block for height/width + // animations on inline elements that are having width/height animated + if ( jQuery.css( elem, "display" ) === "inline" && + jQuery.css( elem, "float" ) === "none" ) { + + // inline-level elements accept inline-block; + // block-level elements need to be inline with layout + if ( !jQuery.support.inlineBlockNeedsLayout || css_defaultDisplay( elem.nodeName ) === "inline" ) { + style.display = "inline-block"; + + } else { + style.zoom = 1; + } + } + } + + if ( opts.overflow ) { + style.overflow = "hidden"; + if ( !jQuery.support.shrinkWrapBlocks ) { + anim.done(function() { + style.overflow = opts.overflow[ 0 ]; + style.overflowX = opts.overflow[ 1 ]; + style.overflowY = opts.overflow[ 2 ]; + }); + } + } + + + // show/hide pass + for ( index in props ) { + value = props[ index ]; + if ( rfxtypes.exec( value ) ) { + delete props[ index ]; + if ( value === ( hidden ? "hide" : "show" ) ) { + continue; + } + handled.push( index ); + } + } + + length = handled.length; + if ( length ) { + dataShow = jQuery._data( elem, "fxshow" ) || jQuery._data( elem, "fxshow", {} ); + if ( hidden ) { + jQuery( elem ).show(); + } else { + anim.done(function() { + jQuery( elem ).hide(); + }); + } + anim.done(function() { + var prop; + jQuery.removeData( elem, "fxshow", true ); + for ( prop in orig ) { + jQuery.style( elem, prop, orig[ prop ] ); + } + }); + for ( index = 0 ; index < length ; index++ ) { + prop = handled[ index ]; + tween = anim.createTween( prop, hidden ? dataShow[ prop ] : 0 ); + orig[ prop ] = dataShow[ prop ] || jQuery.style( elem, prop ); + + if ( !( prop in dataShow ) ) { + dataShow[ prop ] = tween.start; + if ( hidden ) { + tween.end = tween.start; + tween.start = prop === "width" || prop === "height" ? 1 : 0; + } + } + } + } +} + +function Tween( elem, options, prop, end, easing ) { + return new Tween.prototype.init( elem, options, prop, end, easing ); +} +jQuery.Tween = Tween; + +Tween.prototype = { + constructor: Tween, + init: function( elem, options, prop, end, easing, unit ) { + this.elem = elem; + this.prop = prop; + this.easing = easing || "swing"; + this.options = options; + this.start = this.now = this.cur(); + this.end = end; + this.unit = unit || ( jQuery.cssNumber[ prop ] ? "" : "px" ); + }, + cur: function() { + var hooks = Tween.propHooks[ this.prop ]; + + return hooks && hooks.get ? + hooks.get( this ) : + Tween.propHooks._default.get( this ); + }, + run: function( percent ) { + var eased, + hooks = Tween.propHooks[ this.prop ]; + + this.pos = eased = jQuery.easing[ this.easing ]( percent, this.options.duration * percent, 0, 1, this.options.duration ); + this.now = ( this.end - this.start ) * eased + this.start; + + if ( this.options.step ) { + this.options.step.call( this.elem, this.now, this ); + } + + if ( hooks && hooks.set ) { + hooks.set( this ); + } else { + Tween.propHooks._default.set( this ); + } + return this; + } +}; + +Tween.prototype.init.prototype = Tween.prototype; + +Tween.propHooks = { + _default: { + get: function( tween ) { + var result; + + if ( tween.elem[ tween.prop ] != null && + (!tween.elem.style || tween.elem.style[ tween.prop ] == null) ) { + return tween.elem[ tween.prop ]; + } + + // passing any value as a 4th parameter to .css will automatically + // attempt a parseFloat and fallback to a string if the parse fails + // so, simple values such as "10px" are parsed to Float. + // complex values such as "rotate(1rad)" are returned as is. + result = jQuery.css( tween.elem, tween.prop, false, "" ); + // Empty strings, null, undefined and "auto" are converted to 0. + return !result || result === "auto" ? 0 : result; + }, + set: function( tween ) { + // use step hook for back compat - use cssHook if its there - use .style if its + // available and use plain properties where available + if ( jQuery.fx.step[ tween.prop ] ) { + jQuery.fx.step[ tween.prop ]( tween ); + } else if ( tween.elem.style && ( tween.elem.style[ jQuery.cssProps[ tween.prop ] ] != null || jQuery.cssHooks[ tween.prop ] ) ) { + jQuery.style( tween.elem, tween.prop, tween.now + tween.unit ); + } else { + tween.elem[ tween.prop ] = tween.now; + } + } + } +}; + +// Remove in 2.0 - this supports IE8's panic based approach +// to setting things on disconnected nodes + +Tween.propHooks.scrollTop = Tween.propHooks.scrollLeft = { + set: function( tween ) { + if ( tween.elem.nodeType && tween.elem.parentNode ) { + tween.elem[ tween.prop ] = tween.now; + } + } +}; + +jQuery.each([ "toggle", "show", "hide" ], function( i, name ) { + var cssFn = jQuery.fn[ name ]; + jQuery.fn[ name ] = function( speed, easing, callback ) { + return speed == null || typeof speed === "boolean" || + // special check for .toggle( handler, handler, ... ) + ( !i && jQuery.isFunction( speed ) && jQuery.isFunction( easing ) ) ? + cssFn.apply( this, arguments ) : + this.animate( genFx( name, true ), speed, easing, callback ); + }; +}); + +jQuery.fn.extend({ + fadeTo: function( speed, to, easing, callback ) { + + // show any hidden elements after setting opacity to 0 + return this.filter( isHidden ).css( "opacity", 0 ).show() + + // animate to the value specified + .end().animate({ opacity: to }, speed, easing, callback ); + }, + animate: function( prop, speed, easing, callback ) { + var empty = jQuery.isEmptyObject( prop ), + optall = jQuery.speed( speed, easing, callback ), + doAnimation = function() { + // Operate on a copy of prop so per-property easing won't be lost + var anim = Animation( this, jQuery.extend( {}, prop ), optall ); + + // Empty animations resolve immediately + if ( empty ) { + anim.stop( true ); + } + }; + + return empty || optall.queue === false ? + this.each( doAnimation ) : + this.queue( optall.queue, doAnimation ); + }, + stop: function( type, clearQueue, gotoEnd ) { + var stopQueue = function( hooks ) { + var stop = hooks.stop; + delete hooks.stop; + stop( gotoEnd ); + }; + + if ( typeof type !== "string" ) { + gotoEnd = clearQueue; + clearQueue = type; + type = undefined; + } + if ( clearQueue && type !== false ) { + this.queue( type || "fx", [] ); + } + + return this.each(function() { + var dequeue = true, + index = type != null && type + "queueHooks", + timers = jQuery.timers, + data = jQuery._data( this ); + + if ( index ) { + if ( data[ index ] && data[ index ].stop ) { + stopQueue( data[ index ] ); + } + } else { + for ( index in data ) { + if ( data[ index ] && data[ index ].stop && rrun.test( index ) ) { + stopQueue( data[ index ] ); + } + } + } + + for ( index = timers.length; index--; ) { + if ( timers[ index ].elem === this && (type == null || timers[ index ].queue === type) ) { + timers[ index ].anim.stop( gotoEnd ); + dequeue = false; + timers.splice( index, 1 ); + } + } + + // start the next in the queue if the last step wasn't forced + // timers currently will call their complete callbacks, which will dequeue + // but only if they were gotoEnd + if ( dequeue || !gotoEnd ) { + jQuery.dequeue( this, type ); + } + }); + } +}); + +// Generate parameters to create a standard animation +function genFx( type, includeWidth ) { + var which, + attrs = { height: type }, + i = 0; + + // if we include width, step value is 1 to do all cssExpand values, + // if we don't include width, step value is 2 to skip over Left and Right + for( ; i < 4 ; i += 2 - includeWidth ) { + which = cssExpand[ i ]; + attrs[ "margin" + which ] = attrs[ "padding" + which ] = type; + } + + if ( includeWidth ) { + attrs.opacity = attrs.width = type; + } + + return attrs; +} + +// Generate shortcuts for custom animations +jQuery.each({ + slideDown: genFx("show"), + slideUp: genFx("hide"), + slideToggle: genFx("toggle"), + fadeIn: { opacity: "show" }, + fadeOut: { opacity: "hide" }, + fadeToggle: { opacity: "toggle" } +}, function( name, props ) { + jQuery.fn[ name ] = function( speed, easing, callback ) { + return this.animate( props, speed, easing, callback ); + }; +}); + +jQuery.speed = function( speed, easing, fn ) { + var opt = speed && typeof speed === "object" ? jQuery.extend( {}, speed ) : { + complete: fn || !fn && easing || + jQuery.isFunction( speed ) && speed, + duration: speed, + easing: fn && easing || easing && !jQuery.isFunction( easing ) && easing + }; + + opt.duration = jQuery.fx.off ? 0 : typeof opt.duration === "number" ? opt.duration : + opt.duration in jQuery.fx.speeds ? jQuery.fx.speeds[ opt.duration ] : jQuery.fx.speeds._default; + + // normalize opt.queue - true/undefined/null -> "fx" + if ( opt.queue == null || opt.queue === true ) { + opt.queue = "fx"; + } + + // Queueing + opt.old = opt.complete; + + opt.complete = function() { + if ( jQuery.isFunction( opt.old ) ) { + opt.old.call( this ); + } + + if ( opt.queue ) { + jQuery.dequeue( this, opt.queue ); + } + }; + + return opt; +}; + +jQuery.easing = { + linear: function( p ) { + return p; + }, + swing: function( p ) { + return 0.5 - Math.cos( p*Math.PI ) / 2; + } +}; + +jQuery.timers = []; +jQuery.fx = Tween.prototype.init; +jQuery.fx.tick = function() { + var timer, + timers = jQuery.timers, + i = 0; + + for ( ; i < timers.length; i++ ) { + timer = timers[ i ]; + // Checks the timer has not already been removed + if ( !timer() && timers[ i ] === timer ) { + timers.splice( i--, 1 ); + } + } + + if ( !timers.length ) { + jQuery.fx.stop(); + } +}; + +jQuery.fx.timer = function( timer ) { + if ( timer() && jQuery.timers.push( timer ) && !timerId ) { + timerId = setInterval( jQuery.fx.tick, jQuery.fx.interval ); + } +}; + +jQuery.fx.interval = 13; + +jQuery.fx.stop = function() { + clearInterval( timerId ); + timerId = null; +}; + +jQuery.fx.speeds = { + slow: 600, + fast: 200, + // Default speed + _default: 400 +}; + +// Back Compat <1.8 extension point +jQuery.fx.step = {}; + +if ( jQuery.expr && jQuery.expr.filters ) { + jQuery.expr.filters.animated = function( elem ) { + return jQuery.grep(jQuery.timers, function( fn ) { + return elem === fn.elem; + }).length; + }; +} +var rroot = /^(?:body|html)$/i; + +jQuery.fn.offset = function( options ) { + if ( arguments.length ) { + return options === undefined ? + this : + this.each(function( i ) { + jQuery.offset.setOffset( this, options, i ); + }); + } + + var box, docElem, body, win, clientTop, clientLeft, scrollTop, scrollLeft, top, left, + elem = this[ 0 ], + doc = elem && elem.ownerDocument; + + if ( !doc ) { + return; + } + + if ( (body = doc.body) === elem ) { + return jQuery.offset.bodyOffset( elem ); + } + + docElem = doc.documentElement; + + // Make sure we're not dealing with a disconnected DOM node + if ( !jQuery.contains( docElem, elem ) ) { + return { top: 0, left: 0 }; + } + + box = elem.getBoundingClientRect(); + win = getWindow( doc ); + clientTop = docElem.clientTop || body.clientTop || 0; + clientLeft = docElem.clientLeft || body.clientLeft || 0; + scrollTop = win.pageYOffset || docElem.scrollTop; + scrollLeft = win.pageXOffset || docElem.scrollLeft; + top = box.top + scrollTop - clientTop; + left = box.left + scrollLeft - clientLeft; + + return { top: top, left: left }; +}; + +jQuery.offset = { + + bodyOffset: function( body ) { + var top = body.offsetTop, + left = body.offsetLeft; + + if ( jQuery.support.doesNotIncludeMarginInBodyOffset ) { + top += parseFloat( jQuery.css(body, "marginTop") ) || 0; + left += parseFloat( jQuery.css(body, "marginLeft") ) || 0; + } + + return { top: top, left: left }; + }, + + setOffset: function( elem, options, i ) { + var position = jQuery.css( elem, "position" ); + + // set position first, in-case top/left are set even on static elem + if ( position === "static" ) { + elem.style.position = "relative"; + } + + var curElem = jQuery( elem ), + curOffset = curElem.offset(), + curCSSTop = jQuery.css( elem, "top" ), + curCSSLeft = jQuery.css( elem, "left" ), + calculatePosition = ( position === "absolute" || position === "fixed" ) && jQuery.inArray("auto", [curCSSTop, curCSSLeft]) > -1, + props = {}, curPosition = {}, curTop, curLeft; + + // need to be able to calculate position if either top or left is auto and position is either absolute or fixed + if ( calculatePosition ) { + curPosition = curElem.position(); + curTop = curPosition.top; + curLeft = curPosition.left; + } else { + curTop = parseFloat( curCSSTop ) || 0; + curLeft = parseFloat( curCSSLeft ) || 0; + } + + if ( jQuery.isFunction( options ) ) { + options = options.call( elem, i, curOffset ); + } + + if ( options.top != null ) { + props.top = ( options.top - curOffset.top ) + curTop; + } + if ( options.left != null ) { + props.left = ( options.left - curOffset.left ) + curLeft; + } + + if ( "using" in options ) { + options.using.call( elem, props ); + } else { + curElem.css( props ); + } + } +}; + + +jQuery.fn.extend({ + + position: function() { + if ( !this[0] ) { + return; + } + + var elem = this[0], + + // Get *real* offsetParent + offsetParent = this.offsetParent(), + + // Get correct offsets + offset = this.offset(), + parentOffset = rroot.test(offsetParent[0].nodeName) ? { top: 0, left: 0 } : offsetParent.offset(); + + // Subtract element margins + // note: when an element has margin: auto the offsetLeft and marginLeft + // are the same in Safari causing offset.left to incorrectly be 0 + offset.top -= parseFloat( jQuery.css(elem, "marginTop") ) || 0; + offset.left -= parseFloat( jQuery.css(elem, "marginLeft") ) || 0; + + // Add offsetParent borders + parentOffset.top += parseFloat( jQuery.css(offsetParent[0], "borderTopWidth") ) || 0; + parentOffset.left += parseFloat( jQuery.css(offsetParent[0], "borderLeftWidth") ) || 0; + + // Subtract the two offsets + return { + top: offset.top - parentOffset.top, + left: offset.left - parentOffset.left + }; + }, + + offsetParent: function() { + return this.map(function() { + var offsetParent = this.offsetParent || document.body; + while ( offsetParent && (!rroot.test(offsetParent.nodeName) && jQuery.css(offsetParent, "position") === "static") ) { + offsetParent = offsetParent.offsetParent; + } + return offsetParent || document.body; + }); + } +}); + + +// Create scrollLeft and scrollTop methods +jQuery.each( {scrollLeft: "pageXOffset", scrollTop: "pageYOffset"}, function( method, prop ) { + var top = /Y/.test( prop ); + + jQuery.fn[ method ] = function( val ) { + return jQuery.access( this, function( elem, method, val ) { + var win = getWindow( elem ); + + if ( val === undefined ) { + return win ? (prop in win) ? win[ prop ] : + win.document.documentElement[ method ] : + elem[ method ]; + } + + if ( win ) { + win.scrollTo( + !top ? val : jQuery( win ).scrollLeft(), + top ? val : jQuery( win ).scrollTop() + ); + + } else { + elem[ method ] = val; + } + }, method, val, arguments.length, null ); + }; +}); + +function getWindow( elem ) { + return jQuery.isWindow( elem ) ? + elem : + elem.nodeType === 9 ? + elem.defaultView || elem.parentWindow : + false; +} +// Create innerHeight, innerWidth, height, width, outerHeight and outerWidth methods +jQuery.each( { Height: "height", Width: "width" }, function( name, type ) { + jQuery.each( { padding: "inner" + name, content: type, "": "outer" + name }, function( defaultExtra, funcName ) { + // margin is only for outerHeight, outerWidth + jQuery.fn[ funcName ] = function( margin, value ) { + var chainable = arguments.length && ( defaultExtra || typeof margin !== "boolean" ), + extra = defaultExtra || ( margin === true || value === true ? "margin" : "border" ); + + return jQuery.access( this, function( elem, type, value ) { + var doc; + + if ( jQuery.isWindow( elem ) ) { + // As of 5/8/2012 this will yield incorrect results for Mobile Safari, but there + // isn't a whole lot we can do. See pull request at this URL for discussion: + // https://github.com/jquery/jquery/pull/764 + return elem.document.documentElement[ "client" + name ]; + } + + // Get document width or height + if ( elem.nodeType === 9 ) { + doc = elem.documentElement; + + // Either scroll[Width/Height] or offset[Width/Height] or client[Width/Height], whichever is greatest + // unfortunately, this causes bug #3838 in IE6/8 only, but there is currently no good, small way to fix it. + return Math.max( + elem.body[ "scroll" + name ], doc[ "scroll" + name ], + elem.body[ "offset" + name ], doc[ "offset" + name ], + doc[ "client" + name ] + ); + } + + return value === undefined ? + // Get width or height on the element, requesting but not forcing parseFloat + jQuery.css( elem, type, value, extra ) : + + // Set width or height on the element + jQuery.style( elem, type, value, extra ); + }, type, chainable ? margin : undefined, chainable ); + }; + }); +}); +// Expose jQuery to the global object +window.jQuery = window.$ = jQuery; + +// Expose jQuery as an AMD module, but only for AMD loaders that +// understand the issues with loading multiple versions of jQuery +// in a page that all might call define(). The loader will indicate +// they have special allowances for multiple jQuery versions by +// specifying define.amd.jQuery = true. Register as a named module, +// since jQuery can be concatenated with other files that may use define, +// but not use a proper concatenation script that understands anonymous +// AMD modules. A named AMD is safest and most robust way to register. +// Lowercase jquery is used because AMD module names are derived from +// file names, and jQuery is normally delivered in a lowercase file name. +// Do this after creating the global so that if an AMD module wants to call +// noConflict to hide this version of jQuery, it will work. +if ( typeof define === "function" && define.amd && define.amd.jQuery ) { + define( "jquery", [], function () { return jQuery; } ); +} + +})( window ); diff --git a/public/js/jquery.mobile-1.2.0.js b/public/js/jquery.mobile-1.2.0.js new file mode 100644 index 0000000..4c1c616 --- /dev/null +++ b/public/js/jquery.mobile-1.2.0.js @@ -0,0 +1,9162 @@ +/* +* jQuery Mobile Framework Git Build: SHA1: b49cc06499abf8f987cf90f35349cfac0918c939 <> Date: Tue Oct 2 11:22:34 2012 -0700 +* http://jquerymobile.com +* +* Copyright 2012 jQuery Foundation and other contributors +* Released under the MIT license. +* http://jquery.org/license +* +*/ + + +(function ( root, doc, factory ) { + if ( typeof define === "function" && define.amd ) { + // AMD. Register as an anonymous module. + define( [ "jquery" ], function ( $ ) { + factory( $, root, doc ); + return $.mobile; + }); + } else { + // Browser globals + factory( root.jQuery, root, doc ); + } +}( this, document, function ( jQuery, window, document, undefined ) { +(function( $, window, undefined ) { + + var nsNormalizeDict = {}; + + // jQuery.mobile configurable options + $.mobile = $.extend( {}, { + + // Version of the jQuery Mobile Framework + version: "1.2.0", + + // Namespace used framework-wide for data-attrs. Default is no namespace + ns: "", + + // Define the url parameter used for referencing widget-generated sub-pages. + // Translates to to example.html&ui-page=subpageIdentifier + // hash segment before &ui-page= is used to make Ajax request + subPageUrlKey: "ui-page", + + // Class assigned to page currently in view, and during transitions + activePageClass: "ui-page-active", + + // Class used for "active" button state, from CSS framework + activeBtnClass: "ui-btn-active", + + // Class used for "focus" form element state, from CSS framework + focusClass: "ui-focus", + + // Automatically handle clicks and form submissions through Ajax, when same-domain + ajaxEnabled: true, + + // Automatically load and show pages based on location.hash + hashListeningEnabled: true, + + // disable to prevent jquery from bothering with links + linkBindingEnabled: true, + + // Set default page transition - 'none' for no transitions + defaultPageTransition: "slideup", + + // Set maximum window width for transitions to apply - 'false' for no limit + maxTransitionWidth: false, + + // Minimum scroll distance that will be remembered when returning to a page + minScrollBack: 250, + + // DEPRECATED: the following property is no longer in use, but defined until 2.0 to prevent conflicts + touchOverflowEnabled: false, + + // Set default dialog transition - 'none' for no transitions + defaultDialogTransition: "pop", + + // Error response message - appears when an Ajax page request fails + pageLoadErrorMessage: "Error Loading Page", + + // For error messages, which theme does the box uses? + pageLoadErrorMessageTheme: "e", + + // replace calls to window.history.back with phonegaps navigation helper + // where it is provided on the window object + phonegapNavigationEnabled: false, + + //automatically initialize the DOM when it's ready + autoInitializePage: true, + + pushStateEnabled: true, + + // allows users to opt in to ignoring content by marking a parent element as + // data-ignored + ignoreContentEnabled: false, + + // turn of binding to the native orientationchange due to android orientation behavior + orientationChangeEnabled: true, + + buttonMarkup: { + hoverDelay: 200 + }, + + // TODO might be useful upstream in jquery itself ? + keyCode: { + ALT: 18, + BACKSPACE: 8, + CAPS_LOCK: 20, + COMMA: 188, + COMMAND: 91, + COMMAND_LEFT: 91, // COMMAND + COMMAND_RIGHT: 93, + CONTROL: 17, + DELETE: 46, + DOWN: 40, + END: 35, + ENTER: 13, + ESCAPE: 27, + HOME: 36, + INSERT: 45, + LEFT: 37, + MENU: 93, // COMMAND_RIGHT + NUMPAD_ADD: 107, + NUMPAD_DECIMAL: 110, + NUMPAD_DIVIDE: 111, + NUMPAD_ENTER: 108, + NUMPAD_MULTIPLY: 106, + NUMPAD_SUBTRACT: 109, + PAGE_DOWN: 34, + PAGE_UP: 33, + PERIOD: 190, + RIGHT: 39, + SHIFT: 16, + SPACE: 32, + TAB: 9, + UP: 38, + WINDOWS: 91 // COMMAND + }, + + // Scroll page vertically: scroll to 0 to hide iOS address bar, or pass a Y value + silentScroll: function( ypos ) { + if ( $.type( ypos ) !== "number" ) { + ypos = $.mobile.defaultHomeScroll; + } + + // prevent scrollstart and scrollstop events + $.event.special.scrollstart.enabled = false; + + setTimeout( function() { + window.scrollTo( 0, ypos ); + $( document ).trigger( "silentscroll", { x: 0, y: ypos }); + }, 20 ); + + setTimeout( function() { + $.event.special.scrollstart.enabled = true; + }, 150 ); + }, + + // Expose our cache for testing purposes. + nsNormalizeDict: nsNormalizeDict, + + // Take a data attribute property, prepend the namespace + // and then camel case the attribute string. Add the result + // to our nsNormalizeDict so we don't have to do this again. + nsNormalize: function( prop ) { + if ( !prop ) { + return; + } + + return nsNormalizeDict[ prop ] || ( nsNormalizeDict[ prop ] = $.camelCase( $.mobile.ns + prop ) ); + }, + + // Find the closest parent with a theme class on it. Note that + // we are not using $.fn.closest() on purpose here because this + // method gets called quite a bit and we need it to be as fast + // as possible. + getInheritedTheme: function( el, defaultTheme ) { + var e = el[ 0 ], + ltr = "", + re = /ui-(bar|body|overlay)-([a-z])\b/, + c, m; + + while ( e ) { + c = e.className || ""; + if ( c && ( m = re.exec( c ) ) && ( ltr = m[ 2 ] ) ) { + // We found a parent with a theme class + // on it so bail from this loop. + break; + } + + e = e.parentNode; + } + + // Return the theme letter we found, if none, return the + // specified default. + + return ltr || defaultTheme || "a"; + }, + + // TODO the following $ and $.fn extensions can/probably should be moved into jquery.mobile.core.helpers + // + // Find the closest javascript page element to gather settings data jsperf test + // http://jsperf.com/single-complex-selector-vs-many-complex-selectors/edit + // possibly naive, but it shows that the parsing overhead for *just* the page selector vs + // the page and dialog selector is negligable. This could probably be speed up by + // doing a similar parent node traversal to the one found in the inherited theme code above + closestPageData: function( $target ) { + return $target + .closest( ':jqmData(role="page"), :jqmData(role="dialog")' ) + .data( "page" ); + }, + + enhanceable: function( $set ) { + return this.haveParents( $set, "enhance" ); + }, + + hijackable: function( $set ) { + return this.haveParents( $set, "ajax" ); + }, + + haveParents: function( $set, attr ) { + if ( !$.mobile.ignoreContentEnabled ) { + return $set; + } + + var count = $set.length, + $newSet = $(), + e, $element, excluded; + + for ( var i = 0; i < count; i++ ) { + $element = $set.eq( i ); + excluded = false; + e = $set[ i ]; + + while ( e ) { + var c = e.getAttribute ? e.getAttribute( "data-" + $.mobile.ns + attr ) : ""; + + if ( c === "false" ) { + excluded = true; + break; + } + + e = e.parentNode; + } + + if ( !excluded ) { + $newSet = $newSet.add( $element ); + } + } + + return $newSet; + }, + + getScreenHeight: function() { + // Native innerHeight returns more accurate value for this across platforms, + // jQuery version is here as a normalized fallback for platforms like Symbian + return window.innerHeight || $( window ).height(); + } + }, $.mobile ); + + // Mobile version of data and removeData and hasData methods + // ensures all data is set and retrieved using jQuery Mobile's data namespace + $.fn.jqmData = function( prop, value ) { + var result; + if ( typeof prop !== "undefined" ) { + if ( prop ) { + prop = $.mobile.nsNormalize( prop ); + } + + // undefined is permitted as an explicit input for the second param + // in this case it returns the value and does not set it to undefined + if( arguments.length < 2 || value === undefined ){ + result = this.data( prop ); + } else { + result = this.data( prop, value ); + } + } + return result; + }; + + $.jqmData = function( elem, prop, value ) { + var result; + if ( typeof prop !== "undefined" ) { + result = $.data( elem, prop ? $.mobile.nsNormalize( prop ) : prop, value ); + } + return result; + }; + + $.fn.jqmRemoveData = function( prop ) { + return this.removeData( $.mobile.nsNormalize( prop ) ); + }; + + $.jqmRemoveData = function( elem, prop ) { + return $.removeData( elem, $.mobile.nsNormalize( prop ) ); + }; + + $.fn.removeWithDependents = function() { + $.removeWithDependents( this ); + }; + + $.removeWithDependents = function( elem ) { + var $elem = $( elem ); + + ( $elem.jqmData( 'dependents' ) || $() ).remove(); + $elem.remove(); + }; + + $.fn.addDependents = function( newDependents ) { + $.addDependents( $( this ), newDependents ); + }; + + $.addDependents = function( elem, newDependents ) { + var dependents = $( elem ).jqmData( 'dependents' ) || $(); + + $( elem ).jqmData( 'dependents', $.merge( dependents, newDependents ) ); + }; + + // note that this helper doesn't attempt to handle the callback + // or setting of an html elements text, its only purpose is + // to return the html encoded version of the text in all cases. (thus the name) + $.fn.getEncodedText = function() { + return $( "
      " ).text( $( this ).text() ).html(); + }; + + // fluent helper function for the mobile namespaced equivalent + $.fn.jqmEnhanceable = function() { + return $.mobile.enhanceable( this ); + }; + + $.fn.jqmHijackable = function() { + return $.mobile.hijackable( this ); + }; + + // Monkey-patching Sizzle to filter the :jqmData selector + var oldFind = $.find, + jqmDataRE = /:jqmData\(([^)]*)\)/g; + + $.find = function( selector, context, ret, extra ) { + selector = selector.replace( jqmDataRE, "[data-" + ( $.mobile.ns || "" ) + "$1]" ); + + return oldFind.call( this, selector, context, ret, extra ); + }; + + $.extend( $.find, oldFind ); + + $.find.matches = function( expr, set ) { + return $.find( expr, null, null, set ); + }; + + $.find.matchesSelector = function( node, expr ) { + return $.find( expr, null, null, [ node ] ).length > 0; + }; +})( jQuery, this ); + + +/*! + * jQuery UI Widget v1.9.0-beta.1 + * + * Copyright 2012, https://github.com/jquery/jquery-ui/blob/1.9.0-beta.1/AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Widget + */ +(function( $, undefined ) { + +var uuid = 0, + slice = Array.prototype.slice, + _cleanData = $.cleanData; +$.cleanData = function( elems ) { + for ( var i = 0, elem; (elem = elems[i]) != null; i++ ) { + try { + $( elem ).triggerHandler( "remove" ); + // http://bugs.jquery.com/ticket/8235 + } catch( e ) {} + } + _cleanData( elems ); +}; + +$.widget = function( name, base, prototype ) { + var fullName, existingConstructor, constructor, basePrototype, + namespace = name.split( "." )[ 0 ]; + + name = name.split( "." )[ 1 ]; + fullName = namespace + "-" + name; + + if ( !prototype ) { + prototype = base; + base = $.Widget; + } + + // create selector for plugin + $.expr[ ":" ][ fullName ] = function( elem ) { + return !!$.data( elem, fullName ); + }; + + $[ namespace ] = $[ namespace ] || {}; + existingConstructor = $[ namespace ][ name ]; + constructor = $[ namespace ][ name ] = function( options, element ) { + // allow instantiation without "new" keyword + if ( !this._createWidget ) { + return new constructor( options, element ); + } + + // allow instantiation without initializing for simple inheritance + // must use "new" keyword (the code above always passes args) + if ( arguments.length ) { + this._createWidget( options, element ); + } + }; + // extend with the existing constructor to carry over any static properties + $.extend( constructor, existingConstructor, { + version: prototype.version, + // copy the object used to create the prototype in case we need to + // redefine the widget later + _proto: $.extend( {}, prototype ), + // track widgets that inherit from this widget in case this widget is + // redefined after a widget inherits from it + _childConstructors: [] + }); + + basePrototype = new base(); + // we need to make the options hash a property directly on the new instance + // otherwise we'll modify the options hash on the prototype that we're + // inheriting from + basePrototype.options = $.widget.extend( {}, basePrototype.options ); + $.each( prototype, function( prop, value ) { + if ( $.isFunction( value ) ) { + prototype[ prop ] = (function() { + var _super = function() { + return base.prototype[ prop ].apply( this, arguments ); + }, + _superApply = function( args ) { + return base.prototype[ prop ].apply( this, args ); + }; + return function() { + var __super = this._super, + __superApply = this._superApply, + returnValue; + + this._super = _super; + this._superApply = _superApply; + + returnValue = value.apply( this, arguments ); + + this._super = __super; + this._superApply = __superApply; + + return returnValue; + }; + })(); + } + }); + constructor.prototype = $.widget.extend( basePrototype, { + // TODO: remove support for widgetEventPrefix + // always use the name + a colon as the prefix, e.g., draggable:start + // don't prefix for widgets that aren't DOM-based + widgetEventPrefix: name + }, prototype, { + constructor: constructor, + namespace: namespace, + widgetName: name, + // TODO remove widgetBaseClass, see #8155 + widgetBaseClass: fullName, + widgetFullName: fullName + }); + + // If this widget is being redefined then we need to find all widgets that + // are inheriting from it and redefine all of them so that they inherit from + // the new version of this widget. We're essentially trying to replace one + // level in the prototype chain. + if ( existingConstructor ) { + $.each( existingConstructor._childConstructors, function( i, child ) { + var childPrototype = child.prototype; + + // redefine the child widget using the same prototype that was + // originally used, but inherit from the new version of the base + $.widget( childPrototype.namespace + "." + childPrototype.widgetName, constructor, child._proto ); + }); + // remove the list of existing child constructors from the old constructor + // so the old child constructors can be garbage collected + delete existingConstructor._childConstructors; + } else { + base._childConstructors.push( constructor ); + } + + $.widget.bridge( name, constructor ); +}; + +$.widget.extend = function( target ) { + var input = slice.call( arguments, 1 ), + inputIndex = 0, + inputLength = input.length, + key, + value; + for ( ; inputIndex < inputLength; inputIndex++ ) { + for ( key in input[ inputIndex ] ) { + value = input[ inputIndex ][ key ]; + if (input[ inputIndex ].hasOwnProperty( key ) && value !== undefined ) { + target[ key ] = $.isPlainObject( value ) ? $.widget.extend( {}, target[ key ], value ) : value; + } + } + } + return target; +}; + +$.widget.bridge = function( name, object ) { + var fullName = object.prototype.widgetFullName; + $.fn[ name ] = function( options ) { + var isMethodCall = typeof options === "string", + args = slice.call( arguments, 1 ), + returnValue = this; + + // allow multiple hashes to be passed on init + options = !isMethodCall && args.length ? + $.widget.extend.apply( null, [ options ].concat(args) ) : + options; + + if ( isMethodCall ) { + this.each(function() { + var methodValue, + instance = $.data( this, fullName ); + if ( !instance ) { + return $.error( "cannot call methods on " + name + " prior to initialization; " + + "attempted to call method '" + options + "'" ); + } + if ( !$.isFunction( instance[options] ) || options.charAt( 0 ) === "_" ) { + return $.error( "no such method '" + options + "' for " + name + " widget instance" ); + } + methodValue = instance[ options ].apply( instance, args ); + if ( methodValue !== instance && methodValue !== undefined ) { + returnValue = methodValue && methodValue.jquery ? + returnValue.pushStack( methodValue.get() ) : + methodValue; + return false; + } + }); + } else { + this.each(function() { + var instance = $.data( this, fullName ); + if ( instance ) { + instance.option( options || {} )._init(); + } else { + new object( options, this ); + } + }); + } + + return returnValue; + }; +}; + +$.Widget = function( options, element ) {}; +$.Widget._childConstructors = []; + +$.Widget.prototype = { + widgetName: "widget", + widgetEventPrefix: "", + defaultElement: "
      ", + options: { + disabled: false, + + // callbacks + create: null + }, + _createWidget: function( options, element ) { + element = $( element || this.defaultElement || this )[ 0 ]; + this.element = $( element ); + this.uuid = uuid++; + this.eventNamespace = "." + this.widgetName + this.uuid; + this.options = $.widget.extend( {}, + this.options, + this._getCreateOptions(), + options ); + + this.bindings = $(); + this.hoverable = $(); + this.focusable = $(); + + if ( element !== this ) { + // 1.9 BC for #7810 + // TODO remove dual storage + $.data( element, this.widgetName, this ); + $.data( element, this.widgetFullName, this ); + this._on({ remove: "destroy" }); + this.document = $( element.style ? + // element within the document + element.ownerDocument : + // element is window or document + element.document || element ); + this.window = $( this.document[0].defaultView || this.document[0].parentWindow ); + } + + this._create(); + this._trigger( "create", null, this._getCreateEventData() ); + this._init(); + }, + _getCreateOptions: $.noop, + _getCreateEventData: $.noop, + _create: $.noop, + _init: $.noop, + + destroy: function() { + this._destroy(); + // we can probably remove the unbind calls in 2.0 + // all event bindings should go through this._on() + this.element + .unbind( this.eventNamespace ) + // 1.9 BC for #7810 + // TODO remove dual storage + .removeData( this.widgetName ) + .removeData( this.widgetFullName ) + // support: jquery <1.6.3 + // http://bugs.jquery.com/ticket/9413 + .removeData( $.camelCase( this.widgetFullName ) ); + this.widget() + .unbind( this.eventNamespace ) + .removeAttr( "aria-disabled" ) + .removeClass( + this.widgetFullName + "-disabled " + + "ui-state-disabled" ); + + // clean up events and states + this.bindings.unbind( this.eventNamespace ); + this.hoverable.removeClass( "ui-state-hover" ); + this.focusable.removeClass( "ui-state-focus" ); + }, + _destroy: $.noop, + + widget: function() { + return this.element; + }, + + option: function( key, value ) { + var options = key, + parts, + curOption, + i; + + if ( arguments.length === 0 ) { + // don't return a reference to the internal hash + return $.widget.extend( {}, this.options ); + } + + if ( typeof key === "string" ) { + // handle nested keys, e.g., "foo.bar" => { foo: { bar: ___ } } + options = {}; + parts = key.split( "." ); + key = parts.shift(); + if ( parts.length ) { + curOption = options[ key ] = $.widget.extend( {}, this.options[ key ] ); + for ( i = 0; i < parts.length - 1; i++ ) { + curOption[ parts[ i ] ] = curOption[ parts[ i ] ] || {}; + curOption = curOption[ parts[ i ] ]; + } + key = parts.pop(); + if ( value === undefined ) { + return curOption[ key ] === undefined ? null : curOption[ key ]; + } + curOption[ key ] = value; + } else { + if ( value === undefined ) { + return this.options[ key ] === undefined ? null : this.options[ key ]; + } + options[ key ] = value; + } + } + + this._setOptions( options ); + + return this; + }, + _setOptions: function( options ) { + var key; + + for ( key in options ) { + this._setOption( key, options[ key ] ); + } + + return this; + }, + _setOption: function( key, value ) { + this.options[ key ] = value; + + if ( key === "disabled" ) { + this.widget() + .toggleClass( this.widgetFullName + "-disabled ui-state-disabled", !!value ) + .attr( "aria-disabled", value ); + this.hoverable.removeClass( "ui-state-hover" ); + this.focusable.removeClass( "ui-state-focus" ); + } + + return this; + }, + + enable: function() { + return this._setOption( "disabled", false ); + }, + disable: function() { + return this._setOption( "disabled", true ); + }, + + _on: function( element, handlers ) { + // no element argument, shuffle and use this.element + if ( !handlers ) { + handlers = element; + element = this.element; + } else { + // accept selectors, DOM elements + element = $( element ); + this.bindings = this.bindings.add( element ); + } + + var instance = this; + $.each( handlers, function( event, handler ) { + function handlerProxy() { + // allow widgets to customize the disabled handling + // - disabled as an array instead of boolean + // - disabled class as method for disabling individual parts + if ( instance.options.disabled === true || + $( this ).hasClass( "ui-state-disabled" ) ) { + return; + } + return ( typeof handler === "string" ? instance[ handler ] : handler ) + .apply( instance, arguments ); + } + + // copy the guid so direct unbinding works + if ( typeof handler !== "string" ) { + handlerProxy.guid = handler.guid = + handler.guid || handlerProxy.guid || $.guid++; + } + + var match = event.match( /^(\w+)\s*(.*)$/ ), + eventName = match[1] + instance.eventNamespace, + selector = match[2]; + if ( selector ) { + instance.widget().delegate( selector, eventName, handlerProxy ); + } else { + element.bind( eventName, handlerProxy ); + } + }); + }, + + _off: function( element, eventName ) { + eventName = (eventName || "").split( " " ).join( this.eventNamespace + " " ) + this.eventNamespace; + element.unbind( eventName ).undelegate( eventName ); + }, + + _delay: function( handler, delay ) { + function handlerProxy() { + return ( typeof handler === "string" ? instance[ handler ] : handler ) + .apply( instance, arguments ); + } + var instance = this; + return setTimeout( handlerProxy, delay || 0 ); + }, + + _hoverable: function( element ) { + this.hoverable = this.hoverable.add( element ); + this._on( element, { + mouseenter: function( event ) { + $( event.currentTarget ).addClass( "ui-state-hover" ); + }, + mouseleave: function( event ) { + $( event.currentTarget ).removeClass( "ui-state-hover" ); + } + }); + }, + + _focusable: function( element ) { + this.focusable = this.focusable.add( element ); + this._on( element, { + focusin: function( event ) { + $( event.currentTarget ).addClass( "ui-state-focus" ); + }, + focusout: function( event ) { + $( event.currentTarget ).removeClass( "ui-state-focus" ); + } + }); + }, + + _trigger: function( type, event, data ) { + var prop, orig, + callback = this.options[ type ]; + + data = data || {}; + event = $.Event( event ); + event.type = ( type === this.widgetEventPrefix ? + type : + this.widgetEventPrefix + type ).toLowerCase(); + // the original event may come from any element + // so we need to reset the target on the new event + event.target = this.element[ 0 ]; + + // copy original event properties over to the new event + orig = event.originalEvent; + if ( orig ) { + for ( prop in orig ) { + if ( !( prop in event ) ) { + event[ prop ] = orig[ prop ]; + } + } + } + + this.element.trigger( event, data ); + return !( $.isFunction( callback ) && + callback.apply( this.element[0], [ event ].concat( data ) ) === false || + event.isDefaultPrevented() ); + } +}; + +$.each( { show: "fadeIn", hide: "fadeOut" }, function( method, defaultEffect ) { + $.Widget.prototype[ "_" + method ] = function( element, options, callback ) { + if ( typeof options === "string" ) { + options = { effect: options }; + } + var hasOptions, + effectName = !options ? + method : + options === true || typeof options === "number" ? + defaultEffect : + options.effect || defaultEffect; + options = options || {}; + if ( typeof options === "number" ) { + options = { duration: options }; + } + hasOptions = !$.isEmptyObject( options ); + options.complete = callback; + if ( options.delay ) { + element.delay( options.delay ); + } + if ( hasOptions && $.effects && ( $.effects.effect[ effectName ] || $.uiBackCompat !== false && $.effects[ effectName ] ) ) { + element[ method ]( options ); + } else if ( effectName !== method && element[ effectName ] ) { + element[ effectName ]( options.duration, options.easing, callback ); + } else { + element.queue(function( next ) { + $( this )[ method ](); + if ( callback ) { + callback.call( element[ 0 ] ); + } + next(); + }); + } + }; +}); + +// DEPRECATED +if ( $.uiBackCompat !== false ) { + $.Widget.prototype._getCreateOptions = function() { + return $.metadata && $.metadata.get( this.element[0] )[ this.widgetName ]; + }; +} + +})( jQuery ); + +(function( $, undefined ) { + +$.widget( "mobile.widget", { + // decorate the parent _createWidget to trigger `widgetinit` for users + // who wish to do post post `widgetcreate` alterations/additions + // + // TODO create a pull request for jquery ui to trigger this event + // in the original _createWidget + _createWidget: function() { + $.Widget.prototype._createWidget.apply( this, arguments ); + this._trigger( 'init' ); + }, + + _getCreateOptions: function() { + + var elem = this.element, + options = {}; + + $.each( this.options, function( option ) { + + var value = elem.jqmData( option.replace( /[A-Z]/g, function( c ) { + return "-" + c.toLowerCase(); + }) + ); + + if ( value !== undefined ) { + options[ option ] = value; + } + }); + + return options; + }, + + enhanceWithin: function( target, useKeepNative ) { + this.enhance( $( this.options.initSelector, $( target )), useKeepNative ); + }, + + enhance: function( targets, useKeepNative ) { + var page, keepNative, $widgetElements = $( targets ), self = this; + + // if ignoreContentEnabled is set to true the framework should + // only enhance the selected elements when they do NOT have a + // parent with the data-namespace-ignore attribute + $widgetElements = $.mobile.enhanceable( $widgetElements ); + + if ( useKeepNative && $widgetElements.length ) { + // TODO remove dependency on the page widget for the keepNative. + // Currently the keepNative value is defined on the page prototype so + // the method is as well + page = $.mobile.closestPageData( $widgetElements ); + keepNative = ( page && page.keepNativeSelector()) || ""; + + $widgetElements = $widgetElements.not( keepNative ); + } + + $widgetElements[ this.widgetName ](); + }, + + raise: function( msg ) { + throw "Widget [" + this.widgetName + "]: " + msg; + } +}); + +})( jQuery ); + + +(function( $, window ) { + // DEPRECATED + // NOTE global mobile object settings + $.extend( $.mobile, { + // DEPRECATED Should the text be visble in the loading message? + loadingMessageTextVisible: undefined, + + // DEPRECATED When the text is visible, what theme does the loading box use? + loadingMessageTheme: undefined, + + // DEPRECATED default message setting + loadingMessage: undefined, + + // DEPRECATED + // Turn on/off page loading message. Theme doubles as an object argument + // with the following shape: { theme: '', text: '', html: '', textVisible: '' } + // NOTE that the $.mobile.loading* settings and params past the first are deprecated + showPageLoadingMsg: function( theme, msgText, textonly ) { + $.mobile.loading( 'show', theme, msgText, textonly ); + }, + + // DEPRECATED + hidePageLoadingMsg: function() { + $.mobile.loading( 'hide' ); + }, + + loading: function() { + this.loaderWidget.loader.apply( this.loaderWidget, arguments ); + } + }); + + // TODO move loader class down into the widget settings + var loaderClass = "ui-loader", $html = $( "html" ), $window = $( window ); + + $.widget( "mobile.loader", { + // NOTE if the global config settings are defined they will override these + // options + options: { + // the theme for the loading message + theme: "a", + + // whether the text in the loading message is shown + textVisible: false, + + // custom html for the inner content of the loading message + html: "", + + // the text to be displayed when the popup is shown + text: "loading" + }, + + defaultHtml: "
      " + + "" + + "

      " + + "
      ", + + // For non-fixed supportin browsers. Position at y center (if scrollTop supported), above the activeBtn (if defined), or just 100px from top + fakeFixLoader: function() { + var activeBtn = $( "." + $.mobile.activeBtnClass ).first(); + + this.element + .css({ + top: $.support.scrollTop && $window.scrollTop() + $window.height() / 2 || + activeBtn.length && activeBtn.offset().top || 100 + }); + }, + + // check position of loader to see if it appears to be "fixed" to center + // if not, use abs positioning + checkLoaderPosition: function() { + var offset = this.element.offset(), + scrollTop = $window.scrollTop(), + screenHeight = $.mobile.getScreenHeight(); + + if ( offset.top < scrollTop || ( offset.top - scrollTop ) > screenHeight ) { + this.element.addClass( "ui-loader-fakefix" ); + this.fakeFixLoader(); + $window + .unbind( "scroll", this.checkLoaderPosition ) + .bind( "scroll", this.fakeFixLoader ); + } + }, + + resetHtml: function() { + this.element.html( $( this.defaultHtml ).html() ); + }, + + // Turn on/off page loading message. Theme doubles as an object argument + // with the following shape: { theme: '', text: '', html: '', textVisible: '' } + // NOTE that the $.mobile.loading* settings and params past the first are deprecated + // TODO sweet jesus we need to break some of this out + show: function( theme, msgText, textonly ) { + var textVisible, message, $header, loadSettings; + + this.resetHtml(); + + // use the prototype options so that people can set them globally at + // mobile init. Consistency, it's what's for dinner + if ( $.type(theme) === "object" ) { + loadSettings = $.extend( {}, this.options, theme ); + + // prefer object property from the param then the old theme setting + theme = loadSettings.theme || $.mobile.loadingMessageTheme; + } else { + loadSettings = this.options; + + // here we prefer the them value passed as a string argument, then + // we prefer the global option because we can't use undefined default + // prototype options, then the prototype option + theme = theme || $.mobile.loadingMessageTheme || loadSettings.theme; + } + + // set the message text, prefer the param, then the settings object + // then loading message + message = msgText || $.mobile.loadingMessage || loadSettings.text; + + // prepare the dom + $html.addClass( "ui-loading" ); + + if ( $.mobile.loadingMessage !== false || loadSettings.html ) { + // boolean values require a bit more work :P, supports object properties + // and old settings + if ( $.mobile.loadingMessageTextVisible !== undefined ) { + textVisible = $.mobile.loadingMessageTextVisible; + } else { + textVisible = loadSettings.textVisible; + } + + // add the proper css given the options (theme, text, etc) + // Force text visibility if the second argument was supplied, or + // if the text was explicitly set in the object args + this.element.attr("class", loaderClass + + " ui-corner-all ui-body-" + theme + + " ui-loader-" + ( textVisible || msgText || theme.text ? "verbose" : "default" ) + + ( loadSettings.textonly || textonly ? " ui-loader-textonly" : "" ) ); + + // TODO verify that jquery.fn.html is ok to use in both cases here + // this might be overly defensive in preventing unknowing xss + // if the html attribute is defined on the loading settings, use that + // otherwise use the fallbacks from above + if ( loadSettings.html ) { + this.element.html( loadSettings.html ); + } else { + this.element.find( "h1" ).text( message ); + } + + // attach the loader to the DOM + this.element.appendTo( $.mobile.pageContainer ); + + // check that the loader is visible + this.checkLoaderPosition(); + + // on scroll check the loader position + $window.bind( "scroll", $.proxy( this.checkLoaderPosition, this ) ); + } + }, + + hide: function() { + $html.removeClass( "ui-loading" ); + + if ( $.mobile.loadingMessage ) { + this.element.removeClass( "ui-loader-fakefix" ); + } + + $( window ).unbind( "scroll", $.proxy( this.fakeFixLoader, this) ); + $( window ).unbind( "scroll", $.proxy( this.checkLoaderPosition, this ) ); + } + }); + + $window.bind( 'pagecontainercreate', function() { + $.mobile.loaderWidget = $.mobile.loaderWidget || $( $.mobile.loader.prototype.defaultHtml ).loader(); + }); +})(jQuery, this); + + + +// This plugin is an experiment for abstracting away the touch and mouse +// events so that developers don't have to worry about which method of input +// the device their document is loaded on supports. +// +// The idea here is to allow the developer to register listeners for the +// basic mouse events, such as mousedown, mousemove, mouseup, and click, +// and the plugin will take care of registering the correct listeners +// behind the scenes to invoke the listener at the fastest possible time +// for that device, while still retaining the order of event firing in +// the traditional mouse environment, should multiple handlers be registered +// on the same element for different events. +// +// The current version exposes the following virtual events to jQuery bind methods: +// "vmouseover vmousedown vmousemove vmouseup vclick vmouseout vmousecancel" + +(function( $, window, document, undefined ) { + +var dataPropertyName = "virtualMouseBindings", + touchTargetPropertyName = "virtualTouchID", + virtualEventNames = "vmouseover vmousedown vmousemove vmouseup vclick vmouseout vmousecancel".split( " " ), + touchEventProps = "clientX clientY pageX pageY screenX screenY".split( " " ), + mouseHookProps = $.event.mouseHooks ? $.event.mouseHooks.props : [], + mouseEventProps = $.event.props.concat( mouseHookProps ), + activeDocHandlers = {}, + resetTimerID = 0, + startX = 0, + startY = 0, + didScroll = false, + clickBlockList = [], + blockMouseTriggers = false, + blockTouchTriggers = false, + eventCaptureSupported = "addEventListener" in document, + $document = $( document ), + nextTouchID = 1, + lastTouchID = 0, threshold; + +$.vmouse = { + moveDistanceThreshold: 10, + clickDistanceThreshold: 10, + resetTimerDuration: 1500 +}; + +function getNativeEvent( event ) { + + while ( event && typeof event.originalEvent !== "undefined" ) { + event = event.originalEvent; + } + return event; +} + +function createVirtualEvent( event, eventType ) { + + var t = event.type, + oe, props, ne, prop, ct, touch, i, j, len; + + event = $.Event( event ); + event.type = eventType; + + oe = event.originalEvent; + props = $.event.props; + + // addresses separation of $.event.props in to $.event.mouseHook.props and Issue 3280 + // https://github.com/jquery/jquery-mobile/issues/3280 + if ( t.search( /^(mouse|click)/ ) > -1 ) { + props = mouseEventProps; + } + + // copy original event properties over to the new event + // this would happen if we could call $.event.fix instead of $.Event + // but we don't have a way to force an event to be fixed multiple times + if ( oe ) { + for ( i = props.length, prop; i; ) { + prop = props[ --i ]; + event[ prop ] = oe[ prop ]; + } + } + + // make sure that if the mouse and click virtual events are generated + // without a .which one is defined + if ( t.search(/mouse(down|up)|click/) > -1 && !event.which ) { + event.which = 1; + } + + if ( t.search(/^touch/) !== -1 ) { + ne = getNativeEvent( oe ); + t = ne.touches; + ct = ne.changedTouches; + touch = ( t && t.length ) ? t[0] : ( ( ct && ct.length ) ? ct[ 0 ] : undefined ); + + if ( touch ) { + for ( j = 0, len = touchEventProps.length; j < len; j++) { + prop = touchEventProps[ j ]; + event[ prop ] = touch[ prop ]; + } + } + } + + return event; +} + +function getVirtualBindingFlags( element ) { + + var flags = {}, + b, k; + + while ( element ) { + + b = $.data( element, dataPropertyName ); + + for ( k in b ) { + if ( b[ k ] ) { + flags[ k ] = flags.hasVirtualBinding = true; + } + } + element = element.parentNode; + } + return flags; +} + +function getClosestElementWithVirtualBinding( element, eventType ) { + var b; + while ( element ) { + + b = $.data( element, dataPropertyName ); + + if ( b && ( !eventType || b[ eventType ] ) ) { + return element; + } + element = element.parentNode; + } + return null; +} + +function enableTouchBindings() { + blockTouchTriggers = false; +} + +function disableTouchBindings() { + blockTouchTriggers = true; +} + +function enableMouseBindings() { + lastTouchID = 0; + clickBlockList.length = 0; + blockMouseTriggers = false; + + // When mouse bindings are enabled, our + // touch bindings are disabled. + disableTouchBindings(); +} + +function disableMouseBindings() { + // When mouse bindings are disabled, our + // touch bindings are enabled. + enableTouchBindings(); +} + +function startResetTimer() { + clearResetTimer(); + resetTimerID = setTimeout( function() { + resetTimerID = 0; + enableMouseBindings(); + }, $.vmouse.resetTimerDuration ); +} + +function clearResetTimer() { + if ( resetTimerID ) { + clearTimeout( resetTimerID ); + resetTimerID = 0; + } +} + +function triggerVirtualEvent( eventType, event, flags ) { + var ve; + + if ( ( flags && flags[ eventType ] ) || + ( !flags && getClosestElementWithVirtualBinding( event.target, eventType ) ) ) { + + ve = createVirtualEvent( event, eventType ); + + $( event.target).trigger( ve ); + } + + return ve; +} + +function mouseEventCallback( event ) { + var touchID = $.data( event.target, touchTargetPropertyName ); + + if ( !blockMouseTriggers && ( !lastTouchID || lastTouchID !== touchID ) ) { + var ve = triggerVirtualEvent( "v" + event.type, event ); + if ( ve ) { + if ( ve.isDefaultPrevented() ) { + event.preventDefault(); + } + if ( ve.isPropagationStopped() ) { + event.stopPropagation(); + } + if ( ve.isImmediatePropagationStopped() ) { + event.stopImmediatePropagation(); + } + } + } +} + +function handleTouchStart( event ) { + + var touches = getNativeEvent( event ).touches, + target, flags; + + if ( touches && touches.length === 1 ) { + + target = event.target; + flags = getVirtualBindingFlags( target ); + + if ( flags.hasVirtualBinding ) { + + lastTouchID = nextTouchID++; + $.data( target, touchTargetPropertyName, lastTouchID ); + + clearResetTimer(); + + disableMouseBindings(); + didScroll = false; + + var t = getNativeEvent( event ).touches[ 0 ]; + startX = t.pageX; + startY = t.pageY; + + triggerVirtualEvent( "vmouseover", event, flags ); + triggerVirtualEvent( "vmousedown", event, flags ); + } + } +} + +function handleScroll( event ) { + if ( blockTouchTriggers ) { + return; + } + + if ( !didScroll ) { + triggerVirtualEvent( "vmousecancel", event, getVirtualBindingFlags( event.target ) ); + } + + didScroll = true; + startResetTimer(); +} + +function handleTouchMove( event ) { + if ( blockTouchTriggers ) { + return; + } + + var t = getNativeEvent( event ).touches[ 0 ], + didCancel = didScroll, + moveThreshold = $.vmouse.moveDistanceThreshold, + flags = getVirtualBindingFlags( event.target ); + + didScroll = didScroll || + ( Math.abs( t.pageX - startX ) > moveThreshold || + Math.abs( t.pageY - startY ) > moveThreshold ); + + + if ( didScroll && !didCancel ) { + triggerVirtualEvent( "vmousecancel", event, flags ); + } + + triggerVirtualEvent( "vmousemove", event, flags ); + startResetTimer(); +} + +function handleTouchEnd( event ) { + if ( blockTouchTriggers ) { + return; + } + + disableTouchBindings(); + + var flags = getVirtualBindingFlags( event.target ), + t; + triggerVirtualEvent( "vmouseup", event, flags ); + + if ( !didScroll ) { + var ve = triggerVirtualEvent( "vclick", event, flags ); + if ( ve && ve.isDefaultPrevented() ) { + // The target of the mouse events that follow the touchend + // event don't necessarily match the target used during the + // touch. This means we need to rely on coordinates for blocking + // any click that is generated. + t = getNativeEvent( event ).changedTouches[ 0 ]; + clickBlockList.push({ + touchID: lastTouchID, + x: t.clientX, + y: t.clientY + }); + + // Prevent any mouse events that follow from triggering + // virtual event notifications. + blockMouseTriggers = true; + } + } + triggerVirtualEvent( "vmouseout", event, flags); + didScroll = false; + + startResetTimer(); +} + +function hasVirtualBindings( ele ) { + var bindings = $.data( ele, dataPropertyName ), + k; + + if ( bindings ) { + for ( k in bindings ) { + if ( bindings[ k ] ) { + return true; + } + } + } + return false; +} + +function dummyMouseHandler() {} + +function getSpecialEventObject( eventType ) { + var realType = eventType.substr( 1 ); + + return { + setup: function( data, namespace ) { + // If this is the first virtual mouse binding for this element, + // add a bindings object to its data. + + if ( !hasVirtualBindings( this ) ) { + $.data( this, dataPropertyName, {} ); + } + + // If setup is called, we know it is the first binding for this + // eventType, so initialize the count for the eventType to zero. + var bindings = $.data( this, dataPropertyName ); + bindings[ eventType ] = true; + + // If this is the first virtual mouse event for this type, + // register a global handler on the document. + + activeDocHandlers[ eventType ] = ( activeDocHandlers[ eventType ] || 0 ) + 1; + + if ( activeDocHandlers[ eventType ] === 1 ) { + $document.bind( realType, mouseEventCallback ); + } + + // Some browsers, like Opera Mini, won't dispatch mouse/click events + // for elements unless they actually have handlers registered on them. + // To get around this, we register dummy handlers on the elements. + + $( this ).bind( realType, dummyMouseHandler ); + + // For now, if event capture is not supported, we rely on mouse handlers. + if ( eventCaptureSupported ) { + // If this is the first virtual mouse binding for the document, + // register our touchstart handler on the document. + + activeDocHandlers[ "touchstart" ] = ( activeDocHandlers[ "touchstart" ] || 0) + 1; + + if ( activeDocHandlers[ "touchstart" ] === 1 ) { + $document.bind( "touchstart", handleTouchStart ) + .bind( "touchend", handleTouchEnd ) + + // On touch platforms, touching the screen and then dragging your finger + // causes the window content to scroll after some distance threshold is + // exceeded. On these platforms, a scroll prevents a click event from being + // dispatched, and on some platforms, even the touchend is suppressed. To + // mimic the suppression of the click event, we need to watch for a scroll + // event. Unfortunately, some platforms like iOS don't dispatch scroll + // events until *AFTER* the user lifts their finger (touchend). This means + // we need to watch both scroll and touchmove events to figure out whether + // or not a scroll happenens before the touchend event is fired. + + .bind( "touchmove", handleTouchMove ) + .bind( "scroll", handleScroll ); + } + } + }, + + teardown: function( data, namespace ) { + // If this is the last virtual binding for this eventType, + // remove its global handler from the document. + + --activeDocHandlers[ eventType ]; + + if ( !activeDocHandlers[ eventType ] ) { + $document.unbind( realType, mouseEventCallback ); + } + + if ( eventCaptureSupported ) { + // If this is the last virtual mouse binding in existence, + // remove our document touchstart listener. + + --activeDocHandlers[ "touchstart" ]; + + if ( !activeDocHandlers[ "touchstart" ] ) { + $document.unbind( "touchstart", handleTouchStart ) + .unbind( "touchmove", handleTouchMove ) + .unbind( "touchend", handleTouchEnd ) + .unbind( "scroll", handleScroll ); + } + } + + var $this = $( this ), + bindings = $.data( this, dataPropertyName ); + + // teardown may be called when an element was + // removed from the DOM. If this is the case, + // jQuery core may have already stripped the element + // of any data bindings so we need to check it before + // using it. + if ( bindings ) { + bindings[ eventType ] = false; + } + + // Unregister the dummy event handler. + + $this.unbind( realType, dummyMouseHandler ); + + // If this is the last virtual mouse binding on the + // element, remove the binding data from the element. + + if ( !hasVirtualBindings( this ) ) { + $this.removeData( dataPropertyName ); + } + } + }; +} + +// Expose our custom events to the jQuery bind/unbind mechanism. + +for ( var i = 0; i < virtualEventNames.length; i++ ) { + $.event.special[ virtualEventNames[ i ] ] = getSpecialEventObject( virtualEventNames[ i ] ); +} + +// Add a capture click handler to block clicks. +// Note that we require event capture support for this so if the device +// doesn't support it, we punt for now and rely solely on mouse events. +if ( eventCaptureSupported ) { + document.addEventListener( "click", function( e ) { + var cnt = clickBlockList.length, + target = e.target, + x, y, ele, i, o, touchID; + + if ( cnt ) { + x = e.clientX; + y = e.clientY; + threshold = $.vmouse.clickDistanceThreshold; + + // The idea here is to run through the clickBlockList to see if + // the current click event is in the proximity of one of our + // vclick events that had preventDefault() called on it. If we find + // one, then we block the click. + // + // Why do we have to rely on proximity? + // + // Because the target of the touch event that triggered the vclick + // can be different from the target of the click event synthesized + // by the browser. The target of a mouse/click event that is syntehsized + // from a touch event seems to be implementation specific. For example, + // some browsers will fire mouse/click events for a link that is near + // a touch event, even though the target of the touchstart/touchend event + // says the user touched outside the link. Also, it seems that with most + // browsers, the target of the mouse/click event is not calculated until the + // time it is dispatched, so if you replace an element that you touched + // with another element, the target of the mouse/click will be the new + // element underneath that point. + // + // Aside from proximity, we also check to see if the target and any + // of its ancestors were the ones that blocked a click. This is necessary + // because of the strange mouse/click target calculation done in the + // Android 2.1 browser, where if you click on an element, and there is a + // mouse/click handler on one of its ancestors, the target will be the + // innermost child of the touched element, even if that child is no where + // near the point of touch. + + ele = target; + + while ( ele ) { + for ( i = 0; i < cnt; i++ ) { + o = clickBlockList[ i ]; + touchID = 0; + + if ( ( ele === target && Math.abs( o.x - x ) < threshold && Math.abs( o.y - y ) < threshold ) || + $.data( ele, touchTargetPropertyName ) === o.touchID ) { + // XXX: We may want to consider removing matches from the block list + // instead of waiting for the reset timer to fire. + e.preventDefault(); + e.stopPropagation(); + return; + } + } + ele = ele.parentNode; + } + } + }, true); +} +})( jQuery, window, document ); + + (function( $, undefined ) { + var support = { + touch: "ontouchend" in document + }; + + $.mobile = $.mobile || {}; + $.mobile.support = $.mobile.support || {}; + $.extend( $.support, support ); + $.extend( $.mobile.support, support ); + }( jQuery )); + + +(function( $, window, undefined ) { + // add new event shortcuts + $.each( ( "touchstart touchmove touchend " + + "tap taphold " + + "swipe swipeleft swiperight " + + "scrollstart scrollstop" ).split( " " ), function( i, name ) { + + $.fn[ name ] = function( fn ) { + return fn ? this.bind( name, fn ) : this.trigger( name ); + }; + + // jQuery < 1.8 + if ( $.attrFn ) { + $.attrFn[ name ] = true; + } + }); + + var supportTouch = $.mobile.support.touch, + scrollEvent = "touchmove scroll", + touchStartEvent = supportTouch ? "touchstart" : "mousedown", + touchStopEvent = supportTouch ? "touchend" : "mouseup", + touchMoveEvent = supportTouch ? "touchmove" : "mousemove"; + + function triggerCustomEvent( obj, eventType, event ) { + var originalType = event.type; + event.type = eventType; + $.event.handle.call( obj, event ); + event.type = originalType; + } + + // also handles scrollstop + $.event.special.scrollstart = { + + enabled: true, + + setup: function() { + + var thisObject = this, + $this = $( thisObject ), + scrolling, + timer; + + function trigger( event, state ) { + scrolling = state; + triggerCustomEvent( thisObject, scrolling ? "scrollstart" : "scrollstop", event ); + } + + // iPhone triggers scroll after a small delay; use touchmove instead + $this.bind( scrollEvent, function( event ) { + + if ( !$.event.special.scrollstart.enabled ) { + return; + } + + if ( !scrolling ) { + trigger( event, true ); + } + + clearTimeout( timer ); + timer = setTimeout( function() { + trigger( event, false ); + }, 50 ); + }); + } + }; + + // also handles taphold + $.event.special.tap = { + tapholdThreshold: 750, + + setup: function() { + var thisObject = this, + $this = $( thisObject ); + + $this.bind( "vmousedown", function( event ) { + + if ( event.which && event.which !== 1 ) { + return false; + } + + var origTarget = event.target, + origEvent = event.originalEvent, + timer; + + function clearTapTimer() { + clearTimeout( timer ); + } + + function clearTapHandlers() { + clearTapTimer(); + + $this.unbind( "vclick", clickHandler ) + .unbind( "vmouseup", clearTapTimer ); + $( document ).unbind( "vmousecancel", clearTapHandlers ); + } + + function clickHandler( event ) { + clearTapHandlers(); + + // ONLY trigger a 'tap' event if the start target is + // the same as the stop target. + if ( origTarget === event.target ) { + triggerCustomEvent( thisObject, "tap", event ); + } + } + + $this.bind( "vmouseup", clearTapTimer ) + .bind( "vclick", clickHandler ); + $( document ).bind( "vmousecancel", clearTapHandlers ); + + timer = setTimeout( function() { + triggerCustomEvent( thisObject, "taphold", $.Event( "taphold", { target: origTarget } ) ); + }, $.event.special.tap.tapholdThreshold ); + }); + } + }; + + // also handles swipeleft, swiperight + $.event.special.swipe = { + scrollSupressionThreshold: 30, // More than this horizontal displacement, and we will suppress scrolling. + + durationThreshold: 1000, // More time than this, and it isn't a swipe. + + horizontalDistanceThreshold: 30, // Swipe horizontal displacement must be more than this. + + verticalDistanceThreshold: 75, // Swipe vertical displacement must be less than this. + + setup: function() { + var thisObject = this, + $this = $( thisObject ); + + $this.bind( touchStartEvent, function( event ) { + var data = event.originalEvent.touches ? + event.originalEvent.touches[ 0 ] : event, + start = { + time: ( new Date() ).getTime(), + coords: [ data.pageX, data.pageY ], + origin: $( event.target ) + }, + stop; + + function moveHandler( event ) { + + if ( !start ) { + return; + } + + var data = event.originalEvent.touches ? + event.originalEvent.touches[ 0 ] : event; + + stop = { + time: ( new Date() ).getTime(), + coords: [ data.pageX, data.pageY ] + }; + + // prevent scrolling + if ( Math.abs( start.coords[ 0 ] - stop.coords[ 0 ] ) > $.event.special.swipe.scrollSupressionThreshold ) { + event.preventDefault(); + } + } + + $this.bind( touchMoveEvent, moveHandler ) + .one( touchStopEvent, function( event ) { + $this.unbind( touchMoveEvent, moveHandler ); + + if ( start && stop ) { + if ( stop.time - start.time < $.event.special.swipe.durationThreshold && + Math.abs( start.coords[ 0 ] - stop.coords[ 0 ] ) > $.event.special.swipe.horizontalDistanceThreshold && + Math.abs( start.coords[ 1 ] - stop.coords[ 1 ] ) < $.event.special.swipe.verticalDistanceThreshold ) { + + start.origin.trigger( "swipe" ) + .trigger( start.coords[0] > stop.coords[ 0 ] ? "swipeleft" : "swiperight" ); + } + } + start = stop = undefined; + }); + }); + } + }; + $.each({ + scrollstop: "scrollstart", + taphold: "tap", + swipeleft: "swipe", + swiperight: "swipe" + }, function( event, sourceEvent ) { + + $.event.special[ event ] = { + setup: function() { + $( this ).bind( sourceEvent, $.noop ); + } + }; + }); + +})( jQuery, this ); + + (function( $, undefined ) { + $.extend( $.support, { + orientation: "orientation" in window && "onorientationchange" in window + }); + }( jQuery )); + + + // throttled resize event + (function( $ ) { + $.event.special.throttledresize = { + setup: function() { + $( this ).bind( "resize", handler ); + }, + teardown: function() { + $( this ).unbind( "resize", handler ); + } + }; + + var throttle = 250, + handler = function() { + curr = ( new Date() ).getTime(); + diff = curr - lastCall; + + if ( diff >= throttle ) { + + lastCall = curr; + $( this ).trigger( "throttledresize" ); + + } else { + + if ( heldCall ) { + clearTimeout( heldCall ); + } + + // Promise a held call will still execute + heldCall = setTimeout( handler, throttle - diff ); + } + }, + lastCall = 0, + heldCall, + curr, + diff; + })( jQuery ); + +(function( $, window ) { + var win = $( window ), + event_name = "orientationchange", + special_event, + get_orientation, + last_orientation, + initial_orientation_is_landscape, + initial_orientation_is_default, + portrait_map = { "0": true, "180": true }; + + // It seems that some device/browser vendors use window.orientation values 0 and 180 to + // denote the "default" orientation. For iOS devices, and most other smart-phones tested, + // the default orientation is always "portrait", but in some Android and RIM based tablets, + // the default orientation is "landscape". The following code attempts to use the window + // dimensions to figure out what the current orientation is, and then makes adjustments + // to the to the portrait_map if necessary, so that we can properly decode the + // window.orientation value whenever get_orientation() is called. + // + // Note that we used to use a media query to figure out what the orientation the browser + // thinks it is in: + // + // initial_orientation_is_landscape = $.mobile.media("all and (orientation: landscape)"); + // + // but there was an iPhone/iPod Touch bug beginning with iOS 4.2, up through iOS 5.1, + // where the browser *ALWAYS* applied the landscape media query. This bug does not + // happen on iPad. + + if ( $.support.orientation ) { + + // Check the window width and height to figure out what the current orientation + // of the device is at this moment. Note that we've initialized the portrait map + // values to 0 and 180, *AND* we purposely check for landscape so that if we guess + // wrong, , we default to the assumption that portrait is the default orientation. + // We use a threshold check below because on some platforms like iOS, the iPhone + // form-factor can report a larger width than height if the user turns on the + // developer console. The actual threshold value is somewhat arbitrary, we just + // need to make sure it is large enough to exclude the developer console case. + + var ww = window.innerWidth || $( window ).width(), + wh = window.innerHeight || $( window ).height(), + landscape_threshold = 50; + + initial_orientation_is_landscape = ww > wh && ( ww - wh ) > landscape_threshold; + + + // Now check to see if the current window.orientation is 0 or 180. + initial_orientation_is_default = portrait_map[ window.orientation ]; + + // If the initial orientation is landscape, but window.orientation reports 0 or 180, *OR* + // if the initial orientation is portrait, but window.orientation reports 90 or -90, we + // need to flip our portrait_map values because landscape is the default orientation for + // this device/browser. + if ( ( initial_orientation_is_landscape && initial_orientation_is_default ) || ( !initial_orientation_is_landscape && !initial_orientation_is_default ) ) { + portrait_map = { "-90": true, "90": true }; + } + } + + $.event.special.orientationchange = $.extend( {}, $.event.special.orientationchange, { + setup: function() { + // If the event is supported natively, return false so that jQuery + // will bind to the event using DOM methods. + if ( $.support.orientation && !$.event.special.orientationchange.disabled ) { + return false; + } + + // Get the current orientation to avoid initial double-triggering. + last_orientation = get_orientation(); + + // Because the orientationchange event doesn't exist, simulate the + // event by testing window dimensions on resize. + win.bind( "throttledresize", handler ); + }, + teardown: function() { + // If the event is not supported natively, return false so that + // jQuery will unbind the event using DOM methods. + if ( $.support.orientation && !$.event.special.orientationchange.disabled ) { + return false; + } + + // Because the orientationchange event doesn't exist, unbind the + // resize event handler. + win.unbind( "throttledresize", handler ); + }, + add: function( handleObj ) { + // Save a reference to the bound event handler. + var old_handler = handleObj.handler; + + + handleObj.handler = function( event ) { + // Modify event object, adding the .orientation property. + event.orientation = get_orientation(); + + // Call the originally-bound event handler and return its result. + return old_handler.apply( this, arguments ); + }; + } + }); + + // If the event is not supported natively, this handler will be bound to + // the window resize event to simulate the orientationchange event. + function handler() { + // Get the current orientation. + var orientation = get_orientation(); + + if ( orientation !== last_orientation ) { + // The orientation has changed, so trigger the orientationchange event. + last_orientation = orientation; + win.trigger( event_name ); + } + } + + // Get the current page orientation. This method is exposed publicly, should it + // be needed, as jQuery.event.special.orientationchange.orientation() + $.event.special.orientationchange.orientation = get_orientation = function() { + var isPortrait = true, elem = document.documentElement; + + // prefer window orientation to the calculation based on screensize as + // the actual screen resize takes place before or after the orientation change event + // has been fired depending on implementation (eg android 2.3 is before, iphone after). + // More testing is required to determine if a more reliable method of determining the new screensize + // is possible when orientationchange is fired. (eg, use media queries + element + opacity) + if ( $.support.orientation ) { + // if the window orientation registers as 0 or 180 degrees report + // portrait, otherwise landscape + isPortrait = portrait_map[ window.orientation ]; + } else { + isPortrait = elem && elem.clientWidth / elem.clientHeight < 1.1; + } + + return isPortrait ? "portrait" : "landscape"; + }; + + $.fn[ event_name ] = function( fn ) { + return fn ? this.bind( event_name, fn ) : this.trigger( event_name ); + }; + + // jQuery < 1.8 + if ( $.attrFn ) { + $.attrFn[ event_name ] = true; + } + +}( jQuery, this )); + + +(function( $, undefined ) { + +var $window = $( window ), + $html = $( "html" ); + +/* $.mobile.media method: pass a CSS media type or query and get a bool return + note: this feature relies on actual media query support for media queries, though types will work most anywhere + examples: + $.mobile.media('screen') // tests for screen media type + $.mobile.media('screen and (min-width: 480px)') // tests for screen media type with window width > 480px + $.mobile.media('@media screen and (-webkit-min-device-pixel-ratio: 2)') // tests for webkit 2x pixel ratio (iPhone 4) +*/ +$.mobile.media = (function() { + // TODO: use window.matchMedia once at least one UA implements it + var cache = {}, + testDiv = $( "
      " ), + fakeBody = $( "" ).append( testDiv ); + + return function( query ) { + if ( !( query in cache ) ) { + var styleBlock = document.createElement( "style" ), + cssrule = "@media " + query + " { #jquery-mediatest { position:absolute; } }"; + + //must set type for IE! + styleBlock.type = "text/css"; + + if ( styleBlock.styleSheet ) { + styleBlock.styleSheet.cssText = cssrule; + } else { + styleBlock.appendChild( document.createTextNode(cssrule) ); + } + + $html.prepend( fakeBody ).prepend( styleBlock ); + cache[ query ] = testDiv.css( "position" ) === "absolute"; + fakeBody.add( styleBlock ).remove(); + } + return cache[ query ]; + }; +})(); + +})(jQuery); + +(function( $, undefined ) { + +// thx Modernizr +function propExists( prop ) { + var uc_prop = prop.charAt( 0 ).toUpperCase() + prop.substr( 1 ), + props = ( prop + " " + vendors.join( uc_prop + " " ) + uc_prop ).split( " " ); + + for ( var v in props ) { + if ( fbCSS[ props[ v ] ] !== undefined ) { + return true; + } + } +} + +var fakeBody = $( "" ).prependTo( "html" ), + fbCSS = fakeBody[ 0 ].style, + vendors = [ "Webkit", "Moz", "O" ], + webos = "palmGetResource" in window, //only used to rule out scrollTop + opera = window.opera, + operamini = window.operamini && ({}).toString.call( window.operamini ) === "[object OperaMini]", + bb = window.blackberry && !propExists( "-webkit-transform" ); //only used to rule out box shadow, as it's filled opaque on BB 5 and lower + + +function validStyle( prop, value, check_vend ) { + var div = document.createElement( 'div' ), + uc = function( txt ) { + return txt.charAt( 0 ).toUpperCase() + txt.substr( 1 ); + }, + vend_pref = function( vend ) { + return "-" + vend.charAt( 0 ).toLowerCase() + vend.substr( 1 ) + "-"; + }, + check_style = function( vend ) { + var vend_prop = vend_pref( vend ) + prop + ": " + value + ";", + uc_vend = uc( vend ), + propStyle = uc_vend + uc( prop ); + + div.setAttribute( "style", vend_prop ); + + if ( !!div.style[ propStyle ] ) { + ret = true; + } + }, + check_vends = check_vend ? [ check_vend ] : vendors, + ret; + + for( var i = 0; i < check_vends.length; i++ ) { + check_style( check_vends[i] ); + } + return !!ret; +} + +// Thanks to Modernizr src for this test idea. `perspective` check is limited to Moz to prevent a false positive for 3D transforms on Android. +function transform3dTest() { + var prop = "transform-3d"; + return validStyle( 'perspective', '10px', 'moz' ) || $.mobile.media( "(-" + vendors.join( "-" + prop + "),(-" ) + "-" + prop + "),(" + prop + ")" ); +} + +// Test for dynamic-updating base tag support ( allows us to avoid href,src attr rewriting ) +function baseTagTest() { + var fauxBase = location.protocol + "//" + location.host + location.pathname + "ui-dir/", + base = $( "head base" ), + fauxEle = null, + href = "", + link, rebase; + + if ( !base.length ) { + base = fauxEle = $( "", { "href": fauxBase }).appendTo( "head" ); + } else { + href = base.attr( "href" ); + } + + link = $( "" ).prependTo( fakeBody ); + rebase = link[ 0 ].href; + base[ 0 ].href = href || location.pathname; + + if ( fauxEle ) { + fauxEle.remove(); + } + return rebase.indexOf( fauxBase ) === 0; +} + +// Thanks Modernizr +function cssPointerEventsTest() { + var element = document.createElement( 'x' ), + documentElement = document.documentElement, + getComputedStyle = window.getComputedStyle, + supports; + + if ( !( 'pointerEvents' in element.style ) ) { + return false; + } + + element.style.pointerEvents = 'auto'; + element.style.pointerEvents = 'x'; + documentElement.appendChild( element ); + supports = getComputedStyle && + getComputedStyle( element, '' ).pointerEvents === 'auto'; + documentElement.removeChild( element ); + return !!supports; +} + +function boundingRect() { + var div = document.createElement( "div" ); + return typeof div.getBoundingClientRect !== "undefined"; +} + +// non-UA-based IE version check by James Padolsey, modified by jdalton - from http://gist.github.com/527683 +// allows for inclusion of IE 6+, including Windows Mobile 7 +$.extend( $.mobile, { browser: {} } ); +$.mobile.browser.ie = (function() { + var v = 3, + div = document.createElement( "div" ), + a = div.all || []; + + do { + div.innerHTML = ""; + } while( a[0] ); + + return v > 4 ? v : !v; +})(); + + +$.extend( $.support, { + cssTransitions: "WebKitTransitionEvent" in window || validStyle( 'transition', 'height 100ms linear' ) && !opera, + pushState: "pushState" in history && "replaceState" in history, + mediaquery: $.mobile.media( "only all" ), + cssPseudoElement: !!propExists( "content" ), + touchOverflow: !!propExists( "overflowScrolling" ), + cssTransform3d: transform3dTest(), + boxShadow: !!propExists( "boxShadow" ) && !bb, + scrollTop: ( "pageXOffset" in window || "scrollTop" in document.documentElement || "scrollTop" in fakeBody[ 0 ] ) && !webos && !operamini, + dynamicBaseTag: baseTagTest(), + cssPointerEvents: cssPointerEventsTest(), + boundingRect: boundingRect() +}); + +fakeBody.remove(); + + +// $.mobile.ajaxBlacklist is used to override ajaxEnabled on platforms that have known conflicts with hash history updates (BB5, Symbian) +// or that generally work better browsing in regular http for full page refreshes (Opera Mini) +// Note: This detection below is used as a last resort. +// We recommend only using these detection methods when all other more reliable/forward-looking approaches are not possible +var nokiaLTE7_3 = (function() { + + var ua = window.navigator.userAgent; + + //The following is an attempt to match Nokia browsers that are running Symbian/s60, with webkit, version 7.3 or older + return ua.indexOf( "Nokia" ) > -1 && + ( ua.indexOf( "Symbian/3" ) > -1 || ua.indexOf( "Series60/5" ) > -1 ) && + ua.indexOf( "AppleWebKit" ) > -1 && + ua.match( /(BrowserNG|NokiaBrowser)\/7\.[0-3]/ ); +})(); + +// Support conditions that must be met in order to proceed +// default enhanced qualifications are media query support OR IE 7+ + +$.mobile.gradeA = function() { + return ( $.support.mediaquery || $.mobile.browser.ie && $.mobile.browser.ie >= 7 ) && ( $.support.boundingRect || $.fn.jquery.match(/1\.[0-7+]\.[0-9+]?/) !== null ); +}; + +$.mobile.ajaxBlacklist = + // BlackBerry browsers, pre-webkit + window.blackberry && !window.WebKitPoint || + // Opera Mini + operamini || + // Symbian webkits pre 7.3 + nokiaLTE7_3; + +// Lastly, this workaround is the only way we've found so far to get pre 7.3 Symbian webkit devices +// to render the stylesheets when they're referenced before this script, as we'd recommend doing. +// This simply reappends the CSS in place, which for some reason makes it apply +if ( nokiaLTE7_3 ) { + $(function() { + $( "head link[rel='stylesheet']" ).attr( "rel", "alternate stylesheet" ).attr( "rel", "stylesheet" ); + }); +} + +// For ruling out shadows via css +if ( !$.support.boxShadow ) { + $( "html" ).addClass( "ui-mobile-nosupport-boxshadow" ); +} + +})( jQuery ); + +(function( $, undefined ) { + +$.widget( "mobile.page", $.mobile.widget, { + options: { + theme: "c", + domCache: false, + keepNativeDefault: ":jqmData(role='none'), :jqmData(role='nojs')" + }, + + _create: function() { + + var self = this; + + // if false is returned by the callbacks do not create the page + if ( self._trigger( "beforecreate" ) === false ) { + return false; + } + + self.element + .attr( "tabindex", "0" ) + .addClass( "ui-page ui-body-" + self.options.theme ) + .bind( "pagebeforehide", function() { + self.removeContainerBackground(); + } ) + .bind( "pagebeforeshow", function() { + self.setContainerBackground(); + } ); + + }, + + removeContainerBackground: function() { + $.mobile.pageContainer.removeClass( "ui-overlay-" + $.mobile.getInheritedTheme( this.element.parent() ) ); + }, + + // set the page container background to the page theme + setContainerBackground: function( theme ) { + if ( this.options.theme ) { + $.mobile.pageContainer.addClass( "ui-overlay-" + ( theme || this.options.theme ) ); + } + }, + + keepNativeSelector: function() { + var options = this.options, + keepNativeDefined = options.keepNative && $.trim( options.keepNative ); + + if ( keepNativeDefined && options.keepNative !== options.keepNativeDefault ) { + return [options.keepNative, options.keepNativeDefault].join( ", " ); + } + + return options.keepNativeDefault; + } +}); +})( jQuery ); + +// Script: jQuery hashchange event +// +// *Version: 1.3, Last updated: 7/21/2010* +// +// Project Home - http://benalman.com/projects/jquery-hashchange-plugin/ +// GitHub - http://github.com/cowboy/jquery-hashchange/ +// Source - http://github.com/cowboy/jquery-hashchange/raw/master/jquery.ba-hashchange.js +// (Minified) - http://github.com/cowboy/jquery-hashchange/raw/master/jquery.ba-hashchange.min.js (0.8kb gzipped) +// +// About: License +// +// Copyright (c) 2010 "Cowboy" Ben Alman, +// Dual licensed under the MIT and GPL licenses. +// http://benalman.com/about/license/ +// +// About: Examples +// +// These working examples, complete with fully commented code, illustrate a few +// ways in which this plugin can be used. +// +// hashchange event - http://benalman.com/code/projects/jquery-hashchange/examples/hashchange/ +// document.domain - http://benalman.com/code/projects/jquery-hashchange/examples/document_domain/ +// +// About: Support and Testing +// +// Information about what version or versions of jQuery this plugin has been +// tested with, what browsers it has been tested in, and where the unit tests +// reside (so you can test it yourself). +// +// jQuery Versions - 1.2.6, 1.3.2, 1.4.1, 1.4.2 +// Browsers Tested - Internet Explorer 6-8, Firefox 2-4, Chrome 5-6, Safari 3.2-5, +// Opera 9.6-10.60, iPhone 3.1, Android 1.6-2.2, BlackBerry 4.6-5. +// Unit Tests - http://benalman.com/code/projects/jquery-hashchange/unit/ +// +// About: Known issues +// +// While this jQuery hashchange event implementation is quite stable and +// robust, there are a few unfortunate browser bugs surrounding expected +// hashchange event-based behaviors, independent of any JavaScript +// window.onhashchange abstraction. See the following examples for more +// information: +// +// Chrome: Back Button - http://benalman.com/code/projects/jquery-hashchange/examples/bug-chrome-back-button/ +// Firefox: Remote XMLHttpRequest - http://benalman.com/code/projects/jquery-hashchange/examples/bug-firefox-remote-xhr/ +// WebKit: Back Button in an Iframe - http://benalman.com/code/projects/jquery-hashchange/examples/bug-webkit-hash-iframe/ +// Safari: Back Button from a different domain - http://benalman.com/code/projects/jquery-hashchange/examples/bug-safari-back-from-diff-domain/ +// +// Also note that should a browser natively support the window.onhashchange +// event, but not report that it does, the fallback polling loop will be used. +// +// About: Release History +// +// 1.3 - (7/21/2010) Reorganized IE6/7 Iframe code to make it more +// "removable" for mobile-only development. Added IE6/7 document.title +// support. Attempted to make Iframe as hidden as possible by using +// techniques from http://www.paciellogroup.com/blog/?p=604. Added +// support for the "shortcut" format $(window).hashchange( fn ) and +// $(window).hashchange() like jQuery provides for built-in events. +// Renamed jQuery.hashchangeDelay to and +// lowered its default value to 50. Added +// and properties plus document-domain.html +// file to address access denied issues when setting document.domain in +// IE6/7. +// 1.2 - (2/11/2010) Fixed a bug where coming back to a page using this plugin +// from a page on another domain would cause an error in Safari 4. Also, +// IE6/7 Iframe is now inserted after the body (this actually works), +// which prevents the page from scrolling when the event is first bound. +// Event can also now be bound before DOM ready, but it won't be usable +// before then in IE6/7. +// 1.1 - (1/21/2010) Incorporated document.documentMode test to fix IE8 bug +// where browser version is incorrectly reported as 8.0, despite +// inclusion of the X-UA-Compatible IE=EmulateIE7 meta tag. +// 1.0 - (1/9/2010) Initial Release. Broke out the jQuery BBQ event.special +// window.onhashchange functionality into a separate plugin for users +// who want just the basic event & back button support, without all the +// extra awesomeness that BBQ provides. This plugin will be included as +// part of jQuery BBQ, but also be available separately. + +(function( $, window, undefined ) { + // Reused string. + var str_hashchange = 'hashchange', + + // Method / object references. + doc = document, + fake_onhashchange, + special = $.event.special, + + // Does the browser support window.onhashchange? Note that IE8 running in + // IE7 compatibility mode reports true for 'onhashchange' in window, even + // though the event isn't supported, so also test document.documentMode. + doc_mode = doc.documentMode, + supports_onhashchange = 'on' + str_hashchange in window && ( doc_mode === undefined || doc_mode > 7 ); + + // Get location.hash (or what you'd expect location.hash to be) sans any + // leading #. Thanks for making this necessary, Firefox! + function get_fragment( url ) { + url = url || location.href; + return '#' + url.replace( /^[^#]*#?(.*)$/, '$1' ); + }; + + // Method: jQuery.fn.hashchange + // + // Bind a handler to the window.onhashchange event or trigger all bound + // window.onhashchange event handlers. This behavior is consistent with + // jQuery's built-in event handlers. + // + // Usage: + // + // > jQuery(window).hashchange( [ handler ] ); + // + // Arguments: + // + // handler - (Function) Optional handler to be bound to the hashchange + // event. This is a "shortcut" for the more verbose form: + // jQuery(window).bind( 'hashchange', handler ). If handler is omitted, + // all bound window.onhashchange event handlers will be triggered. This + // is a shortcut for the more verbose + // jQuery(window).trigger( 'hashchange' ). These forms are described in + // the section. + // + // Returns: + // + // (jQuery) The initial jQuery collection of elements. + + // Allow the "shortcut" format $(elem).hashchange( fn ) for binding and + // $(elem).hashchange() for triggering, like jQuery does for built-in events. + $.fn[ str_hashchange ] = function( fn ) { + return fn ? this.bind( str_hashchange, fn ) : this.trigger( str_hashchange ); + }; + + // Property: jQuery.fn.hashchange.delay + // + // The numeric interval (in milliseconds) at which the + // polling loop executes. Defaults to 50. + + // Property: jQuery.fn.hashchange.domain + // + // If you're setting document.domain in your JavaScript, and you want hash + // history to work in IE6/7, not only must this property be set, but you must + // also set document.domain BEFORE jQuery is loaded into the page. This + // property is only applicable if you are supporting IE6/7 (or IE8 operating + // in "IE7 compatibility" mode). + // + // In addition, the property must be set to the + // path of the included "document-domain.html" file, which can be renamed or + // modified if necessary (note that the document.domain specified must be the + // same in both your main JavaScript as well as in this file). + // + // Usage: + // + // jQuery.fn.hashchange.domain = document.domain; + + // Property: jQuery.fn.hashchange.src + // + // If, for some reason, you need to specify an Iframe src file (for example, + // when setting document.domain as in ), you can + // do so using this property. Note that when using this property, history + // won't be recorded in IE6/7 until the Iframe src file loads. This property + // is only applicable if you are supporting IE6/7 (or IE8 operating in "IE7 + // compatibility" mode). + // + // Usage: + // + // jQuery.fn.hashchange.src = 'path/to/file.html'; + + $.fn[ str_hashchange ].delay = 50; + /* + $.fn[ str_hashchange ].domain = null; + $.fn[ str_hashchange ].src = null; + */ + + // Event: hashchange event + // + // Fired when location.hash changes. In browsers that support it, the native + // HTML5 window.onhashchange event is used, otherwise a polling loop is + // initialized, running every milliseconds to + // see if the hash has changed. In IE6/7 (and IE8 operating in "IE7 + // compatibility" mode), a hidden Iframe is created to allow the back button + // and hash-based history to work. + // + // Usage as described in : + // + // > // Bind an event handler. + // > jQuery(window).hashchange( function(e) { + // > var hash = location.hash; + // > ... + // > }); + // > + // > // Manually trigger the event handler. + // > jQuery(window).hashchange(); + // + // A more verbose usage that allows for event namespacing: + // + // > // Bind an event handler. + // > jQuery(window).bind( 'hashchange', function(e) { + // > var hash = location.hash; + // > ... + // > }); + // > + // > // Manually trigger the event handler. + // > jQuery(window).trigger( 'hashchange' ); + // + // Additional Notes: + // + // * The polling loop and Iframe are not created until at least one handler + // is actually bound to the 'hashchange' event. + // * If you need the bound handler(s) to execute immediately, in cases where + // a location.hash exists on page load, via bookmark or page refresh for + // example, use jQuery(window).hashchange() or the more verbose + // jQuery(window).trigger( 'hashchange' ). + // * The event can be bound before DOM ready, but since it won't be usable + // before then in IE6/7 (due to the necessary Iframe), recommended usage is + // to bind it inside a DOM ready handler. + + // Override existing $.event.special.hashchange methods (allowing this plugin + // to be defined after jQuery BBQ in BBQ's source code). + special[ str_hashchange ] = $.extend( special[ str_hashchange ], { + + // Called only when the first 'hashchange' event is bound to window. + setup: function() { + // If window.onhashchange is supported natively, there's nothing to do.. + if ( supports_onhashchange ) { return false; } + + // Otherwise, we need to create our own. And we don't want to call this + // until the user binds to the event, just in case they never do, since it + // will create a polling loop and possibly even a hidden Iframe. + $( fake_onhashchange.start ); + }, + + // Called only when the last 'hashchange' event is unbound from window. + teardown: function() { + // If window.onhashchange is supported natively, there's nothing to do.. + if ( supports_onhashchange ) { return false; } + + // Otherwise, we need to stop ours (if possible). + $( fake_onhashchange.stop ); + } + + }); + + // fake_onhashchange does all the work of triggering the window.onhashchange + // event for browsers that don't natively support it, including creating a + // polling loop to watch for hash changes and in IE 6/7 creating a hidden + // Iframe to enable back and forward. + fake_onhashchange = (function() { + var self = {}, + timeout_id, + + // Remember the initial hash so it doesn't get triggered immediately. + last_hash = get_fragment(), + + fn_retval = function( val ) { return val; }, + history_set = fn_retval, + history_get = fn_retval; + + // Start the polling loop. + self.start = function() { + timeout_id || poll(); + }; + + // Stop the polling loop. + self.stop = function() { + timeout_id && clearTimeout( timeout_id ); + timeout_id = undefined; + }; + + // This polling loop checks every $.fn.hashchange.delay milliseconds to see + // if location.hash has changed, and triggers the 'hashchange' event on + // window when necessary. + function poll() { + var hash = get_fragment(), + history_hash = history_get( last_hash ); + + if ( hash !== last_hash ) { + history_set( last_hash = hash, history_hash ); + + $(window).trigger( str_hashchange ); + + } else if ( history_hash !== last_hash ) { + location.href = location.href.replace( /#.*/, '' ) + history_hash; + } + + timeout_id = setTimeout( poll, $.fn[ str_hashchange ].delay ); + }; + + // vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv + // vvvvvvvvvvvvvvvvvvv REMOVE IF NOT SUPPORTING IE6/7/8 vvvvvvvvvvvvvvvvvvv + // vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv + $.browser.msie && !supports_onhashchange && (function() { + // Not only do IE6/7 need the "magical" Iframe treatment, but so does IE8 + // when running in "IE7 compatibility" mode. + + var iframe, + iframe_src; + + // When the event is bound and polling starts in IE 6/7, create a hidden + // Iframe for history handling. + self.start = function() { + if ( !iframe ) { + iframe_src = $.fn[ str_hashchange ].src; + iframe_src = iframe_src && iframe_src + get_fragment(); + + // Create hidden Iframe. Attempt to make Iframe as hidden as possible + // by using techniques from http://www.paciellogroup.com/blog/?p=604. + iframe = $('