From 604a8e5e53cdc7391a502fcabf07e8f1cc2a778c Mon Sep 17 00:00:00 2001 From: Li Jin Date: Wed, 21 Jan 2026 10:05:19 +0800 Subject: Update. --- src/3rdParty/LuaMinify.h | 2514 ----------------------- src/3rdParty/gencode.yue | 26 + src/3rdParty/luaminify.lua | 35 +- src/3rdParty/luaminify_lua.h | 4439 ++++++++++++++++++++++++++++++++++++++++ src/yue.cpp | 208 +- src/yuescript/yue_compiler.cpp | 65 +- src/yuescript/yue_parser.cpp | 90 +- 7 files changed, 4746 insertions(+), 2631 deletions(-) delete mode 100644 src/3rdParty/LuaMinify.h create mode 100755 src/3rdParty/gencode.yue create mode 100644 src/3rdParty/luaminify_lua.h (limited to 'src') diff --git a/src/3rdParty/LuaMinify.h b/src/3rdParty/LuaMinify.h deleted file mode 100644 index f1f496f..0000000 --- a/src/3rdParty/LuaMinify.h +++ /dev/null @@ -1,2514 +0,0 @@ -R"lua_codes( ---[[ -The MIT License (MIT) - -Copyright (c) 2012-2013 Mark Langen, modified by Li Jin 2023 - -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.]] - --- --- Util.lua --- --- Provides some common utilities shared throughout the project. --- - -local function lookupify(tb) - for _, v in pairs(tb) do - tb[v] = true - end - return tb -end - - -local function CountTable(tb) - local c = 0 - for _ in pairs(tb) do c = c + 1 end - return c -end - - -local function PrintTable(tb, atIndent) - if tb.Print then - return tb.Print() - end - atIndent = atIndent or 0 - local useNewlines = (CountTable(tb) > 1) - local baseIndent = string.rep(' ', atIndent+1) - local out = "{"..(useNewlines and '\n' or '') - for k, v in pairs(tb) do - if type(v) ~= 'function' then - --do - out = out..(useNewlines and baseIndent or '') - if type(k) == 'number' then - --nothing to do - elseif type(k) == 'string' and k:match("^[A-Za-z_][A-Za-z0-9_]*$") then - out = out..k.." = " - elseif type(k) == 'string' then - out = out.."[\""..k.."\"] = " - else - out = out.."["..tostring(k).."] = " - end - if type(v) == 'string' then - out = out.."\""..v.."\"" - elseif type(v) == 'number' then - out = out..v - elseif type(v) == 'table' then - out = out..PrintTable(v, atIndent+(useNewlines and 1 or 0)) - else - out = out..tostring(v) - end - if next(tb, k) then - out = out.."," - end - if useNewlines then - out = out..'\n' - end - end - end - out = out..(useNewlines and string.rep(' ', atIndent) or '').."}" - return out -end - - -local blacklist = { - ["do"] = true, - ["if"] = true, - ["in"] = true, - ["or"] = true, - ["for"] = true, - ["and"] = true, - ["not"] = true, - ["end"] = true, - ["nil"] = true -} - -local insert, char = table.insert, string.char - -local chars = {} -for i = 97, 122 do - insert(chars, char(i)) -end -for i = 65, 90 do - insert(chars, char(i)) -end - -local function GetUnique(self) - for x = 1, 52 do - local c = chars[x] - if not blacklist[c] and not self:GetVariable(c) then - return c - end - end - for x = 1, 52 do - for y = 1, 52 do - local c = chars[x]..chars[y] - if not blacklist[c] and not self:GetVariable(c) then - return c - end - end - end - for x = 1, 52 do - for y = 1, 52 do - for z = 1, 52 do - local c = chars[x]..chars[y]..chars[z] - if not blacklist[c] and not self:GetVariable(c) then - return c - end - end - end - end -end - -local Scope = { - new = function(self, parent) - local s = { - Parent = parent, - Locals = { }, - Globals = { }, - oldLocalNamesMap = { }, - oldGlobalNamesMap = { }, - Children = { }, - } - - if parent then - table.insert(parent.Children, s) - end - - return setmetatable(s, { __index = self }) - end, - - AddLocal = function(self, v) - table.insert(self.Locals, v) - end, - - AddGlobal = function(self, v) - table.insert(self.Globals, v) - end, - - CreateLocal = function(self, name) - local v - v = self:GetLocal(name) - if v then return v end - v = { } - v.Scope = self - v.Name = name - v.IsGlobal = false - v.CanRename = true - v.References = 1 - self:AddLocal(v) - return v - end, - - GetLocal = function(self, name) - for k, var in pairs(self.Locals) do - if var.Name == name then return var end - end - - if self.Parent then - return self.Parent:GetLocal(name) - end - end, - - GetOldLocal = function(self, name) - if self.oldLocalNamesMap[name] then - return self.oldLocalNamesMap[name] - end - return self:GetLocal(name) - end, - - mapLocal = function(self, name, var) - self.oldLocalNamesMap[name] = var - end, - - GetOldGlobal = function(self, name) - if self.oldGlobalNamesMap[name] then - return self.oldGlobalNamesMap[name] - end - return self:GetGlobal(name) - end, - - mapGlobal = function(self, name, var) - self.oldGlobalNamesMap[name] = var - end, - - GetOldVariable = function(self, name) - return self:GetOldLocal(name) or self:GetOldGlobal(name) - end, - - RenameLocal = function(self, oldName, newName) - oldName = type(oldName) == 'string' and oldName or oldName.Name - local found = false - local var = self:GetLocal(oldName) - if var then - var.Name = newName - self:mapLocal(oldName, var) - found = true - end - if not found and self.Parent then - self.Parent:RenameLocal(oldName, newName) - end - end, - - RenameGlobal = function(self, oldName, newName) - oldName = type(oldName) == 'string' and oldName or oldName.Name - local found = false - local var = self:GetGlobal(oldName) - if var then - var.Name = newName - self:mapGlobal(oldName, var) - found = true - end - if not found and self.Parent then - self.Parent:RenameGlobal(oldName, newName) - end - end, - - RenameVariable = function(self, oldName, newName) - oldName = type(oldName) == 'string' and oldName or oldName.Name - if self:GetLocal(oldName) then - self:RenameLocal(oldName, newName) - else - self:RenameGlobal(oldName, newName) - end - end, - - GetAllVariables = function(self) - local ret = self:getVars(true) -- down - for k, v in pairs(self:getVars(false)) do -- up - table.insert(ret, v) - end - return ret - end, - - getVars = function(self, top) - local ret = { } - if top then - for k, v in pairs(self.Children) do - for k2, v2 in pairs(v:getVars(true)) do - table.insert(ret, v2) - end - end - else - for k, v in pairs(self.Locals) do - table.insert(ret, v) - end - for k, v in pairs(self.Globals) do - table.insert(ret, v) - end - if self.Parent then - for k, v in pairs(self.Parent:getVars(false)) do - table.insert(ret, v) - end - end - end - return ret - end, - - CreateGlobal = function(self, name) - local v - v = self:GetGlobal(name) - if v then return v end - v = { } - v.Scope = self - v.Name = name - v.IsGlobal = true - v.CanRename = true - v.References = 1 - self:AddGlobal(v) - return v - end, - - GetGlobal = function(self, name) - for k, v in pairs(self.Globals) do - if v.Name == name then return v end - end - - if self.Parent then - return self.Parent:GetGlobal(name) - end - end, - - GetVariable = function(self, name) - return self:GetLocal(name) or self:GetGlobal(name) - end, - - ObfuscateLocals = function(self, recommendedMaxLength, validNameChars) - for i, var in pairs(self.Locals) do - if var.Name == "_ENV" then - self:RenameLocal(var.Name, "_ENV") - else - local id = GetUnique(self) - self:RenameLocal(var.Name, id) - end - end - end -} -)lua_codes" - -R"lua_codes( --- --- ParseLua.lua --- --- The main lua parser and lexer. --- LexLua returns a Lua token stream, with tokens that preserve --- all whitespace formatting information. --- ParseLua returns an AST, internally relying on LexLua. --- - -local LowerChars = lookupify{'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', - 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', - 's', 't', 'u', 'v', 'w', 'x', 'y', 'z'} -local UpperChars = lookupify{'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', - 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', - 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'} -local Digits = lookupify{'0', '1', '2', '3', '4', '5', '6', '7', '8', '9'} -local HexDigits = lookupify{'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', - 'A', 'a', 'B', 'b', 'C', 'c', 'D', 'd', 'E', 'e', 'F', 'f'} - -local Symbols = lookupify{'+', '-', '*', '/', '^', '%', ',', '{', '}', '[', ']', '(', ')', ';', '#'} - -local Keywords = lookupify{ - 'and', 'break', 'do', 'else', 'elseif', - 'end', 'false', 'for', 'function', 'goto', 'if', - 'in', 'local', 'nil', 'not', 'or', 'repeat', - 'return', 'then', 'true', 'until', 'while', -}; - -local function LexLua(src) - --token dump - local tokens = {} - - local st, err = pcall(function() - --line / char / pointer tracking - local p = 1 - local line = 1 - local char = 1 - - --get / peek functions - local function get() - local c = src:sub(p,p) - if c == '\n' then - char = 1 - line = line + 1 - else - char = char + 1 - end - p = p + 1 - return c - end - local function peek(n) - n = n or 0 - return src:sub(p+n,p+n) - end - local function consume(chars) - local c = peek() - for i = 1, #chars do - if c == chars:sub(i,i) then return get() end - end - end - - --shared stuff - local function generateError(err) - return error(">> :"..line..":"..char..": "..err, 0) - end - - local function tryGetLongString() - local start = p - if peek() == '[' then - local equalsCount = 0 - local depth = 1 - while peek(equalsCount+1) == '=' do - equalsCount = equalsCount + 1 - end - if peek(equalsCount+1) == '[' then - --start parsing the string. Strip the starting bit - for _ = 0, equalsCount+1 do get() end - - --get the contents - local contentStart = p - while true do - --check for eof - if peek() == '' then - generateError("Expected `]"..string.rep('=', equalsCount).."]` near .", 3) - end - - --check for the end - local foundEnd = true - if peek() == ']' then - for i = 1, equalsCount do - if peek(i) ~= '=' then foundEnd = false end - end - if peek(equalsCount+1) ~= ']' then - foundEnd = false - end - else - if peek() == '[' then - -- is there an embedded long string? - local embedded = true - for i = 1, equalsCount do - if peek(i) ~= '=' then - embedded = false - break - end - end - if peek(equalsCount + 1) == '[' and embedded then - -- oh look, there was - depth = depth + 1 - for i = 1, (equalsCount + 2) do - get() - end - end - end - foundEnd = false - end - -- - if foundEnd then - depth = depth - 1 - if depth == 0 then - break - else - for i = 1, equalsCount + 2 do - get() - end - end - else - get() - end - end - - --get the interior string - local contentString = src:sub(contentStart, p-1) - - --found the end. Get rid of the trailing bit - for i = 0, equalsCount+1 do get() end - - --get the exterior string - local longString = src:sub(start, p-1) - - --return the stuff - return contentString, longString - else - return nil - end - else - return nil - end - end - - --main token emitting loop - while true do - --get leading whitespace. The leading whitespace will include any comments - --preceding the token. This prevents the parser needing to deal with comments - --separately. - local leading = { } - local leadingWhite = '' - local longStr = false - while true do - local c = peek() - if c == '#' and peek(1) == '!' and line == 1 then - -- #! shebang for linux scripts - get() - get() - leadingWhite = "#!" - while peek() ~= '\n' and peek() ~= '' do - leadingWhite = leadingWhite .. get() - end - local token = { - Type = 'Comment', - CommentType = 'Shebang', - Data = leadingWhite, - Line = line, - Char = char - } - token.Print = function() - return "<"..(token.Type .. string.rep(' ', 7-#token.Type)).." "..(token.Data or '').." >" - end - leadingWhite = "" - table.insert(leading, token) - end - if c == ' ' or c == '\t' then - --whitespace - --leadingWhite = leadingWhite..get() - local c2 = get() -- ignore whitespace - table.insert(leading, { Type = 'Whitespace', Line = line, Char = char, Data = c2 }) - elseif c == '\n' or c == '\r' then - local nl = get() - if leadingWhite ~= "" then - local token = { - Type = 'Comment', - CommentType = longStr and 'LongComment' or 'Comment', - Data = leadingWhite, - Line = line, - Char = char, - } - token.Print = function() - return "<"..(token.Type .. string.rep(' ', 7-#token.Type)).." "..(token.Data or '').." >" - end - table.insert(leading, token) - leadingWhite = "" - end - table.insert(leading, { Type = 'Whitespace', Line = line, Char = char, Data = nl }) - elseif c == '-' and peek(1) == '-' then - --comment - get() - get() - leadingWhite = leadingWhite .. '--' - local _, wholeText = tryGetLongString() - if wholeText then - leadingWhite = leadingWhite..wholeText - longStr = true - else - while peek() ~= '\n' and peek() ~= '' do - leadingWhite = leadingWhite..get() - end - end - else - break - end - end - if leadingWhite ~= "" then - local token = { - Type = 'Comment', - CommentType = longStr and 'LongComment' or 'Comment', - Data = leadingWhite, - Line = line, - Char = char, - } - token.Print = function() - return "<"..(token.Type .. string.rep(' ', 7-#token.Type)).." "..(token.Data or '').." >" - end - table.insert(leading, token) - end - - --get the initial char - local thisLine = line - local thisChar = char - -- local errorAt = ":"..line..":"..char..":> " - local c = peek() - - --symbol to emit - local toEmit = nil - - --branch on type - if c == '' then - --eof - toEmit = { Type = 'Eof' } - - elseif UpperChars[c] or LowerChars[c] or c == '_' then - --ident or keyword - local start = p - repeat - get() - c = peek() - until not (UpperChars[c] or LowerChars[c] or Digits[c] or c == '_') - local dat = src:sub(start, p-1) - if Keywords[dat] then - toEmit = {Type = 'Keyword', Data = dat} - else - toEmit = {Type = 'Ident', Data = dat} - end - - elseif Digits[c] or (peek() == '.' and Digits[peek(1)]) then - --number const - local start = p - if c == '0' and peek(1) == 'x' then - get();get() - while HexDigits[peek()] do get() end - if consume('Pp') then - consume('+-') - while Digits[peek()] do get() end - end - else - while Digits[peek()] do get() end - if consume('.') then - while Digits[peek()] do get() end - end - if consume('Ee') then - consume('+-') - while Digits[peek()] do get() end - end - end - toEmit = {Type = 'Number', Data = src:sub(start, p-1)} - - elseif c == '\'' or c == '\"' then - local start = p - --string const - local delim = get() - local contentStart = p - while true do - local c = get() - if c == '\\' then - get() --get the escape char - elseif c == delim then - break - elseif c == '' then - generateError("Unfinished string near ") - end - end - local content = src:sub(contentStart, p-2) - local constant = src:sub(start, p-1) - toEmit = {Type = 'String', Data = constant, Constant = content} - - elseif c == '[' then - local content, wholetext = tryGetLongString() - if wholetext then - toEmit = {Type = 'String', Data = wholetext, Constant = content} - else - get() - toEmit = {Type = 'Symbol', Data = '['} - end - - elseif consume('>=<') then - if consume('=') then - toEmit = {Type = 'Symbol', Data = c..'='} - else - toEmit = {Type = 'Symbol', Data = c} - end - - elseif consume('~') then - if consume('=') then - toEmit = {Type = 'Symbol', Data = '~='} - else - generateError("Unexpected symbol `~` in source.", 2) - end - - elseif consume('.') then - if consume('.') then - if consume('.') then - toEmit = {Type = 'Symbol', Data = '...'} - else - toEmit = {Type = 'Symbol', Data = '..'} - end - else - toEmit = {Type = 'Symbol', Data = '.'} - end - - elseif consume(':') then - if consume(':') then - toEmit = {Type = 'Symbol', Data = '::'} - else - toEmit = {Type = 'Symbol', Data = ':'} - end - - elseif Symbols[c] then - get() - toEmit = {Type = 'Symbol', Data = c} - - else - local contents, all = tryGetLongString() - if contents then - toEmit = {Type = 'String', Data = all, Constant = contents} - else - generateError("Unexpected Symbol `"..c.."` in source.", 2) - end - end - - --add the emitted symbol, after adding some common data - toEmit.LeadingWhite = leading -- table of leading whitespace/comments - --for k, tok in pairs(leading) do - -- tokens[#tokens + 1] = tok - --end - - toEmit.Line = thisLine - toEmit.Char = thisChar - toEmit.Print = function() - return "<"..(toEmit.Type..string.rep(' ', 7-#toEmit.Type)).." "..(toEmit.Data or '').." >" - end - tokens[#tokens+1] = toEmit - - --halt after eof has been emitted - if toEmit.Type == 'Eof' then break end - end - end) - if not st then - return false, err - end - - --public interface: - local tok = {} - local savedP = {} - local p = 1 - - function tok:getp() - return p - end - - function tok:setp(n) - p = n - end - - function tok:getTokenList() - return tokens - end - - --getters - function tok:Peek(n) - n = n or 0 - return tokens[math.min(#tokens, p+n)] - end - function tok:Get(tokenList) - local t = tokens[p] - p = math.min(p + 1, #tokens) - if tokenList then - table.insert(tokenList, t) - end - return t - end - function tok:Is(t) - return tok:Peek().Type == t - end - - --save / restore points in the stream - function tok:Save() - savedP[#savedP+1] = p - end - function tok:Commit() - savedP[#savedP] = nil - end - function tok:Restore() - p = savedP[#savedP] - savedP[#savedP] = nil - end - - --either return a symbol if there is one, or return true if the requested - --symbol was gotten. - function tok:ConsumeSymbol(symb, tokenList) - local t = self:Peek() - if t.Type == 'Symbol' then - if symb then - if t.Data == symb then - self:Get(tokenList) - return true - else - return nil - end - else - self:Get(tokenList) - return t - end - else - return nil - end - end - - function tok:ConsumeKeyword(kw, tokenList) - local t = self:Peek() - if t.Type == 'Keyword' and t.Data == kw then - self:Get(tokenList) - return true - else - return nil - end - end - - function tok:IsKeyword(kw) - local t = tok:Peek() - return t.Type == 'Keyword' and t.Data == kw - end - - function tok:IsSymbol(s) - local t = tok:Peek() - return t.Type == 'Symbol' and t.Data == s - end - - function tok:IsEof() - return tok:Peek().Type == 'Eof' - end - - return true, tok -end - - -local function ParseLua(src) - local st, tok - if type(src) ~= 'table' then - st, tok = LexLua(src) - else - st, tok = true, src - end - if not st then - return false, tok - end - -- - local function GenerateError(msg) - local err = ">> :"..tok:Peek().Line..":"..tok:Peek().Char..": "..msg.."\n" - --find the line - local lineNum = 0 - if type(src) == 'string' then - for line in src:gmatch("[^\n]*\n?") do - if line:sub(-1,-1) == '\n' then line = line:sub(1,-2) end - lineNum = lineNum+1 - if lineNum == tok:Peek().Line then - err = err..">> `"..line:gsub('\t',' ').."`\n" - for i = 1, tok:Peek().Char do - local c = line:sub(i,i) - if c == '\t' then - err = err..' ' - else - err = err..' ' - end - end - err = err.." ^^^^" - break - end - end - end - return err - end - -- - -- local VarUid = 0 - -- No longer needed: handled in Scopes now local GlobalVarGetMap = {} - -- local VarDigits = {'_', 'a', 'b', 'c', 'd'} - local function CreateScope(parent) - --[[ - local scope = {} - scope.Parent = parent - scope.LocalList = {} - scope.LocalMap = {} - - function scope:ObfuscateVariables() - for _, var in pairs(scope.LocalList) do - local id = "" - repeat - local chars = "QWERTYUIOPASDFGHJKLZXCVBNMqwertyuioplkjhgfdsazxcvbnm_" - local chars2 = "QWERTYUIOPASDFGHJKLZXCVBNMqwertyuioplkjhgfdsazxcvbnm_1234567890" - local n = math.random(1, #chars) - id = id .. chars:sub(n, n) - for i = 1, math.random(0,20) do - local n = math.random(1, #chars2) - id = id .. chars2:sub(n, n) - end - until not GlobalVarGetMap[id] and not parent:GetLocal(id) and not scope.LocalMap[id] - var.Name = id - scope.LocalMap[id] = var - end - end - - scope.RenameVars = scope.ObfuscateVariables - - -- Renames a variable from this scope and down. - -- Does not rename global variables. - function scope:RenameVariable(old, newName) - if type(old) == "table" then -- its (theoretically) an AstNode variable - old = old.Name - end - for _, var in pairs(scope.LocalList) do - if var.Name == old then - var.Name = newName - scope.LocalMap[newName] = var - end - end - end - - function scope:GetLocal(name) - --first, try to get my variable - local my = scope.LocalMap[name] - if my then return my end - - --next, try parent - if scope.Parent then - local par = scope.Parent:GetLocal(name) - if par then return par end - end - - return nil - end - - function scope:CreateLocal(name) - --create my own var - local my = {} - my.Scope = scope - my.Name = name - my.CanRename = true - -- - scope.LocalList[#scope.LocalList+1] = my - scope.LocalMap[name] = my - -- - return my - end]] - local scope = Scope:new(parent) - scope.RenameVars = scope.ObfuscateLocals - scope.ObfuscateVariables = scope.ObfuscateLocals - scope.Print = function() return "" end - return scope - end - - local ParseExpr - local ParseStatementList - local ParseSimpleExpr, - ParseSubExpr, - ParsePrimaryExpr, - ParseSuffixedExpr - - local function ParseFunctionArgsAndBody(scope, tokenList) - local funcScope = CreateScope(scope) - if not tok:ConsumeSymbol('(', tokenList) then - return false, GenerateError("`(` expected.") - end - - --arg list - local argList = {} - local isVarArg = false - while not tok:ConsumeSymbol(')', tokenList) do - if tok:Is('Ident') then - local arg = funcScope:CreateLocal(tok:Get(tokenList).Data) - argList[#argList+1] = arg - if not tok:ConsumeSymbol(',', tokenList) then - if tok:ConsumeSymbol(')', tokenList) then - break - else - return false, GenerateError("`)` expected.") - end - end - elseif tok:ConsumeSymbol('...', tokenList) then - isVarArg = true - if not tok:ConsumeSymbol(')', tokenList) then - return false, GenerateError("`...` must be the last argument of a function.") - end - break - else - return false, GenerateError("Argument name or `...` expected") - end - end - - --body - local st, body = ParseStatementList(funcScope) - if not st then return false, body end - - --end - if not tok:ConsumeKeyword('end', tokenList) then - return false, GenerateError("`end` expected after function body") - end - local nodeFunc = {} - nodeFunc.AstType = 'Function' - nodeFunc.Scope = funcScope - nodeFunc.Arguments = argList - nodeFunc.Body = body - nodeFunc.VarArg = isVarArg - nodeFunc.Tokens = tokenList - -- - return true, nodeFunc - end -)lua_codes" - -R"lua_codes( - function ParsePrimaryExpr(scope) - local tokenList = {} - - if tok:ConsumeSymbol('(', tokenList) then - local st, ex = ParseExpr(scope) - if not st then return false, ex end - if not tok:ConsumeSymbol(')', tokenList) then - return false, GenerateError("`)` Expected.") - end - if false then - --save the information about parenthesized expressions somewhere - ex.ParenCount = (ex.ParenCount or 0) + 1 - return true, ex - else - local parensExp = {} - parensExp.AstType = 'Parentheses' - parensExp.Inner = ex - parensExp.Tokens = tokenList - return true, parensExp - end - - elseif tok:Is('Ident') then - local id = tok:Get(tokenList) - local var = scope:GetLocal(id.Data) - if not var then - var = scope:GetGlobal(id.Data) - if not var then - var = scope:CreateGlobal(id.Data) - else - var.References = var.References + 1 - end - else - var.References = var.References + 1 - end - -- - local nodePrimExp = {} - nodePrimExp.AstType = 'VarExpr' - nodePrimExp.Name = id.Data - nodePrimExp.Variable = var - nodePrimExp.Tokens = tokenList - -- - return true, nodePrimExp - else - return false, GenerateError("primary expression expected") - end - end - - function ParseSuffixedExpr(scope, onlyDotColon) - --base primary expression - local st, prim = ParsePrimaryExpr(scope) - if not st then return false, prim end - -- - while true do - local tokenList = {} - - if tok:IsSymbol('.') or tok:IsSymbol(':') then - local symb = tok:Get(tokenList).Data - if not tok:Is('Ident') then - return false, GenerateError(" expected.") - end - local id = tok:Get(tokenList) - local nodeIndex = {} - nodeIndex.AstType = 'MemberExpr' - nodeIndex.Base = prim - nodeIndex.Indexer = symb - nodeIndex.Ident = id - nodeIndex.Tokens = tokenList - -- - prim = nodeIndex - - elseif not onlyDotColon and tok:ConsumeSymbol('[', tokenList) then - local st, ex = ParseExpr(scope) - if not st then return false, ex end - if not tok:ConsumeSymbol(']', tokenList) then - return false, GenerateError("`]` expected.") - end - local nodeIndex = {} - nodeIndex.AstType = 'IndexExpr' - nodeIndex.Base = prim - nodeIndex.Index = ex - nodeIndex.Tokens = tokenList - -- - prim = nodeIndex - - elseif not onlyDotColon and tok:ConsumeSymbol('(', tokenList) then - local args = {} - while not tok:ConsumeSymbol(')', tokenList) do - local st, ex = ParseExpr(scope) - if not st then return false, ex end - args[#args+1] = ex - if not tok:ConsumeSymbol(',', tokenList) then - if tok:ConsumeSymbol(')', tokenList) then - break - else - return false, GenerateError("`)` Expected.") - end - end - end - local nodeCall = {} - nodeCall.AstType = 'CallExpr' - nodeCall.Base = prim - nodeCall.Arguments = args - nodeCall.Tokens = tokenList - -- - prim = nodeCall - - elseif not onlyDotColon and tok:Is('String') then - --string call - local nodeCall = {} - nodeCall.AstType = 'StringCallExpr' - nodeCall.Base = prim - nodeCall.Arguments = { tok:Get(tokenList) } - nodeCall.Tokens = tokenList - -- - prim = nodeCall - - elseif not onlyDotColon and tok:IsSymbol('{') then - --table call - local st, ex = ParseSimpleExpr(scope) - -- FIX: ParseExpr(scope) parses the table AND and any following binary expressions. - -- We just want the table - if not st then return false, ex end - local nodeCall = {} - nodeCall.AstType = 'TableCallExpr' - nodeCall.Base = prim - nodeCall.Arguments = { ex } - nodeCall.Tokens = tokenList - -- - prim = nodeCall - - else - break - end - end - return true, prim - end - - - function ParseSimpleExpr(scope) - local tokenList = {} - - if tok:Is('Number') then - local nodeNum = {} - nodeNum.AstType = 'NumberExpr' - nodeNum.Value = tok:Get(tokenList) - nodeNum.Tokens = tokenList - return true, nodeNum - - elseif tok:Is('String') then - local nodeStr = {} - nodeStr.AstType = 'StringExpr' - nodeStr.Value = tok:Get(tokenList) - nodeStr.Tokens = tokenList - return true, nodeStr - - elseif tok:ConsumeKeyword('nil', tokenList) then - local nodeNil = {} - nodeNil.AstType = 'NilExpr' - nodeNil.Tokens = tokenList - return true, nodeNil - - elseif tok:IsKeyword('false') or tok:IsKeyword('true') then - local nodeBoolean = {} - nodeBoolean.AstType = 'BooleanExpr' - nodeBoolean.Value = (tok:Get(tokenList).Data == 'true') - nodeBoolean.Tokens = tokenList - return true, nodeBoolean - - elseif tok:ConsumeSymbol('...', tokenList) then - local nodeDots = {} - nodeDots.AstType = 'DotsExpr' - nodeDots.Tokens = tokenList - return true, nodeDots - - elseif tok:ConsumeSymbol('{', tokenList) then - local v = {} - v.AstType = 'ConstructorExpr' - v.EntryList = {} - -- - while true do - if tok:IsSymbol('[', tokenList) then - --key - tok:Get(tokenList) - local st, key = ParseExpr(scope) - if not st then - return false, GenerateError("Key Expression Expected") - end - if not tok:ConsumeSymbol(']', tokenList) then - return false, GenerateError("`]` Expected") - end - if not tok:ConsumeSymbol('=', tokenList) then - return false, GenerateError("`=` Expected") - end - local st, value = ParseExpr(scope) - if not st then - return false, GenerateError("Value Expression Expected") - end - v.EntryList[#v.EntryList+1] = { - Type = 'Key'; - Key = key; - Value = value; - } - - elseif tok:Is('Ident') then - --value or key - local lookahead = tok:Peek(1) - if lookahead.Type == 'Symbol' and lookahead.Data == '=' then - --we are a key - local key = tok:Get(tokenList) - if not tok:ConsumeSymbol('=', tokenList) then - return false, GenerateError("`=` Expected") - end - local st, value = ParseExpr(scope) - if not st then - return false, GenerateError("Value Expression Expected") - end - v.EntryList[#v.EntryList+1] = { - Type = 'KeyString'; - Key = key.Data; - Value = value; - } - - else - --we are a value - local st, value = ParseExpr(scope) - if not st then - return false, GenerateError("Value Exected") - end - v.EntryList[#v.EntryList+1] = { - Type = 'Value'; - Value = value; - } - - end - elseif tok:ConsumeSymbol('}', tokenList) then - break - - else - --value - local st, value = ParseExpr(scope) - v.EntryList[#v.EntryList+1] = { - Type = 'Value'; - Value = value; - } - if not st then - return false, GenerateError("Value Expected") - end - end - - if tok:ConsumeSymbol(';', tokenList) or tok:ConsumeSymbol(',', tokenList) then - --all is good - elseif tok:ConsumeSymbol('}', tokenList) then - break - else - return false, GenerateError("`}` or table entry Expected") - end - end - v.Tokens = tokenList - return true, v - - elseif tok:ConsumeKeyword('function', tokenList) then - local st, func = ParseFunctionArgsAndBody(scope, tokenList) - if not st then return false, func end - -- - func.IsLocal = true - return true, func - - else - return ParseSuffixedExpr(scope) - end - end - - - local unops = lookupify{'-', 'not', '#'} - local unopprio = 8 - local priority = { - ['+'] = {6,6}; - ['-'] = {6,6}; - ['%'] = {7,7}; - ['/'] = {7,7}; - ['*'] = {7,7}; - ['^'] = {10,9}; - ['..'] = {5,4}; - ['=='] = {3,3}; - ['<'] = {3,3}; - ['<='] = {3,3}; - ['~='] = {3,3}; - ['>'] = {3,3}; - ['>='] = {3,3}; - ['and'] = {2,2}; - ['or'] = {1,1}; - } - function ParseSubExpr(scope, level) - --base item, possibly with unop prefix - local st, exp - if unops[tok:Peek().Data] then - local tokenList = {} - local op = tok:Get(tokenList).Data - st, exp = ParseSubExpr(scope, unopprio) - if not st then return false, exp end - local nodeEx = {} - nodeEx.AstType = 'UnopExpr' - nodeEx.Rhs = exp - nodeEx.Op = op - nodeEx.OperatorPrecedence = unopprio - nodeEx.Tokens = tokenList - exp = nodeEx - else - st, exp = ParseSimpleExpr(scope) - if not st then return false, exp end - end - - --next items in chain - while true do - local prio = priority[tok:Peek().Data] - if prio and prio[1] > level then - local tokenList = {} - local op = tok:Get(tokenList).Data - local st, rhs = ParseSubExpr(scope, prio[2]) - if not st then return false, rhs end - local nodeEx = {} - nodeEx.AstType = 'BinopExpr' - nodeEx.Lhs = exp - nodeEx.Op = op - nodeEx.OperatorPrecedence = prio[1] - nodeEx.Rhs = rhs - nodeEx.Tokens = tokenList - -- - exp = nodeEx - else - break - end - end - - return true, exp - end - - - ParseExpr = function(scope) - return ParseSubExpr(scope, 0) - end -)lua_codes" - -R"lua_codes( - local function ParseStatement(scope) - local stat = nil - local tokenList = {} - if tok:ConsumeKeyword('if', tokenList) then - --setup - local nodeIfStat = {} - nodeIfStat.AstType = 'IfStatement' - nodeIfStat.Clauses = {} - - --clauses - repeat - local st, nodeCond = ParseExpr(scope) - if not st then return false, nodeCond end - if not tok:ConsumeKeyword('then', tokenList) then - return false, GenerateError("`then` expected.") - end - if tok:IsSymbol(';') then - tok:Get() - end - local st, nodeBody = ParseStatementList(scope) - if not st then return false, nodeBody end - nodeIfStat.Clauses[#nodeIfStat.Clauses+1] = { - Condition = nodeCond; - Body = nodeBody; - } - until not tok:ConsumeKeyword('elseif', tokenList) - - --else clause - if tok:ConsumeKeyword('else', tokenList) then - local st, nodeBody = ParseStatementList(scope) - if not st then return false, nodeBody end - nodeIfStat.Clauses[#nodeIfStat.Clauses+1] = { - Body = nodeBody; - } - end - - --end - if not tok:ConsumeKeyword('end', tokenList) then - return false, GenerateError("`end` expected.") - end - - nodeIfStat.Tokens = tokenList - stat = nodeIfStat - - elseif tok:ConsumeKeyword('while', tokenList) then - --setup - local nodeWhileStat = {} - nodeWhileStat.AstType = 'WhileStatement' - - --condition - local st, nodeCond = ParseExpr(scope) - if not st then return false, nodeCond end - - --do - if not tok:ConsumeKeyword('do', tokenList) then - return false, GenerateError("`do` expected.") - end - - --body - local st, nodeBody = ParseStatementList(scope) - if not st then return false, nodeBody end - - --end - if not tok:ConsumeKeyword('end', tokenList) then - return false, GenerateError("`end` expected.") - end - - --return - nodeWhileStat.Condition = nodeCond - nodeWhileStat.Body = nodeBody - nodeWhileStat.Tokens = tokenList - stat = nodeWhileStat - - elseif tok:ConsumeKeyword('do', tokenList) then - --do block - local st, nodeBlock = ParseStatementList(scope) - if not st then return false, nodeBlock end - if not tok:ConsumeKeyword('end', tokenList) then - return false, GenerateError("`end` expected.") - end - - local nodeDoStat = {} - nodeDoStat.AstType = 'DoStatement' - nodeDoStat.Body = nodeBlock - nodeDoStat.Tokens = tokenList - stat = nodeDoStat - - elseif tok:ConsumeKeyword('for', tokenList) then - --for block - if not tok:Is('Ident') then - return false, GenerateError(" expected.") - end - local baseVarName = tok:Get(tokenList) - if tok:ConsumeSymbol('=', tokenList) then - --numeric for - local forScope = CreateScope(scope) - local forVar = forScope:CreateLocal(baseVarName.Data) - -- - local st, startEx = ParseExpr(scope) - if not st then return false, startEx end - if not tok:ConsumeSymbol(',', tokenList) then - return false, GenerateError("`,` Expected") - end - local st, endEx = ParseExpr(scope) - if not st then return false, endEx end - local st, stepEx; - if tok:ConsumeSymbol(',', tokenList) then - st, stepEx = ParseExpr(scope) - if not st then return false, stepEx end - end - if not tok:ConsumeKeyword('do', tokenList) then - return false, GenerateError("`do` expected") - end - -- - local st, body = ParseStatementList(forScope) - if not st then return false, body end - if not tok:ConsumeKeyword('end', tokenList) then - return false, GenerateError("`end` expected") - end - -- - local nodeFor = {} - nodeFor.AstType = 'NumericForStatement' - nodeFor.Scope = forScope - nodeFor.Variable = forVar - nodeFor.Start = startEx - nodeFor.End = endEx - nodeFor.Step = stepEx - nodeFor.Body = body - nodeFor.Tokens = tokenList - stat = nodeFor - else - --generic for - local forScope = CreateScope(scope) - -- - local varList = { forScope:CreateLocal(baseVarName.Data) } - while tok:ConsumeSymbol(',', tokenList) do - if not tok:Is('Ident') then - return false, GenerateError("for variable expected.") - end - varList[#varList+1] = forScope:CreateLocal(tok:Get(tokenList).Data) - end - if not tok:ConsumeKeyword('in', tokenList) then - return false, GenerateError("`in` expected.") - end - local generators = {} - local st, firstGenerator = ParseExpr(scope) - if not st then return false, firstGenerator end - generators[#generators+1] = firstGenerator - while tok:ConsumeSymbol(',', tokenList) do - local st, gen = ParseExpr(scope) - if not st then return false, gen end - generators[#generators+1] = gen - end - if not tok:ConsumeKeyword('do', tokenList) then - return false, GenerateError("`do` expected.") - end - local st, body = ParseStatementList(forScope) - if not st then return false, body end - if not tok:ConsumeKeyword('end', tokenList) then - return false, GenerateError("`end` expected.") - end - -- - local nodeFor = {} - nodeFor.AstType = 'GenericForStatement' - nodeFor.Scope = forScope - nodeFor.VariableList = varList - nodeFor.Generators = generators - nodeFor.Body = body - nodeFor.Tokens = tokenList - stat = nodeFor - end - - elseif tok:ConsumeKeyword('repeat', tokenList) then - local st, body = ParseStatementList(scope) - if not st then return false, body end - -- - if not tok:ConsumeKeyword('until', tokenList) then - return false, GenerateError("`until` expected.") - end - -- FIX: Used to parse in parent scope - -- Now parses in repeat scope - local st, cond = ParseExpr(body.Scope) - if not st then return false, cond end - -- - local nodeRepeat = {} - nodeRepeat.AstType = 'RepeatStatement' - nodeRepeat.Condition = cond - nodeRepeat.Body = body - nodeRepeat.Tokens = tokenList - stat = nodeRepeat - - elseif tok:ConsumeKeyword('function', tokenList) then - if not tok:Is('Ident') then - return false, GenerateError("Function name expected") - end - local st, name = ParseSuffixedExpr(scope, true) --true => only dots and colons - if not st then return false, name end - -- - local st, func = ParseFunctionArgsAndBody(scope, tokenList) - if not st then return false, func end - -- - func.IsLocal = false - func.Name = name - stat = func - - elseif tok:ConsumeKeyword('local', tokenList) then - if tok:Is('Ident') then - local varList, attrList = {}, {} - repeat - if not tok:Is('Ident') then - return false, GenerateError("local var name expected") - end - varList[#varList+1] = tok:Get(tokenList).Data - if tok:ConsumeSymbol('<', tokenList) then - if not tok:Is('Ident') then - return false, GenerateError("attrib name expected") - end - attrList[#attrList+1] = tok:Get(tokenList).Data - if not tok:ConsumeSymbol('>', tokenList) then - return false, GenerateError("missing '>' to close attrib name") - end - else - attrList[#attrList+1] = false - end - until not tok:ConsumeSymbol(',', tokenList) - - local initList = {} - if tok:ConsumeSymbol('=', tokenList) then - repeat - local st, ex = ParseExpr(scope) - if not st then return false, ex end - initList[#initList+1] = ex - until not tok:ConsumeSymbol(',', tokenList) - end - - --now patch var list - --we can't do this before getting the init list, because the init list does not - --have the locals themselves in scope. - for i, v in pairs(varList) do - varList[i] = scope:CreateLocal(v) - end - - local nodeLocal = {} - nodeLocal.AstType = 'LocalStatement' - nodeLocal.LocalList = varList - nodeLocal.AttrList = attrList - nodeLocal.InitList = initList - nodeLocal.Tokens = tokenList - -- - stat = nodeLocal - - elseif tok:ConsumeKeyword('function', tokenList) then - if not tok:Is('Ident') then - return false, GenerateError("Function name expected") - end - local name = tok:Get(tokenList).Data - local localVar = scope:CreateLocal(name) - -- - local st, func = ParseFunctionArgsAndBody(scope, tokenList) - if not st then return false, func end - -- - func.Name = localVar - func.IsLocal = true - stat = func - - else - return false, GenerateError("local var or function def expected") - end - - elseif tok:ConsumeSymbol('::', tokenList) then - if not tok:Is('Ident') then - return false, GenerateError('Label name expected') - end - local label = tok:Get(tokenList).Data - if not tok:ConsumeSymbol('::', tokenList) then - return false, GenerateError("`::` expected") - end - local nodeLabel = {} - nodeLabel.AstType = 'LabelStatement' - nodeLabel.Label = label - nodeLabel.Tokens = tokenList - stat = nodeLabel - - elseif tok:ConsumeKeyword('return', tokenList) then - local exList = {} - if not tok:IsKeyword('end') then - local st, firstEx = ParseExpr(scope) - if st then - exList[1] = firstEx - while tok:ConsumeSymbol(',', tokenList) do - local st, ex = ParseExpr(scope) - if not st then return false, ex end - exList[#exList+1] = ex - end - end - end - - local nodeReturn = {} - nodeReturn.AstType = 'ReturnStatement' - nodeReturn.Arguments = exList - nodeReturn.Tokens = tokenList - stat = nodeReturn - - elseif tok:ConsumeKeyword('break', tokenList) then - local nodeBreak = {} - nodeBreak.AstType = 'BreakStatement' - nodeBreak.Tokens = tokenList - stat = nodeBreak - - elseif tok:ConsumeKeyword('goto', tokenList) then - if not tok:Is('Ident') then - return false, GenerateError("Label expected") - end - local label = tok:Get(tokenList).Data - local nodeGoto = {} - nodeGoto.AstType = 'GotoStatement' - nodeGoto.Label = label - nodeGoto.Tokens = tokenList - stat = nodeGoto - - else - --statementParseExpr - local st, suffixed = ParseSuffixedExpr(scope) - if not st then return false, suffixed end - - --assignment or call? - if tok:IsSymbol(',') or tok:IsSymbol('=') then - --check that it was not parenthesized, making it not an lvalue - if (suffixed.ParenCount or 0) > 0 then - return false, GenerateError("Can not assign to parenthesized expression, is not an lvalue") - end - - --more processing needed - local lhs = { suffixed } - while tok:ConsumeSymbol(',', tokenList) do - local st, lhsPart = ParseSuffixedExpr(scope) - if not st then return false, lhsPart end - lhs[#lhs+1] = lhsPart - end - - --equals - if not tok:ConsumeSymbol('=', tokenList) then - return false, GenerateError("`=` Expected.") - end - - --rhs - local rhs = {} - local st, firstRhs = ParseExpr(scope) - if not st then return false, firstRhs end - rhs[1] = firstRhs - while tok:ConsumeSymbol(',', tokenList) do - local st, rhsPart = ParseExpr(scope) - if not st then return false, rhsPart end - rhs[#rhs+1] = rhsPart - end - - --done - local nodeAssign = {} - nodeAssign.AstType = 'AssignmentStatement' - nodeAssign.Lhs = lhs - nodeAssign.Rhs = rhs - nodeAssign.Tokens = tokenList - stat = nodeAssign - - elseif suffixed.AstType == 'CallExpr' or - suffixed.AstType == 'TableCallExpr' or - suffixed.AstType == 'StringCallExpr' - then - --it's a call statement - local nodeCall = {} - nodeCall.AstType = 'CallStatement' - nodeCall.Expression = suffixed - nodeCall.Tokens = tokenList - stat = nodeCall - else - return false, GenerateError("Assignment Statement Expected") - end - end - - if tok:IsSymbol(';') then - stat.Semicolon = tok:Get( stat.Tokens ) - end - return true, stat - end - - - local statListCloseKeywords = lookupify{'end', 'else', 'elseif', 'until'} - - ParseStatementList = function(scope) - local nodeStatlist = {} - nodeStatlist.Scope = CreateScope(scope) - nodeStatlist.AstType = 'Statlist' - nodeStatlist.Body = { } - nodeStatlist.Tokens = { } - -- - --local stats = {} - -- - while not statListCloseKeywords[tok:Peek().Data] and not tok:IsEof() do - local st, nodeStatement = ParseStatement(nodeStatlist.Scope) - if not st then return false, nodeStatement end - --stats[#stats+1] = nodeStatement - nodeStatlist.Body[#nodeStatlist.Body + 1] = nodeStatement - end - - if tok:IsEof() then - local nodeEof = {} - nodeEof.AstType = 'Eof' - nodeEof.Tokens = { tok:Get() } - nodeStatlist.Body[#nodeStatlist.Body + 1] = nodeEof - end - - -- - --nodeStatlist.Body = stats - return true, nodeStatlist - end - - - local function mainfunc() - local topScope = CreateScope() - return ParseStatementList(topScope) - end - - local st, main = mainfunc() - --print("Last Token: "..PrintTable(tok:Peek())) - return st, main -end -)lua_codes" - -R"lua_codes( --- --- FormatMini.lua --- --- Returns the minified version of an AST. Operations which are performed: --- - All comments and whitespace are ignored --- - All local variables are renamed --- - -local function Format_Mini(ast) - local formatStatlist, formatExpr; - --local count = 0 - -- - local function joinStatementsSafe(a, b, sep) - --print(a, b) - --[[ - if count > 150 then - count = 0 - return a.."\n"..b - end]] - sep = sep or ' ' - if sep == ';' then - local token = a:match("([%w_]+)%s*$") - if token == "then" or token == "do" then - sep = ' ' - end - end - local aa, bb = a:sub(-1,-1), b:sub(1,1) - if UpperChars[aa] or LowerChars[aa] or aa == '_' then - if not (UpperChars[bb] or LowerChars[bb] or bb == '_' or Digits[bb]) then - --bb is a symbol, can join without sep - return a..b - elseif bb == '(' then - --prevent ambiguous syntax - return a..sep..b - else - return a..sep..b - end - elseif Digits[aa] then - if bb == '(' then - --can join statements directly - return a..b - elseif Symbols[bb] then - return a .. b - else - return a..sep..b - end - elseif aa == '' then - return a..b - else - if bb == '(' then - --don't want to accidentally call last statement, can't join directly - return a..sep..b - else - --print("asdf", '"'..a..'"', '"'..b..'"') - return a..b - end - end - end - - formatExpr = function(expr, precedence) - local precedence = precedence or 0 - local currentPrecedence = 0 - local skipParens = false - local out = "" - if expr.AstType == 'VarExpr' then - if expr.Variable then - out = out..expr.Variable.Name - else - out = out..expr.Name - end - - elseif expr.AstType == 'NumberExpr' then - out = out..expr.Value.Data - - elseif expr.AstType == 'StringExpr' then - out = out..expr.Value.Data - - elseif expr.AstType == 'BooleanExpr' then - out = out..tostring(expr.Value) - - elseif expr.AstType == 'NilExpr' then - out = joinStatementsSafe(out, "nil") - - elseif expr.AstType == 'BinopExpr' then - currentPrecedence = expr.OperatorPrecedence - out = joinStatementsSafe(out, formatExpr(expr.Lhs, currentPrecedence)) - out = joinStatementsSafe(out, expr.Op) - out = joinStatementsSafe(out, formatExpr(expr.Rhs)) - if expr.Op == '^' or expr.Op == '..' then - currentPrecedence = currentPrecedence - 1 - end - - if currentPrecedence < precedence then - skipParens = false - else - skipParens = true - end - --print(skipParens, precedence, currentPrecedence) - elseif expr.AstType == 'UnopExpr' then - out = joinStatementsSafe(out, expr.Op) - out = joinStatementsSafe(out, formatExpr(expr.Rhs)) - - elseif expr.AstType == 'DotsExpr' then - out = out.."..." - - elseif expr.AstType == 'CallExpr' then - out = out..formatExpr(expr.Base) - out = out.."(" - for i = 1, #expr.Arguments do - out = out..formatExpr(expr.Arguments[i]) - if i ~= #expr.Arguments then - out = out.."," - end - end - out = out..")" - - elseif expr.AstType == 'TableCallExpr' then - out = out..formatExpr(expr.Base) - out = out..formatExpr(expr.Arguments[1]) - - elseif expr.AstType == 'StringCallExpr' then - out = out..formatExpr(expr.Base) - out = out..expr.Arguments[1].Data - - elseif expr.AstType == 'IndexExpr' then - out = out..formatExpr(expr.Base).."["..formatExpr(expr.Index).."]" - - elseif expr.AstType == 'MemberExpr' then - out = out..formatExpr(expr.Base)..expr.Indexer..expr.Ident.Data - - elseif expr.AstType == 'Function' then - expr.Scope:ObfuscateVariables() - out = out.."function(" - if #expr.Arguments > 0 then - for i = 1, #expr.Arguments do - out = out..expr.Arguments[i].Name - if i ~= #expr.Arguments then - out = out.."," - elseif expr.VarArg then - out = out..",..." - end - end - elseif expr.VarArg then - out = out.."..." - end - out = out..")" - out = joinStatementsSafe(out, formatStatlist(expr.Body)) - out = joinStatementsSafe(out, "end") - - elseif expr.AstType == 'ConstructorExpr' then - out = out.."{" - for i = 1, #expr.EntryList do - local entry = expr.EntryList[i] - if entry.Type == 'Key' then - out = out.."["..formatExpr(entry.Key).."]="..formatExpr(entry.Value) - elseif entry.Type == 'Value' then - out = out..formatExpr(entry.Value) - elseif entry.Type == 'KeyString' then - out = out..entry.Key.."="..formatExpr(entry.Value) - end - if i ~= #expr.EntryList then - out = out.."," - end - end - out = out.."}" - - elseif expr.AstType == 'Parentheses' then - out = out.."("..formatExpr(expr.Inner)..")" - - end - --print(">>", skipParens, expr.ParenCount, out) - if not skipParens then - --print("hehe") - out = string.rep('(', expr.ParenCount or 0) .. out - out = out .. string.rep(')', expr.ParenCount or 0) - --print("", out) - end - --count = count + #out - return --[[print(out) or]] out - end - - local formatStatement = function(statement) - local out = '' - if statement.AstType == 'AssignmentStatement' then - for i = 1, #statement.Lhs do - out = out..formatExpr(statement.Lhs[i]) - if i ~= #statement.Lhs then - out = out.."," - end - end - if #statement.Rhs > 0 then - out = out.."=" - for i = 1, #statement.Rhs do - out = out..formatExpr(statement.Rhs[i]) - if i ~= #statement.Rhs then - out = out.."," - end - end - end - - elseif statement.AstType == 'CallStatement' then - out = formatExpr(statement.Expression) - - elseif statement.AstType == 'LocalStatement' then - out = out.."local " - for i = 1, #statement.LocalList do - out = out..statement.LocalList[i].Name - if statement.AttrList[i] then - out = out.."<"..statement.AttrList[i]..">" - if i == #statement.LocalList then - out = out.." " - end - end - if i ~= #statement.LocalList then - out = out.."," - end - end - if #statement.InitList > 0 then - out = out.."=" - for i = 1, #statement.InitList do - out = out..formatExpr(statement.InitList[i]) - if i ~= #statement.InitList then - out = out.."," - end - end - end - - elseif statement.AstType == 'IfStatement' then - out = joinStatementsSafe("if", formatExpr(statement.Clauses[1].Condition)) - out = joinStatementsSafe(out, "then") - out = joinStatementsSafe(out, formatStatlist(statement.Clauses[1].Body)) - for i = 2, #statement.Clauses do - local st = statement.Clauses[i] - if st.Condition then - out = joinStatementsSafe(out, "elseif") - out = joinStatementsSafe(out, formatExpr(st.Condition)) - out = joinStatementsSafe(out, "then") - else - out = joinStatementsSafe(out, "else") - end - out = joinStatementsSafe(out, formatStatlist(st.Body)) - end - out = joinStatementsSafe(out, "end") - - elseif statement.AstType == 'WhileStatement' then - out = joinStatementsSafe("while", formatExpr(statement.Condition)) - out = joinStatementsSafe(out, "do") - out = joinStatementsSafe(out, formatStatlist(statement.Body)) - out = joinStatementsSafe(out, "end") - - elseif statement.AstType == 'DoStatement' then - out = joinStatementsSafe(out, "do") - out = joinStatementsSafe(out, formatStatlist(statement.Body)) - out = joinStatementsSafe(out, "end") - - elseif statement.AstType == 'ReturnStatement' then - out = "return" - for i = 1, #statement.Arguments do - out = joinStatementsSafe(out, formatExpr(statement.Arguments[i])) - if i ~= #statement.Arguments then - out = out.."," - end - end - - elseif statement.AstType == 'BreakStatement' then - out = "break" - - elseif statement.AstType == 'RepeatStatement' then - out = "repeat" - out = joinStatementsSafe(out, formatStatlist(statement.Body)) - out = joinStatementsSafe(out, "until") - out = joinStatementsSafe(out, formatExpr(statement.Condition)) - - elseif statement.AstType == 'Function' then - statement.Scope:ObfuscateVariables() - if statement.IsLocal then - out = "local" - end - out = joinStatementsSafe(out, "function ") - if statement.IsLocal then - out = out..statement.Name.Name - else - out = out..formatExpr(statement.Name) - end - out = out.."(" - if #statement.Arguments > 0 then - for i = 1, #statement.Arguments do - out = out..statement.Arguments[i].Name - if i ~= #statement.Arguments then - out = out.."," - elseif statement.VarArg then - --print("Apply vararg") - out = out..",..." - end - end - elseif statement.VarArg then - out = out.."..." - end - out = out..")" - out = joinStatementsSafe(out, formatStatlist(statement.Body)) - out = joinStatementsSafe(out, "end") - - elseif statement.AstType == 'GenericForStatement' then - statement.Scope:ObfuscateVariables() - out = "for " - for i = 1, #statement.VariableList do - out = out..statement.VariableList[i].Name - if i ~= #statement.VariableList then - out = out.."," - end - end - out = out.." in" - for i = 1, #statement.Generators do - out = joinStatementsSafe(out, formatExpr(statement.Generators[i])) - if i ~= #statement.Generators then - out = joinStatementsSafe(out, ',') - end - end - out = joinStatementsSafe(out, "do") - out = joinStatementsSafe(out, formatStatlist(statement.Body)) - out = joinStatementsSafe(out, "end") - - elseif statement.AstType == 'NumericForStatement' then - statement.Scope:ObfuscateVariables() - out = "for " - out = out..statement.Variable.Name.."=" - out = out..formatExpr(statement.Start)..","..formatExpr(statement.End) - if statement.Step then - out = out..","..formatExpr(statement.Step) - end - out = joinStatementsSafe(out, "do") - out = joinStatementsSafe(out, formatStatlist(statement.Body)) - out = joinStatementsSafe(out, "end") - elseif statement.AstType == 'LabelStatement' then - out = joinStatementsSafe(out, "::" .. statement.Label .. "::") - elseif statement.AstType == 'GotoStatement' then - out = joinStatementsSafe(out, "goto " .. statement.Label) - elseif statement.AstType == 'Comment' then - -- ignore - elseif statement.AstType == 'Eof' then - -- ignore - else - print("Unknown AST Type: " .. statement.AstType) - end - --count = count + #out - return out - end - - formatStatlist = function(statList) - local out = '' - statList.Scope:ObfuscateVariables() - for _, stat in pairs(statList.Body) do - out = joinStatementsSafe(out, formatStatement(stat), ';') - end - return out - end - - ast.Scope:ObfuscateVariables() - return formatStatlist(ast) -end -)lua_codes" - -R"lua_codes( -local function FormatYue(ast, lineMap) - local currentLine = 1 - local formatStatlist, formatExpr - - local function joinStatementsSafe(out, b, sep) - if #out < 1 then - return '' - end - local aa = '' - local b1 = b:sub(1,1) - local spaceSep = b1 == ' ' or b1 == '\n' - for i = #out, 1, -1 do - local a = out[i] - local a1 = a:sub(-1,-1) - if a1 == ' ' or a1 == '\n' then - spaceSep = true - end - aa = a:match("([^%s])%s*$") - if aa then - break - end - end - aa = aa or '' - sep = sep or ' ' - if spaceSep then - sep = '' - elseif sep == ';' then - local token = aa:match("([%w_]+)%s*$") - if token == "then" or token == "do" then - sep = ' ' - end - end - local bb = b:match("^%s*([^%s])") - if UpperChars[aa] or LowerChars[aa] or aa == '_' then - if not (UpperChars[bb] or LowerChars[bb] or bb == '_' or Digits[bb]) then - --bb is a symbol, can join without sep - out[#out + 1] = b - elseif bb == '(' then - --prevent ambiguous syntax - out[#out + 1] = sep - out[#out + 1] = b - else - out[#out + 1] = sep - out[#out + 1] = b - end - elseif Digits[aa] then - if bb == '(' then - --can join statements directly - out[#out + 1] = b - elseif Symbols[bb] then - out[#out + 1] = b - else - out[#out + 1] = sep - out[#out + 1] = b - end - elseif aa == '' then - out[#out + 1] = b - else - if bb == '(' then - --don't want to accidentally call last statement, can't join directly - out[#out + 1] = sep - out[#out + 1] = b - else - out[#out + 1] = b - end - end - end - - formatExpr = function(expr) - local out = {string.rep('(', expr.ParenCount or 0)} - if expr.AstType == 'VarExpr' then - if expr.Variable then - out[#out + 1] = expr.Variable.Name - else - out[#out + 1] = expr.Name - end - - elseif expr.AstType == 'NumberExpr' then - out[#out + 1] = expr.Value.Data - - elseif expr.AstType == 'StringExpr' then - out[#out + 1] = expr.Value.Data - - elseif expr.AstType == 'BooleanExpr' then - out[#out + 1] = tostring(expr.Value) - - elseif expr.AstType == 'NilExpr' then - joinStatementsSafe(out, "nil", nil) - - elseif expr.AstType == 'BinopExpr' then - joinStatementsSafe(out, formatExpr(expr.Lhs), nil) - out[#out + 1] = " " - joinStatementsSafe(out, expr.Op, nil) - out[#out + 1] = " " - joinStatementsSafe(out, formatExpr(expr.Rhs), nil) - - elseif expr.AstType == 'UnopExpr' then - joinStatementsSafe(out, expr.Op, nil) - out[#out + 1] = (#expr.Op ~= 1 and " " or "") - joinStatementsSafe(out, formatExpr(expr.Rhs), nil) - - elseif expr.AstType == 'DotsExpr' then - out[#out + 1] = "..." - - elseif expr.AstType == 'CallExpr' then - out[#out + 1] = formatExpr(expr.Base) - out[#out + 1] = "(" - for i = 1, #expr.Arguments do - out[#out + 1] = formatExpr(expr.Arguments[i]) - if i ~= #expr.Arguments then - out[#out + 1] = ", " - end - end - out[#out + 1] = ")" - - elseif expr.AstType == 'TableCallExpr' then - out[#out + 1] = formatExpr(expr.Base) - out[#out + 1] = " " - out[#out + 1] = formatExpr(expr.Arguments[1]) - - elseif expr.AstType == 'StringCallExpr' then - out[#out + 1] = formatExpr(expr.Base) - out[#out + 1] = " " - out[#out + 1] = expr.Arguments[1].Data - - elseif expr.AstType == 'IndexExpr' then - out[#out + 1] = formatExpr(expr.Base) - out[#out + 1] = "[" - out[#out + 1] = formatExpr(expr.Index) - out[#out + 1] = "]" - - elseif expr.AstType == 'MemberExpr' then - out[#out + 1] = formatExpr(expr.Base) - local targetLine = lineMap[expr.Ident.Line] - if targetLine and currentLine < targetLine then - out[#out + 1] = string.rep('\n', targetLine - currentLine) - currentLine = targetLine - end - out[#out + 1] = expr.Indexer - out[#out + 1] = expr.Ident.Data - - elseif expr.AstType == 'Function' then - -- anonymous function - out[#out + 1] = "function(" - if #expr.Arguments > 0 then - for i = 1, #expr.Arguments do - out[#out + 1] = expr.Arguments[i].Name - if i ~= #expr.Arguments then - out[#out + 1] = ", " - elseif expr.VarArg then - out[#out + 1] = ", ..." - end - end - elseif expr.VarArg then - out[#out + 1] = "..." - end - out[#out + 1] = ")" - joinStatementsSafe(out, formatStatlist(expr.Body), nil) - joinStatementsSafe(out, "end", nil) - elseif expr.AstType == 'ConstructorExpr' then - out[#out + 1] = "{ " - for i = 1, #expr.EntryList do - local entry = expr.EntryList[i] - if entry.Type == 'Key' then - out[#out + 1] = "[" - out[#out + 1] = formatExpr(entry.Key) - out[#out + 1] = "] = " - out[#out + 1] = formatExpr(entry.Value) - elseif entry.Type == 'Value' then - out[#out + 1] = formatExpr(entry.Value) - elseif entry.Type == 'KeyString' then - out[#out + 1] = entry.Key - out[#out + 1] = " = " - out[#out + 1] = formatExpr(entry.Value) - end - if i ~= #expr.EntryList then - out[#out + 1] = ", " - end - end - out[#out + 1] = " }" - - elseif expr.AstType == 'Parentheses' then - out[#out + 1] = "(" - out[#out + 1] = formatExpr(expr.Inner) - out[#out + 1] = ")" - - end - out[#out + 1] = string.rep(')', expr.ParenCount or 0) - if expr.Tokens and expr.Tokens[1] then - local line = expr.Tokens[1].Line - local targetLine = lineMap[line] - if targetLine and currentLine < targetLine then - table.insert(out, 1, string.rep('\n', targetLine - currentLine)) - currentLine = targetLine - end - end - return table.concat(out) - end - - local formatStatement = function(statement) - local out = {""} - if statement.AstType == 'AssignmentStatement' then - for i = 1, #statement.Lhs do - out[#out + 1] = formatExpr(statement.Lhs[i]) - if i ~= #statement.Lhs then - out[#out + 1] = ", " - end - end - if #statement.Rhs > 0 then - out[#out + 1] = " = " - for i = 1, #statement.Rhs do - out[#out + 1] = formatExpr(statement.Rhs[i]) - if i ~= #statement.Rhs then - out[#out + 1] = ", " - end - end - end - elseif statement.AstType == 'CallStatement' then - out[#out + 1] = formatExpr(statement.Expression) - elseif statement.AstType == 'LocalStatement' then - out[#out + 1] = "local " - for i = 1, #statement.LocalList do - out[#out + 1] = statement.LocalList[i].Name - if statement.AttrList[i] then - out[#out + 1] = " <" - out[#out + 1] = statement.AttrList[i] - out[#out + 1] = ">" - end - if i ~= #statement.LocalList then - out[#out + 1] = "," - end - end - if #statement.InitList > 0 then - out[#out + 1] = " = " - for i = 1, #statement.InitList do - out[#out + 1] = formatExpr(statement.InitList[i]) - if i ~= #statement.InitList then - out[#out + 1] = ", " - end - end - end - elseif statement.AstType == 'IfStatement' then - out[#out + 1] = "if " - joinStatementsSafe(out, formatExpr(statement.Clauses[1].Condition), nil) - joinStatementsSafe(out, " then", nil) - joinStatementsSafe(out, formatStatlist(statement.Clauses[1].Body), nil) - for i = 2, #statement.Clauses do - local st = statement.Clauses[i] - if st.Condition then - joinStatementsSafe(out, "elseif ", nil) - joinStatementsSafe(out, formatExpr(st.Condition), nil) - joinStatementsSafe(out, " then", nil) - else - joinStatementsSafe(out, "else", nil) - end - joinStatementsSafe(out, formatStatlist(st.Body), nil) - end - joinStatementsSafe(out, "end", nil) - elseif statement.AstType == 'WhileStatement' then - out[#out + 1] = "while " - joinStatementsSafe(out, formatExpr(statement.Condition), nil) - joinStatementsSafe(out, " do", nil) - joinStatementsSafe(out, formatStatlist(statement.Body), nil) - joinStatementsSafe(out, "end", nil) - elseif statement.AstType == 'DoStatement' then - joinStatementsSafe(out, "do", nil) - joinStatementsSafe(out, formatStatlist(statement.Body), nil) - joinStatementsSafe(out, "end", nil) - elseif statement.AstType == 'ReturnStatement' then - out[#out + 1] = "return " - for i = 1, #statement.Arguments do - joinStatementsSafe(out, formatExpr(statement.Arguments[i]), nil) - if i ~= #statement.Arguments then - out[#out + 1] = ", " - end - end - elseif statement.AstType == 'BreakStatement' then - out[#out + 1] = "break" - elseif statement.AstType == 'RepeatStatement' then - out[#out + 1] = "repeat" - joinStatementsSafe(out, formatStatlist(statement.Body), nil) - joinStatementsSafe(out, "until ", nil) - joinStatementsSafe(out, formatExpr(statement.Condition), nil) - elseif statement.AstType == 'Function' then - if statement.IsLocal then - out[#out + 1] = "local " - end - joinStatementsSafe(out, "function ", nil) - if statement.IsLocal then - out[#out + 1] = statement.Name.Name - else - out[#out + 1] = formatExpr(statement.Name) - end - out[#out + 1] = "(" - if #statement.Arguments > 0 then - for i = 1, #statement.Arguments do - out[#out + 1] = statement.Arguments[i].Name - if i ~= #statement.Arguments then - out[#out + 1] = ", " - elseif statement.VarArg then - out[#out + 1] = ",..." - end - end - elseif statement.VarArg then - out[#out + 1] = "..." - end - out[#out + 1] = ")" - joinStatementsSafe(out, formatStatlist(statement.Body), nil) - joinStatementsSafe(out, "end", nil) - elseif statement.AstType == 'GenericForStatement' then - out[#out + 1] = "for " - for i = 1, #statement.VariableList do - out[#out + 1] = statement.VariableList[i].Name - if i ~= #statement.VariableList then - out[#out + 1] = ", " - end - end - out[#out + 1] = " in " - for i = 1, #statement.Generators do - joinStatementsSafe(out, formatExpr(statement.Generators[i]), nil) - if i ~= #statement.Generators then - joinStatementsSafe(out, ', ', nil) - end - end - joinStatementsSafe(out, " do", nil) - joinStatementsSafe(out, formatStatlist(statement.Body), nil) - joinStatementsSafe(out, "end", nil) - elseif statement.AstType == 'NumericForStatement' then - out[#out + 1] = "for " - out[#out + 1] = statement.Variable.Name - out[#out + 1] = " = " - out[#out + 1] = formatExpr(statement.Start) - out[#out + 1] = ", " - out[#out + 1] = formatExpr(statement.End) - if statement.Step then - out[#out + 1] = ", " - out[#out + 1] = formatExpr(statement.Step) - end - joinStatementsSafe(out, " do", nil) - joinStatementsSafe(out, formatStatlist(statement.Body), nil) - joinStatementsSafe(out, "end", nil) - elseif statement.AstType == 'LabelStatement' then - out[#out + 1] = "::" - out[#out + 1] = statement.Label - out[#out + 1] = "::" - elseif statement.AstType == 'GotoStatement' then - out[#out + 1] = "goto " - out[#out + 1] = statement.Label - elseif statement.AstType == 'Comment' then - -- Ignore - elseif statement.AstType == 'Eof' then - -- Ignore - else - print("Unknown AST Type: ", statement.AstType) - end - if statement.Tokens and statement.Tokens[1] then - local line = statement.Tokens[1].Line - local targetLine = lineMap[line] - if targetLine and currentLine < targetLine then - table.insert(out, 1, string.rep('\n', targetLine - currentLine)) - currentLine = targetLine - end - end - return table.concat(out) - end - - formatStatlist = function(statList) - local out = {""} - for _, stat in pairs(statList.Body) do - joinStatementsSafe(out, formatStatement(stat), ';') - end - return table.concat(out) - end - - return formatStatlist(ast) -end - -local function GetYueLineMap(luaCodes) - local current = 1 - local lastLine = 1 - local lineMap = { } - for lineCode in luaCodes:gmatch("([^\r\n]*)\r?\n?") do - local num = lineCode:match("--%s*(%d+)%s*$") - if num then - local line = tonumber(num) - if line > lastLine then - lastLine = line - end - end - lineMap[current] = lastLine - current = current + 1 - end - return lineMap -end - -return { - FormatMini = function(src) - local st, ast = ParseLua(src) - if st then - return Format_Mini(ast) - else - return nil, ast - end - end, - - FormatYue = function(src) - local st, ast = ParseLua(src) - if st then - local lineMap = GetYueLineMap(src) - if #lineMap == 0 then - return src - end - return FormatYue(ast, lineMap) - else - return nil, ast - end - end -} -)lua_codes"; - diff --git a/src/3rdParty/gencode.yue b/src/3rdParty/gencode.yue new file mode 100755 index 0000000..e0dbcb9 --- /dev/null +++ b/src/3rdParty/gencode.yue @@ -0,0 +1,26 @@ +#!yue -e + +for file in *["luaminify.lua",] + text = "" + with io.open file + text = \read "*a" + \close! + + indent = "\t" + count = 0 + text = text\gsub "#!", "--#!" + bytes = indent .. string.gsub text, "(.)", (ch)-> + sep = "" + count += 1 + if count == 15 + count = 0 + sep = "\n" .. indent + string.format "%3u,%s", string.byte(ch), sep + + name = file\gsub "%.", "_" + output = "#{name}.h" + with io.open output, "w" + \write "const char #{name}[] = {\n#{bytes}\n};" + \close! + + print "file \"#{output}\"generated." diff --git a/src/3rdParty/luaminify.lua b/src/3rdParty/luaminify.lua index d4389d7..3e7cca0 100644 --- a/src/3rdParty/luaminify.lua +++ b/src/3rdParty/luaminify.lua @@ -22,7 +22,7 @@ local function lookupify(tb) return tb end - +--[[ local function CountTable(tb) local c = 0 for _ in pairs(tb) do c = c + 1 end @@ -71,7 +71,7 @@ local function PrintTable(tb, atIndent) out = out..(useNewlines and string.rep(' ', atIndent) or '').."}" return out end - +]] local blacklist = { ["do"] = true, @@ -163,7 +163,7 @@ local Scope = { end, GetLocal = function(self, name) - for k, var in pairs(self.Locals) do + for _k, var in pairs(self.Locals) do if var.Name == name then return var end end @@ -237,7 +237,7 @@ local Scope = { GetAllVariables = function(self) local ret = self:getVars(true) -- down - for k, v in pairs(self:getVars(false)) do -- up + for _k, v in pairs(self:getVars(false)) do -- up table.insert(ret, v) end return ret @@ -246,20 +246,20 @@ local Scope = { getVars = function(self, top) local ret = { } if top then - for k, v in pairs(self.Children) do - for k2, v2 in pairs(v:getVars(true)) do + for _k, v in pairs(self.Children) do + for _k2, v2 in pairs(v:getVars(true)) do table.insert(ret, v2) end end else - for k, v in pairs(self.Locals) do + for _k, v in pairs(self.Locals) do table.insert(ret, v) end - for k, v in pairs(self.Globals) do + for _k, v in pairs(self.Globals) do table.insert(ret, v) end if self.Parent then - for k, v in pairs(self.Parent:getVars(false)) do + for _k, v in pairs(self.Parent:getVars(false)) do table.insert(ret, v) end end @@ -282,7 +282,7 @@ local Scope = { end, GetGlobal = function(self, name) - for k, v in pairs(self.Globals) do + for _k, v in pairs(self.Globals) do if v.Name == name then return v end end @@ -295,8 +295,8 @@ local Scope = { return self:GetLocal(name) or self:GetGlobal(name) end, - ObfuscateLocals = function(self, recommendedMaxLength, validNameChars) - for i, var in pairs(self.Locals) do + ObfuscateLocals = function(self) + for _i, var in pairs(self.Locals) do if var.Name == "_ENV" then self:RenameLocal(var.Name, "_ENV") else @@ -796,7 +796,8 @@ local function ParseLua(src) --find the line local lineNum = 0 if type(src) == 'string' then - for line in src:gmatch("[^\n]*\n?") do + for l in src:gmatch("[^\n]*\n?") do + line = l if line:sub(-1,-1) == '\n' then line = line:sub(1,-2) end lineNum = lineNum+1 if lineNum == tok:Peek().Line then @@ -951,7 +952,7 @@ local function ParseLua(src) return true, nodeFunc end - function ParsePrimaryExpr(scope) + ParsePrimaryExpr = function(scope) local tokenList = {} if tok:ConsumeSymbol('(', tokenList) then @@ -998,7 +999,7 @@ local function ParseLua(src) end end - function ParseSuffixedExpr(scope, onlyDotColon) + ParseSuffixedExpr = function(scope, onlyDotColon) --base primary expression local st, prim = ParsePrimaryExpr(scope) if not st then return false, prim end @@ -1089,7 +1090,7 @@ local function ParseLua(src) end - function ParseSimpleExpr(scope) + ParseSimpleExpr = function(scope) local tokenList = {} if tok:Is('Number') then @@ -1243,7 +1244,7 @@ local function ParseLua(src) ['and'] = {2,2}; ['or'] = {1,1}; } - function ParseSubExpr(scope, level) + ParseSubExpr = function(scope, level) --base item, possibly with unop prefix local st, exp if unops[tok:Peek().Data] then diff --git a/src/3rdParty/luaminify_lua.h b/src/3rdParty/luaminify_lua.h new file mode 100644 index 0000000..1b2056d --- /dev/null +++ b/src/3rdParty/luaminify_lua.h @@ -0,0 +1,4439 @@ +const char luaminify_lua[] = { + 45, 45, 91, 91, 10, 84,104,101, 32, 77, 73, 84, 32, 76,105, + 99,101,110,115,101, 32, 40, 77, 73, 84, 41, 10, 10, 67,111, + 112,121,114,105,103,104,116, 32, 40, 99, 41, 32, 50, 48, 49, + 50, 45, 50, 48, 49, 51, 32, 77, 97,114,107, 32, 76, 97,110, + 103,101,110, 44, 32,109,111,100,105,102,105,101,100, 32, 98, + 121, 32, 76,105, 32, 74,105,110, 32, 50, 48, 50, 51, 10, 10, + 80,101,114,109,105,115,115,105,111,110, 32,105,115, 32,104, + 101,114,101, 98,121, 32,103,114, 97,110,116,101,100, 44, 32, + 102,114,101,101, 32,111,102, 32, 99,104, 97,114,103,101, 44, + 32,116,111, 32, 97,110,121, 32,112,101,114,115,111,110, 32, + 111, 98,116, 97,105,110,105,110,103, 32, 97, 32, 99,111,112, + 121, 32,111,102, 32,116,104,105,115, 32,115,111,102,116,119, + 97,114,101, 32, 97,110,100, 32, 97,115,115,111, 99,105, 97, + 116,101,100, 32,100,111, 99,117,109,101,110,116, 97,116,105, + 111,110, 32,102,105,108,101,115, 32, 40,116,104,101, 32, 34, + 83,111,102,116,119, 97,114,101, 34, 41, 44, 32,116,111, 32, + 100,101, 97,108, 32,105,110, 32,116,104,101, 32, 83,111,102, + 116,119, 97,114,101, 32,119,105,116,104,111,117,116, 32,114, + 101,115,116,114,105, 99,116,105,111,110, 44, 32,105,110, 99, + 108,117,100,105,110,103, 32,119,105,116,104,111,117,116, 32, + 108,105,109,105,116, 97,116,105,111,110, 32,116,104,101, 32, + 114,105,103,104,116,115, 32,116,111, 32,117,115,101, 44, 32, + 99,111,112,121, 44, 32,109,111,100,105,102,121, 44, 32,109, + 101,114,103,101, 44, 32,112,117, 98,108,105,115,104, 44, 32, + 100,105,115,116,114,105, 98,117,116,101, 44, 32,115,117, 98, + 108,105, 99,101,110,115,101, 44, 32, 97,110,100, 47,111,114, + 32,115,101,108,108, 32, 99,111,112,105,101,115, 32,111,102, + 32,116,104,101, 32, 83,111,102,116,119, 97,114,101, 44, 32, + 97,110,100, 32,116,111, 32,112,101,114,109,105,116, 32,112, + 101,114,115,111,110,115, 32,116,111, 32,119,104,111,109, 32, + 116,104,101, 32, 83,111,102,116,119, 97,114,101, 32,105,115, + 32,102,117,114,110,105,115,104,101,100, 32,116,111, 32,100, + 111, 32,115,111, 44, 32,115,117, 98,106,101, 99,116, 32,116, + 111, 32,116,104,101, 32,102,111,108,108,111,119,105,110,103, + 32, 99,111,110,100,105,116,105,111,110,115, 58, 10, 10, 84, + 104,101, 32, 97, 98,111,118,101, 32, 99,111,112,121,114,105, + 103,104,116, 32,110,111,116,105, 99,101, 32, 97,110,100, 32, + 116,104,105,115, 32,112,101,114,109,105,115,115,105,111,110, + 32,110,111,116,105, 99,101, 32,115,104, 97,108,108, 32, 98, + 101, 32,105,110, 99,108,117,100,101,100, 32,105,110, 32, 97, + 108,108, 32, 99,111,112,105,101,115, 32,111,114, 32,115,117, + 98,115,116, 97,110,116,105, 97,108, 32,112,111,114,116,105, + 111,110,115, 32,111,102, 32,116,104,101, 32, 83,111,102,116, + 119, 97,114,101, 46, 10, 10, 84, 72, 69, 32, 83, 79, 70, 84, + 87, 65, 82, 69, 32, 73, 83, 32, 80, 82, 79, 86, 73, 68, 69, + 68, 32, 34, 65, 83, 32, 73, 83, 34, 44, 32, 87, 73, 84, 72, + 79, 85, 84, 32, 87, 65, 82, 82, 65, 78, 84, 89, 32, 79, 70, + 32, 65, 78, 89, 32, 75, 73, 78, 68, 44, 32, 69, 88, 80, 82, + 69, 83, 83, 32, 79, 82, 32, 73, 77, 80, 76, 73, 69, 68, 44, + 32, 73, 78, 67, 76, 85, 68, 73, 78, 71, 32, 66, 85, 84, 32, + 78, 79, 84, 32, 76, 73, 77, 73, 84, 69, 68, 32, 84, 79, 32, + 84, 72, 69, 32, 87, 65, 82, 82, 65, 78, 84, 73, 69, 83, 32, + 79, 70, 32, 77, 69, 82, 67, 72, 65, 78, 84, 65, 66, 73, 76, + 73, 84, 89, 44, 32, 70, 73, 84, 78, 69, 83, 83, 32, 70, 79, + 82, 32, 65, 32, 80, 65, 82, 84, 73, 67, 85, 76, 65, 82, 32, + 80, 85, 82, 80, 79, 83, 69, 32, 65, 78, 68, 32, 78, 79, 78, + 73, 78, 70, 82, 73, 78, 71, 69, 77, 69, 78, 84, 46, 32, 73, + 78, 32, 78, 79, 32, 69, 86, 69, 78, 84, 32, 83, 72, 65, 76, + 76, 32, 84, 72, 69, 32, 65, 85, 84, 72, 79, 82, 83, 32, 79, + 82, 32, 67, 79, 80, 89, 82, 73, 71, 72, 84, 32, 72, 79, 76, + 68, 69, 82, 83, 32, 66, 69, 32, 76, 73, 65, 66, 76, 69, 32, + 70, 79, 82, 32, 65, 78, 89, 32, 67, 76, 65, 73, 77, 44, 32, + 68, 65, 77, 65, 71, 69, 83, 32, 79, 82, 32, 79, 84, 72, 69, + 82, 32, 76, 73, 65, 66, 73, 76, 73, 84, 89, 44, 32, 87, 72, + 69, 84, 72, 69, 82, 32, 73, 78, 32, 65, 78, 32, 65, 67, 84, + 73, 79, 78, 32, 79, 70, 32, 67, 79, 78, 84, 82, 65, 67, 84, + 44, 32, 84, 79, 82, 84, 32, 79, 82, 32, 79, 84, 72, 69, 82, + 87, 73, 83, 69, 44, 32, 65, 82, 73, 83, 73, 78, 71, 32, 70, + 82, 79, 77, 44, 32, 79, 85, 84, 32, 79, 70, 32, 79, 82, 32, + 73, 78, 32, 67, 79, 78, 78, 69, 67, 84, 73, 79, 78, 32, 87, + 73, 84, 72, 32, 84, 72, 69, 32, 83, 79, 70, 84, 87, 65, 82, + 69, 32, 79, 82, 32, 84, 72, 69, 32, 85, 83, 69, 32, 79, 82, + 32, 79, 84, 72, 69, 82, 32, 68, 69, 65, 76, 73, 78, 71, 83, + 32, 73, 78, 32, 84, 72, 69, 32, 83, 79, 70, 84, 87, 65, 82, + 69, 46, 93, 93, 10, 10, 45, 45, 10, 45, 45, 32, 85,116,105, + 108, 46,108,117, 97, 10, 45, 45, 10, 45, 45, 32, 80,114,111, + 118,105,100,101,115, 32,115,111,109,101, 32, 99,111,109,109, + 111,110, 32,117,116,105,108,105,116,105,101,115, 32,115,104, + 97,114,101,100, 32,116,104,114,111,117,103,104,111,117,116, + 32,116,104,101, 32,112,114,111,106,101, 99,116, 46, 10, 45, + 45, 10, 10,108,111, 99, 97,108, 32,102,117,110, 99,116,105, + 111,110, 32,108,111,111,107,117,112,105,102,121, 40,116, 98, + 41, 10, 9,102,111,114, 32, 95, 44, 32,118, 32,105,110, 32, + 112, 97,105,114,115, 40,116, 98, 41, 32,100,111, 10, 9, 9, + 116, 98, 91,118, 93, 32, 61, 32,116,114,117,101, 10, 9,101, + 110,100, 10, 9,114,101,116,117,114,110, 32,116, 98, 10,101, + 110,100, 10, 10, 45, 45, 91, 91, 10,108,111, 99, 97,108, 32, + 102,117,110, 99,116,105,111,110, 32, 67,111,117,110,116, 84, + 97, 98,108,101, 40,116, 98, 41, 10, 9,108,111, 99, 97,108, + 32, 99, 32, 61, 32, 48, 10, 9,102,111,114, 32, 95, 32,105, + 110, 32,112, 97,105,114,115, 40,116, 98, 41, 32,100,111, 32, + 99, 32, 61, 32, 99, 32, 43, 32, 49, 32,101,110,100, 10, 9, + 114,101,116,117,114,110, 32, 99, 10,101,110,100, 10, 10, 10, + 108,111, 99, 97,108, 32,102,117,110, 99,116,105,111,110, 32, + 80,114,105,110,116, 84, 97, 98,108,101, 40,116, 98, 44, 32, + 97,116, 73,110,100,101,110,116, 41, 10, 9,105,102, 32,116, + 98, 46, 80,114,105,110,116, 32,116,104,101,110, 10, 9, 9, + 114,101,116,117,114,110, 32,116, 98, 46, 80,114,105,110,116, + 40, 41, 10, 9,101,110,100, 10, 9, 97,116, 73,110,100,101, + 110,116, 32, 61, 32, 97,116, 73,110,100,101,110,116, 32,111, + 114, 32, 48, 10, 9,108,111, 99, 97,108, 32,117,115,101, 78, + 101,119,108,105,110,101,115, 32, 61, 32, 40, 67,111,117,110, + 116, 84, 97, 98,108,101, 40,116, 98, 41, 32, 62, 32, 49, 41, + 10, 9,108,111, 99, 97,108, 32, 98, 97,115,101, 73,110,100, + 101,110,116, 32, 61, 32,115,116,114,105,110,103, 46,114,101, + 112, 40, 39, 32, 32, 32, 32, 39, 44, 32, 97,116, 73,110,100, + 101,110,116, 43, 49, 41, 10, 9,108,111, 99, 97,108, 32,111, + 117,116, 32, 61, 32, 34,123, 34, 46, 46, 40,117,115,101, 78, + 101,119,108,105,110,101,115, 32, 97,110,100, 32, 39, 92,110, + 39, 32,111,114, 32, 39, 39, 41, 10, 9,102,111,114, 32,107, + 44, 32,118, 32,105,110, 32,112, 97,105,114,115, 40,116, 98, + 41, 32,100,111, 10, 9, 9,105,102, 32,116,121,112,101, 40, + 118, 41, 32,126, 61, 32, 39,102,117,110, 99,116,105,111,110, + 39, 32,116,104,101,110, 10, 9, 9, 45, 45,100,111, 10, 9, + 9, 9,111,117,116, 32, 61, 32,111,117,116, 46, 46, 40,117, + 115,101, 78,101,119,108,105,110,101,115, 32, 97,110,100, 32, + 98, 97,115,101, 73,110,100,101,110,116, 32,111,114, 32, 39, + 39, 41, 10, 9, 9, 9,105,102, 32,116,121,112,101, 40,107, + 41, 32, 61, 61, 32, 39,110,117,109, 98,101,114, 39, 32,116, + 104,101,110, 10, 9, 9, 9, 9, 45, 45,110,111,116,104,105, + 110,103, 32,116,111, 32,100,111, 10, 9, 9, 9,101,108,115, + 101,105,102, 32,116,121,112,101, 40,107, 41, 32, 61, 61, 32, + 39,115,116,114,105,110,103, 39, 32, 97,110,100, 32,107, 58, + 109, 97,116, 99,104, 40, 34, 94, 91, 65, 45, 90, 97, 45,122, + 95, 93, 91, 65, 45, 90, 97, 45,122, 48, 45, 57, 95, 93, 42, + 36, 34, 41, 32,116,104,101,110, 10, 9, 9, 9, 9,111,117, + 116, 32, 61, 32,111,117,116, 46, 46,107, 46, 46, 34, 32, 61, + 32, 34, 10, 9, 9, 9,101,108,115,101,105,102, 32,116,121, + 112,101, 40,107, 41, 32, 61, 61, 32, 39,115,116,114,105,110, + 103, 39, 32,116,104,101,110, 10, 9, 9, 9, 9,111,117,116, + 32, 61, 32,111,117,116, 46, 46, 34, 91, 92, 34, 34, 46, 46, + 107, 46, 46, 34, 92, 34, 93, 32, 61, 32, 34, 10, 9, 9, 9, + 101,108,115,101, 10, 9, 9, 9, 9,111,117,116, 32, 61, 32, + 111,117,116, 46, 46, 34, 91, 34, 46, 46,116,111,115,116,114, + 105,110,103, 40,107, 41, 46, 46, 34, 93, 32, 61, 32, 34, 10, + 9, 9, 9,101,110,100, 10, 9, 9, 9,105,102, 32,116,121, + 112,101, 40,118, 41, 32, 61, 61, 32, 39,115,116,114,105,110, + 103, 39, 32,116,104,101,110, 10, 9, 9, 9, 9,111,117,116, + 32, 61, 32,111,117,116, 46, 46, 34, 92, 34, 34, 46, 46,118, + 46, 46, 34, 92, 34, 34, 10, 9, 9, 9,101,108,115,101,105, + 102, 32,116,121,112,101, 40,118, 41, 32, 61, 61, 32, 39,110, + 117,109, 98,101,114, 39, 32,116,104,101,110, 10, 9, 9, 9, + 9,111,117,116, 32, 61, 32,111,117,116, 46, 46,118, 10, 9, + 9, 9,101,108,115,101,105,102, 32,116,121,112,101, 40,118, + 41, 32, 61, 61, 32, 39,116, 97, 98,108,101, 39, 32,116,104, + 101,110, 10, 9, 9, 9, 9,111,117,116, 32, 61, 32,111,117, + 116, 46, 46, 80,114,105,110,116, 84, 97, 98,108,101, 40,118, + 44, 32, 97,116, 73,110,100,101,110,116, 43, 40,117,115,101, + 78,101,119,108,105,110,101,115, 32, 97,110,100, 32, 49, 32, + 111,114, 32, 48, 41, 41, 10, 9, 9, 9,101,108,115,101, 10, + 9, 9, 9, 9,111,117,116, 32, 61, 32,111,117,116, 46, 46, + 116,111,115,116,114,105,110,103, 40,118, 41, 10, 9, 9, 9, + 101,110,100, 10, 9, 9, 9,105,102, 32,110,101,120,116, 40, + 116, 98, 44, 32,107, 41, 32,116,104,101,110, 10, 9, 9, 9, + 9,111,117,116, 32, 61, 32,111,117,116, 46, 46, 34, 44, 34, + 10, 9, 9, 9,101,110,100, 10, 9, 9, 9,105,102, 32,117, + 115,101, 78,101,119,108,105,110,101,115, 32,116,104,101,110, + 10, 9, 9, 9, 9,111,117,116, 32, 61, 32,111,117,116, 46, + 46, 39, 92,110, 39, 10, 9, 9, 9,101,110,100, 10, 9, 9, + 101,110,100, 10, 9,101,110,100, 10, 9,111,117,116, 32, 61, + 32,111,117,116, 46, 46, 40,117,115,101, 78,101,119,108,105, + 110,101,115, 32, 97,110,100, 32,115,116,114,105,110,103, 46, + 114,101,112, 40, 39, 32, 32, 32, 32, 39, 44, 32, 97,116, 73, + 110,100,101,110,116, 41, 32,111,114, 32, 39, 39, 41, 46, 46, + 34,125, 34, 10, 9,114,101,116,117,114,110, 32,111,117,116, + 10,101,110,100, 10, 93, 93, 10, 10,108,111, 99, 97,108, 32, + 98,108, 97, 99,107,108,105,115,116, 32, 61, 32,123, 10, 9, + 91, 34,100,111, 34, 93, 32, 61, 32,116,114,117,101, 44, 10, + 9, 91, 34,105,102, 34, 93, 32, 61, 32,116,114,117,101, 44, + 10, 9, 91, 34,105,110, 34, 93, 32, 61, 32,116,114,117,101, + 44, 10, 9, 91, 34,111,114, 34, 93, 32, 61, 32,116,114,117, + 101, 44, 10, 9, 91, 34,102,111,114, 34, 93, 32, 61, 32,116, + 114,117,101, 44, 10, 9, 91, 34, 97,110,100, 34, 93, 32, 61, + 32,116,114,117,101, 44, 10, 9, 91, 34,110,111,116, 34, 93, + 32, 61, 32,116,114,117,101, 44, 10, 9, 91, 34,101,110,100, + 34, 93, 32, 61, 32,116,114,117,101, 44, 10, 9, 91, 34,110, + 105,108, 34, 93, 32, 61, 32,116,114,117,101, 10,125, 10, 10, + 108,111, 99, 97,108, 32,105,110,115,101,114,116, 44, 32, 99, + 104, 97,114, 32, 61, 32,116, 97, 98,108,101, 46,105,110,115, + 101,114,116, 44, 32,115,116,114,105,110,103, 46, 99,104, 97, + 114, 10, 10,108,111, 99, 97,108, 32, 99,104, 97,114,115, 32, + 61, 32,123,125, 10,102,111,114, 32,105, 32, 61, 32, 57, 55, + 44, 32, 49, 50, 50, 32,100,111, 10, 9,105,110,115,101,114, + 116, 40, 99,104, 97,114,115, 44, 32, 99,104, 97,114, 40,105, + 41, 41, 10,101,110,100, 10,102,111,114, 32,105, 32, 61, 32, + 54, 53, 44, 32, 57, 48, 32,100,111, 10, 9,105,110,115,101, + 114,116, 40, 99,104, 97,114,115, 44, 32, 99,104, 97,114, 40, + 105, 41, 41, 10,101,110,100, 10, 10,108,111, 99, 97,108, 32, + 102,117,110, 99,116,105,111,110, 32, 71,101,116, 85,110,105, + 113,117,101, 40,115,101,108,102, 41, 10, 9,102,111,114, 32, + 120, 32, 61, 32, 49, 44, 32, 53, 50, 32,100,111, 10, 9, 9, + 108,111, 99, 97,108, 32, 99, 32, 61, 32, 99,104, 97,114,115, + 91,120, 93, 10, 9, 9,105,102, 32,110,111,116, 32, 98,108, + 97, 99,107,108,105,115,116, 91, 99, 93, 32, 97,110,100, 32, + 110,111,116, 32,115,101,108,102, 58, 71,101,116, 86, 97,114, + 105, 97, 98,108,101, 40, 99, 41, 32,116,104,101,110, 10, 9, + 9, 9,114,101,116,117,114,110, 32, 99, 10, 9, 9,101,110, + 100, 10, 9,101,110,100, 10, 9,102,111,114, 32,120, 32, 61, + 32, 49, 44, 32, 53, 50, 32,100,111, 10, 9, 9,102,111,114, + 32,121, 32, 61, 32, 49, 44, 32, 53, 50, 32,100,111, 10, 9, + 9, 9,108,111, 99, 97,108, 32, 99, 32, 61, 32, 99,104, 97, + 114,115, 91,120, 93, 46, 46, 99,104, 97,114,115, 91,121, 93, + 10, 9, 9, 9,105,102, 32,110,111,116, 32, 98,108, 97, 99, + 107,108,105,115,116, 91, 99, 93, 32, 97,110,100, 32,110,111, + 116, 32,115,101,108,102, 58, 71,101,116, 86, 97,114,105, 97, + 98,108,101, 40, 99, 41, 32,116,104,101,110, 10, 9, 9, 9, + 9,114,101,116,117,114,110, 32, 99, 10, 9, 9, 9,101,110, + 100, 10, 9, 9,101,110,100, 10, 9,101,110,100, 10, 9,102, + 111,114, 32,120, 32, 61, 32, 49, 44, 32, 53, 50, 32,100,111, + 10, 9, 9,102,111,114, 32,121, 32, 61, 32, 49, 44, 32, 53, + 50, 32,100,111, 10, 9, 9, 9,102,111,114, 32,122, 32, 61, + 32, 49, 44, 32, 53, 50, 32,100,111, 10, 9, 9, 9, 9,108, + 111, 99, 97,108, 32, 99, 32, 61, 32, 99,104, 97,114,115, 91, + 120, 93, 46, 46, 99,104, 97,114,115, 91,121, 93, 46, 46, 99, + 104, 97,114,115, 91,122, 93, 10, 9, 9, 9, 9,105,102, 32, + 110,111,116, 32, 98,108, 97, 99,107,108,105,115,116, 91, 99, + 93, 32, 97,110,100, 32,110,111,116, 32,115,101,108,102, 58, + 71,101,116, 86, 97,114,105, 97, 98,108,101, 40, 99, 41, 32, + 116,104,101,110, 10, 9, 9, 9, 9, 9,114,101,116,117,114, + 110, 32, 99, 10, 9, 9, 9, 9,101,110,100, 10, 9, 9, 9, + 101,110,100, 10, 9, 9,101,110,100, 10, 9,101,110,100, 10, + 101,110,100, 10, 10,108,111, 99, 97,108, 32, 83, 99,111,112, + 101, 32, 61, 32,123, 10, 9,110,101,119, 32, 61, 32,102,117, + 110, 99,116,105,111,110, 40,115,101,108,102, 44, 32,112, 97, + 114,101,110,116, 41, 10, 9, 9,108,111, 99, 97,108, 32,115, + 32, 61, 32,123, 10, 9, 9, 9, 80, 97,114,101,110,116, 32, + 61, 32,112, 97,114,101,110,116, 44, 10, 9, 9, 9, 76,111, + 99, 97,108,115, 32, 61, 32,123, 32,125, 44, 10, 9, 9, 9, + 71,108,111, 98, 97,108,115, 32, 61, 32,123, 32,125, 44, 10, + 9, 9, 9,111,108,100, 76,111, 99, 97,108, 78, 97,109,101, + 115, 77, 97,112, 32, 61, 32,123, 32,125, 44, 10, 9, 9, 9, + 111,108,100, 71,108,111, 98, 97,108, 78, 97,109,101,115, 77, + 97,112, 32, 61, 32,123, 32,125, 44, 10, 9, 9, 9, 67,104, + 105,108,100,114,101,110, 32, 61, 32,123, 32,125, 44, 10, 9, + 9,125, 10, 10, 9, 9,105,102, 32,112, 97,114,101,110,116, + 32,116,104,101,110, 10, 9, 9, 9,116, 97, 98,108,101, 46, + 105,110,115,101,114,116, 40,112, 97,114,101,110,116, 46, 67, + 104,105,108,100,114,101,110, 44, 32,115, 41, 10, 9, 9,101, + 110,100, 10, 10, 9, 9,114,101,116,117,114,110, 32,115,101, + 116,109,101,116, 97,116, 97, 98,108,101, 40,115, 44, 32,123, + 32, 95, 95,105,110,100,101,120, 32, 61, 32,115,101,108,102, + 32,125, 41, 10, 9,101,110,100, 44, 10, 10, 9, 65,100,100, + 76,111, 99, 97,108, 32, 61, 32,102,117,110, 99,116,105,111, + 110, 40,115,101,108,102, 44, 32,118, 41, 10, 9, 9,116, 97, + 98,108,101, 46,105,110,115,101,114,116, 40,115,101,108,102, + 46, 76,111, 99, 97,108,115, 44, 32,118, 41, 10, 9,101,110, + 100, 44, 10, 10, 9, 65,100,100, 71,108,111, 98, 97,108, 32, + 61, 32,102,117,110, 99,116,105,111,110, 40,115,101,108,102, + 44, 32,118, 41, 10, 9, 9,116, 97, 98,108,101, 46,105,110, + 115,101,114,116, 40,115,101,108,102, 46, 71,108,111, 98, 97, + 108,115, 44, 32,118, 41, 10, 9,101,110,100, 44, 10, 10, 9, + 67,114,101, 97,116,101, 76,111, 99, 97,108, 32, 61, 32,102, + 117,110, 99,116,105,111,110, 40,115,101,108,102, 44, 32,110, + 97,109,101, 41, 10, 9, 9,108,111, 99, 97,108, 32,118, 10, + 9, 9,118, 32, 61, 32,115,101,108,102, 58, 71,101,116, 76, + 111, 99, 97,108, 40,110, 97,109,101, 41, 10, 9, 9,105,102, + 32,118, 32,116,104,101,110, 32,114,101,116,117,114,110, 32, + 118, 32,101,110,100, 10, 9, 9,118, 32, 61, 32,123, 32,125, + 10, 9, 9,118, 46, 83, 99,111,112,101, 32, 61, 32,115,101, + 108,102, 10, 9, 9,118, 46, 78, 97,109,101, 32, 61, 32,110, + 97,109,101, 10, 9, 9,118, 46, 73,115, 71,108,111, 98, 97, + 108, 32, 61, 32,102, 97,108,115,101, 10, 9, 9,118, 46, 67, + 97,110, 82,101,110, 97,109,101, 32, 61, 32,116,114,117,101, + 10, 9, 9,118, 46, 82,101,102,101,114,101,110, 99,101,115, + 32, 61, 32, 49, 10, 9, 9,115,101,108,102, 58, 65,100,100, + 76,111, 99, 97,108, 40,118, 41, 10, 9, 9,114,101,116,117, + 114,110, 32,118, 10, 9,101,110,100, 44, 10, 10, 9, 71,101, + 116, 76,111, 99, 97,108, 32, 61, 32,102,117,110, 99,116,105, + 111,110, 40,115,101,108,102, 44, 32,110, 97,109,101, 41, 10, + 9, 9,102,111,114, 32, 95,107, 44, 32,118, 97,114, 32,105, + 110, 32,112, 97,105,114,115, 40,115,101,108,102, 46, 76,111, + 99, 97,108,115, 41, 32,100,111, 10, 9, 9, 9,105,102, 32, + 118, 97,114, 46, 78, 97,109,101, 32, 61, 61, 32,110, 97,109, + 101, 32,116,104,101,110, 32,114,101,116,117,114,110, 32,118, + 97,114, 32,101,110,100, 10, 9, 9,101,110,100, 10, 10, 9, + 9,105,102, 32,115,101,108,102, 46, 80, 97,114,101,110,116, + 32,116,104,101,110, 10, 9, 9, 9,114,101,116,117,114,110, + 32,115,101,108,102, 46, 80, 97,114,101,110,116, 58, 71,101, + 116, 76,111, 99, 97,108, 40,110, 97,109,101, 41, 10, 9, 9, + 101,110,100, 10, 9,101,110,100, 44, 10, 10, 9, 71,101,116, + 79,108,100, 76,111, 99, 97,108, 32, 61, 32,102,117,110, 99, + 116,105,111,110, 40,115,101,108,102, 44, 32,110, 97,109,101, + 41, 10, 9, 9,105,102, 32,115,101,108,102, 46,111,108,100, + 76,111, 99, 97,108, 78, 97,109,101,115, 77, 97,112, 91,110, + 97,109,101, 93, 32,116,104,101,110, 10, 9, 9, 9,114,101, + 116,117,114,110, 32,115,101,108,102, 46,111,108,100, 76,111, + 99, 97,108, 78, 97,109,101,115, 77, 97,112, 91,110, 97,109, + 101, 93, 10, 9, 9,101,110,100, 10, 9, 9,114,101,116,117, + 114,110, 32,115,101,108,102, 58, 71,101,116, 76,111, 99, 97, + 108, 40,110, 97,109,101, 41, 10, 9,101,110,100, 44, 10, 10, + 9,109, 97,112, 76,111, 99, 97,108, 32, 61, 32,102,117,110, + 99,116,105,111,110, 40,115,101,108,102, 44, 32,110, 97,109, + 101, 44, 32,118, 97,114, 41, 10, 9, 9,115,101,108,102, 46, + 111,108,100, 76,111, 99, 97,108, 78, 97,109,101,115, 77, 97, + 112, 91,110, 97,109,101, 93, 32, 61, 32,118, 97,114, 10, 9, + 101,110,100, 44, 10, 10, 9, 71,101,116, 79,108,100, 71,108, + 111, 98, 97,108, 32, 61, 32,102,117,110, 99,116,105,111,110, + 40,115,101,108,102, 44, 32,110, 97,109,101, 41, 10, 9, 9, + 105,102, 32,115,101,108,102, 46,111,108,100, 71,108,111, 98, + 97,108, 78, 97,109,101,115, 77, 97,112, 91,110, 97,109,101, + 93, 32,116,104,101,110, 10, 9, 9, 9,114,101,116,117,114, + 110, 32,115,101,108,102, 46,111,108,100, 71,108,111, 98, 97, + 108, 78, 97,109,101,115, 77, 97,112, 91,110, 97,109,101, 93, + 10, 9, 9,101,110,100, 10, 9, 9,114,101,116,117,114,110, + 32,115,101,108,102, 58, 71,101,116, 71,108,111, 98, 97,108, + 40,110, 97,109,101, 41, 10, 9,101,110,100, 44, 10, 10, 9, + 109, 97,112, 71,108,111, 98, 97,108, 32, 61, 32,102,117,110, + 99,116,105,111,110, 40,115,101,108,102, 44, 32,110, 97,109, + 101, 44, 32,118, 97,114, 41, 10, 9, 9,115,101,108,102, 46, + 111,108,100, 71,108,111, 98, 97,108, 78, 97,109,101,115, 77, + 97,112, 91,110, 97,109,101, 93, 32, 61, 32,118, 97,114, 10, + 9,101,110,100, 44, 10, 10, 9, 71,101,116, 79,108,100, 86, + 97,114,105, 97, 98,108,101, 32, 61, 32,102,117,110, 99,116, + 105,111,110, 40,115,101,108,102, 44, 32,110, 97,109,101, 41, + 10, 9, 9,114,101,116,117,114,110, 32,115,101,108,102, 58, + 71,101,116, 79,108,100, 76,111, 99, 97,108, 40,110, 97,109, + 101, 41, 32,111,114, 32,115,101,108,102, 58, 71,101,116, 79, + 108,100, 71,108,111, 98, 97,108, 40,110, 97,109,101, 41, 10, + 9,101,110,100, 44, 10, 10, 9, 82,101,110, 97,109,101, 76, + 111, 99, 97,108, 32, 61, 32,102,117,110, 99,116,105,111,110, + 40,115,101,108,102, 44, 32,111,108,100, 78, 97,109,101, 44, + 32,110,101,119, 78, 97,109,101, 41, 10, 9, 9,111,108,100, + 78, 97,109,101, 32, 61, 32,116,121,112,101, 40,111,108,100, + 78, 97,109,101, 41, 32, 61, 61, 32, 39,115,116,114,105,110, + 103, 39, 32, 97,110,100, 32,111,108,100, 78, 97,109,101, 32, + 111,114, 32,111,108,100, 78, 97,109,101, 46, 78, 97,109,101, + 10, 9, 9,108,111, 99, 97,108, 32,102,111,117,110,100, 32, + 61, 32,102, 97,108,115,101, 10, 9, 9,108,111, 99, 97,108, + 32,118, 97,114, 32, 61, 32,115,101,108,102, 58, 71,101,116, + 76,111, 99, 97,108, 40,111,108,100, 78, 97,109,101, 41, 10, + 9, 9,105,102, 32,118, 97,114, 32,116,104,101,110, 10, 9, + 9, 9,118, 97,114, 46, 78, 97,109,101, 32, 61, 32,110,101, + 119, 78, 97,109,101, 10, 9, 9, 9,115,101,108,102, 58,109, + 97,112, 76,111, 99, 97,108, 40,111,108,100, 78, 97,109,101, + 44, 32,118, 97,114, 41, 10, 9, 9, 9,102,111,117,110,100, + 32, 61, 32,116,114,117,101, 10, 9, 9,101,110,100, 10, 9, + 9,105,102, 32,110,111,116, 32,102,111,117,110,100, 32, 97, + 110,100, 32,115,101,108,102, 46, 80, 97,114,101,110,116, 32, + 116,104,101,110, 10, 9, 9, 9,115,101,108,102, 46, 80, 97, + 114,101,110,116, 58, 82,101,110, 97,109,101, 76,111, 99, 97, + 108, 40,111,108,100, 78, 97,109,101, 44, 32,110,101,119, 78, + 97,109,101, 41, 10, 9, 9,101,110,100, 10, 9,101,110,100, + 44, 10, 10, 9, 82,101,110, 97,109,101, 71,108,111, 98, 97, + 108, 32, 61, 32,102,117,110, 99,116,105,111,110, 40,115,101, + 108,102, 44, 32,111,108,100, 78, 97,109,101, 44, 32,110,101, + 119, 78, 97,109,101, 41, 10, 9, 9,111,108,100, 78, 97,109, + 101, 32, 61, 32,116,121,112,101, 40,111,108,100, 78, 97,109, + 101, 41, 32, 61, 61, 32, 39,115,116,114,105,110,103, 39, 32, + 97,110,100, 32,111,108,100, 78, 97,109,101, 32,111,114, 32, + 111,108,100, 78, 97,109,101, 46, 78, 97,109,101, 10, 9, 9, + 108,111, 99, 97,108, 32,102,111,117,110,100, 32, 61, 32,102, + 97,108,115,101, 10, 9, 9,108,111, 99, 97,108, 32,118, 97, + 114, 32, 61, 32,115,101,108,102, 58, 71,101,116, 71,108,111, + 98, 97,108, 40,111,108,100, 78, 97,109,101, 41, 10, 9, 9, + 105,102, 32,118, 97,114, 32,116,104,101,110, 10, 9, 9, 9, + 118, 97,114, 46, 78, 97,109,101, 32, 61, 32,110,101,119, 78, + 97,109,101, 10, 9, 9, 9,115,101,108,102, 58,109, 97,112, + 71,108,111, 98, 97,108, 40,111,108,100, 78, 97,109,101, 44, + 32,118, 97,114, 41, 10, 9, 9, 9,102,111,117,110,100, 32, + 61, 32,116,114,117,101, 10, 9, 9,101,110,100, 10, 9, 9, + 105,102, 32,110,111,116, 32,102,111,117,110,100, 32, 97,110, + 100, 32,115,101,108,102, 46, 80, 97,114,101,110,116, 32,116, + 104,101,110, 10, 9, 9, 9,115,101,108,102, 46, 80, 97,114, + 101,110,116, 58, 82,101,110, 97,109,101, 71,108,111, 98, 97, + 108, 40,111,108,100, 78, 97,109,101, 44, 32,110,101,119, 78, + 97,109,101, 41, 10, 9, 9,101,110,100, 10, 9,101,110,100, + 44, 10, 10, 9, 82,101,110, 97,109,101, 86, 97,114,105, 97, + 98,108,101, 32, 61, 32,102,117,110, 99,116,105,111,110, 40, + 115,101,108,102, 44, 32,111,108,100, 78, 97,109,101, 44, 32, + 110,101,119, 78, 97,109,101, 41, 10, 9, 9,111,108,100, 78, + 97,109,101, 32, 61, 32,116,121,112,101, 40,111,108,100, 78, + 97,109,101, 41, 32, 61, 61, 32, 39,115,116,114,105,110,103, + 39, 32, 97,110,100, 32,111,108,100, 78, 97,109,101, 32,111, + 114, 32,111,108,100, 78, 97,109,101, 46, 78, 97,109,101, 10, + 9, 9,105,102, 32,115,101,108,102, 58, 71,101,116, 76,111, + 99, 97,108, 40,111,108,100, 78, 97,109,101, 41, 32,116,104, + 101,110, 10, 9, 9, 9,115,101,108,102, 58, 82,101,110, 97, + 109,101, 76,111, 99, 97,108, 40,111,108,100, 78, 97,109,101, + 44, 32,110,101,119, 78, 97,109,101, 41, 10, 9, 9,101,108, + 115,101, 10, 9, 9, 9,115,101,108,102, 58, 82,101,110, 97, + 109,101, 71,108,111, 98, 97,108, 40,111,108,100, 78, 97,109, + 101, 44, 32,110,101,119, 78, 97,109,101, 41, 10, 9, 9,101, + 110,100, 10, 9,101,110,100, 44, 10, 10, 9, 71,101,116, 65, + 108,108, 86, 97,114,105, 97, 98,108,101,115, 32, 61, 32,102, + 117,110, 99,116,105,111,110, 40,115,101,108,102, 41, 10, 9, + 9,108,111, 99, 97,108, 32,114,101,116, 32, 61, 32,115,101, + 108,102, 58,103,101,116, 86, 97,114,115, 40,116,114,117,101, + 41, 32, 45, 45, 32,100,111,119,110, 10, 9, 9,102,111,114, + 32, 95,107, 44, 32,118, 32,105,110, 32,112, 97,105,114,115, + 40,115,101,108,102, 58,103,101,116, 86, 97,114,115, 40,102, + 97,108,115,101, 41, 41, 32,100,111, 32, 45, 45, 32,117,112, + 10, 9, 9, 9,116, 97, 98,108,101, 46,105,110,115,101,114, + 116, 40,114,101,116, 44, 32,118, 41, 10, 9, 9,101,110,100, + 10, 9, 9,114,101,116,117,114,110, 32,114,101,116, 10, 9, + 101,110,100, 44, 10, 10, 9,103,101,116, 86, 97,114,115, 32, + 61, 32,102,117,110, 99,116,105,111,110, 40,115,101,108,102, + 44, 32,116,111,112, 41, 10, 9, 9,108,111, 99, 97,108, 32, + 114,101,116, 32, 61, 32,123, 32,125, 10, 9, 9,105,102, 32, + 116,111,112, 32,116,104,101,110, 10, 9, 9, 9,102,111,114, + 32, 95,107, 44, 32,118, 32,105,110, 32,112, 97,105,114,115, + 40,115,101,108,102, 46, 67,104,105,108,100,114,101,110, 41, + 32,100,111, 10, 9, 9, 9, 9,102,111,114, 32, 95,107, 50, + 44, 32,118, 50, 32,105,110, 32,112, 97,105,114,115, 40,118, + 58,103,101,116, 86, 97,114,115, 40,116,114,117,101, 41, 41, + 32,100,111, 10, 9, 9, 9, 9, 9,116, 97, 98,108,101, 46, + 105,110,115,101,114,116, 40,114,101,116, 44, 32,118, 50, 41, + 10, 9, 9, 9, 9,101,110,100, 10, 9, 9, 9,101,110,100, + 10, 9, 9,101,108,115,101, 10, 9, 9, 9,102,111,114, 32, + 95,107, 44, 32,118, 32,105,110, 32,112, 97,105,114,115, 40, + 115,101,108,102, 46, 76,111, 99, 97,108,115, 41, 32,100,111, + 10, 9, 9, 9, 9,116, 97, 98,108,101, 46,105,110,115,101, + 114,116, 40,114,101,116, 44, 32,118, 41, 10, 9, 9, 9,101, + 110,100, 10, 9, 9, 9,102,111,114, 32, 95,107, 44, 32,118, + 32,105,110, 32,112, 97,105,114,115, 40,115,101,108,102, 46, + 71,108,111, 98, 97,108,115, 41, 32,100,111, 10, 9, 9, 9, + 9,116, 97, 98,108,101, 46,105,110,115,101,114,116, 40,114, + 101,116, 44, 32,118, 41, 10, 9, 9, 9,101,110,100, 10, 9, + 9, 9,105,102, 32,115,101,108,102, 46, 80, 97,114,101,110, + 116, 32,116,104,101,110, 10, 9, 9, 9, 9,102,111,114, 32, + 95,107, 44, 32,118, 32,105,110, 32,112, 97,105,114,115, 40, + 115,101,108,102, 46, 80, 97,114,101,110,116, 58,103,101,116, + 86, 97,114,115, 40,102, 97,108,115,101, 41, 41, 32,100,111, + 10, 9, 9, 9, 9, 9,116, 97, 98,108,101, 46,105,110,115, + 101,114,116, 40,114,101,116, 44, 32,118, 41, 10, 9, 9, 9, + 9,101,110,100, 10, 9, 9, 9,101,110,100, 10, 9, 9,101, + 110,100, 10, 9, 9,114,101,116,117,114,110, 32,114,101,116, + 10, 9,101,110,100, 44, 10, 10, 9, 67,114,101, 97,116,101, + 71,108,111, 98, 97,108, 32, 61, 32,102,117,110, 99,116,105, + 111,110, 40,115,101,108,102, 44, 32,110, 97,109,101, 41, 10, + 9, 9,108,111, 99, 97,108, 32,118, 10, 9, 9,118, 32, 61, + 32,115,101,108,102, 58, 71,101,116, 71,108,111, 98, 97,108, + 40,110, 97,109,101, 41, 10, 9, 9,105,102, 32,118, 32,116, + 104,101,110, 32,114,101,116,117,114,110, 32,118, 32,101,110, + 100, 10, 9, 9,118, 32, 61, 32,123, 32,125, 10, 9, 9,118, + 46, 83, 99,111,112,101, 32, 61, 32,115,101,108,102, 10, 9, + 9,118, 46, 78, 97,109,101, 32, 61, 32,110, 97,109,101, 10, + 9, 9,118, 46, 73,115, 71,108,111, 98, 97,108, 32, 61, 32, + 116,114,117,101, 10, 9, 9,118, 46, 67, 97,110, 82,101,110, + 97,109,101, 32, 61, 32,116,114,117,101, 10, 9, 9,118, 46, + 82,101,102,101,114,101,110, 99,101,115, 32, 61, 32, 49, 10, + 9, 9,115,101,108,102, 58, 65,100,100, 71,108,111, 98, 97, + 108, 40,118, 41, 10, 9, 9,114,101,116,117,114,110, 32,118, + 10, 9,101,110,100, 44, 10, 10, 9, 71,101,116, 71,108,111, + 98, 97,108, 32, 61, 32,102,117,110, 99,116,105,111,110, 40, + 115,101,108,102, 44, 32,110, 97,109,101, 41, 10, 9, 9,102, + 111,114, 32, 95,107, 44, 32,118, 32,105,110, 32,112, 97,105, + 114,115, 40,115,101,108,102, 46, 71,108,111, 98, 97,108,115, + 41, 32,100,111, 10, 9, 9, 9,105,102, 32,118, 46, 78, 97, + 109,101, 32, 61, 61, 32,110, 97,109,101, 32,116,104,101,110, + 32,114,101,116,117,114,110, 32,118, 32,101,110,100, 10, 9, + 9,101,110,100, 10, 10, 9, 9,105,102, 32,115,101,108,102, + 46, 80, 97,114,101,110,116, 32,116,104,101,110, 10, 9, 9, + 9,114,101,116,117,114,110, 32,115,101,108,102, 46, 80, 97, + 114,101,110,116, 58, 71,101,116, 71,108,111, 98, 97,108, 40, + 110, 97,109,101, 41, 10, 9, 9,101,110,100, 10, 9,101,110, + 100, 44, 10, 10, 9, 71,101,116, 86, 97,114,105, 97, 98,108, + 101, 32, 61, 32,102,117,110, 99,116,105,111,110, 40,115,101, + 108,102, 44, 32,110, 97,109,101, 41, 10, 9, 9,114,101,116, + 117,114,110, 32,115,101,108,102, 58, 71,101,116, 76,111, 99, + 97,108, 40,110, 97,109,101, 41, 32,111,114, 32,115,101,108, + 102, 58, 71,101,116, 71,108,111, 98, 97,108, 40,110, 97,109, + 101, 41, 10, 9,101,110,100, 44, 10, 10, 9, 79, 98,102,117, + 115, 99, 97,116,101, 76,111, 99, 97,108,115, 32, 61, 32,102, + 117,110, 99,116,105,111,110, 40,115,101,108,102, 41, 10, 9, + 9,102,111,114, 32, 95,105, 44, 32,118, 97,114, 32,105,110, + 32,112, 97,105,114,115, 40,115,101,108,102, 46, 76,111, 99, + 97,108,115, 41, 32,100,111, 10, 9, 9, 9,105,102, 32,118, + 97,114, 46, 78, 97,109,101, 32, 61, 61, 32, 34, 95, 69, 78, + 86, 34, 32,116,104,101,110, 10, 9, 9, 9, 9,115,101,108, + 102, 58, 82,101,110, 97,109,101, 76,111, 99, 97,108, 40,118, + 97,114, 46, 78, 97,109,101, 44, 32, 34, 95, 69, 78, 86, 34, + 41, 10, 9, 9, 9,101,108,115,101, 10, 9, 9, 9, 9,108, + 111, 99, 97,108, 32,105,100, 32, 61, 32, 71,101,116, 85,110, + 105,113,117,101, 40,115,101,108,102, 41, 10, 9, 9, 9, 9, + 115,101,108,102, 58, 82,101,110, 97,109,101, 76,111, 99, 97, + 108, 40,118, 97,114, 46, 78, 97,109,101, 44, 32,105,100, 41, + 10, 9, 9, 9,101,110,100, 10, 9, 9,101,110,100, 10, 9, + 101,110,100, 10,125, 10, 10, 45, 45, 10, 45, 45, 32, 80, 97, + 114,115,101, 76,117, 97, 46,108,117, 97, 10, 45, 45, 10, 45, + 45, 32, 84,104,101, 32,109, 97,105,110, 32,108,117, 97, 32, + 112, 97,114,115,101,114, 32, 97,110,100, 32,108,101,120,101, + 114, 46, 10, 45, 45, 32, 76,101,120, 76,117, 97, 32,114,101, + 116,117,114,110,115, 32, 97, 32, 76,117, 97, 32,116,111,107, + 101,110, 32,115,116,114,101, 97,109, 44, 32,119,105,116,104, + 32,116,111,107,101,110,115, 32,116,104, 97,116, 32,112,114, + 101,115,101,114,118,101, 10, 45, 45, 32, 97,108,108, 32,119, + 104,105,116,101,115,112, 97, 99,101, 32,102,111,114,109, 97, + 116,116,105,110,103, 32,105,110,102,111,114,109, 97,116,105, + 111,110, 46, 10, 45, 45, 32, 80, 97,114,115,101, 76,117, 97, + 32,114,101,116,117,114,110,115, 32, 97,110, 32, 65, 83, 84, + 44, 32,105,110,116,101,114,110, 97,108,108,121, 32,114,101, + 108,121,105,110,103, 32,111,110, 32, 76,101,120, 76,117, 97, + 46, 10, 45, 45, 10, 10,108,111, 99, 97,108, 32, 76,111,119, + 101,114, 67,104, 97,114,115, 32, 61, 32,108,111,111,107,117, + 112,105,102,121,123, 39, 97, 39, 44, 32, 39, 98, 39, 44, 32, + 39, 99, 39, 44, 32, 39,100, 39, 44, 32, 39,101, 39, 44, 32, + 39,102, 39, 44, 32, 39,103, 39, 44, 32, 39,104, 39, 44, 32, + 39,105, 39, 44, 10, 9, 9, 9, 9, 9, 9, 9, 32, 39,106, + 39, 44, 32, 39,107, 39, 44, 32, 39,108, 39, 44, 32, 39,109, + 39, 44, 32, 39,110, 39, 44, 32, 39,111, 39, 44, 32, 39,112, + 39, 44, 32, 39,113, 39, 44, 32, 39,114, 39, 44, 10, 9, 9, + 9, 9, 9, 9, 9, 32, 39,115, 39, 44, 32, 39,116, 39, 44, + 32, 39,117, 39, 44, 32, 39,118, 39, 44, 32, 39,119, 39, 44, + 32, 39,120, 39, 44, 32, 39,121, 39, 44, 32, 39,122, 39,125, + 10,108,111, 99, 97,108, 32, 85,112,112,101,114, 67,104, 97, + 114,115, 32, 61, 32,108,111,111,107,117,112,105,102,121,123, + 39, 65, 39, 44, 32, 39, 66, 39, 44, 32, 39, 67, 39, 44, 32, + 39, 68, 39, 44, 32, 39, 69, 39, 44, 32, 39, 70, 39, 44, 32, + 39, 71, 39, 44, 32, 39, 72, 39, 44, 32, 39, 73, 39, 44, 10, + 9, 9, 9, 9, 9, 9, 9, 32, 39, 74, 39, 44, 32, 39, 75, + 39, 44, 32, 39, 76, 39, 44, 32, 39, 77, 39, 44, 32, 39, 78, + 39, 44, 32, 39, 79, 39, 44, 32, 39, 80, 39, 44, 32, 39, 81, + 39, 44, 32, 39, 82, 39, 44, 10, 9, 9, 9, 9, 9, 9, 9, + 32, 39, 83, 39, 44, 32, 39, 84, 39, 44, 32, 39, 85, 39, 44, + 32, 39, 86, 39, 44, 32, 39, 87, 39, 44, 32, 39, 88, 39, 44, + 32, 39, 89, 39, 44, 32, 39, 90, 39,125, 10,108,111, 99, 97, + 108, 32, 68,105,103,105,116,115, 32, 61, 32,108,111,111,107, + 117,112,105,102,121,123, 39, 48, 39, 44, 32, 39, 49, 39, 44, + 32, 39, 50, 39, 44, 32, 39, 51, 39, 44, 32, 39, 52, 39, 44, + 32, 39, 53, 39, 44, 32, 39, 54, 39, 44, 32, 39, 55, 39, 44, + 32, 39, 56, 39, 44, 32, 39, 57, 39,125, 10,108,111, 99, 97, + 108, 32, 72,101,120, 68,105,103,105,116,115, 32, 61, 32,108, + 111,111,107,117,112,105,102,121,123, 39, 48, 39, 44, 32, 39, + 49, 39, 44, 32, 39, 50, 39, 44, 32, 39, 51, 39, 44, 32, 39, + 52, 39, 44, 32, 39, 53, 39, 44, 32, 39, 54, 39, 44, 32, 39, + 55, 39, 44, 32, 39, 56, 39, 44, 32, 39, 57, 39, 44, 10, 9, + 9, 9, 9, 9, 9, 9, 39, 65, 39, 44, 32, 39, 97, 39, 44, + 32, 39, 66, 39, 44, 32, 39, 98, 39, 44, 32, 39, 67, 39, 44, + 32, 39, 99, 39, 44, 32, 39, 68, 39, 44, 32, 39,100, 39, 44, + 32, 39, 69, 39, 44, 32, 39,101, 39, 44, 32, 39, 70, 39, 44, + 32, 39,102, 39,125, 10, 10,108,111, 99, 97,108, 32, 83,121, + 109, 98,111,108,115, 32, 61, 32,108,111,111,107,117,112,105, + 102,121,123, 39, 43, 39, 44, 32, 39, 45, 39, 44, 32, 39, 42, + 39, 44, 32, 39, 47, 39, 44, 32, 39, 94, 39, 44, 32, 39, 37, + 39, 44, 32, 39, 44, 39, 44, 32, 39,123, 39, 44, 32, 39,125, + 39, 44, 32, 39, 91, 39, 44, 32, 39, 93, 39, 44, 32, 39, 40, + 39, 44, 32, 39, 41, 39, 44, 32, 39, 59, 39, 44, 32, 39, 35, + 39,125, 10, 10,108,111, 99, 97,108, 32, 75,101,121,119,111, + 114,100,115, 32, 61, 32,108,111,111,107,117,112,105,102,121, + 123, 10, 9, 39, 97,110,100, 39, 44, 32, 39, 98,114,101, 97, + 107, 39, 44, 32, 39,100,111, 39, 44, 32, 39,101,108,115,101, + 39, 44, 32, 39,101,108,115,101,105,102, 39, 44, 10, 9, 39, + 101,110,100, 39, 44, 32, 39,102, 97,108,115,101, 39, 44, 32, + 39,102,111,114, 39, 44, 32, 39,102,117,110, 99,116,105,111, + 110, 39, 44, 32, 39,103,111,116,111, 39, 44, 32, 39,105,102, + 39, 44, 10, 9, 39,105,110, 39, 44, 32, 39,108,111, 99, 97, + 108, 39, 44, 32, 39,110,105,108, 39, 44, 32, 39,110,111,116, + 39, 44, 32, 39,111,114, 39, 44, 32, 39,114,101,112,101, 97, + 116, 39, 44, 10, 9, 39,114,101,116,117,114,110, 39, 44, 32, + 39,116,104,101,110, 39, 44, 32, 39,116,114,117,101, 39, 44, + 32, 39,117,110,116,105,108, 39, 44, 32, 39,119,104,105,108, + 101, 39, 44, 10,125, 59, 10, 10,108,111, 99, 97,108, 32,102, + 117,110, 99,116,105,111,110, 32, 76,101,120, 76,117, 97, 40, + 115,114, 99, 41, 10, 9, 45, 45,116,111,107,101,110, 32,100, + 117,109,112, 10, 9,108,111, 99, 97,108, 32,116,111,107,101, + 110,115, 32, 61, 32,123,125, 10, 10, 9,108,111, 99, 97,108, + 32,115,116, 44, 32,101,114,114, 32, 61, 32,112, 99, 97,108, + 108, 40,102,117,110, 99,116,105,111,110, 40, 41, 10, 9, 9, + 45, 45,108,105,110,101, 32, 47, 32, 99,104, 97,114, 32, 47, + 32,112,111,105,110,116,101,114, 32,116,114, 97, 99,107,105, + 110,103, 10, 9, 9,108,111, 99, 97,108, 32,112, 32, 61, 32, + 49, 10, 9, 9,108,111, 99, 97,108, 32,108,105,110,101, 32, + 61, 32, 49, 10, 9, 9,108,111, 99, 97,108, 32, 99,104, 97, + 114, 32, 61, 32, 49, 10, 10, 9, 9, 45, 45,103,101,116, 32, + 47, 32,112,101,101,107, 32,102,117,110, 99,116,105,111,110, + 115, 10, 9, 9,108,111, 99, 97,108, 32,102,117,110, 99,116, + 105,111,110, 32,103,101,116, 40, 41, 10, 9, 9, 9,108,111, + 99, 97,108, 32, 99, 32, 61, 32,115,114, 99, 58,115,117, 98, + 40,112, 44,112, 41, 10, 9, 9, 9,105,102, 32, 99, 32, 61, + 61, 32, 39, 92,110, 39, 32,116,104,101,110, 10, 9, 9, 9, + 9, 99,104, 97,114, 32, 61, 32, 49, 10, 9, 9, 9, 9,108, + 105,110,101, 32, 61, 32,108,105,110,101, 32, 43, 32, 49, 10, + 9, 9, 9,101,108,115,101, 10, 9, 9, 9, 9, 99,104, 97, + 114, 32, 61, 32, 99,104, 97,114, 32, 43, 32, 49, 10, 9, 9, + 9,101,110,100, 10, 9, 9, 9,112, 32, 61, 32,112, 32, 43, + 32, 49, 10, 9, 9, 9,114,101,116,117,114,110, 32, 99, 10, + 9, 9,101,110,100, 10, 9, 9,108,111, 99, 97,108, 32,102, + 117,110, 99,116,105,111,110, 32,112,101,101,107, 40,110, 41, + 10, 9, 9, 9,110, 32, 61, 32,110, 32,111,114, 32, 48, 10, + 9, 9, 9,114,101,116,117,114,110, 32,115,114, 99, 58,115, + 117, 98, 40,112, 43,110, 44,112, 43,110, 41, 10, 9, 9,101, + 110,100, 10, 9, 9,108,111, 99, 97,108, 32,102,117,110, 99, + 116,105,111,110, 32, 99,111,110,115,117,109,101, 40, 99,104, + 97,114,115, 41, 10, 9, 9, 9,108,111, 99, 97,108, 32, 99, + 32, 61, 32,112,101,101,107, 40, 41, 10, 9, 9, 9,102,111, + 114, 32,105, 32, 61, 32, 49, 44, 32, 35, 99,104, 97,114,115, + 32,100,111, 10, 9, 9, 9, 9,105,102, 32, 99, 32, 61, 61, + 32, 99,104, 97,114,115, 58,115,117, 98, 40,105, 44,105, 41, + 32,116,104,101,110, 32,114,101,116,117,114,110, 32,103,101, + 116, 40, 41, 32,101,110,100, 10, 9, 9, 9,101,110,100, 10, + 9, 9,101,110,100, 10, 10, 9, 9, 45, 45,115,104, 97,114, + 101,100, 32,115,116,117,102,102, 10, 9, 9,108,111, 99, 97, + 108, 32,102,117,110, 99,116,105,111,110, 32,103,101,110,101, + 114, 97,116,101, 69,114,114,111,114, 40,101,114,114, 41, 10, + 9, 9, 9,114,101,116,117,114,110, 32,101,114,114,111,114, + 40, 34, 62, 62, 32, 58, 34, 46, 46,108,105,110,101, 46, 46, + 34, 58, 34, 46, 46, 99,104, 97,114, 46, 46, 34, 58, 32, 34, + 46, 46,101,114,114, 44, 32, 48, 41, 10, 9, 9,101,110,100, + 10, 10, 9, 9,108,111, 99, 97,108, 32,102,117,110, 99,116, + 105,111,110, 32,116,114,121, 71,101,116, 76,111,110,103, 83, + 116,114,105,110,103, 40, 41, 10, 9, 9, 9,108,111, 99, 97, + 108, 32,115,116, 97,114,116, 32, 61, 32,112, 10, 9, 9, 9, + 105,102, 32,112,101,101,107, 40, 41, 32, 61, 61, 32, 39, 91, + 39, 32,116,104,101,110, 10, 9, 9, 9, 9,108,111, 99, 97, + 108, 32,101,113,117, 97,108,115, 67,111,117,110,116, 32, 61, + 32, 48, 10, 9, 9, 9, 9,108,111, 99, 97,108, 32,100,101, + 112,116,104, 32, 61, 32, 49, 10, 9, 9, 9, 9,119,104,105, + 108,101, 32,112,101,101,107, 40,101,113,117, 97,108,115, 67, + 111,117,110,116, 43, 49, 41, 32, 61, 61, 32, 39, 61, 39, 32, + 100,111, 10, 9, 9, 9, 9, 9,101,113,117, 97,108,115, 67, + 111,117,110,116, 32, 61, 32,101,113,117, 97,108,115, 67,111, + 117,110,116, 32, 43, 32, 49, 10, 9, 9, 9, 9,101,110,100, + 10, 9, 9, 9, 9,105,102, 32,112,101,101,107, 40,101,113, + 117, 97,108,115, 67,111,117,110,116, 43, 49, 41, 32, 61, 61, + 32, 39, 91, 39, 32,116,104,101,110, 10, 9, 9, 9, 9, 9, + 45, 45,115,116, 97,114,116, 32,112, 97,114,115,105,110,103, + 32,116,104,101, 32,115,116,114,105,110,103, 46, 32, 83,116, + 114,105,112, 32,116,104,101, 32,115,116, 97,114,116,105,110, + 103, 32, 98,105,116, 10, 9, 9, 9, 9, 9,102,111,114, 32, + 95, 32, 61, 32, 48, 44, 32,101,113,117, 97,108,115, 67,111, + 117,110,116, 43, 49, 32,100,111, 32,103,101,116, 40, 41, 32, + 101,110,100, 10, 10, 9, 9, 9, 9, 9, 45, 45,103,101,116, + 32,116,104,101, 32, 99,111,110,116,101,110,116,115, 10, 9, + 9, 9, 9, 9,108,111, 99, 97,108, 32, 99,111,110,116,101, + 110,116, 83,116, 97,114,116, 32, 61, 32,112, 10, 9, 9, 9, + 9, 9,119,104,105,108,101, 32,116,114,117,101, 32,100,111, + 10, 9, 9, 9, 9, 9, 9, 45, 45, 99,104,101, 99,107, 32, + 102,111,114, 32,101,111,102, 10, 9, 9, 9, 9, 9, 9,105, + 102, 32,112,101,101,107, 40, 41, 32, 61, 61, 32, 39, 39, 32, + 116,104,101,110, 10, 9, 9, 9, 9, 9, 9, 9,103,101,110, + 101,114, 97,116,101, 69,114,114,111,114, 40, 34, 69,120,112, + 101, 99,116,101,100, 32, 96, 93, 34, 46, 46,115,116,114,105, + 110,103, 46,114,101,112, 40, 39, 61, 39, 44, 32,101,113,117, + 97,108,115, 67,111,117,110,116, 41, 46, 46, 34, 93, 96, 32, + 110,101, 97,114, 32, 60,101,111,102, 62, 46, 34, 44, 32, 51, + 41, 10, 9, 9, 9, 9, 9, 9,101,110,100, 10, 10, 9, 9, + 9, 9, 9, 9, 45, 45, 99,104,101, 99,107, 32,102,111,114, + 32,116,104,101, 32,101,110,100, 10, 9, 9, 9, 9, 9, 9, + 108,111, 99, 97,108, 32,102,111,117,110,100, 69,110,100, 32, + 61, 32,116,114,117,101, 10, 9, 9, 9, 9, 9, 9,105,102, + 32,112,101,101,107, 40, 41, 32, 61, 61, 32, 39, 93, 39, 32, + 116,104,101,110, 10, 9, 9, 9, 9, 9, 9, 9,102,111,114, + 32,105, 32, 61, 32, 49, 44, 32,101,113,117, 97,108,115, 67, + 111,117,110,116, 32,100,111, 10, 9, 9, 9, 9, 9, 9, 9, + 9,105,102, 32,112,101,101,107, 40,105, 41, 32,126, 61, 32, + 39, 61, 39, 32,116,104,101,110, 32,102,111,117,110,100, 69, + 110,100, 32, 61, 32,102, 97,108,115,101, 32,101,110,100, 10, + 9, 9, 9, 9, 9, 9, 9,101,110,100, 10, 9, 9, 9, 9, + 9, 9, 9,105,102, 32,112,101,101,107, 40,101,113,117, 97, + 108,115, 67,111,117,110,116, 43, 49, 41, 32,126, 61, 32, 39, + 93, 39, 32,116,104,101,110, 10, 9, 9, 9, 9, 9, 9, 9, + 9,102,111,117,110,100, 69,110,100, 32, 61, 32,102, 97,108, + 115,101, 10, 9, 9, 9, 9, 9, 9, 9,101,110,100, 10, 9, + 9, 9, 9, 9, 9,101,108,115,101, 10, 9, 9, 9, 9, 9, + 9, 9,105,102, 32,112,101,101,107, 40, 41, 32, 61, 61, 32, + 39, 91, 39, 32,116,104,101,110, 10, 9, 9, 9, 9, 9, 9, + 9, 9, 45, 45, 32,105,115, 32,116,104,101,114,101, 32, 97, + 110, 32,101,109, 98,101,100,100,101,100, 32,108,111,110,103, + 32,115,116,114,105,110,103, 63, 10, 9, 9, 9, 9, 9, 9, + 9, 9,108,111, 99, 97,108, 32,101,109, 98,101,100,100,101, + 100, 32, 61, 32,116,114,117,101, 10, 9, 9, 9, 9, 9, 9, + 9, 9,102,111,114, 32,105, 32, 61, 32, 49, 44, 32,101,113, + 117, 97,108,115, 67,111,117,110,116, 32,100,111, 10, 9, 9, + 9, 9, 9, 9, 9, 9, 9,105,102, 32,112,101,101,107, 40, + 105, 41, 32,126, 61, 32, 39, 61, 39, 32,116,104,101,110, 10, + 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,101,109, 98,101,100, + 100,101,100, 32, 61, 32,102, 97,108,115,101, 10, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 98,114,101, 97,107, 10, 9, 9, + 9, 9, 9, 9, 9, 9, 9,101,110,100, 10, 9, 9, 9, 9, + 9, 9, 9, 9,101,110,100, 10, 9, 9, 9, 9, 9, 9, 9, + 9,105,102, 32,112,101,101,107, 40,101,113,117, 97,108,115, + 67,111,117,110,116, 32, 43, 32, 49, 41, 32, 61, 61, 32, 39, + 91, 39, 32, 97,110,100, 32,101,109, 98,101,100,100,101,100, + 32,116,104,101,110, 10, 9, 9, 9, 9, 9, 9, 9, 9, 9, + 45, 45, 32,111,104, 32,108,111,111,107, 44, 32,116,104,101, + 114,101, 32,119, 97,115, 10, 9, 9, 9, 9, 9, 9, 9, 9, + 9,100,101,112,116,104, 32, 61, 32,100,101,112,116,104, 32, + 43, 32, 49, 10, 9, 9, 9, 9, 9, 9, 9, 9, 9,102,111, + 114, 32,105, 32, 61, 32, 49, 44, 32, 40,101,113,117, 97,108, + 115, 67,111,117,110,116, 32, 43, 32, 50, 41, 32,100,111, 10, + 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,103,101,116, 40, 41, + 10, 9, 9, 9, 9, 9, 9, 9, 9, 9,101,110,100, 10, 9, + 9, 9, 9, 9, 9, 9, 9,101,110,100, 10, 9, 9, 9, 9, + 9, 9, 9,101,110,100, 10, 9, 9, 9, 9, 9, 9, 9,102, + 111,117,110,100, 69,110,100, 32, 61, 32,102, 97,108,115,101, + 10, 9, 9, 9, 9, 9, 9,101,110,100, 10, 9, 9, 9, 9, + 9, 9, 45, 45, 10, 9, 9, 9, 9, 9, 9,105,102, 32,102, + 111,117,110,100, 69,110,100, 32,116,104,101,110, 10, 9, 9, + 9, 9, 9, 9, 9,100,101,112,116,104, 32, 61, 32,100,101, + 112,116,104, 32, 45, 32, 49, 10, 9, 9, 9, 9, 9, 9, 9, + 105,102, 32,100,101,112,116,104, 32, 61, 61, 32, 48, 32,116, + 104,101,110, 10, 9, 9, 9, 9, 9, 9, 9, 9, 98,114,101, + 97,107, 10, 9, 9, 9, 9, 9, 9, 9,101,108,115,101, 10, + 9, 9, 9, 9, 9, 9, 9, 9,102,111,114, 32,105, 32, 61, + 32, 49, 44, 32,101,113,117, 97,108,115, 67,111,117,110,116, + 32, 43, 32, 50, 32,100,111, 10, 9, 9, 9, 9, 9, 9, 9, + 9, 9,103,101,116, 40, 41, 10, 9, 9, 9, 9, 9, 9, 9, + 9,101,110,100, 10, 9, 9, 9, 9, 9, 9, 9,101,110,100, + 10, 9, 9, 9, 9, 9, 9,101,108,115,101, 10, 9, 9, 9, + 9, 9, 9, 9,103,101,116, 40, 41, 10, 9, 9, 9, 9, 9, + 9,101,110,100, 10, 9, 9, 9, 9, 9,101,110,100, 10, 10, + 9, 9, 9, 9, 9, 45, 45,103,101,116, 32,116,104,101, 32, + 105,110,116,101,114,105,111,114, 32,115,116,114,105,110,103, + 10, 9, 9, 9, 9, 9,108,111, 99, 97,108, 32, 99,111,110, + 116,101,110,116, 83,116,114,105,110,103, 32, 61, 32,115,114, + 99, 58,115,117, 98, 40, 99,111,110,116,101,110,116, 83,116, + 97,114,116, 44, 32,112, 45, 49, 41, 10, 10, 9, 9, 9, 9, + 9, 45, 45,102,111,117,110,100, 32,116,104,101, 32,101,110, + 100, 46, 32, 71,101,116, 32,114,105,100, 32,111,102, 32,116, + 104,101, 32,116,114, 97,105,108,105,110,103, 32, 98,105,116, + 10, 9, 9, 9, 9, 9,102,111,114, 32,105, 32, 61, 32, 48, + 44, 32,101,113,117, 97,108,115, 67,111,117,110,116, 43, 49, + 32,100,111, 32,103,101,116, 40, 41, 32,101,110,100, 10, 10, + 9, 9, 9, 9, 9, 45, 45,103,101,116, 32,116,104,101, 32, + 101,120,116,101,114,105,111,114, 32,115,116,114,105,110,103, + 10, 9, 9, 9, 9, 9,108,111, 99, 97,108, 32,108,111,110, + 103, 83,116,114,105,110,103, 32, 61, 32,115,114, 99, 58,115, + 117, 98, 40,115,116, 97,114,116, 44, 32,112, 45, 49, 41, 10, + 10, 9, 9, 9, 9, 9, 45, 45,114,101,116,117,114,110, 32, + 116,104,101, 32,115,116,117,102,102, 10, 9, 9, 9, 9, 9, + 114,101,116,117,114,110, 32, 99,111,110,116,101,110,116, 83, + 116,114,105,110,103, 44, 32,108,111,110,103, 83,116,114,105, + 110,103, 10, 9, 9, 9, 9,101,108,115,101, 10, 9, 9, 9, + 9, 9,114,101,116,117,114,110, 32,110,105,108, 10, 9, 9, + 9, 9,101,110,100, 10, 9, 9, 9,101,108,115,101, 10, 9, + 9, 9, 9,114,101,116,117,114,110, 32,110,105,108, 10, 9, + 9, 9,101,110,100, 10, 9, 9,101,110,100, 10, 10, 9, 9, + 45, 45,109, 97,105,110, 32,116,111,107,101,110, 32,101,109, + 105,116,116,105,110,103, 32,108,111,111,112, 10, 9, 9,119, + 104,105,108,101, 32,116,114,117,101, 32,100,111, 10, 9, 9, + 9, 45, 45,103,101,116, 32,108,101, 97,100,105,110,103, 32, + 119,104,105,116,101,115,112, 97, 99,101, 46, 32, 84,104,101, + 32,108,101, 97,100,105,110,103, 32,119,104,105,116,101,115, + 112, 97, 99,101, 32,119,105,108,108, 32,105,110, 99,108,117, + 100,101, 32, 97,110,121, 32, 99,111,109,109,101,110,116,115, + 10, 9, 9, 9, 45, 45,112,114,101, 99,101,100,105,110,103, + 32,116,104,101, 32,116,111,107,101,110, 46, 32, 84,104,105, + 115, 32,112,114,101,118,101,110,116,115, 32,116,104,101, 32, + 112, 97,114,115,101,114, 32,110,101,101,100,105,110,103, 32, + 116,111, 32,100,101, 97,108, 32,119,105,116,104, 32, 99,111, + 109,109,101,110,116,115, 10, 9, 9, 9, 45, 45,115,101,112, + 97,114, 97,116,101,108,121, 46, 10, 9, 9, 9,108,111, 99, + 97,108, 32,108,101, 97,100,105,110,103, 32, 61, 32,123, 32, + 125, 10, 9, 9, 9,108,111, 99, 97,108, 32,108,101, 97,100, + 105,110,103, 87,104,105,116,101, 32, 61, 32, 39, 39, 10, 9, + 9, 9,108,111, 99, 97,108, 32,108,111,110,103, 83,116,114, + 32, 61, 32,102, 97,108,115,101, 10, 9, 9, 9,119,104,105, + 108,101, 32,116,114,117,101, 32,100,111, 10, 9, 9, 9, 9, + 108,111, 99, 97,108, 32, 99, 32, 61, 32,112,101,101,107, 40, + 41, 10, 9, 9, 9, 9,105,102, 32, 99, 32, 61, 61, 32, 39, + 35, 39, 32, 97,110,100, 32,112,101,101,107, 40, 49, 41, 32, + 61, 61, 32, 39, 33, 39, 32, 97,110,100, 32,108,105,110,101, + 32, 61, 61, 32, 49, 32,116,104,101,110, 10, 9, 9, 9, 9, + 9, 45, 45, 32, 45, 45, 35, 33, 32,115,104,101, 98, 97,110, + 103, 32,102,111,114, 32,108,105,110,117,120, 32,115, 99,114, + 105,112,116,115, 10, 9, 9, 9, 9, 9,103,101,116, 40, 41, + 10, 9, 9, 9, 9, 9,103,101,116, 40, 41, 10, 9, 9, 9, + 9, 9,108,101, 97,100,105,110,103, 87,104,105,116,101, 32, + 61, 32, 34, 45, 45, 35, 33, 34, 10, 9, 9, 9, 9, 9,119, + 104,105,108,101, 32,112,101,101,107, 40, 41, 32,126, 61, 32, + 39, 92,110, 39, 32, 97,110,100, 32,112,101,101,107, 40, 41, + 32,126, 61, 32, 39, 39, 32,100,111, 10, 9, 9, 9, 9, 9, + 9,108,101, 97,100,105,110,103, 87,104,105,116,101, 32, 61, + 32,108,101, 97,100,105,110,103, 87,104,105,116,101, 32, 46, + 46, 32,103,101,116, 40, 41, 10, 9, 9, 9, 9, 9,101,110, + 100, 10, 9, 9, 9, 9, 9,108,111, 99, 97,108, 32,116,111, + 107,101,110, 32, 61, 32,123, 10, 9, 9, 9, 9, 9, 9, 84, + 121,112,101, 32, 61, 32, 39, 67,111,109,109,101,110,116, 39, + 44, 10, 9, 9, 9, 9, 9, 9, 67,111,109,109,101,110,116, + 84,121,112,101, 32, 61, 32, 39, 83,104,101, 98, 97,110,103, + 39, 44, 10, 9, 9, 9, 9, 9, 9, 68, 97,116, 97, 32, 61, + 32,108,101, 97,100,105,110,103, 87,104,105,116,101, 44, 10, + 9, 9, 9, 9, 9, 9, 76,105,110,101, 32, 61, 32,108,105, + 110,101, 44, 10, 9, 9, 9, 9, 9, 9, 67,104, 97,114, 32, + 61, 32, 99,104, 97,114, 10, 9, 9, 9, 9, 9,125, 10, 9, + 9, 9, 9, 9,116,111,107,101,110, 46, 80,114,105,110,116, + 32, 61, 32,102,117,110, 99,116,105,111,110, 40, 41, 10, 9, + 9, 9, 9, 9, 9,114,101,116,117,114,110, 32, 34, 60, 34, + 46, 46, 40,116,111,107,101,110, 46, 84,121,112,101, 32, 46, + 46, 32,115,116,114,105,110,103, 46,114,101,112, 40, 39, 32, + 39, 44, 32, 55, 45, 35,116,111,107,101,110, 46, 84,121,112, + 101, 41, 41, 46, 46, 34, 32, 32, 34, 46, 46, 40,116,111,107, + 101,110, 46, 68, 97,116, 97, 32,111,114, 32, 39, 39, 41, 46, + 46, 34, 32, 62, 34, 10, 9, 9, 9, 9, 9,101,110,100, 10, + 9, 9, 9, 9, 9,108,101, 97,100,105,110,103, 87,104,105, + 116,101, 32, 61, 32, 34, 34, 10, 9, 9, 9, 9, 9,116, 97, + 98,108,101, 46,105,110,115,101,114,116, 40,108,101, 97,100, + 105,110,103, 44, 32,116,111,107,101,110, 41, 10, 9, 9, 9, + 9,101,110,100, 10, 9, 9, 9, 9,105,102, 32, 99, 32, 61, + 61, 32, 39, 32, 39, 32,111,114, 32, 99, 32, 61, 61, 32, 39, + 92,116, 39, 32,116,104,101,110, 10, 9, 9, 9, 9, 9, 45, + 45,119,104,105,116,101,115,112, 97, 99,101, 10, 9, 9, 9, + 9, 9, 45, 45,108,101, 97,100,105,110,103, 87,104,105,116, + 101, 32, 61, 32,108,101, 97,100,105,110,103, 87,104,105,116, + 101, 46, 46,103,101,116, 40, 41, 10, 9, 9, 9, 9, 9,108, + 111, 99, 97,108, 32, 99, 50, 32, 61, 32,103,101,116, 40, 41, + 32, 45, 45, 32,105,103,110,111,114,101, 32,119,104,105,116, + 101,115,112, 97, 99,101, 10, 9, 9, 9, 9, 9,116, 97, 98, + 108,101, 46,105,110,115,101,114,116, 40,108,101, 97,100,105, + 110,103, 44, 32,123, 32, 84,121,112,101, 32, 61, 32, 39, 87, + 104,105,116,101,115,112, 97, 99,101, 39, 44, 32, 76,105,110, + 101, 32, 61, 32,108,105,110,101, 44, 32, 67,104, 97,114, 32, + 61, 32, 99,104, 97,114, 44, 32, 68, 97,116, 97, 32, 61, 32, + 99, 50, 32,125, 41, 10, 9, 9, 9, 9,101,108,115,101,105, + 102, 32, 99, 32, 61, 61, 32, 39, 92,110, 39, 32,111,114, 32, + 99, 32, 61, 61, 32, 39, 92,114, 39, 32,116,104,101,110, 10, + 9, 9, 9, 9, 9,108,111, 99, 97,108, 32,110,108, 32, 61, + 32,103,101,116, 40, 41, 10, 9, 9, 9, 9, 9,105,102, 32, + 108,101, 97,100,105,110,103, 87,104,105,116,101, 32,126, 61, + 32, 34, 34, 32,116,104,101,110, 10, 9, 9, 9, 9, 9, 9, + 108,111, 99, 97,108, 32,116,111,107,101,110, 32, 61, 32,123, + 10, 9, 9, 9, 9, 9, 9, 9, 84,121,112,101, 32, 61, 32, + 39, 67,111,109,109,101,110,116, 39, 44, 10, 9, 9, 9, 9, + 9, 9, 9, 67,111,109,109,101,110,116, 84,121,112,101, 32, + 61, 32,108,111,110,103, 83,116,114, 32, 97,110,100, 32, 39, + 76,111,110,103, 67,111,109,109,101,110,116, 39, 32,111,114, + 32, 39, 67,111,109,109,101,110,116, 39, 44, 10, 9, 9, 9, + 9, 9, 9, 9, 68, 97,116, 97, 32, 61, 32,108,101, 97,100, + 105,110,103, 87,104,105,116,101, 44, 10, 9, 9, 9, 9, 9, + 9, 9, 76,105,110,101, 32, 61, 32,108,105,110,101, 44, 10, + 9, 9, 9, 9, 9, 9, 9, 67,104, 97,114, 32, 61, 32, 99, + 104, 97,114, 44, 10, 9, 9, 9, 9, 9, 9,125, 10, 9, 9, + 9, 9, 9, 9,116,111,107,101,110, 46, 80,114,105,110,116, + 32, 61, 32,102,117,110, 99,116,105,111,110, 40, 41, 10, 9, + 9, 9, 9, 9, 9, 9,114,101,116,117,114,110, 32, 34, 60, + 34, 46, 46, 40,116,111,107,101,110, 46, 84,121,112,101, 32, + 46, 46, 32,115,116,114,105,110,103, 46,114,101,112, 40, 39, + 32, 39, 44, 32, 55, 45, 35,116,111,107,101,110, 46, 84,121, + 112,101, 41, 41, 46, 46, 34, 32, 32, 34, 46, 46, 40,116,111, + 107,101,110, 46, 68, 97,116, 97, 32,111,114, 32, 39, 39, 41, + 46, 46, 34, 32, 62, 34, 10, 9, 9, 9, 9, 9, 9,101,110, + 100, 10, 9, 9, 9, 9, 9, 9,116, 97, 98,108,101, 46,105, + 110,115,101,114,116, 40,108,101, 97,100,105,110,103, 44, 32, + 116,111,107,101,110, 41, 10, 9, 9, 9, 9, 9, 9,108,101, + 97,100,105,110,103, 87,104,105,116,101, 32, 61, 32, 34, 34, + 10, 9, 9, 9, 9, 9,101,110,100, 10, 9, 9, 9, 9, 9, + 116, 97, 98,108,101, 46,105,110,115,101,114,116, 40,108,101, + 97,100,105,110,103, 44, 32,123, 32, 84,121,112,101, 32, 61, + 32, 39, 87,104,105,116,101,115,112, 97, 99,101, 39, 44, 32, + 76,105,110,101, 32, 61, 32,108,105,110,101, 44, 32, 67,104, + 97,114, 32, 61, 32, 99,104, 97,114, 44, 32, 68, 97,116, 97, + 32, 61, 32,110,108, 32,125, 41, 10, 9, 9, 9, 9,101,108, + 115,101,105,102, 32, 99, 32, 61, 61, 32, 39, 45, 39, 32, 97, + 110,100, 32,112,101,101,107, 40, 49, 41, 32, 61, 61, 32, 39, + 45, 39, 32,116,104,101,110, 10, 9, 9, 9, 9, 9, 45, 45, + 99,111,109,109,101,110,116, 10, 9, 9, 9, 9, 9,103,101, + 116, 40, 41, 10, 9, 9, 9, 9, 9,103,101,116, 40, 41, 10, + 9, 9, 9, 9, 9,108,101, 97,100,105,110,103, 87,104,105, + 116,101, 32, 61, 32,108,101, 97,100,105,110,103, 87,104,105, + 116,101, 32, 46, 46, 32, 39, 45, 45, 39, 10, 9, 9, 9, 9, + 9,108,111, 99, 97,108, 32, 95, 44, 32,119,104,111,108,101, + 84,101,120,116, 32, 61, 32,116,114,121, 71,101,116, 76,111, + 110,103, 83,116,114,105,110,103, 40, 41, 10, 9, 9, 9, 9, + 9,105,102, 32,119,104,111,108,101, 84,101,120,116, 32,116, + 104,101,110, 10, 9, 9, 9, 9, 9, 9,108,101, 97,100,105, + 110,103, 87,104,105,116,101, 32, 61, 32,108,101, 97,100,105, + 110,103, 87,104,105,116,101, 46, 46,119,104,111,108,101, 84, + 101,120,116, 10, 9, 9, 9, 9, 9, 9,108,111,110,103, 83, + 116,114, 32, 61, 32,116,114,117,101, 10, 9, 9, 9, 9, 9, + 101,108,115,101, 10, 9, 9, 9, 9, 9, 9,119,104,105,108, + 101, 32,112,101,101,107, 40, 41, 32,126, 61, 32, 39, 92,110, + 39, 32, 97,110,100, 32,112,101,101,107, 40, 41, 32,126, 61, + 32, 39, 39, 32,100,111, 10, 9, 9, 9, 9, 9, 9, 9,108, + 101, 97,100,105,110,103, 87,104,105,116,101, 32, 61, 32,108, + 101, 97,100,105,110,103, 87,104,105,116,101, 46, 46,103,101, + 116, 40, 41, 10, 9, 9, 9, 9, 9, 9,101,110,100, 10, 9, + 9, 9, 9, 9,101,110,100, 10, 9, 9, 9, 9,101,108,115, + 101, 10, 9, 9, 9, 9, 9, 98,114,101, 97,107, 10, 9, 9, + 9, 9,101,110,100, 10, 9, 9, 9,101,110,100, 10, 9, 9, + 9,105,102, 32,108,101, 97,100,105,110,103, 87,104,105,116, + 101, 32,126, 61, 32, 34, 34, 32,116,104,101,110, 10, 9, 9, + 9, 9,108,111, 99, 97,108, 32,116,111,107,101,110, 32, 61, + 32,123, 10, 9, 9, 9, 9, 9, 84,121,112,101, 32, 61, 32, + 39, 67,111,109,109,101,110,116, 39, 44, 10, 9, 9, 9, 9, + 9, 67,111,109,109,101,110,116, 84,121,112,101, 32, 61, 32, + 108,111,110,103, 83,116,114, 32, 97,110,100, 32, 39, 76,111, + 110,103, 67,111,109,109,101,110,116, 39, 32,111,114, 32, 39, + 67,111,109,109,101,110,116, 39, 44, 10, 9, 9, 9, 9, 9, + 68, 97,116, 97, 32, 61, 32,108,101, 97,100,105,110,103, 87, + 104,105,116,101, 44, 10, 9, 9, 9, 9, 9, 76,105,110,101, + 32, 61, 32,108,105,110,101, 44, 10, 9, 9, 9, 9, 9, 67, + 104, 97,114, 32, 61, 32, 99,104, 97,114, 44, 10, 9, 9, 9, + 9,125, 10, 9, 9, 9, 9,116,111,107,101,110, 46, 80,114, + 105,110,116, 32, 61, 32,102,117,110, 99,116,105,111,110, 40, + 41, 10, 9, 9, 9, 9, 9,114,101,116,117,114,110, 32, 34, + 60, 34, 46, 46, 40,116,111,107,101,110, 46, 84,121,112,101, + 32, 46, 46, 32,115,116,114,105,110,103, 46,114,101,112, 40, + 39, 32, 39, 44, 32, 55, 45, 35,116,111,107,101,110, 46, 84, + 121,112,101, 41, 41, 46, 46, 34, 32, 32, 34, 46, 46, 40,116, + 111,107,101,110, 46, 68, 97,116, 97, 32,111,114, 32, 39, 39, + 41, 46, 46, 34, 32, 62, 34, 10, 9, 9, 9, 9,101,110,100, + 10, 9, 9, 9, 9,116, 97, 98,108,101, 46,105,110,115,101, + 114,116, 40,108,101, 97,100,105,110,103, 44, 32,116,111,107, + 101,110, 41, 10, 9, 9, 9,101,110,100, 10, 10, 9, 9, 9, + 45, 45,103,101,116, 32,116,104,101, 32,105,110,105,116,105, + 97,108, 32, 99,104, 97,114, 10, 9, 9, 9,108,111, 99, 97, + 108, 32,116,104,105,115, 76,105,110,101, 32, 61, 32,108,105, + 110,101, 10, 9, 9, 9,108,111, 99, 97,108, 32,116,104,105, + 115, 67,104, 97,114, 32, 61, 32, 99,104, 97,114, 10, 9, 9, + 9, 45, 45, 32,108,111, 99, 97,108, 32,101,114,114,111,114, + 65,116, 32, 61, 32, 34, 58, 34, 46, 46,108,105,110,101, 46, + 46, 34, 58, 34, 46, 46, 99,104, 97,114, 46, 46, 34, 58, 62, + 32, 34, 10, 9, 9, 9,108,111, 99, 97,108, 32, 99, 32, 61, + 32,112,101,101,107, 40, 41, 10, 10, 9, 9, 9, 45, 45,115, + 121,109, 98,111,108, 32,116,111, 32,101,109,105,116, 10, 9, + 9, 9,108,111, 99, 97,108, 32,116,111, 69,109,105,116, 32, + 61, 32,110,105,108, 10, 10, 9, 9, 9, 45, 45, 98,114, 97, + 110, 99,104, 32,111,110, 32,116,121,112,101, 10, 9, 9, 9, + 105,102, 32, 99, 32, 61, 61, 32, 39, 39, 32,116,104,101,110, + 10, 9, 9, 9, 9, 45, 45,101,111,102, 10, 9, 9, 9, 9, + 116,111, 69,109,105,116, 32, 61, 32,123, 32, 84,121,112,101, + 32, 61, 32, 39, 69,111,102, 39, 32,125, 10, 10, 9, 9, 9, + 101,108,115,101,105,102, 32, 85,112,112,101,114, 67,104, 97, + 114,115, 91, 99, 93, 32,111,114, 32, 76,111,119,101,114, 67, + 104, 97,114,115, 91, 99, 93, 32,111,114, 32, 99, 32, 61, 61, + 32, 39, 95, 39, 32,116,104,101,110, 10, 9, 9, 9, 9, 45, + 45,105,100,101,110,116, 32,111,114, 32,107,101,121,119,111, + 114,100, 10, 9, 9, 9, 9,108,111, 99, 97,108, 32,115,116, + 97,114,116, 32, 61, 32,112, 10, 9, 9, 9, 9,114,101,112, + 101, 97,116, 10, 9, 9, 9, 9, 9,103,101,116, 40, 41, 10, + 9, 9, 9, 9, 9, 99, 32, 61, 32,112,101,101,107, 40, 41, + 10, 9, 9, 9, 9,117,110,116,105,108, 32,110,111,116, 32, + 40, 85,112,112,101,114, 67,104, 97,114,115, 91, 99, 93, 32, + 111,114, 32, 76,111,119,101,114, 67,104, 97,114,115, 91, 99, + 93, 32,111,114, 32, 68,105,103,105,116,115, 91, 99, 93, 32, + 111,114, 32, 99, 32, 61, 61, 32, 39, 95, 39, 41, 10, 9, 9, + 9, 9,108,111, 99, 97,108, 32,100, 97,116, 32, 61, 32,115, + 114, 99, 58,115,117, 98, 40,115,116, 97,114,116, 44, 32,112, + 45, 49, 41, 10, 9, 9, 9, 9,105,102, 32, 75,101,121,119, + 111,114,100,115, 91,100, 97,116, 93, 32,116,104,101,110, 10, + 9, 9, 9, 9, 9,116,111, 69,109,105,116, 32, 61, 32,123, + 84,121,112,101, 32, 61, 32, 39, 75,101,121,119,111,114,100, + 39, 44, 32, 68, 97,116, 97, 32, 61, 32,100, 97,116,125, 10, + 9, 9, 9, 9,101,108,115,101, 10, 9, 9, 9, 9, 9,116, + 111, 69,109,105,116, 32, 61, 32,123, 84,121,112,101, 32, 61, + 32, 39, 73,100,101,110,116, 39, 44, 32, 68, 97,116, 97, 32, + 61, 32,100, 97,116,125, 10, 9, 9, 9, 9,101,110,100, 10, + 10, 9, 9, 9,101,108,115,101,105,102, 32, 68,105,103,105, + 116,115, 91, 99, 93, 32,111,114, 32, 40,112,101,101,107, 40, + 41, 32, 61, 61, 32, 39, 46, 39, 32, 97,110,100, 32, 68,105, + 103,105,116,115, 91,112,101,101,107, 40, 49, 41, 93, 41, 32, + 116,104,101,110, 10, 9, 9, 9, 9, 45, 45,110,117,109, 98, + 101,114, 32, 99,111,110,115,116, 10, 9, 9, 9, 9,108,111, + 99, 97,108, 32,115,116, 97,114,116, 32, 61, 32,112, 10, 9, + 9, 9, 9,105,102, 32, 99, 32, 61, 61, 32, 39, 48, 39, 32, + 97,110,100, 32,112,101,101,107, 40, 49, 41, 32, 61, 61, 32, + 39,120, 39, 32,116,104,101,110, 10, 9, 9, 9, 9, 9,103, + 101,116, 40, 41, 59,103,101,116, 40, 41, 10, 9, 9, 9, 9, + 9,119,104,105,108,101, 32, 72,101,120, 68,105,103,105,116, + 115, 91,112,101,101,107, 40, 41, 93, 32,100,111, 32,103,101, + 116, 40, 41, 32,101,110,100, 10, 9, 9, 9, 9, 9,105,102, + 32, 99,111,110,115,117,109,101, 40, 39, 80,112, 39, 41, 32, + 116,104,101,110, 10, 9, 9, 9, 9, 9, 9, 99,111,110,115, + 117,109,101, 40, 39, 43, 45, 39, 41, 10, 9, 9, 9, 9, 9, + 9,119,104,105,108,101, 32, 68,105,103,105,116,115, 91,112, + 101,101,107, 40, 41, 93, 32,100,111, 32,103,101,116, 40, 41, + 32,101,110,100, 10, 9, 9, 9, 9, 9,101,110,100, 10, 9, + 9, 9, 9,101,108,115,101, 10, 9, 9, 9, 9, 9,119,104, + 105,108,101, 32, 68,105,103,105,116,115, 91,112,101,101,107, + 40, 41, 93, 32,100,111, 32,103,101,116, 40, 41, 32,101,110, + 100, 10, 9, 9, 9, 9, 9,105,102, 32, 99,111,110,115,117, + 109,101, 40, 39, 46, 39, 41, 32,116,104,101,110, 10, 9, 9, + 9, 9, 9, 9,119,104,105,108,101, 32, 68,105,103,105,116, + 115, 91,112,101,101,107, 40, 41, 93, 32,100,111, 32,103,101, + 116, 40, 41, 32,101,110,100, 10, 9, 9, 9, 9, 9,101,110, + 100, 10, 9, 9, 9, 9, 9,105,102, 32, 99,111,110,115,117, + 109,101, 40, 39, 69,101, 39, 41, 32,116,104,101,110, 10, 9, + 9, 9, 9, 9, 9, 99,111,110,115,117,109,101, 40, 39, 43, + 45, 39, 41, 10, 9, 9, 9, 9, 9, 9,119,104,105,108,101, + 32, 68,105,103,105,116,115, 91,112,101,101,107, 40, 41, 93, + 32,100,111, 32,103,101,116, 40, 41, 32,101,110,100, 10, 9, + 9, 9, 9, 9,101,110,100, 10, 9, 9, 9, 9,101,110,100, + 10, 9, 9, 9, 9,116,111, 69,109,105,116, 32, 61, 32,123, + 84,121,112,101, 32, 61, 32, 39, 78,117,109, 98,101,114, 39, + 44, 32, 68, 97,116, 97, 32, 61, 32,115,114, 99, 58,115,117, + 98, 40,115,116, 97,114,116, 44, 32,112, 45, 49, 41,125, 10, + 10, 9, 9, 9,101,108,115,101,105,102, 32, 99, 32, 61, 61, + 32, 39, 92, 39, 39, 32,111,114, 32, 99, 32, 61, 61, 32, 39, + 92, 34, 39, 32,116,104,101,110, 10, 9, 9, 9, 9,108,111, + 99, 97,108, 32,115,116, 97,114,116, 32, 61, 32,112, 10, 9, + 9, 9, 9, 45, 45,115,116,114,105,110,103, 32, 99,111,110, + 115,116, 10, 9, 9, 9, 9,108,111, 99, 97,108, 32,100,101, + 108,105,109, 32, 61, 32,103,101,116, 40, 41, 10, 9, 9, 9, + 9,108,111, 99, 97,108, 32, 99,111,110,116,101,110,116, 83, + 116, 97,114,116, 32, 61, 32,112, 10, 9, 9, 9, 9,119,104, + 105,108,101, 32,116,114,117,101, 32,100,111, 10, 9, 9, 9, + 9, 9,108,111, 99, 97,108, 32, 99, 32, 61, 32,103,101,116, + 40, 41, 10, 9, 9, 9, 9, 9,105,102, 32, 99, 32, 61, 61, + 32, 39, 92, 92, 39, 32,116,104,101,110, 10, 9, 9, 9, 9, + 9, 9,103,101,116, 40, 41, 32, 45, 45,103,101,116, 32,116, + 104,101, 32,101,115, 99, 97,112,101, 32, 99,104, 97,114, 10, + 9, 9, 9, 9, 9,101,108,115,101,105,102, 32, 99, 32, 61, + 61, 32,100,101,108,105,109, 32,116,104,101,110, 10, 9, 9, + 9, 9, 9, 9, 98,114,101, 97,107, 10, 9, 9, 9, 9, 9, + 101,108,115,101,105,102, 32, 99, 32, 61, 61, 32, 39, 39, 32, + 116,104,101,110, 10, 9, 9, 9, 9, 9, 9,103,101,110,101, + 114, 97,116,101, 69,114,114,111,114, 40, 34, 85,110,102,105, + 110,105,115,104,101,100, 32,115,116,114,105,110,103, 32,110, + 101, 97,114, 32, 60,101,111,102, 62, 34, 41, 10, 9, 9, 9, + 9, 9,101,110,100, 10, 9, 9, 9, 9,101,110,100, 10, 9, + 9, 9, 9,108,111, 99, 97,108, 32, 99,111,110,116,101,110, + 116, 32, 61, 32,115,114, 99, 58,115,117, 98, 40, 99,111,110, + 116,101,110,116, 83,116, 97,114,116, 44, 32,112, 45, 50, 41, + 10, 9, 9, 9, 9,108,111, 99, 97,108, 32, 99,111,110,115, + 116, 97,110,116, 32, 61, 32,115,114, 99, 58,115,117, 98, 40, + 115,116, 97,114,116, 44, 32,112, 45, 49, 41, 10, 9, 9, 9, + 9,116,111, 69,109,105,116, 32, 61, 32,123, 84,121,112,101, + 32, 61, 32, 39, 83,116,114,105,110,103, 39, 44, 32, 68, 97, + 116, 97, 32, 61, 32, 99,111,110,115,116, 97,110,116, 44, 32, + 67,111,110,115,116, 97,110,116, 32, 61, 32, 99,111,110,116, + 101,110,116,125, 10, 10, 9, 9, 9,101,108,115,101,105,102, + 32, 99, 32, 61, 61, 32, 39, 91, 39, 32,116,104,101,110, 10, + 9, 9, 9, 9,108,111, 99, 97,108, 32, 99,111,110,116,101, + 110,116, 44, 32,119,104,111,108,101,116,101,120,116, 32, 61, + 32,116,114,121, 71,101,116, 76,111,110,103, 83,116,114,105, + 110,103, 40, 41, 10, 9, 9, 9, 9,105,102, 32,119,104,111, + 108,101,116,101,120,116, 32,116,104,101,110, 10, 9, 9, 9, + 9, 9,116,111, 69,109,105,116, 32, 61, 32,123, 84,121,112, + 101, 32, 61, 32, 39, 83,116,114,105,110,103, 39, 44, 32, 68, + 97,116, 97, 32, 61, 32,119,104,111,108,101,116,101,120,116, + 44, 32, 67,111,110,115,116, 97,110,116, 32, 61, 32, 99,111, + 110,116,101,110,116,125, 10, 9, 9, 9, 9,101,108,115,101, + 10, 9, 9, 9, 9, 9,103,101,116, 40, 41, 10, 9, 9, 9, + 9, 9,116,111, 69,109,105,116, 32, 61, 32,123, 84,121,112, + 101, 32, 61, 32, 39, 83,121,109, 98,111,108, 39, 44, 32, 68, + 97,116, 97, 32, 61, 32, 39, 91, 39,125, 10, 9, 9, 9, 9, + 101,110,100, 10, 10, 9, 9, 9,101,108,115,101,105,102, 32, + 99,111,110,115,117,109,101, 40, 39, 62, 61, 60, 39, 41, 32, + 116,104,101,110, 10, 9, 9, 9, 9,105,102, 32, 99,111,110, + 115,117,109,101, 40, 39, 61, 39, 41, 32,116,104,101,110, 10, + 9, 9, 9, 9, 9,116,111, 69,109,105,116, 32, 61, 32,123, + 84,121,112,101, 32, 61, 32, 39, 83,121,109, 98,111,108, 39, + 44, 32, 68, 97,116, 97, 32, 61, 32, 99, 46, 46, 39, 61, 39, + 125, 10, 9, 9, 9, 9,101,108,115,101, 10, 9, 9, 9, 9, + 9,116,111, 69,109,105,116, 32, 61, 32,123, 84,121,112,101, + 32, 61, 32, 39, 83,121,109, 98,111,108, 39, 44, 32, 68, 97, + 116, 97, 32, 61, 32, 99,125, 10, 9, 9, 9, 9,101,110,100, + 10, 10, 9, 9, 9,101,108,115,101,105,102, 32, 99,111,110, + 115,117,109,101, 40, 39,126, 39, 41, 32,116,104,101,110, 10, + 9, 9, 9, 9,105,102, 32, 99,111,110,115,117,109,101, 40, + 39, 61, 39, 41, 32,116,104,101,110, 10, 9, 9, 9, 9, 9, + 116,111, 69,109,105,116, 32, 61, 32,123, 84,121,112,101, 32, + 61, 32, 39, 83,121,109, 98,111,108, 39, 44, 32, 68, 97,116, + 97, 32, 61, 32, 39,126, 61, 39,125, 10, 9, 9, 9, 9,101, + 108,115,101, 10, 9, 9, 9, 9, 9,103,101,110,101,114, 97, + 116,101, 69,114,114,111,114, 40, 34, 85,110,101,120,112,101, + 99,116,101,100, 32,115,121,109, 98,111,108, 32, 96,126, 96, + 32,105,110, 32,115,111,117,114, 99,101, 46, 34, 44, 32, 50, + 41, 10, 9, 9, 9, 9,101,110,100, 10, 10, 9, 9, 9,101, + 108,115,101,105,102, 32, 99,111,110,115,117,109,101, 40, 39, + 46, 39, 41, 32,116,104,101,110, 10, 9, 9, 9, 9,105,102, + 32, 99,111,110,115,117,109,101, 40, 39, 46, 39, 41, 32,116, + 104,101,110, 10, 9, 9, 9, 9, 9,105,102, 32, 99,111,110, + 115,117,109,101, 40, 39, 46, 39, 41, 32,116,104,101,110, 10, + 9, 9, 9, 9, 9, 9,116,111, 69,109,105,116, 32, 61, 32, + 123, 84,121,112,101, 32, 61, 32, 39, 83,121,109, 98,111,108, + 39, 44, 32, 68, 97,116, 97, 32, 61, 32, 39, 46, 46, 46, 39, + 125, 10, 9, 9, 9, 9, 9,101,108,115,101, 10, 9, 9, 9, + 9, 9, 9,116,111, 69,109,105,116, 32, 61, 32,123, 84,121, + 112,101, 32, 61, 32, 39, 83,121,109, 98,111,108, 39, 44, 32, + 68, 97,116, 97, 32, 61, 32, 39, 46, 46, 39,125, 10, 9, 9, + 9, 9, 9,101,110,100, 10, 9, 9, 9, 9,101,108,115,101, + 10, 9, 9, 9, 9, 9,116,111, 69,109,105,116, 32, 61, 32, + 123, 84,121,112,101, 32, 61, 32, 39, 83,121,109, 98,111,108, + 39, 44, 32, 68, 97,116, 97, 32, 61, 32, 39, 46, 39,125, 10, + 9, 9, 9, 9,101,110,100, 10, 10, 9, 9, 9,101,108,115, + 101,105,102, 32, 99,111,110,115,117,109,101, 40, 39, 58, 39, + 41, 32,116,104,101,110, 10, 9, 9, 9, 9,105,102, 32, 99, + 111,110,115,117,109,101, 40, 39, 58, 39, 41, 32,116,104,101, + 110, 10, 9, 9, 9, 9, 9,116,111, 69,109,105,116, 32, 61, + 32,123, 84,121,112,101, 32, 61, 32, 39, 83,121,109, 98,111, + 108, 39, 44, 32, 68, 97,116, 97, 32, 61, 32, 39, 58, 58, 39, + 125, 10, 9, 9, 9, 9,101,108,115,101, 10, 9, 9, 9, 9, + 9,116,111, 69,109,105,116, 32, 61, 32,123, 84,121,112,101, + 32, 61, 32, 39, 83,121,109, 98,111,108, 39, 44, 32, 68, 97, + 116, 97, 32, 61, 32, 39, 58, 39,125, 10, 9, 9, 9, 9,101, + 110,100, 10, 10, 9, 9, 9,101,108,115,101,105,102, 32, 83, + 121,109, 98,111,108,115, 91, 99, 93, 32,116,104,101,110, 10, + 9, 9, 9, 9,103,101,116, 40, 41, 10, 9, 9, 9, 9,116, + 111, 69,109,105,116, 32, 61, 32,123, 84,121,112,101, 32, 61, + 32, 39, 83,121,109, 98,111,108, 39, 44, 32, 68, 97,116, 97, + 32, 61, 32, 99,125, 10, 10, 9, 9, 9,101,108,115,101, 10, + 9, 9, 9, 9,108,111, 99, 97,108, 32, 99,111,110,116,101, + 110,116,115, 44, 32, 97,108,108, 32, 61, 32,116,114,121, 71, + 101,116, 76,111,110,103, 83,116,114,105,110,103, 40, 41, 10, + 9, 9, 9, 9,105,102, 32, 99,111,110,116,101,110,116,115, + 32,116,104,101,110, 10, 9, 9, 9, 9, 9,116,111, 69,109, + 105,116, 32, 61, 32,123, 84,121,112,101, 32, 61, 32, 39, 83, + 116,114,105,110,103, 39, 44, 32, 68, 97,116, 97, 32, 61, 32, + 97,108,108, 44, 32, 67,111,110,115,116, 97,110,116, 32, 61, + 32, 99,111,110,116,101,110,116,115,125, 10, 9, 9, 9, 9, + 101,108,115,101, 10, 9, 9, 9, 9, 9,103,101,110,101,114, + 97,116,101, 69,114,114,111,114, 40, 34, 85,110,101,120,112, + 101, 99,116,101,100, 32, 83,121,109, 98,111,108, 32, 96, 34, + 46, 46, 99, 46, 46, 34, 96, 32,105,110, 32,115,111,117,114, + 99,101, 46, 34, 44, 32, 50, 41, 10, 9, 9, 9, 9,101,110, + 100, 10, 9, 9, 9,101,110,100, 10, 10, 9, 9, 9, 45, 45, + 97,100,100, 32,116,104,101, 32,101,109,105,116,116,101,100, + 32,115,121,109, 98,111,108, 44, 32, 97,102,116,101,114, 32, + 97,100,100,105,110,103, 32,115,111,109,101, 32, 99,111,109, + 109,111,110, 32,100, 97,116, 97, 10, 9, 9, 9,116,111, 69, + 109,105,116, 46, 76,101, 97,100,105,110,103, 87,104,105,116, + 101, 32, 61, 32,108,101, 97,100,105,110,103, 32, 45, 45, 32, + 116, 97, 98,108,101, 32,111,102, 32,108,101, 97,100,105,110, + 103, 32,119,104,105,116,101,115,112, 97, 99,101, 47, 99,111, + 109,109,101,110,116,115, 10, 9, 9, 9, 45, 45,102,111,114, + 32,107, 44, 32,116,111,107, 32,105,110, 32,112, 97,105,114, + 115, 40,108,101, 97,100,105,110,103, 41, 32,100,111, 10, 9, + 9, 9, 45, 45, 9,116,111,107,101,110,115, 91, 35,116,111, + 107,101,110,115, 32, 43, 32, 49, 93, 32, 61, 32,116,111,107, + 10, 9, 9, 9, 45, 45,101,110,100, 10, 10, 9, 9, 9,116, + 111, 69,109,105,116, 46, 76,105,110,101, 32, 61, 32,116,104, + 105,115, 76,105,110,101, 10, 9, 9, 9,116,111, 69,109,105, + 116, 46, 67,104, 97,114, 32, 61, 32,116,104,105,115, 67,104, + 97,114, 10, 9, 9, 9,116,111, 69,109,105,116, 46, 80,114, + 105,110,116, 32, 61, 32,102,117,110, 99,116,105,111,110, 40, + 41, 10, 9, 9, 9, 9,114,101,116,117,114,110, 32, 34, 60, + 34, 46, 46, 40,116,111, 69,109,105,116, 46, 84,121,112,101, + 46, 46,115,116,114,105,110,103, 46,114,101,112, 40, 39, 32, + 39, 44, 32, 55, 45, 35,116,111, 69,109,105,116, 46, 84,121, + 112,101, 41, 41, 46, 46, 34, 32, 32, 34, 46, 46, 40,116,111, + 69,109,105,116, 46, 68, 97,116, 97, 32,111,114, 32, 39, 39, + 41, 46, 46, 34, 32, 62, 34, 10, 9, 9, 9,101,110,100, 10, + 9, 9, 9,116,111,107,101,110,115, 91, 35,116,111,107,101, + 110,115, 43, 49, 93, 32, 61, 32,116,111, 69,109,105,116, 10, + 10, 9, 9, 9, 45, 45,104, 97,108,116, 32, 97,102,116,101, + 114, 32,101,111,102, 32,104, 97,115, 32, 98,101,101,110, 32, + 101,109,105,116,116,101,100, 10, 9, 9, 9,105,102, 32,116, + 111, 69,109,105,116, 46, 84,121,112,101, 32, 61, 61, 32, 39, + 69,111,102, 39, 32,116,104,101,110, 32, 98,114,101, 97,107, + 32,101,110,100, 10, 9, 9,101,110,100, 10, 9,101,110,100, + 41, 10, 9,105,102, 32,110,111,116, 32,115,116, 32,116,104, + 101,110, 10, 9, 9,114,101,116,117,114,110, 32,102, 97,108, + 115,101, 44, 32,101,114,114, 10, 9,101,110,100, 10, 10, 9, + 45, 45,112,117, 98,108,105, 99, 32,105,110,116,101,114,102, + 97, 99,101, 58, 10, 9,108,111, 99, 97,108, 32,116,111,107, + 32, 61, 32,123,125, 10, 9,108,111, 99, 97,108, 32,115, 97, + 118,101,100, 80, 32, 61, 32,123,125, 10, 9,108,111, 99, 97, + 108, 32,112, 32, 61, 32, 49, 10, 10, 9,102,117,110, 99,116, + 105,111,110, 32,116,111,107, 58,103,101,116,112, 40, 41, 10, + 9, 9,114,101,116,117,114,110, 32,112, 10, 9,101,110,100, + 10, 10, 9,102,117,110, 99,116,105,111,110, 32,116,111,107, + 58,115,101,116,112, 40,110, 41, 10, 9, 9,112, 32, 61, 32, + 110, 10, 9,101,110,100, 10, 10, 9,102,117,110, 99,116,105, + 111,110, 32,116,111,107, 58,103,101,116, 84,111,107,101,110, + 76,105,115,116, 40, 41, 10, 9, 9,114,101,116,117,114,110, + 32,116,111,107,101,110,115, 10, 9,101,110,100, 10, 10, 9, + 45, 45,103,101,116,116,101,114,115, 10, 9,102,117,110, 99, + 116,105,111,110, 32,116,111,107, 58, 80,101,101,107, 40,110, + 41, 10, 9, 9,110, 32, 61, 32,110, 32,111,114, 32, 48, 10, + 9, 9,114,101,116,117,114,110, 32,116,111,107,101,110,115, + 91,109, 97,116,104, 46,109,105,110, 40, 35,116,111,107,101, + 110,115, 44, 32,112, 43,110, 41, 93, 10, 9,101,110,100, 10, + 9,102,117,110, 99,116,105,111,110, 32,116,111,107, 58, 71, + 101,116, 40,116,111,107,101,110, 76,105,115,116, 41, 10, 9, + 9,108,111, 99, 97,108, 32,116, 32, 61, 32,116,111,107,101, + 110,115, 91,112, 93, 10, 9, 9,112, 32, 61, 32,109, 97,116, + 104, 46,109,105,110, 40,112, 32, 43, 32, 49, 44, 32, 35,116, + 111,107,101,110,115, 41, 10, 9, 9,105,102, 32,116,111,107, + 101,110, 76,105,115,116, 32,116,104,101,110, 10, 9, 9, 9, + 116, 97, 98,108,101, 46,105,110,115,101,114,116, 40,116,111, + 107,101,110, 76,105,115,116, 44, 32,116, 41, 10, 9, 9,101, + 110,100, 10, 9, 9,114,101,116,117,114,110, 32,116, 10, 9, + 101,110,100, 10, 9,102,117,110, 99,116,105,111,110, 32,116, + 111,107, 58, 73,115, 40,116, 41, 10, 9, 9,114,101,116,117, + 114,110, 32,116,111,107, 58, 80,101,101,107, 40, 41, 46, 84, + 121,112,101, 32, 61, 61, 32,116, 10, 9,101,110,100, 10, 10, + 9, 45, 45,115, 97,118,101, 32, 47, 32,114,101,115,116,111, + 114,101, 32,112,111,105,110,116,115, 32,105,110, 32,116,104, + 101, 32,115,116,114,101, 97,109, 10, 9,102,117,110, 99,116, + 105,111,110, 32,116,111,107, 58, 83, 97,118,101, 40, 41, 10, + 9, 9,115, 97,118,101,100, 80, 91, 35,115, 97,118,101,100, + 80, 43, 49, 93, 32, 61, 32,112, 10, 9,101,110,100, 10, 9, + 102,117,110, 99,116,105,111,110, 32,116,111,107, 58, 67,111, + 109,109,105,116, 40, 41, 10, 9, 9,115, 97,118,101,100, 80, + 91, 35,115, 97,118,101,100, 80, 93, 32, 61, 32,110,105,108, + 10, 9,101,110,100, 10, 9,102,117,110, 99,116,105,111,110, + 32,116,111,107, 58, 82,101,115,116,111,114,101, 40, 41, 10, + 9, 9,112, 32, 61, 32,115, 97,118,101,100, 80, 91, 35,115, + 97,118,101,100, 80, 93, 10, 9, 9,115, 97,118,101,100, 80, + 91, 35,115, 97,118,101,100, 80, 93, 32, 61, 32,110,105,108, + 10, 9,101,110,100, 10, 10, 9, 45, 45,101,105,116,104,101, + 114, 32,114,101,116,117,114,110, 32, 97, 32,115,121,109, 98, + 111,108, 32,105,102, 32,116,104,101,114,101, 32,105,115, 32, + 111,110,101, 44, 32,111,114, 32,114,101,116,117,114,110, 32, + 116,114,117,101, 32,105,102, 32,116,104,101, 32,114,101,113, + 117,101,115,116,101,100, 10, 9, 45, 45,115,121,109, 98,111, + 108, 32,119, 97,115, 32,103,111,116,116,101,110, 46, 10, 9, + 102,117,110, 99,116,105,111,110, 32,116,111,107, 58, 67,111, + 110,115,117,109,101, 83,121,109, 98,111,108, 40,115,121,109, + 98, 44, 32,116,111,107,101,110, 76,105,115,116, 41, 10, 9, + 9,108,111, 99, 97,108, 32,116, 32, 61, 32,115,101,108,102, + 58, 80,101,101,107, 40, 41, 10, 9, 9,105,102, 32,116, 46, + 84,121,112,101, 32, 61, 61, 32, 39, 83,121,109, 98,111,108, + 39, 32,116,104,101,110, 10, 9, 9, 9,105,102, 32,115,121, + 109, 98, 32,116,104,101,110, 10, 9, 9, 9, 9,105,102, 32, + 116, 46, 68, 97,116, 97, 32, 61, 61, 32,115,121,109, 98, 32, + 116,104,101,110, 10, 9, 9, 9, 9, 9,115,101,108,102, 58, + 71,101,116, 40,116,111,107,101,110, 76,105,115,116, 41, 10, + 9, 9, 9, 9, 9,114,101,116,117,114,110, 32,116,114,117, + 101, 10, 9, 9, 9, 9,101,108,115,101, 10, 9, 9, 9, 9, + 9,114,101,116,117,114,110, 32,110,105,108, 10, 9, 9, 9, + 9,101,110,100, 10, 9, 9, 9,101,108,115,101, 10, 9, 9, + 9, 9,115,101,108,102, 58, 71,101,116, 40,116,111,107,101, + 110, 76,105,115,116, 41, 10, 9, 9, 9, 9,114,101,116,117, + 114,110, 32,116, 10, 9, 9, 9,101,110,100, 10, 9, 9,101, + 108,115,101, 10, 9, 9, 9,114,101,116,117,114,110, 32,110, + 105,108, 10, 9, 9,101,110,100, 10, 9,101,110,100, 10, 10, + 9,102,117,110, 99,116,105,111,110, 32,116,111,107, 58, 67, + 111,110,115,117,109,101, 75,101,121,119,111,114,100, 40,107, + 119, 44, 32,116,111,107,101,110, 76,105,115,116, 41, 10, 9, + 9,108,111, 99, 97,108, 32,116, 32, 61, 32,115,101,108,102, + 58, 80,101,101,107, 40, 41, 10, 9, 9,105,102, 32,116, 46, + 84,121,112,101, 32, 61, 61, 32, 39, 75,101,121,119,111,114, + 100, 39, 32, 97,110,100, 32,116, 46, 68, 97,116, 97, 32, 61, + 61, 32,107,119, 32,116,104,101,110, 10, 9, 9, 9,115,101, + 108,102, 58, 71,101,116, 40,116,111,107,101,110, 76,105,115, + 116, 41, 10, 9, 9, 9,114,101,116,117,114,110, 32,116,114, + 117,101, 10, 9, 9,101,108,115,101, 10, 9, 9, 9,114,101, + 116,117,114,110, 32,110,105,108, 10, 9, 9,101,110,100, 10, + 9,101,110,100, 10, 10, 9,102,117,110, 99,116,105,111,110, + 32,116,111,107, 58, 73,115, 75,101,121,119,111,114,100, 40, + 107,119, 41, 10, 9, 9,108,111, 99, 97,108, 32,116, 32, 61, + 32,116,111,107, 58, 80,101,101,107, 40, 41, 10, 9, 9,114, + 101,116,117,114,110, 32,116, 46, 84,121,112,101, 32, 61, 61, + 32, 39, 75,101,121,119,111,114,100, 39, 32, 97,110,100, 32, + 116, 46, 68, 97,116, 97, 32, 61, 61, 32,107,119, 10, 9,101, + 110,100, 10, 10, 9,102,117,110, 99,116,105,111,110, 32,116, + 111,107, 58, 73,115, 83,121,109, 98,111,108, 40,115, 41, 10, + 9, 9,108,111, 99, 97,108, 32,116, 32, 61, 32,116,111,107, + 58, 80,101,101,107, 40, 41, 10, 9, 9,114,101,116,117,114, + 110, 32,116, 46, 84,121,112,101, 32, 61, 61, 32, 39, 83,121, + 109, 98,111,108, 39, 32, 97,110,100, 32,116, 46, 68, 97,116, + 97, 32, 61, 61, 32,115, 10, 9,101,110,100, 10, 10, 9,102, + 117,110, 99,116,105,111,110, 32,116,111,107, 58, 73,115, 69, + 111,102, 40, 41, 10, 9, 9,114,101,116,117,114,110, 32,116, + 111,107, 58, 80,101,101,107, 40, 41, 46, 84,121,112,101, 32, + 61, 61, 32, 39, 69,111,102, 39, 10, 9,101,110,100, 10, 10, + 9,114,101,116,117,114,110, 32,116,114,117,101, 44, 32,116, + 111,107, 10,101,110,100, 10, 10, 10,108,111, 99, 97,108, 32, + 102,117,110, 99,116,105,111,110, 32, 80, 97,114,115,101, 76, + 117, 97, 40,115,114, 99, 41, 10, 9,108,111, 99, 97,108, 32, + 115,116, 44, 32,116,111,107, 10, 9,105,102, 32,116,121,112, + 101, 40,115,114, 99, 41, 32,126, 61, 32, 39,116, 97, 98,108, + 101, 39, 32,116,104,101,110, 10, 9, 9,115,116, 44, 32,116, + 111,107, 32, 61, 32, 76,101,120, 76,117, 97, 40,115,114, 99, + 41, 10, 9,101,108,115,101, 10, 9, 9,115,116, 44, 32,116, + 111,107, 32, 61, 32,116,114,117,101, 44, 32,115,114, 99, 10, + 9,101,110,100, 10, 9,105,102, 32,110,111,116, 32,115,116, + 32,116,104,101,110, 10, 9, 9,114,101,116,117,114,110, 32, + 102, 97,108,115,101, 44, 32,116,111,107, 10, 9,101,110,100, + 10, 9, 45, 45, 10, 9,108,111, 99, 97,108, 32,102,117,110, + 99,116,105,111,110, 32, 71,101,110,101,114, 97,116,101, 69, + 114,114,111,114, 40,109,115,103, 41, 10, 9, 9,108,111, 99, + 97,108, 32,101,114,114, 32, 61, 32, 34, 62, 62, 32, 58, 34, + 46, 46,116,111,107, 58, 80,101,101,107, 40, 41, 46, 76,105, + 110,101, 46, 46, 34, 58, 34, 46, 46,116,111,107, 58, 80,101, + 101,107, 40, 41, 46, 67,104, 97,114, 46, 46, 34, 58, 32, 34, + 46, 46,109,115,103, 46, 46, 34, 92,110, 34, 10, 9, 9, 45, + 45,102,105,110,100, 32,116,104,101, 32,108,105,110,101, 10, + 9, 9,108,111, 99, 97,108, 32,108,105,110,101, 78,117,109, + 32, 61, 32, 48, 10, 9, 9,105,102, 32,116,121,112,101, 40, + 115,114, 99, 41, 32, 61, 61, 32, 39,115,116,114,105,110,103, + 39, 32,116,104,101,110, 10, 9, 9, 9,102,111,114, 32,108, + 32,105,110, 32,115,114, 99, 58,103,109, 97,116, 99,104, 40, + 34, 91, 94, 92,110, 93, 42, 92,110, 63, 34, 41, 32,100,111, + 10, 9, 9, 9, 9,108,105,110,101, 32, 61, 32,108, 10, 9, + 9, 9, 9,105,102, 32,108,105,110,101, 58,115,117, 98, 40, + 45, 49, 44, 45, 49, 41, 32, 61, 61, 32, 39, 92,110, 39, 32, + 116,104,101,110, 32,108,105,110,101, 32, 61, 32,108,105,110, + 101, 58,115,117, 98, 40, 49, 44, 45, 50, 41, 32,101,110,100, + 10, 9, 9, 9, 9,108,105,110,101, 78,117,109, 32, 61, 32, + 108,105,110,101, 78,117,109, 43, 49, 10, 9, 9, 9, 9,105, + 102, 32,108,105,110,101, 78,117,109, 32, 61, 61, 32,116,111, + 107, 58, 80,101,101,107, 40, 41, 46, 76,105,110,101, 32,116, + 104,101,110, 10, 9, 9, 9, 9, 9,101,114,114, 32, 61, 32, + 101,114,114, 46, 46, 34, 62, 62, 32, 96, 34, 46, 46,108,105, + 110,101, 58,103,115,117, 98, 40, 39, 92,116, 39, 44, 39, 32, + 32, 32, 32, 39, 41, 46, 46, 34, 96, 92,110, 34, 10, 9, 9, + 9, 9, 9,102,111,114, 32,105, 32, 61, 32, 49, 44, 32,116, + 111,107, 58, 80,101,101,107, 40, 41, 46, 67,104, 97,114, 32, + 100,111, 10, 9, 9, 9, 9, 9, 9,108,111, 99, 97,108, 32, + 99, 32, 61, 32,108,105,110,101, 58,115,117, 98, 40,105, 44, + 105, 41, 10, 9, 9, 9, 9, 9, 9,105,102, 32, 99, 32, 61, + 61, 32, 39, 92,116, 39, 32,116,104,101,110, 10, 9, 9, 9, + 9, 9, 9, 9,101,114,114, 32, 61, 32,101,114,114, 46, 46, + 39, 32, 32, 32, 32, 39, 10, 9, 9, 9, 9, 9, 9,101,108, + 115,101, 10, 9, 9, 9, 9, 9, 9, 9,101,114,114, 32, 61, + 32,101,114,114, 46, 46, 39, 32, 39, 10, 9, 9, 9, 9, 9, + 9,101,110,100, 10, 9, 9, 9, 9, 9,101,110,100, 10, 9, + 9, 9, 9, 9,101,114,114, 32, 61, 32,101,114,114, 46, 46, + 34, 32, 32, 32, 94, 94, 94, 94, 34, 10, 9, 9, 9, 9, 9, + 98,114,101, 97,107, 10, 9, 9, 9, 9,101,110,100, 10, 9, + 9, 9,101,110,100, 10, 9, 9,101,110,100, 10, 9, 9,114, + 101,116,117,114,110, 32,101,114,114, 10, 9,101,110,100, 10, + 9, 45, 45, 10, 9, 45, 45, 32,108,111, 99, 97,108, 32, 86, + 97,114, 85,105,100, 32, 61, 32, 48, 10, 9, 45, 45, 32, 78, + 111, 32,108,111,110,103,101,114, 32,110,101,101,100,101,100, + 58, 32,104, 97,110,100,108,101,100, 32,105,110, 32, 83, 99, + 111,112,101,115, 32,110,111,119, 32,108,111, 99, 97,108, 32, + 71,108,111, 98, 97,108, 86, 97,114, 71,101,116, 77, 97,112, + 32, 61, 32,123,125, 10, 9, 45, 45, 32,108,111, 99, 97,108, + 32, 86, 97,114, 68,105,103,105,116,115, 32, 61, 32,123, 39, + 95, 39, 44, 32, 39, 97, 39, 44, 32, 39, 98, 39, 44, 32, 39, + 99, 39, 44, 32, 39,100, 39,125, 10, 9,108,111, 99, 97,108, + 32,102,117,110, 99,116,105,111,110, 32, 67,114,101, 97,116, + 101, 83, 99,111,112,101, 40,112, 97,114,101,110,116, 41, 10, + 9, 9, 45, 45, 91, 91, 10, 9, 9,108,111, 99, 97,108, 32, + 115, 99,111,112,101, 32, 61, 32,123,125, 10, 9, 9,115, 99, + 111,112,101, 46, 80, 97,114,101,110,116, 32, 61, 32,112, 97, + 114,101,110,116, 10, 9, 9,115, 99,111,112,101, 46, 76,111, + 99, 97,108, 76,105,115,116, 32, 61, 32,123,125, 10, 9, 9, + 115, 99,111,112,101, 46, 76,111, 99, 97,108, 77, 97,112, 32, + 61, 32,123,125, 10, 10, 9, 9,102,117,110, 99,116,105,111, + 110, 32,115, 99,111,112,101, 58, 79, 98,102,117,115, 99, 97, + 116,101, 86, 97,114,105, 97, 98,108,101,115, 40, 41, 10, 9, + 9, 9,102,111,114, 32, 95, 44, 32,118, 97,114, 32,105,110, + 32,112, 97,105,114,115, 40,115, 99,111,112,101, 46, 76,111, + 99, 97,108, 76,105,115,116, 41, 32,100,111, 10, 9, 9, 9, + 9,108,111, 99, 97,108, 32,105,100, 32, 61, 32, 34, 34, 10, + 9, 9, 9, 9,114,101,112,101, 97,116, 10, 9, 9, 9, 9, + 9,108,111, 99, 97,108, 32, 99,104, 97,114,115, 32, 61, 32, + 34, 81, 87, 69, 82, 84, 89, 85, 73, 79, 80, 65, 83, 68, 70, + 71, 72, 74, 75, 76, 90, 88, 67, 86, 66, 78, 77,113,119,101, + 114,116,121,117,105,111,112,108,107,106,104,103,102,100,115, + 97,122,120, 99,118, 98,110,109, 95, 34, 10, 9, 9, 9, 9, + 9,108,111, 99, 97,108, 32, 99,104, 97,114,115, 50, 32, 61, + 32, 34, 81, 87, 69, 82, 84, 89, 85, 73, 79, 80, 65, 83, 68, + 70, 71, 72, 74, 75, 76, 90, 88, 67, 86, 66, 78, 77,113,119, + 101,114,116,121,117,105,111,112,108,107,106,104,103,102,100, + 115, 97,122,120, 99,118, 98,110,109, 95, 49, 50, 51, 52, 53, + 54, 55, 56, 57, 48, 34, 10, 9, 9, 9, 9, 9,108,111, 99, + 97,108, 32,110, 32, 61, 32,109, 97,116,104, 46,114, 97,110, + 100,111,109, 40, 49, 44, 32, 35, 99,104, 97,114,115, 41, 10, + 9, 9, 9, 9, 9,105,100, 32, 61, 32,105,100, 32, 46, 46, + 32, 99,104, 97,114,115, 58,115,117, 98, 40,110, 44, 32,110, + 41, 10, 9, 9, 9, 9, 9,102,111,114, 32,105, 32, 61, 32, + 49, 44, 32,109, 97,116,104, 46,114, 97,110,100,111,109, 40, + 48, 44, 50, 48, 41, 32,100,111, 10, 9, 9, 9, 9, 9, 9, + 108,111, 99, 97,108, 32,110, 32, 61, 32,109, 97,116,104, 46, + 114, 97,110,100,111,109, 40, 49, 44, 32, 35, 99,104, 97,114, + 115, 50, 41, 10, 9, 9, 9, 9, 9, 9,105,100, 32, 61, 32, + 105,100, 32, 46, 46, 32, 99,104, 97,114,115, 50, 58,115,117, + 98, 40,110, 44, 32,110, 41, 10, 9, 9, 9, 9, 9,101,110, + 100, 10, 9, 9, 9, 9,117,110,116,105,108, 32,110,111,116, + 32, 71,108,111, 98, 97,108, 86, 97,114, 71,101,116, 77, 97, + 112, 91,105,100, 93, 32, 97,110,100, 32,110,111,116, 32,112, + 97,114,101,110,116, 58, 71,101,116, 76,111, 99, 97,108, 40, + 105,100, 41, 32, 97,110,100, 32,110,111,116, 32,115, 99,111, + 112,101, 46, 76,111, 99, 97,108, 77, 97,112, 91,105,100, 93, + 10, 9, 9, 9, 9,118, 97,114, 46, 78, 97,109,101, 32, 61, + 32,105,100, 10, 9, 9, 9, 9,115, 99,111,112,101, 46, 76, + 111, 99, 97,108, 77, 97,112, 91,105,100, 93, 32, 61, 32,118, + 97,114, 10, 9, 9, 9,101,110,100, 10, 9, 9,101,110,100, + 10, 10, 9, 9,115, 99,111,112,101, 46, 82,101,110, 97,109, + 101, 86, 97,114,115, 32, 61, 32,115, 99,111,112,101, 46, 79, + 98,102,117,115, 99, 97,116,101, 86, 97,114,105, 97, 98,108, + 101,115, 10, 10, 9, 9, 45, 45, 32, 82,101,110, 97,109,101, + 115, 32, 97, 32,118, 97,114,105, 97, 98,108,101, 32,102,114, + 111,109, 32,116,104,105,115, 32,115, 99,111,112,101, 32, 97, + 110,100, 32,100,111,119,110, 46, 10, 9, 9, 45, 45, 32, 68, + 111,101,115, 32,110,111,116, 32,114,101,110, 97,109,101, 32, + 103,108,111, 98, 97,108, 32,118, 97,114,105, 97, 98,108,101, + 115, 46, 10, 9, 9,102,117,110, 99,116,105,111,110, 32,115, + 99,111,112,101, 58, 82,101,110, 97,109,101, 86, 97,114,105, + 97, 98,108,101, 40,111,108,100, 44, 32,110,101,119, 78, 97, + 109,101, 41, 10, 9, 9, 9,105,102, 32,116,121,112,101, 40, + 111,108,100, 41, 32, 61, 61, 32, 34,116, 97, 98,108,101, 34, + 32,116,104,101,110, 32, 45, 45, 32,105,116,115, 32, 40,116, + 104,101,111,114,101,116,105, 99, 97,108,108,121, 41, 32, 97, + 110, 32, 65,115,116, 78,111,100,101, 32,118, 97,114,105, 97, + 98,108,101, 10, 9, 9, 9, 9,111,108,100, 32, 61, 32,111, + 108,100, 46, 78, 97,109,101, 10, 9, 9, 9,101,110,100, 10, + 9, 9, 9,102,111,114, 32, 95, 44, 32,118, 97,114, 32,105, + 110, 32,112, 97,105,114,115, 40,115, 99,111,112,101, 46, 76, + 111, 99, 97,108, 76,105,115,116, 41, 32,100,111, 10, 9, 9, + 9, 9,105,102, 32,118, 97,114, 46, 78, 97,109,101, 32, 61, + 61, 32,111,108,100, 32,116,104,101,110, 10, 9, 9, 9, 9, + 9,118, 97,114, 46, 78, 97,109,101, 32, 61, 32,110,101,119, + 78, 97,109,101, 10, 9, 9, 9, 9, 9,115, 99,111,112,101, + 46, 76,111, 99, 97,108, 77, 97,112, 91,110,101,119, 78, 97, + 109,101, 93, 32, 61, 32,118, 97,114, 10, 9, 9, 9, 9,101, + 110,100, 10, 9, 9, 9,101,110,100, 10, 9, 9,101,110,100, + 10, 10, 9, 9,102,117,110, 99,116,105,111,110, 32,115, 99, + 111,112,101, 58, 71,101,116, 76,111, 99, 97,108, 40,110, 97, + 109,101, 41, 10, 9, 9, 9, 45, 45,102,105,114,115,116, 44, + 32,116,114,121, 32,116,111, 32,103,101,116, 32,109,121, 32, + 118, 97,114,105, 97, 98,108,101, 10, 9, 9, 9,108,111, 99, + 97,108, 32,109,121, 32, 61, 32,115, 99,111,112,101, 46, 76, + 111, 99, 97,108, 77, 97,112, 91,110, 97,109,101, 93, 10, 9, + 9, 9,105,102, 32,109,121, 32,116,104,101,110, 32,114,101, + 116,117,114,110, 32,109,121, 32,101,110,100, 10, 10, 9, 9, + 9, 45, 45,110,101,120,116, 44, 32,116,114,121, 32,112, 97, + 114,101,110,116, 10, 9, 9, 9,105,102, 32,115, 99,111,112, + 101, 46, 80, 97,114,101,110,116, 32,116,104,101,110, 10, 9, + 9, 9, 9,108,111, 99, 97,108, 32,112, 97,114, 32, 61, 32, + 115, 99,111,112,101, 46, 80, 97,114,101,110,116, 58, 71,101, + 116, 76,111, 99, 97,108, 40,110, 97,109,101, 41, 10, 9, 9, + 9, 9,105,102, 32,112, 97,114, 32,116,104,101,110, 32,114, + 101,116,117,114,110, 32,112, 97,114, 32,101,110,100, 10, 9, + 9, 9,101,110,100, 10, 10, 9, 9, 9,114,101,116,117,114, + 110, 32,110,105,108, 10, 9, 9,101,110,100, 10, 10, 9, 9, + 102,117,110, 99,116,105,111,110, 32,115, 99,111,112,101, 58, + 67,114,101, 97,116,101, 76,111, 99, 97,108, 40,110, 97,109, + 101, 41, 10, 9, 9, 9, 45, 45, 99,114,101, 97,116,101, 32, + 109,121, 32,111,119,110, 32,118, 97,114, 10, 9, 9, 9,108, + 111, 99, 97,108, 32,109,121, 32, 61, 32,123,125, 10, 9, 9, + 9,109,121, 46, 83, 99,111,112,101, 32, 61, 32,115, 99,111, + 112,101, 10, 9, 9, 9,109,121, 46, 78, 97,109,101, 32, 61, + 32,110, 97,109,101, 10, 9, 9, 9,109,121, 46, 67, 97,110, + 82,101,110, 97,109,101, 32, 61, 32,116,114,117,101, 10, 9, + 9, 9, 45, 45, 10, 9, 9, 9,115, 99,111,112,101, 46, 76, + 111, 99, 97,108, 76,105,115,116, 91, 35,115, 99,111,112,101, + 46, 76,111, 99, 97,108, 76,105,115,116, 43, 49, 93, 32, 61, + 32,109,121, 10, 9, 9, 9,115, 99,111,112,101, 46, 76,111, + 99, 97,108, 77, 97,112, 91,110, 97,109,101, 93, 32, 61, 32, + 109,121, 10, 9, 9, 9, 45, 45, 10, 9, 9, 9,114,101,116, + 117,114,110, 32,109,121, 10, 9, 9,101,110,100, 93, 93, 10, + 9, 9,108,111, 99, 97,108, 32,115, 99,111,112,101, 32, 61, + 32, 83, 99,111,112,101, 58,110,101,119, 40,112, 97,114,101, + 110,116, 41, 10, 9, 9,115, 99,111,112,101, 46, 82,101,110, + 97,109,101, 86, 97,114,115, 32, 61, 32,115, 99,111,112,101, + 46, 79, 98,102,117,115, 99, 97,116,101, 76,111, 99, 97,108, + 115, 10, 9, 9,115, 99,111,112,101, 46, 79, 98,102,117,115, + 99, 97,116,101, 86, 97,114,105, 97, 98,108,101,115, 32, 61, + 32,115, 99,111,112,101, 46, 79, 98,102,117,115, 99, 97,116, + 101, 76,111, 99, 97,108,115, 10, 9, 9,115, 99,111,112,101, + 46, 80,114,105,110,116, 32, 61, 32,102,117,110, 99,116,105, + 111,110, 40, 41, 32,114,101,116,117,114,110, 32, 34, 60, 83, + 99,111,112,101, 62, 34, 32,101,110,100, 10, 9, 9,114,101, + 116,117,114,110, 32,115, 99,111,112,101, 10, 9,101,110,100, + 10, 10, 9,108,111, 99, 97,108, 32, 80, 97,114,115,101, 69, + 120,112,114, 10, 9,108,111, 99, 97,108, 32, 80, 97,114,115, + 101, 83,116, 97,116,101,109,101,110,116, 76,105,115,116, 10, + 9,108,111, 99, 97,108, 32, 80, 97,114,115,101, 83,105,109, + 112,108,101, 69,120,112,114, 44, 10, 9, 9, 9, 80, 97,114, + 115,101, 83,117, 98, 69,120,112,114, 44, 10, 9, 9, 9, 80, + 97,114,115,101, 80,114,105,109, 97,114,121, 69,120,112,114, + 44, 10, 9, 9, 9, 80, 97,114,115,101, 83,117,102,102,105, + 120,101,100, 69,120,112,114, 10, 10, 9,108,111, 99, 97,108, + 32,102,117,110, 99,116,105,111,110, 32, 80, 97,114,115,101, + 70,117,110, 99,116,105,111,110, 65,114,103,115, 65,110,100, + 66,111,100,121, 40,115, 99,111,112,101, 44, 32,116,111,107, + 101,110, 76,105,115,116, 41, 10, 9, 9,108,111, 99, 97,108, + 32,102,117,110, 99, 83, 99,111,112,101, 32, 61, 32, 67,114, + 101, 97,116,101, 83, 99,111,112,101, 40,115, 99,111,112,101, + 41, 10, 9, 9,105,102, 32,110,111,116, 32,116,111,107, 58, + 67,111,110,115,117,109,101, 83,121,109, 98,111,108, 40, 39, + 40, 39, 44, 32,116,111,107,101,110, 76,105,115,116, 41, 32, + 116,104,101,110, 10, 9, 9, 9,114,101,116,117,114,110, 32, + 102, 97,108,115,101, 44, 32, 71,101,110,101,114, 97,116,101, + 69,114,114,111,114, 40, 34, 96, 40, 96, 32,101,120,112,101, + 99,116,101,100, 46, 34, 41, 10, 9, 9,101,110,100, 10, 10, + 9, 9, 45, 45, 97,114,103, 32,108,105,115,116, 10, 9, 9, + 108,111, 99, 97,108, 32, 97,114,103, 76,105,115,116, 32, 61, + 32,123,125, 10, 9, 9,108,111, 99, 97,108, 32,105,115, 86, + 97,114, 65,114,103, 32, 61, 32,102, 97,108,115,101, 10, 9, + 9,119,104,105,108,101, 32,110,111,116, 32,116,111,107, 58, + 67,111,110,115,117,109,101, 83,121,109, 98,111,108, 40, 39, + 41, 39, 44, 32,116,111,107,101,110, 76,105,115,116, 41, 32, + 100,111, 10, 9, 9, 9,105,102, 32,116,111,107, 58, 73,115, + 40, 39, 73,100,101,110,116, 39, 41, 32,116,104,101,110, 10, + 9, 9, 9, 9,108,111, 99, 97,108, 32, 97,114,103, 32, 61, + 32,102,117,110, 99, 83, 99,111,112,101, 58, 67,114,101, 97, + 116,101, 76,111, 99, 97,108, 40,116,111,107, 58, 71,101,116, + 40,116,111,107,101,110, 76,105,115,116, 41, 46, 68, 97,116, + 97, 41, 10, 9, 9, 9, 9, 97,114,103, 76,105,115,116, 91, + 35, 97,114,103, 76,105,115,116, 43, 49, 93, 32, 61, 32, 97, + 114,103, 10, 9, 9, 9, 9,105,102, 32,110,111,116, 32,116, + 111,107, 58, 67,111,110,115,117,109,101, 83,121,109, 98,111, + 108, 40, 39, 44, 39, 44, 32,116,111,107,101,110, 76,105,115, + 116, 41, 32,116,104,101,110, 10, 9, 9, 9, 9, 9,105,102, + 32,116,111,107, 58, 67,111,110,115,117,109,101, 83,121,109, + 98,111,108, 40, 39, 41, 39, 44, 32,116,111,107,101,110, 76, + 105,115,116, 41, 32,116,104,101,110, 10, 9, 9, 9, 9, 9, + 9, 98,114,101, 97,107, 10, 9, 9, 9, 9, 9,101,108,115, + 101, 10, 9, 9, 9, 9, 9, 9,114,101,116,117,114,110, 32, + 102, 97,108,115,101, 44, 32, 71,101,110,101,114, 97,116,101, + 69,114,114,111,114, 40, 34, 96, 41, 96, 32,101,120,112,101, + 99,116,101,100, 46, 34, 41, 10, 9, 9, 9, 9, 9,101,110, + 100, 10, 9, 9, 9, 9,101,110,100, 10, 9, 9, 9,101,108, + 115,101,105,102, 32,116,111,107, 58, 67,111,110,115,117,109, + 101, 83,121,109, 98,111,108, 40, 39, 46, 46, 46, 39, 44, 32, + 116,111,107,101,110, 76,105,115,116, 41, 32,116,104,101,110, + 10, 9, 9, 9, 9,105,115, 86, 97,114, 65,114,103, 32, 61, + 32,116,114,117,101, 10, 9, 9, 9, 9,105,102, 32,110,111, + 116, 32,116,111,107, 58, 67,111,110,115,117,109,101, 83,121, + 109, 98,111,108, 40, 39, 41, 39, 44, 32,116,111,107,101,110, + 76,105,115,116, 41, 32,116,104,101,110, 10, 9, 9, 9, 9, + 9,114,101,116,117,114,110, 32,102, 97,108,115,101, 44, 32, + 71,101,110,101,114, 97,116,101, 69,114,114,111,114, 40, 34, + 96, 46, 46, 46, 96, 32,109,117,115,116, 32, 98,101, 32,116, + 104,101, 32,108, 97,115,116, 32, 97,114,103,117,109,101,110, + 116, 32,111,102, 32, 97, 32,102,117,110, 99,116,105,111,110, + 46, 34, 41, 10, 9, 9, 9, 9,101,110,100, 10, 9, 9, 9, + 9, 98,114,101, 97,107, 10, 9, 9, 9,101,108,115,101, 10, + 9, 9, 9, 9,114,101,116,117,114,110, 32,102, 97,108,115, + 101, 44, 32, 71,101,110,101,114, 97,116,101, 69,114,114,111, + 114, 40, 34, 65,114,103,117,109,101,110,116, 32,110, 97,109, + 101, 32,111,114, 32, 96, 46, 46, 46, 96, 32,101,120,112,101, + 99,116,101,100, 34, 41, 10, 9, 9, 9,101,110,100, 10, 9, + 9,101,110,100, 10, 10, 9, 9, 45, 45, 98,111,100,121, 10, + 9, 9,108,111, 99, 97,108, 32,115,116, 44, 32, 98,111,100, + 121, 32, 61, 32, 80, 97,114,115,101, 83,116, 97,116,101,109, + 101,110,116, 76,105,115,116, 40,102,117,110, 99, 83, 99,111, + 112,101, 41, 10, 9, 9,105,102, 32,110,111,116, 32,115,116, + 32,116,104,101,110, 32,114,101,116,117,114,110, 32,102, 97, + 108,115,101, 44, 32, 98,111,100,121, 32,101,110,100, 10, 10, + 9, 9, 45, 45,101,110,100, 10, 9, 9,105,102, 32,110,111, + 116, 32,116,111,107, 58, 67,111,110,115,117,109,101, 75,101, + 121,119,111,114,100, 40, 39,101,110,100, 39, 44, 32,116,111, + 107,101,110, 76,105,115,116, 41, 32,116,104,101,110, 10, 9, + 9, 9,114,101,116,117,114,110, 32,102, 97,108,115,101, 44, + 32, 71,101,110,101,114, 97,116,101, 69,114,114,111,114, 40, + 34, 96,101,110,100, 96, 32,101,120,112,101, 99,116,101,100, + 32, 97,102,116,101,114, 32,102,117,110, 99,116,105,111,110, + 32, 98,111,100,121, 34, 41, 10, 9, 9,101,110,100, 10, 9, + 9,108,111, 99, 97,108, 32,110,111,100,101, 70,117,110, 99, + 32, 61, 32,123,125, 10, 9, 9,110,111,100,101, 70,117,110, + 99, 46, 65,115,116, 84,121,112,101, 32, 32, 32, 61, 32, 39, + 70,117,110, 99,116,105,111,110, 39, 10, 9, 9,110,111,100, + 101, 70,117,110, 99, 46, 83, 99,111,112,101, 32, 32, 32, 32, + 32, 61, 32,102,117,110, 99, 83, 99,111,112,101, 10, 9, 9, + 110,111,100,101, 70,117,110, 99, 46, 65,114,103,117,109,101, + 110,116,115, 32, 61, 32, 97,114,103, 76,105,115,116, 10, 9, + 9,110,111,100,101, 70,117,110, 99, 46, 66,111,100,121, 32, + 32, 32, 32, 32, 32, 61, 32, 98,111,100,121, 10, 9, 9,110, + 111,100,101, 70,117,110, 99, 46, 86, 97,114, 65,114,103, 32, + 32, 32, 32, 61, 32,105,115, 86, 97,114, 65,114,103, 10, 9, + 9,110,111,100,101, 70,117,110, 99, 46, 84,111,107,101,110, + 115, 32, 32, 32, 32, 61, 32,116,111,107,101,110, 76,105,115, + 116, 10, 9, 9, 45, 45, 10, 9, 9,114,101,116,117,114,110, + 32,116,114,117,101, 44, 32,110,111,100,101, 70,117,110, 99, + 10, 9,101,110,100, 10, 10, 9, 80, 97,114,115,101, 80,114, + 105,109, 97,114,121, 69,120,112,114, 32, 61, 32,102,117,110, + 99,116,105,111,110, 40,115, 99,111,112,101, 41, 10, 9, 9, + 108,111, 99, 97,108, 32,116,111,107,101,110, 76,105,115,116, + 32, 61, 32,123,125, 10, 10, 9, 9,105,102, 32,116,111,107, + 58, 67,111,110,115,117,109,101, 83,121,109, 98,111,108, 40, + 39, 40, 39, 44, 32,116,111,107,101,110, 76,105,115,116, 41, + 32,116,104,101,110, 10, 9, 9, 9,108,111, 99, 97,108, 32, + 115,116, 44, 32,101,120, 32, 61, 32, 80, 97,114,115,101, 69, + 120,112,114, 40,115, 99,111,112,101, 41, 10, 9, 9, 9,105, + 102, 32,110,111,116, 32,115,116, 32,116,104,101,110, 32,114, + 101,116,117,114,110, 32,102, 97,108,115,101, 44, 32,101,120, + 32,101,110,100, 10, 9, 9, 9,105,102, 32,110,111,116, 32, + 116,111,107, 58, 67,111,110,115,117,109,101, 83,121,109, 98, + 111,108, 40, 39, 41, 39, 44, 32,116,111,107,101,110, 76,105, + 115,116, 41, 32,116,104,101,110, 10, 9, 9, 9, 9,114,101, + 116,117,114,110, 32,102, 97,108,115,101, 44, 32, 71,101,110, + 101,114, 97,116,101, 69,114,114,111,114, 40, 34, 96, 41, 96, + 32, 69,120,112,101, 99,116,101,100, 46, 34, 41, 10, 9, 9, + 9,101,110,100, 10, 9, 9, 9,105,102, 32,102, 97,108,115, + 101, 32,116,104,101,110, 10, 9, 9, 9, 9, 45, 45,115, 97, + 118,101, 32,116,104,101, 32,105,110,102,111,114,109, 97,116, + 105,111,110, 32, 97, 98,111,117,116, 32,112, 97,114,101,110, + 116,104,101,115,105,122,101,100, 32,101,120,112,114,101,115, + 115,105,111,110,115, 32,115,111,109,101,119,104,101,114,101, + 10, 9, 9, 9, 9,101,120, 46, 80, 97,114,101,110, 67,111, + 117,110,116, 32, 61, 32, 40,101,120, 46, 80, 97,114,101,110, + 67,111,117,110,116, 32,111,114, 32, 48, 41, 32, 43, 32, 49, + 10, 9, 9, 9, 9,114,101,116,117,114,110, 32,116,114,117, + 101, 44, 32,101,120, 10, 9, 9, 9,101,108,115,101, 10, 9, + 9, 9, 9,108,111, 99, 97,108, 32,112, 97,114,101,110,115, + 69,120,112, 32, 61, 32,123,125, 10, 9, 9, 9, 9,112, 97, + 114,101,110,115, 69,120,112, 46, 65,115,116, 84,121,112,101, + 32, 32, 32, 61, 32, 39, 80, 97,114,101,110,116,104,101,115, + 101,115, 39, 10, 9, 9, 9, 9,112, 97,114,101,110,115, 69, + 120,112, 46, 73,110,110,101,114, 32, 32, 32, 32, 32, 61, 32, + 101,120, 10, 9, 9, 9, 9,112, 97,114,101,110,115, 69,120, + 112, 46, 84,111,107,101,110,115, 32, 32, 32, 32, 61, 32,116, + 111,107,101,110, 76,105,115,116, 10, 9, 9, 9, 9,114,101, + 116,117,114,110, 32,116,114,117,101, 44, 32,112, 97,114,101, + 110,115, 69,120,112, 10, 9, 9, 9,101,110,100, 10, 10, 9, + 9,101,108,115,101,105,102, 32,116,111,107, 58, 73,115, 40, + 39, 73,100,101,110,116, 39, 41, 32,116,104,101,110, 10, 9, + 9, 9,108,111, 99, 97,108, 32,105,100, 32, 61, 32,116,111, + 107, 58, 71,101,116, 40,116,111,107,101,110, 76,105,115,116, + 41, 10, 9, 9, 9,108,111, 99, 97,108, 32,118, 97,114, 32, + 61, 32,115, 99,111,112,101, 58, 71,101,116, 76,111, 99, 97, + 108, 40,105,100, 46, 68, 97,116, 97, 41, 10, 9, 9, 9,105, + 102, 32,110,111,116, 32,118, 97,114, 32,116,104,101,110, 10, + 9, 9, 9, 9,118, 97,114, 32, 61, 32,115, 99,111,112,101, + 58, 71,101,116, 71,108,111, 98, 97,108, 40,105,100, 46, 68, + 97,116, 97, 41, 10, 9, 9, 9, 9,105,102, 32,110,111,116, + 32,118, 97,114, 32,116,104,101,110, 10, 9, 9, 9, 9, 9, + 118, 97,114, 32, 61, 32,115, 99,111,112,101, 58, 67,114,101, + 97,116,101, 71,108,111, 98, 97,108, 40,105,100, 46, 68, 97, + 116, 97, 41, 10, 9, 9, 9, 9,101,108,115,101, 10, 9, 9, + 9, 9, 9,118, 97,114, 46, 82,101,102,101,114,101,110, 99, + 101,115, 32, 61, 32,118, 97,114, 46, 82,101,102,101,114,101, + 110, 99,101,115, 32, 43, 32, 49, 10, 9, 9, 9, 9,101,110, + 100, 10, 9, 9, 9,101,108,115,101, 10, 9, 9, 9, 9,118, + 97,114, 46, 82,101,102,101,114,101,110, 99,101,115, 32, 61, + 32,118, 97,114, 46, 82,101,102,101,114,101,110, 99,101,115, + 32, 43, 32, 49, 10, 9, 9, 9,101,110,100, 10, 9, 9, 9, + 45, 45, 10, 9, 9, 9,108,111, 99, 97,108, 32,110,111,100, + 101, 80,114,105,109, 69,120,112, 32, 61, 32,123,125, 10, 9, + 9, 9,110,111,100,101, 80,114,105,109, 69,120,112, 46, 65, + 115,116, 84,121,112,101, 32, 32, 32, 61, 32, 39, 86, 97,114, + 69,120,112,114, 39, 10, 9, 9, 9,110,111,100,101, 80,114, + 105,109, 69,120,112, 46, 78, 97,109,101, 32, 32, 32, 32, 32, + 32, 61, 32,105,100, 46, 68, 97,116, 97, 10, 9, 9, 9,110, + 111,100,101, 80,114,105,109, 69,120,112, 46, 86, 97,114,105, + 97, 98,108,101, 32, 32, 61, 32,118, 97,114, 10, 9, 9, 9, + 110,111,100,101, 80,114,105,109, 69,120,112, 46, 84,111,107, + 101,110,115, 32, 32, 32, 32, 61, 32,116,111,107,101,110, 76, + 105,115,116, 10, 9, 9, 9, 45, 45, 10, 9, 9, 9,114,101, + 116,117,114,110, 32,116,114,117,101, 44, 32,110,111,100,101, + 80,114,105,109, 69,120,112, 10, 9, 9,101,108,115,101, 10, + 9, 9, 9,114,101,116,117,114,110, 32,102, 97,108,115,101, + 44, 32, 71,101,110,101,114, 97,116,101, 69,114,114,111,114, + 40, 34,112,114,105,109, 97,114,121, 32,101,120,112,114,101, + 115,115,105,111,110, 32,101,120,112,101, 99,116,101,100, 34, + 41, 10, 9, 9,101,110,100, 10, 9,101,110,100, 10, 10, 9, + 80, 97,114,115,101, 83,117,102,102,105,120,101,100, 69,120, + 112,114, 32, 61, 32,102,117,110, 99,116,105,111,110, 40,115, + 99,111,112,101, 44, 32,111,110,108,121, 68,111,116, 67,111, + 108,111,110, 41, 10, 9, 9, 45, 45, 98, 97,115,101, 32,112, + 114,105,109, 97,114,121, 32,101,120,112,114,101,115,115,105, + 111,110, 10, 9, 9,108,111, 99, 97,108, 32,115,116, 44, 32, + 112,114,105,109, 32, 61, 32, 80, 97,114,115,101, 80,114,105, + 109, 97,114,121, 69,120,112,114, 40,115, 99,111,112,101, 41, + 10, 9, 9,105,102, 32,110,111,116, 32,115,116, 32,116,104, + 101,110, 32,114,101,116,117,114,110, 32,102, 97,108,115,101, + 44, 32,112,114,105,109, 32,101,110,100, 10, 9, 9, 45, 45, + 10, 9, 9,119,104,105,108,101, 32,116,114,117,101, 32,100, + 111, 10, 9, 9, 9,108,111, 99, 97,108, 32,116,111,107,101, + 110, 76,105,115,116, 32, 61, 32,123,125, 10, 10, 9, 9, 9, + 105,102, 32,116,111,107, 58, 73,115, 83,121,109, 98,111,108, + 40, 39, 46, 39, 41, 32,111,114, 32,116,111,107, 58, 73,115, + 83,121,109, 98,111,108, 40, 39, 58, 39, 41, 32,116,104,101, + 110, 10, 9, 9, 9, 9,108,111, 99, 97,108, 32,115,121,109, + 98, 32, 61, 32,116,111,107, 58, 71,101,116, 40,116,111,107, + 101,110, 76,105,115,116, 41, 46, 68, 97,116, 97, 10, 9, 9, + 9, 9,105,102, 32,110,111,116, 32,116,111,107, 58, 73,115, + 40, 39, 73,100,101,110,116, 39, 41, 32,116,104,101,110, 10, + 9, 9, 9, 9, 9,114,101,116,117,114,110, 32,102, 97,108, + 115,101, 44, 32, 71,101,110,101,114, 97,116,101, 69,114,114, + 111,114, 40, 34, 60, 73,100,101,110,116, 62, 32,101,120,112, + 101, 99,116,101,100, 46, 34, 41, 10, 9, 9, 9, 9,101,110, + 100, 10, 9, 9, 9, 9,108,111, 99, 97,108, 32,105,100, 32, + 61, 32,116,111,107, 58, 71,101,116, 40,116,111,107,101,110, + 76,105,115,116, 41, 10, 9, 9, 9, 9,108,111, 99, 97,108, + 32,110,111,100,101, 73,110,100,101,120, 32, 61, 32,123,125, + 10, 9, 9, 9, 9,110,111,100,101, 73,110,100,101,120, 46, + 65,115,116, 84,121,112,101, 32, 32, 61, 32, 39, 77,101,109, + 98,101,114, 69,120,112,114, 39, 10, 9, 9, 9, 9,110,111, + 100,101, 73,110,100,101,120, 46, 66, 97,115,101, 32, 32, 32, + 32, 32, 61, 32,112,114,105,109, 10, 9, 9, 9, 9,110,111, + 100,101, 73,110,100,101,120, 46, 73,110,100,101,120,101,114, + 32, 32, 61, 32,115,121,109, 98, 10, 9, 9, 9, 9,110,111, + 100,101, 73,110,100,101,120, 46, 73,100,101,110,116, 32, 32, + 32, 32, 61, 32,105,100, 10, 9, 9, 9, 9,110,111,100,101, + 73,110,100,101,120, 46, 84,111,107,101,110,115, 32, 32, 32, + 61, 32,116,111,107,101,110, 76,105,115,116, 10, 9, 9, 9, + 9, 45, 45, 10, 9, 9, 9, 9,112,114,105,109, 32, 61, 32, + 110,111,100,101, 73,110,100,101,120, 10, 10, 9, 9, 9,101, + 108,115,101,105,102, 32,110,111,116, 32,111,110,108,121, 68, + 111,116, 67,111,108,111,110, 32, 97,110,100, 32,116,111,107, + 58, 67,111,110,115,117,109,101, 83,121,109, 98,111,108, 40, + 39, 91, 39, 44, 32,116,111,107,101,110, 76,105,115,116, 41, + 32,116,104,101,110, 10, 9, 9, 9, 9,108,111, 99, 97,108, + 32,115,116, 44, 32,101,120, 32, 61, 32, 80, 97,114,115,101, + 69,120,112,114, 40,115, 99,111,112,101, 41, 10, 9, 9, 9, + 9,105,102, 32,110,111,116, 32,115,116, 32,116,104,101,110, + 32,114,101,116,117,114,110, 32,102, 97,108,115,101, 44, 32, + 101,120, 32,101,110,100, 10, 9, 9, 9, 9,105,102, 32,110, + 111,116, 32,116,111,107, 58, 67,111,110,115,117,109,101, 83, + 121,109, 98,111,108, 40, 39, 93, 39, 44, 32,116,111,107,101, + 110, 76,105,115,116, 41, 32,116,104,101,110, 10, 9, 9, 9, + 9, 9,114,101,116,117,114,110, 32,102, 97,108,115,101, 44, + 32, 71,101,110,101,114, 97,116,101, 69,114,114,111,114, 40, + 34, 96, 93, 96, 32,101,120,112,101, 99,116,101,100, 46, 34, + 41, 10, 9, 9, 9, 9,101,110,100, 10, 9, 9, 9, 9,108, + 111, 99, 97,108, 32,110,111,100,101, 73,110,100,101,120, 32, + 61, 32,123,125, 10, 9, 9, 9, 9,110,111,100,101, 73,110, + 100,101,120, 46, 65,115,116, 84,121,112,101, 32, 32, 61, 32, + 39, 73,110,100,101,120, 69,120,112,114, 39, 10, 9, 9, 9, + 9,110,111,100,101, 73,110,100,101,120, 46, 66, 97,115,101, + 32, 32, 32, 32, 32, 61, 32,112,114,105,109, 10, 9, 9, 9, + 9,110,111,100,101, 73,110,100,101,120, 46, 73,110,100,101, + 120, 32, 32, 32, 32, 61, 32,101,120, 10, 9, 9, 9, 9,110, + 111,100,101, 73,110,100,101,120, 46, 84,111,107,101,110,115, + 32, 32, 32, 61, 32,116,111,107,101,110, 76,105,115,116, 10, + 9, 9, 9, 9, 45, 45, 10, 9, 9, 9, 9,112,114,105,109, + 32, 61, 32,110,111,100,101, 73,110,100,101,120, 10, 10, 9, + 9, 9,101,108,115,101,105,102, 32,110,111,116, 32,111,110, + 108,121, 68,111,116, 67,111,108,111,110, 32, 97,110,100, 32, + 116,111,107, 58, 67,111,110,115,117,109,101, 83,121,109, 98, + 111,108, 40, 39, 40, 39, 44, 32,116,111,107,101,110, 76,105, + 115,116, 41, 32,116,104,101,110, 10, 9, 9, 9, 9,108,111, + 99, 97,108, 32, 97,114,103,115, 32, 61, 32,123,125, 10, 9, + 9, 9, 9,119,104,105,108,101, 32,110,111,116, 32,116,111, + 107, 58, 67,111,110,115,117,109,101, 83,121,109, 98,111,108, + 40, 39, 41, 39, 44, 32,116,111,107,101,110, 76,105,115,116, + 41, 32,100,111, 10, 9, 9, 9, 9, 9,108,111, 99, 97,108, + 32,115,116, 44, 32,101,120, 32, 61, 32, 80, 97,114,115,101, + 69,120,112,114, 40,115, 99,111,112,101, 41, 10, 9, 9, 9, + 9, 9,105,102, 32,110,111,116, 32,115,116, 32,116,104,101, + 110, 32,114,101,116,117,114,110, 32,102, 97,108,115,101, 44, + 32,101,120, 32,101,110,100, 10, 9, 9, 9, 9, 9, 97,114, + 103,115, 91, 35, 97,114,103,115, 43, 49, 93, 32, 61, 32,101, + 120, 10, 9, 9, 9, 9, 9,105,102, 32,110,111,116, 32,116, + 111,107, 58, 67,111,110,115,117,109,101, 83,121,109, 98,111, + 108, 40, 39, 44, 39, 44, 32,116,111,107,101,110, 76,105,115, + 116, 41, 32,116,104,101,110, 10, 9, 9, 9, 9, 9, 9,105, + 102, 32,116,111,107, 58, 67,111,110,115,117,109,101, 83,121, + 109, 98,111,108, 40, 39, 41, 39, 44, 32,116,111,107,101,110, + 76,105,115,116, 41, 32,116,104,101,110, 10, 9, 9, 9, 9, + 9, 9, 9, 98,114,101, 97,107, 10, 9, 9, 9, 9, 9, 9, + 101,108,115,101, 10, 9, 9, 9, 9, 9, 9, 9,114,101,116, + 117,114,110, 32,102, 97,108,115,101, 44, 32, 71,101,110,101, + 114, 97,116,101, 69,114,114,111,114, 40, 34, 96, 41, 96, 32, + 69,120,112,101, 99,116,101,100, 46, 34, 41, 10, 9, 9, 9, + 9, 9, 9,101,110,100, 10, 9, 9, 9, 9, 9,101,110,100, + 10, 9, 9, 9, 9,101,110,100, 10, 9, 9, 9, 9,108,111, + 99, 97,108, 32,110,111,100,101, 67, 97,108,108, 32, 61, 32, + 123,125, 10, 9, 9, 9, 9,110,111,100,101, 67, 97,108,108, + 46, 65,115,116, 84,121,112,101, 32, 32, 32, 61, 32, 39, 67, + 97,108,108, 69,120,112,114, 39, 10, 9, 9, 9, 9,110,111, + 100,101, 67, 97,108,108, 46, 66, 97,115,101, 32, 32, 32, 32, + 32, 32, 61, 32,112,114,105,109, 10, 9, 9, 9, 9,110,111, + 100,101, 67, 97,108,108, 46, 65,114,103,117,109,101,110,116, + 115, 32, 61, 32, 97,114,103,115, 10, 9, 9, 9, 9,110,111, + 100,101, 67, 97,108,108, 46, 84,111,107,101,110,115, 32, 32, + 32, 32, 61, 32,116,111,107,101,110, 76,105,115,116, 10, 9, + 9, 9, 9, 45, 45, 10, 9, 9, 9, 9,112,114,105,109, 32, + 61, 32,110,111,100,101, 67, 97,108,108, 10, 10, 9, 9, 9, + 101,108,115,101,105,102, 32,110,111,116, 32,111,110,108,121, + 68,111,116, 67,111,108,111,110, 32, 97,110,100, 32,116,111, + 107, 58, 73,115, 40, 39, 83,116,114,105,110,103, 39, 41, 32, + 116,104,101,110, 10, 9, 9, 9, 9, 45, 45,115,116,114,105, + 110,103, 32, 99, 97,108,108, 10, 9, 9, 9, 9,108,111, 99, + 97,108, 32,110,111,100,101, 67, 97,108,108, 32, 61, 32,123, + 125, 10, 9, 9, 9, 9,110,111,100,101, 67, 97,108,108, 46, + 65,115,116, 84,121,112,101, 32, 32, 32, 32, 61, 32, 39, 83, + 116,114,105,110,103, 67, 97,108,108, 69,120,112,114, 39, 10, + 9, 9, 9, 9,110,111,100,101, 67, 97,108,108, 46, 66, 97, + 115,101, 32, 32, 32, 32, 32, 32, 32, 61, 32,112,114,105,109, + 10, 9, 9, 9, 9,110,111,100,101, 67, 97,108,108, 46, 65, + 114,103,117,109,101,110,116,115, 32, 32, 61, 32,123, 32,116, + 111,107, 58, 71,101,116, 40,116,111,107,101,110, 76,105,115, + 116, 41, 32,125, 10, 9, 9, 9, 9,110,111,100,101, 67, 97, + 108,108, 46, 84,111,107,101,110,115, 32, 32, 32, 32, 32, 61, + 32,116,111,107,101,110, 76,105,115,116, 10, 9, 9, 9, 9, + 45, 45, 10, 9, 9, 9, 9,112,114,105,109, 32, 61, 32,110, + 111,100,101, 67, 97,108,108, 10, 10, 9, 9, 9,101,108,115, + 101,105,102, 32,110,111,116, 32,111,110,108,121, 68,111,116, + 67,111,108,111,110, 32, 97,110,100, 32,116,111,107, 58, 73, + 115, 83,121,109, 98,111,108, 40, 39,123, 39, 41, 32,116,104, + 101,110, 10, 9, 9, 9, 9, 45, 45,116, 97, 98,108,101, 32, + 99, 97,108,108, 10, 9, 9, 9, 9,108,111, 99, 97,108, 32, + 115,116, 44, 32,101,120, 32, 61, 32, 80, 97,114,115,101, 83, + 105,109,112,108,101, 69,120,112,114, 40,115, 99,111,112,101, + 41, 10, 9, 9, 9, 9, 45, 45, 32, 70, 73, 88, 58, 32, 80, + 97,114,115,101, 69,120,112,114, 40,115, 99,111,112,101, 41, + 32,112, 97,114,115,101,115, 32,116,104,101, 32,116, 97, 98, + 108,101, 32, 65, 78, 68, 32, 97,110,100, 32, 97,110,121, 32, + 102,111,108,108,111,119,105,110,103, 32, 98,105,110, 97,114, + 121, 32,101,120,112,114,101,115,115,105,111,110,115, 46, 10, + 9, 9, 9, 9, 45, 45, 32, 87,101, 32,106,117,115,116, 32, + 119, 97,110,116, 32,116,104,101, 32,116, 97, 98,108,101, 10, + 9, 9, 9, 9,105,102, 32,110,111,116, 32,115,116, 32,116, + 104,101,110, 32,114,101,116,117,114,110, 32,102, 97,108,115, + 101, 44, 32,101,120, 32,101,110,100, 10, 9, 9, 9, 9,108, + 111, 99, 97,108, 32,110,111,100,101, 67, 97,108,108, 32, 61, + 32,123,125, 10, 9, 9, 9, 9,110,111,100,101, 67, 97,108, + 108, 46, 65,115,116, 84,121,112,101, 32, 32, 32, 61, 32, 39, + 84, 97, 98,108,101, 67, 97,108,108, 69,120,112,114, 39, 10, + 9, 9, 9, 9,110,111,100,101, 67, 97,108,108, 46, 66, 97, + 115,101, 32, 32, 32, 32, 32, 32, 61, 32,112,114,105,109, 10, + 9, 9, 9, 9,110,111,100,101, 67, 97,108,108, 46, 65,114, + 103,117,109,101,110,116,115, 32, 61, 32,123, 32,101,120, 32, + 125, 10, 9, 9, 9, 9,110,111,100,101, 67, 97,108,108, 46, + 84,111,107,101,110,115, 32, 32, 32, 32, 61, 32,116,111,107, + 101,110, 76,105,115,116, 10, 9, 9, 9, 9, 45, 45, 10, 9, + 9, 9, 9,112,114,105,109, 32, 61, 32,110,111,100,101, 67, + 97,108,108, 10, 10, 9, 9, 9,101,108,115,101, 10, 9, 9, + 9, 9, 98,114,101, 97,107, 10, 9, 9, 9,101,110,100, 10, + 9, 9,101,110,100, 10, 9, 9,114,101,116,117,114,110, 32, + 116,114,117,101, 44, 32,112,114,105,109, 10, 9,101,110,100, + 10, 10, 10, 9, 80, 97,114,115,101, 83,105,109,112,108,101, + 69,120,112,114, 32, 61, 32,102,117,110, 99,116,105,111,110, + 40,115, 99,111,112,101, 41, 10, 9, 9,108,111, 99, 97,108, + 32,116,111,107,101,110, 76,105,115,116, 32, 61, 32,123,125, + 10, 10, 9, 9,105,102, 32,116,111,107, 58, 73,115, 40, 39, + 78,117,109, 98,101,114, 39, 41, 32,116,104,101,110, 10, 9, + 9, 9,108,111, 99, 97,108, 32,110,111,100,101, 78,117,109, + 32, 61, 32,123,125, 10, 9, 9, 9,110,111,100,101, 78,117, + 109, 46, 65,115,116, 84,121,112,101, 32, 61, 32, 39, 78,117, + 109, 98,101,114, 69,120,112,114, 39, 10, 9, 9, 9,110,111, + 100,101, 78,117,109, 46, 86, 97,108,117,101, 32, 32, 32, 61, + 32,116,111,107, 58, 71,101,116, 40,116,111,107,101,110, 76, + 105,115,116, 41, 10, 9, 9, 9,110,111,100,101, 78,117,109, + 46, 84,111,107,101,110,115, 32, 32, 61, 32,116,111,107,101, + 110, 76,105,115,116, 10, 9, 9, 9,114,101,116,117,114,110, + 32,116,114,117,101, 44, 32,110,111,100,101, 78,117,109, 10, + 10, 9, 9,101,108,115,101,105,102, 32,116,111,107, 58, 73, + 115, 40, 39, 83,116,114,105,110,103, 39, 41, 32,116,104,101, + 110, 10, 9, 9, 9,108,111, 99, 97,108, 32,110,111,100,101, + 83,116,114, 32, 61, 32,123,125, 10, 9, 9, 9,110,111,100, + 101, 83,116,114, 46, 65,115,116, 84,121,112,101, 32, 61, 32, + 39, 83,116,114,105,110,103, 69,120,112,114, 39, 10, 9, 9, + 9,110,111,100,101, 83,116,114, 46, 86, 97,108,117,101, 32, + 32, 32, 61, 32,116,111,107, 58, 71,101,116, 40,116,111,107, + 101,110, 76,105,115,116, 41, 10, 9, 9, 9,110,111,100,101, + 83,116,114, 46, 84,111,107,101,110,115, 32, 32, 61, 32,116, + 111,107,101,110, 76,105,115,116, 10, 9, 9, 9,114,101,116, + 117,114,110, 32,116,114,117,101, 44, 32,110,111,100,101, 83, + 116,114, 10, 10, 9, 9,101,108,115,101,105,102, 32,116,111, + 107, 58, 67,111,110,115,117,109,101, 75,101,121,119,111,114, + 100, 40, 39,110,105,108, 39, 44, 32,116,111,107,101,110, 76, + 105,115,116, 41, 32,116,104,101,110, 10, 9, 9, 9,108,111, + 99, 97,108, 32,110,111,100,101, 78,105,108, 32, 61, 32,123, + 125, 10, 9, 9, 9,110,111,100,101, 78,105,108, 46, 65,115, + 116, 84,121,112,101, 32, 61, 32, 39, 78,105,108, 69,120,112, + 114, 39, 10, 9, 9, 9,110,111,100,101, 78,105,108, 46, 84, + 111,107,101,110,115, 32, 32, 61, 32,116,111,107,101,110, 76, + 105,115,116, 10, 9, 9, 9,114,101,116,117,114,110, 32,116, + 114,117,101, 44, 32,110,111,100,101, 78,105,108, 10, 10, 9, + 9,101,108,115,101,105,102, 32,116,111,107, 58, 73,115, 75, + 101,121,119,111,114,100, 40, 39,102, 97,108,115,101, 39, 41, + 32,111,114, 32,116,111,107, 58, 73,115, 75,101,121,119,111, + 114,100, 40, 39,116,114,117,101, 39, 41, 32,116,104,101,110, + 10, 9, 9, 9,108,111, 99, 97,108, 32,110,111,100,101, 66, + 111,111,108,101, 97,110, 32, 61, 32,123,125, 10, 9, 9, 9, + 110,111,100,101, 66,111,111,108,101, 97,110, 46, 65,115,116, + 84,121,112,101, 32, 61, 32, 39, 66,111,111,108,101, 97,110, + 69,120,112,114, 39, 10, 9, 9, 9,110,111,100,101, 66,111, + 111,108,101, 97,110, 46, 86, 97,108,117,101, 32, 32, 32, 61, + 32, 40,116,111,107, 58, 71,101,116, 40,116,111,107,101,110, + 76,105,115,116, 41, 46, 68, 97,116, 97, 32, 61, 61, 32, 39, + 116,114,117,101, 39, 41, 10, 9, 9, 9,110,111,100,101, 66, + 111,111,108,101, 97,110, 46, 84,111,107,101,110,115, 32, 32, + 61, 32,116,111,107,101,110, 76,105,115,116, 10, 9, 9, 9, + 114,101,116,117,114,110, 32,116,114,117,101, 44, 32,110,111, + 100,101, 66,111,111,108,101, 97,110, 10, 10, 9, 9,101,108, + 115,101,105,102, 32,116,111,107, 58, 67,111,110,115,117,109, + 101, 83,121,109, 98,111,108, 40, 39, 46, 46, 46, 39, 44, 32, + 116,111,107,101,110, 76,105,115,116, 41, 32,116,104,101,110, + 10, 9, 9, 9,108,111, 99, 97,108, 32,110,111,100,101, 68, + 111,116,115, 32, 61, 32,123,125, 10, 9, 9, 9,110,111,100, + 101, 68,111,116,115, 46, 65,115,116, 84,121,112,101, 32, 32, + 61, 32, 39, 68,111,116,115, 69,120,112,114, 39, 10, 9, 9, + 9,110,111,100,101, 68,111,116,115, 46, 84,111,107,101,110, + 115, 32, 32, 32, 61, 32,116,111,107,101,110, 76,105,115,116, + 10, 9, 9, 9,114,101,116,117,114,110, 32,116,114,117,101, + 44, 32,110,111,100,101, 68,111,116,115, 10, 10, 9, 9,101, + 108,115,101,105,102, 32,116,111,107, 58, 67,111,110,115,117, + 109,101, 83,121,109, 98,111,108, 40, 39,123, 39, 44, 32,116, + 111,107,101,110, 76,105,115,116, 41, 32,116,104,101,110, 10, + 9, 9, 9,108,111, 99, 97,108, 32,118, 32, 61, 32,123,125, + 10, 9, 9, 9,118, 46, 65,115,116, 84,121,112,101, 32, 61, + 32, 39, 67,111,110,115,116,114,117, 99,116,111,114, 69,120, + 112,114, 39, 10, 9, 9, 9,118, 46, 69,110,116,114,121, 76, + 105,115,116, 32, 61, 32,123,125, 10, 9, 9, 9, 45, 45, 10, + 9, 9, 9,119,104,105,108,101, 32,116,114,117,101, 32,100, + 111, 10, 9, 9, 9, 9,105,102, 32,116,111,107, 58, 73,115, + 83,121,109, 98,111,108, 40, 39, 91, 39, 44, 32,116,111,107, + 101,110, 76,105,115,116, 41, 32,116,104,101,110, 10, 9, 9, + 9, 9, 9, 45, 45,107,101,121, 10, 9, 9, 9, 9, 9,116, + 111,107, 58, 71,101,116, 40,116,111,107,101,110, 76,105,115, + 116, 41, 10, 9, 9, 9, 9, 9,108,111, 99, 97,108, 32,115, + 116, 44, 32,107,101,121, 32, 61, 32, 80, 97,114,115,101, 69, + 120,112,114, 40,115, 99,111,112,101, 41, 10, 9, 9, 9, 9, + 9,105,102, 32,110,111,116, 32,115,116, 32,116,104,101,110, + 10, 9, 9, 9, 9, 9, 9,114,101,116,117,114,110, 32,102, + 97,108,115,101, 44, 32, 71,101,110,101,114, 97,116,101, 69, + 114,114,111,114, 40, 34, 75,101,121, 32, 69,120,112,114,101, + 115,115,105,111,110, 32, 69,120,112,101, 99,116,101,100, 34, + 41, 10, 9, 9, 9, 9, 9,101,110,100, 10, 9, 9, 9, 9, + 9,105,102, 32,110,111,116, 32,116,111,107, 58, 67,111,110, + 115,117,109,101, 83,121,109, 98,111,108, 40, 39, 93, 39, 44, + 32,116,111,107,101,110, 76,105,115,116, 41, 32,116,104,101, + 110, 10, 9, 9, 9, 9, 9, 9,114,101,116,117,114,110, 32, + 102, 97,108,115,101, 44, 32, 71,101,110,101,114, 97,116,101, + 69,114,114,111,114, 40, 34, 96, 93, 96, 32, 69,120,112,101, + 99,116,101,100, 34, 41, 10, 9, 9, 9, 9, 9,101,110,100, + 10, 9, 9, 9, 9, 9,105,102, 32,110,111,116, 32,116,111, + 107, 58, 67,111,110,115,117,109,101, 83,121,109, 98,111,108, + 40, 39, 61, 39, 44, 32,116,111,107,101,110, 76,105,115,116, + 41, 32,116,104,101,110, 10, 9, 9, 9, 9, 9, 9,114,101, + 116,117,114,110, 32,102, 97,108,115,101, 44, 32, 71,101,110, + 101,114, 97,116,101, 69,114,114,111,114, 40, 34, 96, 61, 96, + 32, 69,120,112,101, 99,116,101,100, 34, 41, 10, 9, 9, 9, + 9, 9,101,110,100, 10, 9, 9, 9, 9, 9,108,111, 99, 97, + 108, 32,115,116, 44, 32,118, 97,108,117,101, 32, 61, 32, 80, + 97,114,115,101, 69,120,112,114, 40,115, 99,111,112,101, 41, + 10, 9, 9, 9, 9, 9,105,102, 32,110,111,116, 32,115,116, + 32,116,104,101,110, 10, 9, 9, 9, 9, 9, 9,114,101,116, + 117,114,110, 32,102, 97,108,115,101, 44, 32, 71,101,110,101, + 114, 97,116,101, 69,114,114,111,114, 40, 34, 86, 97,108,117, + 101, 32, 69,120,112,114,101,115,115,105,111,110, 32, 69,120, + 112,101, 99,116,101,100, 34, 41, 10, 9, 9, 9, 9, 9,101, + 110,100, 10, 9, 9, 9, 9, 9,118, 46, 69,110,116,114,121, + 76,105,115,116, 91, 35,118, 46, 69,110,116,114,121, 76,105, + 115,116, 43, 49, 93, 32, 61, 32,123, 10, 9, 9, 9, 9, 9, + 9, 84,121,112,101, 32, 32, 61, 32, 39, 75,101,121, 39, 59, + 10, 9, 9, 9, 9, 9, 9, 75,101,121, 32, 32, 32, 61, 32, + 107,101,121, 59, 10, 9, 9, 9, 9, 9, 9, 86, 97,108,117, + 101, 32, 61, 32,118, 97,108,117,101, 59, 10, 9, 9, 9, 9, + 9,125, 10, 10, 9, 9, 9, 9,101,108,115,101,105,102, 32, + 116,111,107, 58, 73,115, 40, 39, 73,100,101,110,116, 39, 41, + 32,116,104,101,110, 10, 9, 9, 9, 9, 9, 45, 45,118, 97, + 108,117,101, 32,111,114, 32,107,101,121, 10, 9, 9, 9, 9, + 9,108,111, 99, 97,108, 32,108,111,111,107, 97,104,101, 97, + 100, 32, 61, 32,116,111,107, 58, 80,101,101,107, 40, 49, 41, + 10, 9, 9, 9, 9, 9,105,102, 32,108,111,111,107, 97,104, + 101, 97,100, 46, 84,121,112,101, 32, 61, 61, 32, 39, 83,121, + 109, 98,111,108, 39, 32, 97,110,100, 32,108,111,111,107, 97, + 104,101, 97,100, 46, 68, 97,116, 97, 32, 61, 61, 32, 39, 61, + 39, 32,116,104,101,110, 10, 9, 9, 9, 9, 9, 9, 45, 45, + 119,101, 32, 97,114,101, 32, 97, 32,107,101,121, 10, 9, 9, + 9, 9, 9, 9,108,111, 99, 97,108, 32,107,101,121, 32, 61, + 32,116,111,107, 58, 71,101,116, 40,116,111,107,101,110, 76, + 105,115,116, 41, 10, 9, 9, 9, 9, 9, 9,105,102, 32,110, + 111,116, 32,116,111,107, 58, 67,111,110,115,117,109,101, 83, + 121,109, 98,111,108, 40, 39, 61, 39, 44, 32,116,111,107,101, + 110, 76,105,115,116, 41, 32,116,104,101,110, 10, 9, 9, 9, + 9, 9, 9, 9,114,101,116,117,114,110, 32,102, 97,108,115, + 101, 44, 32, 71,101,110,101,114, 97,116,101, 69,114,114,111, + 114, 40, 34, 96, 61, 96, 32, 69,120,112,101, 99,116,101,100, + 34, 41, 10, 9, 9, 9, 9, 9, 9,101,110,100, 10, 9, 9, + 9, 9, 9, 9,108,111, 99, 97,108, 32,115,116, 44, 32,118, + 97,108,117,101, 32, 61, 32, 80, 97,114,115,101, 69,120,112, + 114, 40,115, 99,111,112,101, 41, 10, 9, 9, 9, 9, 9, 9, + 105,102, 32,110,111,116, 32,115,116, 32,116,104,101,110, 10, + 9, 9, 9, 9, 9, 9, 9,114,101,116,117,114,110, 32,102, + 97,108,115,101, 44, 32, 71,101,110,101,114, 97,116,101, 69, + 114,114,111,114, 40, 34, 86, 97,108,117,101, 32, 69,120,112, + 114,101,115,115,105,111,110, 32, 69,120,112,101, 99,116,101, + 100, 34, 41, 10, 9, 9, 9, 9, 9, 9,101,110,100, 10, 9, + 9, 9, 9, 9, 9,118, 46, 69,110,116,114,121, 76,105,115, + 116, 91, 35,118, 46, 69,110,116,114,121, 76,105,115,116, 43, + 49, 93, 32, 61, 32,123, 10, 9, 9, 9, 9, 9, 9, 9, 84, + 121,112,101, 32, 32, 61, 32, 39, 75,101,121, 83,116,114,105, + 110,103, 39, 59, 10, 9, 9, 9, 9, 9, 9, 9, 75,101,121, + 32, 32, 32, 61, 32,107,101,121, 46, 68, 97,116, 97, 59, 10, + 9, 9, 9, 9, 9, 9, 9, 86, 97,108,117,101, 32, 61, 32, + 118, 97,108,117,101, 59, 10, 9, 9, 9, 9, 9, 9,125, 10, + 10, 9, 9, 9, 9, 9,101,108,115,101, 10, 9, 9, 9, 9, + 9, 9, 45, 45,119,101, 32, 97,114,101, 32, 97, 32,118, 97, + 108,117,101, 10, 9, 9, 9, 9, 9, 9,108,111, 99, 97,108, + 32,115,116, 44, 32,118, 97,108,117,101, 32, 61, 32, 80, 97, + 114,115,101, 69,120,112,114, 40,115, 99,111,112,101, 41, 10, + 9, 9, 9, 9, 9, 9,105,102, 32,110,111,116, 32,115,116, + 32,116,104,101,110, 10, 9, 9, 9, 9, 9, 9, 9,114,101, + 116,117,114,110, 32,102, 97,108,115,101, 44, 32, 71,101,110, + 101,114, 97,116,101, 69,114,114,111,114, 40, 34, 86, 97,108, + 117,101, 32, 69,120,101, 99,116,101,100, 34, 41, 10, 9, 9, + 9, 9, 9, 9,101,110,100, 10, 9, 9, 9, 9, 9, 9,118, + 46, 69,110,116,114,121, 76,105,115,116, 91, 35,118, 46, 69, + 110,116,114,121, 76,105,115,116, 43, 49, 93, 32, 61, 32,123, + 10, 9, 9, 9, 9, 9, 9, 9, 84,121,112,101, 32, 61, 32, + 39, 86, 97,108,117,101, 39, 59, 10, 9, 9, 9, 9, 9, 9, + 9, 86, 97,108,117,101, 32, 61, 32,118, 97,108,117,101, 59, + 10, 9, 9, 9, 9, 9, 9,125, 10, 10, 9, 9, 9, 9, 9, + 101,110,100, 10, 9, 9, 9, 9,101,108,115,101,105,102, 32, + 116,111,107, 58, 67,111,110,115,117,109,101, 83,121,109, 98, + 111,108, 40, 39,125, 39, 44, 32,116,111,107,101,110, 76,105, + 115,116, 41, 32,116,104,101,110, 10, 9, 9, 9, 9, 9, 98, + 114,101, 97,107, 10, 10, 9, 9, 9, 9,101,108,115,101, 10, + 9, 9, 9, 9, 9, 45, 45,118, 97,108,117,101, 10, 9, 9, + 9, 9, 9,108,111, 99, 97,108, 32,115,116, 44, 32,118, 97, + 108,117,101, 32, 61, 32, 80, 97,114,115,101, 69,120,112,114, + 40,115, 99,111,112,101, 41, 10, 9, 9, 9, 9, 9,118, 46, + 69,110,116,114,121, 76,105,115,116, 91, 35,118, 46, 69,110, + 116,114,121, 76,105,115,116, 43, 49, 93, 32, 61, 32,123, 10, + 9, 9, 9, 9, 9, 9, 84,121,112,101, 32, 61, 32, 39, 86, + 97,108,117,101, 39, 59, 10, 9, 9, 9, 9, 9, 9, 86, 97, + 108,117,101, 32, 61, 32,118, 97,108,117,101, 59, 10, 9, 9, + 9, 9, 9,125, 10, 9, 9, 9, 9, 9,105,102, 32,110,111, + 116, 32,115,116, 32,116,104,101,110, 10, 9, 9, 9, 9, 9, + 9,114,101,116,117,114,110, 32,102, 97,108,115,101, 44, 32, + 71,101,110,101,114, 97,116,101, 69,114,114,111,114, 40, 34, + 86, 97,108,117,101, 32, 69,120,112,101, 99,116,101,100, 34, + 41, 10, 9, 9, 9, 9, 9,101,110,100, 10, 9, 9, 9, 9, + 101,110,100, 10, 10, 9, 9, 9, 9,105,102, 32,116,111,107, + 58, 67,111,110,115,117,109,101, 83,121,109, 98,111,108, 40, + 39, 59, 39, 44, 32,116,111,107,101,110, 76,105,115,116, 41, + 32,111,114, 32,116,111,107, 58, 67,111,110,115,117,109,101, + 83,121,109, 98,111,108, 40, 39, 44, 39, 44, 32,116,111,107, + 101,110, 76,105,115,116, 41, 32,116,104,101,110, 10, 9, 9, + 9, 9, 9, 45, 45, 97,108,108, 32,105,115, 32,103,111,111, + 100, 10, 9, 9, 9, 9,101,108,115,101,105,102, 32,116,111, + 107, 58, 67,111,110,115,117,109,101, 83,121,109, 98,111,108, + 40, 39,125, 39, 44, 32,116,111,107,101,110, 76,105,115,116, + 41, 32,116,104,101,110, 10, 9, 9, 9, 9, 9, 98,114,101, + 97,107, 10, 9, 9, 9, 9,101,108,115,101, 10, 9, 9, 9, + 9, 9,114,101,116,117,114,110, 32,102, 97,108,115,101, 44, + 32, 71,101,110,101,114, 97,116,101, 69,114,114,111,114, 40, + 34, 96,125, 96, 32,111,114, 32,116, 97, 98,108,101, 32,101, + 110,116,114,121, 32, 69,120,112,101, 99,116,101,100, 34, 41, + 10, 9, 9, 9, 9,101,110,100, 10, 9, 9, 9,101,110,100, + 10, 9, 9, 9,118, 46, 84,111,107,101,110,115, 32, 32, 61, + 32,116,111,107,101,110, 76,105,115,116, 10, 9, 9, 9,114, + 101,116,117,114,110, 32,116,114,117,101, 44, 32,118, 10, 10, + 9, 9,101,108,115,101,105,102, 32,116,111,107, 58, 67,111, + 110,115,117,109,101, 75,101,121,119,111,114,100, 40, 39,102, + 117,110, 99,116,105,111,110, 39, 44, 32,116,111,107,101,110, + 76,105,115,116, 41, 32,116,104,101,110, 10, 9, 9, 9,108, + 111, 99, 97,108, 32,115,116, 44, 32,102,117,110, 99, 32, 61, + 32, 80, 97,114,115,101, 70,117,110, 99,116,105,111,110, 65, + 114,103,115, 65,110,100, 66,111,100,121, 40,115, 99,111,112, + 101, 44, 32,116,111,107,101,110, 76,105,115,116, 41, 10, 9, + 9, 9,105,102, 32,110,111,116, 32,115,116, 32,116,104,101, + 110, 32,114,101,116,117,114,110, 32,102, 97,108,115,101, 44, + 32,102,117,110, 99, 32,101,110,100, 10, 9, 9, 9, 45, 45, + 10, 9, 9, 9,102,117,110, 99, 46, 73,115, 76,111, 99, 97, + 108, 32, 61, 32,116,114,117,101, 10, 9, 9, 9,114,101,116, + 117,114,110, 32,116,114,117,101, 44, 32,102,117,110, 99, 10, + 10, 9, 9,101,108,115,101, 10, 9, 9, 9,114,101,116,117, + 114,110, 32, 80, 97,114,115,101, 83,117,102,102,105,120,101, + 100, 69,120,112,114, 40,115, 99,111,112,101, 41, 10, 9, 9, + 101,110,100, 10, 9,101,110,100, 10, 10, 10, 9,108,111, 99, + 97,108, 32,117,110,111,112,115, 32, 61, 32,108,111,111,107, + 117,112,105,102,121,123, 39, 45, 39, 44, 32, 39,110,111,116, + 39, 44, 32, 39, 35, 39,125, 10, 9,108,111, 99, 97,108, 32, + 117,110,111,112,112,114,105,111, 32, 61, 32, 56, 10, 9,108, + 111, 99, 97,108, 32,112,114,105,111,114,105,116,121, 32, 61, + 32,123, 10, 9, 9, 91, 39, 43, 39, 93, 32, 61, 32,123, 54, + 44, 54,125, 59, 10, 9, 9, 91, 39, 45, 39, 93, 32, 61, 32, + 123, 54, 44, 54,125, 59, 10, 9, 9, 91, 39, 37, 39, 93, 32, + 61, 32,123, 55, 44, 55,125, 59, 10, 9, 9, 91, 39, 47, 39, + 93, 32, 61, 32,123, 55, 44, 55,125, 59, 10, 9, 9, 91, 39, + 42, 39, 93, 32, 61, 32,123, 55, 44, 55,125, 59, 10, 9, 9, + 91, 39, 94, 39, 93, 32, 61, 32,123, 49, 48, 44, 57,125, 59, + 10, 9, 9, 91, 39, 46, 46, 39, 93, 32, 61, 32,123, 53, 44, + 52,125, 59, 10, 9, 9, 91, 39, 61, 61, 39, 93, 32, 61, 32, + 123, 51, 44, 51,125, 59, 10, 9, 9, 91, 39, 60, 39, 93, 32, + 61, 32,123, 51, 44, 51,125, 59, 10, 9, 9, 91, 39, 60, 61, + 39, 93, 32, 61, 32,123, 51, 44, 51,125, 59, 10, 9, 9, 91, + 39,126, 61, 39, 93, 32, 61, 32,123, 51, 44, 51,125, 59, 10, + 9, 9, 91, 39, 62, 39, 93, 32, 61, 32,123, 51, 44, 51,125, + 59, 10, 9, 9, 91, 39, 62, 61, 39, 93, 32, 61, 32,123, 51, + 44, 51,125, 59, 10, 9, 9, 91, 39, 97,110,100, 39, 93, 32, + 61, 32,123, 50, 44, 50,125, 59, 10, 9, 9, 91, 39,111,114, + 39, 93, 32, 61, 32,123, 49, 44, 49,125, 59, 10, 9,125, 10, + 9, 80, 97,114,115,101, 83,117, 98, 69,120,112,114, 32, 61, + 32,102,117,110, 99,116,105,111,110, 40,115, 99,111,112,101, + 44, 32,108,101,118,101,108, 41, 10, 9, 9, 45, 45, 98, 97, + 115,101, 32,105,116,101,109, 44, 32,112,111,115,115,105, 98, + 108,121, 32,119,105,116,104, 32,117,110,111,112, 32,112,114, + 101,102,105,120, 10, 9, 9,108,111, 99, 97,108, 32,115,116, + 44, 32,101,120,112, 10, 9, 9,105,102, 32,117,110,111,112, + 115, 91,116,111,107, 58, 80,101,101,107, 40, 41, 46, 68, 97, + 116, 97, 93, 32,116,104,101,110, 10, 9, 9, 9,108,111, 99, + 97,108, 32,116,111,107,101,110, 76,105,115,116, 32, 61, 32, + 123,125, 10, 9, 9, 9,108,111, 99, 97,108, 32,111,112, 32, + 61, 32,116,111,107, 58, 71,101,116, 40,116,111,107,101,110, + 76,105,115,116, 41, 46, 68, 97,116, 97, 10, 9, 9, 9,115, + 116, 44, 32,101,120,112, 32, 61, 32, 80, 97,114,115,101, 83, + 117, 98, 69,120,112,114, 40,115, 99,111,112,101, 44, 32,117, + 110,111,112,112,114,105,111, 41, 10, 9, 9, 9,105,102, 32, + 110,111,116, 32,115,116, 32,116,104,101,110, 32,114,101,116, + 117,114,110, 32,102, 97,108,115,101, 44, 32,101,120,112, 32, + 101,110,100, 10, 9, 9, 9,108,111, 99, 97,108, 32,110,111, + 100,101, 69,120, 32, 61, 32,123,125, 10, 9, 9, 9,110,111, + 100,101, 69,120, 46, 65,115,116, 84,121,112,101, 32, 61, 32, + 39, 85,110,111,112, 69,120,112,114, 39, 10, 9, 9, 9,110, + 111,100,101, 69,120, 46, 82,104,115, 32, 32, 32, 32, 32, 61, + 32,101,120,112, 10, 9, 9, 9,110,111,100,101, 69,120, 46, + 79,112, 32, 32, 32, 32, 32, 32, 61, 32,111,112, 10, 9, 9, + 9,110,111,100,101, 69,120, 46, 79,112,101,114, 97,116,111, + 114, 80,114,101, 99,101,100,101,110, 99,101, 32, 61, 32,117, + 110,111,112,112,114,105,111, 10, 9, 9, 9,110,111,100,101, + 69,120, 46, 84,111,107,101,110,115, 32, 32, 61, 32,116,111, + 107,101,110, 76,105,115,116, 10, 9, 9, 9,101,120,112, 32, + 61, 32,110,111,100,101, 69,120, 10, 9, 9,101,108,115,101, + 10, 9, 9, 9,115,116, 44, 32,101,120,112, 32, 61, 32, 80, + 97,114,115,101, 83,105,109,112,108,101, 69,120,112,114, 40, + 115, 99,111,112,101, 41, 10, 9, 9, 9,105,102, 32,110,111, + 116, 32,115,116, 32,116,104,101,110, 32,114,101,116,117,114, + 110, 32,102, 97,108,115,101, 44, 32,101,120,112, 32,101,110, + 100, 10, 9, 9,101,110,100, 10, 10, 9, 9, 45, 45,110,101, + 120,116, 32,105,116,101,109,115, 32,105,110, 32, 99,104, 97, + 105,110, 10, 9, 9,119,104,105,108,101, 32,116,114,117,101, + 32,100,111, 10, 9, 9, 9,108,111, 99, 97,108, 32,112,114, + 105,111, 32, 61, 32,112,114,105,111,114,105,116,121, 91,116, + 111,107, 58, 80,101,101,107, 40, 41, 46, 68, 97,116, 97, 93, + 10, 9, 9, 9,105,102, 32,112,114,105,111, 32, 97,110,100, + 32,112,114,105,111, 91, 49, 93, 32, 62, 32,108,101,118,101, + 108, 32,116,104,101,110, 10, 9, 9, 9, 9,108,111, 99, 97, + 108, 32,116,111,107,101,110, 76,105,115,116, 32, 61, 32,123, + 125, 10, 9, 9, 9, 9,108,111, 99, 97,108, 32,111,112, 32, + 61, 32,116,111,107, 58, 71,101,116, 40,116,111,107,101,110, + 76,105,115,116, 41, 46, 68, 97,116, 97, 10, 9, 9, 9, 9, + 108,111, 99, 97,108, 32,115,116, 44, 32,114,104,115, 32, 61, + 32, 80, 97,114,115,101, 83,117, 98, 69,120,112,114, 40,115, + 99,111,112,101, 44, 32,112,114,105,111, 91, 50, 93, 41, 10, + 9, 9, 9, 9,105,102, 32,110,111,116, 32,115,116, 32,116, + 104,101,110, 32,114,101,116,117,114,110, 32,102, 97,108,115, + 101, 44, 32,114,104,115, 32,101,110,100, 10, 9, 9, 9, 9, + 108,111, 99, 97,108, 32,110,111,100,101, 69,120, 32, 61, 32, + 123,125, 10, 9, 9, 9, 9,110,111,100,101, 69,120, 46, 65, + 115,116, 84,121,112,101, 32, 61, 32, 39, 66,105,110,111,112, + 69,120,112,114, 39, 10, 9, 9, 9, 9,110,111,100,101, 69, + 120, 46, 76,104,115, 32, 32, 32, 32, 32, 61, 32,101,120,112, + 10, 9, 9, 9, 9,110,111,100,101, 69,120, 46, 79,112, 32, + 32, 32, 32, 32, 32, 61, 32,111,112, 10, 9, 9, 9, 9,110, + 111,100,101, 69,120, 46, 79,112,101,114, 97,116,111,114, 80, + 114,101, 99,101,100,101,110, 99,101, 32, 61, 32,112,114,105, + 111, 91, 49, 93, 10, 9, 9, 9, 9,110,111,100,101, 69,120, + 46, 82,104,115, 32, 32, 32, 32, 32, 61, 32,114,104,115, 10, + 9, 9, 9, 9,110,111,100,101, 69,120, 46, 84,111,107,101, + 110,115, 32, 32, 61, 32,116,111,107,101,110, 76,105,115,116, + 10, 9, 9, 9, 9, 45, 45, 10, 9, 9, 9, 9,101,120,112, + 32, 61, 32,110,111,100,101, 69,120, 10, 9, 9, 9,101,108, + 115,101, 10, 9, 9, 9, 9, 98,114,101, 97,107, 10, 9, 9, + 9,101,110,100, 10, 9, 9,101,110,100, 10, 10, 9, 9,114, + 101,116,117,114,110, 32,116,114,117,101, 44, 32,101,120,112, + 10, 9,101,110,100, 10, 10, 10, 9, 80, 97,114,115,101, 69, + 120,112,114, 32, 61, 32,102,117,110, 99,116,105,111,110, 40, + 115, 99,111,112,101, 41, 10, 9, 9,114,101,116,117,114,110, + 32, 80, 97,114,115,101, 83,117, 98, 69,120,112,114, 40,115, + 99,111,112,101, 44, 32, 48, 41, 10, 9,101,110,100, 10, 10, + 9,108,111, 99, 97,108, 32,102,117,110, 99,116,105,111,110, + 32, 80, 97,114,115,101, 83,116, 97,116,101,109,101,110,116, + 40,115, 99,111,112,101, 41, 10, 9, 9,108,111, 99, 97,108, + 32,115,116, 97,116, 32, 61, 32,110,105,108, 10, 9, 9,108, + 111, 99, 97,108, 32,116,111,107,101,110, 76,105,115,116, 32, + 61, 32,123,125, 10, 9, 9,105,102, 32,116,111,107, 58, 67, + 111,110,115,117,109,101, 75,101,121,119,111,114,100, 40, 39, + 105,102, 39, 44, 32,116,111,107,101,110, 76,105,115,116, 41, + 32,116,104,101,110, 10, 9, 9, 9, 45, 45,115,101,116,117, + 112, 10, 9, 9, 9,108,111, 99, 97,108, 32,110,111,100,101, + 73,102, 83,116, 97,116, 32, 61, 32,123,125, 10, 9, 9, 9, + 110,111,100,101, 73,102, 83,116, 97,116, 46, 65,115,116, 84, + 121,112,101, 32, 61, 32, 39, 73,102, 83,116, 97,116,101,109, + 101,110,116, 39, 10, 9, 9, 9,110,111,100,101, 73,102, 83, + 116, 97,116, 46, 67,108, 97,117,115,101,115, 32, 61, 32,123, + 125, 10, 10, 9, 9, 9, 45, 45, 99,108, 97,117,115,101,115, + 10, 9, 9, 9,114,101,112,101, 97,116, 10, 9, 9, 9, 9, + 108,111, 99, 97,108, 32,115,116, 44, 32,110,111,100,101, 67, + 111,110,100, 32, 61, 32, 80, 97,114,115,101, 69,120,112,114, + 40,115, 99,111,112,101, 41, 10, 9, 9, 9, 9,105,102, 32, + 110,111,116, 32,115,116, 32,116,104,101,110, 32,114,101,116, + 117,114,110, 32,102, 97,108,115,101, 44, 32,110,111,100,101, + 67,111,110,100, 32,101,110,100, 10, 9, 9, 9, 9,105,102, + 32,110,111,116, 32,116,111,107, 58, 67,111,110,115,117,109, + 101, 75,101,121,119,111,114,100, 40, 39,116,104,101,110, 39, + 44, 32,116,111,107,101,110, 76,105,115,116, 41, 32,116,104, + 101,110, 10, 9, 9, 9, 9, 9,114,101,116,117,114,110, 32, + 102, 97,108,115,101, 44, 32, 71,101,110,101,114, 97,116,101, + 69,114,114,111,114, 40, 34, 96,116,104,101,110, 96, 32,101, + 120,112,101, 99,116,101,100, 46, 34, 41, 10, 9, 9, 9, 9, + 101,110,100, 10, 9, 9, 9, 9,105,102, 32,116,111,107, 58, + 73,115, 83,121,109, 98,111,108, 40, 39, 59, 39, 41, 32,116, + 104,101,110, 10, 9, 9, 9, 9, 9,116,111,107, 58, 71,101, + 116, 40, 41, 10, 9, 9, 9, 9,101,110,100, 10, 9, 9, 9, + 9,108,111, 99, 97,108, 32,115,116, 44, 32,110,111,100,101, + 66,111,100,121, 32, 61, 32, 80, 97,114,115,101, 83,116, 97, + 116,101,109,101,110,116, 76,105,115,116, 40,115, 99,111,112, + 101, 41, 10, 9, 9, 9, 9,105,102, 32,110,111,116, 32,115, + 116, 32,116,104,101,110, 32,114,101,116,117,114,110, 32,102, + 97,108,115,101, 44, 32,110,111,100,101, 66,111,100,121, 32, + 101,110,100, 10, 9, 9, 9, 9,110,111,100,101, 73,102, 83, + 116, 97,116, 46, 67,108, 97,117,115,101,115, 91, 35,110,111, + 100,101, 73,102, 83,116, 97,116, 46, 67,108, 97,117,115,101, + 115, 43, 49, 93, 32, 61, 32,123, 10, 9, 9, 9, 9, 9, 67, + 111,110,100,105,116,105,111,110, 32, 61, 32,110,111,100,101, + 67,111,110,100, 59, 10, 9, 9, 9, 9, 9, 66,111,100,121, + 32, 61, 32,110,111,100,101, 66,111,100,121, 59, 10, 9, 9, + 9, 9,125, 10, 9, 9, 9,117,110,116,105,108, 32,110,111, + 116, 32,116,111,107, 58, 67,111,110,115,117,109,101, 75,101, + 121,119,111,114,100, 40, 39,101,108,115,101,105,102, 39, 44, + 32,116,111,107,101,110, 76,105,115,116, 41, 10, 10, 9, 9, + 9, 45, 45,101,108,115,101, 32, 99,108, 97,117,115,101, 10, + 9, 9, 9,105,102, 32,116,111,107, 58, 67,111,110,115,117, + 109,101, 75,101,121,119,111,114,100, 40, 39,101,108,115,101, + 39, 44, 32,116,111,107,101,110, 76,105,115,116, 41, 32,116, + 104,101,110, 10, 9, 9, 9, 9,108,111, 99, 97,108, 32,115, + 116, 44, 32,110,111,100,101, 66,111,100,121, 32, 61, 32, 80, + 97,114,115,101, 83,116, 97,116,101,109,101,110,116, 76,105, + 115,116, 40,115, 99,111,112,101, 41, 10, 9, 9, 9, 9,105, + 102, 32,110,111,116, 32,115,116, 32,116,104,101,110, 32,114, + 101,116,117,114,110, 32,102, 97,108,115,101, 44, 32,110,111, + 100,101, 66,111,100,121, 32,101,110,100, 10, 9, 9, 9, 9, + 110,111,100,101, 73,102, 83,116, 97,116, 46, 67,108, 97,117, + 115,101,115, 91, 35,110,111,100,101, 73,102, 83,116, 97,116, + 46, 67,108, 97,117,115,101,115, 43, 49, 93, 32, 61, 32,123, + 10, 9, 9, 9, 9, 9, 66,111,100,121, 32, 61, 32,110,111, + 100,101, 66,111,100,121, 59, 10, 9, 9, 9, 9,125, 10, 9, + 9, 9,101,110,100, 10, 10, 9, 9, 9, 45, 45,101,110,100, + 10, 9, 9, 9,105,102, 32,110,111,116, 32,116,111,107, 58, + 67,111,110,115,117,109,101, 75,101,121,119,111,114,100, 40, + 39,101,110,100, 39, 44, 32,116,111,107,101,110, 76,105,115, + 116, 41, 32,116,104,101,110, 10, 9, 9, 9, 9,114,101,116, + 117,114,110, 32,102, 97,108,115,101, 44, 32, 71,101,110,101, + 114, 97,116,101, 69,114,114,111,114, 40, 34, 96,101,110,100, + 96, 32,101,120,112,101, 99,116,101,100, 46, 34, 41, 10, 9, + 9, 9,101,110,100, 10, 10, 9, 9, 9,110,111,100,101, 73, + 102, 83,116, 97,116, 46, 84,111,107,101,110,115, 32, 61, 32, + 116,111,107,101,110, 76,105,115,116, 10, 9, 9, 9,115,116, + 97,116, 32, 61, 32,110,111,100,101, 73,102, 83,116, 97,116, + 10, 10, 9, 9,101,108,115,101,105,102, 32,116,111,107, 58, + 67,111,110,115,117,109,101, 75,101,121,119,111,114,100, 40, + 39,119,104,105,108,101, 39, 44, 32,116,111,107,101,110, 76, + 105,115,116, 41, 32,116,104,101,110, 10, 9, 9, 9, 45, 45, + 115,101,116,117,112, 10, 9, 9, 9,108,111, 99, 97,108, 32, + 110,111,100,101, 87,104,105,108,101, 83,116, 97,116, 32, 61, + 32,123,125, 10, 9, 9, 9,110,111,100,101, 87,104,105,108, + 101, 83,116, 97,116, 46, 65,115,116, 84,121,112,101, 32, 61, + 32, 39, 87,104,105,108,101, 83,116, 97,116,101,109,101,110, + 116, 39, 10, 10, 9, 9, 9, 45, 45, 99,111,110,100,105,116, + 105,111,110, 10, 9, 9, 9,108,111, 99, 97,108, 32,115,116, + 44, 32,110,111,100,101, 67,111,110,100, 32, 61, 32, 80, 97, + 114,115,101, 69,120,112,114, 40,115, 99,111,112,101, 41, 10, + 9, 9, 9,105,102, 32,110,111,116, 32,115,116, 32,116,104, + 101,110, 32,114,101,116,117,114,110, 32,102, 97,108,115,101, + 44, 32,110,111,100,101, 67,111,110,100, 32,101,110,100, 10, + 10, 9, 9, 9, 45, 45,100,111, 10, 9, 9, 9,105,102, 32, + 110,111,116, 32,116,111,107, 58, 67,111,110,115,117,109,101, + 75,101,121,119,111,114,100, 40, 39,100,111, 39, 44, 32,116, + 111,107,101,110, 76,105,115,116, 41, 32,116,104,101,110, 10, + 9, 9, 9, 9,114,101,116,117,114,110, 32,102, 97,108,115, + 101, 44, 32, 71,101,110,101,114, 97,116,101, 69,114,114,111, + 114, 40, 34, 96,100,111, 96, 32,101,120,112,101, 99,116,101, + 100, 46, 34, 41, 10, 9, 9, 9,101,110,100, 10, 10, 9, 9, + 9, 45, 45, 98,111,100,121, 10, 9, 9, 9,108,111, 99, 97, + 108, 32,115,116, 44, 32,110,111,100,101, 66,111,100,121, 32, + 61, 32, 80, 97,114,115,101, 83,116, 97,116,101,109,101,110, + 116, 76,105,115,116, 40,115, 99,111,112,101, 41, 10, 9, 9, + 9,105,102, 32,110,111,116, 32,115,116, 32,116,104,101,110, + 32,114,101,116,117,114,110, 32,102, 97,108,115,101, 44, 32, + 110,111,100,101, 66,111,100,121, 32,101,110,100, 10, 10, 9, + 9, 9, 45, 45,101,110,100, 10, 9, 9, 9,105,102, 32,110, + 111,116, 32,116,111,107, 58, 67,111,110,115,117,109,101, 75, + 101,121,119,111,114,100, 40, 39,101,110,100, 39, 44, 32,116, + 111,107,101,110, 76,105,115,116, 41, 32,116,104,101,110, 10, + 9, 9, 9, 9,114,101,116,117,114,110, 32,102, 97,108,115, + 101, 44, 32, 71,101,110,101,114, 97,116,101, 69,114,114,111, + 114, 40, 34, 96,101,110,100, 96, 32,101,120,112,101, 99,116, + 101,100, 46, 34, 41, 10, 9, 9, 9,101,110,100, 10, 10, 9, + 9, 9, 45, 45,114,101,116,117,114,110, 10, 9, 9, 9,110, + 111,100,101, 87,104,105,108,101, 83,116, 97,116, 46, 67,111, + 110,100,105,116,105,111,110, 32, 61, 32,110,111,100,101, 67, + 111,110,100, 10, 9, 9, 9,110,111,100,101, 87,104,105,108, + 101, 83,116, 97,116, 46, 66,111,100,121, 32, 32, 32, 32, 32, + 32, 61, 32,110,111,100,101, 66,111,100,121, 10, 9, 9, 9, + 110,111,100,101, 87,104,105,108,101, 83,116, 97,116, 46, 84, + 111,107,101,110,115, 32, 32, 32, 32, 61, 32,116,111,107,101, + 110, 76,105,115,116, 10, 9, 9, 9,115,116, 97,116, 32, 61, + 32,110,111,100,101, 87,104,105,108,101, 83,116, 97,116, 10, + 10, 9, 9,101,108,115,101,105,102, 32,116,111,107, 58, 67, + 111,110,115,117,109,101, 75,101,121,119,111,114,100, 40, 39, + 100,111, 39, 44, 32,116,111,107,101,110, 76,105,115,116, 41, + 32,116,104,101,110, 10, 9, 9, 9, 45, 45,100,111, 32, 98, + 108,111, 99,107, 10, 9, 9, 9,108,111, 99, 97,108, 32,115, + 116, 44, 32,110,111,100,101, 66,108,111, 99,107, 32, 61, 32, + 80, 97,114,115,101, 83,116, 97,116,101,109,101,110,116, 76, + 105,115,116, 40,115, 99,111,112,101, 41, 10, 9, 9, 9,105, + 102, 32,110,111,116, 32,115,116, 32,116,104,101,110, 32,114, + 101,116,117,114,110, 32,102, 97,108,115,101, 44, 32,110,111, + 100,101, 66,108,111, 99,107, 32,101,110,100, 10, 9, 9, 9, + 105,102, 32,110,111,116, 32,116,111,107, 58, 67,111,110,115, + 117,109,101, 75,101,121,119,111,114,100, 40, 39,101,110,100, + 39, 44, 32,116,111,107,101,110, 76,105,115,116, 41, 32,116, + 104,101,110, 10, 9, 9, 9, 9,114,101,116,117,114,110, 32, + 102, 97,108,115,101, 44, 32, 71,101,110,101,114, 97,116,101, + 69,114,114,111,114, 40, 34, 96,101,110,100, 96, 32,101,120, + 112,101, 99,116,101,100, 46, 34, 41, 10, 9, 9, 9,101,110, + 100, 10, 10, 9, 9, 9,108,111, 99, 97,108, 32,110,111,100, + 101, 68,111, 83,116, 97,116, 32, 61, 32,123,125, 10, 9, 9, + 9,110,111,100,101, 68,111, 83,116, 97,116, 46, 65,115,116, + 84,121,112,101, 32, 61, 32, 39, 68,111, 83,116, 97,116,101, + 109,101,110,116, 39, 10, 9, 9, 9,110,111,100,101, 68,111, + 83,116, 97,116, 46, 66,111,100,121, 32, 32, 32, 32, 61, 32, + 110,111,100,101, 66,108,111, 99,107, 10, 9, 9, 9,110,111, + 100,101, 68,111, 83,116, 97,116, 46, 84,111,107,101,110,115, + 32, 32, 61, 32,116,111,107,101,110, 76,105,115,116, 10, 9, + 9, 9,115,116, 97,116, 32, 61, 32,110,111,100,101, 68,111, + 83,116, 97,116, 10, 10, 9, 9,101,108,115,101,105,102, 32, + 116,111,107, 58, 67,111,110,115,117,109,101, 75,101,121,119, + 111,114,100, 40, 39,102,111,114, 39, 44, 32,116,111,107,101, + 110, 76,105,115,116, 41, 32,116,104,101,110, 10, 9, 9, 9, + 45, 45,102,111,114, 32, 98,108,111, 99,107, 10, 9, 9, 9, + 105,102, 32,110,111,116, 32,116,111,107, 58, 73,115, 40, 39, + 73,100,101,110,116, 39, 41, 32,116,104,101,110, 10, 9, 9, + 9, 9,114,101,116,117,114,110, 32,102, 97,108,115,101, 44, + 32, 71,101,110,101,114, 97,116,101, 69,114,114,111,114, 40, + 34, 60,105,100,101,110,116, 62, 32,101,120,112,101, 99,116, + 101,100, 46, 34, 41, 10, 9, 9, 9,101,110,100, 10, 9, 9, + 9,108,111, 99, 97,108, 32, 98, 97,115,101, 86, 97,114, 78, + 97,109,101, 32, 61, 32,116,111,107, 58, 71,101,116, 40,116, + 111,107,101,110, 76,105,115,116, 41, 10, 9, 9, 9,105,102, + 32,116,111,107, 58, 67,111,110,115,117,109,101, 83,121,109, + 98,111,108, 40, 39, 61, 39, 44, 32,116,111,107,101,110, 76, + 105,115,116, 41, 32,116,104,101,110, 10, 9, 9, 9, 9, 45, + 45,110,117,109,101,114,105, 99, 32,102,111,114, 10, 9, 9, + 9, 9,108,111, 99, 97,108, 32,102,111,114, 83, 99,111,112, + 101, 32, 61, 32, 67,114,101, 97,116,101, 83, 99,111,112,101, + 40,115, 99,111,112,101, 41, 10, 9, 9, 9, 9,108,111, 99, + 97,108, 32,102,111,114, 86, 97,114, 32, 61, 32,102,111,114, + 83, 99,111,112,101, 58, 67,114,101, 97,116,101, 76,111, 99, + 97,108, 40, 98, 97,115,101, 86, 97,114, 78, 97,109,101, 46, + 68, 97,116, 97, 41, 10, 9, 9, 9, 9, 45, 45, 10, 9, 9, + 9, 9,108,111, 99, 97,108, 32,115,116, 44, 32,115,116, 97, + 114,116, 69,120, 32, 61, 32, 80, 97,114,115,101, 69,120,112, + 114, 40,115, 99,111,112,101, 41, 10, 9, 9, 9, 9,105,102, + 32,110,111,116, 32,115,116, 32,116,104,101,110, 32,114,101, + 116,117,114,110, 32,102, 97,108,115,101, 44, 32,115,116, 97, + 114,116, 69,120, 32,101,110,100, 10, 9, 9, 9, 9,105,102, + 32,110,111,116, 32,116,111,107, 58, 67,111,110,115,117,109, + 101, 83,121,109, 98,111,108, 40, 39, 44, 39, 44, 32,116,111, + 107,101,110, 76,105,115,116, 41, 32,116,104,101,110, 10, 9, + 9, 9, 9, 9,114,101,116,117,114,110, 32,102, 97,108,115, + 101, 44, 32, 71,101,110,101,114, 97,116,101, 69,114,114,111, + 114, 40, 34, 96, 44, 96, 32, 69,120,112,101, 99,116,101,100, + 34, 41, 10, 9, 9, 9, 9,101,110,100, 10, 9, 9, 9, 9, + 108,111, 99, 97,108, 32,115,116, 44, 32,101,110,100, 69,120, + 32, 61, 32, 80, 97,114,115,101, 69,120,112,114, 40,115, 99, + 111,112,101, 41, 10, 9, 9, 9, 9,105,102, 32,110,111,116, + 32,115,116, 32,116,104,101,110, 32,114,101,116,117,114,110, + 32,102, 97,108,115,101, 44, 32,101,110,100, 69,120, 32,101, + 110,100, 10, 9, 9, 9, 9,108,111, 99, 97,108, 32,115,116, + 44, 32,115,116,101,112, 69,120, 59, 10, 9, 9, 9, 9,105, + 102, 32,116,111,107, 58, 67,111,110,115,117,109,101, 83,121, + 109, 98,111,108, 40, 39, 44, 39, 44, 32,116,111,107,101,110, + 76,105,115,116, 41, 32,116,104,101,110, 10, 9, 9, 9, 9, + 9,115,116, 44, 32,115,116,101,112, 69,120, 32, 61, 32, 80, + 97,114,115,101, 69,120,112,114, 40,115, 99,111,112,101, 41, + 10, 9, 9, 9, 9, 9,105,102, 32,110,111,116, 32,115,116, + 32,116,104,101,110, 32,114,101,116,117,114,110, 32,102, 97, + 108,115,101, 44, 32,115,116,101,112, 69,120, 32,101,110,100, + 10, 9, 9, 9, 9,101,110,100, 10, 9, 9, 9, 9,105,102, + 32,110,111,116, 32,116,111,107, 58, 67,111,110,115,117,109, + 101, 75,101,121,119,111,114,100, 40, 39,100,111, 39, 44, 32, + 116,111,107,101,110, 76,105,115,116, 41, 32,116,104,101,110, + 10, 9, 9, 9, 9, 9,114,101,116,117,114,110, 32,102, 97, + 108,115,101, 44, 32, 71,101,110,101,114, 97,116,101, 69,114, + 114,111,114, 40, 34, 96,100,111, 96, 32,101,120,112,101, 99, + 116,101,100, 34, 41, 10, 9, 9, 9, 9,101,110,100, 10, 9, + 9, 9, 9, 45, 45, 10, 9, 9, 9, 9,108,111, 99, 97,108, + 32,115,116, 44, 32, 98,111,100,121, 32, 61, 32, 80, 97,114, + 115,101, 83,116, 97,116,101,109,101,110,116, 76,105,115,116, + 40,102,111,114, 83, 99,111,112,101, 41, 10, 9, 9, 9, 9, + 105,102, 32,110,111,116, 32,115,116, 32,116,104,101,110, 32, + 114,101,116,117,114,110, 32,102, 97,108,115,101, 44, 32, 98, + 111,100,121, 32,101,110,100, 10, 9, 9, 9, 9,105,102, 32, + 110,111,116, 32,116,111,107, 58, 67,111,110,115,117,109,101, + 75,101,121,119,111,114,100, 40, 39,101,110,100, 39, 44, 32, + 116,111,107,101,110, 76,105,115,116, 41, 32,116,104,101,110, + 10, 9, 9, 9, 9, 9,114,101,116,117,114,110, 32,102, 97, + 108,115,101, 44, 32, 71,101,110,101,114, 97,116,101, 69,114, + 114,111,114, 40, 34, 96,101,110,100, 96, 32,101,120,112,101, + 99,116,101,100, 34, 41, 10, 9, 9, 9, 9,101,110,100, 10, + 9, 9, 9, 9, 45, 45, 10, 9, 9, 9, 9,108,111, 99, 97, + 108, 32,110,111,100,101, 70,111,114, 32, 61, 32,123,125, 10, + 9, 9, 9, 9,110,111,100,101, 70,111,114, 46, 65,115,116, + 84,121,112,101, 32, 32, 61, 32, 39, 78,117,109,101,114,105, + 99, 70,111,114, 83,116, 97,116,101,109,101,110,116, 39, 10, + 9, 9, 9, 9,110,111,100,101, 70,111,114, 46, 83, 99,111, + 112,101, 32, 32, 32, 32, 61, 32,102,111,114, 83, 99,111,112, + 101, 10, 9, 9, 9, 9,110,111,100,101, 70,111,114, 46, 86, + 97,114,105, 97, 98,108,101, 32, 61, 32,102,111,114, 86, 97, + 114, 10, 9, 9, 9, 9,110,111,100,101, 70,111,114, 46, 83, + 116, 97,114,116, 32, 32, 32, 32, 61, 32,115,116, 97,114,116, + 69,120, 10, 9, 9, 9, 9,110,111,100,101, 70,111,114, 46, + 69,110,100, 32, 32, 32, 32, 32, 32, 61, 32,101,110,100, 69, + 120, 10, 9, 9, 9, 9,110,111,100,101, 70,111,114, 46, 83, + 116,101,112, 32, 32, 32, 32, 32, 61, 32,115,116,101,112, 69, + 120, 10, 9, 9, 9, 9,110,111,100,101, 70,111,114, 46, 66, + 111,100,121, 32, 32, 32, 32, 32, 61, 32, 98,111,100,121, 10, + 9, 9, 9, 9,110,111,100,101, 70,111,114, 46, 84,111,107, + 101,110,115, 32, 32, 32, 61, 32,116,111,107,101,110, 76,105, + 115,116, 10, 9, 9, 9, 9,115,116, 97,116, 32, 61, 32,110, + 111,100,101, 70,111,114, 10, 9, 9, 9,101,108,115,101, 10, + 9, 9, 9, 9, 45, 45,103,101,110,101,114,105, 99, 32,102, + 111,114, 10, 9, 9, 9, 9,108,111, 99, 97,108, 32,102,111, + 114, 83, 99,111,112,101, 32, 61, 32, 67,114,101, 97,116,101, + 83, 99,111,112,101, 40,115, 99,111,112,101, 41, 10, 9, 9, + 9, 9, 45, 45, 10, 9, 9, 9, 9,108,111, 99, 97,108, 32, + 118, 97,114, 76,105,115,116, 32, 61, 32,123, 32,102,111,114, + 83, 99,111,112,101, 58, 67,114,101, 97,116,101, 76,111, 99, + 97,108, 40, 98, 97,115,101, 86, 97,114, 78, 97,109,101, 46, + 68, 97,116, 97, 41, 32,125, 10, 9, 9, 9, 9,119,104,105, + 108,101, 32,116,111,107, 58, 67,111,110,115,117,109,101, 83, + 121,109, 98,111,108, 40, 39, 44, 39, 44, 32,116,111,107,101, + 110, 76,105,115,116, 41, 32,100,111, 10, 9, 9, 9, 9, 9, + 105,102, 32,110,111,116, 32,116,111,107, 58, 73,115, 40, 39, + 73,100,101,110,116, 39, 41, 32,116,104,101,110, 10, 9, 9, + 9, 9, 9, 9,114,101,116,117,114,110, 32,102, 97,108,115, + 101, 44, 32, 71,101,110,101,114, 97,116,101, 69,114,114,111, + 114, 40, 34,102,111,114, 32,118, 97,114,105, 97, 98,108,101, + 32,101,120,112,101, 99,116,101,100, 46, 34, 41, 10, 9, 9, + 9, 9, 9,101,110,100, 10, 9, 9, 9, 9, 9,118, 97,114, + 76,105,115,116, 91, 35,118, 97,114, 76,105,115,116, 43, 49, + 93, 32, 61, 32,102,111,114, 83, 99,111,112,101, 58, 67,114, + 101, 97,116,101, 76,111, 99, 97,108, 40,116,111,107, 58, 71, + 101,116, 40,116,111,107,101,110, 76,105,115,116, 41, 46, 68, + 97,116, 97, 41, 10, 9, 9, 9, 9,101,110,100, 10, 9, 9, + 9, 9,105,102, 32,110,111,116, 32,116,111,107, 58, 67,111, + 110,115,117,109,101, 75,101,121,119,111,114,100, 40, 39,105, + 110, 39, 44, 32,116,111,107,101,110, 76,105,115,116, 41, 32, + 116,104,101,110, 10, 9, 9, 9, 9, 9,114,101,116,117,114, + 110, 32,102, 97,108,115,101, 44, 32, 71,101,110,101,114, 97, + 116,101, 69,114,114,111,114, 40, 34, 96,105,110, 96, 32,101, + 120,112,101, 99,116,101,100, 46, 34, 41, 10, 9, 9, 9, 9, + 101,110,100, 10, 9, 9, 9, 9,108,111, 99, 97,108, 32,103, + 101,110,101,114, 97,116,111,114,115, 32, 61, 32,123,125, 10, + 9, 9, 9, 9,108,111, 99, 97,108, 32,115,116, 44, 32,102, + 105,114,115,116, 71,101,110,101,114, 97,116,111,114, 32, 61, + 32, 80, 97,114,115,101, 69,120,112,114, 40,115, 99,111,112, + 101, 41, 10, 9, 9, 9, 9,105,102, 32,110,111,116, 32,115, + 116, 32,116,104,101,110, 32,114,101,116,117,114,110, 32,102, + 97,108,115,101, 44, 32,102,105,114,115,116, 71,101,110,101, + 114, 97,116,111,114, 32,101,110,100, 10, 9, 9, 9, 9,103, + 101,110,101,114, 97,116,111,114,115, 91, 35,103,101,110,101, + 114, 97,116,111,114,115, 43, 49, 93, 32, 61, 32,102,105,114, + 115,116, 71,101,110,101,114, 97,116,111,114, 10, 9, 9, 9, + 9,119,104,105,108,101, 32,116,111,107, 58, 67,111,110,115, + 117,109,101, 83,121,109, 98,111,108, 40, 39, 44, 39, 44, 32, + 116,111,107,101,110, 76,105,115,116, 41, 32,100,111, 10, 9, + 9, 9, 9, 9,108,111, 99, 97,108, 32,115,116, 44, 32,103, + 101,110, 32, 61, 32, 80, 97,114,115,101, 69,120,112,114, 40, + 115, 99,111,112,101, 41, 10, 9, 9, 9, 9, 9,105,102, 32, + 110,111,116, 32,115,116, 32,116,104,101,110, 32,114,101,116, + 117,114,110, 32,102, 97,108,115,101, 44, 32,103,101,110, 32, + 101,110,100, 10, 9, 9, 9, 9, 9,103,101,110,101,114, 97, + 116,111,114,115, 91, 35,103,101,110,101,114, 97,116,111,114, + 115, 43, 49, 93, 32, 61, 32,103,101,110, 10, 9, 9, 9, 9, + 101,110,100, 10, 9, 9, 9, 9,105,102, 32,110,111,116, 32, + 116,111,107, 58, 67,111,110,115,117,109,101, 75,101,121,119, + 111,114,100, 40, 39,100,111, 39, 44, 32,116,111,107,101,110, + 76,105,115,116, 41, 32,116,104,101,110, 10, 9, 9, 9, 9, + 9,114,101,116,117,114,110, 32,102, 97,108,115,101, 44, 32, + 71,101,110,101,114, 97,116,101, 69,114,114,111,114, 40, 34, + 96,100,111, 96, 32,101,120,112,101, 99,116,101,100, 46, 34, + 41, 10, 9, 9, 9, 9,101,110,100, 10, 9, 9, 9, 9,108, + 111, 99, 97,108, 32,115,116, 44, 32, 98,111,100,121, 32, 61, + 32, 80, 97,114,115,101, 83,116, 97,116,101,109,101,110,116, + 76,105,115,116, 40,102,111,114, 83, 99,111,112,101, 41, 10, + 9, 9, 9, 9,105,102, 32,110,111,116, 32,115,116, 32,116, + 104,101,110, 32,114,101,116,117,114,110, 32,102, 97,108,115, + 101, 44, 32, 98,111,100,121, 32,101,110,100, 10, 9, 9, 9, + 9,105,102, 32,110,111,116, 32,116,111,107, 58, 67,111,110, + 115,117,109,101, 75,101,121,119,111,114,100, 40, 39,101,110, + 100, 39, 44, 32,116,111,107,101,110, 76,105,115,116, 41, 32, + 116,104,101,110, 10, 9, 9, 9, 9, 9,114,101,116,117,114, + 110, 32,102, 97,108,115,101, 44, 32, 71,101,110,101,114, 97, + 116,101, 69,114,114,111,114, 40, 34, 96,101,110,100, 96, 32, + 101,120,112,101, 99,116,101,100, 46, 34, 41, 10, 9, 9, 9, + 9,101,110,100, 10, 9, 9, 9, 9, 45, 45, 10, 9, 9, 9, + 9,108,111, 99, 97,108, 32,110,111,100,101, 70,111,114, 32, + 61, 32,123,125, 10, 9, 9, 9, 9,110,111,100,101, 70,111, + 114, 46, 65,115,116, 84,121,112,101, 32, 32, 32, 32, 32, 32, + 61, 32, 39, 71,101,110,101,114,105, 99, 70,111,114, 83,116, + 97,116,101,109,101,110,116, 39, 10, 9, 9, 9, 9,110,111, + 100,101, 70,111,114, 46, 83, 99,111,112,101, 32, 32, 32, 32, + 32, 32, 32, 32, 61, 32,102,111,114, 83, 99,111,112,101, 10, + 9, 9, 9, 9,110,111,100,101, 70,111,114, 46, 86, 97,114, + 105, 97, 98,108,101, 76,105,115,116, 32, 61, 32,118, 97,114, + 76,105,115,116, 10, 9, 9, 9, 9,110,111,100,101, 70,111, + 114, 46, 71,101,110,101,114, 97,116,111,114,115, 32, 32, 32, + 61, 32,103,101,110,101,114, 97,116,111,114,115, 10, 9, 9, + 9, 9,110,111,100,101, 70,111,114, 46, 66,111,100,121, 32, + 32, 32, 32, 32, 32, 32, 32, 32, 61, 32, 98,111,100,121, 10, + 9, 9, 9, 9,110,111,100,101, 70,111,114, 46, 84,111,107, + 101,110,115, 32, 32, 32, 32, 32, 32, 32, 61, 32,116,111,107, + 101,110, 76,105,115,116, 10, 9, 9, 9, 9,115,116, 97,116, + 32, 61, 32,110,111,100,101, 70,111,114, 10, 9, 9, 9,101, + 110,100, 10, 10, 9, 9,101,108,115,101,105,102, 32,116,111, + 107, 58, 67,111,110,115,117,109,101, 75,101,121,119,111,114, + 100, 40, 39,114,101,112,101, 97,116, 39, 44, 32,116,111,107, + 101,110, 76,105,115,116, 41, 32,116,104,101,110, 10, 9, 9, + 9,108,111, 99, 97,108, 32,115,116, 44, 32, 98,111,100,121, + 32, 61, 32, 80, 97,114,115,101, 83,116, 97,116,101,109,101, + 110,116, 76,105,115,116, 40,115, 99,111,112,101, 41, 10, 9, + 9, 9,105,102, 32,110,111,116, 32,115,116, 32,116,104,101, + 110, 32,114,101,116,117,114,110, 32,102, 97,108,115,101, 44, + 32, 98,111,100,121, 32,101,110,100, 10, 9, 9, 9, 45, 45, + 10, 9, 9, 9,105,102, 32,110,111,116, 32,116,111,107, 58, + 67,111,110,115,117,109,101, 75,101,121,119,111,114,100, 40, + 39,117,110,116,105,108, 39, 44, 32,116,111,107,101,110, 76, + 105,115,116, 41, 32,116,104,101,110, 10, 9, 9, 9, 9,114, + 101,116,117,114,110, 32,102, 97,108,115,101, 44, 32, 71,101, + 110,101,114, 97,116,101, 69,114,114,111,114, 40, 34, 96,117, + 110,116,105,108, 96, 32,101,120,112,101, 99,116,101,100, 46, + 34, 41, 10, 9, 9, 9,101,110,100, 10, 9, 9, 9, 45, 45, + 32, 70, 73, 88, 58, 32, 85,115,101,100, 32,116,111, 32,112, + 97,114,115,101, 32,105,110, 32,112, 97,114,101,110,116, 32, + 115, 99,111,112,101, 10, 9, 9, 9, 45, 45, 32, 78,111,119, + 32,112, 97,114,115,101,115, 32,105,110, 32,114,101,112,101, + 97,116, 32,115, 99,111,112,101, 10, 9, 9, 9,108,111, 99, + 97,108, 32,115,116, 44, 32, 99,111,110,100, 32, 61, 32, 80, + 97,114,115,101, 69,120,112,114, 40, 98,111,100,121, 46, 83, + 99,111,112,101, 41, 10, 9, 9, 9,105,102, 32,110,111,116, + 32,115,116, 32,116,104,101,110, 32,114,101,116,117,114,110, + 32,102, 97,108,115,101, 44, 32, 99,111,110,100, 32,101,110, + 100, 10, 9, 9, 9, 45, 45, 10, 9, 9, 9,108,111, 99, 97, + 108, 32,110,111,100,101, 82,101,112,101, 97,116, 32, 61, 32, + 123,125, 10, 9, 9, 9,110,111,100,101, 82,101,112,101, 97, + 116, 46, 65,115,116, 84,121,112,101, 32, 32, 32, 61, 32, 39, + 82,101,112,101, 97,116, 83,116, 97,116,101,109,101,110,116, + 39, 10, 9, 9, 9,110,111,100,101, 82,101,112,101, 97,116, + 46, 67,111,110,100,105,116,105,111,110, 32, 61, 32, 99,111, + 110,100, 10, 9, 9, 9,110,111,100,101, 82,101,112,101, 97, + 116, 46, 66,111,100,121, 32, 32, 32, 32, 32, 32, 61, 32, 98, + 111,100,121, 10, 9, 9, 9,110,111,100,101, 82,101,112,101, + 97,116, 46, 84,111,107,101,110,115, 32, 32, 32, 32, 61, 32, + 116,111,107,101,110, 76,105,115,116, 10, 9, 9, 9,115,116, + 97,116, 32, 61, 32,110,111,100,101, 82,101,112,101, 97,116, + 10, 10, 9, 9,101,108,115,101,105,102, 32,116,111,107, 58, + 67,111,110,115,117,109,101, 75,101,121,119,111,114,100, 40, + 39,102,117,110, 99,116,105,111,110, 39, 44, 32,116,111,107, + 101,110, 76,105,115,116, 41, 32,116,104,101,110, 10, 9, 9, + 9,105,102, 32,110,111,116, 32,116,111,107, 58, 73,115, 40, + 39, 73,100,101,110,116, 39, 41, 32,116,104,101,110, 10, 9, + 9, 9, 9,114,101,116,117,114,110, 32,102, 97,108,115,101, + 44, 32, 71,101,110,101,114, 97,116,101, 69,114,114,111,114, + 40, 34, 70,117,110, 99,116,105,111,110, 32,110, 97,109,101, + 32,101,120,112,101, 99,116,101,100, 34, 41, 10, 9, 9, 9, + 101,110,100, 10, 9, 9, 9,108,111, 99, 97,108, 32,115,116, + 44, 32,110, 97,109,101, 32, 61, 32, 80, 97,114,115,101, 83, + 117,102,102,105,120,101,100, 69,120,112,114, 40,115, 99,111, + 112,101, 44, 32,116,114,117,101, 41, 32, 45, 45,116,114,117, + 101, 32, 61, 62, 32,111,110,108,121, 32,100,111,116,115, 32, + 97,110,100, 32, 99,111,108,111,110,115, 10, 9, 9, 9,105, + 102, 32,110,111,116, 32,115,116, 32,116,104,101,110, 32,114, + 101,116,117,114,110, 32,102, 97,108,115,101, 44, 32,110, 97, + 109,101, 32,101,110,100, 10, 9, 9, 9, 45, 45, 10, 9, 9, + 9,108,111, 99, 97,108, 32,115,116, 44, 32,102,117,110, 99, + 32, 61, 32, 80, 97,114,115,101, 70,117,110, 99,116,105,111, + 110, 65,114,103,115, 65,110,100, 66,111,100,121, 40,115, 99, + 111,112,101, 44, 32,116,111,107,101,110, 76,105,115,116, 41, + 10, 9, 9, 9,105,102, 32,110,111,116, 32,115,116, 32,116, + 104,101,110, 32,114,101,116,117,114,110, 32,102, 97,108,115, + 101, 44, 32,102,117,110, 99, 32,101,110,100, 10, 9, 9, 9, + 45, 45, 10, 9, 9, 9,102,117,110, 99, 46, 73,115, 76,111, + 99, 97,108, 32, 61, 32,102, 97,108,115,101, 10, 9, 9, 9, + 102,117,110, 99, 46, 78, 97,109,101, 32, 32, 32, 32, 61, 32, + 110, 97,109,101, 10, 9, 9, 9,115,116, 97,116, 32, 61, 32, + 102,117,110, 99, 10, 10, 9, 9,101,108,115,101,105,102, 32, + 116,111,107, 58, 67,111,110,115,117,109,101, 75,101,121,119, + 111,114,100, 40, 39,108,111, 99, 97,108, 39, 44, 32,116,111, + 107,101,110, 76,105,115,116, 41, 32,116,104,101,110, 10, 9, + 9, 9,105,102, 32,116,111,107, 58, 73,115, 40, 39, 73,100, + 101,110,116, 39, 41, 32,116,104,101,110, 10, 9, 9, 9, 9, + 108,111, 99, 97,108, 32,118, 97,114, 76,105,115,116, 44, 32, + 97,116,116,114, 76,105,115,116, 32, 61, 32,123,125, 44, 32, + 123,125, 10, 9, 9, 9, 9,114,101,112,101, 97,116, 10, 9, + 9, 9, 9, 9,105,102, 32,110,111,116, 32,116,111,107, 58, + 73,115, 40, 39, 73,100,101,110,116, 39, 41, 32,116,104,101, + 110, 10, 9, 9, 9, 9, 9, 9,114,101,116,117,114,110, 32, + 102, 97,108,115,101, 44, 32, 71,101,110,101,114, 97,116,101, + 69,114,114,111,114, 40, 34,108,111, 99, 97,108, 32,118, 97, + 114, 32,110, 97,109,101, 32,101,120,112,101, 99,116,101,100, + 34, 41, 10, 9, 9, 9, 9, 9,101,110,100, 10, 9, 9, 9, + 9, 9,118, 97,114, 76,105,115,116, 91, 35,118, 97,114, 76, + 105,115,116, 43, 49, 93, 32, 61, 32,116,111,107, 58, 71,101, + 116, 40,116,111,107,101,110, 76,105,115,116, 41, 46, 68, 97, + 116, 97, 10, 9, 9, 9, 9, 9,105,102, 32,116,111,107, 58, + 67,111,110,115,117,109,101, 83,121,109, 98,111,108, 40, 39, + 60, 39, 44, 32,116,111,107,101,110, 76,105,115,116, 41, 32, + 116,104,101,110, 10, 9, 9, 9, 9, 9, 9,105,102, 32,110, + 111,116, 32,116,111,107, 58, 73,115, 40, 39, 73,100,101,110, + 116, 39, 41, 32,116,104,101,110, 10, 9, 9, 9, 9, 9, 9, + 9,114,101,116,117,114,110, 32,102, 97,108,115,101, 44, 32, + 71,101,110,101,114, 97,116,101, 69,114,114,111,114, 40, 34, + 97,116,116,114,105, 98, 32,110, 97,109,101, 32,101,120,112, + 101, 99,116,101,100, 34, 41, 10, 9, 9, 9, 9, 9, 9,101, + 110,100, 10, 9, 9, 9, 9, 9, 9, 97,116,116,114, 76,105, + 115,116, 91, 35, 97,116,116,114, 76,105,115,116, 43, 49, 93, + 32, 61, 32,116,111,107, 58, 71,101,116, 40,116,111,107,101, + 110, 76,105,115,116, 41, 46, 68, 97,116, 97, 10, 9, 9, 9, + 9, 9, 9,105,102, 32,110,111,116, 32,116,111,107, 58, 67, + 111,110,115,117,109,101, 83,121,109, 98,111,108, 40, 39, 62, + 39, 44, 32,116,111,107,101,110, 76,105,115,116, 41, 32,116, + 104,101,110, 10, 9, 9, 9, 9, 9, 9, 9,114,101,116,117, + 114,110, 32,102, 97,108,115,101, 44, 32, 71,101,110,101,114, + 97,116,101, 69,114,114,111,114, 40, 34,109,105,115,115,105, + 110,103, 32, 39, 62, 39, 32,116,111, 32, 99,108,111,115,101, + 32, 97,116,116,114,105, 98, 32,110, 97,109,101, 34, 41, 10, + 9, 9, 9, 9, 9, 9,101,110,100, 10, 9, 9, 9, 9, 9, + 101,108,115,101, 10, 9, 9, 9, 9, 9, 9, 97,116,116,114, + 76,105,115,116, 91, 35, 97,116,116,114, 76,105,115,116, 43, + 49, 93, 32, 61, 32,102, 97,108,115,101, 10, 9, 9, 9, 9, + 9,101,110,100, 10, 9, 9, 9, 9,117,110,116,105,108, 32, + 110,111,116, 32,116,111,107, 58, 67,111,110,115,117,109,101, + 83,121,109, 98,111,108, 40, 39, 44, 39, 44, 32,116,111,107, + 101,110, 76,105,115,116, 41, 10, 10, 9, 9, 9, 9,108,111, + 99, 97,108, 32,105,110,105,116, 76,105,115,116, 32, 61, 32, + 123,125, 10, 9, 9, 9, 9,105,102, 32,116,111,107, 58, 67, + 111,110,115,117,109,101, 83,121,109, 98,111,108, 40, 39, 61, + 39, 44, 32,116,111,107,101,110, 76,105,115,116, 41, 32,116, + 104,101,110, 10, 9, 9, 9, 9, 9,114,101,112,101, 97,116, + 10, 9, 9, 9, 9, 9, 9,108,111, 99, 97,108, 32,115,116, + 44, 32,101,120, 32, 61, 32, 80, 97,114,115,101, 69,120,112, + 114, 40,115, 99,111,112,101, 41, 10, 9, 9, 9, 9, 9, 9, + 105,102, 32,110,111,116, 32,115,116, 32,116,104,101,110, 32, + 114,101,116,117,114,110, 32,102, 97,108,115,101, 44, 32,101, + 120, 32,101,110,100, 10, 9, 9, 9, 9, 9, 9,105,110,105, + 116, 76,105,115,116, 91, 35,105,110,105,116, 76,105,115,116, + 43, 49, 93, 32, 61, 32,101,120, 10, 9, 9, 9, 9, 9,117, + 110,116,105,108, 32,110,111,116, 32,116,111,107, 58, 67,111, + 110,115,117,109,101, 83,121,109, 98,111,108, 40, 39, 44, 39, + 44, 32,116,111,107,101,110, 76,105,115,116, 41, 10, 9, 9, + 9, 9,101,110,100, 10, 10, 9, 9, 9, 9, 45, 45,110,111, + 119, 32,112, 97,116, 99,104, 32,118, 97,114, 32,108,105,115, + 116, 10, 9, 9, 9, 9, 45, 45,119,101, 32, 99, 97,110, 39, + 116, 32,100,111, 32,116,104,105,115, 32, 98,101,102,111,114, + 101, 32,103,101,116,116,105,110,103, 32,116,104,101, 32,105, + 110,105,116, 32,108,105,115,116, 44, 32, 98,101, 99, 97,117, + 115,101, 32,116,104,101, 32,105,110,105,116, 32,108,105,115, + 116, 32,100,111,101,115, 32,110,111,116, 10, 9, 9, 9, 9, + 45, 45,104, 97,118,101, 32,116,104,101, 32,108,111, 99, 97, + 108,115, 32,116,104,101,109,115,101,108,118,101,115, 32,105, + 110, 32,115, 99,111,112,101, 46, 10, 9, 9, 9, 9,102,111, + 114, 32,105, 44, 32,118, 32,105,110, 32,112, 97,105,114,115, + 40,118, 97,114, 76,105,115,116, 41, 32,100,111, 10, 9, 9, + 9, 9, 9,118, 97,114, 76,105,115,116, 91,105, 93, 32, 61, + 32,115, 99,111,112,101, 58, 67,114,101, 97,116,101, 76,111, + 99, 97,108, 40,118, 41, 10, 9, 9, 9, 9,101,110,100, 10, + 10, 9, 9, 9, 9,108,111, 99, 97,108, 32,110,111,100,101, + 76,111, 99, 97,108, 32, 61, 32,123,125, 10, 9, 9, 9, 9, + 110,111,100,101, 76,111, 99, 97,108, 46, 65,115,116, 84,121, + 112,101, 32, 32, 32, 61, 32, 39, 76,111, 99, 97,108, 83,116, + 97,116,101,109,101,110,116, 39, 10, 9, 9, 9, 9,110,111, + 100,101, 76,111, 99, 97,108, 46, 76,111, 99, 97,108, 76,105, + 115,116, 32, 61, 32,118, 97,114, 76,105,115,116, 10, 9, 9, + 9, 9,110,111,100,101, 76,111, 99, 97,108, 46, 65,116,116, + 114, 76,105,115,116, 32, 32, 61, 32, 97,116,116,114, 76,105, + 115,116, 10, 9, 9, 9, 9,110,111,100,101, 76,111, 99, 97, + 108, 46, 73,110,105,116, 76,105,115,116, 32, 32, 61, 32,105, + 110,105,116, 76,105,115,116, 10, 9, 9, 9, 9,110,111,100, + 101, 76,111, 99, 97,108, 46, 84,111,107,101,110,115, 32, 32, + 32, 32, 61, 32,116,111,107,101,110, 76,105,115,116, 10, 9, + 9, 9, 9, 45, 45, 10, 9, 9, 9, 9,115,116, 97,116, 32, + 61, 32,110,111,100,101, 76,111, 99, 97,108, 10, 10, 9, 9, + 9,101,108,115,101,105,102, 32,116,111,107, 58, 67,111,110, + 115,117,109,101, 75,101,121,119,111,114,100, 40, 39,102,117, + 110, 99,116,105,111,110, 39, 44, 32,116,111,107,101,110, 76, + 105,115,116, 41, 32,116,104,101,110, 10, 9, 9, 9, 9,105, + 102, 32,110,111,116, 32,116,111,107, 58, 73,115, 40, 39, 73, + 100,101,110,116, 39, 41, 32,116,104,101,110, 10, 9, 9, 9, + 9, 9,114,101,116,117,114,110, 32,102, 97,108,115,101, 44, + 32, 71,101,110,101,114, 97,116,101, 69,114,114,111,114, 40, + 34, 70,117,110, 99,116,105,111,110, 32,110, 97,109,101, 32, + 101,120,112,101, 99,116,101,100, 34, 41, 10, 9, 9, 9, 9, + 101,110,100, 10, 9, 9, 9, 9,108,111, 99, 97,108, 32,110, + 97,109,101, 32, 61, 32,116,111,107, 58, 71,101,116, 40,116, + 111,107,101,110, 76,105,115,116, 41, 46, 68, 97,116, 97, 10, + 9, 9, 9, 9,108,111, 99, 97,108, 32,108,111, 99, 97,108, + 86, 97,114, 32, 61, 32,115, 99,111,112,101, 58, 67,114,101, + 97,116,101, 76,111, 99, 97,108, 40,110, 97,109,101, 41, 10, + 9, 9, 9, 9, 45, 45, 10, 9, 9, 9, 9,108,111, 99, 97, + 108, 32,115,116, 44, 32,102,117,110, 99, 32, 61, 32, 80, 97, + 114,115,101, 70,117,110, 99,116,105,111,110, 65,114,103,115, + 65,110,100, 66,111,100,121, 40,115, 99,111,112,101, 44, 32, + 116,111,107,101,110, 76,105,115,116, 41, 10, 9, 9, 9, 9, + 105,102, 32,110,111,116, 32,115,116, 32,116,104,101,110, 32, + 114,101,116,117,114,110, 32,102, 97,108,115,101, 44, 32,102, + 117,110, 99, 32,101,110,100, 10, 9, 9, 9, 9, 45, 45, 10, + 9, 9, 9, 9,102,117,110, 99, 46, 78, 97,109,101, 32, 32, + 32, 32, 32, 32, 32, 32, 32, 61, 32,108,111, 99, 97,108, 86, + 97,114, 10, 9, 9, 9, 9,102,117,110, 99, 46, 73,115, 76, + 111, 99, 97,108, 32, 32, 32, 32, 32, 32, 61, 32,116,114,117, + 101, 10, 9, 9, 9, 9,115,116, 97,116, 32, 61, 32,102,117, + 110, 99, 10, 10, 9, 9, 9,101,108,115,101, 10, 9, 9, 9, + 9,114,101,116,117,114,110, 32,102, 97,108,115,101, 44, 32, + 71,101,110,101,114, 97,116,101, 69,114,114,111,114, 40, 34, + 108,111, 99, 97,108, 32,118, 97,114, 32,111,114, 32,102,117, + 110, 99,116,105,111,110, 32,100,101,102, 32,101,120,112,101, + 99,116,101,100, 34, 41, 10, 9, 9, 9,101,110,100, 10, 10, + 9, 9,101,108,115,101,105,102, 32,116,111,107, 58, 67,111, + 110,115,117,109,101, 83,121,109, 98,111,108, 40, 39, 58, 58, + 39, 44, 32,116,111,107,101,110, 76,105,115,116, 41, 32,116, + 104,101,110, 10, 9, 9, 9,105,102, 32,110,111,116, 32,116, + 111,107, 58, 73,115, 40, 39, 73,100,101,110,116, 39, 41, 32, + 116,104,101,110, 10, 9, 9, 9, 9,114,101,116,117,114,110, + 32,102, 97,108,115,101, 44, 32, 71,101,110,101,114, 97,116, + 101, 69,114,114,111,114, 40, 39, 76, 97, 98,101,108, 32,110, + 97,109,101, 32,101,120,112,101, 99,116,101,100, 39, 41, 10, + 9, 9, 9,101,110,100, 10, 9, 9, 9,108,111, 99, 97,108, + 32,108, 97, 98,101,108, 32, 61, 32,116,111,107, 58, 71,101, + 116, 40,116,111,107,101,110, 76,105,115,116, 41, 46, 68, 97, + 116, 97, 10, 9, 9, 9,105,102, 32,110,111,116, 32,116,111, + 107, 58, 67,111,110,115,117,109,101, 83,121,109, 98,111,108, + 40, 39, 58, 58, 39, 44, 32,116,111,107,101,110, 76,105,115, + 116, 41, 32,116,104,101,110, 10, 9, 9, 9, 9,114,101,116, + 117,114,110, 32,102, 97,108,115,101, 44, 32, 71,101,110,101, + 114, 97,116,101, 69,114,114,111,114, 40, 34, 96, 58, 58, 96, + 32,101,120,112,101, 99,116,101,100, 34, 41, 10, 9, 9, 9, + 101,110,100, 10, 9, 9, 9,108,111, 99, 97,108, 32,110,111, + 100,101, 76, 97, 98,101,108, 32, 61, 32,123,125, 10, 9, 9, + 9,110,111,100,101, 76, 97, 98,101,108, 46, 65,115,116, 84, + 121,112,101, 32, 61, 32, 39, 76, 97, 98,101,108, 83,116, 97, + 116,101,109,101,110,116, 39, 10, 9, 9, 9,110,111,100,101, + 76, 97, 98,101,108, 46, 76, 97, 98,101,108, 32, 32, 32, 61, + 32,108, 97, 98,101,108, 10, 9, 9, 9,110,111,100,101, 76, + 97, 98,101,108, 46, 84,111,107,101,110,115, 32, 32, 61, 32, + 116,111,107,101,110, 76,105,115,116, 10, 9, 9, 9,115,116, + 97,116, 32, 61, 32,110,111,100,101, 76, 97, 98,101,108, 10, + 10, 9, 9,101,108,115,101,105,102, 32,116,111,107, 58, 67, + 111,110,115,117,109,101, 75,101,121,119,111,114,100, 40, 39, + 114,101,116,117,114,110, 39, 44, 32,116,111,107,101,110, 76, + 105,115,116, 41, 32,116,104,101,110, 10, 9, 9, 9,108,111, + 99, 97,108, 32,101,120, 76,105,115,116, 32, 61, 32,123,125, + 10, 9, 9, 9,105,102, 32,110,111,116, 32,116,111,107, 58, + 73,115, 75,101,121,119,111,114,100, 40, 39,101,110,100, 39, + 41, 32,116,104,101,110, 10, 9, 9, 9, 9,108,111, 99, 97, + 108, 32,115,116, 44, 32,102,105,114,115,116, 69,120, 32, 61, + 32, 80, 97,114,115,101, 69,120,112,114, 40,115, 99,111,112, + 101, 41, 10, 9, 9, 9, 9,105,102, 32,115,116, 32,116,104, + 101,110, 10, 9, 9, 9, 9, 9,101,120, 76,105,115,116, 91, + 49, 93, 32, 61, 32,102,105,114,115,116, 69,120, 10, 9, 9, + 9, 9, 9,119,104,105,108,101, 32,116,111,107, 58, 67,111, + 110,115,117,109,101, 83,121,109, 98,111,108, 40, 39, 44, 39, + 44, 32,116,111,107,101,110, 76,105,115,116, 41, 32,100,111, + 10, 9, 9, 9, 9, 9, 9,108,111, 99, 97,108, 32,115,116, + 44, 32,101,120, 32, 61, 32, 80, 97,114,115,101, 69,120,112, + 114, 40,115, 99,111,112,101, 41, 10, 9, 9, 9, 9, 9, 9, + 105,102, 32,110,111,116, 32,115,116, 32,116,104,101,110, 32, + 114,101,116,117,114,110, 32,102, 97,108,115,101, 44, 32,101, + 120, 32,101,110,100, 10, 9, 9, 9, 9, 9, 9,101,120, 76, + 105,115,116, 91, 35,101,120, 76,105,115,116, 43, 49, 93, 32, + 61, 32,101,120, 10, 9, 9, 9, 9, 9,101,110,100, 10, 9, + 9, 9, 9,101,110,100, 10, 9, 9, 9,101,110,100, 10, 10, + 9, 9, 9,108,111, 99, 97,108, 32,110,111,100,101, 82,101, + 116,117,114,110, 32, 61, 32,123,125, 10, 9, 9, 9,110,111, + 100,101, 82,101,116,117,114,110, 46, 65,115,116, 84,121,112, + 101, 32, 32, 32, 61, 32, 39, 82,101,116,117,114,110, 83,116, + 97,116,101,109,101,110,116, 39, 10, 9, 9, 9,110,111,100, + 101, 82,101,116,117,114,110, 46, 65,114,103,117,109,101,110, + 116,115, 32, 61, 32,101,120, 76,105,115,116, 10, 9, 9, 9, + 110,111,100,101, 82,101,116,117,114,110, 46, 84,111,107,101, + 110,115, 32, 32, 32, 32, 61, 32,116,111,107,101,110, 76,105, + 115,116, 10, 9, 9, 9,115,116, 97,116, 32, 61, 32,110,111, + 100,101, 82,101,116,117,114,110, 10, 10, 9, 9,101,108,115, + 101,105,102, 32,116,111,107, 58, 67,111,110,115,117,109,101, + 75,101,121,119,111,114,100, 40, 39, 98,114,101, 97,107, 39, + 44, 32,116,111,107,101,110, 76,105,115,116, 41, 32,116,104, + 101,110, 10, 9, 9, 9,108,111, 99, 97,108, 32,110,111,100, + 101, 66,114,101, 97,107, 32, 61, 32,123,125, 10, 9, 9, 9, + 110,111,100,101, 66,114,101, 97,107, 46, 65,115,116, 84,121, + 112,101, 32, 61, 32, 39, 66,114,101, 97,107, 83,116, 97,116, + 101,109,101,110,116, 39, 10, 9, 9, 9,110,111,100,101, 66, + 114,101, 97,107, 46, 84,111,107,101,110,115, 32, 32, 61, 32, + 116,111,107,101,110, 76,105,115,116, 10, 9, 9, 9,115,116, + 97,116, 32, 61, 32,110,111,100,101, 66,114,101, 97,107, 10, + 10, 9, 9,101,108,115,101,105,102, 32,116,111,107, 58, 67, + 111,110,115,117,109,101, 75,101,121,119,111,114,100, 40, 39, + 103,111,116,111, 39, 44, 32,116,111,107,101,110, 76,105,115, + 116, 41, 32,116,104,101,110, 10, 9, 9, 9,105,102, 32,110, + 111,116, 32,116,111,107, 58, 73,115, 40, 39, 73,100,101,110, + 116, 39, 41, 32,116,104,101,110, 10, 9, 9, 9, 9,114,101, + 116,117,114,110, 32,102, 97,108,115,101, 44, 32, 71,101,110, + 101,114, 97,116,101, 69,114,114,111,114, 40, 34, 76, 97, 98, + 101,108, 32,101,120,112,101, 99,116,101,100, 34, 41, 10, 9, + 9, 9,101,110,100, 10, 9, 9, 9,108,111, 99, 97,108, 32, + 108, 97, 98,101,108, 32, 61, 32,116,111,107, 58, 71,101,116, + 40,116,111,107,101,110, 76,105,115,116, 41, 46, 68, 97,116, + 97, 10, 9, 9, 9,108,111, 99, 97,108, 32,110,111,100,101, + 71,111,116,111, 32, 61, 32,123,125, 10, 9, 9, 9,110,111, + 100,101, 71,111,116,111, 46, 65,115,116, 84,121,112,101, 32, + 61, 32, 39, 71,111,116,111, 83,116, 97,116,101,109,101,110, + 116, 39, 10, 9, 9, 9,110,111,100,101, 71,111,116,111, 46, + 76, 97, 98,101,108, 32, 32, 32, 61, 32,108, 97, 98,101,108, + 10, 9, 9, 9,110,111,100,101, 71,111,116,111, 46, 84,111, + 107,101,110,115, 32, 32, 61, 32,116,111,107,101,110, 76,105, + 115,116, 10, 9, 9, 9,115,116, 97,116, 32, 61, 32,110,111, + 100,101, 71,111,116,111, 10, 10, 9, 9,101,108,115,101, 10, + 9, 9, 9, 45, 45,115,116, 97,116,101,109,101,110,116, 80, + 97,114,115,101, 69,120,112,114, 10, 9, 9, 9,108,111, 99, + 97,108, 32,115,116, 44, 32,115,117,102,102,105,120,101,100, + 32, 61, 32, 80, 97,114,115,101, 83,117,102,102,105,120,101, + 100, 69,120,112,114, 40,115, 99,111,112,101, 41, 10, 9, 9, + 9,105,102, 32,110,111,116, 32,115,116, 32,116,104,101,110, + 32,114,101,116,117,114,110, 32,102, 97,108,115,101, 44, 32, + 115,117,102,102,105,120,101,100, 32,101,110,100, 10, 10, 9, + 9, 9, 45, 45, 97,115,115,105,103,110,109,101,110,116, 32, + 111,114, 32, 99, 97,108,108, 63, 10, 9, 9, 9,105,102, 32, + 116,111,107, 58, 73,115, 83,121,109, 98,111,108, 40, 39, 44, + 39, 41, 32,111,114, 32,116,111,107, 58, 73,115, 83,121,109, + 98,111,108, 40, 39, 61, 39, 41, 32,116,104,101,110, 10, 9, + 9, 9, 9, 45, 45, 99,104,101, 99,107, 32,116,104, 97,116, + 32,105,116, 32,119, 97,115, 32,110,111,116, 32,112, 97,114, + 101,110,116,104,101,115,105,122,101,100, 44, 32,109, 97,107, + 105,110,103, 32,105,116, 32,110,111,116, 32, 97,110, 32,108, + 118, 97,108,117,101, 10, 9, 9, 9, 9,105,102, 32, 40,115, + 117,102,102,105,120,101,100, 46, 80, 97,114,101,110, 67,111, + 117,110,116, 32,111,114, 32, 48, 41, 32, 62, 32, 48, 32,116, + 104,101,110, 10, 9, 9, 9, 9, 9,114,101,116,117,114,110, + 32,102, 97,108,115,101, 44, 32, 71,101,110,101,114, 97,116, + 101, 69,114,114,111,114, 40, 34, 67, 97,110, 32,110,111,116, + 32, 97,115,115,105,103,110, 32,116,111, 32,112, 97,114,101, + 110,116,104,101,115,105,122,101,100, 32,101,120,112,114,101, + 115,115,105,111,110, 44, 32,105,115, 32,110,111,116, 32, 97, + 110, 32,108,118, 97,108,117,101, 34, 41, 10, 9, 9, 9, 9, + 101,110,100, 10, 10, 9, 9, 9, 9, 45, 45,109,111,114,101, + 32,112,114,111, 99,101,115,115,105,110,103, 32,110,101,101, + 100,101,100, 10, 9, 9, 9, 9,108,111, 99, 97,108, 32,108, + 104,115, 32, 61, 32,123, 32,115,117,102,102,105,120,101,100, + 32,125, 10, 9, 9, 9, 9,119,104,105,108,101, 32,116,111, + 107, 58, 67,111,110,115,117,109,101, 83,121,109, 98,111,108, + 40, 39, 44, 39, 44, 32,116,111,107,101,110, 76,105,115,116, + 41, 32,100,111, 10, 9, 9, 9, 9, 9,108,111, 99, 97,108, + 32,115,116, 44, 32,108,104,115, 80, 97,114,116, 32, 61, 32, + 80, 97,114,115,101, 83,117,102,102,105,120,101,100, 69,120, + 112,114, 40,115, 99,111,112,101, 41, 10, 9, 9, 9, 9, 9, + 105,102, 32,110,111,116, 32,115,116, 32,116,104,101,110, 32, + 114,101,116,117,114,110, 32,102, 97,108,115,101, 44, 32,108, + 104,115, 80, 97,114,116, 32,101,110,100, 10, 9, 9, 9, 9, + 9,108,104,115, 91, 35,108,104,115, 43, 49, 93, 32, 61, 32, + 108,104,115, 80, 97,114,116, 10, 9, 9, 9, 9,101,110,100, + 10, 10, 9, 9, 9, 9, 45, 45,101,113,117, 97,108,115, 10, + 9, 9, 9, 9,105,102, 32,110,111,116, 32,116,111,107, 58, + 67,111,110,115,117,109,101, 83,121,109, 98,111,108, 40, 39, + 61, 39, 44, 32,116,111,107,101,110, 76,105,115,116, 41, 32, + 116,104,101,110, 10, 9, 9, 9, 9, 9,114,101,116,117,114, + 110, 32,102, 97,108,115,101, 44, 32, 71,101,110,101,114, 97, + 116,101, 69,114,114,111,114, 40, 34, 96, 61, 96, 32, 69,120, + 112,101, 99,116,101,100, 46, 34, 41, 10, 9, 9, 9, 9,101, + 110,100, 10, 10, 9, 9, 9, 9, 45, 45,114,104,115, 10, 9, + 9, 9, 9,108,111, 99, 97,108, 32,114,104,115, 32, 61, 32, + 123,125, 10, 9, 9, 9, 9,108,111, 99, 97,108, 32,115,116, + 44, 32,102,105,114,115,116, 82,104,115, 32, 61, 32, 80, 97, + 114,115,101, 69,120,112,114, 40,115, 99,111,112,101, 41, 10, + 9, 9, 9, 9,105,102, 32,110,111,116, 32,115,116, 32,116, + 104,101,110, 32,114,101,116,117,114,110, 32,102, 97,108,115, + 101, 44, 32,102,105,114,115,116, 82,104,115, 32,101,110,100, + 10, 9, 9, 9, 9,114,104,115, 91, 49, 93, 32, 61, 32,102, + 105,114,115,116, 82,104,115, 10, 9, 9, 9, 9,119,104,105, + 108,101, 32,116,111,107, 58, 67,111,110,115,117,109,101, 83, + 121,109, 98,111,108, 40, 39, 44, 39, 44, 32,116,111,107,101, + 110, 76,105,115,116, 41, 32,100,111, 10, 9, 9, 9, 9, 9, + 108,111, 99, 97,108, 32,115,116, 44, 32,114,104,115, 80, 97, + 114,116, 32, 61, 32, 80, 97,114,115,101, 69,120,112,114, 40, + 115, 99,111,112,101, 41, 10, 9, 9, 9, 9, 9,105,102, 32, + 110,111,116, 32,115,116, 32,116,104,101,110, 32,114,101,116, + 117,114,110, 32,102, 97,108,115,101, 44, 32,114,104,115, 80, + 97,114,116, 32,101,110,100, 10, 9, 9, 9, 9, 9,114,104, + 115, 91, 35,114,104,115, 43, 49, 93, 32, 61, 32,114,104,115, + 80, 97,114,116, 10, 9, 9, 9, 9,101,110,100, 10, 10, 9, + 9, 9, 9, 45, 45,100,111,110,101, 10, 9, 9, 9, 9,108, + 111, 99, 97,108, 32,110,111,100,101, 65,115,115,105,103,110, + 32, 61, 32,123,125, 10, 9, 9, 9, 9,110,111,100,101, 65, + 115,115,105,103,110, 46, 65,115,116, 84,121,112,101, 32, 61, + 32, 39, 65,115,115,105,103,110,109,101,110,116, 83,116, 97, + 116,101,109,101,110,116, 39, 10, 9, 9, 9, 9,110,111,100, + 101, 65,115,115,105,103,110, 46, 76,104,115, 32, 32, 32, 32, + 32, 61, 32,108,104,115, 10, 9, 9, 9, 9,110,111,100,101, + 65,115,115,105,103,110, 46, 82,104,115, 32, 32, 32, 32, 32, + 61, 32,114,104,115, 10, 9, 9, 9, 9,110,111,100,101, 65, + 115,115,105,103,110, 46, 84,111,107,101,110,115, 32, 32, 61, + 32,116,111,107,101,110, 76,105,115,116, 10, 9, 9, 9, 9, + 115,116, 97,116, 32, 61, 32,110,111,100,101, 65,115,115,105, + 103,110, 10, 10, 9, 9, 9,101,108,115,101,105,102, 32,115, + 117,102,102,105,120,101,100, 46, 65,115,116, 84,121,112,101, + 32, 61, 61, 32, 39, 67, 97,108,108, 69,120,112,114, 39, 32, + 111,114, 10, 9, 9, 9, 9, 32, 32, 32,115,117,102,102,105, + 120,101,100, 46, 65,115,116, 84,121,112,101, 32, 61, 61, 32, + 39, 84, 97, 98,108,101, 67, 97,108,108, 69,120,112,114, 39, + 32,111,114, 10, 9, 9, 9, 9, 32, 32, 32,115,117,102,102, + 105,120,101,100, 46, 65,115,116, 84,121,112,101, 32, 61, 61, + 32, 39, 83,116,114,105,110,103, 67, 97,108,108, 69,120,112, + 114, 39, 10, 9, 9, 9,116,104,101,110, 10, 9, 9, 9, 9, + 45, 45,105,116, 39,115, 32, 97, 32, 99, 97,108,108, 32,115, + 116, 97,116,101,109,101,110,116, 10, 9, 9, 9, 9,108,111, + 99, 97,108, 32,110,111,100,101, 67, 97,108,108, 32, 61, 32, + 123,125, 10, 9, 9, 9, 9,110,111,100,101, 67, 97,108,108, + 46, 65,115,116, 84,121,112,101, 32, 32, 32, 32, 61, 32, 39, + 67, 97,108,108, 83,116, 97,116,101,109,101,110,116, 39, 10, + 9, 9, 9, 9,110,111,100,101, 67, 97,108,108, 46, 69,120, + 112,114,101,115,115,105,111,110, 32, 61, 32,115,117,102,102, + 105,120,101,100, 10, 9, 9, 9, 9,110,111,100,101, 67, 97, + 108,108, 46, 84,111,107,101,110,115, 32, 32, 32, 32, 32, 61, + 32,116,111,107,101,110, 76,105,115,116, 10, 9, 9, 9, 9, + 115,116, 97,116, 32, 61, 32,110,111,100,101, 67, 97,108,108, + 10, 9, 9, 9,101,108,115,101, 10, 9, 9, 9, 9,114,101, + 116,117,114,110, 32,102, 97,108,115,101, 44, 32, 71,101,110, + 101,114, 97,116,101, 69,114,114,111,114, 40, 34, 65,115,115, + 105,103,110,109,101,110,116, 32, 83,116, 97,116,101,109,101, + 110,116, 32, 69,120,112,101, 99,116,101,100, 34, 41, 10, 9, + 9, 9,101,110,100, 10, 9, 9,101,110,100, 10, 10, 9, 9, + 105,102, 32,116,111,107, 58, 73,115, 83,121,109, 98,111,108, + 40, 39, 59, 39, 41, 32,116,104,101,110, 10, 9, 9, 9,115, + 116, 97,116, 46, 83,101,109,105, 99,111,108,111,110, 32, 61, + 32,116,111,107, 58, 71,101,116, 40, 32,115,116, 97,116, 46, + 84,111,107,101,110,115, 32, 41, 10, 9, 9,101,110,100, 10, + 9, 9,114,101,116,117,114,110, 32,116,114,117,101, 44, 32, + 115,116, 97,116, 10, 9,101,110,100, 10, 10, 10, 9,108,111, + 99, 97,108, 32,115,116, 97,116, 76,105,115,116, 67,108,111, + 115,101, 75,101,121,119,111,114,100,115, 32, 61, 32,108,111, + 111,107,117,112,105,102,121,123, 39,101,110,100, 39, 44, 32, + 39,101,108,115,101, 39, 44, 32, 39,101,108,115,101,105,102, + 39, 44, 32, 39,117,110,116,105,108, 39,125, 10, 10, 9, 80, + 97,114,115,101, 83,116, 97,116,101,109,101,110,116, 76,105, + 115,116, 32, 61, 32,102,117,110, 99,116,105,111,110, 40,115, + 99,111,112,101, 41, 10, 9, 9,108,111, 99, 97,108, 32,110, + 111,100,101, 83,116, 97,116,108,105,115,116, 32, 32, 32, 61, + 32,123,125, 10, 9, 9,110,111,100,101, 83,116, 97,116,108, + 105,115,116, 46, 83, 99,111,112,101, 32, 32, 32, 61, 32, 67, + 114,101, 97,116,101, 83, 99,111,112,101, 40,115, 99,111,112, + 101, 41, 10, 9, 9,110,111,100,101, 83,116, 97,116,108,105, + 115,116, 46, 65,115,116, 84,121,112,101, 32, 61, 32, 39, 83, + 116, 97,116,108,105,115,116, 39, 10, 9, 9,110,111,100,101, + 83,116, 97,116,108,105,115,116, 46, 66,111,100,121, 32, 32, + 32, 32, 61, 32,123, 32,125, 10, 9, 9,110,111,100,101, 83, + 116, 97,116,108,105,115,116, 46, 84,111,107,101,110,115, 32, + 32, 61, 32,123, 32,125, 10, 9, 9, 45, 45, 10, 9, 9, 45, + 45,108,111, 99, 97,108, 32,115,116, 97,116,115, 32, 61, 32, + 123,125, 10, 9, 9, 45, 45, 10, 9, 9,119,104,105,108,101, + 32,110,111,116, 32,115,116, 97,116, 76,105,115,116, 67,108, + 111,115,101, 75,101,121,119,111,114,100,115, 91,116,111,107, + 58, 80,101,101,107, 40, 41, 46, 68, 97,116, 97, 93, 32, 97, + 110,100, 32,110,111,116, 32,116,111,107, 58, 73,115, 69,111, + 102, 40, 41, 32,100,111, 10, 9, 9, 9,108,111, 99, 97,108, + 32,115,116, 44, 32,110,111,100,101, 83,116, 97,116,101,109, + 101,110,116, 32, 61, 32, 80, 97,114,115,101, 83,116, 97,116, + 101,109,101,110,116, 40,110,111,100,101, 83,116, 97,116,108, + 105,115,116, 46, 83, 99,111,112,101, 41, 10, 9, 9, 9,105, + 102, 32,110,111,116, 32,115,116, 32,116,104,101,110, 32,114, + 101,116,117,114,110, 32,102, 97,108,115,101, 44, 32,110,111, + 100,101, 83,116, 97,116,101,109,101,110,116, 32,101,110,100, + 10, 9, 9, 9, 45, 45,115,116, 97,116,115, 91, 35,115,116, + 97,116,115, 43, 49, 93, 32, 61, 32,110,111,100,101, 83,116, + 97,116,101,109,101,110,116, 10, 9, 9, 9,110,111,100,101, + 83,116, 97,116,108,105,115,116, 46, 66,111,100,121, 91, 35, + 110,111,100,101, 83,116, 97,116,108,105,115,116, 46, 66,111, + 100,121, 32, 43, 32, 49, 93, 32, 61, 32,110,111,100,101, 83, + 116, 97,116,101,109,101,110,116, 10, 9, 9,101,110,100, 10, + 10, 9, 9,105,102, 32,116,111,107, 58, 73,115, 69,111,102, + 40, 41, 32,116,104,101,110, 10, 9, 9, 9,108,111, 99, 97, + 108, 32,110,111,100,101, 69,111,102, 32, 61, 32,123,125, 10, + 9, 9, 9,110,111,100,101, 69,111,102, 46, 65,115,116, 84, + 121,112,101, 32, 61, 32, 39, 69,111,102, 39, 10, 9, 9, 9, + 110,111,100,101, 69,111,102, 46, 84,111,107,101,110,115, 32, + 32, 61, 32,123, 32,116,111,107, 58, 71,101,116, 40, 41, 32, + 125, 10, 9, 9, 9,110,111,100,101, 83,116, 97,116,108,105, + 115,116, 46, 66,111,100,121, 91, 35,110,111,100,101, 83,116, + 97,116,108,105,115,116, 46, 66,111,100,121, 32, 43, 32, 49, + 93, 32, 61, 32,110,111,100,101, 69,111,102, 10, 9, 9,101, + 110,100, 10, 10, 9, 9, 45, 45, 10, 9, 9, 45, 45,110,111, + 100,101, 83,116, 97,116,108,105,115,116, 46, 66,111,100,121, + 32, 61, 32,115,116, 97,116,115, 10, 9, 9,114,101,116,117, + 114,110, 32,116,114,117,101, 44, 32,110,111,100,101, 83,116, + 97,116,108,105,115,116, 10, 9,101,110,100, 10, 10, 10, 9, + 108,111, 99, 97,108, 32,102,117,110, 99,116,105,111,110, 32, + 109, 97,105,110,102,117,110, 99, 40, 41, 10, 9, 9,108,111, + 99, 97,108, 32,116,111,112, 83, 99,111,112,101, 32, 61, 32, + 67,114,101, 97,116,101, 83, 99,111,112,101, 40, 41, 10, 9, + 9,114,101,116,117,114,110, 32, 80, 97,114,115,101, 83,116, + 97,116,101,109,101,110,116, 76,105,115,116, 40,116,111,112, + 83, 99,111,112,101, 41, 10, 9,101,110,100, 10, 10, 9,108, + 111, 99, 97,108, 32,115,116, 44, 32,109, 97,105,110, 32, 61, + 32,109, 97,105,110,102,117,110, 99, 40, 41, 10, 9, 45, 45, + 112,114,105,110,116, 40, 34, 76, 97,115,116, 32, 84,111,107, + 101,110, 58, 32, 34, 46, 46, 80,114,105,110,116, 84, 97, 98, + 108,101, 40,116,111,107, 58, 80,101,101,107, 40, 41, 41, 41, + 10, 9,114,101,116,117,114,110, 32,115,116, 44, 32,109, 97, + 105,110, 10,101,110,100, 10, 10, 45, 45, 10, 45, 45, 32, 70, + 111,114,109, 97,116, 77,105,110,105, 46,108,117, 97, 10, 45, + 45, 10, 45, 45, 32, 82,101,116,117,114,110,115, 32,116,104, + 101, 32,109,105,110,105,102,105,101,100, 32,118,101,114,115, + 105,111,110, 32,111,102, 32, 97,110, 32, 65, 83, 84, 46, 32, + 79,112,101,114, 97,116,105,111,110,115, 32,119,104,105, 99, + 104, 32, 97,114,101, 32,112,101,114,102,111,114,109,101,100, + 58, 10, 45, 45, 32, 45, 32, 65,108,108, 32, 99,111,109,109, + 101,110,116,115, 32, 97,110,100, 32,119,104,105,116,101,115, + 112, 97, 99,101, 32, 97,114,101, 32,105,103,110,111,114,101, + 100, 10, 45, 45, 32, 45, 32, 65,108,108, 32,108,111, 99, 97, + 108, 32,118, 97,114,105, 97, 98,108,101,115, 32, 97,114,101, + 32,114,101,110, 97,109,101,100, 10, 45, 45, 10, 10,108,111, + 99, 97,108, 32,102,117,110, 99,116,105,111,110, 32, 70,111, + 114,109, 97,116, 95, 77,105,110,105, 40, 97,115,116, 41, 10, + 9,108,111, 99, 97,108, 32,102,111,114,109, 97,116, 83,116, + 97,116,108,105,115,116, 44, 32,102,111,114,109, 97,116, 69, + 120,112,114, 59, 10, 9, 45, 45,108,111, 99, 97,108, 32, 99, + 111,117,110,116, 32, 61, 32, 48, 10, 9, 45, 45, 10, 9,108, + 111, 99, 97,108, 32,102,117,110, 99,116,105,111,110, 32,106, + 111,105,110, 83,116, 97,116,101,109,101,110,116,115, 83, 97, + 102,101, 40, 97, 44, 32, 98, 44, 32,115,101,112, 41, 10, 9, + 45, 45,112,114,105,110,116, 40, 97, 44, 32, 98, 41, 10, 9, + 9, 45, 45, 91, 91, 10, 9, 9,105,102, 32, 99,111,117,110, + 116, 32, 62, 32, 49, 53, 48, 32,116,104,101,110, 10, 9, 9, + 9, 99,111,117,110,116, 32, 61, 32, 48, 10, 9, 9, 9,114, + 101,116,117,114,110, 32, 97, 46, 46, 34, 92,110, 34, 46, 46, + 98, 10, 9, 9,101,110,100, 93, 93, 10, 9, 9,115,101,112, + 32, 61, 32,115,101,112, 32,111,114, 32, 39, 32, 39, 10, 9, + 9,105,102, 32,115,101,112, 32, 61, 61, 32, 39, 59, 39, 32, + 116,104,101,110, 10, 9, 9, 9,108,111, 99, 97,108, 32,116, + 111,107,101,110, 32, 61, 32, 97, 58,109, 97,116, 99,104, 40, + 34, 40, 91, 37,119, 95, 93, 43, 41, 37,115, 42, 36, 34, 41, + 10, 9, 9, 9,105,102, 32,116,111,107,101,110, 32, 61, 61, + 32, 34,116,104,101,110, 34, 32,111,114, 32,116,111,107,101, + 110, 32, 61, 61, 32, 34,100,111, 34, 32,116,104,101,110, 10, + 9, 9, 9, 9,115,101,112, 32, 61, 32, 39, 32, 39, 10, 9, + 9, 9,101,110,100, 10, 9, 9,101,110,100, 10, 9, 9,108, + 111, 99, 97,108, 32, 97, 97, 44, 32, 98, 98, 32, 61, 32, 97, + 58,115,117, 98, 40, 45, 49, 44, 45, 49, 41, 44, 32, 98, 58, + 115,117, 98, 40, 49, 44, 49, 41, 10, 9, 9,105,102, 32, 85, + 112,112,101,114, 67,104, 97,114,115, 91, 97, 97, 93, 32,111, + 114, 32, 76,111,119,101,114, 67,104, 97,114,115, 91, 97, 97, + 93, 32,111,114, 32, 97, 97, 32, 61, 61, 32, 39, 95, 39, 32, + 116,104,101,110, 10, 9, 9, 9,105,102, 32,110,111,116, 32, + 40, 85,112,112,101,114, 67,104, 97,114,115, 91, 98, 98, 93, + 32,111,114, 32, 76,111,119,101,114, 67,104, 97,114,115, 91, + 98, 98, 93, 32,111,114, 32, 98, 98, 32, 61, 61, 32, 39, 95, + 39, 32,111,114, 32, 68,105,103,105,116,115, 91, 98, 98, 93, + 41, 32,116,104,101,110, 10, 9, 9, 9, 9, 45, 45, 98, 98, + 32,105,115, 32, 97, 32,115,121,109, 98,111,108, 44, 32, 99, + 97,110, 32,106,111,105,110, 32,119,105,116,104,111,117,116, + 32,115,101,112, 10, 9, 9, 9, 9,114,101,116,117,114,110, + 32, 97, 46, 46, 98, 10, 9, 9, 9,101,108,115,101,105,102, + 32, 98, 98, 32, 61, 61, 32, 39, 40, 39, 32,116,104,101,110, + 10, 9, 9, 9, 9, 45, 45,112,114,101,118,101,110,116, 32, + 97,109, 98,105,103,117,111,117,115, 32,115,121,110,116, 97, + 120, 10, 9, 9, 9, 9,114,101,116,117,114,110, 32, 97, 46, + 46,115,101,112, 46, 46, 98, 10, 9, 9, 9,101,108,115,101, + 10, 9, 9, 9, 9,114,101,116,117,114,110, 32, 97, 46, 46, + 115,101,112, 46, 46, 98, 10, 9, 9, 9,101,110,100, 10, 9, + 9,101,108,115,101,105,102, 32, 68,105,103,105,116,115, 91, + 97, 97, 93, 32,116,104,101,110, 10, 9, 9, 9,105,102, 32, + 98, 98, 32, 61, 61, 32, 39, 40, 39, 32,116,104,101,110, 10, + 9, 9, 9, 9, 45, 45, 99, 97,110, 32,106,111,105,110, 32, + 115,116, 97,116,101,109,101,110,116,115, 32,100,105,114,101, + 99,116,108,121, 10, 9, 9, 9, 9,114,101,116,117,114,110, + 32, 97, 46, 46, 98, 10, 9, 9, 9,101,108,115,101,105,102, + 32, 83,121,109, 98,111,108,115, 91, 98, 98, 93, 32,116,104, + 101,110, 10, 9, 9, 9, 9,114,101,116,117,114,110, 32, 97, + 32, 46, 46, 32, 98, 10, 9, 9, 9,101,108,115,101, 10, 9, + 9, 9, 9,114,101,116,117,114,110, 32, 97, 46, 46,115,101, + 112, 46, 46, 98, 10, 9, 9, 9,101,110,100, 10, 9, 9,101, + 108,115,101,105,102, 32, 97, 97, 32, 61, 61, 32, 39, 39, 32, + 116,104,101,110, 10, 9, 9, 9,114,101,116,117,114,110, 32, + 97, 46, 46, 98, 10, 9, 9,101,108,115,101, 10, 9, 9, 9, + 105,102, 32, 98, 98, 32, 61, 61, 32, 39, 40, 39, 32,116,104, + 101,110, 10, 9, 9, 9, 9, 45, 45,100,111,110, 39,116, 32, + 119, 97,110,116, 32,116,111, 32, 97, 99, 99,105,100,101,110, + 116, 97,108,108,121, 32, 99, 97,108,108, 32,108, 97,115,116, + 32,115,116, 97,116,101,109,101,110,116, 44, 32, 99, 97,110, + 39,116, 32,106,111,105,110, 32,100,105,114,101, 99,116,108, + 121, 10, 9, 9, 9, 9,114,101,116,117,114,110, 32, 97, 46, + 46,115,101,112, 46, 46, 98, 10, 9, 9, 9,101,108,115,101, + 10, 9, 9, 9, 9, 45, 45,112,114,105,110,116, 40, 34, 97, + 115,100,102, 34, 44, 32, 39, 34, 39, 46, 46, 97, 46, 46, 39, + 34, 39, 44, 32, 39, 34, 39, 46, 46, 98, 46, 46, 39, 34, 39, + 41, 10, 9, 9, 9, 9,114,101,116,117,114,110, 32, 97, 46, + 46, 98, 10, 9, 9, 9,101,110,100, 10, 9, 9,101,110,100, + 10, 9,101,110,100, 10, 10, 9,102,111,114,109, 97,116, 69, + 120,112,114, 32, 61, 32,102,117,110, 99,116,105,111,110, 40, + 101,120,112,114, 44, 32,112,114,101, 99,101,100,101,110, 99, + 101, 41, 10, 9, 9,108,111, 99, 97,108, 32,112,114,101, 99, + 101,100,101,110, 99,101, 32, 61, 32,112,114,101, 99,101,100, + 101,110, 99,101, 32,111,114, 32, 48, 10, 9, 9,108,111, 99, + 97,108, 32, 99,117,114,114,101,110,116, 80,114,101, 99,101, + 100,101,110, 99,101, 32, 61, 32, 48, 10, 9, 9,108,111, 99, + 97,108, 32,115,107,105,112, 80, 97,114,101,110,115, 32, 61, + 32,102, 97,108,115,101, 10, 9, 9,108,111, 99, 97,108, 32, + 111,117,116, 32, 61, 32, 34, 34, 10, 9, 9,105,102, 32,101, + 120,112,114, 46, 65,115,116, 84,121,112,101, 32, 61, 61, 32, + 39, 86, 97,114, 69,120,112,114, 39, 32,116,104,101,110, 10, + 9, 9, 9,105,102, 32,101,120,112,114, 46, 86, 97,114,105, + 97, 98,108,101, 32,116,104,101,110, 10, 9, 9, 9, 9,111, + 117,116, 32, 61, 32,111,117,116, 46, 46,101,120,112,114, 46, + 86, 97,114,105, 97, 98,108,101, 46, 78, 97,109,101, 10, 9, + 9, 9,101,108,115,101, 10, 9, 9, 9, 9,111,117,116, 32, + 61, 32,111,117,116, 46, 46,101,120,112,114, 46, 78, 97,109, + 101, 10, 9, 9, 9,101,110,100, 10, 10, 9, 9,101,108,115, + 101,105,102, 32,101,120,112,114, 46, 65,115,116, 84,121,112, + 101, 32, 61, 61, 32, 39, 78,117,109, 98,101,114, 69,120,112, + 114, 39, 32,116,104,101,110, 10, 9, 9, 9,111,117,116, 32, + 61, 32,111,117,116, 46, 46,101,120,112,114, 46, 86, 97,108, + 117,101, 46, 68, 97,116, 97, 10, 10, 9, 9,101,108,115,101, + 105,102, 32,101,120,112,114, 46, 65,115,116, 84,121,112,101, + 32, 61, 61, 32, 39, 83,116,114,105,110,103, 69,120,112,114, + 39, 32,116,104,101,110, 10, 9, 9, 9,111,117,116, 32, 61, + 32,111,117,116, 46, 46,101,120,112,114, 46, 86, 97,108,117, + 101, 46, 68, 97,116, 97, 10, 10, 9, 9,101,108,115,101,105, + 102, 32,101,120,112,114, 46, 65,115,116, 84,121,112,101, 32, + 61, 61, 32, 39, 66,111,111,108,101, 97,110, 69,120,112,114, + 39, 32,116,104,101,110, 10, 9, 9, 9,111,117,116, 32, 61, + 32,111,117,116, 46, 46,116,111,115,116,114,105,110,103, 40, + 101,120,112,114, 46, 86, 97,108,117,101, 41, 10, 10, 9, 9, + 101,108,115,101,105,102, 32,101,120,112,114, 46, 65,115,116, + 84,121,112,101, 32, 61, 61, 32, 39, 78,105,108, 69,120,112, + 114, 39, 32,116,104,101,110, 10, 9, 9, 9,111,117,116, 32, + 61, 32,106,111,105,110, 83,116, 97,116,101,109,101,110,116, + 115, 83, 97,102,101, 40,111,117,116, 44, 32, 34,110,105,108, + 34, 41, 10, 10, 9, 9,101,108,115,101,105,102, 32,101,120, + 112,114, 46, 65,115,116, 84,121,112,101, 32, 61, 61, 32, 39, + 66,105,110,111,112, 69,120,112,114, 39, 32,116,104,101,110, + 10, 9, 9, 9, 99,117,114,114,101,110,116, 80,114,101, 99, + 101,100,101,110, 99,101, 32, 61, 32,101,120,112,114, 46, 79, + 112,101,114, 97,116,111,114, 80,114,101, 99,101,100,101,110, + 99,101, 10, 9, 9, 9,111,117,116, 32, 61, 32,106,111,105, + 110, 83,116, 97,116,101,109,101,110,116,115, 83, 97,102,101, + 40,111,117,116, 44, 32,102,111,114,109, 97,116, 69,120,112, + 114, 40,101,120,112,114, 46, 76,104,115, 44, 32, 99,117,114, + 114,101,110,116, 80,114,101, 99,101,100,101,110, 99,101, 41, + 41, 10, 9, 9, 9,111,117,116, 32, 61, 32,106,111,105,110, + 83,116, 97,116,101,109,101,110,116,115, 83, 97,102,101, 40, + 111,117,116, 44, 32,101,120,112,114, 46, 79,112, 41, 10, 9, + 9, 9,111,117,116, 32, 61, 32,106,111,105,110, 83,116, 97, + 116,101,109,101,110,116,115, 83, 97,102,101, 40,111,117,116, + 44, 32,102,111,114,109, 97,116, 69,120,112,114, 40,101,120, + 112,114, 46, 82,104,115, 41, 41, 10, 9, 9, 9,105,102, 32, + 101,120,112,114, 46, 79,112, 32, 61, 61, 32, 39, 94, 39, 32, + 111,114, 32,101,120,112,114, 46, 79,112, 32, 61, 61, 32, 39, + 46, 46, 39, 32,116,104,101,110, 10, 9, 9, 9, 9, 99,117, + 114,114,101,110,116, 80,114,101, 99,101,100,101,110, 99,101, + 32, 61, 32, 99,117,114,114,101,110,116, 80,114,101, 99,101, + 100,101,110, 99,101, 32, 45, 32, 49, 10, 9, 9, 9,101,110, + 100, 10, 10, 9, 9, 9,105,102, 32, 99,117,114,114,101,110, + 116, 80,114,101, 99,101,100,101,110, 99,101, 32, 60, 32,112, + 114,101, 99,101,100,101,110, 99,101, 32,116,104,101,110, 10, + 9, 9, 9, 9,115,107,105,112, 80, 97,114,101,110,115, 32, + 61, 32,102, 97,108,115,101, 10, 9, 9, 9,101,108,115,101, + 10, 9, 9, 9, 9,115,107,105,112, 80, 97,114,101,110,115, + 32, 61, 32,116,114,117,101, 10, 9, 9, 9,101,110,100, 10, + 9, 9, 9, 45, 45,112,114,105,110,116, 40,115,107,105,112, + 80, 97,114,101,110,115, 44, 32,112,114,101, 99,101,100,101, + 110, 99,101, 44, 32, 99,117,114,114,101,110,116, 80,114,101, + 99,101,100,101,110, 99,101, 41, 10, 9, 9,101,108,115,101, + 105,102, 32,101,120,112,114, 46, 65,115,116, 84,121,112,101, + 32, 61, 61, 32, 39, 85,110,111,112, 69,120,112,114, 39, 32, + 116,104,101,110, 10, 9, 9, 9,111,117,116, 32, 61, 32,106, + 111,105,110, 83,116, 97,116,101,109,101,110,116,115, 83, 97, + 102,101, 40,111,117,116, 44, 32,101,120,112,114, 46, 79,112, + 41, 10, 9, 9, 9,111,117,116, 32, 61, 32,106,111,105,110, + 83,116, 97,116,101,109,101,110,116,115, 83, 97,102,101, 40, + 111,117,116, 44, 32,102,111,114,109, 97,116, 69,120,112,114, + 40,101,120,112,114, 46, 82,104,115, 41, 41, 10, 10, 9, 9, + 101,108,115,101,105,102, 32,101,120,112,114, 46, 65,115,116, + 84,121,112,101, 32, 61, 61, 32, 39, 68,111,116,115, 69,120, + 112,114, 39, 32,116,104,101,110, 10, 9, 9, 9,111,117,116, + 32, 61, 32,111,117,116, 46, 46, 34, 46, 46, 46, 34, 10, 10, + 9, 9,101,108,115,101,105,102, 32,101,120,112,114, 46, 65, + 115,116, 84,121,112,101, 32, 61, 61, 32, 39, 67, 97,108,108, + 69,120,112,114, 39, 32,116,104,101,110, 10, 9, 9, 9,111, + 117,116, 32, 61, 32,111,117,116, 46, 46,102,111,114,109, 97, + 116, 69,120,112,114, 40,101,120,112,114, 46, 66, 97,115,101, + 41, 10, 9, 9, 9,111,117,116, 32, 61, 32,111,117,116, 46, + 46, 34, 40, 34, 10, 9, 9, 9,102,111,114, 32,105, 32, 61, + 32, 49, 44, 32, 35,101,120,112,114, 46, 65,114,103,117,109, + 101,110,116,115, 32,100,111, 10, 9, 9, 9, 9,111,117,116, + 32, 61, 32,111,117,116, 46, 46,102,111,114,109, 97,116, 69, + 120,112,114, 40,101,120,112,114, 46, 65,114,103,117,109,101, + 110,116,115, 91,105, 93, 41, 10, 9, 9, 9, 9,105,102, 32, + 105, 32,126, 61, 32, 35,101,120,112,114, 46, 65,114,103,117, + 109,101,110,116,115, 32,116,104,101,110, 10, 9, 9, 9, 9, + 9,111,117,116, 32, 61, 32,111,117,116, 46, 46, 34, 44, 34, + 10, 9, 9, 9, 9,101,110,100, 10, 9, 9, 9,101,110,100, + 10, 9, 9, 9,111,117,116, 32, 61, 32,111,117,116, 46, 46, + 34, 41, 34, 10, 10, 9, 9,101,108,115,101,105,102, 32,101, + 120,112,114, 46, 65,115,116, 84,121,112,101, 32, 61, 61, 32, + 39, 84, 97, 98,108,101, 67, 97,108,108, 69,120,112,114, 39, + 32,116,104,101,110, 10, 9, 9, 9,111,117,116, 32, 61, 32, + 111,117,116, 46, 46,102,111,114,109, 97,116, 69,120,112,114, + 40,101,120,112,114, 46, 66, 97,115,101, 41, 10, 9, 9, 9, + 111,117,116, 32, 61, 32,111,117,116, 46, 46,102,111,114,109, + 97,116, 69,120,112,114, 40,101,120,112,114, 46, 65,114,103, + 117,109,101,110,116,115, 91, 49, 93, 41, 10, 10, 9, 9,101, + 108,115,101,105,102, 32,101,120,112,114, 46, 65,115,116, 84, + 121,112,101, 32, 61, 61, 32, 39, 83,116,114,105,110,103, 67, + 97,108,108, 69,120,112,114, 39, 32,116,104,101,110, 10, 9, + 9, 9,111,117,116, 32, 61, 32,111,117,116, 46, 46,102,111, + 114,109, 97,116, 69,120,112,114, 40,101,120,112,114, 46, 66, + 97,115,101, 41, 10, 9, 9, 9,111,117,116, 32, 61, 32,111, + 117,116, 46, 46,101,120,112,114, 46, 65,114,103,117,109,101, + 110,116,115, 91, 49, 93, 46, 68, 97,116, 97, 10, 10, 9, 9, + 101,108,115,101,105,102, 32,101,120,112,114, 46, 65,115,116, + 84,121,112,101, 32, 61, 61, 32, 39, 73,110,100,101,120, 69, + 120,112,114, 39, 32,116,104,101,110, 10, 9, 9, 9,111,117, + 116, 32, 61, 32,111,117,116, 46, 46,102,111,114,109, 97,116, + 69,120,112,114, 40,101,120,112,114, 46, 66, 97,115,101, 41, + 46, 46, 34, 91, 34, 46, 46,102,111,114,109, 97,116, 69,120, + 112,114, 40,101,120,112,114, 46, 73,110,100,101,120, 41, 46, + 46, 34, 93, 34, 10, 10, 9, 9,101,108,115,101,105,102, 32, + 101,120,112,114, 46, 65,115,116, 84,121,112,101, 32, 61, 61, + 32, 39, 77,101,109, 98,101,114, 69,120,112,114, 39, 32,116, + 104,101,110, 10, 9, 9, 9,111,117,116, 32, 61, 32,111,117, + 116, 46, 46,102,111,114,109, 97,116, 69,120,112,114, 40,101, + 120,112,114, 46, 66, 97,115,101, 41, 46, 46,101,120,112,114, + 46, 73,110,100,101,120,101,114, 46, 46,101,120,112,114, 46, + 73,100,101,110,116, 46, 68, 97,116, 97, 10, 10, 9, 9,101, + 108,115,101,105,102, 32,101,120,112,114, 46, 65,115,116, 84, + 121,112,101, 32, 61, 61, 32, 39, 70,117,110, 99,116,105,111, + 110, 39, 32,116,104,101,110, 10, 9, 9, 9,101,120,112,114, + 46, 83, 99,111,112,101, 58, 79, 98,102,117,115, 99, 97,116, + 101, 86, 97,114,105, 97, 98,108,101,115, 40, 41, 10, 9, 9, + 9,111,117,116, 32, 61, 32,111,117,116, 46, 46, 34,102,117, + 110, 99,116,105,111,110, 40, 34, 10, 9, 9, 9,105,102, 32, + 35,101,120,112,114, 46, 65,114,103,117,109,101,110,116,115, + 32, 62, 32, 48, 32,116,104,101,110, 10, 9, 9, 9, 9,102, + 111,114, 32,105, 32, 61, 32, 49, 44, 32, 35,101,120,112,114, + 46, 65,114,103,117,109,101,110,116,115, 32,100,111, 10, 9, + 9, 9, 9, 9,111,117,116, 32, 61, 32,111,117,116, 46, 46, + 101,120,112,114, 46, 65,114,103,117,109,101,110,116,115, 91, + 105, 93, 46, 78, 97,109,101, 10, 9, 9, 9, 9, 9,105,102, + 32,105, 32,126, 61, 32, 35,101,120,112,114, 46, 65,114,103, + 117,109,101,110,116,115, 32,116,104,101,110, 10, 9, 9, 9, + 9, 9, 9,111,117,116, 32, 61, 32,111,117,116, 46, 46, 34, + 44, 34, 10, 9, 9, 9, 9, 9,101,108,115,101,105,102, 32, + 101,120,112,114, 46, 86, 97,114, 65,114,103, 32,116,104,101, + 110, 10, 9, 9, 9, 9, 9, 9,111,117,116, 32, 61, 32,111, + 117,116, 46, 46, 34, 44, 46, 46, 46, 34, 10, 9, 9, 9, 9, + 9,101,110,100, 10, 9, 9, 9, 9,101,110,100, 10, 9, 9, + 9,101,108,115,101,105,102, 32,101,120,112,114, 46, 86, 97, + 114, 65,114,103, 32,116,104,101,110, 10, 9, 9, 9, 9,111, + 117,116, 32, 61, 32,111,117,116, 46, 46, 34, 46, 46, 46, 34, + 10, 9, 9, 9,101,110,100, 10, 9, 9, 9,111,117,116, 32, + 61, 32,111,117,116, 46, 46, 34, 41, 34, 10, 9, 9, 9,111, + 117,116, 32, 61, 32,106,111,105,110, 83,116, 97,116,101,109, + 101,110,116,115, 83, 97,102,101, 40,111,117,116, 44, 32,102, + 111,114,109, 97,116, 83,116, 97,116,108,105,115,116, 40,101, + 120,112,114, 46, 66,111,100,121, 41, 41, 10, 9, 9, 9,111, + 117,116, 32, 61, 32,106,111,105,110, 83,116, 97,116,101,109, + 101,110,116,115, 83, 97,102,101, 40,111,117,116, 44, 32, 34, + 101,110,100, 34, 41, 10, 10, 9, 9,101,108,115,101,105,102, + 32,101,120,112,114, 46, 65,115,116, 84,121,112,101, 32, 61, + 61, 32, 39, 67,111,110,115,116,114,117, 99,116,111,114, 69, + 120,112,114, 39, 32,116,104,101,110, 10, 9, 9, 9,111,117, + 116, 32, 61, 32,111,117,116, 46, 46, 34,123, 34, 10, 9, 9, + 9,102,111,114, 32,105, 32, 61, 32, 49, 44, 32, 35,101,120, + 112,114, 46, 69,110,116,114,121, 76,105,115,116, 32,100,111, + 10, 9, 9, 9, 9,108,111, 99, 97,108, 32,101,110,116,114, + 121, 32, 61, 32,101,120,112,114, 46, 69,110,116,114,121, 76, + 105,115,116, 91,105, 93, 10, 9, 9, 9, 9,105,102, 32,101, + 110,116,114,121, 46, 84,121,112,101, 32, 61, 61, 32, 39, 75, + 101,121, 39, 32,116,104,101,110, 10, 9, 9, 9, 9, 9,111, + 117,116, 32, 61, 32,111,117,116, 46, 46, 34, 91, 34, 46, 46, + 102,111,114,109, 97,116, 69,120,112,114, 40,101,110,116,114, + 121, 46, 75,101,121, 41, 46, 46, 34, 93, 61, 34, 46, 46,102, + 111,114,109, 97,116, 69,120,112,114, 40,101,110,116,114,121, + 46, 86, 97,108,117,101, 41, 10, 9, 9, 9, 9,101,108,115, + 101,105,102, 32,101,110,116,114,121, 46, 84,121,112,101, 32, + 61, 61, 32, 39, 86, 97,108,117,101, 39, 32,116,104,101,110, + 10, 9, 9, 9, 9, 9,111,117,116, 32, 61, 32,111,117,116, + 46, 46,102,111,114,109, 97,116, 69,120,112,114, 40,101,110, + 116,114,121, 46, 86, 97,108,117,101, 41, 10, 9, 9, 9, 9, + 101,108,115,101,105,102, 32,101,110,116,114,121, 46, 84,121, + 112,101, 32, 61, 61, 32, 39, 75,101,121, 83,116,114,105,110, + 103, 39, 32,116,104,101,110, 10, 9, 9, 9, 9, 9,111,117, + 116, 32, 61, 32,111,117,116, 46, 46,101,110,116,114,121, 46, + 75,101,121, 46, 46, 34, 61, 34, 46, 46,102,111,114,109, 97, + 116, 69,120,112,114, 40,101,110,116,114,121, 46, 86, 97,108, + 117,101, 41, 10, 9, 9, 9, 9,101,110,100, 10, 9, 9, 9, + 9,105,102, 32,105, 32,126, 61, 32, 35,101,120,112,114, 46, + 69,110,116,114,121, 76,105,115,116, 32,116,104,101,110, 10, + 9, 9, 9, 9, 9,111,117,116, 32, 61, 32,111,117,116, 46, + 46, 34, 44, 34, 10, 9, 9, 9, 9,101,110,100, 10, 9, 9, + 9,101,110,100, 10, 9, 9, 9,111,117,116, 32, 61, 32,111, + 117,116, 46, 46, 34,125, 34, 10, 10, 9, 9,101,108,115,101, + 105,102, 32,101,120,112,114, 46, 65,115,116, 84,121,112,101, + 32, 61, 61, 32, 39, 80, 97,114,101,110,116,104,101,115,101, + 115, 39, 32,116,104,101,110, 10, 9, 9, 9,111,117,116, 32, + 61, 32,111,117,116, 46, 46, 34, 40, 34, 46, 46,102,111,114, + 109, 97,116, 69,120,112,114, 40,101,120,112,114, 46, 73,110, + 110,101,114, 41, 46, 46, 34, 41, 34, 10, 10, 9, 9,101,110, + 100, 10, 9, 9, 45, 45,112,114,105,110,116, 40, 34, 62, 62, + 34, 44, 32,115,107,105,112, 80, 97,114,101,110,115, 44, 32, + 101,120,112,114, 46, 80, 97,114,101,110, 67,111,117,110,116, + 44, 32,111,117,116, 41, 10, 9, 9,105,102, 32,110,111,116, + 32,115,107,105,112, 80, 97,114,101,110,115, 32,116,104,101, + 110, 10, 9, 9, 9, 45, 45,112,114,105,110,116, 40, 34,104, + 101,104,101, 34, 41, 10, 9, 9, 9,111,117,116, 32, 61, 32, + 115,116,114,105,110,103, 46,114,101,112, 40, 39, 40, 39, 44, + 32,101,120,112,114, 46, 80, 97,114,101,110, 67,111,117,110, + 116, 32,111,114, 32, 48, 41, 32, 46, 46, 32,111,117,116, 10, + 9, 9, 9,111,117,116, 32, 61, 32,111,117,116, 32, 46, 46, + 32,115,116,114,105,110,103, 46,114,101,112, 40, 39, 41, 39, + 44, 32,101,120,112,114, 46, 80, 97,114,101,110, 67,111,117, + 110,116, 32,111,114, 32, 48, 41, 10, 9, 9, 9, 45, 45,112, + 114,105,110,116, 40, 34, 34, 44, 32,111,117,116, 41, 10, 9, + 9,101,110,100, 10, 9, 9, 45, 45, 99,111,117,110,116, 32, + 61, 32, 99,111,117,110,116, 32, 43, 32, 35,111,117,116, 10, + 9, 9,114,101,116,117,114,110, 32, 45, 45, 91, 91,112,114, + 105,110,116, 40,111,117,116, 41, 32,111,114, 93, 93, 32,111, + 117,116, 10, 9,101,110,100, 10, 10, 9,108,111, 99, 97,108, + 32,102,111,114,109, 97,116, 83,116, 97,116,101,109,101,110, + 116, 32, 61, 32,102,117,110, 99,116,105,111,110, 40,115,116, + 97,116,101,109,101,110,116, 41, 10, 9, 9,108,111, 99, 97, + 108, 32,111,117,116, 32, 61, 32, 39, 39, 10, 9, 9,105,102, + 32,115,116, 97,116,101,109,101,110,116, 46, 65,115,116, 84, + 121,112,101, 32, 61, 61, 32, 39, 65,115,115,105,103,110,109, + 101,110,116, 83,116, 97,116,101,109,101,110,116, 39, 32,116, + 104,101,110, 10, 9, 9, 9,102,111,114, 32,105, 32, 61, 32, + 49, 44, 32, 35,115,116, 97,116,101,109,101,110,116, 46, 76, + 104,115, 32,100,111, 10, 9, 9, 9, 9,111,117,116, 32, 61, + 32,111,117,116, 46, 46,102,111,114,109, 97,116, 69,120,112, + 114, 40,115,116, 97,116,101,109,101,110,116, 46, 76,104,115, + 91,105, 93, 41, 10, 9, 9, 9, 9,105,102, 32,105, 32,126, + 61, 32, 35,115,116, 97,116,101,109,101,110,116, 46, 76,104, + 115, 32,116,104,101,110, 10, 9, 9, 9, 9, 9,111,117,116, + 32, 61, 32,111,117,116, 46, 46, 34, 44, 34, 10, 9, 9, 9, + 9,101,110,100, 10, 9, 9, 9,101,110,100, 10, 9, 9, 9, + 105,102, 32, 35,115,116, 97,116,101,109,101,110,116, 46, 82, + 104,115, 32, 62, 32, 48, 32,116,104,101,110, 10, 9, 9, 9, + 9,111,117,116, 32, 61, 32,111,117,116, 46, 46, 34, 61, 34, + 10, 9, 9, 9, 9,102,111,114, 32,105, 32, 61, 32, 49, 44, + 32, 35,115,116, 97,116,101,109,101,110,116, 46, 82,104,115, + 32,100,111, 10, 9, 9, 9, 9, 9,111,117,116, 32, 61, 32, + 111,117,116, 46, 46,102,111,114,109, 97,116, 69,120,112,114, + 40,115,116, 97,116,101,109,101,110,116, 46, 82,104,115, 91, + 105, 93, 41, 10, 9, 9, 9, 9, 9,105,102, 32,105, 32,126, + 61, 32, 35,115,116, 97,116,101,109,101,110,116, 46, 82,104, + 115, 32,116,104,101,110, 10, 9, 9, 9, 9, 9, 9,111,117, + 116, 32, 61, 32,111,117,116, 46, 46, 34, 44, 34, 10, 9, 9, + 9, 9, 9,101,110,100, 10, 9, 9, 9, 9,101,110,100, 10, + 9, 9, 9,101,110,100, 10, 10, 9, 9,101,108,115,101,105, + 102, 32,115,116, 97,116,101,109,101,110,116, 46, 65,115,116, + 84,121,112,101, 32, 61, 61, 32, 39, 67, 97,108,108, 83,116, + 97,116,101,109,101,110,116, 39, 32,116,104,101,110, 10, 9, + 9, 9,111,117,116, 32, 61, 32,102,111,114,109, 97,116, 69, + 120,112,114, 40,115,116, 97,116,101,109,101,110,116, 46, 69, + 120,112,114,101,115,115,105,111,110, 41, 10, 10, 9, 9,101, + 108,115,101,105,102, 32,115,116, 97,116,101,109,101,110,116, + 46, 65,115,116, 84,121,112,101, 32, 61, 61, 32, 39, 76,111, + 99, 97,108, 83,116, 97,116,101,109,101,110,116, 39, 32,116, + 104,101,110, 10, 9, 9, 9,111,117,116, 32, 61, 32,111,117, + 116, 46, 46, 34,108,111, 99, 97,108, 32, 34, 10, 9, 9, 9, + 102,111,114, 32,105, 32, 61, 32, 49, 44, 32, 35,115,116, 97, + 116,101,109,101,110,116, 46, 76,111, 99, 97,108, 76,105,115, + 116, 32,100,111, 10, 9, 9, 9, 9,111,117,116, 32, 61, 32, + 111,117,116, 46, 46,115,116, 97,116,101,109,101,110,116, 46, + 76,111, 99, 97,108, 76,105,115,116, 91,105, 93, 46, 78, 97, + 109,101, 10, 9, 9, 9, 9,105,102, 32,115,116, 97,116,101, + 109,101,110,116, 46, 65,116,116,114, 76,105,115,116, 91,105, + 93, 32,116,104,101,110, 10, 9, 9, 9, 9, 9,111,117,116, + 32, 61, 32,111,117,116, 46, 46, 34, 60, 34, 46, 46,115,116, + 97,116,101,109,101,110,116, 46, 65,116,116,114, 76,105,115, + 116, 91,105, 93, 46, 46, 34, 62, 34, 10, 9, 9, 9, 9, 9, + 105,102, 32,105, 32, 61, 61, 32, 35,115,116, 97,116,101,109, + 101,110,116, 46, 76,111, 99, 97,108, 76,105,115,116, 32,116, + 104,101,110, 10, 9, 9, 9, 9, 9, 9,111,117,116, 32, 61, + 32,111,117,116, 46, 46, 34, 32, 34, 10, 9, 9, 9, 9, 9, + 101,110,100, 10, 9, 9, 9, 9,101,110,100, 10, 9, 9, 9, + 9,105,102, 32,105, 32,126, 61, 32, 35,115,116, 97,116,101, + 109,101,110,116, 46, 76,111, 99, 97,108, 76,105,115,116, 32, + 116,104,101,110, 10, 9, 9, 9, 9, 9,111,117,116, 32, 61, + 32,111,117,116, 46, 46, 34, 44, 34, 10, 9, 9, 9, 9,101, + 110,100, 10, 9, 9, 9,101,110,100, 10, 9, 9, 9,105,102, + 32, 35,115,116, 97,116,101,109,101,110,116, 46, 73,110,105, + 116, 76,105,115,116, 32, 62, 32, 48, 32,116,104,101,110, 10, + 9, 9, 9, 9,111,117,116, 32, 61, 32,111,117,116, 46, 46, + 34, 61, 34, 10, 9, 9, 9, 9,102,111,114, 32,105, 32, 61, + 32, 49, 44, 32, 35,115,116, 97,116,101,109,101,110,116, 46, + 73,110,105,116, 76,105,115,116, 32,100,111, 10, 9, 9, 9, + 9, 9,111,117,116, 32, 61, 32,111,117,116, 46, 46,102,111, + 114,109, 97,116, 69,120,112,114, 40,115,116, 97,116,101,109, + 101,110,116, 46, 73,110,105,116, 76,105,115,116, 91,105, 93, + 41, 10, 9, 9, 9, 9, 9,105,102, 32,105, 32,126, 61, 32, + 35,115,116, 97,116,101,109,101,110,116, 46, 73,110,105,116, + 76,105,115,116, 32,116,104,101,110, 10, 9, 9, 9, 9, 9, + 9,111,117,116, 32, 61, 32,111,117,116, 46, 46, 34, 44, 34, + 10, 9, 9, 9, 9, 9,101,110,100, 10, 9, 9, 9, 9,101, + 110,100, 10, 9, 9, 9,101,110,100, 10, 10, 9, 9,101,108, + 115,101,105,102, 32,115,116, 97,116,101,109,101,110,116, 46, + 65,115,116, 84,121,112,101, 32, 61, 61, 32, 39, 73,102, 83, + 116, 97,116,101,109,101,110,116, 39, 32,116,104,101,110, 10, + 9, 9, 9,111,117,116, 32, 61, 32,106,111,105,110, 83,116, + 97,116,101,109,101,110,116,115, 83, 97,102,101, 40, 34,105, + 102, 34, 44, 32,102,111,114,109, 97,116, 69,120,112,114, 40, + 115,116, 97,116,101,109,101,110,116, 46, 67,108, 97,117,115, + 101,115, 91, 49, 93, 46, 67,111,110,100,105,116,105,111,110, + 41, 41, 10, 9, 9, 9,111,117,116, 32, 61, 32,106,111,105, + 110, 83,116, 97,116,101,109,101,110,116,115, 83, 97,102,101, + 40,111,117,116, 44, 32, 34,116,104,101,110, 34, 41, 10, 9, + 9, 9,111,117,116, 32, 61, 32,106,111,105,110, 83,116, 97, + 116,101,109,101,110,116,115, 83, 97,102,101, 40,111,117,116, + 44, 32,102,111,114,109, 97,116, 83,116, 97,116,108,105,115, + 116, 40,115,116, 97,116,101,109,101,110,116, 46, 67,108, 97, + 117,115,101,115, 91, 49, 93, 46, 66,111,100,121, 41, 41, 10, + 9, 9, 9,102,111,114, 32,105, 32, 61, 32, 50, 44, 32, 35, + 115,116, 97,116,101,109,101,110,116, 46, 67,108, 97,117,115, + 101,115, 32,100,111, 10, 9, 9, 9, 9,108,111, 99, 97,108, + 32,115,116, 32, 61, 32,115,116, 97,116,101,109,101,110,116, + 46, 67,108, 97,117,115,101,115, 91,105, 93, 10, 9, 9, 9, + 9,105,102, 32,115,116, 46, 67,111,110,100,105,116,105,111, + 110, 32,116,104,101,110, 10, 9, 9, 9, 9, 9,111,117,116, + 32, 61, 32,106,111,105,110, 83,116, 97,116,101,109,101,110, + 116,115, 83, 97,102,101, 40,111,117,116, 44, 32, 34,101,108, + 115,101,105,102, 34, 41, 10, 9, 9, 9, 9, 9,111,117,116, + 32, 61, 32,106,111,105,110, 83,116, 97,116,101,109,101,110, + 116,115, 83, 97,102,101, 40,111,117,116, 44, 32,102,111,114, + 109, 97,116, 69,120,112,114, 40,115,116, 46, 67,111,110,100, + 105,116,105,111,110, 41, 41, 10, 9, 9, 9, 9, 9,111,117, + 116, 32, 61, 32,106,111,105,110, 83,116, 97,116,101,109,101, + 110,116,115, 83, 97,102,101, 40,111,117,116, 44, 32, 34,116, + 104,101,110, 34, 41, 10, 9, 9, 9, 9,101,108,115,101, 10, + 9, 9, 9, 9, 9,111,117,116, 32, 61, 32,106,111,105,110, + 83,116, 97,116,101,109,101,110,116,115, 83, 97,102,101, 40, + 111,117,116, 44, 32, 34,101,108,115,101, 34, 41, 10, 9, 9, + 9, 9,101,110,100, 10, 9, 9, 9, 9,111,117,116, 32, 61, + 32,106,111,105,110, 83,116, 97,116,101,109,101,110,116,115, + 83, 97,102,101, 40,111,117,116, 44, 32,102,111,114,109, 97, + 116, 83,116, 97,116,108,105,115,116, 40,115,116, 46, 66,111, + 100,121, 41, 41, 10, 9, 9, 9,101,110,100, 10, 9, 9, 9, + 111,117,116, 32, 61, 32,106,111,105,110, 83,116, 97,116,101, + 109,101,110,116,115, 83, 97,102,101, 40,111,117,116, 44, 32, + 34,101,110,100, 34, 41, 10, 10, 9, 9,101,108,115,101,105, + 102, 32,115,116, 97,116,101,109,101,110,116, 46, 65,115,116, + 84,121,112,101, 32, 61, 61, 32, 39, 87,104,105,108,101, 83, + 116, 97,116,101,109,101,110,116, 39, 32,116,104,101,110, 10, + 9, 9, 9,111,117,116, 32, 61, 32,106,111,105,110, 83,116, + 97,116,101,109,101,110,116,115, 83, 97,102,101, 40, 34,119, + 104,105,108,101, 34, 44, 32,102,111,114,109, 97,116, 69,120, + 112,114, 40,115,116, 97,116,101,109,101,110,116, 46, 67,111, + 110,100,105,116,105,111,110, 41, 41, 10, 9, 9, 9,111,117, + 116, 32, 61, 32,106,111,105,110, 83,116, 97,116,101,109,101, + 110,116,115, 83, 97,102,101, 40,111,117,116, 44, 32, 34,100, + 111, 34, 41, 10, 9, 9, 9,111,117,116, 32, 61, 32,106,111, + 105,110, 83,116, 97,116,101,109,101,110,116,115, 83, 97,102, + 101, 40,111,117,116, 44, 32,102,111,114,109, 97,116, 83,116, + 97,116,108,105,115,116, 40,115,116, 97,116,101,109,101,110, + 116, 46, 66,111,100,121, 41, 41, 10, 9, 9, 9,111,117,116, + 32, 61, 32,106,111,105,110, 83,116, 97,116,101,109,101,110, + 116,115, 83, 97,102,101, 40,111,117,116, 44, 32, 34,101,110, + 100, 34, 41, 10, 10, 9, 9,101,108,115,101,105,102, 32,115, + 116, 97,116,101,109,101,110,116, 46, 65,115,116, 84,121,112, + 101, 32, 61, 61, 32, 39, 68,111, 83,116, 97,116,101,109,101, + 110,116, 39, 32,116,104,101,110, 10, 9, 9, 9,111,117,116, + 32, 61, 32,106,111,105,110, 83,116, 97,116,101,109,101,110, + 116,115, 83, 97,102,101, 40,111,117,116, 44, 32, 34,100,111, + 34, 41, 10, 9, 9, 9,111,117,116, 32, 61, 32,106,111,105, + 110, 83,116, 97,116,101,109,101,110,116,115, 83, 97,102,101, + 40,111,117,116, 44, 32,102,111,114,109, 97,116, 83,116, 97, + 116,108,105,115,116, 40,115,116, 97,116,101,109,101,110,116, + 46, 66,111,100,121, 41, 41, 10, 9, 9, 9,111,117,116, 32, + 61, 32,106,111,105,110, 83,116, 97,116,101,109,101,110,116, + 115, 83, 97,102,101, 40,111,117,116, 44, 32, 34,101,110,100, + 34, 41, 10, 10, 9, 9,101,108,115,101,105,102, 32,115,116, + 97,116,101,109,101,110,116, 46, 65,115,116, 84,121,112,101, + 32, 61, 61, 32, 39, 82,101,116,117,114,110, 83,116, 97,116, + 101,109,101,110,116, 39, 32,116,104,101,110, 10, 9, 9, 9, + 111,117,116, 32, 61, 32, 34,114,101,116,117,114,110, 34, 10, + 9, 9, 9,102,111,114, 32,105, 32, 61, 32, 49, 44, 32, 35, + 115,116, 97,116,101,109,101,110,116, 46, 65,114,103,117,109, + 101,110,116,115, 32,100,111, 10, 9, 9, 9, 9,111,117,116, + 32, 61, 32,106,111,105,110, 83,116, 97,116,101,109,101,110, + 116,115, 83, 97,102,101, 40,111,117,116, 44, 32,102,111,114, + 109, 97,116, 69,120,112,114, 40,115,116, 97,116,101,109,101, + 110,116, 46, 65,114,103,117,109,101,110,116,115, 91,105, 93, + 41, 41, 10, 9, 9, 9, 9,105,102, 32,105, 32,126, 61, 32, + 35,115,116, 97,116,101,109,101,110,116, 46, 65,114,103,117, + 109,101,110,116,115, 32,116,104,101,110, 10, 9, 9, 9, 9, + 9,111,117,116, 32, 61, 32,111,117,116, 46, 46, 34, 44, 34, + 10, 9, 9, 9, 9,101,110,100, 10, 9, 9, 9,101,110,100, + 10, 10, 9, 9,101,108,115,101,105,102, 32,115,116, 97,116, + 101,109,101,110,116, 46, 65,115,116, 84,121,112,101, 32, 61, + 61, 32, 39, 66,114,101, 97,107, 83,116, 97,116,101,109,101, + 110,116, 39, 32,116,104,101,110, 10, 9, 9, 9,111,117,116, + 32, 61, 32, 34, 98,114,101, 97,107, 34, 10, 10, 9, 9,101, + 108,115,101,105,102, 32,115,116, 97,116,101,109,101,110,116, + 46, 65,115,116, 84,121,112,101, 32, 61, 61, 32, 39, 82,101, + 112,101, 97,116, 83,116, 97,116,101,109,101,110,116, 39, 32, + 116,104,101,110, 10, 9, 9, 9,111,117,116, 32, 61, 32, 34, + 114,101,112,101, 97,116, 34, 10, 9, 9, 9,111,117,116, 32, + 61, 32,106,111,105,110, 83,116, 97,116,101,109,101,110,116, + 115, 83, 97,102,101, 40,111,117,116, 44, 32,102,111,114,109, + 97,116, 83,116, 97,116,108,105,115,116, 40,115,116, 97,116, + 101,109,101,110,116, 46, 66,111,100,121, 41, 41, 10, 9, 9, + 9,111,117,116, 32, 61, 32,106,111,105,110, 83,116, 97,116, + 101,109,101,110,116,115, 83, 97,102,101, 40,111,117,116, 44, + 32, 34,117,110,116,105,108, 34, 41, 10, 9, 9, 9,111,117, + 116, 32, 61, 32,106,111,105,110, 83,116, 97,116,101,109,101, + 110,116,115, 83, 97,102,101, 40,111,117,116, 44, 32,102,111, + 114,109, 97,116, 69,120,112,114, 40,115,116, 97,116,101,109, + 101,110,116, 46, 67,111,110,100,105,116,105,111,110, 41, 41, + 10, 10, 9, 9,101,108,115,101,105,102, 32,115,116, 97,116, + 101,109,101,110,116, 46, 65,115,116, 84,121,112,101, 32, 61, + 61, 32, 39, 70,117,110, 99,116,105,111,110, 39, 32,116,104, + 101,110, 10, 9, 9, 9,115,116, 97,116,101,109,101,110,116, + 46, 83, 99,111,112,101, 58, 79, 98,102,117,115, 99, 97,116, + 101, 86, 97,114,105, 97, 98,108,101,115, 40, 41, 10, 9, 9, + 9,105,102, 32,115,116, 97,116,101,109,101,110,116, 46, 73, + 115, 76,111, 99, 97,108, 32,116,104,101,110, 10, 9, 9, 9, + 9,111,117,116, 32, 61, 32, 34,108,111, 99, 97,108, 34, 10, + 9, 9, 9,101,110,100, 10, 9, 9, 9,111,117,116, 32, 61, + 32,106,111,105,110, 83,116, 97,116,101,109,101,110,116,115, + 83, 97,102,101, 40,111,117,116, 44, 32, 34,102,117,110, 99, + 116,105,111,110, 32, 34, 41, 10, 9, 9, 9,105,102, 32,115, + 116, 97,116,101,109,101,110,116, 46, 73,115, 76,111, 99, 97, + 108, 32,116,104,101,110, 10, 9, 9, 9, 9,111,117,116, 32, + 61, 32,111,117,116, 46, 46,115,116, 97,116,101,109,101,110, + 116, 46, 78, 97,109,101, 46, 78, 97,109,101, 10, 9, 9, 9, + 101,108,115,101, 10, 9, 9, 9, 9,111,117,116, 32, 61, 32, + 111,117,116, 46, 46,102,111,114,109, 97,116, 69,120,112,114, + 40,115,116, 97,116,101,109,101,110,116, 46, 78, 97,109,101, + 41, 10, 9, 9, 9,101,110,100, 10, 9, 9, 9,111,117,116, + 32, 61, 32,111,117,116, 46, 46, 34, 40, 34, 10, 9, 9, 9, + 105,102, 32, 35,115,116, 97,116,101,109,101,110,116, 46, 65, + 114,103,117,109,101,110,116,115, 32, 62, 32, 48, 32,116,104, + 101,110, 10, 9, 9, 9, 9,102,111,114, 32,105, 32, 61, 32, + 49, 44, 32, 35,115,116, 97,116,101,109,101,110,116, 46, 65, + 114,103,117,109,101,110,116,115, 32,100,111, 10, 9, 9, 9, + 9, 9,111,117,116, 32, 61, 32,111,117,116, 46, 46,115,116, + 97,116,101,109,101,110,116, 46, 65,114,103,117,109,101,110, + 116,115, 91,105, 93, 46, 78, 97,109,101, 10, 9, 9, 9, 9, + 9,105,102, 32,105, 32,126, 61, 32, 35,115,116, 97,116,101, + 109,101,110,116, 46, 65,114,103,117,109,101,110,116,115, 32, + 116,104,101,110, 10, 9, 9, 9, 9, 9, 9,111,117,116, 32, + 61, 32,111,117,116, 46, 46, 34, 44, 34, 10, 9, 9, 9, 9, + 9,101,108,115,101,105,102, 32,115,116, 97,116,101,109,101, + 110,116, 46, 86, 97,114, 65,114,103, 32,116,104,101,110, 10, + 9, 9, 9, 9, 9, 9, 45, 45,112,114,105,110,116, 40, 34, + 65,112,112,108,121, 32,118, 97,114, 97,114,103, 34, 41, 10, + 9, 9, 9, 9, 9, 9,111,117,116, 32, 61, 32,111,117,116, + 46, 46, 34, 44, 46, 46, 46, 34, 10, 9, 9, 9, 9, 9,101, + 110,100, 10, 9, 9, 9, 9,101,110,100, 10, 9, 9, 9,101, + 108,115,101,105,102, 32,115,116, 97,116,101,109,101,110,116, + 46, 86, 97,114, 65,114,103, 32,116,104,101,110, 10, 9, 9, + 9, 9,111,117,116, 32, 61, 32,111,117,116, 46, 46, 34, 46, + 46, 46, 34, 10, 9, 9, 9,101,110,100, 10, 9, 9, 9,111, + 117,116, 32, 61, 32,111,117,116, 46, 46, 34, 41, 34, 10, 9, + 9, 9,111,117,116, 32, 61, 32,106,111,105,110, 83,116, 97, + 116,101,109,101,110,116,115, 83, 97,102,101, 40,111,117,116, + 44, 32,102,111,114,109, 97,116, 83,116, 97,116,108,105,115, + 116, 40,115,116, 97,116,101,109,101,110,116, 46, 66,111,100, + 121, 41, 41, 10, 9, 9, 9,111,117,116, 32, 61, 32,106,111, + 105,110, 83,116, 97,116,101,109,101,110,116,115, 83, 97,102, + 101, 40,111,117,116, 44, 32, 34,101,110,100, 34, 41, 10, 10, + 9, 9,101,108,115,101,105,102, 32,115,116, 97,116,101,109, + 101,110,116, 46, 65,115,116, 84,121,112,101, 32, 61, 61, 32, + 39, 71,101,110,101,114,105, 99, 70,111,114, 83,116, 97,116, + 101,109,101,110,116, 39, 32,116,104,101,110, 10, 9, 9, 9, + 115,116, 97,116,101,109,101,110,116, 46, 83, 99,111,112,101, + 58, 79, 98,102,117,115, 99, 97,116,101, 86, 97,114,105, 97, + 98,108,101,115, 40, 41, 10, 9, 9, 9,111,117,116, 32, 61, + 32, 34,102,111,114, 32, 34, 10, 9, 9, 9,102,111,114, 32, + 105, 32, 61, 32, 49, 44, 32, 35,115,116, 97,116,101,109,101, + 110,116, 46, 86, 97,114,105, 97, 98,108,101, 76,105,115,116, + 32,100,111, 10, 9, 9, 9, 9,111,117,116, 32, 61, 32,111, + 117,116, 46, 46,115,116, 97,116,101,109,101,110,116, 46, 86, + 97,114,105, 97, 98,108,101, 76,105,115,116, 91,105, 93, 46, + 78, 97,109,101, 10, 9, 9, 9, 9,105,102, 32,105, 32,126, + 61, 32, 35,115,116, 97,116,101,109,101,110,116, 46, 86, 97, + 114,105, 97, 98,108,101, 76,105,115,116, 32,116,104,101,110, + 10, 9, 9, 9, 9, 9,111,117,116, 32, 61, 32,111,117,116, + 46, 46, 34, 44, 34, 10, 9, 9, 9, 9,101,110,100, 10, 9, + 9, 9,101,110,100, 10, 9, 9, 9,111,117,116, 32, 61, 32, + 111,117,116, 46, 46, 34, 32,105,110, 34, 10, 9, 9, 9,102, + 111,114, 32,105, 32, 61, 32, 49, 44, 32, 35,115,116, 97,116, + 101,109,101,110,116, 46, 71,101,110,101,114, 97,116,111,114, + 115, 32,100,111, 10, 9, 9, 9, 9,111,117,116, 32, 61, 32, + 106,111,105,110, 83,116, 97,116,101,109,101,110,116,115, 83, + 97,102,101, 40,111,117,116, 44, 32,102,111,114,109, 97,116, + 69,120,112,114, 40,115,116, 97,116,101,109,101,110,116, 46, + 71,101,110,101,114, 97,116,111,114,115, 91,105, 93, 41, 41, + 10, 9, 9, 9, 9,105,102, 32,105, 32,126, 61, 32, 35,115, + 116, 97,116,101,109,101,110,116, 46, 71,101,110,101,114, 97, + 116,111,114,115, 32,116,104,101,110, 10, 9, 9, 9, 9, 9, + 111,117,116, 32, 61, 32,106,111,105,110, 83,116, 97,116,101, + 109,101,110,116,115, 83, 97,102,101, 40,111,117,116, 44, 32, + 39, 44, 39, 41, 10, 9, 9, 9, 9,101,110,100, 10, 9, 9, + 9,101,110,100, 10, 9, 9, 9,111,117,116, 32, 61, 32,106, + 111,105,110, 83,116, 97,116,101,109,101,110,116,115, 83, 97, + 102,101, 40,111,117,116, 44, 32, 34,100,111, 34, 41, 10, 9, + 9, 9,111,117,116, 32, 61, 32,106,111,105,110, 83,116, 97, + 116,101,109,101,110,116,115, 83, 97,102,101, 40,111,117,116, + 44, 32,102,111,114,109, 97,116, 83,116, 97,116,108,105,115, + 116, 40,115,116, 97,116,101,109,101,110,116, 46, 66,111,100, + 121, 41, 41, 10, 9, 9, 9,111,117,116, 32, 61, 32,106,111, + 105,110, 83,116, 97,116,101,109,101,110,116,115, 83, 97,102, + 101, 40,111,117,116, 44, 32, 34,101,110,100, 34, 41, 10, 10, + 9, 9,101,108,115,101,105,102, 32,115,116, 97,116,101,109, + 101,110,116, 46, 65,115,116, 84,121,112,101, 32, 61, 61, 32, + 39, 78,117,109,101,114,105, 99, 70,111,114, 83,116, 97,116, + 101,109,101,110,116, 39, 32,116,104,101,110, 10, 9, 9, 9, + 115,116, 97,116,101,109,101,110,116, 46, 83, 99,111,112,101, + 58, 79, 98,102,117,115, 99, 97,116,101, 86, 97,114,105, 97, + 98,108,101,115, 40, 41, 10, 9, 9, 9,111,117,116, 32, 61, + 32, 34,102,111,114, 32, 34, 10, 9, 9, 9,111,117,116, 32, + 61, 32,111,117,116, 46, 46,115,116, 97,116,101,109,101,110, + 116, 46, 86, 97,114,105, 97, 98,108,101, 46, 78, 97,109,101, + 46, 46, 34, 61, 34, 10, 9, 9, 9,111,117,116, 32, 61, 32, + 111,117,116, 46, 46,102,111,114,109, 97,116, 69,120,112,114, + 40,115,116, 97,116,101,109,101,110,116, 46, 83,116, 97,114, + 116, 41, 46, 46, 34, 44, 34, 46, 46,102,111,114,109, 97,116, + 69,120,112,114, 40,115,116, 97,116,101,109,101,110,116, 46, + 69,110,100, 41, 10, 9, 9, 9,105,102, 32,115,116, 97,116, + 101,109,101,110,116, 46, 83,116,101,112, 32,116,104,101,110, + 10, 9, 9, 9, 9,111,117,116, 32, 61, 32,111,117,116, 46, + 46, 34, 44, 34, 46, 46,102,111,114,109, 97,116, 69,120,112, + 114, 40,115,116, 97,116,101,109,101,110,116, 46, 83,116,101, + 112, 41, 10, 9, 9, 9,101,110,100, 10, 9, 9, 9,111,117, + 116, 32, 61, 32,106,111,105,110, 83,116, 97,116,101,109,101, + 110,116,115, 83, 97,102,101, 40,111,117,116, 44, 32, 34,100, + 111, 34, 41, 10, 9, 9, 9,111,117,116, 32, 61, 32,106,111, + 105,110, 83,116, 97,116,101,109,101,110,116,115, 83, 97,102, + 101, 40,111,117,116, 44, 32,102,111,114,109, 97,116, 83,116, + 97,116,108,105,115,116, 40,115,116, 97,116,101,109,101,110, + 116, 46, 66,111,100,121, 41, 41, 10, 9, 9, 9,111,117,116, + 32, 61, 32,106,111,105,110, 83,116, 97,116,101,109,101,110, + 116,115, 83, 97,102,101, 40,111,117,116, 44, 32, 34,101,110, + 100, 34, 41, 10, 9, 9,101,108,115,101,105,102, 32,115,116, + 97,116,101,109,101,110,116, 46, 65,115,116, 84,121,112,101, + 32, 61, 61, 32, 39, 76, 97, 98,101,108, 83,116, 97,116,101, + 109,101,110,116, 39, 32,116,104,101,110, 10, 9, 9, 9,111, + 117,116, 32, 61, 32,106,111,105,110, 83,116, 97,116,101,109, + 101,110,116,115, 83, 97,102,101, 40,111,117,116, 44, 32, 34, + 58, 58, 34, 32, 46, 46, 32,115,116, 97,116,101,109,101,110, + 116, 46, 76, 97, 98,101,108, 32, 46, 46, 32, 34, 58, 58, 34, + 41, 10, 9, 9,101,108,115,101,105,102, 32,115,116, 97,116, + 101,109,101,110,116, 46, 65,115,116, 84,121,112,101, 32, 61, + 61, 32, 39, 71,111,116,111, 83,116, 97,116,101,109,101,110, + 116, 39, 32,116,104,101,110, 10, 9, 9, 9,111,117,116, 32, + 61, 32,106,111,105,110, 83,116, 97,116,101,109,101,110,116, + 115, 83, 97,102,101, 40,111,117,116, 44, 32, 34,103,111,116, + 111, 32, 34, 32, 46, 46, 32,115,116, 97,116,101,109,101,110, + 116, 46, 76, 97, 98,101,108, 41, 10, 9, 9,101,108,115,101, + 105,102, 32,115,116, 97,116,101,109,101,110,116, 46, 65,115, + 116, 84,121,112,101, 32, 61, 61, 32, 39, 67,111,109,109,101, + 110,116, 39, 32,116,104,101,110, 10, 9, 9, 9, 45, 45, 32, + 105,103,110,111,114,101, 10, 9, 9,101,108,115,101,105,102, + 32,115,116, 97,116,101,109,101,110,116, 46, 65,115,116, 84, + 121,112,101, 32, 61, 61, 32, 39, 69,111,102, 39, 32,116,104, + 101,110, 10, 9, 9, 9, 45, 45, 32,105,103,110,111,114,101, + 10, 9, 9,101,108,115,101, 10, 9, 9, 9,112,114,105,110, + 116, 40, 34, 85,110,107,110,111,119,110, 32, 65, 83, 84, 32, + 84,121,112,101, 58, 32, 34, 32, 46, 46, 32,115,116, 97,116, + 101,109,101,110,116, 46, 65,115,116, 84,121,112,101, 41, 10, + 9, 9,101,110,100, 10, 9, 9, 45, 45, 99,111,117,110,116, + 32, 61, 32, 99,111,117,110,116, 32, 43, 32, 35,111,117,116, + 10, 9, 9,114,101,116,117,114,110, 32,111,117,116, 10, 9, + 101,110,100, 10, 10, 9,102,111,114,109, 97,116, 83,116, 97, + 116,108,105,115,116, 32, 61, 32,102,117,110, 99,116,105,111, + 110, 40,115,116, 97,116, 76,105,115,116, 41, 10, 9, 9,108, + 111, 99, 97,108, 32,111,117,116, 32, 61, 32, 39, 39, 10, 9, + 9,115,116, 97,116, 76,105,115,116, 46, 83, 99,111,112,101, + 58, 79, 98,102,117,115, 99, 97,116,101, 86, 97,114,105, 97, + 98,108,101,115, 40, 41, 10, 9, 9,102,111,114, 32, 95, 44, + 32,115,116, 97,116, 32,105,110, 32,112, 97,105,114,115, 40, + 115,116, 97,116, 76,105,115,116, 46, 66,111,100,121, 41, 32, + 100,111, 10, 9, 9, 9,111,117,116, 32, 61, 32,106,111,105, + 110, 83,116, 97,116,101,109,101,110,116,115, 83, 97,102,101, + 40,111,117,116, 44, 32,102,111,114,109, 97,116, 83,116, 97, + 116,101,109,101,110,116, 40,115,116, 97,116, 41, 44, 32, 39, + 59, 39, 41, 10, 9, 9,101,110,100, 10, 9, 9,114,101,116, + 117,114,110, 32,111,117,116, 10, 9,101,110,100, 10, 10, 9, + 97,115,116, 46, 83, 99,111,112,101, 58, 79, 98,102,117,115, + 99, 97,116,101, 86, 97,114,105, 97, 98,108,101,115, 40, 41, + 10, 9,114,101,116,117,114,110, 32,102,111,114,109, 97,116, + 83,116, 97,116,108,105,115,116, 40, 97,115,116, 41, 10,101, + 110,100, 10, 10,108,111, 99, 97,108, 32,102,117,110, 99,116, + 105,111,110, 32, 70,111,114,109, 97,116, 89,117,101, 40, 97, + 115,116, 44, 32,108,105,110,101, 77, 97,112, 41, 10, 9,108, + 111, 99, 97,108, 32, 99,117,114,114,101,110,116, 76,105,110, + 101, 32, 61, 32, 49, 10, 9,108,111, 99, 97,108, 32,102,111, + 114,109, 97,116, 83,116, 97,116,108,105,115,116, 44, 32,102, + 111,114,109, 97,116, 69,120,112,114, 10, 10, 9,108,111, 99, + 97,108, 32,102,117,110, 99,116,105,111,110, 32,106,111,105, + 110, 83,116, 97,116,101,109,101,110,116,115, 83, 97,102,101, + 40,111,117,116, 44, 32, 98, 44, 32,115,101,112, 41, 10, 9, + 9,105,102, 32, 35,111,117,116, 32, 60, 32, 49, 32,116,104, + 101,110, 10, 9, 9, 9,114,101,116,117,114,110, 32, 39, 39, + 10, 9, 9,101,110,100, 10, 9, 9,108,111, 99, 97,108, 32, + 97, 97, 32, 61, 32, 39, 39, 10, 9, 9,108,111, 99, 97,108, + 32, 98, 49, 32, 61, 32, 98, 58,115,117, 98, 40, 49, 44, 49, + 41, 10, 9, 9,108,111, 99, 97,108, 32,115,112, 97, 99,101, + 83,101,112, 32, 61, 32, 98, 49, 32, 61, 61, 32, 39, 32, 39, + 32,111,114, 32, 98, 49, 32, 61, 61, 32, 39, 92,110, 39, 10, + 9, 9,102,111,114, 32,105, 32, 61, 32, 35,111,117,116, 44, + 32, 49, 44, 32, 45, 49, 32,100,111, 10, 9, 9, 9,108,111, + 99, 97,108, 32, 97, 32, 61, 32,111,117,116, 91,105, 93, 10, + 9, 9, 9,108,111, 99, 97,108, 32, 97, 49, 32, 61, 32, 97, + 58,115,117, 98, 40, 45, 49, 44, 45, 49, 41, 10, 9, 9, 9, + 105,102, 32, 97, 49, 32, 61, 61, 32, 39, 32, 39, 32,111,114, + 32, 97, 49, 32, 61, 61, 32, 39, 92,110, 39, 32,116,104,101, + 110, 10, 9, 9, 9, 9,115,112, 97, 99,101, 83,101,112, 32, + 61, 32,116,114,117,101, 10, 9, 9, 9,101,110,100, 10, 9, + 9, 9, 97, 97, 32, 61, 32, 97, 58,109, 97,116, 99,104, 40, + 34, 40, 91, 94, 37,115, 93, 41, 37,115, 42, 36, 34, 41, 10, + 9, 9, 9,105,102, 32, 97, 97, 32,116,104,101,110, 10, 9, + 9, 9, 9, 98,114,101, 97,107, 10, 9, 9, 9,101,110,100, + 10, 9, 9,101,110,100, 10, 9, 9, 97, 97, 32, 61, 32, 97, + 97, 32,111,114, 32, 39, 39, 10, 9, 9,115,101,112, 32, 61, + 32,115,101,112, 32,111,114, 32, 39, 32, 39, 10, 9, 9,105, + 102, 32,115,112, 97, 99,101, 83,101,112, 32,116,104,101,110, + 10, 9, 9, 9,115,101,112, 32, 61, 32, 39, 39, 10, 9, 9, + 101,108,115,101,105,102, 32,115,101,112, 32, 61, 61, 32, 39, + 59, 39, 32,116,104,101,110, 10, 9, 9, 9,108,111, 99, 97, + 108, 32,116,111,107,101,110, 32, 61, 32, 97, 97, 58,109, 97, + 116, 99,104, 40, 34, 40, 91, 37,119, 95, 93, 43, 41, 37,115, + 42, 36, 34, 41, 10, 9, 9, 9,105,102, 32,116,111,107,101, + 110, 32, 61, 61, 32, 34,116,104,101,110, 34, 32,111,114, 32, + 116,111,107,101,110, 32, 61, 61, 32, 34,100,111, 34, 32,116, + 104,101,110, 10, 9, 9, 9, 9,115,101,112, 32, 61, 32, 39, + 32, 39, 10, 9, 9, 9,101,110,100, 10, 9, 9,101,110,100, + 10, 9, 9,108,111, 99, 97,108, 32, 98, 98, 32, 61, 32, 98, + 58,109, 97,116, 99,104, 40, 34, 94, 37,115, 42, 40, 91, 94, + 37,115, 93, 41, 34, 41, 10, 9, 9,105,102, 32, 85,112,112, + 101,114, 67,104, 97,114,115, 91, 97, 97, 93, 32,111,114, 32, + 76,111,119,101,114, 67,104, 97,114,115, 91, 97, 97, 93, 32, + 111,114, 32, 97, 97, 32, 61, 61, 32, 39, 95, 39, 32,116,104, + 101,110, 10, 9, 9, 9,105,102, 32,110,111,116, 32, 40, 85, + 112,112,101,114, 67,104, 97,114,115, 91, 98, 98, 93, 32,111, + 114, 32, 76,111,119,101,114, 67,104, 97,114,115, 91, 98, 98, + 93, 32,111,114, 32, 98, 98, 32, 61, 61, 32, 39, 95, 39, 32, + 111,114, 32, 68,105,103,105,116,115, 91, 98, 98, 93, 41, 32, + 116,104,101,110, 10, 9, 9, 9, 9, 45, 45, 98, 98, 32,105, + 115, 32, 97, 32,115,121,109, 98,111,108, 44, 32, 99, 97,110, + 32,106,111,105,110, 32,119,105,116,104,111,117,116, 32,115, + 101,112, 10, 9, 9, 9, 9,111,117,116, 91, 35,111,117,116, + 32, 43, 32, 49, 93, 32, 61, 32, 98, 10, 9, 9, 9,101,108, + 115,101,105,102, 32, 98, 98, 32, 61, 61, 32, 39, 40, 39, 32, + 116,104,101,110, 10, 9, 9, 9, 9, 45, 45,112,114,101,118, + 101,110,116, 32, 97,109, 98,105,103,117,111,117,115, 32,115, + 121,110,116, 97,120, 10, 9, 9, 9, 9,111,117,116, 91, 35, + 111,117,116, 32, 43, 32, 49, 93, 32, 61, 32,115,101,112, 10, + 9, 9, 9, 9,111,117,116, 91, 35,111,117,116, 32, 43, 32, + 49, 93, 32, 61, 32, 98, 10, 9, 9, 9,101,108,115,101, 10, + 9, 9, 9, 9,111,117,116, 91, 35,111,117,116, 32, 43, 32, + 49, 93, 32, 61, 32,115,101,112, 10, 9, 9, 9, 9,111,117, + 116, 91, 35,111,117,116, 32, 43, 32, 49, 93, 32, 61, 32, 98, + 10, 9, 9, 9,101,110,100, 10, 9, 9,101,108,115,101,105, + 102, 32, 68,105,103,105,116,115, 91, 97, 97, 93, 32,116,104, + 101,110, 10, 9, 9, 9,105,102, 32, 98, 98, 32, 61, 61, 32, + 39, 40, 39, 32,116,104,101,110, 10, 9, 9, 9, 9, 45, 45, + 99, 97,110, 32,106,111,105,110, 32,115,116, 97,116,101,109, + 101,110,116,115, 32,100,105,114,101, 99,116,108,121, 10, 9, + 9, 9, 9,111,117,116, 91, 35,111,117,116, 32, 43, 32, 49, + 93, 32, 61, 32, 98, 10, 9, 9, 9,101,108,115,101,105,102, + 32, 83,121,109, 98,111,108,115, 91, 98, 98, 93, 32,116,104, + 101,110, 10, 9, 9, 9, 9,111,117,116, 91, 35,111,117,116, + 32, 43, 32, 49, 93, 32, 61, 32, 98, 10, 9, 9, 9,101,108, + 115,101, 10, 9, 9, 9, 9,111,117,116, 91, 35,111,117,116, + 32, 43, 32, 49, 93, 32, 61, 32,115,101,112, 10, 9, 9, 9, + 9,111,117,116, 91, 35,111,117,116, 32, 43, 32, 49, 93, 32, + 61, 32, 98, 10, 9, 9, 9,101,110,100, 10, 9, 9,101,108, + 115,101,105,102, 32, 97, 97, 32, 61, 61, 32, 39, 39, 32,116, + 104,101,110, 10, 9, 9, 9,111,117,116, 91, 35,111,117,116, + 32, 43, 32, 49, 93, 32, 61, 32, 98, 10, 9, 9,101,108,115, + 101, 10, 9, 9, 9,105,102, 32, 98, 98, 32, 61, 61, 32, 39, + 40, 39, 32,116,104,101,110, 10, 9, 9, 9, 9, 45, 45,100, + 111,110, 39,116, 32,119, 97,110,116, 32,116,111, 32, 97, 99, + 99,105,100,101,110,116, 97,108,108,121, 32, 99, 97,108,108, + 32,108, 97,115,116, 32,115,116, 97,116,101,109,101,110,116, + 44, 32, 99, 97,110, 39,116, 32,106,111,105,110, 32,100,105, + 114,101, 99,116,108,121, 10, 9, 9, 9, 9,111,117,116, 91, + 35,111,117,116, 32, 43, 32, 49, 93, 32, 61, 32,115,101,112, + 10, 9, 9, 9, 9,111,117,116, 91, 35,111,117,116, 32, 43, + 32, 49, 93, 32, 61, 32, 98, 10, 9, 9, 9,101,108,115,101, + 10, 9, 9, 9, 9,111,117,116, 91, 35,111,117,116, 32, 43, + 32, 49, 93, 32, 61, 32, 98, 10, 9, 9, 9,101,110,100, 10, + 9, 9,101,110,100, 10, 9,101,110,100, 10, 10, 9,102,111, + 114,109, 97,116, 69,120,112,114, 32, 61, 32,102,117,110, 99, + 116,105,111,110, 40,101,120,112,114, 41, 10, 9, 9,108,111, + 99, 97,108, 32,111,117,116, 32, 61, 32,123,115,116,114,105, + 110,103, 46,114,101,112, 40, 39, 40, 39, 44, 32,101,120,112, + 114, 46, 80, 97,114,101,110, 67,111,117,110,116, 32,111,114, + 32, 48, 41,125, 10, 9, 9,105,102, 32,101,120,112,114, 46, + 65,115,116, 84,121,112,101, 32, 61, 61, 32, 39, 86, 97,114, + 69,120,112,114, 39, 32,116,104,101,110, 10, 9, 9, 9,105, + 102, 32,101,120,112,114, 46, 86, 97,114,105, 97, 98,108,101, + 32,116,104,101,110, 10, 9, 9, 9, 9,111,117,116, 91, 35, + 111,117,116, 32, 43, 32, 49, 93, 32, 61, 32,101,120,112,114, + 46, 86, 97,114,105, 97, 98,108,101, 46, 78, 97,109,101, 10, + 9, 9, 9,101,108,115,101, 10, 9, 9, 9, 9,111,117,116, + 91, 35,111,117,116, 32, 43, 32, 49, 93, 32, 61, 32,101,120, + 112,114, 46, 78, 97,109,101, 10, 9, 9, 9,101,110,100, 10, + 10, 9, 9,101,108,115,101,105,102, 32,101,120,112,114, 46, + 65,115,116, 84,121,112,101, 32, 61, 61, 32, 39, 78,117,109, + 98,101,114, 69,120,112,114, 39, 32,116,104,101,110, 10, 9, + 9, 9,111,117,116, 91, 35,111,117,116, 32, 43, 32, 49, 93, + 32, 61, 32,101,120,112,114, 46, 86, 97,108,117,101, 46, 68, + 97,116, 97, 10, 10, 9, 9,101,108,115,101,105,102, 32,101, + 120,112,114, 46, 65,115,116, 84,121,112,101, 32, 61, 61, 32, + 39, 83,116,114,105,110,103, 69,120,112,114, 39, 32,116,104, + 101,110, 10, 9, 9, 9,111,117,116, 91, 35,111,117,116, 32, + 43, 32, 49, 93, 32, 61, 32,101,120,112,114, 46, 86, 97,108, + 117,101, 46, 68, 97,116, 97, 10, 10, 9, 9,101,108,115,101, + 105,102, 32,101,120,112,114, 46, 65,115,116, 84,121,112,101, + 32, 61, 61, 32, 39, 66,111,111,108,101, 97,110, 69,120,112, + 114, 39, 32,116,104,101,110, 10, 9, 9, 9,111,117,116, 91, + 35,111,117,116, 32, 43, 32, 49, 93, 32, 61, 32,116,111,115, + 116,114,105,110,103, 40,101,120,112,114, 46, 86, 97,108,117, + 101, 41, 10, 10, 9, 9,101,108,115,101,105,102, 32,101,120, + 112,114, 46, 65,115,116, 84,121,112,101, 32, 61, 61, 32, 39, + 78,105,108, 69,120,112,114, 39, 32,116,104,101,110, 10, 9, + 9, 9,106,111,105,110, 83,116, 97,116,101,109,101,110,116, + 115, 83, 97,102,101, 40,111,117,116, 44, 32, 34,110,105,108, + 34, 44, 32,110,105,108, 41, 10, 10, 9, 9,101,108,115,101, + 105,102, 32,101,120,112,114, 46, 65,115,116, 84,121,112,101, + 32, 61, 61, 32, 39, 66,105,110,111,112, 69,120,112,114, 39, + 32,116,104,101,110, 10, 9, 9, 9,106,111,105,110, 83,116, + 97,116,101,109,101,110,116,115, 83, 97,102,101, 40,111,117, + 116, 44, 32,102,111,114,109, 97,116, 69,120,112,114, 40,101, + 120,112,114, 46, 76,104,115, 41, 44, 32,110,105,108, 41, 10, + 9, 9, 9,111,117,116, 91, 35,111,117,116, 32, 43, 32, 49, + 93, 32, 61, 32, 34, 32, 34, 10, 9, 9, 9,106,111,105,110, + 83,116, 97,116,101,109,101,110,116,115, 83, 97,102,101, 40, + 111,117,116, 44, 32,101,120,112,114, 46, 79,112, 44, 32,110, + 105,108, 41, 10, 9, 9, 9,111,117,116, 91, 35,111,117,116, + 32, 43, 32, 49, 93, 32, 61, 32, 34, 32, 34, 10, 9, 9, 9, + 106,111,105,110, 83,116, 97,116,101,109,101,110,116,115, 83, + 97,102,101, 40,111,117,116, 44, 32,102,111,114,109, 97,116, + 69,120,112,114, 40,101,120,112,114, 46, 82,104,115, 41, 44, + 32,110,105,108, 41, 10, 10, 9, 9,101,108,115,101,105,102, + 32,101,120,112,114, 46, 65,115,116, 84,121,112,101, 32, 61, + 61, 32, 39, 85,110,111,112, 69,120,112,114, 39, 32,116,104, + 101,110, 10, 9, 9, 9,106,111,105,110, 83,116, 97,116,101, + 109,101,110,116,115, 83, 97,102,101, 40,111,117,116, 44, 32, + 101,120,112,114, 46, 79,112, 44, 32,110,105,108, 41, 10, 9, + 9, 9,111,117,116, 91, 35,111,117,116, 32, 43, 32, 49, 93, + 32, 61, 32, 40, 35,101,120,112,114, 46, 79,112, 32,126, 61, + 32, 49, 32, 97,110,100, 32, 34, 32, 34, 32,111,114, 32, 34, + 34, 41, 10, 9, 9, 9,106,111,105,110, 83,116, 97,116,101, + 109,101,110,116,115, 83, 97,102,101, 40,111,117,116, 44, 32, + 102,111,114,109, 97,116, 69,120,112,114, 40,101,120,112,114, + 46, 82,104,115, 41, 44, 32,110,105,108, 41, 10, 10, 9, 9, + 101,108,115,101,105,102, 32,101,120,112,114, 46, 65,115,116, + 84,121,112,101, 32, 61, 61, 32, 39, 68,111,116,115, 69,120, + 112,114, 39, 32,116,104,101,110, 10, 9, 9, 9,111,117,116, + 91, 35,111,117,116, 32, 43, 32, 49, 93, 32, 61, 32, 34, 46, + 46, 46, 34, 10, 10, 9, 9,101,108,115,101,105,102, 32,101, + 120,112,114, 46, 65,115,116, 84,121,112,101, 32, 61, 61, 32, + 39, 67, 97,108,108, 69,120,112,114, 39, 32,116,104,101,110, + 10, 9, 9, 9,111,117,116, 91, 35,111,117,116, 32, 43, 32, + 49, 93, 32, 61, 32,102,111,114,109, 97,116, 69,120,112,114, + 40,101,120,112,114, 46, 66, 97,115,101, 41, 10, 9, 9, 9, + 111,117,116, 91, 35,111,117,116, 32, 43, 32, 49, 93, 32, 61, + 32, 34, 40, 34, 10, 9, 9, 9,102,111,114, 32,105, 32, 61, + 32, 49, 44, 32, 35,101,120,112,114, 46, 65,114,103,117,109, + 101,110,116,115, 32,100,111, 10, 9, 9, 9, 9,111,117,116, + 91, 35,111,117,116, 32, 43, 32, 49, 93, 32, 61, 32,102,111, + 114,109, 97,116, 69,120,112,114, 40,101,120,112,114, 46, 65, + 114,103,117,109,101,110,116,115, 91,105, 93, 41, 10, 9, 9, + 9, 9,105,102, 32,105, 32,126, 61, 32, 35,101,120,112,114, + 46, 65,114,103,117,109,101,110,116,115, 32,116,104,101,110, + 10, 9, 9, 9, 9, 9,111,117,116, 91, 35,111,117,116, 32, + 43, 32, 49, 93, 32, 61, 32, 34, 44, 32, 34, 10, 9, 9, 9, + 9,101,110,100, 10, 9, 9, 9,101,110,100, 10, 9, 9, 9, + 111,117,116, 91, 35,111,117,116, 32, 43, 32, 49, 93, 32, 61, + 32, 34, 41, 34, 10, 10, 9, 9,101,108,115,101,105,102, 32, + 101,120,112,114, 46, 65,115,116, 84,121,112,101, 32, 61, 61, + 32, 39, 84, 97, 98,108,101, 67, 97,108,108, 69,120,112,114, + 39, 32,116,104,101,110, 10, 9, 9, 9,111,117,116, 91, 35, + 111,117,116, 32, 43, 32, 49, 93, 32, 61, 32,102,111,114,109, + 97,116, 69,120,112,114, 40,101,120,112,114, 46, 66, 97,115, + 101, 41, 10, 9, 9, 9,111,117,116, 91, 35,111,117,116, 32, + 43, 32, 49, 93, 32, 61, 32, 34, 32, 34, 10, 9, 9, 9,111, + 117,116, 91, 35,111,117,116, 32, 43, 32, 49, 93, 32, 61, 32, + 102,111,114,109, 97,116, 69,120,112,114, 40,101,120,112,114, + 46, 65,114,103,117,109,101,110,116,115, 91, 49, 93, 41, 10, + 10, 9, 9,101,108,115,101,105,102, 32,101,120,112,114, 46, + 65,115,116, 84,121,112,101, 32, 61, 61, 32, 39, 83,116,114, + 105,110,103, 67, 97,108,108, 69,120,112,114, 39, 32,116,104, + 101,110, 10, 9, 9, 9,111,117,116, 91, 35,111,117,116, 32, + 43, 32, 49, 93, 32, 61, 32,102,111,114,109, 97,116, 69,120, + 112,114, 40,101,120,112,114, 46, 66, 97,115,101, 41, 10, 9, + 9, 9,111,117,116, 91, 35,111,117,116, 32, 43, 32, 49, 93, + 32, 61, 32, 34, 32, 34, 10, 9, 9, 9,111,117,116, 91, 35, + 111,117,116, 32, 43, 32, 49, 93, 32, 61, 32,101,120,112,114, + 46, 65,114,103,117,109,101,110,116,115, 91, 49, 93, 46, 68, + 97,116, 97, 10, 10, 9, 9,101,108,115,101,105,102, 32,101, + 120,112,114, 46, 65,115,116, 84,121,112,101, 32, 61, 61, 32, + 39, 73,110,100,101,120, 69,120,112,114, 39, 32,116,104,101, + 110, 10, 9, 9, 9,111,117,116, 91, 35,111,117,116, 32, 43, + 32, 49, 93, 32, 61, 32,102,111,114,109, 97,116, 69,120,112, + 114, 40,101,120,112,114, 46, 66, 97,115,101, 41, 10, 9, 9, + 9,111,117,116, 91, 35,111,117,116, 32, 43, 32, 49, 93, 32, + 61, 32, 34, 91, 34, 10, 9, 9, 9,111,117,116, 91, 35,111, + 117,116, 32, 43, 32, 49, 93, 32, 61, 32,102,111,114,109, 97, + 116, 69,120,112,114, 40,101,120,112,114, 46, 73,110,100,101, + 120, 41, 10, 9, 9, 9,111,117,116, 91, 35,111,117,116, 32, + 43, 32, 49, 93, 32, 61, 32, 34, 93, 34, 10, 10, 9, 9,101, + 108,115,101,105,102, 32,101,120,112,114, 46, 65,115,116, 84, + 121,112,101, 32, 61, 61, 32, 39, 77,101,109, 98,101,114, 69, + 120,112,114, 39, 32,116,104,101,110, 10, 9, 9, 9,111,117, + 116, 91, 35,111,117,116, 32, 43, 32, 49, 93, 32, 61, 32,102, + 111,114,109, 97,116, 69,120,112,114, 40,101,120,112,114, 46, + 66, 97,115,101, 41, 10, 9, 9, 9,108,111, 99, 97,108, 32, + 116, 97,114,103,101,116, 76,105,110,101, 32, 61, 32,108,105, + 110,101, 77, 97,112, 91,101,120,112,114, 46, 73,100,101,110, + 116, 46, 76,105,110,101, 93, 10, 9, 9, 9,105,102, 32,116, + 97,114,103,101,116, 76,105,110,101, 32, 97,110,100, 32, 99, + 117,114,114,101,110,116, 76,105,110,101, 32, 60, 32,116, 97, + 114,103,101,116, 76,105,110,101, 32,116,104,101,110, 10, 9, + 9, 9, 9,111,117,116, 91, 35,111,117,116, 32, 43, 32, 49, + 93, 32, 61, 32,115,116,114,105,110,103, 46,114,101,112, 40, + 39, 92,110, 39, 44, 32,116, 97,114,103,101,116, 76,105,110, + 101, 32, 45, 32, 99,117,114,114,101,110,116, 76,105,110,101, + 41, 10, 9, 9, 9, 9, 99,117,114,114,101,110,116, 76,105, + 110,101, 32, 61, 32,116, 97,114,103,101,116, 76,105,110,101, + 10, 9, 9, 9,101,110,100, 10, 9, 9, 9,111,117,116, 91, + 35,111,117,116, 32, 43, 32, 49, 93, 32, 61, 32,101,120,112, + 114, 46, 73,110,100,101,120,101,114, 10, 9, 9, 9,111,117, + 116, 91, 35,111,117,116, 32, 43, 32, 49, 93, 32, 61, 32,101, + 120,112,114, 46, 73,100,101,110,116, 46, 68, 97,116, 97, 10, + 10, 9, 9,101,108,115,101,105,102, 32,101,120,112,114, 46, + 65,115,116, 84,121,112,101, 32, 61, 61, 32, 39, 70,117,110, + 99,116,105,111,110, 39, 32,116,104,101,110, 10, 9, 9, 9, + 45, 45, 32, 97,110,111,110,121,109,111,117,115, 32,102,117, + 110, 99,116,105,111,110, 10, 9, 9, 9,111,117,116, 91, 35, + 111,117,116, 32, 43, 32, 49, 93, 32, 61, 32, 34,102,117,110, + 99,116,105,111,110, 40, 34, 10, 9, 9, 9,105,102, 32, 35, + 101,120,112,114, 46, 65,114,103,117,109,101,110,116,115, 32, + 62, 32, 48, 32,116,104,101,110, 10, 9, 9, 9, 9,102,111, + 114, 32,105, 32, 61, 32, 49, 44, 32, 35,101,120,112,114, 46, + 65,114,103,117,109,101,110,116,115, 32,100,111, 10, 9, 9, + 9, 9, 9,111,117,116, 91, 35,111,117,116, 32, 43, 32, 49, + 93, 32, 61, 32,101,120,112,114, 46, 65,114,103,117,109,101, + 110,116,115, 91,105, 93, 46, 78, 97,109,101, 10, 9, 9, 9, + 9, 9,105,102, 32,105, 32,126, 61, 32, 35,101,120,112,114, + 46, 65,114,103,117,109,101,110,116,115, 32,116,104,101,110, + 10, 9, 9, 9, 9, 9, 9,111,117,116, 91, 35,111,117,116, + 32, 43, 32, 49, 93, 32, 61, 32, 34, 44, 32, 34, 10, 9, 9, + 9, 9, 9,101,108,115,101,105,102, 32,101,120,112,114, 46, + 86, 97,114, 65,114,103, 32,116,104,101,110, 10, 9, 9, 9, + 9, 9, 9,111,117,116, 91, 35,111,117,116, 32, 43, 32, 49, + 93, 32, 61, 32, 34, 44, 32, 46, 46, 46, 34, 10, 9, 9, 9, + 9, 9,101,110,100, 10, 9, 9, 9, 9,101,110,100, 10, 9, + 9, 9,101,108,115,101,105,102, 32,101,120,112,114, 46, 86, + 97,114, 65,114,103, 32,116,104,101,110, 10, 9, 9, 9, 9, + 111,117,116, 91, 35,111,117,116, 32, 43, 32, 49, 93, 32, 61, + 32, 34, 46, 46, 46, 34, 10, 9, 9, 9,101,110,100, 10, 9, + 9, 9,111,117,116, 91, 35,111,117,116, 32, 43, 32, 49, 93, + 32, 61, 32, 34, 41, 34, 10, 9, 9, 9,106,111,105,110, 83, + 116, 97,116,101,109,101,110,116,115, 83, 97,102,101, 40,111, + 117,116, 44, 32,102,111,114,109, 97,116, 83,116, 97,116,108, + 105,115,116, 40,101,120,112,114, 46, 66,111,100,121, 41, 44, + 32,110,105,108, 41, 10, 9, 9, 9,106,111,105,110, 83,116, + 97,116,101,109,101,110,116,115, 83, 97,102,101, 40,111,117, + 116, 44, 32, 34,101,110,100, 34, 44, 32,110,105,108, 41, 10, + 9, 9,101,108,115,101,105,102, 32,101,120,112,114, 46, 65, + 115,116, 84,121,112,101, 32, 61, 61, 32, 39, 67,111,110,115, + 116,114,117, 99,116,111,114, 69,120,112,114, 39, 32,116,104, + 101,110, 10, 9, 9, 9,111,117,116, 91, 35,111,117,116, 32, + 43, 32, 49, 93, 32, 61, 32, 34,123, 32, 34, 10, 9, 9, 9, + 102,111,114, 32,105, 32, 61, 32, 49, 44, 32, 35,101,120,112, + 114, 46, 69,110,116,114,121, 76,105,115,116, 32,100,111, 10, + 9, 9, 9, 9,108,111, 99, 97,108, 32,101,110,116,114,121, + 32, 61, 32,101,120,112,114, 46, 69,110,116,114,121, 76,105, + 115,116, 91,105, 93, 10, 9, 9, 9, 9,105,102, 32,101,110, + 116,114,121, 46, 84,121,112,101, 32, 61, 61, 32, 39, 75,101, + 121, 39, 32,116,104,101,110, 10, 9, 9, 9, 9, 9,111,117, + 116, 91, 35,111,117,116, 32, 43, 32, 49, 93, 32, 61, 32, 34, + 91, 34, 10, 9, 9, 9, 9, 9,111,117,116, 91, 35,111,117, + 116, 32, 43, 32, 49, 93, 32, 61, 32,102,111,114,109, 97,116, + 69,120,112,114, 40,101,110,116,114,121, 46, 75,101,121, 41, + 10, 9, 9, 9, 9, 9,111,117,116, 91, 35,111,117,116, 32, + 43, 32, 49, 93, 32, 61, 32, 34, 93, 32, 61, 32, 34, 10, 9, + 9, 9, 9, 9,111,117,116, 91, 35,111,117,116, 32, 43, 32, + 49, 93, 32, 61, 32,102,111,114,109, 97,116, 69,120,112,114, + 40,101,110,116,114,121, 46, 86, 97,108,117,101, 41, 10, 9, + 9, 9, 9,101,108,115,101,105,102, 32,101,110,116,114,121, + 46, 84,121,112,101, 32, 61, 61, 32, 39, 86, 97,108,117,101, + 39, 32,116,104,101,110, 10, 9, 9, 9, 9, 9,111,117,116, + 91, 35,111,117,116, 32, 43, 32, 49, 93, 32, 61, 32,102,111, + 114,109, 97,116, 69,120,112,114, 40,101,110,116,114,121, 46, + 86, 97,108,117,101, 41, 10, 9, 9, 9, 9,101,108,115,101, + 105,102, 32,101,110,116,114,121, 46, 84,121,112,101, 32, 61, + 61, 32, 39, 75,101,121, 83,116,114,105,110,103, 39, 32,116, + 104,101,110, 10, 9, 9, 9, 9, 9,111,117,116, 91, 35,111, + 117,116, 32, 43, 32, 49, 93, 32, 61, 32,101,110,116,114,121, + 46, 75,101,121, 10, 9, 9, 9, 9, 9,111,117,116, 91, 35, + 111,117,116, 32, 43, 32, 49, 93, 32, 61, 32, 34, 32, 61, 32, + 34, 10, 9, 9, 9, 9, 9,111,117,116, 91, 35,111,117,116, + 32, 43, 32, 49, 93, 32, 61, 32,102,111,114,109, 97,116, 69, + 120,112,114, 40,101,110,116,114,121, 46, 86, 97,108,117,101, + 41, 10, 9, 9, 9, 9,101,110,100, 10, 9, 9, 9, 9,105, + 102, 32,105, 32,126, 61, 32, 35,101,120,112,114, 46, 69,110, + 116,114,121, 76,105,115,116, 32,116,104,101,110, 10, 9, 9, + 9, 9, 9,111,117,116, 91, 35,111,117,116, 32, 43, 32, 49, + 93, 32, 61, 32, 34, 44, 32, 34, 10, 9, 9, 9, 9,101,110, + 100, 10, 9, 9, 9,101,110,100, 10, 9, 9, 9,111,117,116, + 91, 35,111,117,116, 32, 43, 32, 49, 93, 32, 61, 32, 34, 32, + 125, 34, 10, 10, 9, 9,101,108,115,101,105,102, 32,101,120, + 112,114, 46, 65,115,116, 84,121,112,101, 32, 61, 61, 32, 39, + 80, 97,114,101,110,116,104,101,115,101,115, 39, 32,116,104, + 101,110, 10, 9, 9, 9,111,117,116, 91, 35,111,117,116, 32, + 43, 32, 49, 93, 32, 61, 32, 34, 40, 34, 10, 9, 9, 9,111, + 117,116, 91, 35,111,117,116, 32, 43, 32, 49, 93, 32, 61, 32, + 102,111,114,109, 97,116, 69,120,112,114, 40,101,120,112,114, + 46, 73,110,110,101,114, 41, 10, 9, 9, 9,111,117,116, 91, + 35,111,117,116, 32, 43, 32, 49, 93, 32, 61, 32, 34, 41, 34, + 10, 10, 9, 9,101,110,100, 10, 9, 9,111,117,116, 91, 35, + 111,117,116, 32, 43, 32, 49, 93, 32, 61, 32,115,116,114,105, + 110,103, 46,114,101,112, 40, 39, 41, 39, 44, 32,101,120,112, + 114, 46, 80, 97,114,101,110, 67,111,117,110,116, 32,111,114, + 32, 48, 41, 10, 9, 9,105,102, 32,101,120,112,114, 46, 84, + 111,107,101,110,115, 32, 97,110,100, 32,101,120,112,114, 46, + 84,111,107,101,110,115, 91, 49, 93, 32,116,104,101,110, 10, + 9, 9, 9,108,111, 99, 97,108, 32,108,105,110,101, 32, 61, + 32,101,120,112,114, 46, 84,111,107,101,110,115, 91, 49, 93, + 46, 76,105,110,101, 10, 9, 9, 9,108,111, 99, 97,108, 32, + 116, 97,114,103,101,116, 76,105,110,101, 32, 61, 32,108,105, + 110,101, 77, 97,112, 91,108,105,110,101, 93, 10, 9, 9, 9, + 105,102, 32,116, 97,114,103,101,116, 76,105,110,101, 32, 97, + 110,100, 32, 99,117,114,114,101,110,116, 76,105,110,101, 32, + 60, 32,116, 97,114,103,101,116, 76,105,110,101, 32,116,104, + 101,110, 10, 9, 9, 9, 9,116, 97, 98,108,101, 46,105,110, + 115,101,114,116, 40,111,117,116, 44, 32, 49, 44, 32,115,116, + 114,105,110,103, 46,114,101,112, 40, 39, 92,110, 39, 44, 32, + 116, 97,114,103,101,116, 76,105,110,101, 32, 45, 32, 99,117, + 114,114,101,110,116, 76,105,110,101, 41, 41, 10, 9, 9, 9, + 9, 99,117,114,114,101,110,116, 76,105,110,101, 32, 61, 32, + 116, 97,114,103,101,116, 76,105,110,101, 10, 9, 9, 9,101, + 110,100, 10, 9, 9,101,110,100, 10, 9, 9,114,101,116,117, + 114,110, 32,116, 97, 98,108,101, 46, 99,111,110, 99, 97,116, + 40,111,117,116, 41, 10, 9,101,110,100, 10, 10, 9,108,111, + 99, 97,108, 32,102,111,114,109, 97,116, 83,116, 97,116,101, + 109,101,110,116, 32, 61, 32,102,117,110, 99,116,105,111,110, + 40,115,116, 97,116,101,109,101,110,116, 41, 10, 9, 9,108, + 111, 99, 97,108, 32,111,117,116, 32, 61, 32,123, 34, 34,125, + 10, 9, 9,105,102, 32,115,116, 97,116,101,109,101,110,116, + 46, 65,115,116, 84,121,112,101, 32, 61, 61, 32, 39, 65,115, + 115,105,103,110,109,101,110,116, 83,116, 97,116,101,109,101, + 110,116, 39, 32,116,104,101,110, 10, 9, 9, 9,102,111,114, + 32,105, 32, 61, 32, 49, 44, 32, 35,115,116, 97,116,101,109, + 101,110,116, 46, 76,104,115, 32,100,111, 10, 9, 9, 9, 9, + 111,117,116, 91, 35,111,117,116, 32, 43, 32, 49, 93, 32, 61, + 32,102,111,114,109, 97,116, 69,120,112,114, 40,115,116, 97, + 116,101,109,101,110,116, 46, 76,104,115, 91,105, 93, 41, 10, + 9, 9, 9, 9,105,102, 32,105, 32,126, 61, 32, 35,115,116, + 97,116,101,109,101,110,116, 46, 76,104,115, 32,116,104,101, + 110, 10, 9, 9, 9, 9, 9,111,117,116, 91, 35,111,117,116, + 32, 43, 32, 49, 93, 32, 61, 32, 34, 44, 32, 34, 10, 9, 9, + 9, 9,101,110,100, 10, 9, 9, 9,101,110,100, 10, 9, 9, + 9,105,102, 32, 35,115,116, 97,116,101,109,101,110,116, 46, + 82,104,115, 32, 62, 32, 48, 32,116,104,101,110, 10, 9, 9, + 9, 9,111,117,116, 91, 35,111,117,116, 32, 43, 32, 49, 93, + 32, 61, 32, 34, 32, 61, 32, 34, 10, 9, 9, 9, 9,102,111, + 114, 32,105, 32, 61, 32, 49, 44, 32, 35,115,116, 97,116,101, + 109,101,110,116, 46, 82,104,115, 32,100,111, 10, 9, 9, 9, + 9, 9,111,117,116, 91, 35,111,117,116, 32, 43, 32, 49, 93, + 32, 61, 32,102,111,114,109, 97,116, 69,120,112,114, 40,115, + 116, 97,116,101,109,101,110,116, 46, 82,104,115, 91,105, 93, + 41, 10, 9, 9, 9, 9, 9,105,102, 32,105, 32,126, 61, 32, + 35,115,116, 97,116,101,109,101,110,116, 46, 82,104,115, 32, + 116,104,101,110, 10, 9, 9, 9, 9, 9, 9,111,117,116, 91, + 35,111,117,116, 32, 43, 32, 49, 93, 32, 61, 32, 34, 44, 32, + 34, 10, 9, 9, 9, 9, 9,101,110,100, 10, 9, 9, 9, 9, + 101,110,100, 10, 9, 9, 9,101,110,100, 10, 9, 9,101,108, + 115,101,105,102, 32,115,116, 97,116,101,109,101,110,116, 46, + 65,115,116, 84,121,112,101, 32, 61, 61, 32, 39, 67, 97,108, + 108, 83,116, 97,116,101,109,101,110,116, 39, 32,116,104,101, + 110, 10, 9, 9, 9,111,117,116, 91, 35,111,117,116, 32, 43, + 32, 49, 93, 32, 61, 32,102,111,114,109, 97,116, 69,120,112, + 114, 40,115,116, 97,116,101,109,101,110,116, 46, 69,120,112, + 114,101,115,115,105,111,110, 41, 10, 9, 9,101,108,115,101, + 105,102, 32,115,116, 97,116,101,109,101,110,116, 46, 65,115, + 116, 84,121,112,101, 32, 61, 61, 32, 39, 76,111, 99, 97,108, + 83,116, 97,116,101,109,101,110,116, 39, 32,116,104,101,110, + 10, 9, 9, 9,111,117,116, 91, 35,111,117,116, 32, 43, 32, + 49, 93, 32, 61, 32, 34,108,111, 99, 97,108, 32, 34, 10, 9, + 9, 9,102,111,114, 32,105, 32, 61, 32, 49, 44, 32, 35,115, + 116, 97,116,101,109,101,110,116, 46, 76,111, 99, 97,108, 76, + 105,115,116, 32,100,111, 10, 9, 9, 9, 9,111,117,116, 91, + 35,111,117,116, 32, 43, 32, 49, 93, 32, 61, 32,115,116, 97, + 116,101,109,101,110,116, 46, 76,111, 99, 97,108, 76,105,115, + 116, 91,105, 93, 46, 78, 97,109,101, 10, 9, 9, 9, 9,105, + 102, 32,115,116, 97,116,101,109,101,110,116, 46, 65,116,116, + 114, 76,105,115,116, 91,105, 93, 32,116,104,101,110, 10, 9, + 9, 9, 9, 9,111,117,116, 91, 35,111,117,116, 32, 43, 32, + 49, 93, 32, 61, 32, 34, 32, 60, 34, 10, 9, 9, 9, 9, 9, + 111,117,116, 91, 35,111,117,116, 32, 43, 32, 49, 93, 32, 61, + 32,115,116, 97,116,101,109,101,110,116, 46, 65,116,116,114, + 76,105,115,116, 91,105, 93, 10, 9, 9, 9, 9, 9,111,117, + 116, 91, 35,111,117,116, 32, 43, 32, 49, 93, 32, 61, 32, 34, + 62, 34, 10, 9, 9, 9, 9,101,110,100, 10, 9, 9, 9, 9, + 105,102, 32,105, 32,126, 61, 32, 35,115,116, 97,116,101,109, + 101,110,116, 46, 76,111, 99, 97,108, 76,105,115,116, 32,116, + 104,101,110, 10, 9, 9, 9, 9, 9,111,117,116, 91, 35,111, + 117,116, 32, 43, 32, 49, 93, 32, 61, 32, 34, 44, 34, 10, 9, + 9, 9, 9,101,110,100, 10, 9, 9, 9,101,110,100, 10, 9, + 9, 9,105,102, 32, 35,115,116, 97,116,101,109,101,110,116, + 46, 73,110,105,116, 76,105,115,116, 32, 62, 32, 48, 32,116, + 104,101,110, 10, 9, 9, 9, 9,111,117,116, 91, 35,111,117, + 116, 32, 43, 32, 49, 93, 32, 61, 32, 34, 32, 61, 32, 34, 10, + 9, 9, 9, 9,102,111,114, 32,105, 32, 61, 32, 49, 44, 32, + 35,115,116, 97,116,101,109,101,110,116, 46, 73,110,105,116, + 76,105,115,116, 32,100,111, 10, 9, 9, 9, 9, 9,111,117, + 116, 91, 35,111,117,116, 32, 43, 32, 49, 93, 32, 61, 32,102, + 111,114,109, 97,116, 69,120,112,114, 40,115,116, 97,116,101, + 109,101,110,116, 46, 73,110,105,116, 76,105,115,116, 91,105, + 93, 41, 10, 9, 9, 9, 9, 9,105,102, 32,105, 32,126, 61, + 32, 35,115,116, 97,116,101,109,101,110,116, 46, 73,110,105, + 116, 76,105,115,116, 32,116,104,101,110, 10, 9, 9, 9, 9, + 9, 9,111,117,116, 91, 35,111,117,116, 32, 43, 32, 49, 93, + 32, 61, 32, 34, 44, 32, 34, 10, 9, 9, 9, 9, 9,101,110, + 100, 10, 9, 9, 9, 9,101,110,100, 10, 9, 9, 9,101,110, + 100, 10, 9, 9,101,108,115,101,105,102, 32,115,116, 97,116, + 101,109,101,110,116, 46, 65,115,116, 84,121,112,101, 32, 61, + 61, 32, 39, 73,102, 83,116, 97,116,101,109,101,110,116, 39, + 32,116,104,101,110, 10, 9, 9, 9,111,117,116, 91, 35,111, + 117,116, 32, 43, 32, 49, 93, 32, 61, 32, 34,105,102, 32, 34, + 10, 9, 9, 9,106,111,105,110, 83,116, 97,116,101,109,101, + 110,116,115, 83, 97,102,101, 40,111,117,116, 44, 32,102,111, + 114,109, 97,116, 69,120,112,114, 40,115,116, 97,116,101,109, + 101,110,116, 46, 67,108, 97,117,115,101,115, 91, 49, 93, 46, + 67,111,110,100,105,116,105,111,110, 41, 44, 32,110,105,108, + 41, 10, 9, 9, 9,106,111,105,110, 83,116, 97,116,101,109, + 101,110,116,115, 83, 97,102,101, 40,111,117,116, 44, 32, 34, + 32,116,104,101,110, 34, 44, 32,110,105,108, 41, 10, 9, 9, + 9,106,111,105,110, 83,116, 97,116,101,109,101,110,116,115, + 83, 97,102,101, 40,111,117,116, 44, 32,102,111,114,109, 97, + 116, 83,116, 97,116,108,105,115,116, 40,115,116, 97,116,101, + 109,101,110,116, 46, 67,108, 97,117,115,101,115, 91, 49, 93, + 46, 66,111,100,121, 41, 44, 32,110,105,108, 41, 10, 9, 9, + 9,102,111,114, 32,105, 32, 61, 32, 50, 44, 32, 35,115,116, + 97,116,101,109,101,110,116, 46, 67,108, 97,117,115,101,115, + 32,100,111, 10, 9, 9, 9, 9,108,111, 99, 97,108, 32,115, + 116, 32, 61, 32,115,116, 97,116,101,109,101,110,116, 46, 67, + 108, 97,117,115,101,115, 91,105, 93, 10, 9, 9, 9, 9,105, + 102, 32,115,116, 46, 67,111,110,100,105,116,105,111,110, 32, + 116,104,101,110, 10, 9, 9, 9, 9, 9,106,111,105,110, 83, + 116, 97,116,101,109,101,110,116,115, 83, 97,102,101, 40,111, + 117,116, 44, 32, 34,101,108,115,101,105,102, 32, 34, 44, 32, + 110,105,108, 41, 10, 9, 9, 9, 9, 9,106,111,105,110, 83, + 116, 97,116,101,109,101,110,116,115, 83, 97,102,101, 40,111, + 117,116, 44, 32,102,111,114,109, 97,116, 69,120,112,114, 40, + 115,116, 46, 67,111,110,100,105,116,105,111,110, 41, 44, 32, + 110,105,108, 41, 10, 9, 9, 9, 9, 9,106,111,105,110, 83, + 116, 97,116,101,109,101,110,116,115, 83, 97,102,101, 40,111, + 117,116, 44, 32, 34, 32,116,104,101,110, 34, 44, 32,110,105, + 108, 41, 10, 9, 9, 9, 9,101,108,115,101, 10, 9, 9, 9, + 9, 9,106,111,105,110, 83,116, 97,116,101,109,101,110,116, + 115, 83, 97,102,101, 40,111,117,116, 44, 32, 34,101,108,115, + 101, 34, 44, 32,110,105,108, 41, 10, 9, 9, 9, 9,101,110, + 100, 10, 9, 9, 9, 9,106,111,105,110, 83,116, 97,116,101, + 109,101,110,116,115, 83, 97,102,101, 40,111,117,116, 44, 32, + 102,111,114,109, 97,116, 83,116, 97,116,108,105,115,116, 40, + 115,116, 46, 66,111,100,121, 41, 44, 32,110,105,108, 41, 10, + 9, 9, 9,101,110,100, 10, 9, 9, 9,106,111,105,110, 83, + 116, 97,116,101,109,101,110,116,115, 83, 97,102,101, 40,111, + 117,116, 44, 32, 34,101,110,100, 34, 44, 32,110,105,108, 41, + 10, 9, 9,101,108,115,101,105,102, 32,115,116, 97,116,101, + 109,101,110,116, 46, 65,115,116, 84,121,112,101, 32, 61, 61, + 32, 39, 87,104,105,108,101, 83,116, 97,116,101,109,101,110, + 116, 39, 32,116,104,101,110, 10, 9, 9, 9,111,117,116, 91, + 35,111,117,116, 32, 43, 32, 49, 93, 32, 61, 32, 34,119,104, + 105,108,101, 32, 34, 10, 9, 9, 9,106,111,105,110, 83,116, + 97,116,101,109,101,110,116,115, 83, 97,102,101, 40,111,117, + 116, 44, 32,102,111,114,109, 97,116, 69,120,112,114, 40,115, + 116, 97,116,101,109,101,110,116, 46, 67,111,110,100,105,116, + 105,111,110, 41, 44, 32,110,105,108, 41, 10, 9, 9, 9,106, + 111,105,110, 83,116, 97,116,101,109,101,110,116,115, 83, 97, + 102,101, 40,111,117,116, 44, 32, 34, 32,100,111, 34, 44, 32, + 110,105,108, 41, 10, 9, 9, 9,106,111,105,110, 83,116, 97, + 116,101,109,101,110,116,115, 83, 97,102,101, 40,111,117,116, + 44, 32,102,111,114,109, 97,116, 83,116, 97,116,108,105,115, + 116, 40,115,116, 97,116,101,109,101,110,116, 46, 66,111,100, + 121, 41, 44, 32,110,105,108, 41, 10, 9, 9, 9,106,111,105, + 110, 83,116, 97,116,101,109,101,110,116,115, 83, 97,102,101, + 40,111,117,116, 44, 32, 34,101,110,100, 34, 44, 32,110,105, + 108, 41, 10, 9, 9,101,108,115,101,105,102, 32,115,116, 97, + 116,101,109,101,110,116, 46, 65,115,116, 84,121,112,101, 32, + 61, 61, 32, 39, 68,111, 83,116, 97,116,101,109,101,110,116, + 39, 32,116,104,101,110, 10, 9, 9, 9,106,111,105,110, 83, + 116, 97,116,101,109,101,110,116,115, 83, 97,102,101, 40,111, + 117,116, 44, 32, 34,100,111, 34, 44, 32,110,105,108, 41, 10, + 9, 9, 9,106,111,105,110, 83,116, 97,116,101,109,101,110, + 116,115, 83, 97,102,101, 40,111,117,116, 44, 32,102,111,114, + 109, 97,116, 83,116, 97,116,108,105,115,116, 40,115,116, 97, + 116,101,109,101,110,116, 46, 66,111,100,121, 41, 44, 32,110, + 105,108, 41, 10, 9, 9, 9,106,111,105,110, 83,116, 97,116, + 101,109,101,110,116,115, 83, 97,102,101, 40,111,117,116, 44, + 32, 34,101,110,100, 34, 44, 32,110,105,108, 41, 10, 9, 9, + 101,108,115,101,105,102, 32,115,116, 97,116,101,109,101,110, + 116, 46, 65,115,116, 84,121,112,101, 32, 61, 61, 32, 39, 82, + 101,116,117,114,110, 83,116, 97,116,101,109,101,110,116, 39, + 32,116,104,101,110, 10, 9, 9, 9,111,117,116, 91, 35,111, + 117,116, 32, 43, 32, 49, 93, 32, 61, 32, 34,114,101,116,117, + 114,110, 32, 34, 10, 9, 9, 9,102,111,114, 32,105, 32, 61, + 32, 49, 44, 32, 35,115,116, 97,116,101,109,101,110,116, 46, + 65,114,103,117,109,101,110,116,115, 32,100,111, 10, 9, 9, + 9, 9,106,111,105,110, 83,116, 97,116,101,109,101,110,116, + 115, 83, 97,102,101, 40,111,117,116, 44, 32,102,111,114,109, + 97,116, 69,120,112,114, 40,115,116, 97,116,101,109,101,110, + 116, 46, 65,114,103,117,109,101,110,116,115, 91,105, 93, 41, + 44, 32,110,105,108, 41, 10, 9, 9, 9, 9,105,102, 32,105, + 32,126, 61, 32, 35,115,116, 97,116,101,109,101,110,116, 46, + 65,114,103,117,109,101,110,116,115, 32,116,104,101,110, 10, + 9, 9, 9, 9, 9,111,117,116, 91, 35,111,117,116, 32, 43, + 32, 49, 93, 32, 61, 32, 34, 44, 32, 34, 10, 9, 9, 9, 9, + 101,110,100, 10, 9, 9, 9,101,110,100, 10, 9, 9,101,108, + 115,101,105,102, 32,115,116, 97,116,101,109,101,110,116, 46, + 65,115,116, 84,121,112,101, 32, 61, 61, 32, 39, 66,114,101, + 97,107, 83,116, 97,116,101,109,101,110,116, 39, 32,116,104, + 101,110, 10, 9, 9, 9,111,117,116, 91, 35,111,117,116, 32, + 43, 32, 49, 93, 32, 61, 32, 34, 98,114,101, 97,107, 34, 10, + 9, 9,101,108,115,101,105,102, 32,115,116, 97,116,101,109, + 101,110,116, 46, 65,115,116, 84,121,112,101, 32, 61, 61, 32, + 39, 82,101,112,101, 97,116, 83,116, 97,116,101,109,101,110, + 116, 39, 32,116,104,101,110, 10, 9, 9, 9,111,117,116, 91, + 35,111,117,116, 32, 43, 32, 49, 93, 32, 61, 32, 34,114,101, + 112,101, 97,116, 34, 10, 9, 9, 9,106,111,105,110, 83,116, + 97,116,101,109,101,110,116,115, 83, 97,102,101, 40,111,117, + 116, 44, 32,102,111,114,109, 97,116, 83,116, 97,116,108,105, + 115,116, 40,115,116, 97,116,101,109,101,110,116, 46, 66,111, + 100,121, 41, 44, 32,110,105,108, 41, 10, 9, 9, 9,106,111, + 105,110, 83,116, 97,116,101,109,101,110,116,115, 83, 97,102, + 101, 40,111,117,116, 44, 32, 34,117,110,116,105,108, 32, 34, + 44, 32,110,105,108, 41, 10, 9, 9, 9,106,111,105,110, 83, + 116, 97,116,101,109,101,110,116,115, 83, 97,102,101, 40,111, + 117,116, 44, 32,102,111,114,109, 97,116, 69,120,112,114, 40, + 115,116, 97,116,101,109,101,110,116, 46, 67,111,110,100,105, + 116,105,111,110, 41, 44, 32,110,105,108, 41, 10, 9, 9,101, + 108,115,101,105,102, 32,115,116, 97,116,101,109,101,110,116, + 46, 65,115,116, 84,121,112,101, 32, 61, 61, 32, 39, 70,117, + 110, 99,116,105,111,110, 39, 32,116,104,101,110, 10, 9, 9, + 9,105,102, 32,115,116, 97,116,101,109,101,110,116, 46, 73, + 115, 76,111, 99, 97,108, 32,116,104,101,110, 10, 9, 9, 9, + 9,111,117,116, 91, 35,111,117,116, 32, 43, 32, 49, 93, 32, + 61, 32, 34,108,111, 99, 97,108, 32, 34, 10, 9, 9, 9,101, + 110,100, 10, 9, 9, 9,106,111,105,110, 83,116, 97,116,101, + 109,101,110,116,115, 83, 97,102,101, 40,111,117,116, 44, 32, + 34,102,117,110, 99,116,105,111,110, 32, 34, 44, 32,110,105, + 108, 41, 10, 9, 9, 9,105,102, 32,115,116, 97,116,101,109, + 101,110,116, 46, 73,115, 76,111, 99, 97,108, 32,116,104,101, + 110, 10, 9, 9, 9, 9,111,117,116, 91, 35,111,117,116, 32, + 43, 32, 49, 93, 32, 61, 32,115,116, 97,116,101,109,101,110, + 116, 46, 78, 97,109,101, 46, 78, 97,109,101, 10, 9, 9, 9, + 101,108,115,101, 10, 9, 9, 9, 9,111,117,116, 91, 35,111, + 117,116, 32, 43, 32, 49, 93, 32, 61, 32,102,111,114,109, 97, + 116, 69,120,112,114, 40,115,116, 97,116,101,109,101,110,116, + 46, 78, 97,109,101, 41, 10, 9, 9, 9,101,110,100, 10, 9, + 9, 9,111,117,116, 91, 35,111,117,116, 32, 43, 32, 49, 93, + 32, 61, 32, 34, 40, 34, 10, 9, 9, 9,105,102, 32, 35,115, + 116, 97,116,101,109,101,110,116, 46, 65,114,103,117,109,101, + 110,116,115, 32, 62, 32, 48, 32,116,104,101,110, 10, 9, 9, + 9, 9,102,111,114, 32,105, 32, 61, 32, 49, 44, 32, 35,115, + 116, 97,116,101,109,101,110,116, 46, 65,114,103,117,109,101, + 110,116,115, 32,100,111, 10, 9, 9, 9, 9, 9,111,117,116, + 91, 35,111,117,116, 32, 43, 32, 49, 93, 32, 61, 32,115,116, + 97,116,101,109,101,110,116, 46, 65,114,103,117,109,101,110, + 116,115, 91,105, 93, 46, 78, 97,109,101, 10, 9, 9, 9, 9, + 9,105,102, 32,105, 32,126, 61, 32, 35,115,116, 97,116,101, + 109,101,110,116, 46, 65,114,103,117,109,101,110,116,115, 32, + 116,104,101,110, 10, 9, 9, 9, 9, 9, 9,111,117,116, 91, + 35,111,117,116, 32, 43, 32, 49, 93, 32, 61, 32, 34, 44, 32, + 34, 10, 9, 9, 9, 9, 9,101,108,115,101,105,102, 32,115, + 116, 97,116,101,109,101,110,116, 46, 86, 97,114, 65,114,103, + 32,116,104,101,110, 10, 9, 9, 9, 9, 9, 9,111,117,116, + 91, 35,111,117,116, 32, 43, 32, 49, 93, 32, 61, 32, 34, 44, + 46, 46, 46, 34, 10, 9, 9, 9, 9, 9,101,110,100, 10, 9, + 9, 9, 9,101,110,100, 10, 9, 9, 9,101,108,115,101,105, + 102, 32,115,116, 97,116,101,109,101,110,116, 46, 86, 97,114, + 65,114,103, 32,116,104,101,110, 10, 9, 9, 9, 9,111,117, + 116, 91, 35,111,117,116, 32, 43, 32, 49, 93, 32, 61, 32, 34, + 46, 46, 46, 34, 10, 9, 9, 9,101,110,100, 10, 9, 9, 9, + 111,117,116, 91, 35,111,117,116, 32, 43, 32, 49, 93, 32, 61, + 32, 34, 41, 34, 10, 9, 9, 9,106,111,105,110, 83,116, 97, + 116,101,109,101,110,116,115, 83, 97,102,101, 40,111,117,116, + 44, 32,102,111,114,109, 97,116, 83,116, 97,116,108,105,115, + 116, 40,115,116, 97,116,101,109,101,110,116, 46, 66,111,100, + 121, 41, 44, 32,110,105,108, 41, 10, 9, 9, 9,106,111,105, + 110, 83,116, 97,116,101,109,101,110,116,115, 83, 97,102,101, + 40,111,117,116, 44, 32, 34,101,110,100, 34, 44, 32,110,105, + 108, 41, 10, 9, 9,101,108,115,101,105,102, 32,115,116, 97, + 116,101,109,101,110,116, 46, 65,115,116, 84,121,112,101, 32, + 61, 61, 32, 39, 71,101,110,101,114,105, 99, 70,111,114, 83, + 116, 97,116,101,109,101,110,116, 39, 32,116,104,101,110, 10, + 9, 9, 9,111,117,116, 91, 35,111,117,116, 32, 43, 32, 49, + 93, 32, 61, 32, 34,102,111,114, 32, 34, 10, 9, 9, 9,102, + 111,114, 32,105, 32, 61, 32, 49, 44, 32, 35,115,116, 97,116, + 101,109,101,110,116, 46, 86, 97,114,105, 97, 98,108,101, 76, + 105,115,116, 32,100,111, 10, 9, 9, 9, 9,111,117,116, 91, + 35,111,117,116, 32, 43, 32, 49, 93, 32, 61, 32,115,116, 97, + 116,101,109,101,110,116, 46, 86, 97,114,105, 97, 98,108,101, + 76,105,115,116, 91,105, 93, 46, 78, 97,109,101, 10, 9, 9, + 9, 9,105,102, 32,105, 32,126, 61, 32, 35,115,116, 97,116, + 101,109,101,110,116, 46, 86, 97,114,105, 97, 98,108,101, 76, + 105,115,116, 32,116,104,101,110, 10, 9, 9, 9, 9, 9,111, + 117,116, 91, 35,111,117,116, 32, 43, 32, 49, 93, 32, 61, 32, + 34, 44, 32, 34, 10, 9, 9, 9, 9,101,110,100, 10, 9, 9, + 9,101,110,100, 10, 9, 9, 9,111,117,116, 91, 35,111,117, + 116, 32, 43, 32, 49, 93, 32, 61, 32, 34, 32,105,110, 32, 34, + 10, 9, 9, 9,102,111,114, 32,105, 32, 61, 32, 49, 44, 32, + 35,115,116, 97,116,101,109,101,110,116, 46, 71,101,110,101, + 114, 97,116,111,114,115, 32,100,111, 10, 9, 9, 9, 9,106, + 111,105,110, 83,116, 97,116,101,109,101,110,116,115, 83, 97, + 102,101, 40,111,117,116, 44, 32,102,111,114,109, 97,116, 69, + 120,112,114, 40,115,116, 97,116,101,109,101,110,116, 46, 71, + 101,110,101,114, 97,116,111,114,115, 91,105, 93, 41, 44, 32, + 110,105,108, 41, 10, 9, 9, 9, 9,105,102, 32,105, 32,126, + 61, 32, 35,115,116, 97,116,101,109,101,110,116, 46, 71,101, + 110,101,114, 97,116,111,114,115, 32,116,104,101,110, 10, 9, + 9, 9, 9, 9,106,111,105,110, 83,116, 97,116,101,109,101, + 110,116,115, 83, 97,102,101, 40,111,117,116, 44, 32, 39, 44, + 32, 39, 44, 32,110,105,108, 41, 10, 9, 9, 9, 9,101,110, + 100, 10, 9, 9, 9,101,110,100, 10, 9, 9, 9,106,111,105, + 110, 83,116, 97,116,101,109,101,110,116,115, 83, 97,102,101, + 40,111,117,116, 44, 32, 34, 32,100,111, 34, 44, 32,110,105, + 108, 41, 10, 9, 9, 9,106,111,105,110, 83,116, 97,116,101, + 109,101,110,116,115, 83, 97,102,101, 40,111,117,116, 44, 32, + 102,111,114,109, 97,116, 83,116, 97,116,108,105,115,116, 40, + 115,116, 97,116,101,109,101,110,116, 46, 66,111,100,121, 41, + 44, 32,110,105,108, 41, 10, 9, 9, 9,106,111,105,110, 83, + 116, 97,116,101,109,101,110,116,115, 83, 97,102,101, 40,111, + 117,116, 44, 32, 34,101,110,100, 34, 44, 32,110,105,108, 41, + 10, 9, 9,101,108,115,101,105,102, 32,115,116, 97,116,101, + 109,101,110,116, 46, 65,115,116, 84,121,112,101, 32, 61, 61, + 32, 39, 78,117,109,101,114,105, 99, 70,111,114, 83,116, 97, + 116,101,109,101,110,116, 39, 32,116,104,101,110, 10, 9, 9, + 9,111,117,116, 91, 35,111,117,116, 32, 43, 32, 49, 93, 32, + 61, 32, 34,102,111,114, 32, 34, 10, 9, 9, 9,111,117,116, + 91, 35,111,117,116, 32, 43, 32, 49, 93, 32, 61, 32,115,116, + 97,116,101,109,101,110,116, 46, 86, 97,114,105, 97, 98,108, + 101, 46, 78, 97,109,101, 10, 9, 9, 9,111,117,116, 91, 35, + 111,117,116, 32, 43, 32, 49, 93, 32, 61, 32, 34, 32, 61, 32, + 34, 10, 9, 9, 9,111,117,116, 91, 35,111,117,116, 32, 43, + 32, 49, 93, 32, 61, 32,102,111,114,109, 97,116, 69,120,112, + 114, 40,115,116, 97,116,101,109,101,110,116, 46, 83,116, 97, + 114,116, 41, 10, 9, 9, 9,111,117,116, 91, 35,111,117,116, + 32, 43, 32, 49, 93, 32, 61, 32, 34, 44, 32, 34, 10, 9, 9, + 9,111,117,116, 91, 35,111,117,116, 32, 43, 32, 49, 93, 32, + 61, 32,102,111,114,109, 97,116, 69,120,112,114, 40,115,116, + 97,116,101,109,101,110,116, 46, 69,110,100, 41, 10, 9, 9, + 9,105,102, 32,115,116, 97,116,101,109,101,110,116, 46, 83, + 116,101,112, 32,116,104,101,110, 10, 9, 9, 9, 9,111,117, + 116, 91, 35,111,117,116, 32, 43, 32, 49, 93, 32, 61, 32, 34, + 44, 32, 34, 10, 9, 9, 9, 9,111,117,116, 91, 35,111,117, + 116, 32, 43, 32, 49, 93, 32, 61, 32,102,111,114,109, 97,116, + 69,120,112,114, 40,115,116, 97,116,101,109,101,110,116, 46, + 83,116,101,112, 41, 10, 9, 9, 9,101,110,100, 10, 9, 9, + 9,106,111,105,110, 83,116, 97,116,101,109,101,110,116,115, + 83, 97,102,101, 40,111,117,116, 44, 32, 34, 32,100,111, 34, + 44, 32,110,105,108, 41, 10, 9, 9, 9,106,111,105,110, 83, + 116, 97,116,101,109,101,110,116,115, 83, 97,102,101, 40,111, + 117,116, 44, 32,102,111,114,109, 97,116, 83,116, 97,116,108, + 105,115,116, 40,115,116, 97,116,101,109,101,110,116, 46, 66, + 111,100,121, 41, 44, 32,110,105,108, 41, 10, 9, 9, 9,106, + 111,105,110, 83,116, 97,116,101,109,101,110,116,115, 83, 97, + 102,101, 40,111,117,116, 44, 32, 34,101,110,100, 34, 44, 32, + 110,105,108, 41, 10, 9, 9,101,108,115,101,105,102, 32,115, + 116, 97,116,101,109,101,110,116, 46, 65,115,116, 84,121,112, + 101, 32, 61, 61, 32, 39, 76, 97, 98,101,108, 83,116, 97,116, + 101,109,101,110,116, 39, 32,116,104,101,110, 10, 9, 9, 9, + 111,117,116, 91, 35,111,117,116, 32, 43, 32, 49, 93, 32, 61, + 32, 34, 58, 58, 34, 10, 9, 9, 9,111,117,116, 91, 35,111, + 117,116, 32, 43, 32, 49, 93, 32, 61, 32,115,116, 97,116,101, + 109,101,110,116, 46, 76, 97, 98,101,108, 10, 9, 9, 9,111, + 117,116, 91, 35,111,117,116, 32, 43, 32, 49, 93, 32, 61, 32, + 34, 58, 58, 34, 10, 9, 9,101,108,115,101,105,102, 32,115, + 116, 97,116,101,109,101,110,116, 46, 65,115,116, 84,121,112, + 101, 32, 61, 61, 32, 39, 71,111,116,111, 83,116, 97,116,101, + 109,101,110,116, 39, 32,116,104,101,110, 10, 9, 9, 9,111, + 117,116, 91, 35,111,117,116, 32, 43, 32, 49, 93, 32, 61, 32, + 34,103,111,116,111, 32, 34, 10, 9, 9, 9,111,117,116, 91, + 35,111,117,116, 32, 43, 32, 49, 93, 32, 61, 32,115,116, 97, + 116,101,109,101,110,116, 46, 76, 97, 98,101,108, 10, 9, 9, + 101,108,115,101,105,102, 32,115,116, 97,116,101,109,101,110, + 116, 46, 65,115,116, 84,121,112,101, 32, 61, 61, 32, 39, 67, + 111,109,109,101,110,116, 39, 32,116,104,101,110, 10, 9, 9, + 9, 45, 45, 32, 73,103,110,111,114,101, 10, 9, 9,101,108, + 115,101,105,102, 32,115,116, 97,116,101,109,101,110,116, 46, + 65,115,116, 84,121,112,101, 32, 61, 61, 32, 39, 69,111,102, + 39, 32,116,104,101,110, 10, 9, 9, 9, 45, 45, 32, 73,103, + 110,111,114,101, 10, 9, 9,101,108,115,101, 10, 9, 9, 9, + 112,114,105,110,116, 40, 34, 85,110,107,110,111,119,110, 32, + 65, 83, 84, 32, 84,121,112,101, 58, 32, 34, 44, 32,115,116, + 97,116,101,109,101,110,116, 46, 65,115,116, 84,121,112,101, + 41, 10, 9, 9,101,110,100, 10, 9, 9,105,102, 32,115,116, + 97,116,101,109,101,110,116, 46, 84,111,107,101,110,115, 32, + 97,110,100, 32,115,116, 97,116,101,109,101,110,116, 46, 84, + 111,107,101,110,115, 91, 49, 93, 32,116,104,101,110, 10, 9, + 9, 9,108,111, 99, 97,108, 32,108,105,110,101, 32, 61, 32, + 115,116, 97,116,101,109,101,110,116, 46, 84,111,107,101,110, + 115, 91, 49, 93, 46, 76,105,110,101, 10, 9, 9, 9,108,111, + 99, 97,108, 32,116, 97,114,103,101,116, 76,105,110,101, 32, + 61, 32,108,105,110,101, 77, 97,112, 91,108,105,110,101, 93, + 10, 9, 9, 9,105,102, 32,116, 97,114,103,101,116, 76,105, + 110,101, 32, 97,110,100, 32, 99,117,114,114,101,110,116, 76, + 105,110,101, 32, 60, 32,116, 97,114,103,101,116, 76,105,110, + 101, 32,116,104,101,110, 10, 9, 9, 9, 9,116, 97, 98,108, + 101, 46,105,110,115,101,114,116, 40,111,117,116, 44, 32, 49, + 44, 32,115,116,114,105,110,103, 46,114,101,112, 40, 39, 92, + 110, 39, 44, 32,116, 97,114,103,101,116, 76,105,110,101, 32, + 45, 32, 99,117,114,114,101,110,116, 76,105,110,101, 41, 41, + 10, 9, 9, 9, 9, 99,117,114,114,101,110,116, 76,105,110, + 101, 32, 61, 32,116, 97,114,103,101,116, 76,105,110,101, 10, + 9, 9, 9,101,110,100, 10, 9, 9,101,110,100, 10, 9, 9, + 114,101,116,117,114,110, 32,116, 97, 98,108,101, 46, 99,111, + 110, 99, 97,116, 40,111,117,116, 41, 10, 9,101,110,100, 10, + 10, 9,102,111,114,109, 97,116, 83,116, 97,116,108,105,115, + 116, 32, 61, 32,102,117,110, 99,116,105,111,110, 40,115,116, + 97,116, 76,105,115,116, 41, 10, 9, 9,108,111, 99, 97,108, + 32,111,117,116, 32, 61, 32,123, 34, 34,125, 10, 9, 9,102, + 111,114, 32, 95, 44, 32,115,116, 97,116, 32,105,110, 32,112, + 97,105,114,115, 40,115,116, 97,116, 76,105,115,116, 46, 66, + 111,100,121, 41, 32,100,111, 10, 9, 9, 9,106,111,105,110, + 83,116, 97,116,101,109,101,110,116,115, 83, 97,102,101, 40, + 111,117,116, 44, 32,102,111,114,109, 97,116, 83,116, 97,116, + 101,109,101,110,116, 40,115,116, 97,116, 41, 44, 32, 39, 59, + 39, 41, 10, 9, 9,101,110,100, 10, 9, 9,114,101,116,117, + 114,110, 32,116, 97, 98,108,101, 46, 99,111,110, 99, 97,116, + 40,111,117,116, 41, 10, 9,101,110,100, 10, 10, 9,114,101, + 116,117,114,110, 32,102,111,114,109, 97,116, 83,116, 97,116, + 108,105,115,116, 40, 97,115,116, 41, 10,101,110,100, 10, 10, + 108,111, 99, 97,108, 32,102,117,110, 99,116,105,111,110, 32, + 71,101,116, 89,117,101, 76,105,110,101, 77, 97,112, 40,108, + 117, 97, 67,111,100,101,115, 41, 10, 9,108,111, 99, 97,108, + 32, 99,117,114,114,101,110,116, 32, 61, 32, 49, 10, 9,108, + 111, 99, 97,108, 32,108, 97,115,116, 76,105,110,101, 32, 61, + 32, 49, 10, 9,108,111, 99, 97,108, 32,108,105,110,101, 77, + 97,112, 32, 61, 32,123, 32,125, 10, 9,102,111,114, 32,108, + 105,110,101, 67,111,100,101, 32,105,110, 32,108,117, 97, 67, + 111,100,101,115, 58,103,109, 97,116, 99,104, 40, 34, 40, 91, + 94, 92,114, 92,110, 93, 42, 41, 92,114, 63, 92,110, 63, 34, + 41, 32,100,111, 10, 9, 9,108,111, 99, 97,108, 32,110,117, + 109, 32, 61, 32,108,105,110,101, 67,111,100,101, 58,109, 97, + 116, 99,104, 40, 34, 45, 45, 37,115, 42, 40, 37,100, 43, 41, + 37,115, 42, 36, 34, 41, 10, 9, 9,105,102, 32,110,117,109, + 32,116,104,101,110, 10, 9, 9, 9,108,111, 99, 97,108, 32, + 108,105,110,101, 32, 61, 32,116,111,110,117,109, 98,101,114, + 40,110,117,109, 41, 10, 9, 9, 9,105,102, 32,108,105,110, + 101, 32, 62, 32,108, 97,115,116, 76,105,110,101, 32,116,104, + 101,110, 10, 9, 9, 9, 9,108, 97,115,116, 76,105,110,101, + 32, 61, 32,108,105,110,101, 10, 9, 9, 9,101,110,100, 10, + 9, 9,101,110,100, 10, 9, 9,108,105,110,101, 77, 97,112, + 91, 99,117,114,114,101,110,116, 93, 32, 61, 32,108, 97,115, + 116, 76,105,110,101, 10, 9, 9, 99,117,114,114,101,110,116, + 32, 61, 32, 99,117,114,114,101,110,116, 32, 43, 32, 49, 10, + 9,101,110,100, 10, 9,114,101,116,117,114,110, 32,108,105, + 110,101, 77, 97,112, 10,101,110,100, 10, 10,114,101,116,117, + 114,110, 32,123, 10, 9, 70,111,114,109, 97,116, 77,105,110, + 105, 32, 61, 32,102,117,110, 99,116,105,111,110, 40,115,114, + 99, 41, 10, 9, 9,108,111, 99, 97,108, 32,115,116, 44, 32, + 97,115,116, 32, 61, 32, 80, 97,114,115,101, 76,117, 97, 40, + 115,114, 99, 41, 10, 9, 9,105,102, 32,115,116, 32,116,104, + 101,110, 10, 9, 9, 9,114,101,116,117,114,110, 32, 70,111, + 114,109, 97,116, 95, 77,105,110,105, 40, 97,115,116, 41, 10, + 9, 9,101,108,115,101, 10, 9, 9, 9,114,101,116,117,114, + 110, 32,110,105,108, 44, 32, 97,115,116, 10, 9, 9,101,110, + 100, 10, 9,101,110,100, 44, 10, 10, 9, 70,111,114,109, 97, + 116, 89,117,101, 32, 61, 32,102,117,110, 99,116,105,111,110, + 40,115,114, 99, 41, 10, 9, 9,108,111, 99, 97,108, 32,115, + 116, 44, 32, 97,115,116, 32, 61, 32, 80, 97,114,115,101, 76, + 117, 97, 40,115,114, 99, 41, 10, 9, 9,105,102, 32,115,116, + 32,116,104,101,110, 10, 9, 9, 9,108,111, 99, 97,108, 32, + 108,105,110,101, 77, 97,112, 32, 61, 32, 71,101,116, 89,117, + 101, 76,105,110,101, 77, 97,112, 40,115,114, 99, 41, 10, 9, + 9, 9,105,102, 32, 35,108,105,110,101, 77, 97,112, 32, 61, + 61, 32, 48, 32,116,104,101,110, 10, 9, 9, 9, 9,114,101, + 116,117,114,110, 32,115,114, 99, 10, 9, 9, 9,101,110,100, + 10, 9, 9, 9,114,101,116,117,114,110, 32, 70,111,114,109, + 97,116, 89,117,101, 40, 97,115,116, 44, 32,108,105,110,101, + 77, 97,112, 41, 10, 9, 9,101,108,115,101, 10, 9, 9, 9, + 114,101,116,117,114,110, 32,110,105,108, 44, 32, 97,115,116, + 10, 9, 9,101,110,100, 10, 9,101,110,100, 10,125, 10, +}; \ No newline at end of file diff --git a/src/yue.cpp b/src/yue.cpp index 2722c55..26f581e 100644 --- a/src/yue.cpp +++ b/src/yue.cpp @@ -131,12 +131,10 @@ void pushOptions(lua_State* L, int lineOffset) { #endif // YUE_NO_MACRO #ifndef YUE_COMPILER_ONLY -static const char luaminifyCodes[] = -#include "LuaMinify.h" - ; +#include "luaminify_lua.h" static void pushLuaminify(lua_State* L) { - if (luaL_loadbuffer(L, luaminifyCodes, sizeof(luaminifyCodes) / sizeof(luaminifyCodes[0]) - 1, "=(luaminify)") != 0) { + if (luaL_loadbuffer(L, luaminify_lua, sizeof(luaminify_lua) / sizeof(luaminify_lua[0]), "=(luaminify)") != 0) { std::string err = "failed to load luaminify module.\n"s + lua_tostring(L, -1); luaL_error(L, err.c_str()); } else if (lua_pcall(L, 0, 1, 0) != 0) { @@ -317,32 +315,56 @@ public: int main(int narg, const char** args) { const char* help = - "Usage: yue [options|files|directories] ...\n\n" - " -h Print this message\n" + "Usage: yue\n" + " [options] [] ...\n" #ifndef YUE_COMPILER_ONLY - " -e str Execute a file or raw codes\n" - " -m Generate minified codes\n" - " -r Rewrite output to match original line numbers\n" + " yue -e [args...]\n" #endif // YUE_COMPILER_ONLY - " -t path Specify where to place compiled files\n" - " -o file Write output to file\n" - " -s Use spaces in generated codes instead of tabs\n" - " -p Write output to standard out\n" - " -b Dump compile time (doesn't write output)\n" - " -g Dump global variables used in NAME LINE COLUMN\n" - " -l Write line numbers from source codes\n" - " -j Disable implicit return at end of file\n" - " -c Reserve comments before statement from source codes\n" #ifndef YUE_NO_WATCHER - " -w path Watch changes and compile every file under directory\n" + " yue -w [] [options]\n" #endif // YUE_NO_WATCHER - " -v Print version\n" + " yue -\n\n" + "Notes:\n" + " - '-' / '--' must be the first and only argument.\n" + " - '-o/--output' can not be used with multiple input files.\n" +#ifndef YUE_NO_WATCHER + " - '-w/--watch' can not be used with file input (directory only).\n" +#endif // YUE_NO_WATCHER +#ifndef YUE_COMPILER_ONLY + " - with '-e/--execute', remaining tokens are treated as script args.\n\n" +#else + "\n" +#endif // YUE_COMPILER_ONLY + "Options:\n" + " -h, --help Show this help message and exit.\n" #ifndef YUE_COMPILER_ONLY - " -- Read from standard in, print to standard out\n" - " (Must be first and only argument)\n\n" - " --target=version Specify the Lua version that codes will be generated to\n" - " (version can only be 5.1 to 5.5)\n" - " --path=path_str Append an extra Lua search path string to package.path\n\n" + " -e , --execute Execute a file or raw codes\n" + " -m, --minify Generate minified codes\n" + " -r, --rewrite Rewrite output to match original line numbers\n" +#endif // YUE_COMPILER_ONLY + " -t , --output-to \n" + " Specify where to place compiled files\n" + " -o , --output Write output to file\n" + " -p, --print Write output to standard out\n" + " -b, --benchmark Dump compile time (doesn't write output)\n" + " -g, --globals Dump global variables used in NAME LINE COLUMN\n" + " -s, --spaces Use spaces in generated codes instead of tabs\n" + " -l, --line-numbers Write line numbers from source codes\n" + " -j, --no-implicit-return Disable implicit return at end of file\n" + " -c, --reserve-comments Reserve comments before statement from source codes\n" +#ifndef YUE_NO_WATCHER + " -w [], --watch []\n" + " Watch changes and compile every file under directory\n" +#endif // YUE_NO_WATCHER + " -v, --version Print version\n" +#ifndef YUE_COMPILER_ONLY + " - Read from standard in, print to standard out\n" + " (Must be first and only argument)\n" + " -- Same as '-' (kept for backward compatibility)\n\n" + " --target Specify the Lua version that codes will be generated to\n" + " (version can only be 5.1 to 5.5)\n" + " --path Append an extra Lua search path string to package.path\n" + " --= Pass compiler option in key=value form (existing behavior)\n\n" " Execute without options to enter REPL, type symbol '$'\n" " in a single line to start/stop multi-line mode\n" #endif // YUE_COMPILER_ONLY @@ -446,11 +468,6 @@ int main(int narg, const char** args) { if (err.substr(0, modName.size()) == modName) { err = err.substr(modName.size()); } - auto pos = err.find(':'); - if (pos != std::string::npos) { - int lineNum = std::stoi(err.substr(0, pos)); - err = std::to_string(lineNum - 1) + err.substr(pos); - } std::cout << Err << err << Stop; continue; } @@ -502,13 +519,35 @@ int main(int narg, const char** args) { std::string resultFile; std::string workPath; std::list> files; + + auto isOptionToken = [](std::string_view s) { + return !s.empty() && (s[0] == '-' || (s.size() >= 2 && s.substr(0, 2) == "--"sv)); + }; + auto takeValue = [&](int& i, std::string_view arg, std::string_view optName) -> std::string { + // supports: --opt=value, --opt value, -o value, -t value, etc. + if (auto eq = arg.find('='); eq != std::string_view::npos) { + return std::string(arg.substr(eq + 1)); + } + if (i + 1 < narg) { + ++i; + return std::string(args[i]); + } + std::cout << help; + (void)optName; + return std::string(); + }; + for (int i = 1; i < narg; ++i) { std::string arg = args[i]; - if (arg == "--"sv) { + if (arg == "-"sv || arg == "--"sv) { if (i != 1) { std::cout << help; return 1; } + if (narg != 2) { + std::cout << help; + return 1; + } char ch; std::string codes; while ((ch = std::cin.get()) && !std::cin.eof()) { @@ -529,9 +568,9 @@ int main(int narg, const char** args) { return 1; } #ifndef YUE_COMPILER_ONLY - } else if (arg == "-e"sv) { - ++i; - if (i < narg) { + } else if (arg == "-e"sv || arg == "--execute"sv || arg.rfind("--execute="sv, 0) == 0) { + auto evalStr = takeValue(i, arg, "execute"sv); + if (!evalStr.empty()) { lua_State* L = luaL_newstate(); openlibs(L); DEFER(lua_close(L)); @@ -540,7 +579,6 @@ int main(int narg, const char** args) { std::cout << lua_tostring(L, -1) << '\n'; return 1; } - std::string evalStr = args[i]; lua_newtable(L); i++; for (int j = i, index = 1; j < narg; j++) { @@ -623,58 +661,100 @@ int main(int narg, const char** args) { } return 0; } else { - std::cout << help; return 1; } - } else if (arg == "-m"sv) { + } else if (arg == "-m"sv || arg == "--minify"sv) { minify = true; - } else if (arg == "-r"sv) { + } else if (arg == "-r"sv || arg == "--rewrite"sv) { rewrite = true; #endif // YUE_COMPILER_ONLY - } else if (arg == "-s"sv) { + } else if (arg == "-s"sv || arg == "--spaces"sv) { config.useSpaceOverTab = true; - } else if (arg == "-l"sv) { + } else if (arg == "-l"sv || arg == "--line-numbers"sv) { config.reserveLineNumber = true; - } else if (arg == "-c"sv) { + } else if (arg == "-c"sv || arg == "--reserve-comments"sv) { config.reserveComment = true; - } else if (arg == "-j"sv) { + } else if (arg == "-j"sv || arg == "--no-implicit-return"sv) { config.implicitReturnRoot = false; - } else if (arg == "-p"sv) { + } else if (arg == "-p"sv || arg == "--print"sv) { writeToFile = false; - } else if (arg == "-g"sv) { + } else if (arg == "-g"sv || arg == "--globals"sv) { writeToFile = false; lintGlobal = true; - } else if (arg == "-t"sv) { - ++i; - if (i < narg) { - targetPath = args[i]; - } else { - std::cout << help; - return 1; - } - } else if (arg == "-b"sv) { + } else if (arg == "-t"sv || arg == "--output-to"sv || arg.rfind("--output-to="sv, 0) == 0) { + targetPath = takeValue(i, arg, "output-to"sv); + if (targetPath.empty()) return 1; + } else if (arg == "-b"sv || arg == "--benchmark"sv) { dumpCompileTime = true; - } else if (arg == "-h"sv) { + } else if (arg == "-h"sv || arg == "--help"sv) { std::cout << help; return 0; - } else if (arg == "-v"sv) { + } else if (arg == "-v"sv || arg == "--version"sv) { std::cout << "Yuescript version: "sv << yue::version << '\n'; return 0; - } else if (arg == "-o"sv) { - ++i; - if (i < narg) { - resultFile = args[i]; - } else { - std::cout << help; - return 1; - } - } else if (arg == "-w"sv) { + } else if (arg == "-o"sv || arg == "--output"sv || arg.rfind("--output="sv, 0) == 0) { + resultFile = takeValue(i, arg, "output"sv); + if (resultFile.empty()) return 1; + } else if (arg == "-w"sv || arg == "--watch"sv || arg.rfind("--watch="sv, 0) == 0) { #ifndef YUE_NO_WATCHER watchFiles = true; + // accept optional directory value: -w / --watch / --watch= + if (arg != "-w"sv) { + auto watchDir = takeValue(i, arg, "watch"sv); + if (watchDir.empty()) return 1; + arg = watchDir; + // fall through to directory/file handling below by re-processing as positional + if (fs::is_directory(arg)) { + workPath = arg; + for (auto item : fs::recursive_directory_iterator(arg)) { + if (!item.is_directory()) { + auto ext = item.path().extension().string(); + for (char& ch : ext) ch = std::tolower(ch); + if (!ext.empty() && ext.substr(1) == yue::extension) { + files.emplace_back(item.path().string(), item.path().lexically_relative(arg).string()); + } + } + } + } else if (!arg.empty()) { + std::cout << help; + return 1; + } + continue; + } else if (i + 1 < narg && !isOptionToken(args[i + 1])) { + // support -w while keeping old "-w " behavior + auto watchDir = takeValue(i, arg, "watch"sv); + if (!watchDir.empty()) { + arg = watchDir; + if (fs::is_directory(arg)) { + workPath = arg; + for (auto item : fs::recursive_directory_iterator(arg)) { + if (!item.is_directory()) { + auto ext = item.path().extension().string(); + for (char& ch : ext) ch = std::tolower(ch); + if (!ext.empty() && ext.substr(1) == yue::extension) { + files.emplace_back(item.path().string(), item.path().lexically_relative(arg).string()); + } + } + } + } else { + std::cout << help; + return 1; + } + continue; + } + } #else std::cout << "Error: -w is not supported\n"sv; return 1; #endif // YUE_NO_WATCHER + } else if (arg == "--target"sv || arg.rfind("--target="sv, 0) == 0) { + auto v = takeValue(i, arg, "target"sv); + if (v.empty()) return 1; + config.options["target"s] = v; + } else if (arg == "--path"sv || arg.rfind("--path="sv, 0) == 0) { + auto v = takeValue(i, arg, "path"sv); + if (v.empty()) return 1; + config.options["path"s] = v; } else if (arg.size() > 2 && arg.substr(0, 2) == "--"sv && arg.substr(2, 1) != "-"sv) { auto argStr = arg.substr(2); yue::Utils::trim(argStr); diff --git a/src/yuescript/yue_compiler.cpp b/src/yuescript/yue_compiler.cpp index f9b4f18..c4fc952 100644 --- a/src/yuescript/yue_compiler.cpp +++ b/src/yuescript/yue_compiler.cpp @@ -78,7 +78,7 @@ static std::unordered_set Metamethods = { "close"s // Lua 5.4 }; -const std::string_view version = "0.32.1"sv; +const std::string_view version = "0.32.3"sv; const std::string_view extension = "yue"sv; class CompileError : public std::logic_error { @@ -566,27 +566,65 @@ private: return defined; } - bool isLocal(const std::string& name) const { + bool isSolidLocal(const std::string& name) { bool local = false; for (auto it = _scopes.rbegin(); it != _scopes.rend(); ++it) { auto vars = it->vars.get(); auto vit = vars->find(name); - if (vit != vars->end() && (vit->second == VarType::Local || vit->second == VarType::LocalConst)) { - local = true; - break; + if (vit != vars->end()) { + switch (vit->second) { + case VarType::Local: + case VarType::LocalConst: + local = true; + break; + default: break; + } } } return local; } + bool isLocal(const std::string& name) { + bool local = false; + bool defined = false; + for (auto it = _scopes.rbegin(); it != _scopes.rend(); ++it) { + auto vars = it->vars.get(); + auto vit = vars->find(name); + if (vit != vars->end()) { + defined = true; + switch (vit->second) { + case VarType::Local: + case VarType::LocalConst: + local = true; + break; + default: break; + } + } + } + if (!defined && _importedGlobal) { + if (_importedGlobal->globals.find(name) == _importedGlobal->globals.end()) { + const auto& global = _importedGlobal->globalList.emplace_back(name); + _importedGlobal->globals.insert(global); + _importedGlobal->vars->insert_or_assign(name, VarType::LocalConst); + } + return true; + } + return local; + } + bool isDeclaredAsGlobal(const std::string& name) const { bool global = false; for (auto it = _scopes.rbegin(); it != _scopes.rend(); ++it) { auto vars = it->vars.get(); auto vit = vars->find(name); - if (vit != vars->end() && (vit->second == VarType::Global || vit->second == VarType::GlobalConst)) { - global = true; - break; + if (vit != vars->end()) { + switch (vit->second) { + case VarType::Global: + case VarType::GlobalConst: + global = true; + break; + default: break; + } } } return global; @@ -907,7 +945,7 @@ private: } void addGlobalVar(const std::string& name, ast_node* x) { - if (isLocal(name)) throw CompileError("can not declare a local variable to be global"sv, x); + if (isSolidLocal(name)) throw CompileError("can not declare a local variable to be global"sv, x); auto& scope = _scopes.back(); scope.vars->insert_or_assign(name, VarType::Global); } @@ -4383,7 +4421,14 @@ private: upVarsAssignedOrCaptured = true; break; } else if (std::find(args.begin(), args.end(), global.name) == args.end()) { - args.push_back(global.name); + if (_importedGlobal && _importedGlobal->vars == _scopes.front().vars.get()) { + markGlobalImported(global.name); + if (_importedGlobal->globals.find(global.name) == _importedGlobal->globals.end()) { + args.push_back(global.name); + } + } else { + args.push_back(global.name); + } } if (noGlobalVarPassing && !isLocal(global.name)) { return std::nullopt; diff --git a/src/yuescript/yue_parser.cpp b/src/yuescript/yue_parser.cpp index f564f6a..ad76517 100644 --- a/src/yuescript/yue_parser.cpp +++ b/src/yuescript/yue_parser.cpp @@ -1342,40 +1342,78 @@ std::string ParseInfo::errorMessage(std::string_view msg, int errLine, int errCo return buf.str(); } const int ASCII = 255; - int length = errLine; - auto begin = codes->begin(); - auto end = codes->end(); - int count = 0; + const int contextLines = 2; + + std::vector> lines; + auto lineStart = codes->begin(); + for (auto it = codes->begin(); it != codes->end(); ++it) { if (*it == '\n') { - if (count + 1 == length) { - end = it; - break; + lines.emplace_back(lineStart, it); + lineStart = it + 1; + } + } + + if (lineStart != codes->end()) { + lines.emplace_back(lineStart, codes->end()); + } + + int totalLines = static_cast(lines.size()); + int startLine = std::max(1, errLine - contextLines); + int endLine = std::min(totalLines, errLine + contextLines); + + int maxLineNum = endLine + lineOffset; + int lineNumWidth = 1; + int temp = maxLineNum; + while (temp >= 10) { + temp /= 10; + lineNumWidth++; + } + + std::ostringstream buf; + buf << errLine + lineOffset << ": " << msg << '\n'; + + int errorDisplayCol = 0; + if (errLine >= 1 && errLine <= totalLines) { + auto& errorLineRange = lines[errLine - 1]; + + auto it = errorLineRange.first; + int displayCol = 0; + for (int i = 0; i < errCol && it != errorLineRange.second; ++i) { + if (*it == '\t') { + displayCol += 2; + } else if (*it > ASCII) { + displayCol += 2; } else { - begin = it + 1; + displayCol++; } - count++; + ++it; } + errorDisplayCol = displayCol; } - int oldCol = errCol; - int col = std::max(0, oldCol - 1); - auto it = begin; - for (int i = 0; i < oldCol && it != end; ++i) { - if (*it > ASCII) { - ++col; + + for (int lineNum = startLine; lineNum <= endLine; ++lineNum) { + int displayLineNum = lineNum + lineOffset; + if (displayLineNum <= 0) continue; + std::string lineNumStr = std::to_string(displayLineNum); + + int padding = lineNumWidth - static_cast(lineNumStr.size()); + buf << std::string(padding, ' ') << lineNumStr << " | "; + + if (lineNum >= 1 && lineNum <= totalLines) { + auto& lineRange = lines[lineNum - 1]; + std::string line = utf8_encode({lineRange.first, lineRange.second}); + Utils::replace(line, "\t"sv, " "sv); + buf << line; + } + buf << '\n'; + + if (lineNum == errLine) { + buf << std::string(lineNumWidth, ' ') << " "; + buf << std::string(errorDisplayCol - 1, ' ') << "^"sv << '\n'; } - ++it; - } - auto line = utf8_encode({begin, end}); - while (col < static_cast(line.size()) - && (line[col] == ' ' || line[col] == '\t')) { - col++; } - Utils::replace(line, "\t"sv, " "sv); - std::ostringstream buf; - buf << errLine + lineOffset << ": "sv << msg << '\n' - << line << '\n' - << std::string(col, ' ') << "^"sv; + return buf.str(); } -- cgit v1.2.3-55-g6feb