From f1513df31003444044c8d3f91a37888b8bbcbdc0 Mon Sep 17 00:00:00 2001 From: Ariya Hidayat Date: Mon, 12 Sep 2011 17:38:26 -0700 Subject: [PATCH] Add a new tool: jsmin.js. This is based on http://fmarcia.info/jsmin/test.html from Franck Marcia, which in turn based on http://javascript.crockford.com/jsmin.html from Douglas Crockford. --- CMakeLists.txt | 1 + README.md | 5 +- jsmin/CMakeLists.txt | 6 + jsmin/CommandLine.js | 96 +++++++ jsmin/Settings.js | 5 + jsmin/jsmin.cpp | 33 +++ jsmin/jsmin.js | 369 +++++++++++++++++++++++++++ jsmin/jsmin_script.h | 595 +++++++++++++++++++++++++++++++++++++++++++ jsmin/package.py | 22 ++ 9 files changed, 1130 insertions(+), 2 deletions(-) create mode 100644 jsmin/CMakeLists.txt create mode 100644 jsmin/CommandLine.js create mode 100644 jsmin/Settings.js create mode 100644 jsmin/jsmin.cpp create mode 100644 jsmin/jsmin.js create mode 100644 jsmin/jsmin_script.h create mode 100755 jsmin/package.py diff --git a/CMakeLists.txt b/CMakeLists.txt index 351034a..6f7d9d3 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -30,6 +30,7 @@ set(EIGHTPACK_PATH ${PROJECT_SOURCE_DIR}/lib) add_subdirectory(jslint) add_subdirectory(jshint) add_subdirectory(jsbeautify) +add_subdirectory(jsmin) add_subdirectory(cssbeautify) add_subdirectory(cssmin) diff --git a/README.md b/README.md index c62031a..78ad0a5 100644 --- a/README.md +++ b/README.md @@ -8,8 +8,9 @@ EightPack can be [built](http://ofilabs.com/eightpack/build) on all major desktop platforms (Windows, Mac OS X, Linux). Binaries for Windows and Mac OS X are available for [download](http://ofilabs.com/eightpack/download). -As of now, EightPack consists of the following [tools](http://ofilabs.com/eightpack/tools): JSLint, JSHint, JS -Beautifier, CSS Beautify, and cssmin.js. +As of now, EightPack consists of the following +[tools](http://ofilabs.com/eightpack/tools): JSLint, JSHint, JS Beautifier, +JSMin, CSS Beautify, and cssmin.js. EightPack is an open-source software, distributed and available under [MIT License](http://ofilabs.com/eightpack/license). diff --git a/jsmin/CMakeLists.txt b/jsmin/CMakeLists.txt new file mode 100644 index 0000000..8891b38 --- /dev/null +++ b/jsmin/CMakeLists.txt @@ -0,0 +1,6 @@ +add_executable(jsmin jsmin.cpp) +link_directories(${EIGHTPACK_PATH}) +target_link_libraries(jsmin eightpack) +set_target_properties(jsmin PROPERTIES COMPILE_FLAGS ${EIGHTPACK_COMPILE_FLAGS}) +set_target_properties(jsmin PROPERTIES LINK_FLAGS ${EIGHTPACK_LINK_FLAGS}) +install(TARGETS jsmin DESTINATION bin) diff --git a/jsmin/CommandLine.js b/jsmin/CommandLine.js new file mode 100644 index 0000000..923d511 --- /dev/null +++ b/jsmin/CommandLine.js @@ -0,0 +1,96 @@ +/*global system: true, console: true */ +var jsmin, fname, settings, level, code, result; + +settings = settings || {}; + +function help() { + 'use strict'; + var opt, str; + console.log('Usage:'); + console.log(' jsmin [options] filename'); + console.log(); + console.log('The content of filename will be minified and printed to'); + console.log('standard output.'); + console.log(); + console.log('General options:'); + console.log(' --help Show this help screen'); + console.log(' --version Display version number'); + console.log(); + console.log('JSMin options (see http://fmarcia.info/jsmin/test.html):'); + for (opt in settings) { + if (settings.hasOwnProperty(opt)) { + str = ' --' + opt; + while (str.length < 25) { + str += ' '; + } + str += settings[opt]; + console.log(str); + } + } + console.log(); + console.log('For more information, go to http://fmarcia.info/jsmin/test.html and'); + console.log('http://www.crockford.com/javascript/jsmin.html.'); + console.log(); + system.exit(-1); +} + +if (system.args.length < 1) { + help(); +} + +level = 2; + +system.args.forEach(function (arg) { + 'use strict'; + var option, i; + if (arg.length > 2) { + if (arg.charAt(0) === '-' && arg.charAt(1) === '-') { + option = arg.substring(2, arg.length); + + if (option === 'help') { + help(); + } + + if (option === 'version') { + console.log('jsmin.js edition 2010/01/15.'); + system.exit(-1); + } + + if (!settings.hasOwnProperty(option)) { + console.log('Unknown option: --' + option); + console.log('Run jsmin --help to list all possible options.'); + console.log(); + system.exit(-1); + } + + if (option === 'aggressive') { + level = 3; + } + + if (option === 'minimal') { + level = 1; + } + + return; + } + } + if (typeof fname !== 'undefined') { + console.log('Please only specify one filename!'); + console.log(); + system.exit(-1); + } + fname = arg; +}); + + +if (typeof fname === 'undefined') { + help(); +} + +try { + code = system.readFile(fname); + result = jsmin('', code, level); + console.log(result); +} catch (e) { + console.log(e); +} diff --git a/jsmin/Settings.js b/jsmin/Settings.js new file mode 100644 index 0000000..f350ec2 --- /dev/null +++ b/jsmin/Settings.js @@ -0,0 +1,5 @@ +var settings = { + 'conversative': 'The default, removes comments and unnecessary whitespace.', + 'minimal': 'Like conversative but keeps single linefeeds.', + 'aggressive': 'Like conversative but removes more linefeeds (dangerous!)', +}; diff --git a/jsmin/jsmin.cpp b/jsmin/jsmin.cpp new file mode 100644 index 0000000..1e73d2a --- /dev/null +++ b/jsmin/jsmin.cpp @@ -0,0 +1,33 @@ +/* + Copyright (C) 2011 Ariya Hidayat. + + 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. +*/ + + +#include "jsmin_script.h" + +extern void eightpack_run(int argc, char** argv, const char* cmd); + +int main(int argc, char* argv[]) +{ + eightpack_run(argc, argv, jsmin_script); + return 0; +} + diff --git a/jsmin/jsmin.js b/jsmin/jsmin.js new file mode 100644 index 0000000..815bf02 --- /dev/null +++ b/jsmin/jsmin.js @@ -0,0 +1,369 @@ +/*! +jsmin.js - 2010-01-15 +Author: NanaLich (http://www.cnblogs.com/NanaLich) +Another patched version for jsmin.js patched by Billy Hoffman, +this version will try to keep CR LF pairs inside the important comments +away from being changed into double LF pairs. + +jsmin.js - 2009-11-05 +Author: Billy Hoffman +This is a patched version of jsmin.js created by Franck Marcia which +supports important comments denoted with /*! ... +Permission is hereby granted to use the Javascript version under the same +conditions as the jsmin.js on which it is based. + +jsmin.js - 2006-08-31 +Author: Franck Marcia +This work is an adaptation of jsminc.c published by Douglas Crockford. +Permission is hereby granted to use the Javascript version under the same +conditions as the jsmin.c on which it is based. + +jsmin.c +2006-05-04 + +Copyright (c) 2002 Douglas Crockford (www.crockford.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 shall be used for Good, not Evil. + +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. + +Update: +add level: +1: minimal, keep linefeeds if single +2: normal, the standard algorithm +3: agressive, remove any linefeed and doesn't take care of potential +missing semicolons (can be regressive) +store stats +jsmin.oldSize +jsmin.newSize +*/ + +String.prototype.has = function(c) { + return this.indexOf(c) > -1; +}; + +function jsmin(comment, input, level) { + + if(input === undefined) { + input = comment; + comment = ''; + level = 2; + } else if(level === undefined || level < 1 || level > 3) { + level = 2; + } + + if(comment.length > 0) { + comment += '\n'; + } + + var a = '', + b = '', + EOF = -1, + LETTERS = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz', + DIGITS = '0123456789', + ALNUM = LETTERS + DIGITS + '_$\\', + theLookahead = EOF; + + + /* isAlphanum -- return true if the character is a letter, digit, underscore, + dollar sign, or non-ASCII character. + */ + + function isAlphanum(c) { + return c != EOF && (ALNUM.has(c) || c.charCodeAt(0) > 126); + } + + + /* getc(IC) -- return the next character. Watch out for lookahead. If the + character is a control character, translate it to a space or + linefeed. + */ + + var iChar = 0, lInput = input.length; + function getc() { + + var c = theLookahead; + if(iChar == lInput) { + return EOF; + } + theLookahead = EOF; + if(c == EOF) { + c = input.charAt(iChar); + ++iChar; + } + if(c >= ' ' || c == '\n') { + return c; + } + if(c == '\r') { + return '\n'; + } + return ' '; + } + function getcIC() { + var c = theLookahead; + if(iChar == lInput) { + return EOF; + } + theLookahead = EOF; + if(c == EOF) { + c = input.charAt(iChar); + ++iChar; + } + if(c >= ' ' || c == '\n' || c == '\r') { + return c; + } + return ' '; + } + + + /* peek -- get the next character without getting it. + */ + + function peek() { + theLookahead = getc(); + return theLookahead; + } + + + /* next -- get the next character, excluding comments. peek() is used to see + if a '/' is followed by a '/' or '*'. + */ + + function next() { + + var c = getc(); + if(c == '/') { + switch(peek()) { + case '/': + for(; ; ) { + c = getc(); + if(c <= '\n') { + return c; + } + } + break; + case '*': + //this is a comment. What kind? + getc(); + if(peek() == '!') { + // kill the extra one + getc(); + //important comment + var d = '/*!'; + for(; ; ) { + c = getcIC(); // let it know it's inside an important comment + switch(c) { + case '*': + if(peek() == '/') { + getc(); + return d + '*/'; + } + break; + case EOF: + throw 'Error: Unterminated comment.'; + default: + //modern JS engines handle string concats much better than the + //array+push+join hack. + d += c; + } + } + } else { + //unimportant comment + for(; ; ) { + switch(getc()) { + case '*': + if(peek() == '/') { + getc(); + return ' '; + } + break; + case EOF: + throw 'Error: Unterminated comment.'; + } + } + } + break; + default: + return c; + } + } + return c; + } + + + /* action -- do something! What you do is determined by the argument: + 1 Output A. Copy B to A. Get the next B. + 2 Copy B to A. Get the next B. (Delete A). + 3 Get the next B. (Delete B). + action treats a string as a single character. Wow! + action recognizes a regular expression if it is preceded by ( or , or =. + */ + + function action(d) { + + var r = []; + + if(d == 1) { + r.push(a); + } + + if(d < 3) { + a = b; + if(a == '\'' || a == '"') { + for(; ; ) { + r.push(a); + a = getc(); + if(a == b) { + break; + } + if(a <= '\n') { + throw 'Error: unterminated string literal: ' + a; + } + if(a == '\\') { + r.push(a); + a = getc(); + } + } + } + } + + b = next(); + + if(b == '/' && '(,=:[!&|'.has(a)) { + r.push(a); + r.push(b); + for(; ; ) { + a = getc(); + if(a == '/') { + break; + } else if(a == '\\') { + r.push(a); + a = getc(); + } else if(a <= '\n') { + throw 'Error: unterminated Regular Expression literal'; + } + r.push(a); + } + b = next(); + } + + return r.join(''); + } + + + /* m -- Copy the input to the output, deleting the characters which are + insignificant to JavaScript. Comments will be removed. Tabs will be + replaced with spaces. Carriage returns will be replaced with + linefeeds. + Most spaces and linefeeds will be removed. + */ + + function m() { + + var r = []; + a = '\n'; + + r.push(action(3)); + + while(a != EOF) { + switch(a) { + case ' ': + if(isAlphanum(b)) { + r.push(action(1)); + } else { + r.push(action(2)); + } + break; + case '\n': + switch(b) { + case '{': + case '[': + case '(': + case '+': + case '-': + r.push(action(1)); + break; + case ' ': + r.push(action(3)); + break; + default: + if(isAlphanum(b)) { + r.push(action(1)); + } else { + if(level == 1 && b != '\n') { + r.push(action(1)); + } else { + r.push(action(2)); + } + } + } + break; + default: + switch(b) { + case ' ': + if(isAlphanum(a)) { + r.push(action(1)); + break; + } + r.push(action(3)); + break; + case '\n': + if(level == 1 && a != '\n') { + r.push(action(1)); + } else { + switch(a) { + case '}': + case ']': + case ')': + case '+': + case '-': + case '"': + case '\'': + if(level == 3) { + r.push(action(3)); + } else { + r.push(action(1)); + } + break; + default: + if(isAlphanum(a)) { + r.push(action(1)); + } else { + r.push(action(3)); + } + } + } + break; + default: + r.push(action(1)); + break; + } + } + } + + return r.join(''); + } + + jsmin.oldSize = input.length; + ret = m(input); + jsmin.newSize = ret.length; + + return comment + ret; + +} diff --git a/jsmin/jsmin_script.h b/jsmin/jsmin_script.h new file mode 100644 index 0000000..6130024 --- /dev/null +++ b/jsmin/jsmin_script.h @@ -0,0 +1,595 @@ +static const char jsmin_script[] = \ + "\x2F\x2A\x21\x0A\x6A\x73\x6D\x69\x6E\x2E\x6A\x73\x20\x2D\x20\x32\x30\x31\x30\x2D"\ + "\x30\x31\x2D\x31\x35\x0A\x41\x75\x74\x68\x6F\x72\x3A\x20\x4E\x61\x6E\x61\x4C\x69"\ + "\x63\x68\x20\x28\x68\x74\x74\x70\x3A\x2F\x2F\x77\x77\x77\x2E\x63\x6E\x62\x6C\x6F"\ + "\x67\x73\x2E\x63\x6F\x6D\x2F\x4E\x61\x6E\x61\x4C\x69\x63\x68\x29\x0A\x41\x6E\x6F"\ + "\x74\x68\x65\x72\x20\x70\x61\x74\x63\x68\x65\x64\x20\x76\x65\x72\x73\x69\x6F\x6E"\ + "\x20\x66\x6F\x72\x20\x6A\x73\x6D\x69\x6E\x2E\x6A\x73\x20\x70\x61\x74\x63\x68\x65"\ + "\x64\x20\x62\x79\x20\x42\x69\x6C\x6C\x79\x20\x48\x6F\x66\x66\x6D\x61\x6E\x2C\x20"\ + "\x0A\x74\x68\x69\x73\x20\x76\x65\x72\x73\x69\x6F\x6E\x20\x77\x69\x6C\x6C\x20\x74"\ + "\x72\x79\x20\x74\x6F\x20\x6B\x65\x65\x70\x20\x43\x52\x20\x4C\x46\x20\x70\x61\x69"\ + "\x72\x73\x20\x69\x6E\x73\x69\x64\x65\x20\x74\x68\x65\x20\x69\x6D\x70\x6F\x72\x74"\ + "\x61\x6E\x74\x20\x63\x6F\x6D\x6D\x65\x6E\x74\x73\x0A\x61\x77\x61\x79\x20\x66\x72"\ + "\x6F\x6D\x20\x62\x65\x69\x6E\x67\x20\x63\x68\x61\x6E\x67\x65\x64\x20\x69\x6E\x74"\ + "\x6F\x20\x64\x6F\x75\x62\x6C\x65\x20\x4C\x46\x20\x70\x61\x69\x72\x73\x2E\x20\x0A"\ + "\x0A\x6A\x73\x6D\x69\x6E\x2E\x6A\x73\x20\x2D\x20\x32\x30\x30\x39\x2D\x31\x31\x2D"\ + "\x30\x35\x0A\x41\x75\x74\x68\x6F\x72\x3A\x20\x42\x69\x6C\x6C\x79\x20\x48\x6F\x66"\ + "\x66\x6D\x61\x6E\x0A\x54\x68\x69\x73\x20\x69\x73\x20\x61\x20\x70\x61\x74\x63\x68"\ + "\x65\x64\x20\x76\x65\x72\x73\x69\x6F\x6E\x20\x6F\x66\x20\x6A\x73\x6D\x69\x6E\x2E"\ + "\x6A\x73\x20\x63\x72\x65\x61\x74\x65\x64\x20\x62\x79\x20\x46\x72\x61\x6E\x63\x6B"\ + "\x20\x4D\x61\x72\x63\x69\x61\x20\x77\x68\x69\x63\x68\x0A\x73\x75\x70\x70\x6F\x72"\ + "\x74\x73\x20\x69\x6D\x70\x6F\x72\x74\x61\x6E\x74\x20\x63\x6F\x6D\x6D\x65\x6E\x74"\ + "\x73\x20\x64\x65\x6E\x6F\x74\x65\x64\x20\x77\x69\x74\x68\x20\x2F\x2A\x21\x20\x2E"\ + "\x2E\x2E\x0A\x50\x65\x72\x6D\x69\x73\x73\x69\x6F\x6E\x20\x69\x73\x20\x68\x65\x72"\ + "\x65\x62\x79\x20\x67\x72\x61\x6E\x74\x65\x64\x20\x74\x6F\x20\x75\x73\x65\x20\x74"\ + "\x68\x65\x20\x4A\x61\x76\x61\x73\x63\x72\x69\x70\x74\x20\x76\x65\x72\x73\x69\x6F"\ + "\x6E\x20\x75\x6E\x64\x65\x72\x20\x74\x68\x65\x20\x73\x61\x6D\x65\x0A\x63\x6F\x6E"\ + "\x64\x69\x74\x69\x6F\x6E\x73\x20\x61\x73\x20\x74\x68\x65\x20\x6A\x73\x6D\x69\x6E"\ + "\x2E\x6A\x73\x20\x6F\x6E\x20\x77\x68\x69\x63\x68\x20\x69\x74\x20\x69\x73\x20\x62"\ + "\x61\x73\x65\x64\x2E\x0A\x0A\x6A\x73\x6D\x69\x6E\x2E\x6A\x73\x20\x2D\x20\x32\x30"\ + "\x30\x36\x2D\x30\x38\x2D\x33\x31\x0A\x41\x75\x74\x68\x6F\x72\x3A\x20\x46\x72\x61"\ + "\x6E\x63\x6B\x20\x4D\x61\x72\x63\x69\x61\x0A\x54\x68\x69\x73\x20\x77\x6F\x72\x6B"\ + "\x20\x69\x73\x20\x61\x6E\x20\x61\x64\x61\x70\x74\x61\x74\x69\x6F\x6E\x20\x6F\x66"\ + "\x20\x6A\x73\x6D\x69\x6E\x63\x2E\x63\x20\x70\x75\x62\x6C\x69\x73\x68\x65\x64\x20"\ + "\x62\x79\x20\x44\x6F\x75\x67\x6C\x61\x73\x20\x43\x72\x6F\x63\x6B\x66\x6F\x72\x64"\ + "\x2E\x0A\x50\x65\x72\x6D\x69\x73\x73\x69\x6F\x6E\x20\x69\x73\x20\x68\x65\x72\x65"\ + "\x62\x79\x20\x67\x72\x61\x6E\x74\x65\x64\x20\x74\x6F\x20\x75\x73\x65\x20\x74\x68"\ + "\x65\x20\x4A\x61\x76\x61\x73\x63\x72\x69\x70\x74\x20\x76\x65\x72\x73\x69\x6F\x6E"\ + "\x20\x75\x6E\x64\x65\x72\x20\x74\x68\x65\x20\x73\x61\x6D\x65\x0A\x63\x6F\x6E\x64"\ + "\x69\x74\x69\x6F\x6E\x73\x20\x61\x73\x20\x74\x68\x65\x20\x6A\x73\x6D\x69\x6E\x2E"\ + "\x63\x20\x6F\x6E\x20\x77\x68\x69\x63\x68\x20\x69\x74\x20\x69\x73\x20\x62\x61\x73"\ + "\x65\x64\x2E\x0A\x0A\x6A\x73\x6D\x69\x6E\x2E\x63\x0A\x32\x30\x30\x36\x2D\x30\x35"\ + "\x2D\x30\x34\x0A\x0A\x43\x6F\x70\x79\x72\x69\x67\x68\x74\x20\x28\x63\x29\x20\x32"\ + "\x30\x30\x32\x20\x44\x6F\x75\x67\x6C\x61\x73\x20\x43\x72\x6F\x63\x6B\x66\x6F\x72"\ + "\x64\x20\x20\x28\x77\x77\x77\x2E\x63\x72\x6F\x63\x6B\x66\x6F\x72\x64\x2E\x63\x6F"\ + "\x6D\x29\x0A\x0A\x50\x65\x72\x6D\x69\x73\x73\x69\x6F\x6E\x20\x69\x73\x20\x68\x65"\ + "\x72\x65\x62\x79\x20\x67\x72\x61\x6E\x74\x65\x64\x2C\x20\x66\x72\x65\x65\x20\x6F"\ + "\x66\x20\x63\x68\x61\x72\x67\x65\x2C\x20\x74\x6F\x20\x61\x6E\x79\x20\x70\x65\x72"\ + "\x73\x6F\x6E\x20\x6F\x62\x74\x61\x69\x6E\x69\x6E\x67\x20\x61\x20\x63\x6F\x70\x79"\ + "\x20\x6F\x66\x0A\x74\x68\x69\x73\x20\x73\x6F\x66\x74\x77\x61\x72\x65\x20\x61\x6E"\ + "\x64\x20\x61\x73\x73\x6F\x63\x69\x61\x74\x65\x64\x20\x64\x6F\x63\x75\x6D\x65\x6E"\ + "\x74\x61\x74\x69\x6F\x6E\x20\x66\x69\x6C\x65\x73\x20\x28\x74\x68\x65\x20\x22\x53"\ + "\x6F\x66\x74\x77\x61\x72\x65\x22\x29\x2C\x20\x74\x6F\x20\x64\x65\x61\x6C\x20\x69"\ + "\x6E\x0A\x74\x68\x65\x20\x53\x6F\x66\x74\x77\x61\x72\x65\x20\x77\x69\x74\x68\x6F"\ + "\x75\x74\x20\x72\x65\x73\x74\x72\x69\x63\x74\x69\x6F\x6E\x2C\x20\x69\x6E\x63\x6C"\ + "\x75\x64\x69\x6E\x67\x20\x77\x69\x74\x68\x6F\x75\x74\x20\x6C\x69\x6D\x69\x74\x61"\ + "\x74\x69\x6F\x6E\x20\x74\x68\x65\x20\x72\x69\x67\x68\x74\x73\x20\x74\x6F\x0A\x75"\ + "\x73\x65\x2C\x20\x63\x6F\x70\x79\x2C\x20\x6D\x6F\x64\x69\x66\x79\x2C\x20\x6D\x65"\ + "\x72\x67\x65\x2C\x20\x70\x75\x62\x6C\x69\x73\x68\x2C\x20\x64\x69\x73\x74\x72\x69"\ + "\x62\x75\x74\x65\x2C\x20\x73\x75\x62\x6C\x69\x63\x65\x6E\x73\x65\x2C\x20\x61\x6E"\ + "\x64\x2F\x6F\x72\x20\x73\x65\x6C\x6C\x20\x63\x6F\x70\x69\x65\x73\x0A\x6F\x66\x20"\ + "\x74\x68\x65\x20\x53\x6F\x66\x74\x77\x61\x72\x65\x2C\x20\x61\x6E\x64\x20\x74\x6F"\ + "\x20\x70\x65\x72\x6D\x69\x74\x20\x70\x65\x72\x73\x6F\x6E\x73\x20\x74\x6F\x20\x77"\ + "\x68\x6F\x6D\x20\x74\x68\x65\x20\x53\x6F\x66\x74\x77\x61\x72\x65\x20\x69\x73\x20"\ + "\x66\x75\x72\x6E\x69\x73\x68\x65\x64\x20\x74\x6F\x20\x64\x6F\x0A\x73\x6F\x2C\x20"\ + "\x73\x75\x62\x6A\x65\x63\x74\x20\x74\x6F\x20\x74\x68\x65\x20\x66\x6F\x6C\x6C\x6F"\ + "\x77\x69\x6E\x67\x20\x63\x6F\x6E\x64\x69\x74\x69\x6F\x6E\x73\x3A\x0A\x0A\x54\x68"\ + "\x65\x20\x61\x62\x6F\x76\x65\x20\x63\x6F\x70\x79\x72\x69\x67\x68\x74\x20\x6E\x6F"\ + "\x74\x69\x63\x65\x20\x61\x6E\x64\x20\x74\x68\x69\x73\x20\x70\x65\x72\x6D\x69\x73"\ + "\x73\x69\x6F\x6E\x20\x6E\x6F\x74\x69\x63\x65\x20\x73\x68\x61\x6C\x6C\x20\x62\x65"\ + "\x20\x69\x6E\x63\x6C\x75\x64\x65\x64\x20\x69\x6E\x20\x61\x6C\x6C\x0A\x63\x6F\x70"\ + "\x69\x65\x73\x20\x6F\x72\x20\x73\x75\x62\x73\x74\x61\x6E\x74\x69\x61\x6C\x20\x70"\ + "\x6F\x72\x74\x69\x6F\x6E\x73\x20\x6F\x66\x20\x74\x68\x65\x20\x53\x6F\x66\x74\x77"\ + "\x61\x72\x65\x2E\x0A\x0A\x54\x68\x65\x20\x53\x6F\x66\x74\x77\x61\x72\x65\x20\x73"\ + "\x68\x61\x6C\x6C\x20\x62\x65\x20\x75\x73\x65\x64\x20\x66\x6F\x72\x20\x47\x6F\x6F"\ + "\x64\x2C\x20\x6E\x6F\x74\x20\x45\x76\x69\x6C\x2E\x0A\x0A\x54\x48\x45\x20\x53\x4F"\ + "\x46\x54\x57\x41\x52\x45\x20\x49\x53\x20\x50\x52\x4F\x56\x49\x44\x45\x44\x20\x22"\ + "\x41\x53\x20\x49\x53\x22\x2C\x20\x57\x49\x54\x48\x4F\x55\x54\x20\x57\x41\x52\x52"\ + "\x41\x4E\x54\x59\x20\x4F\x46\x20\x41\x4E\x59\x20\x4B\x49\x4E\x44\x2C\x20\x45\x58"\ + "\x50\x52\x45\x53\x53\x20\x4F\x52\x0A\x49\x4D\x50\x4C\x49\x45\x44\x2C\x20\x49\x4E"\ + "\x43\x4C\x55\x44\x49\x4E\x47\x20\x42\x55\x54\x20\x4E\x4F\x54\x20\x4C\x49\x4D\x49"\ + "\x54\x45\x44\x20\x54\x4F\x20\x54\x48\x45\x20\x57\x41\x52\x52\x41\x4E\x54\x49\x45"\ + "\x53\x20\x4F\x46\x20\x4D\x45\x52\x43\x48\x41\x4E\x54\x41\x42\x49\x4C\x49\x54\x59"\ + "\x2C\x0A\x46\x49\x54\x4E\x45\x53\x53\x20\x46\x4F\x52\x20\x41\x20\x50\x41\x52\x54"\ + "\x49\x43\x55\x4C\x41\x52\x20\x50\x55\x52\x50\x4F\x53\x45\x20\x41\x4E\x44\x20\x4E"\ + "\x4F\x4E\x49\x4E\x46\x52\x49\x4E\x47\x45\x4D\x45\x4E\x54\x2E\x20\x49\x4E\x20\x4E"\ + "\x4F\x20\x45\x56\x45\x4E\x54\x20\x53\x48\x41\x4C\x4C\x20\x54\x48\x45\x0A\x41\x55"\ + "\x54\x48\x4F\x52\x53\x20\x4F\x52\x20\x43\x4F\x50\x59\x52\x49\x47\x48\x54\x20\x48"\ + "\x4F\x4C\x44\x45\x52\x53\x20\x42\x45\x20\x4C\x49\x41\x42\x4C\x45\x20\x46\x4F\x52"\ + "\x20\x41\x4E\x59\x20\x43\x4C\x41\x49\x4D\x2C\x20\x44\x41\x4D\x41\x47\x45\x53\x20"\ + "\x4F\x52\x20\x4F\x54\x48\x45\x52\x0A\x4C\x49\x41\x42\x49\x4C\x49\x54\x59\x2C\x20"\ + "\x57\x48\x45\x54\x48\x45\x52\x20\x49\x4E\x20\x41\x4E\x20\x41\x43\x54\x49\x4F\x4E"\ + "\x20\x4F\x46\x20\x43\x4F\x4E\x54\x52\x41\x43\x54\x2C\x20\x54\x4F\x52\x54\x20\x4F"\ + "\x52\x20\x4F\x54\x48\x45\x52\x57\x49\x53\x45\x2C\x20\x41\x52\x49\x53\x49\x4E\x47"\ + "\x20\x46\x52\x4F\x4D\x2C\x0A\x4F\x55\x54\x20\x4F\x46\x20\x4F\x52\x20\x49\x4E\x20"\ + "\x43\x4F\x4E\x4E\x45\x43\x54\x49\x4F\x4E\x20\x57\x49\x54\x48\x20\x54\x48\x45\x20"\ + "\x53\x4F\x46\x54\x57\x41\x52\x45\x20\x4F\x52\x20\x54\x48\x45\x20\x55\x53\x45\x20"\ + "\x4F\x52\x20\x4F\x54\x48\x45\x52\x20\x44\x45\x41\x4C\x49\x4E\x47\x53\x20\x49\x4E"\ + "\x20\x54\x48\x45\x0A\x53\x4F\x46\x54\x57\x41\x52\x45\x2E\x0A\x0A\x55\x70\x64\x61"\ + "\x74\x65\x3A\x0A\x61\x64\x64\x20\x6C\x65\x76\x65\x6C\x3A\x0A\x31\x3A\x20\x6D\x69"\ + "\x6E\x69\x6D\x61\x6C\x2C\x20\x6B\x65\x65\x70\x20\x6C\x69\x6E\x65\x66\x65\x65\x64"\ + "\x73\x20\x69\x66\x20\x73\x69\x6E\x67\x6C\x65\x0A\x32\x3A\x20\x6E\x6F\x72\x6D\x61"\ + "\x6C\x2C\x20\x74\x68\x65\x20\x73\x74\x61\x6E\x64\x61\x72\x64\x20\x61\x6C\x67\x6F"\ + "\x72\x69\x74\x68\x6D\x0A\x33\x3A\x20\x61\x67\x72\x65\x73\x73\x69\x76\x65\x2C\x20"\ + "\x72\x65\x6D\x6F\x76\x65\x20\x61\x6E\x79\x20\x6C\x69\x6E\x65\x66\x65\x65\x64\x20"\ + "\x61\x6E\x64\x20\x64\x6F\x65\x73\x6E\x27\x74\x20\x74\x61\x6B\x65\x20\x63\x61\x72"\ + "\x65\x20\x6F\x66\x20\x70\x6F\x74\x65\x6E\x74\x69\x61\x6C\x0A\x6D\x69\x73\x73\x69"\ + "\x6E\x67\x20\x73\x65\x6D\x69\x63\x6F\x6C\x6F\x6E\x73\x20\x28\x63\x61\x6E\x20\x62"\ + "\x65\x20\x72\x65\x67\x72\x65\x73\x73\x69\x76\x65\x29\x0A\x73\x74\x6F\x72\x65\x20"\ + "\x73\x74\x61\x74\x73\x0A\x6A\x73\x6D\x69\x6E\x2E\x6F\x6C\x64\x53\x69\x7A\x65\x0A"\ + "\x6A\x73\x6D\x69\x6E\x2E\x6E\x65\x77\x53\x69\x7A\x65\x0A\x2A\x2F\x0A\x0A\x53\x74"\ + "\x72\x69\x6E\x67\x2E\x70\x72\x6F\x74\x6F\x74\x79\x70\x65\x2E\x68\x61\x73\x20\x3D"\ + "\x20\x66\x75\x6E\x63\x74\x69\x6F\x6E\x28\x63\x29\x20\x7B\x0A\x20\x20\x72\x65\x74"\ + "\x75\x72\x6E\x20\x74\x68\x69\x73\x2E\x69\x6E\x64\x65\x78\x4F\x66\x28\x63\x29\x20"\ + "\x3E\x20\x2D\x31\x3B\x0A\x7D\x3B\x0A\x0A\x66\x75\x6E\x63\x74\x69\x6F\x6E\x20\x6A"\ + "\x73\x6D\x69\x6E\x28\x63\x6F\x6D\x6D\x65\x6E\x74\x2C\x20\x69\x6E\x70\x75\x74\x2C"\ + "\x20\x6C\x65\x76\x65\x6C\x29\x20\x7B\x0A\x0A\x20\x20\x69\x66\x28\x69\x6E\x70\x75"\ + "\x74\x20\x3D\x3D\x3D\x20\x75\x6E\x64\x65\x66\x69\x6E\x65\x64\x29\x20\x7B\x0A\x20"\ + "\x20\x20\x20\x69\x6E\x70\x75\x74\x20\x3D\x20\x63\x6F\x6D\x6D\x65\x6E\x74\x3B\x0A"\ + "\x20\x20\x20\x20\x63\x6F\x6D\x6D\x65\x6E\x74\x20\x3D\x20\x27\x27\x3B\x0A\x20\x20"\ + "\x20\x20\x6C\x65\x76\x65\x6C\x20\x3D\x20\x32\x3B\x0A\x20\x20\x7D\x20\x65\x6C\x73"\ + "\x65\x20\x69\x66\x28\x6C\x65\x76\x65\x6C\x20\x3D\x3D\x3D\x20\x75\x6E\x64\x65\x66"\ + "\x69\x6E\x65\x64\x20\x7C\x7C\x20\x6C\x65\x76\x65\x6C\x20\x3C\x20\x31\x20\x7C\x7C"\ + "\x20\x6C\x65\x76\x65\x6C\x20\x3E\x20\x33\x29\x20\x7B\x0A\x20\x20\x20\x20\x6C\x65"\ + "\x76\x65\x6C\x20\x3D\x20\x32\x3B\x0A\x20\x20\x7D\x0A\x0A\x20\x20\x69\x66\x28\x63"\ + "\x6F\x6D\x6D\x65\x6E\x74\x2E\x6C\x65\x6E\x67\x74\x68\x20\x3E\x20\x30\x29\x20\x7B"\ + "\x0A\x20\x20\x20\x20\x63\x6F\x6D\x6D\x65\x6E\x74\x20\x2B\x3D\x20\x27\x5C\x6E\x27"\ + "\x3B\x0A\x20\x20\x7D\x0A\x0A\x20\x20\x76\x61\x72\x20\x61\x20\x3D\x20\x27\x27\x2C"\ + "\x0A\x09\x09\x62\x20\x3D\x20\x27\x27\x2C\x0A\x09\x09\x45\x4F\x46\x20\x3D\x20\x2D"\ + "\x31\x2C\x0A\x09\x09\x4C\x45\x54\x54\x45\x52\x53\x20\x3D\x20\x27\x41\x42\x43\x44"\ + "\x45\x46\x47\x48\x49\x4A\x4B\x4C\x4D\x4E\x4F\x50\x51\x52\x53\x54\x55\x56\x57\x58"\ + "\x59\x5A\x61\x62\x63\x64\x65\x66\x67\x68\x69\x6A\x6B\x6C\x6D\x6E\x6F\x70\x71\x72"\ + "\x73\x74\x75\x76\x77\x78\x79\x7A\x27\x2C\x0A\x09\x09\x44\x49\x47\x49\x54\x53\x20"\ + "\x3D\x20\x27\x30\x31\x32\x33\x34\x35\x36\x37\x38\x39\x27\x2C\x0A\x09\x09\x41\x4C"\ + "\x4E\x55\x4D\x20\x3D\x20\x4C\x45\x54\x54\x45\x52\x53\x20\x2B\x20\x44\x49\x47\x49"\ + "\x54\x53\x20\x2B\x20\x27\x5F\x24\x5C\x5C\x27\x2C\x0A\x09\x09\x74\x68\x65\x4C\x6F"\ + "\x6F\x6B\x61\x68\x65\x61\x64\x20\x3D\x20\x45\x4F\x46\x3B\x0A\x0A\x0A\x20\x20\x2F"\ + "\x2A\x20\x69\x73\x41\x6C\x70\x68\x61\x6E\x75\x6D\x20\x2D\x2D\x20\x72\x65\x74\x75"\ + "\x72\x6E\x20\x74\x72\x75\x65\x20\x69\x66\x20\x74\x68\x65\x20\x63\x68\x61\x72\x61"\ + "\x63\x74\x65\x72\x20\x69\x73\x20\x61\x20\x6C\x65\x74\x74\x65\x72\x2C\x20\x64\x69"\ + "\x67\x69\x74\x2C\x20\x75\x6E\x64\x65\x72\x73\x63\x6F\x72\x65\x2C\x0A\x20\x20\x64"\ + "\x6F\x6C\x6C\x61\x72\x20\x73\x69\x67\x6E\x2C\x20\x6F\x72\x20\x6E\x6F\x6E\x2D\x41"\ + "\x53\x43\x49\x49\x20\x63\x68\x61\x72\x61\x63\x74\x65\x72\x2E\x0A\x20\x20\x2A\x2F"\ + "\x0A\x0A\x20\x20\x66\x75\x6E\x63\x74\x69\x6F\x6E\x20\x69\x73\x41\x6C\x70\x68\x61"\ + "\x6E\x75\x6D\x28\x63\x29\x20\x7B\x0A\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6E\x20"\ + "\x63\x20\x21\x3D\x20\x45\x4F\x46\x20\x26\x26\x20\x28\x41\x4C\x4E\x55\x4D\x2E\x68"\ + "\x61\x73\x28\x63\x29\x20\x7C\x7C\x20\x63\x2E\x63\x68\x61\x72\x43\x6F\x64\x65\x41"\ + "\x74\x28\x30\x29\x20\x3E\x20\x31\x32\x36\x29\x3B\x0A\x20\x20\x7D\x0A\x0A\x0A\x20"\ + "\x20\x2F\x2A\x20\x67\x65\x74\x63\x28\x49\x43\x29\x20\x2D\x2D\x20\x72\x65\x74\x75"\ + "\x72\x6E\x20\x74\x68\x65\x20\x6E\x65\x78\x74\x20\x63\x68\x61\x72\x61\x63\x74\x65"\ + "\x72\x2E\x20\x57\x61\x74\x63\x68\x20\x6F\x75\x74\x20\x66\x6F\x72\x20\x6C\x6F\x6F"\ + "\x6B\x61\x68\x65\x61\x64\x2E\x20\x49\x66\x20\x74\x68\x65\x0A\x20\x20\x63\x68\x61"\ + "\x72\x61\x63\x74\x65\x72\x20\x69\x73\x20\x61\x20\x63\x6F\x6E\x74\x72\x6F\x6C\x20"\ + "\x63\x68\x61\x72\x61\x63\x74\x65\x72\x2C\x20\x74\x72\x61\x6E\x73\x6C\x61\x74\x65"\ + "\x20\x69\x74\x20\x74\x6F\x20\x61\x20\x73\x70\x61\x63\x65\x20\x6F\x72\x0A\x20\x20"\ + "\x6C\x69\x6E\x65\x66\x65\x65\x64\x2E\x0A\x20\x20\x2A\x2F\x0A\x0A\x20\x20\x76\x61"\ + "\x72\x20\x69\x43\x68\x61\x72\x20\x3D\x20\x30\x2C\x20\x6C\x49\x6E\x70\x75\x74\x20"\ + "\x3D\x20\x69\x6E\x70\x75\x74\x2E\x6C\x65\x6E\x67\x74\x68\x3B\x0A\x20\x20\x66\x75"\ + "\x6E\x63\x74\x69\x6F\x6E\x20\x67\x65\x74\x63\x28\x29\x20\x7B\x0A\x0A\x20\x20\x20"\ + "\x20\x76\x61\x72\x20\x63\x20\x3D\x20\x74\x68\x65\x4C\x6F\x6F\x6B\x61\x68\x65\x61"\ + "\x64\x3B\x0A\x20\x20\x20\x20\x69\x66\x28\x69\x43\x68\x61\x72\x20\x3D\x3D\x20\x6C"\ + "\x49\x6E\x70\x75\x74\x29\x20\x7B\x0A\x20\x20\x20\x20\x20\x20\x72\x65\x74\x75\x72"\ + "\x6E\x20\x45\x4F\x46\x3B\x0A\x20\x20\x20\x20\x7D\x0A\x20\x20\x20\x20\x74\x68\x65"\ + "\x4C\x6F\x6F\x6B\x61\x68\x65\x61\x64\x20\x3D\x20\x45\x4F\x46\x3B\x0A\x20\x20\x20"\ + "\x20\x69\x66\x28\x63\x20\x3D\x3D\x20\x45\x4F\x46\x29\x20\x7B\x0A\x20\x20\x20\x20"\ + "\x20\x20\x63\x20\x3D\x20\x69\x6E\x70\x75\x74\x2E\x63\x68\x61\x72\x41\x74\x28\x69"\ + "\x43\x68\x61\x72\x29\x3B\x0A\x20\x20\x20\x20\x20\x20\x2B\x2B\x69\x43\x68\x61\x72"\ + "\x3B\x0A\x20\x20\x20\x20\x7D\x0A\x20\x20\x20\x20\x69\x66\x28\x63\x20\x3E\x3D\x20"\ + "\x27\x20\x27\x20\x7C\x7C\x20\x63\x20\x3D\x3D\x20\x27\x5C\x6E\x27\x29\x20\x7B\x0A"\ + "\x20\x20\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6E\x20\x63\x3B\x0A\x20\x20\x20\x20"\ + "\x7D\x0A\x20\x20\x20\x20\x69\x66\x28\x63\x20\x3D\x3D\x20\x27\x5C\x72\x27\x29\x20"\ + "\x7B\x0A\x20\x20\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6E\x20\x27\x5C\x6E\x27\x3B"\ + "\x0A\x20\x20\x20\x20\x7D\x0A\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6E\x20\x27\x20"\ + "\x27\x3B\x0A\x20\x20\x7D\x0A\x20\x20\x66\x75\x6E\x63\x74\x69\x6F\x6E\x20\x67\x65"\ + "\x74\x63\x49\x43\x28\x29\x20\x7B\x0A\x20\x20\x20\x20\x76\x61\x72\x20\x63\x20\x3D"\ + "\x20\x74\x68\x65\x4C\x6F\x6F\x6B\x61\x68\x65\x61\x64\x3B\x0A\x20\x20\x20\x20\x69"\ + "\x66\x28\x69\x43\x68\x61\x72\x20\x3D\x3D\x20\x6C\x49\x6E\x70\x75\x74\x29\x20\x7B"\ + "\x0A\x20\x20\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6E\x20\x45\x4F\x46\x3B\x0A\x20"\ + "\x20\x20\x20\x7D\x0A\x20\x20\x20\x20\x74\x68\x65\x4C\x6F\x6F\x6B\x61\x68\x65\x61"\ + "\x64\x20\x3D\x20\x45\x4F\x46\x3B\x0A\x20\x20\x20\x20\x69\x66\x28\x63\x20\x3D\x3D"\ + "\x20\x45\x4F\x46\x29\x20\x7B\x0A\x20\x20\x20\x20\x20\x20\x63\x20\x3D\x20\x69\x6E"\ + "\x70\x75\x74\x2E\x63\x68\x61\x72\x41\x74\x28\x69\x43\x68\x61\x72\x29\x3B\x0A\x20"\ + "\x20\x20\x20\x20\x20\x2B\x2B\x69\x43\x68\x61\x72\x3B\x0A\x20\x20\x20\x20\x7D\x0A"\ + "\x20\x20\x20\x20\x69\x66\x28\x63\x20\x3E\x3D\x20\x27\x20\x27\x20\x7C\x7C\x20\x63"\ + "\x20\x3D\x3D\x20\x27\x5C\x6E\x27\x20\x7C\x7C\x20\x63\x20\x3D\x3D\x20\x27\x5C\x72"\ + "\x27\x29\x20\x7B\x0A\x20\x20\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6E\x20\x63\x3B"\ + "\x0A\x20\x20\x20\x20\x7D\x0A\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6E\x20\x27\x20"\ + "\x27\x3B\x0A\x20\x20\x7D\x0A\x0A\x0A\x20\x20\x2F\x2A\x20\x70\x65\x65\x6B\x20\x2D"\ + "\x2D\x20\x67\x65\x74\x20\x74\x68\x65\x20\x6E\x65\x78\x74\x20\x63\x68\x61\x72\x61"\ + "\x63\x74\x65\x72\x20\x77\x69\x74\x68\x6F\x75\x74\x20\x67\x65\x74\x74\x69\x6E\x67"\ + "\x20\x69\x74\x2E\x0A\x20\x20\x2A\x2F\x0A\x0A\x20\x20\x66\x75\x6E\x63\x74\x69\x6F"\ + "\x6E\x20\x70\x65\x65\x6B\x28\x29\x20\x7B\x0A\x20\x20\x20\x20\x74\x68\x65\x4C\x6F"\ + "\x6F\x6B\x61\x68\x65\x61\x64\x20\x3D\x20\x67\x65\x74\x63\x28\x29\x3B\x0A\x20\x20"\ + "\x20\x20\x72\x65\x74\x75\x72\x6E\x20\x74\x68\x65\x4C\x6F\x6F\x6B\x61\x68\x65\x61"\ + "\x64\x3B\x0A\x20\x20\x7D\x0A\x0A\x0A\x20\x20\x2F\x2A\x20\x6E\x65\x78\x74\x20\x2D"\ + "\x2D\x20\x67\x65\x74\x20\x74\x68\x65\x20\x6E\x65\x78\x74\x20\x63\x68\x61\x72\x61"\ + "\x63\x74\x65\x72\x2C\x20\x65\x78\x63\x6C\x75\x64\x69\x6E\x67\x20\x63\x6F\x6D\x6D"\ + "\x65\x6E\x74\x73\x2E\x20\x70\x65\x65\x6B\x28\x29\x20\x69\x73\x20\x75\x73\x65\x64"\ + "\x20\x74\x6F\x20\x73\x65\x65\x0A\x20\x20\x69\x66\x20\x61\x20\x27\x2F\x27\x20\x69"\ + "\x73\x20\x66\x6F\x6C\x6C\x6F\x77\x65\x64\x20\x62\x79\x20\x61\x20\x27\x2F\x27\x20"\ + "\x6F\x72\x20\x27\x2A\x27\x2E\x0A\x20\x20\x2A\x2F\x0A\x0A\x20\x20\x66\x75\x6E\x63"\ + "\x74\x69\x6F\x6E\x20\x6E\x65\x78\x74\x28\x29\x20\x7B\x0A\x0A\x20\x20\x20\x20\x76"\ + "\x61\x72\x20\x63\x20\x3D\x20\x67\x65\x74\x63\x28\x29\x3B\x0A\x20\x20\x20\x20\x69"\ + "\x66\x28\x63\x20\x3D\x3D\x20\x27\x2F\x27\x29\x20\x7B\x0A\x20\x20\x20\x20\x20\x20"\ + "\x73\x77\x69\x74\x63\x68\x28\x70\x65\x65\x6B\x28\x29\x29\x20\x7B\x0A\x20\x20\x20"\ + "\x20\x20\x20\x20\x20\x63\x61\x73\x65\x20\x27\x2F\x27\x3A\x0A\x20\x20\x20\x20\x20"\ + "\x20\x20\x20\x20\x20\x66\x6F\x72\x28\x3B\x20\x3B\x20\x29\x20\x7B\x0A\x20\x20\x20"\ + "\x20\x20\x20\x20\x20\x20\x20\x20\x20\x63\x20\x3D\x20\x67\x65\x74\x63\x28\x29\x3B"\ + "\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x69\x66\x28\x63\x20\x3C\x3D"\ + "\x20\x27\x5C\x6E\x27\x29\x20\x7B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20"\ + "\x20\x20\x20\x72\x65\x74\x75\x72\x6E\x20\x63\x3B\x0A\x20\x20\x20\x20\x20\x20\x20"\ + "\x20\x20\x20\x20\x20\x7D\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x7D\x0A\x20"\ + "\x20\x20\x20\x20\x20\x20\x20\x20\x20\x62\x72\x65\x61\x6B\x3B\x0A\x20\x20\x20\x20"\ + "\x20\x20\x20\x20\x63\x61\x73\x65\x20\x27\x2A\x27\x3A\x0A\x20\x20\x20\x20\x20\x20"\ + "\x20\x20\x20\x20\x2F\x2F\x74\x68\x69\x73\x20\x69\x73\x20\x61\x20\x63\x6F\x6D\x6D"\ + "\x65\x6E\x74\x2E\x20\x57\x68\x61\x74\x20\x6B\x69\x6E\x64\x3F\x0A\x20\x20\x20\x20"\ + "\x20\x20\x20\x20\x20\x20\x67\x65\x74\x63\x28\x29\x3B\x0A\x20\x20\x20\x20\x20\x20"\ + "\x20\x20\x20\x20\x69\x66\x28\x70\x65\x65\x6B\x28\x29\x20\x3D\x3D\x20\x27\x21\x27"\ + "\x29\x20\x7B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x2F\x2F\x20\x6B"\ + "\x69\x6C\x6C\x20\x74\x68\x65\x20\x65\x78\x74\x72\x61\x20\x6F\x6E\x65\x0A\x20\x20"\ + "\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x67\x65\x74\x63\x28\x29\x3B\x0A\x20\x20"\ + "\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x2F\x2F\x69\x6D\x70\x6F\x72\x74\x61\x6E"\ + "\x74\x20\x63\x6F\x6D\x6D\x65\x6E\x74\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20"\ + "\x20\x20\x76\x61\x72\x20\x64\x20\x3D\x20\x27\x2F\x2A\x21\x27\x3B\x0A\x20\x20\x20"\ + "\x20\x20\x20\x20\x20\x20\x20\x20\x20\x66\x6F\x72\x28\x3B\x20\x3B\x20\x29\x20\x7B"\ + "\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x63\x20\x3D\x20\x67"\ + "\x65\x74\x63\x49\x43\x28\x29\x3B\x20\x2F\x2F\x20\x6C\x65\x74\x20\x69\x74\x20\x6B"\ + "\x6E\x6F\x77\x20\x69\x74\x27\x73\x20\x69\x6E\x73\x69\x64\x65\x20\x61\x6E\x20\x69"\ + "\x6D\x70\x6F\x72\x74\x61\x6E\x74\x20\x63\x6F\x6D\x6D\x65\x6E\x74\x0A\x20\x20\x20"\ + "\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x73\x77\x69\x74\x63\x68\x28\x63\x29"\ + "\x20\x7B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x63"\ + "\x61\x73\x65\x20\x27\x2A\x27\x3A\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20"\ + "\x20\x20\x20\x20\x20\x20\x20\x69\x66\x28\x70\x65\x65\x6B\x28\x29\x20\x3D\x3D\x20"\ + "\x27\x2F\x27\x29\x20\x7B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20"\ + "\x20\x20\x20\x20\x20\x20\x20\x67\x65\x74\x63\x28\x29\x3B\x0A\x20\x20\x20\x20\x20"\ + "\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x72\x65\x74\x75\x72"\ + "\x6E\x20\x64\x20\x2B\x20\x27\x2A\x2F\x27\x3B\x0A\x20\x20\x20\x20\x20\x20\x20\x20"\ + "\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x7D\x0A\x20\x20\x20\x20\x20\x20\x20\x20"\ + "\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x62\x72\x65\x61\x6B\x3B\x0A\x20\x20\x20"\ + "\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x63\x61\x73\x65\x20\x45\x4F"\ + "\x46\x3A\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20"\ + "\x20\x74\x68\x72\x6F\x77\x20\x27\x45\x72\x72\x6F\x72\x3A\x20\x55\x6E\x74\x65\x72"\ + "\x6D\x69\x6E\x61\x74\x65\x64\x20\x63\x6F\x6D\x6D\x65\x6E\x74\x2E\x27\x3B\x0A\x20"\ + "\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x64\x65\x66\x61\x75"\ + "\x6C\x74\x3A\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20"\ + "\x20\x20\x2F\x2F\x6D\x6F\x64\x65\x72\x6E\x20\x4A\x53\x20\x65\x6E\x67\x69\x6E\x65"\ + "\x73\x20\x68\x61\x6E\x64\x6C\x65\x20\x73\x74\x72\x69\x6E\x67\x20\x63\x6F\x6E\x63"\ + "\x61\x74\x73\x20\x6D\x75\x63\x68\x20\x62\x65\x74\x74\x65\x72\x20\x74\x68\x61\x6E"\ + "\x20\x74\x68\x65\x20\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20"\ + "\x20\x20\x20\x20\x2F\x2F\x61\x72\x72\x61\x79\x2B\x70\x75\x73\x68\x2B\x6A\x6F\x69"\ + "\x6E\x20\x68\x61\x63\x6B\x2E\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20"\ + "\x20\x20\x20\x20\x20\x20\x64\x20\x2B\x3D\x20\x63\x3B\x0A\x20\x20\x20\x20\x20\x20"\ + "\x20\x20\x20\x20\x20\x20\x20\x20\x7D\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20"\ + "\x20\x20\x7D\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x7D\x20\x65\x6C\x73\x65"\ + "\x20\x7B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x2F\x2F\x75\x6E\x69"\ + "\x6D\x70\x6F\x72\x74\x61\x6E\x74\x20\x63\x6F\x6D\x6D\x65\x6E\x74\x0A\x20\x20\x20"\ + "\x20\x20\x20\x20\x20\x20\x20\x20\x20\x66\x6F\x72\x28\x3B\x20\x3B\x20\x29\x20\x7B"\ + "\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x73\x77\x69\x74\x63"\ + "\x68\x28\x67\x65\x74\x63\x28\x29\x29\x20\x7B\x0A\x20\x20\x20\x20\x20\x20\x20\x20"\ + "\x20\x20\x20\x20\x20\x20\x20\x20\x63\x61\x73\x65\x20\x27\x2A\x27\x3A\x0A\x20\x20"\ + "\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x69\x66\x28\x70"\ + "\x65\x65\x6B\x28\x29\x20\x3D\x3D\x20\x27\x2F\x27\x29\x20\x7B\x0A\x20\x20\x20\x20"\ + "\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x67\x65\x74\x63"\ + "\x28\x29\x3B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20"\ + "\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6E\x20\x27\x20\x27\x3B\x0A\x20\x20\x20\x20"\ + "\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x7D\x0A\x20\x20\x20\x20"\ + "\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x62\x72\x65\x61\x6B\x3B"\ + "\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x63\x61\x73"\ + "\x65\x20\x45\x4F\x46\x3A\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20"\ + "\x20\x20\x20\x20\x20\x74\x68\x72\x6F\x77\x20\x27\x45\x72\x72\x6F\x72\x3A\x20\x55"\ + "\x6E\x74\x65\x72\x6D\x69\x6E\x61\x74\x65\x64\x20\x63\x6F\x6D\x6D\x65\x6E\x74\x2E"\ + "\x27\x3B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x7D\x0A\x20"\ + "\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x7D\x0A\x20\x20\x20\x20\x20\x20\x20"\ + "\x20\x20\x20\x7D\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x62\x72\x65\x61\x6B"\ + "\x3B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x64\x65\x66\x61\x75\x6C\x74\x3A\x0A\x20"\ + "\x20\x20\x20\x20\x20\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6E\x20\x63\x3B\x0A\x20"\ + "\x20\x20\x20\x20\x20\x7D\x0A\x20\x20\x20\x20\x7D\x0A\x20\x20\x20\x20\x72\x65\x74"\ + "\x75\x72\x6E\x20\x63\x3B\x0A\x20\x20\x7D\x0A\x0A\x0A\x20\x20\x2F\x2A\x20\x61\x63"\ + "\x74\x69\x6F\x6E\x20\x2D\x2D\x20\x64\x6F\x20\x73\x6F\x6D\x65\x74\x68\x69\x6E\x67"\ + "\x21\x20\x57\x68\x61\x74\x20\x79\x6F\x75\x20\x64\x6F\x20\x69\x73\x20\x64\x65\x74"\ + "\x65\x72\x6D\x69\x6E\x65\x64\x20\x62\x79\x20\x74\x68\x65\x20\x61\x72\x67\x75\x6D"\ + "\x65\x6E\x74\x3A\x0A\x20\x20\x31\x20\x20\x20\x4F\x75\x74\x70\x75\x74\x20\x41\x2E"\ + "\x20\x43\x6F\x70\x79\x20\x42\x20\x74\x6F\x20\x41\x2E\x20\x47\x65\x74\x20\x74\x68"\ + "\x65\x20\x6E\x65\x78\x74\x20\x42\x2E\x0A\x20\x20\x32\x20\x20\x20\x43\x6F\x70\x79"\ + "\x20\x42\x20\x74\x6F\x20\x41\x2E\x20\x47\x65\x74\x20\x74\x68\x65\x20\x6E\x65\x78"\ + "\x74\x20\x42\x2E\x20\x28\x44\x65\x6C\x65\x74\x65\x20\x41\x29\x2E\x0A\x20\x20\x33"\ + "\x20\x20\x20\x47\x65\x74\x20\x74\x68\x65\x20\x6E\x65\x78\x74\x20\x42\x2E\x20\x28"\ + "\x44\x65\x6C\x65\x74\x65\x20\x42\x29\x2E\x0A\x20\x20\x61\x63\x74\x69\x6F\x6E\x20"\ + "\x74\x72\x65\x61\x74\x73\x20\x61\x20\x73\x74\x72\x69\x6E\x67\x20\x61\x73\x20\x61"\ + "\x20\x73\x69\x6E\x67\x6C\x65\x20\x63\x68\x61\x72\x61\x63\x74\x65\x72\x2E\x20\x57"\ + "\x6F\x77\x21\x0A\x20\x20\x61\x63\x74\x69\x6F\x6E\x20\x72\x65\x63\x6F\x67\x6E\x69"\ + "\x7A\x65\x73\x20\x61\x20\x72\x65\x67\x75\x6C\x61\x72\x20\x65\x78\x70\x72\x65\x73"\ + "\x73\x69\x6F\x6E\x20\x69\x66\x20\x69\x74\x20\x69\x73\x20\x70\x72\x65\x63\x65\x64"\ + "\x65\x64\x20\x62\x79\x20\x28\x20\x6F\x72\x20\x2C\x20\x6F\x72\x20\x3D\x2E\x0A\x20"\ + "\x20\x2A\x2F\x0A\x0A\x20\x20\x66\x75\x6E\x63\x74\x69\x6F\x6E\x20\x61\x63\x74\x69"\ + "\x6F\x6E\x28\x64\x29\x20\x7B\x0A\x0A\x20\x20\x20\x20\x76\x61\x72\x20\x72\x20\x3D"\ + "\x20\x5B\x5D\x3B\x0A\x0A\x20\x20\x20\x20\x69\x66\x28\x64\x20\x3D\x3D\x20\x31\x29"\ + "\x20\x7B\x0A\x20\x20\x20\x20\x20\x20\x72\x2E\x70\x75\x73\x68\x28\x61\x29\x3B\x0A"\ + "\x20\x20\x20\x20\x7D\x0A\x0A\x20\x20\x20\x20\x69\x66\x28\x64\x20\x3C\x20\x33\x29"\ + "\x20\x7B\x0A\x20\x20\x20\x20\x20\x20\x61\x20\x3D\x20\x62\x3B\x0A\x20\x20\x20\x20"\ + "\x20\x20\x69\x66\x28\x61\x20\x3D\x3D\x20\x27\x5C\x27\x27\x20\x7C\x7C\x20\x61\x20"\ + "\x3D\x3D\x20\x27\x22\x27\x29\x20\x7B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x66\x6F"\ + "\x72\x28\x3B\x20\x3B\x20\x29\x20\x7B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20"\ + "\x72\x2E\x70\x75\x73\x68\x28\x61\x29\x3B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20"\ + "\x20\x61\x20\x3D\x20\x67\x65\x74\x63\x28\x29\x3B\x0A\x20\x20\x20\x20\x20\x20\x20"\ + "\x20\x20\x20\x69\x66\x28\x61\x20\x3D\x3D\x20\x62\x29\x20\x7B\x0A\x20\x20\x20\x20"\ + "\x20\x20\x20\x20\x20\x20\x20\x20\x62\x72\x65\x61\x6B\x3B\x0A\x20\x20\x20\x20\x20"\ + "\x20\x20\x20\x20\x20\x7D\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x69\x66\x28"\ + "\x61\x20\x3C\x3D\x20\x27\x5C\x6E\x27\x29\x20\x7B\x0A\x20\x20\x20\x20\x20\x20\x20"\ + "\x20\x20\x20\x20\x20\x74\x68\x72\x6F\x77\x20\x27\x45\x72\x72\x6F\x72\x3A\x20\x75"\ + "\x6E\x74\x65\x72\x6D\x69\x6E\x61\x74\x65\x64\x20\x73\x74\x72\x69\x6E\x67\x20\x6C"\ + "\x69\x74\x65\x72\x61\x6C\x3A\x20\x27\x20\x2B\x20\x61\x3B\x0A\x20\x20\x20\x20\x20"\ + "\x20\x20\x20\x20\x20\x7D\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x69\x66\x28"\ + "\x61\x20\x3D\x3D\x20\x27\x5C\x5C\x27\x29\x20\x7B\x0A\x20\x20\x20\x20\x20\x20\x20"\ + "\x20\x20\x20\x20\x20\x72\x2E\x70\x75\x73\x68\x28\x61\x29\x3B\x0A\x20\x20\x20\x20"\ + "\x20\x20\x20\x20\x20\x20\x20\x20\x61\x20\x3D\x20\x67\x65\x74\x63\x28\x29\x3B\x0A"\ + "\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x7D\x0A\x20\x20\x20\x20\x20\x20\x20\x20"\ + "\x7D\x0A\x20\x20\x20\x20\x20\x20\x7D\x0A\x20\x20\x20\x20\x7D\x0A\x0A\x20\x20\x20"\ + "\x20\x62\x20\x3D\x20\x6E\x65\x78\x74\x28\x29\x3B\x0A\x0A\x20\x20\x20\x20\x69\x66"\ + "\x28\x62\x20\x3D\x3D\x20\x27\x2F\x27\x20\x26\x26\x20\x27\x28\x2C\x3D\x3A\x5B\x21"\ + "\x26\x7C\x27\x2E\x68\x61\x73\x28\x61\x29\x29\x20\x7B\x0A\x20\x20\x20\x20\x20\x20"\ + "\x72\x2E\x70\x75\x73\x68\x28\x61\x29\x3B\x0A\x20\x20\x20\x20\x20\x20\x72\x2E\x70"\ + "\x75\x73\x68\x28\x62\x29\x3B\x0A\x20\x20\x20\x20\x20\x20\x66\x6F\x72\x28\x3B\x20"\ + "\x3B\x20\x29\x20\x7B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x61\x20\x3D\x20\x67\x65"\ + "\x74\x63\x28\x29\x3B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x69\x66\x28\x61\x20\x3D"\ + "\x3D\x20\x27\x2F\x27\x29\x20\x7B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x62"\ + "\x72\x65\x61\x6B\x3B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x7D\x20\x65\x6C\x73\x65"\ + "\x20\x69\x66\x28\x61\x20\x3D\x3D\x20\x27\x5C\x5C\x27\x29\x20\x7B\x0A\x20\x20\x20"\ + "\x20\x20\x20\x20\x20\x20\x20\x72\x2E\x70\x75\x73\x68\x28\x61\x29\x3B\x0A\x20\x20"\ + "\x20\x20\x20\x20\x20\x20\x20\x20\x61\x20\x3D\x20\x67\x65\x74\x63\x28\x29\x3B\x0A"\ + "\x20\x20\x20\x20\x20\x20\x20\x20\x7D\x20\x65\x6C\x73\x65\x20\x69\x66\x28\x61\x20"\ + "\x3C\x3D\x20\x27\x5C\x6E\x27\x29\x20\x7B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20"\ + "\x20\x74\x68\x72\x6F\x77\x20\x27\x45\x72\x72\x6F\x72\x3A\x20\x75\x6E\x74\x65\x72"\ + "\x6D\x69\x6E\x61\x74\x65\x64\x20\x52\x65\x67\x75\x6C\x61\x72\x20\x45\x78\x70\x72"\ + "\x65\x73\x73\x69\x6F\x6E\x20\x6C\x69\x74\x65\x72\x61\x6C\x27\x3B\x0A\x20\x20\x20"\ + "\x20\x20\x20\x20\x20\x7D\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x72\x2E\x70\x75\x73"\ + "\x68\x28\x61\x29\x3B\x0A\x20\x20\x20\x20\x20\x20\x7D\x0A\x20\x20\x20\x20\x20\x20"\ + "\x62\x20\x3D\x20\x6E\x65\x78\x74\x28\x29\x3B\x0A\x20\x20\x20\x20\x7D\x0A\x0A\x20"\ + "\x20\x20\x20\x72\x65\x74\x75\x72\x6E\x20\x72\x2E\x6A\x6F\x69\x6E\x28\x27\x27\x29"\ + "\x3B\x0A\x20\x20\x7D\x0A\x0A\x0A\x20\x20\x2F\x2A\x20\x6D\x20\x2D\x2D\x20\x43\x6F"\ + "\x70\x79\x20\x74\x68\x65\x20\x69\x6E\x70\x75\x74\x20\x74\x6F\x20\x74\x68\x65\x20"\ + "\x6F\x75\x74\x70\x75\x74\x2C\x20\x64\x65\x6C\x65\x74\x69\x6E\x67\x20\x74\x68\x65"\ + "\x20\x63\x68\x61\x72\x61\x63\x74\x65\x72\x73\x20\x77\x68\x69\x63\x68\x20\x61\x72"\ + "\x65\x0A\x20\x20\x69\x6E\x73\x69\x67\x6E\x69\x66\x69\x63\x61\x6E\x74\x20\x74\x6F"\ + "\x20\x4A\x61\x76\x61\x53\x63\x72\x69\x70\x74\x2E\x20\x43\x6F\x6D\x6D\x65\x6E\x74"\ + "\x73\x20\x77\x69\x6C\x6C\x20\x62\x65\x20\x72\x65\x6D\x6F\x76\x65\x64\x2E\x20\x54"\ + "\x61\x62\x73\x20\x77\x69\x6C\x6C\x20\x62\x65\x0A\x20\x20\x72\x65\x70\x6C\x61\x63"\ + "\x65\x64\x20\x77\x69\x74\x68\x20\x73\x70\x61\x63\x65\x73\x2E\x20\x43\x61\x72\x72"\ + "\x69\x61\x67\x65\x20\x72\x65\x74\x75\x72\x6E\x73\x20\x77\x69\x6C\x6C\x20\x62\x65"\ + "\x20\x72\x65\x70\x6C\x61\x63\x65\x64\x20\x77\x69\x74\x68\x0A\x20\x20\x6C\x69\x6E"\ + "\x65\x66\x65\x65\x64\x73\x2E\x0A\x20\x20\x4D\x6F\x73\x74\x20\x73\x70\x61\x63\x65"\ + "\x73\x20\x61\x6E\x64\x20\x6C\x69\x6E\x65\x66\x65\x65\x64\x73\x20\x77\x69\x6C\x6C"\ + "\x20\x62\x65\x20\x72\x65\x6D\x6F\x76\x65\x64\x2E\x0A\x20\x20\x2A\x2F\x0A\x0A\x20"\ + "\x20\x66\x75\x6E\x63\x74\x69\x6F\x6E\x20\x6D\x28\x29\x20\x7B\x0A\x0A\x20\x20\x20"\ + "\x20\x76\x61\x72\x20\x72\x20\x3D\x20\x5B\x5D\x3B\x0A\x20\x20\x20\x20\x61\x20\x3D"\ + "\x20\x27\x5C\x6E\x27\x3B\x0A\x0A\x20\x20\x20\x20\x72\x2E\x70\x75\x73\x68\x28\x61"\ + "\x63\x74\x69\x6F\x6E\x28\x33\x29\x29\x3B\x0A\x0A\x20\x20\x20\x20\x77\x68\x69\x6C"\ + "\x65\x28\x61\x20\x21\x3D\x20\x45\x4F\x46\x29\x20\x7B\x0A\x20\x20\x20\x20\x20\x20"\ + "\x73\x77\x69\x74\x63\x68\x28\x61\x29\x20\x7B\x0A\x20\x20\x20\x20\x20\x20\x20\x20"\ + "\x63\x61\x73\x65\x20\x27\x20\x27\x3A\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20"\ + "\x69\x66\x28\x69\x73\x41\x6C\x70\x68\x61\x6E\x75\x6D\x28\x62\x29\x29\x20\x7B\x0A"\ + "\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x72\x2E\x70\x75\x73\x68\x28\x61"\ + "\x63\x74\x69\x6F\x6E\x28\x31\x29\x29\x3B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20"\ + "\x20\x7D\x20\x65\x6C\x73\x65\x20\x7B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20"\ + "\x20\x20\x72\x2E\x70\x75\x73\x68\x28\x61\x63\x74\x69\x6F\x6E\x28\x32\x29\x29\x3B"\ + "\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x7D\x0A\x20\x20\x20\x20\x20\x20\x20"\ + "\x20\x20\x20\x62\x72\x65\x61\x6B\x3B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x63\x61"\ + "\x73\x65\x20\x27\x5C\x6E\x27\x3A\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x73"\ + "\x77\x69\x74\x63\x68\x28\x62\x29\x20\x7B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20"\ + "\x20\x20\x20\x63\x61\x73\x65\x20\x27\x7B\x27\x3A\x0A\x20\x20\x20\x20\x20\x20\x20"\ + "\x20\x20\x20\x20\x20\x63\x61\x73\x65\x20\x27\x5B\x27\x3A\x0A\x20\x20\x20\x20\x20"\ + "\x20\x20\x20\x20\x20\x20\x20\x63\x61\x73\x65\x20\x27\x28\x27\x3A\x0A\x20\x20\x20"\ + "\x20\x20\x20\x20\x20\x20\x20\x20\x20\x63\x61\x73\x65\x20\x27\x2B\x27\x3A\x0A\x20"\ + "\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x63\x61\x73\x65\x20\x27\x2D\x27\x3A"\ + "\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x72\x2E\x70\x75\x73"\ + "\x68\x28\x61\x63\x74\x69\x6F\x6E\x28\x31\x29\x29\x3B\x0A\x20\x20\x20\x20\x20\x20"\ + "\x20\x20\x20\x20\x20\x20\x20\x20\x62\x72\x65\x61\x6B\x3B\x0A\x20\x20\x20\x20\x20"\ + "\x20\x20\x20\x20\x20\x20\x20\x63\x61\x73\x65\x20\x27\x20\x27\x3A\x0A\x20\x20\x20"\ + "\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x72\x2E\x70\x75\x73\x68\x28\x61\x63"\ + "\x74\x69\x6F\x6E\x28\x33\x29\x29\x3B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20"\ + "\x20\x20\x20\x20\x62\x72\x65\x61\x6B\x3B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20"\ + "\x20\x20\x20\x64\x65\x66\x61\x75\x6C\x74\x3A\x0A\x20\x20\x20\x20\x20\x20\x20\x20"\ + "\x20\x20\x20\x20\x20\x20\x69\x66\x28\x69\x73\x41\x6C\x70\x68\x61\x6E\x75\x6D\x28"\ + "\x62\x29\x29\x20\x7B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20"\ + "\x20\x20\x72\x2E\x70\x75\x73\x68\x28\x61\x63\x74\x69\x6F\x6E\x28\x31\x29\x29\x3B"\ + "\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x7D\x20\x65\x6C\x73"\ + "\x65\x20\x7B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20"\ + "\x69\x66\x28\x6C\x65\x76\x65\x6C\x20\x3D\x3D\x20\x31\x20\x26\x26\x20\x62\x20\x21"\ + "\x3D\x20\x27\x5C\x6E\x27\x29\x20\x7B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20"\ + "\x20\x20\x20\x20\x20\x20\x20\x20\x72\x2E\x70\x75\x73\x68\x28\x61\x63\x74\x69\x6F"\ + "\x6E\x28\x31\x29\x29\x3B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20"\ + "\x20\x20\x20\x7D\x20\x65\x6C\x73\x65\x20\x7B\x0A\x20\x20\x20\x20\x20\x20\x20\x20"\ + "\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x72\x2E\x70\x75\x73\x68\x28\x61\x63\x74"\ + "\x69\x6F\x6E\x28\x32\x29\x29\x3B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20"\ + "\x20\x20\x20\x20\x20\x7D\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20"\ + "\x20\x7D\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x7D\x0A\x20\x20\x20\x20\x20"\ + "\x20\x20\x20\x20\x20\x62\x72\x65\x61\x6B\x3B\x0A\x20\x20\x20\x20\x20\x20\x20\x20"\ + "\x64\x65\x66\x61\x75\x6C\x74\x3A\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x73"\ + "\x77\x69\x74\x63\x68\x28\x62\x29\x20\x7B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20"\ + "\x20\x20\x20\x63\x61\x73\x65\x20\x27\x20\x27\x3A\x0A\x20\x20\x20\x20\x20\x20\x20"\ + "\x20\x20\x20\x20\x20\x20\x20\x69\x66\x28\x69\x73\x41\x6C\x70\x68\x61\x6E\x75\x6D"\ + "\x28\x61\x29\x29\x20\x7B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20"\ + "\x20\x20\x20\x72\x2E\x70\x75\x73\x68\x28\x61\x63\x74\x69\x6F\x6E\x28\x31\x29\x29"\ + "\x3B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x62\x72"\ + "\x65\x61\x6B\x3B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x7D"\ + "\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x72\x2E\x70\x75\x73"\ + "\x68\x28\x61\x63\x74\x69\x6F\x6E\x28\x33\x29\x29\x3B\x0A\x20\x20\x20\x20\x20\x20"\ + "\x20\x20\x20\x20\x20\x20\x20\x20\x62\x72\x65\x61\x6B\x3B\x0A\x20\x20\x20\x20\x20"\ + "\x20\x20\x20\x20\x20\x20\x20\x63\x61\x73\x65\x20\x27\x5C\x6E\x27\x3A\x0A\x20\x20"\ + "\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x69\x66\x28\x6C\x65\x76\x65\x6C"\ + "\x20\x3D\x3D\x20\x31\x20\x26\x26\x20\x61\x20\x21\x3D\x20\x27\x5C\x6E\x27\x29\x20"\ + "\x7B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x72\x2E"\ + "\x70\x75\x73\x68\x28\x61\x63\x74\x69\x6F\x6E\x28\x31\x29\x29\x3B\x0A\x20\x20\x20"\ + "\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x7D\x20\x65\x6C\x73\x65\x20\x7B\x0A"\ + "\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x73\x77\x69\x74"\ + "\x63\x68\x28\x61\x29\x20\x7B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20"\ + "\x20\x20\x20\x20\x20\x20\x63\x61\x73\x65\x20\x27\x7D\x27\x3A\x0A\x20\x20\x20\x20"\ + "\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x63\x61\x73\x65\x20\x27"\ + "\x5D\x27\x3A\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20"\ + "\x20\x20\x63\x61\x73\x65\x20\x27\x29\x27\x3A\x0A\x20\x20\x20\x20\x20\x20\x20\x20"\ + "\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x63\x61\x73\x65\x20\x27\x2B\x27\x3A\x0A"\ + "\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x63\x61"\ + "\x73\x65\x20\x27\x2D\x27\x3A\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20"\ + "\x20\x20\x20\x20\x20\x20\x63\x61\x73\x65\x20\x27\x22\x27\x3A\x0A\x20\x20\x20\x20"\ + "\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x63\x61\x73\x65\x20\x27"\ + "\x5C\x27\x27\x3A\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20"\ + "\x20\x20\x20\x20\x20\x69\x66\x28\x6C\x65\x76\x65\x6C\x20\x3D\x3D\x20\x33\x29\x20"\ + "\x7B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20"\ + "\x20\x20\x20\x20\x72\x2E\x70\x75\x73\x68\x28\x61\x63\x74\x69\x6F\x6E\x28\x33\x29"\ + "\x29\x3B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20"\ + "\x20\x20\x20\x7D\x20\x65\x6C\x73\x65\x20\x7B\x0A\x20\x20\x20\x20\x20\x20\x20\x20"\ + "\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x72\x2E\x70\x75\x73\x68"\ + "\x28\x61\x63\x74\x69\x6F\x6E\x28\x31\x29\x29\x3B\x0A\x20\x20\x20\x20\x20\x20\x20"\ + "\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x7D\x0A\x20\x20\x20\x20\x20"\ + "\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x62\x72\x65\x61\x6B"\ + "\x3B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20"\ + "\x64\x65\x66\x61\x75\x6C\x74\x3A\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20"\ + "\x20\x20\x20\x20\x20\x20\x20\x20\x20\x69\x66\x28\x69\x73\x41\x6C\x70\x68\x61\x6E"\ + "\x75\x6D\x28\x61\x29\x29\x20\x7B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20"\ + "\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x72\x2E\x70\x75\x73\x68\x28\x61\x63"\ + "\x74\x69\x6F\x6E\x28\x31\x29\x29\x3B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20"\ + "\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x7D\x20\x65\x6C\x73\x65\x20\x7B\x0A\x20"\ + "\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20"\ + "\x20\x72\x2E\x70\x75\x73\x68\x28\x61\x63\x74\x69\x6F\x6E\x28\x33\x29\x29\x3B\x0A"\ + "\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20"\ + "\x7D\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x7D\x0A"\ + "\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x7D\x0A\x20\x20\x20\x20"\ + "\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x62\x72\x65\x61\x6B\x3B\x0A\x20\x20\x20"\ + "\x20\x20\x20\x20\x20\x20\x20\x20\x20\x64\x65\x66\x61\x75\x6C\x74\x3A\x0A\x20\x20"\ + "\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x72\x2E\x70\x75\x73\x68\x28\x61"\ + "\x63\x74\x69\x6F\x6E\x28\x31\x29\x29\x3B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20"\ + "\x20\x20\x20\x20\x20\x62\x72\x65\x61\x6B\x3B\x0A\x20\x20\x20\x20\x20\x20\x20\x20"\ + "\x20\x20\x7D\x0A\x20\x20\x20\x20\x20\x20\x7D\x0A\x20\x20\x20\x20\x7D\x0A\x0A\x20"\ + "\x20\x20\x20\x72\x65\x74\x75\x72\x6E\x20\x72\x2E\x6A\x6F\x69\x6E\x28\x27\x27\x29"\ + "\x3B\x0A\x20\x20\x7D\x0A\x0A\x20\x20\x6A\x73\x6D\x69\x6E\x2E\x6F\x6C\x64\x53\x69"\ + "\x7A\x65\x20\x3D\x20\x69\x6E\x70\x75\x74\x2E\x6C\x65\x6E\x67\x74\x68\x3B\x0A\x20"\ + "\x20\x72\x65\x74\x20\x3D\x20\x6D\x28\x69\x6E\x70\x75\x74\x29\x3B\x0A\x20\x20\x6A"\ + "\x73\x6D\x69\x6E\x2E\x6E\x65\x77\x53\x69\x7A\x65\x20\x3D\x20\x72\x65\x74\x2E\x6C"\ + "\x65\x6E\x67\x74\x68\x3B\x0A\x0A\x20\x20\x72\x65\x74\x75\x72\x6E\x20\x63\x6F\x6D"\ + "\x6D\x65\x6E\x74\x20\x2B\x20\x72\x65\x74\x3B\x0A\x0A\x7D\x0A\x0A\x76\x61\x72\x20"\ + "\x73\x65\x74\x74\x69\x6E\x67\x73\x20\x3D\x20\x7B\x0A\x20\x20\x20\x20\x27\x63\x6F"\ + "\x6E\x76\x65\x72\x73\x61\x74\x69\x76\x65\x27\x3A\x20\x27\x54\x68\x65\x20\x64\x65"\ + "\x66\x61\x75\x6C\x74\x2C\x20\x72\x65\x6D\x6F\x76\x65\x73\x20\x63\x6F\x6D\x6D\x65"\ + "\x6E\x74\x73\x20\x61\x6E\x64\x20\x75\x6E\x6E\x65\x63\x65\x73\x73\x61\x72\x79\x20"\ + "\x77\x68\x69\x74\x65\x73\x70\x61\x63\x65\x2E\x27\x2C\x0A\x20\x20\x20\x20\x27\x6D"\ + "\x69\x6E\x69\x6D\x61\x6C\x27\x3A\x20\x27\x4C\x69\x6B\x65\x20\x63\x6F\x6E\x76\x65"\ + "\x72\x73\x61\x74\x69\x76\x65\x20\x62\x75\x74\x20\x6B\x65\x65\x70\x73\x20\x73\x69"\ + "\x6E\x67\x6C\x65\x20\x6C\x69\x6E\x65\x66\x65\x65\x64\x73\x2E\x27\x2C\x0A\x20\x20"\ + "\x20\x20\x27\x61\x67\x67\x72\x65\x73\x73\x69\x76\x65\x27\x3A\x20\x27\x4C\x69\x6B"\ + "\x65\x20\x63\x6F\x6E\x76\x65\x72\x73\x61\x74\x69\x76\x65\x20\x62\x75\x74\x20\x72"\ + "\x65\x6D\x6F\x76\x65\x73\x20\x6D\x6F\x72\x65\x20\x6C\x69\x6E\x65\x66\x65\x65\x64"\ + "\x73\x20\x28\x64\x61\x6E\x67\x65\x72\x6F\x75\x73\x21\x29\x27\x2C\x0A\x7D\x3B\x0A"\ + "\x0A\x2F\x2A\x67\x6C\x6F\x62\x61\x6C\x20\x73\x79\x73\x74\x65\x6D\x3A\x20\x74\x72"\ + "\x75\x65\x2C\x20\x63\x6F\x6E\x73\x6F\x6C\x65\x3A\x20\x74\x72\x75\x65\x20\x2A\x2F"\ + "\x0A\x76\x61\x72\x20\x6A\x73\x6D\x69\x6E\x2C\x20\x66\x6E\x61\x6D\x65\x2C\x20\x73"\ + "\x65\x74\x74\x69\x6E\x67\x73\x2C\x20\x6C\x65\x76\x65\x6C\x2C\x20\x63\x6F\x64\x65"\ + "\x2C\x20\x72\x65\x73\x75\x6C\x74\x3B\x0A\x0A\x73\x65\x74\x74\x69\x6E\x67\x73\x20"\ + "\x3D\x20\x73\x65\x74\x74\x69\x6E\x67\x73\x20\x7C\x7C\x20\x7B\x7D\x3B\x0A\x0A\x66"\ + "\x75\x6E\x63\x74\x69\x6F\x6E\x20\x68\x65\x6C\x70\x28\x29\x20\x7B\x0A\x20\x20\x20"\ + "\x20\x27\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74\x27\x3B\x0A\x20\x20\x20\x20\x76"\ + "\x61\x72\x20\x6F\x70\x74\x2C\x20\x73\x74\x72\x3B\x0A\x20\x20\x20\x20\x63\x6F\x6E"\ + "\x73\x6F\x6C\x65\x2E\x6C\x6F\x67\x28\x27\x55\x73\x61\x67\x65\x3A\x27\x29\x3B\x0A"\ + "\x20\x20\x20\x20\x63\x6F\x6E\x73\x6F\x6C\x65\x2E\x6C\x6F\x67\x28\x27\x20\x20\x20"\ + "\x20\x6A\x73\x6D\x69\x6E\x20\x5B\x6F\x70\x74\x69\x6F\x6E\x73\x5D\x20\x66\x69\x6C"\ + "\x65\x6E\x61\x6D\x65\x27\x29\x3B\x0A\x20\x20\x20\x20\x63\x6F\x6E\x73\x6F\x6C\x65"\ + "\x2E\x6C\x6F\x67\x28\x29\x3B\x0A\x20\x20\x20\x20\x63\x6F\x6E\x73\x6F\x6C\x65\x2E"\ + "\x6C\x6F\x67\x28\x27\x54\x68\x65\x20\x63\x6F\x6E\x74\x65\x6E\x74\x20\x6F\x66\x20"\ + "\x66\x69\x6C\x65\x6E\x61\x6D\x65\x20\x77\x69\x6C\x6C\x20\x62\x65\x20\x6D\x69\x6E"\ + "\x69\x66\x69\x65\x64\x20\x61\x6E\x64\x20\x70\x72\x69\x6E\x74\x65\x64\x20\x74\x6F"\ + "\x27\x29\x3B\x0A\x20\x20\x20\x20\x63\x6F\x6E\x73\x6F\x6C\x65\x2E\x6C\x6F\x67\x28"\ + "\x27\x73\x74\x61\x6E\x64\x61\x72\x64\x20\x6F\x75\x74\x70\x75\x74\x2E\x27\x29\x3B"\ + "\x0A\x20\x20\x20\x20\x63\x6F\x6E\x73\x6F\x6C\x65\x2E\x6C\x6F\x67\x28\x29\x3B\x0A"\ + "\x20\x20\x20\x20\x63\x6F\x6E\x73\x6F\x6C\x65\x2E\x6C\x6F\x67\x28\x27\x47\x65\x6E"\ + "\x65\x72\x61\x6C\x20\x6F\x70\x74\x69\x6F\x6E\x73\x3A\x27\x29\x3B\x0A\x20\x20\x20"\ + "\x20\x63\x6F\x6E\x73\x6F\x6C\x65\x2E\x6C\x6F\x67\x28\x27\x20\x20\x20\x20\x2D\x2D"\ + "\x68\x65\x6C\x70\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x53\x68\x6F\x77\x20\x74"\ + "\x68\x69\x73\x20\x68\x65\x6C\x70\x20\x73\x63\x72\x65\x65\x6E\x27\x29\x3B\x0A\x20"\ + "\x20\x20\x20\x63\x6F\x6E\x73\x6F\x6C\x65\x2E\x6C\x6F\x67\x28\x27\x20\x20\x20\x20"\ + "\x2D\x2D\x76\x65\x72\x73\x69\x6F\x6E\x20\x20\x20\x20\x20\x20\x20\x44\x69\x73\x70"\ + "\x6C\x61\x79\x20\x76\x65\x72\x73\x69\x6F\x6E\x20\x6E\x75\x6D\x62\x65\x72\x27\x29"\ + "\x3B\x0A\x20\x20\x20\x20\x63\x6F\x6E\x73\x6F\x6C\x65\x2E\x6C\x6F\x67\x28\x29\x3B"\ + "\x0A\x20\x20\x20\x20\x63\x6F\x6E\x73\x6F\x6C\x65\x2E\x6C\x6F\x67\x28\x27\x4A\x53"\ + "\x4D\x69\x6E\x20\x6F\x70\x74\x69\x6F\x6E\x73\x20\x28\x73\x65\x65\x20\x68\x74\x74"\ + "\x70\x3A\x2F\x2F\x66\x6D\x61\x72\x63\x69\x61\x2E\x69\x6E\x66\x6F\x2F\x6A\x73\x6D"\ + "\x69\x6E\x2F\x74\x65\x73\x74\x2E\x68\x74\x6D\x6C\x29\x3A\x27\x29\x3B\x0A\x20\x20"\ + "\x20\x20\x66\x6F\x72\x20\x28\x6F\x70\x74\x20\x69\x6E\x20\x73\x65\x74\x74\x69\x6E"\ + "\x67\x73\x29\x20\x7B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x69\x66\x20\x28\x73\x65"\ + "\x74\x74\x69\x6E\x67\x73\x2E\x68\x61\x73\x4F\x77\x6E\x50\x72\x6F\x70\x65\x72\x74"\ + "\x79\x28\x6F\x70\x74\x29\x29\x20\x7B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20"\ + "\x20\x20\x73\x74\x72\x20\x3D\x20\x27\x20\x20\x20\x20\x2D\x2D\x27\x20\x2B\x20\x6F"\ + "\x70\x74\x3B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x77\x68\x69\x6C"\ + "\x65\x20\x28\x73\x74\x72\x2E\x6C\x65\x6E\x67\x74\x68\x20\x3C\x20\x32\x35\x29\x20"\ + "\x7B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x73\x74"\ + "\x72\x20\x2B\x3D\x20\x27\x20\x27\x3B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20"\ + "\x20\x20\x7D\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x73\x74\x72\x20"\ + "\x2B\x3D\x20\x73\x65\x74\x74\x69\x6E\x67\x73\x5B\x6F\x70\x74\x5D\x3B\x0A\x20\x20"\ + "\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x63\x6F\x6E\x73\x6F\x6C\x65\x2E\x6C\x6F"\ + "\x67\x28\x73\x74\x72\x29\x3B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x7D\x0A\x20\x20"\ + "\x20\x20\x7D\x0A\x20\x20\x20\x20\x63\x6F\x6E\x73\x6F\x6C\x65\x2E\x6C\x6F\x67\x28"\ + "\x29\x3B\x0A\x20\x20\x20\x20\x63\x6F\x6E\x73\x6F\x6C\x65\x2E\x6C\x6F\x67\x28\x27"\ + "\x46\x6F\x72\x20\x6D\x6F\x72\x65\x20\x69\x6E\x66\x6F\x72\x6D\x61\x74\x69\x6F\x6E"\ + "\x2C\x20\x67\x6F\x20\x74\x6F\x20\x68\x74\x74\x70\x3A\x2F\x2F\x66\x6D\x61\x72\x63"\ + "\x69\x61\x2E\x69\x6E\x66\x6F\x2F\x6A\x73\x6D\x69\x6E\x2F\x74\x65\x73\x74\x2E\x68"\ + "\x74\x6D\x6C\x20\x61\x6E\x64\x27\x29\x3B\x0A\x20\x20\x20\x20\x63\x6F\x6E\x73\x6F"\ + "\x6C\x65\x2E\x6C\x6F\x67\x28\x27\x68\x74\x74\x70\x3A\x2F\x2F\x77\x77\x77\x2E\x63"\ + "\x72\x6F\x63\x6B\x66\x6F\x72\x64\x2E\x63\x6F\x6D\x2F\x6A\x61\x76\x61\x73\x63\x72"\ + "\x69\x70\x74\x2F\x6A\x73\x6D\x69\x6E\x2E\x68\x74\x6D\x6C\x2E\x27\x29\x3B\x0A\x20"\ + "\x20\x20\x20\x63\x6F\x6E\x73\x6F\x6C\x65\x2E\x6C\x6F\x67\x28\x29\x3B\x0A\x20\x20"\ + "\x20\x20\x73\x79\x73\x74\x65\x6D\x2E\x65\x78\x69\x74\x28\x2D\x31\x29\x3B\x0A\x7D"\ + "\x0A\x0A\x69\x66\x20\x28\x73\x79\x73\x74\x65\x6D\x2E\x61\x72\x67\x73\x2E\x6C\x65"\ + "\x6E\x67\x74\x68\x20\x3C\x20\x31\x29\x20\x7B\x0A\x20\x20\x20\x20\x68\x65\x6C\x70"\ + "\x28\x29\x3B\x0A\x7D\x0A\x0A\x6C\x65\x76\x65\x6C\x20\x3D\x20\x32\x3B\x0A\x0A\x73"\ + "\x79\x73\x74\x65\x6D\x2E\x61\x72\x67\x73\x2E\x66\x6F\x72\x45\x61\x63\x68\x28\x66"\ + "\x75\x6E\x63\x74\x69\x6F\x6E\x20\x28\x61\x72\x67\x29\x20\x7B\x0A\x20\x20\x20\x20"\ + "\x27\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74\x27\x3B\x0A\x20\x20\x20\x20\x76\x61"\ + "\x72\x20\x6F\x70\x74\x69\x6F\x6E\x2C\x20\x69\x3B\x0A\x20\x20\x20\x20\x69\x66\x20"\ + "\x28\x61\x72\x67\x2E\x6C\x65\x6E\x67\x74\x68\x20\x3E\x20\x32\x29\x20\x7B\x0A\x20"\ + "\x20\x20\x20\x20\x20\x20\x20\x69\x66\x20\x28\x61\x72\x67\x2E\x63\x68\x61\x72\x41"\ + "\x74\x28\x30\x29\x20\x3D\x3D\x3D\x20\x27\x2D\x27\x20\x26\x26\x20\x61\x72\x67\x2E"\ + "\x63\x68\x61\x72\x41\x74\x28\x31\x29\x20\x3D\x3D\x3D\x20\x27\x2D\x27\x29\x20\x7B"\ + "\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x6F\x70\x74\x69\x6F\x6E\x20"\ + "\x3D\x20\x61\x72\x67\x2E\x73\x75\x62\x73\x74\x72\x69\x6E\x67\x28\x32\x2C\x20\x61"\ + "\x72\x67\x2E\x6C\x65\x6E\x67\x74\x68\x29\x3B\x0A\x0A\x20\x20\x20\x20\x20\x20\x20"\ + "\x20\x20\x20\x20\x20\x69\x66\x20\x28\x6F\x70\x74\x69\x6F\x6E\x20\x3D\x3D\x3D\x20"\ + "\x27\x68\x65\x6C\x70\x27\x29\x20\x7B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20"\ + "\x20\x20\x20\x20\x20\x20\x68\x65\x6C\x70\x28\x29\x3B\x0A\x20\x20\x20\x20\x20\x20"\ + "\x20\x20\x20\x20\x20\x20\x7D\x0A\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20"\ + "\x20\x69\x66\x20\x28\x6F\x70\x74\x69\x6F\x6E\x20\x3D\x3D\x3D\x20\x27\x76\x65\x72"\ + "\x73\x69\x6F\x6E\x27\x29\x20\x7B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20"\ + "\x20\x20\x20\x20\x20\x63\x6F\x6E\x73\x6F\x6C\x65\x2E\x6C\x6F\x67\x28\x27\x6A\x73"\ + "\x6D\x69\x6E\x2E\x6A\x73\x20\x65\x64\x69\x74\x69\x6F\x6E\x20\x32\x30\x31\x30\x2F"\ + "\x30\x31\x2F\x31\x35\x2E\x27\x29\x3B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20"\ + "\x20\x20\x20\x20\x20\x20\x73\x79\x73\x74\x65\x6D\x2E\x65\x78\x69\x74\x28\x2D\x31"\ + "\x29\x3B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x7D\x0A\x0A\x20\x20"\ + "\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x69\x66\x20\x28\x21\x73\x65\x74\x74\x69"\ + "\x6E\x67\x73\x2E\x68\x61\x73\x4F\x77\x6E\x50\x72\x6F\x70\x65\x72\x74\x79\x28\x6F"\ + "\x70\x74\x69\x6F\x6E\x29\x29\x20\x7B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20"\ + "\x20\x20\x20\x20\x20\x20\x63\x6F\x6E\x73\x6F\x6C\x65\x2E\x6C\x6F\x67\x28\x27\x55"\ + "\x6E\x6B\x6E\x6F\x77\x6E\x20\x6F\x70\x74\x69\x6F\x6E\x3A\x20\x2D\x2D\x27\x20\x2B"\ + "\x20\x6F\x70\x74\x69\x6F\x6E\x29\x3B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20"\ + "\x20\x20\x20\x20\x20\x20\x63\x6F\x6E\x73\x6F\x6C\x65\x2E\x6C\x6F\x67\x28\x27\x52"\ + "\x75\x6E\x20\x6A\x73\x6D\x69\x6E\x20\x2D\x2D\x68\x65\x6C\x70\x20\x74\x6F\x20\x6C"\ + "\x69\x73\x74\x20\x61\x6C\x6C\x20\x70\x6F\x73\x73\x69\x62\x6C\x65\x20\x6F\x70\x74"\ + "\x69\x6F\x6E\x73\x2E\x27\x29\x3B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20"\ + "\x20\x20\x20\x20\x20\x63\x6F\x6E\x73\x6F\x6C\x65\x2E\x6C\x6F\x67\x28\x29\x3B\x0A"\ + "\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x73\x79\x73\x74"\ + "\x65\x6D\x2E\x65\x78\x69\x74\x28\x2D\x31\x29\x3B\x0A\x20\x20\x20\x20\x20\x20\x20"\ + "\x20\x20\x20\x20\x20\x7D\x0A\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20"\ + "\x69\x66\x20\x28\x6F\x70\x74\x69\x6F\x6E\x20\x3D\x3D\x3D\x20\x27\x61\x67\x67\x72"\ + "\x65\x73\x73\x69\x76\x65\x27\x29\x20\x7B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20"\ + "\x20\x20\x20\x20\x20\x20\x20\x6C\x65\x76\x65\x6C\x20\x3D\x20\x33\x3B\x0A\x20\x20"\ + "\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x7D\x0A\x0A\x20\x20\x20\x20\x20\x20\x20"\ + "\x20\x20\x20\x20\x20\x69\x66\x20\x28\x6F\x70\x74\x69\x6F\x6E\x20\x3D\x3D\x3D\x20"\ + "\x27\x6D\x69\x6E\x69\x6D\x61\x6C\x27\x29\x20\x7B\x0A\x20\x20\x20\x20\x20\x20\x20"\ + "\x20\x20\x20\x20\x20\x20\x20\x20\x20\x6C\x65\x76\x65\x6C\x20\x3D\x20\x31\x3B\x0A"\ + "\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x7D\x0A\x0A\x20\x20\x20\x20\x20"\ + "\x20\x20\x20\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6E\x3B\x0A\x20\x20\x20\x20\x20"\ + "\x20\x20\x20\x7D\x0A\x20\x20\x20\x20\x7D\x0A\x20\x20\x20\x20\x69\x66\x20\x28\x74"\ + "\x79\x70\x65\x6F\x66\x20\x66\x6E\x61\x6D\x65\x20\x21\x3D\x3D\x20\x27\x75\x6E\x64"\ + "\x65\x66\x69\x6E\x65\x64\x27\x29\x20\x7B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x63"\ + "\x6F\x6E\x73\x6F\x6C\x65\x2E\x6C\x6F\x67\x28\x27\x50\x6C\x65\x61\x73\x65\x20\x6F"\ + "\x6E\x6C\x79\x20\x73\x70\x65\x63\x69\x66\x79\x20\x6F\x6E\x65\x20\x66\x69\x6C\x65"\ + "\x6E\x61\x6D\x65\x21\x27\x29\x3B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x63\x6F\x6E"\ + "\x73\x6F\x6C\x65\x2E\x6C\x6F\x67\x28\x29\x3B\x0A\x20\x20\x20\x20\x20\x20\x20\x20"\ + "\x73\x79\x73\x74\x65\x6D\x2E\x65\x78\x69\x74\x28\x2D\x31\x29\x3B\x0A\x20\x20\x20"\ + "\x20\x7D\x0A\x20\x20\x20\x20\x66\x6E\x61\x6D\x65\x20\x3D\x20\x61\x72\x67\x3B\x0A"\ + "\x7D\x29\x3B\x0A\x0A\x0A\x69\x66\x20\x28\x74\x79\x70\x65\x6F\x66\x20\x66\x6E\x61"\ + "\x6D\x65\x20\x3D\x3D\x3D\x20\x27\x75\x6E\x64\x65\x66\x69\x6E\x65\x64\x27\x29\x20"\ + "\x7B\x0A\x20\x20\x20\x20\x68\x65\x6C\x70\x28\x29\x3B\x0A\x7D\x0A\x0A\x74\x72\x79"\ + "\x20\x7B\x0A\x20\x20\x20\x20\x63\x6F\x64\x65\x20\x3D\x20\x73\x79\x73\x74\x65\x6D"\ + "\x2E\x72\x65\x61\x64\x46\x69\x6C\x65\x28\x66\x6E\x61\x6D\x65\x29\x3B\x0A\x20\x20"\ + "\x20\x20\x72\x65\x73\x75\x6C\x74\x20\x3D\x20\x6A\x73\x6D\x69\x6E\x28\x27\x27\x2C"\ + "\x20\x63\x6F\x64\x65\x2C\x20\x6C\x65\x76\x65\x6C\x29\x3B\x0A\x20\x20\x20\x20\x63"\ + "\x6F\x6E\x73\x6F\x6C\x65\x2E\x6C\x6F\x67\x28\x72\x65\x73\x75\x6C\x74\x29\x3B\x0A"\ + "\x7D\x20\x63\x61\x74\x63\x68\x20\x28\x65\x29\x20\x7B\x0A\x20\x20\x20\x20\x63\x6F"\ + "\x6E\x73\x6F\x6C\x65\x2E\x6C\x6F\x67\x28\x65\x29\x3B\x0A\x7D\x0A"; \ No newline at end of file diff --git a/jsmin/package.py b/jsmin/package.py new file mode 100755 index 0000000..4524332 --- /dev/null +++ b/jsmin/package.py @@ -0,0 +1,22 @@ +import textwrap; + +if __name__ == '__main__': + files = [ + 'jsmin.js', + 'Settings.js', + 'CommandLine.js' + ] + body = [] + for file in files: + body.append(open(file, 'r').read()) + s = '\n'.join(body); + scriptfile = open('jsmin_script.js', 'w'); + scriptfile.write(s); + scriptfile.close(); + + s = s.encode("hex").upper(); + t = "".join(["\\x"+x+y for (x,y) in zip(s[0::2], s[1::2])]); + arrayfile = open('jsmin_script.h', 'w'); + a = "static const char jsmin_script[] = \\\n\t\"%s\";"%"\"\\\n\t\"".join(textwrap.wrap(t,80)); + arrayfile.write(a); + arrayfile.close();